/* A map and a globe are the visual thread. All values are course palette tokens. */
.flight-slide .slide-content { padding:38px 64px 50px; }
.flight-heading>p {font-size:25px;color:var(--subtext);}
.world-stage {position:absolute;left:64px;right:64px;top:143px;height:404px;display:grid;grid-template-columns:700px 1fr;gap:28px;}
.view-caption {font-size:20px;color:var(--subtext);position:absolute;top:0;left:14px;}
.map-panel,.globe-panel {position:relative;min-width:0;}
.map-drawing {position:absolute;top:27px;left:0;width:700px;height:376px;}
.map-svg {--map-route-two:var(--ocean);height:100%;width:100%;display:block;}
.night .map-svg {--map-route-two:var(--ice-0);}
.globe-drawing {position:absolute;left:0;right:0;top:35px;height:320px;cursor:grab;touch-action:none;outline-offset:-6px;}
.globe-drawing:active {cursor:grabbing;}
.globe-svg {width:100%;height:100%;display:block;}
.globe-drawing canvas {position:absolute;inset:0;width:100%!important;height:100%!important;}
.globe-drawing.has-webgl>.globe-svg {visibility:hidden;}
.globe-labels {position:absolute;inset:0;pointer-events:none;}
.globe-labels span {position:absolute;transform:translate(-50%,-50%);font-size:23px;color:var(--ice-2);text-shadow:1px 1px 0 var(--space-1);}
.view-controls {position:absolute;top:508px;left:1004px;right:auto;bottom:auto;width:max-content;translate:-50% 0;display:flex;justify-content:center;gap:10px;}
#fp-explain>.slide-content>.view-controls {left:868px;top:572px;}
.flight-slide button {font:24px/1.15 var(--class-font);font-weight:400;color:var(--text);cursor:pointer;transition:background var(--motion-duration,.5s),transform var(--motion-duration,.5s);}
.view-controls button {font-size:19px;padding:6px 10px;background:transparent;border:1px solid var(--subtext);}
.flight-slide button:hover:not(:disabled) {transform:translateY(-2px);}
.flight-slide button:disabled {cursor:default;opacity:.55;}
.flight-slide button:focus-visible,.globe-drawing:focus-visible {outline:3px solid var(--gold);outline-offset:4px;}
.globe-curtain {position:absolute;inset:0;background:var(--ice-2);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:2;}
.night .globe-curtain {background:var(--space-0);}
.globe-curtain p {font-size:28px;margin:12px 0 6px;}
.cut-question {font:110px/1 'Paper Cuts 2',var(--class-font);color:var(--gold);-webkit-text-stroke:3px var(--day-ink);transform:rotate(8deg);}
.activity {position:absolute;top:568px;left:64px;right:64px;}
.route-legend,.activity-row {display:flex;align-items:center;gap:20px;justify-content:space-between;}
.route-legend {justify-content:flex-start;font-size:23px;margin-bottom:13px;}
.route-legend>span {display:flex;align-items:center;gap:10px;}
.route-legend i {display:inline-block;width:38px;height:0;border-top:4px solid var(--text);}
.route-legend .line-one {border-top-style:dashed;}
.route-legend .line-two {border-color:var(--ocean);}
.night .route-legend .line-two {border-color:var(--ice-0);}
.choices {display:flex;gap:14px;}
.choices button {padding:12px 28px;min-width:180px;background:transparent;border:2px solid var(--text);}
.choices button[aria-pressed='true'],.route-switch button[aria-pressed='true'] {background:var(--text);color:var(--ice-2);box-shadow:0 5px 0 var(--gold);}
.night .choices button[aria-pressed='true'],.night .route-switch button[aria-pressed='true'] {color:var(--space-0);}
.selection-status {position:absolute;right:0;bottom:10px;font-size:22px;color:var(--subtext);}
.action-button {background:var(--text);color:var(--ice-2)!important;border:2px solid var(--text);padding:12px 20px;}
.night .action-button {color:var(--space-0)!important;}
.quiet-button {background:transparent;border:0;border-bottom:1px solid var(--subtext);padding:8px 3px;}
.discussion-prompt {font-size:28px;line-height:1.35;white-space:nowrap;}
.discussion-activity .activity-row {min-height:54px;}
.discussion-activity [data-action="viewpoint"] {flex-shrink:0;}
.route-switch {display:flex;gap:9px;}
.route-switch button {font-size:22px;padding:11px 15px;background:transparent;border:1px solid var(--subtext);}
.measurement {margin-top:20px;font-size:26px;}
.measurement>p {color:var(--subtext);}
.measurement .distance-pair {display:flex;justify-content:space-between;gap:20px;align-items:center;}
.distance-pair strong {font-size:32px;}
.distance-pair .gap {font-size:26px;border-bottom:4px solid var(--gold);}
.flight-slide .explanation-stage {left:520px;right:64px;top:110px;height:500px;display:block;}
.explanation-stage .globe-drawing {top:0;height:460px;}
.explanation-stage .map-panel {display:none;}
.explanation-stage .globe-panel {height:100%;}

