@import url('https://fonts.googleapis.com/css2?family=Gowun+Batang:wght@400;700&family=Noto+Sans+KR:wght@400;500;600;700&display=swap');
:root{--night:#061927;--deep:#092d3d;--sea:#0b4a5d;--foam:#d7e8df;--paper:#f2e6ca;--gold:#e0a858;--coral:#bd5742;--ink:#162431;--white:#fffaf0;--sans:'Noto Sans KR',sans-serif;--serif:'Gowun Batang',serif;--ease:cubic-bezier(.22,1,.36,1)}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--night);font-family:var(--sans)}button{font:inherit;cursor:pointer}button:active{transform:scale(.97)}button:focus-visible,a:focus-visible{outline:3px solid var(--gold);outline-offset:3px}.skip{position:fixed;z-index:9999;top:8px;left:8px;transform:translateY(-150%);background:#fff;color:#000;padding:12px}.skip:focus{transform:none}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
[hidden]{display:none!important}
.game,.scene{width:100%;height:100%;height:100dvh}.scene{position:relative;isolation:isolate;overflow:hidden;color:var(--white);background:linear-gradient(#071a28,#0b3f50 62%,#0d5365)}.scene-art{position:absolute;z-index:-7;inset:-3%;width:106%;height:106%;object-fit:cover;object-position:58% center;filter:saturate(.8) contrast(1.03);transition:opacity .55s var(--ease),transform 1.4s var(--ease);animation:slowPush 18s ease-in-out infinite alternate}.scene.transitioning .scene-art{opacity:.15;transform:scale(1.12)}@keyframes slowPush{to{transform:scale(1.045) translate3d(-.7%,.3%,0)}}.vignette{position:absolute;z-index:-3;inset:0;background:radial-gradient(circle at 54% 43%,transparent 20%,rgba(3,17,27,.12) 48%,rgba(3,17,27,.82) 110%),linear-gradient(90deg,rgba(3,18,29,.66),transparent 46%,rgba(3,18,29,.18))}.art-cut{position:absolute;z-index:-6;inset:0;background:linear-gradient(110deg,transparent 32%,rgba(255,244,211,.1) 32.15%,transparent 32.5%),repeating-linear-gradient(0deg,rgba(255,255,255,.018) 0 1px,transparent 1px 4px);mix-blend-mode:overlay;pointer-events:none}
.sky-layer{position:absolute;z-index:-5;inset:0 0 44%;overflow:hidden}.sky-layer i{position:absolute;width:3px;height:3px;border-radius:50%;background:#fff2cc;box-shadow:0 0 10px #fff2cc;animation:starPulse 2.6s ease-in-out infinite alternate}.sky-layer i:nth-child(1){left:12%;top:28%}.sky-layer i:nth-child(2){left:35%;top:17%;animation-delay:.5s}.sky-layer i:nth-child(3){left:61%;top:29%;animation-delay:1s}.sky-layer i:nth-child(4){left:76%;top:13%;animation-delay:1.4s}.sky-layer i:nth-child(5){left:88%;top:37%;animation-delay:.2s}@keyframes starPulse{to{opacity:.25;transform:scale(.6)}}.sun-layer{position:absolute;z-index:-5;right:9%;top:14%;width:min(18vw,190px);aspect-ratio:1;border-radius:50%;background:#e8aa54;box-shadow:0 0 0 12px rgba(228,171,89,.1),0 0 70px rgba(228,171,89,.35);opacity:.35}.mist{position:absolute;z-index:-2;width:70vw;height:16vw;min-height:80px;border-radius:50%;background:rgba(222,235,220,.14);filter:blur(24px);animation:mistMove 17s ease-in-out infinite alternate}.mist-a{left:-30%;top:45%}.mist-b{right:-35%;top:25%;animation-delay:-8s}@keyframes mistMove{to{transform:translateX(24vw) scale(1.15);opacity:.3}}
.paper-islands{position:absolute;z-index:-4;inset:0;pointer-events:none}.paper-islands i{position:absolute;bottom:18%;display:block;background:#112e35;filter:drop-shadow(0 -5px 0 rgba(240,215,170,.09));clip-path:polygon(0 100%,8% 62%,18% 72%,26% 39%,36% 56%,48% 20%,56% 47%,66% 31%,78% 61%,91% 52%,100% 100%)}.paper-islands.back i:nth-child(1){left:-8%;width:48%;height:25%;opacity:.65}.paper-islands.back i:nth-child(2){left:34%;width:38%;height:19%;opacity:.55}.paper-islands.back i:nth-child(3){right:-8%;width:38%;height:29%;opacity:.58}.paper-islands.front{z-index:-1}.paper-islands.front i{bottom:5%;background:#061d27}.paper-islands.front i:first-child{left:-12%;width:47%;height:16%}.paper-islands.front i:last-child{right:-10%;width:42%;height:13%}.wave-layer{position:absolute;left:-8%;width:116%;height:18%;background:var(--sea);clip-path:polygon(0 33%,5% 22%,11% 37%,17% 20%,24% 36%,31% 19%,38% 39%,45% 25%,52% 43%,60% 20%,68% 37%,76% 18%,84% 37%,92% 21%,100% 37%,100% 100%,0 100%);transform-origin:center bottom}.wave-back{z-index:-1;bottom:0;opacity:.75;animation:waves 5s ease-in-out infinite alternate}.wave-front{z-index:3;bottom:-7%;height:17%;background:#062c3b;animation:waves 3.7s ease-in-out infinite alternate-reverse;filter:drop-shadow(0 -3px 0 rgba(207,231,220,.18))}@keyframes waves{to{transform:translateX(3%) scaleY(1.08)}}.ship-layer{position:absolute;z-index:2;width:min(32vw,430px);right:8%;bottom:7%;filter:drop-shadow(0 18px 18px rgba(0,0,0,.5));transform-origin:center bottom;animation:shipRock 4.2s ease-in-out infinite alternate;transition:transform .8s var(--ease),opacity .45s}.ship-layer svg{width:100%;overflow:visible}.sail{fill:#e7d4a8;stroke:#7e5534;stroke-width:4;filter:drop-shadow(5px 7px 0 rgba(0,0,0,.18))}.mast{fill:#613f2c}.hull{fill:#2b1a19;stroke:#d2974f;stroke-width:5}.oar{fill:none;stroke:#a96f3e;stroke-width:6;stroke-linecap:round}@keyframes shipRock{to{transform:rotate(2deg) translateY(8px)}}.storm-flash{position:absolute;z-index:12;inset:0;background:#d9ecff;opacity:0;pointer-events:none}.storm-flash.flash{animation:flash .6s ease-out}@keyframes flash{0%,100%{opacity:0}20%{opacity:.72}32%{opacity:.05}47%{opacity:.4}}
#particleCanvas{position:absolute;z-index:4;inset:0;width:100%;height:100%;pointer-events:none}.hud-top{position:absolute;z-index:20;top:0;left:0;right:0;min-height:76px;padding:max(14px,env(safe-area-inset-top)) 24px 12px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;background:linear-gradient(rgba(3,17,27,.82),transparent);text-shadow:0 2px 10px #001}.game-mark{display:flex;align-items:center;gap:10px;font-family:var(--serif);font-weight:700}.game-mark svg{width:36px;height:36px;fill:none;stroke:currentColor;stroke-width:2}.chapter-status{text-align:center}.chapter-status span,.chapter-status strong{display:block}.chapter-status span{font-size:9px;letter-spacing:.22em;color:var(--gold);font-weight:700}.chapter-status strong{font-family:var(--serif);font-size:14px;margin-top:4px}.hud-actions{justify-self:end;display:flex;gap:8px}.hud-actions button{height:44px;min-width:44px;padding:0 12px;display:flex;align-items:center;justify-content:center;gap:7px;border:1px solid rgba(255,255,255,.3);color:#fff;background:rgba(2,20,31,.45);backdrop-filter:blur(8px)}.hud-actions svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7}.hud-actions #soundButton svg{fill:currentColor;stroke:none}.hud-actions span{font-size:11px}.compass{position:absolute;z-index:10;left:24px;top:50%;width:74px;height:74px;border:1px solid rgba(255,255,255,.32);border-radius:50%;display:grid;place-items:center;color:#fff;background:rgba(2,19,30,.25);backdrop-filter:blur(4px)}.compass:before{content:'';position:absolute;inset:8px;border:1px dashed rgba(255,255,255,.25);border-radius:50%}.compass span{position:absolute;top:-15px;font-size:8px;letter-spacing:.15em}.compass i{position:absolute;width:2px;height:25px;background:var(--gold);transform-origin:50% 100%;bottom:50%;transition:transform 1s var(--ease)}.compass b{font-size:10px;margin-top:28px}
.title-card{position:absolute;z-index:10;left:9%;top:50%;transform:translateY(-45%);max-width:540px;text-shadow:0 4px 18px #00111c;animation:titleIn .9s var(--ease) both}@keyframes titleIn{from{opacity:0;transform:translate(-40px,-45%)}}.title-card p{font-size:10px;letter-spacing:.28em;font-weight:700;color:#f1c57e}.title-card h1{margin:12px 0 5px;font-family:var(--serif);font-size:clamp(66px,9vw,125px);font-weight:400;line-height:.84;letter-spacing:-.08em}.title-card h1 em{color:var(--gold);font-style:normal}.title-card>span{display:block;font-family:var(--serif);font-size:17px;margin:25px 0 32px}.title-card button{min-height:54px;padding:0 25px;border:1px solid rgba(255,255,255,.55);background:var(--coral);color:#fff;box-shadow:8px 8px 0 rgba(2,16,25,.35)}.title-card button b{margin-left:45px}.title-card #continueButton{display:block;margin-top:10px;background:rgba(4,24,34,.58);box-shadow:none}.title-card #continueButton[hidden]{display:none}
.dialogue{position:absolute;z-index:15;left:7%;right:7%;bottom:max(42px,env(safe-area-inset-bottom));display:grid;grid-template-columns:min(18vw,210px) minmax(0,800px);align-items:end;gap:0;animation:bubbleIn .38s var(--ease) both}@keyframes bubbleIn{from{opacity:0;transform:translateY(28px) scale(.98)}}.speaker-portrait{height:230px;align-self:end;position:relative;overflow:hidden;filter:drop-shadow(0 10px 20px rgba(0,0,0,.55))}.speaker-portrait:before{content:'';position:absolute;inset:0;background:var(--portrait-image) center 22%/cover no-repeat;clip-path:polygon(18% 0,89% 6%,100% 79%,76% 100%,0 91%,8% 18%);filter:saturate(.72) contrast(1.1)}.speaker-portrait:after{content:'';position:absolute;inset:10% 5% 0;background:linear-gradient(transparent 58%,#071d28);clip-path:polygon(18% 0,89% 6%,100% 79%,76% 100%,0 91%,8% 18%)}.speech-bubble{position:relative;min-height:160px;padding:29px 85px 24px 38px;color:var(--ink);background:var(--paper);box-shadow:12px 13px 0 rgba(3,17,27,.48),inset 0 0 0 2px rgba(93,66,36,.14);clip-path:polygon(0 5%,97% 0,100% 86%,94% 100%,3% 96%)}.speech-bubble:before{content:'';position:absolute;left:-25px;bottom:27px;border:25px solid transparent;border-right-color:var(--paper);transform:rotate(-12deg)}.speaker{display:inline-block;margin-top:-48px;margin-bottom:8px;padding:9px 21px;color:#fff;background:var(--coral);font-family:var(--serif);font-weight:700;box-shadow:5px 5px 0 rgba(2,17,26,.38)}.speech-bubble p{min-height:48px;margin:0;font-family:var(--serif);font-size:clamp(16px,1.65vw,23px);line-height:1.75;letter-spacing:-.02em}.next-line{position:absolute;right:30px;bottom:25px;border:0;background:none;color:var(--coral);font-size:12px;font-weight:700}.next-line span{display:inline-block;margin-left:7px;animation:bob .8s ease-in-out infinite alternate}@keyframes bob{to{transform:translateY(4px)}}.choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:17px}.choices:empty{display:none}.choices button{min-height:48px;padding:10px 14px;text-align:left;border:1px solid rgba(22,36,49,.28);background:#fffaf0;color:var(--ink);font-size:12px}.choices button:hover,.choices button:focus{background:var(--ink);color:#fff;border-color:var(--ink)}
.quick-progress{position:absolute;z-index:14;right:24px;top:50%;transform:translateY(-50%);display:grid;gap:13px}.progress-dot{width:44px;height:44px;border:1px solid rgba(255,255,255,.3);border-radius:50%;display:grid;place-items:center;background:rgba(2,18,29,.46);color:#fff;font-family:var(--serif);font-size:12px;position:relative}.progress-dot.active{border-color:var(--gold);color:var(--gold);box-shadow:0 0 0 4px rgba(224,168,88,.15)}.progress-dot.done{background:var(--gold);color:var(--night)}.progress-dot:after{content:'';position:absolute;top:43px;height:14px;width:1px;background:rgba(255,255,255,.25)}.progress-dot:last-child:after{display:none}
.minigame{position:absolute;z-index:18;inset:0;display:grid;place-items:center;padding:90px 7% 40px;background:rgba(3,17,27,.56);backdrop-filter:blur(4px);animation:gameIn .45s var(--ease) both}.minigame[hidden]{display:none}@keyframes gameIn{from{opacity:0;transform:scale(1.04)}}.minigame-card{width:min(780px,100%);max-height:calc(100dvh - 125px);overflow:auto;padding:30px 36px;color:var(--ink);background:var(--paper);border:2px solid #fff4d6;box-shadow:17px 17px 0 rgba(0,0,0,.35);clip-path:polygon(1% 0,98% 1%,100% 96%,96% 100%,0 98%)}.minigame-kicker{margin:0;color:var(--coral);font-size:9px;letter-spacing:.24em;font-weight:700}.minigame h2{font-family:var(--serif);font-size:clamp(27px,4vw,43px);margin:7px 0}.minigame-card>p:not(.minigame-kicker){font-family:var(--serif);line-height:1.6}.minigame-stage{margin-top:20px}.minigame-feedback{min-height:28px;margin-top:14px;font-size:12px;font-weight:700;color:var(--coral)}.name-runes{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.name-runes button{aspect-ratio:1;border:0;background:#dfcfaa;color:var(--ink);font-family:var(--serif);font-size:22px;box-shadow:4px 4px 0 #94724a}.name-runes button.hit{background:var(--coral);color:#fff;transform:translateY(5px);box-shadow:none}.mast-game{height:210px;position:relative;overflow:hidden;background:linear-gradient(#bdd0c4,#4d8791);border:8px solid #d0b67e}.mast{position:absolute;left:50%;bottom:0;width:10px;height:90%;background:#573a27}.rope{position:absolute;left:50%;top:25%;width:94px;height:74px;border:5px solid #b98448;border-radius:50%;transform:translateX(-50%)}.siren{position:absolute;top:18px;width:58px;height:58px;border-radius:50%;display:grid;place-items:center;background:var(--paper);border:2px solid var(--coral);font-family:var(--serif);font-size:21px}.siren.left{left:8%;animation:sirenFloat 1.2s ease-in-out infinite alternate}.siren.right{right:8%;animation:sirenFloat 1.2s ease-in-out infinite alternate-reverse}@keyframes sirenFloat{to{transform:translateY(15px)}}.bind-meter{height:12px;background:#fff;margin-top:12px}.bind-meter i{display:block;height:100%;width:0;background:var(--coral);transition:width .12s}.bind-button{width:100%;min-height:55px;margin-top:12px;border:0;background:var(--ink);color:#fff;font-weight:700}.bow-track{position:relative;height:165px;background:#d8c397;overflow:hidden;border:6px solid #b18a55}.axe{position:absolute;bottom:15px;width:38px;height:90px;border:5px solid #705138;border-top:0}.axe:before{content:'';position:absolute;left:-14px;top:-15px;width:56px;height:26px;border:5px solid #705138;border-radius:50%}.bow-target{position:absolute;left:18px;top:68px;width:34px;height:10px;background:var(--coral);border-radius:8px}.bow-target:after{content:'';position:absolute;right:-18px;top:-6px;border:11px solid transparent;border-left-color:var(--coral)}.power-line{position:absolute;bottom:0;left:0;width:14px;height:100%;background:rgba(9,45,61,.75);animation:powerSweep 1.7s ease-in-out infinite alternate}.power-line.stopped{animation-play-state:paused}@keyframes powerSweep{to{transform:translateX(690px)}}.shoot-button{min-height:55px;width:100%;margin-top:12px;border:0;background:var(--coral);color:#fff;font-weight:700}
.overlay-dialog{width:min(850px,calc(100% - 28px));max-width:none;border:0;padding:0;background:transparent;color:var(--ink)}.overlay-dialog::backdrop{background:rgba(1,12,20,.82);backdrop-filter:blur(8px)}.close-dialog{position:absolute;z-index:3;right:17px;top:17px;width:46px;height:46px;border:1px solid var(--ink);border-radius:50%;background:transparent;font-size:25px}.map-sheet,.menu-sheet{position:relative;padding:55px 6%;background:var(--paper);box-shadow:18px 18px 0 rgba(0,0,0,.38);clip-path:polygon(1% 0,99% 2%,100% 97%,95% 100%,0 98%)}.overline{font-size:9px;letter-spacing:.22em;color:var(--coral);font-weight:700}.map-sheet h2,.menu-sheet h2{font-family:var(--serif);font-size:43px;margin:4px 0}.map-sheet>p{font-size:12px}.game-map{position:relative;margin-top:28px;height:310px;background:#123d49;overflow:hidden}.game-map svg{width:100%;height:100%}.map-sea{fill:#e1cda6;opacity:.25}.map-route{fill:none;stroke:#e3ad63;stroke-width:4;stroke-dasharray:7 9}.map-node{position:absolute;width:42px;height:42px;border-radius:50%;border:2px solid #efd099;background:#123d49;color:#fff;display:grid;place-items:center;font-family:var(--serif)}.map-node.current{background:var(--coral);animation:mapPulse 1s ease-in-out infinite alternate}.map-node.done{background:var(--gold);color:var(--ink)}@keyframes mapPulse{to{box-shadow:0 0 0 9px rgba(224,168,88,.25)}}.map-node small{position:absolute;top:45px;white-space:nowrap;font-family:var(--sans);font-size:9px}.map-legend{display:flex;gap:25px;margin-top:17px;font-size:10px}.map-legend i{display:inline-block;width:11px;height:11px;border-radius:50%;background:var(--gold);margin-right:6px}.map-legend span:last-child i{background:var(--coral)}.menu-dialog{width:min(540px,calc(100% - 28px))}.stats{display:grid;grid-template-columns:repeat(3,1fr);margin:30px 0;border-block:1px solid rgba(22,36,49,.18)}.stats div{padding:22px;text-align:center;border-left:1px solid rgba(22,36,49,.18)}.stats div:first-child{border:0}.stats strong,.stats span{display:block}.stats strong{font-family:var(--serif);font-size:35px;color:var(--coral)}.stats span{font-size:10px}.menu-sheet>button{width:100%;min-height:52px;border:0;background:var(--ink);color:#fff}.legal{font-size:10px;line-height:1.6;color:#6a716d}
@media(max-width:760px){.scene-art{object-position:61% center}.hud-top{grid-template-columns:1fr auto;padding:12px 13px}.chapter-status{display:none}.game-mark span{font-size:13px}.hud-actions button{padding:0;width:44px}.hud-actions span{display:none}.compass{display:none}.sun-layer{width:34vw;right:6%;top:15%}.title-card{left:24px;right:24px;top:auto;bottom:14%;transform:none}.title-card h1{font-size:clamp(64px,22vw,92px)}.title-card>span{font-size:14px;margin:18px 0 24px}.title-card button{width:100%;text-align:left}.title-card #continueButton{width:100%}.ship-layer{width:65vw;right:-8%;bottom:9%}.quick-progress{right:10px;top:100px;transform:none;gap:8px}.progress-dot{width:30px;height:30px;font-size:9px}.progress-dot:after{top:29px;height:9px}.dialogue{left:0;right:0;bottom:max(10px,env(safe-area-inset-bottom));display:block}.speaker-portrait{position:absolute;left:6px;bottom:calc(100% - 20px);width:120px;height:140px}.speech-bubble{min-height:210px;padding:27px 28px 52px;clip-path:polygon(0 4%,97% 0,100% 94%,94% 100%,2% 97%)}.speaker{margin-top:-43px;margin-left:90px}.speech-bubble p{font-size:17px;min-height:72px}.choices{grid-template-columns:1fr}.next-line{right:25px;bottom:19px}.minigame{padding:74px 12px 12px}.minigame-card{padding:25px 20px;max-height:calc(100dvh - 88px)}.name-runes{grid-template-columns:repeat(3,1fr)}.game-map{height:280px}.map-sheet,.menu-sheet{padding:60px 22px 28px}.overlay-dialog{width:100%;height:100%;max-height:100%;margin:0}.overlay-dialog .map-sheet,.overlay-dialog .menu-sheet{min-height:100%}}
@media(max-height:660px) and (orientation:landscape){.title-card{top:53%;bottom:auto;transform:translateY(-50%)}.title-card h1{font-size:56px}.title-card>span{margin:12px 0}.dialogue{grid-template-columns:130px minmax(0,700px);bottom:8px}.speaker-portrait{height:150px}.speech-bubble{min-height:132px;padding:24px 70px 18px 30px}.speech-bubble p{font-size:15px}.quick-progress{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.mist,.scene-art,.ship-layer{transform:none!important}}

/* Every playable state is viewport-locked. Internal panels never scroll. */
html,body,.game,.scene{width:100%;height:100%;height:100dvh;max-height:100dvh;overflow:hidden;overscroll-behavior:none}
.minigame-card{height:min(680px,calc(100dvh - 116px));max-height:calc(100dvh - 116px);overflow:hidden;display:flex;flex-direction:column;padding:clamp(18px,3vh,30px) clamp(20px,4vw,36px)}
.minigame-card>p{margin-block:clamp(4px,1vh,12px)}.minigame-stage{min-height:0;flex:1;display:flex;flex-direction:column;justify-content:center;margin-top:clamp(8px,1.5vh,20px)}.minigame-feedback{flex:0 0 auto;margin-top:clamp(5px,1vh,14px)}
.name-runes{height:100%;max-height:430px;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr))}.name-runes button{min-height:0;aspect-ratio:auto}
.mast-game{height:auto;min-height:110px;flex:1;max-height:270px}.bow-track{height:auto;min-height:105px;flex:1;max-height:230px}
.overlay-dialog{height:min(700px,calc(100dvh - 28px));max-height:calc(100dvh - 28px);overflow:hidden}.map-sheet,.menu-sheet{width:100%;height:100%;min-height:0!important;overflow:hidden;display:flex;flex-direction:column;padding-block:clamp(22px,5vh,55px)}.game-map{flex:1;min-height:0;height:auto;margin-top:clamp(10px,3vh,28px)}.map-legend{flex:0 0 auto}.menu-sheet .stats{flex:0 0 auto;margin-block:clamp(12px,3vh,30px)}.menu-sheet .legal{margin-bottom:0}
button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.music-guide{width:min(540px,calc(100% - 28px));max-width:none;max-height:calc(100dvh - 28px);padding:0;border:0;background:transparent;color:var(--ink);overflow:hidden}.music-guide::backdrop{background:rgba(1,12,20,.82);backdrop-filter:blur(8px)}.music-guide-card{padding:clamp(25px,5vh,48px);text-align:center;background:var(--paper);box-shadow:15px 15px 0 rgba(0,0,0,.35);clip-path:polygon(1% 0,99% 2%,100% 96%,94% 100%,0 98%)}.music-guide svg{width:58px;height:58px;fill:var(--coral)}.music-guide h2{margin:7px 0 10px;font-family:var(--serif);font-size:clamp(25px,5vw,38px)}.music-guide-card>p:not(.overline){font-family:var(--serif);line-height:1.65}.music-guide-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:24px}.music-guide-actions button{min-height:50px;border:1px solid var(--ink);background:transparent;color:var(--ink)}.music-guide-actions button:first-child{border-color:var(--coral);background:var(--coral);color:#fff}
@media(max-width:760px){
  .title-card{bottom:max(7%,env(safe-area-inset-bottom));max-height:calc(100dvh - 86px)}.title-card p{margin-block:5px}.title-card h1{font-size:clamp(52px,19vh,92px)}.title-card>span{margin:clamp(8px,2vh,18px) 0 clamp(12px,2.5vh,24px)}.title-card button{min-height:48px}
  .minigame-card{height:calc(100dvh - 86px);max-height:calc(100dvh - 86px);padding:clamp(14px,2.5vh,25px) 20px}.minigame h2{font-size:clamp(24px,4.5vh,36px);margin:3px 0}.minigame-card>p:not(.minigame-kicker){font-size:clamp(12px,1.8vh,15px);line-height:1.45}.name-runes{max-height:none}.name-runes button{font-size:clamp(17px,3vh,22px);box-shadow:3px 3px 0 #94724a}.bind-button,.shoot-button{min-height:44px;margin-top:7px}.minigame-feedback{min-height:20px;font-size:10px}
  .overlay-dialog{width:100%;height:100dvh;max-height:100dvh}.map-sheet h2,.menu-sheet h2{font-size:clamp(29px,5vh,43px);margin:0}.map-sheet>p{margin:4px 0}.game-map{height:auto;min-height:0;margin-top:10px}.map-legend{margin-top:8px}.stats div{padding:clamp(8px,2vh,22px)}.stats strong{font-size:clamp(26px,4.5vh,35px)}.legal{font-size:9px;line-height:1.4}
  .music-guide{width:calc(100% - 24px)}.music-guide-card{padding:clamp(22px,4vh,36px) 20px}.music-guide-actions{grid-template-columns:1fr;margin-top:16px}.music-guide-actions button{min-height:48px}
}
@media(max-height:720px){
  .title-card{bottom:4%}.title-card p{display:none}.title-card h1{font-size:clamp(48px,17vh,78px)}.title-card>span{margin:8px 0 10px;font-size:12px}.title-card button{min-height:44px}
  .speech-bubble{min-height:180px;padding-top:23px}.speech-bubble p{font-size:15px;line-height:1.55;min-height:55px}.choices{gap:5px;margin-top:8px}.choices button{min-height:42px;padding-block:7px}
  .minigame{padding-top:70px;padding-bottom:8px}.minigame-card{height:calc(100dvh - 80px);max-height:calc(100dvh - 80px)}.minigame-kicker{font-size:8px}.mast-game{min-height:85px}.bow-track{min-height:85px}.map-sheet,.menu-sheet{padding-top:40px;padding-bottom:16px}
}

/* Tactile paper-theatre layers */
.scene{--touch-x:0px;--touch-y:0px;--touch-rx:0deg;--touch-ry:0deg;perspective:1100px}.storybook-touch{position:absolute;z-index:6;inset:76px 0 0;width:100%;height:calc(100% - 76px);padding:0;border:0;background:transparent;cursor:grab;touch-action:manipulation}.storybook-touch:active{transform:none;cursor:grabbing}.scene-art{will-change:transform,filter;transform-origin:56% 52%;animation:storybookBreath 11s ease-in-out infinite;filter:saturate(.83) contrast(1.05) drop-shadow(0 18px 18px rgba(0,0,0,.22))}.scene.transitioning .scene-art{transform:translate3d(var(--touch-x),var(--touch-y),0) scale(1.12);opacity:.15}
@keyframes storybookBreath{0%,100%{transform:translate3d(var(--touch-x),var(--touch-y),-12px) rotateX(var(--touch-rx)) rotateY(var(--touch-ry)) scale(1.045);filter:saturate(.8) contrast(1.04) brightness(.92)}45%{transform:translate3d(calc(var(--touch-x) - 1.1%),calc(var(--touch-y) + .5%),18px) rotateX(var(--touch-rx)) rotateY(var(--touch-ry)) scale(1.09);filter:saturate(.91) contrast(1.08) brightness(1.04)}72%{transform:translate3d(calc(var(--touch-x) + .5%),calc(var(--touch-y) - .35%),5px) rotateX(var(--touch-rx)) rotateY(var(--touch-ry)) scale(1.065);filter:saturate(.86) contrast(1.06) brightness(.97)}}
.paper-frame{position:absolute;pointer-events:none;transition:transform .42s var(--ease);will-change:transform}.frame-back{z-index:-6;inset:4.5% 3.5% 4%;border:9px solid rgba(233,213,169,.1);box-shadow:0 0 0 5px rgba(3,18,27,.25),inset 0 0 45px rgba(245,220,165,.14);clip-path:polygon(1% 2%,98% 0,100% 96%,96% 100%,2% 98%,0 5%);transform:translate3d(calc(var(--touch-x) * -.2),calc(var(--touch-y) * -.2),-28px) rotateX(calc(var(--touch-rx) * -.4)) rotateY(calc(var(--touch-ry) * -.4));animation:frameBreathe 8s ease-in-out infinite}.frame-front{z-index:5;inset:8% 5% 7%;border:clamp(12px,2vw,26px) solid transparent;border-image:linear-gradient(135deg,rgba(248,225,178,.17),rgba(19,42,48,.1),rgba(244,209,151,.2)) 20;filter:drop-shadow(0 18px 16px rgba(0,0,0,.23));transform:translate3d(calc(var(--touch-x) * .45),calc(var(--touch-y) * .35),38px) rotateX(calc(var(--touch-rx) * .6)) rotateY(calc(var(--touch-ry) * .6));animation:frameFloat 7s ease-in-out infinite alternate}@keyframes frameBreathe{50%{opacity:.72;filter:brightness(1.3)}}@keyframes frameFloat{to{translate:0 -5px;filter:drop-shadow(0 24px 19px rgba(0,0,0,.34)) brightness(1.12)}}
.paper-islands.back{animation:layerDriftBack 12s ease-in-out infinite alternate}.paper-islands.front{animation:layerDriftFront 8s ease-in-out infinite alternate}.sun-layer{animation:sunHover 9s ease-in-out infinite alternate}.art-cut{animation:paperLight 6s ease-in-out infinite alternate}@keyframes layerDriftBack{to{transform:translate3d(calc(var(--touch-x) * -.32),calc(var(--touch-y) * -.2 - 7px),-20px) scale(1.018)}}@keyframes layerDriftFront{to{transform:translate3d(calc(var(--touch-x) * .42),calc(var(--touch-y) * .3 + 5px),25px) scale(1.035)}}@keyframes sunHover{to{transform:translate3d(calc(var(--touch-x) * -.5),calc(var(--touch-y) * -.4 - 8px),-35px);box-shadow:0 0 0 18px rgba(228,171,89,.07),0 0 95px rgba(228,171,89,.5)}}@keyframes paperLight{to{opacity:.6;background-position:14px 0,0 3px}}
.scene.storybook-poked .frame-front{animation:pageSpring .58s var(--ease)}.scene.storybook-poked .paper-islands.front{animation:cutoutSpring .6s var(--ease)}.scene.storybook-poked .ship-layer{animation:shipPoke .7s var(--ease)}@keyframes pageSpring{0%,100%{scale:1}35%{scale:1.035;filter:drop-shadow(0 30px 25px rgba(0,0,0,.5)) brightness(1.2)}65%{scale:.99}}@keyframes cutoutSpring{30%{transform:translate3d(calc(var(--touch-x) * .7),calc(var(--touch-y) * .55 - 10px),55px) scale(1.06)}}@keyframes shipPoke{0%,100%{transform:rotate(0)}35%{transform:rotate(-4deg) translateY(-13px)}70%{transform:rotate(2deg) translateY(4px)}}
.touch-ripples{position:absolute;z-index:7;inset:0;pointer-events:none;overflow:hidden}.touch-ripples i{position:absolute;width:20px;height:20px;margin:-10px;border:2px solid rgba(255,224,169,.85);border-radius:50%;box-shadow:0 0 20px rgba(255,210,134,.45);animation:paperRipple .72s ease-out forwards}@keyframes paperRipple{to{opacity:0;transform:scale(8);border-width:.5px}}

/* Timed Cyclops challenge */
.trial-clock{flex:0 0 auto;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:14px;margin-bottom:10px;color:var(--ink)}.trial-clock>div{display:flex;align-items:baseline;gap:5px;min-width:82px}.trial-clock span{font-family:var(--serif);font-size:25px;font-weight:700;color:var(--coral);font-variant-numeric:tabular-nums}.trial-clock small{font-size:7px;letter-spacing:.14em}.trial-clock>i{height:9px;overflow:hidden;background:#cdbb96;box-shadow:inset 0 1px 2px rgba(0,0,0,.2)}.trial-clock b{display:block;width:100%;height:100%;background:var(--coral);transform-origin:left;transition:transform .05s linear}.name-runes{flex:1;min-height:0;height:auto}.time-danger .trial-clock span{animation:clockPulse .32s ease-in-out infinite alternate}.time-danger .trial-clock b{background:#8f271f}.time-danger .name-runes{animation:dangerShake .35s ease-in-out infinite alternate}.name-runes button.wrong{animation:runeWrong .25s ease-out;background:#762b28;color:#fff}.time-failed .name-runes{filter:brightness(.58) saturate(.4)}.time-won .trial-clock b{background:#2e7b68}.retry-trial{min-height:36px;margin-left:8px;padding:6px 12px;border:0;background:var(--ink);color:#fff;font-weight:700}@keyframes clockPulse{to{transform:scale(1.13);color:#8f271f}}@keyframes dangerShake{to{transform:translateX(2px)}}@keyframes runeWrong{40%{transform:translateX(-5px) rotate(-2deg)}70%{transform:translateX(4px) rotate(2deg)}}
@media(max-width:760px){.storybook-touch{inset:70px 0 210px;height:auto}.paper-frame{inset-inline:2%}.trial-clock{gap:8px;margin-bottom:6px}.trial-clock span{font-size:20px}.trial-clock>div{min-width:70px}.retry-trial{min-height:32px;padding:4px 8px}.minigame-feedback{line-height:1.5}}
@media(max-height:620px){.trial-clock{margin-bottom:4px}.trial-clock span{font-size:17px}.trial-clock>i{height:7px}.name-runes{gap:5px}}
@media(prefers-reduced-motion:reduce){.scene-art,.paper-frame,.paper-islands,.sun-layer,.art-cut{animation:none!important}.scene-art{transform:scale(1.045)!important}.storybook-touch{display:none}.touch-ripples{display:none}}
