:root{color-scheme:light;--top: #1f1f1f;--top-2: #2b2b2b;--top-ink: #ffffff;--top-ink-2: #c8c8c8;--top-line: #3a3a3a;--context: #2b2b2b;--page: #f3f3f3;--surface: #ffffff;--surface-2: #f5f5f5;--surface-3: #ebebeb;--ink: #1f1f1f;--ink-2: #424242;--muted: #6b6b6b;--line: #e0e0e0;--axis: #c6c6c6;--accent: #217346;--accent-ink: #ffffff;--accent-soft: #e3f1e8;--ok: #217346;--ok-soft: #e3f1e8;--danger: #c42b1c;--danger-soft: #fde7e9;--shadow: 0 1px 2px rgba(0, 0, 0, .06), 0 1px 3px rgba(0, 0, 0, .08);--shadow-hover: 0 4px 10px rgba(0, 0, 0, .1), 0 2px 4px rgba(0, 0, 0, .06);--shadow-lg: 0 16px 40px rgba(0, 0, 0, .22);--flash: #fff1a8;--series-1: #2a78d6;--series-2: #eb6834;--div-pos: #2a78d6;--div-neg: #e34948;--fill-key: #00b050;--fill-key-ink: #06210f;--fill-manual: #9dc3e6;--fill-pct: #ffff00;--fill-calc: #e2efda;--fill-head: #d9d9d9;--fill-orange: #ffc000;--fill-usage: #00b0f0;--fill-invoice: #7030a0;--fill-invoice-ink: #ffffff;--edited: #eb6834;font-family:Segoe UI Variable Text,Segoe UI,system-ui,-apple-system,sans-serif;font-size:14px;color:var(--ink);background:var(--page);-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;background:var(--page)}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--accent)}h1,h2,h3{margin:0}.app{display:grid;grid-template-rows:auto auto auto 1fr auto;height:100vh}.spacer{flex:1}.topbar{display:flex;align-items:center;gap:14px;padding:0 20px;height:56px;background:var(--top);color:var(--top-ink);border-bottom:1px solid var(--top-line)}.brand{display:flex;align-items:center;gap:12px;font-size:19px;font-weight:600;letter-spacing:.2px;white-space:nowrap}.logo{width:30px;height:30px;flex:none}.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:7px 14px;cursor:pointer;font-weight:600;transition:background .15s,border-color .15s,box-shadow .15s,transform .05s}.btn:hover:not(:disabled){border-color:var(--axis);box-shadow:var(--shadow)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.6;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover:not(:disabled){filter:brightness(1.06)}.btn.on-dark{background:#ffffff0f;color:var(--top-ink);border-color:#fff6}.btn.on-dark:hover:not(:disabled){background:#ffffff24;border-color:#fff9;box-shadow:none}.icon-btn{background:none;border:0;font-size:22px;line-height:1;cursor:pointer;color:var(--ink-2);border-radius:6px;padding:2px 8px}.icon-btn:hover{background:var(--surface-2)}.link{background:none;border:0;padding:0;color:var(--accent);cursor:pointer;text-align:left;font-weight:600}.link:hover{text-decoration:underline}.user{position:relative}.avatar-btn{display:flex;align-items:center;gap:4px;background:none;border:0;cursor:pointer;color:var(--top-ink);padding:4px;border-radius:999px}.avatar-btn:hover .avatar{box-shadow:0 0 0 3px #ffffff40}.avatar{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#e3ecf8;color:#0d2b5b;font-size:13px;font-weight:700;transition:box-shadow .15s}.avatar.large{width:40px;height:40px;font-size:15px}.chev{font-size:11px;color:var(--top-ink-2)}.menu{position:absolute;right:0;top:calc(100% + 8px);width:290px;z-index:30;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-lg);padding:8px;animation:pop .14s ease-out}.menu-id{display:flex;gap:12px;align-items:center;padding:10px 10px 12px;border-bottom:1px solid var(--line)}.menu-email{font-weight:700;word-break:break-all}.menu-role{color:var(--muted);font-size:12px;margin-top:2px;font-weight:600}.menu-section{padding:10px;border-bottom:1px solid var(--line)}.menu-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700;margin-bottom:8px}.segmented{display:grid;grid-template-columns:repeat(3,1fr);background:var(--surface-2);border-radius:8px;padding:3px;gap:3px}.segmented button{border:0;background:none;padding:6px 0;border-radius:6px;cursor:pointer;font-weight:600;color:var(--ink-2)}.segmented button.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.menu-item{display:block;width:100%;text-align:left;background:none;border:0;padding:10px;border-radius:8px;cursor:pointer;font-weight:600}.menu-item:hover{background:var(--surface-2)}.menu-item.danger{color:var(--danger)}.context{background:var(--context);border-bottom:1px solid var(--line);box-shadow:var(--shadow);position:relative;z-index:5}.context-row{display:flex;align-items:center;gap:16px;padding:12px 20px 4px;flex-wrap:wrap}.fy{display:inline-flex;align-items:center;gap:8px;font-weight:700;color:var(--ink-2);font-size:13px}select,input,textarea{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:6px 10px;transition:border-color .15s,box-shadow .15s}select:focus,input:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.fy select{font-weight:700;font-size:14px;color:var(--ink);padding:6px 12px}.chip{display:inline-flex;align-items:center;gap:7px;padding:4px 12px;border-radius:999px;font-size:12.5px;font-weight:700;background:var(--surface-2);color:var(--ink-2)}.chip.open{background:var(--ok-soft);color:var(--ok)}.chip.closed{background:var(--danger-soft);color:var(--danger)}.status-dot{width:8px;height:8px;border-radius:50%;background:currentColor;display:inline-block}.status-dot.ok{color:var(--ok)}.tabs{display:flex;gap:2px;padding:0 14px;overflow-x:auto}.tabs a{position:relative;padding:12px 14px 11px;color:var(--ink-2);text-decoration:none;font-weight:700;white-space:nowrap;border-radius:8px 8px 0 0;transition:color .15s,background .15s}.tabs a:hover{color:var(--ink);background:var(--surface-2)}.tabs a:after{content:"";position:absolute;left:12px;right:12px;bottom:0;height:3px;border-radius:3px 3px 0 0;background:var(--accent);transform:scaleX(0);transition:transform .2s ease}.tabs a.active{color:var(--ink)}.tabs a.active:after{transform:scaleX(1)}.tabs .divider{width:1px;background:var(--line);margin:10px 8px}.main{overflow:auto;min-height:0}.sheet-layout{display:flex;height:100%;min-height:0}.loading{display:flex;align-items:center;gap:10px;padding:24px;color:var(--muted);font-weight:600}.spinner{width:18px;height:18px;border-radius:50%;border:2px solid var(--line);border-top-color:var(--accent);animation:spin .8s linear infinite}.grid-wrap{overflow:auto;flex:1;background:var(--surface);margin:12px 0 12px 12px;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow)}.grid{border-collapse:separate;border-spacing:0;table-layout:fixed;font-size:13px;font-weight:500}.grid th{position:sticky;background:var(--surface-2);color:var(--muted);font-weight:600;font-size:11px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);z-index:1}.grid thead th{top:0;height:24px}.grid tbody th{left:0;text-align:right;padding-right:6px}.grid th.corner{left:0;top:0;z-index:2}.grid td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:2px 7px;height:24px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background-color .6s ease}.grid td.num{text-align:right;font-variant-numeric:tabular-nums}.grid td.bold{font-weight:700}.grid td.clickable{cursor:pointer}.grid td.clickable:hover{filter:brightness(.96)}.grid td.editable{box-shadow:inset 0 0 0 1.5px var(--accent)}.grid td.edited{position:relative}.grid td.edited:after{content:"";position:absolute;top:0;right:0;border-style:solid;border-width:0 8px 8px 0;border-color:transparent var(--edited) transparent transparent}.grid td.selected{outline:2px solid var(--accent);outline-offset:-2px}.grid td.flash{animation:flash 1.8s ease-out}.fill-key{background:var(--fill-key);color:var(--fill-key-ink)}.fill-manual{background:var(--fill-manual)}.fill-pct{background:var(--fill-pct)}.fill-calc{background:var(--fill-calc)}.fill-head{background:var(--fill-head)}.fill-orange{background:var(--fill-orange)}.fill-usage{background:var(--fill-usage)}.fill-invoice{background:var(--fill-invoice);color:var(--fill-invoice-ink)}.fill-other{background:var(--surface-2)}.grid td.fill-pct,.grid td.fill-manual,.grid td.fill-calc{color:#1f1f1f}.panel{width:400px;flex:none;overflow:auto;padding:18px;margin:12px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-hover);animation:slide-in .18s ease-out}.panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.panel{font-size:13px}.panel-addr{color:var(--muted);font-size:11.5px;font-weight:500}.panel-title{font-size:14px;margin:3px 0 8px;font-weight:600;line-height:1.35;color:var(--ink-2)}.panel-value{font-size:20px;font-weight:600;margin-bottom:6px;font-variant-numeric:tabular-nums}.panel h3{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:16px 0 6px;font-weight:600}.panel p{line-height:1.45;color:var(--ink-2)}.panel .link{font-weight:500}.panel .btn{font-weight:500;padding:6px 12px}.ref-chip-cell{width:16px;padding-right:6px!important}.ref-chip{display:inline-block;width:10px;height:10px;border-radius:2px;margin-top:4px}.formula{display:block;padding:10px;background:var(--surface-2);border-radius:8px;border:1px solid var(--line);font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:12.5px;word-break:break-all}.inputs{width:100%;border-collapse:collapse}.inputs td{padding:8px 0;border-bottom:1px solid var(--line);vertical-align:top}.inputs td.num{text-align:right;padding-left:8px;font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:500}.edit-box{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:2px 14px 12px;margin-top:14px}.edit-box label,.field{display:flex;flex-direction:column;gap:5px;margin-bottom:10px;font-weight:500;font-size:12.5px;color:var(--ink-2)}.row{display:flex}.gap{gap:8px}.history{list-style:none;padding:0;margin:0}.history li{padding:8px 0;border-bottom:1px solid var(--line)}.alert{background:var(--danger-soft);color:var(--ink);border-left:3px solid var(--danger);padding:10px 12px;border-radius:6px;margin:10px 0;font-weight:500}.alert.banner{margin:10px 20px 0}.muted{color:var(--muted)}.small{font-size:12.5px}.right{text-align:right}.strong{font-weight:700}.page{padding:20px 24px 32px;max-width:1500px}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:18px;flex-wrap:wrap}.page-head h1{font-size:22px;font-weight:700}.page-head p{margin:4px 0 0}.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:16px 18px;margin-bottom:18px}.card-title{font-size:15px;font-weight:700;margin-bottom:8px;display:flex;align-items:center;gap:8px}.count{background:var(--surface-3);color:var(--ink-2);border-radius:999px;font-size:12px;padding:1px 9px;font-weight:700}.empty{color:var(--ok);font-weight:600;margin:8px 0 2px}.group{margin:28px 0 8px;scroll-margin-top:12px}.group-title{font-size:18px;font-weight:700;margin-bottom:12px}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-bottom:14px}.tile{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px 16px;box-shadow:var(--shadow);transition:box-shadow .15s,transform .15s}.tile:hover{box-shadow:var(--shadow-hover);transform:translateY(-1px)}.tile-label{color:var(--ink-2);font-size:12.5px;font-weight:600}.tile-value{font-size:26px;font-weight:700;margin-top:4px}.charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:14px}.chart{margin:0;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px;box-shadow:var(--shadow);transition:box-shadow .15s}.chart:hover{box-shadow:var(--shadow-hover)}.chart figcaption{font-weight:700;margin-bottom:6px}.chart-area{position:relative}.legend{display:flex;gap:16px;color:var(--ink-2);font-size:12.5px;font-weight:600;margin-bottom:4px;flex-wrap:wrap}.legend>span{display:inline-flex;align-items:center;gap:6px}.key{display:inline-block;width:10px;height:10px;border-radius:2px}.key.line{height:2px;width:14px;border-radius:1px}.gridline{stroke:var(--line);stroke-width:1}.axis,.crosshair{stroke:var(--axis);stroke-width:1}.tick{fill:var(--muted);font-size:11px;font-weight:600;font-variant-numeric:tabular-nums}.ring{stroke:var(--surface);stroke-width:2}.chart-tip{position:absolute;pointer-events:none;min-width:180px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-lg);border-radius:8px;padding:8px 10px;font-size:12.5px;z-index:3}.chart-tip-title{font-weight:700;margin-bottom:4px}.chart-tip-row{display:grid;grid-template-columns:10px 1fr auto;gap:6px;align-items:center;font-weight:500}.chart-tip-row .num{font-variant-numeric:tabular-nums;font-weight:700}table.data{border-collapse:collapse;width:100%;font-weight:500}table.data th,table.data td{padding:9px 12px;border-bottom:1px solid var(--line);text-align:left}table.data th{color:var(--ink-2);font-weight:700;font-size:12.5px;background:var(--surface-2)}table.data tbody tr{transition:background .12s}table.data tbody tr:hover{background:var(--surface-2)}table.data .num{text-align:right;font-variant-numeric:tabular-nums}.meter{display:inline-block;width:60px;height:6px;border-radius:3px;background:var(--surface-3);margin-right:8px;vertical-align:middle;overflow:hidden}.meter>span{display:block;height:100%;background:var(--series-1);border-radius:3px}.switch{display:inline-flex;align-items:center;gap:8px;font-weight:600;cursor:pointer;color:var(--ink-2)}.switch input{position:absolute;opacity:0;width:0;height:0}.switch span{width:36px;height:20px;border-radius:999px;background:var(--surface-3);position:relative;transition:background .15s;border:1px solid var(--line)}.switch span:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:var(--surface);box-shadow:var(--shadow);transition:transform .15s}.switch input:checked+span{background:var(--accent);border-color:var(--accent)}.switch input:checked+span:after{transform:translate(16px)}.switch input:focus-visible+span{box-shadow:0 0 0 3px var(--accent-soft)}.dq{margin-bottom:18px}.modal-backdrop{position:fixed;inset:0;background:#080e188c;display:grid;place-items:center;z-index:50;animation:fade .15s ease-out}.modal{width:min(440px,calc(100vw - 32px));background:var(--surface);color:var(--ink);border-radius:14px;box-shadow:var(--shadow-lg);padding:20px 22px;animation:pop .16s ease-out}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.modal-head h2{font-size:18px;font-weight:700}.modal p{line-height:1.5}.steps{padding-left:20px;margin:4px 0 12px;line-height:1.6}.qr{display:grid;place-items:center;background:#fff;border-radius:10px;padding:10px;margin:6px auto 10px;width:fit-content;border:1px solid var(--line)}.qr img{display:block;image-rendering:pixelated}.secret{display:block;text-align:center;font-family:ui-monospace,Consolas,monospace;letter-spacing:.06em;padding:8px;background:var(--surface-2);border-radius:8px;margin-bottom:14px;word-break:break-all}.footbar{display:flex;gap:18px;align-items:center;padding:8px 20px;font-size:12.5px;font-weight:600;background:var(--top);color:var(--top-ink-2);border-top:1px solid var(--top-line);flex-wrap:wrap}.footbar span{display:inline-flex;align-items:center;gap:7px}.foot-note{color:#7f8ea6}.sw{display:inline-block;width:12px;height:12px;border-radius:3px;border:1px solid rgba(255,255,255,.25)}.edited-sw{background:linear-gradient(225deg,var(--edited) 0 38%,#ffffff 38%)}.center{display:grid;place-items:center;height:100vh;background:var(--top)}.signin-card{text-align:center;padding:32px 36px;max-width:420px}.signin-card .logo{width:44px;height:44px}.signin-card h1{font-size:20px;margin:12px 0 8px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pop{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:none}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes slide-in{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:none}}@keyframes flash{0%{background-color:var(--flash)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}@media(max-width:860px){.brand{font-size:16px}.btn.on-dark .label{display:none}.sheet-layout{display:block}.grid-wrap{margin:10px;height:calc(100% - 20px)}.panel{position:fixed;inset:auto 0 0;width:auto;max-height:62vh;margin:0;border-radius:14px 14px 0 0;z-index:20}.charts{grid-template-columns:1fr}}.context{background:var(--context);border-bottom:1px solid var(--top-line);box-shadow:none}.fy{color:var(--top-ink-2)}.fy select{background:#3a3a3a;color:#fff;border-color:#555}.fy select:focus{border-color:#33c481;box-shadow:0 0 0 3px #33c48140}.chip{background:#ffffff14;color:var(--top-ink-2)}.chip.open{background:#33c48129;color:#8fdcb2}.chip.closed{background:#e85c502e;color:#f3a59e}.tabs a{color:var(--top-ink-2)}.tabs a:hover{color:#fff;background:#ffffff0f}.tabs a.active{color:#fff}.tabs a:after{background:#33c481}.tabs .divider{background:#4a4a4a}.avatar{background:#e8e8e8;color:#1f1f1f}.avatar-btn:hover .avatar{box-shadow:0 0 0 3px #ffffff38}.btn.on-dark{background:#ffffff0d;border-color:#ffffff59}.grid th{background:#2d2d2d;color:#c4c4c4;border-color:#3d3d3d}.grid td.selected{outline-color:var(--accent)}.foot-note{color:#9a9a9a}.card,.chart,.tile{transition:box-shadow .18s ease,transform .18s ease}.card:hover,.chart:hover,.tile:hover{transform:translateY(-2px);box-shadow:var(--shadow-hover)}.group-link{color:var(--ink);text-decoration:none;font-weight:700;cursor:pointer}.group-link:hover{color:var(--accent)}