.explain-copy {position:absolute;left:76px;top:163px;width:440px;font-size:31px;line-height:1.55;}
.mini-label {font-size:22px;color:var(--subtext);}
.explain-copy>p {margin-top:18px;}
.explain-copy strong {font-weight:400;border-bottom:4px solid var(--gold);}
.explain-copy .core-claim {font-size:28px;margin-top:23px;}
.explain-copy .action-button {margin-top:22px;}
.explanation-note {top:631px;font-size:27px;}
.explanation-note p {margin:0;border-left:4px solid var(--gold);padding-left:18px;}
.transfer-activity .choices button {min-width:165px;}
.transfer-feedback {margin-top:18px!important;font-size:25px;max-width:1000px;}
.retry {position:absolute;right:0;top:67px;font-size:20px!important;}
.flight-slide [hidden] {display:none!important;}
.flight-slide svg text {font-family:var(--class-font);}
html.reduced-motion .flight-slide button {transition:none;}
@media print {
 .flight-slide .view-controls,.flight-slide button,.selection-status,.globe-curtain,.globe-labels {display:none!important;}
 .flight-slide .globe-drawing>.globe-svg {visibility:visible!important;}
 .flight-slide canvas {display:none!important;}
 .flight-slide .choices button {display:block!important;}
 .flight-slide .choices button {box-shadow:none;background:transparent;color:var(--text);}
 .flight-slide .activity {top:568px;}
}
html.print-pdf .globe-curtain {display:flex!important;}
/* Preserve recorded answers at full contrast; their lock is conveyed by text. */
.flight-slide .choices button:disabled {opacity:1;}
/* Concealed evidence is also absent from keyboard navigation, for every palette. */
.world-stage[data-scene='predict'] .globe-drawing,
.world-stage[data-scene='discuss'] .globe-drawing,
.world-stage[data-scene='predict'] .globe-panel>.view-caption,
.world-stage[data-scene='discuss'] .globe-panel>.view-caption {visibility:hidden;}
.view-controls[data-controls-kind='predict'],
.view-controls[data-controls-kind='discuss'] {display:none;}
.flight-slide .globe-curtain {background:transparent;}
@media print {
 .world-stage[data-scene='predict'] .globe-svg,
 .world-stage[data-scene='discuss'] .globe-svg {visibility:hidden!important;}
}

.interaction-hint {font-size:26px;color:var(--subtext);}

#fp-test .activity-row .route-legend {margin-bottom:0;}
#fp-test .measurement {margin-top:10px;}

/* A persistent viewport bypasses section fades; static hosts serve PDF/overview. */
.reveal .flight-live-globe {position:fixed;right:auto;margin:0;z-index:8;transform-origin:0 0;font-family:var(--class-font);}
.flight-live-globe[hidden] {display:none!important;}
.flight-live-globe .globe-labels span {font-size:var(--globe-label-size,23px);}
.globe-drawing.has-live-globe>.globe-svg {visibility:hidden;}
@media print {.flight-live-globe {display:none!important;}.flight-slide .explanation-note {top:631px;}}

/* Static fallback frames are reserved for overview/print while the live surface owns the image. */
html.flight-live .reveal:not(.overview) .world-stage .globe-drawing>.globe-svg {visibility:hidden;}

.section-fact {border-left:4px solid var(--ice-0);padding-left:17px;margin-bottom:20px;}
.section-fact.small {border-left-color:var(--gold);border-left-style:dashed;}
.section-fact p {margin-top:7px;font-size:30px;}

.section-controls {display:flex;gap:12px;}
.section-controls .action-button {font-size:22px;padding:12px 14px;}
.section-controls [aria-pressed="true"] {box-shadow:0 4px 0 var(--gold);}

/* One fragment reveals the question and its experiment in the same step. */
.latitude-step {position:absolute;inset:0;pointer-events:none;}
.latitude-control {position:absolute;left:1142px;top:181px;width:70px;display:flex;align-items:center;flex-direction:column;gap:9px;pointer-events:auto;color:var(--text);font-size:22px;}
.latitude-control label {white-space:nowrap;}
.latitude-control output {font-size:25px;color:var(--text);white-space:nowrap;}
.latitude-control input {writing-mode:vertical-lr;direction:rtl;width:22px;height:240px;margin:0;accent-color:var(--gold);cursor:ns-resize;touch-action:none;}
.latitude-control .latitude-extreme {font-size:18px;color:var(--subtext);}
.latitude-control input:focus-visible {outline:3px solid var(--gold);outline-offset:6px;}
@media print {.latitude-control {display:none!important;}}

