:root{--bg:#f4ede4;--surface:#fbf8f4;--text:#2b2420;--muted:#74655a;--accent:#b5573b;--accent-strong:#8e3f27;--on-accent:#fffaf4;--border:#e3d6c7;--line:#d8c7b5;--error:#a3321f;--logo-mark:#b5573b;--logo-name:#8e3f27;--font:"Jost", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--good:#4e7a4a;--blue:#2f7de1;--green:#22a45d;--red:#e0453a;--shadow:0 1px 2px #0000000f, 0 2px 8px #0000000d;font-family:var(--font);color:var(--text);background:var(--bg);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-weight:400}:root[data-mode=dark]{--good:#93c08a;--blue:#5aa2ff;--green:#3ccf7e;--red:#ff6b5f;--shadow:0 1px 2px #00000040;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{touch-action:manipulation;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--bg);-webkit-font-smoothing:antialiased;min-height:100vh;margin:0;line-height:1.45}h1,h2{text-transform:uppercase;letter-spacing:.14em;font-weight:500}h1{margin:0 0 .5rem;font-size:1.45rem}.muted{color:var(--muted)}.center{text-align:center;margin-top:30vh}.error{color:var(--error)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.logo{height:auto;display:block}.logo .logo-mark{stroke:var(--logo-mark)}.logo .logo-name{stroke:var(--logo-name)}.loader{justify-content:center;align-items:center;animation:.35s ease-out .18s both loader-appear;display:flex}.loader-instant{animation:none}.loader-full{z-index:5;background:var(--bg);position:fixed;inset:0}.loader-page{min-height:45vh}.loader-small{padding:.75rem 0}.loader-mark{width:52px;height:auto;stroke:var(--logo-mark);animation:loader-glow 1.8s ease-in-out var(--loader-phase,0s) infinite;display:block;overflow:visible}.loader-full .loader-mark{width:84px}.loader-small .loader-mark{width:28px}@keyframes loader-appear{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}@keyframes loader-glow{0%,to{opacity:.5;filter:drop-shadow(0 0 #0000);transform:scale(.96)}50%{opacity:1;filter:drop-shadow(0 0 3px color-mix(in srgb, var(--logo-mark) 75%, transparent)) drop-shadow(0 0 12px color-mix(in srgb, var(--logo-mark) 45%, transparent));transform:scale(1)}}.content>:not(.loader){animation:.3s ease-out both content-in}@keyframes content-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.loader-mark,.content>:not(.loader){animation:none}.loader:not(.loader-instant){animation-name:loader-appear-still}}@keyframes loader-appear-still{0%{opacity:0}to{opacity:1}}.content>h1.welcome{animation:2.2s ease-out .15s both welcome-in}@keyframes welcome-in{0%{opacity:0}to{opacity:1}}.shell{flex-direction:column;min-height:100vh;display:flex}.nav{z-index:50;background:var(--surface);border-bottom:1px solid var(--border);padding:.5rem 1.25rem;padding-top:max(.5rem, env(safe-area-inset-top));padding-left:max(1.25rem, env(safe-area-inset-left));padding-right:max(.75rem, env(safe-area-inset-right));justify-content:space-between;align-items:center;gap:1rem;display:flex;position:sticky;top:0}.nav a.brand{border:0;padding:.25rem 0;display:block}.brand .logo{width:200px}.menu-toggle{width:44px;height:44px;color:var(--text);z-index:2;background:0 0;border-radius:8px;justify-content:center;align-items:center;padding:0;display:flex;position:relative}.menu-toggle:not(:disabled):hover{filter:none;background:color-mix(in srgb, var(--text) 6%, transparent)}.menu-icon{width:22px;height:16px;display:block;position:relative}.menu-icon span{background:currentColor;border-radius:2px;width:100%;height:2px;transition:transform .25s,opacity .2s,top .25s;position:absolute;left:0}.menu-icon span:first-child{top:0}.menu-icon span:nth-child(2){top:7px}.menu-icon span:nth-child(3){top:14px}.nav.open .menu-icon span:first-child{top:7px;transform:rotate(45deg)}.nav.open .menu-icon span:nth-child(2){opacity:0}.nav.open .menu-icon span:nth-child(3){top:7px;transform:rotate(-45deg)}.nav-backdrop{opacity:0;pointer-events:none;background:#14100e73;transition:opacity .25s;position:fixed;inset:0}.nav.open .nav-backdrop{opacity:1;pointer-events:auto}.nav-links{overscroll-behavior:contain;background:var(--surface);border-right:1px solid var(--border);width:min(80vw,300px);padding:1rem .75rem;padding-top:calc(env(safe-area-inset-top) + 4.5rem);padding-left:max(.75rem, env(safe-area-inset-left));padding-bottom:max(1rem, env(safe-area-inset-bottom));visibility:hidden;flex-direction:column;gap:.15rem;transition:transform .28s cubic-bezier(.2,.8,.2,1),visibility 0s linear .28s;display:flex;position:fixed;top:0;bottom:0;left:0;overflow-y:auto;transform:translate(-105%);box-shadow:0 0 24px #0000002e}.nav.open .nav-links{visibility:visible;transition:transform .28s cubic-bezier(.2,.8,.2,1);transform:none}body.menu-open{overflow:hidden}.nav a:not(.brand){color:var(--muted);text-transform:uppercase;letter-spacing:.14em;text-align:left;background:0 0;border-left:3px solid #0000;border-radius:6px;padding:.85rem .9rem;font-size:.85rem;font-weight:500;text-decoration:none;display:block}.nav a:hover{color:var(--text)}.nav a:not(.brand):hover{background:color-mix(in srgb, var(--text) 5%, transparent)}.nav a.active{color:var(--accent-strong);border-left-color:var(--accent);background:color-mix(in srgb, var(--accent) 10%, transparent);border-radius:0 6px 6px 0}.user-menu{border-top:1px solid var(--border);justify-content:flex-end;margin-top:auto;padding-top:.75rem;display:flex;position:relative}.user-menu-toggle{background:0 0;border-radius:999px;padding:3px;line-height:0}.user-menu-toggle:not(:disabled):hover{filter:none;background:color-mix(in srgb, var(--text) 6%, transparent)}.user-menu-toggle[aria-expanded=true] .avatar{border-color:var(--accent)}.avatar.sm{width:40px;height:40px;font-size:.85rem}.user-menu-pop{z-index:5;background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;min-width:200px;max-width:100%;padding:.4rem;animation:.14s ease-out user-menu-in;display:flex;position:absolute;bottom:calc(100% + .4rem);right:0;box-shadow:0 8px 24px #00000029}@keyframes user-menu-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.user-menu-who{border-bottom:1px solid var(--border);flex-direction:column;gap:.15rem;min-width:0;margin-bottom:.3rem;padding:.5rem .7rem .6rem;display:flex}.user-menu-who strong{overflow-wrap:anywhere;font-weight:500}.user-menu-who span{color:var(--muted);overflow-wrap:anywhere;font-size:.8rem}.nav .user-menu-pop a:not(.brand),.user-menu-pop button{text-align:left;width:100%;color:var(--text);text-transform:none;letter-spacing:normal;background:0 0;border:0;border-radius:6px;padding:.6rem .7rem;font-size:.95rem;font-weight:400;text-decoration:none;display:block}.user-menu-pop button.user-menu-signout{color:var(--error)}.nav .user-menu-pop a:not(.brand):hover,.user-menu-pop button:not(:disabled):hover{filter:none;background:color-mix(in srgb, var(--text) 6%, transparent)}@media (prefers-reduced-motion:reduce){.nav-links,.nav-backdrop,.menu-icon span{transition:none!important}.user-menu-pop{animation:none}}.main{flex:1;min-width:0}.content{width:100%;max-width:960px;margin:0 auto;padding:1.75rem 1.25rem}@media (width>=760px){.shell{flex-direction:row}.nav{width:250px;height:100vh;padding:1.25rem .75rem;padding-top:max(1.25rem, env(safe-area-inset-top));padding-left:max(.75rem, env(safe-area-inset-left));border-bottom:0;border-right:1px solid var(--border);flex-flow:column;flex:none;justify-content:flex-start;align-items:stretch;gap:1rem;position:sticky;top:0;overflow-y:auto}.nav a.brand{border:0;border-bottom:1px solid var(--border);background:0 0;border-radius:0;justify-content:center;padding:.5rem 0 1.25rem;display:flex}.menu-toggle,.nav-backdrop{display:none}.nav-links{visibility:visible;width:auto;box-shadow:none;background:0 0;border:0;flex:1;padding:0;transition:none;position:static;overflow:visible;transform:none}.nav a:not(.brand){padding:.7rem .9rem;font-size:.8rem}.content{padding:2rem}}button{font:inherit;background:var(--accent);color:var(--on-accent);cursor:pointer;border:0;border-radius:6px;padding:.6rem 1rem;font-weight:500;transition:background-color .15s,color .15s,border-color .15s}button:not(:disabled):hover{filter:brightness(.92)}:root[data-mode=dark] button:not(:disabled):hover{filter:brightness(1.1)}button.link:not(:disabled):hover{filter:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:disabled{opacity:.6}button.link{color:var(--muted);background:0 0;padding:0}button.link:not(:disabled):hover{color:var(--text)}input{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;padding:.6rem}.login{text-align:center;max-width:360px;margin:12vh auto 0;padding:0 1rem}.login-logo{width:220px;margin:0 auto}.login-tagline{color:var(--muted);text-transform:uppercase;letter-spacing:.14em;margin:1.5rem 0 0;font-size:.8rem;font-weight:500}.login form{text-align:left;flex-direction:column;gap:.75rem;margin-top:1rem;display:flex}.login .passkey-button{justify-content:center;align-items:center;gap:.5rem;width:100%;margin-top:1.5rem;display:inline-flex}.login-or{color:var(--muted);text-transform:uppercase;letter-spacing:.14em;align-items:center;gap:.75rem;margin:1rem 0 0;font-size:.8rem;display:flex}.login-or:before,.login-or:after{content:"";border-top:1px solid var(--border);flex:1}.login-links{flex-direction:column;align-items:center;gap:.5rem;margin-top:1.25rem;font-size:.9rem;display:flex}.login-note{margin:1.25rem 0 0}.login-sent{margin-top:1.5rem}.login-card{text-align:left;margin-top:1rem}h1.login-tagline{font-family:inherit}.password-form{flex-direction:column;gap:.75rem;max-width:360px;margin:.75rem 0;display:flex}.password-form p{margin:0}.setup-banner{border:1px solid color-mix(in srgb, var(--accent) 40%, var(--border));background:color-mix(in srgb, var(--accent) 8%, var(--surface));border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1rem;margin-bottom:1rem;padding:.75rem 1rem;font-size:.9rem;display:flex}.security{max-width:720px;margin-top:1.5rem}.security h2{margin:0 0 .25rem}.security>p{margin:0 0 .5rem}.themes-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.75rem 1rem;margin-bottom:.9rem;display:flex}.themes-head h2{margin:0 0 .25rem}.themes-head p{margin:0}.mode-switch{color:var(--muted);text-transform:uppercase;letter-spacing:.1em;background:0 0;align-items:center;gap:.55rem;padding:.35rem .4rem;font-size:.85rem;display:inline-flex}.mode-switch:not(:disabled):hover{filter:none;color:var(--text)}.mode-switch .on{color:var(--text)}.mode-track{background:var(--line);border-radius:999px;width:46px;height:26px;transition:background .2s;position:relative}.mode-switch[aria-checked=true] .mode-track{background:var(--accent)}.mode-thumb{background:var(--surface);border-radius:999px;width:20px;height:20px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #00000040}.mode-switch[aria-checked=true] .mode-thumb{transform:translate(20px)}.theme-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,140px),1fr));gap:.7rem;display:grid}.theme-card{text-align:left;border:2px solid;border-radius:10px;flex-direction:column;align-items:flex-start;gap:.15rem;padding:.6rem .6rem .7rem;font-weight:400;transition:transform .15s,border-color .15s;display:flex;position:relative}.theme-card:not(:disabled):hover{filter:none;transform:translateY(-2px)}.theme-preview{border:1px solid;border-radius:7px;align-items:center;gap:.55rem;width:100%;margin-bottom:.35rem;padding:.55rem;display:flex}.theme-mark{border-bottom:18px solid;border-left:11px solid #0000;border-right:11px solid #0000;flex:none;width:0;height:0}.theme-bars{flex-direction:column;flex:1;gap:4px;display:flex}.theme-bars span{border-radius:3px;height:5px}.theme-bars span:first-child{width:85%}.theme-bars span:nth-child(2){opacity:.6;width:60%}.theme-bars span:nth-child(3){width:72%}.theme-name{letter-spacing:.08em;text-transform:uppercase;font-size:1rem;font-weight:500}.theme-font{font-size:.75rem}.theme-check{border-radius:999px;place-items:center;width:22px;height:22px;font-size:.75rem;font-weight:600;display:grid;position:absolute;top:-8px;right:-8px}@media (prefers-reduced-motion:reduce){.theme-card,.mode-thumb,.mode-track{transition:none}}.security+.security{margin-top:1rem}.security-row{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1rem;margin-top:.6rem;padding:.9rem 0 .4rem;display:flex}.security-row p{max-width:46ch;margin:.2rem 0 0}.passkey-add{align-items:center;gap:.4rem;display:inline-flex}.passkey-list{flex-direction:column;gap:.4rem;margin:.5rem 0 0;padding:0;list-style:none;display:flex}.passkey-list li{border:1px solid var(--border);border-radius:8px;justify-content:space-between;align-items:center;gap:1rem;padding:.55rem .75rem;display:flex}.passkey-list li>div{flex-direction:column;gap:.1rem;display:flex}h2{margin:1.75rem 0 .75rem;font-size:.95rem}a{color:var(--accent-strong)}.small{font-size:.85rem}.num{font-variant-numeric:tabular-nums}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem;display:flex}.page-head h1{margin:0}.page-head p{margin:.25rem 0 0}a.button{background:var(--accent);color:var(--on-accent);border-radius:6px;padding:.6rem 1rem;font-weight:500;text-decoration:none;display:inline-block}a.button:hover{background:var(--accent-strong)}a.button.secondary{background:var(--surface);color:var(--text);border:1px solid var(--border)}button.secondary:not(:disabled):hover{border-color:var(--line)}a.button.secondary:hover{border-color:var(--line);background:var(--surface)}button.link.danger{color:var(--error);background:0 0}.card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:10px;padding:1rem}.card.empty{text-align:center;padding:2rem 1rem}.stats{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.75rem;margin-bottom:.75rem;display:grid}.stat-value{font-variant-numeric:tabular-nums;margin:.15rem 0;font-size:1.4rem;font-weight:500}.grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.75rem;display:grid}.account-card{color:inherit;text-decoration:none;display:block}.account-card:hover{border-color:var(--accent)}.account-card-head{justify-content:space-between;align-items:baseline;gap:.5rem;display:flex}.tag{color:var(--muted);border:1px solid var(--border);white-space:nowrap;border-radius:999px;padding:.1rem .5rem;font-size:.75rem}.balance{font-variant-numeric:tabular-nums;margin:.5rem 0;font-size:1.5rem;font-weight:500}.facts{grid-template-columns:auto 1fr;gap:.2rem .75rem;margin:0;font-size:.85rem;display:grid}.facts dt{color:var(--muted)}.facts dd{text-align:right;margin:0}.list{margin:0;padding:.25rem 1rem;list-style:none}.list li{border-bottom:1px solid var(--border);align-items:center;gap:.75rem;padding:.6rem 0;display:flex}.list li:last-child{border-bottom:0}.list li>:first-child{flex:8rem}.list .num{margin-left:auto}.details{grid-template-columns:1fr auto;gap:.6rem 1rem;margin:0;display:grid}.details dt{color:var(--muted)}.details dd{text-align:right;font-variant-numeric:tabular-nums;margin:0}.notes{white-space:pre-wrap;margin:0}.meter{margin-bottom:.75rem}.meter-head{justify-content:space-between;margin-bottom:.4rem;display:flex}.meter-track{background:var(--border);border-radius:999px;height:8px;margin-bottom:.4rem;overflow:hidden}.meter-fill{border-radius:inherit;background:var(--accent);height:100%;box-shadow:0 0 8px 1px color-mix(in srgb, var(--accent) 55%, transparent)}.meter-fill.warn{background:#c98a1b;box-shadow:0 0 8px 1px #c98a1b8c}.inline-form{flex-wrap:wrap;align-items:center;gap:.5rem;margin:1rem 0;display:flex}.inline-form input{width:10rem}.form fieldset{border:0;min-width:0;margin:0 0 1.25rem;padding:0}.form legend{margin-bottom:.6rem;padding:0;font-weight:600}.fields{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.75rem;display:grid}.field{flex-direction:column;gap:.3rem;font-size:.9rem;display:flex}.field>span{color:var(--muted)}.field.wide{grid-column:1/-1}.field.check{flex-direction:row;align-self:end;align-items:center;gap:.5rem;padding-bottom:.6rem}.field.check>span{color:var(--text)}select,textarea{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;padding:.6rem}.actions{justify-content:flex-end;display:flex}.row-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.notice{margin:0 0 1rem}.positive{color:var(--good)}.sync-status{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem;display:flex}.sync-status p{white-space:pre-wrap;margin:.4rem 0 0}.steps{margin:0 0 1rem;padding-left:1.25rem;line-height:1.6}.review-row{flex-wrap:wrap}.review-row select{max-width:100%}.subnav{scrollbar-width:none;border-bottom:1px solid var(--border);z-index:5;background:var(--bg);gap:.25rem;margin:-.5rem -1rem 1.25rem;padding:0 1rem;display:flex;position:sticky;top:0;overflow-x:auto}.subnav::-webkit-scrollbar{display:none}.subnav a{color:var(--muted);white-space:nowrap;border-bottom:2px solid #0000;flex:none;margin-bottom:-1px;padding:.7rem .85rem;text-decoration:none}.subnav a:hover{color:var(--text)}.subnav a.active{color:var(--accent-strong);border-bottom-color:var(--accent);font-weight:500}button.secondary{background:var(--surface);color:var(--text);border:1px solid var(--border)}button.link.inline{color:var(--accent-strong);text-decoration:underline}.small-button{padding:.3rem .7rem;font-size:.85rem}.warn-text{color:#c98a1b}.stat .muted.small a{font-size:inherit}.month-picker{align-items:center;gap:.5rem;display:flex}.month-picker strong{text-align:center;min-width:9.5rem}.month-picker button{padding:.35rem .7rem}.toolbar{flex-wrap:wrap;align-items:center;gap:.5rem;margin:1rem 0 .75rem;display:flex}.toolbar input[type=search]{flex:10rem}.toolbar .field.check{align-self:center;padding:0}.add-expense{grid-template-columns:7rem 1fr 1fr;gap:.5rem;margin:.75rem 0;display:grid}.add-expense>*{width:100%;min-width:0}.add-expense .amount{font-variant-numeric:tabular-nums;font-size:1.1rem}.add-expense .error,.add-expense .hint{grid-column:1/-1;margin:0}@media (width<=600px){.add-expense{grid-template-columns:1fr 1fr}.add-expense>*{width:100%;min-width:0}.add-expense .amount{grid-column:1/-1}}.spend-row,.bill-row{flex-wrap:wrap}.list .num{white-space:nowrap}.spend-row select{flex:0 13rem;max-width:13rem}.budget-row .num{margin-left:auto}.budget-input{text-align:right;width:6.5rem;padding:.4rem .5rem}.meter-track.slim{height:6px;margin:.4rem 0 0}.meter-track{overflow:visible}.meter-fill.under{background:var(--blue);box-shadow:0 0 8px 1px color-mix(in srgb, var(--blue) 60%, transparent)}.meter-fill.full{background:var(--green);box-shadow:0 0 8px 1px color-mix(in srgb, var(--green) 60%, transparent)}.meter-fill.over{background:var(--red);box-shadow:0 0 8px 1px color-mix(in srgb, var(--red) 60%, transparent)}.page-head h2{margin:.5rem 0 0}.group-head{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.manage-row input{flex:8rem;min-width:0;padding:.4rem .5rem}.manage-row .icon-input{text-align:center;flex:0 0 3rem}.manage-row select{padding:.4rem}.list li.manage-row>:first-child{flex:0 0 3rem}.pay-form{flex-wrap:wrap;flex-basis:100%;align-items:center;gap:.5rem;display:flex}.pay-form input{width:9rem;padding:.4rem .5rem}.pay-form button{padding:.4rem .8rem}.inline-card{flex:1;padding:.5rem 0}.list li .form{width:100%}.board{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-items:start;gap:.75rem;display:grid}.board h2{margin:0}.card-head{justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:.5rem;display:flex}.list.flush{padding:0}.dti{flex-wrap:wrap;align-items:baseline;gap:.75rem;margin:.25rem 0 .75rem;display:flex}.dti-value{font-variant-numeric:tabular-nums;font-size:2rem;font-weight:700}.dti-value.good{color:var(--good)}.dti-value.warn{color:#c98a1b}.dti-value.bad{color:var(--error)}.dti-scale{background:linear-gradient(to right, var(--good) 0 72%, #c98a1b 72% 86%, var(--error) 86%);opacity:.85;border-radius:999px;height:8px;position:relative}.dti-marker{background:var(--text);width:4px;height:16px;box-shadow:0 0 0 2px var(--surface);border-radius:2px;margin-left:-2px;position:absolute;top:-4px}.dti-legend{height:1.2rem;margin-top:.25rem;position:relative}.dti-legend span{position:absolute;transform:translate(-50%)}.dti-legend span:first-child{transform:none}.list li.add-row{border-bottom:0}.add-row>button.link{color:var(--accent-strong);align-items:center;gap:.4rem;display:inline-flex}.add-row .plus{border:1px solid var(--accent);border-radius:999px;place-items:center;width:1.4rem;height:1.4rem;font-weight:600;line-height:1;display:inline-grid}.add-row-form{flex-wrap:wrap;align-items:center;gap:.5rem;width:100%;display:flex}.add-row-form input{flex:10rem;min-width:0;padding:.4rem .5rem}.add-row-form .icon-input{text-align:center;flex:0 0 3rem}.add-row-form .budget-input{flex:0 0 6.5rem}.add-row-form select{padding:.4rem}.add-row-form button{padding:.4rem .9rem}.category-name{align-items:center;gap:.4rem;display:flex}.emoji-picker{flex:none;display:inline-flex;position:relative}button.emoji-button{width:2rem;height:2rem;color:var(--text);background:0 0;border:1px solid #0000;border-radius:8px;padding:0;font-size:1.15rem;line-height:1}button.emoji-button:hover,button.emoji-button[aria-expanded=true]{border-color:var(--border);background:var(--bg)}button.emoji-button.empty{border:1px dashed var(--border);color:var(--muted);font-size:1rem}.emoji-popover{z-index:20;background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:.4rem;width:min(22rem,100vw - 2rem);padding:.5rem;display:flex;position:absolute;top:calc(100% + 4px);left:0;box-shadow:0 8px 24px #00000026}.emoji-search{flex-direction:column;gap:.35rem;display:flex}.emoji-search input{padding:.45rem .6rem}.emoji-tones{gap:2px;display:flex}.emoji-tones button{color:var(--text);background:0 0;border-radius:6px;padding:.15rem .3rem;font-size:1rem}.emoji-tones button.selected{background:var(--bg);outline:2px solid var(--accent)}.emoji-scroll{overscroll-behavior:contain;height:17rem;overflow-y:auto}.emoji-scroll h3{color:var(--muted);background:var(--surface);z-index:1;margin:0;padding:.3rem .2rem;font-size:.75rem;font-weight:600;position:sticky;top:0}.emoji-grid{grid-template-columns:repeat(8,1fr);gap:2px;display:grid}.emoji-grid button{aspect-ratio:1;color:var(--text);background:0 0;border-radius:6px;padding:0;font-size:1.35rem}.emoji-grid button:hover{background:var(--bg)}.emoji-grid button.selected{background:var(--bg);outline:2px solid var(--accent)}.emoji-footer{border-top:1px solid var(--border);align-items:center;gap:.4rem;padding-top:.35rem;display:flex}.emoji-tabs{flex:1;justify-content:space-between;display:flex;overflow-x:auto}.emoji-tabs button{background:0 0;border-radius:6px;padding:.2rem;font-size:1.1rem}.emoji-tabs button:hover{background:var(--bg)}.budget-input-group{align-items:center;gap:.25rem;display:inline-flex}.budget-input-group select{padding:.4rem .3rem}.sinking{flex-wrap:wrap;align-items:center;gap:.3rem;margin-top:.35rem;display:flex}.sinking input[type=date]{padding:.15rem .35rem;font-size:.85rem}@media (width<=600px){.budget-row{flex-wrap:wrap}.budget-row>:first-child{flex-basis:100%}}.period-toggle{background:var(--bg);border-radius:10px;gap:3px;padding:3px;display:inline-flex;box-shadow:inset 0 1px 3px #0000002e}.period-toggle button{color:var(--muted);background:linear-gradient(to bottom, var(--surface), color-mix(in srgb, var(--surface) 85%, #000));border:1px solid var(--border);box-shadow:0 2px 0 color-mix(in srgb, var(--border) 70%, #000), 0 2px 4px #0000001f;border-radius:7px;padding:.3rem .55rem;font-size:.8rem;font-weight:650;transition:transform 80ms,box-shadow 80ms}.period-toggle button:hover{color:var(--text)}.period-toggle button:active{transform:translateY(2px);box-shadow:0 0 #0000}.period-toggle button.active{color:#fff;border-color:#0000;transform:translateY(1px)}.period-toggle button.period-monthly.active{background:linear-gradient(#5b9cf0,#2f6fd0);box-shadow:0 1px #1f4f9a,0 0 10px #2f7de173}.period-toggle button.period-quarterly.active{background:linear-gradient(#a07cf0,#7148d4);box-shadow:0 1px #4e2f9e,0 0 10px #7148d473}.period-toggle button.period-yearly.active{background:linear-gradient(#f5a54a,#dc7b1c);box-shadow:0 1px #a45510,0 0 10px #dc7b1c73}button.icon-delete{color:var(--muted);background:0 0;border-radius:6px;place-items:center;padding:.3rem;display:inline-grid}button.icon-delete:hover{color:var(--red);background:color-mix(in srgb, var(--red) 12%, transparent)}button.category-toggle{color:var(--text);font:inherit;text-align:left;background:0 0;border-radius:6px;align-items:center;gap:.35rem;margin-left:-.2rem;padding:.1rem .2rem;display:inline-flex}button.category-toggle:hover{background:var(--bg)}.category-toggle .chevron{color:var(--muted);font-size:1.1rem;line-height:1;transition:transform .15s;display:inline-block}.category-toggle[aria-expanded=true] .chevron{transform:rotate(90deg)}.category-toggle .count{color:var(--muted);background:var(--bg);border:1px solid var(--border);border-radius:999px;padding:0 .4rem;font-size:.7rem;font-weight:600}.list li.spend-detail{padding:0 0 .6rem 2.6rem;display:block}.spend-detail ul{border-left:2px solid var(--border);margin:0;padding:0;list-style:none}.spend-detail ul li{border-bottom:1px dashed var(--border);justify-content:space-between;gap:.75rem;padding:.4rem 0 .4rem .75rem;display:flex}.spend-detail ul li:last-child{border-bottom:0}.spend-detail p{margin:.25rem 0 0}.row-menu{flex:none;position:relative}.menu-button{color:var(--muted);background:0 0;border-radius:6px;padding:.15rem .5rem;font-size:1.1rem;line-height:1}.menu-button:hover,.menu-button[aria-expanded=true]{color:var(--text);background:color-mix(in srgb, var(--text) 8%, transparent)}.menu{z-index:20;background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;min-width:11rem;padding:.3rem;display:flex;position:absolute;top:calc(100% + 4px);right:0;box-shadow:0 8px 24px #00000026}.menu button{color:var(--text);text-align:left;background:0 0;border-radius:6px;padding:.5rem .7rem}.menu button:hover{background:color-mix(in srgb, var(--accent) 12%, transparent)}.spend-row .row-menu{margin-left:-.25rem}.spend-detail ul li .row-menu{margin-left:.25rem}.spend-detail ul li{flex-wrap:wrap;align-items:center}.spend-detail ul li>div:first-child{flex:10rem;min-width:0}.spend-detail ul li select{flex:0 12rem;max-width:12rem;padding:.35rem .5rem;font-size:.9rem}dialog.modal{box-sizing:border-box;border:1px solid var(--border);background:var(--surface);width:min(36rem,100vw - 2rem);max-height:calc(100vh - 2rem);color:var(--text);border-radius:14px;padding:1.25rem;overflow:visible;box-shadow:0 20px 50px #0000004d}dialog.modal::backdrop{background:#00000073}.modal-head{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.75rem;display:flex}.modal-head h2{margin:0;font-size:1.15rem}.modal-actions{justify-content:flex-end;gap:.5rem;margin-top:1rem;display:flex}.apply-choices{flex-direction:column;gap:.5rem;display:flex}.apply-choices button{text-align:left;flex-direction:column;align-items:flex-start;display:flex}.rule-form{flex-direction:column;gap:.75rem;display:flex}.rule-if,.rule-then{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.rule-if strong,.rule-then strong,.rules .kw{color:var(--accent);letter-spacing:.04em}.rules .kw{font-size:.8em;font-weight:700}.rule-then select{flex:12rem}.match-toggle{border:1px solid var(--border);background:var(--bg);border-radius:999px;padding:2px;display:inline-flex}.match-toggle button{color:var(--muted);background:0 0;border-radius:999px;padding:.35rem .8rem;font-size:.85rem}.match-toggle button.active{background:var(--accent);color:var(--on-accent);box-shadow:0 1px 3px #0003}.conditions{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.conditions .joiner{color:var(--muted);margin:0 0 .4rem .5rem;font-size:.75rem;font-weight:700;display:block}.condition{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.condition>select:first-child{flex:0 0 6.5rem}.condition>select:nth-child(2){flex:10rem;min-width:0}.condition>input,.condition>.date-range{flex:9rem;min-width:0}.condition .amount{font-variant-numeric:tabular-nums}.date-range{display:inline-block;position:relative}.date-range>button{text-align:left;width:100%}.calendar{z-index:30;background:var(--surface);border:1px solid var(--border);border-radius:12px;width:17rem;padding:.75rem;position:absolute;top:calc(100% + 4px);right:0;box-shadow:0 10px 30px #0003}.calendar p{margin:.5rem 0 0}.calendar-head{justify-content:space-between;align-items:center;margin-bottom:.4rem;display:flex}.calendar-head button{padding:0 .5rem;font-size:1.2rem}.calendar-grid{text-align:center;grid-template-columns:repeat(7,1fr);gap:2px 0;display:grid}.calendar-grid .weekday{color:var(--muted);padding:.2rem 0;font-size:.7rem}.calendar-grid button{color:var(--text);font-variant-numeric:tabular-nums;background:0 0;border-radius:0;padding:.4rem 0}.calendar-grid button:hover{background:color-mix(in srgb, var(--accent) 15%, transparent)}.calendar-grid button.today{color:var(--accent);font-weight:700}.calendar-grid button.in-range{background:color-mix(in srgb, var(--accent) 18%, transparent)}.calendar-grid button.edge{background:var(--accent);color:var(--on-accent);border-radius:8px}.section-head{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.75rem;display:flex}.section-head h2{margin:0 0 .25rem}.section-head p{max-width:40rem;margin:0}.section-head>button{flex:none}.rules li{align-items:flex-start}.rules li.off .rule-text{opacity:.5}.rules input[type=checkbox]{flex:none;width:auto;margin-top:.2rem}.rule-text{flex:1;min-width:0}.rule-actions{flex:none;align-items:center;gap:.6rem;display:flex}.rule-actions button:disabled{opacity:.3;cursor:default}@media (width<=600px){.rules li{flex-wrap:wrap}.rule-actions{justify-content:flex-end;width:100%}.section-head{flex-direction:column}}.card-icon{flex:none;justify-content:center;align-items:center;width:2rem;height:2rem;font-size:1.15rem;display:inline-flex}.budget-row .category-name a{color:var(--text);text-decoration:none}.budget-row .category-name a:hover{text-decoration:underline}.auto-minimum{cursor:pointer;color:var(--text);align-items:center;gap:.25rem;display:inline-flex}.auto-minimum input{width:auto;margin:0}.formula-select{border-radius:6px;padding:.1rem .3rem;font-size:.8rem}.rings{grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;margin-bottom:.75rem;display:grid}@media (width<=760px){.rings{grid-template-columns:minmax(0,1fr)}}.ring-card{flex-direction:column;align-items:stretch;gap:.75rem;display:flex}.radial{width:100%;max-width:220px;margin:0 auto;position:relative;container-type:inline-size}.radial svg{width:100%;height:100%;display:block;overflow:visible}.radial path{fill:none}.ring-tick{stroke:var(--muted);stroke-width:2px;stroke-linecap:round;opacity:.5}.ring-track{stroke:color-mix(in srgb, var(--border) 70%, transparent)}.ring-fill,.ring-glow{stroke:var(--ring);stroke-linecap:round;transition:stroke-dasharray 1.2s cubic-bezier(.22,1,.36,1),stroke 1.2s}.ring-fill{filter:drop-shadow(0 0 4px var(--ring)) drop-shadow(0 0 10px var(--ring))}.ring-glow{opacity:.35;filter:blur(8px)}.radial.pulse .ring-glow{animation:2.4s ease-in-out infinite ring-pulse}@keyframes ring-pulse{0%,to{opacity:.3}50%{opacity:.7}}@media (prefers-reduced-motion:reduce){.ring-fill,.ring-glow{transition:none}.radial.pulse .ring-glow{animation:none}}.ring-center{text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:0 16%;display:flex;position:absolute;inset:0}.ring-value{font-variant-numeric:tabular-nums;font-size:clamp(1rem,11cqi,1.45rem);font-weight:500;line-height:1.15}.ring-pct{color:var(--ring);text-shadow:0 0 10px var(--ring);font-weight:650}.ring-title{text-transform:uppercase;letter-spacing:.12em;margin-top:.15rem;font-size:.72rem;font-weight:500}.ring-foot{text-align:center;font-size:.85rem;position:absolute;bottom:2px;left:0;right:0}.ring-rows{gap:.3rem;margin:0;font-size:.875rem;display:grid}.ring-rows>div{justify-content:space-between;gap:.75rem;display:flex}.ring-rows dt{color:var(--muted);align-items:center;gap:.4rem;display:inline-flex}.ring-rows dd{font-variant-numeric:tabular-nums;white-space:nowrap;margin:0}.ring-rows+.ring-rows{border-top:1px solid var(--border);padding-top:.6rem}.ring-swatch{border-radius:50%;flex:none;width:.6rem;height:.6rem}.ring-action{align-self:flex-start;margin:0}.goal-form{flex-direction:column;gap:.5rem;max-width:20rem;margin-top:.75rem;display:flex}.goal-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}button.match-bill{background:color-mix(in srgb, var(--blue) 14%, transparent);color:var(--blue);border:1px solid color-mix(in srgb, var(--blue) 35%, transparent);border-radius:999px;align-items:center;gap:.3rem;margin-top:.3rem;padding:.2rem .6rem;font-size:.8rem;display:inline-flex}button.match-bill:hover{background:color-mix(in srgb, var(--blue) 22%, transparent)}.bill-tag{color:var(--good)}.pay-panel{flex-direction:column;flex-basis:100%;gap:.5rem;padding:.5rem 0 .25rem;display:flex}.pay-panel .list li{padding:.4rem 0}.pay-other{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.pay-other select{flex:14rem;min-width:0}.bill-picker li{padding:0}.bill-picker button.link{width:100%;color:var(--text);text-align:left;justify-content:space-between;align-items:baseline;gap:.75rem;padding:.6rem 0;display:flex}.bill-picker button.link:hover{color:var(--accent)}.bill-picker .tag{color:var(--blue);border-color:color-mix(in srgb, var(--blue) 40%, transparent);margin-left:.5rem}.user-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));align-items:start}.user-card{flex-direction:column;gap:.9rem;display:flex}.user-head{flex-wrap:wrap;align-items:center;gap:.9rem;display:flex}.user-name{flex-direction:column;gap:.35rem;min-width:0;display:flex}.user-name strong{overflow-wrap:anywhere;font-size:1.1rem;font-weight:500}.avatar{object-fit:cover;background:color-mix(in srgb, var(--accent) 16%, var(--surface));color:var(--accent-strong);letter-spacing:.06em;border:2px solid var(--line);border-radius:999px;flex:none;place-items:center;font-weight:500;display:inline-grid}.avatar.md{width:64px;height:64px;font-size:1.3rem}.avatar.lg{width:88px;height:88px;font-size:1.7rem}.user-facts dd{overflow-wrap:anywhere}.user-card.form p{margin:0}.user-fields{grid-template-columns:repeat(auto-fill,minmax(min(100%,160px),1fr))}.user-fields input,.user-fields select{width:100%;min-width:0}.file-button{cursor:pointer}.user-form-actions{justify-content:flex-end}.back-link{margin:0 0 .75rem;font-size:.9rem}.back-link a{color:var(--muted);text-decoration:none}.back-link a:hover{color:var(--text)}.recipe-filters{flex-direction:column;gap:.75rem;margin-bottom:1rem;display:flex}.recipe-search{width:100%}.recipe-selects{grid-template-columns:repeat(auto-fit,minmax(min(100%,140px),1fr));gap:.6rem;display:grid}.recipe-selects select{width:100%;min-width:0}.recipe-filters>button.link{align-self:flex-start}.chip-input{cursor:text;border:1px solid var(--border);background:var(--surface);border-radius:6px;flex-wrap:wrap;align-items:center;gap:.35rem;padding:.35rem .5rem;display:flex}.chip-input:focus-within{outline:2px solid var(--accent);outline-offset:2px}.chip-input input{background:0 0;border:0;flex:10rem;min-width:0;padding:.25rem}.chip-input input:focus-visible{outline:none}.chip{background:color-mix(in srgb, var(--accent) 14%, var(--surface));color:var(--accent-strong);border-radius:999px;align-items:center;gap:.25rem;padding:.15rem .25rem .15rem .6rem;font-size:.85rem;display:inline-flex}.chip button{color:inherit;background:0 0;border-radius:999px;padding:0 .35rem;font-size:1rem;line-height:1}.recipe-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr));gap:.85rem;display:grid}.recipe-card{color:inherit;flex-direction:column;padding:0;text-decoration:none;transition:border-color .15s,transform .15s;display:flex;overflow:hidden}.recipe-card:hover{border-color:var(--accent);transform:translateY(-2px)}.recipe-cover{aspect-ratio:4/3;background:linear-gradient(135deg, color-mix(in srgb, var(--accent) 22%, var(--surface)), color-mix(in srgb, var(--line) 60%, var(--surface)));color:var(--accent-strong);place-items:center;font-size:2.6rem;font-weight:500;display:grid;overflow:hidden}.recipe-cover img{object-fit:cover;width:100%;height:100%;display:block}.recipe-card-body{flex-direction:column;gap:.35rem;padding:.75rem .9rem .9rem;display:flex}.recipe-card-body strong{font-size:1.05rem;font-weight:500;line-height:1.25}.recipe-card-body p{margin:0}.recipe-tags{flex-wrap:wrap;gap:.3rem;display:flex}.recipe-head{gap:1.25rem;margin-bottom:1.25rem;display:grid}@media (width>=760px){.recipe-head:has(.recipe-photos){grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}}.recipe-hero{aspect-ratio:4/3;object-fit:cover;width:100%;box-shadow:var(--shadow);border-radius:12px;display:block}.recipe-thumbs{gap:.4rem;margin-top:.5rem;display:flex;overflow-x:auto}.recipe-thumbs button{background:0 0;border:2px solid #0000;border-radius:8px;flex:none;padding:0}.recipe-thumbs button.active{border-color:var(--accent)}.recipe-thumbs img{object-fit:cover;border-radius:6px;width:64px;height:48px;display:block}.recipe-intro{flex-direction:column;gap:.75rem;display:flex}.recipe-intro h1{margin:0;line-height:1.3}.recipe-description{color:var(--muted);margin:0}.recipe-facts{flex-wrap:wrap;gap:.5rem 1.5rem;margin:0;display:flex}.recipe-facts dt{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-size:.72rem}.recipe-facts dd{margin:0;font-weight:500}.recipe-body{align-items:start;gap:.85rem;display:grid}@media (width>=760px){.recipe-body{grid-template-columns:minmax(0,2fr) minmax(0,3fr)}}.recipe-body h2{margin:0}.recipe-section{text-transform:uppercase;letter-spacing:.12em;color:var(--accent-strong);margin:1rem 0 .25rem;font-size:.78rem;font-weight:500}.servings{border-bottom:1px solid var(--border);flex-direction:column;gap:.6rem;margin-bottom:.25rem;padding:.25rem 0 .75rem;display:flex}.servings-count{align-items:center;gap:.75rem;display:flex}.servings-count button{border-radius:999px;width:2.25rem;height:2.25rem;padding:0;font-size:1.2rem;line-height:1}.servings-count span{text-align:center;min-width:7.5rem}.servings-count strong{font-variant-numeric:tabular-nums;font-size:1.2rem;font-weight:500}.servings .match-toggle{align-self:flex-start}.ingredient-list{margin:0;padding:0;list-style:none}.ingredient-list li{border-bottom:1px dashed var(--border)}.ingredient-list li:last-child{border-bottom:0}.ingredient-list label{cursor:pointer;align-items:baseline;gap:.6rem;padding:.5rem 0;display:flex}.ingredient-list input[type=checkbox]{accent-color:var(--accent);flex:none;width:1rem;height:1rem;transform:translateY(2px)}.ingredient-list .amount{font-weight:500}.ingredient-list .metric{color:var(--muted);font-size:.9em}.ingredient-list li.checked span{color:var(--muted);text-decoration:line-through}.step-list{flex-direction:column;gap:.25rem;margin:0;padding:0;list-style:none;display:flex}.step-list button{text-align:left;width:100%;color:var(--text);background:0 0;border-radius:8px;align-items:flex-start;gap:.85rem;padding:.6rem .25rem;font-weight:400;display:flex}.step-list button:not(:disabled):hover{filter:none;background:color-mix(in srgb, var(--accent) 6%, transparent)}.step-number{background:color-mix(in srgb, var(--accent) 14%, var(--surface));width:1.9rem;height:1.9rem;color:var(--accent-strong);font-variant-numeric:tabular-nums;border-radius:999px;flex:none;place-items:center;font-weight:500;display:inline-grid}.step-text{padding-top:.2rem;line-height:1.55}.step-list li.done .step-text{color:var(--muted);text-decoration:line-through}.step-list li.done .step-number{background:var(--good);color:var(--on-accent)}.cook-mode{z-index:100;padding:max(1rem, env(safe-area-inset-top)) 1.25rem max(1rem, env(safe-area-inset-bottom));background:var(--bg);flex-direction:column;gap:1rem;display:flex;position:fixed;inset:0}.cook-top{justify-content:space-between;align-items:center;gap:1rem;display:flex}.cook-progress{gap:4px;display:flex}.cook-progress span{background:var(--border);border-radius:999px;flex:1;height:4px}.cook-progress span.on{background:var(--accent)}.cook-step,.cook-ingredients{flex:1;width:100%;max-width:46rem;margin:0 auto;overflow-y:auto}.cook-step{flex-direction:column;justify-content:center;display:flex}.cook-count{color:var(--accent-strong);text-transform:uppercase;letter-spacing:.14em;margin:0 0 1rem;font-size:.85rem;font-weight:500}.cook-text{margin:0;font-size:clamp(1.35rem,4.5vw,2.1rem);line-height:1.45}.cook-ingredients{font-size:1.15rem}.cook-nav{grid-template-columns:1fr 1fr;gap:.75rem;width:100%;max-width:46rem;margin:0 auto;display:grid}.cook-nav button{padding:1rem;font-size:1.1rem}.import-panel{margin-bottom:1rem}.import-panel .card-head{flex-wrap:wrap}.import-panel h2{margin:0}.import-row{flex-wrap:wrap;gap:.5rem;display:flex}.import-row input{flex:16rem;min-width:0}.import-text{flex-direction:column;gap:.5rem;display:flex}.import-text textarea{width:100%}.import-help{margin:.6rem 0 0}.import-notice{background:color-mix(in srgb, var(--good) 12%, var(--surface));border:1px solid color-mix(in srgb, var(--good) 35%, var(--border));border-radius:10px;padding:.65rem .9rem}.recipe-form textarea{width:100%;line-height:1.5}.recipe-edit-split{gap:.75rem;display:grid}@media (width>=760px){.recipe-edit-split{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}.ingredient-preview{background:var(--bg);border-radius:8px;padding:.5rem .9rem;font-size:.9rem}.chip-toggles{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}button.chip-toggle{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:999px;padding:.35rem .8rem;font-size:.88rem;font-weight:400}button.chip-toggle.on{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.chip-add{border-radius:999px;width:7.5rem;padding:.35rem .7rem;font-size:.88rem}.photo-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:.6rem;display:grid}.photo-tile{aspect-ratio:1;background:var(--bg);border-radius:10px;position:relative;overflow:hidden}.photo-tile img{object-fit:cover;width:100%;height:100%;display:block}.photo-badge,button.photo-cover{color:#fff;background:#2b2420bf;border-radius:999px;padding:.15rem .5rem;font-size:.72rem;font-weight:500;position:absolute;bottom:.35rem;left:.35rem}button.photo-remove{color:#fff;background:#2b2420bf;border-radius:999px;width:1.7rem;height:1.7rem;padding:0;font-size:1.1rem;line-height:1;position:absolute;top:.3rem;right:.3rem}button.photo-add{aspect-ratio:1;color:var(--muted);border:2px dashed var(--border);background:0 0;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:.25rem;font-weight:400;display:flex}button.photo-add span{font-size:1.8rem;line-height:1}button.photo-add:hover{color:var(--accent-strong);border-color:var(--accent)}.recipe-form-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.macros{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.macro{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;align-items:center;min-width:4.75rem;padding:.4rem .7rem;display:flex}.macro strong{font-variant-numeric:tabular-nums;font-size:1.05rem;font-weight:500}.macro span{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-size:.7rem}.macro-fields{grid-template-columns:repeat(auto-fill,minmax(min(100%,140px),1fr))}.week-picker{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.week-picker>button.secondary{border-radius:999px;width:2.4rem;height:2.4rem;padding:0}.week-picker-label{text-align:center;flex-direction:column;min-width:9.5rem;display:flex}.week-picker-label strong{font-weight:500}.plan-sections{align-items:start;gap:.85rem;display:grid}@media (width>=760px){.plan-sections{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}}.plan-section h2{margin:0}.plan-list{margin:0 0 .75rem;padding:0;list-style:none}.plan-list li{border-bottom:1px dashed var(--border);align-items:center;gap:.65rem;padding:.5rem 0;display:flex}.plan-list li:last-child{border-bottom:0}.plan-list input[type=checkbox]{width:1.1rem;height:1.1rem;accent-color:var(--accent);flex:none}.plan-recipe{min-width:0;color:inherit;flex:1;align-items:center;gap:.7rem;text-decoration:none;display:flex}.plan-recipe:hover strong{color:var(--accent-strong)}.plan-thumb{background:color-mix(in srgb, var(--accent) 18%, var(--surface));width:52px;height:52px;color:var(--accent-strong);border-radius:8px;flex:none;place-items:center;font-weight:500;display:grid;overflow:hidden}.plan-thumb img{object-fit:cover;width:100%;height:100%;display:block}.plan-text{flex-direction:column;min-width:0;display:flex}.plan-text strong{overflow-wrap:anywhere;font-weight:500}.plan-list li.cooked .plan-text strong{color:var(--muted);text-decoration:line-through}.plan-list li.cooked .plan-thumb{opacity:.55}.plan-add{width:100%}.picker-tools{flex-direction:column;gap:.5rem;margin-bottom:.5rem;display:flex}.picker-tools .field.check{align-self:flex-start;padding:0}.picker-list{border-top:1px solid var(--border);max-height:min(50vh,22rem);margin:0;padding:0;list-style:none;overflow-y:auto}.picker-list li{border-bottom:1px solid var(--border)}.picker-list label{cursor:pointer;align-items:center;gap:.6rem;padding:.6rem .25rem;display:flex}.picker-list li.muted{padding:.75rem .25rem}.picker-list input[type=checkbox]{accent-color:var(--accent);width:1rem;height:1rem}.add-to-menu .menu{min-width:14rem;left:0;right:auto}.add-to-menu-note{margin-top:.35rem;display:block}.subnav-lock{flex:none;align-items:center;gap:.35rem;margin-left:auto;padding:.7rem .5rem;font-size:.9rem;font-weight:400;display:inline-flex}.finance-lock{text-align:center;flex-direction:column;align-items:stretch;gap:.75rem;max-width:380px;margin:8vh auto 0;padding:1.5rem 1.25rem;display:flex}.finance-lock h2,.finance-lock p{margin:0}.finance-lock .lock-icon{color:var(--accent-strong);align-self:center}.finance-lock .login-or{margin:.25rem 0}.finance-lock>button.link{align-self:center}.lock-pin,.pin-form{text-align:left;flex-direction:column;gap:.6rem;display:flex}.pin-field{flex-direction:column;gap:.25rem;display:flex}.pin-input{letter-spacing:.4em;text-align:center;padding:.5rem;font-size:1.4rem}.pin-actions{flex-wrap:wrap;gap:.5rem;display:flex}.pin-actions button{flex:1}.confirm-identity{flex-direction:column;align-items:stretch;gap:.6rem;display:flex}.confirm-identity .passkey-button{justify-content:center;align-items:center;gap:.5rem;display:inline-flex}.confirm-identity>button.link{align-self:center}.confirm-password{flex-wrap:wrap;gap:.5rem;display:flex}.confirm-password input[type=password]{flex:1;min-width:0}.pin-buttons{align-items:center;gap:.75rem;display:flex}.pin-step{flex-direction:column;align-items:flex-start;gap:.6rem;max-width:340px;margin:.75rem 0 .25rem;display:flex}.pin-step .pin-form,.pin-step .confirm-identity{align-self:stretch}.pin-step p{margin:0}button.danger{background:var(--error);color:#fff}.plan-grocery-link{margin:-.5rem 0 1rem}.grocery{padding:.25rem 1rem}.grocery-head,.grocery-list li{grid-template-columns:1.6rem minmax(0,1.3fr) minmax(0,1fr) minmax(0,1.4fr);align-items:center;gap:.75rem;display:grid}.grocery-head{border-bottom:1px solid var(--border);text-transform:uppercase;letter-spacing:.12em;color:var(--muted);padding:.65rem 0;font-size:.72rem}.grocery-list{margin:0;padding:0;list-style:none}.grocery-list li{border-bottom:1px dashed var(--border);padding:.6rem 0}.grocery-list li:last-child{border-bottom:0}.grocery-list input[type=checkbox]{width:1.2rem;height:1.2rem;accent-color:var(--accent);margin:0}.grocery-item{cursor:pointer;overflow-wrap:anywhere;font-weight:500}.grocery-amount strong{font-weight:500}.grocery-amount .metric{color:var(--muted);font-size:.9em}.grocery-recipes{flex-wrap:wrap;align-items:center;gap:.3rem;display:flex}.grocery-recipes a.tag{color:var(--muted);text-decoration:none}.grocery-recipes a.tag:hover{color:var(--accent-strong);border-color:var(--accent)}.grocery-list li.checked .grocery-item,.grocery-list li.checked .grocery-amount{color:var(--muted);text-decoration:line-through}.grocery-list li.checked .grocery-recipes{opacity:.55}.grocery-extra .suggest{flex:14rem;position:relative}.grocery-extra .suggest input{width:100%}.suggest-list{z-index:20;background:var(--surface);border:1px solid var(--border);border-radius:10px;margin:0;padding:.25rem;list-style:none;position:absolute;bottom:calc(100% + 4px);left:0;right:0;box-shadow:0 8px 24px #0000001f}.suggest-list li{cursor:pointer;border-radius:7px;justify-content:space-between;align-items:baseline;gap:.75rem;padding:.55rem .7rem;display:flex}.suggest-list li:hover,.suggest-list li.active{background:color-mix(in srgb, var(--accent) 12%, transparent)}@media (width<=600px){.grocery-head{display:none}.grocery-list li{grid-template-columns:1.6rem minmax(0,1fr) auto;grid-template-areas:"check item amount"".recipes recipes";row-gap:.3rem}.grocery-list li>input{grid-area:check}.grocery-item{grid-area:item}.grocery-amount{text-align:right;grid-area:amount}.grocery-recipes{grid-area:recipes}}.list-switcher{flex-wrap:wrap;align-items:center;gap:.4rem;margin:0 0 1rem;display:flex}.list-switcher a{color:var(--muted);border:1px solid var(--border);border-radius:999px;padding:.3rem .85rem;font-size:.9rem;text-decoration:none}.list-switcher a:hover{color:var(--text)}.list-switcher a.active{color:var(--accent-strong);border-color:var(--accent);background:color-mix(in srgb, var(--accent) 10%, transparent);font-weight:500}.list-switcher .new-list{color:var(--accent-strong);padding:.3rem .4rem;font-size:.9rem}.head-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.list-recipes{flex-wrap:wrap;align-items:center;gap:.4rem;margin:0 0 1rem;display:flex}.list-recipes .tag{align-items:center;gap:.35rem;font-size:.85rem;display:inline-flex}.list-recipes .tag a{color:var(--text);text-decoration:none}.list-recipes .tag button.link{font-size:.75rem}@media (hover:none) and (pointer:coarse){input,select,textarea{font-size:16px!important}}.cal-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.75rem;display:flex}.cal-nav{align-items:center;gap:.4rem;min-width:0;display:flex}.cal-nav>button.secondary{padding:.4rem .75rem}.cal-label{white-space:nowrap;margin:0 0 0 .4rem;font-size:1.2rem}.cal-views{border:1px solid var(--border);background:var(--surface);border-radius:8px;display:inline-flex;overflow:hidden}.cal-views button{color:var(--muted);background:0 0;border-radius:0;padding:.4rem .9rem}.cal-views button+button{border-left:1px solid var(--border)}.cal-views button.on{background:var(--accent);color:var(--on-accent)}.cal-people{flex-wrap:wrap;gap:.4rem;margin-bottom:.75rem;display:flex}button.cal-person{background:var(--surface);color:var(--muted);border:2px solid var(--border);border-radius:999px;align-items:center;gap:.4rem;padding:.2rem .75rem .2rem .2rem;font-size:.9rem;font-weight:400;display:inline-flex}button.cal-person .avatar.sm{opacity:.5;border-width:0;width:26px;height:26px;font-size:.65rem}button.cal-person.on{color:var(--text);border-color:var(--person);background:color-mix(in srgb, var(--person) 10%, var(--surface))}button.cal-person.on .avatar.sm{opacity:1}.cal-month{grid-template-columns:repeat(7,minmax(0,1fr));padding:0;display:grid;overflow:hidden}.cal-weekday{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border);padding:.45rem .5rem;font-size:.75rem}.cal-day{border-right:1px solid var(--border);border-bottom:1px solid var(--border);cursor:pointer;flex-direction:column;gap:.2rem;min-width:0;min-height:6.5rem;padding:.3rem;display:flex}.cal-day:nth-child(7n+7){border-right:0}.cal-day:nth-last-child(-n+7){border-bottom:0}.cal-day:hover{background:color-mix(in srgb, var(--accent) 5%, transparent)}.cal-day.other{background:color-mix(in srgb, var(--bg) 60%, transparent)}.cal-day.other .cal-date{color:var(--muted);opacity:.7}.cal-day.selected{background:color-mix(in srgb, var(--accent) 10%, transparent)}.cal-day:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.cal-date{font-variant-numeric:tabular-nums;border-radius:999px;place-items:center;width:1.7rem;height:1.7rem;font-size:.85rem;display:inline-grid}.cal-day.today .cal-date{background:var(--accent);color:var(--on-accent);font-weight:600}.cal-pills{flex-direction:column;gap:2px;min-width:0;display:flex}button.cal-pill{text-align:left;white-space:nowrap;text-overflow:ellipsis;width:100%;color:var(--text);background:color-mix(in srgb, var(--event) 18%, var(--surface));border-left:3px solid var(--event);border-radius:4px;padding:.1rem .35rem;font-size:.75rem;font-weight:500;display:block;overflow:hidden}.cal-pill-time{color:var(--muted);margin-right:.25rem;font-weight:400}.cal-more{color:var(--muted);padding-left:.35rem;font-size:.72rem}.cal-dots{flex-wrap:wrap;justify-content:center;gap:3px;display:none}.cal-dots span{border-radius:999px;width:6px;height:6px}.cal-selected{margin-top:1rem}.cal-selected h2{margin:0;font-size:1.05rem}.cal-events{flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}button.cal-event{text-align:left;width:100%;color:var(--text);border-left:4px solid var(--event);background:color-mix(in srgb, var(--event) 9%, var(--surface));border-radius:8px;align-items:baseline;gap:.75rem;padding:.5rem .65rem;font-weight:400;display:flex}.cal-event-time{width:8.5rem;color:var(--muted);font-variant-numeric:tabular-nums;flex:none;font-size:.85rem}.cal-event-body{flex-direction:column;gap:.1rem;min-width:0;display:flex}.cal-event-title{overflow-wrap:anywhere;font-weight:500}.cal-events.compact button.cal-event{flex-direction:column;gap:.05rem;padding:.35rem .5rem}.cal-events.compact .cal-event-time{width:auto;font-size:.75rem}.cal-events.compact .cal-event-title{font-size:.88rem}.cal-week{grid-template-columns:repeat(7,minmax(0,1fr));gap:.5rem;display:grid}.cal-week-day{min-height:12rem;padding:.6rem}.cal-week-day.today{border-color:var(--accent);box-shadow:inset 0 3px 0 var(--accent)}.cal-week-head{align-items:baseline;gap:.35rem;margin-bottom:.5rem;display:flex}.cal-week-head strong{font-size:1.15rem}.cal-week-head button{margin-left:auto;padding:0 .3rem;font-size:1.1rem}.cal-empty{margin:0}.cal-agenda{flex-direction:column;gap:.75rem;display:flex}.cal-agenda-day{align-items:baseline;gap:.5rem;margin:0 0 .5rem;font-size:1rem;display:flex}.cal-relative{color:var(--accent-strong)}.cal-foot{margin-top:1.25rem}.event-form{flex-direction:column;gap:.85rem;display:flex}.event-form .field.check{align-self:flex-start;padding:0}.event-when{grid-template-columns:1fr;gap:.75rem;display:grid}.event-when-row{gap:.4rem;display:flex}.event-when-row input{flex:1;min-width:0}.event-when-row input[type=time]{flex:0 9rem}.event-actions{flex-wrap:wrap;align-items:center}.event-actions .spacer{flex:1}.event-confirm{align-items:center;gap:.6rem;display:inline-flex}.event-notes{white-space:pre-wrap}dialog.modal:has(.event-form){width:min(34rem,100vw - 2rem)}.cal-section{margin-bottom:1rem}.cal-subs{flex-direction:column;gap:.5rem;margin:0 0 .75rem;padding:0;list-style:none;display:flex}.cal-subs li{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:.6rem;padding:.6rem 0;display:flex}.cal-subs li:first-child{border-top:0}.cal-sub-main{flex-direction:column;flex:14rem;min-width:0;display:flex}.cal-subs select{width:auto}.cal-add{border-top:1px solid var(--border);padding-top:.85rem}.cal-help{margin:.85rem 0 0;font-size:.9rem}.cal-help summary{cursor:pointer;color:var(--accent-strong)}.cal-help dt{margin-top:.6rem;font-weight:600}.cal-help dd{color:var(--muted);margin:.15rem 0 0}.cal-switch{margin-bottom:.5rem;padding:0}.cal-scope{border:0;flex-direction:column;gap:.4rem;margin:.5rem 0 1rem;padding:0;display:flex}.cal-scope legend{color:var(--muted);margin-bottom:.3rem;padding:0}.cal-scope-option{cursor:pointer;align-items:baseline;gap:.5rem;display:flex}.cal-scope-option input{flex:none;width:auto}.cal-add-to{flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem;display:flex}.cal-link{gap:.5rem;display:flex}.cal-link input{min-width:0;color:var(--muted);flex:1;font-size:.85rem}.cal-coming h2{margin-top:0;font-size:1.05rem}@media (width<=900px){.cal-week{grid-template-columns:1fr}.cal-week-day{grid-template-columns:3.5rem 1fr;align-items:start;gap:.5rem;min-height:0;display:grid}.cal-week-head{flex-direction:column;align-items:flex-start;gap:0;margin:0}.cal-week-head button{margin:.2rem 0 0}}@media (width<=640px){.cal-day{align-items:center;min-height:3.4rem;padding:.2rem 0}.cal-pills{display:none}.cal-dots{display:flex}.cal-weekday{text-align:center;padding:.4rem 0;font-size:.68rem}.cal-label{font-size:1.05rem}.cal-toolbar{flex-direction:column;align-items:stretch}.cal-views{align-self:stretch}.cal-views button{flex:1}.cal-event-time{width:6.5rem;font-size:.8rem}.event-when{grid-template-columns:1fr}}.cal-google{border-top:1px solid var(--border);margin-top:.75rem;padding-top:.75rem}.cal-google-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.75rem;display:flex}.cal-google-head strong{overflow-wrap:anywhere}.cal-google-actions{gap:1rem;display:inline-flex}.cal-google-label{margin:.75rem 0 .25rem}.cal-google-cals li{padding:.45rem 0}.cal-google-cal{cursor:pointer;flex:14rem;align-items:center;gap:.6rem;min-width:0;display:flex}.cal-google-cal input{flex:none;width:auto}.cal-swatch{border-radius:4px;flex:none;width:12px;height:12px}.cal-google-scope{margin:0 0 .25rem 1.6rem}
