:root{--background: #f2f3f4;--surface: #f2f3f4;--surface-container-lowest: #ffffff;--surface-container-low: #fafafb;--surface-container: #edeef0;--surface-container-high: #e4e6e9;--surface-container-highest: #dcdfe3;--on-surface: #16191d;--on-surface-variant: #555d66;--on-surface-muted: #7b838d;--outline: #9aa2ab;--outline-variant: #d6d9dd;--primary: #0b4ea2;--primary-hover: #093f83;--on-primary: #ffffff;--primary-container: #d7e4f6;--on-primary-container: #06284f;--error: #c1121f;--on-error: #ffffff;--error-container: #f9dcde;--on-error-container: #5c0a10;--warning: #a86a00;--on-warning: #ffffff;--warning-container: #fbe9cc;--on-warning-container: #4d3100;--success: #17692f;--on-success: #ffffff;--success-container: #d6ecda;--on-success-container: #0a3116;--inverse-surface: #26292e;--inverse-on-surface: #f2f3f4;--shopee: #ea6c00;--tiktok: #d81b4a;--channel-1: #0b4ea2;--channel-2: #17692f;--channel-3: #a86a00;--channel-4: #7a4fbf;--channel-ads: #555d66;--font-ui: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-data: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--kpi-size: 1.25rem;--kpi-track: 210px;--headline-md: 1.375rem;--title-sm: 1rem;--body-md: .875rem;--label-caps: .6875rem;--data-sm: .8125rem;--xs: 4px;--sm: 8px;--md: 16px;--lg: 24px;--xl: 32px;--xxl: 48px;--radius: 4px;--radius-sm: 2px;--sidebar: 240px;--measure: 68ch}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}html,body{height:100%}body{margin:0;background:var(--background);color:var(--on-surface);font-family:var(--font-ui);font-size:var(--body-md);line-height:1.5;-webkit-font-smoothing:antialiased}.data,.data-tabular{font-family:var(--font-data);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.label-caps{font-size:var(--label-caps);font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--on-surface-variant)}h1,h2,h3{margin:0;font-weight:600;letter-spacing:-.01em}h1{font-size:var(--headline-md)}h2{font-size:var(--title-sm)}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.app{display:grid;grid-template-columns:var(--sidebar) minmax(0,1fr);min-height:100vh;width:100%;background:var(--background)}.sidebar{border-right:1px solid var(--outline-variant);background:var(--surface-container-lowest);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{display:flex;align-items:center;gap:var(--sm);padding:var(--md);border-bottom:1px solid var(--outline-variant)}.brand-mark{width:28px;height:28px;background:var(--primary);display:grid;place-items:center;flex:none}.brand-mark svg{display:block}.brand-name{font-weight:600;font-size:var(--body-md);letter-spacing:-.01em}.brand-sub{font-size:var(--label-caps);color:var(--on-surface-muted);letter-spacing:.06em;text-transform:uppercase}.nav{padding:var(--sm) 0;flex:1}.nav-group+.nav-group{margin-top:var(--md)}.nav-heading{padding:var(--sm) var(--md) var(--xs)}.nav-item{display:flex;align-items:center;justify-content:space-between;gap:var(--sm);width:100%;min-height:44px;padding:0 var(--md);background:none;border:0;border-left:2px solid transparent;cursor:pointer;text-align:left;color:var(--on-surface-variant);font-size:var(--body-md)}.nav-item:hover{background:var(--surface-container);color:var(--on-surface)}.nav-item[aria-current=page]{background:var(--primary-container);border-left-color:var(--primary);color:var(--on-primary-container);font-weight:600}.nav-item .tag{font-family:var(--font-data);font-size:10px;color:var(--on-surface-muted)}.sidebar-foot{border-top:1px solid var(--outline-variant);padding:var(--md);display:grid;gap:var(--sm)}.main{display:flex;flex-direction:column;min-width:0}.topbar{position:sticky;top:0;z-index:20;padding:var(--md) var(--lg);background:var(--surface-container-lowest);border-bottom:1px solid var(--outline-variant);display:flex;flex-wrap:wrap;gap:var(--md);align-items:flex-end;justify-content:space-between}.topbar-title{display:grid;gap:2px}.period-bar{display:flex;flex-wrap:wrap;gap:var(--sm);align-items:flex-end}.field{display:grid;gap:var(--xs)}.content{padding:var(--md) var(--lg);display:grid;gap:var(--md);align-content:start;min-width:0;width:100%}.content>*{min-width:0}.select,.input{min-height:36px;padding:0 var(--sm);background:var(--surface-container-lowest);border:1px solid var(--outline);border-radius:var(--radius);color:var(--on-surface);font-size:var(--body-md)}.select:focus,.input:focus{outline:none;border-color:var(--primary);box-shadow:inset 0 0 0 1px var(--primary)}.btn{min-height:36px;padding:0 var(--md);border-radius:var(--radius);border:1px solid var(--outline);background:var(--surface-container-lowest);cursor:pointer;font-size:var(--body-md);font-weight:500;display:inline-flex;align-items:center;gap:var(--sm);transition:transform 80ms ease,background-color .12s ease}.btn:hover{background:var(--surface-container-high)}.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.btn-primary:hover{background:var(--primary-hover)}.btn-danger{color:var(--error);border-color:var(--error);background:var(--surface-container-lowest)}.btn-danger:hover{background:var(--error-container)}.btn:disabled{opacity:.5;cursor:not-allowed}[data-pressed]{transform:scale(.97)}.segmented{display:inline-flex;border:1px solid var(--outline);border-radius:var(--radius);overflow:hidden}.segmented button{min-height:36px;padding:0 var(--md);background:var(--surface-container-lowest);border:0;border-right:1px solid var(--outline-variant);cursor:pointer;font-size:var(--body-md);color:var(--on-surface-variant)}.segmented button:last-child{border-right:0}.segmented button[aria-pressed=true]{background:var(--primary-container);color:var(--on-primary-container);font-weight:600}.card{background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:var(--radius)}.card-head{padding:var(--md);border-bottom:1px solid var(--outline-variant);display:flex;align-items:baseline;justify-content:space-between;gap:var(--md)}.card-body{padding:var(--md)}.card-body.flush{padding:0}.grid{display:grid;gap:var(--md)}.grid>*{min-width:0}.grid-kpi{grid-template-columns:repeat(auto-fit,minmax(var(--kpi-track),1fr))}.grid-2{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.grid-halves{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.grid-thirds{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}@media (max-width: 1080px){.grid-2,.grid-halves{grid-template-columns:minmax(0,1fr)}}.kpi{padding:var(--md);display:grid;gap:var(--sm);align-content:start}.kpi-value{font-family:var(--font-data);font-variant-numeric:tabular-nums;font-size:var(--kpi-size);font-weight:600;line-height:1.1;letter-spacing:-.02em;white-space:nowrap;display:flex;align-items:baseline;gap:.28em}.kpi-unit{font-size:.5em;font-weight:500;letter-spacing:.04em;color:var(--on-surface-variant)}.kpi-value.empty{color:var(--on-surface-muted);font-weight:400}.kpi-foot{display:flex;align-items:center;gap:var(--sm);flex-wrap:wrap}.kpi-note{font-size:11px;color:var(--on-surface-muted)}.chip{display:inline-flex;align-items:center;gap:4px;border-radius:var(--radius-sm);padding:2px 6px;font-size:var(--label-caps);font-weight:500;letter-spacing:.04em;font-family:var(--font-data)}.chip-up{background:var(--success-container);color:var(--on-success-container)}.chip-down{background:var(--error-container);color:var(--on-error-container)}.chip-flat{background:var(--surface-container-high);color:var(--on-surface-variant)}.chip-warn{background:var(--warning-container);color:var(--on-warning-container)}.badge{display:inline-flex;align-items:center;border-radius:var(--radius-sm);padding:2px 6px;background:var(--surface-container-high);color:var(--on-surface-variant);font-size:var(--label-caps);letter-spacing:.06em;text-transform:uppercase;font-weight:500}.tabs{display:flex;gap:var(--md);border-bottom:1px solid var(--outline-variant);padding:0 var(--md)}.tab{min-height:40px;padding:0 2px;background:none;border:0;border-bottom:2px solid transparent;color:var(--on-surface-variant);cursor:pointer;font-size:var(--body-md)}.tab:hover{border-bottom-color:var(--outline-variant)}.tab[aria-selected=true]{color:var(--on-surface);border-bottom-color:var(--primary);font-weight:600}.table-scroll{overflow:auto;max-height:min(70vh,760px);overscroll-behavior:contain}table.ledger{width:100%;border-collapse:collapse;font-size:var(--body-md)}table.ledger th{position:sticky;top:0;z-index:2;background:var(--surface-container-lowest);text-align:left;padding:var(--sm) var(--md);border-bottom:2px solid var(--on-surface);box-shadow:inset 0 -2px 0 var(--on-surface);font-size:var(--label-caps);font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--on-surface-variant);white-space:nowrap}table.ledger td{padding:var(--sm) var(--md);border-bottom:1px solid var(--outline-variant);white-space:nowrap}table.ledger tbody tr:nth-child(2n){background:var(--surface-container-low)}table.ledger tbody tr:hover{background:var(--surface-container)}table.ledger td.num,table.ledger th.num{text-align:right;font-family:var(--font-data);font-variant-numeric:tabular-nums}table.ledger td.empty{color:var(--on-surface-muted)}table.ledger tr.total td{font-weight:600;background:var(--surface-container);border-top:1px solid var(--outline)}.chart{position:relative;height:clamp(260px,32vh,400px)}.chart.tall{height:clamp(320px,42vh,520px)}.chart.short{height:clamp(180px,22vh,280px)}.meter{display:grid;gap:var(--md);container-type:inline-size}.meter-row{display:grid;grid-template-columns:minmax(0,1fr) max-content max-content;grid-template-areas:"label value share" "track track track";gap:var(--xs) var(--md);align-items:center}.meter-label{grid-area:label;min-width:0;overflow-wrap:anywhere}.meter-track{grid-area:track;min-width:0}.meter-value{grid-area:value}.meter-share{grid-area:share}@container (min-width: 460px){.meter-row{grid-template-columns:minmax(96px,max-content) minmax(60px,1fr) max-content max-content;grid-template-areas:"label track value share"}}.meter-track{height:14px;background:var(--surface-container-high);border-radius:var(--radius-sm);overflow:hidden}.meter-fill{height:100%}.meter-value,.meter-share{text-align:right;font-family:var(--font-data);font-size:var(--data-sm);font-variant-numeric:tabular-nums;white-space:nowrap}.meter-share{color:var(--on-surface-variant);min-width:5ch}.finding{background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-left:2px solid var(--outline);border-radius:var(--radius);padding:var(--md);display:grid;gap:var(--sm);align-content:start}.finding[data-severity=critical]{border-left-color:var(--error)}.finding[data-severity=warning]{border-left-color:var(--warning)}.finding[data-severity=opportunity]{border-left-color:var(--success)}.finding-meta{display:flex;gap:var(--sm);align-items:center;flex-wrap:wrap}.finding-title{font-weight:600;line-height:1.35}.finding-evidence{font-size:12px;color:var(--on-surface-variant);display:grid;gap:2px;border-top:1px solid var(--outline-variant);padding-top:var(--sm);overflow-wrap:anywhere}.empty-state{padding:var(--xl) var(--md);text-align:center;color:var(--on-surface-variant);display:grid;gap:var(--sm);justify-items:center}.empty-state .headline{font-weight:600;color:var(--on-surface)}.empty-state .detail{max-width:52ch;font-size:var(--body-md)}.prose{max-width:var(--measure)}.notice{padding:var(--sm) var(--md);border:1px solid var(--outline-variant);border-left:2px solid var(--primary);border-radius:var(--radius);background:var(--surface-container-lowest);font-size:var(--body-md);color:var(--on-surface-variant)}.notice-warn{border-left-color:var(--warning);background:var(--warning-container);color:var(--on-warning-container)}.notice-error{border-left-color:var(--error);background:var(--error-container);color:var(--on-error-container)}.login{min-height:100vh;display:grid;place-items:center;padding:var(--md)}.login-card{width:min(400px,100%)}.login-card .card-body{display:grid;gap:var(--md)}.toasts{position:fixed;right:var(--md);bottom:var(--md);z-index:90;display:grid;gap:var(--sm)}.toast{background:var(--inverse-surface);color:var(--inverse-on-surface);padding:var(--sm) var(--md);border-radius:var(--radius);font-size:var(--body-md);max-width:380px}.toast.error{background:var(--error);color:var(--on-error)}.toast.success{background:var(--success);color:var(--on-success)}.dropzone{border:1px dashed var(--outline);border-radius:var(--radius);padding:var(--xl) var(--md);text-align:center;background:var(--surface-container-low);display:grid;gap:var(--sm);justify-items:center}.dropzone[data-active=true]{border-color:var(--primary);border-style:solid;background:var(--primary-container)}.progress{height:4px;background:var(--surface-container-high);border-radius:var(--radius-sm);overflow:hidden}.progress-fill{height:100%;background:var(--primary);transition:width .12s linear}.file-row{display:grid;grid-template-columns:1fr auto auto;gap:var(--sm);align-items:center;padding:var(--sm) 0;border-bottom:1px solid var(--outline-variant)}.file-row:last-child{border-bottom:0}#app[data-loading]{min-height:100vh;display:grid;place-items:center}#app[data-loading]:after{content:"Loading…";font-family:var(--font-data);font-size:var(--data-sm);letter-spacing:.08em;text-transform:uppercase;color:var(--on-surface-muted)}@media (min-width: 1101px){:root{--kpi-size: 1.375rem;--kpi-track: 220px}}@media (min-width: 1440px){:root{--kpi-size: 1.5rem;--kpi-track: 250px}}@media (min-width: 1600px){:root{--sidebar: 264px;--kpi-size: 1.875rem;--kpi-track: 284px}.topbar{padding:var(--md) var(--xl)}.content{padding:var(--lg) var(--xl);gap:var(--lg)}.grid{gap:var(--lg)}}@media (min-width: 2200px){:root{--kpi-size: 2.125rem;--kpi-track: 330px;--body-md: .9375rem}.topbar,.content{padding:var(--lg) var(--xxl)}.grid-2{grid-template-columns:minmax(0,3fr) minmax(0,1fr)}}@media (max-width: 900px){.app{grid-template-columns:1fr}.sidebar{position:static;height:auto;border-right:0;border-bottom:1px solid var(--outline-variant)}.nav{display:flex;overflow-x:auto;padding:0}.nav-group{display:flex}.nav-heading{display:none}.nav-item{border-left:0;border-bottom:2px solid transparent;white-space:nowrap}.nav-item[aria-current=page]{border-left:0;border-bottom-color:var(--primary)}.sidebar-foot{display:none}.topbar,.content{padding:var(--md)}.table-scroll{max-height:none}table.ledger th{position:static;box-shadow:none}}
