:root{color-scheme:light;--ink:#183249;--blue:#145184;--muted:#526d81;--line:#dce6ec;--purple:#9565ba}
*{box-sizing:border-box}body{margin:0;background:#f3f7fa;color:var(--ink);font:15px system-ui,sans-serif}main{max-width:1700px;margin:auto;padding:26px 24px 36px}header{display:flex;justify-content:space-between;align-items:center;gap:20px}h1{font-size:clamp(27px,2.6vw,36px);line-height:1.2;color:var(--blue);margin:8px 0 10px}header p{margin:0;color:var(--muted)}p,li{line-height:1.6}.eyebrow{font-size:11px;letter-spacing:2px;color:#327969;font-weight:800}.badge{border:1px solid #c8dce6;padding:10px 16px;border-radius:30px;font-size:11px;white-space:nowrap}
.layout{display:grid;grid-template-columns:218px minmax(0,1fr);gap:18px;margin-top:24px;align-items:start}.workspace{display:grid;grid-template-columns:minmax(0,1fr)310px;gap:18px;align-items:start}.card{background:white;border:1px solid var(--line);border-radius:16px;padding:20px}h2{font-size:17px;margin:0 0 16px;color:var(--blue)}h3{font-size:12px;margin:0;text-align:center;color:#29485b}.controls{padding:20px 17px}.controls label{display:block;font-weight:650;margin:18px 0 10px}.controls h2{font-size:17px}.controls input[type=range]{width:100%;accent-color:#c88c14}.controls input[type=checkbox]{accent-color:#175a8c}button,select{font:inherit;border:1px solid #bdcfdc;background:white;padding:10px 12px;border-radius:9px;color:#19476b;cursor:pointer}button:hover{background:#edf5fa;border-color:#8caec4}button:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid #d49a23;outline-offset:3px}button.primary{background:#175a8c;color:white;border-color:#175a8c}button.primary:hover{background:#104776}select{width:100%;font-size:13px}.buttons{display:flex;gap:7px;flex-wrap:wrap;margin:17px 0}.buttons button{font-size:13px}.small{font-size:12px;color:var(--muted);line-height:1.5}.hint{font-size:13px;color:var(--muted)}.speed-note{margin:8px 0}.controls .checkbox{font-size:13px;display:flex;align-items:center;gap:6px;margin:20px 0 13px}.step{font-size:12px;width:100%;padding:10px 4px}.clock{display:flex;justify-content:space-between;margin-top:12px;padding-top:12px;border-top:1px solid #edf1f4;font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}
.diagram-card{padding:20px 14px 16px;min-width:0}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:6px}.section-heading h2{margin:0}.diagram-card>.section-heading{padding:0 6px 13px}.diagram-card h2{font-size:16px}.view-tag{font-size:9px;color:#668291;letter-spacing:1px;white-space:nowrap}.diagram-scroll{overflow:auto;border-radius:12px}#scene{width:100%;min-width:620px;display:block}svg text{font-family:system-ui,sans-serif;fill:#23445e;font-size:16px}#scene .compartment{font-size:17px;font-weight:800}#scene .protein-label text{fill:white;font-weight:750;text-anchor:middle}#scene .membrane-label text{font-size:13px;font-weight:800;fill:#3d652e;letter-spacing:.3px}#scene .sample-label{font-size:14px}#scene .block-label{font-size:15px;font-weight:700;fill:#b24343}.hiddenLabels .optional{visibility:hidden}.legend{display:flex;gap:17px;flex-wrap:wrap;font-size:11px;padding:8px 8px 3px}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px}.photon{background:#e5a425}.electron{background:#2589d0}.proton{background:#9b63c5}.sample-note{font-size:11px;line-height:1.5;color:var(--muted);margin:8px 8px 16px}.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.stat{background:#f4f8fb;padding:13px;border-radius:11px}.number{font-size:28px;font-weight:750;line-height:1.5;color:var(--blue);font-variant-numeric:tabular-nums}.process{font-size:11px;color:var(--muted);display:block}.explain{margin-top:14px;min-height:106px;background:#eaf4f9;border-left:4px solid #2781ac;padding:14px;border-radius:8px;font-size:13px;line-height:1.55}.status-title{display:block;font-weight:750;color:var(--blue);margin-bottom:4px}.explain.residual{background:#f4edfa;border-left-color:#9565ba}.explain.stopped{background:#faf4e7;border-left-color:#c9952f}
.side-panel{display:grid;gap:14px}.pools{padding:18px 14px}.pools h2{font-size:17px}.finite-tag{font-size:9px;font-weight:800;letter-spacing:1px;color:#486f47;background:#edf4e8;padding:4px 6px;border-radius:5px}.pool-intro{margin:7px 0 18px;font-size:11px}.pool-charts{display:grid;grid-template-columns:1fr 1fr;gap:12px}.pool-chart+.pool-chart{border-left:1px solid var(--line);padding-left:10px}.chart-area{display:grid;grid-template-columns:1fr 1fr;gap:6px;position:relative;padding:24px 0 0 20px;margin:12px 0 0}.bar-column{display:grid;grid-template-rows:20px 146px 22px 17px;align-items:center;justify-items:center;min-width:0}.bar-value{font-size:10px;font-weight:750;font-variant-numeric:tabular-nums}.bar-track{height:146px;position:relative;width:100%;max-width:37px;border-bottom:1px solid #9fb2bd;background:repeating-linear-gradient(to top,transparent 0,transparent calc(50% - 1px),#d8e2e9 calc(50% - 1px),#d8e2e9 50%),#f1f5f8;border-radius:5px 5px 0 0;overflow:hidden}.bar-fill{position:absolute;inset:auto 0 0;height:0}.bar-fill.nadp{background:#4478b1;height:100%}.bar-fill.nadph{background:#258970}.bar-fill.adp{background:#b19ac6;height:100%}.bar-fill.atp{background:#8652ac}.bar-column b{font-size:10px;white-space:nowrap;padding-top:5px}.bar-units{font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums}.axis-top,.axis-mid,.axis-zero{position:absolute;left:0;color:#738897;font-size:8px;line-height:1}.axis-top{top:40px}.axis-mid{top:113px}.axis-zero{top:185px}.pool-total{font-size:10px;text-align:center;color:var(--muted);margin:11px 0 0;padding:6px 0;background:#f6f9fb;border-radius:5px}.pool-status{font-size:11px;font-weight:650;line-height:1.5;margin:14px 0 0;color:#426177;min-height:33px}.pool-note{font-size:10px;border-top:1px solid #e8eef2;padding-top:10px;margin:10px 0 0}.gradient-card{padding:16px}.gradient-card h2{font-size:14px}.gradient-number{font-size:23px;color:#8652ac;font-weight:750;font-variant-numeric:tabular-nums}.gradient-label{display:block;margin:3px 0 9px;font-weight:400;font-size:10px}progress{display:block;appearance:none;width:100%;height:10px;border:0;border-radius:6px;background:#eee5f5;overflow:hidden}progress::-webkit-progress-bar{background:#eee5f5}progress::-webkit-progress-value{background:#9c70be;border-radius:6px}progress::-moz-progress-bar{background:#9c70be;border-radius:6px}.gradient-card p{margin:10px 0 0;font-size:11px;min-height:33px}.chloroplast-button{display:block;text-align:left;width:100%;padding:16px;background:#fff}.chloroplast-button:hover{background:#fbfdf7;border-color:#9bb787}.location-heading{display:flex;justify-content:space-between;font-size:14px;font-weight:750;color:var(--blue)}.location-heading>span{font-size:20px;line-height:1}.chloroplast-mini{display:block;width:100%;height:113px;margin-top:6px}.location-label{display:block;font-size:12px;font-weight:750;text-align:center}.chloroplast-button>.small{display:block;text-align:center;margin-top:4px;font-size:10px}
.bottom{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:20px}.bottom p,.bottom li{font-size:14px}.bottom li+li{margin-top:7px}.bottom ol{padding-left:22px;margin:0 0 16px}.bottom details{margin-top:12px}.bottom .hint{font-size:12px}summary{cursor:pointer;font-weight:700;font-size:13px;color:var(--blue)}a{color:var(--blue)}
dialog{width:min(1040px,calc(100% - 32px));max-height:calc(100vh - 40px);padding:26px;border:1px solid #dce6ec;border-radius:20px;color:var(--ink);box-shadow:0 20px 90px #142f4550;overflow:auto}dialog::backdrop{background:#102b42a6;backdrop-filter:blur(3px)}.dialog-header{display:flex;align-items:center;justify-content:space-between;gap:15px}.dialog-header h2{font-size:29px;margin:8px 0 0}.close-button{font-size:18px;padding:7px 12px}.dialog-header+p{font-size:14px;color:var(--muted);margin:14px 0}.location-diagram-scroll{overflow:auto;background:#f8fbf5;border-radius:13px;padding:10px}.location-diagram{display:block;width:100%;min-width:660px}.location-labels text{font-size:17px;font-weight:700}.location-labels .secondary-label,.location-diagram .secondary-label{font-size:13px;font-weight:400;fill:#5c7367}.location-labels path{fill:none;stroke:#718a6a;stroke-width:1.8}.location-notes{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:12px 0}.location-notes p{font-size:12px;margin:0;line-height:1.5}.location-notes b{display:block;color:#3f704d;margin:8px 0}.location-notes span{color:var(--muted)}.dialog-footer{display:flex;align-items:center;justify-content:space-between;gap:18px;border-top:1px solid var(--line);padding-top:18px;margin-top:22px}.dialog-footer button{font-size:13px}
@media(min-width:1550px){.workspace{grid-template-columns:minmax(0,1fr)330px}.layout{grid-template-columns:230px minmax(0,1fr)}.chart-area{padding-left:23px}.bar-column{grid-template-rows:20px 166px 22px 17px}.bar-track{height:166px;max-width:42px}.axis-mid{top:123px}.axis-zero{top:205px}.bar-column b,.bar-value,.bar-units{font-size:11px}.pools{padding:20px 18px}}
@media(max-width:1270px){main{padding:22px 18px}.layout{grid-template-columns:1fr}.controls{display:grid;grid-template-columns:1fr 1fr 1.1fr;gap:0 22px;padding:16px 20px}.controls h2{grid-column:1/-1;margin:0 0 2px}.controls label{margin-top:10px}.controls .checkbox{margin-top:10px}.controls .hint{margin:8px 0}.controls .control-group:last-child>.small{display:none}.controls .buttons{margin-bottom:0}.workspace{grid-template-columns:minmax(0,1fr)300px}.badge{display:none}}
@media(max-width:850px){.workspace{grid-template-columns:minmax(0,1fr)270px;gap:12px}.card{border-radius:13px}.pools{padding:16px 10px}.side-panel{gap:12px}.pool-charts{gap:7px}.pool-chart+.pool-chart{padding-left:7px}.chart-area{padding-left:16px;gap:5px}#scene{min-width:620px}.view-tag{display:none}.stats{grid-template-columns:1fr}.explain{min-height:130px}.bottom{grid-template-columns:1fr}.gradient-card h2{font-size:13px}}
@media(max-width:700px){main{padding:20px 12px}.eyebrow{font-size:10px;letter-spacing:1.6px}h1{font-size:28px}.layout{margin-top:20px;gap:14px}.controls{grid-template-columns:1fr 1fr;gap:5px 16px;padding:17px}.controls .control-group:last-child{grid-column:1/-1}.controls .hint{display:none}.controls .checkbox{margin:7px 0}.controls .step{width:auto;padding:9px 13px}.clock{display:inline-flex;gap:14px;margin:0 0 0 9px;border:0;font-size:10px}.controls select{font-size:12px;padding:9px}.workspace{grid-template-columns:1fr}.side-panel{grid-template-columns:1fr 1fr}.pools{grid-column:1/-1;padding:18px}.pool-charts{gap:22px}.pool-chart+.pool-chart{padding-left:22px}.chart-area{padding-left:25px;gap:16px}.bar-track{max-width:55px}.bar-column b,.bar-units,.bar-value{font-size:12px}.pool-chart h3{font-size:14px}.pool-intro{margin-bottom:14px}.pool-note{font-size:11px}.pool-status{min-height:0}.chloroplast-button,.gradient-card{padding:13px}.location-heading{font-size:12px}.chloroplast-mini{height:88px}.location-label{font-size:11px}.gradient-card .section-heading{align-items:start}.gradient-card h2{font-size:13px}.stats{grid-template-columns:1fr 1fr}.stat{padding:12px}.stat .small{font-size:10px}.explain{min-height:0}.diagram-card{padding:18px 10px 14px}.diagram-card h2{font-size:15px}.legend{gap:10px;font-size:10px}.bottom{gap:14px;margin-top:14px}.bottom .card{padding:18px}dialog{padding:19px 15px}.dialog-header h2{font-size:24px}.location-notes{grid-template-columns:1fr;gap:4px}.dialog-footer{align-items:flex-start;flex-direction:column;gap:12px}.dialog-footer button{width:100%}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto}}
