:root{--thls-graphite:#1c232d;--thls-white:#fff;--thls-blue:#1769e0;--thls-blue-dark:#0f56bd;--thls-blue-soft:#eaf2ff;--thls-green:#159570;--thls-green-dark:#0d7558;--thls-green-soft:#e7f6f1;--thls-surface:#f4f6f8;--thls-text:#17202b;--thls-muted:#697484;--thls-border:#e1e6ec;--thls-danger:#b42318}*{box-sizing:border-box}body{background:var(--thls-surface);min-height:100vh;color:var(--thls-text);-webkit-font-smoothing:antialiased;margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.miniapp-shell{min-height:100vh}.miniapp-header{background:var(--thls-graphite);color:var(--thls-white)}.miniapp-header-inner{width:min(100%,45rem);padding:max(1.75rem, env(safe-area-inset-top)) 1rem 1.75rem;margin:0 auto}.eyebrow{color:#6ee2bd;letter-spacing:.14em;margin:0;font-size:.75rem;font-weight:800}.miniapp-header h1{letter-spacing:-.035em;margin:.35rem 0 0;font-size:clamp(2rem,9vw,3rem);line-height:1.04}.miniapp-header p:last-child{color:#c8d1dc;max-width:31rem;margin:.65rem 0 0;font-size:.9rem;line-height:1.45}.miniapp-content{width:min(100%,45rem);padding:1rem 1rem max(2.5rem, env(safe-area-inset-bottom));margin:0 auto}.report-controls,.state-card,.metric-card,.chart-card,.category-card,.category-detail{border:1px solid var(--thls-border);background:var(--thls-white);border-radius:1.1rem;box-shadow:0 .2rem 1rem #161f2b0b}.report-controls{gap:1rem;padding:1rem;display:grid}.control-group{border:0;min-width:0;margin:0;padding:0}.control-group legend{color:var(--thls-muted);letter-spacing:.06em;text-transform:uppercase;margin-bottom:.55rem;font-size:.75rem;font-weight:800}.period-grid,.channel-grid{gap:.4rem;display:grid}.period-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.period-grid .choice-button:last-child{grid-column:1/-1}.channel-grid{grid-template-columns:repeat(3,minmax(0,1fr))}button,input{font:inherit}button{-webkit-tap-highlight-color:transparent}.choice-button,.primary-action,.secondary-action,.back-action,.category-row{cursor:pointer;border-radius:.75rem;min-height:2.75rem}.choice-button{border:1px solid var(--thls-border);color:#495566;background:#f8fafc;padding:.55rem .35rem;font-size:.78rem;font-weight:700}.choice-button[aria-pressed=true]{border-color:var(--thls-blue);background:var(--thls-blue-soft);color:var(--thls-blue-dark)}.date-range{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;display:grid}.date-range label{color:var(--thls-muted);gap:.35rem;font-size:.75rem;font-weight:700;display:grid}.date-range input{border:1px solid var(--thls-border);background:var(--thls-white);width:100%;min-height:2.75rem;color:var(--thls-text);border-radius:.75rem;padding:.55rem .65rem}.field-error{color:var(--thls-danger);grid-column:1/-1;margin:0;font-size:.8rem;line-height:1.4}.primary-action,.secondary-action{border:0;font-weight:800}.primary-action{background:var(--thls-blue);width:100%;color:var(--thls-white);padding:.72rem 1rem;box-shadow:0 .45rem 1rem #1769e038}.secondary-action{background:var(--thls-blue-soft);color:var(--thls-blue-dark);margin-top:.25rem;padding:.65rem 1rem}button:disabled,fieldset:disabled button,input:disabled{cursor:not-allowed;opacity:.56}button:focus-visible,input:focus-visible{outline-offset:2px;outline:3px solid #1769e059}.report-stage{margin-top:1rem}.state-card{align-items:flex-start;gap:.9rem;padding:1.15rem;display:flex}.state-card h2{margin:0;font-size:1rem;line-height:1.3}.state-card p{color:var(--thls-muted);margin:.4rem 0 0;font-size:.88rem;line-height:1.45}.loading-mark,.state-icon{border-radius:50%;flex:none;width:2.25rem;height:2.25rem}.loading-mark{border:3px solid #dce8fa;border-top-color:var(--thls-blue);animation:.8s linear infinite spin}.admin-shell{background:var(--thls-surface);min-height:100vh}.admin-topbar{background:var(--thls-graphite);color:var(--thls-white)}.admin-topbar-inner,.admin-main{width:min(100% - 2rem,72rem);margin:0 auto}.admin-topbar-inner{padding:max(1.25rem, env(safe-area-inset-top)) 0 1.25rem;justify-content:space-between;align-items:center;gap:1rem;display:flex}.admin-eyebrow{color:#6ee2bd;letter-spacing:.14em;margin:0;font-size:.7rem;font-weight:800}.admin-topbar h1,.admin-login-brand h1{letter-spacing:-.025em;margin:.35rem 0 0}.admin-topbar h1{font-size:clamp(1.5rem,5vw,2rem)}.admin-topbar-description,.admin-login-brand p:last-child{color:#c8d1dc;margin:.45rem 0 0;font-size:.9rem;line-height:1.45}.admin-main{padding:1.25rem 0 max(2.5rem, env(safe-area-inset-bottom))}.admin-grid{grid-template-columns:minmax(17rem,.72fr) minmax(0,1.65fr);align-items:start;gap:1rem;display:grid}.admin-panel{border:1px solid var(--thls-border);background:var(--thls-white);border-radius:1rem;min-width:0;padding:1.1rem;box-shadow:0 .2rem 1rem #161f2b0b}.admin-panel>section{gap:1rem;display:grid}.admin-panel h2{margin:0;font-size:1.05rem}.admin-panel form,.admin-panel fieldset{gap:.75rem;min-width:0;display:grid}.admin-panel label,.admin-field{color:var(--thls-muted);gap:.35rem;font-size:.78rem;font-weight:700;display:grid}.admin-panel :is(input,select),.admin-field input{border:1px solid var(--thls-border);background:var(--thls-white);width:100%;min-height:2.75rem;color:var(--thls-text);font:inherit;border-radius:.7rem;padding:.55rem .65rem}.admin-panel input[type=checkbox]{width:1.1rem;min-height:1.1rem;accent-color:var(--thls-blue);padding:0}.admin-panel label:has(input[type=checkbox]){align-items:center;gap:.5rem;min-height:2.75rem;display:flex}.admin-button-primary,.admin-button-secondary,.admin-panel button{min-height:2.75rem;font:inherit;cursor:pointer;border-radius:.7rem;padding:.55rem .9rem;font-weight:800;transition:background-color .16s,border-color .16s,color .16s,transform .16s}.admin-button-primary{border:1px solid var(--thls-blue);background:var(--thls-blue);color:var(--thls-white)}.admin-button-primary:hover:not(:disabled){background:var(--thls-blue-dark)}.admin-button-secondary,.admin-panel button{border:1px solid var(--thls-border);background:var(--thls-white);color:var(--thls-text)}.admin-button-secondary{color:var(--thls-white);background:0 0;border-color:#5b6675}.admin-button-secondary:hover:not(:disabled){border-color:var(--thls-white);background:#ffffff1a}.admin-button-secondary:focus-visible{outline:3px solid var(--thls-white);outline-offset:3px}.admin-panel button.primary-action{border-color:var(--thls-blue);background:var(--thls-blue);color:var(--thls-white)}.admin-panel :is(button,input,select):focus-visible,.admin-login-form :is(button,input):focus-visible{outline-offset:2px;outline:3px solid #0b5fff}.admin-panel :is(button,input,select):disabled,.admin-login-form :is(button,input):disabled{cursor:not-allowed;opacity:.58}.admin-panel [role=alert],.admin-form-error{color:var(--thls-danger);background:#fff0ee;border-radius:.7rem;margin:0;padding:.7rem .8rem;font-size:.86rem;line-height:1.4}.admin-panel [role=status]{background:var(--thls-blue-soft);color:var(--thls-blue-dark);border-radius:.7rem;margin:0;padding:.7rem .8rem;font-size:.86rem;line-height:1.4}.admin-login-shell{min-height:100vh;padding:max(1rem, env(safe-area-inset-top)) 1rem max(1rem, env(safe-area-inset-bottom));background:var(--thls-surface);place-items:center;display:grid}.admin-login-card{border:1px solid var(--thls-border);background:var(--thls-white);border-radius:1rem;width:min(100%,28rem);overflow:hidden;box-shadow:0 .8rem 2rem #161f2b1a}.admin-login-brand{background:var(--thls-graphite);color:var(--thls-white);padding:1.5rem}.admin-login-brand h1{font-size:1.5rem}.admin-login-form{gap:1rem;padding:1.5rem;display:grid}.admin-login-form .admin-button-primary{width:100%}@media (max-width:760px){.admin-topbar-inner{align-items:flex-start}.admin-grid{grid-template-columns:minmax(0,1fr)}}@media (prefers-reduced-motion:reduce){.admin-shell *,.admin-login-shell *{scroll-behavior:auto;transition-duration:.01ms!important}}.state-icon{color:var(--thls-danger);background:#fff0ee;place-items:center;font-weight:900;display:grid}.access-card .state-icon{background:var(--thls-blue-soft);color:var(--thls-blue);font-size:2rem;line-height:0}.report-results{gap:.8rem;display:grid}.report-meta{color:var(--thls-muted);justify-content:space-between;align-items:center;gap:.75rem;padding:0 .15rem;font-size:.76rem;display:flex}.report-meta span{color:var(--thls-text);font-weight:800}.report-meta time{text-align:right}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem;display:grid}.metric-card{min-width:0;padding:1rem;overflow:hidden}.metric-card p{color:var(--thls-muted);letter-spacing:.04em;text-transform:uppercase;margin:0;font-size:.74rem;font-weight:800}.metric-card strong{letter-spacing:-.04em;margin-top:.45rem;font-size:clamp(1.25rem,6vw,2rem);line-height:1.05;display:block}.revenue-card{border-top:3px solid var(--thls-blue)}.revenue-card strong{color:var(--thls-blue-dark)}.profit-card{border-top:3px solid var(--thls-green)}.profit-card strong,.detail-profit strong{color:var(--thls-green-dark)}.metric-negative strong,.detail-metrics .metric-negative strong{color:var(--thls-danger)}.chart-card,.category-card,.category-detail{padding:1rem}.section-heading{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.section-kicker{color:var(--thls-blue);letter-spacing:.08em;text-transform:uppercase;margin:0 0 .25rem;font-size:.68rem;font-weight:900}.section-heading h2{letter-spacing:-.015em;margin:0;font-size:1.05rem}.chart-heading{align-items:flex-end}.chart-legend{color:var(--thls-muted);flex-wrap:wrap;justify-content:flex-end;gap:.4rem .75rem;font-size:.68rem;font-weight:700;display:flex}.chart-legend span{align-items:center;gap:.3rem;display:inline-flex}.chart-legend span:before{content:"";border-radius:50%;width:.5rem;height:.5rem}.legend-revenue:before{background:var(--thls-blue)}.legend-profit:before{background:var(--thls-green)}.chart-plot{min-width:0;margin:.8rem -.25rem -.25rem}.chart-empty>p,.empty-message{color:var(--thls-muted);margin:1rem 0 0;font-size:.86rem;line-height:1.45}.count-badge{background:var(--thls-blue-soft);min-width:1.75rem;color:var(--thls-blue-dark);text-align:center;border-radius:999px;padding:.25rem .45rem;font-size:.72rem;font-weight:800}.category-list{margin:.75rem -.25rem -.35rem;padding:0;list-style:none}.category-list li+li{border-top:1px solid var(--thls-border)}.category-row{width:100%;color:var(--thls-text);text-align:left;background:0 0;border:0;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:.6rem;padding:.75rem .25rem;display:grid}.category-main{gap:.25rem;min-width:0;display:grid}.category-main strong{text-overflow:ellipsis;white-space:nowrap;font-size:.9rem;overflow:hidden}.category-main small{color:var(--thls-muted);font-size:.7rem}.category-value{white-space:nowrap;font-size:.82rem;font-weight:800}.row-arrow{color:var(--thls-blue);font-size:1.45rem;line-height:1}.category-stage{gap:.8rem;display:grid}.back-action{color:var(--thls-blue-dark);background:0 0;border:0;padding:.45rem .25rem;font-size:.82rem;font-weight:800}.category-detail>.back-action,.category-stage>.back-action{margin:-.4rem 0 .4rem}.detail-heading{margin-bottom:.85rem}.detail-metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem;margin-bottom:.8rem;display:grid}.detail-metrics article{background:#f7f9fb;border-radius:.75rem;min-width:0;padding:.7rem}.detail-metrics span{color:var(--thls-muted);text-transform:uppercase;font-size:.65rem;font-weight:800;display:block}.detail-metrics strong{overflow-wrap:anywhere;margin-top:.35rem;font-size:clamp(.9rem,4vw,1.2rem);line-height:1.1;display:block}.category-detail .chart-card{box-shadow:none;border:0;border-radius:0;padding:0}.sr-only{clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}@keyframes spin{to{transform:rotate(360deg)}}@media (hover:hover){.choice-button:hover:not(:disabled){border-color:#b7c8df}.primary-action:hover:not(:disabled){background:var(--thls-blue-dark)}.category-row:hover{background:#f7f9fb}}@media (min-width:40rem){.miniapp-header-inner,.miniapp-content{padding-left:1.5rem;padding-right:1.5rem}.period-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.period-grid .choice-button:last-child{grid-column:auto}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.admin-category-workspace{gap:1rem;display:grid}.admin-category-workspace-heading,.admin-category-summary,.admin-category-actions,.admin-picker-heading,.admin-dialog-actions{justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.admin-category-kicker,.admin-picker-kicker{color:var(--thls-blue);letter-spacing:.08em;text-transform:uppercase;margin:0 0 .25rem;font-size:.68rem;font-weight:900}.admin-category-add,.admin-picker-submit,.admin-dialog-confirm{border:1px solid var(--thls-blue);background:var(--thls-blue);min-height:2.75rem;color:var(--thls-white);font:inherit;border-radius:.7rem;padding:.55rem .9rem;font-weight:800}.admin-category-empty,.admin-picker-queue p,.admin-category-status{color:var(--thls-muted);margin:0;font-size:.86rem}.admin-category-list,.admin-picker-tree,.admin-picker-queue ul{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.admin-category-card{border:1px solid var(--thls-border);background:#f8fafc;border-radius:.85rem;gap:.85rem;min-width:0;padding:1rem;display:grid}.admin-category-summary h3,.admin-dialog h2,.admin-picker-heading h3,.admin-picker-queue h4{color:var(--thls-text);margin:0}.admin-category-summary>div,.admin-category-summary h3,.admin-category-summary p,.admin-picker-choice,.admin-picker-choice span,.admin-picker-queue li,.admin-picker-queue li span,.admin-category-exclusions label,.admin-category-exclusions label span,.admin-dialog-content,.admin-dialog h2,.admin-dialog p{min-width:0}.admin-category-summary h3,.admin-category-summary p,.admin-picker-choice span,.admin-picker-queue li span,.admin-category-exclusions label span,.admin-dialog h2,.admin-dialog p{overflow-wrap:anywhere}.admin-category-summary p,.admin-dialog p{color:var(--thls-muted);margin:.3rem 0 0;font-size:.82rem;line-height:1.4}.admin-category-meta{flex-wrap:wrap;justify-content:flex-end;gap:.4rem;display:flex}.admin-category-meta span{background:var(--thls-blue-soft);color:var(--thls-blue-dark);border-radius:999px;padding:.3rem .45rem;font-size:.72rem;font-weight:800}.admin-category-actions,.admin-dialog-actions{flex-wrap:wrap;justify-content:flex-start;align-items:center}.admin-category-actions button,.admin-dialog-actions button{overflow-wrap:anywhere;min-width:0;max-width:100%}.admin-category-actions button,.admin-category-action,.admin-category-retry,.admin-picker-close,.admin-picker-expand,.admin-picker-queue button,.admin-dialog-cancel{border:1px solid var(--thls-border);background:var(--thls-white);min-height:2.75rem;color:var(--thls-text);font:inherit;border-radius:.7rem;padding:.5rem .75rem;font-weight:700}.admin-category-delete,.admin-dialog-confirm{border-color:var(--thls-danger)!important;background:var(--thls-danger)!important;color:var(--thls-white)!important}.admin-category-settings,.admin-category-exclusions{border:1px solid var(--thls-border);background:var(--thls-white);border-radius:.75rem;gap:.75rem;min-width:0;padding:.85rem;display:grid}.admin-category-settings>label,.admin-category-exclusions label,.admin-picker-search{color:var(--thls-muted);gap:.35rem;font-size:.78rem;font-weight:700;display:grid}.admin-category-toggle,.admin-category-exclusions label,.admin-picker-choice{align-items:center;gap:.55rem;min-height:2.75rem;display:flex}.admin-category-exclusions label{padding-left:calc(var(--admin-category-depth) * .65rem)}.admin-category-exclusions label span,.admin-picker-choice span,.admin-picker-queue li span{flex:1 1 0}.admin-category-error,.admin-picker-error{color:var(--thls-danger);background:#fff0ee;border-radius:.7rem;margin:0;padding:.7rem .8rem;font-size:.86rem}.admin-picker-panel{border:1px solid var(--thls-border);background:var(--thls-blue-soft);border-radius:.85rem;gap:.9rem;min-width:0;padding:1rem;display:grid}.admin-picker-search input{border:1px solid var(--thls-border);background:var(--thls-white);width:100%;min-height:2.75rem;color:var(--thls-text);font:inherit;border-radius:.7rem;padding:.55rem .65rem}.admin-picker-status{color:var(--thls-blue-dark);margin:0;font-size:.82rem;font-weight:800}.admin-picker-layout{grid-template-columns:minmax(0,1.3fr) minmax(12rem,.7fr);gap:.75rem;display:grid}.admin-picker-tree,.admin-picker-queue{border:1px solid var(--thls-border);background:var(--thls-white);border-radius:.75rem;min-width:0;padding:.75rem}.admin-picker-row{padding-left:calc(var(--admin-picker-depth) * .75rem);grid-template-columns:2.75rem minmax(0,1fr);align-items:center;display:grid}.admin-picker-expand,.admin-picker-spacer{place-items:center;width:2.75rem;min-height:2.75rem;display:grid}.admin-picker-queue h4{margin-bottom:.5rem;font-size:.85rem}.admin-picker-queue li{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.5rem;min-width:0;display:flex}.admin-picker-submit{width:100%}.admin-dialog{border:0;border-radius:.9rem;width:min(100% - 2rem,28rem);min-width:0;max-width:calc(100% - 2rem);padding:0;box-shadow:0 1rem 3rem #161f2b47}.admin-dialog::backdrop{background:#1c232d8f}.admin-dialog-content{gap:1rem;padding:1.25rem;display:grid}.admin-dialog-cancel,.admin-dialog-confirm{flex:1}.admin-category-workspace :is(button,input):focus-visible,.admin-picker-panel :is(button,input):focus-visible,.admin-dialog button:focus-visible{outline-offset:2px;outline:3px solid #0b5fff}.admin-category-workspace :is(button,input):disabled,.admin-picker-panel :is(button,input):disabled,.admin-dialog button:disabled{cursor:not-allowed;opacity:.58}@media (max-width:760px){.admin-category-workspace-heading,.admin-category-summary{display:grid}.admin-category-meta{justify-content:flex-start}.admin-picker-layout{grid-template-columns:minmax(0,1fr)}}@media (prefers-reduced-motion:reduce){.admin-category-workspace *,.admin-picker-panel *,.admin-dialog *{transition-duration:.01ms!important}}.admin-access-workspace{gap:1rem;min-width:0;display:grid}.admin-access-heading{gap:.35rem;display:grid}.admin-access-heading h2,.admin-access-heading p{margin:0}.admin-access-heading>p:last-child,.admin-access-empty{color:var(--thls-muted);font-size:.86rem;line-height:1.45}.admin-access-kicker{color:var(--thls-blue);letter-spacing:.08em;text-transform:uppercase;font-size:.68rem;font-weight:900}.admin-access-form{gap:.75rem;display:grid}.admin-access-form label{color:var(--thls-muted);gap:.35rem;font-size:.78rem;font-weight:700;display:grid}.admin-access-form input{border:1px solid var(--thls-border);background:var(--thls-white);width:100%;min-height:2.75rem;color:var(--thls-text);font:inherit;border-radius:.7rem;padding:.55rem .65rem}.admin-access-submit,.admin-access-retry,.admin-access-revoke{min-height:2.75rem;font:inherit;cursor:pointer;border-radius:.7rem;padding:.55rem .9rem;font-weight:800}.admin-access-submit{border:1px solid var(--thls-blue);background:var(--thls-blue);color:var(--thls-white)}.admin-access-submit:hover:not(:disabled){background:var(--thls-blue-dark)}.admin-access-retry,.admin-access-revoke{border:1px solid var(--thls-border);background:var(--thls-white);color:var(--thls-text)}.admin-access-revoke{color:var(--thls-danger);border-color:#f2c7c2}.admin-access-revoke:hover:not(:disabled){border-color:var(--thls-danger);background:#fff5f4}.admin-access-error,.admin-access-status,.admin-access-empty{margin:0}.admin-access-error{color:var(--thls-danger);background:#fff0ee;border-radius:.7rem;padding:.7rem .8rem;font-size:.86rem;line-height:1.4}.admin-access-status{color:var(--thls-green-dark);font-size:.86rem;font-weight:800}.admin-access-list{gap:.65rem;margin:0;padding:0;list-style:none;display:grid}.admin-access-user{border:1px solid var(--thls-border);background:#f8fafc;border-radius:.8rem;justify-content:space-between;align-items:center;gap:.75rem;min-width:0;padding:.8rem;display:flex}.admin-access-user>div{gap:.15rem;min-width:0;display:grid}.admin-access-user strong,.admin-access-user span{overflow-wrap:anywhere;min-width:0}.admin-access-user span{color:var(--thls-muted);font-size:.82rem}.admin-access-workspace :is(button,input):focus-visible{outline-offset:2px;outline:3px solid #0b5fff}.admin-access-workspace :is(button,input):disabled{cursor:not-allowed;opacity:.58}@media (max-width:420px){.admin-access-user{flex-direction:column;align-items:stretch}.admin-access-revoke{width:100%}}@media (prefers-reduced-motion:reduce){.admin-access-workspace *{transition-duration:.01ms!important}}
