:root{--green:#174d40;--red:#b9293c;--gold:#bb8830;--ink:#203c39}*{box-sizing:border-box}body{margin:0;background:#fff;color:var(--ink);font:18px/1.6 system-ui,sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:700 16px/1.4 system-ui;cursor:pointer;border:1px solid #c7d7d1;background:#f4faf7;color:var(--green);border-radius:14px;padding:12px 20px;min-height:48px}button:hover:not(:disabled){filter:brightness(.95)}button:focus-visible,a:focus-visible{outline:4px solid #e7ac31;outline-offset:4px}button:disabled{cursor:default}.primary{background:var(--red);color:white;border:0;box-shadow:0 5px 0 #851e2c}.primary:active{transform:translateY(2px)}header{max-width:1120px;margin:auto;padding:20px 24px;display:flex;justify-content:space-between;align-items:center;gap:16px}header a{font-size:14px;letter-spacing:2px;color:var(--green);text-decoration:none;font-weight:800}.intro{max-width:900px;margin:20px auto 30px;text-align:center;padding:0 24px}.eyebrow{font-weight:800;font-size:14px;letter-spacing:2px;color:#976316}h1,h2{font-family:Georgia,serif;line-height:1.12;color:var(--green)}h1{font-size:clamp(40px,6vw,68px);margin:12px 0 20px}h1 em{color:var(--red)}h2{font-size:32px}.intro>p:not(.eyebrow){max-width:740px;margin:18px auto}.status{display:flex;align-items:center;justify-content:center;gap:22px;flex-wrap:wrap;padding:16px;background:#f1f8f4;border-radius:20px}.status strong{font-size:20px}progress{accent-color:var(--red);height:18px;width:160px}.small{font-size:14px}.map{max-width:1040px;margin:auto;border:4px solid #d9b45d;border-radius:32px;overflow:hidden;background:#deedf0 url('map.png') center/100% 100% no-repeat}.region{min-height:450px;padding:24px 8%;position:relative}.region h2{font-size:26px;background:#fffffff0;border:1px solid #dfbd6b;display:table;padding:10px 20px;border-radius:15px;margin:0 auto 18px;text-align:center}.region .nodes{display:grid;grid-template-columns:repeat(3,1fr);gap:30px 18%;padding:8px 0}.node{justify-self:center;display:flex;align-items:center;flex-direction:column;width:100px;height:115px;border:3px solid #fff;box-shadow:0 5px 0 #96753a,0 6px 18px #203b3b50;background:#fff9df;color:var(--green);padding:4px}.node span{font-size:36px;font-family:Georgia;font-weight:900}.node small{font-size:13px}.node.current{background:var(--red);color:white;outline:3px solid #edc36a;outline-offset:4px}.node.done{background:#1d6751;color:white}.node:disabled{background:#f1ede4;color:#535f5a;border-color:#d1d9d5;opacity:.93}.region:nth-child(even) .nodes{direction:rtl}.region:nth-child(even) .node{direction:ltr}footer{text-align:center;padding:32px;font-size:14px}dialog{border:2px solid #d9b45d;border-radius:26px;color:var(--ink);padding:26px;width:min(780px,94vw);max-height:90vh;overflow:auto;background:#fff}dialog::backdrop{background:#092e2ac4}.close{display:block;margin-left:auto}dialog h2{margin:16px 0}#story{font-size:19px}#play{padding:20px 0}.challenge{font-size:clamp(26px,5vw,44px);line-height:1.7;text-align:center;background:#f4f8f5;border-radius:18px;padding:20px;white-space:pre-line}.choices{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:20px}.choices button{background:#fff8e7;border:2px solid #d8bd73;font-size:22px;min-height:70px}.choices button.wrong{border-color:var(--red)}.memory{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.memory button{font-size:38px;min-height:95px;background:var(--green);color:#fff;border:3px solid #d8bd73}.memory button.face,.memory button.matched{background:#fff7e0;color:var(--ink)}.memory button.matched{border-color:#298561}.order{display:flex;justify-content:center;flex-wrap:wrap;gap:12px}.order button{font-size:28px;min-width:80px;background:#fff7e0}.order button.picked{background:var(--green);color:white}.help{border-top:1px solid #dde6de;padding-top:16px}.help p{background:#fff8df;padding:16px;border-radius:12px}#feedback{font-weight:700;min-height:30px}#feedback.success{color:#146547;background:#e6f4e9;padding:16px;border-radius:12px}#next{width:100%;margin:10px 0}#ending{max-width:900px;margin:32px auto;text-align:center;padding:30px;background:#fff9e9;border:2px solid #d9b45d;border-radius:24px}#ending img{width:100%;border-radius:20px}.flight{overflow:hidden}.flight img{animation:takeoff 3s ease-in-out both}@keyframes takeoff{from{transform:translateY(70px);opacity:.2}to{transform:translateY(0);opacity:1}}#certificate{display:none}[hidden]{display:none!important}@media(max-width:600px){header{padding:14px}.region{min-height:380px;padding:20px 5%}.region .nodes{gap:25px 12%}.node{width:76px;height:104px}.node span{font-size:30px}.node small{font-size:12px}.choices{gap:8px}.choices button{padding:10px 4px;font-size:18px}.memory{gap:8px}.memory button{font-size:28px;min-height:74px;padding:8px}dialog{padding:18px}.status{gap:14px}#ending{margin:20px 12px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;scroll-behavior:auto!important}}@page{size:letter;margin:.5in}@media print{body>*{display:none!important}body>#certificate{display:block!important;text-align:center;border:3px double #bb8830;padding:24px;height:9.9in;font-family:Georgia}#certificate h1{font-size:42px}#certificate img{width:85%;max-height:3.8in;object-fit:contain}#certificate p{font-size:18px}.name-line{border-bottom:1px solid #174d40;width:80%;height:36px;margin:0 auto 24px}#certificate h2{font-size:28px}}
/* Christmas cast and the upgraded challenge rooms */
.portrait{display:block;width:90px;height:120px;flex-shrink:0;background:#fff url('christmas-cast.png') var(--px) var(--py)/400% 200% no-repeat;border-radius:14px}#cast-band{max-width:1040px;margin:0 auto 24px;display:grid;grid-template-columns:repeat(8,1fr);gap:8px;padding:16px;border-top:2px solid #dcbb72;border-bottom:2px solid #dcbb72}#cast-band>div{text-align:center;font-size:14px;color:var(--green)}#cast-band .portrait{margin:auto;width:78px;height:104px}.region-hosts{display:flex;align-items:center;justify-content:center;gap:16px;margin-bottom:18px}.region-hosts>div{background:#fffdf5ee;border:2px solid #d9b45d;border-radius:16px;padding:12px;text-align:center}.region-hosts h2{background:none;border:0;padding:0;margin:0;font-size:25px}.region-hosts p{margin:8px 0 0;font-size:14px}.region{min-height:480px;padding-top:20px}.region-hosts .portrait{box-shadow:0 4px 14px #234d3b33}.mentor{display:flex;align-items:center;gap:18px;background:#fff8e7;border:1px solid #e5cc8e;border-radius:18px;margin-top:16px;padding:8px 16px}.mentor strong{font:700 27px Georgia;color:var(--red)}.mentor span:not(.portrait){display:block;font-size:15px}.mentor .portrait{width:75px;height:100px}#game{border:4px double #bb8830;box-shadow:inset 0 7px #b9293c}.clue-box{white-space:pre-line;background:#fff8e7;border:2px solid #e2c688;border-radius:18px;padding:20px;text-align:center;font-size:22px;line-height:1.85}.game-counter{font-weight:800;color:var(--green)}.code-row{display:flex;gap:12px;margin:12px 0}.code-row input{min-width:0;width:50%;font:700 30px system-ui;text-align:center;text-transform:uppercase;letter-spacing:4px;border:2px solid var(--gold);border-radius:14px;padding:12px}.code-row button{flex:1}#code-form label{font-weight:800}.maze-grid{display:grid;grid-template-columns:repeat(var(--cols),1fr);gap:5px;max-width:450px;margin:auto;padding:8px;background:#d4e8eb;border-radius:16px}.maze-cell{aspect-ratio:1;display:grid;place-items:center;background:#fffef1;border-radius:8px;font-size:clamp(22px,4vw,36px);color:#8caaa5}.maze-cell.wall{background:#819eac;color:white}.maze-cell.player{background:#ffe49b;outline:3px solid #b9293c;outline-offset:-3px}.maze-controls{display:flex;justify-content:center;gap:12px;margin:20px 0}.maze-controls button{font-size:28px;min-width:60px;background:var(--green);color:white}.observation{display:grid;grid-template-columns:repeat(var(--cols),1fr);gap:10px;margin:18px 0}.observation button{font-size:28px;aspect-ratio:1;padding:6px;background:#fffbef;border:2px solid #e0c782}.observation button.selected{background:#cfedda;border:4px solid #176348}.observation.labels button{font-size:25px;aspect-ratio:auto;min-height:80px;white-space:nowrap}.signal{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;padding:20px 8px;margin:12px 0;background:#f1f7f4;border-radius:16px}.signal span{font-size:34px;width:60px;min-height:65px;background:#fff;border:2px solid #d4b573;border-radius:12px;display:grid;place-items:center}.signal-options{display:flex;gap:12px;justify-content:center;margin:20px 0}.signal-options button{font-size:36px;background:#fff7df;border:2px solid #d9b45d}.memory button{background:#b9293c}.choices button{font-size:20px}#ending:before{content:'✦ ✦ ✦';color:#b58727;font-size:35px;letter-spacing:16px}@media(max-width:650px){#cast-band{grid-template-columns:repeat(4,1fr);margin:0 10px 20px}.region-hosts{gap:8px}.region-hosts .portrait{width:54px;height:72px}.region-hosts h2{font-size:21px}.region-hosts p{font-size:13px}.region{padding:16px 4%;min-height:425px}.observation{gap:6px}.observation button{font-size:23px}.observation.labels button{font-size:18px;min-height:64px;padding:4px}.clue-box{font-size:19px;padding:14px}.signal{gap:5px}.signal span{width:45px;min-height:54px;font-size:27px}.signal-options{gap:8px}.signal-options button{padding:10px;font-size:30px}.code-row{flex-direction:column}.code-row input{width:100%}.maze-controls{gap:9px}.maze-controls button{min-width:52px;padding:10px}.mentor strong{font-size:25px}}
