:root
{
    --bg0:#060a12;
    --bg1:#0b1220;
    --glass:rgba(255,255,255,.06);
    --txt:#e5f0ff;
    --muted:#9fb3c8
}
html,body{margin:0;padding:0;height:100%}
body
{
    background:radial-gradient(1200px 600px at 20% 10%,#111a2f 0%,var(--bg1) 60%,var(--bg0) 100%);
    color:var(--txt);
    font-family:'Inter','Noto Sans JP',system-ui,-apple-system,Segoe UI,Roboto,sans-serif
}
body h2
{
    color:#ffffff;
    margin:18px 0 12px 0;
    font-size:24px;
    font-weight:800
}
body h3
{
    color:#ffffff;
    margin:0 0 8px 0;
    font-size:16px;
    font-weight:700
}
body h4
{
    color:var(--txt);
    margin:0 0 8px 0;
    font-size:16px;
    /* font-weight:700 */
}
section{padding:22px 26px}
.top
{
    background:#050814;
    border-bottom:1px solid rgba(148,163,184,.35);
    box-shadow:0 10px 40px rgba(15,23,42,.6)
}
.sticky-header{position:sticky;top:0;z-index:20;padding:12px 0 10px 0;background:linear-gradient(180deg,rgba(5,8,20,.92) 0%,rgba(5,8,20,.88) 60%,rgba(5,8,20,.7) 100%);backdrop-filter:blur(6px)}
.kpi-bar
{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
    gap:10px;margin-top:6px
}
.kpi-card
{
    background:var(--glass);
    border-radius:12px;
    border:1px solid rgba(148,163,184,.6);
    padding:10px 12px;display:flex;
    justify-content:space-between;
    align-items:flex-end
}
.kpi-card .label
{
    font-size:15px;
    color:var(--txt);
}
.kpi-card .value
{
    font-size:22px;
    font-weight:800
}
.kpi-card .unit
{
    font-size:15px;
    color:var(--txt);
    margin-left:6px
}
.grid{display:grid;grid-template-columns:360px 1fr;grid-template-rows:420px 420px 360px auto;grid-template-areas:"sidebar map""sidebar sankey""sidebar portfolio""sidebar formula";gap:14px;margin-bottom:14px;align-items:stretch;transition:grid-template-columns .3s ease}
.grid.sidebar-collapsed{grid-template-columns:0 1fr}
.grid.sidebar-collapsed .map-wrap,
.grid.sidebar-collapsed .sankey-wrap,
.grid.sidebar-collapsed .portfolio-wrap,
.grid.sidebar-collapsed .formula-wrap{align-self:stretch}
.grid.sidebar-collapsed #map,
.grid.sidebar-collapsed #sankeyBox{height:420px;max-height:420px;overflow:hidden}
.sidebar{grid-area:sidebar;grid-row:span 3;padding:14px;background:rgba(15,23,42,.7);border-radius:16px;border:1px solid rgba(148,163,184,.4);display:flex;flex-direction:column;gap:12px;height:100%;max-height:calc(100vh - 180px);overflow:auto;position:sticky;top:150px;transition:opacity .3s ease,visibility .3s ease}
.grid.sidebar-collapsed .sidebar{opacity:0;visibility:hidden;pointer-events:none}
.sidebar-toggle{margin-top:12px;background:rgba(96,165,250,.15);color:#cfe0ff;border:1px solid rgba(96,165,250,.5);border-radius:999px;padding:6px 14px;font-size:15px;cursor:pointer}
.sidebar-toggle:hover{background:rgba(96,165,250,.3)}
.panel-group{display:grid;gap:10px}
.panel-heading{font-size:15px;font-weight:700;color:#cfe0ff;margin-bottom:4px}
.map-settings{display:grid;gap:10px;margin-top:auto}
.block-secondary{background:rgba(11,17,30,.9);border-color:rgba(148,163,184,.25)}
.metric-card{background:var(--glass);border-radius:12px;border:1px solid rgba(148,163,184,.6);padding:10px 12px;margin-bottom:8px}
.metric-main{display:flex;justify-content:space-between;align-items:flex-end}.metric-main .label{font-size:15px;color:var(--muted)}.metric-main .value{font-size:22px;font-weight:800}.metric-main .unit{font-size:15px;color:var(--muted);margin-left:6px}
.block{background:var(--glass);border-radius:12px;border:1px solid rgba(148,163,184,.6);padding:10px 12px;margin-top:10px}
.block h3{font-size:15px;margin-bottom:6px}
.row{display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px;margin:6px 0}.row .val{font-weight:800;font-size:15px}
input[type=range],select{width:100%;accent-color:#60a5fa}
.toggle{display:inline-flex;align-items:center;gap:8px;font-size:14px;color:#9fb3ff;cursor:pointer}
.toggle input{display:none}
.toggle-track{width:40px;height:22px;border-radius:999px;background:rgba(148,163,184,.35);position:relative;border:1px solid rgba(255,255,255,.15);transition:background .2s ease,border .2s ease}
.toggle-thumb{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#e2e8ff;transition:transform .2s ease}
.toggle input:checked + .toggle-track{background:rgba(96,165,250,.8);border-color:rgba(96,165,250,.9)}
.toggle input:checked + .toggle-track .toggle-thumb{transform:translateX(16px)}
.toggle input:checked ~ .toggle-text{color:#f0f9ff}
.toggle-text{font-weight:700;color:#dbeafe;font-size:14px}
.chk-row{display:flex;align-items:center;gap:8px;font-size:15px;margin:4px 0}
.map-wrap{grid-area:map;display:grid;grid-template-columns:180px 1fr;gap:10px;align-items:stretch;height:420px}
.flow-legend{background:rgba(15,23,42,.7);border:1px solid rgba(148,163,184,.35);border-radius:14px;padding:12px;display:grid;gap:8px;font-size:15px;color:#cfd8ed;align-self:start}
.flow-legend .legend-heading{font-weight:700;color:#f0f4ff}
.flow-legend .legend-controls{display:grid;gap:6px}
.flow-legend .legend-item{display:flex;align-items:center;gap:8px}
.flow-legend .legend-item input{accent-color:#60a5fa}
.flow-legend .swatch{width:12px;height:12px;border-radius:3px;border:1px solid rgba(255,255,255,.2);display:inline-block}
.stat-card{background:rgba(15,23,42,.7);border-radius:14px;border:1px solid rgba(148,163,184,.35);padding:12px}
.stat-card .label{font-size:15px;color:#9fb3c8;margin-bottom:4px}
.stat-card .value{font-size:22px;font-weight:800;display:flex;align-items:flex-end;gap:6px}
.stat-card .unit{font-size:15px;color:#9fb3c8}
.stat-breakdown{margin-top:8px;font-size:15px;line-height:1.6;color:#cdd7e6;display:grid;gap:2px}
.stat-breakdown div{display:flex;justify-content:space-between}
#map{border-radius:16px;border:1px solid rgba(148,163,184,.4);overflow:hidden;min-height:420px;height:100%}
.map-controls{background:rgba(15,23,42,.7);border-radius:14px;border:1px solid rgba(148,163,184,.35);padding:10px;display:grid;gap:10px;align-content:start}
.sankey-wrap{grid-area:sankey;display:grid;grid-template-columns:180px 1fr;gap:10px;align-items:stretch;min-height:320px;height:auto}
.sankey-stats{display:flex;flex-direction:column;gap:10px;height:auto;min-height:0}
.sankey-stats .stat-card{flex:1 1 0;display:flex;flex-direction:column;justify-content:space-between}
#sankeyBox{border-radius:16px;border:1px solid rgba(148,163,184,.4);background:rgba(15,23,42,.9);padding:10px;display:grid;grid-template-rows:auto auto auto minmax(180px,1fr);gap:6px;margin-top:0;height:auto;min-height:280px}
.cols{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap;color:#a7b8d8;font-size:15px;opacity:.9;padding:0 2px;min-height:32px}
.cols div{flex:1 1 140px;text-align:center;white-space:normal;line-height:1.4}
.sankey-mode{display:flex;gap:8px;flex-wrap:wrap}
.mode-btn{background:rgba(148,163,184,.2);color:#e5f0ff;border:1px solid rgba(148,163,184,.5);border-radius:6px;padding:4px 12px;font-size:14px;cursor:pointer;transition:background .2s ease}
.mode-btn.active{background:rgba(96,165,250,.35);border-color:rgba(96,165,250,.8)}
.mode-btn:hover{background:rgba(148,163,184,.35)}
.sankey-info{min-height:32px;font-size:15px;color:#f8fafc;background:rgba(15,23,42,.6);border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:6px 10px;display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.sankey-info strong{font-weight:700;color:#fef08a}
.sankey-clear{margin-left:auto;background:rgba(255,255,255,.1);color:#f8fafc;border:1px solid rgba(255,255,255,.3);border-radius:6px;padding:4px 10px;font-size:14px;cursor:pointer}
.sankey-clear:hover{background:rgba(255,255,255,.2)}
#sankey{min-height:180px;height:auto;max-height:none}#sankey,#sankey svg{width:100%;height:100%;display:block}.sankey-node rect{fill:#1f2a44;stroke:rgba(255,255,255,.25)}.sankey-link{fill:none;stroke-linecap:round;stroke-opacity:.55;cursor:pointer;transition:stroke-opacity .2s ease}
.sankey-link.dim{stroke-opacity:.15}
.sankey-link.active{stroke-opacity:.95;stroke-width:calc(var(--stroke-base,2) + 4px)}
.sankey-label{font-size:clamp(14px,1vw,18px);fill:#e5f0ff;pointer-events:none}
.portfolio-wrap{grid-area:portfolio}
.formula-wrap{grid-area:formula}
.deck-tooltip{font-size:15px;background:#0a0f1a;color:#e6f0ff;padding:6px 8px;border-radius:6px;box-shadow:0 6px 20px rgba(0,0,0,.4);border:1px solid rgba(255,255,255,.08)}
/* Portfolio */
.portfolio{background:var(--glass);border-radius:12px;border:1px solid rgba(148,163,184,.6);padding:14px;display:grid;gap:10px}
.portfolio-grid{display:grid;grid-template-columns:1fr;gap:12px}
.flow-sliders{max-height:calc(420px + 420px);overflow:auto}
.flow-panels{flex:1;overflow:auto;padding-right:4px;margin-right:-4px}
.stacked{height:24px;border-radius:6px;overflow:hidden;display:flex;border:1px solid rgba(255,255,255,.12)}.seg{height:100%}
.legend{display:flex;flex-wrap:wrap;gap:8px;font-size:15px;color:#c7d2fe;margin-top:6px}
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:8px}
.mcard{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:10px}
.mcard .label{font-size:15px;color:#a7b8d8;margin-bottom:6px}.mcard .val{font-size:18px;font-weight:800}
.var{font-family:'JetBrains Mono','SFMono-Regular',Menlo,monospace;font-size:15px;color:#fff;margin-left:4px;background:rgba(15,23,42,.7);padding:1px 4px;border-radius:4px;display:inline-block}
/* Formula */
.formula{background:var(--glass);border-radius:12px;border:1px solid rgba(148,163,184,.6);padding:16px;line-height:1.9;font-size:17px}
.formula code
{
    color:var(--txt);
    background:rgba(15,23,42,.9);
    padding:4px 8px;
    border-radius:6px;
    font-size:15px
}
.var-table-wrap{overflow-x:auto;margin-bottom:18px}
.var-table{width:100%;border-collapse:collapse;font-size:15px;color:#e5f0ff}
.var-table th,.var-table td{border:1px solid rgba(255,255,255,.15);padding:8px 10px;text-align:left;background:rgba(10,15,28,.6)}
.var-table th{background:rgba(59,130,246,.25);font-weight:700;color:#f8fbff}
.var-table tbody tr:nth-child(odd){background:rgba(15,23,42,.6)}
