:root{--bg:#ffffff;--surface:#ffffff;--surface-soft:#fafafa;--ink:#000000;--ink-soft:#444444;--ink-muted:#666666;--line:#000000}*{box-sizing:border-box}body,html{margin:0;min-height:100%;height:auto;overflow-x:hidden}body{background:var(--bg);color:var(--ink);font-family:Noto Sans SC,PingFang SC,sans-serif;overflow-y:auto;-webkit-overflow-scrolling:touch}.page-bg{display:none}.app-shell{max-width:1120px;margin:0 auto;padding:20px 16px 24px;min-height:100vh;overflow:visible}.top-nav{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:16px;flex-wrap:nowrap}.brand{min-width:0;flex:1 1}.brand h1{margin:0;font-size:24px;font-weight:700;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand p{margin:2px 0 0;font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:500;color:var(--ink-muted)}.actions{display:flex;gap:8px;align-items:center;flex:0 0 auto;flex-wrap:nowrap}.grid-layout{grid-template-columns:1fr;align-items:start}.grid-layout,.left-stack,.right-stack{display:grid;grid-gap:16px;gap:16px}.card{background:var(--surface);border:1px solid var(--line)}.card-strong{border-width:2px}.card-normal{border-width:1px}.section-card{padding:18px 16px}.label,h2,h3{margin:0}.label,h2{font-size:14px}.label,h2,h3{font-weight:600}h3{font-size:12px}.money-editor{margin-top:8px;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:2px 0 4px;cursor:text;background:#fff;position:relative}.money-prefix{margin-right:8px;width:24px;flex:0 0 24px}.metric-value,.money-prefix{font-family:IBM Plex Mono,monospace;font-size:clamp(34px,8vw,44px);font-weight:700;line-height:1.1}.metric-value{margin:8px 0 0}.metric-value.years{font-size:clamp(30px,7vw,36px)}.metric-input{margin:0;border:0;outline:none;width:100%;padding:0;background:transparent;color:var(--ink);position:relative;z-index:2}.metric-input-ghost{color:transparent;caret-color:transparent}.metric-input-preview{color:#8a8a8a}.metric-ghost{position:absolute;left:32px;top:50%;transform:translateY(-50%);font-family:IBM Plex Mono,monospace;font-size:clamp(34px,8vw,44px);font-weight:700;line-height:1.1;color:#8a8a8a;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.metric-caret{display:inline-block;width:1px;height:.92em;background:#8a8a8a;margin-left:0;vertical-align:-.06em;animation:blink-caret .9s step-end infinite}@keyframes blink-caret{0%,49%{opacity:1}50%,to{opacity:0}}.metric-input::-webkit-inner-spin-button,.metric-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.metric-input[type=number]{-moz-appearance:textfield}button:focus-visible,input:focus-visible{outline:1px solid #000;outline-offset:1px}.hint-btn{margin-top:6px;border:0;background:transparent;padding:0;color:var(--ink-soft);font-size:12px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;gap:6px}.hint-btn:hover{color:var(--ink)}.triangle{width:0;height:0;display:inline-block}.triangle.right{border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:6px solid #000}.triangle.down{border-left:4px solid transparent;border-right:4px solid transparent;border-top:6px solid #000}.detail-list{margin-top:10px;display:grid;grid-gap:8px;gap:8px;border:1px solid var(--line);padding:10px;background:var(--surface-soft)}.detail-list label{display:grid;grid-template-columns:1fr 124px;align-items:center;grid-gap:10px;gap:10px;font-size:12px;color:#222}.custom-type,.detail-list input,.form-ghost input{width:100%;border:1px solid var(--line);background:#fff;color:var(--ink);font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:500;padding:8px 10px}.custom-type{font-family:Noto Sans SC,PingFang SC,sans-serif}.add-type-btn{border:1px dashed #000;background:#fff;color:#000;padding:8px;font-size:12px;text-align:left;cursor:pointer}.add-type-btn:hover{background:#f4f4f4}.section-title-row{display:flex;justify-content:space-between;align-items:center;gap:8px}.i-btn{width:16px;height:16px;border:1px solid #000;color:#000;padding:0;font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:700;line-height:1;cursor:help;flex:0 0 auto}.chart,.i-btn{background:#fff}.chart{width:100%;margin-top:10px;display:block;height:auto}.chart-legend{margin-top:10px;display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.legend-item{border:0;background:transparent;color:#444;font-size:12px;padding:0;display:inline-flex;align-items:center;gap:6px;cursor:pointer}.legend-item.active{color:#111}.chip-line{width:16px;height:0;border-top:2px solid #000000;display:inline-block}.chip-save{border-top-color:#b3b3b3}.chip-withdraw{border-top-color:#8c8c8c;border-top-style:dashed}.axis-label{fill:#666;font-family:Noto Sans SC,sans-serif;font-size:12px}.hover-label,.tick-label,.year-label{fill:#666;font-family:IBM Plex Mono,monospace;font-size:12px}.year-label{fill:#595959;font-size:12px}.hover-label{fill:#000}.hover-save{fill:#b3b3b3}.hover-withdraw{fill:#888}.chart-card{padding:16px 12px 14px}.param-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px;margin-top:8px}.param-card{border:1px solid #000;background:#fff;padding:10px}.adjuster{margin-top:6px;display:flex;align-items:center;justify-content:space-between;gap:6px}.adjuster button{width:28px;height:28px;border:1px solid #000;background:#fff;color:#000;font-size:16px;cursor:pointer}.adjuster button:active{transform:translateY(1px)}.adjuster span{font-family:IBM Plex Mono,monospace;font-size:22px;font-weight:700}.btn{border:1px solid #000;background:#fff;color:#000;padding:10px 12px;font-size:12px;font-weight:600;white-space:nowrap;cursor:pointer}.btn:active{transform:translateY(1px)}.btn-primary,.btn-solid{background:#000;color:#fff}.btn-primary{padding:12px;font-size:13px;font-weight:600}.wide{width:100%}.tip{position:fixed;z-index:50;max-width:240px;padding:8px 10px;border:1px solid #000;background:#111;color:#fff;font-size:11px;line-height:1.4;pointer-events:none;opacity:0;transform:translateY(4px);transition:opacity .12s ease,transform .12s ease}.tip.show{opacity:1;transform:translateY(0)}.modal-layer{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(0,0,0,.45)}.modal{width:min(420px,100%);border:1px solid #000;background:#f7f7f7;padding:14px}.poster-modal{width:min(340px,100%)}.poster-preview{display:block;width:100%;height:auto;object-fit:contain;border:1px solid #000;background:#fff;margin:10px 0}.modal-head{display:flex;align-items:center;justify-content:space-between}.modal-head h3{font-size:14px}.close-modal{border:0;background:transparent;color:#000;font-size:20px;cursor:pointer}.tab-row{margin-top:10px;display:flex;gap:8px}.tab{border:1px solid #000;background:#fff;color:#000;padding:6px 10px;font-size:12px}.tab.active{background:#000;color:#fff}.form-ghost{margin-top:10px;display:grid;grid-gap:8px;gap:8px}.modal-foot{margin:10px 0 0}.group-desc,.modal-foot{font-size:11px;color:#444}.group-desc{margin:8px 0 10px;line-height:1.45}.qr-image{width:min(220px,100%);aspect-ratio:1;object-fit:cover;border:1px solid #000;display:block;margin:0 auto 10px}@media (min-width:900px){.app-shell{padding:28px 32px 32px;max-width:1440px}.grid-layout{grid-template-columns:460px minmax(0,1fr);gap:20px}}@media (max-width:520px){.app-shell{padding:20px 16px 24px}.brand h1{font-size:21px}.brand p{display:block}.actions{gap:6px}.actions .btn{width:auto;padding:8px 10px;font-size:11px}.axis-label,.hover-label,.legend-item,.tick-label,.year-label{font-size:12px}.chart{height:auto}}