/* Finite movement follows the reader's actions, in the Roost's existing palette. */
.atlas-picture{overflow:hidden;isolation:isolate;}
.map-route{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;}
.map-route path{fill:none;stroke:var(--drift-hi);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 2px 3px #121714);}
.map-pin[data-visited=true] b::after{content:' ✓';color:var(--signal-hi);}
.map-pin[data-visited=true][aria-pressed=true] b::after{color:var(--slough);}
.map-walk{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;padding:22px 28px;background:var(--slough);border-top:1px solid var(--edge);}
.map-walk>div:first-child{flex:1;min-width:200px;max-width:460px;}
.map-walk p{font:14px/1.5 var(--ledger);color:var(--signal-hi);margin:0 0 9px;}
.map-walk>div:last-child{display:flex;align-items:center;flex-wrap:wrap;gap:18px;}
.map-progress-track{height:3px;background:var(--edge);overflow:hidden;}
.map-progress-track span{display:block;height:100%;background:var(--signal-hi);width:0;transition:width .5s ease;}
.signal-section{scroll-margin-top:25px;}
.signal-station{display:grid;grid-template-columns:1fr 1.1fr;background:var(--plank);border:1px solid var(--edge);}
.signal-art{position:relative;display:flex;align-items:center;justify-content:center;min-height:590px;overflow:hidden;background:radial-gradient(ellipse at 50% 40%,#354735,#142019 68%);isolation:isolate;}
.signal-art::after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 74px,#f2ede106 74px 75px);pointer-events:none;z-index:-1;}
.signal-art>img{width:92%;max-height:470px;object-fit:contain;transform-origin:50% 10%;mix-blend-mode:screen;filter:sepia(.15);margin-bottom:75px;}
.signal-art-label{position:absolute;left:24px;top:24px;font:12px var(--ledger);color:var(--drift-hi);letter-spacing:.12em;}
.signal-ring{position:absolute;bottom:30px;left:50%;transform:translateX(-50%);background:var(--drift);border:1px solid var(--drift-hi);color:var(--slough);min-height:76px;width:min(280px,85%);padding:14px 20px;cursor:pointer;box-shadow:0 7px 0 #8a6524;}
.signal-ring span{display:block;font:24px var(--display);}.signal-ring small{display:block;font:12px var(--ledger);margin-top:7px;}
.signal-ring:active{transform:translate(-50%,4px);box-shadow:0 3px 0 #8a6524;}
.signal-rings{position:absolute;inset:0;pointer-events:none;display:grid;place-items:center;}
.signal-rings i{position:absolute;width:240px;height:240px;border:2px solid var(--drift-hi);border-radius:50%;opacity:0;}
.signal-panel{padding:clamp(24px,4vw,48px);min-width:0;}
.signal-choices{display:flex;flex-wrap:wrap;gap:8px;margin:22px 0 30px;}
.signal-choices button{display:flex;gap:8px;align-items:center;background:var(--slough);border:1px solid var(--edge);color:var(--paper);padding:12px 14px;min-height:48px;font:14px var(--ledger);cursor:pointer;}
.signal-choices button>span{color:var(--muted);font-size:11px;}
.signal-choices [aria-pressed=true]{background:var(--signal-hi);border-color:var(--signal-hi);color:var(--slough);}
.signal-choices [aria-pressed=true]>span{color:var(--slough);}
.signal-panel h3{font-size:clamp(25px,2.7vw,37px);min-height:2.3em;}
.signal-pattern{font:700 16px var(--ledger);color:var(--drift-hi);margin:18px 0;}
.signal-instruction{color:var(--muted);font-size:17px;}
.signal-dots{display:flex;flex-wrap:wrap;gap:10px;margin:26px 0 15px;min-height:20px;}
.signal-dots i{width:18px;height:18px;border:1px solid var(--drift);border-radius:50%;transition:background .2s,transform .2s;}
.signal-dots i[data-filled=true]{background:var(--drift-hi);transform:scale(1.1);}
.signal-dots i[data-extra=true]{border-style:dashed;background:var(--paper);}
.signal-actions{display:flex;gap:10px;flex-wrap:wrap;margin:22px 0;}
.signal-tap{display:none;}
.signal-actions button:not(.btn){padding:12px 14px;min-height:48px;border:1px solid var(--edge);color:var(--paper);background:var(--slough);font:14px var(--ledger);cursor:pointer;}
.signal-feedback{min-height:90px;margin:0;padding:16px 18px;border-left:3px solid var(--signal-hi);background:var(--slough);font-size:17px;}
.signal-feedback[data-result=correct]{color:var(--signal-hi);}
.signal-progress{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-top:18px;font:12px/1.6 var(--ledger);color:var(--muted);}
.signal-note{font:12px/1.6 var(--ledger);color:var(--muted);margin-top:15px;}
@media(prefers-reduced-motion:no-preference){
 html[data-roost-motion=on] :is(.entry-grid>a,.record-card,.book-resource-grid>a,.discovery-stops>a){transition:transform .25s,border-color .25s,box-shadow .25s;}
 html[data-roost-motion=on] .crew-lineup img{transition:transform .3s;}
 html[data-roost-motion=on] .record-dialog[open]{animation:record-arrival .35s cubic-bezier(.2,.7,.2,1);}
 @keyframes record-arrival{from{opacity:.1;transform:translateY(20px) scale(.98)}to{opacity:1;transform:none}}
 @media(hover:hover){
  html[data-roost-motion=on] :is(.entry-grid>a,.record-card,.book-resource-grid>a,.discovery-stops>a):hover{transform:translateY(-5px);box-shadow:0 12px 22px #0003;}
  html[data-roost-motion=on] .crew-lineup>a:hover img{transform:translateY(-8px) rotate(-2deg);}
 }
}
html[data-roost-motion=off] :is([data-scroll-scene]>img,.guide-cover img,.map-progress-track span,.signal-dots i,.signal-ring){animation:none!important;transition:none!important;}
html[data-roost-motion=off] .guide-cover:hover img{transform:none;}
@media(max-width:900px){.signal-station{grid-template-columns:1fr 1fr;}.signal-panel{padding:25px;}.signal-art{min-height:520px;}.signal-choices{gap:6px;}.signal-choices button{padding:11px 9px;}}
@media(max-width:700px){.signal-station{grid-template-columns:1fr;}.signal-art{min-height:260px;}.signal-art>img{height:245px;width:80%;margin:22px 0 0;}.signal-art-label{font-size:10px;top:16px;}.signal-ring{display:none;}.signal-tap{display:inline-flex;}.signal-panel h3{min-height:0;}.map-walk{padding:20px;}.map-walk>div:first-child{max-width:none;}.signal-rings i{width:180px;height:180px;}}
@media(prefers-reduced-motion:reduce){.map-progress-track span,.signal-dots i{transition:none;}.signal-ring:active{transform:translateX(-50%);}}
