:root{--bg: #f6f8fa;--bg-elev: #ffffff;--bg-muted: #eef1f5;--bg-subtle: #f3f5f8;--border: #e2e6ec;--border-strong: #cdd3dc;--fg: #14202b;--fg-muted: #5a6675;--fg-faint: #8a94a3;--accent: #0e8c7a;--accent-strong: #0a6e5f;--accent-soft: #d8efea;--accent-tint: #ecf7f4;--accent-2: #2563eb;--accent-2-soft: #dbe7fe;--accent-3: #c2410c;--accent-3-soft: #ffe4d2;--warn: #b45309;--warn-soft: #fff1cf;--danger: #c0322a;--danger-soft: #fde0dd;--confirm: #16a34a;--confirm-soft: #d4f3df;--info: #1d4ed8;--info-soft: #dbe7fe;--mono: "JetBrains Mono", "SF Mono", "Menlo", "Consolas", monospace;--sans: "Inter", "Hiragino Sans", "Yu Gothic UI", "Noto Sans JP", system-ui, sans-serif;--radius-sm: 6px;--radius: 10px;--radius-lg: 14px;--shadow-sm: 0 1px 2px rgba(20, 32, 43, .04), 0 1px 3px rgba(20, 32, 43, .05);--shadow: 0 1px 2px rgba(20, 32, 43, .05), 0 4px 12px rgba(20, 32, 43, .06);--shadow-md: 0 6px 16px rgba(20, 32, 43, .08), 0 2px 4px rgba(20, 32, 43, .05);--shadow-lg: 0 24px 48px -12px rgba(20, 32, 43, .18);--pad: 16px;--sidebar-w: 232px;--transition: .14s cubic-bezier(.2, .7, .3, 1)}*{box-sizing:border-box}html,body{margin:0;padding:0;background:radial-gradient(ellipse 1200px 600px at 90% -10%,rgba(14,140,122,.05),transparent 60%),radial-gradient(ellipse 800px 500px at -10% 110%,rgba(37,99,235,.04),transparent 60%),var(--bg);background-attachment:fixed;color:var(--fg);font-family:var(--sans);font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}#root{min-height:100vh;display:flex;flex-direction:column}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-strong);text-decoration:underline}button{font:inherit;font-weight:500;border:1px solid var(--border-strong);background:var(--bg-elev);color:var(--fg);padding:7px 14px;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition);letter-spacing:.01em;white-space:nowrap}button:hover{background:var(--bg-muted);border-color:var(--fg-muted)}button:active{transform:translateY(1px)}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:disabled{opacity:.4;cursor:not-allowed;transform:none}button.primary{background:linear-gradient(180deg,#11a08c,var(--accent) 70%);color:#fff;border-color:var(--accent-strong);box-shadow:0 1px 2px #0a6e5f40,inset 0 1px #ffffff26}button.primary:hover{filter:brightness(1.04);border-color:var(--accent-strong)}button.ghost{border:1px dashed var(--border-strong);background:transparent;color:var(--fg-muted)}button.ghost:hover{background:var(--accent-tint);color:var(--accent-strong);border-color:var(--accent)}button.danger{color:var(--danger);border-color:var(--danger);background:var(--bg-elev)}button.danger:hover{background:var(--danger-soft)}button.sm{padding:3px 10px;font-size:.85em;border-radius:4px}button.lg{padding:11px 22px;font-size:1.02em;border-radius:8px}input,select,textarea{font:inherit;border:1px solid var(--border);padding:7px 10px;border-radius:var(--radius-sm);background:var(--bg-elev);color:var(--fg);transition:border-color var(--transition),box-shadow var(--transition)}input[type=number]{font-family:var(--mono);text-align:right;font-variant-numeric:tabular-nums}input:hover,select:hover,textarea:hover{border-color:var(--border-strong)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath fill='%235a6675' d='M0 0l5 6 5-6z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:28px}input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.num{font-family:var(--mono);text-align:right;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.muted{color:var(--fg-muted)}.faint{color:var(--fg-faint);font-size:.92em}.warn{color:var(--warn)}.danger{color:var(--danger)}.confirm{color:var(--confirm)}table{border-collapse:separate;border-spacing:0;width:100%;background:var(--bg-elev);border-radius:var(--radius);overflow:hidden;border:1px solid var(--border)}th,td{border-bottom:1px solid var(--border);padding:8px 12px;text-align:left;vertical-align:middle}th+th,td+td{border-left:1px solid var(--border)}tbody tr:last-child td{border-bottom:none}th{background:var(--bg-subtle);font-weight:600;font-size:.84em;color:var(--fg-muted);letter-spacing:.02em;text-transform:none}td.num,th.num{font-family:var(--mono);text-align:right;font-variant-numeric:tabular-nums}tbody tr:hover{background:var(--bg-subtle)}tr.total td{background:var(--accent-tint);font-weight:700;color:var(--fg)}tr.sub td{background:var(--bg-subtle)}.app-shell{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh}.sidebar{background:var(--bg-elev);border-right:1px solid var(--border);padding:16px 0 12px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;box-shadow:var(--shadow-sm)}.sidebar .brand{padding:4px 20px 18px;font-weight:800;letter-spacing:.1em;font-size:1.15em;border-bottom:1px solid var(--border);margin-bottom:10px;position:relative;background:linear-gradient(135deg,var(--accent),var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent}.sidebar .brand:before{content:"";display:inline-block;width:6px;height:18px;background:linear-gradient(180deg,var(--accent),var(--accent-2));border-radius:3px;vertical-align:middle;margin-right:8px}.sidebar .brand .ja{font-size:.72em;color:var(--fg-faint);display:block;margin-top:4px;letter-spacing:.04em;background:none;-webkit-text-fill-color:var(--fg-faint)}.sidebar nav{display:flex;flex-direction:column;gap:2px;padding:0 8px}.sidebar nav .section-label{padding:12px 12px 4px;font-size:.7em;color:var(--fg-faint);text-transform:uppercase;letter-spacing:.12em;font-weight:600}.sidebar nav a{display:flex;align-items:center;gap:10px;padding:8px 12px;text-decoration:none;color:var(--fg-muted);font-size:.93em;border-radius:var(--radius-sm);font-weight:500;transition:all var(--transition)}.sidebar nav a .step{font-family:var(--mono);font-size:.72em;width:18px;height:18px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:var(--fg-faint);background:var(--bg-subtle);font-weight:600;flex-shrink:0}.sidebar nav a:hover{background:var(--bg-subtle);color:var(--fg)}.sidebar nav a.active{background:var(--accent-tint);color:var(--accent-strong);font-weight:600}.sidebar nav a.active .step{background:var(--accent);color:#fff}.sidebar nav a .step.bullet{background:transparent;color:var(--fg-faint);font-size:1.1em}.sidebar nav a.active .step.bullet{background:transparent;color:var(--accent)}.sidebar .scenario-block{padding:14px 16px;border-top:1px solid var(--border);margin-top:auto}.sidebar .scenario-block label{display:block;font-size:.72em;color:var(--fg-faint);margin-bottom:6px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.sidebar .scenario-block select{width:100%}.sidebar .save-indicator{font-size:.75em;color:var(--fg-faint);padding:8px 16px 0;display:flex;align-items:center;gap:4px}.sidebar .save-indicator.saved{color:var(--confirm)}.sidebar .save-indicator.saved:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--confirm);box-shadow:0 0 0 3px var(--confirm-soft);display:inline-block}.content{display:flex;flex-direction:column;min-width:0}.content>.topbar{display:flex;align-items:center;gap:12px;padding:12px 28px;background:#ffffffd9;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:5;flex-wrap:wrap}.content>.topbar .breadcrumb{font-size:.88em;color:var(--fg-muted)}.content>.topbar .breadcrumb b{color:var(--fg);font-weight:600}.content>.topbar .spacer{flex:1}.banner-disclaimer{background:linear-gradient(90deg,var(--warn-soft),#fff7e3);border-bottom:1px solid #f6dca0;color:var(--warn);padding:7px 28px;font-size:.84em;font-weight:500}main{padding:24px 28px 96px;flex:1;max-width:1320px;width:100%}.step-footer{display:flex;justify-content:space-between;gap:8px;margin-top:32px;padding-top:16px;border-top:1px dashed var(--border)}h1{font-size:1.7em;margin:4px 0 6px;letter-spacing:-.01em;font-weight:700}.h1-sub{color:var(--fg-muted);margin:0 0 18px;font-size:.96em}h2{font-size:1.12em;margin:22px 0 10px;font-weight:700;letter-spacing:-.005em}h2:before{content:"";display:inline-block;width:4px;height:14px;background:var(--accent);border-radius:2px;vertical-align:-2px;margin-right:8px}h3{font-size:.96em;margin:14px 0 6px;font-weight:600;color:var(--fg)}section.card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;margin-bottom:14px;box-shadow:var(--shadow-sm);transition:box-shadow var(--transition)}section.card:hover{box-shadow:var(--shadow)}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.row>label{display:flex;flex-direction:column;gap:4px;font-size:.88em;color:var(--fg-muted)}.row>label input,.row>label select{min-width:180px;color:var(--fg)}.row>label>span{font-weight:500;color:var(--fg)}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.pill{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:999px;font-size:.76em;font-family:var(--mono);font-weight:600;letter-spacing:.02em}.pill.confirm{background:var(--confirm-soft);color:#0f7e3c}.pill.warn{background:var(--warn-soft);color:var(--warn)}.pill.danger{background:var(--danger-soft);color:var(--danger)}.pill.muted{background:var(--bg-subtle);color:var(--fg-muted)}.pill.accent{background:var(--accent-tint);color:var(--accent-strong)}.pill.info{background:var(--info-soft);color:var(--info)}.confidence-y1{background:transparent}.confidence-y2{background:#f5e6c838}.confidence-y3{background:#f5c8a038}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}.kpi-card{position:relative;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;display:flex;flex-direction:column;gap:6px;box-shadow:var(--shadow-sm);transition:transform var(--transition),box-shadow var(--transition);overflow:hidden}.kpi-card:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--accent);opacity:.85}.kpi-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.kpi-card .label{font-size:.82em;color:var(--fg-muted);font-weight:600;letter-spacing:.02em;display:flex;align-items:center;gap:6px}.kpi-card .label .icon{display:inline-flex;width:18px;height:18px;align-items:center;justify-content:center;border-radius:5px;background:var(--accent-tint);color:var(--accent-strong);font-size:.95em}.kpi-card .value{font-family:var(--mono);font-size:1.75em;font-variant-numeric:tabular-nums;letter-spacing:-.03em;font-weight:700;color:var(--fg);line-height:1.05;margin-top:2px}.kpi-card .subvalue{font-size:.78em;color:var(--fg-faint);font-family:var(--mono)}.kpi-card.danger-state:before{background:var(--danger)}.kpi-card.danger-state .value{color:var(--danger)}.kpi-card.danger-state .label .icon{background:var(--danger-soft);color:var(--danger)}.kpi-card.confirm-state:before{background:var(--confirm)}.kpi-card.confirm-state .value{color:#0f7e3c}.kpi-card.confirm-state .label .icon{background:var(--confirm-soft);color:#0f7e3c}.kpi-card.info-state:before{background:var(--accent-2)}.kpi-card.info-state .label .icon{background:var(--accent-2-soft);color:var(--accent-2)}.kpi-card.warm-state:before{background:var(--accent-3)}.kpi-card.warm-state .label .icon{background:var(--accent-3-soft);color:var(--accent-3)}.cf-table{font-size:.86em}.cf-table th.sticky,.cf-table td.sticky{position:sticky;left:0;z-index:1}.cf-table th.sticky{background:var(--bg-subtle)}.cf-table td.sticky{background:var(--bg-elev);font-weight:500}.cf-scroll{overflow:auto;max-width:100%;max-height:70vh;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elev);box-shadow:var(--shadow-sm)}.cf-table tr.period-end td{border-bottom:2px solid var(--accent)}.cf-table tr.negative-balance td.balance-cell{background:var(--danger-soft);color:var(--danger);font-weight:700}.cf-table .clickable{cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px;text-decoration-color:var(--fg-faint)}.cf-table .clickable:hover{background:var(--accent-tint);color:var(--accent-strong);text-decoration-color:var(--accent)}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#14202b73;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100;animation:fadeIn .12s ease-out}.modal{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-lg);padding:22px 24px;max-width:760px;width:95%;max-height:85vh;overflow:auto;box-shadow:var(--shadow-lg);animation:pop .14s ease-out}.modal h2{margin-top:0}.modal .modal-close{float:right}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}details{margin:6px 0}details>summary{cursor:pointer;padding:6px 0;font-weight:500}details>summary:hover{color:var(--accent)}details[open]>summary{margin-bottom:8px}.calc-trace{font-family:var(--mono);font-size:.85em;background:var(--bg-subtle);padding:12px;border-radius:var(--radius-sm);white-space:pre-wrap;line-height:1.7}.calc-trace div+div{border-top:1px dashed var(--border);padding-top:4px;margin-top:4px}.warning-block,.danger-block,.info-block{border-radius:var(--radius);padding:12px 16px;margin:10px 0;font-size:.92em;display:flex;align-items:flex-start;gap:10px;line-height:1.55}.warning-block{background:var(--warn-soft);border-left:4px solid var(--warn);color:#74420a}.danger-block{background:var(--danger-soft);border-left:4px solid var(--danger);color:#7b1f1a}.info-block{background:var(--info-soft);border-left:4px solid var(--info);color:#1e3a8a}.kv{display:grid;grid-template-columns:max-content 1fr;gap:6px 16px}.kv>.k{color:var(--fg-muted)}.kv>.v{font-family:var(--mono)}.linkbtn{background:none;border:none;color:var(--accent);padding:0;text-decoration:underline;text-decoration-color:#0e8c7a66;text-underline-offset:3px;cursor:pointer;font-family:inherit;font-size:inherit;font-weight:500;transition:color var(--transition)}.linkbtn:hover{color:var(--accent-strong);text-decoration-color:var(--accent-strong)}.hint{font-size:.86em;color:var(--fg-muted);margin:4px 0 10px}.template-chips{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 10px;align-items:center}.chip{display:inline-flex;align-items:center;padding:4px 12px;border-radius:999px;background:var(--bg-elev);border:1px solid var(--border-strong);color:var(--fg);font-size:.82em;cursor:pointer;font-weight:500;transition:all var(--transition)}.chip:hover{background:var(--accent-tint);border-color:var(--accent);color:var(--accent-strong);transform:translateY(-1px)}.chip:active{transform:translateY(0)}.num-aux{font-size:.74em;color:var(--fg-faint);font-family:var(--mono);margin-top:2px}.dashboard-hero{background:linear-gradient(135deg,#ffffff 0%,var(--accent-tint) 100%);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px 22px;margin-bottom:18px;box-shadow:var(--shadow-sm)}.dashboard-hero h1{margin:0 0 4px}@media (max-width: 1100px){:root{--sidebar-w: 64px}.sidebar .brand{font-size:0;padding:4px 10px 14px;border-bottom:1px solid var(--border)}.sidebar .brand:before{margin-right:0}.sidebar nav .section-label{display:none}.sidebar nav a span.label-text{display:none}.sidebar nav a{justify-content:center;padding:11px 8px}.sidebar nav a .step{width:22px;height:22px;font-size:.85em}.sidebar .scenario-block,.sidebar .save-indicator{display:none}main{padding:18px 18px 80px}.content>.topbar{padding:10px 16px}}@media (max-width: 720px){.app-shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto;flex-direction:row;overflow-x:auto;border-right:none;border-bottom:1px solid var(--border)}.sidebar nav{flex-direction:row}.sidebar .brand{display:none}.sidebar nav a{padding:10px 8px}}
