
:root{font-family:'DM Sans',sans-serif;color:#163d32;background:#f4f3e9;font-synthesis:none}*{box-sizing:border-box}body{margin:0}header,main,footer{max-width:1200px;margin:auto}header{padding:28px 30px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #163d3220}header a{font-size:25px;font-weight:800;text-decoration:none;color:inherit}header a span,.edition{font-size:10px;letter-spacing:2px;font-weight:600}.edition{color:#66776b}main{padding:0 30px}.intro{display:grid;grid-template-columns:1.3fr 1fr;gap:90px;padding:52px 0 35px;align-items:center}.eyebrow{font-size:10px;font-weight:700;letter-spacing:2px}h1{font-family:Manrope,sans-serif;font-size:clamp(40px,5.6vw,68px);letter-spacing:-3px;line-height:1.05;margin:18px 0}h1 em{font-family:Georgia,serif;font-weight:400;color:#728a42}p{line-height:1.65}.lead{font-size:15px;color:#657468;max-width:350px}.guide{border-left:1px solid #163d3230;padding-left:30px}.tag{display:inline-block;border:1px solid #163d3240;border-radius:30px;padding:6px 12px;font-size:9px;letter-spacing:1.5px}h2{font-family:Manrope,sans-serif;font-size:24px;letter-spacing:-.8px}.guide p{font-size:13px;color:#5d7161}.guide .hint{font-size:12px;color:#8a6643}.playarea{background:#fffdf5;border:1px solid #d6dccb;border-radius:18px;overflow:hidden;box-shadow:0 15px 35px #163d3209}.toolbar{display:flex;align-items:center;gap:12px;padding:13px 20px;flex-wrap:wrap}.modes{display:flex;background:#eaeede;border-radius:9px;padding:3px}button{font:inherit;font-weight:600;font-size:12px;border:0;background:transparent;color:inherit;cursor:pointer;padding:10px 14px;border-radius:7px}button:hover{background:#dce6d3}button:focus-visible,textarea:focus-visible{outline:3px solid #ac7ada;outline-offset:2px}.selected{background:#163d32!important;color:white}.score{margin-left:auto;display:flex;gap:22px;font-size:11px}.score span{display:flex;align-items:center;gap:6px}.score b{font-size:17px}.score i{width:7px;height:7px;border-radius:50%}.green{background:#679846}.purple{background:#9863bc}#game{width:100%;aspect-ratio:1100/680;background:#dae6b9;position:relative}canvas{display:block!important}#load-error{padding:30px}.caption{display:flex;gap:10px;align-items:center;padding:0 20px;background:#edf1e3;min-height:52px;font-size:12px}.caption p{margin:10px 0}.pulse{flex:none;width:6px;height:6px;border-radius:50%;background:#79a34d}#clock{margin-left:auto;white-space:nowrap;font-variant-numeric:tabular-nums}.keyboard{padding:12px 20px;display:flex;align-items:center;gap:15px;justify-content:space-between;font-size:10px;color:#657468}#start{background:#e0edac;color:#163d32;font-size:12px}.reflection{display:grid;grid-template-columns:1fr 1fr;gap:80px;padding:48px 0}.reflection h2{margin:12px 0}.reflection p{font-size:13px;color:#617261;max-width:370px}.small{font-size:10px;color:#75816e}label{font-size:11px;font-weight:600;display:block;margin-bottom:9px}textarea{font:inherit;font-size:13px;width:100%;min-height:110px;resize:vertical;border:1px solid #ccd3be;background:#fbfaf3;border-radius:10px;padding:15px;color:#163d32}.note-actions{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:#70836a}.note-actions button{font-size:11px}footer{border-top:1px solid #163d3220;padding:24px 30px;display:flex;justify-content:space-between;font-size:9px;letter-spacing:1px;color:#75816e}@media(max-width:650px){header{padding:18px}.edition{font-size:8px;letter-spacing:.5px}header a{font-size:20px}header a span{display:none}main{padding:0 12px}.intro{padding:22px 6px;gap:16px;grid-template-columns:1fr}h1{font-size:43px;letter-spacing:-2px;margin:10px 0}h1 br{display:none}.lead{margin-bottom:0;max-width:none;font-size:13px}.guide{padding-left:15px}.guide h2{font-size:18px;margin:8px 0}.guide p{font-size:12px;margin:5px 0}.tag{font-size:8px;padding:4px 9px}.toolbar{gap:4px;padding:8px}button{padding:9px 10px}.score{gap:8px;font-size:10px}.score b{font-size:14px}#reset span{display:none}#game{aspect-ratio:1100/820}.caption{padding:0 10px;font-size:11px}.keyboard{padding:9px 10px}.keyboard>span{font-size:9px;max-width:150px}.reflection{grid-template-columns:1fr;gap:18px;padding:28px 6px}.reflection p{max-width:none}footer{padding:18px;gap:15px;font-size:8px}}

.build-types{display:flex;gap:6px;padding:0 15px 10px;flex-wrap:wrap}.build-types button{font-size:11px;padding:8px 13px;border:1px solid #d5decd;border-radius:20px}.build-types .chosen{background:#e0edac;border-color:#819c50}.playarea{background:#fffdf5}@media(max-width:650px){.build-types{gap:4px;padding:2px 8px 8px}.build-types button{font-size:10px;padding:7px 9px}.score{gap:6px}.toolbar{gap:2px}#game{min-height:290px}}

.view-controls{display:flex;align-items:center;justify-content:flex-end;gap:4px;flex-wrap:wrap;padding:8px 12px;background:#eaf0dd;border-top:1px solid #d6dfca}.view-controls button{min-width:44px;min-height:44px;font-size:20px;background:#fffdf5;border:1px solid #cbd7b9}.view-controls button:disabled{opacity:.35;cursor:default}.view-controls #view-reset{font-size:12px}.view-controls span{font-size:12px;min-width:45px;text-align:center;font-variant-numeric:tabular-nums}@media(max-width:650px){.view-controls{gap:3px;padding:6px;justify-content:center}.view-controls button{min-width:40px;padding:7px;font-size:20px}.view-controls #view-reset{font-size:10px}}

#game canvas{touch-action:none;cursor:grab}#game canvas:active{cursor:grabbing}

#phase-result{margin:0;padding:18px 22px;background:#163d32;color:#fffdf5;font-weight:700;line-height:1.6}#phase-result[hidden]{display:none}
.build-types button[data-type="0"]{border:3px solid #e4aa65;background:#e4aa6530;color:#163d32}.build-types button[data-type="0"].chosen{background:#e4aa65;border-color:#163d32;box-shadow:0 0 0 2px #e4aa65;}
.build-types button[data-type="1"]{border:3px solid #6cb8ad;background:#6cb8ad30;color:#163d32}.build-types button[data-type="1"].chosen{background:#6cb8ad;border-color:#163d32;box-shadow:0 0 0 2px #6cb8ad;}
.build-types button[data-type="2"]{border:3px solid #7f9bc8;background:#7f9bc830;color:#163d32}.build-types button[data-type="2"].chosen{background:#7f9bc8;border-color:#163d32;box-shadow:0 0 0 2px #7f9bc8;}
.build-types button[data-type="3"]{border:3px solid #c8b065;background:#c8b06530;color:#163d32}.build-types button[data-type="3"].chosen{background:#c8b065;border-color:#163d32;box-shadow:0 0 0 2px #c8b065;}
.build-types button[data-type="4"]{border:3px solid #a49acb;background:#a49acb30;color:#163d32}.build-types button[data-type="4"].chosen{background:#a49acb;border-color:#163d32;box-shadow:0 0 0 2px #a49acb;}
.build-types button[data-type="5"]{border:3px solid #c28b70;background:#c28b7030;color:#163d32}.build-types button[data-type="5"].chosen{background:#c28b70;border-color:#163d32;box-shadow:0 0 0 2px #c28b70;}
.build-types button[data-type="6"]{border:3px solid #75a8bc;background:#75a8bc30;color:#163d32}.build-types button[data-type="6"].chosen{background:#75a8bc;border-color:#163d32;box-shadow:0 0 0 2px #75a8bc;}

.round-settings{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 18px;background:#f3f2e8}.round-settings label{margin:0}.round-settings select{padding:10px;border:1px solid #9bab91;border-radius:7px;color:#163d32;background:#fffdf5;font:inherit;font-size:12px}.round-settings span{font-size:11px;color:#617261}

@media(max-width:650px){#game{aspect-ratio:auto;height:78svh;min-height:440px;max-height:950px;width:100%}.playarea{border-radius:12px}.keyboard>span{max-width:190px}}

@media(max-width:650px){.view-controls{flex-wrap:nowrap;justify-content:flex-end;gap:5px;padding:6px 8px}.view-controls #view-left,.view-controls #view-right,.view-controls #view-up,.view-controls #view-down{display:none}.view-controls button{flex:0 0 auto;min-width:40px;min-height:40px}.view-controls #view-reset{white-space:nowrap;font-size:11px;margin-left:auto;padding:8px 10px}.view-controls span{min-width:42px;flex:0 0 auto}}

@media(pointer:coarse) and (max-width:950px){.view-controls{display:none}}
@media(max-width:650px){.view-controls{display:none}}

.play-guide{padding-left:22px;line-height:1.65;font-size:14px;color:#365646}.play-guide li{margin:10px 0;padding-left:4px}
@media(max-width:650px){header a{font-size:24px}.edition{font-size:11px;letter-spacing:0}.eyebrow,.tag{font-size:12px}.guide h2{font-size:26px}.lead,.guide p,.guide .hint,.reflection p{font-size:16px;line-height:1.6}.play-guide{font-size:16px;line-height:1.6;padding-left:24px}.play-guide li{margin:14px 0}.guide{padding-left:16px}.toolbar{gap:6px;padding:10px}.toolbar button{font-size:14px;min-height:44px}.score{font-size:13px;gap:12px}.score b{font-size:19px}.build-types{gap:8px;padding:10px}.build-types button{font-size:14px;min-height:44px;padding:9px 12px}.round-settings{padding:12px;gap:8px}.round-settings label,.round-settings span{font-size:14px}.round-settings select{font-size:14px;max-width:100%;min-height:44px}.caption{font-size:15px;padding:8px 12px;align-items:flex-start}.caption p{line-height:1.5;margin:2px 0}#clock{font-size:17px;font-weight:700}.pulse{margin-top:9px}#start{font-size:17px;min-height:48px;padding:12px 18px}.keyboard{font-size:13px;flex-wrap:wrap}.keyboard>span{font-size:13px;max-width:none}.reflection h2{font-size:26px}label,textarea{font-size:16px}.small,.note-actions{font-size:13px}.note-actions button{font-size:14px}footer{font-size:11px;line-height:1.5}#phase-result{font-size:17px}}

[hidden]{display:none!important}#region-picker{max-width:1100px;margin:30px auto 60px;padding:24px}.region-heading h1{font-size:clamp(30px,5vw,56px);max-width:800px}.region-heading p{line-height:1.6}#europe-map{background:#d6e7e7;border:1px solid #b7cfd0;border-radius:24px;overflow:hidden;margin:24px 0}#europe-map svg{display:block;width:100%;height:auto;max-height:65vh;cursor:crosshair;touch-action:manipulation}#europe-map .land{fill:#cad6b5;stroke:#68856f;stroke-width:1.2;stroke-linejoin:round}#europe-map text{font-family:Arial;fill:#4e6a64;font-size:14px;letter-spacing:2px;pointer-events:none}.region-actions{display:flex;gap:20px;align-items:center;justify-content:space-between;flex-wrap:wrap}#enter-region{background:#163d32;color:#fff;padding:14px 24px;border-radius:24px}#enter-region:disabled{opacity:.45}#europe-map svg.zooming{transition:transform .85s ease-in,opacity .85s ease-in;transform:scale(7);opacity:0}@media(prefers-reduced-motion:reduce){#europe-map svg.zooming{transition:none}}

#europe-map .land:hover{fill:#adc391}#europe-map .country-selected{fill:#e6b16b;stroke:#8d5934;stroke-width:2}#country-badge{position:fixed;right:16px;top:76px;z-index:30;font-size:30px;background:#fffef2;border:1px solid #c9d5bd;border-radius:14px;padding:4px 10px;box-shadow:0 3px 15px #163d3222;pointer-events:none}#country-choice{display:block;max-width:100%;padding:12px;margin:8px 0 20px;border:1px solid #809d8a;border-radius:10px;background:#fffef4;color:#163d32;font:inherit}.country-label{font-weight:600}

/* Start stays over the map, including on small screens. */
#game>#start{position:absolute;z-index:10;top:50%;left:50%;transform:translate(-50%,-50%);padding:16px 26px;min-height:48px;white-space:nowrap;background:#163d32;color:#fffef2;border:2px solid #fffef2;border-radius:28px;box-shadow:0 5px 24px #163d3240;font-size:15px}

#game{isolation:isolate}#stage-banner{padding:14px 20px;background:#eee4f1;display:flex;flex-wrap:wrap;align-items:center;gap:10px 24px;font-size:12px}#stage-banner strong{color:#75458f}#stage-banner b{margin-left:auto}.map-panel{position:absolute;z-index:40;left:50%;top:50%;transform:translate(-50%,-50%);width:min(92%,530px);max-height:92%;overflow:auto;background:#fffdf3;color:#163d32;border:1px solid #becab2;border-radius:18px;padding:26px;box-shadow:0 15px 60px #163d3255}.map-panel h2{margin:8px 0 14px}.map-panel p{font-size:13px;line-height:1.5}.map-panel .eyebrow{font-size:9px;color:#75458f}.map-panel button{min-height:44px}.primary-action{background:#163d32;color:#fffdf3;padding:13px 20px!important}.panel-close{float:right;font-size:24px;line-height:1}#score-counter{font-size:76px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.1;color:#64863e}#score-breakdown{font-size:12px}.clue-card,.suspect-option{display:block;width:100%;text-align:left;border:1px solid #d5ddca;background:#f2f3e8;margin:8px 0;padding:11px 13px;font-size:12px;font-weight:500}.clue-card:hover,.suspect-option:hover{background:#e6ead9}#evidence-feedback{font-weight:600;color:#75458f}#game:has(.map-panel:not([hidden])) canvas{pointer-events:none}@media(max-width:650px){.map-panel{padding:18px;max-height:94%}.map-panel h2{font-size:21px}#score-counter{font-size:64px}#stage-banner{padding:10px;font-size:11px}}

#language-picker{max-width:760px;margin:60px auto;padding:30px}.language-options{display:flex;gap:20px;flex-wrap:wrap}.language-options button{background:#163d32;color:white;padding:18px 30px;font-size:18px}.total-score{background:#e4edc5;border-radius:10px;padding:5px 10px}.total-score b{font-size:24px}#final-total{font-size:64px;font-weight:800;color:#64863e}.discovery-card{position:absolute;z-index:25;left:4%;right:4%;bottom:12px;background:#fffdf3ed;padding:16px 20px;border:1px solid #c8bfaa;border-radius:14px;box-shadow:0 8px 30px #163d3233}.discovery-card h3{font-size:16px;margin:2px 0 6px}.discovery-card p{font-size:12px;line-height:1.5;margin:0}.discovery-card small{font-size:9px;color:#827364}#discovery-points{float:left;font-size:32px;font-weight:800;padding-right:15px;color:#75458f}#certificate-form input:not([type=checkbox]){width:100%;padding:10px;border:1px solid #b8c4ad;border-radius:7px;margin-bottom:12px;font:inherit}#certificate-form label{margin-bottom:5px}.consent-label{display:flex;align-items:flex-start;gap:8px;font-size:11px}.privacy-note{font-size:10px!important;color:#647262}#certificate-link{display:inline-block;text-decoration:none;font-size:12px;border-radius:7px}.map-panel:focus{outline:0}@media(max-width:650px){.score{width:100%;justify-content:space-between}.total-score b{font-size:22px}.discovery-card{padding:12px;max-height:40%;overflow:auto}#stage-banner button{width:100%}}

/* Dedicated game viewport: the page stays still; only forms/dialogs may scroll. */
body.game-mode{overflow:hidden;overscroll-behavior:none}
body.game-mode .playarea{position:fixed;inset:0;z-index:1000;width:100%;height:100dvh;max-height:100dvh;margin:0;border:0;border-radius:0;display:flex;flex-direction:column;overflow:hidden;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);background:#fffdf5}
body.game-mode .toolbar{flex:none;display:flex;flex-wrap:wrap;gap:4px;padding:5px 8px}
body.game-mode .toolbar button{min-height:40px;padding:6px 9px;font-size:12px}
body.game-mode .score{flex:1;min-width:180px;gap:8px;width:auto;font-size:11px}
body.game-mode .score b{font-size:18px}
body.game-mode .round-settings,body.game-mode .keyboard{display:none!important}
body.game-mode .build-types{flex:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;padding:6px 8px}
body.game-mode .build-types button{font-size:11px;min-height:44px;line-height:1.2;padding:5px 3px;border-width:2px;border-radius:10px;overflow-wrap:anywhere}
body.game-mode .view-controls{flex:none;display:flex;flex-wrap:wrap;gap:3px;padding:3px 8px}
body.game-mode .view-controls button{min-height:36px;padding:4px 8px;font-size:12px}
body.game-mode #game{flex:1 1 0;min-height:0!important;max-height:none;height:auto!important;aspect-ratio:auto!important;width:100%}
body.game-mode .caption{flex:none;min-height:36px;padding:4px 8px;font-size:11px}
body.game-mode .caption p{max-height:2.8em;overflow:hidden;line-height:1.4}
body.game-mode #stage-banner{flex:none;gap:3px 8px;padding:5px 8px;font-size:11px}
body.game-mode #stage-banner span{display:none}
body.game-mode #stage-banner button{width:auto;min-height:40px;padding:6px 10px!important}
body.game-mode .map-panel{position:fixed;inset:70px 10px 10px;left:50%;width:min(94%,560px);height:auto;max-height:calc(100dvh - 90px);transform:translateX(-50%);padding:18px;overscroll-behavior:contain;z-index:1100}
body.game-mode .map-panel [id=begin-stage]{position:sticky;bottom:0;width:100%}
@media(orientation:landscape) and (max-height:550px){body.game-mode .build-types{grid-template-columns:repeat(7,minmax(0,1fr));padding:3px 8px}body.game-mode .toolbar{flex-wrap:nowrap}body.game-mode .toolbar .score span:not(.total-score){display:none}body.game-mode .build-types button{min-height:36px}body.game-mode .caption{min-height:28px}body.game-mode .view-controls{position:absolute;right:8px;bottom:36px;z-index:20;background:#fffdf3dd;border-radius:12px}body.game-mode .view-controls button[id^=view-]:not(#view-reset){display:none}}
.telescope-unlocked{border:3px solid #d9b455;background:#fff9df;box-shadow:0 0 0 8px #efc45544,0 12px 70px #365d4660;animation:reward-glow .8s ease-in-out 3 alternate}
#telescope-reward{position:relative;height:120px;overflow:hidden;text-align:center;pointer-events:none}
.reward-symbol{font-size:86px;line-height:120px;animation:reward-pop .65s cubic-bezier(.2,1.5,.5,1) both}
.reward-confetti{position:absolute;left:var(--x);top:-20px;font-size:24px;animation:reward-fall 2.4s var(--delay) ease-out 2 both}
@keyframes reward-pop{from{transform:scale(.15) rotate(-30deg);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes reward-fall{from{transform:translateY(-20px) rotate(0);opacity:1}to{transform:translateY(170px) rotate(var(--turn));opacity:0}}
@keyframes reward-glow{to{box-shadow:0 0 0 12px #efc45577,0 0 55px #d9b45588}}
@media(prefers-reduced-motion:reduce){.telescope-unlocked,.reward-symbol,.reward-confetti{animation:none}.reward-confetti{top:40px}}

/* Clues block the map until the answer and explanation have been acknowledged. */
#game:has(#discovery-result:not([hidden])) canvas{pointer-events:none}
.discovery-card{z-index:45;left:50%;right:auto;top:50%;bottom:auto;transform:translate(-50%,-50%);width:min(94%,600px);max-height:94%;overflow:auto;background:#fffdf3;padding:22px}
.discovery-card h4{font-size:16px;line-height:1.45;clear:both;margin:18px 0 10px}
.discovery-card p{font-size:14px;line-height:1.55}.discovery-card .panel-close{float:none;display:block;margin:0 0 15px auto;font-size:13px;min-height:44px}
#quiz-explanation{margin:14px 0}#quiz-source{font-size:12px;color:#37644b;text-decoration:underline}.secondary-action{display:block;width:100%;margin:12px 0;padding:12px;border:2px solid #75458f;color:#543169;background:#f4e8fa}
body.game-mode .discovery-card{position:fixed;top:70px;bottom:12px;transform:translateX(-50%);max-height:calc(100dvh - 82px);height:max-content;z-index:1150}
@media(prefers-reduced-motion:reduce){.reward-confetti{display:none}}

.completion-confetti{height:55px;position:relative;overflow:hidden;pointer-events:none}.completion-confetti .reward-confetti{font-size:28px}

#stage-instructions{min-height:340px}#phase-achievement{font-size:52px;font-weight:800;color:#64863e;margin:10px 0;font-variant-numeric:tabular-nums}
@media(pointer:fine){#game.telescope-view canvas{cursor:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='64'%20height='64'%20viewBox='0%200%2064%2064'%3E%3Ccircle%20cx='32'%20cy='32'%20r='23'%20fill='%2316353233'%20stroke='%23fff8c6'%20stroke-width='3'/%3E%3Ccircle%20cx='32'%20cy='32'%20r='19'%20fill='none'%20stroke='%23163d32'%20stroke-width='2'/%3E%3Cpath%20d='M32%203v17m0%2024v17M3%2032h17m24%200h17'%20stroke='%23fff8c6'%20stroke-width='3'/%3E%3Cpath%20d='M32%205v15m0%2024v15M5%2032h15m24%200h15'%20stroke='%23163d32'/%3E%3Ccircle%20cx='32'%20cy='32'%20r='2'%20fill='%23fff8c6'/%3E%3C/svg%3E") 32 32,crosshair!important}}
#stage-notice{position:absolute;top:14px;left:50%;transform:translateX(-50%);z-index:35;pointer-events:none;max-width:90%;width:max-content;padding:12px 20px;border-radius:12px;font-weight:800;text-align:center;animation:reward-pop .25s ease-out}
.interception-success{background:#d4f2da;color:#17452e;border:2px solid #3b9868}.interception-missed{background:#ffe0df;color:#8a263f;border:2px solid #dc5b6c}

#stage-instructions{border:3px solid #d9b455;background:#fff9df}#stage-instructions .completion-confetti{height:70px}

/* The host owns canvas dimensions, in page view and native fullscreen alike. */
#game{min-width:0;overflow:hidden}
#game canvas{position:absolute!important;inset:0;margin:0!important;width:100%!important;height:100%!important}
body.game-mode .playarea{max-width:none;max-height:none;height:100%;height:100dvh}
body.game-mode .toolbar>*{flex-shrink:0}
body.game-mode .toolbar button,body.game-mode .view-controls button{white-space:nowrap}
@media(min-width:900px){
 body.game-mode .build-types{grid-template-columns:repeat(7,minmax(100px,170px));justify-content:start;gap:8px}
 body.game-mode .build-types button{font-size:13px;min-height:44px;overflow-wrap:normal}
 body.game-mode .toolbar{gap:10px;padding:8px 16px}
 body.game-mode .score{flex:0 1 auto;margin-left:auto;gap:20px}
 body.game-mode .view-controls{padding:5px 16px}
}

/* SIF 2026: shared identity with the conference landing page. */
:root{font-family:'Source Sans Pro','Segoe UI',Arial,sans-serif;color:#ffffff;background:#081a28;--sif-navy:#081a28;--sif-surface:#102b3b;--sif-blue:#1a547a;--sif-cyan:#009fe3;--sif-yellow:#ffd166}
header,footer{border-color:#1a547a}header a{color:#fff}.edition,.lead,.guide p,.guide .hint,.small,.reflection p,.note-actions,footer,.keyboard{color:#cbd5e1}
h1,h2,h3,h4{font-family:'Source Sans Pro','Segoe UI',Arial,sans-serif}h1{letter-spacing:-1.8px}h1 em{font-family:inherit;font-style:normal;font-weight:800;color:#ffd166}.eyebrow,.tag{color:#ffd166}.guide{border-color:#1a547a}.play-guide{color:#d7e7ef}.tag{border-color:#1a547a}
.playarea,.toolbar,.map-panel,.discovery-card{background:#102b3b;color:#fff;border-color:#1a547a}.playarea{box-shadow:0 18px 50px #0004}.modes,.round-settings,.view-controls,.caption,#stage-banner{background:#0c2438;color:#d7e7ef;border-color:#1a547a}.view-controls button{background:#143548;border-color:#1a547a;color:#fff}button:hover{background:#1a547a}button:focus-visible,a:focus-visible,textarea:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #009fe3;outline-offset:3px}
.selected,.primary-action,#start,#game>#start,#enter-region,.language-options button{background:#ffd166!important;border-color:#ffd166!important;color:#102b3b!important;border-radius:6px;font-weight:800}.primary-action:hover,#start:hover,#game>#start:hover,#enter-region:hover,.language-options button:hover{background:#ffe09a!important}.primary-action:disabled{opacity:.55}.round-settings span{color:#cbd5e1}.build-types button{background:#143548!important;color:#fff!important;border-radius:8px}.build-types .chosen{background:#1a547a!important;box-shadow:0 0 0 2px #ffd166!important}.total-score{background:#1a547a;color:#fff}.score b,#final-total,#score-counter,#phase-achievement{color:#ffd166}
.map-panel .eyebrow,#stage-banner strong,#evidence-feedback{color:#ffd166}.clue-card,.suspect-option,.quiz-option{background:#143548;color:#fff;border-color:#1a547a}.clue-card:hover,.suspect-option:hover,.quiz-option:hover{background:#1a547a}.secondary-action{background:#143548;color:#d7e7ef;border-color:#009fe3}#quiz-source{color:#76d3ff}#stage-instructions,.telescope-unlocked{background:#102b3b;color:#fff;border-color:#ffd166}.privacy-note{color:#cbd5e1}.standing-panel{background:#143548!important;color:#fff}.standing-panel p[style*="background"]{background:#1a547a!important}
textarea,input:not([type=checkbox]),select,#country-choice{background:#081a28;color:#fff;border:1px solid #1a547a}textarea::placeholder,input::placeholder{color:#94a3b8}#certificate-form input:not([type=checkbox]){background:#081a28;color:#fff;border-color:#1a547a}.consent-label{color:#d7e7ef}#country-badge{background:#102b3b;border-color:#1a547a}#europe-map{background:#0c2438;border-color:#1a547a}#europe-map .land{fill:#3b7798;stroke:#a8d2e8}#europe-map .land:hover{fill:#009fe3}#europe-map .country-selected{fill:#ffd166;stroke:#fff}#europe-map text{fill:#d7e7ef}#game{background:#9ac8e0}.pulse{background:#009fe3}body.game-mode .view-controls{background:#102b3bed}
@media(max-width:650px){h1{letter-spacing:-1px}.map-panel,.discovery-card{border-width:2px}.lead,.guide p,.play-guide,.reflection p{color:#d7e7ef}}

/* Touch game viewport: floating HUD and building dock leave the map in charge. */
@media(pointer:coarse){
 body.game-mode .playarea{position:fixed;inset:0;height:100dvh!important;width:100vw;display:block;border:0;border-radius:0;overflow:hidden;background:#081a28}
 body.game-mode #game{position:absolute;inset:0;height:100%!important;width:100%;z-index:0}
 body.game-mode .toolbar{position:absolute;top:max(8px,env(safe-area-inset-top));left:8px;right:8px;z-index:50;display:flex;gap:5px;padding:5px;background:#081a28dc;border:1px solid #1a547a;border-radius:14px;backdrop-filter:blur(10px);flex-wrap:nowrap}
 body.game-mode .modes{background:transparent;flex:none;padding:0;gap:3px;display:flex}
 body.game-mode .toolbar button{min-width:42px;min-height:44px;padding:6px;border-radius:9px;font-size:18px}
 body.game-mode .control-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
 body.game-mode .score{margin-left:auto;gap:0;font-size:0;flex:none}
 body.game-mode .score>span:not(.total-score){display:none}
 body.game-mode .total-score{font-size:0;padding:6px 9px;display:flex;gap:5px;background:#143548}
 body.game-mode .total-score:before{content:'★';font-size:17px;color:#ffd166}
 body.game-mode .total-score b{font-size:22px;line-height:1}
 body.game-mode #pause{font-size:0}body.game-mode #pause:after{content:'Ⅱ';font-size:20px}body.game-mode #pause[data-paused=true]:after{content:'▶'}
 body.game-mode #reset{font-size:22px}body.game-mode #reset span{display:none}
 body.game-mode #game-mode{font-size:0}body.game-mode #game-mode:after{content:'↙';font-size:22px}
 body.game-mode .build-types{position:absolute;left:8px;right:8px;bottom:max(10px,env(safe-area-inset-bottom));z-index:50;display:flex;gap:5px;padding:7px;background:#081a28e8;border:1px solid #1a547a;border-radius:16px;backdrop-filter:blur(10px);overflow-x:auto}
 body.game-mode .build-types button{flex:1 0 67px;min-height:62px;max-width:110px;font-size:10px;line-height:1.15;padding:5px;overflow-wrap:normal;border-width:2px}
 body.game-mode .build-types button:before{display:block;font-size:22px;line-height:26px;margin-bottom:3px}
 body.game-mode .build-types [data-type="0"]:before{content:'🏫'}body.game-mode .build-types [data-type="1"]:before{content:'💡'}body.game-mode .build-types [data-type="2"]:before{content:'⚒'}body.game-mode .build-types [data-type="3"]:before{content:'🧭'}body.game-mode .build-types [data-type="4"]:before{content:'🎓'}body.game-mode .build-types [data-type="5"]:before{content:'📚'}body.game-mode .build-types [data-type="6"]:before{content:'✦'}
 body.game-mode .caption{position:absolute;bottom:96px;left:12px;right:12px;z-index:20;min-height:0;padding:5px 9px;border-radius:10px;pointer-events:none;background:#081a28cc;font-size:11px}
 body.game-mode .caption p{max-height:2.8em}body.game-mode #clock{color:#ffd166;font-size:18px;font-weight:800}
 body.game-mode .view-controls{display:none}body.game-mode #stage-banner{position:absolute;top:72px;left:10px;right:10px;z-index:25;background:#081a28cc;border-radius:9px;padding:5px 8px}
 body.game-mode #country-badge{top:116px;right:12px;font-size:22px;z-index:25}
 body.game-mode .map-panel,body.game-mode .discovery-card{z-index:1100;inset:76px 10px 105px;left:50%;width:min(94%,560px);height:max-content;max-height:calc(100dvh - 190px);transform:translateX(-50%)}
 body.game-mode #stage-instructions{min-height:0}body.game-mode #stage-notice{top:125px}
}

/* Instruction dialogs size to their content, never to fullscreen height. */
#stage-instructions{min-height:0}
body.game-mode .map-panel,body.game-mode .discovery-card{inset:auto;top:50%;left:50%;bottom:auto;right:auto;height:auto;min-height:0;max-height:calc(100dvh - 32px);width:min(94%,600px);transform:translate(-50%,-50%);overflow-y:auto}
@media(pointer:coarse){body.game-mode .map-panel,body.game-mode .discovery-card{max-height:calc(100dvh - 40px);padding:18px}}

#telescope-demo{margin:12px 0;padding:12px;border-radius:14px;background:#102b3b;color:#fff;text-align:center}#telescope-demo[hidden]{display:none}#telescope-demo p{margin:4px 0;font-size:15px}#telescope-demo button{font-size:13px;min-height:36px;padding:6px 12px}.demo-road{height:104px;position:relative;overflow:hidden;border-bottom:3px dashed #73c7ee}.demo-target{width:75px;height:80px;position:absolute;left:10%;top:4px}.demo-reticle{font-size:42px;position:absolute;left:52%;top:48px;opacity:0;color:#ffd166}.demo-burst{font-size:70px;color:#ffd166;position:absolute;left:47%;top:0;opacity:0}.demo-points{position:absolute;left:46%;top:10px;color:#ffd166;font-size:30px;opacity:0}.demo-restart .demo-target{animation:demo-travel 4s infinite}.demo-restart .demo-reticle{animation:demo-tap 4s infinite}.demo-restart .demo-burst{animation:demo-hit 4s infinite}.demo-restart .demo-points{animation:demo-score 4s infinite}@keyframes demo-travel{0%{left:10%;opacity:1;transform:scale(1)}50%{left:46%;opacity:1;transform:scale(1)}58%,100%{left:46%;opacity:0;transform:scale(.1)}}@keyframes demo-tap{0%,30%{opacity:0;transform:translateY(25px)}48%,53%{opacity:1;transform:translateY(0)}65%,100%{opacity:0}}@keyframes demo-hit{0%,50%{opacity:0;transform:scale(.3)}56%{opacity:1;transform:scale(1.2)}68%,100%{opacity:0;transform:scale(1.7)}}@keyframes demo-score{0%,57%{opacity:0;transform:translateY(20px)}65%,85%{opacity:1;transform:translateY(-6px)}100%{opacity:0;transform:translateY(-15px)}}@media(prefers-reduced-motion:reduce){.demo-restart .demo-target{animation:none;left:28%}.demo-restart .demo-reticle{animation:none;opacity:1;left:40%;top:40px}.demo-restart .demo-points{animation:none;opacity:1;left:65%;top:20px}.demo-restart .demo-burst{animation:none}}

#investigation-demo{margin:12px 0;padding:10px 14px;background:#102b3b;border-radius:14px;color:white;text-align:center}#investigation-demo[hidden]{display:none}#investigation-demo svg{display:block;margin:auto;overflow:visible}#investigation-demo p{font-size:15px;margin:4px 0}.mask-glow{transform-origin:center;animation:mask-pulse 1.5s ease-in-out infinite}@keyframes mask-pulse{0%,100%{opacity:.35;transform:scale(.86)}50%{opacity:1;transform:scale(1.12)}}@media(prefers-reduced-motion:reduce){.mask-glow{animation:none;opacity:1}}

#close-discovery.close-clue-icon{width:52px;height:48px;min-height:48px;display:flex;align-items:center;justify-content:center;margin:12px 0 0 auto;padding:0;font-size:32px;line-height:1;background:#ffd166;color:#081a28;border:2px solid #ffd166;border-radius:12px}#close-discovery.close-clue-icon[hidden]{display:none}

.demo-reticle{width:64px;height:64px;left:calc(46% + 5px);top:12px;font-size:0}.demo-reticle svg{display:block;width:64px;height:64px}@media(prefers-reduced-motion:reduce){.demo-restart .demo-reticle{left:calc(28% + 5px);top:12px}}

#sound-toggle,body.game-mode #sound-toggle{box-sizing:border-box;width:44px;min-width:44px;max-width:44px;height:44px;min-height:44px;flex:0 0 44px;padding:0;display:inline-flex;align-items:center;justify-content:center;font-size:22px;line-height:1;overflow:hidden;white-space:nowrap}#sound-toggle:before{content:none!important}

/* Let dialogs escape the canvas layer and keep game HUD behind them. */
body.game-mode #game{z-index:auto;isolation:auto}body.game-mode .map-panel,body.game-mode .discovery-card{position:fixed;z-index:1100}body.game-mode .playarea:has(.map-panel:not([hidden]),.discovery-card:not([hidden])) .toolbar,body.game-mode .playarea:has(.map-panel:not([hidden]),.discovery-card:not([hidden])) .caption,body.game-mode .playarea:has(.map-panel:not([hidden]),.discovery-card:not([hidden])) #stage-banner,body.game-mode .playarea:has(.map-panel:not([hidden]),.discovery-card:not([hidden])) .build-types,body.game-mode .playarea:has(.map-panel:not([hidden]),.discovery-card:not([hidden])) #stage-notice{visibility:hidden;pointer-events:none}#final-panel{overscroll-behavior:contain;scroll-padding-block:20px}

@media(pointer:fine){body:not(.game-mode) #game{height:auto!important;min-height:0!important;aspect-ratio:16/9}}body.embedded-game{margin:0;padding:0;overflow:hidden;background:#081a28}body.embedded-game>header,body.embedded-game>footer,body.embedded-game .intro,body.embedded-game .reflection{display:none}body.embedded-game main{max-width:none;padding:0}body.embedded-game #game-mode:after{content:'⛶'}

#stage-notice.build-warning{position:fixed;top:80px;left:50%;right:auto;transform:translateX(-50%);width:max-content;max-width:calc(100vw - 32px);z-index:1200;background:#ffd166;color:#081a28;border:2px solid #fff0c0;border-radius:12px;padding:12px 16px;font-size:17px;font-weight:700;line-height:1.4;box-shadow:0 6px 24px #0006;text-align:center;pointer-events:none;white-space:normal}.build-types.needs-building-choice{outline:3px solid #ffd166;outline-offset:2px}.build-types.needs-building-choice button:not(.chosen){box-shadow:inset 0 0 0 2px #76d3ff}

#stage-notice.block-conquest{position:fixed;top:125px;left:50%;transform:translateX(-50%);width:max-content;max-width:calc(100vw - 32px);z-index:1200;background:#123a50;color:#ffe08b;border:3px solid #ffd166;border-radius:16px;padding:16px 20px;font-size:20px;font-weight:800;line-height:1.4;box-shadow:0 0 32px #ffd16677;text-align:center;white-space:normal;pointer-events:none}

/* Desktop controls keep their usable size independently of fullscreen and 4K width. */
@media (pointer:fine){
 body.game-mode .build-types,.playarea:fullscreen .build-types{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:8px}
 body.game-mode .build-types button,.playarea:fullscreen .build-types button{flex:0 0 150px;width:150px;min-width:0;max-width:150px;min-height:44px;font-size:13px;line-height:1.2;overflow-wrap:normal}
 body.game-mode .toolbar button,.playarea:fullscreen .toolbar button{flex:0 0 auto;width:max-content;max-width:220px;min-height:44px;font-size:13px}
 body.game-mode .view-controls button,.playarea:fullscreen .view-controls button{flex:0 0 44px;width:44px;min-width:44px;max-width:44px;height:44px;padding:6px;font-size:18px}
 body.game-mode .view-controls #view-reset,.playarea:fullscreen .view-controls #view-reset{flex:0 0 150px;width:150px;max-width:150px;font-size:13px}
 .map-panel .primary-action,.map-panel .secondary-action{width:fit-content;max-width:min(100%,300px);white-space:normal}
}

/* Full HD/4K desktop fullscreen fills the viewport without page margins or light bands. */
@media(pointer:fine){
 html:has(body.game-mode),body.game-mode{width:100%;height:100%;margin:0;padding:0;background:#081a28}
 body.game-mode .playarea,.playarea:fullscreen{inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;border-radius:0;background:#081a28;box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden}
 .playarea::backdrop{background:#081a28}
 .playarea:fullscreen #game{flex:1 1 0;min-height:0!important;height:auto!important;max-height:none;aspect-ratio:auto!important}
 .playarea:fullscreen .toolbar,.playarea:fullscreen .build-types,.playarea:fullscreen .view-controls,.playarea:fullscreen #stage-banner,.playarea:fullscreen .caption{flex-shrink:0}
 .playarea:fullscreen .round-settings,.playarea:fullscreen .keyboard{display:none!important}
}

.game-brand{display:flex;align-items:center;justify-content:center;flex:0 0 116px;width:116px;height:40px;padding:2px 4px;border-radius:5px;background:#fffdf5}
.game-brand img{display:block;width:108px;height:36px;object-fit:contain}
@media(pointer:coarse){body.game-mode .game-brand{position:fixed;top:116px;left:10px;z-index:26;width:86px;height:31px;padding:2px 3px;pointer-events:none;box-shadow:0 2px 8px #0003}body.game-mode .game-brand img{width:80px;height:auto}}

/* One self-contained game frame: welcome, territory, instructions and play. */
html:has(body.card-layout),body.card-layout{width:100%;height:100%;margin:0;padding:0;overflow:hidden;background:#081a28;overscroll-behavior:none}
body.card-layout>header,body.card-layout>footer,body.card-layout .intro,body.card-layout .reflection{display:none!important}
body.card-layout main,body.card-layout #local-territory{width:100%;height:100%;max-width:none;margin:0;padding:0;overflow:hidden}
body.card-layout .playarea{position:fixed;inset:0;width:100%;height:100dvh;margin:0;border:0;border-radius:0;max-width:none;overflow:hidden;background:#081a28}
.entry-card,body.card-layout #region-picker{position:absolute;inset:0;z-index:1300;box-sizing:border-box;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:clamp(16px,3vmin,32px);background:radial-gradient(ellipse at 75% 40%,#16415b 0%,#0c2438 42%,#081a28 80%);overflow:hidden}
.entry-card{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:16px}
.entry-top,.entry-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px;flex:none;min-height:44px}
.entry-logo{background:#fffdf5;padding:2px 8px;border-radius:5px}.entry-logo img{display:block;width:126px;height:42px;object-fit:contain}
.entry-step{font-size:12px;letter-spacing:2px;color:#b7d7e8}.entry-fullscreen{border:1px solid #327092;background:#143548;min-height:44px;white-space:nowrap}
.welcome-content{align-self:center;width:min(100%,900px);margin:auto;text-align:center;min-height:0}
.welcome-content .eyebrow{font-size:clamp(10px,1.8vmin,14px);margin:0 0 8px}
.welcome-content h1{font-size:clamp(32px,9vmin,82px);line-height:.95;margin:10px 0 14px;letter-spacing:-2px}
.welcome-lead{font-size:clamp(14px,2.4vmin,21px);line-height:1.4;margin:8px 0 18px;color:#d7e7ef}
.journey-preview{display:flex;justify-content:center;gap:clamp(10px,3vw,32px);flex-wrap:wrap;font-size:14px}.journey-preview span{display:flex;align-items:center;gap:7px}.journey-preview b{font-size:11px;color:#ffd166}
.entry-bottom{width:min(100%,1100px);margin:auto;border-top:1px solid #2b5368;padding-top:14px;font-size:14px;color:#cbd5e1}.entry-bottom button{min-height:44px;width:auto;max-width:260px}
body.card-layout #region-picker{display:grid;grid-template-rows:auto auto minmax(0,1fr) auto auto auto;gap:8px}
body.card-layout #region-picker .region-heading{width:min(100%,1100px);margin:0 auto}
body.card-layout #region-picker h1{font-size:clamp(22px,4vmin,42px);line-height:1.05;letter-spacing:-1px;margin:3px 0}
body.card-layout #region-picker .eyebrow{margin:0;font-size:10px}
body.card-layout #region-picker .region-heading p:last-child{font-size:13px;line-height:1.4;margin:5px 0}
body.card-layout #europe-map{min-height:0;width:min(100%,1100px);height:100%;margin:0 auto;border-radius:12px;display:flex;justify-content:center;align-items:center;overflow:hidden}
body.card-layout #europe-map svg{height:100%;width:100%;max-height:none;object-fit:contain}
body.card-layout .country-label,body.card-layout #country-choice,body.card-layout .region-actions{width:min(100%,1100px);margin:0 auto}
body.card-layout .country-label{font-size:12px}
body.card-layout #country-choice{height:40px;min-height:40px;padding:6px 10px;font-size:14px}
body.card-layout .region-actions{flex-wrap:nowrap;min-height:44px;gap:10px;font-size:12px}
body.card-layout #enter-region{min-height:44px;padding:10px 16px;font-size:13px;white-space:nowrap}
body.card-layout .playarea.onboarding>.toolbar,body.card-layout .playarea.onboarding>.build-types,body.card-layout .playarea.onboarding>.view-controls,body.card-layout .playarea.onboarding>.caption{visibility:hidden}
@media(max-height:530px){.entry-card,body.card-layout #region-picker{padding:10px 16px;gap:5px}.entry-logo img{width:96px;height:32px}.welcome-content h1{font-size:clamp(28px,9vmin,52px);margin:6px 0}.welcome-lead{font-size:14px;margin:6px 0}.welcome-content h1 br{display:none}.welcome-content h1 em{margin-left:8px}.entry-bottom{padding-top:5px}.entry-top{min-height:36px}.journey-preview{font-size:12px}body.card-layout #region-picker .region-heading p:last-child{display:none}body.card-layout #region-picker h1{font-size:24px}}
@media(max-width:480px){.entry-step{letter-spacing:.5px;font-size:10px}.entry-logo img{width:96px;height:32px}.entry-fullscreen{font-size:11px;padding:8px}.entry-bottom{font-size:12px}.entry-bottom button{font-size:12px;padding:10px 12px!important}.journey-preview{gap:12px;font-size:12px}.region-actions #region-status{max-width:48%;line-height:1.3}}

#conference-invitation{margin-top:22px;padding-top:18px;border-top:1px solid #327092}#conference-invitation h3{font-size:19px;margin:0 0 6px}#conference-invitation p{margin:0 0 12px;color:#d7e7ef}#conference-registration{display:inline-flex;align-items:center;justify-content:center;min-height:44px;max-width:100%;text-decoration:none;text-align:center;font-size:14px;box-sizing:border-box;white-space:normal}

#stage-notice.build-warning{pointer-events:auto;cursor:pointer;touch-action:manipulation}#stage-notice.build-warning::after{content:" ×";margin-left:12px;opacity:.8}
