:root{color-scheme:light;--bg: #f4efe6;--paper: #fffdf8;--ink: #1c1917;--muted: #78716c;--line: #e7e0d4;--accent: #c2410c;--accent-ink: #fff7ed;--cal-empty: #f5f0e6;font-family:Sora,ui-sans-serif,system-ui,sans-serif;line-height:1.45;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input,select{font:inherit}.muted{color:var(--muted);font-size:.9rem}.brand-kicker{margin:0;letter-spacing:.12em;text-transform:uppercase;font-size:.7rem;color:var(--accent);font-weight:700}.btn-primary,.btn-ghost{border-radius:999px;padding:.5rem 1.1rem;cursor:pointer}.btn-primary{border:0;background:var(--accent);color:var(--accent-ink)}.btn-primary:disabled{opacity:.6;cursor:wait}.btn-ghost{border:1px solid var(--line);background:transparent;color:var(--ink)}.form-error{color:#b91c1c;font-size:.9rem}label{display:grid;gap:.3rem;font-size:.85rem;color:var(--muted)}label input,label select{border:1px solid var(--line);border-radius:.55rem;padding:.5rem .7rem;background:#fff;color:var(--ink)}.login-shell{min-height:100vh;display:grid;place-items:center;padding:1.5rem}.login-card{width:min(26rem,100%);background:var(--paper);border:1px solid var(--line);border-radius:1.1rem;padding:1.6rem;display:grid;gap:.85rem;box-shadow:0 12px 40px #1c19170f}.login-card h1{margin:0;font-size:1.8rem}.app-shell{max-width:72rem;margin:0 auto;padding:1.25rem 1.25rem 2.5rem;display:grid;gap:1rem}.topbar{display:flex;justify-content:space-between;gap:1rem;align-items:flex-end;flex-wrap:wrap}.topbar h1{margin:.15rem 0 0;font-size:1.55rem}.topbar-actions{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.month-nav{display:flex;align-items:center;gap:.4rem;background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:.2rem .45rem}.month-nav button{border:0;background:transparent;width:1.8rem;height:1.8rem;border-radius:999px;cursor:pointer}.month-nav span{min-width:9.5rem;text-align:center;font-weight:600}.kpi-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem}.kpi-row article{background:var(--paper);border:1px solid var(--line);border-radius:.9rem;padding:.85rem 1rem}.kpi-row span{display:block;color:var(--muted);font-size:.8rem}.kpi-row strong{font-size:1.35rem}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:.9rem}.panel{background:var(--paper);border:1px solid var(--line);border-radius:1rem;padding:1rem}.panel-head h2{margin:0;font-size:1.05rem}.panel-head h3{margin:0;font-size:.95rem}.panel-head p{margin:.2rem 0 .85rem;color:var(--muted);font-size:.85rem}.menu-block+.menu-block{margin-top:1.15rem;padding-top:1.05rem;border-top:1px solid var(--line)}.menu-block-head{display:flex;justify-content:space-between;gap:.75rem;align-items:flex-start;flex-wrap:wrap}.menu-block-head .panel-head,.menu-block-head p{margin-bottom:.55rem}.seg-group{display:flex;flex-wrap:wrap;gap:.45rem}.seg{display:flex;background:#fff;border:1px solid var(--line);border-radius:999px;padding:.12rem}.seg button{border:0;background:transparent;border-radius:999px;padding:.28rem .7rem;font-size:.78rem;cursor:pointer;color:var(--muted)}.seg button.is-on{background:var(--ink);color:#fff7ed}.rank-details{margin-top:.75rem}.rank-details summary{cursor:pointer;color:var(--muted);font-size:.85rem;margin-bottom:.55rem}.rank-table-wrap{overflow-x:auto}.rank-table{width:100%;border-collapse:collapse;font-size:.86rem}.rank-table th,.rank-table td{text-align:left;padding:.4rem .5rem;border-bottom:1px solid var(--line)}.rank-table th{color:var(--muted);font-weight:600;font-size:.75rem}.rank-table th:first-child,.rank-table td:first-child,.rank-table th:nth-child(n+3),.rank-table td:nth-child(n+3){text-align:right;font-variant-numeric:tabular-nums}.rank-table th:nth-child(2),.rank-table td:nth-child(2){text-align:left}.cal-weekdays,.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.35rem}.cal-weekdays{margin-bottom:.35rem;font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.cal-cell{min-height:4.1rem;border-radius:.5rem;padding:.35rem;display:flex;flex-direction:column;justify-content:space-between;border:1px solid rgba(28,25,23,.06)}.cal-cell--pad{background:transparent;border:0}.cal-cell--today{box-shadow:inset 0 0 0 2px #d97706}.cal-day{font-size:.75rem;font-weight:700}.cal-amt{font-size:.68rem;line-height:1.2}.chart-box{height:16.5rem}.chart-box--wide{height:15rem}.item-hourly-tools{display:flex;flex-wrap:wrap;gap:.55rem;align-items:center;margin-bottom:.65rem}.item-hourly-add{position:relative}.item-hourly-add>button,.item-hourly-group button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:.28rem .7rem;font-size:.78rem;cursor:pointer;color:var(--muted)}.item-hourly-add>button.is-on{background:var(--ink);color:#fff7ed;border-color:var(--ink)}.item-hourly-group{display:flex;align-items:center;gap:.4rem}.item-hourly-group input{border:1px solid var(--line);border-radius:999px;padding:.28rem .7rem;background:#fff;color:var(--ink);font-size:.78rem;width:9rem}.item-hourly-group button:disabled{opacity:.45;cursor:not-allowed}.item-hourly-popover{position:absolute;z-index:5;top:calc(100% + .4rem);left:0;width:min(40rem,72vw);padding:.7rem;background:var(--paper);border:1px solid var(--line);border-radius:.8rem;box-shadow:0 12px 32px #1c19171f}.item-hourly-search input{width:100%}.item-hourly-picker{list-style:none;margin:.55rem 0 0;padding:.4rem .55rem;max-height:11rem;overflow:auto;border:1px solid var(--line);border-radius:.7rem;background:#fff;display:grid;grid-template-columns:repeat(auto-fill,minmax(13.5rem,1fr));gap:.1rem .75rem}.item-hourly-picker label{display:flex;align-items:center;gap:.45rem;min-width:0;color:var(--ink);font-size:.8rem;cursor:pointer}.item-hourly-picker label.is-disabled{opacity:.45;cursor:not-allowed}.item-hourly-picker label input{width:.95rem;height:.95rem;margin:0;padding:0;flex:none;border:0;background:transparent;accent-color:var(--ink)}.item-hourly-chips{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.65rem}.item-hourly-chip{display:inline-flex;align-items:center;gap:.3rem;border:1px solid var(--line);background:#fff;border-radius:999px;padding:.12rem .35rem .12rem .28rem;font-size:.75rem;color:var(--ink)}.item-hourly-chip.is-on{box-shadow:inset 0 0 0 1.5px var(--ink)}.item-hourly-chip-main,.item-hourly-chip-x,.item-hourly-ungroup{border:0;background:transparent;color:inherit;cursor:pointer;font:inherit;padding:0}.item-hourly-chip-main{display:inline-flex;align-items:center;gap:.35rem;padding:.08rem .15rem}.item-hourly-chip-x{color:var(--muted);font-size:.95rem;line-height:1;padding:0 .15rem}.item-hourly-ungroup{color:var(--muted);font-size:.68rem;text-decoration:underline}.item-hourly-ungroup:disabled{opacity:.4;cursor:not-allowed;text-decoration:none}.item-hourly-swatch{width:.55rem;height:.55rem;border-radius:999px;flex:none}.item-hourly-note{margin:-.2rem 0 .65rem;color:var(--muted);font-size:.78rem}.chart-tooltip{background:var(--paper);border:1px solid var(--line);border-radius:.55rem;padding:.45rem .65rem;box-shadow:0 8px 24px #1c191714;font-size:.8rem}.chart-tooltip p{margin:.15rem 0 0}.chart-tooltip p:first-child{margin:0;font-weight:600}.sales-line-live .recharts-line-curve{stroke-dasharray:7 6;animation:sales-live-march 1.2s linear infinite,sales-live-pulse 1.8s ease-in-out infinite}.sales-live-dot-ring{opacity:.28;transform-box:fill-box;transform-origin:center;animation:sales-live-ring 1.8s ease-in-out infinite}@keyframes sales-live-march{to{stroke-dashoffset:-26}}@keyframes sales-live-pulse{0%,to{stroke-opacity:1}50%{stroke-opacity:.42}}@keyframes sales-live-ring{0%,to{transform:scale(.9);opacity:.32}50%{transform:scale(1.35);opacity:.08}}@media(prefers-reduced-motion:reduce){.sales-line-live .recharts-line-curve,.sales-live-dot-ring{animation:none}}.affinity-wrap{overflow-x:auto}.affinity-clustermap{display:grid;gap:2px;width:max-content;align-items:stretch;justify-items:stretch}.affinity-left-dendro{display:flex;overflow:hidden;justify-content:flex-end}.affinity-dendro{display:block}.affinity-col-label{writing-mode:vertical-rl;transform:rotate(180deg);font-size:.65rem;line-height:1.05;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;justify-self:center}.affinity-row-label{font-size:.68rem;line-height:1;color:var(--muted);display:flex;align-items:center;justify-content:flex-end;padding-right:.4rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.affinity-cell{box-sizing:border-box;width:100%;height:100%;border:0;padding:0;border-radius:2px;cursor:default}.affinity-tip{margin:.75rem 0 0;font-size:.85rem}.affinity-float-tip{position:fixed;z-index:30;pointer-events:none;max-width:18rem;background:var(--paper);border:1px solid var(--line);border-radius:.55rem;padding:.45rem .65rem;box-shadow:0 8px 24px #1c19171a;font-size:.8rem;line-height:1.35}.pair-table th:first-child,.pair-table td:first-child{text-align:left}.pair-table th:nth-child(n+2),.pair-table td:nth-child(n+2){text-align:right;font-variant-numeric:tabular-nums}.pair-charts{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:1rem;margin-top:1rem}.pair-chart-title{margin:0;font-size:.9rem}.pair-caption{margin:.2rem 0 .55rem}.pair-graph{display:block;width:100%;height:auto;background:var(--cal-empty);border-radius:.75rem}.pair-graph-label{fill:var(--muted);font-size:11px;font-family:Sora,ui-sans-serif,system-ui,sans-serif}.pair-legend{display:flex;flex-wrap:wrap;gap:.75rem 1rem;margin:.55rem 0 0;padding:0;list-style:none;color:var(--muted);font-size:.78rem}.pair-legend li{display:flex;align-items:center;gap:.35rem}.pair-swatch{width:.85rem;height:.28rem;border-radius:999px}.pair-swatch--warm{background:#c2410c}.pair-swatch--mid{background:#a8a29e}.pair-swatch--cool{background:#1e3a5f}.export-row{display:flex;flex-wrap:wrap;gap:.75rem;align-items:end}.export-shape{display:flex;align-items:center;gap:.65rem;margin-top:.9rem;flex-wrap:wrap}.export-cols-label{margin:.85rem 0 .35rem}.export-cols{display:grid;grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));gap:.35rem .75rem}.export-col{display:flex;align-items:center;gap:.4rem;font-size:.85rem;color:var(--ink)}@media(max-width:900px){.dashboard-grid,.kpi-row,.pair-charts{grid-template-columns:1fr}}
