@import url("https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css");@import url("https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600;700&display=swap");:root{--bg-primary:#0a0a0f;--bg-secondary:#12121a;--bg-card:#1a1a2e;--bg-card-hover:#222240;--bg-elevated:#252540;--bg-input:#16162a;--border-primary:#2a2a45;--border-hover:#3a3a60;--border-active:#6366f1;--text-primary:#f0f0f5;--text-secondary:#9999b5;--text-muted:#666680;--text-accent:#6366f1;--color-indigo:#6366f1;--color-rose:#f43f5e;--color-emerald:#10b981;--color-amber:#f59e0b;--color-violet:#8b5cf6;--color-cyan:#06b6d4;--color-success:#10b981;--color-warning:#f59e0b;--color-error:#ef4444;--color-info:#3b82f6;--shadow-sm:0 1px 3px rgba(0,0,0,.4);--shadow-md:0 4px 12px rgba(0,0,0,.5);--shadow-lg:0 8px 24px rgba(0,0,0,.6);--shadow-glow:0 0 20px rgba(99,102,241,.15);--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:20px;--radius-full:9999px;--font-sans:"Pretendard Variable","Pretendard",-apple-system,BlinkMacSystemFont,system-ui,"Segoe UI",sans-serif;--font-mono:"Outfit","JetBrains Mono",monospace;--transition-fast:150ms cubic-bezier(0.4,0,0.2,1);--transition-base:250ms cubic-bezier(0.4,0,0.2,1);--transition-slow:400ms cubic-bezier(0.16,1,0.3,1);--sidebar-width:240px;--header-height:64px}[data-theme=light]{--bg-primary:#f5f5f8;--bg-secondary:#fff;--bg-card:#fff;--bg-card-hover:#f0f0f5;--bg-elevated:#f8f8fc;--bg-input:#eeeef4;--border-primary:#e0e0e8;--border-hover:#c8c8d8;--border-active:#6366f1;--text-primary:#1a1a2e;--text-secondary:#555570;--text-muted:#8888a0;--text-accent:#6366f1;--shadow-sm:0 1px 3px rgba(0,0,0,.08);--shadow-md:0 4px 12px rgba(0,0,0,.1);--shadow-lg:0 8px 24px rgba(0,0,0,.12);--shadow-glow:0 0 20px rgba(99,102,241,.1);--header-bg:rgba(245,245,248,.88);--sidebar-bg:#fff}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{font-size:14px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"ss01","tnum";-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);background:var(--bg-primary);color:var(--text-primary);line-height:1.65;min-height:100vh;letter-spacing:-.018em;word-break:keep-all;transition:background var(--transition-base),color var(--transition-base)}a{color:var(--color-indigo);text-decoration:none}a:hover{text-decoration:underline}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border-primary);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--border-hover)}.app-layout{display:flex;min-height:100vh}.main-content{flex:1 1;margin-left:var(--sidebar-width);padding:var(--space-lg);padding-top:calc(var(--header-height) + var(--space-lg));max-width:1400px}.header{position:fixed;top:0;left:var(--sidebar-width);right:0;height:var(--header-height);background:var(--header-bg,rgba(10,10,15,.85));-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--border-primary);justify-content:space-between;padding:0 var(--space-lg);z-index:100;transition:background var(--transition-base)}.header,.header__title{display:flex;align-items:center}.header__title{font-size:1.1rem;font-weight:700;color:var(--text-primary);letter-spacing:-.02em;gap:var(--space-sm)}.header__title span.accent{background:linear-gradient(135deg,var(--color-indigo),var(--color-violet));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.header__actions{display:flex;align-items:center;gap:var(--space-md)}.sidebar{position:fixed;top:0;left:0;width:var(--sidebar-width);height:100vh;background:var(--sidebar-bg,var(--bg-secondary));border-right:1px solid var(--border-primary);display:flex;flex-direction:column;z-index:200;overflow-y:auto;transition:background var(--transition-base)}.sidebar__logo{height:var(--header-height);display:flex;align-items:center;padding:0 var(--space-lg);border-bottom:1px solid var(--border-primary);font-size:1rem;font-weight:700;letter-spacing:.5px}.sidebar__logo .logo-icon{width:28px;height:28px;border-radius:var(--radius-sm);overflow:hidden;display:flex;align-items:center;justify-content:center;margin-right:var(--space-sm);flex-shrink:0}.sidebar__section{padding:var(--space-md) var(--space-sm)}.sidebar__section-title{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:1.5px;color:var(--text-muted);padding:0 var(--space-md);margin-bottom:var(--space-sm)}.sidebar__nav{list-style:none;display:flex;flex-direction:column;gap:2px}.sidebar__link{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);color:var(--text-secondary);font-size:.9rem;font-weight:500;transition:all var(--transition-fast);cursor:pointer;text-decoration:none}.sidebar__link:hover{background:var(--bg-card);color:var(--text-primary);text-decoration:none;transform:translateX(3px)}.sidebar__link.active{background:rgba(99,102,241,.12);color:var(--color-indigo);font-weight:600;border-left:3px solid var(--color-indigo);padding-left:calc(var(--space-md) - 3px)}.sidebar__link .brand-dot{width:8px;height:8px;border-radius:var(--radius-full);flex-shrink:0}.card{background:var(--bg-card);border:1px solid var(--border-primary);border-radius:var(--radius-lg);padding:var(--space-lg);transition:all var(--transition-base)}.card:hover{border-color:var(--border-hover);box-shadow:var(--shadow-md);transform:translateY(-1px)}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:var(--space-md);gap:var(--space-md);margin-bottom:var(--space-xl)}.kpi-card{background:var(--bg-card);border:1px solid var(--border-primary);border-radius:var(--radius-lg);padding:var(--space-lg);position:relative;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);overflow:hidden;transition:all var(--transition-base)}.kpi-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--kpi-color,var(--color-indigo));opacity:.8}.kpi-card:hover{transform:translateY(-3px) scale(1.01);box-shadow:var(--shadow-glow),var(--shadow-md);border-color:var(--border-hover)}.kpi-card__label{font-size:.72rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:1.2px;margin-bottom:var(--space-sm)}.kpi-card__value{font-size:1.85rem;font-weight:800;color:var(--text-primary);font-family:"Outfit",var(--font-sans);line-height:1.15;letter-spacing:-.04em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;background:linear-gradient(135deg,var(--text-primary),var(--text-secondary));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.kpi-card:hover .kpi-card__value{background:linear-gradient(135deg,var(--color-indigo),var(--color-violet));-webkit-background-clip:text;background-clip:text}.kpi-card__change{display:inline-flex;align-items:center;gap:4px;margin-top:var(--space-sm);font-size:.8rem;font-weight:600;padding:2px 8px;border-radius:var(--radius-full)}.kpi-card__change.positive{background:rgba(16,185,129,.12);color:var(--color-success)}.kpi-card__change.negative{background:rgba(239,68,68,.12);color:var(--color-error)}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-xl);flex-wrap:wrap;gap:var(--space-md)}.page-header__title{font-size:1.5rem;font-weight:800;letter-spacing:-.03em}.page-header__subtitle{font-size:.85rem;color:var(--text-secondary);margin-top:var(--space-xs)}.period-filter{display:flex;flex-wrap:wrap;gap:4px;background:var(--bg-input);padding:4px;border-radius:var(--radius-md);border:1px solid var(--border-primary)}.period-filter__btn{padding:6px 14px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);font-size:.8rem;font-weight:500;cursor:pointer;transition:all var(--transition-fast);font-family:var(--font-sans)}.period-filter__btn:hover{color:var(--text-primary);background:var(--bg-card)}.period-filter__btn.active{background:var(--color-indigo);color:#fff;font-weight:600}.chart-container{background:var(--bg-card);border:1px solid var(--border-primary);border-radius:var(--radius-lg);padding:var(--space-lg);margin-bottom:var(--space-lg)}.chart-container__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-lg)}.chart-container__title{font-size:1rem;font-weight:600}.data-table-wrapper{background:var(--bg-card);border:1px solid var(--border-primary);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:var(--space-lg)}.data-table-wrapper__header{padding:var(--space-lg);border-bottom:1px solid var(--border-primary);display:flex;align-items:center;justify-content:space-between}.data-table-wrapper__title{font-size:1rem;font-weight:600}.data-table{width:100%;border-collapse:collapse}.data-table th{text-align:left;padding:var(--space-sm) var(--space-md);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);border-bottom:1px solid var(--border-primary);background:var(--bg-secondary);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.data-table td,.data-table th:hover{color:var(--text-secondary)}.data-table td{padding:var(--space-sm) var(--space-md);font-size:.85rem;border-bottom:1px solid var(--border-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:300px}.data-table tr:hover td{background:var(--bg-card-hover);color:var(--text-primary)}.data-table td.mono{font-family:"Outfit",var(--font-sans);font-size:.82rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:-.02em}.data-table td.text-right,.data-table th.text-right{text-align:right}.upload-zone{border:2px dashed var(--border-primary);border-radius:var(--radius-xl);padding:var(--space-2xl);text-align:center;transition:all var(--transition-base);cursor:pointer;background:var(--bg-card)}.upload-zone.drag-over,.upload-zone:hover{border-color:var(--color-indigo);background:rgba(99,102,241,.05);box-shadow:var(--shadow-glow)}.upload-zone__icon{font-size:3rem;margin-bottom:var(--space-md);opacity:.6}.upload-zone__title{font-size:1.1rem;font-weight:600;margin-bottom:var(--space-sm)}.upload-zone__desc{font-size:.85rem;color:var(--text-secondary)}.upload-progress{margin-top:var(--space-lg);padding:var(--space-lg);background:var(--bg-card);border:1px solid var(--border-primary);border-radius:var(--radius-lg)}.upload-progress__bar{width:100%;height:6px;background:var(--bg-input);border-radius:var(--radius-full);overflow:hidden;margin-bottom:var(--space-md)}.upload-progress__fill{height:100%;border-radius:var(--radius-full);background:linear-gradient(90deg,var(--color-indigo),var(--color-violet));transition:width var(--transition-base)}.upload-result{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:var(--space-md);gap:var(--space-md);margin-top:var(--space-md)}.upload-result__item{text-align:center;padding:var(--space-md);background:var(--bg-secondary);border-radius:var(--radius-md)}.upload-result__value{font-size:1.5rem;font-weight:700;font-family:"Outfit",var(--font-sans);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:-.03em}.upload-result__label{font-size:.75rem;color:var(--text-secondary);margin-top:var(--space-xs);text-transform:uppercase;letter-spacing:.5px}.brand-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));grid-gap:var(--space-md);gap:var(--space-md);margin-bottom:var(--space-lg)}.brand-card{background:var(--bg-card);border:1px solid var(--border-primary);border-radius:var(--radius-lg);padding:var(--space-lg);transition:all var(--transition-base);cursor:pointer;position:relative;overflow:hidden}.brand-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px}.brand-card:hover{transform:translateY(-3px) scale(1.005);box-shadow:var(--shadow-md),var(--shadow-glow);border-color:var(--border-hover)}.brand-card__name{font-size:.85rem;font-weight:700;margin-bottom:var(--space-md);display:flex;align-items:center;gap:var(--space-sm)}.brand-card__stats{display:grid;grid-template-columns:1fr 1fr;grid-gap:var(--space-sm);gap:var(--space-sm)}.brand-card__stat-label{font-size:.7rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.brand-card__stat-value{font-size:1.1rem;font-weight:700;font-family:"Outfit",var(--font-sans);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:-.02em}.brand-card__share{margin-top:var(--space-md);position:relative}.brand-card__share-bar{width:100%;height:4px;background:var(--bg-input);border-radius:var(--radius-full);overflow:hidden}.brand-card__share-fill{height:100%;border-radius:var(--radius-full);transition:width var(--transition-slow)}.brand-card__share-label{font-size:.7rem;color:var(--text-muted);margin-top:4px;text-align:right}.btn{display:inline-flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border:1px solid var(--border-primary);border-radius:var(--radius-md);background:var(--bg-card);color:var(--text-primary);font-size:.85rem;font-weight:500;cursor:pointer;transition:all var(--transition-fast);font-family:var(--font-sans)}.btn:hover{border-color:var(--border-hover);background:var(--bg-card-hover)}.btn-primary{background:var(--color-indigo);border-color:var(--color-indigo);color:#fff}.btn-primary:hover{background:#5558e6;border-color:#5558e6}.btn-sm{padding:4px 10px;font-size:.78rem}.empty-state{text-align:center;padding:var(--space-2xl);color:var(--text-muted)}.empty-state__icon{font-size:3rem;margin-bottom:var(--space-md);opacity:.4}.empty-state__title{font-size:1.2rem;font-weight:600;color:var(--text-secondary);margin-bottom:var(--space-sm)}.empty-state__desc{font-size:.9rem;max-width:400px;margin:0 auto}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px);filter:blur(4px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-fade-in{animation:fadeIn .35s cubic-bezier(.16,1,.3,1) both}.animate-slide-up{animation:slideUp .45s cubic-bezier(.16,1,.3,1) both}.animate-scale-in{animation:scaleIn .3s cubic-bezier(.16,1,.3,1) both}.delay-1{animation-delay:50ms}.delay-2{animation-delay:.1s}.delay-3{animation-delay:.15s}.delay-4{animation-delay:.2s}.delay-5{animation-delay:.25s}.delay-6{animation-delay:.3s}.skeleton{background:linear-gradient(90deg,var(--bg-card) 25%,var(--bg-card-hover) 50%,var(--bg-card) 75%);background-size:200% 100%;animation:skeleton-loading 1.5s infinite;border-radius:var(--radius-sm)}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}.upload-history{margin-top:var(--space-xl)}.upload-history__item{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md);border-bottom:1px solid var(--border-primary)}.upload-history__item:last-child{border-bottom:none}.upload-history__filename{font-weight:500;font-size:.85rem}.upload-history__meta{font-size:.75rem;color:var(--text-muted)}.upload-history__stats{display:flex;gap:var(--space-md);font-size:.8rem;color:var(--text-secondary);font-family:var(--font-mono)}.recharts-cartesian-axis-tick-value{fill:var(--text-muted)!important;font-size:.7rem!important}.recharts-tooltip-wrapper{outline:none!important}.custom-tooltip{background:var(--bg-elevated)!important;border:1px solid var(--border-primary)!important;border-radius:var(--radius-md)!important;padding:var(--space-sm) var(--space-md)!important;box-shadow:var(--shadow-lg)!important}.custom-tooltip__label{font-size:.75rem;color:var(--text-muted);margin-bottom:4px}.custom-tooltip__value{font-size:.85rem;font-weight:600;color:var(--text-primary);font-family:"Outfit",var(--font-sans);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.mobile-menu-btn{display:none;position:fixed;top:14px;left:14px;z-index:300;width:36px;height:36px;border:1px solid var(--border-primary);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text-primary);font-size:1.2rem;cursor:pointer;align-items:center;justify-content:center;font-family:var(--font-sans)}.mobile-overlay{display:none}@media (max-width:768px){html{font-size:15px}.mobile-menu-btn{display:flex;width:40px;height:40px;font-size:1.3rem}.mobile-overlay{display:block;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:190}.sidebar{transform:translateX(-100%);transition:transform var(--transition-base)}.sidebar.sidebar--open{transform:translateX(0)}.sidebar__link{font-size:1rem;padding:10px var(--space-md)}.header{left:0;padding-left:56px;height:56px}.header__title{font-size:1rem;font-weight:700}.main-content{margin-left:0;padding:var(--space-md);padding-top:calc(56px + var(--space-md))}.page-header{flex-direction:column;align-items:flex-start;gap:var(--space-sm);margin-bottom:var(--space-lg)}.page-header__title{font-size:1.35rem;font-weight:800}.page-header__subtitle{font-size:.88rem;line-height:1.5}.kpi-grid{grid-template-columns:repeat(2,1fr);gap:var(--space-sm)}.kpi-card{padding:var(--space-md) var(--space-md)}.kpi-card__label{font-size:.72rem;letter-spacing:.5px;margin-bottom:6px}.kpi-card__value{font-size:1.4rem;line-height:1.1}.kpi-card__change{font-size:.78rem;margin-top:6px;padding:3px 8px}.brand-grid{grid-template-columns:1fr}.brand-card{padding:var(--space-md)}.brand-card__name{font-size:1rem;font-weight:700}.brand-card__stat-label{font-size:.78rem}.brand-card__stat-value{font-size:1.15rem}.chart-container{padding:var(--space-md)}.chart-container__title{font-size:1.05rem}.upload-zone{padding:var(--space-lg)}.upload-zone__icon{font-size:2.5rem}.upload-zone__title{font-size:1.05rem}.upload-zone__desc{font-size:.9rem}.upload-result{grid-template-columns:repeat(2,1fr)}.upload-result__value{font-size:1.3rem}.upload-result__label{font-size:.78rem}.data-table-wrapper__title{font-size:1.05rem}.data-table td,.data-table th{padding:8px 10px;font-size:.82rem}.data-table td.mono{font-size:.8rem}.period-filter{gap:3px;padding:3px}.period-filter__btn{padding:8px 12px;font-size:.82rem;min-height:36px}.btn{padding:10px var(--space-md);font-size:.9rem;min-height:40px}.btn-sm{padding:6px 12px;font-size:.82rem;min-height:34px}.empty-state__title{font-size:1.15rem}.empty-state__desc{font-size:.92rem}.card{padding:var(--space-md)}}@media (max-width:420px){html{font-size:15.5px}.header{height:50px;padding-left:50px}.header__title{font-size:.95rem}.header__actions{gap:var(--space-sm)}.main-content{padding:calc(50px + 10px) 10px 10px}.mobile-menu-btn{top:10px;left:10px;width:34px;height:34px;font-size:1.1rem}.page-header{margin-bottom:var(--space-md)}.page-header__title{font-size:1.25rem}.page-header__subtitle{font-size:.85rem}.kpi-grid{grid-template-columns:1fr 1fr;gap:8px}.kpi-card{padding:12px}.kpi-card__label{font-size:.68rem;margin-bottom:4px}.kpi-card__value{font-size:1.25rem}.kpi-card__change{font-size:.72rem}.brand-card__stat-value{font-size:1.1rem}.chart-container{padding:12px}.chart-container__title{font-size:1rem}.period-filter__btn{padding:7px 10px;font-size:.78rem}.data-table td,.data-table th{padding:7px 8px;font-size:.78rem}.upload-zone{padding:var(--space-md)}.upload-result__value{font-size:1.15rem}}@media (max-width:380px) and (min-height:700px){html{font-size:16px}.kpi-grid{grid-template-columns:1fr;gap:10px}.kpi-card{padding:var(--space-md);display:flex;align-items:center;justify-content:space-between;gap:var(--space-md)}.kpi-card__label{font-size:.82rem;margin-bottom:0;flex-shrink:0}.kpi-card__value{font-size:1.5rem;text-align:right}.kpi-card__change{margin-top:0}.page-header__title{font-size:1.4rem}.page-header__subtitle{font-size:.9rem}.brand-card__name{font-size:1.05rem}.brand-card__stat-label{font-size:.82rem}.brand-card__stat-value{font-size:1.2rem}.period-filter__btn{padding:8px 14px;font-size:.85rem;min-height:38px}.data-table td,.data-table th{padding:8px 10px;font-size:.82rem}.chart-container__title{font-size:1.05rem}.btn{padding:10px 16px;font-size:.95rem}}