:root{font-family:system-ui,-apple-system,"Apple SD Gothic Neo","Noto Sans KR","Malgun Gothic",sans-serif;color:#21577b;background:#82c8fa;font-synthesis:none;-webkit-tap-highlight-color:transparent}*{box-sizing:border-box}body{margin:0;min-height:100dvh}button,input{font:inherit}button{cursor:pointer}button:disabled{opacity:.65;cursor:wait}[hidden]{display:none!important}.app-shell{min-height:100dvh;position:relative;isolation:isolate;overflow:hidden;display:flex;flex-direction:column;background:linear-gradient(180deg,#5db7fa 0%,#8bdafa 48%,#d9f5f5 100%)}.app-shell:before{content:"";position:absolute;right:-80px;top:-120px;width:300px;height:300px;background:radial-gradient(circle,#ffe9a5a8,transparent 70%);pointer-events:none;z-index:-1}.ambient-cloud{position:absolute;background:#fff9;filter:drop-shadow(0 10px 5px #3ca1d21b);pointer-events:none;border-radius:80px}.ambient-cloud:before,.ambient-cloud:after{content:"";position:absolute;background:inherit;border-radius:50%}.cloud-one{width:140px;height:40px;left:-45px;top:19%;opacity:.36}.cloud-one:before{width:70px;height:65px;left:20px;top:-30px}.cloud-one:after{width:70px;height:65px;right:10px;top:-23px}.cloud-two{width:140px;height:38px;right:-90px;top:63%;opacity:.4}.cloud-two:before{width:80px;height:62px;left:28px;top:-35px}.cloud-two:after{width:60px;height:55px;right:20px;top:-25px}.topbar{width:min(100%,520px);margin:0 auto;padding:calc(17px + env(safe-area-inset-top)) 22px 8px;display:flex;align-items:center;justify-content:space-between;z-index:4}.top-mark{font-size:11px;font-weight:900;letter-spacing:.08em;color:#fff;text-shadow:0 2px 10px #2485b273}.top-mark span{font-size:17px;color:#ffeaa8;margin-right:6px}.icon-button{width:42px;height:42px;border:2px solid #ffffffaa;background:#ffffff9e;border-radius:16px;font-size:20px;box-shadow:0 4px 0 #298ab52b}.game-shell{width:min(100%,520px);margin:0 auto;flex:1;display:flex;flex-direction:column;z-index:2}.screen{width:100%;flex:1;padding:12px 22px 24px;display:flex;flex-direction:column;align-items:center}.eyebrow{margin:8px 0 17px;background:#ffffffa8;border:1px solid #fff;border-radius:100px;color:#3788b5;font-size:11px;letter-spacing:.15em;font-weight:900;padding:7px 16px}.hero-title{text-align:center;line-height:1.17;letter-spacing:-.045em;text-shadow:0 4px 1px #fff7,0 7px 16px #2279b541;display:flex;flex-direction:column;gap:2px}.hero-title span{font-size:clamp(34px,9vw,47px);font-weight:950;color:white}.hero-title strong{font-size:clamp(36px,9.1vw,47px);font-weight:950;color:#fff;white-space:nowrap}.lead{text-align:center;font-size:14px;line-height:1.7;color:#216d99;margin:12px 0 0;font-weight:700}.hero-illustration{position:relative;width:min(100%,340px);height:240px;margin:8px auto 0;overflow:visible}.hero-illustration:before{content:"";position:absolute;left:9%;right:9%;top:20%;bottom:15%;border-radius:50%;background:#fff7;filter:blur(29px)}.hero-fish{position:absolute;width:220px;left:50%;top:42%;transform:translate(-50%,-50%) rotate(-11deg);filter:drop-shadow(0 14px 1px #2b96d138);animation:bob 2.4s ease-in-out infinite;z-index:2}.hero-bubble{position:absolute;border-radius:50%;border:3px solid #d7f9ffaf;background:#eaffff66}.hb1{width:25px;height:25px;top:16%;left:16%;animation:float 4s ease-in-out infinite}.hb2{width:15px;height:15px;top:56%;right:13%;animation:float 3.3s ease-in-out infinite .8s}.seafloor-wave{position:absolute;left:-3%;right:-3%;height:95px;bottom:-10px;background:#c6f2f8;border-radius:50% 50% 0 0/60% 60% 0 0}.wave-two{background:#9fe3f7;bottom:-17px;left:-15%;right:-15%;height:60px}.little-star{position:absolute;right:15%;top:8%;font-size:35px;color:#fff1aa;transform:rotate(-13deg);animation:twinkle 2.1s infinite}.start-actions,.result-actions,.rank-actions{width:min(100%,360px);display:flex;flex-direction:column;gap:10px;z-index:2}.start-actions{margin:-3px auto 0}.primary-btn,.soft-btn,.register-btn{min-height:56px;border-radius:19px;border:0;display:flex;justify-content:center;align-items:center;gap:12px;font-size:19px;font-weight:900;box-shadow:0 5px 0 #287cb5,0 10px 20px #136fa421;transition:transform .12s,box-shadow .12s}.primary-btn{color:#fff;background:#288bd0;text-shadow:0 2px 1px #1c6897}.primary-btn:active,.soft-btn:active,.register-btn:active{transform:translateY(3px);box-shadow:0 2px 0 #287cb5}.soft-btn{min-height:48px;background:#ffffffed;color:#317da8;border:2px solid #fff;font-size:14px;box-shadow:0 4px 0 #3e94c134}.instructions{margin:19px 0 3px;text-align:center;font-size:12px;font-weight:700;color:#327eaa;line-height:1.7}.instructions span{font-size:19px;margin-right:3px}.demo-indicator{margin:8px 0 0;color:#1d6c87;font-size:11px;background:#fff8;border-radius:13px;padding:7px 12px}.footer{color:#448db0;font-size:9px;letter-spacing:.12em;text-align:center;font-weight:800;padding:10px 14px calc(10px + env(safe-area-inset-bottom))}.play-screen{padding-top:10px}.play-head{width:100%;display:flex;gap:12px}.stat-card,.timer-card{background:#ffffffed;flex:1;border:2px solid white;border-radius:19px;padding:8px 15px 10px;display:flex;flex-direction:column;gap:1px;box-shadow:0 5px 0 #3999ce33}.stat-card small,.timer-card small{font-size:11px;font-weight:800;color:#6a9fbb}.stat-card strong,.timer-card strong{font-size:30px;line-height:1.12;color:#277eae;font-weight:1000}.timer-card strong{color:#f18f7d}.stat-card em,.timer-card em{font-style:normal;font-size:13px;font-weight:800;margin-left:2px}.time-track{height:9px;border:2px solid #fff9;border-radius:40px;overflow:hidden;background:#fff7;width:100%;margin:15px 0 14px}.time-track>div{height:100%;width:100%;background:linear-gradient(90deg,#ffe6aa,#fbb37e);border-radius:20px;transition:width .05s linear}.game-board{position:relative;flex:1;min-height:330px;max-height:590px;width:100%;overflow:hidden;border-radius:28px;border:4px solid #e6fcff;box-shadow:0 9px 0 #2e92bd60,0 20px 30px #2582b323;background:linear-gradient(180deg,#a7ebf8 0%,#65d4ea 26%,#45bdda 70%,#2598bd 100%);touch-action:manipulation}.game-board:before{content:"";position:absolute;top:0;right:0;width:100%;height:100%;background:repeating-linear-gradient(105deg,#ffffff00 0,#ffffff00 32px,#ffffff15 36px,#ffffff00 61px);opacity:.65}.water-sun{position:absolute;width:140px;height:140px;background:radial-gradient(circle,#fff6b5aa,transparent 70%);right:-20px;top:-25px}.board-bottom{position:absolute;bottom:-20px;left:-10%;width:120%;height:72px;background:#75d9c4;border-radius:50% 50% 0 0;z-index:1}.board-bottom:after{content:"";position:absolute;left:18%;bottom:20px;width:50px;height:18px;background:#b3f0d5;border-radius:50%;box-shadow:116px 8px 0 0 #b3f0d5,190px -1px 0 -3px #b3f0d5}.board-bubble{position:absolute;border:2px solid #fff9;border-radius:50%;background:#fff2;animation:float 3s infinite;z-index:1}.b1{width:21px;height:21px;left:19%;top:18%}.b2{width:13px;height:13px;right:16%;top:37%;animation-delay:1s}.b3{width:30px;height:30px;left:55%;top:72%;animation-delay:1.6s}.sea-grass{position:absolute;bottom:20px;color:#1aab95;font-size:86px;z-index:1;line-height:1}.grass-left{left:0;transform:rotate(-30deg)}.grass-right{right:0;transform:rotate(30deg)}.fish-layer{position:absolute;inset:0;z-index:3}.fish-button{position:absolute;display:grid;place-items:center;width:clamp(62px,18vw,85px);height:clamp(55px,15vw,72px);padding:0;border:0;background:none;cursor:pointer;touch-action:manipulation;transform:translate(-50%,-50%);will-change:left,top;filter:drop-shadow(0 4px 2px #14708b33)}.fish-button svg{width:100%;height:100%;overflow:visible}.fish-button:active{scale:.91}.fish-button:focus-visible{outline:3px solid #fff;outline-offset:3px}.splash-layer{position:absolute;inset:0;pointer-events:none;z-index:5}.splash{position:absolute;font-size:20px;color:#fff;font-weight:950;text-shadow:0 2px #238bb8;animation:splash .55s ease-out forwards}.countdown{z-index:10;position:absolute;inset:0;display:grid;place-items:center;font-weight:1000;font-size:clamp(90px,23vw,125px);color:white;text-shadow:0 7px 0 #55b4d9,0 11px 30px #15769d;backdrop-filter:blur(2px);background:#70d9ed30;animation:pulse .65s ease-in-out infinite}.species-tracker{width:100%;display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:15px 0 3px}.species-tracker>div{background:#fffaf0a9;padding:9px 5px;border:1px solid white;border-radius:14px;text-align:center;display:flex;flex-direction:column;gap:2px}.species-tracker span{font-size:10px;color:#357f9d;font-weight:850}.species-tracker strong{font-size:19px;color:#2677ad}.play-hint{font-weight:850;font-size:12px;color:#3284b0;margin:9px 0 0}.result-screen{padding-top:5px}.result-screen>.eyebrow{margin-bottom:7px}.result-title{font-size:22px;letter-spacing:-.04em;color:#fff;text-shadow:0 3px #247ba5;margin:0}.big-score{display:flex;align-items:baseline;gap:7px;color:white;text-shadow:0 4px #2f9cc9;margin:3px 0 10px}.big-score span{font-size:58px;font-weight:1000;line-height:1.08}.big-score small{font-size:17px;font-weight:900}.ending-scene{height:210px;width:min(100%,350px);border:4px solid #fff;border-radius:26px;box-shadow:0 7px 0 #3f8fb14f;overflow:hidden;position:relative;background:linear-gradient(#bff3fa,#75dbb7)}.ending-scene.river-scene{background:linear-gradient(#a9e9f9,#77cbdd 70%,#5ba9c4)}.ending-scene.sea-scene{background:linear-gradient(#7bd4f4,#469ed2 65%,#2884bd)}.ending-sun{width:68px;height:68px;background:#ffe49b;position:absolute;top:10px;right:28px;border-radius:50%;box-shadow:0 0 40px #ffeab4;animation:twinkle 3s infinite}.ending-cloud{background:#fff9;height:19px;width:67px;border-radius:40px;position:absolute;top:36px;left:27px}.ending-cloud:after{content:"";position:absolute;width:32px;height:28px;border-radius:50%;background:inherit;left:17px;top:-12px}.ec2{left:auto;right:67px;top:60px;scale:.7}.ending-hills{position:absolute;bottom:26px;height:90px;left:-20px;width:125%;border-radius:50% 50% 0 0/45% 40% 0 0;background:#66bfab}.sea-scene .ending-hills{display:none}.river-scene .ending-hills{background:#4eaa9c}.ending-water{position:absolute;bottom:-30px;left:-20px;width:120%;height:100px;background:#50c0d7;border-top:7px solid #b9eef0;border-radius:45% 35% 0 0}.sea-scene .ending-water{height:140px;background:#2189c1;border-top:7px solid #96e4f4}.river-scene .ending-water{background:#3dacc8}.ending-character{width:90px;height:140px;position:absolute;bottom:17px;left:45%;transform:translateX(-50%);z-index:3;animation:bob 2.6s ease-in-out infinite}.character-hair{position:absolute;width:68px;height:61px;background:#614638;border-radius:46% 49% 33% 40%;left:9px;top:0;z-index:2}.character-hair:after{content:"";position:absolute;top:20px;left:3px;width:62px;height:24px;background:#614638;border-radius:10% 90% 40% 30%;transform:rotate(-9deg)}.character-face{position:absolute;width:57px;height:54px;border-radius:42% 42% 49% 49%;background:#ffe9d0;top:20px;left:15px;z-index:3;box-shadow:0 3px #e8bfb5}.character-face i{position:absolute;display:block}.eye-left,.eye-right{width:4px;height:6px;border-radius:50%;background:#53483f;top:26px}.eye-left{left:16px}.eye-right{right:16px}.smile{height:9px;width:13px;border-bottom:2px solid #cb777d;border-radius:50%;left:22px;top:30px}.character-body{position:absolute;width:83px;height:76px;background:repeating-linear-gradient(90deg,#f3fcfb 0,#f3fcfb 16px,#b6e7ed 16px,#b6e7ed 25px);border-radius:40% 40% 10% 10%;left:2px;top:65px;z-index:1}.character-hand{position:absolute;font-size:27px;color:#ffe28f;left:72px;top:74px;z-index:4;animation:twinkle 2s infinite}.ending-fish{position:absolute;right:48px;bottom:45px;z-index:3;font-size:32px;animation:swim 3s ease-in-out infinite}.ending-title{font-size:21px;color:#18668c;margin:16px 0 3px}.ending-copy{font-size:13px;color:#287fa4;font-weight:750;text-align:center;margin:0 0 12px}.result-species{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;width:100%;margin-bottom:12px}.result-species span{background:#fffa;border:1px solid #fff;border-radius:30px;padding:7px 10px;font-size:11px;color:#3781a4;font-weight:800}.result-species b{color:#197cba;margin-left:4px}.rank-register{width:min(100%,360px);background:#fffdf0ed;border:2px solid #fff;border-radius:20px;padding:13px;margin:0 0 12px;box-shadow:0 4px 0 #5eb1ca55}.rank-congrats{margin:0 0 3px;font-weight:950;color:#d88936;font-size:15px}.rank-explain{margin:0 0 9px;font-size:11px;color:#628ca4}.rank-register label{display:block;font-size:11px;color:#28789f;font-weight:900;margin-bottom:5px}.input-row{display:flex;gap:8px}.input-row input{min-width:0;flex:1;border:2px solid #b7dcec;background:white;border-radius:12px;padding:10px;color:#29668c;font-size:14px;outline:none}.input-row input:focus{border-color:#62adcf}.register-btn{min-height:41px;padding:0 16px;border-radius:12px;background:#2b8fc4;color:#fff;font-size:13px;box-shadow:0 3px 0 #2578a5}.result-notice{font-size:11px;color:#1c7195;text-align:center;line-height:1.5;margin:0 0 9px;min-height:0}.result-actions{margin-top:auto}.result-actions .primary-btn{min-height:48px;font-size:16px}.result-actions .soft-btn{min-height:43px}.leaderboard-screen{padding-top:24px}.rank-eyebrow{color:#e8ffff;letter-spacing:.2em;font-size:11px;font-weight:950;margin:6px 0 10px}.rank-title{color:#fff;margin:0;font-size:31px;letter-spacing:-.05em;text-shadow:0 4px #4097c7}.rank-subtitle{color:#2c789d;margin:6px 0 25px;font-size:13px;font-weight:850}.rank-list{display:flex;flex-direction:column;width:100%;gap:9px}.rank-entry{display:flex;align-items:center;gap:12px;background:#ffffffec;border:2px solid white;border-radius:19px;padding:13px 13px;box-shadow:0 4px 0 #388cba36}.rank-number{width:34px;text-align:center;font-size:21px;color:#3580a9;font-weight:950}.rank-first .rank-number{font-size:26px}.rank-info{min-width:0;flex:1;display:flex;flex-direction:column;gap:3px}.rank-name{color:#216d99;font-size:15px;font-weight:950;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rank-date{color:#80a9bb;font-size:10px;font-variant-numeric:tabular-nums}.rank-score{font-size:22px;color:#247cae;font-weight:1000;font-variant-numeric:tabular-nums;white-space:nowrap}.rank-score small{font-size:10px;font-weight:800;margin-left:2px}.rank-placeholder{padding:21px;text-align:center;color:#377d9d;font-size:12px;background:#fff9;border-radius:16px}.rank-footnote{font-size:11px;text-align:center;color:#327f9d;margin:20px 0}.rank-actions{margin:auto 0 0}.rank-actions .primary-btn{min-height:50px;font-size:16px}.toast{position:fixed;bottom:calc(35px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:max-content;max-width:calc(100vw - 32px);padding:12px 19px;border-radius:15px;background:#265a7d;color:#fff;z-index:100;box-shadow:0 8px 30px #2b708b55;font-size:13px;font-weight:800;text-align:center}@keyframes bob{50%{translate:0 -10px}}@keyframes float{50%{transform:translateY(-18px)}}@keyframes pulse{50%{scale:1.09}}@keyframes twinkle{50%{opacity:.55;scale:1.07}}@keyframes splash{to{opacity:0;transform:translateY(-38px) scale(1.25)}}@keyframes swim{50%{transform:translateX(-17px) rotate(-10deg)}}@media(max-height:725px){.screen{padding-top:4px;padding-bottom:13px}.eyebrow{margin:0 0 8px}.hero-title span,.hero-title strong{font-size:34px}.hero-illustration{height:195px}.hero-fish{width:195px}.lead{font-size:12px;margin-top:7px}.instructions{margin-top:10px}.play-screen{padding-top:0}.ending-scene{height:155px}.ending-character{scale:.78;transform-origin:bottom center}.result-title{font-size:18px}.big-score span{font-size:45px}.ending-title{font-size:18px;margin-top:8px}.rank-list{gap:7px}.rank-entry{padding:8px 12px}}@media(min-width:650px){.app-shell{width:520px;margin:auto;min-height:100dvh;box-shadow:0 0 80px #358bb176}body{background:#eff7fb}.hero-illustration{height:280px}}

/* v0.2: ending plays alone, then nickname registration or leaderboard. */
.result-screen{justify-content:center;padding-top:8px;padding-bottom:35px;gap:8px}
.result-screen .result-title,.result-screen .big-score,.result-screen .result-species,.result-screen .result-notice{display:none!important}
.result-screen .ending-scene{width:min(100%,400px);height:clamp(245px,55vh,435px);border-width:5px}
.result-screen .ending-character{transform:translateX(-50%) scale(1.6);transform-origin:center bottom;bottom:35px}
.result-screen .ending-fish{font-size:49px;right:10%;bottom:30%}
.result-screen .ending-title{font-size:clamp(24px,6vw,34px);margin-top:22px;color:#fff;text-shadow:0 3px #318bb8}
.result-screen .ending-copy{font-size:14px;color:#176c9a;line-height:1.6}
.post-screen{padding-top:24px;justify-content:flex-start;gap:12px}
.post-title{font-size:clamp(24px,6vw,32px);text-align:center;color:#fff;text-shadow:0 3px #318bb8;margin:4px 0}
.post-lead{font-size:13px;text-align:center;line-height:1.65;color:#297498;margin:0 0 8px}
.post-card{width:100%;background:#fffdf1;padding:25px 18px;border:2px solid white;border-radius:24px;box-shadow:0 6px #47a4bf4a}
.post-card .post-description{line-height:1.8;text-align:center;font-size:13px;color:#447b96}
.post-card label{display:block;font-size:12px;font-weight:900;color:#356f90;margin:14px 0 8px}
.post-card input{font-size:18px;border:2px solid #aedae9;border-radius:15px;padding:16px;width:100%;background:white;color:#1e6185}
.post-card .primary-btn{margin-top:18px}
.post-screen .soft-btn{width:100%}
.post-big-score{font-size:18px;font-weight:900;color:#fff;text-shadow:0 3px #308fb3}
.post-big-score strong{font-size:58px;margin-right:7px}
.summary-rank-title{margin:8px 0 0;color:#fff;text-shadow:0 3px #308fb3;font-size:22px}
.post-screen .rank-list{margin:0 0 6px}
.post-screen .rank-entry{padding:9px 12px}
.post-screen>.primary-btn{margin-top:auto}
@media(max-height:730px){.result-screen .ending-scene{height:235px}.post-card{padding:15px}.post-screen{gap:7px}.post-big-score strong{font-size:42px}}

.result-screen > .eyebrow{display:none!important}