@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap');
:root{font-family:'DM Sans',sans-serif;color:#f1f0fa;background:#111320;font-synthesis:none;color-scheme:dark}*{box-sizing:border-box}body{margin:0;min-width:320px;background:radial-gradient(ellipse at 50% 45%,#1e2037 0,transparent 62%);min-height:100vh}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;border:1px solid #35374b;background:#222436;border-radius:9px;transition:background .15s,transform .15s}button:hover{background:#34364c}button:active{transform:translateY(2px)}button:focus-visible,a:focus-visible{outline:3px solid #bca4ff;outline-offset:4px}.ambient{position:fixed;width:350px;height:350px;filter:blur(110px);opacity:.08;pointer-events:none;z-index:-1}.a{background:#a18aff;top:180px;left:0}.b{background:#53efcd;bottom:0;right:0}main{max-width:1120px;margin:auto;padding:0 40px}header{height:94px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ffffff0c}.brand{display:flex;align-items:center;gap:12px;font-family:'Space Grotesk',sans-serif;font-weight:700;letter-spacing:2px;font-size:16px;color:inherit;text-decoration:none}.brand-icon{font-size:34px;line-height:1;color:#bfa4ff}.edition{margin-left:14px;color:#74768e;font-size:10px;letter-spacing:2px;font-weight:500}.top-actions{display:flex;gap:9px}.top-actions button{padding:9px 13px;font-size:13px;background:transparent;border-color:#303244}.top-actions button span{margin-left:6px}.intro{display:flex;justify-content:space-between;align-items:center;padding:38px 0 29px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:2.2px;color:#c2abd9}.eyebrow i,.board-top i{display:inline-block;width:6px;height:6px;border-radius:100%;background:#a6e4bd;margin-right:7px;box-shadow:0 0 10px #a6e4bd55}h1{font-family:'Space Grotesk',sans-serif;font-size:48px;letter-spacing:-2.3px;margin:8px 0 8px;line-height:1.15}em{font-style:normal;color:#bda5f5}.intro p{font-size:13px;color:#999aaf;margin:0}.best{text-align:right}.best span,.best small{display:block;color:#888aa0;font-size:10px;letter-spacing:1.8px}.best strong{display:block;font:500 29px 'Space Grotesk',sans-serif;letter-spacing:2px;margin:8px 0;color:#d9d1ef}.best small{font-size:11px;letter-spacing:0;color:#6f7189}.arcade{display:grid;grid-template-columns:190px 310px 190px;gap:28px;justify-content:center;align-items:start}.left-rail,.right-rail{display:flex;flex-direction:column;gap:18px;padding-top:30px}.panel{border:1px solid #35364b;border-radius:13px;background:linear-gradient(145deg,#252638bb,#1c1e30bb);padding:19px}.panel-label{font-size:10px;letter-spacing:1.7px;font-weight:600;color:#aaa9c0;display:flex;align-items:center;justify-content:space-between}.panel-label kbd{font-size:10px}.panel-label>span{color:#5e607a}.hold-panel canvas{width:100%;height:88px;display:block}.hint{text-align:center;font-size:9px;color:#797b94;margin-top:0}.stats>strong{font:500 30px 'Space Grotesk',sans-serif;letter-spacing:1px;display:block;margin:13px 0 26px}.stat-pair{display:flex;gap:38px}.stat-pair span{display:block;font-size:9px;letter-spacing:1.5px;color:#8a8ba2}.stat-pair b{display:block;font:500 25px 'Space Grotesk',sans-serif;margin-top:6px}.progress{height:4px;background:#34364c;border-radius:5px;margin:20px 0 8px;overflow:hidden}.progress>div{width:0;background:#bba3f7;height:100%;transition:width .3s}.stats small{color:#7e809a;font-size:10px}.tip{padding:8px 11px}.tip>span{font-size:9px;letter-spacing:1px;color:#b7a1e0}.tip p{font-size:12px;line-height:1.8;color:#7f819b}.board-top{display:flex;justify-content:space-between;align-items:center;height:30px;font-size:9px;letter-spacing:1.4px;color:#a1a2b9}.board-top time{font:11px 'Space Grotesk',sans-serif;color:#777a95}.board-wrap{position:relative;border:1px solid #55516d;border-radius:10px;overflow:hidden;box-shadow:0 0 0 5px #ffffff03,0 20px 70px #0004;background:#141625;aspect-ratio:1/2}#board,#effects{display:block;width:100%;height:100%}#effects{position:absolute;inset:0;pointer-events:none}.board-bottom{display:flex;justify-content:space-between;align-items:center;height:37px;font-size:8px;letter-spacing:1px;color:#7e8098}.board-bottom button{background:none;border:0;font-size:10px;color:#9b98b5;padding:4px;letter-spacing:0}.next-panel canvas{display:block;width:100%;height:285px}.controls{padding:18px}.controls>.panel-label{font-size:9px;margin-bottom:18px}.controls>div:not(.panel-label){display:flex;justify-content:space-between;align-items:center;font-size:10px;margin:10px 0;color:#9394ad}kbd{font-family:inherit;background:#ffffff05;border:1px solid #414258;border-bottom-width:2px;padding:3px 6px;border-radius:4px;color:#bab9cf;font-size:9px}.overlay{position:absolute;inset:0;background:linear-gradient(#17192de8,#17192df5);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:25px;z-index:2;backdrop-filter:blur(5px)}.overlay.hidden{display:none}.overlay-icon{font-size:44px;color:#bba1f2;margin-bottom:23px;text-shadow:0 0 40px #bba1f2aa}.overlay .eyebrow{font-size:8px;letter-spacing:2px;color:#8f8da9}.overlay h2{font:600 50px/.99 'Space Grotesk',sans-serif;letter-spacing:-2px;margin:18px 0}.overlay p{font-size:12px;line-height:1.9;color:#a5a3bc;margin:0 0 25px}.mode-picker{display:flex;width:100%;gap:8px;margin-bottom:13px}.mode-picker button{flex:1;padding:11px 3px;font-size:12px;border-color:#3e3d54;background:#23243a}.mode-picker button.selected{background:#bba3f71a;border-color:#af96e7;color:#d6c3ff}.mode-picker small{display:block;font-size:9px;color:#8e8aa8;margin-top:4px}.primary{width:100%;background:#bda5f5;border-color:#bda5f5;color:#211a36;font-weight:700;padding:15px;font-size:13px;box-shadow:0 4px 25px #bda5f51a}.primary:hover{background:#d0bfff}.primary span{margin-left:36px}.overlay>small{font-size:9px;color:#6f708a;margin-top:16px}#toast{position:absolute;top:40%;left:0;right:0;text-align:center;pointer-events:none;font:700 25px 'Space Grotesk',sans-serif;color:#fff;text-shadow:0 0 25px #bca4ff,0 2px 8px #000;opacity:0;z-index:1;transition:opacity .15s,transform .15s}#toast.show{opacity:1;transform:translateY(-12px)}#toast small{display:block;font-size:13px;color:#d4c0ff;margin-top:7px}footer{display:flex;justify-content:space-between;border-top:1px solid #ffffff0c;margin:32px 0 0;padding:22px 0 26px;color:#65677f;font-size:10px}footer>span:last-child{font-size:8px;letter-spacing:1.3px}.star{color:#b8a0ec;margin-left:12px}.touch-controls{display:none}.board-wrap.bump{animation:bump .15s}@keyframes bump{50%{transform:translateY(4px)}}@media(min-width:1000px) and (min-height:950px){.arcade{grid-template-columns:200px 340px 200px;gap:32px}.intro{padding:42px 0 35px}}@media(max-width:800px){main{padding:0 22px}.arcade{grid-template-columns:150px 280px 150px;gap:16px}.panel{padding:13px}.edition{display:none}h1{font-size:40px}.stats>strong{font-size:26px}.hint{font-size:8px}.controls{padding:12px}}@media(max-width:650px){main{padding:0 15px}header{height:63px}.brand{font-size:12px;gap:7px;letter-spacing:1px}.brand-icon{font-size:27px}.top-actions button{padding:8px;font-size:14px}.top-actions button span{display:none}.intro{padding:20px 0}.intro .eyebrow{font-size:8px}h1{font-size:32px;letter-spacing:-1.4px}.intro p{font-size:10px;max-width:205px;line-height:1.5}.best strong{font-size:20px}.best span{font-size:8px}.best small{display:none}.arcade{grid-template-columns:minmax(0,1fr) 83px;gap:12px;max-width:420px;margin:auto}.board-column{grid-column:1;grid-row:1 / 3}.left-rail{grid-column:2;grid-row:1;padding-top:30px;gap:10px}.right-rail{grid-column:2;grid-row:2;padding-top:0;margin-top:-5px}.panel{padding:10px;border-radius:9px}.panel-label{font-size:8px;letter-spacing:1px}.hold-panel canvas{height:48px}.hold-panel .hint,.tip,.controls,.next-panel .panel-label>span{display:none}.stats>strong{font-size:15px;letter-spacing:0;margin:10px 0 15px}.stat-pair{gap:10px;flex-direction:column}.stat-pair b{font-size:19px;margin-top:2px}.stat-pair span{font-size:7px}.progress{margin-top:12px}.stats small{font-size:8px}.next-panel canvas{height:170px}.board-top{font-size:8px;letter-spacing:.5px}.board-bottom{font-size:6px;letter-spacing:0}.overlay{padding:20px}.overlay h2{font-size:44px}.overlay-icon{margin-bottom:12px;font-size:32px}.overlay p{font-size:11px;margin-bottom:16px}.touch-controls{display:flex;gap:7px;max-width:420px;margin:12px auto 0;touch-action:none;user-select:none}.touch-controls button{min-width:0;flex:1;height:48px;font-size:19px}.touch-controls button:first-child,.touch-controls button:last-child{font-size:11px}.touch-controls button:last-child{background:#bba3f7;color:#211a36}footer{margin-top:20px;padding:16px 0;font-size:9px}footer>span:last-child{display:none}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

#score-status{font-size:10px;line-height:1.5;color:#b6a6d8;margin-top:12px}#retry-score{margin-top:8px;padding:7px 12px;font-size:11px}[hidden]{display:none!important}#ranking-dialog{width:min(440px,calc(100vw - 30px));max-height:85vh;overflow:auto;background:#1c1e30;color:#f1f0fa;border:1px solid #55516d;border-radius:16px;padding:28px;box-shadow:0 20px 80px #0008}#ranking-dialog::backdrop{background:#0c0d19bb;backdrop-filter:blur(6px)}#ranking-dialog h2{font:600 32px 'Space Grotesk',sans-serif;margin:14px 0}#ranking-dialog p,#ranking-status{font-size:12px;line-height:1.7;color:#a5a3bc}#ranking-list{padding:0;list-style:none}#ranking-list li{display:flex;justify-content:space-between;gap:15px;border-bottom:1px solid #ffffff12;padding:12px 0;font-size:13px}#ranking-list li span{overflow-wrap:anywhere}#ranking-list strong{color:#c9b5f7}#online-board{display:block;color:#c9b5f7;font-size:12px;margin:15px 0}#ranking-dialog .primary{margin-top:15px}

/* Prism Vault: jewel tones, a chapter journey, and illustrated treasure rooms. */
:root{font-family:'DM Sans','PingFang SC','Microsoft YaHei',sans-serif}h1{font-size:43px;letter-spacing:-1.5px}.edition{letter-spacing:2px}.intro p{line-height:1.8}.overlay h2{font-size:38px;line-height:1.3;letter-spacing:-1px}.overlay p{line-height:2}.overlay .eyebrow{letter-spacing:1.5px}.blast-button{display:flex;flex-direction:column;gap:10px;text-align:left;padding:16px;background:linear-gradient(135deg,#4f3c68,#27263d);border-color:#9478b8;border-radius:12px}.blast-button>span{font-size:11px;color:#decaef;display:flex;justify-content:space-between;align-items:center}.blast-button strong{font:500 25px 'Space Grotesk',sans-serif;color:#e3cbff}.blast-button small{font-size:9px;line-height:1.8;color:#b8a7cd}.blast-button:disabled{cursor:default;opacity:.55}.tip p{font-size:11px;line-height:1.9}.board-bottom{font-size:8px;letter-spacing:0}.stats small{font-size:10px}.stats>strong{margin-bottom:18px}.left-rail,.right-rail{gap:14px}.controls>div:not(.panel-label){margin:9px 0}.overlay>small{line-height:1.8}@media(max-width:650px){h1{font-size:27px}.intro p{max-width:220px;font-size:10px}.edition{display:none}.overlay h2{font-size:30px}.overlay{padding:15px}.overlay p{font-size:10px}.overlay .eyebrow{font-size:7px}.overlay-icon{font-size:24px;margin-bottom:8px}.overlay .mode-picker button{font-size:11px}.overlay>small{font-size:8px}.blast-button{padding:9px;gap:5px}.blast-button>span{font-size:9px;display:block}.blast-button kbd{display:none}.blast-button strong{font-size:20px}.blast-button small{font-size:8px}.right-rail{margin-top:4px}.next-panel canvas{height:130px}.left-rail{gap:8px}.stats>strong{margin:8px 0 10px}.stat-pair{gap:8px}.progress{margin-top:9px}.board-bottom{font-size:6px}.board-bottom>span{max-width:70%;overflow:hidden;white-space:nowrap}}
@media(max-width:650px){.best>span{font-size:7px}.intro{gap:10px}.board-wrap{min-height:0}}
@media(min-width:651px) and (max-height:900px){header{height:62px}.intro{padding:19px 0 18px}h1{font-size:33px;margin:5px 0}.intro p{font-size:11px}.arcade{grid-template-columns:170px clamp(220px,calc((100svh - 240px)/2),310px) 170px;gap:22px}.panel{padding:13px}.hold-panel canvas{height:64px}.stats>strong{font-size:25px;margin:10px 0 14px}.stat-pair b{font-size:22px}.progress{margin-top:12px}.blast-button{padding:12px;gap:5px}.blast-button strong{font-size:22px}.tip{padding:0 5px}.tip p{font-size:10px;margin:5px 0}.next-panel canvas{height:205px}.controls>div:not(.panel-label){margin:7px 0}.controls>.panel-label{margin-bottom:10px}.overlay{padding:18px}.overlay-icon{font-size:29px;margin-bottom:12px}.overlay h2{font-size:30px;margin:12px 0}.overlay p{font-size:11px;margin-bottom:16px}.overlay>small{margin-top:10px}.mode-picker button{padding:8px 3px}.primary{padding:12px}footer{margin-top:15px;padding:14px 0}.left-rail,.right-rail{gap:12px}}

/* Treasure rooms: candle- and moonlit scenes, relics that fly into the checklist. */
#treasure-dialog{--gold:#e6c88e;width:min(920px,calc(100vw - 28px),calc((100dvh - 310px)*1.6 + 52px));max-height:96dvh;overflow:auto;border:1px solid #5c5378;background:radial-gradient(ellipse at 50% 0,#2a2540,#17182a 70%);color:#efe9f7;border-radius:20px;padding:22px 26px 20px;box-shadow:0 30px 120px #000a,inset 0 1px 0 #ffffff10}
#treasure-dialog::backdrop{background:#080912e8;backdrop-filter:blur(10px)}
#treasure-dialog[open]{animation:hunt-in .45s cubic-bezier(.2,.8,.3,1)}
@keyframes hunt-in{from{opacity:0;transform:translateY(16px) scale(.97)}}
.hunt-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:14px}
.hunt-heading .eyebrow{color:var(--gold);letter-spacing:2px}
.hunt-heading h2{font:600 28px 'Space Grotesk','PingFang SC',sans-serif;letter-spacing:1px;margin:6px 0}
.hunt-heading p{font-size:12px;color:#a9a6c0;margin:0;line-height:1.7}
.hunt-count{text-align:right;flex:none}
.hunt-count strong{display:block;font:500 30px 'Space Grotesk',sans-serif;color:var(--gold);letter-spacing:1px;text-shadow:0 0 24px #e6c88e55}
.hunt-count small{font-size:10px;letter-spacing:2px;color:#8f8aa8}
#treasure-scene{position:relative;aspect-ratio:8/5;border-radius:14px;overflow:hidden;background:#151425;box-shadow:0 0 0 1px #e6c88e2e,0 18px 50px #0008;cursor:zoom-in}
#treasure-scene>svg{width:100%;height:100%;display:block}
#treasure-scene .flame{transform-box:fill-box;transform-origin:50% 100%;animation:flicker 1.8s ease-in-out infinite}
@keyframes flicker{30%{transform:scale(.9,1.1) skewX(3deg)}60%{transform:scale(1.06,.94) skewX(-3deg)}}
#treasure-scene .steam{opacity:0;animation:steam 4.2s ease-in-out infinite}
@keyframes steam{0%{opacity:0;transform:translateY(12px)}45%{opacity:.28}100%{opacity:0;transform:translateY(-34px)}}
#treasure-scene .brew{animation:brew 3s ease-in-out infinite}
@keyframes brew{50%{opacity:.15}}
#treasure-scene .mote{opacity:0;animation:mote 12s linear infinite}
@keyframes mote{0%{opacity:0;transform:translate(0,0)}20%,70%{opacity:.55}100%{opacity:0;transform:translate(26px,-70px)}}
#treasure-scene .drift{animation:drift 9s ease-in-out infinite}
@keyframes drift{50%{transform:translate(14px,-18px)}}
#treasure-scene .ffglow{transform-box:fill-box;transform-origin:center;animation:blink 3.4s ease-in-out infinite}
@keyframes blink{0%,100%{opacity:.18;transform:scale(.7)}50%{opacity:1;transform:scale(1.1)}}
#treasure-scene .glint{opacity:0;transform-box:fill-box;transform-origin:center;animation:glint 9s ease-in-out infinite}
@keyframes glint{0%,91%,100%{opacity:0;transform:scale(.2) rotate(0)}95%{opacity:1;transform:scale(1.25) rotate(60deg)}}
#treasure-scene .relic{transition:opacity .2s}
#treasure-scene .relic.taken{opacity:0}
#hunt-spot{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .6s;background:radial-gradient(circle at var(--x,50%) var(--y,50%),transparent 0 44px,#06071299 120px)}
#hunt-spot.on{opacity:1}
.hidden-item{position:absolute;width:5%;height:8%;min-width:26px;min-height:26px;border:0;background:transparent;border-radius:50%;transform:translate(-50%,-50%);padding:0;cursor:inherit;touch-action:manipulation}
.hidden-item:hover{background:radial-gradient(circle,#ffe9b022,transparent 70%)}
.hidden-item:active{transform:translate(-50%,-50%)}
.hidden-item:disabled{pointer-events:none}
.hidden-item:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.hidden-item.hinted::after{content:'';position:absolute;inset:-14px;border-radius:50%;border:1.5px dashed #f1d79acc;animation:hint-ring 1.6s ease-in-out infinite}
@keyframes hint-ring{50%{transform:scale(1.25) rotate(40deg);opacity:.4}}
.spark{position:absolute;width:6px;height:6px;margin:-3px;border-radius:50%;background:#fff1c4;box-shadow:0 0 8px 2px #ffd77a;pointer-events:none;animation:spark .7s cubic-bezier(.2,.7,.4,1) forwards}
@keyframes spark{to{transform:translate(var(--dx),var(--dy)) scale(.2);opacity:0}}
.found-ring{position:absolute;width:20px;height:20px;margin:-10px;border-radius:50%;border:2px solid #ffe2a0;pointer-events:none;animation:found-ring .7s ease-out forwards}
@keyframes found-ring{to{transform:scale(4);opacity:0}}
#treasure-scene.complete::after{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle,#ffe2a040,transparent 70%);animation:hunt-flash 1.4s ease-out forwards}
@keyframes hunt-flash{from{opacity:0}25%{opacity:1}to{opacity:0}}
.relic-flyer{position:fixed;left:0;top:0;z-index:5;pointer-events:none;filter:drop-shadow(0 0 10px #ffe3a0)}
.relic-flyer svg{display:block;width:100%;height:100%}
#treasure-list{display:flex;gap:8px;flex-wrap:wrap;padding:14px 0 6px}
#treasure-list span{display:flex;align-items:center;gap:8px;padding:4px 12px 4px 4px;border:1px solid #ffffff14;border-radius:99px;font-size:11px;color:#a9a6c0;background:#ffffff06;transition:border-color .3s,background .3s,color .3s}
#treasure-list i{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#0006;box-shadow:inset 0 0 0 1px #ffffff12}
#treasure-list svg{width:22px;height:22px;filter:brightness(0) invert(.42);opacity:.75;transition:filter .3s,opacity .3s}
#treasure-list b{font-weight:500}
#treasure-list .found{border-color:#e6c88e88;background:#e6c88e14;color:#f1dcb0;animation:chip-pop .45s ease-out}
#treasure-list .found i{box-shadow:inset 0 0 0 1.5px #e6c88e,0 0 14px #e6c88e55}
#treasure-list .found svg{filter:none;opacity:1}
#treasure-list.jar span{padding:4px;gap:0}
@keyframes chip-pop{40%{transform:scale(1.12)}}
#treasure-status{font-size:12px;color:#cdbf9f;min-height:20px}
.hunt-actions{display:flex;justify-content:space-between;gap:15px;margin-top:10px}
.hunt-actions button{padding:12px 18px;font-size:12px}
#treasure-hint{background:transparent;border-color:#e6c88e55;color:#ecd9b0}
#treasure-hint:hover{background:#e6c88e14}
.hunt-actions .primary{width:auto;min-width:230px}
.hunt-note{font-size:10px;color:#7f7b98;line-height:1.8;margin:12px 0 0}
@media(max-width:650px){#treasure-dialog{padding:14px;width:calc(100vw - 16px)}.hunt-heading{align-items:flex-start;margin-bottom:10px}.hunt-heading h2{font-size:22px}.hunt-heading p{font-size:11px}.hunt-count strong{font-size:22px}#treasure-scene{border-radius:10px}.hunt-actions{flex-direction:column;gap:8px}.hunt-actions .primary{min-width:0;width:100%}#treasure-list{gap:5px;padding:10px 0 4px}#treasure-list span{font-size:10px;padding:3px 9px 3px 3px;gap:5px}#treasure-list i{width:24px;height:24px}#treasure-list svg{width:17px;height:17px}.hidden-item{min-width:30px;min-height:30px}}

/* Languages: Japanese and Korean fonts, and labels that keep their own color. */
:root{font-family:'DM Sans','PingFang SC','Hiragino Sans','Apple SD Gothic Neo','Microsoft YaHei','Yu Gothic','Malgun Gothic','Noto Sans CJK SC',sans-serif}
.t{font-style:normal}
.panel-label>span[data-i18n]{color:inherit}
:lang(ko){word-break:keep-all}
:lang(en) h1,:lang(es) h1{letter-spacing:-1.8px}
