:root{--ink:#30323a;--muted:#666b78;--cream:#fffaf8;--mint:#dff5f6;--mint-deep:#59bcc5;--pink:#ff789a;--gold:#e9ad39;--lav:#8d83ca;--line:#e7dde2}*{box-sizing:border-box}body{background:radial-gradient(circle at 8% 13%,rgba(255,224,228,.72),transparent 25%),radial-gradient(circle at 91% 8%,rgba(210,244,247,.9),transparent 28%),var(--cream);color:var(--ink);font-family:"Source Sans 3",sans-serif;margin:0;min-height:100vh}main{margin:0 auto;max-width:1220px;padding:clamp(28px,5vw,66px) clamp(14px,3vw,34px) 38px}.hero{text-align:center}.eyebrow{color:#7c72b7;display:inline-block;font:900 .77rem/1.2 "Nunito",sans-serif;letter-spacing:.14em;text-transform:uppercase}.hero h1{font:900 clamp(2.4rem,6vw,5.3rem)/.96 "Nunito",sans-serif;letter-spacing:-.055em;margin:11px 0 14px}.hero h1 em{color:#dc6d8b;font-style:normal}.hero>p{color:var(--muted);font:600 clamp(1rem,2vw,1.18rem)/1.55 "Nunito",sans-serif;margin:0 auto;max-width:700px}.hero-pills{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:20px 0 30px}.hero-pills span{background:rgba(255,255,255,.82);border:1px solid var(--line);border-radius:999px;box-shadow:0 5px 14px rgba(48,50,58,.04);font:800 .82rem "Nunito",sans-serif;padding:8px 12px}.game-shell{background:#fff;border:1px solid rgba(209,204,235,.8);border-radius:26px;box-shadow:0 22px 58px rgba(48,50,58,.1);overflow:hidden;position:relative}.toolbar{align-items:center;background:rgba(255,255,255,.96);border-bottom:1px solid var(--line);display:flex;gap:16px;justify-content:space-between;padding:13px 16px}.game-stats{display:flex;flex-wrap:wrap;gap:8px}.game-stats span{background:#f7f4f6;border-radius:11px;color:#797b85;font:900 .65rem "Nunito",sans-serif;letter-spacing:.08em;min-width:74px;padding:7px 10px;text-align:center}.game-stats strong{color:var(--ink);display:block;font-size:1rem;letter-spacing:0;margin-top:1px}.game-stats span:nth-child(3) strong{color:#58aeb8;letter-spacing:.12em}.tools{display:flex;flex-wrap:wrap;gap:7px;justify-content:flex-end}.tools button,.mobile-controls button{background:#fff;border:1px solid #ddd3d8;border-radius:10px;color:var(--ink);cursor:pointer;font:900 .78rem "Nunito",sans-serif;padding:9px 11px}.tools button:hover,.tools button:focus-visible,.mobile-controls button:hover,.mobile-controls button:focus-visible{background:#fff2d9;border-color:#e2bc65;outline:none}.flight-board{background:#bcebf0;isolation:isolate;min-height:clamp(350px,53vw,570px);overflow:hidden;position:relative;touch-action:none}.flight-board canvas{display:block;height:clamp(350px,53vw,570px);width:100%}.phase-chip{background:rgba(255,255,255,.88);border:1px solid rgba(255,255,255,.85);border-radius:999px;box-shadow:0 7px 18px rgba(47,81,100,.12);font:900 .75rem "Nunito",sans-serif;left:15px;padding:7px 11px;pointer-events:none;position:absolute;top:14px}.flight-message{color:#fff;font:900 clamp(1.3rem,4vw,2.2rem) "Nunito",sans-serif;left:50%;opacity:0;pointer-events:none;position:absolute;text-shadow:0 3px 10px rgba(36,55,72,.24);top:18%;transform:translate(-50%,-8px) scale(.9);transition:.16s;white-space:nowrap}.flight-message.show{opacity:1;transform:translate(-50%,0) scale(1)}.flight-message.good{color:#fff5b9}.flight-message.bad{color:#ffe0e8}.mobile-controls{bottom:14px;display:flex;gap:8px;position:absolute;right:14px}.mobile-controls button{background:rgba(255,255,255,.88);font-size:1.15rem;height:48px;padding:0;width:52px}.layer{align-items:center;background:rgba(33,38,54,.42);display:flex;inset:0;justify-content:center;opacity:0;padding:18px;pointer-events:none;position:absolute;transition:.2s;z-index:6}.layer.show{opacity:1;pointer-events:auto}.modal{background:rgba(255,255,255,.97);border:1px solid rgba(255,255,255,.9);border-radius:24px;box-shadow:0 26px 70px rgba(35,42,61,.24);max-width:590px;padding:clamp(23px,5vw,38px);text-align:center;width:100%}.modal-icon{font-size:2.8rem}.modal-kicker{color:#7c72b7;display:block;font:900 .72rem "Nunito",sans-serif;letter-spacing:.12em;margin:7px 0;text-transform:uppercase}.modal h2{font:900 clamp(1.55rem,4vw,2.3rem)/1.08 "Nunito",sans-serif;margin:0 0 10px}.modal p{color:var(--muted);font:600 1rem/1.55 "Nunito",sans-serif;margin:0 auto 17px;max-width:500px}.modal-steps{display:grid;gap:8px;grid-template-columns:repeat(3,1fr);margin:19px 0}.modal-steps span{background:#f7f4f6;border-radius:13px;font:800 .79rem/1.3 "Nunito",sans-serif;padding:11px 7px}.modal-steps b{display:block;font-size:1.35rem;margin-bottom:4px}.start-btn{background:linear-gradient(135deg,#363944,#555969);border:0;border-radius:13px;box-shadow:0 10px 24px rgba(48,50,58,.18);color:#fff;cursor:pointer;font:900 .95rem "Nunito",sans-serif;padding:13px 22px}.start-btn:hover,.start-btn:focus-visible{box-shadow:0 12px 26px rgba(48,50,58,.25);outline:3px solid rgba(255,120,154,.25);transform:translateY(-1px)}.final-score{align-items:baseline;color:#db6e8b;display:flex;gap:7px;justify-content:center;margin:10px 0}.final-score strong{font:900 3.6rem "Nunito",sans-serif}.final-score span{font:800 1rem "Nunito",sans-serif}.record-line{color:#8a79ba;font:900 .9rem "Nunito",sans-serif;margin:-5px 0 17px}footer{align-items:center;color:#777b85;display:flex;flex-wrap:wrap;font-size:.9rem;gap:14px;justify-content:center;padding:28px 16px 36px}footer a{color:inherit}.sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);white-space:nowrap}@media(max-width:760px){main{padding-left:10px;padding-right:10px}.game-shell{border-radius:19px}.toolbar{align-items:stretch;flex-direction:column}.game-stats{display:grid;grid-template-columns:repeat(4,1fr)}.game-stats span{min-width:0;padding:7px 4px}.tools{justify-content:center}.tools button{flex:1}.modal-steps{grid-template-columns:1fr}.modal-steps span{align-items:center;display:flex;gap:9px;text-align:left}.modal-steps b{margin:0}.teacher-guide{margin-left:0;margin-right:0}}@media(max-width:470px){.hero-pills span:nth-child(1),.hero-pills span:nth-child(4){display:none}.flight-board,.flight-board canvas{height:420px;min-height:420px}.tools button{font-size:.7rem;padding:8px 6px}.phase-chip{font-size:.66rem}.mobile-controls button{height:44px;width:48px}}

/* Keep the pilot dialog scroll inside the overlay, not the clipped game shell. */
.layer { overflow-y: auto; align-items: flex-start; }
.layer .modal { flex-shrink: 0; margin-block: auto; }
