:root{--paper:#f6f1e7;--surface:#fffdf8;--surface-2:#f0e9db;--line:#e4dccb;--ink:#1f2a24;--muted:#6b665b;--pine:#1f4d3a;--pine-2:#2b6650;--pine-ink:#fffdf8;--berry:#b8323f;--berry-soft:#f6e3e2;--pine-soft:#e3ece5;--shadow:0 1px 2px #1f2a240d, 0 8px 24px -12px #1f2a242e;--radius:16px;--serif:"Fraunces", Georgia, serif;--sans:"Instrument Sans", system-ui, -apple-system, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--paper:#101a15;--surface:#17241d;--surface-2:#1e2e25;--line:#2a3d32;--ink:#ede7da;--muted:#a39d90;--pine:#3f8a68;--pine-2:#4f9c78;--pine-ink:#0d1611;--berry:#d4545f;--berry-soft:#3a1d21;--pine-soft:#1f3529;--shadow:0 1px 2px #0000004d, 0 10px 30px -14px #0009;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0;font-size:16px;line-height:1.5}h1,h2,h3{font-family:var(--serif);letter-spacing:-.01em;text-wrap:balance;margin:0;font-weight:600;line-height:1.15}h1{font-size:clamp(2rem,5vw,2.75rem)}h2{font-size:1.35rem}h3{font-size:1.05rem}p{text-wrap:pretty;margin:0}a{color:inherit}.muted{color:var(--muted)}.small{font-size:.875rem}.error{color:var(--berry)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.page{min-height:100dvh;padding:0 16px calc(48px + env(safe-area-inset-bottom))}.page.center{place-items:center;padding-top:32px;display:grid}.topbar{max-width:760px;padding:calc(16px + env(safe-area-inset-top)) 0 16px;justify-content:space-between;align-items:center;gap:12px;margin:0 auto;display:flex}.brand{font-family:var(--serif);align-items:center;gap:10px;font-size:1.15rem;font-weight:600;text-decoration:none;display:inline-flex}.topbar-user{align-items:center;gap:12px;min-width:0;display:flex}.content{max-width:760px;margin:0 auto;padding-top:24px}.stack{gap:16px;display:grid}.stack-lg{gap:24px;display:grid}.row{align-items:center;gap:10px;display:flex}.row.wrap{flex-wrap:wrap}.hero{gap:10px;padding:8px 0 4px;display:grid}.hero p{max-width:54ch;font-size:1.05rem}.back{color:var(--muted);justify-self:start;font-size:.9rem;text-decoration:none}.back:hover{color:var(--ink)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.section{gap:18px;padding:24px;display:grid}.section-head{gap:4px;display:grid}.button{appearance:none;font:600 .95rem/1.2 var(--sans);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;border:1px solid #0000;border-radius:999px;padding:11px 20px;transition:background-color .16s,border-color .16s,color .16s,transform .12s}.button:active:not(:disabled){transform:scale(.97)}.button:disabled{opacity:.45;cursor:not-allowed}.button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,.gift:focus-visible{outline:2px solid var(--pine-2);outline-offset:2px}.button.small{padding:7px 12px;font-size:.85rem}.button.primary{background:var(--pine);color:var(--pine-ink)}.button.secondary{background:var(--surface-2);color:var(--ink)}.button.ghost{color:var(--ink);background:0 0}.button.danger{border-color:var(--berry);color:var(--berry);background:0 0;justify-self:start}.button.light{background:var(--surface);color:var(--pine)}.button.outline-light{color:#fffdf8;background:0 0;border-color:#fffdf873}.button.is-asking{background:var(--berry);border-color:var(--berry);color:#fffdf8}@media (hover:hover){.button.primary:hover:not(:disabled){background:var(--pine-2)}.button.ghost:hover,.button.secondary:hover{background:var(--surface-2)}.button.outline-light:hover{border-color:#fffdf8}}.field{gap:6px;min-width:0;display:grid}.field>span{color:var(--muted);font-size:.85rem;font-weight:500}input,textarea,select{width:100%;font:400 16px/1.4 var(--sans);color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:11px 14px;transition:border-color .16s}input:focus,textarea:focus,select:focus{border-color:var(--pine-2)}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:var(--muted);opacity:.7}.chip{background:var(--surface-2);color:var(--muted);white-space:nowrap;border-radius:999px;align-items:center;padding:3px 10px;font-size:.78rem;font-weight:500;display:inline-flex}.chip-pine{background:var(--pine-soft);color:var(--pine-2)}.banner{border-radius:12px;padding:12px 16px;font-size:.95rem}.error.banner{background:var(--berry-soft)}.notice.banner{background:var(--pine-soft);color:var(--ink)}.login{justify-items:start;gap:18px;width:min(400px,100%);padding:36px 28px 28px;display:grid}.login form{width:100%}.code-input{letter-spacing:.4em;font-variant-numeric:tabular-nums;text-align:center;font-size:1.6rem}.new-event{align-items:end;gap:12px;padding:20px;display:flex}.grow{flex:1}.event-list{gap:12px;margin:0;padding:0;list-style:none;display:grid}.event-row{justify-content:space-between;align-items:center;gap:16px;padding:20px 22px;text-decoration:none;transition:transform .16s,border-color .16s;display:flex}.event-row h2{margin-bottom:2px;font-size:1.2rem}@media (hover:hover){.event-row:hover{border-color:var(--pine-2);transform:translateY(-1px)}}.draw-card{background:var(--pine);border-color:var(--pine);color:#fffdf8;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;padding:24px;display:flex}.draw-card>div:first-child{gap:6px;max-width:44ch;display:grid}.draw-card p{opacity:.85}@media (prefers-color-scheme:dark){.draw-card{background:#1d4a37;border-color:#27604a}.button.light{color:#1d4a37;background:#fffdf8}}.people{margin:0;padding:0;list-style:none;display:grid}.person{border-top:1px solid var(--line);grid-template-columns:auto 1fr auto;align-items:center;gap:14px;padding:14px 0;display:grid}.person:first-child{border-top:0;padding-top:0}.avatar{background:var(--pine-soft);width:40px;height:40px;color:var(--pine-2);font-family:var(--serif);border-radius:50%;place-items:center;font-size:1.05rem;font-weight:600;display:grid}.person-main{gap:2px;min-width:0;display:grid}.person-name{overflow-wrap:anywhere;font-weight:600}.chips{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.chips:empty{display:none}.person-actions{flex-wrap:wrap;justify-content:flex-end;gap:2px;display:flex}.person.editing{display:block}.person-form{grid-template-columns:1fr 1fr;gap:10px;display:grid}.person-form .row{grid-column:1/-1}.add-person{border-top:1px dashed var(--line);grid-template-columns:1fr 1fr auto;align-items:end;gap:12px;padding-top:18px;display:grid}.people:empty+.add-person{border-top:0;padding-top:0}.pairs{gap:8px;margin:0;padding:0;list-style:none;display:grid}.pair{background:var(--surface-2);border-radius:12px;justify-content:space-between;align-items:center;gap:12px;padding:8px 8px 8px 16px;font-weight:500;display:flex}.add-pair{grid-template-columns:1fr auto 1fr auto;align-items:center;gap:10px;display:grid}.details{grid-template-columns:1fr 1fr;gap:14px;display:grid}.span-2{grid-column:1/-1}@media (width<=620px){.hide-narrow{display:none}.section,.draw-card{padding:20px}.new-event{flex-direction:column;align-items:stretch}.person{grid-template-columns:auto 1fr}.person-actions{grid-column:1/-1;justify-content:flex-start;margin-left:42px}.person-actions .button.small{padding:7px 9px}.add-person,.person-form,.details,.add-pair{grid-template-columns:1fr}.add-pair>.muted{display:none}.draw-card .row{width:100%}}.secret{background:radial-gradient(1200px 600px at 50% -10%, var(--pine-soft), transparent 70%), var(--paper);position:relative;overflow:hidden}.secret-main{max-width:520px;padding-top:calc(56px + env(safe-area-inset-top));text-align:center;gap:20px;margin:0 auto;display:grid;position:relative}.eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--pine-2);font-size:.8rem;font-weight:600}.greeting{margin-top:-8px;font-size:clamp(2.4rem,9vw,3.4rem)}.secret-card{text-align:left;gap:12px;padding:28px 24px;display:grid}.secret-card h2{font-size:1.3rem}.result{text-align:center;padding:36px 24px 28px;animation:.7s cubic-bezier(.2,.8,.2,1) both reveal}.recipient{font-family:var(--serif);color:var(--pine);overflow-wrap:anywhere;font-size:clamp(2.6rem,11vw,4rem);font-weight:600;line-height:1.05;animation:.8s cubic-bezier(.2,.8,.2,1) .15s both reveal}.wishes,.wish-empty{border-top:1px solid var(--line);text-align:left;margin-top:12px;padding-top:18px}.wishes h3{margin-bottom:6px}.wish-text{white-space:pre-wrap;overflow-wrap:anywhere}.facts{background:var(--line);border:1px solid var(--line);border-radius:var(--radius);text-align:left;grid-template-columns:1fr 1fr;gap:1px;margin:0;display:grid;overflow:hidden}.facts>div{background:var(--surface);padding:14px 18px}.facts>div.wide,.facts>div:only-child{grid-column:1/-1}.facts dt{color:var(--muted);font-size:.78rem;font-weight:600}.facts dd{margin:2px 0 0;font-weight:500}.facts dd:first-letter{text-transform:uppercase}.message{white-space:pre-wrap;font-weight:400}.my-wishes .row{flex-wrap:wrap}.footnote{margin-top:4px}.reveal{justify-items:center;gap:18px;padding:12px 0 8px;display:grid}.gift{cursor:pointer;background:0 0;border:0;border-radius:12px;width:180px;height:180px;padding:0;animation:3.2s ease-in-out 1.2s infinite wobble;position:relative}.gift-box{background:linear-gradient(90deg, transparent calc(50% - 12px), var(--berry) calc(50% - 12px) calc(50% + 12px), transparent calc(50% + 12px)), linear-gradient(180deg, var(--pine-2), var(--pine));border-radius:8px;height:112px;position:absolute;bottom:0;left:14px;right:14px;box-shadow:0 18px 30px -16px #1f2a2499}.gift-lid{background:linear-gradient(90deg, transparent calc(50% - 13px), var(--berry) calc(50% - 13px) calc(50% + 13px), transparent calc(50% + 13px)), linear-gradient(180deg, #357a5e, var(--pine-2));z-index:1;transform-origin:20% 100%;border-radius:7px;height:34px;transition:transform .7s cubic-bezier(.3,1.4,.5,1);position:absolute;top:44px;left:0;right:0}.gift-bow{width:0;height:0;position:absolute;bottom:100%;left:50%}.gift-bow:before,.gift-bow:after{content:"";border:9px solid var(--berry);border-radius:50% 50% 10%;width:38px;height:30px;position:absolute;bottom:-4px}.gift-bow:before{right:0;transform:rotate(-20deg)}.gift-bow:after{left:0;transform:scaleX(-1)rotate(-20deg)}.gift.is-opening{animation:none}.gift.is-opening .gift-lid{transform:translate(-30px,-60px)rotate(-28deg)}.gift.is-opening .gift-box{animation:.5s both settle}.tap-hint{color:var(--muted);font-size:.9rem}@keyframes wobble{0%,80%,to{transform:rotate(0)}84%{transform:rotate(-4deg)}88%{transform:rotate(4deg)}92%{transform:rotate(-2deg)}96%{transform:rotate(1deg)}}@keyframes settle{50%{transform:scaleY(.94)}}@keyframes reveal{0%{opacity:0;transform:translateY(14px)scale(.98)}}.snow{pointer-events:none;position:fixed;inset:0;overflow:hidden}.snow span{background:var(--pine-2);opacity:.18;border-radius:50%;animation:linear infinite fall;position:absolute;top:-10px}@media (prefers-color-scheme:dark){.snow span{opacity:.35;background:#ede7da}}@keyframes fall{to{transform:translate(var(--drift), 105vh)}}.rise{animation:.52s cubic-bezier(.2,.8,.2,1) both rise}.stack-lg>.rise:nth-child(2),.secret-main>.rise:nth-child(2){animation-delay:60ms}.stack-lg>.rise:nth-child(3),.secret-main>.rise:nth-child(3){animation-delay:.12s}.stack-lg>.rise:nth-child(n+4),.secret-main>.rise:nth-child(n+4){animation-delay:.18s}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.snow{display:none}}
