:root{--paper:#f3ecdf;--paper-2:#ebe2d0;--card:#fbf8f2;--ink:#1d2b3a;--ink-2:#4f5d6d;--ink-3:#586573;--ink-4:#8592a0;--line:#1d2b3a24;--line-2:#1d2b3a42;--water:#2a7fb8;--water-soft:#d7e9f4;--sun:#c99700;--violet:#6b4fd8;--violet-soft:#ebe6fb;--copper:#c4692c;--copper-soft:#f6e4d6;--leaf:#3f8f5a;--water-ink:#2470a1;--copper-ink:#a05524;--copper-deep:#b05e27;--leaf-ink:#35784c;--alarm:#c8352b;--alarm-soft:#f8dfdc;--ok:#2c774b;--radius:12px;--radius-s:8px;--shadow:0 1px 0 #1d2b3a0f, 0 8px 24px -12px #1d2b3a40;--font:"Space Grotesk", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--top-h:64px;--strip-h:58px;--rail-w:78px;--panel-w:400px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{background:var(--paper);height:100%;color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.5;overflow:hidden}button,input,select{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--water-ink)}:focus-visible{outline:2px solid var(--copper);outline-offset:2px}#app{grid-template-columns:var(--rail-w) minmax(0, 1fr) min(var(--panel-w), calc(100vw - var(--rail-w) - 320px));grid-template-rows:var(--top-h) minmax(0, 1fr) var(--strip-h);background:linear-gradient(var(--line) 1px, transparent 1px) 0 0 / 24px 24px, linear-gradient(90deg, var(--line) 1px, transparent 1px) 0 0 / 24px 24px, var(--paper);grid-template-areas:"top top top""rail view panel""strip strip strip";display:grid;position:fixed;inset:0}.topbar{border-bottom:1px solid var(--line-2);background:color-mix(in srgb, var(--paper) 92%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:5;grid-area:top;align-items:center;gap:18px;padding:0 16px;display:flex}.brand{align-items:center;gap:12px;min-width:0;display:flex}.brand h1{letter-spacing:.18em;margin:0;font-size:22px;font-weight:700;line-height:1}.brand p{letter-spacing:.22em;text-transform:uppercase;color:var(--ink-2);white-space:nowrap;margin:4px 0 0;font-size:11px}.topbar__right{align-items:center;gap:12px;margin-left:auto;display:flex}.segmented{border:1px solid var(--line-2);background:var(--card);border-radius:999px;gap:2px;padding:3px;display:inline-flex}.segmented button{color:var(--ink-2);white-space:nowrap;background:0 0;border:0;border-radius:999px;padding:6px 14px;font-size:13px;font-weight:500}.segmented button.is-active{background:var(--ink);color:var(--paper)}.segmented--tiny button{font-family:var(--mono);padding:3px 8px;font-size:11px}.scene-switch{margin-left:12px}.progress{border:1px solid var(--line-2);background:var(--card);border-radius:10px;align-items:center;gap:8px;padding:6px 12px;font-size:12px;display:inline-flex;position:relative;overflow:hidden}.progress b{font-family:var(--mono)}.progress i{height:3px;width:var(--p);background:var(--leaf);position:absolute;bottom:0;left:0}.rail{border-right:1px solid var(--line-2);background:color-mix(in srgb, var(--paper-2) 80%, transparent);z-index:4;flex-direction:column;grid-area:rail;gap:4px;padding:10px 8px;display:flex;overflow-y:auto}.rail__scroll{display:contents}.rail__btn{color:var(--ink-2);letter-spacing:.02em;text-align:center;background:0 0;border:1px solid #0000;border-radius:12px;flex-direction:column;align-items:center;gap:4px;padding:9px 2px 7px;font-size:10.5px;line-height:1.15;display:flex}.rail__btn:hover{background:var(--card);color:var(--ink)}.rail__btn.is-active{background:var(--ink);color:var(--paper)}#viewport{grid-area:view;min-width:0;position:relative;overflow:hidden}#viewport canvas{touch-action:none;width:100%;height:100%;display:block}.label-layer{pointer-events:none;z-index:1;position:absolute;inset:0}.hotspot{pointer-events:auto;background:0 0;border:0;align-items:center;gap:6px;padding:0;display:inline-flex;transform:translate(-7px)}.hotspot__dot{background:var(--water);border-radius:50%;flex:none;width:14px;height:14px;animation:2.6s ease-in-out infinite pulse;box-shadow:0 0 0 3px #fbf8f2e6,0 0 0 6px #2a7fb82e}.hotspot__text{border:1px solid var(--line-2);font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink);white-space:nowrap;background:#fbf8f2f0;border-radius:6px;padding:3px 8px;font-size:10.5px;font-weight:600;box-shadow:0 4px 12px -6px #1d2b3a59}.hotspot:hover .hotspot__text,.hotspot.is-selected .hotspot__text{background:var(--ink);color:var(--paper)}.hotspot.is-selected .hotspot__dot,.hotspot--goto .hotspot__dot{background:var(--copper)}.hotspot--goto .hotspot__text:after{content:" →"}@keyframes pulse{0%,to{box-shadow:0 0 0 3px #fbf8f2e6,0 0 0 6px #2a7fb82e}50%{box-shadow:0 0 0 3px #fbf8f2e6,0 0 0 10px #2a7fb80d}}.toolbar{border:1px solid var(--line-2);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:var(--shadow);z-index:3;scrollbar-width:none;background:#fbf8f2eb;border-radius:14px;align-items:center;gap:6px;max-width:calc(100% - 24px);padding:6px;display:flex;position:absolute;bottom:14px;left:50%;overflow-x:auto;transform:translate(-50%)}.tool{white-space:nowrap;color:var(--ink-2);background:0 0;border:1px solid #0000;border-radius:10px;align-items:center;gap:6px;padding:7px 11px;font-size:12.5px;font-weight:500;display:inline-flex}.tool:hover{background:var(--paper);color:var(--ink)}.tool.is-on{background:var(--ink);color:var(--paper)}.tool--range{border:1px solid var(--line);color:var(--ink);gap:6px;padding:3px 8px}.tool--range input{width:110px;accent-color:var(--copper)}.tool__mini{color:var(--ink-3);background:0 0;border:0;padding:2px 4px;font-size:10px}.peek{border:1px solid var(--line-2);border-radius:var(--radius);background:var(--card);width:min(320px,100% - 28px);box-shadow:var(--shadow);z-index:3;opacity:0;pointer-events:none;padding:12px 14px;transition:opacity .2s,transform .2s;position:absolute;top:14px;left:14px;transform:translateY(-8px)}.peek.is-visible{opacity:1;pointer-events:auto;transform:none}.peek p{color:var(--ink-2);margin:4px 0 8px;font-size:13px}.panel{border-left:1px solid var(--line-2);background:color-mix(in srgb, var(--card) 94%, transparent);z-index:4;flex-direction:column;grid-area:panel;min-height:0;display:flex;position:relative}.panel__grip{display:none}.panel__body{scrollbar-width:thin;flex:1;padding:18px 20px 28px;overflow-y:auto}.panel-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;display:flex}.panel-title{letter-spacing:-.01em;margin:6px 0;font-size:24px;line-height:1.15}.lead{color:var(--ink-2);margin:0 0 14px}.eyebrow{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin:18px 0 8px;font-size:10.5px;font-weight:600}.eyebrow--accent{color:var(--copper-ink);margin-top:0}.section-title{letter-spacing:.02em;align-items:center;gap:8px;margin:20px 0 8px;font-size:14px;display:flex}.section-title .count{font-family:var(--mono);background:var(--paper-2);border-radius:999px;padding:1px 7px;font-size:11px}.hint{color:var(--ink-3);font-size:12.5px}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1px solid var(--line-2);font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);background:var(--card);border-radius:999px;padding:2px 9px;font-size:10.5px;font-weight:600}.chip--hydraulic{color:var(--water-ink);border-color:color-mix(in srgb, var(--water) 40%, transparent)}.chip--mechanical{color:var(--ink)}.chip--electrical{color:var(--copper-ink);border-color:color-mix(in srgb, var(--copper) 40%, transparent)}.chip--site{color:var(--leaf-ink);border-color:color-mix(in srgb, var(--leaf) 40%, transparent)}.tabs{border-bottom:1px solid var(--line-2);z-index:2;background:var(--card);flex-wrap:wrap;gap:0 2px;margin:4px 0 12px;display:flex;position:sticky;top:-18px}.tab{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 10px;font-size:11px;font-weight:600}.tab.is-active{color:var(--ink);border-bottom-color:var(--copper)}.tab-body p{margin:0 0 12px}.specs{border-top:1px solid var(--line);grid-template-columns:minmax(110px,40%) 1fr;margin:0;display:grid}.specs dt,.specs dd{border-bottom:1px solid var(--line);margin:0;padding:7px 0;font-size:13.5px}.specs dt{color:var(--ink-3);padding-right:10px}.specs dd{font-family:var(--mono);font-size:12.5px}.callout{border-radius:var(--radius-s);border:1px solid var(--line);background:var(--paper);align-items:flex-start;gap:8px;margin:10px 0;padding:10px 12px;font-size:13.5px;display:flex}.callout b{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;flex:none;padding-top:2px;font-size:10.5px}.callout--tip{background:var(--water-soft);border-color:color-mix(in srgb, var(--water) 25%, transparent)}.callout--warn{background:var(--alarm-soft);border-color:color-mix(in srgb, var(--alarm) 25%, transparent);color:#6d1e18}.callout--warn svg{flex:none;margin-top:2px}.callout--design{background:var(--violet-soft);border-color:color-mix(in srgb, var(--violet) 30%, transparent);flex-direction:column;gap:4px}.actions{flex-wrap:wrap;gap:8px;margin:14px 0 4px;display:flex}.btn{border:1px solid var(--line-2);background:var(--card);color:var(--ink);border-radius:10px;align-items:center;gap:6px;padding:7px 12px;font-size:13px;font-weight:500;text-decoration:none;display:inline-flex}.btn:hover{border-color:var(--ink)}.btn.is-on,.btn--primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}.btn--ghost{background:0 0}.btn--small{padding:4px 9px;font-size:12px}.btn--danger{color:var(--alarm);border-color:color-mix(in srgb, var(--alarm) 45%, transparent)}.icon-btn{border:1px solid var(--line-2);background:var(--card);border-radius:10px;place-items:center;width:34px;height:34px;display:inline-grid}.icon-btn:disabled{opacity:.35;cursor:default}.icon-btn--accent{background:var(--copper);border-color:var(--copper);color:#fff}.part-chips{flex-wrap:wrap;gap:6px;margin:8px 0;display:flex}.part-chip{border:1px solid var(--line-2);background:var(--card);border-radius:8px;padding:5px 10px;font-size:12.5px}.part-chip:hover{border-color:var(--ink)}.part-chip--hydraulic{box-shadow:inset 3px 0 0 var(--water)}.part-chip--electrical{box-shadow:inset 3px 0 0 var(--copper)}.part-chip--mechanical{box-shadow:inset 3px 0 0 var(--ink-2)}.part-chip--structure{box-shadow:inset 3px 0 0 var(--ink-4)}.part-chip--site{box-shadow:inset 3px 0 0 var(--leaf)}.counters{grid-template-columns:1fr 1fr;gap:8px;margin:10px 0 12px;display:grid}.counter{border:1px solid var(--line-2);border-radius:var(--radius-s);background:var(--paper);padding:8px 12px}.counter span{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);font-size:10px;display:block}.counter b{font-family:var(--mono);color:var(--copper-ink);font-size:22px}.counter small{font-family:var(--mono);color:var(--ink-3)}.step-card{border:1px solid var(--line-2);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow);padding:12px 14px}.step-card .eyebrow{color:var(--copper-ink);margin-top:0}.step-card p{margin:0 0 10px}.meta-row{flex-wrap:wrap;gap:8px 16px;margin:8px 0;display:flex}.meta span{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);font-size:10px;display:block}.meta b{font-size:13px;font-weight:500}.transport{flex-wrap:wrap;align-items:center;gap:8px;margin:14px 0 6px;display:flex}.toggle{color:var(--ink-2);cursor:pointer;align-items:center;gap:6px;font-size:13px;display:inline-flex}.toggle input{accent-color:var(--copper);width:16px;height:16px}.timeline input[type=range]{width:100%;accent-color:var(--copper)}.ticks{flex-wrap:wrap;gap:4px;margin-top:6px;display:flex}.tick{border:1px solid var(--line-2);background:var(--card);min-width:26px;font-family:var(--mono);color:var(--ink-3);border-radius:6px;padding:2px 0;font-size:10.5px}.tick.is-done{background:var(--paper-2);color:var(--ink-2)}.tick.is-active{background:var(--copper-deep);border-color:var(--copper-deep);color:#fff}.sim-top{gap:8px;display:flex}.sim-top select,.field select{border:1px solid var(--line-2);background:var(--card);border-radius:10px;flex:1;min-width:0;padding:7px 10px}.readouts{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:12px;display:grid}.readout{border:1px solid var(--line);background:var(--paper);border-radius:8px;min-width:0;padding:6px 8px}.readout span{color:var(--ink-3);white-space:nowrap;text-overflow:ellipsis;font-size:10.5px;display:block;overflow:hidden}.readout b{font-family:var(--mono);font-size:15px}.readout small{color:var(--ink-3);font-size:10px;font-weight:400}.losses .loss-bar{border-radius:5px;gap:2px;height:16px;display:flex;overflow:hidden}.losses .loss-bar span:first-child{border-radius:4px 0 0 4px}.loss-legend{color:var(--ink-2);grid-template-columns:1fr 1fr;gap:3px 10px;margin-top:8px;font-size:12px;display:grid}.loss-legend i{border-radius:2px;width:9px;height:9px;margin-right:5px;display:inline-block}.loss-legend b{font-family:var(--mono);color:var(--ink);font-weight:600}.sim-section{border:1px solid var(--line-2);border-radius:var(--radius);background:var(--card);margin-top:14px}.sim-section summary{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;cursor:pointer;padding:9px 12px;font-size:11px;font-weight:600}.sim-grid{gap:10px;padding:2px 12px 12px;display:grid}.field{gap:3px;font-size:13px;display:grid}.field--row{align-items:flex-end;gap:10px;display:flex}.field--row>.field{flex:1}.field__label{color:var(--ink-2);justify-content:space-between;display:flex}.field output{font-family:var(--mono);color:var(--ink);font-size:12px}.field input[type=range]{width:100%;accent-color:var(--water)}.chart{min-width:0;margin-bottom:6px;position:relative}.chart__canvas{width:100%;display:block}.chart__legend{color:var(--ink-2);flex-wrap:wrap;gap:4px 12px;margin-bottom:4px;font-size:12px;display:flex}.chart__key i{vertical-align:middle;border-radius:2px;width:14px;height:2px;margin-right:5px;display:inline-block}.chart__tip{border:1px solid var(--line-2);background:var(--card);min-width:120px;box-shadow:var(--shadow);pointer-events:none;z-index:2;border-radius:8px;padding:6px 8px;font-size:11.5px;display:none;position:absolute;top:4px}.chart__tip-x{font-family:var(--mono);color:var(--ink-3);margin-bottom:2px}.chart__tip-row{align-items:center;gap:6px;display:flex}.chart__tip-row i{border-radius:2px;width:10px;height:2px}.chart__tip-row b{font-family:var(--mono)}.chart__tip-row span{color:var(--ink-3)}.lesson-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.lesson-card{border:1px solid var(--line-2);border-radius:var(--radius);background:var(--card);text-align:left;align-items:center;gap:12px;width:100%;padding:10px 12px;display:flex}.lesson-card:hover{border-color:var(--ink)}.lesson-card.is-done{background:var(--paper)}.lesson-card.is-done svg{color:var(--leaf)}.lesson-card__num{font-family:var(--mono);color:var(--copper-ink);font-size:18px;font-weight:600}.lesson-card__body{flex:1;display:grid}.lesson-card__body small{color:var(--ink-3);font-size:12.5px}.figures{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:6px;margin:10px 0;display:grid}.figure{border:1px solid var(--line-2);border-radius:var(--radius-s);background:var(--paper);padding:8px 10px}.figure b{font-family:var(--mono);color:var(--water-ink);font-size:17px;display:block}.figure span{color:var(--ink-2);font-size:11.5px}.formula{border-radius:var(--radius-s);background:var(--ink);color:#e9f1f7;font-family:var(--mono);white-space:pre-wrap;margin:12px 0;padding:12px 14px;font-size:13px}.quiz__item{margin-bottom:14px}.quiz__q{margin:0 0 6px;font-weight:500}.quiz__choices{gap:5px;display:grid}.quiz__choice{text-align:left;border:1px solid var(--line-2);background:var(--card);border-radius:8px;padding:7px 10px;font-size:13.5px}.quiz__choice.is-right{border-color:var(--ok);background:#e2f1e7}.quiz__choice.is-wrong{border-color:var(--alarm);background:var(--alarm-soft)}.quiz__feedback{color:var(--ink-2);margin:6px 0 0;font-size:13px}.search{border:1px solid var(--line-2);background:var(--card);border-radius:10px;width:100%;margin-bottom:8px;padding:8px 12px}.filters{flex-wrap:wrap;gap:4px;margin-bottom:6px;display:flex}.filter{border:1px solid var(--line-2);color:var(--ink-2);background:0 0;border-radius:999px;padding:3px 9px;font-size:12px}.filter.is-active{background:var(--ink);color:var(--paper);border-color:var(--ink)}.catalogue{gap:4px;margin-top:8px;display:grid}.cat-row{border:1px solid var(--line);background:var(--card);text-align:left;border-radius:10px;align-items:center;gap:10px;padding:8px 10px;display:flex}.cat-row:hover{border-color:var(--ink)}.cat-row>i{background:var(--ink-4);border-radius:2px;flex:none;align-self:stretch;width:4px}.cat-row--hydraulic>i{background:var(--water)}.cat-row--electrical>i{background:var(--copper)}.cat-row--mechanical>i{background:var(--ink-2)}.cat-row--site>i{background:var(--leaf)}.cat-row>span{flex:1;display:grid}.cat-row small{color:var(--ink-3);font-size:12px}.chapters,.links{padding-left:18px;font-size:13.5px}.chapters a{font-family:var(--mono)}.strip{border-top:1px solid var(--line-2);background:color-mix(in srgb, var(--paper) 94%, transparent);z-index:5;grid-area:strip;align-items:center;gap:14px;padding:0 14px;display:flex;overflow:hidden}.strip__clock{flex:none;align-items:center;gap:10px;display:flex}.clock b{font-family:var(--mono);font-size:16px;line-height:1.1;display:block}.clock small{color:var(--ink-3);font-size:11px}.strip__values{flex:none;gap:4px;display:flex}.live{border-left:1px solid var(--line);min-width:84px;padding:3px 10px}.live span{color:var(--ink-3);white-space:nowrap;font-size:10.5px;display:block}.live b{font-family:var(--mono);font-size:15px}.live small{color:var(--ink-3);font-size:10px;font-weight:400}.live--water b{color:var(--water-ink)}.live--hydro span:before,.live--pv span:before,.live--load span:before,.live--dump span:before{content:"";vertical-align:middle;border-radius:2px;width:10px;height:2px;margin-right:5px;display:inline-block}.live--hydro span:before{background:var(--water)}.live--pv span:before{background:var(--sun)}.live--load span:before{background:var(--violet)}.live--dump span:before{background:var(--copper)}.strip__alarms{scrollbar-width:none;min-width:0;-webkit-mask-image:linear-gradient(to right, transparent 0, #000 var(--fade-start,0px), #000 calc(100% - var(--fade-end,0px)), transparent 100%);-webkit-mask-image:linear-gradient(to right, transparent 0, #000 var(--fade-start,0px), #000 calc(100% - var(--fade-end,0px)), transparent 100%);mask-image:linear-gradient(to right, transparent 0, #000 var(--fade-start,0px), #000 calc(100% - var(--fade-end,0px)), transparent 100%);flex:0 auto;gap:6px;margin-left:auto;display:flex;overflow:auto hidden}.strip__alarms>*{flex:none}.alarm{border:1px solid color-mix(in srgb, var(--sun) 60%, transparent);white-space:nowrap;color:#6a4f00;background:#fbf1cf;border-radius:999px;align-items:center;gap:5px;padding:4px 9px;font-size:12px;display:inline-flex}.alarm--severe{border-color:var(--alarm);background:var(--alarm-soft);color:#7a1d16;animation:1.2s steps(2,start) infinite blink}.alarm--ok{border-color:color-mix(in srgb, var(--ok) 45%, transparent);color:var(--ok);background:#e2f1e7}@keyframes blink{50%{opacity:.55}}@media (width<=1280px){:root{--panel-w:360px}.strip__values .live:nth-child(n+7){display:none}}@media (width<=1020px){.brand p,.progress span,.strip__values .live:nth-child(n+5),.strip.has-alarm .strip__values .live:nth-child(n+3){display:none}.strip.has-alarm .strip__alarms{flex:1 1 0}.strip.has-alarm .alarm{white-space:normal;border-radius:14px;max-width:calc(50% - 3px);padding:3px 9px;font-size:11.5px;line-height:1.15}.strip.has-alarm .alarm:only-child{max-width:100%}.strip.has-alarm .alarm svg{flex:none}}@media (width<=760px){.tool--range input{width:70px}.strip{gap:8px;padding:0 10px}.segmented--tiny{display:none}.readouts{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=639px),(width<=760px) and (height>=501px){:root{--top-h:104px;--strip-h:52px}#app{grid-template-columns:minmax(0,1fr);grid-template-rows:var(--top-h) 56px minmax(0, 1fr) var(--strip-h);grid-template-areas:"top""rail""view""strip"}.topbar{flex-wrap:wrap;gap:8px;padding:8px 16px}.brand h1{font-size:18px}.brand{flex:1 1 0}.scene-switch{order:3;justify-content:space-between;width:100%;margin:0}.scene-switch button{flex:1;padding:5px 6px}.topbar__right{gap:6px}.progress{display:none}.rail{border-right:0;border-bottom:1px solid var(--line-2);padding:4px 6px;display:block;overflow:hidden}.rail__scroll{scrollbar-width:none;align-items:center;gap:2px;height:100%;display:flex;overflow-x:auto}.rail__btn{flex-direction:row;flex:none;justify-content:center;gap:6px;min-width:32px;min-height:36px;padding:6px;font-size:12px}.rail__btn:not(.is-active) span{display:none}.rail__btn svg{width:17px;height:17px}:root{--sheet-h:46vh;--grip-h:34px;--sheet-rest:calc(var(--sheet-h) - var(--grip-h));--sheet-off:var(--sheet-rest)}@supports (height:1dvh){:root{--sheet-h:46dvh}}body.sheet-open{--sheet-rest:0px;--sheet-off:0px}.panel{left:0;right:0;bottom:var(--strip-h);height:var(--sheet-h);border-left:0;border-top:1px solid var(--line-2);background:var(--card);transform:translateY(var(--sheet-off));border-radius:16px 16px 0 0;transition:transform .25s;position:fixed;box-shadow:0 -10px 30px -18px #1d2b3a80}body.sheet-dragging .panel,body.sheet-dragging .toolbar{transition:none}.panel__grip{height:var(--grip-h);touch-action:none;background:0 0;border:0;flex:none;display:block;position:relative}.panel__grip:before{content:"";background:var(--line-2);border-radius:3px;width:44px;height:5px;margin-left:-22px;position:absolute;top:14px;left:50%}.panel__body{padding:0 16px 24px}.peek{top:10px}}.sizing{overflow-x:auto}.sizing table{border-collapse:collapse;width:100%;font-size:12px}.sizing th{text-align:right;font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);border-bottom:1px solid var(--line-2);white-space:nowrap;padding:4px 6px;font-size:9.5px;font-weight:600}.sizing td{text-align:right;font-family:var(--mono);border-bottom:1px solid var(--line);white-space:nowrap;padding:4px 6px}.sizing th:first-child,.sizing td:first-child,.sizing th:last-child,.sizing td:last-child{text-align:left}.sizing tbody tr{cursor:pointer}.sizing tbody tr:hover{background:var(--paper)}.sizing tr.is-off td{color:var(--ink-3)}.sizing tr.is-current{background:var(--water-soft);box-shadow:inset 3px 0 0 var(--water)}.sizing tr.is-best td b{color:var(--ok)}.sizing .star{color:var(--sun)}.part-chip.is-on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.toolbar__row{display:contents}.toolbar{flex-wrap:wrap;justify-content:center;width:max-content;overflow:visible}.tool svg{flex:none}.brand h1{white-space:nowrap}@media (width<=1100px){.brand p{display:none}}.brand>div{min-width:0}.brand h1{text-overflow:ellipsis;overflow:hidden}.panel-toggle{z-index:3;border:1px solid var(--line-2);width:34px;height:34px;box-shadow:var(--shadow);background:#fbf8f2eb;border-radius:10px;place-items:center;display:grid;position:absolute;top:12px;right:12px}body.panel-closed #app{grid-template-columns:var(--rail-w) minmax(0, 1fr) 0}body.panel-closed .panel{display:none}@media (width<=1100px){:root{--panel-w:310px}.tool{padding:6px 8px;font-size:12px}.tool--range input{width:80px}}@media (width<=639px),(width<=760px) and (height>=501px){.panel-toggle{display:none}body.panel-closed .panel{display:flex}}.sizing td b{font-weight:700}.sizing .star{margin-left:3px}@media (width<=639px),(width<=760px) and (height>=501px){.strip{background:var(--paper)}}@media (width<=900px){.progress{display:none}.scene-switch button{padding:6px 10px}}.dv{z-index:6;background:linear-gradient(var(--line) 1px, transparent 1px) 0 0 / 24px 24px, linear-gradient(90deg, var(--line) 1px, transparent 1px) 0 0 / 24px 24px, #e7decb;display:none;position:absolute;inset:0}body.mode-plans .dv{display:block}body.mode-plans .toolbar,body.mode-plans .peek,body.mode-plans .label-layer{display:none}.dv__stage{cursor:grab;touch-action:none;position:absolute;inset:0;overflow:hidden}.dv__stage:active{cursor:grabbing}.dv__svg{-webkit-user-select:none;user-select:none;position:absolute;box-shadow:0 10px 40px -18px #1d2b3a99}.dv__bar{border:1px solid var(--line-2);box-shadow:var(--shadow);background:#fbf8f2f2;border-radius:14px;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;max-width:calc(100% - 24px);padding:6px 8px;display:flex;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.dv__no{font-family:var(--mono);text-align:center;flex:none;min-width:92px;font-size:12px}.dv__sep{background:var(--line-2);width:1px;height:22px}.dv__print{visibility:hidden;border:0;width:0;height:0;position:fixed}.sheet-group{margin-bottom:6px}.sheet-row{border:1px solid var(--line);background:var(--card);text-align:left;border-radius:8px;align-items:baseline;gap:10px;width:100%;margin-bottom:3px;padding:6px 10px;font-size:13px;display:flex}.sheet-row:hover{border-color:var(--ink)}.sheet-row.is-active{background:var(--ink);color:var(--paper);border-color:var(--ink)}.sheet-row__no{font-family:var(--mono);opacity:.75;white-space:nowrap;font-size:11px}.line-legend{color:var(--ink-2);gap:4px;margin:0;padding:0;font-size:12.5px;list-style:none;display:grid}.line-legend li{align-items:center;gap:8px;display:flex}.panel-toggle{z-index:7}.dv__bar{flex-wrap:nowrap;gap:4px}.dv__bar .icon-btn{width:30px;height:30px}.dv__no{white-space:nowrap}.panel__edge{z-index:5;cursor:col-resize;touch-action:none;width:10px;position:absolute;top:0;bottom:0;left:-5px}.panel__edge:before{content:"";background:0 0;width:2px;transition:background .15s;position:absolute;top:0;bottom:0;left:4px}.panel__edge:hover:before,body.panel-resizing .panel__edge:before{background:var(--copper)}.panel__wide{border:1px solid var(--line-2);background:var(--card);width:22px;height:46px;color:var(--ink-2);box-shadow:var(--shadow);cursor:pointer;border-radius:11px;place-items:center;margin-top:-23px;padding:0;display:grid;position:absolute;top:50%;left:-7px}.panel__wide:hover{color:var(--ink);border-color:var(--copper)}body.panel-resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}@media (width>=761px),(height<=500px) and (width>=640px){body.panel-wide:not(.panel-closed) #app{grid-template-columns:var(--rail-w) 0 minmax(0, 1fr)}body.panel-wide:not(.panel-closed) #viewport{visibility:hidden}body.panel-wide .panel__body{padding-inline:max(20px,50% - 430px)}body.panel-wide .panel__edge{cursor:default}}@media (width<=639px),(width<=760px) and (height>=501px){.panel__edge{display:none}.tabs{top:0}.toolbar{left:12px;right:12px;bottom:calc(var(--sheet-h) - var(--sheet-off) + 10px);width:auto;max-width:none;padding:0;transition:bottom .25s;overflow:hidden;transform:none}.toolbar__row{scrollbar-width:none;align-items:center;gap:6px;padding:6px;display:flex;overflow-x:auto}.dv{z-index:3;bottom:calc(var(--sheet-h) - var(--sheet-rest))}.dv__bar{flex-wrap:wrap;gap:2px;width:max-content;max-width:calc(100% - 16px);padding:6px 4px}.dv__no{min-width:0;padding:0 2px;font-size:11px}.dv__sep,body.sheet-open .peek{display:none}.overview{flex-direction:column;display:flex}.overview>.panel-title,.overview>.listen{order:-2}.overview>.actions{order:-1;margin-top:6px;margin-bottom:10px}}@media (width<=760px){.strip__values{scrollbar-width:none;min-width:0;-webkit-mask-image:linear-gradient(to right, transparent 0, #000 var(--fade-start,0px), #000 calc(100% - var(--fade-end,0px)), transparent 100%);-webkit-mask-image:linear-gradient(to right, transparent 0, #000 var(--fade-start,0px), #000 calc(100% - var(--fade-end,0px)), transparent 100%);mask-image:linear-gradient(to right, transparent 0, #000 var(--fade-start,0px), #000 calc(100% - var(--fade-end,0px)), transparent 100%);flex:auto;overflow-x:auto}.strip__values .live{flex:none}.strip.has-alarm .strip__values{display:none}.alarm--ok{gap:0;padding:5px;font-size:0}}@media (width<=380px){.topbar{padding-inline:12px}.scene-switch button{padding:5px 3px;font-size:12px}}@media (width<=639px),(width<=760px) and (height>=501px),(height<=500px){:root{--arrow-next:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%234f5d6d' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 5l7 7-7 7'/%3E%3C/svg%3E");--arrow-prev:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%234f5d6d' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 5l-7 7 7 7'/%3E%3C/svg%3E")}.toolbar{--more-bg:251, 248, 242}.rail{--more-bg:235, 226, 208;position:relative}.toolbar[data-more~=start]:before,.toolbar[data-more~=end]:after,.rail[data-more~=start]:before,.rail[data-more~=end]:after{content:"";pointer-events:none;background-repeat:no-repeat;background-size:14px 14px,100% 100%;width:40px;position:absolute;top:0;bottom:0}.toolbar[data-more~=end]:after,.rail[data-more~=end]:after{background-position:right 8px center,0 0;background-image:var(--arrow-next), linear-gradient(to right, rgba(var(--more-bg), 0), rgba(var(--more-bg), .97) 62%);right:0}.toolbar[data-more~=start]:before,.rail[data-more~=start]:before{background-position:8px,0 0;background-image:var(--arrow-prev), linear-gradient(to left, rgba(var(--more-bg), 0), rgba(var(--more-bg), .97) 62%);left:0}}@media (width<=760px),(pointer:coarse){.hotspot{min-height:32px}.tool__mini{min-width:32px;min-height:32px}.tool--range input,.field input[type=range],.timeline input[type=range]{height:32px}.tick{min-width:32px;min-height:32px}.part-chip,.filter,.btn--small,.sheet-row,.segmented button{min-height:32px}.tab{min-height:36px}.toggle{min-height:32px}.dv__bar .icon-btn{width:32px;height:32px}.panel__wide{width:32px;left:-11px}}@media (height<=500px){:root{--top-h:48px;--strip-h:44px}.toolbar{width:auto;max-width:none;padding:0;transition:none;inset:8px 8px auto;overflow:hidden;transform:none}.toolbar__row{scrollbar-width:none;align-items:center;gap:6px;padding:5px;display:flex;overflow-x:auto}}@media (height<=500px) and (width>=640px){:root{--rail-w:56px}.rail{gap:2px;padding:4px}.rail__btn{min-height:32px;padding:6px 2px}.rail__btn span{display:none}.peek{width:min(300px,100% - 64px);padding:8px 12px;top:auto;bottom:10px;left:10px}.peek p{display:none}.panel-toggle{top:auto;bottom:10px;right:10px}}@media (width<=639px) and (height<=500px){:root{--top-h:52px}#app{grid-template-rows:var(--top-h) 44px minmax(0, 1fr) var(--strip-h)}.topbar{flex-wrap:nowrap;gap:10px;padding:6px 12px}.scene-switch{flex:0 auto;order:0;justify-content:flex-start;width:auto;margin-left:4px}.scene-switch button{flex:none}.rail{padding:2px 8px}.rail__btn{padding:4px 8px}.peek{bottom:calc(var(--grip-h) + 8px)}}.unsupported{grid-area:1/1/-1/-1;place-content:center;gap:14px;padding:24px 16px;display:grid;overflow-y:auto}.unsupported__card{border:1px solid var(--line-2);border-radius:var(--radius);background:var(--card);width:min(560px,100vw - 32px);box-shadow:var(--shadow);padding:18px 22px}.unsupported__card--alt{box-shadow:none;background:0 0}.unsupported__card .lead{margin:0 0 10px}.unsupported__card .hint{margin:0}.narr-speaker{color:var(--ink-2);position:relative}.narr-speaker[hidden]{display:none}.narr-speaker:hover{border-color:var(--ink);color:var(--ink)}.narr-speaker.is-on{background:var(--ink);border-color:var(--ink);color:var(--paper)}.narr-speaker__dot{background:var(--copper);width:10px;height:10px;box-shadow:0 0 0 2px var(--paper);border-radius:50%;display:none;position:absolute;top:-3px;right:-3px}.narr-speaker.is-playing .narr-speaker__dot{animation:1.6s ease-in-out infinite narr-dot;display:block}@keyframes narr-dot{50%{opacity:.35}}@media (prefers-reduced-motion:reduce){.narr-speaker__dot{animation:none!important}}.narr-anchor{display:inline-flex;position:relative}.narr-speaker.is-inviting{border-color:var(--copper);color:var(--copper-ink);animation:1.8s ease-out 1s 3 narr-ring}@keyframes narr-ring{0%{box-shadow:0 0 #c4692c80}to{box-shadow:0 0 0 14px #c4692c00}}.narr-invite{top:calc(100% + 12px);right:calc(-6px - var(--narr-shift,0px));z-index:30;border:1px solid var(--copper);background:var(--card);width:max-content;max-width:min(340px,100vw - 24px);box-shadow:var(--shadow);border-radius:12px;align-items:center;gap:2px;padding:4px 4px 4px 14px;animation:.3s ease-out .8s both narr-invite-in;display:flex;position:absolute}.narr-invite[hidden]{display:none}.topbar:has(.narr-invite:not([hidden])){z-index:12}.narr-invite:before{content:"";top:-6px;right:calc(18px + var(--narr-shift,0px));border:solid var(--copper);background:var(--card);border-width:1px 0 0 1px;width:10px;height:10px;position:absolute;transform:rotate(45deg)}.narr-invite__go{color:var(--ink);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:8px 4px;font-size:13px;font-weight:600}.narr-invite__t{white-space:nowrap}.narr-invite__go:hover{color:var(--copper-ink)}.narr-invite__x{width:28px;height:28px;color:var(--ink-2);cursor:pointer;background:0 0;border:0;border-radius:8px;place-items:center;display:grid}.narr-invite__x:hover{background:var(--copper-soft);color:var(--ink)}@keyframes narr-invite-in{0%{opacity:0;transform:translateY(-6px)}}@media (prefers-reduced-motion:reduce){.narr-speaker.is-inviting,.narr-invite{animation:none}}.listen{margin:4px 0 10px}.btn--listen svg{color:var(--copper-ink)}.btn--listen.is-invite{border-color:var(--copper);background:var(--copper-soft);color:var(--copper-ink)}.btn--listen.is-on svg{color:inherit}.narr{left:50%;bottom:calc(14px + var(--tools-h,48px) + 8px);z-index:3;pointer-events:none;flex-direction:column;gap:6px;width:min(780px,100% - 28px);display:flex;position:absolute;transform:translate(-50%);container:narr/inline-size}.narr[hidden]{display:none}.narr:focus{outline:none}.narr__subs{justify-content:center;align-items:flex-end;min-height:56px;display:flex}.narr__subs[hidden]{display:none}.narr__caption{-webkit-line-clamp:2;border:1px solid var(--line);border-radius:var(--radius-s);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);max-width:max(70%,min(100%,340px));color:var(--ink);text-align:center;text-wrap:balance;background:#fbf8f2e0;-webkit-box-orient:vertical;margin:0;padding:6px 12px;font-size:15px;line-height:1.35;display:-webkit-box;overflow:hidden;box-shadow:0 4px 14px -8px #1d2b3a80}.narr__caption:empty{visibility:hidden}.narr__bar{pointer-events:auto;border:1px solid var(--line-2);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:var(--shadow);background:#fbf8f2f0;border-radius:14px;grid-template-columns:auto minmax(0,1fr) minmax(0,1.6fr) auto;grid-template-areas:"play meta time tools";align-items:center;gap:4px 12px;padding:6px 8px;display:grid}.narr__play{grid-area:play}.narr__meta{flex-direction:column;grid-area:meta;min-width:0;line-height:1.25;display:flex}.narr__title,.narr__voice{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.narr__title{font-size:13px;font-weight:600}.narr__voice{color:var(--ink-3);font-size:11.5px}.narr__time{font-family:var(--mono);color:var(--ink-2);grid-area:time;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;font-size:11px;display:grid}.narr__range{width:100%;height:24px;accent-color:var(--copper);margin:0}.narr__tools{grid-area:tools;align-items:center;gap:2px;display:flex}.narr__tools .tool{justify-content:center;min-width:32px;min-height:32px}.narr__speed{min-width:44px;font-family:var(--mono);font-size:12px}.narr__close{margin-left:4px}.narr__notice{border:1px solid var(--line-2);background:var(--card);box-shadow:var(--shadow);color:var(--ink);white-space:nowrap;pointer-events:auto;border-radius:999px;align-items:center;gap:8px;margin-bottom:8px;padding:4px 6px 4px 12px;font-size:12.5px;display:flex;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.narr__notice:empty{display:none}.narr__notice .btn{margin:0 -2px 0 -6px}@container narr (width<=699px){.narr__bar{grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"play meta tools""time time time"}.narr__label{display:none}.narr__tools .tool{padding:7px 8px}}@media (width<=639px),(width<=760px) and (height>=501px){.narr{width:auto;left:12px;right:12px;bottom:calc(var(--sheet-h) - var(--sheet-off) + 10px + var(--tools-h,50px) + 8px);transition:bottom .25s;transform:none}body.sheet-dragging .narr{transition:none}}@media (height<=500px){.narr{width:auto;transition:none;bottom:10px;left:10px;right:10px;transform:none}body.narr-on .peek{display:none}.narr__subs{min-height:0;margin-bottom:6px;position:absolute;bottom:100%;left:0;right:0}.narr__notice{margin-bottom:70px}}@media (height<=500px) and (width>=640px){.narr{right:54px}}@media (width<=639px) and (height<=500px){.narr{left:12px;right:12px;bottom:calc(var(--sheet-h) - var(--sheet-off) + 8px);transition:bottom .25s}body.sheet-dragging .narr{transition:none}}
