@font-face{font-family:Mountains of Christmas;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/mountains-of-christmas-latin-700-normal-DMJf4AbR.woff2)format("woff2"),url(/assets/mountains-of-christmas-latin-700-normal-wvoUGjtN.woff)format("woff")}:root{--ink:#243b36;--muted:#52655d;--gold:#ffb703;--gold-soft:#fff2c9;--red:#e63946;--red-dark:#c52b39;--red-soft:#ffe6e9;--green:#2f9e6c;--green-dark:#1f7a52;--green-soft:#e1f6ea;--sky:#d7eefc;--radius:20px;--tap:46px;--font:ui-rounded, "SF Pro Rounded", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-festive:"Mountains of Christmas", ui-rounded, "SF Pro Rounded", system-ui, sans-serif;--font-display:ui-rounded, "SF Pro Rounded", "Nunito", system-ui, sans-serif}:root,[data-theme=classic]{--primary:#d62c3b;--primary-dark:#b01f2e;--primary-soft:#ffe6e9;--primary-glow:#d62c3b52;--secondary:#2f9e6c;--secondary-dark:#1f7a52;--secondary-soft:#e1f6ea;--secondary-glow:#2f9e6c47;--bg-1:#fffaf2;--bg-2:#eaf6ff;--bg-glow-1:#e639461f;--bg-glow-2:#2f9e6c24;--bg-glow-3:#ffb70329;--card:#fff;--card-tint:#fffdf8;--border:#eadfce;--shadow-color:#7854281a;--header-bg:#fffdf9;--header-shadow:#78542814;--header-ink:#d62c3b;--header-link:#5b7068;--header-hover-bg:#fff2c9;--header-hover-ink:#243b36;--header-active-bg:#d62c3b;--header-active-ink:#fff;--header-active-glow:#d62c3b4d;--header-field-bg:#fff;--header-field-ink:#243b36;--header-field-border:#eadfce;--ribbon-a:#e63946;--ribbon-b:#fff;--hero-1:#f06565;--hero-2:#d62c3b;--hero-3:#db774f;--on-hero:#fff}[data-theme=evergreen]{--primary:#1f7a52;--primary-dark:#15573a;--primary-soft:#dff3e8;--primary-glow:#1f7a5252;--secondary:#c8353f;--secondary-dark:#9e2630;--secondary-soft:#fde6e8;--secondary-glow:#c8353f47;--bg-1:#f4faf6;--bg-2:#e0f1e8;--bg-glow-1:#1f7a5229;--bg-glow-2:#c8353f14;--bg-glow-3:#ffb70324;--card:#fff;--card-tint:#fafdfb;--border:#cfe3d7;--shadow-color:#14473a1f;--header-bg:#14473a;--header-shadow:#00000047;--header-ink:#ffd35c;--header-link:#cfe9db;--header-hover-bg:#1f6150;--header-hover-ink:#fff;--header-active-bg:#ffd35c;--header-active-ink:#14473a;--header-active-glow:#ffd35c59;--header-field-bg:#1f6150;--header-field-ink:#fff;--header-field-border:#2f7a66;--ribbon-a:#ffd35c;--ribbon-b:#1f7a52;--hero-1:#39a576;--hero-2:#1f7a52;--hero-3:#2f9e6c;--on-hero:#fff}[data-theme=candy]{--primary:#d6285a;--primary-dark:#a81b44;--primary-soft:#ffe3ec;--primary-glow:#d6285a52;--secondary:#1ea896;--secondary-dark:#0f6f63;--secondary-soft:#dcf7f2;--secondary-glow:#1ea89647;--bg-1:#fff5f8;--bg-2:#ffe7ee;--bg-glow-1:#d6285a1f;--bg-glow-2:#1ea8961f;--bg-glow-3:#ffb7031f;--card:#fff;--card-tint:#fffafb;--border:#f6d3dd;--shadow-color:#a81b441a;--header-bg:#fff;--header-shadow:#a81b441a;--header-ink:#d6285a;--header-link:#7a4658;--header-hover-bg:#ffe3ec;--header-hover-ink:#4a1a2c;--header-active-bg:#d6285a;--header-active-ink:#fff;--header-active-glow:#d6285a4d;--header-field-bg:#fff0f4;--header-field-ink:#3a1a26;--header-field-border:#f6c9d6;--ribbon-a:#d6285a;--ribbon-b:#fff;--hero-1:#eb668c;--hero-2:#d6285a;--hero-3:#d17590;--on-hero:#fff}[data-theme=frost]{--primary:#2d6fa3;--primary-dark:#1d4e78;--primary-soft:#deeefb;--primary-glow:#2d6fa352;--secondary:#3a8fb0;--secondary-dark:#25627c;--secondary-soft:#e1f3f9;--secondary-glow:#3a8fb047;--bg-1:#f2f8ff;--bg-2:#dce9f8;--bg-glow-1:#2d6fa324;--bg-glow-2:#a0c8eb4d;--bg-glow-3:#ffffffb3;--card:#fff;--card-tint:#f9fcff;--border:#cddcee;--shadow-color:#1e4e781f;--header-bg:#1e3a5f;--header-shadow:#00000047;--header-ink:#fff;--header-link:#cfe0f5;--header-hover-bg:#2c5282;--header-hover-ink:#fff;--header-active-bg:#fff;--header-active-ink:#1e3a5f;--header-active-glow:#ffffff4d;--header-field-bg:#2c5282;--header-field-ink:#fff;--header-field-border:#46689a;--ribbon-a:#e63946;--ribbon-b:#fff;--hero-1:#5399c8;--hero-2:#2d6fa3;--hero-3:#4a8fc6;--on-hero:#fff}[data-theme=gingerbread]{--primary:#b3202f;--primary-dark:#86161f;--primary-soft:#fbe3e5;--primary-glow:#b3202f52;--secondary:#2f6b4f;--secondary-dark:#214d39;--secondary-soft:#e0f0e7;--secondary-glow:#2f6b4f47;--bg-1:#fff6e6;--bg-2:#f3dcb6;--bg-glow-1:#b3202f1a;--bg-glow-2:#ffb70338;--bg-glow-3:#6b3f231a;--card:#fffaf0;--card-tint:#fff6e4;--border:#e4cfa6;--shadow-color:#6b3f2329;--header-bg:#6b3f23;--header-shadow:#00000047;--header-ink:#ffd35c;--header-link:#f4dfc0;--header-hover-bg:#82502e;--header-hover-ink:#fff;--header-active-bg:#ffd35c;--header-active-ink:#4a2a12;--header-active-glow:#ffd35c59;--header-field-bg:#82502e;--header-field-ink:#fff;--header-field-border:#9a6640;--ribbon-a:#ffd35c;--ribbon-b:#b3202f;--hero-1:#d9733a;--hero-2:#b3202f;--hero-3:#c9503e;--on-hero:#fff}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{min-height:100dvh;font-family:var(--font);color:var(--ink);background:radial-gradient(900px 500px at 0% -10%, var(--bg-glow-1), transparent 60%), radial-gradient(900px 500px at 100% 0%, var(--bg-glow-2), transparent 60%), radial-gradient(700px 500px at 50% 110%, var(--bg-glow-3), transparent 60%), linear-gradient(180deg, var(--bg-1), var(--bg-2));-webkit-tap-highlight-color:transparent;background-attachment:fixed;margin:0;font-size:17px;line-height:1.5}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.01em;margin:0 0 .4em;font-weight:800;line-height:1.2}h1{font-size:clamp(1.8rem,1.2rem + 2.2vw,2.6rem)}h2{font-size:1.35rem}h3{margin:0;font-size:1.1rem}p{margin:0 0 .8em}a{color:var(--primary-dark)}.muted{color:var(--muted)}.small{font-size:.88rem}.sr-only{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.shell{z-index:1;flex-direction:column;min-height:100dvh;display:flex;position:relative}.topbar{z-index:10;padding:.5rem max(1rem, env(safe-area-inset-right)) .7rem max(1rem, env(safe-area-inset-left));padding-top:max(.5rem, env(safe-area-inset-top));background:var(--header-bg);box-shadow:0 4px 18px var(--header-shadow);flex-wrap:wrap;align-items:center;gap:1rem;display:flex;position:sticky;top:0}.topbar:after{content:"";background:repeating-linear-gradient(135deg, var(--ribbon-a) 0 10px, var(--ribbon-b) 10px 20px);height:6px;position:absolute;bottom:0;left:0;right:0}.brand{font-family:var(--font-display);color:var(--header-ink);min-height:var(--tap);align-items:center;gap:.5rem;font-size:1.3rem;font-weight:800;text-decoration:none;display:flex}.brand-icon{font-size:1.5rem}.nav{flex:1;gap:.25rem;display:flex}.nav a{min-height:var(--tap);color:var(--header-link);border-radius:999px;align-items:center;padding:0 1rem;font-weight:700;text-decoration:none;display:inline-flex}.nav a:hover{color:var(--header-hover-ink);background:var(--header-hover-bg)}.nav a.active{color:var(--header-active-ink);background:var(--header-active-bg);box-shadow:0 4px 12px var(--header-active-glow)}.who{align-items:center;gap:.6rem;margin-left:auto;display:flex}.actas{border:2px solid var(--header-field-border);background:var(--header-field-bg);min-height:40px;color:var(--header-field-ink);border-radius:999px;flex-direction:row;align-items:center;gap:.4rem;margin:0;padding:0 .3rem 0 .8rem;font-size:.85rem}.actas-label{color:var(--header-link);white-space:nowrap;font-weight:800}.actas select{width:auto;max-width:13rem;min-height:36px;color:inherit;background:0 0;border:0;padding:0 .5rem;font-size:16px;font-weight:700}.actas select option{color:#243b36;background:#fff}.actas select:focus{box-shadow:none}.actas-on{border-color:var(--gold);background:var(--gold-soft);color:#3b2a1a}.actas-on .actas-label{color:#5a4300}.acting-banner{padding:.6rem max(1rem, env(safe-area-inset-right)) .6rem max(1rem, env(safe-area-inset-left));background:var(--gold);color:#4a3200;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;font-weight:600;display:flex}.acting-banner .btn-outline{color:#4a3200;background:#fff;border-color:#4a3200}.who-name{color:var(--header-link);text-overflow:ellipsis;white-space:nowrap;max-width:12rem;overflow:hidden}.page{width:100%;max-width:1100px;padding:1.5rem max(1rem, env(safe-area-inset-right)) 2rem max(1rem, env(safe-area-inset-left));flex:1;margin:0 auto}.narrow{max-width:520px;margin:0 auto}.stack{flex-direction:column;gap:1.25rem;display:flex}.stack.has-basket{padding-bottom:9rem}.grid-2{grid-template-columns:1fr 1fr;align-items:start;gap:1.25rem;display:grid}.footer{text-align:center;padding:1rem 1rem calc(1rem + env(safe-area-inset-bottom));color:var(--muted);font-size:.85rem}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.page-head h1{margin:0}.center-screen{z-index:1;place-items:center;min-height:100dvh;padding:1rem;display:grid;position:relative}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 8px 24px var(--shadow-color);padding:clamp(1rem,2.5vw,1.6rem)}.hero{text-align:center;color:var(--on-hero);background:linear-gradient(135deg, var(--hero-1) 0%, var(--hero-2) 55%, var(--hero-3) 100%);box-shadow:0 14px 34px var(--primary-glow);border:0;position:relative;overflow:hidden}.hero:before,.hero:after{content:"❄";content:"❄" / "";color:#ffffff47;pointer-events:none;font-size:5rem;position:absolute}.hero:before{top:-.6rem;left:4%}.hero:after{font-size:7rem;bottom:-1rem;right:5%}.hero .muted{color:var(--on-hero);opacity:.92}.eyebrow{text-transform:uppercase;letter-spacing:.18em;color:var(--gold-soft);margin-bottom:.3rem;font-size:.8rem;font-weight:800}.btn{min-height:var(--tap);font:inherit;cursor:pointer;touch-action:manipulation;border:2px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:.4rem;padding:0 1.2rem;font-weight:800;text-decoration:none;transition:transform 80ms,background .15s,border-color .15s;display:inline-flex}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff;box-shadow:0 6px 16px var(--primary-glow)}.btn-primary:hover:not(:disabled){background:var(--primary-dark)}.btn-outline{color:var(--secondary-dark);border-color:var(--secondary);background:#fff}.btn-outline:hover{background:var(--secondary-soft)}.btn-ghost{color:var(--ink);background:0 0}.btn-ghost:hover{background:var(--gold-soft)}.topbar .btn-ghost{color:var(--header-link)}.topbar .btn-ghost:hover{color:var(--header-hover-ink);background:var(--header-hover-bg)}.btn-sm{min-height:40px;padding:0 .9rem;font-size:.92rem}.btn-block{width:100%}.danger{color:var(--red-dark)}summary.btn{list-style:none}summary.btn::-webkit-details-marker{display:none}:focus-visible{outline:3px solid var(--gold);outline-offset:2px}.form{flex-direction:column;gap:1rem;display:flex}label{flex-direction:column;gap:.3rem;font-size:.95rem;font-weight:700;display:flex}input,select,textarea{width:100%;min-height:var(--tap);font:inherit;color:var(--ink);background:#fff;border:2px solid #eadcc8;border-radius:14px;padding:.6rem .9rem;font-size:16px;font-weight:500}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#a9b7b1}input:focus,select:focus,textarea:focus{border-color:var(--secondary);box-shadow:0 0 0 4px var(--secondary-glow);outline:none}.form-row{gap:1rem;display:flex}.form-row .grow{flex:1}.actions{align-items:center;gap:.6rem;display:flex}.actions.wrap{flex-wrap:wrap}.check{min-height:var(--tap);flex-direction:row;align-items:center;gap:.6rem;font-weight:600}.check input{width:22px;height:22px;min-height:0;accent-color:var(--primary)}.year-input{width:8rem}.budget-input{width:14rem;max-width:100%}.alert{border:1px solid;border-radius:14px;margin-bottom:1rem;padding:.8rem 1rem}.alert-error{background:var(--red-soft);color:#8a1f2b;border-color:#f5a3ab}.alert-success{background:var(--green-soft);color:#14573a;border-color:#8fd5b3}.alert-info{background:var(--gold-soft);color:#6b4e00;border-color:#f4cf6a}.stack>.alert{margin-bottom:0}.alert-dismissible{justify-content:space-between;align-items:center;gap:.8rem;display:flex}.badge{font-size:.8rem;font-weight:800;font-family:var(--font);color:var(--ink);background:#f4ece0;border-radius:999px;margin:.15rem .4rem .15rem 0;padding:.15rem .7rem;display:inline-block}.badge-ok{background:var(--green-soft);color:var(--green-dark)}.badge-gold{background:var(--gold);color:#4a3200;margin-left:.6rem}.badge-alert{background:var(--red);color:#fff;margin-left:.5rem}.dot{background:var(--red);border-radius:50%;width:10px;height:10px;display:inline-block;box-shadow:0 0 0 3px #e6394640}.login-wrap,.auth-card{width:100%;max-width:430px}.auth-hero{text-align:center;margin-bottom:1rem}.auth-emoji{font-size:3.2rem}.tabs{background:#f4ece0;border-radius:999px;margin-bottom:1.2rem;padding:4px;display:flex}.tab{min-height:42px;color:var(--muted);font:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:0;border-radius:999px;flex:1;font-weight:800}.tab.active{background:var(--primary);color:#fff;box-shadow:0 4px 10px var(--primary-glow)}.divider{color:var(--muted);align-items:center;gap:.8rem;margin:1.2rem 0;font-size:.85rem;display:flex}.divider:before,.divider:after{content:"";background:var(--border);flex:1;height:1px}.oauth{flex-direction:column;gap:.6rem;display:flex}.countdown{z-index:1;justify-content:center;gap:clamp(.5rem,2vw,1.2rem);margin:1rem 0 .4rem;display:flex;position:relative}.countdown-cell{background:#fff;border-radius:18px;flex-direction:column;align-items:center;min-width:clamp(64px,14vw,110px);padding:.7rem .4rem;display:flex;box-shadow:0 6px 16px #781e2833}.countdown-num{font-family:var(--font-display);font-variant-numeric:tabular-nums;color:var(--primary);font-size:clamp(2rem,1rem + 4vw,3.6rem);font-weight:800;line-height:1}.countdown-label{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-top:.3rem;font-size:.72rem;font-weight:700}.countdown-merry{font-family:var(--font-display);margin:1rem 0;font-size:2.4rem;font-weight:800}.reveal{width:100%;min-height:150px;font:inherit;color:var(--ink);cursor:pointer;touch-action:manipulation;border:3px dashed var(--gold);border-radius:var(--radius);background:repeating-linear-gradient(45deg, #fff 0 14px, var(--primary-soft) 14px 28px);flex-direction:column;justify-content:center;align-items:center;gap:.2rem;margin:.6rem 0 1rem;padding:1rem;display:flex}.reveal.revealed{border-style:solid;border-color:var(--secondary);background:linear-gradient(135deg, var(--secondary-soft), var(--gold-soft))}.reveal-icon{font-size:3rem}.reveal-small{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-size:.8rem;font-weight:800}.reveal-name{font-family:var(--font-display);color:var(--primary);word-break:break-word;font-size:clamp(1.8rem,1rem + 3vw,2.8rem);font-weight:800}.link-list{margin:0 0 .6rem;padding:0;list-style:none}.link-list a{min-height:var(--tap);align-items:center;font-weight:700;display:flex}.budget-card{background:linear-gradient(135deg, var(--gold-soft), #fff 70%);border-color:#f4dc8a}.budget-amount{font-family:var(--font-display);color:var(--secondary-dark);overflow-wrap:anywhere;margin:.2rem 0 .4rem;font-size:clamp(2rem,1.2rem + 3vw,3rem);font-weight:800;line-height:1.1}.stack>.member+.member{margin-top:.8rem}.member{--who:var(--primary);box-shadow:0 1px 2px #281e141f, 0 6px 12px #281e141a, 0 16px 32px color-mix(in srgb, var(--who) 28%, transparent), 0 28px 48px -12px #281e142e;border:0;padding:0;overflow:hidden}.member-head{background:linear-gradient(135deg, color-mix(in srgb, var(--who) 20%, #fff), color-mix(in srgb, var(--who) 7%, #fff));border-bottom:2px solid color-mix(in srgb, var(--who) 35%, #fff);box-shadow:0 6px 14px -8px color-mix(in srgb, var(--who) 55%, transparent);z-index:1;flex-wrap:wrap;align-items:center;gap:1rem;padding:1rem clamp(1rem,2.5vw,1.6rem);display:flex;position:relative}.member-head .actions{margin-left:auto}.member-title{flex:14rem;min-width:0}.member-title h2{font-family:var(--font-festive);letter-spacing:0;overflow-wrap:anywhere;font-size:2.1rem;font-weight:700;line-height:1.15}.avatar{background:var(--who);color:#fff;width:3.4rem;height:3.4rem;font-family:var(--font-display);box-shadow:0 0 0 3px var(--who), 0 6px 14px color-mix(in srgb, var(--who) 45%, transparent);border:3px solid #fff;border-radius:50%;flex:none;place-items:center;font-size:1.7rem;font-weight:800;display:grid}.member-body{padding:clamp(1rem,2.5vw,1.6rem)}.member-pick{--who:#b88a00;background:linear-gradient(#fffdf2,#fff 40%)}.member-pick .avatar{background:#8a6400}.add-gift{margin-bottom:1rem}.add-gift .gift-form{margin-top:1rem}.gifts{grid-template-columns:minmax(0,1fr);gap:1.1rem;margin:0;padding:0;list-style:none;display:grid}.gift{background:var(--card-tint);border:2px solid var(--border);min-width:0;box-shadow:0 2px 6px var(--shadow-color);border-radius:18px;align-self:start;transition:border-color .15s,background .15s,box-shadow .15s,transform .15s}.gift:hover:not(.dragging){box-shadow:0 10px 22px var(--shadow-color);transform:translateY(-2px)}.gift.selected{border-color:var(--secondary);background:var(--secondary-soft);box-shadow:0 6px 16px var(--secondary-glow)}.gift-head{color:#fff;background:linear-gradient(135deg, var(--primary), var(--primary-dark));border-radius:15px 15px 0 0;align-items:center;gap:.5rem;padding:.7rem .8rem .9rem;display:flex;position:relative}.gift-head:after{content:"";background:repeating-linear-gradient(-45deg, var(--ribbon-a) 0 8px, var(--ribbon-b) 8px 16px);height:6px;position:absolute;bottom:0;left:0;right:0}.gift.selected .gift-head{background:linear-gradient(135deg, var(--secondary), var(--secondary-dark))}.gift-head h3{overflow-wrap:anywhere;color:#fff;text-shadow:0 1px 2px #0003;flex:1;min-width:0;font-size:1.15rem}.gift-head .pickbox{background:#ffffff40;border-color:#ffffffd9}.gift-head .pick input:checked+.pickbox{background:#fff;border-color:#fff}.gift-head .pick input:checked+.pickbox:after{color:var(--secondary-dark)}.gift-content>.preview{margin:.8rem .9rem 0}.gift-main{padding:.7rem .9rem .9rem}.gifts>.gift .gift-content{flex-direction:row-reverse;align-items:stretch;gap:1.1rem;padding:.9rem;display:flex}.gifts>.gift .gift-content>.preview{flex-direction:column;flex:0 0 clamp(190px,28%,300px);margin:0;display:flex}.gifts>.gift .preview>a{flex-direction:column;flex:1;min-height:0;display:flex}.gifts>.gift .preview-media{aspect-ratio:auto;flex:1;min-height:120px;position:relative}.gifts>.gift .preview-media img{position:absolute;inset:0}.gifts>.gift .gift-main{flex-direction:column;flex:1;min-width:0;padding:0;display:flex}.gifts>.gift .gift-actions{margin-top:auto;padding-top:.8rem}@media (width<=640px){.gifts>.gift .gift-content{flex-direction:column}.gifts>.gift .gift-content>.preview{flex:none}.gifts>.gift .preview>a{display:block}.gifts>.gift .preview-media{aspect-ratio:2.2;flex:none}}.drag-handle{color:#ffffffe6;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;background:0 0;border:0;border-radius:10px;flex:none;place-items:center;width:2rem;min-height:2.6rem;margin:-.3rem 0 -.3rem -.3rem;padding:0;font-size:1.5rem;line-height:1;display:grid}.drag-handle:hover{background:#fff3}.drag-handle:focus-visible{outline:3px solid var(--gold);outline-offset:1px}.drag-handle:active{cursor:grabbing}.group-head .drag-handle{color:#2d6fa3;margin:-.3rem 0}.group-head .drag-handle:hover{background:#2d6fa326}.gift.dragging,.gift-group-wrap.dragging>.gift-group{cursor:grabbing;box-shadow:0 20px 44px #281e1459}.gift.dragging{transform-origin:50%}.gift>.gift-form{margin:.9rem}.gift>.thread{margin:0 .9rem .9rem}.price{white-space:nowrap;background:var(--gold-soft);color:#7a4b00;border:1px solid #f4dc8a;border-radius:999px;padding:.1rem .7rem;font-size:.9rem;font-weight:800;box-shadow:0 2px 6px #00000026}.gift-desc{color:var(--muted);white-space:pre-wrap;overflow-wrap:anywhere;margin:.4rem 0 0}.gift-actions{flex-wrap:wrap;gap:.4rem;margin-top:.8rem;display:flex}.gift-group-wrap{grid-column:1/-1;list-style:none}.gift-group{background:linear-gradient(#eaf5ff,#fff 70%);border:2.5px dashed #6aa9d8;border-radius:20px;padding:.7rem .9rem 1rem}.group-head{color:#2d6fa3;flex-wrap:wrap;align-items:center;gap:.4rem;margin:0 0 .9rem;font-weight:800;display:flex}.group-head .muted{font-weight:600}.group-cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:1.5rem 1.1rem;margin:0;padding:0;list-style:none;display:grid}.gift-or{position:relative}.gift-or:before{content:attr(data-or);text-transform:uppercase;z-index:1;color:#fff;letter-spacing:.08em;background:#6aa9d8;border-radius:999px;padding:.05rem .75rem;font-size:.78rem;font-weight:900;position:absolute;top:-.85rem;left:1rem;box-shadow:0 3px 8px #2d6fa359}.basket-buy{color:var(--secondary-dark)}.pick{cursor:pointer;flex-direction:row;flex:none;justify-content:center;align-items:center;width:44px;height:44px;margin:-6px 0 -6px -8px;position:relative}.pick input{opacity:0;cursor:pointer;z-index:1;width:100%;height:100%;min-height:0;margin:0;position:absolute;inset:0}.pickbox{background:#fff;border:2.5px solid #cdbfa8;border-radius:9px;place-items:center;width:26px;height:26px;transition:all .12s;display:grid}.pickbox:after{content:"✓";color:#fff;font-size:1rem;font-weight:900;transition:transform .12s;transform:scale(0)}.pick input:checked+.pickbox{background:var(--secondary);border-color:var(--secondary)}.pick input:checked+.pickbox:after{transform:scale(1)}.pick input:focus-visible+.pickbox{outline:3px solid var(--gold);outline-offset:2px}.toast{z-index:30;border:2px solid var(--secondary);width:min(540px,100% - 1.6rem);box-shadow:0 16px 40px var(--secondary-glow), 0 4px 12px #0000001f;background:#fff;border-radius:18px;align-items:center;gap:.7rem;padding:.8rem .9rem .8rem 1.1rem;animation:.3s cubic-bezier(.2,.9,.3,1.2) toast-in;display:flex;position:fixed;top:8.2rem;left:50%;transform:translate(-50%)}.toast-text{overflow-wrap:anywhere;flex-direction:column;flex:1;gap:.1rem;min-width:0;display:flex}.toast-text span{color:var(--muted);font-size:.92rem;font-weight:600}.toast-close{background:var(--card-tint);width:2rem;height:2rem;min-height:0;color:var(--ink);cursor:pointer;border:0;border-radius:50%;flex:none;padding:0}.toast-close:hover{background:var(--secondary-soft)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,-14px)scale(.96)}to{opacity:1;transform:translate(-50%)scale(1)}}@media (prefers-reduced-motion:reduce){.toast{animation:none}}@media (height<=700px){.toast{top:7.8rem}}.price-col{flex:0 25rem;min-width:0}.price-field{grid-template-columns:minmax(0,11rem) minmax(0,1fr);gap:.5rem;display:grid}.price-input{align-items:center;min-width:0;display:flex;position:relative}.price-input input{flex:1;min-width:0}.price-input.numeric input{text-align:left}.price-adorn{color:var(--muted);pointer-events:none;font-weight:800;position:absolute;left:.9rem}.price-adorn.after{font-size:.8rem;left:auto;right:.8rem}.price-input:has(.price-adorn:not(.after)) input{padding-left:1.9rem}.price-input:has(.price-adorn.after) input{padding-right:8.2rem}@media (width<=640px){.price-field{grid-template-columns:minmax(0,1fr)}.price-col{flex:none}}.form-bar{z-index:25;left:50%;bottom:max(.8rem, env(safe-area-inset-bottom));border:2px solid var(--primary);width:min(720px,100% - 1.6rem);box-shadow:0 14px 40px var(--primary-glow), 0 4px 12px #0000001f;background:#fff;border-radius:22px;align-items:center;gap:.6rem;padding:.6rem .7rem .6rem 1.1rem;animation:.25s ease-out bar-up;display:flex;position:fixed;transform:translate(-50%)}body:has(.basket) .form-bar{bottom:calc(max(.8rem, env(safe-area-inset-bottom)) + 5.6rem)}.form-bar-label{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-weight:800;overflow:hidden}@keyframes bar-up{0%{opacity:0;transform:translate(-50%,16px)}to{opacity:1;transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.form-bar{animation:none}}.sale-checks{flex-direction:column;gap:.1rem;display:flex}.sale-checks .check.sub{margin-left:1.9rem;font-weight:600}.price.on-sale{color:#8f1d12;background:#ffe9e6;border-color:#f5b3ab;align-items:center;gap:.45rem;display:inline-flex}.sale-flag{letter-spacing:.05em;text-transform:uppercase;color:#fff;background:#d63a2a;border-radius:999px;padding:.05rem .5rem;font-size:.72rem;font-weight:900}.fact-sale{color:#7a1a10;background:#fff4f2;border-color:#f5b3ab}.more-details{border:1px dashed var(--border);background:var(--card-tint);border-radius:14px;padding:.2rem .9rem .9rem}.more-details>summary{cursor:pointer;min-height:var(--tap);align-items:center;gap:.4rem;font-weight:800;list-style:none;display:flex}.more-details>summary::-webkit-details-marker{display:none}.more-details[open]>summary{margin-bottom:.3rem}.size-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.6rem;display:grid}.field{flex-direction:column;gap:.35rem;display:flex}.field-label{font-weight:700}.colour-picker{flex-direction:column;gap:.6rem;display:flex}.swatch-grid{grid-template-columns:repeat(auto-fill,minmax(2.6rem,1fr));gap:.5rem;display:grid}.swatch{aspect-ratio:1;cursor:pointer;background:var(--sw);border:2px solid #00000026;border-radius:50%;width:100%;max-width:3rem;min-height:0;padding:0;transition:transform .12s,box-shadow .12s;position:relative;box-shadow:inset 0 0 0 2px #fff9}.swatch:hover{transform:scale(1.1)}.swatch:focus-visible{outline:3px solid var(--gold);outline-offset:2px}.swatch.on{border-color:var(--ink);box-shadow:0 0 0 3px #fff, 0 0 0 5px var(--ink);transform:scale(1.05)}.swatch.on:after{content:"✓";color:#fff;text-shadow:0 0 3px #000c,0 0 6px #00000080;place-items:center;font-size:1.1rem;font-weight:900;display:grid;position:absolute;inset:0}.chip-list{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.chip{border:1.5px solid var(--border);background:#fff;border-radius:999px;align-items:center;gap:.4rem;padding:.2rem .3rem .2rem .7rem;font-size:.9rem;font-weight:700;display:inline-flex}.chip button{background:var(--card-tint);width:1.6rem;height:1.6rem;min-height:0;color:var(--ink);cursor:pointer;border:0;border-radius:50%;padding:0;font-size:1.1rem;line-height:1}.chip button:hover{background:var(--primary-soft)}.dot-swatch{border:1.5px solid #00000040;border-radius:50%;flex:none;width:.95rem;height:.95rem;display:inline-block}.colour-custom{align-items:center;gap:.5rem;display:flex}.colour-custom input{flex:1;min-width:0}.gift-facts{flex-wrap:wrap;gap:.4rem;margin:.6rem 0 0;padding:0;list-style:none;display:flex}.fact{border:1.5px solid var(--border);overflow-wrap:anywhere;background:#fff;border-radius:999px;flex-wrap:wrap;align-items:center;gap:.3rem .45rem;padding:.2rem .75rem;font-size:.88rem;font-weight:700;display:inline-flex}.fact-label{color:var(--muted);font-weight:800}.colour-pill{align-items:center;gap:.3rem;display:inline-flex}@media (width<=640px){.size-row{grid-template-columns:1fr}}.title-tag{vertical-align:middle;font-family:var(--font);letter-spacing:0;background:linear-gradient(135deg, var(--gold-soft), #fff);color:#6b4200;border:1.5px solid #f4dc8a;border-radius:999px;margin:0 .6rem 0 .7rem;padding:.12rem .8rem;font-size:.85rem;font-style:italic;font-weight:800;display:inline-block;box-shadow:0 2px 6px #b88a002e}.title-tag:before{content:"✨ ";content:"✨ " / "";font-style:normal}.title-preview{background:var(--card-tint);border:1px dashed var(--border);border-radius:14px;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.7rem .9rem;display:flex}.title-preview .title-tag{margin:0}.title-name{font-family:var(--font-festive);font-size:1.5rem;font-weight:700}.stack{position:relative}.member{scroll-margin-top:8.5rem}.gift-timeline,.jump{display:none}.tl-item,.jump-row{--who:var(--primary);font:inherit;color:inherit}.tl-pick{--who:#b88a00}.tl-name,.tl-meta{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.tl-name{font-weight:800;line-height:1.25}.tl-meta{color:var(--muted);font-size:.75rem;font-weight:600}@media (width>=1560px){.gift-timeline{width:200px;margin-right:2rem;display:block;position:absolute;top:0;bottom:0;right:100%}.gift-timeline ol{max-height:calc(100vh - 9.5rem);margin:0;padding:.8rem .7rem;list-style:none;position:sticky;top:7.5rem;overflow-y:auto}.gift-timeline ol:before{content:"";background:var(--border);border-radius:3px;width:3px;position:absolute;top:1.9rem;bottom:1.9rem;left:calc(1.1rem + 10.5px)}.tl-item{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:12px;align-items:flex-start;gap:.7rem;width:100%;padding:.5rem .5rem .5rem .4rem;transition:background .15s;display:flex;position:relative}.tl-item:hover{background:color-mix(in srgb, var(--who) 8%, transparent)}.tl-item:focus-visible{outline:3px solid var(--gold);outline-offset:1px}.tl-item.active{background:color-mix(in srgb, var(--who) 14%, transparent)}.tl-item.active .tl-name{color:var(--who)}.tl-dot{box-sizing:border-box;border:4px solid var(--who);background:#fff;border-radius:50%;flex:none;width:24px;height:24px;margin-top:.1rem;transition:transform .15s,box-shadow .15s,background .15s}.tl-item.active .tl-dot{background:var(--who);box-shadow:0 0 0 4px color-mix(in srgb, var(--who) 25%, transparent);transform:scale(1.15)}.tl-text{flex:1;min-width:0}}@media (width<=1559.98px){.jump{z-index:15;pointer-events:none;width:min(290px,80vw);transition:transform .3s cubic-bezier(.2,.8,.2,1);display:block;position:fixed;top:8.5rem;bottom:6.5rem;right:0;transform:translate(100%)}.jump.open{transform:none}.jump-toggle{pointer-events:auto;background:var(--primary);color:#fff;cursor:pointer;width:2.7rem;height:3.6rem;box-shadow:-4px 4px 14px var(--primary-glow);border:0;border-radius:16px 0 0 16px;place-items:center;padding:0;display:grid;position:absolute;top:.5rem;left:-2.7rem}.jump-toggle svg{transition:transform .3s}.jump.open .jump-toggle svg{transform:rotate(180deg)}.jump-toggle:focus-visible{outline:3px solid var(--gold);outline-offset:2px}.jump-panel{pointer-events:auto;overscroll-behavior:contain;background:var(--card);max-height:100%;box-shadow:-10px 4px 30px var(--shadow-color);border-radius:20px 0 0 20px;flex-direction:column;padding:.7rem .5rem .7rem .4rem;display:flex;overflow-y:auto}.jump:not(.open) .jump-panel{box-shadow:none}.jump-hint{color:var(--muted);margin:0 0 .4rem .6rem;font-size:.75rem;font-weight:700}.jump-track{min-height:calc(var(--n,1) * 2.35rem);touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab;flex-direction:column;flex:0 auto;display:flex;position:relative}.jump-track.dragging{cursor:grabbing}.jump-rail{background:var(--border);border-radius:6px;width:6px;position:absolute;top:0;bottom:0;left:20px}.jump-knob{z-index:2;background:var(--primary);color:#fff;pointer-events:none;width:36px;height:36px;box-shadow:0 0 0 2px var(--primary), 0 6px 14px var(--primary-glow);border:3px solid #fff;border-radius:50%;place-items:center;margin-top:-18px;font-size:1.1rem;font-weight:900;transition:top .15s,transform .15s;display:grid;position:absolute;left:5px}.jump-track.dragging .jump-knob{transition:transform .15s;transform:scale(1.15)}.jump-row{text-align:left;cursor:pointer;touch-action:none;background:0 0;border:0;border-radius:12px;flex-direction:column;flex:2.9rem;justify-content:center;min-width:0;min-height:2.35rem;max-height:3.3rem;padding:.15rem .5rem .15rem 3.1rem;display:flex;position:relative}.jump-row.active{background:color-mix(in srgb, var(--who) 14%, transparent)}.jump-row.active .tl-name{color:var(--who)}.jump-row:focus-visible{outline:3px solid var(--gold);outline-offset:-2px}}@media (width<=1559.98px) and (height<=700px){.jump{top:7.8rem;bottom:.8rem}.jump-hint{display:none}}@media (prefers-reduced-motion:reduce){.jump,.jump-knob,.jump-toggle svg{transition:none}}.preview{min-width:0;max-width:100%;margin-bottom:.7rem}.preview a{text-decoration:none;display:block}.preview-media{aspect-ratio:2.2;border:1px solid var(--border);background:#fff;border-radius:12px;max-height:200px;display:block;overflow:hidden}.preview-media img{object-fit:cover;width:100%;height:100%;display:block}.preview-media.contain img{object-fit:contain;background:#fff}.preview-fallback{background:radial-gradient(circle at 20% 25%, #fff 0 3px, transparent 4px), radial-gradient(circle at 78% 70%, #fff 0 4px, transparent 5px), radial-gradient(circle at 60% 20%, #fff 0 2px, transparent 3px), linear-gradient(135deg, var(--primary-soft), var(--gold-soft) 55%, var(--secondary-soft));border:0;place-items:center;display:grid}.preview-icon{filter:drop-shadow(0 4px 6px #0000001f);font-size:clamp(2.4rem,8vw,3.4rem)}.preview-caption{min-width:0;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;min-height:1.2em;margin-top:.35rem;font-size:.8rem;overflow:hidden}.switch-row{cursor:pointer;min-height:var(--tap);flex-direction:row;align-items:center;gap:.6rem;font-weight:800}.thread{border-top:1px solid var(--border);margin-top:.9rem;padding-top:.9rem}.bubbles{-webkit-overflow-scrolling:touch;flex-direction:column;gap:.6rem;max-height:340px;margin:0 0 .8rem;padding:0;list-style:none;display:flex;overflow-y:auto}.bubble{background:#eef4f1;border-radius:18px 18px 18px 4px;align-self:flex-start;max-width:88%;padding:.6rem .9rem}.bubble.mine{background:var(--primary-soft);border-radius:18px 18px 4px;align-self:flex-end}.bubble p{white-space:pre-wrap;overflow-wrap:anywhere;margin:.1rem 0}.bubble-author{color:var(--secondary-dark);font-size:.75rem;font-weight:800}.bubble.mine .bubble-author{color:var(--primary-dark)}.bubble-time{color:var(--muted);font-size:.7rem}.comment-form{align-items:flex-end;gap:.6rem;display:flex}.basket{z-index:20;left:50%;bottom:max(.8rem, env(safe-area-inset-bottom));border:2px solid var(--secondary);width:min(720px,100% - 1.6rem);box-shadow:0 14px 40px var(--secondary-glow);background:#fff;border-radius:22px;grid-template-columns:1fr auto;align-items:center;gap:.4rem 1rem;padding:.8rem 1rem;display:grid;position:fixed;transform:translate(-50%)}.basket .btn{grid-area:1/2}.basket-main{flex-wrap:wrap;align-items:baseline;gap:.9rem;display:flex}.basket-count{color:var(--muted);font-weight:800}.basket-total{font-family:var(--font-display);color:var(--secondary-dark);font-variant-numeric:tabular-nums;font-size:1.7rem;font-weight:800}.basket-total.incomplete{color:var(--ink)}.basket-plus{color:var(--muted)}.basket-q{color:#b45309;border-bottom:3px dotted #f59e0b;padding:0 .1rem}.basket-none{color:#b45309}.basket-warn{color:#6b4e00;background:#fff4d6;border:1px solid #f4cf6a;border-radius:12px;grid-column:1/-1;align-items:flex-start;gap:.5rem;padding:.5rem .75rem;font-size:.88rem;display:flex}.basket-note{color:var(--muted);grid-column:1/-1;font-size:.82rem}.rows{flex-direction:column;margin-top:1rem;display:flex}.row{border-top:1px solid var(--border);grid-template-columns:90px minmax(0,1.4fr) minmax(0,1.2fr) 110px auto;align-items:center;gap:.8rem;padding:.7rem .2rem;display:grid}.alloc .row{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) 130px}.row-head{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);border-top:0;padding-bottom:.2rem;font-size:.75rem;font-weight:800}.row-dim{opacity:.65}.row-invalid{background:var(--red-soft);border-radius:12px}.who-cell{flex-direction:column;min-width:0;display:flex}.who-cell .small{text-overflow:ellipsis;overflow:hidden}.row-actions{justify-content:flex-end;display:flex}.temp-pass{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.temp-pass code{-webkit-user-select:all;user-select:all;background:#fff;border:1px solid #f4cf6a;border-radius:8px;padding:.15rem .6rem;font-size:1.2rem}.switch{flex:none;width:60px;height:34px;margin-left:.2rem;display:inline-block;position:relative}.switch input{opacity:0;z-index:1;cursor:pointer;width:100%;height:100%;min-height:0;margin:0;position:absolute;inset:0}.slider{background:#d9cdb9;border-radius:999px;transition:background .2s;position:absolute;inset:0}.slider:after{content:"";background:#fff;border-radius:50%;width:26px;height:26px;transition:transform .2s;position:absolute;top:4px;left:4px;box-shadow:0 2px 5px #00000040}.switch input:checked+.slider{background:var(--secondary)}.switch input:checked+.slider:after{transform:translate(26px)}.switch input:focus-visible+.slider{outline:3px solid var(--gold);outline-offset:2px}.groups{flex-direction:column;gap:1rem;margin:1rem 0;display:flex}.group-editor{border:2px solid var(--border);background:var(--card-tint);border-radius:16px;padding:.8rem 1rem 1rem}.group-editor-head{align-items:center;gap:.6rem;margin-bottom:.6rem;display:flex}.group-editor-head input{font-size:1.05rem;font-weight:800}.group-members{margin:0 0 .8rem;padding:0;list-style:none}.group-members li{border-top:1px solid var(--border);grid-template-columns:minmax(0,1fr) minmax(0,1.1fr) auto;align-items:center;gap:.7rem;padding:.5rem 0;display:grid}.group-add{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) auto;align-items:center;gap:.6rem;display:grid}@media (width<=640px){.group-members li,.group-add{grid-template-columns:1fr}}.update-toast{z-index:40;top:max(4.6rem, calc(env(safe-area-inset-top) + 4rem));border:2px solid var(--gold);background:#fff;border-radius:999px;flex-wrap:wrap;justify-content:center;align-items:center;gap:.9rem;width:max-content;max-width:calc(100% - 1.6rem);padding:.55rem .7rem .55rem 1rem;font-weight:700;display:flex;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #78542840}.parade{pointer-events:none;z-index:1;width:100%;height:108px;position:relative}.parade-lights{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='96' height='18' viewBox='0 0 96 18'%3E%3Cpath d='M0 3 Q24 16 48 3 Q72 16 96 3' fill='none' stroke='%237b8f86' stroke-width='1.5'/%3E%3C/svg%3E") 0 0/96px 18px repeat-x;height:18px;position:absolute;inset:0 0 auto}.parade-lights:before,.parade-lights:after{content:"";background-repeat:repeat-x;background-size:96px 18px;position:absolute;inset:0}.parade-lights:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='96' height='18' viewBox='0 0 96 18'%3E%3Crect x='10.5' y='6' width='3' height='3' fill='%237b8f86'/%3E%3Ccircle cx='12' cy='12' r='3.4' fill='%23ff4d5a'/%3E%3Ccircle cx='11' cy='11' r='1' fill='%23fff' opacity='.7'/%3E%3Crect x='58.5' y='6' width='3' height='3' fill='%237b8f86'/%3E%3Ccircle cx='60' cy='12' r='3.4' fill='%233ddc84'/%3E%3Ccircle cx='59' cy='11' r='1' fill='%23fff' opacity='.7'/%3E%3C/svg%3E");animation:1.8s ease-in-out infinite twinkle}.parade-lights:after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='96' height='18' viewBox='0 0 96 18'%3E%3Crect x='34.5' y='6' width='3' height='3' fill='%237b8f86'/%3E%3Ccircle cx='36' cy='12' r='3.4' fill='%23ffc233'/%3E%3Ccircle cx='35' cy='11' r='1' fill='%23fff' opacity='.7'/%3E%3Crect x='82.5' y='6' width='3' height='3' fill='%237b8f86'/%3E%3Ccircle cx='84' cy='12' r='3.4' fill='%235db8ff'/%3E%3Ccircle cx='83' cy='11' r='1' fill='%23fff' opacity='.7'/%3E%3C/svg%3E");animation:1.8s ease-in-out -.9s infinite twinkle}@keyframes twinkle{0%,to{opacity:1}50%{opacity:.25}}.parade-row{z-index:3;justify-content:space-evenly;align-items:flex-end;padding:0 5.5rem 0 1rem;display:flex;position:absolute;bottom:9px;left:0;right:0}.dancer{pointer-events:auto;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;order:0;width:46px;height:64px;position:relative}.char-svg{width:100%;height:100%;display:block;overflow:visible}.char-shadow{fill:#3c5a782e}.parade-ground{filter:drop-shadow(0 -2px 3px #5a8cc847);background:radial-gradient(circle at 50% 100%,#fff 0 13px,#0000 14px) 0 0/46px 18px repeat-x,linear-gradient(#fff,#fff) 0 100%/100% 6px no-repeat;height:18px;position:absolute;bottom:0;left:0;right:0}.parade-off{z-index:5;pointer-events:auto;border:1px solid var(--border);min-height:36px;color:var(--muted);font:inherit;cursor:pointer;opacity:.7;background:#ffffffd9;border-radius:999px;padding:0 .8rem;font-size:.8rem;font-weight:800;position:absolute;top:24px;right:.5rem}.parade-off:hover{opacity:1}.fig,.body-sway,.arm,.leg,.head{transform-box:fill-box}.body-sway{transform-origin:50% 100%}.arm{transform-origin:50% 8%}.leg{transform-origin:50% 6%}.head{transform-origin:50% 92%}.dance-0 .fig{animation:bob var(--beat) ease-in-out var(--delay) infinite}.dance-0 .arm-l{animation:armFlapL calc(var(--beat) * 2) ease-in-out var(--delay) infinite}.dance-0 .arm-r{animation:armFlapR calc(var(--beat) * 2) ease-in-out var(--delay) infinite}.dance-0 .leg-l{animation:legA calc(var(--beat) * 2) ease-in-out var(--delay) infinite}.dance-0 .leg-r{animation:legB calc(var(--beat) * 2) ease-in-out var(--delay) infinite}.dance-1 .fig{animation:bobSmall var(--beat) ease-in-out var(--delay) infinite}.dance-1 .body-sway{animation:swayBody calc(var(--beat) * 2) ease-in-out var(--delay) infinite}.dance-1 .head{animation:swayHead calc(var(--beat) * 2) ease-in-out var(--delay) infinite}.dance-1 .arm-l{animation:armSwingL calc(var(--beat) * 2) ease-in-out var(--delay) infinite}.dance-1 .arm-r{animation:armSwingR calc(var(--beat) * 2) ease-in-out var(--delay) infinite}.dance-2 .fig{animation:bob var(--beat) ease-in-out var(--delay) infinite}.dance-2 .body-sway{animation:swayBody calc(var(--beat) * 4) ease-in-out var(--delay) infinite}.dance-2 .arm-l{animation:discoL calc(var(--beat) * 4) ease-in-out var(--delay) infinite}.dance-2 .arm-r{animation:discoR calc(var(--beat) * 4) ease-in-out var(--delay) infinite}.dance-2 .leg-l{animation:legA calc(var(--beat) * 2) ease-in-out var(--delay) infinite}.dance-2 .leg-r{animation:legB calc(var(--beat) * 2) ease-in-out var(--delay) infinite}.dance-3 .fig{animation:bobSmall var(--beat) ease-in-out var(--delay) infinite}.dance-3 .body-sway{animation:turnAround calc(var(--beat) * 7) ease-in-out var(--delay) infinite}.dance-3 .arm-l{animation:armOutL var(--beat) ease-in-out var(--delay) infinite}.dance-3 .arm-r{animation:armOutR var(--beat) ease-in-out var(--delay) infinite}.dance-3 .leg-l{animation:kickA calc(var(--beat) * 2) ease-in-out var(--delay) infinite}.dance-3 .leg-r{animation:kickB calc(var(--beat) * 2) ease-in-out var(--delay) infinite}.nose-halo{transform-box:fill-box;transform-origin:50%;animation:1.1s ease-in-out infinite noseGlow}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes bobSmall{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes swayBody{0%,to{transform:rotate(-7deg)}50%{transform:rotate(7deg)}}@keyframes swayHead{0%,to{transform:rotate(9deg)}50%{transform:rotate(-9deg)}}@keyframes armFlapL{0%,to{transform:rotate(15deg)}50%{transform:rotate(150deg)}}@keyframes armFlapR{0%,to{transform:rotate(-150deg)}50%{transform:rotate(-15deg)}}@keyframes armSwingL{0%,to{transform:rotate(10deg)}50%{transform:rotate(70deg)}}@keyframes armSwingR{0%,to{transform:rotate(-70deg)}50%{transform:rotate(-10deg)}}@keyframes discoL{0%,40%{transform:rotate(20deg)}50%,90%{transform:rotate(160deg)}to{transform:rotate(20deg)}}@keyframes discoR{0%,40%{transform:rotate(-160deg)}50%,90%{transform:rotate(-20deg)}to{transform:rotate(-160deg)}}@keyframes armOutL{0%,to{transform:rotate(55deg)}50%{transform:rotate(95deg)}}@keyframes armOutR{0%,to{transform:rotate(-55deg)}50%{transform:rotate(-95deg)}}@keyframes legA{0%,to{transform:rotate(0)}50%{transform:rotate(16deg)}}@keyframes legB{0%,to{transform:rotate(16deg)}50%{transform:rotate(0)}}@keyframes kickA{0%,50%,to{transform:rotate(0)}25%{transform:rotate(-45deg)}}@keyframes kickB{0%,50%,to{transform:rotate(0)}75%{transform:rotate(45deg)}}@keyframes turnAround{0%,70%,to{transform:scaleX(1)}78%{transform:scaleX(-1)}92%{transform:scaleX(-1)}98%{transform:scaleX(1)}}@keyframes noseGlow{0%,to{opacity:.15;transform:scale(.8)}50%{opacity:.55;transform:scale(1.25)}}.dancer.twirl{animation:.9s cubic-bezier(.3,.7,.4,1) hop}.parade .dancer.twirl .fig{animation:none!important}@keyframes hop{0%{transform:translateY(0)rotate(0)}40%{transform:translateY(-30px)rotate(200deg)}to{transform:translateY(0)rotate(360deg)}}.dance-4 .fig{animation:bobSmall var(--beat) ease-in-out var(--delay) infinite}.dance-4 .body-sway{animation:squash var(--beat) ease-in-out var(--delay) infinite}.dance-4 .head{animation:headSlide calc(var(--beat) * 2) ease-in-out var(--delay) infinite}.dance-4 .arm-l{animation:armL90 calc(var(--beat) * 2) steps(2, jump-none) var(--delay) infinite}.dance-4 .arm-r{animation:armR90 calc(var(--beat) * 2) steps(2, jump-none) var(--delay) infinite}.dance-5 .fig{animation:jackHop calc(var(--beat) * 2) ease-in-out var(--delay) infinite}.dance-5 .arm-l{animation:jackArmL calc(var(--beat) * 2) ease-in-out var(--delay) infinite}.dance-5 .arm-r{animation:jackArmR calc(var(--beat) * 2) ease-in-out var(--delay) infinite}.dance-5 .leg-l{animation:jackLegL calc(var(--beat) * 2) ease-in-out var(--delay) infinite}.dance-5 .leg-r{animation:jackLegR calc(var(--beat) * 2) ease-in-out var(--delay) infinite}.dance-6 .fig{animation:bobSmall var(--beat) ease-in-out var(--delay) infinite}.dance-6 .body-sway{animation:twist calc(var(--beat) * 2) ease-in-out var(--delay) infinite}.dance-6 .head{animation:swayHead calc(var(--beat) * 2) ease-in-out var(--delay) infinite}.dance-6 .arm-l{animation:armSwingL calc(var(--beat) * 2) ease-in-out var(--delay) infinite reverse}.dance-6 .arm-r{animation:armSwingR calc(var(--beat) * 2) ease-in-out var(--delay) infinite reverse}.dance-7 .fig{animation:slide calc(var(--beat) * 4) ease-in-out var(--delay) infinite}.dance-7 .leg-l{animation:shuffleA calc(var(--beat) * .5) ease-in-out var(--delay) infinite}.dance-7 .leg-r{animation:shuffleB calc(var(--beat) * .5) ease-in-out var(--delay) infinite}.dance-7 .arm-r{animation:pointUp calc(var(--beat) * 2) ease-in-out var(--delay) infinite}.dance-7 .arm-l{animation:armSwingL var(--beat) ease-in-out var(--delay) infinite}.dance-8 .fig{animation:bobSmall calc(var(--beat) * 1.5) ease-in-out var(--delay) infinite}.dance-8 .body-sway{animation:pirouette calc(var(--beat) * 6) ease-in-out var(--delay) infinite}.dance-8 .arm-l{animation:armsUpL calc(var(--beat) * 1.5) ease-in-out var(--delay) infinite}.dance-8 .arm-r{animation:armsUpR calc(var(--beat) * 1.5) ease-in-out var(--delay) infinite}@keyframes squash{0%,to{transform:scaleY(.94)}50%{transform:scaleY(1.04)}}@keyframes headSlide{0%,to{transform:translate(-3px)rotate(-5deg)}50%{transform:translate(3px)rotate(5deg)}}@keyframes armL90{0%{transform:rotate(95deg)}to{transform:rotate(8deg)}}@keyframes armR90{0%{transform:rotate(-8deg)}to{transform:rotate(-95deg)}}@keyframes jackHop{0%,50%,to{transform:translateY(0)}25%,75%{transform:translateY(-9px)}}@keyframes jackArmL{0%,50%,to{transform:rotate(12deg)}25%,75%{transform:rotate(160deg)}}@keyframes jackArmR{0%,50%,to{transform:rotate(-12deg)}25%,75%{transform:rotate(-160deg)}}@keyframes jackLegL{0%,50%,to{transform:rotate(0)}25%,75%{transform:rotate(20deg)}}@keyframes jackLegR{0%,50%,to{transform:rotate(0)}25%,75%{transform:rotate(-20deg)}}@keyframes twist{0%,to{transform:rotate(-10deg)scaleX(.8)}50%{transform:rotate(10deg)scaleX(1)}}@keyframes slide{0%,to{transform:translate(-7px)}50%{transform:translate(7px)}}@keyframes shuffleA{0%,to{transform:rotate(-14deg)}50%{transform:rotate(10deg)}}@keyframes shuffleB{0%,to{transform:rotate(10deg)}50%{transform:rotate(-14deg)}}@keyframes pointUp{0%,to{transform:rotate(-135deg)}50%{transform:rotate(-165deg)}}@keyframes pirouette{0%,38%,to{transform:scaleX(1)}6%{transform:scaleX(-1)}12%{transform:scaleX(1)}18%{transform:scaleX(-1)}24%{transform:scaleX(1)}30%{transform:scaleX(-1)}36%{transform:scaleX(1)}}@keyframes armsUpL{0%,to{transform:rotate(150deg)}50%{transform:rotate(175deg)}}@keyframes armsUpR{0%,to{transform:rotate(-150deg)}50%{transform:rotate(-175deg)}}.dancer-you{order:1}.dancer-you .char-svg{filter:drop-shadow(0 0 5px #ffc428f2)}.dancer-tag{z-index:2;white-space:nowrap;color:var(--primary-dark);background:#fff;border-radius:999px;padding:1px 7px;font-size:.62rem;font-weight:900;line-height:1.25;position:absolute;bottom:-12px;left:50%;transform:translate(-50%);box-shadow:0 1px 4px #78542859}.dancer:nth-child(n+5){order:2}.parade-sky{z-index:1;pointer-events:none;height:66px;position:absolute;inset:14px 0 auto;overflow:hidden}.sleigh{will-change:transform;width:170px;animation:var(--dir-anim) var(--fly,15s) linear forwards;position:absolute;top:4px;left:0}.sleigh-ltr{--dir-anim:flyRight}.sleigh-rtl{--dir-anim:flyLeft}.sleigh-svg{width:100%;height:auto;display:block;overflow:visible}.sleigh-bob{animation:1.4s ease-in-out infinite sleighBob;position:relative}.sleigh-rtl .sleigh-flip{transform:scaleX(-1)}.sleigh-bubble{color:var(--primary-dark);white-space:nowrap;opacity:0;animation:hoho var(--fly,15s) linear forwards;background:#fff;border-radius:999px;padding:1px 9px;font-size:.72rem;font-weight:900;position:absolute;top:-14px;left:50%;transform:translate(-50%);box-shadow:0 2px 6px #7854284d}@keyframes flyRight{0%{transform:translate(-190px)}to{transform:translateX(calc(var(--w) + 20px))}}@keyframes flyLeft{0%{transform:translateX(calc(var(--w) + 20px))}to{transform:translate(-190px)}}@keyframes sleighBob{0%,to{transform:translateY(0)rotate(-1.5deg)}50%{transform:translateY(5px)rotate(1.5deg)}}@keyframes hoho{0%,38%{opacity:0}42%,58%{opacity:1}62%,to{opacity:0}}.gallop{animation:gallopBob .5s ease-in-out var(--gd,0s) infinite}.gl-leg{transform-box:fill-box;transform-origin:50% 5%}.gl-f1,.gl-b2{animation:gallopA .5s ease-in-out var(--gd,0s) infinite}.gl-f2,.gl-b1{animation:gallopB .5s ease-in-out var(--gd,0s) infinite}@keyframes gallopA{0%,to{transform:rotate(-35deg)}50%{transform:rotate(35deg)}}@keyframes gallopB{0%,to{transform:rotate(35deg)}50%{transform:rotate(-35deg)}}@keyframes gallopBob{0%,to{transform:translateY(0)}50%{transform:translateY(-2.5px)}}.sparkle{transform-box:fill-box;transform-origin:50%;animation:sparkle .7s ease-in-out var(--sd,0s) infinite}@keyframes sparkle{0%,to{opacity:.2;transform:scale(.6)}50%{opacity:1;transform:scale(1.1)}}.parade-flying .dancer .arm-l{animation:.5s ease-in-out infinite cheerL!important}.parade-flying .dancer .arm-r{animation:.5s ease-in-out infinite cheerR!important}.parade-flying .dancer .fig{animation:.5s ease-in-out infinite bob!important}@keyframes cheerL{0%,to{transform:rotate(120deg)}50%{transform:rotate(168deg)}}@keyframes cheerR{0%,to{transform:rotate(-168deg)}50%{transform:rotate(-120deg)}}.parade-snowfall{pointer-events:none;z-index:4;position:absolute;inset:0;overflow:hidden}.parade-snowfall span{background:#fff;border-radius:50%;animation:linear infinite flakeFall;position:absolute;top:-8px;box-shadow:0 0 4px #78aadce6}@keyframes flakeFall{0%{opacity:0;transform:translate(0,0)}8%{opacity:1}85%{opacity:1}to{transform:translate3d(var(--drift), 98px, 0);opacity:0}}.parade-pile{transform-origin:50% 100%;background:#fff;height:14px;position:absolute;bottom:0;left:0;right:0;transform:scaleY(0)}.parade-snowday .parade-pile{animation:90s ease-out forwards pileUp}.parade-snowday .parade-ground,.parade-snowday .parade-row{animation:90s ease-out forwards raiseDrift}@keyframes pileUp{to{transform:scaleY(1)}}@keyframes raiseDrift{to{transform:translateY(-14px)}}.theme-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,215px),1fr));gap:.9rem;margin-top:.6rem;display:grid}.theme-option{border:2.5px solid var(--border);background:var(--card-tint);cursor:pointer;border-radius:16px;flex-direction:column;gap:.15rem;padding:.55rem .55rem .7rem;font-weight:700;transition:border-color .15s,box-shadow .15s;display:flex;position:relative}.theme-option input{opacity:0;cursor:pointer;width:100%;height:100%;min-height:0;margin:0;position:absolute;inset:0}.theme-option.selected{border-color:var(--primary);box-shadow:0 6px 16px var(--primary-glow)}.theme-option:has(input:focus-visible){outline:3px solid var(--gold);outline-offset:2px}.theme-name{margin-top:.45rem}.theme-option.selected .theme-name:after{content:"  ✓";color:var(--primary)}.theme-blurb{color:var(--muted);font-size:.8rem;font-weight:600}.theme-swatch{border:1px solid var(--border);background:linear-gradient(180deg, var(--bg-1), var(--bg-2));border-radius:10px;display:block;overflow:hidden}.sw-header{background:var(--header-bg);border-bottom:3px solid var(--ribbon-a);align-items:center;gap:6px;height:22px;padding:0 8px;display:flex}.sw-header i{border-radius:4px;height:7px;display:block}.sw-brand{background:var(--header-ink);width:28px}.sw-pill{background:var(--header-active-bg);width:18px}.sw-link{background:var(--header-link);opacity:.7;width:18px}.sw-body{gap:6px;padding:8px;display:flex}.sw-card{background:var(--card);border:1px solid var(--border);box-shadow:0 2px 6px var(--shadow-color);border-radius:7px;flex-direction:column;flex:1;gap:4px;padding:6px;display:flex}.sw-line{background:var(--muted);opacity:.35;border-radius:2px;height:4px;display:block}.sw-line.short{width:60%}.sw-btn{background:var(--primary);border-radius:4px;width:70%;height:8px;display:block}.sw-btn.alt{background:var(--secondary)}.pref{margin:.4rem 0 .9rem}.pref .muted{margin:.2rem 0 0 4.4rem}.pref input:disabled+.slider{opacity:.5}.parade-paused *{animation-play-state:paused!important}@media (width<=900px){.dancer:nth-child(n+6){display:none}.dancer:nth-child(-n+3){order:0}.dancer:nth-child(n+4){order:2}.dancer-you{order:1}}@media (width<=640px){.dancer:nth-child(n+4){display:none}.dancer:nth-child(2){order:0}.dancer:nth-child(3){order:2}.dancer-you{order:1}.sleigh{width:130px}.parade-row{padding-right:1rem}.parade-off{display:none}}@media (height<=520px){.parade{display:none}}@media (prefers-reduced-motion:reduce){.parade *,.parade-lights:before,.parade-lights:after{animation:none!important}.parade-sky,.parade-snowfall{display:none}.parade-snowday .parade-pile{transform:scaleY(1)}.parade-snowday .parade-ground,.parade-snowday .parade-row{transform:translateY(-14px)}}.spinner{border:4px solid var(--primary-soft);border-top-color:var(--primary);border-radius:50%;width:42px;height:42px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.snow{pointer-events:none;z-index:0;position:fixed;inset:0;overflow:hidden}.snow span{color:#a9d8f5;will-change:transform;text-shadow:0 0 6px #ffffffe6;line-height:1;animation:linear infinite fall;position:absolute;top:-40px}@keyframes fall{to{transform:translate3d(var(--drift), 108vh, 0) rotate(360deg)}}@media (width<=1100px){.who-name,.actas-label{display:none}.actas{padding-left:.3rem}.actas select{max-width:11rem}}@media (width<=900px){.grid-2{grid-template-columns:1fr}.who-name{display:none}.rows .row,.alloc .row{grid-template-columns:76px minmax(0,1fr) auto;grid-template-areas:"sw who act"".hh hh"".info info";row-gap:.4rem;padding:.9rem .2rem}.alloc .row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"who sel""info info"}.row-head{display:none}.row>:first-child{grid-area:sw}.row>:nth-child(2){grid-area:who}.row>:nth-child(3){grid-area:hh}.row>:nth-child(4){grid-area:info}.row>:nth-child(5){grid-area:act}.alloc .row>:first-child{grid-area:who}.alloc .row>:nth-child(2){grid-area:sel}.alloc .row>:nth-child(3){grid-area:info}}@media (width<=640px){.nav{flex-basis:100%;order:3;overflow-x:auto}.nav a{flex:1;justify-content:center}.form-row{flex-direction:column}.brand{font-size:1.1rem}.comment-form{flex-direction:column;align-items:stretch}.bubble{max-width:96%}.basket{grid-template-columns:1fr}.basket .btn{grid-area:auto/1;justify-self:end}}@media (hover:none){.btn-ghost:hover,.nav a:hover{background:0 0}.topbar .btn-ghost:hover{color:var(--header-link);background:0 0}.btn-outline:hover{background:#fff}.nav a.active:hover{background:var(--header-active-bg)}}@media (prefers-reduced-motion:reduce){.snow{display:none}.spinner{animation-duration:2s}*{transition:none!important}}
