@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@500;600;700&family=DM+Sans:wght@400;500;600;700&display=swap');
:root{color-scheme:dark;--gold:#edc775;--muted:#bac7ba}*{box-sizing:border-box}body{margin:0;background:#102d2c;color:#f4ecd7;font-family:'DM Sans',sans-serif;min-height:100vh;background-image:linear-gradient(90deg,rgba(7,32,32,.94),rgba(9,32,30,.70) 50%,rgba(8,29,29,.93)),url('world.png');background-size:cover;background-position:center;background-attachment:fixed}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit}button:focus-visible,a:focus-visible{outline:3px solid #fff;outline-offset:4px}header{height:114px;margin:0 5%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #b6c7a324}.brand{font-size:19px;letter-spacing:3px;color:var(--gold);text-decoration:none;position:relative;padding-left:42px}.brand>span{position:absolute;left:0;top:-5px;font-size:40px}.brand small{display:block;font-size:10px;letter-spacing:2px;color:#afbeb4;margin-top:8px}.top-actions{display:flex;gap:10px}.top-actions button,.tools button{border:1px solid #8eae9950;background:#15333199;border-radius:8px;padding:11px 16px;font-size:14px}.top-actions button:hover,.tools button:hover{background:#33524a}main{max-width:1450px;margin:44px auto;display:grid;grid-template-columns:1fr minmax(360px,510px) .8fr;gap:46px;padding:0 5%;align-items:center}.eyebrow,.mini{font-size:11px;font-weight:600;letter-spacing:2px;color:var(--gold)}h1{font-family:'Cormorant Garamond',Georgia,serif;font-size:66px;font-weight:500;line-height:1.02;letter-spacing:-2px;margin:23px 0;color:#f8e9c7}.intro{font-size:14px;color:var(--muted);line-height:1.9}.chapter-card{border-top:1px solid #bfceae3b;border-bottom:1px solid #bfceae3b;padding:25px 0;margin-top:30px}h2{font-family:'Cormorant Garamond',Georgia,serif;font-size:28px;font-weight:500;margin:12px 0}p{line-height:1.7}.chapter-card p{font-size:14px;color:var(--muted);margin-bottom:20px}.steps{display:flex;align-items:center;max-width:170px}.steps span{border:1px solid #acb79560;border-radius:50%;width:29px;height:29px;text-align:center;line-height:27px;color:#90a399;font-size:12px}.steps .active{background:var(--gold);color:#21382b;box-shadow:0 0 20px #e7bc582b}.steps i{height:1px;width:37px;background:#acb79540}.lore-note{font-size:12px;color:#a2b4a8;margin-top:22px}.text-button{background:none;border:0;padding:0;color:var(--gold);font-size:13px}.play{border:1px solid #bda36688;background:linear-gradient(150deg,#1b3c36f5,#102926f5);box-shadow:0 25px 80px #0006,inset 0 0 0 5px #aab18409;border-radius:20px;padding:22px 22px 16px}.level-heading{display:flex;justify-content:space-between;font-size:11px;letter-spacing:1.5px;color:var(--gold);margin-bottom:20px}.stats{display:flex;justify-content:space-around;text-align:center;align-items:center}.stats small{font-size:10px;letter-spacing:1.2px;color:#b8c7b8;display:block}.stats strong{display:block;font-size:27px;font-weight:500;margin:8px 0}.stats em{font-size:16px;color:#a9baa7;font-style:normal}.moves strong{color:var(--gold);font-size:37px}.progress{height:4px;background:#081d1a;border-radius:5px;margin:8px 0 20px;overflow:hidden}.progress>div{background:var(--gold);width:0;height:100%;transition:width .5s}.board-wrap{position:relative}#board{display:grid;grid-template-columns:repeat(8,1fr);gap:5px;background:#071e1dd9;border:1px solid #76957944;padding:8px;border-radius:12px}.tile{aspect-ratio:1;min-width:0;padding:0;display:grid;place-items:center;border:1px solid #b4ccb413;border-radius:8px;background:linear-gradient(145deg,#42625465,#1c393369);font-size:clamp(20px,2.5vw,34px);position:relative;transition:transform .15s,background .15s,opacity .18s;touch-action:manipulation;text-shadow:0 3px 5px #0007}.tile:hover{background:#56736385;transform:scale(1.06)}.tile.selected{outline:2px solid #ffe6a6;background:#647354;transform:scale(1.06)}.tile.hint{animation:hint 1s infinite}.tile.clear{transform:scale(.25) rotate(25deg);opacity:0}.tile.special:after{content:'✦';position:absolute;right:0;bottom:-2px;font-size:15px;color:#fff8d0;text-shadow:0 0 9px #ffc000}.tile.special{box-shadow:inset 0 0 13px #ffd8759c;border-color:var(--gold)}#burst{position:absolute;top:40%;width:100%;text-align:center;pointer-events:none;font-family:Georgia,serif;color:#ffe3a1;font-size:30px;text-shadow:0 3px 15px #000;opacity:0}#burst.show{animation:burst .9s ease-out}.status{font-size:12px;text-align:center;color:#d2d7be;min-height:40px;padding:14px 0 7px}.tools{display:flex;gap:12px;justify-content:center}.tools button{font-size:16px;padding:9px 14px;border:0;background:none;color:var(--gold)}.tools span{font-size:12px;color:#d1d9c8;margin-left:5px}.right h2{line-height:1.2;margin-bottom:30px}.tip{display:flex;gap:15px;margin:25px 0}.tip>b{font-size:28px;color:var(--gold);width:33px;flex-shrink:0;text-align:center}.gold-icon{color:#ffcc50!important;text-shadow:0 0 15px #d9ad58}h3{font-size:14px;font-weight:500;margin:0 0 6px}.tip p{font-size:13px;color:var(--muted);margin:0}blockquote{border-top:1px solid #c2caab30;margin:35px 0 0;padding-top:25px;font-family:Georgia,serif;font-style:italic;font-size:18px;line-height:1.7;color:#d3c8a4}blockquote small{display:block;font:10px 'DM Sans',sans-serif;letter-spacing:2px;margin-top:15px;color:#9fab99}footer{display:flex;justify-content:space-between;margin:0 5%;padding:22px 0;border-top:1px solid #b6c7a324;font-size:10px;letter-spacing:1.4px;color:#9fb2a6}footer i{color:var(--gold);margin:0 12px}dialog{background:#173a34;border:1px solid #c6ac70;color:#f7e9cd;border-radius:18px;padding:35px;max-width:470px;width:90%;box-shadow:0 30px 100px #000b}dialog::backdrop{background:#031612c9;backdrop-filter:blur(6px)}dialog h2{font-size:36px}dialog p,dialog li{font-size:15px;line-height:1.7;color:#d1dbcb}dialog .close{position:absolute;right:15px;top:10px;background:none;border:0;font-size:26px}dialog .primary{background:var(--gold);color:#16362d;border:0;padding:13px 23px;border-radius:8px;font-weight:700;margin-top:12px}.medal{font-size:46px;color:var(--gold)}@keyframes hint{50%{box-shadow:inset 0 0 18px #ffe7a7;transform:scale(.9)}}@keyframes burst{15%,65%{opacity:1;transform:translateY(-10px)}100%{opacity:0;transform:translateY(-45px)}}@media(min-width:1600px){main{margin:65px auto}}@media(max-width:1150px){main{grid-template-columns:1fr minmax(350px,470px);gap:35px}.right{display:none}h1{font-size:59px}}@media(max-width:720px){header{height:83px;margin:0 5%}.brand{font-size:13px;letter-spacing:1.8px;padding-left:30px}.brand>span{font-size:31px}.brand small{font-size:8px;letter-spacing:1px}.top-actions button{font-size:12px;padding:8px}.top-actions #sound{display:none}main{display:flex;flex-direction:column;margin:20px auto;gap:18px;padding:0 4%}.story{width:100%}.eyebrow{text-align:center;font-size:10px}.story h1,.intro,.chapter-card,.lore-note,.story .text-button{display:none}.play{width:100%;max-width:480px;padding:17px 13px 12px}.tile{font-size:29px}#board{gap:4px;padding:6px}.stats small{font-size:9px}footer{justify-content:center;font-size:9px}footer>span:last-child{display:none}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* Jewel motion lives on the inner gem; board movement stays on its cell. */
body{--chapter-glow:#efb943}body[data-level="1"]{--chapter-glow:#59e0c2}body[data-level="2"]{--chapter-glow:#cb92ff}.play{border-color:var(--chapter-glow);box-shadow:0 25px 80px #0006,0 0 35px color-mix(in srgb,var(--chapter-glow) 13%,transparent)}.tile{border-color:#f4e1ae30;overflow:visible}.tile[data-type="0"]{background:linear-gradient(145deg,#b97c3480,#4a362780)}.tile[data-type="1"]{background:linear-gradient(145deg,#298bb180,#19374d80)}.tile[data-type="2"]{background:linear-gradient(145deg,#258c6480,#163f3180)}.tile[data-type="3"]{background:linear-gradient(145deg,#b3524080,#542a3180)}.tile[data-type="4"]{background:linear-gradient(145deg,#895cb180,#39285280)}.tile[data-type="5"]{background:linear-gradient(145deg,#b3a37570,#4c423080)}.gem{display:block;filter:drop-shadow(0 3px 2px #0005);animation:gem-live var(--drift,4s) var(--phase,0s) infinite ease-in-out;will-change:transform;pointer-events:none}.resolving .gem{animation-play-state:paused}.tile.selected .gem{filter:drop-shadow(0 0 10px #fff296)}.tile.clear{animation:gem-pop .28s ease-in both;opacity:1;transform:none;z-index:3}.tile.special .gem{filter:drop-shadow(0 0 7px #ffd354)}#particles{position:absolute;inset:0;pointer-events:none;z-index:7;overflow:hidden;border-radius:12px}.spark{position:absolute;width:7px;height:7px;border-radius:2px;box-shadow:0 0 9px currentColor}.point-float{position:absolute;color:#fffbd8;font-weight:800;font-size:15px;text-shadow:0 2px 5px #302011;white-space:nowrap}.beam{position:absolute;background:#fffbd8;box-shadow:0 0 12px 5px #ffd352}.beam.horizontal{left:0;width:100%;height:5px}.beam.vertical{top:0;height:100%;width:5px}#burst{z-index:9;top:35%;font-family:'DM Sans',sans-serif;filter:drop-shadow(0 5px 0 #6e3219) drop-shadow(0 7px 10px #0008);line-height:1.05}#burst strong{display:block;font-size:clamp(32px,4vw,53px);font-weight:900;letter-spacing:-2px;color:#ffdf65;-webkit-text-stroke:1px #fff4bb}#burst small{display:block;font-size:12px;font-weight:700;letter-spacing:2px;color:#fff8cf;margin-top:15px}#burst.show{animation:burst 1.1s ease-out}.soundtrack{text-align:center;color:var(--chapter-glow);font-size:12px;letter-spacing:.6px;margin:8px 0 2px}.top-actions{flex-wrap:wrap;justify-content:flex-end}.top-actions button{font-size:13px}.stats strong{font-variant-numeric:tabular-nums}@keyframes gem-live{0%,100%{transform:translate(0,0) rotate(0)}25%{transform:translate(1px,-2px) rotate(var(--lean)) scale(1.035,.975)}65%{transform:translate(-1px,1px) rotate(calc(var(--lean) * -1)) scale(.98,1.025)}}@keyframes gem-pop{0%{transform:scale(1);filter:brightness(1)}35%{transform:scale(1.2,.88);filter:brightness(1.8)}65%{transform:scale(.94,1.2);opacity:1}100%{transform:scale(.08) rotate(18deg);opacity:0}}@media(max-width:720px){.top-actions #sound{display:block}.top-actions{gap:5px;max-width:180px}.top-actions button{font-size:11px;padding:7px}.top-actions #voice{font-size:10px}header{height:95px}.brand{max-width:175px;font-size:12px}#burst strong{font-size:38px}}@media(prefers-reduced-motion:reduce){.gem{animation:none;will-change:auto}.tile.clear{opacity:0}#burst.show{opacity:1;animation:none}#burst{top:28%;background:#173a34e8;border-radius:10px;padding:10px}#burst strong{font-size:28px}}
.gem{width:100%;height:100%;background-image:url('treasures.png');background-size:300% 200%;background-repeat:no-repeat}.gem[data-treasure="0"]{background-position:0 0}.gem[data-treasure="1"]{background-position:50% 0}.gem[data-treasure="2"]{background-position:100% 0}.gem[data-treasure="3"]{background-position:0 100%}.gem[data-treasure="4"]{background-position:50% 100%}.gem[data-treasure="5"]{background-position:100% 100%}.moonlight .gem{filter:hue-rotate(24deg) saturate(.8) drop-shadow(0 0 6px #a8dfff)}.story-moment{padding:13px 16px;border-radius:10px;background:linear-gradient(100deg,#274c3bd9,#254b3820),url('world.png') center 48%/cover;margin-bottom:16px;border:1px solid #e2c98630;transition:filter 1s}.story-moment strong{display:block;font:600 23px 'Cormorant Garamond',Georgia,serif;margin-top:5px}.story-moment p{font-size:12px;line-height:1.5;color:#e6e7cf;margin:5px 0 0}.story-moment .mini{font-size:10px}.story-moment.arriving{animation:arrival 1s ease-out}.restoration-complete .story-moment{filter:brightness(1.35)}.boosters{display:flex;justify-content:center;gap:12px;margin:12px 0 0}.boosters button{border:1px solid #d6b66e70;background:#65532933;padding:8px 12px;border-radius:20px;color:#ffdf92;font-size:12px}.boosters b{display:inline-grid;place-items:center;background:#ebc771;color:#2b3526;border-radius:50%;min-width:21px;height:21px;margin-left:7px}.pass-badge{display:inline-block;margin-left:6px;padding:2px 8px;border-radius:20px;border:1px solid #d6b66e70;background:#65532933;color:#ffdf92;font-size:10px;vertical-align:middle}.steps .restored{box-shadow:0 0 10px #e7bc58;border-color:#ffe29d}.product{display:flex;align-items:center;gap:12px;border:1px solid #bda46555;background:#22483f;border-radius:12px;padding:15px;margin:12px 0}.product-icon{font-size:38px;color:#ffd261}.product-icon.moon{color:#b5d3ff}.product h3{font-size:16px}.product p{font-size:13px;margin:4px 0 8px}.product strong{color:#f5d794;font-size:17px}.product small{font-size:10px;font-weight:400;display:block;color:#aabfaf}.product button{background:#e9c879;color:#1c3b30;border:0;border-radius:7px;padding:9px;margin-left:auto;font-size:12px}.shop-note{font-size:12px!important;color:#b2c3b3!important}.price{font-size:30px!important;color:#f4d37f!important}.price small{font-size:12px}button:disabled{opacity:.45;cursor:default}dialog{max-width:520px;max-height:90vh;overflow:auto}dialog .primary:disabled{opacity:.5}.level-heading{margin-bottom:12px}main{margin-top:24px;margin-bottom:24px}.play{padding-top:16px}.story-moment{box-shadow:inset 0 0 30px rgba(235,190,82,calc(var(--restoration,0)*.22))}@keyframes arrival{from{opacity:.3;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media(max-width:720px){header{height:104px}.top-actions{max-width:185px}.top-actions button{font-size:10px;padding:6px}.story-moment{padding:8px 12px;margin-bottom:12px}.story-moment strong{font-size:20px}.story-moment p{font-size:11px}.product{padding:12px;gap:9px}.product-icon{font-size:26px}.stats strong{margin:4px 0}.progress{margin-bottom:12px}}
.gem{border-radius:7px}.boosters button:hover{background:#a68a4340}.product button:hover{background:#ffe4a3}
.session-tools{display:flex;justify-content:center;flex-wrap:wrap;gap:14px;margin-top:10px}.session-tools button{font:12px 'DM Sans',sans-serif;border:0;background:none;color:#bfd3c4;padding:5px}.session-tools button:hover{color:#ffe29d}.session-tools button[hidden]{display:none}.end-actions{display:flex;flex-wrap:wrap;gap:20px;margin-top:24px}#share-link{width:100%;padding:12px;border:1px solid #bda465;border-radius:6px;background:#10372d;color:#fff;font-size:14px}.top-actions{max-width:440px}@media(max-width:720px){.top-actions{max-width:195px}.top-actions button{padding:5px;font-size:10px}header{height:116px}}
/* Living World: visible environmental depth, compact game-first surface. */
body{background:#102e2e url('waterfall.png') center/cover fixed}#world-canvas{position:fixed;inset:0;width:100%;height:100%;z-index:-3;pointer-events:none}.world-mist{position:fixed;inset:-10%;z-index:-2;pointer-events:none;background:radial-gradient(ellipse at 12% 69%,#c2ffff2e,transparent 27%),radial-gradient(ellipse at 90% 30%,#d8fff012,transparent 25%);animation:mist-drift 19s infinite alternate ease-in-out}.world-canopy{position:fixed;inset:-2%;z-index:-1;pointer-events:none;background:url('waterfall.png') center/cover;clip-path:polygon(0 0,100% 0,100% 11%,88% 7%,70% 1%,25% 4%,8% 18%,0 30%);animation:canopy-sway 12s ease-in-out infinite alternate}body{isolation:isolate}header{height:88px;margin:0 4%;border-color:#d5e9ba30}main{padding:0 4%;gap:40px;max-width:1540px;grid-template-columns:1fr minmax(360px,490px) .85fr;margin:22px auto}h1{font-size:56px;text-shadow:0 4px 24px #001d18}aside.story,aside.right{background:#0a2c2570;padding:22px;border-radius:18px;backdrop-filter:blur(6px)}.play{background:linear-gradient(145deg,#143a35f5,#071f22f5);padding:16px 18px 12px;box-shadow:0 20px 70px #0008,0 0 35px #d7af682b}.play .story-moment{display:none}.tile{padding:2px;aspect-ratio:1;border:1px solid #d2dcc51a;touch-action:none}.gem{width:100%;height:100%;border-radius:9px;animation-duration:var(--drift);filter:drop-shadow(0 2px 4px #0006)}.gem[data-treasure="0"]{background-position:50% 0}.gem[data-treasure="1"]{background-position:100% 0}.gem[data-treasure="2"]{background-position:0 100%}.gem[data-treasure="3"]{background-position:50% 100%}.gem[data-treasure="4"]{background-position:100% 100%}.gem[data-treasure="5"]{background-image:url('garden.png');background-position:100% 100%}body[data-level="1"] .gem{background-image:url('garden.png')}body[data-level="2"] .gem{background-image:url('festival.png')}body[data-level="1"] .gem[data-treasure="0"],body[data-level="2"] .gem[data-treasure="0"]{background-position:0 0}body[data-level="1"] .gem[data-treasure="1"],body[data-level="2"] .gem[data-treasure="1"]{background-position:50% 0}body[data-level="1"] .gem[data-treasure="2"],body[data-level="2"] .gem[data-treasure="2"]{background-position:100% 0}body[data-level="1"] .gem[data-treasure="3"],body[data-level="2"] .gem[data-treasure="3"]{background-position:0 100%}body[data-level="1"] .gem[data-treasure="4"],body[data-level="2"] .gem[data-treasure="4"]{background-position:50% 100%}body[data-level="1"] .gem[data-treasure="5"],body[data-level="2"] .gem[data-treasure="5"]{background-position:100% 100%}.tile.special{box-shadow:inset 0 0 16px #ffd859;border-color:#ffe395}.tile.special:after{font-size:22px;right:-3px;bottom:-5px}.tile.selected{outline:3px solid #fff4b5}.rhythm-bar{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #c2d2a421;padding-top:8px;font-size:11px;letter-spacing:1px;color:#becfbf}.rhythm-bar b{color:#f4d17b;margin-left:6px}.soundtrack{margin:0;font-size:10px;letter-spacing:.4px}.stat-gold strong{color:#ffdd80}.has-gold{filter:drop-shadow(0 0 5px #ffd66055)}.stats small{font-size:10px;letter-spacing:.6px}.stats strong{margin:4px 0;font-size:28px}.moves strong{font-size:34px}.progress{margin:8px 0 14px}.vault{color:#ffd877;padding:8px 13px;background:#10352fb8;border:1px solid #c5a45355;border-radius:9px;font-size:20px}.vault small{display:block;font-size:8px;letter-spacing:1.5px}.settings{position:relative;background:#123630dd;border:1px solid #8eae9950;border-radius:9px;z-index:20}.settings summary{padding:12px 14px;cursor:pointer;font-size:14px}.settings>div{position:absolute;right:0;top:52px;width:240px;padding:12px;background:#153b33;border:1px solid #c8ad6880;border-radius:12px;box-shadow:0 10px 25px #0007;display:flex;flex-direction:column;gap:7px}.settings button{text-align:left}.top-actions{align-items:center;max-width:none}.status{min-height:43px;font-size:12px}.boosters{margin-top:10px}.tools button{padding:6px 12px}.session-tools{margin-top:3px}.chapter-card{margin-top:24px}footer{padding:12px 0;margin:0 4%}.end-actions{padding-bottom:5px}.medal{font-size:35px}dialog{background:linear-gradient(135deg,#205047,#0d302b);border-color:#edcf83;box-shadow:0 20px 100px #0009}dialog::backdrop{background:#031b18a8;backdrop-filter:blur(8px)}dialog .primary{min-height:48px;font-size:16px}#play-sound{width:100%;box-shadow:0 0 35px #ffcb6a30}@keyframes gem-live{0%,100%{transform:translate(0,0) rotate(0)}25%{transform:translate(1px,-3px) rotate(var(--lean)) scale(1.06,.96)}65%{transform:translate(-1px,2px) rotate(calc(var(--lean) * -1)) scale(.96,1.05)}}@keyframes mist-drift{from{transform:translateX(-3%) scale(1)}to{transform:translateX(4%) scale(1.06)}}@keyframes canopy-sway{from{transform:translate(-3px,-2px) rotate(-.3deg)}to{transform:translate(5px,3px) rotate(.4deg)}}
@media(max-width:1150px){main{grid-template-columns:1fr minmax(350px,490px);gap:24px}.right{display:none}h1{font-size:44px}}@media(max-width:720px){header{height:78px}.brand{font-size:11px;max-width:170px}.brand small{font-size:8px}.top-actions{gap:5px}.vault{padding:6px;font-size:15px}.vault small{font-size:7px}.settings summary{font-size:11px;padding:10px 7px}.top-actions>button{font-size:11px;padding:10px 8px}.settings>div{top:44px}.story{display:none!important}main{display:block;margin:12px auto;padding:0 3%}.play{max-width:480px;margin:auto;padding:13px 10px 10px}.play .story-moment{display:block;padding:6px 10px;background-image:none;margin-bottom:8px}.story-moment p,.story-moment .mini{display:none}.story-moment strong{font-size:20px;margin:0}.tile{padding:1px}.gem{border-radius:6px}#board{padding:5px;gap:4px}.level-heading{margin-bottom:8px}.session-tools{gap:10px}.session-tools button{font-size:11px}.stats small{font-size:8px}.stats strong{font-size:24px}.moves strong{font-size:29px}.soundtrack{font-size:9px}.brand>span{font-size:25px}.status{font-size:11px}footer{font-size:8px}}@media(prefers-reduced-motion:reduce){.world-mist,.world-canopy{animation:none!important}.gem{animation:none!important}}
body[data-level="0"] #world-canvas{filter:sepia(.13) saturate(1.1)}body[data-level="1"] #world-canvas{filter:saturate(1.12)}body[data-level="2"] #world-canvas{filter:brightness(.64) hue-rotate(14deg) saturate(.9)}#world-canvas{transition:filter 2s}body[data-level="2"] .world-mist{background:radial-gradient(ellipse at 70% 45%,#cf8cff22,transparent 40%)}body[data-level="2"] .world-canopy{filter:brightness(.65)}
.vault{display:flex;align-items:center;gap:5px;padding:3px 10px 3px 3px!important;color:#ffe18c!important;min-width:115px;text-align:left;overflow:visible}.vault img{width:52px;height:52px;object-fit:contain;border-radius:14px}.vault b{font-size:22px}.vault small{font-size:9px!important;text-transform:none;letter-spacing:.3px;white-space:nowrap}.flying-gold{position:fixed;z-index:1000;width:35px;height:35px;border-radius:50%;pointer-events:none;background-image:url('treasures.png');background-size:300% 200%;background-position:0 0;box-shadow:0 0 16px #ffda6680}.gem{position:relative;overflow:hidden}.gem:after{content:'';position:absolute;inset:-70%;background:linear-gradient(110deg,transparent 40%,#ffffff00 46%,#ffffff66 50%,#fff0 55%,transparent 60%);animation:jewel-shine 5s var(--phase) infinite;pointer-events:none}.tile.selected .gem:after{animation-duration:1.5s}@keyframes jewel-shine{0%,35%{transform:translateX(-80%)}65%,100%{transform:translateX(80%)}}@media(max-width:720px){.vault{min-width:90px;gap:0}.vault img{width:39px;height:39px}.vault b{font-size:17px}.vault small{font-size:8px!important}.brand{font-size:10px;padding-left:25px;max-width:143px}.settings summary{font-size:10px}.top-actions>button{padding:7px}}@media(prefers-reduced-motion:reduce){.gem:after{display:none}}
.music-volume{display:block;color:#d8e4d5;padding:8px 10px;font-size:13px}.music-volume span{float:right;color:#eed08a}.music-volume input{display:block;width:100%;margin-top:10px;accent-color:#edc775}
/* Journey atlas: geographic data, accessible route controls, quiet board framing. */
.journey-objective,.weather-status{font-size:12px;text-align:center;color:#e7cf91;padding:5px 8px}.weather-status{color:#bbd8d1;min-height:26px}.sealed{outline:2px solid #ffe197!important;outline-offset:-4px;box-shadow:inset 0 0 18px #f3c46288!important}.atlas{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin:24px 0}.map-surface{position:relative;align-self:start;background:#0a2728;border-radius:18px;overflow:hidden;aspect-ratio:1}.map-surface img{width:100%;height:100%;display:block}.map-pin{position:absolute;transform:translate(-50%,-50%);border-radius:50%;padding:0!important;width:29px;height:29px;background:#f1ca70!important;color:#142c29!important;border:2px solid #fff0ba!important;font-size:12px;box-shadow:0 0 18px #edc36855}.route-list{display:grid;gap:7px;max-height:440px;overflow:auto}.route-card{text-align:left;display:grid;gap:5px;padding:12px!important}.route-card strong{font:20px Georgia,serif}.route-card small{font-size:11px;color:#bdd0c7}.route-levels{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:25px 0}.route-levels button{display:grid;gap:5px}.route-levels b{font-size:24px;color:#f5d485}.route-levels small{font-size:10px}.route-levels button:disabled{opacity:.4}.invitation-choices{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0}dialog:has(.atlas){max-width:950px;width:94vw}body[data-weather=rain] .board-wrap{box-shadow:0 0 28px #6cbbd333}body[data-weather=sand] .board-wrap{box-shadow:0 0 32px #ecad4944}body[data-weather=frost] .board-wrap{box-shadow:0 0 30px #c3eaff55}body[data-weather=heat] .board-wrap{box-shadow:0 0 35px #fa9d3b44}body[data-weather=wind] .board-wrap{box-shadow:0 0 30px #a4d8ce44}@media(max-width:650px){.atlas{grid-template-columns:1fr}.map-surface{max-width:340px;width:100%;margin:auto}.route-list{max-height:300px}.top-actions{gap:5px!important}.top-actions>button{padding:8px!important;font-size:11px}.brand{font-size:12px!important}}
.road-choices{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:24px 0}.road-option{display:flex;flex-direction:column;gap:9px;align-items:flex-start;text-align:left;min-height:100px;padding:20px;border:1px solid #cfad68;border-radius:12px;background:#203e38;color:#ffdf98}.road-option:hover{background:#365345;transform:translateY(-2px)}.road-option small{color:#c7d6cb;font-size:12px;line-height:1.5}.road-option strong{font-size:15px}.vault{order:9;min-width:185px!important;border-color:#d4af66!important;background:linear-gradient(135deg,#25483e,#132b29)!important}.vault img{width:70px;height:70px}.vault>span{display:flex;flex-direction:column;gap:2px}.vault #traveler-name{max-width:160px;overflow:hidden;text-overflow:ellipsis;font-size:10px!important}.vault b:after{content:' GOLD';font-size:9px;letter-spacing:1px;color:#dbc580}.collectible-art{display:block;flex-shrink:0;width:72px;height:72px;background-image:url('discoveries.png');background-size:400% 300%;border-radius:12px}.collection-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:22px 0}.collection-item{display:flex;flex-direction:column;align-items:center;text-align:center;padding:12px 8px;gap:8px;border:1px solid #d6b46940;border-radius:12px;background:#12342e}.collection-item strong{font-size:12px}.collection-item small{font-size:10px;color:#bdd1c3}.unfound .collectible-art{filter:brightness(.2) saturate(0)}.unfound{opacity:.65}.name-label{display:flex;flex-direction:column;gap:8px;margin:20px 0 12px}.name-label input{padding:12px;border:1px solid #b9aa75;border-radius:8px;background:#102d29;color:#fff;font:inherit}.discovery-reveal{position:fixed;left:50%;bottom:24px;transform:translate(-50%,30px) scale(.96);z-index:1100;display:flex;align-items:center;gap:15px;max-width:calc(100vw - 28px);width:440px;padding:15px;border:1px solid #ffe29a;border-radius:18px;background:linear-gradient(120deg,#244638,#092d2c);box-shadow:0 10px 60px #0009,0 0 28px #f6c45844;opacity:0;pointer-events:none;transition:opacity .25s,transform .4s}.discovery-reveal.shown{opacity:1;transform:translate(-50%,0) scale(1)}.discovery-reveal strong{font-family:Georgia,serif;font-size:22px;color:#ffe09a;display:block}.discovery-reveal small{display:block;font-size:12px;line-height:1.5;margin-top:6px;color:#d4e1d3}.flying-keepsake{position:fixed;z-index:1101;pointer-events:none}.flying-gold{background-image:url('discoveries.png');background-size:400% 300%;background-position:0 0;border-radius:7px;width:42px;height:42px}body[data-weather=calm] .play{box-shadow:0 20px 70px #0005,0 0 calc(50px * var(--journey-energy,0)) #efb84855;transition:box-shadow 2s}body[data-weather=calm] .world-mist{opacity:calc(.3 + var(--journey-energy,0));transition:opacity 3s}@media(max-width:720px){header{height:auto!important;min-height:115px;flex-wrap:wrap;gap:12px;padding:14px 0}.top-actions{width:100%;align-items:center;flex-wrap:wrap}.vault{margin-left:auto;min-width:150px!important}.vault img{width:48px;height:48px}.vault #traveler-name{max-width:120px}.road-choices{grid-template-columns:1fr;gap:12px}.collection-grid{grid-template-columns:repeat(2,1fr)}}@media(prefers-reduced-motion:reduce){.discovery-reveal{transition:none}.road-option:hover{transform:none}}
#pattern-status{border:1px solid #d4be793b;border-radius:8px;background:#102c2b;margin:6px 0;color:#f2d98c;font-size:12px;line-height:1.5;padding:9px}.resting-color{outline:2px dashed #b4cad4!important;outline-offset:-4px;filter:saturate(.55)}.boosters{display:flex;flex-wrap:wrap;gap:8px}.boosters button{flex:1 1 130px;min-height:42px;font-size:11px}.gold-tools{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:18px 0}.gold-tools button{padding:15px;border:1px solid #bfaa6c;border-radius:10px;background:#183a32;color:#f7d684}.settings select{width:100%;padding:10px;border:1px solid #a7b48d;border-radius:8px;background:#132c28;color:#fff;margin-top:6px}.brass-charm .vault{box-shadow:0 0 0 2px #d6b766,0 0 20px #cfaa4933}.brass-charm .vault:after{content:'✦';color:#f4ce79;font-size:25px}.moonlight .vault img{filter:hue-rotate(125deg) saturate(.7) brightness(1.15)}.moonlight .flying-gold{filter:hue-rotate(135deg) brightness(1.3)}body[data-pattern=basket] #board{border-color:#d6b878}body[data-pattern=wind] #board{border-color:#92d6d1}@media(max-width:500px){.gold-tools{grid-template-columns:1fr}}
.world-time{text-align:center;font:16px Georgia,serif;color:#f5d994;padding:10px;border-bottom:1px solid #c8b98433;letter-spacing:.5px}body[data-time="0"] #world-canvas{filter:sepia(.18) saturate(.95) brightness(1.08)}body[data-time="1"] #world-canvas{filter:saturate(1.06) brightness(1)}body[data-time="2"] #world-canvas{filter:saturate(1.12) brightness(.94)}body[data-time="3"] #world-canvas{filter:saturate(.85) brightness(.83)}#world-canvas{transition:filter 4s}body[data-time="2"] .world-mist,body[data-time="3"] .world-mist{background:radial-gradient(ellipse at 75% 30%,#b0bdf522,transparent 65%)}body[data-time="2"] .world-canopy,body[data-time="3"] .world-canopy{filter:brightness(.45)}.settings input[type=range]{width:100%}
.holiday-banner{display:block;width:100%;padding:10px;background:#594726;color:#ffe3a0;border:1px solid #dab569;border-radius:9px;font-size:12px;margin-bottom:8px}.holiday-banner[hidden]{display:none}.holiday-gem{background-image:url('holiday-treasures.png')!important;background-size:300% 200%!important}.calendar-events{max-height:220px;overflow:auto;border-block:1px solid #bba36444;padding:10px 0}.calendar-events p{font-size:12px;margin:7px 0}body[data-holiday=winter] .play{border-color:#bbdbcc}body[data-holiday=festival] .play{border-color:#edc65e}body[data-holiday=lanterns] .play{border-color:#aabce4}.settings>div{max-height:75vh;overflow:auto}
/* Storm expedition / compact market */
#storm-canvas{position:fixed;inset:0;width:100%;height:100%;z-index:12;pointer-events:none}
.quick-kit{display:flex;gap:8px;margin:10px 0}.quick-kit button{flex:1;padding:10px;font-size:12px;border:1px solid #b7924766;border-radius:9px;background:#193d36;color:#f7e7bd}.tool-drawer{border:1px solid #c9aa4b33;border-radius:10px;padding:10px;margin:10px 0}.tool-drawer summary{cursor:pointer;font-size:12px;color:#f3d38b}.tool-drawer .boosters{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}.tool-drawer .boosters button{flex:1 1 120px;padding:8px;font-size:11px;min-height:0}.tool-guide{font-size:11px;line-height:1.6;color:#bacac1}.audio-feedback{font-size:11px;color:#f2c776}.audio-feedback:has([hidden]):has(#audio-status:empty){display:none}
.weather-blocked{position:relative;box-shadow:inset 0 0 0 2px #9bd0e0!important}.weather-blocked:after{content:'';position:absolute;inset:0;border-radius:8px;pointer-events:none;background:repeating-linear-gradient(115deg,transparent 0 9px,#c9edff55 10px 12px,transparent 13px 18px);box-shadow:inset 0 -10px 12px #a6d8e87a}.weather-blocked .gem{opacity:.8}body[data-weather=sand] .weather-blocked:after{background:radial-gradient(ellipse at bottom,#d6a154bb,transparent 75%),repeating-radial-gradient(ellipse at bottom,#a8783466 0 2px,transparent 3px 6px);box-shadow:inset 0 -12px 10px #c29a65}body[data-weather=frost] .weather-blocked:after{background:linear-gradient(140deg,#def5ff99,transparent 40%,#d0eafa66);box-shadow:inset 0 0 12px 5px #e3f5ffb0}body[data-weather=heat] .weather-blocked:after{background:linear-gradient(0deg,#de842677,transparent);box-shadow:inset 0 -8px 10px #e4ad55}body[data-shield=on] #board{box-shadow:0 0 25px #70ddad55;border-color:#9becc2}
.market-hero{background:linear-gradient(#09222240,#092222c9),url('market-stall.png') center 46%/cover;padding:25px 18px 18px;border-radius:14px;text-align:center}.market-hero h2{font-size:28px;margin:10px 0;color:#fff0c9;text-shadow:0 2px 8px #000}.market-hero p{font-size:12px;color:#f4e5be}.market-tabs{display:flex;gap:6px;margin:14px 0}.market-tabs button{flex:1;padding:9px 5px;border:1px solid #c4a25266;border-radius:8px;font-size:12px;background:#132e29;color:#d9e0d5}.market-tabs [aria-selected=true]{background:#efcd79;color:#142d27;font-weight:700}.market-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px}.market-card{border:1px solid #b6995355;background:#183b32;border-radius:12px;padding:12px;display:flex;flex-direction:column;align-items:center;text-align:center}.market-card h3{font-size:16px;margin:7px 0}.market-card p{font-size:12px;line-height:1.5;margin:8px 0;min-height:54px}.market-card button{width:100%;padding:10px 6px;font-size:12px}.market-card .mini{font-size:9px}.gear-art{display:block;width:94px;height:94px;background-image:url('weather-gear.png');background-size:200% 200%;background-repeat:no-repeat;flex-shrink:0}.market-card .collectible-art{width:94px;height:94px}.market-pages{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:12px 0;font-size:12px}.market-pages button{padding:8px 12px}.market-pages button:disabled{opacity:.35}.shop-note{font-size:11px;line-height:1.5;color:#afc2b7}#dialog-body>.gear-art{width:130px;height:130px;margin:0 auto}#dialog-body:has(.market-hero){max-width:600px}.market-card>div{flex:1;display:flex;flex-direction:column}.market-card button{margin-top:auto}@media(max-width:420px){.market-hero{padding:14px 10px}.market-hero h2{font-size:22px}.market-card{padding:8px}.market-card p{font-size:11px}.market-card .gear-art,.market-card .collectible-art{width:72px;height:72px}}
.tool-detail{text-align:center}.tool-detail>.gear-art,.tool-detail>.collectible-art{margin:0 auto}.detail-actions{display:flex;flex-wrap:wrap;gap:10px}.detail-actions button{flex:1;padding:12px}.tool-detail .gear-art{animation:gear-arrive .45s ease-out}@keyframes gear-arrive{from{transform:translateY(20px) scale(.7);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}@media(prefers-reduced-motion:reduce){.tool-detail .gear-art{animation:none}}
/* Keep the board central; surrounding story is supporting context. */
main{grid-template-columns:minmax(160px,1fr) minmax(380px,560px) minmax(160px,1fr);gap:24px;align-items:center}aside.story,aside.right{padding:16px;background:#092b2555}aside.story h1{font-size:38px}aside.right h2{font-size:25px}.right .tip{margin:18px 0}.right blockquote{font-size:16px}.settings .holiday-banner{margin:0;font-size:11px;padding:8px;cursor:default}.play{position:relative;z-index:1}.settings{z-index:30}@media(max-width:1150px){main{grid-template-columns:minmax(0,560px);justify-content:center}aside.story,aside.right{display:none}.play{width:100%;max-width:560px}}@media(max-width:720px){main{display:block}.play{max-width:520px}}
/* Match crescendo: bounded particles and one smooth pulse, no strobe. */
.match-ring{position:absolute;width:24px;height:24px;border:2px solid #ffe394;border-radius:50%;box-shadow:0 0 10px currentColor;pointer-events:none}.star-spark{width:12px;height:12px;border-radius:0;clip-path:polygon(50% 0,62% 37%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%)}.gold-wave{position:absolute;left:50%;top:50%;width:70%;aspect-ratio:1;border:3px solid #ffe7a4;border-radius:50%;box-shadow:0 0 18px #f8cc6770,inset 0 0 18px #f8cc6744;pointer-events:none}.play[data-excitement=rising]{border-color:#ffda79;box-shadow:0 20px 65px #0008,0 0 30px #e8bd4f55}.play[data-excitement=radiant]{border-color:#fff0ad;box-shadow:0 20px 65px #0008,0 0 45px #ffcb6166}.play[data-excitement=radiant] .rhythm-bar{color:#ffe293}.play[data-excitement=radiant] .tile.special{box-shadow:inset 0 0 20px #ffd859,0 0 12px #ffd85955}
/* Weather deposition grows on cells while the visible board is idle. */
.world-canopy{display:none}.weather-coated:before{content:'';position:absolute;inset:0;border-radius:8px;pointer-events:none;z-index:2;opacity:var(--weather-depth,.3);background:linear-gradient(0deg,#a4dcea99,transparent 70%);box-shadow:inset 0 -12px 12px #a9ddef99;transition:opacity 1.5s,box-shadow 1.5s}body[data-weather=frost] .weather-coated:before{background:linear-gradient(0deg,#f3fbff 0%,#e1f4ffb0 22%,transparent 65%);box-shadow:inset 0 5px 9px #e5f5ffcc,inset 0 -13px 10px #effaffbb}body[data-weather=sand] .weather-coated:before{background:radial-gradient(ellipse at bottom,#d8ae76 0%,#b8803977 40%,transparent 75%);box-shadow:inset 0 -14px 12px #c69762bb}.route-levels small{font-size:10px}.world-time{font-size:12px;color:#eed8a3}.weather-status{line-height:1.5}#hint-count{color:#ffe390}

/* One scene owner: never expose the old waterfall behind a transition. */
body{background:#102e2e;background-image:none}

.atlas-arrival{padding:14px;border:1px solid #e7c776;border-radius:10px;background:#51431d;color:#ffe7a0!important}
.free-week-note{font-size:12px;color:#bfe9d1;margin:10px 0}.map-pin.free-week{box-shadow:0 0 0 3px #7fd9b266,0 0 18px #7fd9b2cc!important;border-color:#bff0d8!important}.free-week-pin-badge{position:absolute;top:-9px;right:-9px;background:#3fa784;color:#06201a;font-size:8px;font-weight:700;letter-spacing:.5px;border-radius:8px;padding:2px 4px;line-height:1}.route-card .free-week-badge{background:#3fa784;color:#06201a;font-size:9px;font-weight:700;letter-spacing:.4px;border-radius:8px;padding:2px 6px;margin-left:4px;vertical-align:middle}
.backpack-profile{display:flex;flex-direction:column;align-items:center;gap:3px}.top-actions #player-name{border:0;background:none;color:#ffe0a0;padding:1px 7px;font-size:12px;max-width:190px;overflow:hidden;text-overflow:ellipsis}.mini-map{position:relative;width:100%;max-width:275px;margin:12px auto}.mini-map img{display:block;width:100%;border-radius:12px}.mini-pin{position:absolute;transform:translate(-50%,-50%);width:24px;height:24px;border-radius:50%;border:1px solid #e3c789;background:#244c43;color:#ffedb8;font-size:11px;padding:0}.mini-pin.current-region{background:#ffe099;color:#173a31;box-shadow:0 0 0 5px #f0cf7033,0 0 20px #ffe18b}.mini-atlas h2{font-size:24px}.mini-atlas>p{font-size:12px}.mini-atlas #mini-atlas-open{width:100%;padding:10px}.mini-atlas .tip{margin:12px 0}.quick-kit{flex-wrap:wrap}.quick-kit button{min-width:110px}
body[data-weather=frost] .weather-blocked:before{opacity:1;background:linear-gradient(150deg,#fff,#dbeaf2 55%,#b8d1e1);box-shadow:inset 0 0 10px #fff}body[data-weather=sand] .weather-blocked:before{opacity:1;background:repeating-linear-gradient(165deg,#d6ad72 0 5px,#c69558 6px 9px);box-shadow:inset 0 0 10px #875b2d}body[data-weather=rain] .weather-blocked:before{opacity:1;background:linear-gradient(150deg,#477f98,#1d506c 75%,#9cdaeb);box-shadow:inset 0 4px 9px #c2eefc}body[data-weather=humidity] .weather-coated:before{background:radial-gradient(ellipse,#d3e8dfb0,#d3e8df40);box-shadow:inset 0 0 18px #cde5d7}body[data-weather=heat] .weather-coated:before{background:linear-gradient(25deg,#6c3b23aa,#d7984877,transparent);box-shadow:inset 0 -12px 15px #a66436}body[data-weather=wind] .weather-coated:before{background:repeating-linear-gradient(135deg,transparent 0 6px,#a1ac8977 7px 11px);box-shadow:inset 0 -8px 14px #7d8c68}body[data-weather=frost] .weather-blocked .gem,body[data-weather=sand] .weather-blocked .gem,body[data-weather=rain] .weather-blocked .gem{opacity:0}
/* Phone / tablet interaction layer. Keep zoom and page scrolling outside the board. */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}button,summary,a,input,select{touch-action:manipulation}#board .tile{min-height:0}#board,#board .tile{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.tile.finger-down{outline:3px solid #ffe7a1;background:#6a7558;z-index:4}.tile.finger-down .gem{filter:drop-shadow(0 0 10px #ffe6a4)}button,summary{min-height:44px}dialog .close{width:44px;height:44px;padding:0;z-index:2}input,select,textarea{font-size:16px}.settings>div{max-height:calc(100dvh - 100px - env(safe-area-inset-top));overscroll-behavior:contain}dialog{max-height:calc(100dvh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom));overscroll-behavior:contain}.mini-pin,.map-pin{min-height:0}button:focus-visible,summary:focus-visible{outline:3px solid #ffe9b2;outline-offset:3px}@media(hover:none){.tile:hover{transform:none;background:inherit}.tile.selected{transform:none}.top-actions button:hover{background:#15333199}}
@media(max-width:720px){header{height:auto;min-height:96px;position:relative;margin:0 10px;padding:8px 0;gap:10px;align-items:flex-start}.brand{font-size:11px;max-width:135px;margin-top:12px;flex-shrink:0}.top-actions{display:flex;gap:5px;max-width:none;flex:1;align-items:center}.top-actions>button,.settings summary{min-height:44px;padding:10px 8px;font-size:12px}.backpack-profile{flex:1 0 100%;align-items:flex-end}.top-actions .vault{padding:4px 9px;min-height:48px}.top-actions .vault img{width:42px;height:42px;object-fit:contain}.top-actions #player-name{min-height:32px;padding:5px 8px;font-size:12px}.settings{position:static}.settings>div{position:absolute;top:100%;right:0;width:min(330px,calc(100vw - 24px));z-index:40}.settings summary{white-space:nowrap}main{margin:8px auto;padding:0 6px}.play{padding:10px 6px;width:100%;max-width:520px;border-radius:14px}#board{gap:2px;padding:3px}.tile{padding:1px;border-radius:6px}.stats{gap:4px}.stats small{font-size:9px}.level-heading{font-size:10px;letter-spacing:.4px}.world-time{padding:6px}.weather-status{font-size:11px}.quick-kit{gap:5px}.quick-kit button{min-width:90px;padding:8px 5px;font-size:11px}.session-tools{display:flex;flex-wrap:wrap;gap:5px}.session-tools button{flex:1;min-height:44px}.tools button{min-height:44px}.tool-drawer summary{display:flex;align-items:center}.tool-drawer .boosters button{min-height:44px}.rhythm-bar{gap:8px;flex-wrap:wrap}.soundtrack{max-width:100%;overflow-wrap:anywhere}dialog{width:calc(100% - 16px);max-width:560px;padding:44px 16px 20px;border-radius:16px}dialog h2{font-size:29px}.atlas{display:block}.atlas .map-surface{max-width:290px;margin:0 auto 16px}.route-card{min-height:64px;width:100%}.route-levels{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.route-levels button{min-height:64px}.road-choices,.invitation-choices{display:flex;flex-wrap:wrap;gap:10px}.road-choices button,.invitation-choices button{flex:1 1 130px;min-height:48px}.market-tabs button{min-height:44px}.market-card .primary{min-height:48px}.collection-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.market-pages button{min-height:44px}footer{margin:0 10px}.mini-atlas{display:none!important}}
@media(max-width:360px){main{padding:0 2px}.play{padding-inline:3px}.brand{max-width:110px;font-size:10px;letter-spacing:1px}.top-actions{gap:3px}.top-actions>button,.settings summary{padding-inline:6px;font-size:11px}.market-cards{gap:6px}.market-card{padding:7px}.level-heading{font-size:9px}}
@media(max-height:520px) and (orientation:landscape){header{min-height:0}.backpack-profile{flex-basis:auto}.brand small{display:none}main{margin:6px auto}.play{max-width:440px}.settings>div{max-height:70dvh}dialog{max-width:700px}}
/* Separate hit-test regions: atlas content may never spill onto the board. */
main>.story,main>.play,main>.mini-atlas{min-width:0}.play{isolation:isolate;z-index:2}.mini-atlas{position:relative;z-index:0;isolation:isolate;contain:layout paint;overflow:hidden;max-width:100%;align-self:center;pointer-events:none}.mini-atlas h2,.mini-atlas p{overflow-wrap:anywhere}.mini-atlas button{pointer-events:auto}.mini-map{isolation:isolate;overflow:hidden;aspect-ratio:1;max-width:250px;pointer-events:none}.mini-map img{width:100%;height:100%;object-fit:contain;pointer-events:none}.mini-map .mini-pin{pointer-events:auto;max-width:24px;max-height:24px}.mini-atlas #mini-atlas-open{min-height:44px;transform:none;box-sizing:border-box}.board-wrap{isolation:isolate}#board{position:relative;z-index:0}#particles,#burst,#storm-canvas,#world-canvas,.world-mist{pointer-events:none!important}@media(min-width:1151px){main{grid-template-areas:'story game atlas';grid-template-columns:minmax(0,1fr) minmax(380px,560px) minmax(0,1fr);column-gap:28px}main>.story{grid-area:story}main>.play{grid-area:game}main>.mini-atlas{grid-area:atlas}}@media(max-width:1150px){main>.mini-atlas{display:none!important}main>.play{grid-area:auto}}
/* Weather cause and recovery are visible beside the board and on each affected cell. */
.weather-guide{font-size:12px;line-height:1.5;color:#d8e9d5;padding:9px 10px;margin:5px 0 9px;border-left:3px solid #80b49e;background:#183c32;border-radius:6px}.weather-guide.has-obstructions{border-color:#f6d17e;background:#493e25;color:#fff0c5}.weather-badge{position:absolute;bottom:1px;left:0;right:0;z-index:5;text-align:center;font:700 9px/1.4 'DM Sans',sans-serif;letter-spacing:.2px;color:#fff;background:#102d2eea;border-radius:3px;pointer-events:none}.weather-blocked:after{content:none!important;background:none!important;box-shadow:none!important}.weather-blocked{border:2px solid #f5d692!important}.weather-blocked .weather-badge{background:#4c3617;color:#ffeab4}@media(max-width:420px){.weather-badge{font-size:8px;letter-spacing:0}.weather-guide{font-size:11px}}

/* Region choices have independent hit areas and an unmistakable destination preview. */
.route-list{display:flex;flex-direction:column;gap:10px;min-width:0}
.route-list .route-card{flex:0 0 auto;min-height:106px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:7px;padding:16px 18px;background:#173e37;color:#fff2d6;border:1px solid #8f814c;border-radius:12px;text-align:left;line-height:1.4;white-space:normal}
.route-card strong{font-size:22px;line-height:1.25}.route-card small{font-size:13px;line-height:1.4}.route-card:hover,.route-card:focus-visible{background:#28594b;border-color:#f4cd74;outline-offset:3px}
dialog:has(.region-preview){width:min(94vw,780px);max-width:780px}.region-preview{margin:0 0 22px;position:relative;overflow:hidden;border-radius:14px;aspect-ratio:3/2;background:#102e2a}.region-preview img{display:block;width:100%;height:100%;object-fit:cover}.region-preview figcaption{position:absolute;inset:auto 0 0;padding:40px 22px 20px;background:linear-gradient(transparent,rgba(4,22,22,.95));display:grid;gap:7px}.region-preview strong{font:28px Georgia,serif;color:#fff3d5}.region-preview .mini{color:#ffdc88}
@media(max-width:600px){.route-list .route-card{min-height:100px;padding:14px}.region-preview strong{font-size:22px}.region-preview figcaption{padding:30px 14px 14px}}

@media(prefers-reduced-motion:no-preference){.region-preview img{animation:region-breathe 18s ease-in-out infinite alternate;transform-origin:center}@keyframes region-breathe{from{transform:scale(1)}to{transform:scale(1.055) translateY(-.5%)}}}

.profile-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:22px 0}.profile-stats>div{padding:15px 8px;background:#153b34;border:1px solid #b3945355;border-radius:12px;text-align:center}.profile-stats strong{display:block;color:#f6d57f;font-size:26px}.profile-stats span{display:block;font-size:13px;margin-top:6px}#profile-status{color:#f5d78f;min-height:1.5em}.name-label input{font-size:16px;max-width:100%;min-height:44px}

.power-badge{position:absolute;right:2px;bottom:1px;color:#fff7bd;text-shadow:0 1px 4px #000;font-size:20px;line-height:1;pointer-events:none;z-index:5}.tile[data-power=nova]{outline:2px solid #ffa15c;outline-offset:-3px}.tile[data-power=prism]{outline:2px solid #d9a5ff;outline-offset:-3px;background:linear-gradient(135deg,#394d80,#5a3058,#265951)}.collection-goal{font-size:14px;color:#ffdf99;border:1px solid #927749;border-radius:8px;margin:8px 0;padding:9px}.collection-goal.goal-complete{border-color:#78c6a0;color:#bdf9cf}.collection-goal[hidden]{display:none}
/* Keep mobile input responsive while preserving the living scene. */
@media(pointer:coarse){.tile .gem:after{animation-duration:8s}.play{backdrop-filter:none}.tile.finger-down .gem{filter:none}#board.resolving .gem{animation-play-state:paused}#board.resolving .gem:after{animation-play-state:paused}}

@media(any-pointer:coarse){#board.resolving .tile .gem,#board.resolving .tile .gem:after{animation-play-state:paused}.tile.clear{animation-duration:70ms!important}.match-ring,.beam{box-shadow:none}.spark{box-shadow:none}}

.story-discovery{width:100%;margin:10px 0 0;padding:10px 12px;min-height:44px;border:1px solid #71836b;border-radius:9px;background:#153c33;color:#d4decf;font-size:13px}.story-discovery.story-ready{border-color:#f3ca72;background:#4a4022;color:#ffe8a3}.story-discovery:disabled{cursor:default;opacity:.75}.story-clue{padding:14px;border-left:3px solid #edc775;background:#183f35}
/* Sun & Moon rules v1 — additive glow for night vertical matches. */
.tile.clear.moon-glow{box-shadow:0 0 18px 6px #ffd859,inset 0 0 14px #fffbd8}
@media(prefers-reduced-motion:no-preference){.tile.clear.moon-glow{animation:moon-glow-pulse .6s ease-out}}
@keyframes moon-glow-pulse{0%{box-shadow:0 0 0 0 #ffd85900}50%{box-shadow:0 0 26px 10px #ffd859,inset 0 0 18px #fffbd8}100%{box-shadow:0 0 18px 6px #ffd859,inset 0 0 14px #fffbd8}}
/* Daily Caravan — header entry point, cream/gold accent, no animation required. */
#caravan-open{background:linear-gradient(135deg,#2a4a3e,#173a32);border-color:#edc775aa!important;color:#fffbd8}
#caravan-open:hover{background:linear-gradient(135deg,#355c4e,#1f463c)}
/* The Portrait Hall: unlockable portrait cards, reveal overlay and wallpaper downloads. Additive only. */
.portrait-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:14px;margin:22px 0;max-height:56vh;overflow:auto}
.portrait-card{border-radius:12px;padding:10px;text-align:center;border:1px solid #d6b46940;background:#12342e;font:inherit;color:inherit}
.portrait-card.unlocked{cursor:pointer}
.portrait-card.unlocked:hover{background:#1c4038}
.portrait-card.unlocked img{display:block;width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:8px}
.portrait-card.unlocked strong{display:block;margin-top:8px;font-size:11px;color:#ffe09a;line-height:1.3}
.portrait-card.locked{opacity:.7}
.portrait-silhouette{display:block;width:100%;aspect-ratio:3/4;border-radius:8px;border:2px solid var(--gold);background:linear-gradient(135deg,#1c3630,#0c2420)}
.portrait-card.locked small{display:block;margin-top:8px;font-size:10px;line-height:1.4;color:#bdd1c3}
.portrait-card-art{display:block;width:100%;max-width:320px;margin:14px auto;border-radius:14px;box-shadow:0 10px 40px #0007}
.portrait-reveal{position:fixed;left:50%;bottom:24px;transform:translate(-50%,30px) scale(.96);z-index:1100;max-width:calc(100vw - 28px);width:380px;padding:18px;border:1px solid #ffe29a;border-radius:18px;background:linear-gradient(120deg,#244638,#092d2c);box-shadow:0 10px 60px #0009,0 0 28px #f6c45844;opacity:0;pointer-events:none;transition:opacity .25s,transform .4s}
.portrait-reveal.shown{opacity:1;transform:translate(-50%,0) scale(1);pointer-events:auto}
.portrait-reveal-card{display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;position:relative}
.portrait-reveal-card img{width:96px;border-radius:10px;box-shadow:0 8px 24px #0008;transition:transform .5s cubic-bezier(.2,.8,.2,1);transform:rotateY(90deg)}
.portrait-reveal-card.shown img,.portrait-reveal.shown .portrait-reveal-card img{transform:rotateY(0)}
.portrait-reveal-card.reduced img{transform:none}
.portrait-reveal-eyebrow{font-size:9px;letter-spacing:1.5px;color:var(--gold);margin-top:6px}
.portrait-reveal-card strong{font-family:'Cormorant Garamond',Georgia,serif;font-size:18px;color:#ffe09a;margin-top:6px}
.portrait-reveal-card small{font-size:11px;color:#d4e1d3}
.portrait-reveal-actions{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap;justify-content:center}
.portrait-reveal-actions button,.portrait-reveal-actions a{font-size:11px;padding:7px 11px;border-radius:7px;border:1px solid #cfad68;background:#203e38;color:#ffdf98;text-decoration:none}
.portrait-spark{position:absolute;left:50%;top:50%;width:6px;height:6px;border-radius:2px;background:#ffd859;box-shadow:0 0 8px #ffd859;pointer-events:none}
#portrait-hall-settings{width:100%}
@media(max-width:720px){.portrait-grid{grid-template-columns:repeat(3,1fr)}.portrait-reveal{width:calc(100% - 24px)}}
@media(prefers-reduced-motion:reduce){.portrait-reveal{transition:none}.portrait-reveal-card img{transform:none;transition:none}}
/* Terrain & Tide (Phase B): ground layers, additive only — no base-rule changes. */
.tile.ground-stone{border-color:#9fb0a0cc;box-shadow:inset 0 0 0 2px #7c8a7e66,inset 0 -10px 14px #3c463faa;background:repeating-linear-gradient(135deg,#5c6b60cc 0 6px,#3c463f99 7px 11px)}
.tile.ground-stone .gem{filter:saturate(.55) brightness(.9)}
.tile.ground-sand::after{content:'';position:absolute;inset:3px;border-radius:7px;background:repeating-linear-gradient(115deg,#e0c083ee 0 6px,#c79f5edd 7px 10px);box-shadow:inset 0 2px 4px #fff6da88,inset 0 -6px 8px #8a6a3277;opacity:.92;pointer-events:none}
.tile.ground-water{border-color:#6fb9c7cc;box-shadow:inset 0 0 14px #2f6b7555;background:linear-gradient(160deg,#1f5661cc,#143c45cc)}
.tile.ground-water-h{background-image:repeating-linear-gradient(90deg,#8fd8e35c 0 8px,#143c4599 9px 16px)}
.tile.ground-water-v{background-image:repeating-linear-gradient(0deg,#8fd8e35c 0 8px,#143c4599 9px 16px)}
.ground-sliding{animation:terrain-slide .22s ease-in-out}
@keyframes terrain-slide{0%{transform:scale(1)}50%{transform:scale(1.05) rotate(1deg)}100%{transform:scale(1)}}
.terrain-guide{border-left-color:#8ea6cf;background:#1c3542}
.terrain-explain{display:flex;align-items:center;justify-content:space-between;gap:14px}
.terrain-explain strong{font-family:Georgia,serif;font-size:18px;color:#ffe09a;display:block}
.terrain-explain small{display:block;font-size:12px;line-height:1.5;color:#d4e1d3;margin-top:4px}
.terrain-explain button{flex-shrink:0;background:var(--gold);color:#16362d;border:0;border-radius:8px;padding:9px 14px;font-weight:700}
@media(prefers-reduced-motion:reduce){.ground-sliding{animation:none}}

/* Keeper Encounters (Phase B). Additive overlay + banner + board/status accents.
   #keeper-objective reuses the existing .journey-objective class for its base look. */
.keeper-arrival{position:fixed;left:50%;top:14%;transform:translate(-50%,-10px) scale(.97);z-index:1200;max-width:calc(100vw - 28px);width:360px;padding:18px;border:1px solid #ffe29a;border-radius:18px;background:linear-gradient(135deg,#1c3630,#0c2420);box-shadow:0 20px 70px #000a,0 0 30px #f6c45844;opacity:0;pointer-events:none;transition:opacity .3s,transform .4s;text-align:center}
.keeper-arrival.shown{opacity:1;pointer-events:auto;transform:translate(-50%,0) scale(1)}
.keeper-arrival-card{display:flex;flex-direction:column;align-items:center;gap:6px}
.keeper-arrival .mini{color:var(--gold)}
.keeper-arrival strong{font-family:'Cormorant Garamond',Georgia,serif;font-size:22px}
.keeper-arrival p{font-size:13px;font-style:italic;color:#e6e7cf;margin:2px 0 6px}
.keeper-arrival button{border:1px solid #d6b66e70;background:#65532933;color:#ffdf92;border-radius:20px;padding:8px 18px;font-size:12px}
.keeper-stage{position:relative;width:220px;height:160px;margin-bottom:8px;border-radius:14px;overflow:hidden;background:#0a2420}
.keeper-stage.fallback{display:grid;place-items:center;height:auto;background:none}
.keeper-card-fallback{width:150px;border-radius:12px;box-shadow:0 10px 30px #0007}
.keeper-float{animation:keeper-float-soft 3.6s ease-in-out infinite alternate}
.keeper-bg{position:absolute;inset:0;background-size:cover;background-position:center}
.keeper-bg-anim{animation:keeper-bg-zoom 9s ease-in-out infinite alternate}
.keeper-figure{position:absolute;left:50%;bottom:0;transform:translateX(-50%);height:100%;width:auto;max-width:100%;object-fit:contain}
.keeper-figure-anim{animation:keeper-figure-float 4s ease-in-out infinite}
.keeper-eye{position:absolute;background:#1a1410;border-radius:40%;opacity:0;pointer-events:none}
.keeper-banner{position:fixed;left:50%;bottom:90px;transform:translate(-50%,16px);z-index:1150;max-width:calc(100vw - 28px);width:340px;padding:12px 16px;border:1px solid #ffe29a66;border-radius:14px;background:#173a34e8;box-shadow:0 12px 40px #0008;opacity:0;pointer-events:none;transition:opacity .25s,transform .3s}
.keeper-banner.shown{opacity:1;pointer-events:auto;transform:translate(-50%,0)}
.keeper-banner-card{display:flex;align-items:center;gap:10px;text-align:left}
.keeper-banner-card img{width:42px;height:42px;border-radius:8px;object-fit:cover;flex-shrink:0}
.keeper-banner-card small{color:var(--gold);letter-spacing:1px;font-size:10px;text-transform:uppercase}
.keeper-banner-card p{font-size:13px;font-style:italic;margin:2px 0 0;color:#e6e7cf}
.keeper-seal-pulse{animation:keeper-seal-pulse 1.6s ease-in-out infinite}
@keyframes keeper-float-soft{from{transform:translateY(0)}to{transform:translateY(-8px)}}
@keyframes keeper-bg-zoom{from{transform:scale(1);filter:hue-rotate(0deg)}to{transform:scale(1.04);filter:hue-rotate(6deg)}}
@keyframes keeper-figure-float{0%,100%{transform:translateX(-50%) translateY(0) scale(1)}25%{transform:translateX(-50%) translateY(-6px) scale(1.007)}50%{transform:translateX(-50%) translateY(0) scale(1.015)}75%{transform:translateX(-50%) translateY(6px) scale(1.007)}}
@keyframes keeper-seal-pulse{0%,100%{box-shadow:0 0 0 0 #ffd85900}50%{box-shadow:0 0 22px 8px #ffd859,inset 0 0 16px #fffbd8}}
@media(max-width:720px){.keeper-arrival{width:calc(100% - 24px);top:10%}.keeper-stage{width:180px;height:130px}.keeper-banner{width:calc(100% - 24px);bottom:70px}}
@media(prefers-reduced-motion:reduce){.keeper-arrival,.keeper-banner{transition:none}.keeper-float,.keeper-bg-anim,.keeper-figure-anim,.keeper-seal-pulse{animation:none}}
.tile.gold-rush{border-color:#ffd859;box-shadow:inset 0 0 16px #ffd859,0 0 14px 3px #ffd859b0;animation:gold-rush-ring 1.1s ease-in-out infinite}@keyframes gold-rush-ring{0%,100%{box-shadow:inset 0 0 14px #ffd859,0 0 10px 2px #ffd85988}50%{box-shadow:inset 0 0 26px #fffbd8,0 0 20px 6px #edc775dd}}@media(prefers-reduced-motion:reduce){.tile.gold-rush{animation:none;box-shadow:inset 0 0 18px #ffd859,0 0 14px 3px #ffd859aa}}
