/* Shared exam identity. Ruby is real text, including on small screens. */
ruby{ruby-position:over}rt{font-weight:800;letter-spacing:.12em;text-align:center}
.brand{letter-spacing:-.7px}.brand .brand-exam{font-family:"Hiragino Sans",sans-serif;font-size:18px;letter-spacing:-.05em;white-space:nowrap}.brand-exam rt{font-size:8px;color:var(--coral);letter-spacing:.2em}.brand-caption{margin-left:4px;padding-left:12px}
.home h1.exam-title{line-height:1.16;margin-top:25px;margin-bottom:25px}.exam-title rt{font-size:.25em;letter-spacing:.45em;color:var(--ink);text-shadow:none}
.start-actions{max-width:390px}
.result-card-top ruby rt{font-size:8px}.result-card-top ruby{margin-top:5px}.game-rules{border-left:3px solid var(--coral);padding:8px 0 8px 13px;margin:15px 0;font-size:11px;line-height:1.9}
body.flight-mode .site-footer{display:none}body.flight-mode #main{max-width:none;width:100%;min-height:calc(100svh - 82px)}
.flight-screen{max-width:1184px;padding:23px 30px 13px;margin:auto;animation:enter .3s ease both}.flight-topline{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:17px}.flight-topline h1{font-size:18px;font-weight:900}.flight-back,.flight-pause-button{border:1px solid var(--ink);background:var(--paper);min-height:39px;padding:7px 12px;font-size:10px;font-weight:700}.flight-pause-button:disabled{opacity:.4}.flight-pause-button:hover:enabled,.flight-back:hover{background:var(--yellow)}
.flight-hud{display:flex;background:var(--ink);color:#fff;align-items:center;border:2px solid var(--ink);padding:13px 18px;gap:30px}.flight-hud>div{display:flex;align-items:center;gap:12px}.flight-hud>div:first-child{margin-right:auto}.flight-hud>div>span{font-size:10px;color:#c7cbbd;white-space:nowrap}.flight-hud b{font:900 25px/1.1 ui-monospace,SFMono-Regular,monospace;min-width:22px;font-variant-numeric:tabular-nums}.flight-hud b>small{font:700 10px sans-serif;margin-left:5px}.flight-hud>div:nth-child(2)>b{color:var(--yellow)}
.flight-scene{height:min(660px,calc(100svh - 270px));min-height:390px;position:relative;isolation:isolate;perspective:850px;perspective-origin:50% 45%;overflow:hidden;background:radial-gradient(ellipse at 50% 39%,#1a4b50 0,#0b232b 36%,#060f18 84%);border:2px solid var(--ink);border-top:0;box-shadow:6px 7px 0 var(--ink);touch-action:manipulation;color:white}
.flight-horizon{position:absolute;top:44%;height:1px;left:10%;right:10%;background:#c7ffde28;box-shadow:0 0 55px 16px #78ffc71e;pointer-events:none}
.flight-floor,.flight-ceiling{position:absolute;left:-50%;width:200%;height:180%;top:47%;background-image:linear-gradient(#61c7ad33 1px,transparent 1px),linear-gradient(90deg,#61c7ad33 1px,transparent 1px);background-size:70px 70px;transform-origin:50% 0;transform:rotateX(66deg);mask-image:linear-gradient(transparent,black 35%);pointer-events:none}
.flight-ceiling{top:auto;bottom:56%;transform-origin:50% 100%;transform:rotateX(-70deg);opacity:.2;background-size:90px 90px}
.flight-world{position:absolute;inset:0;transform-style:preserve-3d;pointer-events:none}
.flight-card{position:absolute;left:50%;top:45%;pointer-events:auto;background:#fffeeaf5;color:#172823;border:2px solid #d6df98;box-shadow:0 3px 0 #050e11,0 0 24px #ecff9f12;padding:12px 16px;min-height:64px;text-align:center;backface-visibility:hidden;will-change:transform,opacity;transform-style:preserve-3d;outline-offset:5px;touch-action:manipulation;cursor:crosshair}.flight-card:hover{background:#fffab6;border-color:#fff34f;box-shadow:0 3px 0 #050e11,0 0 30px #f0ff5538}.flight-card:focus-visible{outline:4px solid #fff34f}
.flight-card-word{display:block;text-wrap:balance;font-size:var(--flight-font-size,22px);font-weight:800;line-height:1.6;letter-spacing:.025em;white-space:pre-wrap;word-spacing:.15em;overflow-wrap:anywhere}
.flight-help{font-size:11px;line-height:1.9;margin-top:17px;display:flex;justify-content:center;gap:7px;flex-wrap:wrap;color:#64685b}.flight-help>strong{color:var(--ink)}.flight-help>span{margin-left:8px}.flight-keyboard-help{margin-left:8px}
.flight-fx{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:5}
.flight-damage{box-shadow:inset 0 0 100px #e52b2838,6px 7px 0 var(--ink)}.flight-pause-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:30px;z-index:10;background:#07141c37}.flight-pause-paper{max-height:100%;overflow:auto;background:var(--paper);border:3px solid var(--ink);color:var(--ink);width:490px;max-width:100%;padding:31px 33px;box-shadow:7px 8px 0 var(--yellow);transform:rotate(-1deg);text-align:center}.flight-pause-caption{font-size:10px;letter-spacing:.08em;font-weight:800;color:#cf3c2c;border:1px solid currentColor;display:inline-block;padding:4px 7px;transform:rotate(-4deg)}.flight-pause-overlay{background:#06101792;backdrop-filter:blur(5px)}.flight-pause-paper{width:370px;padding:30px}.flight-pause-paper h2{font-size:28px;font-weight:900;margin:19px 0 13px}.flight-pause-paper p{font-size:12px;margin-bottom:24px}.flight-pause-paper .primary-button{font-size:18px;min-height:55px}.flight-pause-paper .text-button{font-size:11px;margin-top:13px}
.flight-results{padding-top:35px}.flight-result-score{font:900 100px/1.1 "Arial Black",Arial,sans-serif;text-align:center;margin:30px 0 20px;letter-spacing:-5px}.flight-result-score small{font:700 30px Arial,sans-serif;margin-left:5px;letter-spacing:-1px}.flight-result-score>span{display:block;letter-spacing:.1em;font:700 12px "Hiragino Sans",sans-serif;margin-top:8px}.flight-result-stats{display:flex;align-items:center;justify-content:center;gap:25px;font-size:11px;margin-top:25px}.flight-result-stats>span:first-child b{font:900 28px ui-monospace,monospace;margin-right:3px}

@media(max-width:720px){
  .brand .brand-exam{font-size:16px}.brand-exam rt{font-size:7px}.home h1.exam-title{font-size:clamp(53px,15.4vw,80px);margin-top:12px;margin-bottom:18px;line-height:1.25}
  .start-actions{grid-column:1/-1;grid-row:5;max-width:none;gap:14px;margin-top:1px}
  body.flight-mode #main{min-height:calc(100svh - 73px)}.flight-screen{padding:17px 15px 8px}.flight-topline{gap:8px;margin-bottom:13px}.flight-topline h1{font-size:13px}.flight-back,.flight-pause-button{font-size:9px;padding:6px 8px;min-height:36px}
  .flight-hud{padding:11px 12px;gap:13px}.flight-hud>div{gap:5px;flex-direction:column;align-items:center}.flight-hud>div:first-child{flex-direction:row;align-items:center;gap:7px}.flight-hud>div>span{font-size:8px}.flight-hud b{font-size:22px;line-height:1}.flight-hud b>small{font-size:8px;margin-left:2px}
  .flight-scene{height:calc(100svh - 260px);min-height:320px;max-height:660px;box-shadow:4px 5px 0 var(--ink)}.flight-card{padding:11px 12px;min-height:60px}.flight-card-word{font-size:var(--flight-font-size,18px);line-height:1.6}.flight-floor{background-size:48px 48px}
  .flight-help{font-size:9px;line-height:1.8;margin-top:12px;gap:3px}.flight-help>span{margin-left:2px}.flight-keyboard-help{display:none}.flight-pause-overlay{padding:23px 18px}.flight-pause-caption{font-size:8px;padding:4px 6px}.flight-pause-paper{padding:25px 22px}.flight-pause-paper h2{font-size:25px}.flight-results{padding-top:28px}.flight-result-score{font-size:85px;margin-top:25px}.flight-result-score small{font-size:25px}.flight-result-stats{gap:15px;font-size:10px}.flight-result-stats>span:first-child b{font-size:24px}
}
@media(max-width:360px){.brand .brand-exam{font-size:14px}.brand-exam rt{font-size:6px}.home h1.exam-title{font-size:50px}.flight-topline h1{font-size:11px}.flight-back,.flight-pause-button{padding:6px;font-size:8px}.flight-topline{gap:5px}.flight-hud{gap:10px;padding:10px}.flight-pause-overlay{padding:18px 15px}}
@media(prefers-reduced-motion:reduce){.flight-card{transition:none}.flight-floor,.flight-ceiling{opacity:.25}}
/* Survival mode: every correct decision counts, and three explosions end a run. */
.flight-survival-hud{gap:24px}.flight-survival-hud>div:first-child b{color:var(--yellow)}.flight-survival-hud #flight-lives{display:flex;gap:5px;font:900 25px/1 Arial,sans-serif;color:#ff907c}.flight-survival-hud #flight-lives .lost{color:#fff;opacity:.14}.flight-survival-hud #flight-level{font-size:21px;color:#bfffe0}.flight-survival-hud .flight-next-level{font-size:9px;color:#d1d4bb;border-left:1px solid #ffffff30;padding-left:18px;white-space:nowrap}.flight-card::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:3px;background:#809c54;transform-origin:left;transform:scaleX(var(--flight-remaining,1));pointer-events:none}.flight-scene[data-state="ending"] .flight-card:not(.missed){opacity:.2!important}
.flight-speed-notice{position:absolute;top:15px;left:50%;transform:translateX(-50%);color:#fff34f;background:#0c242ee8;border:1px solid #fff34f;font:900 17px/1.5 ui-monospace,monospace;padding:7px 18px;z-index:7;pointer-events:none;opacity:0;white-space:nowrap}.flight-speed-notice.show{animation:flight-speed-up 1.4s ease both}
.flight-resolution{position:absolute;pointer-events:none;width:1px;height:1px;color:#bfffe0;--effect-color:#a4ffd4;--effect-core:#f6fff4}.flight-resolution i{position:absolute;display:block;pointer-events:none}.flight-resolution .flight-effect-ring{width:70px;height:70px;left:-35px;top:-35px;border:3px solid var(--effect-color);border-radius:50%;animation:flight-ring .8s ease-out both;box-shadow:0 0 17px var(--effect-color)}.flight-resolution .flight-effect-core{left:-32px;top:-32px;width:64px;height:64px;background:var(--effect-core);clip-path:polygon(50% 0,61% 35%,100% 50%,61% 64%,50% 100%,39% 64%,0 50%,39% 35%);animation:flight-core .65s ease-out both;filter:drop-shadow(0 0 12px var(--effect-color))}.flight-resolution .flight-spark{width:7px;height:11px;left:-3px;top:-5px;background:var(--effect-color);border-radius:2px;animation:flight-spark .85s ease-out both}.flight-resolution b{position:absolute;left:0;top:0;display:block;white-space:nowrap;font-size:24px;font-weight:900;text-shadow:2px 2px #05211c,-1px -1px #05211c;animation:flight-label .9s ease-out both}.flight-resolution.passed{--effect-color:#a4eaff;color:#bcefff}.flight-resolution.explosion{--effect-color:#ff8047;--effect-core:#fff393;color:#ffed9a}.flight-resolution.explosion .flight-effect-core{width:100px;height:100px;left:-50px;top:-50px;background:radial-gradient(#fff8ad 15%,#ffbd4a 40%,#ee5846 75%);clip-path:polygon(50% 0,59% 24%,80% 6%,78% 31%,100% 30%,85% 50%,100% 67%,76% 71%,83% 96%,58% 81%,49% 100%,39% 79%,16% 95%,24% 71%,0 65%,17% 49%,0 30%,26% 29%,19% 5%,41% 25%)}.flight-resolution.explosion .flight-spark{border-radius:50%;height:9px;width:9px;box-shadow:0 0 8px #ff7a32}.flight-resolution.explosion b{animation-duration:var(--flight-feedback-duration,1.5s);font-size:30px;color:#fff4a9;text-shadow:2px 2px #b63027,-2px -2px #b63027}
@keyframes flight-ring{from{opacity:1;transform:scale(.3)}to{opacity:0;transform:scale(2.5)}}
@keyframes flight-core{0%{opacity:1;transform:scale(.25) rotate(-15deg)}30%{opacity:1;transform:scale(1.3) rotate(8deg)}100%{opacity:0;transform:scale(1.65) rotate(20deg)}}
@keyframes flight-spark{0%{opacity:1;transform:rotate(var(--angle)) translateX(10px) scale(.4)}70%{opacity:1}100%{opacity:0;transform:rotate(var(--angle)) translateX(var(--distance)) scale(.1)}}
@keyframes flight-label{0%{opacity:0;transform:translate(-50%,-50%) scale(.6)}18%{opacity:1;transform:translate(-50%,-70%) scale(1.12)}65%{opacity:1}100%{opacity:0;transform:translate(-50%,-160%) scale(.95)}}
@keyframes flight-speed-up{0%,100%{opacity:0;translate:0 8px}15%,75%{opacity:1;translate:0 0}}
@media(max-width:720px){.flight-survival-hud{display:grid;grid-template-columns:1fr auto auto;gap:7px 20px;padding:10px 12px}.flight-survival-hud>div:first-child{margin-right:auto}.flight-survival-hud #flight-lives{font-size:21px;gap:4px}.flight-survival-hud #flight-level{font-size:19px}.flight-survival-hud .flight-next-level{grid-column:1/-1;text-align:right;display:block;font-size:8px;border:0;padding:0;color:#acb6aa}.flight-scene{height:calc(100svh - 275px)}.flight-resolution b{font-size:21px}.flight-resolution.explosion b{animation-duration:var(--flight-feedback-duration,1.5s);font-size:25px}.flight-speed-notice{font-size:14px;padding:6px 13px}.flight-result-stats>span:first-child b{font-size:20px}}
@media(prefers-reduced-motion:reduce){.flight-resolution i,.flight-resolution b{animation:none}.flight-resolution .flight-effect-ring{opacity:.5}.flight-resolution .flight-spark{display:none}.flight-resolution b{transform:translate(-50%,-50%)}.flight-speed-notice.show{animation:none;opacity:1}}
.flight-countdown{position:absolute;inset:0;z-index:9;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;padding:25px;background:#06141dc9;text-align:center}.flight-countdown-instruction{max-width:570px;font-size:clamp(18px,2.2vw,26px);line-height:1.9;font-weight:800;text-wrap:balance;color:#fffdf2}.flight-countdown-instruction strong{color:#172823;background:var(--yellow);padding:2px 6px;white-space:nowrap;margin:0 4px}.flight-countdown-number{display:grid;place-items:center;width:180px;height:180px;border:3px solid #fff34f66;background:#0a242ed9;box-shadow:7px 8px 0 #0004;color:var(--yellow);font:900 128px/1 "Arial Black",Arial,sans-serif;font-variant-numeric:tabular-nums;transform:rotate(-3deg);text-shadow:4px 4px #a34d2f}.flight-countdown-number.pop{animation:flight-countdown-pop .22s ease-out both}.flight-countdown-number>span{display:block;transform:rotate(3deg)}
@keyframes flight-countdown-pop{from{transform:rotate(-3deg) scale(.88)}to{transform:rotate(-3deg) scale(1)}}
@media(max-width:720px){.flight-countdown{padding:25px 20px;gap:26px}.flight-countdown-instruction{font-size:18px;max-width:390px;line-height:2}.flight-countdown-number{width:150px;height:150px;font-size:108px}.flight-countdown-instruction strong{padding:2px 4px;margin:0 2px}}
.flight-scene[data-lanes="4"] .flight-card{padding:8px 12px;min-height:52px}.flight-scene[data-lanes="5"] .flight-card{padding:7px 10px;min-height:48px}.flight-retry{margin-top:18px;font-size:18px;min-height:58px}.mistake-review{margin-top:35px;border-top:2px solid var(--ink)}.mistake-review>h2{font-size:18px;font-weight:900;margin:23px 0 7px}.mistake-review .review-item{padding:20px 0}.mistake-review .review-meta{color:#c74d39}.mistake-review .review-meta b{display:grid;place-items:center;border:1px solid currentColor;width:21px;height:21px}.mistake-review h3{white-space:pre-wrap;word-spacing:.15em}.mistake-explanation{font-size:11px;line-height:1.9;margin-top:6px;color:var(--muted)}



.flight-result-heading{text-align:center;font-size:23px;font-weight:900;letter-spacing:.08em;margin-top:30px}.flight-result-score{margin:8px 0 12px;font-size:clamp(72px,15vw,110px);overflow-wrap:anywhere}.flight-result-stats{flex-wrap:wrap;gap:12px 22px}.flight-original{width:100%;margin-top:18px;min-height:54px;font-size:15px;border:2px solid var(--ink);background:var(--paper);color:var(--ink)}.flight-original:disabled{cursor:default}.flight-original:disabled:hover{background:var(--paper)}
@media(max-width:720px){.flight-result-heading{font-size:21px;margin-top:26px}.flight-result-stats{gap:12px 16px}.flight-original{font-size:14px}}

/* During play, devote the viewport to the board and two compact toolbar rows. */
body.flight-playing{overflow:hidden}
body.flight-playing .site-header,body.flight-playing .site-footer{display:none}
body.flight-playing #main{height:100svh;height:100dvh;min-height:0;width:100%;max-width:none}
body.flight-playing .flight-screen{display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:6px;width:100%;max-width:none;height:100%;padding:max(8px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left));animation:none}
body.flight-playing .flight-topline{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;margin:0;min-height:40px}
body.flight-playing .flight-topline h1{font-size:16px;line-height:1.5;text-align:center;color:var(--coral);font-weight:800;text-wrap:balance}
.flight-topline h1 small{display:block;font-size:10px;color:var(--muted)}
body.flight-playing .flight-back{min-height:36px;padding:6px 10px;font-size:10px;white-space:nowrap}
.flight-controls .header-actions{gap:12px}
.flight-controls .rules-button{font-size:10px;min-height:36px;padding:6px 0}
.flight-controls .rules-button>span{display:none}
.flight-controls .sound-button{width:34px;height:34px;box-shadow:1px 2px 0 var(--ink)}
body.flight-playing .flight-survival-hud{display:grid;grid-template-columns:1fr auto auto auto;gap:12px;padding:7px 12px;align-items:center}
body.flight-playing .flight-hud>div{flex-direction:row;gap:7px}
body.flight-playing .flight-hud b{font-size:23px}
body.flight-playing .flight-hud>div>span{font-size:9px}
body.flight-playing .flight-survival-hud #flight-lives{font-size:22px}
body.flight-playing .flight-survival-hud #flight-level{font-size:20px}
body.flight-playing .flight-survival-hud .flight-next-level{grid-column:auto;border-left:1px solid #ffffff30;padding-left:12px;font-size:9px}
body.flight-playing .flight-scene{height:auto;min-height:0;max-height:none;width:100%;border-top:2px solid var(--ink);box-shadow:none}
@media(max-width:720px){
  body.flight-playing .flight-screen{gap:5px;padding:max(5px,env(safe-area-inset-top)) max(6px,env(safe-area-inset-right)) max(5px,env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left))}
  body.flight-playing .flight-topline{gap:8px;min-height:40px}
  body.flight-playing .flight-topline h1{font-size:12px;line-height:1.5}
  body.flight-playing .flight-back{font-size:9px;padding:6px;min-height:36px}
  .flight-controls .header-actions{gap:8px}
  .flight-controls .rules-button{font-size:9px}
  .flight-controls .sound-button{width:32px;height:32px}
  body.flight-playing .flight-survival-hud{grid-template-columns:1fr auto auto;gap:3px 14px;padding:6px 10px}
  body.flight-playing .flight-survival-hud .flight-next-level{grid-column:1/-1;border:0;padding:0;font-size:8px;text-align:right}
  body.flight-playing .flight-hud b{font-size:22px}
}
@media(max-width:360px){body.flight-playing .flight-topline{gap:6px}body.flight-playing .flight-topline h1{font-size:11px}.flight-controls .header-actions{gap:6px}.flight-controls .rules-button{font-size:8px}}
@media(max-height:420px){body.flight-playing{overflow:auto}body.flight-playing .flight-screen{min-height:420px}}
.home .start-actions{margin-top:16px}
@media(max-width:720px){.home .start-actions{grid-row:5;margin-top:14px}}

.home-example{max-width:390px;margin-top:18px;padding:12px 14px;border-left:3px solid var(--coral);background:#fff9c6;text-align:left}.home-example-sentence{font-size:13px;font-weight:800;line-height:1.8;white-space:pre-wrap}.home-example-reading{font-size:11px;line-height:1.8;margin-top:4px}.home-example mark{background:var(--yellow);font-weight:900;border-bottom:2px solid var(--coral)}.home-example-rule{font-size:10px;line-height:1.8;margin-top:7px}.home-example-rule strong{font-weight:800}
@media(max-width:720px){.home-example{grid-column:1/-1;grid-row:4;max-width:none;margin-top:14px;padding:10px 12px}.home-example-sentence{font-size:12px}.home-example-reading{font-size:11px}.home-example-rule{font-size:10px}.home-example-rule br{display:none}}

.flight-result-rank{width:fit-content;max-width:100%;margin:14px auto 0;padding:2px 8px;font-size:20px;font-weight:900;line-height:1.7;text-align:center;text-wrap:balance;background:linear-gradient(transparent 58%,var(--yellow) 58%)}
#main:has(>.home){min-height:0}
body:has(#main>.home) .site-footer{margin-top:24px;padding-top:14px;padding-bottom:18px}
@media(max-width:720px){.flight-result-rank{font-size:17px}body:has(#main>.home) .site-footer{margin-top:20px;padding-top:10px;padding-bottom:14px}}

.flight-card.missed{pointer-events:none;cursor:default;background:#fff4e9;border-color:#e75a43;box-shadow:0 3px 0 #401612,0 0 20px #e75a4326;opacity:1}
.flight-card.missed::after{display:none}
.flight-card.missed .flight-card-word{font-weight:700;letter-spacing:.015em}
.flight-card.missed mark{color:#d92319;background:transparent;border:0;padding:0;font-weight:900;text-shadow:none}
