/* Modern museum / interactive engineering exhibit. */
.presentation-tools{position:fixed;right:var(--gutter);bottom:calc((var(--rail-h) - 44px)/2);height:44px;display:flex;align-items:center;gap:24px;z-index:41}
.presentation-tools .fullscreen{width:44px;height:44px;display:grid;place-items:center;border:1px solid #b7cad333;border-radius:10px;background:#1a252d}
@media(max-width:800px){.presentation-tools{gap:10px}.presentation-tools .chapter-indicator{font-size:9px;letter-spacing:0}.presentation-tools .divider{margin:0 5px}}
@media print{.presentation-tools{display:none!important}}
/* Keep the presentation focused on its story and actionable controls. */
body .model-info,body .model-instruction,body .hero-edition,body .scroll-hint,
body .scroll-caption,body .figure-detail,body .portrait-caption,
body .inspector-eyebrow,body .explorer-tip,body .brand>span,
body .part-number,body .impact-index,body .impact-kicker{display:none}
:root{--bg:#0d1317;--paper:#f0f2ef;--brass:#e9b65d;--ember:#ff8755;--muted:#94a0a4;--line:#c4d8df1c}
html,body{background:var(--bg)}
body:after{opacity:.021}
.masthead{background:linear-gradient(#0d1317 10%,#0d131700)}
.brand{letter-spacing:.12em;font-size:11px}
.brand svg{padding:5px;width:33px;height:33px;border:1px solid #d5ad6738;border-radius:8px;background:#e9b65d08}
.hero{background:radial-gradient(ellipse at 77% 48%,#31475944,transparent 56%),radial-gradient(ellipse at 30% 90%,#15232888,transparent 60%)}
.hero:before{display:none}
.hero:after{width:47vw;height:47vw;right:1.5%;top:13%;border-color:#a4b8c30a;box-shadow:0 0 0 65px #a4b8c303}
.hero-year{font-family:var(--sans);font-size:20vw;font-weight:600;letter-spacing:normal;color:#bed8e608;top:18%;right:3%}
.hero-copy{top:25%}
.hero .eyebrow{font-size:10px;letter-spacing:.13em;color:#b8c4c8}
.hero h1{font-size:clamp(5.2rem,8.7vw,10.5rem);letter-spacing:normal;line-height:.99}
.hero h1 em{color:var(--brass)}
.hero-subtitle{font-size:clamp(1rem,1.17vw,1.4rem);color:#a3b1b7;line-height:1.6}
.hero-engine{right:-2%;width:66%;height:67vh;bottom:calc(var(--rail-h) + 46px)}
.hero-engine .model-info{left:24%;right:11%;top:5%}
.hero-engine .model-toolbar{left:57%;bottom:1px}
.hero-engine .model-viewport:before{background:radial-gradient(ellipse,#6ba0b312,transparent 62%)}
.hero-bottom{bottom:calc(var(--rail-h) + 25px)}
.hero-edition{font-size:9px;letter-spacing:.14em;color:#8b9da3}
.authors{font-size:12px}.authors p:last-child{color:#7d8d94}
.scroll-hint{font-size:11px;letter-spacing:.025em}
.rail-nav{background:linear-gradient(#0d131700,#0d1317 35%)}
.rail-line{background:#344248}
.rail-line:after{background:#24363d}
.station-dot{background:var(--bg);border-color:#5b7179;width:9px;height:9px}
.station.active .station-dot{box-shadow:0 0 16px #e9b65d50}
.station-label{font-size:11px;color:#85979f}
.station.active .station-label{color:#edf2f1}
.station-label b{color:#526771}
.fullscreen{border:1px solid #b9d2df20;border-radius:7px;padding:9px;background:#adc8d308}
.model-info{font-size:10px;color:#b9c9cf;letter-spacing:.12em}
.three-canvas:focus-visible{outline:1px solid #e9b65d88;border-radius:10px}
.three-status:before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--brass);margin:0 9px 2px 0;box-shadow:0 0 10px #e9b65d66}
.model-instruction{font-size:10px;letter-spacing:0;color:#85989f}
.model-toolbar{border-radius:12px;padding:5px 7px;border-color:#bfd6e22b;background:#182329ee;box-shadow:0 8px 30px #0003;gap:2px;backdrop-filter:blur(14px)}
.model-toolbar button{border-radius:7px;height:32px;min-width:30px;font-size:19px;color:#cdd8dc}
.model-toolbar button:hover{background:#b8d9e715;color:#f9f9f2}
.model-toolbar .play-symbol{font-size:14px}
.model-toolbar button[data-3d-action="section"]{border-radius:6px;font-size:10px}
.model-toolbar .explore-button{font-family:var(--sans);font-size:11px;font-weight:600;background:var(--brass);color:#192125;padding:0 13px;margin-left:6px;display:flex;align-items:center;gap:15px}
.model-toolbar .explore-button:hover{background:#f4c776;color:#192125}
.explore-button span{font-size:17px}
.zoom-value{font-size:10px;color:#91a3ab;min-width:36px}
.hotspot-layer{position:absolute;inset:0;z-index:3;pointer-events:none;overflow:clip}
.model-hotspot{position:absolute;top:0;left:0;pointer-events:auto;margin:-13px 0 0 -13px;padding:0;display:flex;align-items:center;gap:8px;background:none;white-space:nowrap;border:0;line-height:1}
.model-hotspot[hidden]{display:none}
.hotspot-number{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border:1px solid #bfd4dc65;border-radius:50%;background:#14232adc;color:#e6eae9;font-size:9px;font-family:var(--sans);font-variant-numeric:tabular-nums;box-shadow:0 0 0 4px #aec9d50c}
.hotspot-label{position:absolute;left:calc(100% + 8px);font-size:10px;background:#152229ed;color:#e1e9eb;padding:7px 9px;border:1px solid #bdccd724;border-radius:5px;opacity:0;transform:translateX(-5px);pointer-events:none;transition:opacity .16s,transform .16s}
.model-hotspot.label-left .hotspot-label{left:auto;right:calc(100% + 8px)}
.model-hotspot:hover .hotspot-label,.model-hotspot:focus-visible .hotspot-label,.model-hotspot.active .hotspot-label{opacity:1;transform:none}
.model-hotspot.active .hotspot-number,.model-hotspot:hover .hotspot-number{color:#182025;background:var(--brass);border-color:var(--brass);box-shadow:0 0 0 4px #e9b65d15}
.context,.mechanism-scene,.impact-scene{background:radial-gradient(ellipse at 85% 45%,#20303b50,transparent 66%)}
.inventor,.bibliography{background:#10191e}
.timeline-scene{background:#111d23}
.timeline-node:before{background:#111d23}
.portrait-frame{border-radius:8px;background:#17252b}
.portrait-frame:after{border-color:#bad4df20;border-radius:3px}
.portrait img{filter:grayscale(.8) contrast(1.07)}
.portrait-caption{background:#0e171dab;padding:7px 10px;left:20px;border:1px solid #d8e5e21c;border-radius:3px;color:#b8c9cf}
.section-heading .eyebrow,.inventor-copy>.eyebrow,.bibliography .eyebrow{color:#9eb2bc;letter-spacing:.14em}
.context-step h3{font-family:var(--sans);font-weight:600}
.scene-footer{border-top-color:#bad4df20}
.step-dots{gap:8px}.step-dots button{border:1px solid transparent;border-radius:6px;padding:8px 11px}.step-dots button.active{background:#e9b65d0a;border-color:#e9b65d38}.step-dots button:after{display:none}
.parts-nav{gap:10px}.parts-nav button{padding:7px 10px;border-radius:6px}.parts-nav button.active{background:#e9b65d12;box-shadow:inset 0 0 0 1px #e9b65d30}.parts-nav span{font-size:10px}
.mechanism-layout{grid-template-columns:25% 75%}.cutaway-art:before{background:radial-gradient(ellipse,#7198ad12,transparent 65%)}
.sources li{border-top-color:#bacdd91e}.sources small{color:#879ca7}.sources h3{color:#dce8ec}
.explorer-open{overflow:hidden}
.explorer-dialog{width:min(1440px,94vw);height:min(920px,92vh);max-width:none;max-height:none;padding:0;overflow:hidden;color:var(--paper);background:#101a20;border:1px solid #bdcfda2b;border-radius:18px;box-shadow:0 35px 130px #000b;font-family:var(--sans)}
.explorer-dialog::backdrop{background:#03090de0;backdrop-filter:blur(12px)}
.explorer-header{height:88px;display:flex;align-items:center;justify-content:space-between;padding:0 32px;border-bottom:1px solid #aecada1c;background:#111c23}
.inspector-eyebrow{font-size:9px;letter-spacing:.17em;color:#8ca4b0;font-weight:600;display:block;margin-bottom:8px}
.explorer-header h2{font-family:var(--sans);font-size:20px;letter-spacing:normal;font-weight:600;line-height:1}
#explorer-close{display:flex;gap:22px;align-items:center;font-size:11px;border:1px solid #b6d0df2c;background:#bfd7e309;padding:8px 10px 8px 14px;border-radius:7px;color:#cbd9df}
#explorer-close span{font-size:24px;line-height:1}
.explorer-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;height:calc(100% - 88px)}
.explorer-main{position:relative;min-width:0;overflow:hidden;background:radial-gradient(ellipse at 48% 46%,#334f655c,transparent 70%)}
.explorer-main:after{content:"";position:absolute;inset:12% 12% 15%;border:1px solid #bdd7e410;border-radius:50%;pointer-events:none;z-index:0}
#explorer-stage{height:100%;position:relative}
.model-viewport.in-explorer{height:100%!important;width:100%!important;min-height:0!important;overflow:hidden!important}
.in-explorer .model-info{display:none}
.in-explorer .model-toolbar{bottom:57px;left:50%;max-width:calc(100% - 30px)}
.in-explorer .model-toolbar [data-3d-action="explore"]{display:none}
.in-explorer .hotspot-label{font-size:11px}
.in-explorer .three-canvas{touch-action:none}
.camera-presets{position:absolute;z-index:7;top:23px;left:24px;display:flex;gap:4px;padding:4px;border:1px solid #aec9d826;border-radius:9px;background:#14232cbd}
.camera-presets button{font-size:11px;border-radius:5px;padding:8px 12px;color:#91a7b4}
.camera-presets button[aria-pressed="true"]{background:#aac2d21b;color:#e0e9ed}
.explorer-tip{position:absolute;left:30px;right:30px;bottom:22px;display:flex;justify-content:space-between;font-size:8px;letter-spacing:.1em;color:#69828f;pointer-events:none}
.explorer-sidebar{border-left:1px solid #abc6d522;padding:28px 24px;overflow-y:auto;background:#0f191feb;scrollbar-width:thin;scrollbar-color:#324d5c transparent}
.explorer-detail{min-height:144px}
#explorer-part-index{font-size:9px;color:var(--brass);letter-spacing:.1em}
.explorer-detail h3{font-family:var(--serif);font-size:29px;letter-spacing:normal;margin-top:14px;line-height:1.13}
.explorer-detail p{font-size:12px;line-height:1.65;color:#91a7b2;margin-top:13px}
.explorer-parts{border-top:1px solid #abc6d51d;margin:18px 0 25px;padding-top:12px;display:grid;gap:3px}
.explorer-parts button{font-size:12px;text-align:left;display:flex;align-items:center;gap:14px;padding:11px 9px;border-radius:6px;color:#a8bac5}
.explorer-parts button span{font-size:9px;color:#5f7d8d;font-variant-numeric:tabular-nums}
.explorer-parts button i{font-style:normal;margin-left:auto;color:#6c8998;font-size:14px}
.explorer-parts button:hover{background:#bad6e308}
.explorer-parts button[aria-pressed="true"]{background:#e9b65d10;color:#f0c77e}
.explorer-parts button[aria-pressed="true"] span,.explorer-parts button[aria-pressed="true"] i{color:#cc9e50}
.explorer-adjustments{border-top:1px solid #abc6d51d;padding-top:19px}
.explorer-adjustments label{font-size:10px;display:flex;justify-content:space-between;color:#a6b9c3;align-items:center}
.explorer-adjustments output{color:#e9bb6e;font-size:10px;font-variant-numeric:tabular-nums}
.explorer-adjustments input{width:100%;accent-color:var(--brass);height:3px;margin:17px 0 25px;cursor:pointer}
.explorer-toggles{display:flex;flex-wrap:wrap;gap:7px}
.explorer-toggles button{font-size:9px;border:1px solid #b8d3e024;border-radius:5px;padding:8px 9px;color:#8ea8b6}
.explorer-toggles button[aria-pressed="true"]{border-color:#e9b65d4a;color:#e9b65d;background:#e9b65d09}
.explorer-dialog [hidden]{display:none!important}
.guide-start{display:block;width:100%;margin:15px 0 8px;padding:12px 10px;border:1px solid #e9b65d55;background:#e9b65d10;border-radius:7px;color:#f0c77e;font-size:11px;text-align:left}
.guide-controls{display:flex;gap:8px;justify-content:space-between;margin:12px 0 20px}.guide-controls button{font-size:10px;padding:9px 8px;border:1px solid #afc5ce30;border-radius:5px}.guide-controls button:disabled{opacity:.3;cursor:default}
.process-legend{display:none;position:absolute;left:15px;bottom:57px;gap:10px;z-index:4;font-size:8px;color:#c1d2d8;pointer-events:none;flex-wrap:wrap;max-width:90%}
.process-legend span:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:5px;background:currentColor}
.process-legend .water-key{color:#78bbc9}.process-legend .heat-key{color:#f4a258}.process-legend .steam-key{color:#e0f4f6}.process-legend small{font-size:7px;width:100%;color:#8b9fa9}
[data-active-part="2"] .process-legend,[data-active-part="3"] .process-legend,.is-guided .process-legend{display:flex}
.process-legend{top:35px;bottom:auto;background:#102028e8;border:1px solid #adc9d721;padding:7px 9px;border-radius:5px;font-size:9px}
.in-explorer .process-legend{top:78px;bottom:auto;left:25px}
.mechanism-step p{max-width:360px;font-size:clamp(14px,1.18vw,20px);line-height:1.65}
.portrait img{object-fit:cover;object-position:center 26%;filter:grayscale(1) contrast(1.05)}
.portrait-frame:after{display:none}.portrait-caption{font-size:8px}.rocket-event img{height:auto;object-fit:contain;border-radius:3px;filter:sepia(.1)}
@media(max-width:800px){.hero-engine .model-info{align-items:flex-start}.hero-engine .three-status{max-width:170px;line-height:1.55;font-size:7px}.hero-engine .model-instruction{max-width:118px}.mechanism-step p{font-size:13px;line-height:1.5;max-width:none}.mechanism-labels{min-height:175px}.process-legend{font-size:7px;gap:7px;bottom:52px;left:5px}.in-explorer .process-legend{bottom:101px;left:18px}.portrait img{object-fit:contain;object-position:center;background:#cec8bc}.portrait-frame{background:#cec8bc}.piston-figure figcaption{display:block;font-size:7px;letter-spacing:.06em;margin-top:8px}.guide-controls button,.guide-start{font-size:11px}}
@media(min-width:1600px){.hero-engine{bottom:calc(var(--rail-h) + 67px);height:67vh}.hero-copy{top:25%}.hero-bottom{bottom:calc(var(--rail-h) + 45px)}.model-toolbar button{height:38px;min-width:34px}.model-toolbar .explore-button{font-size:12px;padding:0 17px}.hotspot-number{width:29px;height:29px;font-size:10px}.model-hotspot{margin:-14px 0 0 -14px}.model-info{font-size:11px}}
@media(max-width:1000px){.explorer-grid{grid-template-columns:minmax(0,1fr) 250px}.explorer-sidebar{padding:22px 18px}.explorer-header{padding:0 24px}.explorer-tip{font-size:7px}}
@media(max-width:800px){.brand{font-size:9px}.brand svg{width:28px;height:28px}.hero-copy{top:18%}.hero .eyebrow{font-size:8px}.hero h1{font-size:clamp(4.15rem,12.2vw,6.6rem);letter-spacing:normal}.hero-subtitle{font-size:14px}.hero-year{top:45%;right:4%;font-size:39vw}.hero-engine{width:112%;right:-6%;top:46%;height:35%;bottom:auto;min-height:0}.hero-engine .model-info{left:11%;right:11%;top:8px}.hero-engine .model-instruction{font-size:8px;max-width:140px;text-align:right}.hero-engine .model-toolbar{left:50%;bottom:0}.hero-bottom{bottom:calc(var(--rail-h) + 22px)}.hero:after{width:83vw;height:83vw;top:44%;right:-15%}.model-toolbar{border-radius:10px;padding:4px;gap:0}.model-toolbar button{height:29px;min-width:27px;font-size:18px}.model-toolbar .explore-button{font-size:10px;gap:7px;padding:0 10px;margin-left:3px}.model-toolbar button[data-3d-action="section"]{font-size:9px;padding:0 7px}.model-instruction{font-size:8px}.model-info{font-size:8px}.zoom-value{font-size:9px;min-width:33px}.hotspot-number{height:22px;width:22px;font-size:8px}.model-hotspot{margin:-11px 0 0 -11px}.hotspot-label{font-size:8px;padding:5px 6px}.model-hotspot.active .hotspot-label{display:none}.station-label{font-size:9px}.authors{font-size:10px}.parts-nav{gap:4px}.parts-nav button{font-size:9px;padding:6px 5px}.parts-nav span{font-size:8px}.step-dots button{font-size:11px;padding:7px 9px}.mechanism-layout{display:flex}.explorer-dialog{width:100vw;height:100dvh;max-height:100dvh;margin:0;border:0;border-radius:0}.explorer-header{height:73px;padding:0 19px}.explorer-header h2{font-size:17px}.inspector-eyebrow{font-size:8px}.explorer-grid{height:calc(100% - 73px);display:flex;flex-direction:column;overflow-y:auto}.explorer-main{min-height:430px;height:52dvh;flex-shrink:0}.explorer-sidebar{border-left:0;border-top:1px solid #abc6d522;overflow:visible;padding:22px 23px}.explorer-detail{min-height:0}.explorer-detail h3{font-size:26px;margin-top:10px}.explorer-detail p{font-size:13px}.explorer-parts{grid-template-columns:1fr 1fr;margin:20px 0;gap:3px}.explorer-parts button{font-size:11px;padding:10px 8px;gap:10px}.explorer-adjustments{padding-top:16px}.explorer-adjustments label{font-size:12px}.explorer-toggles button{font-size:11px}.explorer-tip{font-size:7px;left:20px;right:20px}.explorer-tip span:last-child{display:none}.camera-presets{left:19px;top:16px}.camera-presets button{font-size:10px;padding:7px 11px}.in-explorer .model-toolbar{bottom:53px}.in-explorer .model-hotspot.active .hotspot-label{display:block}.in-explorer .hotspot-label{font-size:9px}.in-explorer .model-toolbar [data-3d-action="section"]{display:none}}
@media(prefers-reduced-motion:reduce){.hotspot-label{transition:none}}

/* Presentation controls share the reserved footer space with the chapter rail. */
.presentation-controls{position:fixed;z-index:41;left:var(--gutter);bottom:calc((var(--rail-h) - 44px)/2);display:flex;gap:8px}
.presentation-controls button{height:44px;min-width:100px;padding:0 15px;display:inline-flex;align-items:center;justify-content:center;gap:10px;border:1px solid #b7cad333;border-radius:10px;background:#1a252d;color:var(--paper);font-family:var(--sans);font-size:12px;font-weight:600;cursor:pointer;transition:background .18s,border-color .18s,opacity .18s}
.presentation-controls button span{font-size:18px;font-weight:400;line-height:1}
.presentation-controls #presentation-next{background:var(--brass);border-color:var(--brass);color:#182127}
.presentation-controls button:hover:not(:disabled){background:#2a3b46;border-color:#b7cad36b}
.presentation-controls #presentation-next:hover:not(:disabled){background:#f4c778;border-color:#f4c778}
.presentation-controls button:disabled{opacity:.3;cursor:default}
.rail-nav{padding-left:calc(var(--gutter) + 250px)}
.timeline-event.is-current .timeline-year{color:#fff0d3}
@media(max-width:800px){
  .presentation-controls{gap:6px}
  .presentation-controls button{min-width:84px;padding:0 11px;gap:7px;font-size:11px}
  .rail-nav{padding-left:calc(var(--gutter) + 200px);padding-top:29px}
  .rail-nav .station{min-width:18px;padding-bottom:14px}
  .rail-nav .station-label{font-size:0;margin-top:10px}
  .rail-nav .station-label b{display:block;font-size:9px;margin-right:0}
  .rail-nav .rail-engine{display:none}
}
@media print{.presentation-controls{display:none!important}}
@media(max-width:800px){.process-legend{top:28px;bottom:auto;font-size:8px;gap:8px}.in-explorer .process-legend{top:64px;bottom:auto}.process-legend small{font-size:7px}}

/* Compact key for the schematic routes, local to each model viewport. */
.flow-legend{position:absolute;left:18px;right:18px;bottom:62px;display:flex;flex-wrap:wrap;justify-content:center;gap:7px 14px;pointer-events:none;z-index:8;font:10px Manrope,Arial,sans-serif;color:#e6eef1}
.flow-legend[hidden],.flow-legend span[hidden]{display:none}
.flow-legend span{display:flex;align-items:center;gap:6px;padding:5px 8px;background:#101b23e8;border-radius:5px}
.flow-legend span:before{content:'';width:15px;height:3px;background:var(--flow);border-radius:2px}
.in-explorer .flow-legend{bottom:105px}
@media(max-width:800px){.flow-legend{left:5px;right:5px;font-size:8px;gap:4px;bottom:48px}.flow-legend span{padding:4px}.in-explorer .flow-legend{bottom:102px}}

.piston-legend .piston-stroke{flex-basis:100%;justify-content:center;background:transparent;color:#c5d3da;font-size:10px}
.piston-legend .piston-stroke:before{display:none}

/* One circuit at a time, with its start and destination stated explicitly. */
.flow-lesson{position:absolute;z-index:8;left:50%;transform:translateX(-50%);bottom:62px;width:min(480px,calc(100% - 24px));padding:10px 13px;border:1px solid #aec5cb25;border-radius:12px;background:#101b23ed;text-align:center;color:#e7eeed;pointer-events:auto}
.flow-lesson[hidden]{display:none}
.flow-tabs{display:flex;gap:4px;margin-bottom:8px}
.flow-tabs button{flex:1;border:0;border-radius:6px;padding:7px 4px;background:transparent;color:#9eafb6;font:10px Manrope,Arial,sans-serif;cursor:pointer}
.flow-tabs button[aria-pressed=true]{background:#d6ab6430;color:#f0d9ad}
.flow-tabs button:focus-visible{outline:2px solid #e9bd70;outline-offset:2px}
.flow-route{display:block;font:600 12px Manrope,Arial,sans-serif}
.flow-copy{font:10px/1.45 Manrope,Arial,sans-serif;margin:5px 0 0;color:#b7c7ce}
.in-explorer .flow-lesson{bottom:100px}
.piston-legend .piston-explanation{background:transparent;flex-basis:100%;justify-content:center;color:#aabdc6}
.piston-legend .piston-explanation:before{display:none}
@media(max-width:800px){.flow-lesson{bottom:46px;padding:7px 9px;width:calc(100% - 14px)}.flow-tabs{margin-bottom:5px}.flow-tabs button{font-size:8px;padding:6px 2px}.flow-route{font-size:10px}.flow-copy{font-size:9px}.in-explorer .flow-lesson{bottom:94px}.piston-legend .piston-stroke{font-size:9px}}
