:root{--bg: #070c1d;--surface: #0e1530;--surface-tint: #182044;--ink: #edeffa;--ink-2: #aab2d0;--muted: #7a83a6;--line: rgba(237, 239, 250, .1);--accent: #ffb65c;--accent-strong: #e89334;--accent-soft: rgba(255, 182, 92, .14);--accent-text: #ffb65c;--on-accent: #1d2440;--firefly: #cdef8a;--dew: #9fd8f5;--star: #ffd97a;--moon: #d7dcf0;--aurora-a: #6fe3c1;--aurora-b: #f0a0c8;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--radius-sm: 10px;--radius-md: 16px;--radius-lg: 24px;--shadow-sm: 0 1px 2px rgba(3, 6, 18, .5), 0 4px 12px rgba(3, 6, 18, .45);--shadow: 0 2px 6px rgba(3, 6, 18, .5), 0 8px 24px rgba(3, 6, 18, .55), 0 24px 60px -16px rgba(3, 6, 18, .8);--ease-out: cubic-bezier(.22, 1, .36, 1);--font-sans: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Roboto, "Helvetica Neue", "Segoe UI", "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", sans-serif}*{box-sizing:border-box;margin:0;padding:0}html{height:100%;background:var(--bg)}body{min-height:100dvh;font-family:var(--font-sans);font-size:16px;line-height:1.6;letter-spacing:-.01em;word-break:keep-all;overflow-wrap:anywhere;color:var(--ink);background-image:radial-gradient(1200px 500px at 70% -120px,rgba(255,182,92,.07),transparent 60%),radial-gradient(900px 700px at 12% 22%,rgba(60,80,160,.16),transparent 65%);background-color:var(--bg);background-attachment:fixed;-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;border:none;background:none;cursor:pointer}button:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}input,select,textarea{font:inherit;color:inherit}a{color:var(--accent-text)}img{max-width:100%}::selection{background:#ffb65c4d}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.container{width:100%;max-width:480px;margin:0 auto;padding:var(--space-5) var(--space-4) calc(var(--space-7) + env(safe-area-inset-bottom));min-height:100dvh;display:flex;flex-direction:column}.display{font-size:30px;font-weight:900;line-height:1.2;letter-spacing:-.02em;white-space:pre-line}h1{font-size:24px;font-weight:800;line-height:1.3;letter-spacing:-.02em}h2{font-size:20px;font-weight:700;line-height:1.35;letter-spacing:-.02em}.kicker{font-size:12px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--accent)}.tagline{color:var(--ink-2);font-size:15px}.muted{color:var(--muted);font-size:13px}.tnum{font-variant-numeric:tabular-nums}.vstack{display:grid;gap:var(--space-3);align-content:start}.vstack-lg{display:grid;gap:var(--space-5);align-content:start}.center-text{text-align:center}.grow{flex:1}.page{animation:page-in .45s var(--ease-out) backwards}@keyframes page-in{0%{opacity:0;transform:translateY(14px)}}.stagger>*{animation:rise .4s var(--ease-out) backwards}.stagger>*:nth-child(1){animation-delay:.04s}.stagger>*:nth-child(2){animation-delay:.09s}.stagger>*:nth-child(3){animation-delay:.14s}.stagger>*:nth-child(4){animation-delay:.19s}.stagger>*:nth-child(5){animation-delay:.24s}@keyframes rise{0%{opacity:0;transform:translateY(10px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:48px;padding:0 20px;border-radius:var(--radius-sm);font-size:16px;font-weight:700;letter-spacing:-.01em;border:1px solid var(--line);background:var(--surface);color:var(--ink);transition:transform .15s var(--ease-out),background .15s,border-color .15s}.btn-sm{height:40px;padding:0 16px;font-size:14px}.btn-primary{background:linear-gradient(180deg,var(--accent),var(--accent-strong));color:var(--on-accent);border-color:transparent;box-shadow:inset 0 1px #ffffff47}.btn-ghost{background:transparent}.btn-block{width:100%}@media(hover:hover){.btn:hover:not(:disabled){transform:translateY(-1px);border-color:#ffb65c66}.btn-primary:hover:not(:disabled){filter:brightness(1.04)}}.btn:active:not(:disabled){transform:translateY(1px)}.lang-switch{-moz-appearance:none;appearance:none;-webkit-appearance:none;border:1px solid var(--line);background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='M4 6l4 4 4-4' stroke='%237a83a6' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 12px center;color:var(--ink-2);border-radius:999px;padding:8px 34px 8px 16px;font-size:13px;font-weight:600;cursor:pointer}.card{padding:var(--space-5);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface)}.chip{display:inline-flex;align-items:center;gap:6px;background:#0e1530b8;border:1px solid var(--line);border-radius:999px;padding:7px 12px;font-size:12px;color:var(--ink-2);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.chip b{color:var(--ink);font-weight:700}.chip .orb{width:8px;height:8px;border-radius:50%;background:var(--firefly);box-shadow:0 0 8px var(--firefly)}.icon-btn{position:relative;width:36px;height:36px;border-radius:50%;border:1px solid var(--line);background:#0e1530b8;color:var(--ink-2);display:inline-flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.icon-btn svg{width:17px;height:17px}.icon-badge{position:absolute;top:1px;right:1px;width:8px;height:8px;border-radius:50%;background:var(--firefly);box-shadow:0 0 6px var(--firefly);animation:badge-pulse 1.8s ease-in-out infinite}@keyframes badge-pulse{0%,to{opacity:1}50%{opacity:.35}}.reunion{display:flex;align-items:center;gap:var(--space-3);width:100%;text-align:left;padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);border-radius:var(--radius-md);border:1px solid rgba(255,182,92,.28);background:linear-gradient(180deg,#ffb65c1a,#ffb65c08)}.reunion-orb{flex:none;width:26px;height:26px;border-radius:50%;box-shadow:0 0 10px 2px #ffd97a80;animation:reunion-twinkle 2.2s ease-in-out infinite}@keyframes reunion-twinkle{0%,to{transform:scale(1);filter:brightness(1)}50%{transform:scale(1.14);filter:brightness(1.5)}}.reunion-name{font-weight:700;font-size:14px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0306129e;display:flex;align-items:flex-end;justify-content:center;padding:var(--space-4);z-index:40;animation:fade .25s var(--ease-out) backwards}.modal{width:100%;max-width:440px;max-height:88dvh;overflow-y:auto;padding:var(--space-5);border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);animation:sheet-up .35s var(--ease-out) backwards}@media(min-width:520px){.modal-backdrop{align-items:center}}@keyframes fade{0%{opacity:0}}@keyframes sheet-up{0%{opacity:0;transform:translateY(24px)}}.field{width:100%;height:44px;padding:0 14px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-tint);color:var(--ink)}.field-area{width:100%;min-height:84px;padding:10px 14px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-tint);color:var(--ink);resize:vertical;line-height:1.5;word-break:break-all}.label{font-size:13px;font-weight:700;color:var(--ink-2)}.hint{font-size:12.5px;color:var(--muted)}.error-text{font-size:13px;color:#ff9e9e}.ok-text{font-size:13px;color:var(--firefly)}.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));transform:translate(-50%);background:#0e1530f0;border:1px solid var(--line);color:var(--ink);font-size:14px;padding:10px 18px;border-radius:999px;z-index:60;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:toast-in .25s var(--ease-out) backwards}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}}.top-nav{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-5)}.back-link{color:var(--ink-2);font-size:14px;font-weight:600;text-decoration:none}.footer{margin-top:auto;padding-top:var(--space-6);display:flex;align-items:center;justify-content:center;gap:var(--space-3);font-size:12.5px;color:var(--muted)}.footer a{color:var(--muted);text-decoration:none}.footer .dot:before{content:"·";margin:0 2px}.sky{position:relative;border:1px solid var(--line);border-radius:var(--radius-lg);background:radial-gradient(600px 300px at 50% -40px,rgba(255,182,92,.06),transparent 70%),linear-gradient(180deg,#0a1128,#101838);padding:var(--space-5);display:grid;grid-template-columns:repeat(5,1fr);gap:var(--space-3)}.sky-slot{aspect-ratio:1;border-radius:var(--radius-md);border:1px solid var(--line);background:#060c1d99;display:flex;align-items:center;justify-content:center;padding:6px;cursor:default}.sky-slot.lit{cursor:pointer;border-color:#ffb65c47}.sky-slot.lit:disabled{opacity:1}.sky-orb{width:70%;aspect-ratio:1;border-radius:50%}.sky-slot.dark .sky-orb{background:#7a83a624}.book-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface)}.book-item .dot{width:26px;height:26px;border-radius:50%;flex:none}.egg-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,210px));justify-content:center;gap:var(--space-3)}.egg-pick{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);padding:var(--space-5) var(--space-4);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);transition:transform .15s var(--ease-out),border-color .15s}.egg-pick.selected{border-color:#ffb65c8c;box-shadow:0 0 0 1px #ffb65c59}.egg-art{display:block;width:124px;height:124px}.egg-art.placed{width:168px;height:168px;margin:0 auto}.egg-pick .name{font-size:14px;font-weight:700}@media(hover:hover){.egg-pick:hover{transform:translateY(-2px)}}.egg-solo{display:flex;flex-direction:column;align-items:center;gap:var(--space-3)}.egg-solo .egg-art{width:168px;height:168px}.egg-solo-name{font-size:14px;font-weight:700;color:var(--muted)}.room-screen{position:relative;width:100%;max-width:480px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column}.room-stage{position:relative;flex:1;overflow:hidden;border-radius:0;background:radial-gradient(420px 260px at 50% 86%,rgba(255,182,92,.08),transparent 70%),linear-gradient(180deg,#0a1128,#101838 46%,#1a2350);-webkit-user-select:none;user-select:none;touch-action:manipulation}.room-bg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;opacity:.9;pointer-events:none}.win{position:absolute;top:8%;left:50%;transform:translate(-50%);width:168px;height:132px;border-radius:84px 84px 14px 14px;background:linear-gradient(180deg,#0d1e45,#16295e);border:3px solid #2c3763;box-shadow:inset 0 0 24px #0a1028e6}.win .moon{position:absolute;top:22px;right:30px;width:26px;height:26px;border-radius:50%;background:radial-gradient(circle at 34% 34%,#fff6dd,#ffd98f 70%);box-shadow:0 0 18px 4px #ffd98f59}.win .star{position:absolute;width:3px;height:3px;border-radius:50%;background:#cfd8ff;animation:twinkle 3.4s ease-in-out infinite}.win .star:nth-child(2){top:28%;left:18%;animation-delay:.6s}.win .star:nth-child(3){top:52%;left:34%;width:2px;height:2px;animation-delay:1.4s}.win .star:nth-child(4){top:30%;left:55%;width:2px;height:2px;animation-delay:2.2s}@keyframes twinkle{0%,to{opacity:.35}50%{opacity:1}}.lamp{position:absolute;right:22px;bottom:26%;width:54px;text-align:center}.lamp .shade{width:44px;height:34px;margin:0 auto;border-radius:22px 22px 6px 6px;background:linear-gradient(180deg,#ffcf90,var(--accent-strong));box-shadow:0 0 34px 10px #ffb65c47;transition:box-shadow 1s var(--ease-out),filter 1s var(--ease-out)}.lamp .pole{width:5px;height:26px;margin:0 auto;background:#3a4370}.lamp .base{width:30px;height:7px;margin:0 auto;border-radius:4px;background:#3a4370}.lamp .halo{position:absolute;left:50%;top:-6px;transform:translate(-50%);width:150px;height:150px;border-radius:50%;pointer-events:none;background:radial-gradient(circle,rgba(255,182,92,.18),transparent 65%);transition:opacity 1s var(--ease-out)}.spirit-box{position:absolute;left:50%;top:38%;transform:translate(-50%);width:168px;height:168px;cursor:pointer;touch-action:none;transition:left .55s var(--ease-out),top .55s var(--ease-out)}.spirit-glow{position:absolute;top:-34px;right:-34px;bottom:-34px;left:-34px;border-radius:50%;pointer-events:none;background:radial-gradient(circle,var(--spirit-aura, rgba(205, 239, 138, .2)),transparent 62%);animation:glowpulse 4.6s ease-in-out infinite}@keyframes glowpulse{0%,to{opacity:.7}50%{opacity:1}}.spirit{position:relative;width:100%;height:100%;object-fit:contain;animation:floaty 4.8s ease-in-out infinite;filter:drop-shadow(0 10px 22px rgba(4,8,22,.55));transition:transform .3s var(--ease-out)}@keyframes floaty{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-11px) scale(1.02)}}.spirit.tilt-l{rotate:-5deg}.spirit.tilt-r{rotate:5deg}.spirit.nom{animation:nom .55s var(--ease-out) 2}@keyframes nom{0%,to{transform:scale(1)}40%{transform:scale(1.09,.94)}}.spirit.spin{animation:spin .9s var(--ease-out) 1}@keyframes spin{to{transform:rotate(360deg)}}.spirit.pop{animation:pop .4s var(--ease-out) 1}@keyframes pop{0%,to{transform:scale(1)}45%{transform:scale(1.12)}}.spirit-placeholder{position:relative;width:100%;height:100%;border-radius:50%;background:radial-gradient(circle at 42% 38%,#ffffff,var(--spirit-color, var(--firefly)) 62%,transparent 72%);filter:drop-shadow(0 10px 22px rgba(4,8,22,.55));animation:floaty 4.8s ease-in-out infinite}.bubble{position:absolute;left:50%;top:30%;transform:translate(-50%) translateY(6px);background:#edeffaf2;color:#1d2440;font-size:13px;font-weight:600;letter-spacing:-.01em;padding:8px 14px;border-radius:999px;max-width:78%;text-align:center;opacity:0;pointer-events:none;transition:opacity .3s var(--ease-out),transform .3s var(--ease-out)}.bubble.show{opacity:1;transform:translate(-50%) translateY(0)}.hud{position:absolute;top:calc(12px + env(safe-area-inset-top));left:16px;right:16px;display:flex;justify-content:space-between;align-items:center;gap:8px;z-index:8}.hud-r{display:flex;gap:6px}.gauge{position:absolute;left:50%;bottom:132px;transform:translate(-50%);display:flex;align-items:center;gap:8px;background:#0e1530b8;border:1px solid var(--line);border-radius:999px;padding:8px 14px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:7}.gauge .lbl{font-size:11px;color:var(--muted)}.gauge .lbl b{color:var(--ink-2);font-weight:600;font-variant-numeric:tabular-nums}.slots{display:flex;gap:5px;flex-wrap:wrap;max-width:180px}.slot{width:11px;height:11px;border-radius:50%;background:var(--star);opacity:.22}.slot.on{opacity:1;box-shadow:0 0 5px #ffd97acc}.slot.fill{animation:slot-pop .5s var(--ease-out) 1}@keyframes slot-pop{0%{transform:scale(.4);opacity:.4}60%{transform:scale(1.25)}to{transform:scale(1);opacity:1}}.actions{position:absolute;left:16px;right:16px;bottom:calc(20px + env(safe-area-inset-bottom));display:flex;gap:10px;z-index:8}.act{flex:1;min-height:74px;border-radius:var(--radius-md);border:1px solid rgba(255,182,92,.22);background:linear-gradient(180deg,#ffb65c21,#ffb65c0d);color:var(--ink);font-size:12.5px;font-weight:600;letter-spacing:-.01em;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;transition:transform .15s var(--ease-out),background .15s}.act svg{width:22px;height:22px;stroke:var(--accent);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}@media(hover:hover){.act:hover{transform:translateY(-2px);background:linear-gradient(180deg,#ffb65c33,#ffb65c14)}}.act:active{transform:translateY(1px)}.act .done{width:6px;height:6px;border-radius:50%;background:var(--firefly);box-shadow:0 0 6px var(--firefly);opacity:0;transition:opacity .3s}.act.done-day{opacity:.48}.act.done-day .done{opacity:1}@media(hover:hover){.act.done-day:hover{transform:none;background:linear-gradient(180deg,#ffb65c21,#ffb65c0d)}}.fx{position:absolute;pointer-events:none;z-index:9}.sparkle{width:8px;height:8px;animation:rise-fx .9s var(--ease-out) forwards}.sparkle svg{width:100%;height:100%;fill:var(--star)}@keyframes rise-fx{0%{opacity:1;transform:translateY(0) scale(.6)}to{opacity:0;transform:translateY(-34px) scale(1.15)}}.candy{width:18px;height:18px;z-index:10}.candy svg{width:100%;height:100%;fill:var(--star);filter:drop-shadow(0 0 6px rgba(255,217,122,.9))}.ffly{width:9px;height:9px;border-radius:50%;background:var(--firefly);box-shadow:0 0 12px 3px #cdef8a8c;animation:drift 7s ease-in-out infinite}@keyframes drift{0%,to{transform:translate(0);opacity:.55}30%{transform:translate(14px,-20px);opacity:1}65%{transform:translate(-10px,-8px);opacity:.75}}.ffly.target{cursor:pointer;pointer-events:auto;width:15px;height:15px;animation:drift 3.2s ease-in-out infinite}.dim{position:absolute;top:0;right:0;bottom:0;left:0;background:#0407128c;opacity:0;pointer-events:none;transition:opacity 1.1s var(--ease-out);z-index:6}.room-stage.sleeping .dim{opacity:1}.room-stage.sleeping .spirit{animation-duration:8s}.room-stage.sleeping .lamp .shade{box-shadow:0 0 16px 4px #ffb65c24;filter:brightness(.55)}.room-stage.sleeping .lamp .halo{opacity:.35}.zzz{position:absolute;font-size:15px;color:var(--moon);font-weight:700;opacity:0;z-index:7;left:56%;top:32%}.room-stage.sleeping .zzz{animation:zfloat 3s ease-in-out infinite}.zzz.z2{font-size:12px;left:60%;top:28%;animation-delay:1s!important}@keyframes zfloat{0%{opacity:0;transform:translateY(4px)}40%{opacity:.9}to{opacity:0;transform:translateY(-22px)}}.cocoon{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%) scale(0);width:220px;height:220px;border-radius:50%;z-index:12;pointer-events:none;background:radial-gradient(circle,rgba(255,217,143,.9) 0%,rgba(255,182,92,.45) 45%,transparent 70%)}.cocoon.go{animation:cocoon 2.2s var(--ease-out) forwards}@keyframes cocoon{0%{transform:translate(-50%,-50%) scale(0);opacity:0}35%{transform:translate(-50%,-50%) scale(1);opacity:1}70%{transform:translate(-50%,-50%) scale(1.06);opacity:1}to{transform:translate(-50%,-50%) scale(1.6);opacity:0}}.spirit.farewell{animation:farewell 2.4s var(--ease-out) forwards}@keyframes farewell{0%{transform:translateY(0) scale(1);opacity:1}60%{transform:translateY(-120px) scale(.9);opacity:1}to{transform:translateY(-260px) scale(.4);opacity:0}}.event-panel{position:absolute;top:0;right:0;bottom:0;left:0;z-index:14;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-4);padding:var(--space-6) var(--space-5);background:#060c1d8c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);text-align:center;animation:fade .4s var(--ease-out) backwards}.event-panel .ribbon{display:inline-flex;align-items:center;gap:6px;padding:6px 16px;border-radius:999px;background:var(--accent-soft);border:1px solid rgba(255,182,92,.4);color:var(--accent);font-weight:700;font-size:14px}.event-panel .big{font-size:22px;font-weight:800;letter-spacing:-.02em}.event-panel .count{font-size:44px;font-weight:900;color:var(--accent);font-variant-numeric:tabular-nums;line-height:1}.event-panel .recall{width:100%;max-width:300px;margin:2px auto 0;padding:10px 14px;border-radius:var(--radius-md);background:#0e153080;border:1px solid var(--line)}.event-panel .recall-title{display:block;font-size:11px;color:var(--muted);margin-bottom:6px}.event-panel .recall-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px}.event-panel .recall-list li{font-size:12px;color:var(--ink-2);line-height:1.4}.wish-line{position:absolute;left:50%;bottom:178px;transform:translate(-50%);max-width:82%;text-align:center;font-size:11.5px;color:var(--ink-2);opacity:.92;z-index:7;pointer-events:none}.backup-nudge{position:absolute;top:calc(54px + env(safe-area-inset-top));left:12px;right:12px;display:flex;align-items:center;gap:6px;padding:8px 8px 8px 12px;border-radius:var(--radius-md);background:#0e1530eb;border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:9}.backup-nudge .bn-text{flex:1;font-size:11.5px;color:var(--ink-2);line-height:1.35}.backup-nudge .bn-act{flex:none;font-size:11.5px;font-weight:700;color:var(--accent);background:none;border:none;padding:4px 6px;white-space:nowrap}.backup-nudge .bn-x{flex:none;font-size:17px;line-height:1;color:var(--muted);background:none;border:none;padding:2px 6px}
