:root{--bg:#f8fafc;--surface:#fff;--text:#0f172a;--muted:#64748b;--line:#e2e8f0;--line-strong:#cbd5e1;--primary:#1d4ed8;--primary-hover:#2563eb;--danger:#b91c1c;--danger-hover:#dc2626;--dark:#0f172a;--selected:#e8f0fc;--selected-line:#60a5fa}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font:16px/1.4 system-ui,-apple-system,Segoe UI,sans-serif}button,input,select,textarea{font:inherit;min-height:3rem}:focus-visible{outline-offset:2px;outline:3px solid #2563eb}a{color:inherit}.ez-shell{background:#000;flex-wrap:wrap;gap:2px 4px;padding:6px 16px;font-size:13px;display:flex}.ez-shell a{color:#9ca3af;border-radius:6px;padding:4px 10px;text-decoration:none}.ez-shell a[aria-current=page]{color:#fff;background:#374151}.topbar{background:var(--dark);color:#fff;flex-wrap:wrap;align-items:center;gap:12px;padding:8px 16px;display:flex}.topbar .brand{letter-spacing:.15em;font-size:13px;font-weight:600}.topbar .sep{color:#64748b}.topbar .app-name{color:#e2e8f0}.topbar-actions{align-items:center;gap:12px;margin-left:auto;display:flex}.topbar-actions .btn{align-items:center;text-decoration:none;display:inline-flex}.main{padding:16px}.stack{flex-direction:column;gap:12px;display:flex}.stack-lg{flex-direction:column;gap:24px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.row-end{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.grow{flex:1}.ml-auto{margin-left:auto}.grid-2,.grid-3,.grid-4{grid-template-columns:1fr;gap:16px;display:grid}@media (width>=800px){.grid-2{grid-template-columns:1fr 1fr}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}}.span-2{grid-column:span 1}@media (width>=800px){.span-2{grid-column:span 2}}.max-3xl{max-width:48rem}.max-5xl{max-width:64rem}h1{margin:0;font-size:1.75rem}h2,h3{margin:0;font-size:1.125rem;font-weight:600}.muted{color:var(--muted)}.small{font-size:.875rem}.num{font-variant-numeric:tabular-nums}.strong{font-weight:600}.danger-text{color:var(--danger);font-weight:600}.btn{cursor:pointer;min-height:3rem;color:var(--text);background:#e2e8f0;border:0;border-radius:.5rem;padding:0 1.25rem;font-weight:500}.btn:hover{background:#cbd5e1}.btn:disabled{color:#94a3b8;cursor:default;background:#e2e8f0}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover)}.btn-primary:disabled{color:#fff;background:#cbd5e1}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:var(--danger-hover)}.btn-danger:disabled{color:#fff;background:#cbd5e1}.btn-link{color:var(--primary);cursor:pointer;background:0 0;border:0;min-height:0;padding:0;text-decoration:underline}.tabs{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:8px;padding-bottom:12px;display:flex}.tab{min-height:3rem;color:var(--text);cursor:pointer;background:#e2e8f0;border:0;border-radius:.5rem;align-items:center;padding:0 1rem;font-weight:500;text-decoration:none;display:inline-flex}.tab:hover{background:#cbd5e1}.tab.active,.tab[aria-current=page]{background:var(--dark);color:#fff}.chip{color:#1e293b;cursor:pointer;background:#e2e8f0;border:0;border-radius:.5rem;min-height:3rem;padding:0 .75rem;font-size:.875rem}.chip.on{background:var(--primary);color:#fff}.field{color:#334155;display:block}.field .req{color:var(--danger)}.field input,.field select,.field textarea{border:1px solid var(--line-strong);background:var(--surface);width:100%;min-height:3rem;color:var(--text);border-radius:.5rem;margin-top:4px;padding:0 .75rem}.field textarea{padding:.5rem .75rem}.field input:disabled{background:#f1f5f9}.field.relative{position:relative}.check{align-items:center;gap:8px;min-height:3rem;display:flex}.check input{width:1.25rem;height:1.25rem;min-height:0;margin:0}.numpad-wrap{z-index:40;width:14rem;margin-top:4px;position:absolute}.numpad{background:var(--surface);border:1px solid var(--line);border-radius:.5rem;grid-template-columns:repeat(3,1fr);gap:8px;padding:8px;display:grid;box-shadow:0 10px 25px #00000026}.numpad button{cursor:pointer;background:#f1f5f9;border:0;border-radius:.5rem;min-height:3.5rem;font-size:1.25rem;font-weight:500}.numpad button:hover{background:#e2e8f0}fieldset{border:0;margin:0;padding:0}legend{color:#334155;padding:0}.card{background:var(--surface);border:1px solid var(--line);border-radius:.5rem;padding:16px}.card h3{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:.875rem;font-weight:600}.card dl{flex-direction:column;gap:4px;margin:8px 0 0;display:flex}.card dl div{justify-content:space-between;gap:16px;display:flex}.card dt{color:#475569}.card dd{font-variant-numeric:tabular-nums;margin:0;font-weight:500}.panel{background:var(--surface);border:1px solid var(--line);border-radius:.5rem;flex-direction:column;gap:16px;padding:16px;display:flex}.table-wrap{border:1px solid var(--line);background:var(--surface);border-radius:.5rem;overflow-x:auto}table{border-collapse:collapse;width:100%}thead{color:#47556c;background:#fafbfc}th{text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;padding:8px 12px;font-weight:500}td{border-bottom:1px solid #f1f5f9;padding:12px}th.right,td.right{text-align:right;font-variant-numeric:tabular-nums}tr.selectable{cursor:pointer}tr.selectable:hover{background:#f8fafc}tr.selected{background:var(--selected);outline:1px solid var(--selected-line);outline-offset:-1px}td.empty{color:var(--muted);padding:24px 12px}.notice{z-index:50;color:#fff;background:#1e293b;border-radius:.5rem;align-items:center;gap:16px;max-width:32rem;padding:12px 20px;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 10px 25px #00000040}.notice.error{background:var(--danger)}.notice button{color:inherit;cursor:pointer;background:0 0;border:0;min-height:0;padding:0 4px;font-size:1.25rem}.backdrop{z-index:50;background:#0006;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.dialog{background:var(--surface);border-radius:1rem;width:100%;max-width:28rem;padding:24px;box-shadow:0 20px 40px #0000004d}.dialog.wide{flex-direction:column;max-width:48rem;max-height:90vh;display:flex}.dialog h2{font-size:1.25rem}.dialog p{color:#334155;margin:12px 0 0}.dialog .actions{justify-content:flex-end;gap:12px;margin-top:24px;display:flex}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.875rem}.editor{border:1px solid var(--line-strong);border-radius:.5rem;flex:1;width:100%;min-height:16rem;margin-top:16px;padding:12px}.error-text{color:var(--danger);white-space:pre-wrap;font-size:.875rem}.document{background:var(--surface);max-width:56rem;color:var(--text);margin:0 auto;padding:40px}.document h1{font-size:1.875rem}.document dl{flex-direction:column;gap:12px;margin:32px 0 0;font-size:1.125rem;display:flex}.document dl div{gap:16px;display:flex}.document dt{flex-shrink:0;width:14rem;font-weight:600}.document dd{white-space:pre-wrap;font-variant-numeric:tabular-nums;margin:0}.document .report-head{border-bottom:1px solid var(--line-strong);margin-bottom:32px;padding-bottom:16px}.document .report-head p{letter-spacing:.05em;margin:0;font-size:1.25rem;font-weight:700}.document .report-head h1{color:#65ac5b;margin-top:4px}.document table td,.document table th{border:1px solid #94a3b8;padding:4px 8px}.document table thead{color:inherit;background:0 0}.document section+section{margin-top:40px}@media print{.no-print,.ez-shell,.topbar,.notice{display:none!important}body{background:#fff}.main{padding:0}.break-after{break-after:page}}.viz-root{--viz-series-1:#2a78d6;--viz-track:#e1e0d9;--viz-surface:#fcfcfb;--viz-primary:#0b0b0b;--viz-muted:#52514e;position:relative}.viz-label{color:var(--viz-muted)}.viz-primary,.viz-value{color:var(--viz-primary)}.bars{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.bars li{grid-template-columns:minmax(9rem,14rem) 1fr auto;align-items:center;gap:12px;padding:4px 0;display:grid}.bars .label{text-overflow:ellipsis;white-space:nowrap;font-size:.875rem;overflow:hidden}.viz-track{background:var(--viz-track);border-radius:2px;height:1.5rem;display:block;position:relative}.viz-bar{background:var(--viz-series-1);border-radius:0 4px 4px 0;height:100%;max-height:24px;position:absolute;top:0;left:0}.viz-tooltip{background:var(--viz-primary);color:var(--viz-surface);border-radius:.5rem;grid-column:span 3;justify-self:start;margin-top:4px;padding:6px 10px;font-size:.875rem}.hero{background:var(--surface);border:1px solid var(--line);border-radius:.5rem;padding:20px}.hero .value{margin:4px 0 0;font-size:3rem;font-weight:600;line-height:1}.hero .value.small{font-size:1.875rem}.hero .unit{margin-left:8px;font-size:1.25rem}.hero .value.small .unit{font-size:1rem}.hero .note{margin:8px 0 0;font-size:.875rem}.hero p{margin:0}.launcher{align-items:flex-start;padding-top:80px}.launcher .dialog{max-width:24rem;padding:16px}.launcher h2{padding:0 8px 8px}.launcher-list{margin:0;padding:0;list-style:none}.launcher-list a{border-radius:.5rem;align-items:center;min-height:3rem;padding:0 12px;text-decoration:none;display:flex}.launcher-list a:hover{background:#f1f5f9}.launcher-list a[aria-current=page]{background:var(--selected)}.app-actions{justify-content:flex-end;padding:8px 16px 0;display:flex}.app-actions:empty{display:none}
