/* Classroom update v12 (06.10.2026): tricky verbs after the race. */
.review-actions{display:flex;gap:10px;flex-wrap:wrap;margin:0 16px 12px}
.review-actions #reviewReveal{margin:0}
#trickyButton,.camp-tricky{min-height:44px;padding:8px 16px;border:1px solid #c7b27999;border-radius:4px;background:#13303b;color:#f1dfb7;font:600 14px/1.2 system-ui,sans-serif;cursor:pointer}
.camp-tricky{margin:6px 0 0;width:100%}
.tricky-view{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:2vh 2vw;background:#030b10e8}
.tricky-view[hidden]{display:none}
.tricky-card{width:min(1500px,96vw);max-height:96vh;overflow:auto;padding:clamp(18px,2.4vh,34px) clamp(20px,2.4vw,44px);border:1px solid #c7b27999;border-radius:8px;background:radial-gradient(ellipse at top,#173544 0%,#0a1a23 70%);color:#f6ecd4;box-shadow:0 20px 60px #000c}
.tricky-card header{text-align:center;margin-bottom:clamp(10px,2vh,24px)}
.tricky-eyebrow{margin:0;color:#e5c27b;font:700 clamp(13px,1vw,18px)/1.2 system-ui,sans-serif;letter-spacing:.18em;text-transform:uppercase}
.tricky-card h2{margin:.2em 0 .1em;font:600 clamp(34px,3.6vw,64px)/1.05 Georgia,serif}
.tricky-note{margin:0;color:#d8ccb0;font:clamp(16px,1.3vw,24px)/1.3 Georgia,serif}
.tricky-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,360px),1fr));gap:clamp(10px,1.4vw,22px)}
.tricky-item{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2px 12px;padding:clamp(10px,1.4vh,20px) clamp(14px,1.2vw,22px);border:1px solid #c7b27966;border-radius:6px;background:#0d2530}
.tricky-clue{font:600 clamp(26px,2.2vw,44px)/1.15 Georgia,serif;overflow-wrap:anywhere}
.tricky-clue .form-cue{font-size:.8em;color:#f1c873}
.tricky-clue .tricky-arrow{color:#bfb39a;font-size:.7em;margin:0 .25em}
.tricky-count{align-self:start;padding:4px 12px;border-radius:999px;background:#3a2a12;color:#f6d38a;font:700 clamp(16px,1.3vw,24px)/1.2 system-ui,sans-serif}
.tricky-solution{grid-column:1/-1;font:600 clamp(30px,2.7vw,54px)/1.1 Georgia,serif;color:#e0ffd2;min-height:1.1em}
.tricky-solution[data-hidden='true']{color:transparent;border-bottom:3px dashed #c7b27966;width:min(100%,8em)}
.tricky-row{grid-column:1/-1;color:#d8ccb0;font:clamp(18px,1.4vw,26px)/1.2 Georgia,serif}
.tricky-row[hidden]{display:none}
.tricky-hint{font-size:.5em;color:#d8ccb0;margin-left:.4em}
.tricky-empty{grid-column:1/-1;text-align:center;font:clamp(22px,2vw,34px)/1.3 Georgia,serif;color:#e0ffd2}
.tricky-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:clamp(12px,2vh,26px)}
.tricky-actions button{min-height:52px;min-width:150px;padding:10px 22px;border:1px solid #c7b279aa;border-radius:4px;background:#13303b;color:#f6ecd4;font:600 18px/1.2 system-ui,sans-serif;cursor:pointer}
.tricky-actions button.primary{background:linear-gradient(#f0d9a4,#c9a15c);color:#1b1408;border-color:#f0d9a4}
@media print{
  body *{visibility:hidden!important}
  body.printing-tricky .tricky-view,body.printing-tricky .tricky-view *{visibility:visible!important}
  body.printing-tricky .tricky-view{position:absolute;inset:0;display:block;background:#fff;padding:0}
  body.printing-tricky .tricky-card{width:auto;max-height:none;overflow:visible;border:0;box-shadow:none;background:#fff;color:#000;padding:10mm}
  body.printing-tricky .tricky-card *{color:#000!important;background:#fff!important;text-shadow:none!important}
  body.printing-tricky .tricky-item{border:1px solid #555;break-inside:avoid}
  body.printing-tricky .tricky-solution[data-hidden='true']{border-bottom:1px dashed #555}
  body.printing-tricky .tricky-actions{display:none}
  body.printing-tricky .tricky-list{grid-template-columns:1fr 1fr}
}
/* Rift Rush before the first portal: dimmed, with a small portal arch as the lock sign. */
.power-buttons button[data-power='rush'][data-locked='true']{opacity:.42;filter:saturate(.4)}
.power-buttons button[data-power='rush'][data-locked='true']::before{content:'';position:absolute;right:5px;top:4px;width:10px;height:13px;border:2px solid #ffe0a0;border-bottom:0;border-radius:7px 7px 0 0;box-shadow:0 0 4px #ffe0a088;pointer-events:none}
/* Players at the board: visible in the class rhythm, drawn by the teacher. */
.board-players{display:flex;align-items:center;justify-content:space-between;gap:10px;color:#e8dcc0;font-size:14px;line-height:1.2}
.board-players span{flex:1;min-width:0}
.board-players small{display:block;color:#b9ad92;font-size:12px;margin-top:2px}
.board-players input{width:76px;min-height:44px;text-align:center;font-size:18px;background:#0b1b25;color:#f6ecd4;border:1px solid #c7b27999;border-radius:4px}
/* Readable from the back row (06.10.2026): typed word on a darker plate, larger costs and crystals. */
.team[data-input-open='true'] .answer-panel output{padding:4px 28px;background:radial-gradient(ellipse,#061018f4 0%,#061018c8 52%,transparent 82%)}
.power-buttons .power-cost{min-width:19px;font-size:15px;line-height:18px}
#gameScene[data-board='xl'] .power-panel .charge-pips{grid-template-columns:repeat(4,25px);gap:4px 8px}
#gameScene[data-board='xl'] .power-panel .charge-pips i{width:25px;height:20px}
#gameScene[data-board='xl'] .power-buttons .power-cost{font-size:17px;line-height:20px}
/* Tutorial form strip: three English columns since German left the race. */
.demo-form-strip{grid-template-columns:repeat(3,1fr)}
/* Portal swirl as a CSS animation instead of a per-frame script write (25°/s as before). */
@property --portal-flow{syntax:'<angle>';inherits:false;initial-value:0deg}
@keyframes portal-swirl{to{--portal-flow:360deg}}
.portal-membrane::before{animation:portal-swirl 14.4s linear infinite}
#gameScene[data-paused='true'] .portal-membrane::before{animation-play-state:paused}
#gameScene[data-motion='reduced'] .portal-membrane::before{animation:none}
/* Tutorial (06.10.2026): Rush waits for the portal; afterwards the crossed portal stands behind the runner. */
.demo-powers>span.locked{position:relative;opacity:.42;filter:saturate(.4)}
.demo-powers>span.locked::after{content:'';position:absolute;right:-4px;top:-6px;width:12px;height:16px;border:2px solid #ffe0a0;border-bottom:0;border-radius:8px 8px 0 0;box-shadow:0 0 6px #ffe0a088}
.demo-lane[data-portal-behind='true'] .demo-portal{left:19%}
.demo-lane[data-portal-hint='true'] .demo-portal img{filter:drop-shadow(0 0 6px #ffe0a0) drop-shadow(0 0 16px #ffc85a) brightness(1.3)}
.demo-lane[data-portal-hint='true'] .demo-portal{animation:portal-hint 1.4s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){.demo-lane[data-portal-hint='true'] .demo-portal{animation:none}}
@keyframes portal-hint{50%{opacity:.7}}
/* Class year (07.10.2026): Year 5 without, Year 6 with the Past Participle. */
#setupForm .year-choices{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0 0 12px}
#setupForm .year-choices button{display:flex;flex-direction:row;align-items:baseline;gap:12px;min-height:44px;padding:8px 14px;border:1px solid #a693644d;border-radius:4px;background:linear-gradient(145deg,#243b44,#142a34);color:#e2d5b9;cursor:pointer;text-align:left}
#setupForm .year-choices strong{font:500 16px/1.2 Georgia,serif;color:#eee5ce}
#setupForm .year-choices span{font:13px/1.2 system-ui,sans-serif;color:#bbcece}
#setupForm .year-choices button[aria-pressed='true']{border-color:#d3b779;background:linear-gradient(135deg,#414c43,#223a3d);box-shadow:inset 0 2px 0 #ddc587}
#setupForm .form-choices[data-year='5']{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:700px){#setupForm .form-choices[data-year='5']{grid-template-columns:1fr 1fr}}
/* Settings in four steps (07.10.2026): Class · Words · Learning goal · Class rhythm, then two cards. */
#setupForm .settings-class{margin-bottom:4px}
#setupForm .settings-class .year-choices{margin:6px 0 0}
#setupForm .more-backup{display:flex;align-items:center;gap:14px;flex-wrap:wrap;color:#d9e2dc;font-size:13px}
#setupForm .more-backup .backup-actions{margin:0}
#setupForm #matchSettings .word-settings{border:1px solid #78969c45;border-radius:7px}
#setupForm #matchSettings .word-settings>summary{padding:10px 12px}
#setupForm #matchSettings .word-settings>fieldset{margin:0 12px 12px}
#setupForm .rhythm-row{display:grid;grid-template-columns:1fr 1fr auto;gap:8px;align-items:stretch}
#setupForm .rhythm-row .pace-choices{display:contents}
#setupForm .rhythm-row .board-players{padding:4px 10px;border:1px solid #a693644d;border-radius:4px;background:#0b1b25}
#setupForm .settings-class .year-choices{margin:6px 0 8px}
@media(max-width:700px){#setupForm .rhythm-row{grid-template-columns:1fr 1fr}#setupForm .rhythm-row .board-players{grid-column:1/-1}}
/* Normal board heights: the brand panel already names the factions; keep all four steps in view. */
@media(max-height:900px){
  #setupForm .faction-pair{display:none}
  #setupForm .prepare-header .prepare-eyebrow{display:none}
  #setupForm .prepare-header .prepare-heading{font-size:24px;margin:2px 0 8px}
}
@media(max-height:650px){
  #setupForm .prepare-header .prepare-heading{font-size:19px;margin:0 0 4px}
  #setupForm .settings-heading{margin:4px 0 4px}
  #setupForm .settings-class .year-choices{margin:2px 0 4px}
  #setupForm .year-choices button{min-height:34px;padding:4px 12px}
  #setupForm .pool-controls select{min-height:34px;padding-block:4px}
  #setupForm .pool-controls label{gap:2px}
  #setupForm .lesson-route>summary{min-height:28px}
  #setupForm .form-choices button{min-height:52px;padding:6px 12px;gap:4px}
  #setupForm .rhythm-row button,#setupForm .rhythm-row .board-players{min-height:40px;padding-block:4px}
  #setupForm #plannedTime{display:none}
}
/* Column names instead of circled numbers (07.10.2026): small words over each column. */
.team[data-question-mode='missing'] .prompt-note small{font:650 clamp(10px,.82vw,14px)/1.1 system-ui,sans-serif;letter-spacing:.04em;color:#cdb98a;white-space:nowrap}
.team[data-question-mode='missing'] .prompt-note .target-cell small{color:#fff0c9}
.team[data-question-mode='missing'] .prompt-note .empty-cell{opacity:.32}
.team[data-question-mode='missing'] .prompt-note .empty-cell strong{color:#9fb1b4}
/* Tutorial plate: the gap cell of the arena row. */
.demo-task .demo-target .demo-gap{display:inline-grid;justify-items:center;gap:2px;padding:2px 10px 4px;border:1.5px dashed #e7c98aaa;border-radius:8px;background:#e7c98a14}
.demo-task .demo-target .demo-gap small{font:650 11px/1 system-ui,sans-serif;letter-spacing:.04em;color:#e7c98a;text-transform:uppercase}
.demo-task .demo-target .demo-gap b{font:500 1em/1 Georgia,serif;color:#ffe7a6;text-shadow:0 0 12px #e7c98acc}
/* The gap: an empty field with a soft glow instead of a question mark. */
.team[data-question-mode='missing'] .prompt-note .target-cell{background:linear-gradient(180deg,transparent,#e7c98a1f);border-bottom:2px solid #e7c98acc;border-radius:6px 6px 2px 2px;box-shadow:0 6px 14px -8px #e7c98aaa}
/* Power hint (07.10.2026): after a missed window at full energy the powers call loudly. */
.power-panel[data-nudge='true'] .power-buttons button:not(:disabled){animation:power-nudge .6s ease-in-out infinite alternate;outline:3px solid #ffe08a;outline-offset:3px}
@keyframes power-nudge{from{transform:scale(1);box-shadow:0 0 0 0 #ffe08a00}to{transform:scale(1.12);box-shadow:0 0 26px 8px #ffe08acc}}
#gameScene[data-motion='reduced'] .power-panel[data-nudge='true'] .power-buttons button:not(:disabled){animation:none;box-shadow:0 0 22px 6px #ffe08acc}
@media(prefers-reduced-motion:reduce){.power-panel[data-nudge='true'] .power-buttons button:not(:disabled){animation:none;box-shadow:0 0 22px 6px #ffe08acc}}
/* Rush word (07.10.2026): a banner over the plate while the caster answers. */
.team .prompt{position:relative}
.team:is([data-trial='word'],[data-trial='hit'],[data-trial='retry'],[data-trial='miss']) .prompt::after{position:absolute;left:50%;right:auto;top:auto;bottom:-16px;width:auto;height:auto;opacity:1;transform:translateX(-50%);z-index:6;padding:5px 16px;border-radius:999px;font:800 clamp(12px,.95vw,16px)/1 system-ui,sans-serif;letter-spacing:.12em;white-space:nowrap;pointer-events:none;box-shadow:0 4px 14px #0008}
.team[data-trial='word'] .prompt::after{content:'MOON HOP · ONE WORD FOR +3';background:linear-gradient(90deg,#f4dc9a,#e2b453);color:#1a1405;animation:rush-word-pulse 1s ease-in-out infinite alternate}
.team[data-trial='hit'] .prompt::after{content:'MOON HOP · +3';background:#7fe0a1;color:#06210f}
.team[data-trial='miss'] .prompt::after{content:'HOP LOCKED';background:#5a2a24;color:#ffd9cf}
@keyframes rush-word-pulse{to{box-shadow:0 0 18px 4px #f4dc9acc}}
#gameScene[data-motion='reduced'] .team[data-trial='word'] .prompt::after{animation:none}
/* Landing preview (07.10.2026): ghost marks on the bridge during a power window. */
.power-preview{position:absolute;inset:0;z-index:4;pointer-events:none}
.power-preview i{position:absolute;bottom:calc(var(--baseline, 53%) + var(--tile-height, 40px)*.2);transform:translateX(-50%);display:grid;place-items:center;width:clamp(34px,3vw,48px);height:clamp(34px,3vw,48px);border-radius:50%;border:2px dashed #f2d891;background:#f2d89122;color:#fff3cf;font:800 clamp(13px,1.1vw,18px)/1 system-ui,sans-serif;text-shadow:0 1px 3px #000;box-shadow:0 0 16px #f2d89166;animation:preview-bob 1.1s ease-in-out infinite alternate;transition:opacity .15s,transform .15s}
.power-preview i::after{content:'';position:absolute;top:100%;left:50%;width:2px;height:clamp(10px,1.4vh,18px);background:linear-gradient(#f2d891,transparent)}
.power-preview i[data-p='rush']{border-color:#ffd36b;background:#ffd36b33;width:clamp(40px,3.5vw,56px);height:clamp(40px,3.5vw,56px)}
.power-preview i[data-p='hex']{border-color:#c49cff;background:#a774ff33;color:#ead9ff;box-shadow:0 0 16px #a774ff88}
.power-preview i[data-p='hex']::after{background:linear-gradient(#c49cff,transparent)}
.power-preview i[data-through='true']::before{content:'→';position:absolute;right:-16px;color:#ffe9b0;font-size:16px}
.power-preview[data-focused='true'] i{opacity:.35}
.power-preview[data-focused='true'] i[data-focus='true']{opacity:1;transform:translateX(-50%) scale(1.25)}
@keyframes preview-bob{to{margin-bottom:6px}}
#gameScene[data-motion='reduced'] .power-preview i{animation:none}
@media(prefers-reduced-motion:reduce){.power-preview i{animation:none}}
/* Hex threat (07.10.2026): the rival could Hex next turn; Shield is the answer. */
.power-preview i[data-p='threat']{border-color:#c49cff;border-style:solid;background:#a774ff40;color:#f1e6ff;font-size:clamp(11px,.9vw,14px);box-shadow:0 0 18px #a774ffaa;animation:threat-pulse .8s ease-in-out infinite alternate}
.power-preview i[data-p='threat']::after{background:linear-gradient(#c49cff,transparent)}
@keyframes threat-pulse{to{box-shadow:0 0 28px 6px #a774ffcc}}
.power-buttons button[data-hex-threat='true']{outline:3px solid #c49cff;outline-offset:3px;box-shadow:0 0 22px 4px #a774ffaa;animation:threat-pulse .8s ease-in-out infinite alternate}
#gameScene[data-motion='reduced'] :is(.power-preview i[data-p='threat'],.power-buttons button[data-hex-threat='true']){animation:none}
@media(prefers-reduced-motion:reduce){:is(.power-preview i[data-p='threat'],.power-buttons button[data-hex-threat='true']){animation:none}}

.team[data-trial='retry'] .prompt::after{content:'SECOND CHANCE · 8 ENERGY BACK';background:#ecd99d;color:#211704}
