@import url('https://fonts.googleapis.com/css2?family=Jua&family=Noto+Sans+KR:wght@400;500;600;700;800&display=swap');
:root{font-family:'Noto Sans KR',sans-serif;color:#214d5b;background:#f8f7f0;font-synthesis:none}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 0 75%,#daf1f080,transparent 48%),#f8f7f0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #eaa244;outline-offset:5px}header{max-width:1180px;margin:auto;height:102px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #dce4df}.brand{text-decoration:none;color:#254e58;font-weight:800;font-size:18px;display:flex;align-items:center;gap:11px}.brand-icon{font-size:31px;display:grid;place-items:center;color:white;background:#256e7f;width:37px;height:37px;border-radius:12px}.header-note{font-size:14px;color:#758b8e}main{max-width:1050px;margin:58px auto 54px;display:grid;grid-template-columns:1fr 490px;gap:65px;align-items:center}.eyebrow{font-size:12px;letter-spacing:2.3px;font-weight:800;color:#538490}h1{font-family:Jua,sans-serif;font-size:58px;line-height:1.23;font-weight:400;letter-spacing:-2px;margin:19px 0}h1 span{color:#3290a4}.description{font-size:17px;line-height:1.9;color:#6a858b}.mascot-area{height:242px;position:relative;margin-top:22px}.speech{position:absolute;z-index:2;right:0;top:0;transform:rotate(4deg);background:white;border:1px solid #dde9e7;border-radius:19px 19px 19px 3px;padding:13px 20px;font-size:15px;line-height:1.65;box-shadow:0 6px 16px #34687908}.mascot{position:absolute;width:260px;height:180px;top:28px;left:5px;z-index:1;animation:bob 4s ease-in-out infinite;display:grid;place-items:center}.mascot img{width:100%;height:100%;object-fit:contain}.fallback{font-size:120px}.ripple{position:absolute;bottom:27px;left:10px;width:270px;height:44px;border:1px solid #a6d8dc;border-radius:50%;background:#c6e7e740}.mascot-tag{position:absolute;bottom:0;left:74px;font-size:12px;color:#7d9697}.guide{display:flex;gap:13px;align-items:center;margin-top:12px}.guide>span{font-size:32px;color:#609eaa;background:#e8f0eb;border-radius:50%;width:48px;height:48px;text-align:center}.guide p{font-size:14px;line-height:1.8;color:#789095}.guide strong{font-weight:600;color:#3d6975}.game{background:#fffefa;border:1px solid #e1e7df;border-radius:27px;padding:28px;box-shadow:0 16px 50px #1a54690a}.game-top{display:flex;justify-content:space-between;align-items:center}.small-label{font-size:12px;color:#83968e}h2{font-size:20px;letter-spacing:-.7px;margin:6px 0 0}.level-pill{font-size:12px;font-weight:700;background:#edf3ed;padding:7px 12px;border-radius:30px;color:#6e887c}.stats{display:flex;align-items:center;gap:40px;margin:23px 0 18px;padding-top:18px;border-top:1px solid #e8ede7}.stats>div{display:flex;flex-direction:column;gap:5px}.stats>div>span{font-size:12px;color:#84989c}.stats strong{font-size:26px;font-weight:700;line-height:1.2;font-variant-numeric:tabular-nums}.stats small{font-size:13px;font-weight:400;color:#82969b}.reset{margin-left:auto;border:1px solid #e0e7e2;background:transparent;color:#789195;border-radius:10px;padding:8px 12px;font-size:18px}.reset span{font-size:13px}.board-wrap{position:relative;background:#dceff0;padding:34px 15px 0;border-radius:18px;overflow:hidden}.entry{position:absolute;top:8px;left:26px;font-size:12px;font-weight:700;color:#538d96}.entry span{margin-left:8px}.board{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.tile{border:0;border-radius:11px;background:#bcdedb;aspect-ratio:1;position:relative;padding:0;box-shadow:0 3px 0 #a6cdca;transition:background .2s}.tile:hover{background:#afd5d3}.tile svg{width:100%;height:100%;display:block;overflow:visible;transition:transform .22s}.tile .bank{stroke:#96c4c8;stroke-width:39;fill:none}.tile .water{stroke:#eaf8f6;stroke-width:27;fill:none;transition:stroke .2s}.tile.connected{background:#acd9da}.tile.connected .bank{stroke:#68b9cc}.tile.connected .water{stroke:#65c9e1}.tile .shine{stroke:#fff;stroke-opacity:.5;stroke-width:2;fill:none;stroke-dasharray:6 9}.tile.hint{outline:3px solid #ecb353;outline-offset:1px}.ocean{height:60px;display:flex;align-items:center;justify-content:space-around;color:#6da9b4}.ocean span{font-size:27px;letter-spacing:4px}.ocean strong{font-size:13px;color:#588d9b;font-weight:500}.game-bottom{display:flex;justify-content:space-between;gap:8px;align-items:center;padding-top:20px;font-size:12px;color:#809498}.game-bottom button{border:0;background:none;color:#437b89;text-decoration:underline;text-underline-offset:4px;font-size:12px;padding:6px 0}footer{max-width:1180px;margin:auto;border-top:1px solid #dde5df;padding:24px 0;display:flex;justify-content:space-between;color:#92a19c;font-size:12px}#swimmer{position:absolute;font-size:42px;display:none;z-index:3;transition:top .25s linear,left .25s linear;pointer-events:none}dialog{border:0;border-radius:27px;padding:34px;max-width:390px;width:calc(100% - 36px);text-align:center;color:#214d5b;background:#fffefa;box-shadow:0 20px 90px #173c5533}dialog::backdrop{background:#16475765;backdrop-filter:blur(5px)}dialog h2{font-family:Jua,sans-serif;font-size:30px;margin-top:12px}dialog p{color:#789297;font-size:15px}.success-icon{font-size:56px;margin-bottom:15px}#resultStats{background:#edf6f4;border-radius:14px;padding:20px;margin:22px 0;font-size:21px;font-weight:700}.primary,.secondary{width:100%;border:0;border-radius:12px;padding:14px;font-weight:700;font-size:16px}.primary{background:#287e92;color:white}.secondary{background:#edf3ef;color:#497b85;margin-top:9px}#shareStatus{min-height:20px;font-size:12px;margin-bottom:0}@keyframes bob{50%{transform:translateY(-9px) rotate(-3deg)}}@media(max-width:1100px){header,footer{margin-left:30px;margin-right:30px}main{margin:38px 40px;gap:30px;grid-template-columns:1fr 450px}h1{font-size:48px}}@media(max-width:760px){header{height:73px;margin:0 22px}.brand{font-size:15px}.header-note{display:none}main{margin:28px auto 32px;padding:0 18px;max-width:480px;display:flex;flex-direction:column;gap:20px}.intro{width:100%;position:relative;min-height:178px;padding-left:7px}.eyebrow{font-size:10px}h1{font-size:36px;line-height:1.2;letter-spacing:-1px;margin:12px 0}.description{font-size:13px;line-height:1.7;margin-bottom:0}.mascot-area{position:absolute;right:0;top:15px;width:150px;height:154px;margin:0}.mascot{width:145px;height:110px;top:40px;left:0}.fallback{font-size:75px}.speech{font-size:10px;padding:8px 12px;top:-4px;right:0}.ripple{width:140px;height:22px;left:0;bottom:9px}.mascot-tag,.guide{display:none}.game{width:100%;padding:20px;border-radius:23px}.stats{margin:17px 0}.board-wrap{padding:32px 12px 0}.board{gap:6px}.game-bottom{font-size:11px}footer{margin:0 24px;padding-top:19px;font-size:10px;gap:12px}h2{font-size:18px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
/* A compact play-first layout, with the character inside the waterway. */
header{height:72px}main{max-width:960px;margin:25px auto 26px;grid-template-columns:1fr 420px;gap:70px}.intro{position:relative}h1{font-size:50px}.speech{position:relative;display:inline-block;right:auto;top:auto;transform:rotate(-3deg);margin:20px 0 13px;font-size:16px}.guide{margin-top:9px}.game{padding:21px;border-radius:24px}.game-top h2{font-size:18px}.stats{margin:14px 0 12px;padding-top:12px}.stats strong{font-size:23px}.board-wrap{padding:25px 12px 0}.entry{font-size:11px;left:20px;top:5px}.board{gap:5px}.tile{border-radius:9px}.ocean{height:67px;margin:0 -12px;padding:0 12px;background:linear-gradient(180deg,#b3e5eb,#80cfdf);justify-content:space-between;position:relative;border-top:3px solid #83cedb}.sea-copy{font-size:12px!important;letter-spacing:0!important;color:#3b7b8c}.ocean .exit{width:23%;align-self:stretch;text-align:center;font-size:13px;font-weight:800;color:#216b82;border-left:2px dashed #fff8;border-right:2px dashed #fff8;background:#d5f7f755;line-height:1.45;padding-top:4px}.game-bottom{padding-top:12px}.game-bottom,.game-bottom button{font-size:13px}#swimmer{width:64px;height:47px;display:block;transform:translate(-50%,-50%);transition:top .4s ease,left .4s ease;filter:drop-shadow(0 4px 3px #21586a33)}#swimmer img{width:100%;height:100%;object-fit:contain}.tile .water{stroke:#eefaf9}.tile.connected .water{stroke:#54c2dc}footer{padding:17px 0}dialog{max-height:95dvh;overflow:auto}@media(min-width:761px) and (max-height:730px){header{height:58px}main{margin-top:16px;margin-bottom:16px;grid-template-columns:1fr 390px}.game{padding:17px}.stats{margin:10px 0}.ocean{height:58px}footer{padding:12px 0}}@media(max-width:1000px) and (min-width:761px){main{margin-left:40px;margin-right:40px;gap:35px;grid-template-columns:1fr 390px}h1{font-size:43px}}@media(max-width:760px){header{height:52px}.brand{font-size:14px}.brand-icon{width:29px;height:29px;font-size:25px}main{display:flex;margin:12px auto 14px;padding:0 14px;gap:12px;max-width:420px}.intro{min-height:0;padding:0 5px;width:100%}.intro .eyebrow,.description,.guide{display:none}h1{font-size:27px;line-height:1.22;margin:0;letter-spacing:-1px}h1 br{display:none}h1 span{display:inline-block;margin-left:5px}.speech{display:block;font-size:12px;background:none;box-shadow:none;border:0;transform:none;padding:0;margin:6px 0 0;line-height:1.5}.speech br{display:none}.game{padding:15px;border-radius:20px}.game-top h2{font-size:17px}.small-label{display:none}.stats{margin:11px 0;padding-top:10px;gap:32px}.stats>div{gap:2px}.stats strong{font-size:21px}.board-wrap{padding-top:24px}.game-bottom,.game-bottom button{font-size:12px}.ocean{height:57px}footer{font-size:10px;padding:11px 0}footer span:first-child{display:none}#swimmer{width:56px;height:42px}}
.level-pill{border:0;cursor:pointer;white-space:nowrap}.star-goal{color:#916f28;font-size:12px;line-height:1.5;margin:-2px 0 10px}.ocean .exit{width:calc((100% - (var(--grid-size,4) - 1)*5px)/var(--grid-size,4))}.lock{position:absolute;right:4px;bottom:3px;font-size:10px;color:#477a7c}.tile:disabled{cursor:default;box-shadow:inset 0 0 0 2px #7faeb0}.result-stars{font-size:40px;color:#dda539;letter-spacing:6px;margin-top:16px}#resultStats{margin:12px 0;padding:13px}#resultNote{font-size:14px}#stages{max-width:550px;text-align:left;padding:25px}.stages-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.stages-head h2{font-size:23px}.stages-head button{background:#edf3ef;border:0;border-radius:8px;padding:8px;color:#497b85}#stageGrid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.stage-card{border:1px solid #dce7e1;background:#f5f9f5;border-radius:12px;padding:13px;text-align:left;color:#315f69;display:flex;flex-direction:column;gap:5px}.stage-card.current{border:2px solid #3599af;padding:12px}.stage-card strong{font-size:20px;color:#27859b}.stage-card span{font-size:14px;font-weight:600}.stage-card small{font-size:12px;color:#8d743f}.session-note{font-size:12px!important}.game-top{gap:7px}@media(max-width:760px){.game-top h2{font-size:15px}.level-pill{font-size:11px;padding:7px 8px}.star-goal{font-size:11px;margin-bottom:7px}.stats{margin-top:9px;margin-bottom:9px}.game{padding:13px}#stages{padding:18px}.stages-head h2{font-size:21px}#swimmer{width:49px;height:37px}}
.challenge-banner{background:#e4f4f6;border:1px solid #c2e4e9;border-radius:12px;padding:11px 13px;margin-top:12px;display:flex;flex-direction:column;gap:4px}.challenge-banner strong{font-size:14px;color:#257d90}.challenge-banner span{font-size:14px;font-weight:700}.challenge-banner small{font-size:12px;color:#64888f}.challenge-banner[hidden],.challenge-result[hidden],#challengeLink[hidden]{display:none}.challenge-result{background:#e9f5ef;border-radius:10px;padding:12px;color:#326d62!important;font-weight:600}#challengeLink{width:100%;padding:9px;border:1px solid #c7dcd9;border-radius:8px;color:#426f7a;font-size:12px}
/* Waiting area stays outside the puzzle; only the last column opens to sea. */
.board-wrap{padding-top:55px}.entry{top:18px;left:calc(var(--entry-center,45px) + 32px);font-size:14px;line-height:1.4;font-weight:700}.ocean{background:#e3decd;border-top:4px solid #b6b29f;align-items:stretch}.ocean .sea-copy{display:flex;align-items:center;color:#777762;flex:1;font-size:12px!important;letter-spacing:0!important}.ocean .exit{background:linear-gradient(180deg,#94ddeb,#56b9d4);border-left:3px solid #fff9;border-right:0;color:#145f78;margin-top:-4px;border-top:4px solid #94ddeb}.board-wrap #swimmer{width:52px;height:39px}@media(max-width:760px){.board-wrap{padding-top:55px}.entry{font-size:13px}.board-wrap #swimmer{width:49px;height:37px}}
.board-wrap{padding-top:64px}.entry{top:15px}.entry-arrow{position:absolute;left:var(--entry-center,45px);top:43px;transform:translateX(-50%);font-size:20px;line-height:20px;font-weight:800;color:#327e90;pointer-events:none}@media(max-width:760px){.board-wrap{padding-top:64px}}
/* The upper shore mirrors the exit: a single water opening above column one. */
.start-shore{position:absolute;inset:0 0 auto;height:64px;background:#e3decd;border-bottom:4px solid #b6b29f;pointer-events:none}.start-water{position:absolute;top:0;bottom:-4px;left:12px;width:calc((100% - 24px - (var(--grid-size,4) - 1)*5px)/var(--grid-size,4));background:linear-gradient(180deg,#80cfdf,#b3e5eb);border-right:3px solid #fff9;border-bottom:4px solid #b3e5eb}.board-wrap #swimmer{z-index:3}
.result-stage{font-size:15px;font-weight:700;line-height:1.6;color:#43818d;margin:5px 0 8px;word-break:keep-all}
.brand-icon{overflow:hidden;background:none}.brand-icon img{width:100%;height:100%;display:block;object-fit:cover;border-radius:inherit}.success-icon img{width:110px;height:80px;object-fit:contain;display:block;margin:auto}

.kakao-share{background:#fee500;color:#191919}.kakao-share:hover{background:#f5dc00}
