@charset "UTF-8";
:root{--pine:#123e32;--pine2:#215844;--cream:#fbf7f0;--paper:#fffefb;--ink:#172d25;--muted:#738277;--gold:#dfb66e;--line:#e5e7dd;--app-height:100dvh;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--cream);font-size:15px}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button{cursor:pointer;color:inherit;-webkit-tap-highlight-color:transparent}button:disabled{opacity:.5;cursor:default}button,select{touch-action:manipulation}button svg{width:22px;height:22px;flex-shrink:0}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid var(--gold);outline-offset:3px}input,textarea{width:100%;border:1px solid #d8dfd4;border-radius:14px;padding:15px;background:white;color:var(--ink);font-size:16px;outline:none}input:focus,textarea:focus{border-color:var(--pine2);box-shadow:0 0 0 3px #123e320b}textarea{resize:vertical}label{display:block;font-size:13px;font-weight:650;margin:20px 0 9px}h1,h2,h3,p{margin:0}h1,h2{letter-spacing:-.8px}h1{font-size:31px;line-height:1.16;font-weight:750}h2{font-size:22px;line-height:1.2}svg{width:24px;height:24px}[hidden]{display:none!important}.eyebrow{font-size:10px;font-weight:750;letter-spacing:2px;color:var(--muted);margin-bottom:10px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;border:0;border-radius:16px;min-height:54px;padding:13px 20px;font-weight:650}.full{width:100%}.primary{background:var(--pine);color:#fff}.outline{border:1px solid #c6d4c6;background:transparent;color:var(--pine)}.quiet{background:transparent;color:var(--muted)}.danger{background:#ad3b37;color:white}.fine{font-size:12px;line-height:1.6;text-align:center;color:var(--muted);margin:18px 0}.form-error{color:#ad3b37;font-size:13px;line-height:1.5;min-height:20px;margin:12px 0}.optional{font-weight:400;color:var(--muted)}.startup{min-height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:14px;text-align:center;padding:30px}.startup p{color:var(--muted)}.tree-mark{font-size:55px;color:var(--pine)}.entry{max-width:450px;margin:0 auto;min-height:var(--app-height);padding:calc(30px + env(safe-area-inset-top)) 26px calc(24px + env(safe-area-inset-bottom));background:var(--cream)}.entry-brand,.header-brand{display:flex;align-items:center;gap:11px;font-size:15px;font-weight:700}.entry-brand small,.header-brand small{display:block;font-size:10px;font-weight:400;color:var(--muted);margin-top:3px;letter-spacing:.1px}.brand-logo{background:var(--pine);border-radius:14px;width:42px;height:42px;display:grid;place-items:center;color:#f3dbac;flex-shrink:0}.brand-logo svg{width:25px;height:25px}.entry h1{font-size:42px;letter-spacing:-1.5px;margin:10px 0 16px}.entry-copy{color:#647368;line-height:1.7;margin-bottom:26px;font-size:15px}.login-tree{position:relative;display:grid;place-items:center;width:100px;height:110px;margin:36px auto 28px;color:var(--pine)}.login-tree svg{width:85px;height:85px;stroke-width:1.1}.login-tree span{position:absolute;color:var(--gold);right:-10px;top:10px;font-size:22px}.password-field{position:relative}.password-field input{padding-right:76px}.show-password{position:absolute;right:6px;top:5px;min-width:64px;height:44px;border:0;background:transparent;font-size:12px;color:var(--muted)}.entry-footer{font-size:11px;text-align:center;color:#99a395;margin-top:32px}.welcome-art{position:relative;height:210px;margin:28px 0;display:grid;place-items:center}.art-tree{width:176px;height:176px;border-radius:50%;background:#e6ede0;display:grid;place-items:center}.art-tree svg{width:110px;height:110px;color:var(--pine);stroke-width:1.15}.art-star{position:absolute;left:28px;top:18px;font-size:42px;color:var(--gold)}.art-star.small{left:auto;right:22px;top:auto;bottom:12px;font-size:34px}.app-shell{width:100%;max-width:520px;margin:auto;height:var(--app-height);display:flex;flex-direction:column;background:var(--cream);overflow:hidden}.app-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;padding:calc(15px + env(safe-area-inset-top)) 22px 15px;border-bottom:1px solid #e7e8df;background:var(--cream)}.header-brand{font-size:14px}.avatar{width:39px;height:39px;min-width:39px;border-radius:50%;border:1px solid #c8d6c5;background:#e9efdf;color:var(--pine);font-weight:700}.app-main{flex:1;min-height:0;overflow:auto;overscroll-behavior-y:contain}.view{padding:26px 22px 22px;min-height:100%}.greeting h1{font-size:28px}.greeting h1 span{font-size:23px;color:var(--gold)}.greeting>p:last-child{color:var(--muted);font-size:13px;margin-top:7px}.hero{margin-top:23px;padding:23px;border-radius:25px;background:var(--pine);color:#fff;position:relative;overflow:hidden}.hero:after{content:"";position:absolute;width:200px;height:200px;border:1px solid #ffffff0c;border-radius:50%;right:-120px;bottom:-70px;box-shadow:0 0 0 30px #ffffff03,0 0 0 60px #ffffff03;pointer-events:none}.hero-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.pill{font-size:9px;font-weight:700;letter-spacing:1.2px;border:1px solid #ffffff35;border-radius:30px;padding:7px 10px;color:#e5dbbf}.hero-spark{color:var(--gold);font-size:30px;line-height:1}.hero h2{font-family:Georgia,"Times New Roman",serif;font-weight:400;font-size:39px;line-height:1.13;letter-spacing:-1px}.hero>p{color:#d2dfd2;font-size:12px;line-height:1.6;margin-top:13px;max-width:280px}.event-row{display:flex;align-items:center;gap:8px;margin-top:19px;font-size:11px;color:#e3e9da}.event-row svg{width:17px;height:17px;stroke:#dfb66e}.countdown{display:flex;align-items:flex-start;gap:18px;padding-top:18px;margin-top:18px;border-top:1px solid #ffffff22}.countdown div{min-width:37px;text-align:center}.countdown strong{font-size:27px;font-weight:500;font-variant-numeric:tabular-nums}.countdown span{display:block;margin-top:4px;font-size:9px;color:#c3d2bf;letter-spacing:.7px}.countdown b{font-size:23px;color:#ffffff45;font-weight:300}.home-section{margin-top:25px}.section-label{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:13px}.section-label h2{font-size:17px;letter-spacing:-.4px}.section-label>span{font-size:10px;color:var(--muted)}.text-btn{border:0;background:none;padding:8px 0;color:var(--pine2);font-size:11px;font-weight:650;min-height:36px}.prep-card{border:1px solid var(--line);background:var(--paper);padding:18px 14px;border-radius:19px;display:flex;align-items:center;width:100%;gap:13px;text-align:left}.round-icon{width:42px;height:42px;border-radius:14px;background:#edf0e3;color:var(--pine);display:grid;place-items:center;flex-shrink:0}.prep-copy{flex:1;min-width:0}.prep-copy strong{font-size:14px}.prep-copy small{display:block;font-size:10px;color:var(--muted);margin-top:6px}.prep-card>svg{width:17px;height:17px;color:#92a28f}.progress-track{display:block;height:4px;border-radius:10px;background:#ecefe5;margin-top:12px;overflow:hidden}.progress-track i{display:block;height:100%;background:#64836a;border-radius:10px}.mini-message{display:flex;gap:12px;padding:14px 0;border-bottom:1px solid #e8e8df}.mini-avatar{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#e9e8db;font-size:12px;color:var(--pine);flex-shrink:0}.mini-message>div{min-width:0}.mini-message strong{font-size:11px}.mini-message p{font-size:12px;color:#6c786e;margin-top:4px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.empty-note{padding:20px;border:1px dashed #cbd5c5;border-radius:16px;background:transparent;width:100%;text-align:left;font-size:12px;color:var(--muted);line-height:1.6}.install-banner{display:flex;align-items:center;gap:12px;margin-top:24px;background:#ecefdf;border:0;width:100%;text-align:left;border-radius:17px;padding:15px;color:var(--pine)}.install-banner>span{flex:1}.install-banner strong{display:block;font-size:12px}.install-banner small{display:block;font-size:10px;color:#7b8775;margin-top:4px}.install-banner>svg:last-child{width:16px;height:16px}.home-footer{text-align:center;color:#9da797;font-size:10px;margin:22px 0 6px}.bottom-nav{display:grid;grid-template-columns:repeat(4,1fr);flex-shrink:0;background:#fffefb;border-top:1px solid var(--line);padding:7px 12px calc(8px + env(safe-area-inset-bottom));min-height:69px}.bottom-nav button{position:relative;display:flex;flex-direction:column;align-items:center;gap:5px;background:none;border:0;color:#9aa394;min-height:49px;padding:6px;font-size:10px}.bottom-nav button svg{width:21px;height:21px}.bottom-nav button[aria-current]{color:var(--pine);font-weight:700}.badge{position:absolute;top:0;left:calc(50% + 5px);font-size:8px;line-height:15px;min-width:15px;border-radius:12px;background:#ac4b3b;color:white;padding:0 3px}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:14px}.section-heading h1{font-size:28px}.section-heading .eyebrow{font-size:9px;letter-spacing:1.4px}.small-tree svg{width:33px;height:33px;color:#6a8564}.intro{font-size:13px;line-height:1.7;color:var(--muted)}.dish-summary{display:flex;gap:15px;align-items:center;background:#eaf0e1;border-radius:17px;margin:22px 0;padding:17px 20px}.dish-summary strong{font-size:34px;color:var(--pine);font-weight:550}.dish-summary span{font-size:11px;line-height:1.6;color:#698160}.notice-card{font-size:12px;color:#62735d;background:#edf0e5;border:1px solid #dce4d4;padding:17px;border-radius:16px;line-height:1.6;margin:16px 0}.dish-group{margin-top:24px}.dish-group>h2{font-size:15px;letter-spacing:-.2px;margin-bottom:12px;display:flex;gap:9px;align-items:center}.dish-group>h2 span{font-size:17px}.dish-card{background:var(--paper);border:1px solid var(--line);border-radius:16px;margin-bottom:9px;padding:16px}.dish-card.mine{border-color:#bacbb2;background:#f4f7ec}.dish-card-main{display:flex;align-items:center;justify-content:space-between;gap:14px}.dish-card-main>div{flex:1;min-width:0}.dish-card h3{font-size:13px;font-weight:650;line-height:1.4;overflow-wrap:anywhere}.dish-free{font-size:10px;color:#9ba58e;margin-top:6px}.dish-owner{font-size:11px;margin-top:7px;color:#54734f;display:flex;align-items:center;gap:5px;flex-wrap:wrap}.dish-owner svg{width:13px;height:13px}.dish-note{font-size:11px;line-height:1.5;margin-top:8px;color:#7a8472;overflow-wrap:anywhere}.claim-btn{background:#e9efdf;color:var(--pine);border:0;display:grid;place-items:center;width:42px;height:42px;border-radius:13px;flex-shrink:0}.claim-btn svg{width:18px;height:18px}.remove-btn{display:grid;place-items:center;width:42px;height:42px;border:0;background:transparent;color:#9aa08e;flex-shrink:0}.remove-btn svg{width:17px;height:17px}.claimed-mark{color:#829773;font-size:18px;padding:10px}.custom-dish{margin-top:24px}.connection{font-size:10px;line-height:1.5;color:#7c9473;margin-bottom:12px}.connection.offline{color:#ac7049}#view-chat{height:100%;display:flex;flex-direction:column;padding-bottom:10px;min-height:0}#view-chat .section-heading{margin-bottom:8px}#chat-year{background:transparent;border:1px solid #d4decf;border-radius:10px;font-size:11px;color:#6e8068;padding:10px;max-width:140px}.chat-messages{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding:10px 1px 14px;scrollbar-width:thin}.chat-item{display:flex;flex-direction:column;align-items:flex-start;margin-bottom:17px}.chat-item.own{align-items:flex-end}.bubble{max-width:87%;background:white;border:1px solid #e4e8dc;padding:12px 14px 9px;border-radius:17px 17px 17px 4px}.own .bubble{background:var(--pine);color:white;border-color:var(--pine);border-radius:17px 17px 4px 17px}.bubble-head{display:flex;align-items:center;justify-content:space-between;gap:18px}.bubble-head strong{font-size:10px;color:#7a8c73;overflow-wrap:anywhere}.own .bubble-head strong{color:#bdd1b6}.bubble>p{font-size:14px;line-height:1.55;margin:5px 0 7px;white-space:pre-wrap;overflow-wrap:anywhere}.bubble time{display:block;font-size:8px;color:#a1ad99;text-align:right}.own .bubble time{color:#b9c7b2}.message-delete{min-width:30px;min-height:30px;font-size:18px;border:0;background:none;color:#aab49f;margin:-7px -6px -7px 0}.reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px;max-width:87%}.reaction{border:1px solid #dce3d4;border-radius:20px;background:#fdfdf7;min-height:30px;padding:4px 8px;font-size:13px}.reaction small{font-size:9px;color:#899580}.reaction.chosen{background:#e3ecd9;border-color:#9fb291}.reaction-add{border:0;background:transparent;color:#a8b29d;font-size:11px;min-height:30px;min-width:44px}.composer{display:flex;align-items:flex-end;gap:8px;padding:10px 0 0;background:var(--cream);flex-shrink:0;border-top:1px solid var(--line)}.composer textarea{border-radius:20px;resize:none;max-height:110px;min-height:46px;padding:13px 15px;font-size:15px;line-height:1.35}.send-btn{width:46px;height:46px;min-width:46px;border-radius:16px;background:var(--pine);color:white;border:0;display:grid;place-items:center}.send-btn svg{width:20px;height:20px}.chat-empty{height:100%;min-height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:10px}.chat-empty>span{font-size:32px}.chat-empty h2{font-size:20px}.chat-empty p{font-size:12px;line-height:1.6;color:var(--muted)}.new-messages{border:1px solid #cad8c0;background:#eef2e5;color:var(--pine);border-radius:20px;padding:8px;font-size:11px;align-self:center}.info-profile{display:flex;gap:15px;align-items:center;background:#eaf0e1;border-radius:20px;margin:24px 0;padding:20px}.profile-avatar{width:48px;height:48px;background:var(--pine);color:#e5d6b8;border-radius:50%;display:grid;place-items:center;font-size:20px}.info-profile strong{font-size:18px;overflow-wrap:anywhere}.info-profile p{font-size:12px;color:#7a8971;margin-top:5px}.info-card{background:white;border:1px solid var(--line);border-radius:20px;padding:21px;margin:18px 0}.info-card h2{display:flex;gap:8px;align-items:center;font-size:17px;margin-bottom:17px}.info-card h2 svg{width:21px;height:21px;color:#738969}.info-card p{font-size:13px;line-height:1.75;margin:12px 0;color:#73816d}.info-card p strong{color:#425f3e}.toast{position:fixed;bottom:calc(88px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%) translateY(12px);width:calc(100% - 40px);max-width:470px;background:#273e30;color:white;box-shadow:0 8px 25px #0002;padding:14px 18px;border-radius:15px;font-size:13px;line-height:1.5;opacity:0;pointer-events:none;z-index:20;transition:opacity .15s,transform .15s}.toast.visible{opacity:1;transform:translateX(-50%) translateY(0)}dialog{border:0;padding:27px 24px calc(27px + env(safe-area-inset-bottom));margin:auto auto 0;width:100%;max-width:520px;border-radius:27px 27px 0 0;background:var(--cream);color:var(--ink);max-height:calc(var(--app-height) - 30px);overflow:auto;box-shadow:0 -5px 60px #0002}dialog::backdrop{background:#152b2466}dialog h2{font-size:27px;line-height:1.25;padding-right:15px;margin:12px 0 16px}dialog p{color:var(--muted);font-size:13px;line-height:1.65;margin:12px 0}dialog .btn{margin-top:18px}dialog ol{padding-left:20px;color:#6c7a64;font-size:14px;line-height:1.8}dialog li{padding-left:6px;margin:13px 0}.modal-handle{position:absolute;top:9px;left:calc(50% - 20px);width:40px;height:4px;border-radius:10px;background:#d5dbcd}.modal-close{position:absolute;top:16px;right:15px;border:0;background:transparent;display:grid;place-items:center;width:42px;height:42px;color:#99a28f}.modal-close svg{width:19px;height:19px}.emoji-picker{display:flex;gap:12px;margin:25px 0 15px}.emoji-picker button{border:1px solid #d3ddc9;border-radius:16px;background:white;width:60px;height:62px;font-size:27px}.app-main:has(#view-chat:not([hidden])){overflow:hidden}@media(min-width:600px){body{background:#e8ece2}.app-shell{border-left:1px solid #d7dfd1;border-right:1px solid #d7dfd1}.entry{box-shadow:0 0 40px #142d2110}.app-header{padding-top:23px}.view{padding:28px}.hero{padding:27px}.bottom-nav{padding-top:10px}dialog{margin:auto;border-radius:25px;padding-bottom:27px;max-width:460px}}@media(max-width:360px){.view{padding-left:16px;padding-right:16px}.app-header{padding-left:16px;padding-right:16px}.hero{padding:20px}.hero h2{font-size:34px}.section-heading h1{font-size:25px}.section-heading .eyebrow{font-size:8px;letter-spacing:1px}.header-brand small{font-size:9px}.brand-logo{width:36px;height:36px}.entry{padding-left:22px;padding-right:22px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

#view-chat .section-heading h1{font-size:25px}#chat-year{width:94px;max-width:94px;padding:9px 7px}

.birthday-input{font-size:25px;letter-spacing:3px;text-align:center;padding:19px 12px;font-variant-numeric:tabular-nums}.birthday-input::placeholder{font-size:20px;letter-spacing:2px;color:#9ba692}.birthday-hint{font-size:11px;color:var(--muted);text-align:center;margin-top:9px}

/* Christmas edition: light, warm, touch-friendly. */
:root{--red:#a83f3d;--gold:#e6bb70;--muted:#657668;--line:#e7dfd0;--paper:#fffdf9}
body{background:#f3ede1}.entry,.app-shell{background:radial-gradient(ellipse at 100% 0,#eadfbd55,transparent 45%),var(--cream)}
.entry{position:relative;max-width:520px;padding:calc(43px + env(safe-area-inset-top)) 26px calc(22px + env(safe-area-inset-bottom))}
.festive-lights{position:absolute;top:env(safe-area-inset-top);left:0;right:0;height:32px;pointer-events:none;overflow:hidden;z-index:2}
.festive-lights svg{width:100%;height:32px;display:block}.festive-lights g{animation:lamp-glow 4s ease-in-out infinite;animation-delay:calc(var(--lamp)*-.45s)}
@keyframes lamp-glow{0%,100%{opacity:.8}50%{opacity:1;filter:drop-shadow(0 1px 3px #efca7966)}}
.entry-brand,.header-brand{align-items:center;gap:11px;min-width:0}.entry-brand>span:last-child,.header-brand>span:last-child{min-width:0;overflow-wrap:anywhere}.entry-brand{font-size:15px}.header-brand{font-size:14px}
.entry-brand small,.header-brand small{font-size:10px;color:#697a65}.brand-logo{width:44px;height:44px;border-radius:14px;background:var(--pine);overflow:hidden}.brand-logo img{display:block;width:100%;height:100%;object-fit:contain}
.christmas-art{position:relative;pointer-events:none;display:flex;align-items:center;justify-content:center}.christmas-art img{display:block;width:100%;height:100%;object-fit:contain;max-width:100%}
.entry-art{height:174px;margin:15px -5px 13px}.entry-art:before,.install-art:before,.info-art:before{content:"";position:absolute;inset:12% 5% 6%;background:radial-gradient(ellipse,#e7d3a342,transparent 68%);z-index:0}.christmas-art img{position:relative;z-index:1}
.entry h1{font-family:Georgia,"Times New Roman",serif;font-size:35px;line-height:1.12;font-weight:400;letter-spacing:-1px;margin:8px 0 12px}.entry .eyebrow{color:#a55245;letter-spacing:2px;font-size:9px}.entry-copy{font-size:13px;line-height:1.7;margin-bottom:17px;max-width:370px}
.entry label{margin-top:18px}.birthday-input{font-size:24px;letter-spacing:3px;border-color:#dacfbb;background:#fffdfa;border-radius:17px;padding:17px 12px;min-height:65px}.birthday-input::placeholder{color:#89927f;font-size:20px}
.entry .form-error{margin:9px 0;min-height:20px}.entry .fine{font-size:11px;line-height:1.6;margin:15px 0 0;max-width:400px}.entry-footer{margin-top:20px;color:#8b8f78;font-size:10px}.entry .btn.primary{background:linear-gradient(135deg,#a6413e,#8f302e);box-shadow:0 6px 16px #8f302e1d}
.install-art{height:220px;margin:25px -10px 22px}.entry:has(.install-art) .entry-copy{margin-bottom:23px}.startup-icon{height:80px;width:80px;border-radius:23px;box-shadow:0 8px 24px #153e321a}.startup h1{font-family:Georgia,serif;font-weight:400}
.app-header{position:relative;padding:calc(38px + env(safe-area-inset-top)) 22px 14px;background:#fbf7f0;border-bottom:1px solid #e8dfcd;gap:12px}.header-brand .brand-logo{width:41px;height:41px;border-radius:13px}
.avatar,.profile-avatar{position:relative;background:#e8efdf;border-color:#cbd5be;color:var(--pine)}.avatar{width:38px;height:38px;min-width:38px;font-size:15px;align-self:center}
.avatar:before,.santa-avatar:before{content:"";position:absolute;right:-3px;top:-9px;width:26px;height:17px;background:var(--red);border-radius:18px 13px 3px 3px;transform:rotate(23deg);border-bottom:5px solid #fffdf8;box-shadow:0 1px 0 #dcd9cd;pointer-events:none}.avatar:after,.santa-avatar:after{content:"";position:absolute;right:-7px;top:-2px;width:8px;height:8px;border-radius:50%;background:#fffdf8;box-shadow:0 1px 2px #ccc9;pointer-events:none}
.view{padding:23px 22px 24px}.greeting .eyebrow{color:#a04e42;font-size:9px;letter-spacing:1.7px;margin-bottom:8px}.greeting h1{font-size:27px;letter-spacing:-.8px;overflow-wrap:anywhere}.greeting h1 span{color:#b98a41;font-size:22px}.greeting>p:last-child{color:#697961;font-size:12px;line-height:1.6;margin-top:6px}
.hero{background:radial-gradient(ellipse at 50% 58%,#2b614650,transparent 67%),linear-gradient(150deg,#173e32,#123a2f 55%,#0d3029);padding:20px 20px 18px;border-radius:25px;margin-top:20px;box-shadow:0 9px 23px #153e3215;border:1px solid #34533e}
.hero:after{display:none}.hero>*:not(.hero-snow){position:relative;z-index:1}.hero-top{margin-bottom:13px;gap:12px}.pill{padding:6px 9px;font-size:8px;color:#f0dcb7;border-color:#e2c59255;letter-spacing:1.1px;background:#ffffff04}.hero-spark{font-size:25px;color:#e7bf71}
.hero h2{font-size:31px;line-height:1.12;letter-spacing:-.6px;color:#fff4df}.hero>p{font-size:11px;line-height:1.7;color:#d1ddc7;margin-top:10px;max-width:285px}.hero-art{height:151px;margin:5px -9px 0}.event-row{justify-content:center;margin-top:3px;font-size:10px;color:#eadcc3;gap:7px}.event-row svg{width:15px;height:15px}
.countdown-caption{font-size:7px;letter-spacing:1.8px;color:#c9d2b8;margin-top:15px;text-align:center;padding-top:13px;border-top:1px solid #d6c39130}.countdown{justify-content:center;gap:16px;border-top:0;margin-top:0;padding-top:7px}.countdown div{min-width:38px}.countdown strong{font-size:26px;color:#fff6e7;line-height:1.1}.countdown span{font-size:8px;color:#c3cfb8;margin-top:3px}.countdown b{font-size:19px;line-height:1.4;color:#c3b387}
.hero-snow{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:0}.hero-snow i{position:absolute;width:3px;height:3px;background:#fff7de;border-radius:50%;left:calc(5% + var(--flake)*11%);opacity:0;animation:christmas-snow 13s linear infinite;animation-delay:calc(var(--flake)*-1.6s)}.hero-snow i:nth-child(3n){width:2px;height:2px}.hero-snow i:nth-child(2n){animation-duration:17s}
@keyframes christmas-snow{0%{transform:translate3d(0,-10px,0);opacity:0}12%{opacity:.38}87%{opacity:.3}100%{transform:translate3d(17px,430px,0);opacity:0}}
.home-section{margin-top:24px}.section-label h2{font-size:17px}.section-label>span{color:#7b826d;font-size:9px}.prep-card{border-color:#e6dcc8;box-shadow:0 3px 9px #54401e04;border-radius:19px;padding:17px 14px}.round-icon{background:#f4e5d7;color:#a13d38;border:1px solid #efdbca}.prep-copy strong{font-size:14px}.prep-copy small{color:#68795e}.progress-track{height:5px;background:#eee9db}.progress-track i{background:linear-gradient(90deg,#b1443f,#d6ad60)}
.mini-message{border-color:#e8dfcf}.mini-avatar{background:#efe1d3;color:#97463d}.mini-message strong{color:#455c41}.mini-message p{color:#63745f}.install-banner{background:#f2e9d4;color:#7c5130;border:1px solid #eadcc1}.install-banner small{color:#7e725c}.home-footer{color:#8a8d76;font-size:9px;line-height:1.6;margin:23px 0 3px}
.bottom-nav{background:#fffdf8;border-top:1px solid #e6dac4;padding-top:8px;box-shadow:0 -5px 18px #4b382806}.bottom-nav button{color:#7f8774;font-size:10px;border-radius:14px;gap:5px;padding:7px 6px}.bottom-nav button[aria-current]{background:#f7e9db;color:#a13b36}.bottom-nav button svg{width:21px;height:21px}.bottom-nav button[aria-current] svg{stroke-width:2}.badge{background:#a83f3d;top:0}
.section-heading .eyebrow{color:#a05343}.section-heading h1{letter-spacing:-.8px}.small-tree img{width:43px;height:43px;border-radius:13px;display:block}.dish-summary{background:linear-gradient(120deg,#f3e7d5,#f5eddd);border:1px solid #e9dac3;padding:17px 19px}.dish-summary strong{color:#98413a}.dish-summary span{color:#7a705b}.dish-card{border-color:#e7dfd0;background:#fffdf9;border-radius:17px}.dish-card.mine{background:#f4f6eb;border-color:#bfcfaf}.dish-free{color:#758267}.claim-btn{background:#f5e5d9;color:#a13d38;border:1px solid #ecd7c6}.claim-btn:hover{background:#f0d9c9}.remove-btn{color:#7a816f}.dish-owner{color:#4a704d}.notice-card{background:#f2eedf;border-color:#e3dac3;color:#6c7058}.custom-dish{border-color:#c5cfb3;color:#496643}
#view-chat{background:radial-gradient(circle at 4% 65%,#d8e3cc44,transparent 32%),radial-gradient(circle at 92% 35%,#f2dcc944,transparent 27%)}
#view-chat .section-heading .eyebrow{font-size:8px;letter-spacing:1.5px}.connection{color:#61785a}.bubble{background:#fffdf9;border-color:#e4dccb;box-shadow:0 2px 5px #48382005}.own .bubble{background:linear-gradient(145deg,#245340,#143d31);border-color:#254f3b}.bubble-head strong{color:#995b46}.own .bubble-head strong{color:#e5cf9e}.bubble time{color:#748267}.own .bubble time{color:#bbccad}.reaction{border-color:#e6d7c1;background:#fff9ef}.reaction small{color:#68735b}.reaction.chosen{background:#f8e5d6;border-color:#d7ac87}.reaction-add{color:#79856e}.composer{background:var(--cream);border-color:#e5dac5}.composer textarea{background:#fffdf9;border-color:#ded6c4;font-size:16px}.send-btn{background:#a83f3d;border-radius:15px;box-shadow:0 3px 8px #a83f3d12}
.info-art{height:149px;margin:10px 0 -7px}.info-profile{background:linear-gradient(120deg,#eee6d3,#f4eddc);border:1px solid #e7dbc2;gap:15px}.profile-avatar{background:var(--pine);color:#f5e6c4}.info-profile p{color:#6c785e}.info-card{background:#fffdf9;border-color:#e6dcc8}.info-card p{color:#65765c}.info-card p strong{color:#375c3c}
dialog{background:#fffaf0;border:1px solid #eadcc3;border-bottom:0;border-radius:28px 28px 0 0}dialog h2{font-family:Georgia,serif;font-weight:400;font-size:29px;letter-spacing:-.7px}dialog .eyebrow{color:#a55343}dialog::backdrop{background:#17372980;backdrop-filter:blur(3px)}.modal-handle{background:#d9ccb7}.modal-close{color:#697460}.toast{background:#244738;border:1px solid #506a47;color:#fff9e9}.emoji-picker button{border-color:#e7d8c2;background:#fffdf8}
@media(min-width:600px){.entry{padding-left:38px;padding-right:38px}.app-shell{border-color:#ddd4c1;box-shadow:0 0 55px #31291e12}.view{padding:26px 28px}.app-header{padding-left:28px;padding-right:28px}.hero{padding:23px 25px 21px}.hero h2{font-size:36px}.hero-art{height:174px}.entry-art{height:194px}dialog{border-radius:25px;border-bottom:1px solid #eadcc3}}
@media(max-width:360px){.entry{padding-left:22px;padding-right:22px}.entry-art{height:142px;margin-top:12px;margin-bottom:9px}.entry h1{font-size:30px}.entry-brand{font-size:13px}.entry-brand small{font-size:9px}.entry-copy{font-size:12px}.entry label{font-size:12px}.entry .fine{font-size:10px}.birthday-input{font-size:22px;min-height:58px;padding:14px 10px}.birthday-input::placeholder{font-size:18px}.install-art{height:182px}.entry:has(.install-art) h1{font-size:32px}.view{padding:21px 16px}.app-header{padding-left:16px;padding-right:16px}.header-brand{font-size:12px}.header-brand small{font-size:8px}.header-brand .brand-logo{height:37px;width:37px}.hero{padding:18px 16px}.hero h2{font-size:27px}.hero-art{height:137px}.greeting h1{font-size:25px}.section-heading h1{font-size:25px}#view-chat .section-heading h1{font-size:22px}.bottom-nav{padding-left:8px;padding-right:8px}.section-label>span{font-size:8px}.prep-copy small{font-size:9px}.info-art{height:130px}}
@media(max-height:700px){.entry-art{height:135px;margin-top:12px;margin-bottom:8px}.entry h1{font-size:30px}.entry .fine{font-size:10px;margin-top:12px}.entry-footer{margin-top:14px}.entry-copy{margin-bottom:12px}.entry label{margin-top:12px}}
@media(prefers-reduced-motion:reduce){.festive-lights g,.hero-snow i{animation:none!important;filter:none!important}.hero-snow i{opacity:.25;top:calc(5% + var(--flake)*9%)}*{scroll-behavior:auto!important}}

/* Christmas evening, 1.3: one dark palette throughout the app. */
:root{color-scheme:dark;--cream:#0b201b;--paper:#17382b;--ink:#f5ead7;--muted:#b2c3ac;--line:#476047;--pine:#f1d89b;--pine2:#e2bd77;--gold:#efc477;--red:#bd5650;background:#0b201b;color:var(--ink)}
body{background:#081812}.entry,.app-shell{background:radial-gradient(ellipse at 90% 0,#56724425,transparent 48%),radial-gradient(ellipse at 0 50%,#35694315,transparent 60%),#0b201b}.entry{box-shadow:0 0 50px #0002}.app-shell{border-color:#314c37;box-shadow:0 0 60px #0004}
.entry-brand,.header-brand{color:#fff0d9}.entry-brand small,.header-brand small{color:#b6c9ac}.brand-logo{background:#153e32;box-shadow:0 0 15px #ffd16b12;border:1px solid #d8ba632c}
.entry-brand,.header-brand,.avatar{position:relative;z-index:3}.app-header{background:linear-gradient(180deg,#102a20,#0e251d);border-bottom-color:#57644765}.festive-lights{height:38px;z-index:2;overflow:visible}.festive-lights svg{height:36px;overflow:visible}.festive-lights g{animation:evening-lights 5s ease-in-out infinite;animation-delay:calc(var(--lamp)*-.57s)}.lamp-halo{opacity:.22;filter:blur(4px)}.lamp-bulb{filter:drop-shadow(0 0 4px var(--glow))}
@keyframes evening-lights{0%,100%{opacity:.78}50%{opacity:1}}
.festive-greenery{position:absolute;left:0;right:0;top:env(safe-area-inset-top);height:44px;overflow:hidden;pointer-events:none;z-index:0}.sprig{position:absolute;left:-10px;top:-5px;width:132px;height:58px;opacity:.9}.sprig svg{display:block;width:100%;height:100%}.sprig.right{left:auto;right:-10px;transform:scaleX(-1)}
.entry h1{color:#fff0d7;text-shadow:0 2px 15px #e2bb7012}.entry .eyebrow{color:#f0b877}.entry-copy,.entry .fine{color:#b9cbb4}.entry-footer{color:#c0b28f}.entry-art:before,.install-art:before,.info-art:before{background:radial-gradient(ellipse,#bc8d2822,transparent 70%)}.entry-art{height:184px;margin-bottom:12px}.install-art{height:226px}.christmas-art img{filter:drop-shadow(0 5px 14px #0002)}
input,textarea,select{background:#10291f;color:#fff1dc;border-color:#617058}input::placeholder,textarea::placeholder{color:#a7b99d;opacity:1}input:focus,textarea:focus,select:focus{border-color:#e5bf79;box-shadow:0 0 0 3px #e5bf7918}.birthday-input{background:#112d22;border-color:#8c8255;box-shadow:inset 0 1px 4px #0002;color:#fff0d5}.birthday-input::placeholder{color:#b6c0a3}.birthday-hint{color:#b7c6ac}.form-error{color:#ffb4a2}
.primary,.entry .btn.primary{background:linear-gradient(135deg,#b64d46,#953532);color:#fff7e9;box-shadow:0 5px 19px #c6553619;border:1px solid #db957544}.outline,.custom-dish{border-color:#b2a366;color:#f1d594}.quiet{color:#c0d0b5}.danger{background:#b64c43;color:#fff8ed}.btn.primary:active,.send-btn:active{transform:translateY(1px)}
.avatar,.profile-avatar{background:#254b34;color:#fbe2a3;border-color:#b1a26b}.avatar:before,.santa-avatar:before{background:#b4423b;border-bottom-color:#fff4df;box-shadow:0 1px 0 #c6bd9c}.avatar:after,.santa-avatar:after{background:#fff4df}
#view-home{position:relative;isolation:isolate}.home-snow{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden}.home-snow i{position:absolute;left:calc(3% + var(--flake)*7%);top:0;width:2px;height:2px;border-radius:50%;background:#fff4d5;opacity:0;animation:home-snowfall 23s linear infinite;animation-delay:calc(var(--flake)*-1.9s)}.home-snow i:nth-child(4n){width:3px;height:3px}.home-snow i:nth-child(3n){animation-duration:29s}
@keyframes home-snowfall{0%{transform:translate3d(0,-12px,0);opacity:0}12%{opacity:.38}84%{opacity:.25}100%{transform:translate3d(18px,850px,0);opacity:0}}
.greeting h1{color:#fff2dd}.greeting .eyebrow{color:#edb875}.greeting>p:last-child{color:#bfd0b5}.greeting h1 span{color:#efc477}
.hero{background:radial-gradient(ellipse at 55% 53%,#49602d35,transparent 65%),linear-gradient(145deg,#204832,#153624 60%,#102c20);border-color:#b49d5c70;box-shadow:0 0 26px #d6a9440c,0 12px 25px #0002}.hero h2{color:#fff1d2}.hero>p{color:#d6dec2}.pill{color:#ffe1a6;border-color:#d7b97665;background:#be9b3e0d}.hero-art{height:163px;margin-top:8px}.hero-art:before{content:"";position:absolute;inset:20% 10% 0;background:radial-gradient(ellipse,#bd8f2a1c,transparent 70%)}.hero-spark{filter:drop-shadow(0 0 8px #e7bf7140)}.event-row{color:#f1dbae}.event-row svg{stroke:#f0c579}.countdown-caption{color:#d3c69e;border-color:#d4b77350}.countdown strong{color:#fff3d5}.countdown span{color:#d0dcbf}.countdown b{color:#d5b676}
.section-label h2,.dish-group>h2{color:#fff0d6}.section-label>span{color:#becbac}.text-btn{color:#ebca8f}.prep-card{background:linear-gradient(130deg,#1c3e2c,#143023);border-color:#64704b;box-shadow:0 3px 16px #0001}.round-icon{background:#71392c45;border-color:#b6774d66;color:#ffd4a7}.prep-copy strong{color:#fff0d6}.prep-copy small{color:#bbcca9}.prep-card>svg{color:#d4bc83}.progress-track{background:#3f5338}.progress-track i{background:linear-gradient(90deg,#bd5950,#e3bb70)}
.mini-message{border-color:#52614370}.mini-avatar{background:#513d28;color:#f3d796}.mini-message strong{color:#f1d5a3}.mini-message p{color:#c2d0b5}.empty-note{border-color:#6a7554;color:#bfd0b2;background:#18362950}.install-banner{background:linear-gradient(135deg,#483e24,#2d3b24);border-color:#ac93555e;color:#f6d69a}.install-banner small{color:#d1c7a7}.home-footer{color:#b7bea3}
.bottom-nav{background:linear-gradient(180deg,#132d21,#10271c);border-top-color:#b798534a;box-shadow:0 -7px 22px #0002}.bottom-nav button{color:#becaaa}.bottom-nav button[aria-current]{background:linear-gradient(130deg,#843e32,#683128);color:#ffe6b4;box-shadow:inset 0 0 0 1px #bd916340}.badge{background:#c65a4b;color:#fff7e7;border:1px solid #f3cc92}
.section-heading .eyebrow,#view-chat .section-heading .eyebrow{color:#ebbd7b}.section-heading h1{color:#fff0d8}.intro{color:#bdccb0}.dish-summary{background:linear-gradient(125deg,#453d23,#2c3c25);border-color:#b39b5c66}.dish-summary strong{color:#ffdf9c}.dish-summary span{color:#e3d4ad}.dish-card{background:#173627;border-color:#516544}.dish-card.mine{background:#24472e;border-color:#b1a463}.dish-card h3{color:#fff0d8}.dish-free{color:#bdccb0}.dish-owner{color:#e8ce90}.dish-note{color:#c7d5bc}.claimed-mark{color:#dbc57e}.claim-btn{background:#68382b;color:#ffe0ae;border-color:#9e6c48}.claim-btn:hover{background:#7b4333}.remove-btn{color:#d2c7a8}.notice-card{background:#31402a;border-color:#6e7852;color:#e0d6b6}
#view-chat{background:radial-gradient(ellipse at 0 35%,#345d3030,transparent 55%),radial-gradient(ellipse at 100% 70%,#693b2420,transparent 55%)}#chat-year{background:#143123;border-color:#718060;color:#e6d6ad}.connection{color:#b7d5a7}.connection.offline{color:#ffcd94}.bubble{background:#22432e;border-color:#5d7351;color:#fff3dd;box-shadow:0 3px 9px #0001}.own .bubble{background:linear-gradient(135deg,#733631,#542826);border-color:#ac7760;color:#fff3dd}.bubble-head strong{color:#e8ca87}.own .bubble-head strong{color:#ffe0a5}.bubble time{color:#bed0ac}.own .bubble time{color:#e0bca4}.message-delete{color:#f0ceb4}.reaction{background:#2b402a;border-color:#7a7b53;color:#ffedd2}.reaction small{color:#d6d7b7}.reaction.chosen{background:#744231;border-color:#c19a6a}.reaction-add{color:#d3cda6}.chat-empty p{color:#c0cdae}.chat-empty h2{color:#fff0d3}.new-messages{background:#475134;border-color:#a19762;color:#fff1cd}
.composer{background:#0c231a;border-color:#65714a66}.composer textarea{background:#183425;border-color:#819069;color:#fff0d7}.send-btn{background:linear-gradient(140deg,#b04b43,#873531);color:#ffeccd;border:1px solid #c08f68;box-shadow:0 2px 12px #b04b4322}
.info-profile{background:linear-gradient(120deg,#34422a,#24402b);border-color:#9b8f5566}.info-profile strong{color:#ffefd4}.info-profile p{color:#ccd7b7}.profile-avatar{background:#173e2d;color:#ffe5aa;border:1px solid #a69c62}.info-card{background:#173428;border-color:#566b49}.info-card h2{color:#fff0d6}.info-card h2 svg{color:#e0c78c}.info-card p{color:#c3d2b5}.info-card p strong{color:#f2d7a4}
dialog{background:linear-gradient(155deg,#234030,#132e22);border-color:#b2a26965;color:#fff0d6;box-shadow:0 -12px 50px #0005}dialog::backdrop{background:#03100ddd}dialog p,dialog ol{color:#d0dbc1}dialog strong{color:#ffdfa4}.modal-handle{background:#9b9c6a}.modal-close{color:#ead9b5}.emoji-picker button{background:#2c442e;border-color:#92946a}.toast{background:#315137;border-color:#a59a61;color:#fff2d2}
@media(min-width:600px){.hero-art{height:184px}.entry-art{height:202px}}
@media(max-width:360px){.entry-art{height:148px}.hero-art{height:144px}.festive-greenery .sprig{width:108px;height:47px}.entry-brand small,.header-brand small{color:#b6c9ac}}
@media(max-height:700px){.entry-art{height:135px}}
@media(prefers-reduced-motion:reduce){.festive-lights g,.home-snow i,.hero-snow i{animation:none!important;filter:none!important}.home-snow i{opacity:.18;top:calc(3% + var(--flake)*6%)}.lamp-bulb{filter:drop-shadow(0 0 3px var(--glow))}.lamp-halo{opacity:.18}}
dialog .eyebrow{color:#efbd7e}.birthday-input:-webkit-autofill{-webkit-text-fill-color:#fff0d5;box-shadow:0 0 0 100px #112d22 inset}.startup{background:radial-gradient(ellipse at 50% 30%,#29482e55,transparent 65%),#0b201b;color:#fff1d8}
