:root{--night:#141b3a;--snow:#eef2fb;--amber:#ffb547;--pink:#ff4d8d;--paper:#eef2fbf2;--lift:0 10px 30px #07070f61;--glide:cubic-bezier(.2, .8, .2, 1);--dock-bottom:max(16px, env(safe-area-inset-bottom));--led-panel:#07080deb;--taxi:#ffd21f;--led-edge:#ffd21f80;--led-off:#ffffff29;--sign:"Black Han Sans", "Malgun Gothic", sans-serif;--body:"Gowun Dodum", "Malgun Gothic", sans-serif;--led:"Doto", var(--body)}*{box-sizing:border-box}html,body{background:var(--night);height:100%;color:var(--snow);font:16px/1.6 var(--body);margin:0;overflow:hidden}#scene{touch-action:none;cursor:grab;width:100%;height:100%;display:block;position:fixed;inset:0}#scene:active{cursor:grabbing}:focus-visible{outline:3px solid var(--amber);outline-offset:3px}[hidden]{display:none!important}.translating body{visibility:hidden}#wish,#busk,#vendor,#tree-wishes,#closet,#phrases,#book,#actions,#settings-panel{z-index:1;transition:opacity .24s ease, translate .28s var(--glide), display .28s allow-discrete}#wish[hidden],#busk[hidden],#vendor[hidden],#tree-wishes[hidden],#closet[hidden],#phrases[hidden],#book[hidden],#actions[hidden],#settings-panel[hidden]{opacity:0;translate:0 10px}@starting-style{#wish,#busk,#vendor,#tree-wishes,#closet,#phrases,#book,#actions,#settings-panel{opacity:0;translate:0 10px}}#status{top:max(16px, env(safe-area-inset-top));pointer-events:none;flex-direction:column;align-items:flex-start;gap:6px;display:flex;position:fixed;left:16px}#timer{border:1px solid var(--led-edge);background:var(--led-panel);color:var(--taxi);font:900 clamp(18px, 7vw - 4px, 30px)/1.2 var(--led);font-variant-numeric:tabular-nums;text-shadow:0 0 8px #ffd21f8c;border-radius:6px;margin:0;padding:4px 12px}#online,#wishes{border:1px solid var(--led-edge);background:var(--led-panel);color:var(--snow);font:15px/1.2 var(--body);border-radius:6px;margin:0;padding:3px 10px}body.watching :is(#online,#wishes,#settings,#watch,#settings-panel,#actions,#busk,#pick-song,#vendor,#tree-wishes,#wish){display:none!important}#watch{top:calc(max(16px, env(safe-area-inset-top)) + 52px);border:1px solid var(--led-edge);background:var(--led-panel);width:44px;height:44px;color:var(--taxi);cursor:pointer;border-radius:6px;padding:9px;transition:border-color .2s;position:fixed;right:16px}#watch:hover{border-color:var(--taxi)}#watch svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:100%;height:100%;display:block}#settings{top:max(16px, env(safe-area-inset-top));border:1px solid var(--led-edge);background:var(--led-panel);width:44px;height:44px;color:var(--taxi);cursor:pointer;border-radius:6px;padding:9px;transition:border-color .2s;position:fixed;right:16px}#settings:hover,#settings[aria-expanded=true]{border-color:var(--taxi)}#settings[aria-expanded=true]~#watch{visibility:hidden}#settings svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:100%;height:100%;display:block}#settings-panel{z-index:1;top:calc(max(16px, env(safe-area-inset-top)) + 54px);background:var(--led-panel);width:min(272px,100% - 32px);max-height:calc(100dvh - 86px);color:var(--snow);border:1px solid var(--led-edge);box-shadow:var(--lift), 0 0 14px #ffd21f2e;border-radius:8px;padding:12px 14px 14px;position:fixed;right:16px;overflow-y:auto}#settings-panel legend,#settings-panel>label{color:var(--taxi);font:900 18px/1.3 var(--led);letter-spacing:.08em;padding:0;display:block}.song-list{border:0;min-width:0;margin:0 0 10px;padding:0}.song-list label{cursor:pointer;display:block;position:relative}.song-list input{opacity:0;pointer-events:none;position:absolute}.song-list span{border-left:3px solid #0000;align-items:center;min-height:44px;padding:4px 10px;font-size:15px;line-height:1.3;transition:background .15s;display:flex}.song-list label:hover span{background:#ffffff14}.song-list input:checked+span{border-left-color:var(--taxi);color:var(--taxi);background:#ffd21f1a}.song-list input:focus-visible+span{outline:3px solid var(--amber);outline-offset:-3px}#about{color:#ffffffb8;overflow-wrap:anywhere;margin:12px 0 0;font-size:13px;line-height:1.5}#about a{color:inherit}@media (width<=719px){:root{--dock-bottom:calc(max(4px, env(safe-area-inset-bottom)) + 20px)}#legal br{display:none}#intro:not(.gone)+#legal br{display:inline}}#legal{left:12px;right:12px;bottom:max(4px, env(safe-area-inset-bottom));font:11px/1.4 var(--body);color:#ffffffc7;text-align:center;text-shadow:0 1px 3px #000000e6;pointer-events:none;position:fixed}@media (width<=360px){#legal{font-size:9.6px}}#intro:not(.gone)+#legal{left:auto;bottom:max(16px, env(safe-area-inset-bottom));text-align:right;max-width:calc(100% - 250px)}@media (width>=720px){#legal,#intro:not(.gone)+#legal{left:auto;bottom:max(12px, env(safe-area-inset-bottom));text-align:right;color:#ffffffe6;max-width:none;font-size:15px}}#volume{--level:60%;--cells:repeating-linear-gradient(to right, #000 0 9px, transparent 9px 12px);appearance:none;cursor:pointer;background:linear-gradient(to right, var(--taxi) var(--level), var(--led-off) 0) center / 100% 14px no-repeat;width:100%;height:44px;-webkit-mask:var(--cells);mask:var(--cells);margin:0;display:block}#volume:focus-visible{background-image:linear-gradient(to right, var(--snow) var(--level), var(--led-off) 0);outline:0}#volume::-webkit-slider-thumb{appearance:none;width:28px;height:44px}#volume::-moz-range-thumb{background:0 0;border:0;width:28px;height:44px}#volume::-moz-range-track{background:0 0}#mute{border:1px solid var(--led-edge);width:100%;min-height:44px;color:var(--snow);font:inherit;cursor:pointer;background:0 0;border-radius:6px;transition:border-color .2s}#mute:hover{border-color:var(--taxi)}#wish{left:50%;bottom:calc(var(--dock-bottom) + 84px);background:var(--led-panel);width:min(440px,100% - 32px);color:var(--snow);border:1px solid var(--led-edge);box-shadow:var(--lift), 0 0 14px #ffd21f2e;border-radius:8px;padding:14px 16px 12px;position:fixed;transform:translate(-50%)}#wish label{color:var(--taxi);font-size:15px;line-height:1.3}#wish .row{gap:8px;margin:6px 0;display:flex}#wish input{border:1px solid var(--led-off);min-width:0;min-height:44px;color:inherit;font:16px var(--body);background:#ffffff0f;border-radius:6px;flex:1;padding:0 12px}#wish input::placeholder{color:#ffffff8c}#wish button{background:var(--taxi);color:#07080d;min-height:44px;font:16px var(--body);cursor:pointer;border:0;border-radius:6px;padding:0 18px;transition:filter .2s}#wish button:hover{filter:brightness(1.06)}#wish #wish-send{border:1px solid var(--led-edge);width:100%;color:var(--snow);background:0 0;margin-bottom:6px}#wish small{color:#ffffffb8;font-size:12.5px;line-height:1.4;display:block}.floating-wish{background:var(--paper);max-width:calc(100% - 32px);color:var(--night);font:18px var(--body);pointer-events:none;border-radius:14px;padding:6px 14px;animation:2.6s ease-in forwards rise;position:fixed;bottom:150px;left:50%}@keyframes rise{0%{opacity:1;transform:translate(-50%)rotate(-2deg)}to{opacity:0;transform:translate(-50%,-46vh)rotate(5deg)scale(.5)}}#count{text-align:center;pointer-events:none;font:clamp(72px, 16vw, 160px)/1 var(--sign);color:var(--amber);text-shadow:0 0 28px #ff4d8dbf;font-variant-numeric:tabular-nums;margin:0;position:fixed;top:34vh;left:0;right:0}#toast{background:var(--led-panel);max-width:calc(100% - 32px);color:var(--snow);border:1px solid var(--led-edge);pointer-events:none;animation:toast-in .24s var(--glide);border-radius:6px;margin:0;padding:7px 16px;position:fixed;top:64px;left:50%;transform:translate(-50%)}#toast:empty{display:none}@keyframes toast-in{0%{opacity:0;translate:0 -8px}}#pick-song{left:50%;bottom:calc(var(--dock-bottom) + 84px);background:var(--taxi);color:#07080d;min-height:44px;font:16px var(--body);cursor:pointer;box-shadow:var(--lift);border:0;border-radius:6px;padding:0 20px;transition:filter .2s,scale .15s;position:fixed;transform:translate(-50%)}#pick-song:hover{filter:brightness(1.08)}#pick-song:active{scale:.97}#busk,#vendor,#tree-wishes{left:50%;bottom:calc(var(--dock-bottom) + 84px);background:var(--led-panel);width:min(440px,100% - 32px);max-height:calc(100dvh - 116px);color:var(--snow);border:1px solid var(--led-edge);box-shadow:var(--lift), 0 0 14px #ffd21f2e;border-radius:8px;gap:6px;padding:12px 14px;display:grid;position:fixed;overflow-y:auto;transform:translate(-50%)}#busk .panel-close,.panel-close{width:44px;height:44px;color:var(--snow);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:0;font-size:24px;line-height:1;position:absolute;top:2px;right:2px}#busk .panel-close:hover,.panel-close:hover{background:#ffffff1f}#busk p{color:#ffffffb8;margin:0;font-size:13px;line-height:1.4}#busk p:first-of-type,#vendor-title,#tree-wishes p{color:var(--taxi)}#busk .song-list{grid-template-columns:1fr 1fr;gap:2px 6px;margin:0;display:grid}#busk button:not(.panel-close){background:var(--taxi);color:#07080d;width:100%;min-height:44px;font:15px var(--body);cursor:pointer;border:0;border-radius:6px;transition:filter .2s,scale .15s}#busk button:not(.panel-close):hover{filter:brightness(1.08)}#busk button:not(.panel-close):active{scale:.98}#tree-wishes p{margin:0;font-size:13px;line-height:1.4}#tree-wishes ul{max-height:min(30vh,220px);margin:0;padding:0;list-style:none;overflow-y:auto}#tree-wishes li{overflow-wrap:anywhere;justify-content:space-between;align-items:baseline;gap:12px;padding:7px 0;font-size:16px;line-height:1.4;display:flex}#tree-wishes li+li{border-top:1px solid var(--led-off)}#tree-wishes small{color:#ffffffb8;flex:none;font-size:12.5px;line-height:1.4}#vendor p{margin:0;font-size:13px;line-height:1.4}#vendor strong{font:17px/1.3 var(--body);margin-bottom:2px;display:block}#vendor-menu{grid-template-columns:repeat(auto-fit,minmax(72px,1fr));gap:6px;display:grid}#vendor-menu button{word-break:keep-all;border:1px solid var(--led-edge);width:100%;min-height:48px;color:var(--snow);font:13px var(--body);cursor:pointer;background:0 0;border-radius:6px;padding:4px;transition:background .2s,scale .15s}#vendor-menu button:hover{background:#ffd21f2e}#vendor-menu button:active{scale:.98}@media (width>=720px){#busk,#vendor,#tree-wishes{gap:10px;width:620px;padding:18px 22px}#busk p,#vendor p,#tree-wishes p{font-size:16px}#busk .song-list span{font-size:17px}#vendor strong{font-size:22px}#vendor-menu{gap:10px}#vendor-menu button,#busk button:not(.panel-close){min-height:58px;font-size:18px}#tree-wishes li{font-size:19px}#tree-wishes small{font-size:15px}.panel-close,#busk .panel-close{font-size:28px;top:8px;right:8px}}#actions{left:50%;bottom:var(--dock-bottom);z-index:1;background:var(--led-panel);border:1px solid var(--led-edge);box-shadow:var(--lift);border-radius:8px;gap:2px;padding:6px;display:flex;position:fixed;transform:translate(-50%)}#actions>button{width:60px;min-height:52px;color:var(--taxi);cursor:pointer;background:0 0;border:0;border-radius:6px;flex-direction:column;justify-content:center;align-items:center;padding:0;transition:background .2s,scale .15s;display:flex;position:relative}#actions>button:hover,#actions>button[aria-expanded=true]{background:#ffd21f2e}#actions>button:active{scale:.94}#actions>.nudge{background:#ffd21f2e}#actions>.nudge:after{content:"";border-radius:inherit;border:2px solid var(--taxi);pointer-events:none;animation:1.8s ease-out infinite nudge;position:absolute;inset:0}@keyframes nudge{0%{opacity:.9;transform:scale(1)}to{opacity:0;transform:scale(1.35)}}#actions>.nudge span{opacity:1}#actions svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:26px;height:26px}#actions>button span{border:1px solid var(--led-edge);background:var(--led-panel);color:var(--snow);font:13px/1.3 var(--body);white-space:nowrap;pointer-events:none;opacity:0;border-radius:6px;padding:4px 10px;transition:opacity .18s;position:absolute;bottom:calc(100% + 14px);left:50%;transform:translate(-50%)}#actions>button:hover span,#actions>button:focus-visible span{opacity:1}@media (hover:none){#actions>button span{color:var(--snow);opacity:1;background:0 0;border:0;padding:0;font-size:11px;position:static;transform:none}#actions svg{width:22px;height:22px}}@media (width<=420px){#actions>button{width:53px}}@media (width<=370px){#actions>button{width:46px}#actions>button span{letter-spacing:-.03em;white-space:nowrap;font-size:10px}}#closet{background:var(--led-panel);width:min(276px,100vw - 32px);color:var(--snow);border:1px solid var(--led-edge);box-shadow:var(--lift), 0 0 14px #ffd21f2e;border-radius:8px;padding:12px 14px;position:absolute;bottom:calc(100% + 14px);left:50%;transform:translate(-50%)}#closet p{margin:0 0 2px;font-size:14px;line-height:1.5}#closet .name-row{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}#closet .name-row strong{font:16px/1.3 var(--body)}#closet .name-row button{border:1px solid var(--led-edge);min-height:44px;color:inherit;font:14px var(--body);cursor:pointer;background:0 0;border-radius:6px;flex:none;padding:0 12px}#closet .swatches{flex-wrap:wrap;gap:4px;margin-bottom:6px;display:flex}#closet .swatches button{width:44px;height:44px;box-shadow:0 0 0 1px var(--led-off);cursor:pointer;border:3px solid #07080d;border-radius:50%;padding:0;transition:box-shadow .2s,scale .15s}#closet .swatches button:active{scale:.92}#closet .swatches button[aria-pressed=true]{box-shadow:0 0 0 3px var(--taxi)}#closet .swatches button:disabled{opacity:.3;cursor:not-allowed}#phrases{background:var(--led-panel);width:min(276px,100vw - 32px);color:var(--snow);border:1px solid var(--led-edge);box-shadow:var(--lift), 0 0 14px #ffd21f2e;border-radius:8px;flex-direction:column;gap:2px;padding:8px;display:flex;position:absolute;bottom:calc(100% + 14px);left:50%;transform:translate(-50%)}#phrases[hidden]{display:none}#phrases button{min-height:44px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:8px 12px;font-size:15px}#phrases button:hover{background:#ffd21f2e}#phrases button:active{scale:.97}#book{background:var(--led-panel);width:min(420px,100vw - 32px);max-height:calc(100dvh - 120px);color:var(--snow);border:1px solid var(--led-edge);box-shadow:var(--lift), 0 0 14px #ffd21f2e;border-radius:8px;padding:14px;position:absolute;bottom:calc(100% + 14px);left:50%;overflow-y:auto;transform:translate(-50%)}#book p{margin:0;font-size:14px;line-height:1.5}#book p strong{color:var(--taxi);font-size:17px}#book-stamps{grid-template-columns:repeat(3,1fr);gap:6px;margin:10px 0;padding:0;list-style:none;display:grid}#book-stamps li{border:2px dashed var(--led-off);text-align:center;border-radius:6px;flex-direction:column;justify-content:center;gap:2px;min-height:64px;padding:6px;display:flex}#book-stamps strong{font-size:14px;line-height:1.25}#book-stamps small{color:#ffffffb8;word-break:keep-all;font-size:12px;line-height:1.25}#book-stamps .earned{border:2px solid var(--taxi);color:var(--taxi);background:#ffd21f24}#book-stamps .earned small{color:var(--snow)}#book>small{color:#ffffffb8;font-size:12px;line-height:1.4;display:block}#photo{background:var(--led-panel);width:min(440px,100% - 32px);color:var(--snow);border:1px solid var(--led-edge);box-shadow:var(--lift), 0 0 14px #ffd21f2e;border-radius:8px;padding:12px}#photo[open]{max-height:calc(100dvh - 24px);animation:photo-in .28s var(--glide);flex-direction:column;display:flex;overflow:hidden}@keyframes photo-in{0%{opacity:0;scale:.97}}#photo::backdrop{background:#07070fb8}#photo img{object-fit:contain;border-radius:4px;flex:0 auto;width:100%;min-height:0;display:block}#photo-hint{color:#ffffffb8;text-align:center;margin-top:8px;font-size:13px;line-height:1.4;display:none}@media (pointer:coarse){#photo-hint{display:block}}#photo .row{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}#photo a,#photo button{border:1px solid var(--led-edge);white-space:nowrap;min-height:44px;color:var(--snow);font:16px var(--body);cursor:pointer;background:0 0;border-radius:6px;flex:1;justify-content:center;align-items:center;text-decoration:none;transition:background .2s;display:flex}#photo a:hover,#photo button:hover{background:#ffd21f2e}#photo a{background:var(--taxi);color:#07080d;border:0}#photo a:hover{background:var(--taxi);filter:brightness(1.08)}#intro{background:linear-gradient(#07080d26 10%,#07080df5 45%);flex-direction:column;justify-content:flex-end;align-items:flex-start;padding:16px clamp(16px,6vw,72px) clamp(24px,8vh,72px);transition:opacity .9s;display:flex;position:fixed;inset:0}#intro.gone{opacity:0;pointer-events:none}#lang{top:calc(max(16px, env(safe-area-inset-top)) + 52px);background:var(--led-panel);border:1px solid var(--led-edge);border-radius:8px;gap:2px;padding:3px;display:flex;position:absolute;right:16px}:lang(en) #intro h1{font-size:clamp(44px,min(13vw,9vh),110px)}@media (height<=480px){:lang(en) #intro-about{display:none}}#intro #lang button{min-width:44px;min-height:44px;color:var(--snow);font:14px var(--body);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:0 10px}#intro #lang button:hover{background:#ffd21f2e}#intro #lang button[aria-pressed=true]{background:var(--taxi);color:#07080d}@media (width>=720px){#intro #lang button{min-height:52px;padding:0 18px;font-size:18px}}#intro h1{font:clamp(56px, min(18vw, 12vh), 130px)/.95 var(--sign);color:var(--taxi);text-shadow:0 0 28px #ff4d8dbf;margin:0 0 12px}#intro p{margin:0 0 20px;font-size:clamp(17px,2.4vw,21px)}#intro #intro-about{word-break:keep-all;max-width:560px;font-size:clamp(15px,2vw,18px);line-height:1.6}#intro button{background:var(--taxi);color:#07080d;min-height:52px;font:20px var(--body);cursor:pointer;box-shadow:var(--lift);border:0;border-radius:6px;padding:0 30px;transition:filter .2s,scale .15s,opacity .3s}#intro button:hover{filter:brightness(1.06)}#intro button:active{scale:.97}#intro button:disabled{background:var(--snow);opacity:.75;cursor:progress;scale:1}#subway-fade{z-index:2;opacity:0;pointer-events:none;background:#05060c;transition:opacity .28s;position:fixed;inset:0}#subway-fade.dark{opacity:1}.press{border:3px solid var(--amber);pointer-events:none;border-radius:50%;width:44px;height:44px;margin:-22px 0 0 -22px;position:fixed;box-shadow:0 0 12px #ffb547cc}@media (height<=720px){#intro{padding-bottom:16px}#intro h1{margin-bottom:8px}#intro p{margin-bottom:12px}}@media (width>=900px){#intro{background:linear-gradient(90deg,#07080df5 38%,#07080d1a 70%)}}#intro.error h1{font-size:clamp(40px,8vw,72px)}@media (prefers-reduced-motion:reduce){*,:before{transition-duration:.01ms!important}#toast,#photo[open]{animation:none}#actions>.nudge:after{opacity:1;animation:none}.floating-wish{animation:2.6s forwards fade;transform:translate(-50%)}@keyframes fade{to{opacity:0}}}
