/* A sunlit game table: cream tiles, teal enamel, brass rewards, quiet notes.
   Direction: restraint 6, editoriality 3, playfulness 7, density 4,
   geometric order 8, materiality 7, contrast 6. */
:root{--game-cream:#fff5df;--game-paper:#fbf3e1;--game-teal:#376f6a;--game-deep:#294f4a;--game-edge:#668577;--game-gold:#c39142;--game-shadow:#314f4024;--game-red:#a84937;--game-inset:#d8e1cc}
:is(#game,#puzzle-dialog,#account-dialog){color:var(--game-deep);font-family:var(--sans)}
:is(#game,#puzzle-dialog,#account-dialog) :is(h1,h2,h3){font-family:var(--sans);font-weight:650;letter-spacing:-.025em}
:is(#game,#puzzle-dialog,#account-dialog) button:not(.play-cell):not(.nono-cell):not(.loop-edge):not(.graph-edge):not(.island){min-height:44px;border-radius:11px;border:1px solid #b9c6ad;background:#f9f0db;box-shadow:0 3px 0 #cad0b9;padding:10px 15px;font-weight:600;transition:background .12s,box-shadow .12s}
:is(#game,#puzzle-dialog,#account-dialog) button:hover:not(:disabled){background-color:#fff9e9}
:is(#game,#puzzle-dialog,#account-dialog) button:active:not(:disabled){box-shadow:inset 0 2px 3px #294f4a30}
:is(#game,#puzzle-dialog,#account-dialog) :is(button,input,select,summary):focus-visible{outline:3px solid #326a87;outline-offset:3px;z-index:2}
:is(#game,#puzzle-dialog,#account-dialog) button:disabled{opacity:.5;box-shadow:none;cursor:default}
:is(#game,#puzzle-dialog,#account-dialog) :is(.primary-button,.solid-button){background:var(--game-teal)!important;color:var(--game-cream);border-color:var(--game-deep)!important;box-shadow:0 3px 0 var(--game-deep)!important}
:is(#game,#puzzle-dialog) :is(select,input[type=number]){border:2px solid #b4c4b2;border-radius:9px;background:#fff9e9;color:var(--game-deep);min-height:44px;font:600 15px var(--sans);box-shadow:inset 0 2px 0 #d9d9bf;padding:8px 10px}
:is(#game,#puzzle-dialog) .level-picker>span{font-size:11px;font-weight:600;color:#62735d;letter-spacing:.04em}
#puzzle-dialog{padding:0;background:var(--game-paper);border:3px solid #e4d6b6;border-radius:23px;box-shadow:0 8px 0 #63766c,0 25px 80px #142c3b65;width:min(1050px,calc(100% - 36px))}
#puzzle-dialog::backdrop,#account-dialog::backdrop{background:#193e46a3}
#puzzle-dialog>.dialog-heading{padding:20px 26px;margin:0;background:var(--game-teal);color:var(--game-cream);border-bottom:4px solid #c8b58a;gap:14px}
#puzzle-dialog .dialog-heading h2{font-size:25px;line-height:1.35}
#puzzle-dialog .dialog-tools button{background:#f9edce;color:var(--game-deep);box-shadow:0 3px 0 #244f49;padding:8px 12px}
#puzzle-reward{color:#ffe3a2;font:600 11px var(--sans);letter-spacing:.04em;margin-bottom:5px}
#puzzle-dialog>.puzzle-heading{padding:0 26px;margin:20px 0}
#world-game{padding:0 26px 26px;gap:26px;grid-template-columns:minmax(0,1.65fr) minmax(210px,1fr)}
.park-workbench>h3,#level-title{font-size:20px;color:#365b4d}
#park-task,#game-task{font-size:14px;line-height:1.75;color:#536650;margin:10px 0 20px}
.game-section{padding-top:30px}
#game .game-heading{border-bottom:3px solid #bdcbb5;padding-bottom:20px;margin-bottom:24px}
#game-title{font-size:32px;color:var(--game-teal)}
#game .stage-panel{background:var(--game-paper);border:2px solid #e0d7bb;border-radius:20px;padding:26px;box-shadow:0 5px 0 #d4d8c0}
.park-puzzle-notes,#game .game-sidebar{background:transparent;border:0;border-left:2px solid #d9cda9;border-radius:0;box-shadow:none;padding:8px 0 8px 22px}
:is(#game,#puzzle-dialog) .method-pill{border:0;background:#e0e8d5;color:#3e6559;font-size:11px;line-height:1.6;padding:6px 12px;margin-bottom:12px;border-radius:6px}
:is(#game,#puzzle-dialog) :is(.rule-box,.question-box){border-color:#ddd5b9;padding-top:17px;margin-top:18px}
:is(#game,#puzzle-dialog) :is(.rule-box,.question-box) h3{font-size:13px;color:#856b36}
:is(#game,#puzzle-dialog) :is(.rule-box,.question-box) p{font-size:12px;line-height:1.9;color:#536650}
.move-badge{display:flex;align-items:center;gap:8px;border-radius:12px;background:#e5e8d1;border:1px solid #c5cfb2;padding:8px 12px;font-size:11px;color:#61715b}
.move-badge strong{font:600 24px var(--mono);color:var(--game-teal)}
.puzzle-controls h4{font-weight:650;color:#58715f;font-size:12px;margin-bottom:12px}
.puzzle-stage{--tile:#fff5dd;--tile-shadow:#c4cdb4}
.play-grid{border:6px solid var(--game-edge);padding:5px;border-radius:16px;background:#aabfa6;gap:3px;box-shadow:0 5px 0 #496b5c,0 9px 16px var(--game-shadow)}
.play-cell{border-radius:5px;background:var(--tile);color:var(--game-teal);box-shadow:inset 0 -3px 0 var(--tile-shadow),inset 0 1px 0 #fffdf2;font-weight:650;position:relative}
.play-cell:disabled{opacity:1!important}
.play-cell:hover:not(:disabled){background:#fffbed;box-shadow:inset 0 0 0 2px #5c8d79,inset 0 -3px 0 #b8cdb2}
.play-cell.wall{background:repeating-linear-gradient(135deg,#b7c6ac,#b7c6ac 5px,#c6d3bb 5px,#c6d3bb 9px);box-shadow:inset 0 2px 3px #61785b40;border:1px solid #aaba9f;color:#526957}
.play-cell.block{background:#4e918a!important;color:#fff5dd;box-shadow:inset 0 2px 0 #9dc3ac,inset 0 -4px 0 #316a62}
.play-cell.block-1{background:#6eaba4!important}.play-cell.block-2{background:#427972!important}.play-cell.block-3{background:#6c9d82!important}
.play-cell.star{color:#a77c2f;text-shadow:0 1px #fff9e9}.play-cell.start-cell{color:#ad643e}
.play-cell.preview.legal{background:#bad7be!important;box-shadow:inset 0 0 0 1px #87ae91}.play-cell.preview.illegal{background:#edc3ad!important}
.piece-preview path{stroke:#386d5d;stroke-width:2.5;stroke-dasharray:5 4;stroke-linecap:round}.piece-preview:not(.legal) path{stroke:#ac523f}
.piece-tray{gap:9px}.piece-button{min-height:83px!important;background:#e5e9d5!important;border:1px solid #bdcbb1!important;box-shadow:0 3px 0 #b7c3a4!important;padding:12px 7px 7px!important;font-size:11px!important;border-radius:12px!important}
.piece-button.selected{outline:2px solid #36766b;outline-offset:1px;background:#d1e4cc!important;border-color:#36766b!important}
.piece-color-0{--piece:#4e918a}.piece-color-1{--piece:#6eaba4}.piece-color-2{--piece:#427972}.piece-color-3{--piece:#6c9d82}
.piece-svg{filter:drop-shadow(0 2px 0 #385f5440)}
.game-tools{gap:9px;margin-top:24px}.game-tools button{font-size:12px;color:#496653}
.game-save-status{font-size:11px;line-height:1.7;color:#6d765e;margin-top:12px;min-height:19px}.game-save-status[data-state=error]{color:var(--game-red)}
.stage-help,.keyboard-help p{font-size:12px!important;line-height:1.8;color:#64705c}.keyboard-help{border-top:1px dashed #bcc9ae;margin-top:18px;padding-top:12px}.keyboard-help summary{font-size:11px;color:#61755f;min-height:32px;cursor:pointer}
:is(#park-message,#game-message){font-size:13px;line-height:1.7;color:#4e6a57}.error{color:var(--game-red)!important}
.park-win,.win-panel{border:2px solid #b6c999;border-radius:15px;background:#e6edcf;box-shadow:0 4px 0 #bac8a2;padding:20px}
.park-win h3,.win-panel h3{font-size:21px!important;color:#477054}.park-win p,.win-panel p{color:#536a49}
.oxygen-prize{background:#b7d5a5;border-color:#d9e8c5;font-family:var(--sans)}
.play-cell.visited{background:#9fc7ae;box-shadow:inset 0 0 0 1px #81ac93;color:#355f52}
.play-cell.crate{background:#deb376;color:#724f2f;box-shadow:inset 0 0 0 3px #bd915d,inset 0 0 0 5px #f1d6a2,inset 0 -5px 0 #ba8956}
.play-cell.crate.at-goal{background:#a8c994;color:#3f6b48;box-shadow:inset 0 0 0 3px #84a772,inset 0 0 0 5px #d4e2b7}
.nonogram-board{padding:10px;border:6px solid var(--game-edge);border-radius:16px;background:#cfdbc4;gap:3px;box-shadow:0 5px 0 #496b5c}
.column-clue,.row-clue{color:#486957;font:600 14px/1.5 var(--mono)}
.nono-cell{background:#fff6de;border:0;border-radius:4px;box-shadow:inset 0 -2px 0 #d8d9ba;color:#9b7652;font-weight:600}
.nono-cell.filled{background:#467d6e;box-shadow:inset 0 2px 0 #88ad93,inset 0 -3px 0 #2e5b4f}.nono-cell.empty{color:#967c5c;background:#e9e9d0}
.loop-board,.graph-board{border:3px solid #9eb59d;border-radius:18px;background:#e8eed6;box-shadow:0 5px 0 #b0bea0}
.loop-clue{color:#426853;font-family:var(--mono);font-weight:600}.loop-dot{background:#739078;box-shadow:0 1px 0 #fcf9dd}
.loop-edge.on{background:var(--game-teal);box-shadow:0 2px 0 #284f48}.loop-edge:not(.on){background:#b8c8ad}
.graph-line{stroke:#adbfa6;stroke-dasharray:2 2}.graph-line.on{stroke:#548270;stroke-dasharray:none;stroke-width:1.5}
.graph-edge{background:#f8edcc;border:1px solid #b1bd9f;color:#587458;box-shadow:0 2px 0 #b4c29e}.graph-edge.on{background:#e3bc6c;color:#6c512a;border-color:#b68d47}
.island{background:#fff4d7;color:#6a5734;border:3px solid #c5b789;box-shadow:0 3px 0 #b3a97b;font-family:var(--mono)}.island.matched{background:#c5dbac;color:#375c45;border-color:#90ae78}
.play-cell.light{background:#dbe4cf;color:#99af91;box-shadow:inset 0 2px 3px #77906955}.play-cell.light.on{background:#f1d28c;color:#94743c;box-shadow:inset 0 2px 0 #fff3b8,inset 0 -4px 0 #c5a660}
.hanoi-pegs{background:#e7eacf;border-bottom:8px solid #b8a273;border-radius:15px;padding:20px 8px 0}.peg{background:transparent!important;box-shadow:none!important;border-color:transparent!important}.peg.selected{background:#d0dfbe!important;border-color:#6e967a!important}
.disk{background:#669b84;border:1px solid #42735f;box-shadow:inset 0 2px 0 #a4c6a2,0 2px 0 #456b58;border-radius:8px;color:#fff8dc;font-family:var(--mono)}
.peg-label{color:#627655;font-size:11px}.river-banks{gap:28px}.bank{background:#dbe6c3;border-color:#bccda3;border-radius:18px 18px 8px 8px;padding:15px}.bank h4{font-size:12px;color:#55704d;margin-bottom:12px}
.cargo{background:#fff1cf!important;box-shadow:0 3px 0 #b0be92!important}.cargo.selected{background:#d3e2b8!important;outline:2px solid #62896b;outline-offset:1px}
.farmer{color:#486f58;font-size:12px}.river-water{background:#bad8d2;color:#639d99;border-radius:12px;border-bottom:4px solid #98beb5;font-family:var(--serif);letter-spacing:.2em}
.jug-card{background:transparent;border:0;box-shadow:none}.jug-vessel{border:4px solid #659386;border-top-width:2px;border-radius:8px 8px 24px 24px;background:#eef2dc;box-shadow:inset 3px 0 0 #fffbdf,0 4px 0 #bdcdb0}.jug-water{background:#96c6bd;border-top:3px solid #c5e1c9}.jug-vessel strong{color:#355f54;text-shadow:0 1px #edf3d9;font-family:var(--mono)}
.jug-card p{font-size:12px;color:#62715d}.target-banner{background:#e6dbb2;border:0;border-radius:9px;color:#806738;font-size:13px;font-weight:600}
.heap-row{border-color:#d4dcbd;background:#e8edd7;border-radius:12px;padding:12px;margin-bottom:9px;gap:10px}.heap-row h4{font-size:12px;color:#637554}.stones i{font-size:0;width:15px;height:19px;border-radius:50% 50% 42% 42%;background:#ddb66b;box-shadow:inset -3px -3px 0 #b78f49,inset 2px 2px 0 #f7d792;display:inline-block;margin:2px}.heap-row strong{font:600 18px var(--mono);color:#67784f}
.code-picks{background:#dce7cf;border:3px solid #aac1a4;border-radius:15px;padding:16px;gap:10px;margin-bottom:16px}.code-picks .field{margin:0;min-width:0}.code-picks .field>span{font-size:10px;color:#5b7456}.code-picks select{font:600 24px var(--mono)!important;background:#fff4d6!important;border-color:#b4bb96!important;text-align:center;min-width:0;width:100%;height:56px}
.guess-table{width:100%;border-collapse:separate;border-spacing:0 7px;margin-top:20px;font-size:13px;table-layout:fixed}.guess-table th{font-size:11px;font-weight:600;color:#698060;border:0;text-align:center;padding:6px}.guess-table th:first-child{width:46%;text-align:left;padding-left:14px}.guess-table td{padding:10px;background:#e8edd7;border-top:1px solid #d6dfc4;border-bottom:3px solid #ccd6b9;text-align:center;color:#45634f}.guess-table td:first-child{text-align:left;border-radius:10px 0 0 10px;padding-left:14px;font:600 17px var(--mono);letter-spacing:.09em}.guess-table td:last-child{border-radius:0 10px 10px 0}.guess-table caption{font-size:11px;text-align:left;color:#718064;padding:10px 0}.feedback-peg{display:inline-grid;place-items:center;min-width:27px;height:27px;border-radius:50%;background:#477b68;color:#fff4d8;font:600 13px var(--mono);box-shadow:inset 0 -3px 0 #295747}.feedback-peg.misplaced{background:#ddbc73;color:#705a2e;box-shadow:inset 0 -3px 0 #b79855}
.cipher-message,.decoded-message{padding:19px;border-radius:12px;border:2px solid #bac9a9;background:#e5ead3;color:#3a6454;font:600 24px/1.6 var(--mono);overflow-wrap:anywhere}.decoded-message{background:#fff1cf;border-color:#dbc99b;color:#927343}.mini-label{color:#69805e;font-size:11px;letter-spacing:.08em}.alphabet{gap:5px;margin-top:18px}.alphabet>div{border:1px solid #c4cfaf;border-radius:7px;overflow:hidden;box-shadow:0 2px 0 #c4cbb2}.alphabet span{background:#f6ecd1;color:#6d7959}.alphabet strong{background:#bcd1b3;color:#3f6554}
.households{gap:12px}.house{background:#e6ead1;border:0;border-bottom:4px solid #c3cba8;border-radius:13px;padding:14px 9px}.house>span{color:#759475;font-size:39px}.house .field>span{font-size:11px}.house input{width:100%;text-align:center;font-family:var(--mono)!important}
.postal-proof{background:#e6ead1;border-radius:18px;color:#50734d}.postal-icon{color:#8ba277}.proof-form{border:1px dashed #b6c7a4;border-radius:13px;background:#e9edd8;padding:17px}.proof-form .field{font-size:12px}.inline-stat{font-size:12px;color:#60744f}

/* The account passport is available from both game entry points. */
.account-entry{white-space:nowrap;pointer-events:auto;opacity:1!important;color:#346859!important;border:1px solid #b8cbb0!important;background:#edf3d9!important;min-height:44px;border-radius:12px;max-width:220px;overflow:hidden;text-overflow:ellipsis;font-size:12px;font-weight:650}
.account-entry::before{content:'✧';font-size:18px;margin-right:6px;color:#9a7833}
.account-entry[data-save-state=error]{border-color:#b17b52!important;color:#97533b!important}.account-entry[data-save-state=error]::after{content:' !';font-weight:700}
#account-dialog{width:min(480px,calc(100% - 28px));max-height:90dvh;overflow:auto;padding:25px;background:#fcf2da;border:3px solid #d9cba7;border-radius:22px;box-shadow:0 7px 0 #879b7a,0 24px 80px #183b4855;color:var(--game-deep)}
.account-heading{display:flex;align-items:center;gap:12px;margin-bottom:18px}.account-heading h2{font-size:23px;line-height:1.35;margin:0}.passport-mark{color:#a78339;font-size:33px}.account-close{margin-left:auto;flex-shrink:0;width:44px;font-size:22px;padding:4px!important}
.account-intro{font-size:14px;line-height:1.8;color:#607453;margin-bottom:16px}.account-status{font-size:12px;line-height:1.8;background:#e7ebd3;border-radius:8px;padding:10px 12px;margin:14px 0;color:#55714e}.account-status[data-state=error]{background:#f1dfc6;color:#98503b}
.account-providers{display:grid;gap:12px;margin:20px 0}.account-provider-x{background:#356c61!important;color:#fff4d8;border-color:#356c61!important;box-shadow:0 3px 0 #28564e!important}.account-provider{font-size:14px}.account-guest{background:transparent!important;border-color:transparent!important;box-shadow:none!important;font-size:12px;color:#617654}
.account-privacy{font-size:11px;line-height:1.9;color:#738066;margin-top:22px;border-top:1px solid #dbd9bc;padding-top:16px}.account-retry{margin:5px 0 12px}.account-logout{margin-top:18px;font-size:12px;color:#746a4d}
.explorer-name{font:600 14px var(--mono);color:#4f775a;overflow-wrap:anywhere;margin:18px 0}.passport-stats{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin:15px 0}.passport-stats>div{padding:10px 0;border-bottom:3px solid #d3cf9c}.passport-stats dt{font-size:11px;color:#778361}.passport-stats dd{font:600 29px var(--mono);margin:8px 0 0;color:#3b7364}.saved-location{font-size:11px;color:#7b8469;margin:15px 0 22px}.account-body h3{font-size:14px}.passport-progress{list-style:none;margin:12px 0;padding:0;max-height:200px;overflow:auto}.passport-progress li{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid #dedfc4;font-size:12px}.passport-progress strong{white-space:nowrap;color:#83904e}.account-empty{font-size:13px;color:#7b8267;line-height:1.8;margin-top:12px}
@media(max-width:900px){.world-header{gap:12px}.place-heading{display:none}}
@media(max-width:700px){
 #puzzle-dialog{width:calc(100% - 18px);max-height:94dvh;border-radius:18px}
 #puzzle-dialog>.dialog-heading{padding:16px 14px;align-items:flex-start;gap:8px}#puzzle-dialog .dialog-heading h2{font-size:20px}#puzzle-dialog .dialog-tools{gap:5px}#puzzle-dialog .dialog-tools button{padding:7px 9px;min-width:40px}
 #puzzle-dialog>.puzzle-heading{padding:0 14px;margin:16px 0;align-items:center}.puzzle-heading .level-picker{width:calc(100% - 83px)}.puzzle-heading select{font-size:13px!important}
 #world-game{grid-template-columns:1fr;padding:0 14px 22px;gap:23px}.park-puzzle-notes,#game .game-sidebar{padding:20px 0 0;border-left:0;border-top:2px solid #d8ccaa}
 #game-title{font-size:27px}#game .stage-panel{padding:16px}.game-section{padding-top:20px}.game-layout{gap:20px}
 .move-badge{padding:7px;gap:5px}.move-badge strong{font-size:21px}.move-badge span{font-size:10px}.park-workbench>h3,#level-title{font-size:18px}
 .play-grid{border-width:4px;gap:2px;padding:4px;border-radius:12px}.nonogram-board{padding:5px;border-width:4px;gap:2px}.column-clue,.row-clue{font-size:12px}.piece-button{min-height:74px!important}
 .code-picks{padding:12px 9px;gap:7px}.code-picks select{font-size:21px!important;padding:6px!important}.heap-row{padding:9px;gap:7px}.stones{gap:2px}.stones i{width:12px;height:16px;margin:1px}
 .cipher-message,.decoded-message{font-size:20px;padding:14px}.game-tools button{padding:9px 12px!important}.stage-help{font-size:11px!important}
 .site-header{flex-wrap:wrap;gap:12px}.site-header .language-switch{flex-wrap:wrap;margin-left:auto;gap:8px}.site-header .account-entry{max-width:180px}
}
@media(max-width:600px){
 .world-actions .account-entry{position:absolute;left:0;top:60px;max-width:150px;font-size:12px;padding:8px 12px;min-height:42px}
 #account-dialog{padding:20px}.account-heading h2{font-size:21px}.account-intro{font-size:13px}
}
@media(prefers-reduced-motion:reduce){:is(#game,#puzzle-dialog,#account-dialog) button{transition:none}}
