@font-face{font-family:Valley Sans;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/valley-sans.ttf) format("truetype")}:root{font-family:Valley Sans,system-ui,sans-serif;font-weight:500;color:#285359;background:#d5eae5;font-synthesis:none}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden}body{overscroll-behavior:none}button{font:inherit;-webkit-tap-highlight-color:transparent;touch-action:manipulation}button:focus-visible{outline:none}#scene{position:absolute;inset:0;touch-action:none}#scene canvas{display:block;width:100%;height:100%}.plaque{position:fixed;z-index:3;inset:0;pointer-events:none;-webkit-user-select:none;user-select:none}.plaque button{pointer-events:auto}h1{margin:0;font-size:30px;line-height:1.05;font-weight:900;letter-spacing:-1.3px}.progress{position:absolute;top:max(26px,env(safe-area-inset-top));left:50%;transform:translate(-50%);display:flex;align-items:center;gap:22px;padding:13px 23px;background:#fffef7eb;border:1px solid #ffffffb8;border-radius:19px;box-shadow:0 4px #93b7ad22,0 8px 26px #537e7020}.progress div{display:flex;flex-direction:column;align-items:center;gap:1px}.progress span{font-size:8px;font-weight:600;color:#91aaa4;letter-spacing:1.3px}.progress strong{font-size:24px;font-weight:650;line-height:1.15;color:#426d66}.progress i{width:1px;height:27px;background:#e4ece4}.tools{position:fixed;left:50%;bottom:max(34px,calc(env(safe-area-inset-bottom) + 18px));transform:translate(-50%);display:flex;align-items:center;gap:8px;padding:10px 12px;background:#fffdf6f5;border:1px solid #ffffffd9;border-radius:22px;box-shadow:0 5px #95b7aa26,0 10px 32px #416f6520;pointer-events:auto}.tools button{width:46px;height:43px;display:grid;place-items:center;padding:12px;border:0;border-radius:13px;color:#60877b;background:transparent;cursor:pointer;transition:transform .15s,background .15s}.tools button:hover{background:#ebf1e5;transform:translateY(-2px)}.tools button:active{transform:translateY(1px)}.tools button:disabled{opacity:.3;cursor:default;transform:none}.tools button[hidden]{display:none}.tools #advance-level{background:#ffdb8c;color:#8e6b30}.tools #advance-level:hover{background:#ffd174}.tools button svg{width:21px;height:21px;stroke-width:1.8}.tool-divider{width:1px;height:23px;background:#e2e9e0;margin:0 2px}.route-feedback{position:fixed;z-index:3;left:50%;bottom:max(108px,calc(env(safe-area-inset-bottom) + 92px));transform:translate(-50%);width:max-content;max-width:calc(100vw - 32px);margin:0;padding:9px 15px;border-radius:14px;background:#fffdf6f5;color:#527567;font-size:12px;text-align:center;pointer-events:none}#board-controls{position:absolute;inset:0;pointer-events:none}.tile-control{position:absolute;padding:0;border:0;background:transparent;pointer-events:none}.tile-control:focus{outline:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}#loading{position:absolute;z-index:5;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:24px;background:#d5eae5;font-size:17px;color:#51897e;transition:opacity .5s;pointer-events:none}#loading.loaded{opacity:0}.loading-island{width:48px;height:48px;border-radius:12px;background:#a5cd79;box-shadow:0 8px #c6b281;transform:rotate(-12deg);animation:float 1.6s ease-in-out infinite alternate}@keyframes float{to{transform:rotate(7deg) translateY(-8px)}}#error{position:absolute;z-index:10;inset:0;padding:15vw;background:#d5eae5}#error[hidden]{display:none}#error p{max-width:400px;line-height:1.6}@media(max-width:600px){h1{font-size:26px;letter-spacing:-1.2px}.progress{top:max(20px,env(safe-area-inset-top));gap:14px;padding:9px 14px;border-radius:15px}.progress span{font-size:7px;letter-spacing:.8px}.progress strong{font-size:21px}.tools{bottom:max(24px,calc(env(safe-area-inset-bottom) + 15px));gap:3px;padding:9px;border-radius:20px}.tools button{width:42px;height:45px;padding:11px}.tool-divider{margin:0 3px}}@media(max-width:350px){h1{font-size:23px}.progress{padding:8px 11px;gap:10px}.tools{gap:0}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}@font-face{font-family:Darumadrop One;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/darumadrop-one-dialogs.ttf) format("truetype")}.game-dialog{--paper:#fffdf2;--ink:#284f43;--muted:#74877b;--gold:#f4cc79;--line:#e4e8d8;width:min(440px,calc(100vw - 36px));max-height:calc(100dvh - 36px - env(safe-area-inset-top) - env(safe-area-inset-bottom));margin:auto;padding:35px 34px 24px;overflow-y:auto;overscroll-behavior:contain;color:var(--ink);background:var(--paper);border:1px solid #fffef9;border-radius:29px;box-shadow:0 7px #dbe2c7,0 25px 70px #102d354a}.game-dialog[open]{animation:dialog-arrive .5s cubic-bezier(.2,.8,.2,1) both}.game-dialog::backdrop{background:#193e34a6;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.game-dialog:after{content:"";position:absolute;inset:7px;border:1px solid #9cab7c20;border-radius:23px;pointer-events:none}.game-dialog [hidden]{display:none!important}.game-dialog h2,.game-dialog h3,.game-dialog p{margin:0}.game-dialog h2{font-size:40px;font-weight:650;letter-spacing:-1.1px;line-height:1.05;text-align:center}.game-dialog h2:focus{outline:none}#how-title{font-family:Darumadrop One,sans-serif;font-weight:400;letter-spacing:0;font-size:52px}#help-dialog .intro{font-family:Darumadrop One,sans-serif;font-weight:400;font-size:20px;line-height:1.4;margin-top:4px}.game-dialog .intro{margin-top:12px;color:var(--muted);font-size:12px;line-height:1.65;text-align:center}.game-dialog .close-dialog{position:absolute;top:14px;right:14px;z-index:2;display:grid;place-items:center;width:32px;height:32px;border:0;border-radius:50%;color:#8a9b8d;background:transparent;cursor:pointer;transition:background .15s}.game-dialog .close-dialog:hover{background:#e8eddc}.game-dialog .close-dialog svg{width:15px;height:15px;stroke:currentColor;stroke-width:1.7;fill:none}.lessons{margin:25px 0 21px}.lesson{display:grid;grid-template-columns:112px 1fr;gap:18px;align-items:center;padding:10px 0;min-height:103px}.lesson+.lesson{border-top:1px solid var(--line)}.lesson-art{width:112px;height:80px;overflow:visible}.game-dialog .lesson h3{margin:0 0 6px;font-size:15px;letter-spacing:-.2px}.game-dialog .lesson p{max-width:204px;font-size:11px;line-height:1.65;color:var(--muted)}.step{font-size:10px;color:#91a68b;margin-right:9px;font-weight:800}.game-dialog .primary{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;min-height:49px;padding:0 16px 4px;line-height:1;width:100%;border:1px solid #edc16c;border-radius:13px;background:var(--gold);box-shadow:0 3px #dcb264;color:#68542f;font-family:Darumadrop One,sans-serif;font-size:22px;font-weight:400;cursor:pointer;transition:background .2s,transform .2s,box-shadow .2s}.game-dialog .primary:hover{background:#ffda91;transform:translateY(-1px);box-shadow:0 4px #dcb264}.game-dialog .primary:active{transform:translateY(2px);box-shadow:0 1px #dcb264}.completion-dialog{width:min(408px,calc(100vw - 36px));padding:29px 30px 25px}.harbour{width:100%;height:auto;display:block;margin:7px 0 18px;overflow:visible}.completion-dialog h2{font-family:Darumadrop One,sans-serif;font-size:48px;font-weight:400;letter-spacing:0}.game-dialog .level-summary{display:flex;align-items:center;justify-content:center;gap:11px;margin:13px 0 24px;font-size:11px;color:#7e8e7c}.level-summary i{width:3px;height:3px;border-radius:100%;background:#b8c4ac}.level-summary strong{color:#55765c;font-weight:800}.growth{display:flex;align-items:center;justify-content:center;gap:13px;padding:14px 6px;margin:0 0 22px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.growth-grid{width:41px;height:41px;flex:none}.game-dialog .growth p{font-size:11px;font-weight:800;color:#5c7752}.growth small{display:block;font-size:10px;color:#96a18a;font-weight:400;margin-top:4px}.game-dialog .secondary{display:block;position:relative;z-index:1;margin:14px auto 0;border:0;background:transparent;color:#819378;font-size:11px;padding:7px 16px;border-radius:10px;cursor:pointer}.game-dialog .secondary:hover{background:#edf1e3;color:#496b49}.game-dialog .secondary svg{width:13px;height:13px;vertical-align:-2px;margin-right:6px;stroke:currentColor;stroke-width:1.5;fill:none}.turn-piece{transform-box:fill-box;transform-origin:center;animation:tile-turn 6s cubic-bezier(.5,0,.2,1) infinite}.swap-a{animation:tile-swap-a 6s cubic-bezier(.5,0,.2,1) infinite}.swap-b{animation:tile-swap-b 6s cubic-bezier(.5,0,.2,1) infinite}.sailing{animation:illustration-sail 7s ease-in-out infinite}.little-boat{transform-box:fill-box;transform-origin:50% 85%;animation:boat-bob 4.8s ease-in-out infinite}.pennant{transform-box:fill-box;transform-origin:left;animation:pennant-wave 3s ease-in-out infinite}.ripple{animation:water-ripple 4.8s ease-in-out infinite}.growing-row{animation:valley-growth 6s ease-in-out infinite}@keyframes dialog-arrive{0%{opacity:0;transform:translateY(17px) scale(.975)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes tile-turn{0%,22%{transform:rotate(0)}45%,78%{transform:rotate(90deg)}95%,to{transform:rotate(180deg)}}@keyframes tile-swap-a{0%,20%,to{transform:translate(0)}43%,70%{transform:translate(45px,-5px)}}@keyframes tile-swap-b{0%,20%,to{transform:translate(0)}43%,70%{transform:translate(-45px,5px)}}@keyframes illustration-sail{0%,12%{transform:translate(0);opacity:0}22%,78%{opacity:1}92%,to{transform:translate(62px);opacity:0}}@keyframes boat-bob{0%,to{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-3px) rotate(1deg)}}@keyframes pennant-wave{0%,to{transform:scaleX(1)}50%{transform:scaleX(.8)}}@keyframes water-ripple{0%,to{opacity:.35;transform:translateY(0)}50%{opacity:.75;transform:translateY(2px)}}@keyframes valley-growth{0%,20%,to{opacity:.2}45%,80%{opacity:1}}@media(max-width:500px){#how-title{font-size:46px}#help-dialog .intro{font-size:19px}.game-dialog{padding:31px 24px 22px;border-radius:26px}.game-dialog h2{font-size:34px}.lesson{grid-template-columns:94px 1fr;gap:12px;min-height:95px}.lesson-art{width:94px;height:74px}.game-dialog .lesson p{font-size:10.5px}.lessons{margin:20px 0 16px}.completion-dialog{padding:26px 25px 22px}.completion-dialog h2{font-size:42px}.harbour{margin:2px 0 16px}.game-dialog .close-dialog{top:12px;right:12px}.game-dialog .intro{font-size:11px}}@media(prefers-reduced-motion:reduce){.game-dialog,.game-dialog *{animation:none!important;transition:none!important}.sailing{opacity:1;transform:translate(28px)}.growing-row{opacity:1}}
