:root{--ink:#0a435b;--muted:#4f8297;--glass:#f7fcfae6;--glass-line:#ffffffb8;--aqua:#18b9c0;--aqua-dark:#087e9b;--coral:#f07870;--cream:#fffaf1}*{box-sizing:border-box}html{scroll-behavior:smooth;min-width:320px}body{color:var(--ink);font-family:var(--font-geist-sans), "Pretendard", "Noto Sans KR", system-ui, sans-serif;background:#0a87a8;margin:0}button,input,select,textarea{font:inherit}button,a,label{-webkit-tap-highlight-color:transparent}:is(button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible,label:focus-within){outline-offset:3px;outline:3px solid #ffc65cf2}.ocean-app{background:#0b91b3;min-height:100vh;overflow:hidden}.topbar{z-index:500;border:1px solid var(--glass-line);-webkit-backdrop-filter:blur(18px)saturate(1.14);backdrop-filter:blur(18px)saturate(1.14);background:#fafdfadb;border-radius:25px;justify-content:space-between;align-items:center;gap:20px;min-height:78px;padding:8px 16px 8px 10px;display:flex;position:fixed;top:18px;left:20px;right:20px;box-shadow:0 18px 50px #033b522e,inset 0 1px #ffffffe6}.brand{color:inherit;flex:none;align-items:center;text-decoration:none;display:flex}.brand-logo{object-fit:contain;background:#fff;border-radius:18px;width:66px;height:66px;display:block;box-shadow:0 8px 20px #36262617}.top-actions{align-items:center;gap:12px;display:flex}.live-badge,.friend-count{letter-spacing:-.02em;white-space:nowrap;border-radius:999px;align-items:center;gap:8px;min-height:42px;padding:0 15px;font-size:13px;font-weight:800;display:inline-flex}.live-badge{color:#fff;background:linear-gradient(135deg,#0ba0ae,#087c9b);box-shadow:0 8px 20px #077c9b33}.live-badge i{background:#a9ffe2;border-radius:50%;width:8px;height:8px;animation:1.8s ease-in-out infinite livePulse;box-shadow:0 0 0 5px #a9ffe229}.friend-count{color:#396e83;background:#e4f5f4c7}.friend-count strong{color:#067f9a;font-size:15px}.view-mode-toggle{color:#286a7e;cursor:pointer;white-space:nowrap;background:#ffffffc2;border:1px solid #0a809721;border-radius:999px;align-items:center;gap:9px;min-height:42px;padding:0 15px;font-size:12px;font-weight:900;transition:color .2s,background .2s,transform .2s,box-shadow .2s;display:inline-flex;box-shadow:0 7px 18px #064e6314}.view-mode-toggle:hover{transform:translateY(-1px);box-shadow:0 10px 22px #064e6321}.view-mode-toggle i{border:2px solid;border-radius:80% 20%;width:17px;height:11px;position:relative;transform:rotate(45deg)}.view-mode-toggle i:after{content:"";background:currentColor;border-radius:50%;position:absolute;inset:2px}.view-mode-toggle.is-active{color:#fff;background:linear-gradient(135deg,#11aab4,#087d9a)}.view-mode-toggle.is-active i{border:0;border-radius:50%;width:15px;height:15px;transform:none}.view-mode-toggle.is-active i:before,.view-mode-toggle.is-active i:after{content:"";background:currentColor;border-radius:2px;height:3px;position:absolute;top:6px;left:2px;right:2px}.view-mode-toggle.is-active i:after{width:3px;height:auto;inset:2px 6px}.announcement-bar{z-index:490;color:#245d70;-webkit-backdrop-filter:blur(16px)saturate(1.12);backdrop-filter:blur(16px)saturate(1.12);background:#f8fdfae6;border:1px solid #ffffffb8;border-radius:17px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:11px;width:min(880px,100% - 40px);min-height:45px;padding:7px 13px 7px 9px;display:grid;position:fixed;top:108px;left:50%;transform:translate(-50%);box-shadow:0 12px 32px #033d5326}.announcement-bar-kind{color:#fff;text-align:center;white-space:nowrap;background:#0c99aa;border-radius:10px;min-width:50px;padding:7px 9px;font-size:10px;font-weight:950}.announcement-bar.kind-maintenance .announcement-bar-kind{background:#e77d54}.announcement-bar.kind-product .announcement-bar-kind{background:#8b6bc7}.announcement-bar-message{min-width:0;animation:.46s both announcementEnter;overflow:hidden}.announcement-bar-message a,.announcement-bar-message>span{color:inherit;letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:820;line-height:1.45;text-decoration:none;display:block;overflow:hidden}.announcement-bar-message a:hover{text-decoration:underline}.announcement-bar-message i{margin-left:5px;font-style:normal}.announcement-bar>small{color:#7c9ca7;white-space:nowrap;font-size:9px;font-weight:850}.ocean-app.has-announcements .hero-copy{top:172px}.ocean-stage{isolation:isolate;background-image:linear-gradient(#0c899f08,#023c661f),url(/ocean-world-v2.png);background-position:bottom;background-size:cover;min-height:100svh;position:relative;overflow:hidden}.ocean-stage:before{content:"";z-index:0;pointer-events:none;background:radial-gradient(circle at 50% 26%,#e7fff733,#0000 32%),linear-gradient(90deg,#034d6f0d,#0000 22% 78%,#034d6f0d);position:absolute;inset:0}.ocean-stage:after{content:"";z-index:0;pointer-events:none;opacity:.18;background-image:radial-gradient(circle,#fff 0 1px,#0000 1.6px);background-size:86px 94px;animation:22s linear infinite waterDust;position:absolute;inset:0}.ocean-atmosphere{z-index:1;pointer-events:none;position:absolute;inset:0}.ocean-atmosphere i{border:1px solid #eeffff9e;border-radius:50%;width:12px;height:12px;animation:11s ease-in infinite bubbleRise;position:absolute;box-shadow:inset 0 0 6px #ffffff80,0 0 8px #74eef547}.ocean-atmosphere i:first-child{animation-delay:-2s;bottom:15%;left:11%}.ocean-atmosphere i:nth-child(2){width:7px;height:7px;animation-delay:-7s;bottom:4%;left:38%}.ocean-atmosphere i:nth-child(3){width:18px;height:18px;animation-delay:-4s;bottom:19%;left:68%}.ocean-atmosphere i:nth-child(4){width:9px;height:9px;animation-delay:-9s;bottom:8%;right:12%}.ocean-atmosphere i:nth-child(5){width:5px;height:5px;animation-delay:-1s;bottom:30%;left:53%}.surface-caustics{z-index:2;pointer-events:none;mix-blend-mode:screen;position:absolute;inset:0 0 38%;overflow:hidden}.surface-caustics i{opacity:.22;filter:blur(14px);transform-origin:50% 0;background:linear-gradient(#fffff48f,#aefdf10d 66%,#0000);border-radius:50%;width:22%;height:112%;animation:8s ease-in-out infinite alternate causticDrift;position:absolute;top:-18%;transform:rotate(9deg)}.surface-caustics i:first-child{left:17%}.surface-caustics i:nth-child(2){opacity:.17;width:16%;animation-duration:11s;animation-delay:-5s;left:43%}.surface-caustics i:nth-child(3){opacity:.14;width:19%;animation-duration:9.5s;animation-delay:-2s;right:14%}.bubble-stream{z-index:7;pointer-events:none;width:120px;height:62%;position:absolute;bottom:9%}.bubble-stream-left{left:4%}.bubble-stream-right{right:5%;transform:scale(.82)}.bubble-stream i{left:var(--bubble-left,50%);width:var(--bubble-size,10px);height:var(--bubble-size,10px);opacity:0;animation:bubbleStream var(--bubble-speed,8s) ease-in infinite;animation-delay:var(--bubble-delay,0s);background:radial-gradient(circle at 32% 28%,#ffffffd1 0 8%,#0000 12%);border:1.5px solid #edffffb8;border-radius:50%;position:absolute;bottom:-22px;box-shadow:inset 0 0 7px #ffffff4d,0 0 7px #a1f8f633}.bubble-stream i:first-child{--bubble-left:12%;--bubble-size:9px;--bubble-speed:7.3s;--bubble-delay:-1s}.bubble-stream i:nth-child(2){--bubble-left:58%;--bubble-size:15px;--bubble-speed:9.2s;--bubble-delay:-6s}.bubble-stream i:nth-child(3){--bubble-left:34%;--bubble-size:6px;--bubble-speed:6.4s;--bubble-delay:-3.5s}.bubble-stream i:nth-child(4){--bubble-left:78%;--bubble-size:11px;--bubble-speed:8.1s;--bubble-delay:-5s}.bubble-stream i:nth-child(5){--bubble-left:45%;--bubble-size:5px;--bubble-speed:6.8s;--bubble-delay:-2s}.bubble-stream i:nth-child(6){--bubble-left:90%;--bubble-size:8px;--bubble-speed:7.8s;--bubble-delay:-7s}.motion-coral{z-index:9;pointer-events:none;transform-origin:50% 100%;filter:drop-shadow(0 9px 10px #03516626);width:126px;height:166px;animation:5.6s ease-in-out infinite alternate coralSway;position:absolute;bottom:3.5%}.motion-coral-left{left:9%}.motion-coral-right{animation-duration:6.8s;animation-delay:-3.2s;right:10%;transform:scaleX(-1)}.motion-coral i{transform-origin:50% 100%;background:linear-gradient(90deg,#ffb097,#e96f88 68%,#c95879);border-radius:999px 999px 16px 16px;width:16px;height:132px;position:absolute;bottom:0;left:54px;box-shadow:inset 3px 0 #ffffff2e}.motion-coral i:before,.motion-coral i:after{content:"";background:inherit;width:13px;height:58px;box-shadow:inherit;transform-origin:50% 100%;border-radius:999px;position:absolute}.motion-coral i:before{top:32px;left:-7px;transform:rotate(-41deg)}.motion-coral i:after{top:50px;right:-8px;transform:rotate(43deg)}.motion-coral i:nth-child(2){background:linear-gradient(90deg,#ffd58b,#f4a968 72%,#df8a5e);height:88px;left:20px;transform:rotate(-9deg)}.motion-coral i:nth-child(3){background:linear-gradient(90deg,#c3a9f1,#8068ce 72%,#6650b0);height:107px;left:90px;transform:rotate(8deg)}.motion-coral i:nth-child(4){background:linear-gradient(90deg,#6ae0b6,#22aa98 72%,#16897f);height:68px;left:70px;transform:rotate(14deg)}.motion-seaweed{z-index:8;pointer-events:none;width:150px;height:190px;position:absolute;bottom:2.5%}.motion-seaweed-left{left:1.2%}.motion-seaweed-right{right:1.5%;transform:scaleX(-1)}.motion-seaweed i{transform-origin:50% 100%;background:linear-gradient(90deg,#0f7d8bdb,#56c7a9e6);border-radius:90% 10% 80% 20%/88% 12%;width:28px;height:168px;animation:4.8s ease-in-out infinite alternate seaweedSway;position:absolute;bottom:0;left:58px;transform:rotate(-7deg);box-shadow:inset 6px 0 8px #ffffff1f}.motion-seaweed i:nth-child(2){opacity:.82;width:23px;height:135px;animation-duration:5.9s;animation-delay:-2s;left:18px;transform:rotate(-18deg)}.motion-seaweed i:nth-child(3){width:25px;height:145px;animation-duration:6.5s;animation-delay:-3.4s;left:96px;transform:rotate(12deg)}.motion-seaweed i:nth-child(4){opacity:.84;width:20px;height:101px;animation-duration:4.2s;animation-delay:-1.2s;left:122px;transform:rotate(22deg)}.motion-seaweed i:nth-child(5){opacity:.72;width:19px;height:108px;animation-duration:5.2s;animation-delay:-4s;left:47px;transform:rotate(7deg)}.hero-copy{z-index:120;color:#fff;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:linear-gradient(135deg,#004e7180,#02778b3d);border:1px solid #ffffff61;border-radius:22px;max-width:min(470px,100vw - 80px);padding:17px 22px 18px;position:absolute;top:126px;left:40px;box-shadow:0 14px 36px #034a631f}.hero-copy p{color:#b7fff1;letter-spacing:.22em;margin:0 0 5px;font-size:10px;font-weight:900}.hero-copy h1{letter-spacing:-.055em;text-shadow:0 3px 18px #00365233;margin:0;font-size:clamp(24px,3vw,38px);line-height:1.05}.hero-copy span{color:#f4fffce0;margin-top:9px;font-size:13px;font-weight:650;line-height:1.55;display:block}.hero-copy{transition:opacity .28s,transform .28s,visibility .28s}.ocean-app.is-viewing .hero-copy{visibility:hidden;opacity:0;transform:translateY(-10px)}.characters-layer{z-index:30;pointer-events:none;position:absolute;inset:0}.ocean-character{--character-size:145px;--crossing-duration:37.5s;--direction-duration:75s;--character-delay:0s;left:0;bottom:calc(9% + var(--character-depth));width:var(--character-size);filter:drop-shadow(0 14px 9px #04445c2e);will-change:transform, opacity;position:absolute}.ocean-character.heading-right{animation:traverseOcean var(--crossing-duration) linear var(--character-delay) infinite alternate}.ocean-character.heading-left{animation:traverseOcean var(--crossing-duration) linear var(--character-delay) infinite alternate-reverse}.character-rig{width:100%;animation:3.8s ease-in-out infinite alternate characterBob;position:relative}.character-body{object-fit:contain;transform-origin:50% 60%;width:100%;height:auto;max-height:180px;display:block}.heading-right .character-body{animation:faceRightCycle var(--direction-duration) steps(1, end) var(--character-delay) infinite}.heading-left .character-body{animation:faceLeftCycle var(--direction-duration) steps(1, end) var(--character-delay) infinite}.motion-fairy .character-rig{animation:2.8s ease-in-out infinite fairyFlutter}.motion-octopus .character-rig{animation:4.6s ease-in-out infinite octopusPulse}.motion-penguin .character-rig{animation:2.4s ease-in-out infinite penguinDart}.motion-walrus .character-rig{animation:6.4s ease-in-out infinite walrusGlide}.motion-whale .character-rig{animation:7.2s ease-in-out infinite whaleCruise}.motion-turtle .character-rig{animation:4.8s ease-in-out infinite turtlePaddle}.motion-crab .character-rig{animation:.72s steps(2,end) infinite crabScuttle}.motion-shark .character-rig{animation:3.1s ease-in-out infinite sharkHunt}.motion-starfish .character-rig{animation:9s ease-in-out infinite starfishDrift}.motion-seahorse .character-rig{animation:5.6s ease-in-out infinite seahorseRise}.motion-puffer .character-rig{animation:4.2s ease-in-out infinite pufferPuff}.motion-narwhal .character-rig{animation:6.6s ease-in-out infinite narwhalArc}.ocean-character.motion-crab,.ocean-character.motion-fairy,.ocean-character.motion-starfish{bottom:clamp(6%, calc(9% + var(--character-depth)), 22%)}.character-speech{z-index:4;color:#0b5269;text-align:center;background:#ffffffed;border:2px solid #ffffffbf;border-radius:15px 15px 15px 5px;min-width:max-content;max-width:150px;padding:7px 11px;font-size:12px;font-weight:850;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);box-shadow:0 7px 18px #003e5a24}.character-speech:after{content:"";border:6px solid #0000;border-top-color:#ffffffed;border-left-width:2px;position:absolute;top:100%;left:18px}.empty-ocean{z-index:8;color:#edfffcc7;text-shadow:0 2px 8px #004a6533;flex-direction:column;align-items:center;gap:13px;font-size:13px;font-weight:800;display:flex;position:absolute;top:49%;left:50%;transform:translate(-50%,-50%)}.empty-ocean i{border:1px solid #ffffff7a;border-radius:50%;width:42px;height:42px;animation:3s ease-in-out infinite alternate emptyFloat;display:block;box-shadow:inset 0 0 18px #fff3,0 0 16px #a1f9f226}.scanner-card{z-index:220;border:1px solid var(--glass-line);background:var(--glass);-webkit-backdrop-filter:blur(22px)saturate(1.12);backdrop-filter:blur(22px)saturate(1.12);border-radius:28px;width:min(430px,100vw - 48px);padding:22px;animation:.28s ease-out both scannerReveal;position:absolute;bottom:22px;right:24px;box-shadow:0 25px 65px #02395340,inset 0 1px #ffffffe6}.scanner-heading{align-items:center;gap:13px;display:flex}.step-chip{color:#fff;letter-spacing:.13em;background:linear-gradient(135deg,#129fb0,#067b98);border-radius:999px;flex:none;place-items:center;min-width:64px;height:38px;padding:0 13px;font-size:12px;font-weight:950;display:inline-grid;box-shadow:0 8px 18px #057c972e}.scanner-heading h2{color:#0d4860;letter-spacing:-.045em;margin:0;font-size:20px}.scanner-heading p{color:#6a96a7;margin:4px 0 0;font-size:11px;font-weight:650;line-height:1.45}.speech-field{margin-top:17px}.speech-label-row{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.speech-label-row label{color:#174e63;font-size:13px;font-weight:900}.speech-label-row label small{color:#79a1ad;margin-left:4px;font-size:9px;font-weight:800}.speech-label-row span{color:#6290a0;font-size:11px;font-weight:800}.speech-field input{color:#0e4c62;background:#ffffffb8;border:2px solid #1c9ba624;border-radius:16px;width:100%;height:50px;padding:0 16px;font-size:15px;font-weight:780;transition:border-color .18s,box-shadow .18s,background .18s}.speech-field input::placeholder{color:#a4c6cc}.speech-field input:focus{background:#fff;border-color:#0c9eab8f;outline:none;box-shadow:0 0 0 4px #14b5b81a}.speech-field p{color:#6d98a7;min-height:17px;margin:6px 2px 0;font-size:10px;font-weight:650}.speech-field.has-error input{border-color:#e05b5599}.speech-field.has-error p{color:#c64642}.scan-actions{grid-template-columns:1.35fr .8fr;gap:9px;margin-top:13px;display:grid}.scan-actions.is-camera-only{grid-template-columns:1fr}.scan-primary,.gallery-button{cursor:pointer;border:0;border-radius:16px;justify-content:center;align-items:center;gap:8px;min-height:50px;font-size:13px;font-weight:900;transition:transform .18s,box-shadow .18s,opacity .18s;display:flex}.scan-primary{color:#fff;background:linear-gradient(135deg,#17b8be,#087f9c);box-shadow:0 12px 25px #04859d38}.scan-primary input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.scan-primary span{font-size:18px}.gallery-button{color:#167187;background:#dff3f1}.scan-primary:hover,.gallery-button:hover{transform:translateY(-2px)}.scan-primary.is-disabled,.gallery-button:disabled{cursor:not-allowed;opacity:.42;box-shadow:none;transform:none}.scan-primary.is-busy{background:linear-gradient(110deg,#0f99a7,#22c5b8,#0f99a7) 0 0/200% 100%;animation:1.4s linear infinite busySweep}.scanner-notice{color:#5d8c9e;background:#e4f7f4b8;border-radius:16px;align-items:center;gap:11px;min-height:54px;margin-top:12px;padding:9px 12px;display:flex}.scanner-notice>span{color:#0ab1b3;background:#fff;border-radius:50%;flex:none;place-items:center;width:34px;height:34px;display:grid}.scanner-notice img{object-fit:contain;filter:drop-shadow(0 4px 3px #04596c1a);width:42px;height:42px}.scanner-notice strong{color:#17677a;margin-bottom:2px;font-size:11px;display:block}.scanner-notice p{margin:0;font-size:11px;font-weight:650;line-height:1.45}.scanner-notice.has-result{background:#daf9e7c7}.privacy-note{color:#83a8b2;text-align:center;margin-top:9px;font-size:9px;font-weight:650;display:block}.visually-hidden{clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.admin-shell{color:#183d4b;background:#eef6f4;min-height:100vh}.admin-topbar{background:#ffffffeb;border-bottom:1px solid #d9e8e4;justify-content:space-between;align-items:center;gap:20px;min-height:86px;padding:10px clamp(20px,5vw,72px);display:flex}.admin-brand{align-items:center;gap:13px;display:flex}.admin-brand img{object-fit:contain;border-radius:17px;width:64px;height:64px}.admin-brand span{color:#286475;letter-spacing:.18em;font-size:12px;font-weight:950}.admin-topbar nav{gap:8px;display:flex}.admin-topbar a{color:#3c6c79;background:#e9f3f1;border-radius:12px;padding:10px 14px;font-size:12px;font-weight:850;text-decoration:none}.admin-content{width:min(1180px,100% - 40px);margin:0 auto;padding:48px 0 72px}.admin-title-row{justify-content:space-between;align-items:flex-end;gap:30px;display:flex}.admin-title-row>div:first-child>span{color:#0897a4;letter-spacing:.2em;font-size:10px;font-weight:950}.admin-title-row h1{letter-spacing:-.06em;margin:8px 0 6px;font-size:clamp(30px,5vw,48px)}.admin-title-row p{color:#6e8c95;margin:0;font-size:14px}.admin-summary-group{gap:10px;display:flex}.admin-summary{color:#fff;text-align:right;background:linear-gradient(135deg,#0faab3,#087b99);border-radius:20px;min-width:170px;padding:17px 20px;box-shadow:0 14px 28px #097d9729}.admin-summary.is-fish{background:linear-gradient(135deg,#7565bd,#527aa9)}.admin-summary strong{font-size:32px;line-height:1;display:block}.admin-summary span{opacity:.84;margin-top:5px;font-size:10px;font-weight:800;display:block}.admin-status{color:#54747e;background:#fff;border:1px solid #dcebe7;border-radius:14px;align-items:center;gap:8px;margin:28px 0 20px;padding:13px 16px;font-size:12px;font-weight:700;display:flex}.admin-status i{background:#1cc596;border-radius:50%;width:8px;height:8px}.admin-status small{color:#8ba2a8;margin-left:auto}.admin-section-heading{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:16px;display:flex}.admin-section-heading span{color:#0897a4;letter-spacing:.19em;font-size:9px;font-weight:950}.admin-section-heading h2{color:#174d5c;letter-spacing:-.045em;margin:6px 0 4px;font-size:24px}.admin-section-heading p{color:#78959d;margin:0;font-size:12px}.announcement-admin{margin-top:30px}.announcement-form{background:#fff;border:1px solid #dcebe7;border-radius:23px;margin-bottom:18px;padding:21px;box-shadow:0 12px 30px #244d540f}.announcement-form-heading{justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:15px;display:flex}.announcement-form-heading strong{color:#174d5c;font-size:17px}.announcement-form-heading span{color:#8aa2a8;font-size:10px}.announcement-form-grid{grid-template-columns:1fr 1fr;gap:13px;display:grid}.announcement-form-grid label{color:#4d727c;gap:6px;font-size:10px;font-weight:850;display:grid}.announcement-form-grid label small{color:#8da5aa;font-size:9px}.announcement-form-grid .is-wide{grid-column:1/-1}.announcement-form-grid input:not([type=checkbox]),.announcement-form-grid select{color:#245360;background:#f8fbfa;border:1px solid #d8e8e4;border-radius:12px;width:100%;height:44px;padding:0 12px;font-size:12px}.announcement-form-grid input:focus,.announcement-form-grid select:focus{background:#fff;border-color:#20aab3;outline:3px solid #20aab31a}.announcement-active-check{grid-column:1/-1;grid-auto-flow:column;justify-content:start;align-items:center;gap:8px!important;display:flex!important}.announcement-active-check input{accent-color:#0796a3;width:18px;height:18px}.announcement-form-actions{justify-content:flex-end;gap:8px;margin-top:17px;display:flex}.announcement-form-actions button,.announcement-card-actions button{color:#4b7480;cursor:pointer;background:#eaf3f1;border:0;border-radius:11px;min-height:38px;padding:0 14px;font-size:10px;font-weight:900}.announcement-form-actions .is-primary{color:#fff;background:linear-gradient(135deg,#0ba9b2,#087f9b);min-width:110px}.announcement-form-actions button:disabled,.announcement-card-actions button:disabled{cursor:wait;opacity:.5}.announcement-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;display:grid}.announcement-admin-card{background:#fff;border:1px solid #dceae7;border-radius:19px;min-width:0;padding:17px;box-shadow:0 10px 24px #244d540d}.announcement-card-meta{align-items:center;gap:7px;margin-bottom:10px;display:flex}.announcement-card-meta small{color:#8aa2a8;margin-left:auto;font-size:9px;font-weight:750}.announcement-kind,.announcement-status{border-radius:8px;padding:5px 8px;font-size:9px;font-weight:950}.announcement-kind{color:#087e91;background:#dcf3f1}.announcement-kind.kind-maintenance{color:#b75d38;background:#fff0e8}.announcement-kind.kind-product{color:#7255ad;background:#f0ebfb}.announcement-status{color:#738f96;background:#edf3f1}.announcement-status.is-live{color:#167d5b;background:#ddf5e9}.announcement-status.is-scheduled{color:#8b6a1e;background:#fff3d2}.announcement-status.is-ended,.announcement-status.is-hidden{color:#8d7e82;background:#f2edef}.announcement-admin-card>strong{color:#174d5c;font-size:14px;line-height:1.5;display:block}.announcement-admin-card>p{color:#819ba2;margin:8px 0 0;font-size:10px}.announcement-admin-card>a{color:#078fa0;margin-top:8px;font-size:10px;font-weight:800;display:inline-block}.announcement-card-actions{gap:6px;margin-top:14px;display:flex}.announcement-card-actions button{flex:1;min-width:0;padding:0 8px}.announcement-card-actions .is-danger{color:#b43b3c;background:#fff0ef}.character-admin{margin-top:44px}.admin-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.admin-card{background:#fff;border:1px solid #dceae7;border-radius:21px;grid-template-columns:92px 1fr;gap:14px;padding:15px;display:grid;box-shadow:0 12px 28px #244d540f}.admin-preview{background:linear-gradient(160deg,#d8f4f1,#eaf8f4);border-radius:16px;grid-row:span 2;place-items:center;min-height:106px;display:grid}.admin-preview img{object-fit:contain;max-width:82px;max-height:92px}.admin-card-copy{align-self:center;min-width:0}.admin-card-copy span,.admin-card-copy small{color:#7b999f;font-size:10px;font-weight:750;display:block}.admin-card-copy strong{color:#184b5a;text-overflow:ellipsis;white-space:nowrap;margin:4px 0 7px;font-size:16px;display:block;overflow:hidden}.admin-card button{color:#b43b3c;cursor:pointer;background:#fff0ef;border:0;border-radius:11px;grid-column:2;min-height:36px;font-size:11px;font-weight:900}.admin-card button:hover{color:#fff;background:#d95050}.admin-card button:disabled{cursor:wait;opacity:.55}.admin-empty{color:#7b969b;text-align:center;background:#fff9;border:1px dashed #c9dfda;border-radius:22px;padding:52px 20px}.admin-gate{background:linear-gradient(145deg,#d7f4ef,#eef8f5);place-items:center;min-height:100vh;padding:24px;display:grid}.admin-gate section{text-align:center;background:#fff;border-radius:28px;width:min(460px,100%);padding:38px;box-shadow:0 25px 70px #1e4e5424}.admin-gate img{object-fit:contain;width:112px;height:112px}.admin-gate section>span{color:#0796a3;letter-spacing:.2em;margin-top:12px;font-size:10px;font-weight:950;display:block}.admin-gate h1{letter-spacing:-.04em;margin:10px 0 8px;font-size:26px}.admin-gate p{color:#718e96;font-size:13px;line-height:1.6}.admin-gate div{justify-content:center;gap:8px;margin-top:20px;display:flex}.admin-gate a{color:#fff;background:#078e9f;border-radius:12px;padding:11px 15px;font-size:12px;font-weight:850;text-decoration:none}.admin-gate a+a{color:#47737f;background:#e8f3f1}@keyframes livePulse{50%{opacity:.42;transform:scale(.78)}}@keyframes waterDust{to{background-position:86px -94px}}@keyframes bubbleRise{0%{opacity:0;transform:translateY(60px)scale(.7)}15%,75%{opacity:.7}to{opacity:0;transform:translateY(-70vh)scale(1.15)}}@keyframes bubbleStream{0%{opacity:0;transform:translate(0)scale(.65)}12%{opacity:.8}48%{transform:translate(18px,-30vh)scale(1)}82%{opacity:.66}to{opacity:0;transform:translate(-10px,-58vh)scale(1.22)}}@keyframes causticDrift{0%{opacity:.1;transform:translate(-26px)rotate(7deg)scaleX(.8)}to{opacity:.28;transform:translate(35px)rotate(14deg)scaleX(1.18)}}@keyframes coralSway{0%{transform:rotate(-2.5deg)}to{transform:rotate(3.2deg)}}@keyframes seaweedSway{0%{transform:rotate(-14deg)skew(-2deg)}to{transform:rotate(10deg)skew(3deg)}}@keyframes characterBob{to{transform:translateY(-9px)rotate(.8deg)}}@keyframes traverseOcean{0%{transform:translateX(calc(0px - var(--character-size) - 24px))}to{transform:translate(calc(100vw + 24px))}}@keyframes faceRightCycle{0%,49.99%{transform:scaleX(-1)}50%,99.99%{transform:scaleX(1)}to{transform:scaleX(-1)}}@keyframes faceLeftCycle{0%,49.99%{transform:scaleX(1)}50%,99.99%{transform:scaleX(-1)}to{transform:scaleX(1)}}@keyframes fairyFlutter{0%,to{transform:translateY(8px)rotate(-3deg)}35%{transform:translateY(-24px)rotate(4deg)}68%{transform:translateY(-5px)rotate(-1deg)}}@keyframes octopusPulse{0%,to{transform:translateY(10px)scale(1)}45%{transform:translateY(-16px)scale(.94,1.06)}62%{transform:translateY(-8px)scale(1.04,.97)}}@keyframes penguinDart{0%,to{transform:translateY(12px)rotate(5deg)}48%{transform:translateY(-27px)rotate(-7deg)}}@keyframes walrusGlide{0%,to{transform:translateY(5px)rotate(-1deg)}50%{transform:translateY(-7px)rotate(1deg)}}@keyframes whaleCruise{0%,to{transform:translateY(16px)rotate(2deg)}42%{transform:translateY(-25px)rotate(-2deg)}72%{transform:translateY(-8px)rotate(1deg)}}@keyframes turtlePaddle{0%,to{transform:translateY(9px)rotate(-3deg)}50%{transform:translateY(-17px)rotate(3deg)}}@keyframes crabScuttle{0%{transform:translateY(0)rotate(-1deg)}to{transform:translateY(-4px)rotate(1deg)}}@keyframes sharkHunt{0%,to{transform:translateY(14px)rotate(3deg)}38%{transform:translateY(-20px)rotate(-4deg)}70%{transform:translateY(-7px)rotate(1deg)}}@keyframes starfishDrift{0%,to{transform:translateY(17px)rotate(-8deg)}50%{transform:translateY(-22px)rotate(10deg)}}@keyframes seahorseRise{0%,to{transform:translateY(22px)rotate(-4deg)}52%{transform:translateY(-31px)rotate(4deg)}}@keyframes pufferPuff{0%,to{transform:translateY(8px)scale(.96)}48%{transform:translateY(-18px)scale(1.06)}}@keyframes narwhalArc{0%,to{transform:translateY(18px)rotate(3deg)}50%{transform:translateY(-28px)rotate(-3deg)}}@keyframes scannerReveal{0%{opacity:0;transform:translateY(18px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes emptyFloat{to{opacity:.62;transform:translateY(-12px)scale(.92)}}@keyframes busySweep{to{background-position:-200% 0}}@keyframes announcementEnter{0%{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}@media (max-width:920px){.hero-copy{max-width:410px;top:118px;left:22px}.scanner-card{bottom:16px;right:16px}.admin-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-summary-group{width:100%}.admin-summary{flex:1}}@media (max-width:640px){.topbar{border-radius:20px;min-height:66px;padding:6px 9px;top:10px;left:10px;right:10px}.brand-logo{border-radius:15px;width:54px;height:54px}.top-actions{gap:6px}.live-badge,.friend-count,.view-mode-toggle{min-height:34px;padding:0 10px;font-size:9px}.friend-count{display:none}.view-mode-toggle{gap:6px}.view-mode-toggle i{transform:rotate(45deg)scale(.82)}.view-mode-toggle.is-active i{transform:scale(.82)}.announcement-bar{border-radius:14px;gap:7px;width:calc(100% - 20px);min-height:41px;padding:6px 9px 6px 6px;top:84px}.announcement-bar-kind{min-width:43px;padding:6px 7px;font-size:8px}.announcement-bar-message a,.announcement-bar-message>span{font-size:10px}.announcement-bar>small{font-size:8px}.ocean-stage{background-position:bottom;min-height:100svh}.hero-copy{border-radius:17px;max-width:none;padding:12px 15px 13px;top:88px;left:12px;right:12px}.ocean-app.has-announcements .hero-copy{top:136px}.hero-copy h1{font-size:23px}.hero-copy span{margin-top:6px;font-size:11px}.scanner-card{border-radius:22px;width:auto;padding:16px;bottom:10px;left:10px;right:10px}.scanner-heading h2{font-size:17px}.scanner-heading p{display:none}.step-chip{min-width:56px;height:34px;font-size:10px}.speech-field{margin-top:13px}.speech-field input{height:46px}.scan-actions{grid-template-columns:1.3fr .8fr}.scan-primary,.gallery-button{min-height:46px;font-size:12px}.scanner-notice{min-height:48px;margin-top:9px}.privacy-note{margin-top:7px}.ocean-character{width:min(var(--character-size), 125px);bottom:calc(24% + var(--character-depth))}.character-speech{font-size:10px}.empty-ocean{top:42%}.motion-coral{transform-origin:50% 100%;width:94px;height:126px;transform:scale(.72)}.motion-coral-left{left:-5px}.motion-coral-right{right:-5px;transform:scaleX(-1)scale(.72)}.motion-seaweed{transform-origin:50% 100%;transform:scale(.72)}.motion-seaweed-left{left:-22px}.motion-seaweed-right{right:-22px;transform:scaleX(-1)scale(.72)}.admin-topbar{min-height:72px;padding:8px 14px}.admin-brand img{width:52px;height:52px}.admin-brand span{display:none}.admin-topbar a{padding:9px 10px;font-size:10px}.admin-content{width:min(100% - 24px,1180px);padding:28px 0 54px}.admin-title-row{flex-direction:column;align-items:flex-start}.admin-summary{text-align:left;width:100%;min-width:0;padding:14px 16px}.admin-summary strong{font-size:26px}.announcement-form{padding:16px}.announcement-form-heading{flex-direction:column;align-items:flex-start;gap:4px}.announcement-form-grid{grid-template-columns:1fr}.announcement-form-grid .is-wide,.announcement-active-check{grid-column:auto}.announcement-list,.admin-grid{grid-template-columns:1fr}.admin-status{flex-wrap:wrap;align-items:flex-start}.admin-status small{width:100%;margin-left:16px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.surface-caustics i,.motion-coral,.motion-seaweed i{animation-duration:12s}.character-rig{animation-duration:9s}}
