:root{--bg:#fbf5f1;--card:#fffdfb;--surface-raised:#fff;--text:#342139;--hint:#7e697c;--accent:#d82e50;--accent-ink:#fff;--accent-soft:#fce6e9;--amber:#ffb020;--amber-soft:#fff0d4;--link:#b82749;--danger:#bf2944;--border:#ebdfe4;--input:#f5edf0;--shadow:0 3px 14px #43203806;--shadow-float:0 8px 30px #54213a18;--radius-sm:12px;--radius:20px;--radius-lg:28px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--text-xs:12px;--text-sm:14px;--text-base:15px;--text-heading:28px;--font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;--cat-event:#7a6fce;--cat-birthday:#d572a8;--cat-anniversary:#e34163;--cat-chore:#379d89;--cat-payment:#c58a1d;--tabbar-h:72px;--safe-bottom:env(safe-area-inset-bottom,0px);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-scheme=dark]{--bg:#1b1225;--card:#271c32;--surface-raised:#31223c;--text:#f9edf3;--hint:#b8a3bb;--accent:#ff6885;--accent-ink:#291323;--accent-soft:#452338;--amber:#ffb740;--amber-soft:#423122;--link:#ff90a6;--danger:#ff8599;--border:#3c2d45;--input:#211729;--shadow:0 3px 14px #0000000b;--shadow-float:0 8px 30px #08040d50;--cat-event:#afa0ff;--cat-birthday:#ed98cb;--cat-anniversary:#ff6885;--cat-chore:#6dc7ae;--cat-payment:#ffb740;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}[hidden]{display:none!important}html,body{background:var(--bg);color:var(--text);font:var(--text-base)/1.5 var(--font);margin:0}body{min-width:320px}body.no-scroll{overflow:hidden}button{font:inherit;color:inherit;cursor:pointer;text-align:inherit;touch-action:manipulation;background:0 0;border:0;padding:0;transition:background .18s,color .18s,transform .18s}button:active{transform:scale(.97)}button:disabled{cursor:default;opacity:.45}:focus-visible{outline:3px solid var(--accent);outline-offset:3px}input,textarea,select{font:inherit;color:var(--text);background:var(--input);border:1px solid var(--border);border-radius:var(--radius-sm);outline:none;width:100%;min-width:0;min-height:48px;padding:13px 14px;font-size:16px;transition:border-color .18s,box-shadow .18s}input::placeholder,textarea::placeholder{color:var(--hint);opacity:.85}input:focus,textarea:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}input[type=date],input[type=time]{appearance:none}textarea{resize:vertical}h1,h2,h3,p{margin:0}.icon{vertical-align:middle;flex-shrink:0}.logo{object-fit:contain;flex-shrink:0}.app{width:100%;max-width:560px;min-height:100dvh;padding-bottom:calc(var(--tabbar-h) + var(--safe-bottom) + 104px);margin:auto}.header{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:20px 20px 18px;display:flex}.brand{flex:1;min-width:0}.brand h1{letter-spacing:-.8px;font-size:22px;font-weight:800;line-height:1.2}.brand p{color:var(--hint);letter-spacing:.3px;margin-top:3px;font-size:11px}.header .icon-btn{background:var(--card);border:1px solid var(--border)}.splash{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;min-height:100dvh;padding:28px;display:flex}.splash h1{letter-spacing:-1px;font-size:25px}.section{padding:var(--space-5) var(--space-4) 0;flex-direction:column;gap:14px;min-width:0;display:flex}main>div:not([hidden]){animation:.22s ease-out reveal}.section-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px;display:flex}.section-heading h2{font-size:var(--text-heading);letter-spacing:-.9px;font-weight:750;line-height:1.15}.section-heading p{color:var(--hint);margin-top:7px;font-size:13px}.count{background:var(--accent-soft);min-width:38px;height:38px;color:var(--accent);border-radius:14px;place-items:center;padding:0 10px;font-weight:700;display:grid}.tabbar{bottom:calc(10px + var(--safe-bottom));max-width:536px;height:var(--tabbar-h);background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow-float);z-index:10;border-radius:24px;align-items:stretch;margin:auto;padding:6px;display:flex;position:fixed;left:12px;right:12px}.tabbar:after{content:"";height:calc(10px + var(--safe-bottom));background:var(--bg);z-index:-1;position:absolute;top:100%;left:-12px;right:-12px}.tabbar button{min-width:0;color:var(--hint);border-radius:18px;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;font-size:10px;font-weight:600;display:flex}.tabbar button.active{background:var(--accent-soft);color:var(--accent)}.tab-icon{place-items:center;height:26px;display:grid}.fab{right:max(20px,50vw - 260px);bottom:calc(var(--tabbar-h) + var(--safe-bottom) + 26px);background:var(--accent);min-height:52px;color:var(--accent-ink);z-index:11;border-radius:18px;align-items:center;gap:8px;padding:0 18px 0 14px;font-size:13px;font-weight:700;display:flex;position:fixed;box-shadow:0 6px 24px #d82e5030}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.list{flex-direction:column;gap:10px;display:flex}.list:empty{display:none}.list-title{color:var(--hint);margin:10px 2px 0;font-size:14px;font-weight:650}.list-title.with-action{justify-content:space-between;align-items:center;margin-top:4px;display:flex}.list-title.with-action h3{font-size:inherit}.row{align-items:center;gap:14px;width:100%;padding:16px;display:flex}.row-main{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.row-title{overflow-wrap:anywhere;font-weight:650;line-height:1.4}.row-title.left{text-align:left;min-height:44px}.row-sub{color:var(--hint);overflow-wrap:anywhere;font-size:12px}.row-sub:empty{display:none}.qty{color:var(--hint);font-size:13px;font-weight:400}.clamp{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.chips{flex-wrap:wrap;gap:6px;min-width:0;padding:2px 0;display:flex}.chip{border-radius:var(--radius-sm);background:var(--card);border:1px solid var(--border);overflow-wrap:anywhere;justify-content:center;align-items:center;gap:6px;max-width:100%;min-height:44px;padding:10px 12px;font-size:12px;font-weight:550;display:inline-flex}.chip.active,.sheet .chip.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:650}.sheet .chips{flex-wrap:wrap}.sheet .chip{background:var(--input)}.btn{text-align:center;border-radius:14px;justify-content:center;align-items:center;gap:8px;min-height:48px;padding:12px 16px;font-size:14px;font-weight:650;display:inline-flex}.btn.primary{background:var(--accent);color:var(--accent-ink)}.btn.ghost{background:var(--amber-soft);color:var(--text);border:1px solid color-mix(in srgb,var(--amber) 30%,transparent)}.btn.ghost .icon{color:var(--cat-payment)}.btn.danger{color:var(--danger);background:var(--accent-soft)}.btn.wide{width:100%}.icon-btn{width:44px;height:44px;color:var(--hint);border-radius:15px;flex:none;place-items:center;display:grid}.link-btn{min-height:44px;color:var(--link);text-align:left;overflow-wrap:anywhere;align-items:center;gap:6px;max-width:100%;font-size:13px;display:inline-flex}.empty{text-align:center;color:var(--text);flex-direction:column;align-items:center;gap:10px;padding:28px 20px;font-size:14px;display:flex}.empty-icon{color:var(--accent);background:var(--accent-soft);border-radius:24px;place-items:center;width:68px;height:68px;margin-bottom:4px;display:grid;transform:rotate(-5deg)}.empty-caption{color:var(--hint);font-size:12px}.hint{color:var(--hint);font-size:13px;line-height:1.6}.error{color:var(--danger);font-size:13px}.search{background-color:var(--card);border-radius:16px}.add-line{background:var(--card);border:1px solid var(--border);border-radius:18px;gap:8px;padding:6px;display:flex}.add-line input{background:0 0;border:0;flex:1;padding:10px;font-size:14px}.add-line .btn{border-radius:12px;padding:10px 12px;font-size:12px}.badge{background:var(--input);color:var(--hint);border-radius:8px;flex:none;padding:5px 8px;font-size:10px}.badge.status-planned{background:var(--amber-soft);color:var(--text)}.sheet-backdrop{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:100;background:#10091ccc;justify-content:center;align-items:flex-end;animation:.2s ease-out fade;display:flex;position:fixed;inset:0}.sheet{background:var(--card);border-radius:var(--radius-lg) var(--radius-lg) 0 0;flex-direction:column;width:100%;max-width:560px;max-height:92dvh;padding-top:18px;animation:.25s cubic-bezier(.2,.8,.2,1) slide;display:flex;position:relative;box-shadow:0 -10px 60px #00000020}.sheet:before{content:"";background:var(--border);border-radius:4px;width:36px;height:4px;position:absolute;top:9px;left:calc(50% - 18px)}.sheet-head{flex:none;justify-content:space-between;align-items:center;gap:12px;padding:8px 16px 12px 20px;display:flex}.sheet-head h2{letter-spacing:-.5px;font-size:21px;font-weight:700}.sheet-head .icon-btn{background:var(--input)}.sheet-body{overscroll-behavior:contain;flex-direction:column;gap:18px;min-height:0;padding:8px 20px 24px;display:flex;overflow-y:auto}.sheet-footer{border-top:1px solid var(--border);padding:14px 20px calc(14px + var(--safe-bottom));background:var(--card);flex:none}.sheet:not(:has(.sheet-footer)) .sheet-body{padding-bottom:calc(24px + var(--safe-bottom))}.field{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.field-label{color:var(--hint);font-size:12px;font-weight:600}.field-row{gap:10px;display:flex}.switch{align-items:center;gap:12px;min-height:48px;font-size:14px;display:flex}.switch input{appearance:none;background:var(--border);cursor:pointer;border:0;border-radius:20px;flex:none;width:44px;height:26px;min-height:26px;padding:0;transition:background .2s;position:relative}.switch input:after{content:"";background:var(--surface-raised);border-radius:50%;width:20px;height:20px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #00000020}.switch input:checked{background:var(--accent)}.switch input:checked:after{transform:translate(18px)}.actions{gap:10px;display:flex}.actions .btn{flex:1}.settings-intro{background:var(--input);border-radius:var(--radius);align-items:center;gap:12px;padding:16px;display:flex}.settings-intro>div{flex:1;min-width:0}.settings-intro>.icon{color:var(--accent)}.month-head{justify-content:space-between;align-items:center;display:flex}.month-head .icon-btn{background:var(--card);border:1px solid var(--border)}.month-title{text-transform:capitalize;min-height:44px;font-size:17px;font-weight:650}.month-grid{border-radius:24px;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px 0;padding:10px 4px;display:grid}.weekday{text-align:center;color:var(--hint);text-transform:uppercase;padding:6px 0 10px;font-size:10px;font-weight:650}.weekday:nth-child(6),.weekday:nth-child(7){color:var(--accent)}.day{font-variant-numeric:tabular-nums;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:3px;min-height:46px;font-size:14px;display:flex}.day.outside{color:var(--hint);opacity:.45}.day.today{color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);font-weight:800}.day.selected{background:var(--accent);color:var(--accent-ink);opacity:1;box-shadow:none;font-weight:700}.dots{gap:2px;height:5px;display:flex}.dot{background:var(--category,var(--cat-event));border-radius:50%;width:4px;height:4px}.cat-event{--category:var(--cat-event)}.cat-birthday{--category:var(--cat-birthday)}.cat-anniversary{--category:var(--cat-anniversary)}.cat-chore{--category:var(--cat-chore)}.cat-payment{--category:var(--cat-payment)}.day.selected .dot{outline:1px solid var(--accent-ink)}.event-row{position:relative;overflow:hidden}.event-row:before{content:"";background:var(--category);border-radius:3px;width:3px;position:absolute;top:16px;bottom:16px;left:0}.event-time{font-variant-numeric:tabular-nums;min-width:53px;max-width:53px;font-size:13px;font-weight:700;line-height:1.4}.shop-row{gap:8px;padding:8px 12px 8px 8px}.shop-row .row-main{text-align:left;justify-content:center;min-height:48px}.check{width:44px;height:44px;color:var(--accent-ink);flex:none;place-items:center;display:grid;position:relative}.check:before{content:"";border:2px solid var(--border);border-radius:9px;transition:background .2s,border-color .2s;position:absolute;inset:8px}.check.on:before{background:var(--accent);border-color:var(--accent)}.check .icon{animation:.2s ease-out pop;position:relative}.checked .row-title{color:var(--hint);text-decoration:line-through}.checked{background:color-mix(in srgb,var(--card) 50%,var(--bg))}.movie{gap:12px;padding:12px;display:flex}.poster{background:var(--accent-soft);width:68px;height:102px;color:var(--accent);border-radius:12px;flex:none;place-items:center;display:grid;overflow:hidden}.poster img{object-fit:cover;width:100%;height:100%}.movie-info{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.mini-actions,.ratings,.episode{flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;display:flex}.movie .chip{background:var(--input);padding:8px 9px;font-size:11px}.episode{justify-content:space-between;font-size:12px}.rating{color:var(--hint);flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;display:flex}.rating select{width:auto;padding:8px}.picked{text-align:center;flex-direction:column;align-items:center;gap:12px;padding:12px 0 24px;display:flex}.picked img{border-radius:16px;max-width:140px}.picked-icon{background:var(--amber-soft);color:var(--accent);border-radius:24px;place-items:center;width:90px;height:90px;font-size:44px;display:grid}.note,.plan{cursor:pointer;flex-direction:column;gap:8px;padding:16px;display:flex}.note.pinned{border-color:color-mix(in srgb,var(--amber) 50%,var(--border))}.note.pinned .row-title>.icon{color:var(--cat-payment);margin-right:4px}.note-head{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.note-head>.row-sub{flex-shrink:0;font-size:10px}.note-head>.row-title{min-width:0}.note-body{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;line-height:1.6}.tags{color:var(--link);flex-wrap:wrap;gap:6px;font-size:11px;display:flex}.tags span{background:var(--accent-soft);overflow-wrap:anywhere;border-radius:7px;max-width:100%;padding:4px 8px}.spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:26px;height:26px;animation:1s linear infinite spin;display:block}@keyframes fade{0%{opacity:0}}@keyframes slide{0%{opacity:.5;transform:translateY(50px)}}@keyframes reveal{0%{opacity:.5;transform:translateY(5px)}}@keyframes pop{0%{transform:scale(.6)}}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@media (width<=374px){.header{padding-inline:16px}.brand h1{font-size:20px}.sheet-body{padding-inline:16px}.field-row{gap:8px}.field-row input{padding-inline:9px}.section-heading p{font-size:12px}}.month-caption{color:var(--hint);text-transform:none;margin-top:2px;font-size:10px;font-weight:400;display:block}.section>.chips{background:var(--input);border-radius:16px;padding:4px}.section>.chips>.chip{background:0 0;border-color:#0000;flex:auto}.section>.chips>.chip.active{background:var(--card);color:var(--accent);box-shadow:var(--shadow)}.fab{border-radius:50%;justify-content:center;width:56px;height:56px;min-height:56px;padding:0}.fab span{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.section{gap:12px}.section-heading{margin-bottom:0}.section-heading h2{letter-spacing:-.5px;font-size:24px}.section-heading p{margin-top:2px}.list:has(>.shop-row){gap:6px}.shop-row{padding:2px 12px 2px 4px}.shop-row .row-main{min-height:44px}.subnav{z-index:5;padding:12px var(--space-4) 4px;background:var(--bg);position:sticky;top:0}.segmented{background:var(--input);border:1px solid var(--border);border-radius:16px;gap:4px;padding:4px;display:flex}.segmented button{min-height:40px;color:var(--hint);text-align:center;border-radius:12px;flex:1 1 0;font-size:14px;font-weight:600}.segmented button.active{background:var(--card);color:var(--accent);box-shadow:var(--shadow)}.hero{background:linear-gradient(135deg,var(--accent-soft),var(--amber-soft));border:none;padding:20px}.hero-greeting{letter-spacing:-.4px;font-size:20px;font-weight:750}.together{align-items:center;gap:12px;margin-top:14px;display:flex}.together-days{letter-spacing:-2px;color:var(--accent);font-variant-numeric:tabular-nums;font-size:44px;font-weight:800;line-height:1}.together-label{font-weight:650;line-height:1.3}.dates-strip{scrollbar-width:none;margin:0 calc(-1 * var(--space-4));padding:0 var(--space-4);gap:8px;display:flex;overflow-x:auto}.dates-strip::-webkit-scrollbar{display:none}.date-chip{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);text-align:left;flex:none;align-items:center;gap:10px;padding:10px 14px 10px 10px;display:flex}.date-chip>span:last-child{flex-direction:column;line-height:1.3;display:flex}.date-chip strong{font-size:14px}.date-chip .hint{font-size:12px}.date-chip-icon{background:var(--accent-soft);border-radius:12px;place-items:center;width:38px;height:38px;font-size:18px;display:grid}.tiles{grid-template-columns:1fr 1fr;gap:10px;display:grid}.tile{text-align:left;flex-direction:column;gap:6px;min-width:0;padding:16px;display:flex}.tile-head{color:var(--hint);align-items:center;gap:6px;font-size:13px;font-weight:700;display:flex}.tile-head .icon{color:var(--accent)}.tile-number{letter-spacing:-1px;font-size:32px;font-weight:800;line-height:1.1}.tile-text{font-weight:650;line-height:1.35}.tile-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.tile-list li{justify-content:space-between;gap:10px;font-weight:550;display:flex}.tile-list li.done span:last-child{color:var(--hint);text-decoration:line-through}.tile-time{min-width:44px;color:var(--accent);font-variant-numeric:tabular-nums;flex:none;order:-1;font-size:13px;font-weight:700}.tile-list li:has(.tile-time){justify-content:flex-start}.event-main{text-align:left;flex-direction:row;align-items:center;gap:14px}.event-row{padding-right:6px}.pick-list{flex-direction:column;gap:6px;max-height:240px;display:flex;overflow-y:auto}.pick{border-radius:var(--radius-sm);background:var(--input);text-align:left;border:1px solid #0000;padding:12px 14px;font-weight:600}.pick.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.sheet-lead{font-size:17px;font-weight:700}.stepper-row{justify-content:space-between;align-items:center;display:flex}.stepper{background:var(--input);border-radius:14px;align-self:flex-start;align-items:center;gap:6px;padding:2px;display:inline-flex}.stepper span{text-align:center;font-variant-numeric:tabular-nums;min-width:28px;font-weight:700}.stepper .icon-btn{color:var(--accent);font-size:20px}.ingredients{border:1px solid var(--border);border-radius:var(--radius-sm);margin:0;padding:0;list-style:none}.ingredients li{justify-content:space-between;gap:12px;padding:11px 14px;display:flex}.ingredients li+li{border-top:1px solid var(--border)}.recipe-steps{white-space:pre-wrap;line-height:1.6}.ingredient-row{grid-template-columns:minmax(0,1fr) 64px 56px 36px;align-items:center;gap:6px;display:grid}.ingredient-row input{min-height:44px;padding:10px}.ingredient-row .icon-btn{width:36px;height:36px}.ingredient-actions{flex-wrap:wrap;gap:6px;display:flex}.search-results{flex-direction:column;gap:6px;display:flex}.search-result{border-radius:var(--radius-sm);background:var(--input);text-align:left;align-items:center;gap:12px;padding:8px;display:flex}.search-poster{background:var(--card);width:44px;height:64px;color:var(--hint);border-radius:8px;flex:none;place-items:center;display:grid;overflow:hidden}.search-poster img{object-fit:cover;width:100%;height:100%}.kp-rating{color:var(--cat-payment);align-items:center;gap:3px;margin-left:8px;font-weight:700;display:inline-flex}.kp-rating .icon{fill:currentColor}.picked-movie{align-items:center;gap:14px;display:flex}.picked-movie img{border-radius:10px;width:64px}.wish{cursor:pointer}.wish.reserved{border-color:var(--amber);background:linear-gradient(135deg,var(--card),var(--amber-soft))}.toast{left:50%;bottom:calc(var(--tabbar-h) + var(--safe-bottom) + 92px);background:var(--text);max-width:calc(100% - 32px);color:var(--bg);box-shadow:var(--shadow-float);z-index:200;border-radius:14px;padding:12px 18px;font-size:14px;font-weight:600;animation:.2s ease-out reveal;position:fixed;transform:translate(-50%)}
