:root{--bg:#fff7f2;--card:#fff;--ink:#6a5560;--muted:#94808a;--pink:#ff8fb3;--pink-deep:#ee5f8f;--pink-shadow:#c43f6f;--pink-soft:#ffe6ee;--blue:#86cdf6;--blue-soft:#e4f4ff;--yellow:#ffd96a;--yellow-soft:#fff4cc;--mint-soft:#e2f7ee;--line:#ffd3e0;--field:#fffafc;--danger:#e0475b;--ok:#2fa876;--shadow:0 5px 0 #ffa0be47;--display:"Jua", "Gowun Dodum", sans-serif;--sans:"Gowun Dodum", "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{min-height:100vh;color:var(--ink);font-family:var(--sans);background:radial-gradient(var(--pink-soft) 2.2px, transparent 2.8px) 0 0 / 30px 30px, radial-gradient(34rem 24rem at 100% 0%, var(--blue-soft), transparent 70%), radial-gradient(34rem 24rem at 0% 30%, var(--yellow-soft), transparent 70%), var(--bg);-webkit-font-smoothing:antialiased;background-attachment:fixed;margin:0;font-size:16px;line-height:1.55}::selection{background:var(--pink);color:#fff}.app{max-width:760px;margin:0 auto;padding:0 18px 64px}b{font-weight:700}a{color:var(--pink-deep);text-underline-offset:3px}h1,h2,.dday,.big-num,.ring-pct,.price,.eyebrow,.bubble{font-family:var(--display);font-weight:400}.top{z-index:10;text-align:center;-webkit-backdrop-filter:blur(10px);border-bottom:2.5px dashed var(--line);background:#fff7f2e0;margin:0 -18px;padding:18px 18px 12px;position:sticky;top:0}.eyebrow{letter-spacing:.22em;color:var(--blue);text-transform:uppercase;margin:0;font-size:.78rem}.top h1{color:var(--ink);margin:2px 0;font-size:clamp(1.7rem,7vw,2.3rem);line-height:1.2}.top h1 .amp{color:var(--pink);margin:0 .22em;animation:1.6s ease-in-out infinite beat;display:inline-block}.top h1 .suffix{color:var(--muted);margin-left:.45em;font-size:.55em}@keyframes beat{50%{transform:scale(1.25)}}.sync{color:var(--muted);align-items:center;gap:6px;margin-bottom:10px;font-size:.74rem;display:inline-flex}.sync:before{content:"";background:currentColor;border-radius:50%;width:7px;height:7px}.sync.synced{color:var(--ok)}.sync.saving,.sync.loading{color:#e0a31f}.sync.saving:before,.sync.loading:before{animation:1s ease-in-out infinite pulse}.sync.offline{color:var(--danger)}@keyframes pulse{50%{opacity:.2;transform:scale(.7)}}.tabs{scrollbar-width:none;justify-content:center;gap:8px;padding:2px 2px 6px;display:flex;overflow-x:auto}.tabs::-webkit-scrollbar{display:none}.tabs button{white-space:nowrap;cursor:pointer;font-family:var(--display);color:var(--ink);background:var(--card);border:2.5px solid var(--line);box-shadow:0 3px 0 var(--line);border-radius:999px;align-items:center;gap:6px;padding:7px 15px;font-size:.95rem;transition:transform .12s,box-shadow .12s,background .2s;display:inline-flex}.tabs button svg{flex:none;width:16px;height:16px}.tabs button:nth-child(2){border-color:#c3e6fb;box-shadow:0 3px #c3e6fb}.tabs button:nth-child(3){border-color:#ffe9a3;box-shadow:0 3px #ffe9a3}.tabs button:nth-child(4){border-color:#bfeed9;box-shadow:0 3px #bfeed9}.tabs button:active{box-shadow:0 1px 0 var(--line);transform:translateY(2px)}.tabs button.on{background:var(--pink);border-color:var(--pink-deep);color:#fff;box-shadow:0 3px 0 var(--pink-shadow)}.tabs button.on:nth-child(2){background:var(--blue);border-color:#4fb0e6;box-shadow:0 3px #3a8fc2}.tabs button.on:nth-child(3){background:#ffc93c;border-color:#eaa90f;box-shadow:0 3px #c08a05}.tabs button.on:nth-child(4){background:#5ccf9f;border-color:#35b583;box-shadow:0 3px #23916a}main{animation:.4s cubic-bezier(.3,1.4,.5,1) pop}@keyframes pop{0%{opacity:0;transform:translateY(12px)scale(.98)}}.card{background:var(--card);border:2.5px solid var(--line);box-shadow:var(--shadow);border-radius:26px;margin:16px 0;padding:18px;position:relative}.card h2{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px;margin:0 0 10px;font-size:1.15rem;display:flex}.card p{margin:.35em 0}.card h2 .muted{font-family:var(--sans)}.hero{text-align:center;background:radial-gradient(#fff 2px,#0000 2.6px) 0 0/22px 22px,linear-gradient(160deg,#ffe0ea 0%,#fff1d6 55%,#dff1ff 100%);border-color:#ffc2d6;padding:26px 18px 14px;overflow:hidden;box-shadow:0 6px #ff8cb459}.hero .eyebrow{color:var(--pink-deep)}.hero-names{margin:2px 0 6px!important;font-size:1.5rem!important;display:block!important}.hero-names i{color:var(--pink);margin:0 .3em;font-style:normal}.dday{color:var(--pink-deep);-webkit-text-stroke:0;letter-spacing:.02em;text-shadow:3px 3px #fff,6px 6px #ffc6d8;font-size:clamp(3.6rem,18vw,5.6rem);line-height:1.05}.dday.empty{text-shadow:2px 2px #fff;padding:14px 0;font-size:1.35rem}.hero-date{border:2px solid var(--line);letter-spacing:.12em;color:var(--pink-deep);background:#fff;border-radius:999px;padding:3px 14px;font-size:.85rem;display:inline-block;margin:10px 0 0!important}.crew{justify-content:center;align-items:flex-end;gap:4px;margin:10px 0 -4px;display:flex}.mascot{filter:drop-shadow(0 3px #6a55601f);flex:none;display:block;overflow:visible}.bob{transform-origin:50% 100%;animation:2.4s ease-in-out infinite bob}.bob.d1{animation-delay:-.8s}.bob.d2{animation-delay:-1.6s}@keyframes bob{0%,to{transform:translateY(0)rotate(-2deg)}50%{transform:translateY(-7px)rotate(2deg)}}.tab-mascot{align-items:center;gap:8px;margin:14px 4px -6px;display:flex}.bubble{color:var(--ink);border:2.5px solid var(--line);box-shadow:0 3px 0 var(--line);background:#fff;border-radius:20px;margin:0;padding:8px 16px;font-size:1rem;position:relative}.bubble:before,.bubble:after{content:"";border:7px solid #0000;border-right:10px solid var(--line);border-left:0;margin-top:-7px;position:absolute;top:50%;left:-10px}.bubble:after{border-right-color:#fff;left:-6px}.stats{grid-template-columns:1fr 1fr;gap:16px;margin:16px 0;display:grid}.stats .card{margin:0}.stats .card:first-child{background:var(--blue-soft);border-color:#bfe3fa;box-shadow:0 5px #86cdf666}.stats .card:nth-child(2){background:var(--yellow-soft);border-color:#ffe08a;box-shadow:0 5px #ffcd5066}.stat-label{font-family:var(--display);letter-spacing:.12em;color:var(--muted);text-transform:uppercase;font-size:.85rem;margin:0 0 6px!important}.ring-wrap{align-items:center;gap:14px;display:flex}.ring{flex:none;width:84px;height:84px;transform:rotate(-90deg)}.ring circle{fill:none;stroke-width:10px;stroke-linecap:round}.ring .track{stroke:#fff}.ring .fill{stroke:var(--pink);transition:stroke-dashoffset .8s cubic-bezier(.3,1.3,.5,1)}.ring-pct{color:var(--pink-deep);font-size:2.1rem;line-height:1}.ring-pct small{color:var(--muted);font-size:.9rem}.big-num{color:#d99a09;font-size:1.9rem;line-height:1.15;margin:0 0 4px!important}.kv{border-top:2px dotted #6a55602e;justify-content:space-between;padding:7px 0;font-size:.9rem;display:flex}.kv:first-of-type{margin-top:8px}.kv span:first-child{color:var(--muted)}.grid2{grid-template-columns:1fr 1fr;gap:12px;display:grid}.span2{grid-column:span 2}label{color:var(--muted);flex-direction:column;gap:5px;font-size:.8rem;display:flex}input,select,textarea,button{font:inherit;color:inherit}input:not([type=checkbox]),select,textarea{border:2.5px solid var(--line);background:var(--field);width:100%;min-width:0;color:var(--ink);border-radius:16px;outline:none;padding:9px 13px;transition:border-color .2s,box-shadow .2s}input::placeholder,textarea::placeholder{color:var(--muted);opacity:.65}input:not([type=checkbox]):focus,select:focus,textarea:focus{border-color:var(--pink);box-shadow:0 0 0 4px var(--pink-soft)}select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none' stroke='%23ee5f8f' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><path d='M1 1.5l5 5 5-5'/></svg>");background-position:right 13px center;background-repeat:no-repeat;padding-right:34px}textarea{resize:vertical;margin-top:10px}input[type=number]{-moz-appearance:textfield}button.primary{background:var(--pink-deep);color:#fff;cursor:pointer;font-family:var(--display);letter-spacing:.04em;box-shadow:0 4px 0 var(--pink-shadow);border:0;border-radius:16px;padding:10px 20px;font-size:1rem;transition:transform .1s,box-shadow .1s,filter .2s}button.primary:hover{filter:brightness(1.06)}button.primary:active{box-shadow:0 1px 0 var(--pink-shadow);transform:translateY(3px)}button.ghost{cursor:pointer;color:var(--muted);background:0 0;border:0;border-radius:10px;padding:4px 8px;transition:color .15s,background .15s}button.ghost:hover{color:var(--danger);background:var(--pink-soft)}.row{align-items:center;gap:10px;display:flex}.row.between{justify-content:space-between}.row select{flex:none;width:auto;max-width:45%}.list{margin:0;padding:0;list-style:none}.list li{border-top:2px dotted var(--line);align-items:center;gap:10px;padding:9px 0;display:flex}.list li:first-child{border-top:0}.list li.done .check span{text-decoration:line-through;-webkit-text-decoration-color:var(--pink);text-decoration-color:var(--pink);color:var(--muted);text-decoration-thickness:2px}.check{color:var(--ink);cursor:pointer;flex-direction:row;flex:1;align-items:center;gap:12px;font-size:1rem}input[type=checkbox]{appearance:none;cursor:pointer;border:2.5px solid var(--pink);background:#fff;border-radius:9px;flex:none;place-content:center;width:26px;height:26px;margin:0;transition:background .15s,transform .15s;display:grid}input[type=checkbox]:after{content:"";border:3px solid #fff;border-width:0 3px 3px 0;border-radius:1px;width:7px;height:12px;margin-top:-2px;transition:transform .2s cubic-bezier(.3,1.8,.5,1);transform:rotate(45deg)scale(0)}input[type=checkbox]:checked{background:var(--pink)}input[type=checkbox]:checked:after{transform:rotate(45deg)scale(1)}input[type=checkbox]:active{transform:scale(.85)}.small{flex:none;font-size:.8rem;border-radius:12px!important;width:140px!important;padding:5px 8px!important}.num{text-align:right;font-variant-numeric:tabular-nums;flex:none;border-radius:12px!important;width:108px!important;padding:6px 10px!important}.grow{flex:1}.bar{background:var(--pink-soft);outline:2px solid var(--line);border:2px solid #fff;border-radius:99px;height:14px;overflow:hidden}.bar span{background:repeating-linear-gradient(-45deg, var(--pink) 0 10px, #ff7aa3 10px 20px);border-radius:99px;height:100%;transition:width .6s cubic-bezier(.3,1.3,.5,1);display:block}.bar.over span{background:repeating-linear-gradient(-45deg, #ff8a7a 0 10px, var(--danger) 10px 20px)}.card .bar{margin:10px 2px 6px}.stats .bar{outline-color:#6a556026}.chips{flex-wrap:wrap;gap:8px;margin:8px 0 4px;display:flex}.chips button{border:2.5px solid var(--line);color:var(--ink);cursor:pointer;font-family:var(--display);box-shadow:0 3px 0 var(--line);background:#fff;border-radius:999px;padding:5px 14px;font-size:.9rem;transition:transform .1s,box-shadow .1s}.chips button:active{box-shadow:0 1px 0 var(--line);transform:translateY(2px)}.chips button.on{background:var(--blue);color:#fff;border-color:#4fb0e6;box-shadow:0 3px #3a8fc2}.vendor h2{justify-content:flex-start;margin:0}.vendor h2 .tag{font-family:var(--sans);background:var(--blue-soft);color:#3a8fc2;border:2px solid #bfe3fa;border-radius:999px;padding:2px 11px;font-size:.72rem}.vendor .price{color:var(--pink-deep);font-size:1.5rem}.stars{margin-left:auto;display:inline-flex}.stars button{color:#ffc22e;padding:2px 3px;font-size:1.35rem;line-height:1;transition:transform .15s}.stars button:hover{color:#ffc22e;background:0 0;transform:scale(1.3)rotate(-8deg)}.muted{color:var(--muted);font-size:.82rem;font-weight:400}.danger{color:var(--danger)}.center{text-align:center;padding:28px 0}.empty-state{color:var(--muted);text-align:center;flex-direction:column;align-items:center;gap:4px;padding:24px 10px;font-size:.95rem;display:flex}.foot{border-top:2.5px dashed var(--line);color:var(--muted);text-align:center;flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;margin-top:36px;padding-top:20px;font-size:.8rem;display:flex}.foot p{flex:1 0 100%;margin:0}.foot button{border:2.5px solid var(--line);cursor:pointer;font-family:var(--display);color:var(--ink);box-shadow:0 3px 0 var(--line);background:#fff;border-radius:999px;padding:6px 18px;transition:transform .1s,box-shadow .1s}.foot button:active{box-shadow:0 1px 0 var(--line);transform:translateY(2px)}@media (width<=520px){.app{padding:0 14px 56px}.top{margin:0 -14px;padding:14px 14px 10px}.card{border-radius:22px;padding:15px}.stats{grid-template-columns:1fr}.list li{flex-wrap:wrap}.small{width:124px!important}.num{width:96px!important}.tabs{justify-content:flex-start}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
