:root{--play-ink:#254e51;--play-paper:#fff9e9;--play-gold:#ffd26c}
.island-play{font-family:'Pretendard','Noto Sans KR',sans-serif;color:var(--play-ink);background:#9cdff1;font-size:21px;line-height:1.6;overflow:hidden}
.island-play button{font:inherit;cursor:pointer;color:inherit}.island-play button:disabled{cursor:default;filter:grayscale(.65);opacity:.65}
.island-play button:focus-visible,.island-play a:focus-visible,.island-play input:focus-visible{outline:4px solid #ef8a46;outline-offset:5px}
#playUI{position:fixed;inset:0;pointer-events:none;z-index:10}#playUI>*{pointer-events:auto}#playModal{position:fixed;inset:0;pointer-events:none;z-index:40}#playModal>*{pointer-events:auto}
#playToast{position:fixed;bottom:165px;left:50%;transform:translateX(-50%);z-index:60;max-width:min(720px,calc(100vw - 30px));padding:14px 24px;background:#fff9eaf5;border:3px solid #e4b865;border-radius:8px;box-shadow:0 5px #926d3540;font-size:21px;text-align:center;pointer-events:none}
body:has(#playModal .play-shade) #playToast{visibility:hidden}
.game-button{background:transparent url('./assets/island-play/game-button.webp') center/100% 100% no-repeat!important;border:0!important;border-radius:0!important;box-shadow:none!important;color:#153d36!important;min-height:76px;padding:18px 48px;font-weight:850!important;font-size:24px!important;min-width:230px;text-shadow:0 1px #fff7cf;transition:transform .15s,filter .15s;line-height:1.3}
.game-button:hover{transform:translateY(-3px);filter:brightness(1.07)}.game-button:active{transform:translateY(2px)}.game-button small{font-size:15px}.game-button.warm{filter:hue-rotate(288deg) saturate(.8)}
.game-small,.game-icon{background:#fff9e9;border:3px solid #e3c58b;border-bottom-width:6px;border-radius:9px;color:#285552;box-shadow:0 2px 0 #8d744a25;font-weight:800;padding:8px 18px;min-height:50px;transition:transform .12s}
.game-small:active,.game-icon:active{transform:translateY(3px);border-bottom-width:3px}.game-icon{width:54px;height:54px;padding:8px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;font-size:27px}.game-icon svg{width:28px;height:30px}.title-text{border:0;background:none;font-weight:800;text-decoration:underline;text-underline-offset:6px;font-size:21px;padding:10px}
.play-title{position:absolute;inset:0;overflow:auto;background:#b7e1e3}.title-art{position:absolute;inset:0;background:linear-gradient(90deg,#e6f5ebf2 0%,#eff7e1d6 30%,#eff7e10a 65%),url('./assets/island-play/island-book.webp') center/cover}
.play-logo{position:relative;width:min(640px,55%);padding:7vh 0 110px;margin-left:6vw}.play-logo>small{font-size:19px;letter-spacing:.08em;font-weight:800;color:#417972}.play-logo h1{font-size:clamp(48px,5.2vw,80px);line-height:1.2;letter-spacing:-.07em;margin:24px 0;color:#2c6558;text-shadow:0 3px #fffce8}.play-logo h1 span{color:#eb9b43}.play-logo>p{font-size:25px;line-height:1.7;margin:20px 0;color:#315c57;font-weight:600}.title-menu{display:flex;align-items:flex-start;flex-direction:column;gap:6px}.title-menu .game-button{width:310px}.play-title-footer{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:space-between;gap:20px;padding:15px 6vw;background:#fff9eacc;font-size:17px}.play-title-footer a{color:#38695e}
.play-top{position:absolute;top:16px;left:22px;right:22px;display:flex;align-items:center;gap:14px}.play-name{font-weight:800;font-size:22px;color:#244e46;background:#fff9e9df;padding:6px 14px;border-radius:8px}.play-name small{font-size:16px;color:#658875;margin-left:12px}.play-tools{margin-left:auto;display:flex;gap:8px}
.play-mission{position:absolute;top:98px;left:24px;width:320px;background:#fff8eaf0;border:3px solid #eacb92;border-radius:12px;padding:18px 22px;box-shadow:0 6px 0 #856b3526}.play-mission>small{font-size:16px;color:#67856b;font-weight:800}.play-mission h2{font-size:28px;line-height:1.35;margin:9px 0;word-break:keep-all}.play-mission p{font-size:20px;line-height:1.6;margin:10px 0}.stamp-meter{display:flex;gap:6px;font-size:26px;color:#c5b99d}.stamp-meter .earned{color:#e8a431}
.direction-hint{position:absolute;left:50%;bottom:128px;transform:translateX(-50%);background:#fff7dbf0;color:#35625c;border:2px solid #e7c879;border-radius:9px;padding:10px 22px;font-size:21px;max-width:calc(100vw - 30px);text-align:center;white-space:nowrap}
.play-bottom{position:absolute;bottom:20px;left:24px;right:24px;display:flex;align-items:end;gap:22px;pointer-events:none!important}.play-bottom>*{pointer-events:auto}.play-bottom .round-stick{width:112px;height:112px;background:#487f6be6;border:5px solid #f8e6aa;outline:2px solid #37624d;box-shadow:0 5px #37624d33}.play-bottom .round-stick i{background:#fff3c7}.play-bottom .round-stick span{font-size:14px;color:#fffbde}.play-key-guide{font-size:16px;background:#fff9dfbf;color:#456854;border-radius:8px;padding:7px 12px;line-height:1.8}.play-actions{margin-left:auto;display:flex;align-items:center;gap:12px}.play-actions .game-button{min-width:230px}.play-actions .game-small{font-size:21px}
.play-shade{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:22px;background:#335e5666;backdrop-filter:blur(7px)}
.play-sheet,.play-board{position:relative;background:var(--play-paper);border:5px solid #e9c992;border-radius:18px;box-shadow:0 12px 0 #52795b38,0 20px 80px #18443435;width:min(920px,calc(100vw - 32px));max-height:calc(100dvh - 44px);overflow:auto;padding:32px 38px;scrollbar-color:#ccb785 #fff9e9;scrollbar-width:thin}
.play-sheet h2{font-size:34px;line-height:1.35;margin:0 50px 22px 0}.play-sheet h3{font-size:27px;line-height:1.4}.play-sheet p{font-size:22px;line-height:1.7;word-break:keep-all}.play-sheet small{font-size:17px}.sheet-close{position:absolute;right:18px;top:18px}.play-sheet input:not([type=radio]){display:block;width:100%;font:inherit;min-height:52px;background:#fffdf4;border:3px solid #c7caa6;border-radius:7px;padding:8px 14px;margin:10px 0 18px}.play-sheet label{font-size:21px;font-weight:700}.pause-menu{display:flex;flex-direction:column;align-items:center;gap:10px}
.choose-explorer{display:flex;justify-content:center;gap:40px;margin-bottom:25px}.choose-explorer button{display:flex;flex-direction:column;align-items:center;gap:9px;border:0;background:none;padding:10px;border-radius:12px}.choose-explorer button[aria-pressed=true]{background:#d5efd3;outline:4px solid #73ad83}.choose-explorer b{font-size:25px}.choose-explorer .portrait-face{display:block;position:relative;overflow:hidden;width:110px;height:110px;border:4px solid #fff3bd;border-radius:50%;background:#e9edd1}.choose-explorer .face-dodam img{width:100%;height:100%;object-fit:cover}.choose-explorer .face-seoa img{position:absolute;width:360%;max-width:none;height:auto;left:-130%;top:-8%;aspect-ratio:auto}
.choose-level{display:flex;gap:14px;border:0;padding:0;margin:20px 0}.choose-level legend{font-weight:800;font-size:21px;margin-bottom:10px}.choose-level label{display:flex;align-items:center;gap:12px;flex:1;border:3px solid #ddcfac;border-radius:10px;padding:14px;cursor:pointer}.choose-level label:has(input:checked){background:#d9efd6;border-color:#7bab80}.choose-level input{width:24px;height:24px;accent-color:#49886d}.choose-level b{display:block;font-size:25px}.choose-level span{font-size:18px;font-weight:400}
.story-illustration{width:100%;max-height:38vh;object-fit:cover;border-radius:8px}.reward-picture{position:relative}.reward-picture img{width:100%;height:200px;object-fit:cover;border-radius:9px}.reward-picture span{position:absolute;right:18px;bottom:18px;background:#ffefb9;color:#66522b;padding:8px 14px;border:3px solid #efc457;font-size:25px;font-weight:850;transform:rotate(-5deg)}
.help-steps p{display:flex;align-items:center;gap:15px}.help-steps b{display:flex;align-items:center;justify-content:center;background:#a9d8b2;border:3px solid #fff7dd;border-radius:10px;width:45px;height:45px;flex-shrink:0}
.island-map{position:relative;aspect-ratio:800/470;max-height:42vh;border-radius:12px;overflow:hidden;border:3px solid #b9d8c6;background:#93deda}.island-map svg{width:100%;height:100%}.map-water{fill:#96dce1}.map-land{fill:#b4dba0;stroke:#fff1c5;stroke-width:18}.map-walk{fill:none;stroke:#f4dab0;stroke-width:16;stroke-linecap:round}.island-map text{font-size:27px;font-weight:800;fill:#436c51}.map-stop{position:absolute;transform:translate(-50%,-50%);width:45px;height:45px;min-height:0;border:3px solid #fff8da;border-radius:10px;background:var(--station);font-size:23px;font-weight:850;box-shadow:0 4px #2c68672c}.map-stop.done{background:#6ea784;color:#fffce8}.map-me{position:absolute;transform:translate(-50%,-50%);font-size:18px;font-weight:800;color:#245b75;z-index:2;background:#fff5c9;padding:1px 6px;border-radius:4px;pointer-events:none}.map-instruction{font-size:19px!important;margin:10px 0}.map-legend{display:grid;grid-template-columns:1fr 1fr;list-style:none;padding:0;gap:6px;margin:12px 0}.map-legend button{display:flex;align-items:center;width:100%;border:0;background:transparent;text-align:left;padding:6px;border-radius:7px}.map-legend button:hover{background:#e7efd9}.map-legend b{display:flex;align-items:center;justify-content:center;width:33px;height:33px;border-radius:7px;margin-right:10px;flex-shrink:0;font-size:19px}.map-legend span{font-size:21px}.map-legend small{margin-left:auto;color:#728871;font-size:15px}
.play-board{width:min(1000px,calc(100vw - 32px));padding:24px 32px;background:linear-gradient(115deg,#fff9e9 80%,#f1f5db)}.board-header{display:flex;align-items:flex-start;gap:16px}.board-header h2{font-size:32px;line-height:1.3;margin:4px 0 8px}.board-header p{font-size:21px;margin:0;line-height:1.6}.board-header small{font-size:14px;color:#6f9675;letter-spacing:.12em}.board-header .game-icon{margin-left:auto}.board-progress{font-size:23px;font-weight:800;background:#e1efd8;color:#4d775d;border-radius:7px;padding:8px 16px;margin:16px 0}.board-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:15px;font-size:18px}.board-footer>div{display:flex;gap:8px}.board-footer .game-small{font-size:18px;padding:8px 14px}
.pair-grid{display:grid;grid-template-columns:repeat(var(--card-columns),1fr);gap:14px;max-width:640px;margin:auto}.flip-card{position:relative;height:clamp(110px,19vh,160px);border:0;border-radius:12px;padding:0;background:transparent;perspective:900px;min-height:0}.card-back,.card-front{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;border:4px solid #fff0b8;border-bottom:7px solid #a59160;border-radius:12px;backface-visibility:hidden;transition:transform .25s}.card-back{background:repeating-linear-gradient(45deg,#86bcb0,#86bcb0 12px,#8dc4b8 12px,#8dc4b8 24px);color:#fff6cb}.card-back b{font-size:51px;line-height:1.1}.card-back small{font-size:14px;letter-spacing:.2em}.card-front{transform:rotateY(180deg);background:#fffef4;padding:8px}.card-front img{height:75%;max-width:100%;object-fit:contain}.card-front b{font-size:19px;line-height:1.3}.flipped .card-back{transform:rotateY(-180deg)}.flipped .card-front{transform:rotateY(0)}.flip-card.matched{opacity:1!important}.matched .card-front{border-color:#81bd93;background:#e3f2d9}
.jigsaw-layout{display:grid;grid-template-columns:1.2fr 1fr;gap:24px;align-items:start}.jigsaw-target{position:relative;display:grid;grid-template-columns:repeat(var(--columns),1fr);grid-template-rows:repeat(var(--rows),1fr);aspect-ratio:3/2;background:#e4e7d6;gap:2px;border:5px solid #baa88a;border-radius:8px;overflow:hidden}.jigsaw-target.with-guide:before{content:'';position:absolute;inset:0;background:url('./assets/island-play/island-book.webp') center/100% 100%;opacity:.28;pointer-events:none}.piece-slot{position:relative;background:transparent;border:1px dashed #7f948263;border-radius:0;min-height:0;padding:0;color:#7e9680;font-size:20px}.piece-slot.placed{border:0}.piece-slot.suggested{outline:4px solid #fbbf4d;outline-offset:-4px;background-color:#ffeaba55}.jigsaw-tray{display:grid;grid-template-columns:repeat(var(--columns),1fr);gap:9px}.jigsaw-piece{aspect-ratio:var(--piece-aspect,1.5);border:3px solid #fff9e9;border-bottom:5px solid #b2aa81;box-shadow:0 2px 5px #5e69542b;border-radius:5px;min-height:0;padding:0}.jigsaw-piece.selected{outline:4px solid #f5a93f;outline-offset:2px;transform:translateY(-4px)}
.tile-game{display:flex;align-items:center;justify-content:center;gap:30px}.tile-grid{display:grid;grid-template-columns:repeat(var(--columns),1fr);width:min(390px,48vh);aspect-ratio:1;gap:2px;border:6px solid #d4be8f;background:#f4e8c7;border-radius:9px;padding:5px}.tile{aspect-ratio:1;background:#fbf5df;border:0;padding:0;border-radius:4px;font-weight:850;font-size:22px;min-height:0}.tile.wall{background:#88bca0;border-bottom:3px solid #5c9985;box-shadow:inset 0 2px #acd2af;color:transparent}.tile.hint-path{background:#ffebb5}.tile.hero{color:#26585f;background:#92d9ed;border:2px solid #fffaf0;border-radius:50%;text-shadow:0 1px #fff}.tile.goal{color:#eaa63a;background:#fff0b4}.tile.box{color:#8b5d31;background:#e7b573;border:3px solid #b9854d;border-radius:6px}.puzzle-pad{display:grid;grid-template-columns:repeat(3,54px);gap:7px}.puzzle-pad button:first-child{grid-column:2}.puzzle-pad button:nth-child(2){grid-column:1;grid-row:2}.puzzle-pad button:nth-child(3){grid-column:2;grid-row:2}.puzzle-pad button:nth-child(4){grid-column:3;grid-row:2}.puzzle-pad button{min-width:54px;font-size:25px;padding:5px}.tile.suggested{outline:3px solid #eaa63a;outline-offset:-3px}
.puzzle-win{text-align:center;padding:20px}.win-star{font-size:100px;color:#f4bb4a;text-shadow:0 4px #c79538;animation:star-pop .5s ease-out}.puzzle-win h3{font-size:31px;margin:10px}.puzzle-win p{font-size:21px}@keyframes star-pop{from{transform:scale(.5) rotate(-20deg)}to{transform:scale(1) rotate(0)}}
.course-hud{position:absolute;inset:0;pointer-events:none!important;display:flex;flex-direction:column;align-items:center}.course-hud header{align-self:flex-start;background:#fff9eae8;border:3px solid #e3c58b;padding:14px 22px;margin:18px 20px;max-width:500px;border-radius:12px}.course-hud h2{font-size:30px;margin:0;line-height:1.4}.course-hud p{font-size:20px;margin:5px 0}.course-hud small{font-size:14px;font-weight:800;color:#6c9478}.course-hud [data-course-progress]{font-size:23px;font-weight:800;color:#c99431}.course-hud [data-course-close]{position:absolute;top:20px;right:24px;pointer-events:auto}.course-input{position:absolute;bottom:30px;right:30px;display:flex;gap:12px;align-items:center;pointer-events:auto}.course-input .game-small{height:64px;font-size:30px}.course-tip{position:absolute;bottom:30px;left:50%;transform:translateX(-50%);background:#fff8e4e8;padding:6px 14px;border-radius:8px}.in-play-course .play-top,.in-play-course .play-mission,.in-play-course .direction-hint,.in-play-course .play-key-guide,.in-play-course .play-actions{display:none}.in-play-course .play-bottom{z-index:50;width:110px;right:auto;bottom:24px;pointer-events:auto!important}.in-play-boss #playUI,.in-play-boss #playModal,.in-play-boss #playToast{visibility:hidden}
.book-cover{background:#9dceb7;border:6px solid #fff2be;border-left:12px solid #628c77;border-radius:4px 15px 15px 4px;box-shadow:8px 8px #c9c1a449;text-align:center;padding:28px 20px;margin:15px auto 30px;width:min(400px,100%)}.book-cover h3{font-size:34px;line-height:1.5;margin:15px}.book-cover span{font-size:19px}.finished-pages{display:grid;grid-template-columns:1fr 1fr;gap:26px}.book-page{position:relative;border:3px solid #e4d2a5;border-radius:9px;padding:16px;background:#fffdf5}.book-page small{font-size:17px;color:#9a803d;font-weight:800}.book-page h3{font-size:26px;margin:7px 0}.book-page p{font-size:20px}.book-page>span{font-size:17px;color:#789583}.book-art{height:130px;border-radius:6px;background:#e5e8d8;display:flex;align-items:center;justify-content:center}.book-art svg{height:55px;width:55px;color:#a6bfa0}.collected .book-art{background-image:url('./assets/island-play/island-book.webp');background-size:300% 200%}.book-source{font-size:16px!important;color:#6c8074}.book-source a{color:#397e70}.book-finish-tools{display:flex;gap:14px;flex-wrap:wrap}.play-nature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.play-nature-grid button{display:flex;flex-direction:column;align-items:center;gap:5px;background:#edf2db;border:3px solid #d3dcb5;border-radius:10px;padding:10px}.play-nature-grid img{height:110px;width:100%;object-fit:contain}.play-nature-grid b{font-size:23px}.play-nature-grid span{font-size:16px}.play-sheet .nature-detail p{font-size:22px}.play-sheet .nature-picture img{max-height:250px;max-width:100%;object-fit:contain}
.practice-stations{display:grid;grid-template-columns:1fr 1fr;gap:12px}.practice-stations .game-button{min-width:0;width:100%;font-size:22px!important}
.profile-grid{display:grid;grid-template-columns:300px 1fr;gap:28px;align-items:center}.profile-grid .choose-explorer{margin:0}.profile-form .game-button{width:100%}
@media screen and (orientation:landscape) and (max-height:600px){.profile-sheet{padding:14px 22px}.profile-sheet h2{font-size:27px;margin-bottom:9px}.profile-grid{grid-template-columns:205px 1fr;gap:18px}.profile-grid .choose-explorer{gap:14px}.profile-grid .choose-explorer button{padding:5px}.profile-grid .choose-explorer .portrait-face{width:82px;height:82px}.profile-grid .choose-explorer b{font-size:23px}.profile-form>label{font-size:18px;float:left;width:132px;line-height:44px}.profile-form #explorerName{width:calc(100% - 132px);min-height:44px;height:44px;font-size:20px;margin:0 0 8px 132px;padding:5px 10px}.profile-form .choose-level{clear:both;flex-direction:row;gap:8px;margin:8px 0}.profile-form .choose-level legend{font-size:18px;line-height:1.4;margin-bottom:4px}.profile-form .choose-level label{padding:6px 8px;gap:8px}.profile-form .choose-level span{font-size:15px;line-height:1.3}.profile-form .choose-level b{font-size:22px;line-height:1.2}.profile-form .choose-level input{width:22px;height:22px;flex-shrink:0}.profile-form .game-button{min-height:67px;font-size:22px!important;padding:17px 30px}}
.course-directions{position:absolute;left:24px;bottom:25px;display:grid;grid-template-columns:repeat(3,50px);gap:5px;pointer-events:auto}.course-directions button{font-size:25px;min-width:50px;padding:5px}.course-directions button:first-child{grid-column:2}.course-directions button:nth-child(2){grid-column:2;grid-row:2}.course-directions button:nth-child(3){grid-column:1;grid-row:2}.course-directions button:nth-child(4){grid-column:3;grid-row:2}.in-play-course .play-bottom{display:none}
.card-front{overflow:hidden}.card-front img{transform:scale(1.45);transform-origin:50% 45%}.card-front b{position:relative;z-index:1;background:#fffef4dd;padding:1px 5px;border-radius:4px}.matched .card-front b{background:#e3f2d9dd}
/* Painted game controls also cover the reused final battle. */
.island-play .battle-primary,.island-play .battle-overlay .battle-primary{background:transparent url('./assets/island-play/game-button.webp') center/100% 100% no-repeat;color:#244f3e;border:0;box-shadow:none;border-radius:0;min-height:76px;font-size:24px;padding:20px 40px}.island-play .battle-card{background:#fff9e9;border:5px solid #e4c994;border-radius:16px;color:#254e51}.island-play .battle-card p{color:#456a5c;font-size:22px}.island-play .battle-brand{background:#fff9e9e0;color:#335d50}.island-play .battle-dialogue{background:#fff9e9f5;color:#2c5c50}.island-play .battle-hints{background:#fff9e9d9;color:#315950;font-size:19px}.island-play .battle-actions button{border:4px solid #ffedba;background:#538e79;color:#fff9df}.island-play .battle-text-button{color:#476d58;font-size:20px}.island-play .battle-rules{color:#365f55}.island-play .battle-overlay{background:#36624e66}
@media(max-width:850px){.play-logo{width:75%;margin-left:6vw;padding-top:7vh}.title-art{background-image:linear-gradient(90deg,#eef8e7ef 0%,#eef8e7bf 50%,#eef8e720 100%),url('./assets/island-play/island-book.webp')}.play-logo h1{font-size:54px}.play-logo>p{font-size:23px}.play-top{left:12px;right:12px;gap:8px}.play-name{display:none}.play-tools{gap:7px}.play-mission{top:85px;left:14px;max-width:calc(100vw - 28px);width:320px;padding:12px 17px}.play-mission h2{font-size:25px;margin:4px 0}.play-mission p{font-size:19px;margin:4px 0}.stamp-meter{font-size:24px;gap:6px}.direction-hint{bottom:140px;font-size:19px;padding:9px 15px}.play-bottom{bottom:16px;left:15px;right:15px;gap:8px}.play-key-guide{display:none}.play-bottom .round-stick{width:95px;height:95px}.play-actions{gap:7px}.play-actions .game-button{font-size:21px!important;min-width:180px;padding:17px 24px}.play-actions .game-small{font-size:19px;padding:8px 12px}.play-shade{padding:12px}.play-sheet,.play-board{padding:24px 22px;width:calc(100vw - 24px);max-height:calc(100dvh - 24px)}.play-sheet h2{font-size:29px}.play-sheet p{font-size:21px}.choose-level{flex-direction:column}.play-title-footer{font-size:14px;padding:12px 20px}.board-header h2{font-size:27px}.board-header p{font-size:20px}.board-header small{font-size:12px}.board-footer{display:block}.board-footer>div{justify-content:flex-end;margin-top:8px}.board-progress{font-size:21px;padding:7px 12px}.pair-grid{gap:9px}.flip-card{height:clamp(95px,17vh,140px)}.card-front b{font-size:17px}.jigsaw-layout{grid-template-columns:1fr}.jigsaw-target{width:min(450px,100%);margin:auto}.jigsaw-tray{width:min(440px,100%);margin:auto;gap:8px}.tile-game{flex-direction:column;gap:12px}.tile-grid{width:min(390px,52vh)}.puzzle-pad{display:flex}.map-legend span{font-size:18px}.map-legend small{display:none}.map-legend{gap:4px}.map-stop{width:38px;height:38px;font-size:20px}.island-map text{font-size:31px}.finished-pages{grid-template-columns:1fr}.play-nature-grid{grid-template-columns:repeat(2,1fr)}.course-hud header{max-width:calc(100vw - 140px);margin:12px;padding:10px 14px}.course-hud h2{font-size:25px}.course-hud p{font-size:18px}.course-hud [data-course-progress]{font-size:20px}.course-tip{bottom:110px;font-size:17px!important;max-width:calc(100vw - 25px);white-space:nowrap}.course-input{bottom:25px;right:18px;gap:8px}.course-input .game-button{min-width:190px;padding:17px 24px;font-size:22px!important}.course-hud [data-course-close]{right:12px;top:12px;font-size:18px}.in-play-course .play-bottom{bottom:110px;left:16px}#playToast{bottom:160px;font-size:20px}}
@media(max-width:550px){.play-logo{width:92%;padding-top:6vh}.play-logo>small{font-size:17px}.play-logo h1{font-size:48px}.play-logo>p{font-size:22px}.title-menu .game-button{width:280px}.play-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px}.play-actions .game-button{grid-column:1/3;min-height:67px}.play-actions .game-small{min-height:43px;padding:4px 10px}.play-bottom{align-items:center}.direction-hint{bottom:155px;white-space:normal;width:max-content;max-width:calc(100vw - 30px)}.game-icon{width:50px;height:50px}.play-tools{gap:5px}.play-mission{width:calc(100vw - 28px)}.stamp-meter{font-size:23px}.pair-grid{gap:7px}.card-front b{font-size:15px}.choose-explorer{gap:22px}.choose-explorer .portrait-face{width:100px;height:100px}.board-header{gap:9px}.board-header .game-icon{width:43px;height:43px;font-size:25px}.board-header h2{font-size:25px}.board-header p{font-size:19px}.map-stop{width:32px;height:32px;font-size:18px}.map-legend span{font-size:17px}.map-legend b{width:27px;height:27px;margin-right:6px}.course-hud header{max-width:calc(100vw - 100px)}.course-hud header p{display:none}.course-input .game-button{min-width:170px;font-size:21px!important}.course-input .game-small{width:49px;padding:4px}.play-sheet h2{font-size:28px}.play-sheet .game-button{min-width:210px}.tile{font-size:18px}}
@media(max-height:600px) and (min-width:600px){.play-logo{padding-top:20px}.play-logo h1{font-size:46px;margin:12px 0}.play-logo>p{margin:10px 0;font-size:22px}.title-menu{flex-direction:row;flex-wrap:wrap}.title-menu .game-button{width:250px;min-width:250px;min-height:67px;font-size:22px!important}.tile-grid{width:47vh}.flip-card{height:100px}.play-mission{max-width:290px}.play-bottom .round-stick{width:82px;height:82px}.play-sheet,.play-board{padding:18px 26px}.board-header h2{font-size:26px}.board-progress{margin:10px 0}.jigsaw-target{width:360px}.jigsaw-layout{grid-template-columns:1fr 1fr}}
@media(prefers-reduced-motion:reduce){.card-back,.card-front,.game-button{transition:none}.win-star{animation:none}}
.jigsaw-target.with-guide:before{background-image:var(--jigsaw-image,url('./assets/island-play/island-book.webp'))}
#rotatePrompt{position:fixed;inset:0;z-index:10000;background:#eaf5e5;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:28px;color:#315f54}#rotatePrompt svg{width:140px;height:100px}#rotatePrompt h2{font-size:30px;margin:20px 0 8px}#rotatePrompt p{font-size:22px;line-height:1.7}#rotatePrompt small{font-size:17px;color:#728e76}
.history-details{margin-top:14px;font-size:19px}.history-details summary{cursor:pointer;font-weight:800;color:#528271}.history-details p{font-size:19px!important;background:#edf1df;padding:12px;border-radius:8px}
@media screen and (orientation:landscape) and (max-height:600px) and (max-width:720px){.play-board .tile-game{flex-direction:column;gap:7px}.play-board .tile-grid{width:min(235px,54vh)}.play-board .puzzle-pad{display:flex}.play-board .board-header h2{font-size:23px}.play-board .tile{font-size:13px}}
@media print{#rotatePrompt{display:none!important}}
@media screen and (orientation:landscape) and (max-height:600px){
 .play-mission{top:80px;width:245px;padding:10px 14px}.play-mission h2{font-size:23px}.play-mission p{font-size:18px}.stamp-meter{font-size:23px;gap:3px}.play-mission>small{font-size:14px}.direction-hint{bottom:112px;font-size:18px}.play-bottom .round-stick{width:82px;height:82px}.play-actions .game-button{min-height:67px}.play-top{top:10px}
 .play-board{display:grid;grid-template-columns:minmax(180px,.75fr) minmax(260px,1.3fr);gap:10px 18px;padding:18px 22px;align-items:start}.board-header{grid-column:1;grid-row:1}.board-header small{display:none}.board-header h2{font-size:25px;margin:0 0 8px}.board-header p{font-size:19px}.board-header .game-icon{position:absolute;right:10px;top:10px;width:39px;height:39px;z-index:3;background:#fff9e9e8}.board-progress{grid-column:1;grid-row:2;margin:0;font-size:20px;padding:6px 10px}.board-game{grid-column:2;grid-row:1/4;margin-top:17px;width:100%}.board-footer{grid-column:1;grid-row:3;margin:0;display:block;font-size:17px}.board-footer>div{flex-wrap:wrap;margin-top:10px;justify-content:flex-start}.board-footer .game-small{font-size:17px;padding:6px 10px}
 .tile-game{flex-direction:row;gap:12px}.tile-grid{width:min(245px,59vh);flex-shrink:0}.puzzle-pad{display:grid;grid-template-columns:repeat(3,43px);gap:5px}.puzzle-pad button{min-width:43px;min-height:43px;font-size:23px}.tile{font-size:17px}.pair-grid{gap:9px}.flip-card{height:90px}.card-front b{font-size:15px}.jigsaw-layout{grid-template-columns:1fr 1fr;gap:12px}.jigsaw-target,.jigsaw-tray{width:100%}.jigsaw-piece{border-width:2px}.course-hud header{padding:10px 16px;margin:12px;max-width:320px}.course-hud h2{font-size:25px}.course-hud p{font-size:18px}.course-tip{bottom:115px;font-size:17px!important}.course-directions{left:18px;bottom:20px}.course-input{right:18px;bottom:20px}
}
@media print{body.island-play{background:white;overflow:visible}#world,#playUI,#playToast,.sheet-close,.book-finish-tools{display:none!important}#playModal,.play-shade,.play-sheet{position:static!important;display:block!important;max-height:none!important;overflow:visible!important;background:white!important;padding:0!important;border:0!important;box-shadow:none!important;width:100%!important;backdrop-filter:none!important}.book-page{break-inside:avoid;page-break-inside:avoid}.finished-pages{display:block}.book-page{margin:0 0 25px}.book-cover{break-after:page}#bookPromise{border:0}.book-art{print-color-adjust:exact;-webkit-print-color-adjust:exact}}
.difficulty-explorers button{display:flex;flex-direction:column;align-items:center;gap:6px;flex:1;background:#fff3cc;border:4px solid #d7b978;border-bottom-width:8px;border-radius:18px;padding:16px;box-shadow:0 4px #b18d4540}.difficulty-explorers button[aria-pressed=true]{border-color:#559783;background:#e3f4d9}.difficulty-explorers b{font-size:34px}.difficulty-explorers strong{font-size:23px}.difficulty-explorers small{font-size:18px}.difficulty-sheet>label{display:inline-block;margin-right:18px}.difficulty-sheet #explorerName{width:50%}.difficulty-sheet>#beginPlay{display:block;margin:14px auto 0}
.play-story,.play-arrival{position:absolute;inset:0;pointer-events:auto}.play-story{background:#fff8e9;color:#254e51;padding:24px 4vw}.play-story header{display:flex;align-items:center;justify-content:space-between;font-size:21px;font-weight:800;margin-bottom:20px}.play-story-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:4vw;height:calc(100% - 90px);align-items:center}.play-story-art{height:100%;max-height:650px;border:5px solid #e2bc73;border-radius:18px;background-image:url('./assets/prologue-comic.webp');background-size:200% 200%;position:relative;box-shadow:0 7px #bc9f6b40}.play-story-art span{position:absolute;bottom:6%;left:6%;right:6%;background:#fffaf0ed;padding:18px;border:3px solid #e4c67e;border-radius:20px;font-size:clamp(23px,3vw,38px);font-weight:850;text-align:center}.play-story-copy h2{font-size:clamp(28px,4vw,48px);line-height:1.3}.play-story-copy p{font-size:clamp(22px,2.5vw,30px);line-height:1.7;word-break:keep-all}.play-story-copy small{font-size:22px;color:#649680}.play-arrival{background:linear-gradient(#153a452e 0%,transparent 30%,transparent 60%,#122e3c 100%);display:flex;align-items:flex-end;justify-content:center;padding:24px 4vw}.play-arrival>button{position:absolute;top:24px;right:24px}.play-arrival>div{max-width:1000px;text-align:center;color:#fff9e9;text-shadow:0 2px 2px #082c3c}.play-arrival small{font-size:22px;color:#ffd785}.play-arrival p{font-size:clamp(25px,3vw,36px);font-weight:800;line-height:1.5;margin:12px 0}.king-invitation p{font-size:clamp(23px,2.5vw,30px)}.king-invitation .game-button{text-shadow:none}
@media screen and (orientation:landscape) and (max-height:600px){.difficulty-sheet{padding:10px 24px}.difficulty-sheet h2{font-size:27px;margin:0 0 8px}.difficulty-explorers{margin:6px 0;gap:18px}.difficulty-explorers button{display:grid;grid-template-columns:76px 1fr;padding:8px;gap:2px 12px;text-align:left}.difficulty-explorers .portrait-face{grid-row:1/4;width:76px;height:76px}.difficulty-explorers b{font-size:27px}.difficulty-explorers strong{font-size:18px}.difficulty-explorers small{font-size:15px}.difficulty-sheet #explorerName{height:42px;min-height:42px;font-size:21px;margin:0}.difficulty-sheet>#beginPlay{min-height:65px;margin:6px auto 0}.play-story{padding:10px 3vw}.play-story header{font-size:17px;margin-bottom:8px}.play-story header button{min-height:40px;padding:4px 14px;font-size:18px}.play-story-grid{height:calc(100% - 55px);gap:3vw}.play-story-copy h2{font-size:28px;margin:8px 0}.play-story-copy p{font-size:21px;line-height:1.5;margin:8px 0}.play-story-copy small{font-size:17px}.play-story-copy .game-button{font-size:22px!important;min-height:65px;padding:14px 30px}.play-story-art span{font-size:23px;padding:8px}.play-arrival{padding:12px 3vw}.play-arrival p{font-size:23px}.play-arrival small{font-size:18px}.king-invitation .game-button{min-height:62px;padding:12px 36px}}
body:has(.play-story) #playUI,body:has(.play-arrival) #playUI{visibility:hidden}body:has(.play-story) #playToast,body:has(.play-arrival) #playToast{visibility:hidden}
.tile-grid{position:relative;overflow:visible}.maze-avatar{position:absolute;transform:translate(-50%,-76%);pointer-events:none;z-index:4;filter:drop-shadow(0 2px 2px #466b5140)}.course-success{z-index:20}.course-success .play-sheet{text-align:center}.anyong-dialogue{position:absolute;inset:0;background:linear-gradient(0deg,#eef6e9e0,#eff5e16b),url('./assets/island-play/island-book.webp') center/cover;overflow:hidden;pointer-events:auto}.anyong-portrait{position:absolute;left:2%;bottom:-4%;height:96%;width:44%;object-fit:contain;object-position:bottom}.anyong-dialogue-box{position:absolute;right:4%;top:18%;width:50%;background:#fff9e9f5;border:4px solid #dfbc7b;border-radius:16px;padding:24px;box-shadow:0 7px #92744533}.anyong-dialogue-box h2{font-size:36px;margin:8px 0}.anyong-dialogue-box p{font-size:27px;line-height:1.65;word-break:keep-all}.anyong-dialogue-box small{font-size:18px;color:#64816c}.dialogue-fiction{display:block;font-size:16px;line-height:1.5;margin:10px 0;color:#617769}.anyong-hint{display:flex;gap:10px;align-items:center;font-size:18px;background:#fff2d1;padding:6px 10px;border-radius:9px}.anyong-hint img{height:65px;width:45px;object-fit:cover;object-position:top}.anyong-hint b{display:block}.history-evidence{margin:14px 0;background:#eff5df;border:2px solid #bdcf96;border-radius:10px;padding:12px;font-size:19px}.history-evidence summary{font-weight:800;cursor:pointer}.history-evidence p,.history-evidence .record-note{font-size:19px!important;line-height:1.65}.history-evidence a{color:#357464;font-weight:700}.record-note{color:#65795f}
@media screen and (orientation:landscape) and (max-height:600px){.anyong-portrait{height:98%;left:0%;width:40%}.anyong-dialogue-box{right:3%;top:5%;width:58%;padding:12px 18px}.anyong-dialogue-box h2{font-size:27px;margin:4px 0}.anyong-dialogue-box p{font-size:21px;line-height:1.45;margin:8px 0}.anyong-dialogue-box small{font-size:15px}.dialogue-fiction{font-size:13px;margin:6px 0}.anyong-dialogue-box .game-button{min-height:62px;font-size:21px!important;padding:12px 30px}.anyong-hint{font-size:16px}.anyong-hint img{height:48px}}
.course-success .play-sheet,.course-success h2,.course-success p{color:#254e51!important}.course-success p{font-size:24px;line-height:1.6}
.anyong-hint{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);width:min(760px,calc(100vw - 40px));z-index:80;box-shadow:0 5px 18px #31564838;border:2px solid #d9be7d}.anyong-hint[hidden]{display:none}.anyong-hint span{flex:1}.anyong-hint .game-icon{width:38px;height:38px;min-height:38px;font-size:23px;padding:0}
.course-stick{position:absolute;left:30px;bottom:30px;pointer-events:auto;touch-action:none}.course-input [data-course-jump]{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.puzzle-pad{display:block}.puzzle-stick{touch-action:none;flex-shrink:0}.course-tip{pointer-events:none}.course-input{right:30px;bottom:30px}.course-success~.course-stick{display:none}
@media screen and (orientation:landscape) and (max-height:600px){.course-stick{width:102px;height:102px;left:20px;bottom:16px}.course-input{right:20px;bottom:16px}.puzzle-stick{width:92px;height:92px}.tile-game{gap:16px}}
@media screen and (orientation:landscape) and (max-height:600px){.course-tip{display:none}}
@media(pointer:coarse){.course-input small{display:none}}

.book-opening{position:fixed;inset:0;z-index:100;background:#a8dcd8 url('./assets/island-play/island-book.webp') center/cover;display:grid;place-items:center}.book-opening video{width:100%;height:100%;object-fit:cover}.book-opening [data-opening-skip]{position:absolute;right:max(24px,env(safe-area-inset-right));top:max(24px,env(safe-area-inset-top));font-size:23px;min-height:54px}.book-opening p{position:absolute;bottom:8%;color:#204e51;background:#fff8e5e8;padding:12px 24px;font-size:26px;font-weight:800;border-radius:8px}
/* Soft film-to-menu dissolve; the held last frame fades over the actual menu. */
.book-opening{opacity:1;transition:opacity .85s ease-in-out}
.book-opening.leaving{opacity:0;pointer-events:none}
.book-opening.leaving [data-opening-skip],.book-opening.leaving p{visibility:hidden}
.title-reveal .play-logo{animation:title-awake .85s ease-out both}
@keyframes title-awake{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.island-play .title-art{background-image:linear-gradient(90deg,#eaf6df9e 0%,#ecf4d957 35%,transparent 65%),url('./assets/island-play/island-book.webp')}
.play-logo h1{text-shadow:0 2px #fff6db,0 0 24px #fff4ce80}
.play-logo>p,.play-logo>small{text-shadow:0 1px 5px #fffde8}
.play-title-footer{background:#fff9ea82;backdrop-filter:blur(6px)}
/* Follow the painted silhouette, rather than a browser rectangle around it. */
.island-play button:focus-visible,.island-play a:focus-visible{outline:none!important;border-radius:12px;box-shadow:0 0 0 2px #fff7c9,0 0 16px 5px #ffc967a6!important}
.island-play .game-button:focus-visible,.island-play .game-button:hover{outline:none!important;box-shadow:none!important;filter:drop-shadow(0 0 2px #fff8d1) drop-shadow(0 0 8px #ffc65e) brightness(1.06)}
.island-play .choose-explorer button[aria-pressed=true]{outline:none;border-color:#ffe3a0;box-shadow:0 0 0 2px #fff5cc,0 0 20px #e7ad59a6;background:#e7f1d9}
.island-play input:focus-visible{outline:3px solid #638e7b;outline-offset:2px}
/* One active layer: never leave quest cards or a prior dialogue over a sheet. */
body:has(#playModal>.play-shade) #playUI>div:not(.play-title),
body:has(#playModal>.anyong-dialogue) #playUI,
body.in-play-course .anyong-hint{visibility:hidden}
.play-sheet,.play-board{overscroll-behavior:contain;scroll-padding-block:65px 20px}
.play-sheet{padding-top:28px}
.play-sheet>h2{padding-right:44px;margin-right:12px}
.sheet-close{z-index:10}
.anyong-dialogue-box{max-height:90dvh;overflow:auto;overscroll-behavior:contain}
.play-story-copy{max-height:100%;overflow:auto}
.course-success .play-sheet{max-height:calc(100dvh - 28px);overflow:auto}
@media(orientation:landscape) and (max-height:500px){
 .play-logo{padding-top:15px;padding-bottom:65px;width:75%}
 .play-logo h1{font-size:38px;margin:8px 0}.play-logo>p{font-size:19px;line-height:1.4;margin:8px 0}
 .play-logo>small{font-size:16px}.title-menu{gap:4px}.title-menu .game-button{min-height:56px;min-width:210px;width:210px;padding:12px 25px}
 .title-menu .title-text{font-size:18px;padding:6px}.play-title-footer{padding:7px 4vw}
 .anyong-dialogue-box{top:4%;max-height:92dvh}
}
@media(prefers-reduced-motion:reduce){.book-opening{transition:none}.title-reveal .play-logo{animation:none}}
body:has(#playModal>.play-shade) #playUI:not(:has(.play-title)){visibility:hidden}
.map-sheet{display:grid;grid-template-columns:1.05fr 1fr;gap:12px 24px;align-items:start}
.map-sheet>h2{grid-column:1/-1;margin-bottom:4px}
.map-sheet .island-map{grid-column:1;grid-row:2/4;width:100%;max-height:none}
.map-sheet .map-legend{grid-column:2;grid-row:2;grid-template-columns:1fr;margin:0;gap:3px}
.map-sheet .map-legend button{min-height:36px;padding:2px}
.map-sheet .map-legend small{display:none}
.map-sheet .map-instruction{grid-column:1;grid-row:4;margin:0}
.map-sheet .discovery-choices{grid-column:2;grid-row:3/5;display:grid;grid-template-columns:1fr 1fr;margin:0;gap:6px}
.map-sheet .discovery-choices button{font-size:17px;padding:6px;min-height:43px}
.map-sheet .map-me{font-size:14px;transform:translate(-50%,6px);background:#fff8dcc9}
.title-menu{display:grid;grid-template-columns:repeat(2,max-content);gap:4px 14px;align-items:center}
.title-menu .game-button{grid-column:1/-1}.title-menu .title-text{text-align:left;font-size:19px}
@media(orientation:landscape) and (max-height:600px){
 .title-menu{grid-template-columns:repeat(3,max-content)}.title-menu .game-button{grid-column:auto}.title-menu .title-text{font-size:17px;padding:5px}
 .map-sheet{gap:7px 18px}.map-sheet .map-legend span{font-size:18px}.map-sheet .map-legend button{min-height:32px}.map-sheet .map-instruction{font-size:17px!important}.map-sheet .discovery-choices button{font-size:15px;min-height:36px}
}
@media(orientation:landscape) and (max-width:760px){.map-sheet{grid-template-columns:1fr 1fr}.map-sheet .map-stop{width:31px;height:31px;font-size:18px}.map-sheet .map-legend span{font-size:16px}}
@media(orientation:landscape) and (max-height:600px){
 .play-board{padding-top:54px}
 .play-board .board-game{margin-top:0}
 .play-board .board-header .game-icon{top:8px;right:10px}
}

.play-board .anyong-hint{position:relative;left:auto;bottom:auto;transform:none;width:100%;z-index:auto;margin:10px 0;font-size:17px;visibility:visible}
.play-board .anyong-hint img{display:none}
.play-board .anyong-hint .game-icon{flex-shrink:0}
body:has(.course-success) .course-hud{visibility:hidden}
@media(orientation:landscape) and (max-height:600px){
 .play-board{padding-top:60px}
 .play-board .board-header .game-icon{width:44px;height:44px;min-height:44px}
}
.title-menu{grid-template-columns:repeat(3,max-content)}
.book-opening [data-opening-sound]{position:absolute;left:max(24px,env(safe-area-inset-left));top:max(24px,env(safe-area-inset-top));font-size:23px;min-height:54px}
.book-opening.leaving [data-opening-sound]{visibility:hidden}
@media(orientation:landscape) and (max-height:500px){.book-opening [data-opening-sound],.book-opening [data-opening-skip]{top:12px;font-size:18px;min-height:44px;padding:8px 16px}}

.map-card{position:absolute;transform:translate(-50%,-50%);width:29px;height:42px;padding:0;background:none;border:1px solid #f7d68c;border-radius:3px;z-index:3}.map-card img{width:100%;height:100%;object-fit:cover;display:block}.play-mission #stampMeter:empty{display:none}