.transfer-activity {top:548px;}
.transfer-activity .route-legend {margin-bottom:10px;}
.transfer-activity .transfer-feedback {font-size:23px;}
.transfer-activity .retry {top:103px;}
@media print {.flight-slide .transfer-activity {top:548px;}}

/* The closing slide reviews shared knowledge, independent of individual answers. */
.recap-cases {position:absolute;left:76px;right:76px;top:150px;display:grid;grid-template-columns:1fr 1fr;gap:58px;}
.recap-case h3 {margin:0;font-size:25px;color:var(--subtext);font-weight:400;}
.flight-slide .recap-map {display:block;width:100%;height:250px;padding:0;margin:12px 0 7px;border:0;background:transparent;color:inherit;}
.flight-slide .recap-map:hover {transform:none!important;}
.recap-map:hover .route-line {stroke-width:5;}
.recap-map .map-svg {overflow:hidden;}
.recap-case .route-legend {font-size:21px;gap:26px;margin-bottom:12px;}
.recap-case .route-legend i {width:30px;border-top-width:3px;}
.recap-result {font-size:30px;margin:0;}
.recap-principle {position:absolute;top:548px;left:76px;right:76px;border-top:2px solid var(--subtext);padding-top:20px;}
.recap-principle p {font-size:32px;line-height:1.3;margin:0 0 10px;}
.recap-principle strong {font-weight:400;border-bottom:4px solid var(--gold);}
.recap-footer {position:absolute;left:76px;right:200px;top:658px;display:flex;align-items:center;justify-content:flex-end;font-size:19px;line-height:1.2;color:var(--subtext);}
.recap-footer .quiet-button {font-size:20px;}
@media print {.flight-slide .recap-map {display:block!important;}.recap-footer {display:none!important;}}

/* Transfer: a large centered question map, then the shared map/globe layout. */
#fp-transfer:not(.transfer-open) .map-drawing {left:142px;top:-63px;width:868px;height:466px;}
#fp-transfer:not(.transfer-open) .globe-panel,
#fp-transfer:not(.transfer-open) .view-controls {visibility:hidden;pointer-events:none;}
.transfer-step {position:absolute;width:0;height:0;pointer-events:none;}

#fp-transfer .map-drawing {transform-origin:0 0;}

/* Recap: keep both case frames in place as maps give way to spheres. */
.recap-visual {position:relative;height:260px;margin:12px 0 7px;}
.flight-slide .recap-visual .recap-map {position:absolute;inset:0;height:100%;margin:0;}
.recap-visual .recap-globe {inset:0;height:100%;opacity:0;visibility:hidden;pointer-events:none;}
.recap-visual .recap-map,.recap-visual .recap-globe {transition:opacity var(--motion-duration,.5s) var(--motion-easing,ease-out),visibility 0s var(--motion-duration,.5s);}
.recap-spheres .recap-map {opacity:0;visibility:hidden;pointer-events:none;}
.recap-spheres .recap-globe {opacity:1;visibility:visible;pointer-events:auto;transition-delay:0s;}
#fp-reflect:not(.recap-spheres) .recap-map {transition-delay:0s;}
.recap-spheres .recap-case:first-child .route-legend>span:last-child,
.recap-spheres .recap-case:last-child .route-legend>span:first-child {text-decoration:underline;text-decoration-color:var(--gold);text-underline-offset:6px;}
@media print {.recap-spheres .recap-map {display:none!important;}}

/* Pages 1 and 5: the picked route answers its button on the map. Its gold halo
   fades in, then breathes; “一样长” lights both. Print never carries a pick. */
.map-svg .route-halo {opacity:0;stroke-opacity:.45;transition:opacity var(--motion-duration,.5s) var(--motion-easing,ease-out);}
.map-svg .route-line {transition:stroke-width var(--motion-duration,.5s) var(--motion-easing,ease-out);}
.map-drawing[data-pick] .route-halo {animation:route-breathe 2.4s ease-in-out infinite;}
.map-drawing[data-pick='1'] .halo-1,.map-drawing[data-pick='2'] .halo-2,.map-drawing[data-pick='equal'] .route-halo {opacity:1;}
.map-drawing[data-pick='1'] .route-1,.map-drawing[data-pick='2'] .route-2,.map-drawing[data-pick='equal'] .route-line {stroke-width:6;}
@keyframes route-breathe {0%,100% {stroke-opacity:.3;} 50% {stroke-opacity:.8;}}
.reduced-motion .map-svg .route-halo {animation:none;}
@media print {.map-svg .route-halo {display:none;}}
