:root{--sand: #f3ead8;--sea-deep: #1f3b4d;--sea: #4aa3b5;--sunset: #f29e6d;--text: #2d3a40;--text-soft: rgba(45, 58, 64, .68);--panel: rgba(255, 252, 245, .82);--panel-solid: #fffcf5;--line: rgba(31, 59, 77, .14);--paper: #fbf5e6;--shadow: 0 6px 24px rgba(31, 59, 77, .16);--radius: 16px;--radius-sm: 12px;--touch: 44px;--gap: 12px;--font: Pretendard, "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;--safe-top: env(safe-area-inset-top, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--edge: 16px}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:var(--sand);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}#scene{position:fixed;inset:0;width:100vw;height:100vh;height:100dvh;display:block;touch-action:none;outline:none}[hidden]{display:none!important}button,input,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--sea);outline-offset:2px}.hud{position:fixed;inset:0;pointer-events:none;z-index:10;font-size:15px}.hud>*{pointer-events:auto}.hud.is-farewell>:not(.farewell){display:none}.hud-top-left,.hud-top-right,.hud-bottom-left,.action-bar{position:absolute}.hud-top-left{top:calc(var(--edge) + var(--safe-top));left:calc(var(--edge) + var(--safe-left));display:flex;align-items:center;gap:8px;flex-wrap:wrap;max-width:calc(100vw - 200px)}.logo{font-weight:700;letter-spacing:-.02em;font-size:17px;color:var(--sea-deep);padding:0 4px}.chip,.icon-btn,.btn,.action-btn,.net-pill,.event-text,.shell-count{background:var(--panel);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--line);box-shadow:var(--shadow)}.chip{min-height:var(--touch);padding:0 14px;border-radius:999px;cursor:pointer;font-size:14px;white-space:nowrap}.net-pill{font-size:13px;padding:6px 12px;border-radius:999px;color:var(--text-soft);animation:breathe 2.4s ease-in-out infinite}.net-pill[data-status=full],.net-pill[data-status=closed]{animation:none;color:var(--text)}.hud-top-right{top:calc(var(--edge) + var(--safe-top));right:calc(var(--edge) + var(--safe-right));display:flex;gap:8px}.icon-btn{width:var(--touch);height:var(--touch);border-radius:50%;display:inline-grid;place-items:center;cursor:pointer;color:var(--sea-deep);padding:0}.icon-btn[aria-pressed=true]{background:var(--sea-deep);color:var(--sand)}.sound-hint{position:absolute;top:calc(var(--touch) + 10px);right:0;white-space:nowrap;font-size:13px;padding:8px 12px;border-radius:var(--radius-sm);background:var(--sea-deep);color:var(--sand);box-shadow:var(--shadow);animation:rise .5s ease-out both}.sound-hint:before{content:"";position:absolute;top:-5px;right:calc(var(--touch) * 2 + 16px + var(--touch) / 2 - 6px);width:10px;height:10px;background:inherit;transform:rotate(45deg)}.hud-bottom-left{left:calc(var(--edge) + var(--safe-left));bottom:calc(var(--edge) + var(--safe-bottom) + var(--touch) + 28px);display:flex;flex-direction:column;align-items:flex-start;gap:6px;pointer-events:none}.event-text,.shell-count{margin:0;font-size:13px;padding:6px 12px;border-radius:999px;color:var(--text-soft)}.event-text:empty{display:none}.shell-count{display:inline-flex;align-items:center;gap:6px}.shell-count svg{width:16px;height:16px;color:var(--sunset)}.action-bar{left:50%;bottom:calc(var(--edge) + var(--safe-bottom));transform:translate(-50%);display:flex;gap:8px}.action-btn{min-height:var(--touch);min-width:var(--touch);padding:8px 14px;border-radius:var(--radius);display:inline-flex;align-items:center;gap:6px;cursor:pointer;color:var(--sea-deep);transition:transform .15s ease,background .2s ease}.action-btn:hover:not(:disabled){transform:translateY(-1px)}.action-btn:active:not(:disabled){transform:translateY(1px)}.action-btn:disabled{opacity:.45;cursor:default}.action-stand{background:var(--sea-deep);color:var(--sand)}.action-label{font-size:14px;white-space:nowrap}.action-key{font-family:inherit;font-size:11px;line-height:1;padding:3px 5px;border-radius:6px;border:1px solid currentColor;opacity:.5}.toast-region{position:absolute;left:50%;bottom:calc(var(--edge) + var(--safe-bottom) + var(--touch) + 24px);transform:translate(-50%);pointer-events:none;width:max-content;max-width:calc(100vw - 32px)}.toast{background:var(--sea-deep);color:var(--sand);padding:10px 16px;border-radius:999px;font-size:14px;text-align:center;box-shadow:var(--shadow);animation:rise .3s ease-out both}.panel-layer{position:absolute;inset:0;display:grid;place-items:center;padding:calc(16px + var(--safe-top)) calc(16px + var(--safe-right)) calc(16px + var(--safe-bottom)) calc(16px + var(--safe-left));background:#1f3b4d2e;z-index:20}.panel{width:min(420px,100%);max-height:100%;overflow:auto;background:var(--panel);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow);padding:18px 20px 20px;animation:rise .25s ease-out both}.panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.panel-head h2{font-size:17px;margin:0;color:var(--sea-deep)}.panel-close{box-shadow:none;background:transparent;border-color:transparent}.panel h3{font-size:14px;margin:16px 0 8px;color:var(--sea-deep)}.hint{margin:0 0 10px;font-size:13px;color:var(--text-soft);line-height:1.5}.credits{margin-top:16px;font-size:12px;color:var(--text-soft);line-height:1.6}.credits summary{min-height:var(--touch);display:flex;align-items:center;cursor:pointer;color:var(--sea-deep);font-size:13px}.credits summary:before{content:"›";display:inline-block;width:14px;transition:transform .2s ease}.credits[open] summary:before{transform:rotate(90deg)}.credits p{margin:0 0 4px}.credits a{color:var(--sea-deep)}.panel-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px;flex-wrap:wrap}.btn{min-height:var(--touch);padding:0 18px;border-radius:999px;cursor:pointer;box-shadow:none;background:var(--panel-solid)}.btn-primary{background:var(--sea-deep);color:var(--sand);border-color:var(--sea-deep)}.composer-form textarea{width:100%;resize:none;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--paper);padding:12px;font-size:16px;line-height:1.6}.composer-meta{display:flex;justify-content:flex-end;margin-top:6px}.counter{font-size:12px;color:var(--text-soft)}.letter-paper{background:var(--paper);background-image:repeating-linear-gradient(to bottom,transparent 0,transparent 31px,rgba(74,163,181,.18) 31px,rgba(74,163,181,.18) 32px);border-radius:6px;padding:20px 22px;min-height:140px;line-height:32px;font-size:16px;white-space:pre-wrap;overflow-wrap:anywhere;box-shadow:inset 0 0 0 1px #2d3a400f,0 2px 8px #1f3b4d14;transform:rotate(-.6deg)}.beach-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}.beach-item{width:100%;min-height:52px;display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:12px;padding:0 16px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--panel-solid);cursor:pointer;text-align:left}.beach-item.is-current{border-color:var(--sea);box-shadow:inset 0 0 0 1px var(--sea)}.beach-item:disabled{opacity:.5;cursor:default}.beach-name{font-weight:600}.beach-count,.beach-status{font-size:13px;color:var(--text-soft)}.is-current .beach-status{color:var(--sea)}.slider-row{display:grid;grid-template-columns:64px 1fr;align-items:center;gap:12px;min-height:var(--touch)}.slider-row input[type=range]{width:100%;accent-color:var(--sea);min-height:var(--touch)}.guide{margin:0;padding-left:18px;font-size:13px;line-height:1.8;color:var(--text-soft)}.farewell{position:absolute;inset:0;display:grid;place-items:center;background:linear-gradient(180deg,var(--sea) 0%,#7fc3cd calc(50% - 102px),#d9eef0 calc(50% - 100px),#2f6c7f calc(50% - 98px),#26536a 60%,var(--sea-deep) 100%);background-color:var(--sea-deep);color:var(--sand);z-index:30;animation:fade-in .8s ease both}.farewell .logo{color:var(--panel-solid)}.farewell .btn-primary{background:var(--sand);color:var(--sea-deep);border-color:var(--sand)}.farewell .btn-primary:focus-visible{outline:2px solid var(--sand);outline-offset:3px}.farewell-inner{text-align:center;display:grid;gap:18px;justify-items:center}.farewell-inner h2{margin:0;font-weight:500;font-size:22px}@media(max-width:599px){:root{--edge: 12px}.hud-top-left{max-width:calc(100vw - 180px)}.action-bar{gap:6px}.action-btn{flex-direction:column;gap:2px;padding:6px 10px;min-width:56px}.action-btn svg{width:20px;height:20px}.action-label{font-size:11px}.action-key{display:none}.panel-layer{place-items:end center}.panel{border-radius:20px 20px 16px 16px}}@keyframes breathe{0%,to{opacity:.35}50%{opacity:1}}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes fade-in{0%{opacity:0}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition:none!important}}
