:root{font-family:system-ui,-apple-system,"PingFang SC",sans-serif;color:#dfedf4;background:#071a29;font-synthesis:none}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 45% 0%,#173b50,transparent 65%),#071a29}header{height:86px;max-width:1440px;margin:auto;padding:0 40px;display:flex;align-items:center;justify-content:space-between}.brand{color:#f6dca0;font-size:23px;font-weight:800;text-decoration:none;letter-spacing:2px}.brand small{font-size:11px;color:#7994a6;margin-left:18px;font-weight:500;letter-spacing:3px}.edition{font-size:12px;color:#9db6c6}.edition span{margin-left:14px;padding:5px 9px;border:1px solid #365365;border-radius:5px;color:#f2d790}main{max-width:1440px;padding:0 40px 30px;margin:auto}.stage{position:relative;aspect-ratio:16/9;border-radius:14px;overflow:hidden;background:#114c75;box-shadow:0 24px 80px #0006;border:1px solid #47687b}canvas{width:100%;height:100%;display:block;outline:none;touch-action:none}.hud{pointer-events:none;position:absolute;top:22px;left:24px;right:24px;display:flex;justify-content:space-between;align-items:start}.profile{display:flex;gap:10px;align-items:center;background:#0a2948bb;border:1px solid #87c7db55;border-radius:14px;padding:7px 16px 7px 7px}.portrait{font-size:29px;border-radius:50%;background:#f8e4ad;padding:5px}.profile b{font-size:13px;font-weight:600}#hearts{color:#ff8c97;font-size:19px;letter-spacing:3px}.stats{display:flex;gap:10px;align-items:center}.stats>span,.stats button{padding:9px 13px;border:1px solid #ffffff44;background:#0a2948bb;border-radius:10px;color:#fff;font-size:14px;font-weight:650}#gems{color:#e6a1ff}#coins{color:#ffdc81}.stats button{pointer-events:auto}#quest{position:absolute;top:82px;right:24px;background:#08273cb0;border:1px solid #aacede55;border-radius:7px;padding:8px 14px;font-size:12px}#notice{position:absolute;top:23%;left:50%;transform:translateX(-50%);color:#ffedbb;background:#092a46db;border-radius:20px;padding:9px 22px;font-size:15px;opacity:0;transition:opacity .2s;pointer-events:none;white-space:nowrap}#notice.visible{opacity:1}.touch-controls{position:absolute;bottom:20px;left:22px;right:22px;display:flex;justify-content:space-between;pointer-events:none}.touch-controls>div{display:flex;gap:10px}.touch-controls button{pointer-events:auto;border:1px solid #c6e7ff6b;background:#d0eaff26;color:#edf8ff;border-radius:50%;width:60px;height:60px;font-size:22px;touch-action:none;user-select:none;backdrop-filter:blur(5px)}.touch-controls .jump{width:72px;height:72px;font-size:32px;margin-top:-12px}.touch-controls button.active{background:#ffe49d88;border-color:#ffe49d}.overlay{position:absolute;inset:0;display:grid;place-items:center;background:linear-gradient(90deg,#061c32dd,#061c32b0);backdrop-filter:blur(3px)}.overlay[hidden]{display:none}.intro{text-align:center;padding:20px;max-width:520px}.eyebrow{font-size:10px;letter-spacing:5px;color:#d6bf83}.mascot{font-size:53px;margin-top:17px}h1{font-size:clamp(27px,3.5vw,50px);line-height:1.3;margin:13px 0;color:#fff5db;letter-spacing:3px}.intro p{color:#9ab4c4;font-size:13px}.instructions{color:#a9becb;line-height:2.2;font-size:12px;margin:20px 0}kbd{font:11px monospace;background:#ffffff15;border:1px solid #ffffff28;border-radius:4px;padding:3px 6px;margin:0 2px}.primary{border:0;background:#f1d693;color:#1a3041;padding:14px 32px;border-radius:9px;font-size:15px;font-weight:800;min-width:230px;cursor:pointer}.primary span{margin-left:42px}.intro small{display:block;color:#93a7b4;font-size:10px;margin-top:15px}button{cursor:pointer;font-family:inherit}button:focus-visible,a:focus-visible{outline:3px solid #ffe49d;outline-offset:3px}footer{display:flex;justify-content:space-between;align-items:center;padding:20px 0;color:#9fb6c4;font-size:11px}footer>div{display:flex;gap:16px;align-items:center}footer button,footer a{background:none;border:none;font-size:11px;color:#a8c5d5;text-decoration:none;padding:5px 0}.dot{width:6px;height:6px;background:#b8dab8;border-radius:50%}.muted{color:#607f93}.tips{border-top:1px solid #ffffff10;display:flex;gap:22px;align-items:center;padding:18px 0;color:#7393a6;font-size:11px}.tips b{color:#cfbb8b;font-weight:500;white-space:nowrap}@media(max-width:800px){header{padding:0 16px;height:64px}.brand{font-size:17px}.brand small{display:none}main{padding:0 10px 12px}.edition{font-size:10px}.hud{top:10px;left:10px;right:10px}.portrait{font-size:19px}.profile{padding:3px 8px 3px 3px;gap:4px}.profile b{font-size:10px}#hearts{font-size:13px}.stats{gap:4px}.stats>span,.stats button{font-size:10px;padding:6px}#quest{top:55px;right:10px;font-size:9px;padding:5px}.touch-controls{bottom:10px;left:10px;right:10px}.touch-controls button{width:40px;height:40px;font-size:17px}.touch-controls .jump{width:50px;height:50px;font-size:25px}.intro{padding:10px}.eyebrow,.mascot,.intro small{display:none}h1{font-size:25px;margin:4px}.intro p{font-size:11px;margin:6px}.instructions{margin:7px;line-height:1.6;font-size:10px}.primary{padding:9px 18px;font-size:12px}.tips{flex-wrap:wrap;gap:8px}footer{align-items:flex-start;gap:8px;flex-wrap:wrap}.muted{display:none}}

@media(max-height:500px) and (orientation:landscape){header{height:46px;padding:0 16px}.brand{font-size:16px}.brand small{display:none}main{padding:0 10px}.stage{width:min(100%,calc((100svh - 93px)*16/9));margin:0 auto}.tips{display:none}footer{padding:9px 0;font-size:9px}.hud{top:8px;left:8px;right:8px}.profile{padding:3px 7px 3px 3px;gap:4px}.portrait{font-size:18px;padding:3px}.profile b{font-size:9px}#hearts{font-size:12px}.stats{gap:4px}.stats>span,.stats button{padding:5px 7px;font-size:10px}#quest{top:51px;right:8px;padding:4px 8px;font-size:9px}.touch-controls{bottom:9px;left:10px;right:10px}.touch-controls button{width:38px;height:38px;font-size:16px}.touch-controls .jump{width:46px;height:46px;font-size:23px;margin-top:-8px}.mascot,.eyebrow,.intro small{display:none}h1{font-size:24px;margin:5px}.intro p{font-size:10px;margin:6px}.instructions{font-size:9px;margin:8px;line-height:1.6}.primary{font-size:11px;padding:8px 15px;min-width:170px}}

.portrait{display:block;width:50px;height:50px;padding:0;background:#ffd997 url('assets/cat-v10.png') 0 -16px/256px 256px no-repeat;border:2px solid #fff0bc}.mascot{width:154px;height:150px;margin:0 auto;background:url('assets/cat-v10.png') 0 -4px/512px 512px no-repeat}.overlay{background:linear-gradient(90deg,#103451d9,#174477b0);backdrop-filter:blur(1px)}.intro{max-width:620px}h1{font-size:clamp(28px,3.3vw,46px);letter-spacing:2px;text-shadow:0 3px 0 #513724,0 0 26px #a7dcff30}h1 em{font-size:.64em;color:#ffda8e;font-style:normal;letter-spacing:10px}.profile{border-color:#fff1b45e;background:#153d69c9}.primary{background:linear-gradient(#ffe8ad,#efc876);box-shadow:0 4px 0 #ad8044}.touch-controls button{background:#386f8d66;box-shadow:inset 0 0 16px #a2eaff22}.stage{border-color:#84c0dca1}dialog{width:min(1060px,94vw);padding:25px;border:1px solid #779ab2;border-radius:15px;background:#0d2a44;color:#edf6fa;box-shadow:0 20px 90px #0009}dialog::backdrop{background:#051a2bb0;backdrop-filter:blur(4px)}.map-heading{display:flex;justify-content:space-between;align-items:start}.map-heading h2{margin:0;font-size:22px;color:#ffe5a4}.map-heading p,.map-help{font-size:12px;color:#a8c6d7}.map-heading button{background:#264a68;border:1px solid #8eb6ce55;border-radius:7px;color:#fff;padding:9px 14px}#map-canvas{width:100%;height:auto;display:block;border:1px solid #4f7491;border-radius:9px}.map-help{text-align:center;margin-bottom:0}@media(max-width:800px){.portrait{width:36px;height:36px;background-size:186px 186px;background-position:0 -12px}.intro{padding:8px}h1{font-size:26px}.map-heading h2{font-size:17px}}@media(max-height:500px) and (orientation:landscape){.portrait{width:32px;height:32px;background-size:167px 167px;background-position:0 -10px}.mascot{display:none}h1{font-size:23px}.intro p{font-size:10px}.map-heading h2{font-size:15px}dialog{padding:12px;width:85vw}#map-canvas{max-height:230px}.map-help{font-size:9px}}

.secondary{display:inline-block;margin:14px 7px 0;padding:9px 14px;background:#204e70;color:#e9f6ff;border:1px solid #87b7ce;border-radius:8px;font-size:12px}.difficulty-label{display:flex;gap:14px;align-items:center;margin:16px 0;color:#ffe2a3}.difficulty-label select{font:inherit;color:#e4f6ff;background:#1e4765;border:1px solid #95bcd0;padding:8px;border-radius:6px}#level-list{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;max-height:55vh;overflow:auto;padding:3px}.level-card{display:flex;flex-direction:column;gap:8px;text-align:left;border:1px solid #7091a2;background:#153e59;color:#d3e7ef;border-radius:10px;padding:16px;min-height:155px}.level-card b{font-size:16px;color:#ffe6a3}.level-card span{font-size:11px;line-height:1.5}.level-card em{font-size:11px;font-style:normal;color:#f1d683}.level-card.selected{border:2px solid #ffe3a0;background:#225b77}.profile b{max-width:175px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#level-dialog{max-height:90svh;overflow:auto}@media(max-width:800px){#level-list{grid-template-columns:repeat(2,1fr)}.level-card{padding:10px;min-height:140px}.level-card b{font-size:13px}.profile b{max-width:95px}.secondary{font-size:10px;padding:6px;margin-top:7px}.stats{gap:3px}.stats>span,.stats button{padding:5px 4px}}@media(max-width:450px){#level-list{grid-template-columns:1fr}.profile .portrait{display:none}.hud{left:5px;right:5px}.stats>span,.stats button{font-size:9px}.profile{gap:0;padding:4px}.profile b{font-size:9px;max-width:84px}.intro small{display:none}h1 em{letter-spacing:3px;font-size:.55em}}

/* Suppress browser selection/callouts only on the game surface. */
.stage,.stage *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.stage{touch-action:none}.stage button,.stage a{-webkit-tap-highlight-color:transparent}.touch-help,.touch-return{display:none}
@media(pointer:coarse),(max-width:900px) and (max-height:500px){
 body{overflow:hidden;overscroll-behavior:none}body>header,main>footer,.tips{display:none}main{max-width:none;padding:0;margin:0}.stage{width:100%;height:100svh;aspect-ratio:auto;border:0;border-radius:0;margin:0;box-shadow:none}
 .hud{top:max(10px,env(safe-area-inset-top));left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));gap:8px}.profile{padding:5px 9px;gap:6px}.profile b{font-size:12px;max-width:160px}#hearts{font-size:17px}.stats{gap:5px}.stats>span,.stats button,.touch-return{font-size:13px;padding:9px 10px;min-height:40px}.touch-return{display:block;pointer-events:auto;border:1px solid #ffffff44;background:#0a2948bb;border-radius:10px;color:#fff;text-decoration:none}
 #quest{top:max(65px,calc(env(safe-area-inset-top) + 55px));font-size:12px;right:max(12px,env(safe-area-inset-right))}#notice{white-space:normal;max-width:80%;width:max-content;text-align:center;font-size:14px}
 .touch-controls{bottom:max(18px,env(safe-area-inset-bottom));left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right))}.touch-controls>div{gap:8px}.touch-controls button,.touch-controls .jump{width:clamp(48px,15vw,64px);height:clamp(48px,15vw,64px);font-size:26px;margin-top:0;background:#194f75b3;border-width:2px}.touch-controls .jump{font-size:32px}
 .intro{max-width:580px;padding:20px}.intro h1{font-size:30px}.intro p{font-size:14px;line-height:1.6}.intro .instructions{display:none}.touch-help{display:block}.primary{min-height:48px;min-width:210px;font-size:16px;padding:12px 24px}.secondary{font-size:14px;min-height:44px;padding:10px 14px}
 dialog{max-height:90svh;overflow:auto;width:min(1060px,94vw)}#level-list{max-height:55svh}.map-heading button{min-height:44px}.difficulty-label select{min-height:44px}
}
@media(pointer:coarse) and (orientation:portrait){.hud{flex-wrap:wrap}.profile{width:100%;background:transparent;border:0;padding:0}.profile>div{display:flex;align-items:center;gap:12px}.profile .portrait{display:none}.stats{width:100%;justify-content:space-between}.stats>span,.stats button,.touch-return{padding:9px 7px;font-size:12px}#quest{top:max(98px,calc(env(safe-area-inset-top) + 90px))}.intro h1{font-size:30px}.intro h1 em{letter-spacing:3px}}

.finish-skip{position:absolute;bottom:115px;left:50%;transform:translateX(-50%);padding:12px 24px;border:1px solid #ffe49d;border-radius:12px;background:#183d60;color:#ffe49d;font-size:16px;min-height:48px}.finish-skip[hidden]{display:none}#quest{max-width:80%}

/* After the three guide stages, play has no textual hints. */
.no-hints #quest,.no-hints #notice,.no-hints .tips,.no-hints .map-help{display:none!important}

.portrait{background-size:256px 256px;background-position:0 -10px}.mascot{background-size:600px 600px;background-position:0 -35px}
.cloud-bar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:10px 14px;color:#c7eafa;font-size:13px}.cloud-bar a{color:#b8f1ff}.cloud-bar button,.hero-card button{background:#3b83a9;color:white;border:1px solid #a1dfff;border-radius:12px;padding:10px}.cloud-bar #cloud-status{flex:1}#hero-list{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.hero-card{padding:15px;border:1px solid #8dc8e966;border-radius:20px;background:#19466d;text-align:center}.hero-card p{font-size:14px;min-height:65px}.hero-portrait{height:155px;width:155px;margin:auto;background-size:620px 465px;background-repeat:no-repeat;background-position:0 0}.hero-card button:disabled{opacity:.55}.touch-controls button[data-key=skill]{width:48px;height:48px;font-size:20px}.touch-controls>div:last-child{gap:5px}@media(max-width:600px){#hero-list{grid-template-columns:1fr}.hero-card{display:grid;grid-template-columns:100px 1fr;gap:5px}.hero-portrait{grid-row:span 3;width:100px;height:100px;background-size:400px 300px}.hero-card p{min-height:0;margin:0}.hero-card h3{margin:0}.cloud-bar{padding:6px;font-size:11px;gap:8px}.hero-card button{min-height:44px}}

@media(pointer:coarse),(max-width:900px) and (max-height:500px){.cloud-bar{position:fixed;top:115px;left:10px;right:10px;z-index:6;pointer-events:none}.cloud-bar a,.cloud-bar button{pointer-events:auto}.cloud-bar #wallet{display:none}.cloud-bar:has(#cloud-retry[hidden]){display:none}.touch-controls{gap:4px}.touch-controls>div{gap:4px}.touch-controls>div:last-child{gap:4px}.touch-controls button,.touch-controls .jump{width:clamp(48px,13vw,60px);height:clamp(48px,13vw,60px)}}

@media(pointer:coarse),(max-width:900px) and (max-height:500px){.cloud-bar.error:has(#cloud-retry[hidden]){display:flex;background:#17334deb;border-radius:10px;z-index:35}}

.intro{max-height:calc(100svh - 28px);overflow-y:auto} .stage canvas,.touch-controls{touch-action:none}

@media(max-width:450px){#flags:not([hidden]){position:absolute;top:48px;right:0;background:#153d69e8;border:1px solid #8dc8e966;border-radius:8px;padding:6px 9px;font-size:12px}}

@media(pointer:coarse) and (orientation:portrait){.stats{gap:3px}.stats>span,.stats button,.touch-return{white-space:nowrap;padding:6px 5px;font-size:11px;min-height:38px}#flags:not([hidden]){top:88px;right:0;min-height:0;padding:6px 9px}}

/* Permanent companion collection and deliberate purchase confirmation. */
#hero-wallet{padding:12px 18px;border-radius:14px;background:#0c304d;color:#ffe49d;font-weight:700;margin-bottom:12px}#hero-target{display:grid;grid-template-columns:1fr auto;gap:10px;padding:18px;margin-bottom:18px;border:1px solid #ffdd9280;border-radius:18px;background:linear-gradient(120deg,#204f73,#284469)}#hero-target progress,#hero-target small{grid-column:1/-1}progress{width:100%;height:10px;border:0;border-radius:8px;overflow:hidden;accent-color:#ffd16f}progress::-webkit-progress-bar{background:#0b2c49;border-radius:8px}progress::-webkit-progress-value{background:linear-gradient(90deg,#e7ad51,#ffe5a2);border-radius:8px}.hero-card{position:relative;display:flex;flex-direction:column;gap:9px;align-items:stretch}.hero-card.owned{border-color:#95e6be}.hero-card h3{margin:3px}.hero-card p{margin:0;line-height:1.6}.hero-badge{align-self:center;color:#ffe29c;border:1px solid #ffe29c66;border-radius:30px;padding:4px 12px;font-size:12px}.hero-card .hero-demo,.hero-card .hero-goal{background:#153a59;border-color:#739db866}.hero-card .hero-action{margin-top:auto;background:linear-gradient(120deg,#f1c679,#efdba7);border-color:#fff0c3;color:#20364c;font-weight:750;min-height:48px}.hero-card small{color:#ffe2a4}.hero-card button:disabled{opacity:.65}#hero-preview,#hero-confirm{padding:18px;margin-top:18px;border:1px solid #d7edff66;border-radius:18px;background:#103451}#hero-preview canvas{width:100%;max-width:560px;height:auto;border-radius:12px;display:block;margin:auto}#hero-preview p,#hero-confirm p{line-height:1.7;font-size:14px}#hero-confirm button{min-height:48px;padding:12px;margin:4px;border:1px solid #ffe39b;border-radius:10px;background:#ffe1a0;color:#20364c}#hero-confirm button+button{background:#214c70;color:white;border-color:#8dc8e9}#hero-status{color:#ffe29c;line-height:1.6}#hero-dialog>small{display:block;line-height:1.8;color:#b7d8ec;margin-top:14px}@media(max-width:600px){.hero-card{display:flex}.hero-portrait{height:110px;width:110px;background-size:440px 330px}#hero-target{grid-template-columns:1fr}#hero-target span{font-size:14px}#hero-list{gap:16px}.hero-card p{min-height:0}.hero-card button{min-height:48px}}

/* Keep the latest adventures visible while only the full list scrolls. */
#level-dialog[open]{display:flex;flex-direction:column;overflow:hidden}#level-dialog>.map-heading,#level-dialog>.difficulty-label,#level-dialog>.map-help,#level-dialog>.latest-levels{flex-shrink:0}#level-list{min-height:0;flex:1 1 auto;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:#8ebacc #173b55}#level-list::-webkit-scrollbar{width:9px}#level-list::-webkit-scrollbar-track{background:#173b55;border-radius:8px}#level-list::-webkit-scrollbar-thumb{background:#8ebacc;border:2px solid #173b55;border-radius:8px}.latest-levels{display:flex;align-items:center;gap:8px;margin:12px 0}.latest-levels>span{font-size:12px;color:#b8d5e4;white-space:nowrap}.latest-level{flex:1;min-width:0;min-height:48px;padding:8px 12px;border:1px solid #88bad0;border-radius:8px;background:#234d65;color:#ffe5a4;font:inherit;font-size:13px;cursor:pointer}.latest-level.selected{border-color:#ffe4a2;background:#32617a}.latest-level:focus-visible{outline:2px solid #ffe4a2;outline-offset:2px}@media(max-width:450px),(max-height:500px){.latest-levels>span{display:none}.latest-level{font-size:12px;padding:7px 9px}.latest-levels{margin:8px 0}}

@media(max-height:500px){#level-dialog .difficulty-label{margin:8px 0}#level-dialog .level-card{min-height:96px;padding:8px;gap:6px}}

/* Administrator route demonstrations: independent controls and no reward settlement. */
#admin-demo[hidden],.demo-controls[hidden]{display:none!important}.demo-field{display:flex;align-items:center;gap:14px;margin:18px 0}.demo-field select{flex:1;min-width:0;background:#1b405c;color:#e7f5ff;border:1px solid #87aec5;border-radius:8px;padding:12px;font:inherit}#demo-dialog p{line-height:1.7;color:#c6deed}#demo-error{color:#ffe0a1!important}.demo-controls{position:absolute;top:85px;left:24px;right:24px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:9px 12px;border:1px solid #f2d58f99;border-radius:10px;background:#102f48e8;color:#fff1c5;font-size:12px;z-index:6;pointer-events:auto}.demo-controls>span{flex:1;min-width:150px}.demo-controls button,.demo-controls select{font:inherit;color:#f7f2da;background:#28516c;border:1px solid #91afbf;border-radius:7px;padding:8px;min-height:36px}.demo-controls label{display:flex;align-items:center;gap:5px}#admin-demo{border-color:#f1ce81;color:#ffe2a0}@media(pointer:coarse),(max-width:900px) and (max-height:500px){.demo-controls{top:72px;left:12px;right:12px;font-size:11px;padding:6px}.demo-controls button,.demo-controls select{min-height:44px}.demo-controls>span{min-width:120px}.demo-controls label{gap:3px}}
.camp-departure-actions{flex-wrap:wrap}.camp-admin-tools{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.adventure-front .camp-admin-tools button{flex:none;width:auto;min-height:36px;padding:5px 11px;font:inherit;font-size:12px;border:1px solid #92bdd466;border-radius:8px;background:#153c5480;color:#bfd8e8}.adventure-front .camp-admin-tools button:focus-visible{outline:2px solid #ffe4a2;outline-offset:2px}[data-admin-demo][hidden]{display:none!important}@media(pointer:coarse),(max-width:650px){.adventure-front .camp-admin-tools button{min-height:44px}}
