:root{--ink:#f3ecdf;--soft:#f3ecdf9e;--faint:#f3ecdf66;--glass:#0e101a9e;--line:#ffffff24;--warm:#ffe6bee0}*{box-sizing:border-box}html,body{height:100%;color:var(--ink);-webkit-tap-highlight-color:transparent;background:#04050c;margin:0;font-family:Pretendard,-apple-system,Apple SD Gothic Neo,Malgun Gothic,sans-serif;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer}.hidden{opacity:0!important;pointer-events:none!important}#space,#sky{width:100vw;height:100vh;display:block;position:fixed;inset:0}#landing{transition:opacity 1.4s;position:fixed;inset:0}#landing.fade{opacity:0;pointer-events:none}.intro{text-align:center;padding:0 24px;transition:opacity .9s;position:absolute;top:24vh;left:0;right:0}.intro.leave{opacity:0;pointer-events:none}.intro>*{opacity:0;animation:1.6s forwards rise}.name{letter-spacing:.55em;color:var(--warm);padding-left:.55em;font-size:14px;animation-delay:.4s}.intro h1{margin:28px 0 0;font-size:clamp(24px,5vw,34px);font-weight:400;animation-delay:1s}.lead{color:var(--soft);margin:18px 0 0;font-size:clamp(15px,3.6vw,17px);animation-delay:1.6s}.go{color:#fff6e8;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffeccd1a;border:1px solid #ffeccd66;border-radius:30px;margin-top:42px;padding:14px 32px;font-size:16px;transition:background .3s;animation-delay:2.2s}.go:hover{background:#ffeccd33}.firstVisit{color:var(--faint);margin-top:26px;font-size:12.5px;line-height:1.9;animation-delay:2.6s}.firstVisit label,.row.check{cursor:pointer}input[type=checkbox],input[type=range]{accent-color:#ffd9a0}input[type=checkbox]{vertical-align:-2px}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}#hud>*{transition:opacity 1.6s}#hud.hidden{opacity:1!important}#hud.hidden>*{opacity:0;pointer-events:none}.count{top:max(18px, env(safe-area-inset-top));color:var(--soft);font-size:12.5px;transition:opacity 1s;position:fixed;left:20px}.message{top:max(18px, env(safe-area-inset-top));text-align:center;width:max-content;max-width:80vw;color:var(--ink);opacity:0;pointer-events:none;font-size:14px;transition:opacity 1.2s;position:fixed;left:50%;transform:translate(-50%)}.message.on,#hud.hidden .message.on{opacity:.9}.chip{background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:18px;padding:7px 14px;font-size:13px}.backSeat{right:18px;top:max(14px, env(safe-area-inset-top));transition:opacity .6s;position:fixed}.dock{left:50%;bottom:max(16px, env(safe-area-inset-bottom));background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:22px;gap:4px;max-width:calc(100vw - 16px);padding:5px;display:flex;position:fixed;overflow-x:auto;transform:translate(-50%)}.dock button{color:var(--soft);white-space:nowrap;background:0 0;border:none;border-radius:16px;padding:8px 12px;font-size:13px}.dock button:hover,.dock button.on{color:var(--ink);background:#ffffff14}.sheet{left:50%;bottom:calc(max(16px, env(safe-area-inset-bottom)) + 54px);background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;pointer-events:none;border-radius:18px;flex-direction:column;gap:6px;width:min(320px,100vw - 24px);padding:14px;transition:opacity .35s,transform .35s;display:flex;position:fixed;transform:translate(-50%,8px)}#hud .sheet.open{opacity:1;pointer-events:auto;transform:translate(-50%)}.sheet .title{color:var(--faint);margin:0 2px 4px;font-size:12px}.sheet button{text-align:left;background:#ffffff0d;border:1px solid #0000;border-radius:12px;padding:9px 12px;font-size:13.5px}.sheet button:hover{background:#ffffff17}.sheet button.on{background:#ffdcaa1f;border-color:#ffdcaa73}.sheet button:disabled{opacity:.4;cursor:default}.sheet button .left{float:right;color:var(--faint);font-size:11.5px}.sheet .row{color:var(--soft);align-items:center;gap:10px;padding:4px 2px;font-size:13px;display:flex}.sheet .row input[type=range]{flex:1}.sheet .hint{color:var(--faint);margin:2px 2px 0;font-size:11.5px;line-height:1.6}.sheet .seg{gap:6px;display:flex}.sheet .seg button{text-align:center;flex:1}.sheet .end{text-align:center;margin-top:6px}.swatches span{gap:6px;display:flex}.swatch{border:2px solid #0000;border-radius:50%;width:20px;height:20px;padding:0}.swatch.on{border-color:#fff}.remember{border-top:1px solid var(--line);margin-top:6px;padding-top:10px!important}.card{text-align:center;background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:18px;padding:18px 22px;transition:opacity 1.2s;position:fixed;top:38%;left:50%;transform:translate(-50%,-50%)}.card p{margin:0 0 14px;font-size:15px}.card .actions{justify-content:center;gap:8px;display:flex}.card button{border:1px solid var(--line);background:#ffffff12;border-radius:16px;padding:8px 16px;font-size:13.5px}.letterPanel{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);opacity:0;pointer-events:none;background:#04050c80;flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:20px;transition:opacity .5s;display:flex;position:fixed;inset:0}.letterPanel.open{opacity:1;pointer-events:auto}.letter{touch-action:none;cursor:grab;background:#141414;border-radius:2px;width:min(340px,100%);padding:24px 28px 16px;position:relative;box-shadow:0 8px 28px #00000080,0 0 0 1px #ffffff0f}.letter:after{content:"";background:radial-gradient(circle,#ffd69680 0 6px,#0000 7px);border:1.5px dashed #ffffff47;border-radius:3px;width:30px;height:36px;position:absolute;top:16px;right:18px}.letter .date{color:#9c978e;height:30px;font-size:12px}.letter textarea{resize:none;width:100%;height:160px;font:inherit;color:#f2efe8;background:repeating-linear-gradient(#0000 0 31px,#ffffff1a 31px 32px) local;border:none;outline:none;padding:0;font-size:15px;line-height:32px}.letter textarea::placeholder{color:#ffffff52}.letter .from{color:#9c978e;text-align:right;margin-top:6px;font-size:12px}.letterHint{color:var(--faint);text-align:center;font-size:12px;line-height:1.7}.letterActions{gap:8px;display:flex}.letterActions button{border:1px solid var(--line);background:#ffffff12;border-radius:16px;padding:8px 18px;font-size:13.5px}.ending{text-align:center;opacity:0;pointer-events:none;background:#000;justify-content:center;align-items:center;transition:opacity 3.5s;display:flex;position:fixed;inset:0}.ending.on{opacity:1;pointer-events:auto}.ending p{color:var(--soft);opacity:0;font-size:17px;line-height:2;transition:opacity 2s 2.4s}.ending.on p{opacity:1}@media (width<=560px){.dock{border-radius:20px;flex-wrap:wrap;justify-content:center;width:calc(100vw - 16px);overflow:visible}.sheet,.friendNotice,.chatPanel{bottom:calc(max(16px, env(safe-area-inset-bottom)) + 96px)}.friendNotice.raised{bottom:calc(max(16px, env(safe-area-inset-bottom)) + 154px)}.message{top:calc(max(18px, env(safe-area-inset-top)) + 26px);font-size:13.5px}.dock button{padding:8px 9px;font-size:12.5px}.count{font-size:11.5px;left:14px}}.noGL{z-index:100;opacity:0;background:#04050c8c;justify-content:center;align-items:center;padding:20px;transition:opacity 1s;display:flex;position:fixed;inset:0}.noGL.on{opacity:1}.noGL .box{border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0e101af0;border-radius:18px;width:min(420px,100%);padding:22px 24px}.noGL .t{margin:0 0 8px;font-size:16px}.noGL .s{color:var(--soft);margin:0 0 10px;font-size:13px;line-height:1.7}.noGL ul{color:var(--soft);margin:0 0 14px;padding-left:18px;font-size:12.5px;line-height:1.8}.noGL b{color:var(--ink);font-weight:400}.noGL .actions{text-align:center}.noGL button{border:1px solid var(--line);background:#ffffff12;border-radius:16px;padding:8px 18px;font-size:13.5px}.friendNotice{right:16px;bottom:calc(max(16px, env(safe-area-inset-bottom)) + 60px);-webkit-backdrop-filter:blur(18px)saturate(1.4);cursor:pointer;opacity:0;pointer-events:none;z-index:20;background:#282a3a6b;border:1px solid #ffffff29;border-radius:18px;width:min(300px,100vw - 32px);padding:11px 14px;transition:opacity .6s,transform .6s;position:fixed;transform:translateY(12px)scale(.97);box-shadow:0 8px 24px #00000040}.friendNotice.on{opacity:1;pointer-events:auto;transform:none}.friendNotice .row{color:var(--soft);align-items:center;gap:7px;font-size:11.5px;display:flex}.friendNotice .avatar{color:#fff3c4;background:linear-gradient(135deg,#a79fe0,#6f66b8);border-radius:6px;place-items:center;width:20px;height:20px;font-size:11px;display:grid}.friendNotice .who{color:var(--ink);font-weight:700}.friendNotice .when{margin-left:auto}.friendNotice .msg{margin-top:5px;font-size:14px;line-height:1.5}.friendNotice .more{margin-top:10px;display:none}.friendNotice.expanded{cursor:default}.friendNotice.expanded .more{display:block}.friendNotice .more p{color:var(--soft);margin:0 0 10px;font-size:11.5px;line-height:1.65}.friendNotice .actions{gap:6px;display:flex}.friendNotice .actions button{white-space:nowrap;background:#ffffff1f;border:1px solid #ffffff2e;border-radius:12px;flex:1;padding:8px 6px;font-size:13px}.friendNotice .actions button#friendStart{color:#2b2230;background:#ffe6bed9;border-color:#0000;flex:1.7}.chatPanel{right:16px;bottom:calc(max(16px, env(safe-area-inset-bottom)) + 60px);-webkit-backdrop-filter:blur(16px);opacity:0;pointer-events:none;z-index:20;background:#14162280;border:1px solid #ffffff24;border-radius:18px;width:min(320px,100vw - 32px);transition:opacity .6s,transform .6s;position:fixed;transform:translateY(10px)}.chatPanel.on{opacity:1;pointer-events:auto;transform:none}.chatHead{text-align:left;width:100%;color:var(--soft);background:0 0;border:none;padding:10px 14px;font-size:12.5px}.chatHead .fold{float:right;transition:transform .3s}.chatPanel.collapsed .fold{transform:rotate(180deg)}.chatPanel.collapsed .chatBody{display:none}.chatBody{padding:0 12px 12px}.chatLog{flex-direction:column;gap:6px;max-height:34vh;padding:2px 0 6px;display:flex;overflow-y:auto}.bubble{white-space:pre-wrap;border-radius:16px;max-width:85%;padding:8px 12px;font-size:13.5px;line-height:1.55}.bubble.friend{background:#b9b2e638;border-bottom-left-radius:5px;align-self:flex-start}.bubble.me{background:#ffe6be33;border-bottom-right-radius:5px;align-self:flex-end}.bubble.system{color:var(--faint);text-align:center;background:0 0;align-self:center;font-size:11.5px}.typing{color:#e6e0ff;gap:5px;padding:2px 6px 8px;font-size:11px;display:none}.typing.on{display:flex}.typing span{opacity:.25;animation:1.8s ease-in-out infinite twinkle}.typing span:nth-child(2){animation-delay:.3s}.typing span:nth-child(3){animation-delay:.6s}@keyframes twinkle{0%,to{opacity:.25;transform:translateY(0)}50%{opacity:1;transform:translateY(-2px)}}#chatForm{gap:6px;display:flex}#chatForm.done{display:none}#chatInput{min-width:0;color:var(--ink);font:inherit;background:#ffffff12;border:1px solid #ffffff29;border-radius:14px;outline:none;flex:1;padding:9px 12px;font-size:13.5px}#chatForm button,.chatActions button{white-space:nowrap;background:#ffffff1a;border:1px solid #ffffff29;border-radius:14px;padding:8px 12px;font-size:12.5px}.chatActions{gap:6px;margin-top:8px;display:flex}.chatActions button{color:var(--soft);flex:1}.sheet input[type=date]{border:1px solid var(--line);color:var(--ink);font:inherit;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:#ffffff0f;border-radius:10px;flex:1;padding:6px 8px;font-size:13px}.birthResult{color:var(--ink);padding:2px 4px;font-size:13px;line-height:1.75}.birthResult:empty,.sheet #birthGo.hidden{display:none}.sheet #birthGo{text-align:center;background:#ffdcaa1f;border-color:#ffdcaa73}.birthSky{z-index:60;opacity:0;transition:opacity .9s;position:fixed;inset:0}.birthSky.on{opacity:1}.birthSky canvas{cursor:grab;touch-action:none;width:100%;height:100%;position:absolute;inset:0}.bsTitle{top:max(22px, env(safe-area-inset-top));text-align:center;color:var(--ink);pointer-events:none;font-size:15px;position:absolute;left:0;right:0}.bsHint{top:calc(max(22px, env(safe-area-inset-top)) + 26px);text-align:center;color:var(--faint);pointer-events:none;font-size:12px;position:absolute;left:0;right:0}.bsBack{left:50%;bottom:max(22px, env(safe-area-inset-bottom));background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:18px;padding:9px 18px;font-size:13.5px;position:absolute;transform:translate(-50%)}.bsCredit{color:#f3ecdf4d;pointer-events:none;font-size:10.5px;position:absolute;bottom:8px;right:12px}.bubble{transition:opacity 1.2s,transform 1.4s,filter 1.2s}.bubble.drift{opacity:0;filter:blur(4px);transform:translateY(-40px)scale(.85)}input,textarea,button{font-family:inherit}.chatActions{flex-wrap:wrap}.chatActions button.hide{display:none}#chatCall{color:var(--ink);background:#ffdcaa1f;border-color:#ffdcaa73}.friendSay{color:#3a2c3c;pointer-events:none;opacity:0;z-index:15;white-space:nowrap;background:#fff4f6;border-radius:14px;padding:6px 12px;font-size:14px;transition:opacity .35s,transform .35s;position:fixed;top:0;left:0;transform:translate(-50%,-100%)scale(.7);box-shadow:0 4px 14px #0000004d}.friendSay:after{content:"";border:6px solid #0000;border-top-color:#fff4f6;border-bottom:0;margin-left:-6px;position:absolute;bottom:-6px;left:50%}.friendSay.on{opacity:1;transform:translate(-50%,-100%)scale(1)}.friendNotice.raised{bottom:calc(max(16px, env(safe-area-inset-bottom)) + 118px)}@media (width<=560px){.sheet,.friendNotice,.chatPanel{bottom:calc(max(16px, env(safe-area-inset-bottom)) + 100px)}.friendNotice.raised{bottom:calc(max(16px, env(safe-area-inset-bottom)) + 158px)}.backSeat{top:calc(max(14px, env(safe-area-inset-top)) + 26px)}}
