:root{--void: #0c0d12;--abyss: #0f1118;--surface: #161924;--surface-2: #1c2030;--raised: #232838;--line: #2b3043;--line-soft: #20243200;--gold: #e0a53b;--gold-dim: #b9842c;--gold-glow: #e0a53b55;--cyan: #74b8c6;--cyan-dim: #4f8b97;--blood: #cd4d3e;--blood-dim: #9c3a2e;--ink: #ece6d9;--ink-2: #a9a597;--ink-3: #6f6d66;--on-gold: #19140a;--font-display: "Zen Old Mincho", "Hiragino Mincho ProN", serif;--font-ui: "Zen Kaku Gothic New", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", monospace;--fs-hero: clamp(2.6rem, 7vw, 4.4rem);--fs-h1: 1.55rem;--fs-h2: 1.15rem;--fs-lead: 1.02rem;--fs-body: .94rem;--fs-sm: .82rem;--fs-xs: .72rem;--s-1: .25rem;--s-2: .5rem;--s-3: .75rem;--s-4: 1rem;--s-5: 1.5rem;--s-6: 2rem;--s-7: 3rem;--radius: 10px;--radius-sm: 6px;--radius-lg: 16px;--shadow: 0 8px 30px -12px rgba(0, 0, 0, .6);--shadow-gold: 0 0 32px -6px var(--gold-glow);--maxw: 1240px}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--void);color:var(--ink);font-family:var(--font-ui);font-size:var(--fs-body);line-height:1.5;font-feature-settings:"palt";-webkit-font-smoothing:antialiased;min-height:100vh}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;background:radial-gradient(1200px 540px at 75% -10%,rgba(224,165,59,.07),transparent 60%),radial-gradient(900px 500px at 0% 110%,rgba(116,184,198,.05),transparent 60%)}::selection{background:var(--gold);color:var(--on-gold)}a{color:var(--cyan);text-decoration:none}h1,h2,h3{margin:0;font-weight:400}*{scrollbar-width:thin;scrollbar-color:var(--line) transparent}.shell{position:relative;z-index:1;max-width:var(--maxw);margin:0 auto;padding:0 var(--s-5) var(--s-7)}.topbar{display:flex;align-items:center;gap:var(--s-5);flex-wrap:wrap;padding:var(--s-5) 0 var(--s-4);border-bottom:1px solid var(--line);margin-bottom:var(--s-6)}.brand{display:flex;flex-direction:column;gap:2px;margin-right:auto}.brand b{font-family:var(--font-display);font-weight:900;font-size:1.35rem;letter-spacing:.04em;color:var(--ink)}.brand b .accent{color:var(--gold)}.brand small{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.22em;text-transform:uppercase;color:var(--ink-3)}.nav{display:flex;gap:var(--s-1);background:var(--abyss);border:1px solid var(--line);border-radius:var(--radius);padding:3px}.nav button{font-family:var(--font-ui);font-size:var(--fs-sm);color:var(--ink-2);background:transparent;border:0;padding:6px 14px;border-radius:var(--radius-sm);cursor:pointer;transition:color .15s,background .15s}.nav button:hover{color:var(--ink)}.nav button[aria-current=true]{background:var(--surface-2);color:var(--gold)}.globals{display:flex;gap:var(--s-4);flex-wrap:wrap}.field{display:flex;flex-direction:column;gap:4px}.field>label,.eyebrow{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3)}input,select,button{font-family:inherit;font-size:inherit;color:var(--ink)}input[type=text],input[type=number],select{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:7px 10px;color:var(--ink);transition:border-color .15s,box-shadow .15s;min-width:0}input[type=number]{font-family:var(--font-mono)}input:focus-visible,select:focus-visible,button:focus-visible{outline:none;border-color:var(--gold-dim);box-shadow:0 0 0 3px var(--gold-glow)}input:disabled{color:var(--ink-2);background:var(--abyss)}.desk{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:var(--s-6);align-items:start}@media(max-width:940px){.desk{grid-template-columns:1fr}}.panel{background:linear-gradient(180deg,var(--surface),var(--abyss));border:1px solid var(--line);border-radius:var(--radius-lg);padding:var(--s-5);box-shadow:var(--shadow)}.panel+.panel{margin-top:var(--s-5)}.panel-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-3);margin-bottom:var(--s-4)}.panel-head h2{font-family:var(--font-display);font-size:var(--fs-h2);font-weight:700;letter-spacing:.02em}.panel-head .num{font-family:var(--font-mono);color:var(--ink-3);font-size:var(--fs-xs);letter-spacing:.1em}.block{margin-bottom:var(--s-5)}.block>.eyebrow{display:block;margin-bottom:var(--s-2)}.row-inline{display:flex;gap:var(--s-3);flex-wrap:wrap;align-items:flex-end}.lines{display:flex;flex-direction:column;gap:var(--s-2)}.line{display:grid;grid-template-columns:1fr auto;gap:var(--s-2);padding:var(--s-3);background:var(--abyss);border:1px solid var(--line-soft);border-radius:var(--radius)}.line-main{display:flex;gap:var(--s-2);flex-wrap:wrap;align-items:center}.line-name{flex:1 1 140px}.line .count,.line .price{width:84px}.line .unit{width:130px}.line-side{display:flex;align-items:center;gap:4px}.badge{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.08em;padding:2px 7px;border-radius:999px;border:1px solid transparent;white-space:nowrap}.badge-auto{color:var(--cyan);border-color:var(--cyan-dim);background:#74b8c614}.badge-manual{color:var(--gold);border-color:var(--gold-dim);background:#e0a53b14}.badge-stale{color:var(--blood);border-color:var(--blood-dim);background:#cd4d3e14}.badge-mode{color:var(--ink-2);border-color:var(--line)}.iconbtn{background:transparent;border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink-2);cursor:pointer;width:30px;height:30px;display:grid;place-items:center;transition:color .15s,border-color .15s,background .15s}.iconbtn:hover{color:var(--ink);border-color:var(--ink-3)}.iconbtn.danger:hover{color:var(--blood);border-color:var(--blood-dim)}.btn{font-family:var(--font-ui);font-size:var(--fs-sm);border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--surface-2);color:var(--ink);padding:7px 13px;cursor:pointer;transition:border-color .15s,background .15s,color .15s}.btn:hover{border-color:var(--ink-3)}.btn-primary{background:var(--gold);color:var(--on-gold);border-color:var(--gold);font-weight:700}.btn-primary:hover{background:var(--gold-dim);border-color:var(--gold-dim)}.btn-ghost{background:transparent}.btn-add{width:100%;border-style:dashed;color:var(--ink-2);background:transparent;padding:8px}.btn-add:hover{color:var(--gold);border-color:var(--gold-dim)}.ratepanel{margin-top:var(--s-2);padding:var(--s-3);border:1px dashed var(--line);border-radius:var(--radius);background:#ffffff03}.ratepanel .row-inline{margin-bottom:var(--s-2)}.ratepanel .est{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--cyan)}.ratepanel .ci{color:var(--ink-3)}.rough{display:inline-flex;align-items:center;gap:5px;color:var(--gold);font-size:var(--fs-sm);cursor:help}.warns{margin:var(--s-3) 0 0;padding:var(--s-3);border:1px solid var(--blood-dim);border-radius:var(--radius);background:#cd4d3e0f;color:var(--ink);font-size:var(--fs-sm);list-style:none}.warns li:before{content:"⚠ ";color:var(--blood)}.hero{text-align:center;padding:var(--s-4) 0 var(--s-5);border-bottom:1px solid var(--line);margin-bottom:var(--s-5)}.hero .eyebrow{display:block;margin-bottom:var(--s-2)}.hero .figure{font-family:var(--font-mono);font-weight:700;font-size:var(--fs-hero);line-height:1;color:var(--gold);text-shadow:0 0 36px var(--gold-glow);letter-spacing:-.02em}.hero .figure .u{font-size:.34em;color:var(--ink-2);margin-left:.3em;letter-spacing:.05em;text-shadow:none}.hero .sub{margin-top:var(--s-3);display:inline-flex;gap:var(--s-4);flex-wrap:wrap;justify-content:center;font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--ink-2)}.hero .sub b{color:var(--ink);font-weight:500}.hero .figure.small{font-size:clamp(1.8rem,4.5vw,2.8rem);color:var(--cyan);text-shadow:0 0 28px rgba(116,184,198,.33)}.hero.guaranteed{border-bottom-color:var(--cyan-dim)}.eyebrow.safe{color:var(--cyan)}.guar-note{max-width:460px;margin:var(--s-3) auto 0;font-size:var(--fs-sm);color:var(--ink-2);line-height:1.6}.sum-row{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);flex-wrap:wrap;margin-top:var(--s-2);padding:var(--s-2) var(--s-3);border-top:1px solid var(--line)}.sum-label{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.06em;color:var(--ink-3)}.sum-chips{display:flex;align-items:baseline;gap:4px}.sum-chip{font-family:var(--font-mono);font-size:var(--fs-body);color:var(--ink)}.sum-chip.min{color:var(--cyan)}.sum-chip.exp{color:var(--gold)}.sum-sub{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--ink-3)}.gates{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-3);margin-bottom:var(--s-5)}.gate{text-align:center;padding:var(--s-3) var(--s-2);border:1px solid var(--line);border-radius:var(--radius);background:var(--abyss);transition:border-color .2s,transform .2s}.gate .tag{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}.gate .amt{font-family:var(--font-mono);font-size:1.15rem;margin:4px 0 2px;color:var(--ink)}.gate .ruin{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--ink-2)}.gate.active{border-color:var(--gold);box-shadow:var(--shadow-gold);transform:translateY(-2px)}.gate.full .tag{color:var(--blood)}.gate.half .tag{color:var(--gold)}.gate.quarter .tag{color:var(--cyan)}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin-bottom:var(--s-5)}.metric{background:var(--surface);padding:var(--s-3)}.metric .k{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--ink-3);letter-spacing:.06em}.metric .v{font-family:var(--font-mono);font-size:1.05rem;margin-top:3px;color:var(--ink)}.metric.hl .v{color:var(--gold)}.metric .v.neg{color:var(--blood)}.chartwrap{position:relative;height:280px;margin-bottom:var(--s-4)}.verdict{padding:var(--s-4);border-radius:var(--radius);border:1px solid var(--line);background:var(--abyss);font-size:var(--fs-body)}.verdict.safe{border-color:var(--cyan-dim)}.verdict.warn{border-color:var(--gold-dim)}.verdict.danger{border-color:var(--blood-dim)}.verdict b{font-family:var(--font-display);font-weight:700}.placeholder{text-align:center;color:var(--ink-3);padding:var(--s-7) var(--s-4);font-size:var(--fs-sm)}.note-soft{display:inline-flex;gap:6px;align-items:center;margin-top:var(--s-3);padding:6px 10px;border-radius:var(--radius-sm);background:#e0a53b12;border:1px solid var(--gold-dim);color:var(--gold);font-size:var(--fs-sm);cursor:help}.toolbar{display:flex;gap:var(--s-2);flex-wrap:wrap;align-items:center;margin-top:var(--s-4);padding-top:var(--s-4);border-top:1px solid var(--line)}.toolbar .grow{flex:1 1 120px}.foot{margin-top:var(--s-7);padding-top:var(--s-4);border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:var(--s-4);flex-wrap:wrap;color:var(--ink-3);font-size:var(--fs-xs);font-family:var(--font-mono)}.globals-row{display:flex;gap:var(--s-4);flex-wrap:wrap;align-items:flex-end}.fresh-wrap{display:flex;align-items:center;gap:var(--s-2)}.freshness{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--cyan);white-space:nowrap}.freshness.stale{color:var(--blood)}.ledger-table{width:100%;border-collapse:collapse;margin:var(--s-2) 0}.ledger-table th{text-align:left;font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.04em;color:var(--ink-3);font-weight:400;padding:4px 6px;border-bottom:1px solid var(--line);white-space:nowrap}.ledger-table td{padding:4px 6px;border-bottom:1px solid var(--line-soft);vertical-align:middle}.ledger-table tr:last-child td{border-bottom:none}.ledger-table input{padding:5px 7px}.ledger-table .item-name{width:100%;min-width:56px}.ledger-table select{min-width:0;max-width:108px;padding:6px}.ledger-table .count{width:56px}.ledger-table .col-num{width:62px}.ledger-table .col-mini{width:30px;text-align:center;padding:4px 1px}.val-auto{display:flex;align-items:center;gap:6px}.val-auto .val-num{font-family:var(--font-mono);color:var(--cyan)}.auto-dot{width:7px;height:7px;border-radius:50%;background:var(--cyan);box-shadow:0 0 6px var(--cyan);flex:none}.val-input{width:74px;color:var(--gold)}.val-input.warn{border-color:var(--blood-dim)}.iconbtn.tiny{width:26px;height:26px;font-size:.78rem}.iconbtn.tiny.on{color:var(--gold);border-color:var(--gold-dim)}.rate-sub td{background:var(--abyss);padding:var(--s-3) var(--s-4)!important}.group-card{border:1px solid var(--line);border-radius:var(--radius);padding:var(--s-3);margin:var(--s-2) 0;background:#ffffff03}.group-head{display:flex;align-items:center;gap:var(--s-2);margin-bottom:var(--s-2)}.group-head .item-name{flex:1}.group-head .m-label{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--ink-3)}.group-head .count{width:56px}.ledger-table.sub th{font-size:.66rem}.col-lam{width:58px;text-align:right;padding-left:2px;padding-right:4px}.lam-hint{font-family:var(--font-mono);color:var(--cyan);font-size:var(--fs-xs);white-space:nowrap}.group-foot{display:flex;align-items:center;gap:var(--s-3);flex-wrap:wrap;margin-top:var(--s-2)}.group-foot .btn-add{width:auto;flex:none}.group-foot .ci{font-size:var(--fs-xs)}.prose{max-width:820px;margin:0 auto}.prose-sec{padding-top:var(--s-5);margin-top:var(--s-5);border-top:1px solid var(--line-soft);scroll-margin-top:80px}.prose-sec h3{font-family:var(--font-display);font-weight:700;font-size:1.15rem;color:var(--gold);margin-bottom:var(--s-3)}.prose p{margin:0 0 var(--s-3);color:var(--ink)}.prose p b{color:var(--ink);font-weight:700}.dir-danger{color:var(--blood);font-weight:500}.dir-safe{color:var(--cyan);font-weight:500}.dir-neutral{color:var(--ink-2)}table.limits td{font-size:var(--fs-sm);vertical-align:top}.terms dt{font-family:var(--font-mono);color:var(--gold);font-size:var(--fs-sm);margin-top:var(--s-3)}.terms dd{margin:2px 0 0;color:var(--ink-2);font-size:var(--fs-sm)}.tablewrap{overflow-x:auto}table.cmp{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}table.cmp th{text-align:left;font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);font-weight:400;padding:8px 12px;border-bottom:1px solid var(--line);white-space:nowrap}table.cmp td{padding:10px 12px;border-bottom:1px solid var(--line-soft);vertical-align:middle}table.cmp td.mono{font-family:var(--font-mono)}table.cmp tbody tr:hover{background:#ffffff05}.spin{display:inline-block;width:13px;height:13px;border:2px solid var(--line);border-top-color:var(--gold);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}
