/* Quest presentation layer: gameplay stays independent of the production app. */
:root{--ink:#0c1e28;--gold:#ffbb52;--green:#42cb9a}
body{background:radial-gradient(circle at 50% -10%,#294e50 0,#102830 43%,#0b1b23 100%);color:#eaf4ee}
.app{max-width:1190px}
.brandbar{color:#e8f8ed;padding:16px 1px}
.brandbar small{color:#aed6c9}
.brandmark{letter-spacing:.12em}
.brandmark b{border:1px solid #e3bb78;background:#183d41;color:#ffcc71;box-shadow:0 0 18px #f6b55d47}
.hero{min-height:415px;border:1px solid #639d87;border-radius:25px;background:#152a31;box-shadow:0 20px 70px #040d147d}
.hero-art{background:url('assets/school-hall.png') center center / cover no-repeat;opacity:1}
.hero-art:after{display:none}
.hero:after{background:linear-gradient(90deg,#081c29ec 0%,#0b2538c7 34%,#101f2888 59%,#07181c27 100%),linear-gradient(0deg,#111e2a74,transparent 48%)}
.hero-inner{max-width:760px;padding:45px 53px}
.hero h1{font-size:clamp(2.45rem,6.1vw,4.7rem);line-height:1.16;text-shadow:0 5px 24px #06151edd}
.hero p{font-size:1.08rem;max-width:495px;color:#f5f5e9;text-shadow:0 2px 10px #06151dcc}
.hero-stamp{height:82px;width:82px;border-color:#ffcd75a8;background:#0c253a8c;box-shadow:0 0 24px #ffb7454d;font-size:.72rem}
.tag{font-size:.78rem;background:#0d273cce;border-color:#f8b85c99;color:#ffdc92;box-shadow:inset 0 0 0 1px #ffffff16}
.intro-grid{grid-template-columns:minmax(0,1.07fr) minmax(0,.93fr);margin-top:-27px;position:relative;z-index:2;align-items:stretch}
.entry-card{order:-1;background:linear-gradient(143deg,#fcf5e3,#fffefa 60%);border:2px solid #f7bd62;box-shadow:0 21px 45px #0006;padding:29px 33px;color:#1f3438}
.entry-card .section-kicker{color:#a46b19}
.entry-card h2{font-size:clamp(1.7rem,4vw,2.2rem);color:#192f34}
.entry-card .muted{color:#506267}
.entry-card .field-label{color:#203b3c}
.entry-card .footnote{color:#536a69}
.paper{background:#17313adf;border:1px solid #678a7d;color:#f6f6e9;box-shadow:0 14px 36px #0004}
.paper h2{color:#fff}
.paper .section-kicker{color:#ffd084}
.paper .footnote{color:#b6cec7}
.how b{background:#34534b;color:#ffd28b}
.primary{position:relative;background:linear-gradient(110deg,#ffdc83,#ffad3e);box-shadow:0 7px 0 #a65620,0 14px 26px #0c1c2580;border:1px solid #fff2c1;color:#182629;text-shadow:0 1px #ffffff63;transition:transform .16s,box-shadow .16s,filter .16s}
.primary:not(:disabled):hover{transform:translateY(-3px);box-shadow:0 10px 0 #a65620,0 19px 31px #0c1c2580}
.primary:not(:disabled):active{transform:translateY(4px);box-shadow:0 2px 0 #a65620,0 7px 15px #0c1c2580}
.entry-card .primary{font-size:1.17rem;min-height:61px;margin-top:20px}
.hud{border:1px solid #4f756e;background:linear-gradient(95deg,#09222c,#163e43);box-shadow:0 12px 28px #0005}
.hud small{color:#c9e2d9;font-size:.74rem}
.hud strong{font-size:1.25rem}
.hud strong.gold{color:#ffcc6e;text-shadow:0 0 16px #ffae4270}
.mission-header{min-height:223px;background:#122835;border:1px solid #54857b;box-shadow:0 15px 40px #0007;padding:29px 35px}
.mission-header:before{content:"";position:absolute;z-index:-1;inset:0;background:linear-gradient(90deg,#071c2cf5,#0b2638da 46%,#16312e61),url('assets/school-hall.png') center center / cover}
.mission-header:after{content:"✦";opacity:.27;color:#ffd37d;right:4%;top:-23px;font-size:11rem;text-shadow:0 0 40px #e8b456}
.mission-header h1{font-size:clamp(2rem,5vw,3.4rem);color:#fff;text-shadow:0 4px 15px #021823}
.mission-header p{font-size:1rem;color:#e5f5ec;font-weight:800}
.quest-track{display:flex;align-items:stretch;gap:7px;margin:0 0 17px}
.quest-node{flex:1;display:flex;align-items:center;gap:9px;min-width:0;border:1px solid #567469;background:#153139;color:#c1d9cd;border-radius:12px;padding:10px 11px;font-weight:800;font-size:.87rem;line-height:1.3}
.quest-node b{display:grid;place-items:center;flex:none;width:25px;height:25px;border-radius:50%;border:1px solid #779287;color:#d0ddd5;font-size:.8rem}
.quest-node.active{border-color:#ffcc78;background:linear-gradient(110deg,#87551e,#312f2a);color:#fff7e4;box-shadow:0 0 22px #feb34642}
.quest-node.active b{color:#1d2d30;border:0;background:#ffd277}
.quest-node.done{background:#20473f;color:#cbf3d7;border-color:#459473}
.quest-node.done b{border:0;background:#42a77e;color:#fff}
.game-card,.map-card{background:#fffefa;color:#243b40;box-shadow:0 16px 39px #0005;border:1px solid #d3e0d5}
.game-card{min-height:316px}
.game-card.brief{background:radial-gradient(circle at 100% 0%,#2f696067,transparent 45%),linear-gradient(135deg,#14383d,#0e2631);border:1px solid #69a494;color:#edf7ed;box-shadow:inset 0 0 0 1px #ffffff12,0 16px 40px #0007}
.game-card.brief h2{color:#fff;font-size:clamp(1.65rem,4vw,2.3rem)}
.game-card.brief p{color:#dcefe7;font-size:1.04rem}
.game-card.brief .puzzle-text{background:#ffffff12;border-left-color:#ffc575;color:#f5eedf}
.game-card.brief .phase-note{color:#ffcf80}
.game-card.brief .primary{margin-top:23px}
.game-card .phase-note{font-size:.84rem;color:#13745e}
.game-card h2{font-size:clamp(1.5rem,4vw,2.1rem)}
.map-card{background:#ecf5e9;border:1px solid #8cb7a1}
.map-card h2{color:#174b42}
.campus{box-shadow:inset 0 0 0 4px #fff;outline:2px solid #add1b6;outline-offset:2px}
.building.active{transform:scale(1.08);box-shadow:0 0 0 5px #ffbf4988,0 8px 17px #92662a55}
.player-dot{animation:beacon 2s ease-in-out infinite}
.map-status{background:#194b3c;color:#f1fbe9;font-size:.88rem}
.mini.now{background:#ffe0a3;color:#644010}
.mini.done{background:#bce5c9}
.progress-track{height:17px;background:#d2e4d6}
.progress-fill{background:linear-gradient(90deg,#26a577,#ffc05a);box-shadow:0 0 14px #ffaf57a8}
.result-grid strong{color:#0b735a}
.modal{border:2px solid #e6b76b;box-shadow:0 20px 85px #06141cf2}
.medal{box-shadow:0 0 0 11px #faf2d5,0 0 38px #fcb344bd;animation:beacon 1.8s ease-in-out infinite}
.points-toast{position:fixed;z-index:30;left:50%;top:20%;transform:translateX(-50%);min-width:180px;text-align:center;padding:15px 24px;background:#ffcd68;color:#182c2e;border:3px solid #fff4bf;border-radius:99px;font-size:1.6rem;font-weight:900;letter-spacing:.03em;box-shadow:0 13px 50px #051a29b3,0 0 36px #ffba48b8;pointer-events:none;animation:scorepop 1.45s ease-out forwards}
@keyframes beacon{50%{box-shadow:0 0 0 10px #f3bc6579,0 0 24px #f6a64f8c}}
@keyframes scorepop{0%{opacity:0;transform:translate(-50%,25px) scale(.75)}20%{opacity:1;transform:translate(-50%,0) scale(1.12)}75%{opacity:1}100%{opacity:0;transform:translate(-50%,-55px) scale(1)}}
@media(max-width:740px){
 body{background:linear-gradient(180deg,#102d33,#122b30 400px,#102630)}
 .app{padding:0 13px 60px}
 .brandbar{padding:11px 1px}
 .hero{min-height:245px;border-radius:18px;background:#10222b}
 .hero-inner{padding:30px 21px 46px}
 .hero h1{font-size:clamp(2.04rem,8vw,3.5rem);line-height:1.17}
 .hero p{font-size:.9rem;max-width:310px;line-height:1.55}
 .hero-stamp{height:52px;width:52px;top:11px;right:10px;font-size:.48rem}
 .hero .tag{font-size:.65rem;padding:5px 8px;margin-bottom:10px}
 .intro-grid{margin-top:-20px;gap:14px}
 .entry-card{padding:21px 20px;border-radius:18px}
 .entry-card h2{font-size:1.68rem}
 .paper{padding:21px 19px}
 .mission-header{padding:23px 21px;min-height:182px;margin-bottom:13px}
 .mission-header h1{font-size:2.15rem}
 .mission-header p{font-size:.9rem}
 .quest-track{gap:5px;margin-bottom:12px}
 .quest-node{display:block;text-align:center;padding:7px 2px;font-size:.71rem}
 .quest-node b{margin:0 auto 4px;height:22px;width:22px}
 .game-card,.map-card{padding:20px}
 .game-card.brief{min-height:290px}
 .map-card{order:initial}
 #app[data-phase="travel"] .map-card,#app[data-phase="radar"] .map-card{order:-1}
 .hud{margin:0 -13px 12px;border-left:0;border-right:0;border-radius:0}
 .hud strong{font-size:1.04rem}
 .hud small{font-size:.7rem}
}
@media(max-width:390px){.quest-node{font-size:.65rem}.hero h1{font-size:2.02rem}}
@media(prefers-reduced-motion:reduce){.player-dot,.medal,.points-toast{animation:none}}

/* Stacked, legible school floor plan. It models a sample school, not a real campus. */
.game-layout{display:flex;flex-direction:column;gap:16px}
.game-layout .game-card,.game-layout .map-card{width:100%}
.game-layout .map-card{order:initial}
#app[data-phase="travel"] .game-layout .map-card,
#app[data-phase="radar"] .game-layout .map-card{order:-1}
.map-card{background:#f5f2e6;padding:26px 30px}
.map-heading{display:flex;justify-content:space-between;gap:12px;align-items:end}
.map-heading h2{margin:0;color:#1b403f;font-size:1.65rem}
.map-heading .section-kicker{margin-bottom:2px}
.map-key{font-size:.85rem;font-weight:900;color:#355b53;white-space:nowrap}
.map-card .map-intro{margin:9px 0 17px;font-size:.98rem;color:#435d5b}
.school-plan{display:grid;gap:0;padding:2px 0 0}
.floor-section{background:#fffefd;border:2px solid #9bb1aa;border-radius:13px;padding:13px 15px;box-shadow:0 7px 22px #34494114;transition:border .25s,box-shadow .25s}
.floor-section.current-floor{border-color:#15916b;box-shadow:0 0 0 4px #55c49a4d,0 9px 22px #23433326}
.floor-section.target-floor{background:#fff9ed}
.floor-heading{display:flex;align-items:center;gap:10px;margin-bottom:9px;color:#526862;font-size:.84rem;font-weight:800}
.floor-heading strong{display:grid;place-items:center;width:40px;height:31px;border-radius:7px;background:#1d3d44;color:#fff;font-size:.99rem}
.floor-rooms{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.floor-room{display:flex;align-items:center;justify-content:space-between;gap:3px;min-height:48px;padding:8px 11px;background:#edf0eb;border:2px solid #afbeb5;border-radius:7px;font-size:.92rem;font-weight:900;color:#274140}
.floor-room.target-room{border:2px solid #f0a54a;background:#ffedc2;color:#624019}
.floor-room.player-room{outline:3px solid #47be92;outline-offset:1px}
.here-marker,.target-marker{flex:none;border-radius:99px;padding:2px 6px;white-space:nowrap;font-size:.7rem;font-weight:900;background:#168963;color:#fff}
.target-marker{background:#b77520}
.hallway{display:flex;gap:7px;align-items:center;margin:8px 0;min-height:42px;padding:4px 7px;border:2px dashed #9baea1;border-radius:8px;background:#e6e8df;color:#435f54;font-size:.81rem;font-weight:900}
.stairs{display:inline-flex;align-items:center;gap:7px;border-radius:5px;background:repeating-linear-gradient(0deg,#97afa4 0 2px,#dce7da 2px 5px);border:1px solid #769c8b;padding:4px 8px;white-space:nowrap;color:#174b44}
.hallway-label{flex:1;text-align:center}
.hallway b,.stairs b{color:#067451;border-radius:6px;background:#fff;padding:2px 5px;font-size:.74rem;white-space:nowrap}
.hall-arrow{font-size:1.15rem;color:#398267}
.floor-connector{height:37px;width:82px;margin:0 0 0 20px;border-left:5px solid #a2bdb0;display:flex;align-items:center;justify-content:center;background:#e8efe7;color:#416c58;font-size:.73rem;font-weight:900}
.map-card .map-status{margin-top:18px}
.map-caption{margin:8px 0 0!important;font-size:.9rem!important;font-weight:800;color:#405c53!important}
.travel-dock{position:fixed;z-index:10;left:50%;bottom:0;transform:translateX(-50%);width:min(760px,100%);padding:11px 18px max(14px,env(safe-area-inset-bottom));border:1px solid #d7a969;border-bottom:0;border-radius:16px 16px 0 0;background:#102c34f5;color:#fff;box-shadow:0 -11px 40px #0b1a25bb;text-align:center;backdrop-filter:blur(9px)}
.travel-dock span{display:block;margin-bottom:6px;font-size:.86rem;font-weight:900;color:#ffdb99}
.travel-dock .primary{width:100%;min-height:51px;font-size:1.03rem}
.travel-dock small{display:block;margin-top:8px;font-weight:700;color:#d2e6d9;font-size:.76rem}
#app[data-phase="travel"]{padding-bottom:180px}
@media(max-width:740px){
 .map-card{padding:17px 15px}
 .map-heading h2{font-size:1.4rem}
 .map-key{font-size:.7rem}
 .map-card .map-intro{font-size:.89rem;line-height:1.55}
 .floor-section{padding:10px}
 .floor-room{min-height:48px;font-size:.82rem;padding:6px}
 .here-marker,.target-marker{font-size:.62rem;padding:2px 4px}
 .floor-connector{height:30px}
 .game-layout .map-card{order:initial}
 #app[data-phase="travel"] .game-layout .map-card,
 #app[data-phase="radar"] .game-layout .map-card{order:-1}
 .travel-dock{border-radius:14px 14px 0 0;padding:9px 13px max(12px,env(safe-area-inset-bottom))}
}
@media(max-width:370px){.floor-room{font-size:.76rem}.here-marker,.target-marker{font-size:.57rem}.map-key{font-size:.61rem}}

/* A fictional overhead campus map with a moving player pin. */
.quest-map{position:relative;width:min(100%,540px);aspect-ratio:5/7;margin:18px auto 10px;overflow:hidden;border:6px solid #e8eddf;border-radius:21px;background:#d8ebd8;box-shadow:0 0 0 1px #91aa9f,0 15px 30px #37534e33}
.quest-map-svg{display:block;width:100%;height:100%}
.quest-map-svg text{font:900 21px system-ui,sans-serif;fill:#234c4c;paint-order:stroke;stroke:#fff9e9;stroke-width:4px;stroke-linejoin:round}
.quest-map-svg text.roomtext{font-size:18px;fill:#24675b}
.quest-map-svg text.entrytext{font-size:17px;fill:#3e6562}
.quest-map-svg text.fieldtext{font-size:16px;fill:#2d6b52}
.walker-pin,.destination-pin{position:absolute;z-index:3;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;pointer-events:none;white-space:nowrap}
.walker-pin{transition:left .58s cubic-bezier(.22,.79,.23,1),top .58s cubic-bezier(.22,.79,.23,1)}
.walker-pin b,.destination-pin b{display:grid;place-items:center;width:37px;height:37px;border:3px solid white;border-radius:50%;background:#db5f41;color:#fff;font-size:1.5rem;line-height:1;box-shadow:0 3px 15px #183837a3,0 0 0 8px #db5f4160}
.walker-pin b{font-size:1.1rem}
.destination-pin b{background:#ecae3e;color:#fff8d3;box-shadow:0 0 0 7px #f0c05570,0 0 23px #ffb638;animation:destination-glow 2s ease-in-out infinite}
.walker-pin span,.destination-pin span{margin-top:5px;border-radius:6px;background:#122e35;color:#fff;padding:2px 7px;font-size:.76rem;font-weight:900;box-shadow:0 2px 8px #152b3980}
.destination-pin span{background:#72521f}
.map-compass{position:absolute;top:13px;right:13px;color:#264f4c;background:#fff8e5d9;padding:4px 9px;border:1px solid #aac1b2;border-radius:7px;font-size:.8rem;font-weight:900}
.map-card .map-intro{margin-bottom:6px}
.map-card .map-caption{margin-top:9px!important}
@keyframes destination-glow{50%{box-shadow:0 0 0 12px #f0c05532,0 0 32px #ffb638}}
@media(max-width:740px){.quest-map{border-width:4px;margin:14px auto 8px}.walker-pin b,.destination-pin b{width:31px;height:31px;font-size:1.15rem}.walker-pin span,.destination-pin span{font-size:.69rem}.quest-map-svg text{font-size:21px}}
@media(prefers-reduced-motion:reduce){.walker-pin{transition:none}.destination-pin b{animation:none}}

/* Display mode is local to this browser. The map and game state are shared. */
.theme-toggle{margin-left:auto;padding:8px 12px;min-height:42px;border:1px solid #91b6a4;border-radius:10px;background:#1d403f;color:#f6f7e7;font-size:.89rem;font-weight:900;white-space:nowrap}
.theme-toggle:hover,.theme-toggle:focus-visible{outline:2px solid #ffce7b;outline-offset:2px}
.brandbar small{margin-left:auto;margin-right:16px}
html[data-theme="light"] body{background:linear-gradient(165deg,#fcfdfa,#edf3f5 56%,#f8faf9);color:#24363b}
html[data-theme="light"] .brandbar{color:#1a373d}
html[data-theme="light"] .brandbar small{color:#59736e}
html[data-theme="light"] .brandmark b{background:#285955;color:#fff5d8;box-shadow:none}
html[data-theme="light"] .theme-toggle{background:#fff;color:#225352;border-color:#a9c2ba}
html[data-theme="light"] .paper{background:#fff;border-color:#ceded6;color:#29403f;box-shadow:0 12px 30px #1f42431a}
html[data-theme="light"] .paper h2{color:#193a40}
html[data-theme="light"] .paper .section-kicker{color:#91631c}
html[data-theme="light"] .paper .footnote{color:#536f69}
html[data-theme="light"] .how b{background:#dceee7;color:#2b7061}
html[data-theme="light"] .hud{background:#fffefa;color:#203d41;border-color:#bdd7ce;box-shadow:0 9px 22px #253e421c}
html[data-theme="light"] .hud small{color:#54736d}
html[data-theme="light"] .hud strong.gold{color:#98602a;text-shadow:none}
html[data-theme="light"] .quest-node{background:#fff;color:#43615b;border-color:#bfd3c9}
html[data-theme="light"] .quest-node b{color:#49645f;border-color:#a4bdb3}
html[data-theme="light"] .quest-node.active{color:#533b19;background:#ffefc5;border-color:#d69d48;box-shadow:0 0 0 3px #f0c47842}
html[data-theme="light"] .quest-node.active b{background:#e8a749;color:#352612;border:0}
html[data-theme="light"] .quest-node.done{color:#276349;background:#e5f3e8;border-color:#a4d5b6}
html[data-theme="light"] .game-card.brief{background:linear-gradient(140deg,#fffdf3,#eef6ed);color:#263f40;border-color:#b3d2bd;box-shadow:0 14px 37px #23432f20}
html[data-theme="light"] .game-card.brief h2{color:#1b4544}
html[data-theme="light"] .game-card.brief p{color:#42635f}
html[data-theme="light"] .game-card.brief .puzzle-text{background:#e4f0e9;color:#2a4846}
html[data-theme="light"] .game-card.brief .phase-note{color:#ad731f}
html[data-theme="light"] .travel-dock{background:#fdfefaed;color:#233e3d;border-color:#b5ccb8;box-shadow:0 -9px 34px #23443a34}
html[data-theme="light"] .travel-dock span{color:#765016}
html[data-theme="light"] .travel-dock small{color:#516b60}
@media(max-width:740px){.brandbar small{display:none}.theme-toggle{margin-left:auto;font-size:.82rem;padding:7px 10px}.brandbar{gap:9px}}

/* The mobile start screen is a single readable column, including narrow phones. */
@media(max-width:740px){
 .intro-grid{display:flex;flex-direction:column;grid-template-columns:none;margin-top:-18px;gap:15px}
 .intro-grid .entry-card,.intro-grid .paper{width:100%;min-width:0;max-width:none;margin:0}
 .intro-grid .entry-card{order:0}
 .intro-grid .paper{order:1}
 .entry-card{padding:22px 21px}
 .entry-card h2{font-size:clamp(1.6rem,6vw,2rem);line-height:1.4}
 .entry-card .muted,.entry-card .field-label,.paper .how{font-size:1rem;line-height:1.65}
 .entry-card .text-input{min-height:56px;font-size:1rem}
 .entry-card .primary{min-height:58px;font-size:1.02rem}
 .paper .how{gap:13px}
}

/* Entry layout follows the production play screen: cover, guide, entry card. */
#app[data-phase="entry"]{max-width:780px}
#app[data-phase="entry"] .hero{min-height:0;aspect-ratio:720/318;max-width:720px;margin:auto;border:0;border-radius:28px}
#app[data-phase="entry"] .hero-inner{width:100%;max-width:none;margin:auto;padding:25px 38px;text-align:center}
#app[data-phase="entry"] .hero p{margin:0 auto;max-width:480px}
#app[data-phase="entry"] .hero-stamp{display:none}
#app[data-phase="entry"] .intro-grid{display:flex;flex-direction:column;align-items:center;gap:33px;max-width:720px;margin:42px auto 0}
#app[data-phase="entry"] .paper{order:0;display:block;width:100%;max-width:none;margin:0;padding:0 6px;background:transparent;border:0;border-radius:0;box-shadow:none;color:#263f49}
#app[data-phase="entry"] .paper h2{color:#263f49;font-size:1.2rem;margin:0 0 14px}
#app[data-phase="entry"] .paper .section-kicker{display:none}
#app[data-phase="entry"] .how{gap:9px}
#app[data-phase="entry"] .how li{gap:8px;align-items:start;font-size:1rem;font-weight:500}
#app[data-phase="entry"] .how b{display:inline;width:auto;height:auto;flex:none;border-radius:0;background:none;color:#bc7521;font-size:1rem;line-height:1.65}
#app[data-phase="entry"] .paper .footnote{color:#536b74;margin-top:12px}
#app[data-phase="entry"] .entry-card{order:1;width:min(100%,520px);max-width:520px;margin:0;padding:34px;border:2px solid #f3ad49;border-radius:25px;background:#fffdf8;box-shadow:0 0 0 6px #ecc79832,0 22px 55px #26394425}
#app[data-phase="entry"] .entry-card .section-kicker{display:none}
#app[data-phase="entry"] .entry-card h2{font-size:clamp(1.75rem,4vw,2.25rem)}
#app[data-phase="entry"] .entry-card h2:before{content:"✦";display:inline-grid;place-items:center;width:43px;height:43px;margin-right:12px;border:1px solid #f0b964;border-radius:50%;background:#fff4db;color:#9f651e;font-size:1.55rem;vertical-align:middle}
#app[data-phase="entry"] .entry-card .muted{margin-top:25px}
html[data-theme="dark"] #app[data-phase="entry"] .paper,html[data-theme="dark"] #app[data-phase="entry"] .paper h2{color:#e9f1e9}
html[data-theme="dark"] #app[data-phase="entry"] .paper .footnote{color:#bed1c7}
@media(max-width:740px){
 #app[data-phase="entry"]{padding:0 13px 60px}
 #app[data-phase="entry"] .hero{aspect-ratio:auto;min-height:225px;border-radius:20px}
 #app[data-phase="entry"] .hero-inner{padding:28px 18px;text-align:center}
 #app[data-phase="entry"] .hero h1{font-size:clamp(1.95rem,8vw,3rem)}
 #app[data-phase="entry"] .hero p{font-size:.92rem}
 #app[data-phase="entry"] .intro-grid{display:flex;flex-direction:column;gap:25px;margin:28px auto 0}
 #app[data-phase="entry"] .paper{order:0;width:100%;padding:0 5px}
 #app[data-phase="entry"] .how li{font-size:.96rem;line-height:1.6}
 #app[data-phase="entry"] .entry-card{order:1;width:100%;padding:26px 21px}
 #app[data-phase="entry"] .entry-card h2{font-size:clamp(1.62rem,7vw,2rem)}
 #app[data-phase="entry"] .entry-card h2:before{width:36px;height:36px;font-size:1.25rem;margin-right:8px}
}

/* Keep the sample's entry screen aligned with the production cover and form. */
#app[data-phase="entry"] .brandbar{display:none}
#app[data-phase="entry"] .hero{margin-top:30px;background:#13242c}
#app[data-phase="entry"] .hero-art{inset:0;background:url('assets/school-hall.png') center / cover;opacity:1}
#app[data-phase="entry"] .hero-art:after{display:none}
#app[data-phase="entry"] .hero:after{background:linear-gradient(90deg,#061923b9,#0b2028b3 47%,#0c1e2840)}
#app[data-phase="entry"] .hero-inner{position:relative;z-index:1}
#app[data-phase="entry"] .hero h1{font-family:Georgia,'Yu Mincho','Hiragino Mincho ProN',serif;font-size:clamp(2.7rem,7vw,4.5rem);letter-spacing:.08em;color:#fbe9b7;text-shadow:0 3px 0 #251912,0 9px 22px #000,0 0 22px #d6a354}
#app[data-phase="entry"] .hero p{font-size:1.03rem;color:#e2edf0}
#app[data-phase="entry"] .hero .tag{background:#efd3a72d;color:#ffe1a4;border:0;letter-spacing:.04em}
.title-emblem{display:inline-grid;place-items:center;width:1.05em;height:1.05em;margin-right:.18em;border:2px solid #e8bc6c;border-radius:50%;font:normal .68em system-ui,sans-serif;color:#ffd27c;vertical-align:.08em;box-shadow:0 0 0 4px #e4b86630,0 0 22px #f8ba658a}
#app[data-phase="entry"] .entry-card{position:relative}
#app[data-phase="entry"] .entry-card:before{content:"";position:absolute;top:105px;left:34px;width:52px;height:4px;background:#f5aa48;border-radius:5px}
#app[data-phase="entry"] .entry-card .muted{margin-top:30px}
#app[data-phase="entry"] .paper .footnote{font-size:.91rem;line-height:1.6}
@media(max-width:740px){
 #app[data-phase="entry"] .hero{min-height:226px;margin-top:16px}
 #app[data-phase="entry"] .hero:after{background:linear-gradient(90deg,#061923d9,#0b2028aa 70%,#0c1e2866)}
 #app[data-phase="entry"] .hero-inner{padding:25px 15px}
 #app[data-phase="entry"] .hero h1{font-size:clamp(2.05rem,9vw,3rem);letter-spacing:.035em;white-space:nowrap}
 #app[data-phase="entry"] .hero p{font-size:.94rem}
 #app[data-phase="entry"] .paper h2{font-size:1.23rem}
 #app[data-phase="entry"] .entry-card:before{top:93px;left:22px}
 #app[data-phase="entry"] .entry-card .muted{margin-top:28px}
}
@media(max-width:370px){#app[data-phase="entry"] .hero h1{font-size:1.98rem}.title-emblem{margin-right:.1em}}

/* GPS map */
.gps-map{position:relative;width:min(100%,520px);aspect-ratio:1;margin:16px auto;border:5px solid #fff9df;border-radius:18px;overflow:hidden;background:repeating-linear-gradient(0deg,transparent 0 44px,#adcbbb 45px 46px),repeating-linear-gradient(90deg,#d9eadb 0 44px,#adcbbb 45px 46px)}
.gps-map svg{position:absolute;inset:0;width:100%;height:100%}
.gps-ring{position:absolute;width:36%;height:36%;left:32%;top:32%;border:3px dashed #c68a35;border-radius:50%;background:#ffe8ae38}
.gps-origin{position:absolute;left:50%;top:53%;transform:translateX(-50%);font-weight:900;background:#fff;padding:2px 7px;border-radius:5px}
.gps-dot{position:absolute;transform:translate(-50%,-50%);width:37px;height:37px;display:grid;place-items:center;border:3px solid #fff;border-radius:50%;background:#d96040;color:#fff;box-shadow:0 0 0 7px #d9604055;transition:left .6s,top .6s}
.gps-north{position:absolute;right:12px;top:12px;font-weight:900;background:#fff;padding:3px 7px;border-radius:5px}
@media(prefers-reduced-motion:reduce){.gps-dot{transition:none}}
