/* The artwork frames the actual tasks without revealing their answers. */
.escape-question{position:relative;margin:1rem 0 0;padding:.85rem 1rem .9rem 5.2rem;border:1px solid #e4d4ac;border-radius:.9rem;background:linear-gradient(110deg,#fff7e4,#fffcf5)}
.escape-question::before{content:"";position:absolute;left:.8rem;top:50%;width:3.7rem;height:3.7rem;transform:translateY(-50%);background:url('/assets/escape/puzzle/gear.svg?v=20261031-precise1') center/contain no-repeat;pointer-events:none}
.escape-question legend{float:left;width:100%;margin:0 0 .4rem;font-size:clamp(1.2rem,3vw,1.6rem)}
.escape-question::after{content:"";display:block;clear:both}
.escape-puzzle .escape-symbol-choice,.escape-puzzle .escape-book,.escape-puzzle .escape-light-choice{display:flex;align-items:center;justify-content:center;gap:.55rem;min-width:0;text-align:center}
.escape-symbol-choice::before,.escape-book::before,.escape-light-choice::before{content:"";flex:0 0 3rem;width:3rem;height:3rem;background:center/contain no-repeat;pointer-events:none}
.escape-symbol-choice::before{background-image:url('/assets/escape/puzzle/rune.svg')}
.escape-book::before{background-image:url('/assets/escape/puzzle/book.svg')}
.escape-light-choice::before{background-image:url('/assets/escape/puzzle/lamp.svg')}
.escape-puzzle .escape-book{min-height:5.5rem;background:#fff6df;border-color:#d6bc8d;box-shadow:inset 5px 0 #bb845b,0 3px 0 #e3d1b0}
.escape-puzzle .escape-book[aria-pressed="true"]{background:#357e78;border-color:#245f61;box-shadow:inset 5px 0 #205e5b,0 3px 0 #205e5b}
.escape-puzzle .escape-light-choice{background:#fffaf0;border-color:#e6c681}
.escape-puzzle .escape-light-choice[aria-pressed="true"]{background:#357e78;border-color:#245f61}
.escape-code-label{align-items:center;padding:.7rem .4rem;border:1px solid #d2bd8d;border-radius:2.5rem 2.5rem .7rem .7rem;background:linear-gradient(#f5e7c5,#fffaf0);color:#374c52}
.escape-code-label span{font-size:1rem;text-align:center}.escape-code-label input{background:#fff}
@media(max-width:400px){.escape-question{padding-left:4.3rem}.escape-question::before{width:3rem;height:3rem;left:.65rem}.escape-symbol-choice::before,.escape-book::before,.escape-light-choice::before{flex-basis:2.2rem;width:2.2rem;height:2.2rem}.escape-puzzle .escape-symbol-choice,.escape-puzzle .escape-book,.escape-puzzle .escape-light-choice{gap:.25rem}}
.escape-hero-badge{left:0;right:0;bottom:1.25rem;justify-content:center;gap:.8rem;padding:.9rem 1rem;border-radius:0;border-left:0;border-right:0;background:#14243de8;font-size:clamp(1.05rem,1.7vw,1.35rem);letter-spacing:.2em}
.escape-hero-badge svg{width:1.45rem;height:1.45rem}
@media(max-width:600px){.escape-hero-badge{left:0;right:0;bottom:.65rem;padding:.65rem .8rem;font-size:1rem;letter-spacing:.16em}.escape-hero-badge svg{width:1.2rem;height:1.2rem}}

.escape-choice-grid:has(.escape-symbol-choice){grid-template-columns:repeat(2,minmax(0,1fr))}

.escape-extra-question::before{background-image:url("/assets/escape/puzzle/tablet.svg")}
/* Symbol door: the collected gear clues and the player's sequence become part of the lock. */
.escape-gear-clue{display:flex;align-items:center;justify-content:space-between;gap:.8rem;margin:1.1rem 0;padding:.75rem 1rem;border:1px solid #d8c291;border-radius:.8rem;background:linear-gradient(115deg,#f9ebc9,#fffaf0)}
.escape-puzzle .escape-gear-clue-label{margin:0;color:#674e26;font-size:.86rem;line-height:1.4;font-weight:800}
.escape-gear-clue-wheels{display:flex;gap:.25rem;flex:none}.escape-clue-wheel{display:grid;place-items:center;width:3rem;height:3rem;background:url('/assets/escape/puzzle/gear.svg?v=20261031-precise1') center/contain no-repeat;color:#263f3f;font-size:.78rem;font-weight:900}
.escape-rune-sequence{position:relative;margin:1rem 0 0;padding:.9rem 1rem;border:1px solid #c7d8ca;border-radius:.85rem;background:#eaf3e9}.escape-puzzle .escape-rune-sequence .escape-selection{margin:0 0 .7rem;color:#305e56;font-size:.92rem;line-height:1.4}.escape-rune-slots{display:flex;align-items:center;gap:.55rem}.escape-rune-slot{display:grid;place-items:center;width:2.6rem;height:2.6rem;border:2px dashed #9bb5aa;border-radius:50%;color:#759389;font-size:.85rem;font-weight:800;background:#f8fbf6}.escape-rune-slot.is-filled{border:2px solid #a77935;background:#f8e5b9;color:#725224;font-size:1.45rem}.escape-rune-slot:not(:last-child){margin-right:1rem}.escape-rune-slot:not(:last-child)::after{content:'›';position:absolute;margin-left:4.25rem;color:#7c9d8e;font-size:1.3rem}
.escape-puzzle .escape-rune-grid{gap:.8rem;margin:1rem 0}.escape-puzzle .escape-rune-grid .escape-symbol-choice{position:relative;justify-content:flex-start;gap:.9rem;min-height:6.5rem;padding:.8rem;border:1.5px solid #d4c8a9;border-radius:1rem;background:linear-gradient(145deg,#fffdf4,#f0eadc);color:#1e374b;box-shadow:0 4px 0 #d7c9ad,0 8px 20px #5a45200d;text-align:left}.escape-puzzle .escape-rune-grid .escape-symbol-choice::before{display:none}.escape-rune-emblem{display:grid;place-items:center;flex:none;width:3.7rem;height:3.7rem;border:2px solid #9d7b46;border-radius:50%;background:radial-gradient(circle at 35% 28%,#fff4d3,#d6b67b);box-shadow:inset 0 0 0 4px #f7e8c6,0 2px 3px #5c452529;color:#604822;font-family:Georgia,serif;font-size:2rem;line-height:1}.escape-rune-body{display:flex;min-width:0;flex-direction:column;gap:.18rem}.escape-rune-name{font-size:.8rem;font-weight:800;color:#655439}.escape-rune-equation{font-size:1.3rem;font-weight:900;line-height:1.2;white-space:nowrap}.escape-rune-position{position:absolute;top:.45rem;right:.45rem;display:grid;place-items:center;width:1.45rem;height:1.45rem;border-radius:50%;background:#f7dd9b;color:#3b4e43;font-size:.72rem;font-weight:900}.escape-rune-position[hidden]{display:none}.escape-puzzle .escape-rune-grid .escape-symbol-choice:hover{border-color:#278273;background:linear-gradient(145deg,#fffdf4,#e4f2e9)}.escape-puzzle .escape-rune-grid .escape-symbol-choice[aria-pressed="true"]{border-color:#236e64;background:linear-gradient(135deg,#337b6e,#245f61);color:white;box-shadow:0 4px 0 #1c514e,0 8px 18px #254e4929}.escape-symbol-choice[aria-pressed="true"] .escape-rune-name{color:#e1f1e6}.escape-symbol-choice[aria-pressed="true"] .escape-rune-emblem{border-color:#ffe3a0;box-shadow:inset 0 0 0 4px #f7e8c6,0 0 14px #f8dc8b8c}
@media(max-width:600px){.escape-gear-clue{align-items:flex-start;flex-direction:column}.escape-clue-wheel{width:2.7rem;height:2.7rem}.escape-puzzle .escape-rune-grid .escape-symbol-choice{min-height:5.4rem;padding:.6rem;gap:.55rem}.escape-rune-emblem{width:2.8rem;height:2.8rem;font-size:1.55rem}.escape-rune-equation{font-size:1.08rem}.escape-rune-name{font-size:.72rem}}
@media(max-width:370px){.escape-puzzle .escape-rune-grid .escape-symbol-choice{gap:.4rem;padding:.55rem .4rem}.escape-rune-emblem{width:2.35rem;height:2.35rem;font-size:1.35rem}.escape-rune-equation{font-size:1rem}.escape-gear-clue-label{overflow-wrap:anywhere}}
.escape-bridge-diagram{margin:1rem 0 .75rem;border:1px solid #c8d5c8;border-radius:1rem;overflow:hidden;box-shadow:0 6px 15px #203b4b14}.escape-bridge-diagram svg{display:block;width:100%;height:auto}.bridge-value{fill:#254044;font:800 19px ui-rounded,system-ui,sans-serif}.bridge-index{paint-order:stroke;stroke:#263d59;stroke-width:5px;stroke-linejoin:round;fill:#fff4d8;font:800 15px ui-rounded,system-ui,sans-serif}.bridge-deck{transform-box:view-box;transform-origin:102px 144px;transform:rotate(-13deg);transition:transform 1s ease-in-out}.bridge-chain{transition:opacity .5s}.escape-bridge-diagram.is-solved .bridge-deck{transform:rotate(0)}.escape-bridge-diagram.is-solved .bridge-chain{opacity:.2}
.escape-bridge-questions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem}.escape-bridge-questions .escape-question{position:relative;min-width:0;margin:0;padding:.75rem .8rem;border:1px solid #d7ded4;border-radius:.75rem;background:#fffdf7}.escape-bridge-questions .escape-gear-question{padding-left:2.6rem;border-color:#d7bd83;background:#fff8e7}.escape-bridge-questions .escape-question::before{display:none}.escape-bridge-questions .escape-gear-question::after{content:attr(data-gear);position:absolute;left:.65rem;top:.75rem;display:grid;place-items:center;width:1.35rem;height:1.35rem;border-radius:50%;background:#ca9f52;color:#fff;font-size:.76rem;font-weight:900;clear:none}.escape-bridge-questions .escape-question legend{float:left;width:100%;margin:0 0 .45rem;font-size:clamp(1.05rem,2vw,1.35rem)}.escape-bridge-questions .escape-question input.escape-answer{width:5rem;min-height:2.8rem;font-size:1.2rem}
@media(max-width:400px){.escape-bridge-questions{grid-template-columns:1fr}.escape-bridge-questions .escape-question{padding-top:.55rem;padding-bottom:.55rem}.escape-bridge-questions .escape-question legend{margin-bottom:.2rem}.escape-bridge-questions .escape-question input.escape-answer{min-height:2.5rem}}
@media(prefers-reduced-motion:reduce){.bridge-deck,.bridge-chain{transition:none}}
/* Each room reacts to the player's chosen objects. */
.escape-puzzle .escape-book{position:relative;transition:transform .2s,border-color .2s,background .2s}.escape-puzzle .escape-book[aria-pressed=true]{transform:translateY(-4px);outline:2px solid #e5bd6b;outline-offset:2px}.escape-puzzle.puzzle-solved .escape-book[aria-pressed=true]::before{transform:rotate(-14deg) scale(1.12);filter:drop-shadow(0 0 7px #fff0a2)}
.escape-light-grid{padding:.85rem;border:1px solid #d6cbe1;border-radius:1rem;background:linear-gradient(135deg,#eae5f4,#f8f5fb)}.escape-light-card{position:relative;overflow:hidden;background:#fdfbff}.escape-puzzle .escape-light-choice::before{transition:filter .2s,opacity .2s}.escape-puzzle .escape-light-choice[aria-pressed=true]::before{filter:grayscale(1) brightness(.68);opacity:.8}.escape-puzzle.puzzle-solved .escape-light-choice:not([aria-pressed=true])::before{filter:drop-shadow(0 0 6px #f7d06f)}
.escape-code-grid{gap:.75rem;padding:1rem;border:3px solid #b18b55;border-radius:1rem;background:linear-gradient(145deg,#775338,#493a30);box-shadow:inset 0 0 0 3px #d0ad74}.escape-code-label{box-shadow:inset 0 3px 6px #56432822}.escape-puzzle.puzzle-solved .escape-code-grid{border-color:#d6bd79;box-shadow:inset 0 0 0 3px #e3d199,0 0 18px #ddbf7077}
@media(prefers-reduced-motion:reduce){.escape-puzzle .escape-book,.escape-puzzle .escape-light-choice::before{transition:none}}
.escape-puzzle .escape-bridge-safety{margin:.1rem 0;color:#66552f;font-size:.9rem;line-height:1.45}
/* Three different-sized gears carry the problems; the fields show only their matching gear. */
.escape-gear-machine{background:#263f59}.escape-bridge-landscape svg{display:block;width:100%;height:auto}.escape-gear-machine .bridge-deck{transform-origin:102px 125px;transform:rotate(-13deg)}.escape-gear-machine.is-solved .bridge-deck{transform:rotate(0)}
.escape-task-gears{display:flex;justify-content:center;align-items:center;gap:clamp(.25rem,1.5vw,.75rem);padding:.35rem .3rem 1rem;background:linear-gradient(#36566b,#1c344d)}.escape-task-gear{position:relative;display:grid;place-items:center;flex:none;color:#19393b;font-weight:900;line-height:1}.escape-task-gear::before{content:'';position:absolute;inset:0;background:url('/assets/escape/puzzle/gear.svg?v=20261031-precise1') center/contain no-repeat}.escape-task-gear.gear-large{width:clamp(5.6rem,14vw,8rem);aspect-ratio:1}.escape-task-gear.gear-medium{width:clamp(4.6rem,11.5vw,6.6rem);aspect-ratio:1}.escape-task-gear.gear-small{width:clamp(3.65rem,9vw,5.2rem);aspect-ratio:1}.escape-gear-expression{position:relative;z-index:1;white-space:nowrap;font-size:clamp(.7rem,1.8vw,1.1rem);letter-spacing:-.04em}.gear-small .escape-gear-expression{font-size:clamp(.62rem,1.55vw,.93rem)}.escape-gear-machine.is-solved .escape-task-gear::before{animation:escape-gear-turn 1.6s ease-in-out both}.escape-gear-machine.is-solved .gear-medium::before{animation-direction:reverse}
.escape-gear-inputs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem;margin:1rem 0}.escape-gear-input{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:.45rem;min-width:0;min-height:8rem;padding:.7rem .3rem;border:1px solid #d7c6a6;border-radius:.8rem;background:#fff8e8}.escape-input-gear{display:block;flex:none;background:url('/assets/escape/puzzle/gear.svg?v=20261031-precise1') center/contain no-repeat}.escape-gear-input.gear-large .escape-input-gear{width:4rem;height:4rem}.escape-gear-input.gear-medium .escape-input-gear{width:3.1rem;height:3.1rem}.escape-gear-input.gear-small .escape-input-gear{width:2.25rem;height:2.25rem}.escape-puzzle input.escape-gear-answer{width:min(100%,5rem);min-width:0}.escape-puzzle input.escape-gear-answer[aria-invalid=true]{border-color:#b24432}
@keyframes escape-gear-turn{to{transform:rotate(360deg)}}@media(max-width:380px){.escape-task-gears{gap:.2rem}.escape-task-gear.gear-large{width:5.1rem}.escape-task-gear.gear-medium{width:4.15rem}.escape-task-gear.gear-small{width:3.35rem}.escape-gear-expression{font-size:.69rem}.gear-small .escape-gear-expression{font-size:.6rem}.escape-gear-inputs{gap:.3rem}.escape-gear-input{min-height:7rem;padding:.5rem .2rem}.escape-gear-input.gear-large .escape-input-gear{width:3.4rem;height:3.4rem}.escape-gear-input.gear-medium .escape-input-gear{width:2.65rem;height:2.65rem}.escape-gear-input.gear-small .escape-input-gear{width:1.9rem;height:1.9rem}}@media(prefers-reduced-motion:reduce){.escape-gear-machine.is-solved .escape-task-gear::before{animation:none}}
.escape-gear-expression{padding:.16rem .22rem;border:1px solid #9f7942;border-radius:.35rem;background:#fff8e7;color:#18343d;box-shadow:0 1px 2px #44321d33;font-size:clamp(.78rem,1.8vw,1.1rem);letter-spacing:-.04em}.gear-small .escape-gear-expression{font-size:clamp(.72rem,1.55vw,.93rem)}@media(max-width:380px){.escape-gear-expression{font-size:.77rem}.gear-small .escape-gear-expression{font-size:.7rem}}

/* Give the lowered bridge its own calm, focused moment of celebration. */
body.escape-celebrating{overflow:hidden}
.escape-bridge-celebration{box-sizing:border-box;width:min(44rem,calc(100vw - 2rem));max-height:calc(100dvh - 2rem);padding:clamp(1rem,3vw,2rem);border:2px solid #d7b365;border-radius:1.5rem;background:#fffcf3;color:#182a45;text-align:center;box-shadow:0 1.5rem 5rem #08172b80;overflow:auto}
.escape-bridge-celebration::backdrop{background:#08192bdd;backdrop-filter:blur(5px)}
.escape-celebration-stars{color:#a7771e;font-size:1.8rem;letter-spacing:.3em;animation:escape-celebration-shine 3s ease-in-out 2}
.escape-bridge-celebration h2{font-family:Georgia,serif;font-size:clamp(1.5rem,3.5vw,2.2rem);line-height:1.25;margin:.65rem 0 1.2rem}
.escape-bridge-celebration h2:focus{outline:none}
.escape-bridge-celebration .escape-gear-machine{margin:0 0 1.4rem;border:2px solid #d7b365;box-shadow:0 0 1.5rem #e3ba5b55}
.escape-bridge-celebration .bridge-deck{transition:transform 3.6s cubic-bezier(.35,0,.2,1) .7s}
.escape-bridge-celebration .bridge-chain{transition:opacity 3.6s .7s}
.escape-bridge-celebration .is-solved .escape-task-gear::before{animation:escape-gear-turn 4.5s cubic-bezier(.25,.05,.25,1) both}
.escape-bridge-celebration .is-solved .gear-medium::before{animation-direction:reverse}
.escape-bridge-celebration .escape-primary{max-width:100%;white-space:normal}
@keyframes escape-celebration-shine{0%,100%{opacity:.65;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}}
@media(max-height:550px){.escape-bridge-celebration{width:min(30rem,calc(100vw - 2rem));padding:.75rem}.escape-celebration-stars{display:none}.escape-bridge-celebration h2{font-size:1.2rem;margin:.25rem 0 .5rem}.escape-bridge-celebration .escape-gear-machine{max-width:22rem;margin:0 auto .6rem}.escape-bridge-celebration .escape-task-gears{padding-bottom:.3rem}}
@media(prefers-reduced-motion:reduce){.escape-celebration-stars,.escape-bridge-celebration .is-solved .escape-task-gear::before{animation:none}.escape-bridge-celebration .bridge-deck,.escape-bridge-celebration .bridge-chain{transition:none}}

@media(max-height:550px){.escape-bridge-celebration .escape-gear-machine{max-width:16rem}.escape-bridge-celebration .gear-large{width:3.7rem}.escape-bridge-celebration .gear-medium{width:3.1rem}.escape-bridge-celebration .gear-small{width:2.5rem}.escape-bridge-celebration .escape-gear-expression{font-size:.6rem;padding:.12rem}.escape-bridge-celebration .escape-primary{padding:.55rem .8rem;font-size:.9rem}}

@media(max-height:550px){.escape-bridge-celebration{padding:.5rem}.escape-bridge-celebration h2{font-size:1.05rem;line-height:1.2;margin:.15rem 0 .35rem}.escape-bridge-celebration .escape-gear-machine{max-width:14rem}}

/* The visible lifting chain follows its attachment on the moving bridge. */
.escape-gear-machine .bridge-chain,.escape-gear-machine.is-solved .bridge-chain{opacity:1;transition:none}

/* Photographic background and independent cutout deck preserve real movement. */
.escape-photo-machine .bridge-deck{transform-origin:130px 134px;transform:rotate(-14.5deg);filter:drop-shadow(0 4px 3px #0008)}
.escape-photo-machine.is-solved .bridge-deck{transform:rotate(0)}
.escape-photo-machine .bridge-chain{filter:drop-shadow(0 1px 1px #000);opacity:1}
.escape-photo-machine .escape-task-gears{background:linear-gradient(#152b37,#101e29);border-top:1px solid #a8895555;padding-top:.7rem}
.escape-task-gear::before,.escape-input-gear,.escape-clue-wheel,.escape-question::before{background-image:url('/assets/escape/realistic/brass-gear.webp')}
.escape-photo-machine .escape-task-gear::before{filter:drop-shadow(0 4px 3px #0008)}

@media(max-height:550px){.escape-bridge-celebration .escape-photo-machine{max-width:11rem}.escape-bridge-celebration .escape-photo-machine .escape-task-gears{padding:.25rem;gap:.25rem}.escape-bridge-celebration .escape-photo-machine .gear-large{width:3rem}.escape-bridge-celebration .escape-photo-machine .gear-medium{width:2.5rem}.escape-bridge-celebration .escape-photo-machine .gear-small{width:2.2rem}}

/* A solved input starts its matching gear, independently of the other answers. */
.escape-gear-input:has(> .escape-gear-answer[data-accepted="1"]) > .escape-input-gear {
  animation: escape-gear-turn 2.4s linear infinite;
}
@media (prefers-reduced-motion: reduce) {
  .escape-gear-input:has(> .escape-gear-answer[data-accepted="1"]) > .escape-input-gear {
    animation: none;
    filter: drop-shadow(0 0 .25rem #c99030);
  }
}
