:root{--lightningcss-light: ;--lightningcss-dark:initial;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--bg:#0f0f10;--panel:#1a1a1c;--border:#2a2a2e;--text:#e5e5e7;--muted:#888892;--accent:#c084fc;--accent-bg:#c084fc26;--good:#4ade80;font-family:system-ui,-apple-system,sans-serif;line-height:1.5}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:system-ui,-apple-system,sans-serif;font-size:14px}.app{max-width:1100px;margin:0 auto;padding:1.5rem}header{border-bottom:1px solid var(--border);align-items:baseline;gap:2rem;margin-bottom:1.5rem;padding-bottom:1rem;display:flex}header h1{letter-spacing:-.01em;margin:0;font-size:1.1rem;font-weight:500}header nav{flex:1;gap:.25rem;display:flex}header nav button,.logout{color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;padding:.4rem .8rem;font-family:inherit;font-size:.9rem}header nav button:hover{color:var(--text)}header nav button.active{background:var(--accent-bg);color:var(--accent)}.logout{margin-left:auto;font-size:.8rem}.hamburger{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:6px;width:2.4rem;height:2.4rem;margin-left:auto;font-family:inherit;font-size:1.1rem;display:none}main{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:1.5rem}button{font-family:inherit}button.primary{background:var(--accent);color:#0f0f10;border:none;font-weight:500}input,select{background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:.45rem .65rem;font-family:inherit;font-size:.9rem}input:focus{border-color:var(--accent);outline:none}h2{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 .75rem;font-size:.85rem;font-weight:500}.hint{color:var(--muted);margin:0 0 1rem;font-size:.85rem}.login{place-items:center;min-height:100svh;display:grid}.login form{background:var(--panel);border:1px solid var(--border);border-radius:10px;gap:.75rem;width:280px;padding:2rem;display:grid}.login h1{letter-spacing:-.01em;margin:0 0 .5rem;font-size:1rem;font-weight:500}.login button{background:var(--accent);color:#0f0f10;cursor:pointer;border:none;border-radius:6px;padding:.55rem;font-weight:500}.login .err{color:#ef4444;margin:0;font-size:.85rem}.live{grid-template-columns:1fr 1fr;gap:1.5rem;display:grid}.feed{max-height:60vh;margin:0;padding:0;list-style:none;overflow-y:auto}.feed li{border-bottom:1px solid var(--border);align-items:baseline;gap:.5rem;padding:.4rem 0;font-size:.85rem;display:flex}.feed .time{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.75rem}.feed .user{color:var(--accent);min-width:6rem;font-weight:500}.feed .amount{color:var(--good);font-variant-numeric:tabular-nums;font-weight:500}.feed .msg{color:var(--text);word-break:break-word;flex:1}.feed .empty{color:var(--muted);border:none}.feed .usd{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.75rem}.total-usd{color:var(--muted);text-transform:none;letter-spacing:0;font-variant-numeric:tabular-nums;margin-left:.5rem;font-size:.7rem;font-weight:400}.total-row{color:var(--muted);font-variant-numeric:tabular-nums;margin-top:1rem;font-size:.85rem}.usd-mono{color:var(--muted);font-variant-numeric:tabular-nums}.chat-tabs{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:.25rem;margin-bottom:.5rem;padding-bottom:.5rem;display:flex}.chat-tabs button{color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:.4rem;padding:.3rem .65rem;font-family:inherit;font-size:.8rem;display:inline-flex}.chat-tabs button:hover{color:var(--text)}.chat-tabs button.active{background:var(--accent-bg);color:var(--accent)}.chat-tabs button.pm{font-style:italic}.chat-tabs button .count{font-variant-numeric:tabular-nums;background:#ffffff14;border-radius:999px;padding:0 5px;font-size:.7rem;font-style:normal}.chat-tabs button.active .count{background:#c084fc40}.feed-pm{background:#c084fc0a;border-radius:6px;padding:.25rem .5rem}.feed-pm .from-self .user{color:var(--good)}.tabs{gap:.25rem;margin-bottom:1rem;display:flex}.tabs button{border:1px solid var(--border);color:var(--muted);cursor:pointer;background:0 0;border-radius:6px;padding:.35rem .8rem;font-size:.85rem}.tabs button.active{background:var(--accent-bg);color:var(--accent);border-color:var(--accent)}.ranking{margin:0;padding:0;list-style:none}.ranking-row{border-bottom:1px solid var(--border);border-radius:8px;grid-template-columns:2.6rem 1fr auto;align-items:center;gap:1rem;padding:.85rem;display:grid;position:relative;overflow:hidden}.ranking-row:last-child{border-bottom:none}.ranking-row .bar{z-index:0;background:linear-gradient(90deg,#c084fc14,#c084fc05);border-right:1px solid #c084fc26;transition:width .5s cubic-bezier(.32,.72,0,1);position:absolute;top:0;bottom:0;left:0}.ranking-row>:not(.bar){z-index:1;position:relative}.rank-badge{width:2.2rem;height:2.2rem;color:var(--muted);border:1px solid var(--border);font-variant-numeric:tabular-nums;background:#ffffff0a;border-radius:50%;place-items:center;font-size:.95rem;font-weight:700;display:grid}.rank-badge.r1{color:#1a1a1c;background:linear-gradient(135deg,#fde68a,#f59e0b);border-color:#f59e0b99;box-shadow:0 4px 18px #f59e0b40}.rank-badge.r2{color:#1a1a1c;background:linear-gradient(135deg,#f3f4f6,#9ca3af);border-color:#9ca3af99;box-shadow:0 4px 18px #9ca3af33}.rank-badge.r3{color:#1a1a1c;background:linear-gradient(135deg,#fcd9b6,#b87333);border-color:#b8733399;box-shadow:0 4px 18px #b8733333}.ranking-row .info{min-width:0}.ranking-row .username{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:1rem;font-weight:600;overflow:hidden}.ranking-row .meta{color:var(--muted);font-variant-numeric:tabular-nums;margin-top:.15rem;font-size:.78rem}.ranking-row .amount{text-align:right;white-space:nowrap}.ranking-row .tokens{color:var(--good);font-variant-numeric:tabular-nums;font-size:1.35rem;font-weight:700;line-height:1.1}.ranking-row .usd-label{color:var(--muted);font-variant-numeric:tabular-nums;margin-top:.1rem;font-size:.78rem}.ranking-total{border-top:1px solid var(--border);color:var(--muted);justify-content:space-between;align-items:baseline;margin-top:1rem;padding-top:.85rem;font-size:.85rem;display:flex}.ranking-total .amounts{color:var(--text);font-variant-numeric:tabular-nums;font-size:1rem}.ranking-total .usd-label{color:var(--muted);margin-left:.4rem;font-size:.85rem}.show-summary{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem;margin:1rem 0 2rem;display:grid}.stat{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:1rem 1.25rem}.stat-label{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:.4rem;font-size:.75rem}.stat-tokens{color:var(--good);font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:700;line-height:1.1}.stat-usd{color:var(--muted);font-variant-numeric:tabular-nums;margin-top:.2rem;font-size:.78rem}.show-grid{grid-template-columns:1fr 1.4fr;gap:1.5rem;display:grid}@media (width<=800px){.show-grid{grid-template-columns:1fr}}.session-list{margin:0;padding:0;list-style:none}.session-list li{border-bottom:1px solid var(--border);grid-template-columns:4.5rem auto 1fr auto auto auto;align-items:baseline;gap:.75rem;padding:.55rem 0;font-size:.85rem;display:grid}.session-list li:last-child{border:none}.kind-pill{color:var(--accent);text-transform:uppercase;letter-spacing:.06em;text-align:center;background:#c084fc2e;border-radius:999px;padding:2px 8px;font-size:.7rem;font-weight:600}.kind-pill.spy_show{color:var(--good);background:#4ade802e}.session-list .when{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.78rem}.session-list .who{color:var(--text);font-weight:500}.session-list .dur{color:var(--muted);font-variant-numeric:tabular-nums}.session-list .tk{color:var(--good);font-variant-numeric:tabular-nums;font-weight:600}.session-list .dol{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.78rem}.session-list .empty{color:var(--muted);border:none}.income-summary{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem;margin:1rem 0 1.75rem;display:grid}.income-summary .stat{position:relative;overflow:hidden}.income-summary .stat:before{content:"";background:var(--good);width:3px;position:absolute;top:0;bottom:0;left:0}.tip-card:before{background:#4ade80}.priv-card:before{background:#c084fc}.spy-card:before{background:#60a5fa}.total-card:before{background:linear-gradient(#4ade80,#c084fc)}.income-block{margin-bottom:2rem}.income-block h2{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 .75rem;font-size:.85rem;font-weight:500}.dow-bars{grid-template-columns:repeat(7,1fr);align-items:end;gap:.5rem;height:200px;padding:0 .25rem;display:grid}.dow-col{flex-direction:column;align-items:center;gap:.4rem;height:100%;display:flex}.dow-bar{background:#ffffff08;border-radius:6px 6px 0 0;flex-direction:column-reverse;width:100%;height:100%;display:flex;position:relative;overflow:hidden}.dow-bar .seg{width:100%;transition:height .6s cubic-bezier(.32,.72,0,1)}.seg-tip{background:#4ade80}.seg-priv{background:#c084fc}.seg-spy{background:#60a5fa}.dow-col .dow-label{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:.75rem}.dow-col .dow-amount{color:var(--text);font-variant-numeric:tabular-nums;font-size:.75rem}.legend{color:var(--muted);align-items:center;gap:1rem;margin-top:.75rem;font-size:.78rem;display:flex}.legend .dot{vertical-align:middle;border-radius:50%;width:.6rem;height:.6rem;margin-right:.35rem;display:inline-block}.legend .dot.tip,.readout-row .dot.tip{background:#4ade80}.legend .dot.priv,.readout-row .dot.priv{background:#c084fc}.legend .dot.spy,.readout-row .dot.spy{background:#60a5fa}.heatmap-wrap{grid-template-columns:1fr 220px;align-items:start;gap:1.25rem;display:grid}.heatmap-grid{gap:2px;display:grid}.heatmap-grid .hour-row{color:var(--muted);grid-template-columns:2.5rem repeat(24,1fr);gap:2px;margin-bottom:4px;font-size:.7rem;display:grid}.heatmap-grid .hour-label{text-align:center}.heatmap-grid .hm-row{grid-template-columns:2.5rem repeat(24,1fr);gap:2px;display:grid}.heatmap-grid .dow-tick{color:var(--muted);align-self:center;font-size:.72rem}.heatmap-grid .hm-cell{aspect-ratio:1;border:1px solid var(--border);cursor:pointer;border-radius:2px;outline:0 solid #0000;transition:outline .1s}.heatmap-grid .hm-cell.hm-hover{outline:2px solid var(--accent);outline-offset:-1px;z-index:2}.heatmap-readout{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:.85rem 1rem;font-size:.85rem;position:sticky;top:1rem}.readout-when{color:var(--text);margin-bottom:.5rem;font-size:.85rem}.readout-row{font-variant-numeric:tabular-nums;color:var(--text);grid-template-columns:1fr auto auto;align-items:center;gap:.6rem;padding:.25rem 0;display:grid}.readout-row.total{border-top:1px solid var(--border);color:var(--text);margin-top:.4rem;padding-top:.5rem}.readout-row .muted{color:var(--muted);font-size:.78rem}.readout-row .dot{border-radius:50%;width:.6rem;height:.6rem}.readout-empty{color:var(--muted);text-align:center;padding:1rem 0}.income-cols{grid-template-columns:1fr 1.4fr;gap:1.5rem;display:grid}@media (width<=900px){.income-cols,.heatmap-wrap{grid-template-columns:1fr}}.heatmap .grid{font-variant-numeric:tabular-nums;gap:2px;display:grid}.heatmap .row{grid-template-columns:2.5rem repeat(24,1fr);gap:2px;display:grid}.heatmap .hours{color:var(--muted);grid-template-columns:2.5rem repeat(24,1fr);gap:2px;margin-bottom:4px;font-size:.7rem;display:grid}.heatmap .hour-label{text-align:center}.heatmap .dow-label{color:var(--muted);align-self:center;font-size:.75rem}.heatmap .cell{aspect-ratio:1;border:1px solid var(--border);border-radius:2px}.heatmap .totals{color:var(--muted);margin-top:1rem;font-size:.85rem}.subs .bars{grid-template-columns:repeat(30,1fr);align-items:end;gap:3px;height:200px;margin:1rem 0 .25rem;display:grid}.subs .bar-col{flex-direction:column-reverse;align-items:center;height:100%;display:flex}.subs .bar{background:var(--accent);border-radius:2px 2px 0 0;width:100%;min-height:1px}.subs .bar-col .count{color:var(--accent);font-variant-numeric:tabular-nums;margin-bottom:2px;font-size:.7rem}.subs .day-labels{color:var(--muted);text-align:center;grid-template-columns:repeat(30,1fr);gap:3px;font-size:.65rem;display:grid}.menu-editor .rows{gap:.5rem;margin:0 0 1rem;padding:0;list-style:none;display:grid}.menu-editor li{border:1px solid #0000;border-radius:6px;grid-template-columns:1.5rem 4.5rem minmax(0,1fr) 3rem auto 2rem;align-items:center;gap:.5rem;padding:.25rem .4rem;transition:background .12s,border-color .12s;display:grid}.menu-editor li.dragging{opacity:.4}.menu-editor li.drag-over{border-color:var(--accent);background:#c084fc0f}.menu-editor .drag-handle{cursor:grab;color:var(--muted);text-align:center;-webkit-user-select:none;user-select:none;letter-spacing:-.15em;font-size:1.1rem}.menu-editor .drag-handle:hover{color:var(--accent)}.menu-editor li.dragging .drag-handle{cursor:grabbing}.menu-editor .set-goal{border:1px solid var(--border);color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border-radius:6px;padding:.35rem .7rem;font-family:inherit;font-size:.78rem}.menu-editor .set-goal:hover:not(:disabled){color:var(--accent);border-color:var(--accent)}.menu-editor .set-goal:disabled{opacity:.35;cursor:not-allowed}.menu-editor .mode-letter{text-align:center;text-transform:uppercase;color:var(--accent);letter-spacing:.05em;font-weight:600}.menu-editor .current-mode{color:var(--text)}.menu-editor .menu-header{flex-wrap:wrap;align-items:flex-start;gap:1rem;margin-bottom:.5rem;display:flex}.menu-editor .menu-header .hint{flex:1;margin:0}.menu-editor .save-indicator{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;background:var(--bg);border:1px solid var(--border);border-radius:6px;min-height:1.2rem;padding:.2rem .55rem;font-size:.78rem;display:inline-block}.menu-editor .save-indicator:empty{visibility:hidden}.menu-editor .save-indicator.saved{color:var(--good);border-color:#4ade8066}.menu-editor .save-indicator.error{color:#ef4444;border-color:#ef444480}.menu-editor .overlay-vis,.menu-editor .overlay-keys{border-top:1px solid var(--border);margin-top:2.5rem;padding-top:1.5rem}.menu-editor .vis-toggles{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.5rem;display:grid}.menu-editor .vis-toggle{background:var(--bg);border:1px solid var(--border);color:var(--muted);cursor:pointer;border-radius:6px;align-items:center;gap:.6rem;padding:.65rem 1rem;font-size:.9rem;display:flex}.menu-editor .vis-toggle .dot{background:var(--border);border-radius:50%;width:.55rem;height:.55rem}.menu-editor .vis-toggle.on{color:var(--text);border-color:var(--accent)}.menu-editor .vis-toggle.on .dot{background:var(--good);box-shadow:0 0 8px #4ade8080}.menu-editor .vis-toggle:hover{border-color:var(--accent)}.menu-editor .overlay-keys h2{margin-top:0}.menu-editor input.full{width:100%;margin-bottom:1rem}.menu-editor .url-list{gap:.4rem;margin-top:.5rem;display:grid}.menu-editor .url-row{background:var(--bg);border:1px solid var(--border);text-align:left;cursor:pointer;color:var(--text);border-radius:6px;grid-template-columns:11rem minmax(0,1fr) auto;align-items:center;gap:1rem;width:100%;max-width:100%;padding:.55rem .75rem;font-family:inherit;display:grid;overflow:hidden}.menu-editor .url-row:hover{border-color:var(--accent)}.menu-editor .url-row .url-label{color:var(--muted);white-space:nowrap;font-size:.85rem}.menu-editor .url-row code{color:var(--accent);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-family:ui-monospace,Consolas,monospace;font-size:.75rem;display:block;overflow:hidden}.menu-editor .url-list{max-width:100%;overflow:hidden}@media (width<=600px){.menu-editor .url-row{grid-template-columns:1fr auto}.menu-editor .url-row code{grid-column:1/-1;font-size:.7rem}.menu-editor li{grid-template-rows:auto auto;grid-template-columns:1.2rem 4rem minmax(0,1fr) 2.8rem 1.6rem;gap:.4rem}.menu-editor li .set-goal{grid-area:2/1/auto/-1;width:100%}.menu-editor li .mode-letter{padding:.45rem .3rem}}.menu-editor .url-row .copied{color:var(--good);text-align:right;min-width:4rem;font-size:.8rem}.menu-editor .del{color:var(--muted);cursor:pointer;background:0 0;border:none;font-size:1.1rem}.menu-editor .del:hover{color:#ef4444}.actions{justify-content:flex-end;gap:.5rem;display:flex}.actions button{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:6px;padding:.45rem 1rem;font-size:.9rem}.actions button.primary{background:var(--accent);color:#0f0f10;border:none;font-weight:500}.goal-editor .current{margin-bottom:1.5rem}.goal-editor .bar-bg{background:var(--bg);border:1px solid var(--border);border-radius:999px;height:12px;overflow:hidden}.goal-editor .bar-fill{background:var(--accent);height:100%;transition:width .3s}.goal-editor .form{gap:.75rem;margin-bottom:1rem;display:grid}.goal-editor label{color:var(--muted);gap:.3rem;font-size:.85rem;display:grid}.backdrop{opacity:0;z-index:9;background:#00000080;transition:opacity .2s;display:none;position:fixed;inset:0}.app.menu-open .backdrop{opacity:1;display:block}.drawer-close{display:none}@media (width<=700px){.live{grid-template-columns:1fr}.app{padding:1rem}header{flex-wrap:wrap;gap:.75rem;margin-bottom:1rem}.hamburger{justify-content:center;align-items:center;display:inline-flex}header nav{background:var(--panel);border-left:1px solid var(--border);z-index:10;flex-direction:column;align-items:stretch;gap:.25rem;width:min(80vw,280px);padding:1rem;transition:transform .25s cubic-bezier(.32,.72,0,1);position:fixed;top:0;bottom:0;right:0;overflow-y:auto;transform:translate(100%);box-shadow:-16px 0 40px #0006}.app.menu-open header nav{transform:translate(0)}.drawer-close{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-self:flex-end;align-items:center;width:2.4rem;height:2.4rem;margin-bottom:.5rem;font-size:1.1rem;display:flex}.drawer-close:hover{color:var(--text)}header nav button,.logout{text-align:left;padding:.7rem .9rem;font-size:1rem}.logout{border-top:1px solid var(--border);border-radius:0;margin-top:auto;margin-left:0;padding-top:1rem}main{padding:1rem}}
