:root{color-scheme:dark;--bg:#100c18;--surface:#21162f;--surface2:#2e1d40;--gold:#dcc38a;--white:#f6f1fa;--muted:#c7bbcf;--line:#493653;--green:#173c32;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--white);background:var(--bg);font-synthesis:none}*{box-sizing:border-box}body{margin:0}main{max-width:760px;margin:auto;padding:24px 24px calc(110px + env(safe-area-inset-bottom))}button,input,textarea,select{font:inherit}button{border:1px solid transparent;border-radius:13px;padding:13px 18px;min-height:48px;background:var(--gold);color:#17101e;font-weight:650;font-size:14px;cursor:pointer;touch-action:manipulation}button:disabled{opacity:.55;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--gold);outline-offset:3px}input,textarea,select{border:1px solid var(--line);border-radius:12px;padding:14px;background:#181021;color:var(--white);width:100%;min-height:48px;font-size:16px;margin-top:8px}input::placeholder,textarea::placeholder{color:#b2a4bd;opacity:1}textarea{resize:vertical}select{padding-right:24px}button svg{width:26px;height:26px}.app-header{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding:4px 0 17px}.brand{display:flex;align-items:center;gap:9px;color:var(--white);text-decoration:none;font-size:27px;font-weight:650;letter-spacing:-.7px}.brand img{width:40px;height:45px}.brand small{display:block;color:var(--muted);font-size:10px;font-weight:400;letter-spacing:.2px;margin-top:3px}.badge{font-size:9px;letter-spacing:1px;color:var(--muted);white-space:nowrap}.greeting{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:13px;padding:12px 0}.news-toggle{background:transparent;color:var(--gold);font-size:12px;padding:8px;min-height:44px}.news-toggle span{display:inline-grid;place-items:center;min-width:20px;height:20px;border-radius:50%;background:#c65c69;color:#fff;font-size:11px;margin-left:4px}.news-toggle[aria-current]{border-color:var(--line);background:var(--surface)}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(29px,6vw,40px);line-height:1.15;letter-spacing:-1px;margin-bottom:14px;font-weight:650}h2{font-size:21px;line-height:1.3;letter-spacing:-.3px;margin-bottom:13px}h3{font-size:18px;line-height:1.4;margin-bottom:8px}p{line-height:1.6}.eyebrow{font-size:10px;letter-spacing:1px;font-weight:500;color:var(--muted);margin-bottom:10px}.page-title{padding:15px 0 6px}.page-title h1{margin-bottom:12px}.page-title .muted{margin-bottom:18px}.card{background:var(--surface);border:1px solid #392746;border-radius:18px;padding:23px;margin-bottom:16px}.muted{font-size:13px;color:var(--muted)}.fineprint,small{font-size:11px;line-height:1.6;color:var(--muted)}.fineprint{margin-top:12px}.textbutton{background:transparent;color:var(--gold);font-size:12px;padding:8px;min-height:44px}.secondary{background:var(--surface2);color:var(--gold);border-color:#5b4068}.iconbutton{background:var(--surface2);border-color:var(--line);color:var(--gold);font-size:28px;min-width:48px;padding:3px 10px}.statusline{display:flex;align-items:center;justify-content:space-between;gap:5px;font-size:10px;color:var(--muted);margin:0 0 9px}.statusline .textbutton{font-size:10px}.connected:before{content:'●';color:#9bdfbe;margin-right:6px}.disconnected{color:#ffd5aa}.section-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:8px 0 16px}.section-title h2{margin:0}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);z-index:20;width:min(760px,100%);display:grid;grid-template-columns:repeat(4,1fr);padding:8px 12px calc(7px + env(safe-area-inset-bottom));background:#160f20;border-top:1px solid var(--line)}.bottom-nav button{background:transparent;color:var(--muted);display:grid;justify-items:center;align-content:center;gap:5px;min-height:60px;padding:3px;border-radius:10px;font-size:11px;font-weight:400}.bottom-nav button[aria-current]{color:var(--gold);background:#25192f}.bottom-nav svg{width:25px;height:25px}.tiny-count{font-size:9px;padding-left:3px}.overview-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.shortcut{color:var(--white);text-align:left;display:grid;gap:8px}.shortcut svg{color:var(--gold);width:29px;height:29px}.shortcut strong{font-size:31px;font-weight:550}.shortcut span{font-size:12px;color:var(--muted)}.green-note{background:var(--green);border-color:#2b594c}.green-note p{color:#d0e7dd;font-size:13px}.green-note .eyebrow{color:#aee5cc;font-size:10px}.green-note .secondary{background:#244e40;color:#f0e5c6;border-color:#507962}.today-meal{display:grid;text-align:left;gap:5px;background:transparent;color:var(--white);width:100%;padding:14px 0;border-radius:0;border-bottom:1px solid var(--line)}.today-meal:last-child{border:0}.today-meal .eyebrow{margin:0;font-size:10px}.today-meal strong{font-size:18px;font-weight:550;overflow-wrap:anywhere}.today-meal .muted{font-size:12px}.week-controls{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:4px 0 20px}.week-controls .textbutton{color:var(--white);font-size:16px;font-weight:500}.week-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px;margin:0 0 25px}.day-chip{background:var(--surface);color:var(--muted);display:grid;gap:5px;justify-content:center;padding:10px 3px;min-height:66px;font-size:11px;border-color:#392746}.day-chip strong{font-size:16px}.day-chip[aria-pressed=true]{background:var(--gold);color:#17101e;border-color:var(--gold)}.day-chip.today:not([aria-pressed=true]){border-color:var(--gold)}#selected-day{font-size:20px}.meal-card{padding:23px 21px;background:var(--surface)}.meal-main{display:flex;align-items:center;gap:18px}.meal-main>svg{width:42px;height:42px;color:#f0dfb8;flex-shrink:0}.meal-main>div{min-width:0}.meal-main .eyebrow{margin:0 0 7px}.meal-main h3{margin:0 0 8px;font-size:22px;overflow-wrap:anywhere}.meal-meta{font-size:13px;color:var(--muted);margin:0}.meal-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:10px;border-top:1px solid var(--line);padding-top:8px;margin-top:17px}.meal-note{font-size:13px;color:var(--muted);white-space:pre-wrap;margin:15px 0 0;overflow-wrap:anywhere}.week-summary{background:transparent;color:var(--white);border-radius:0;display:grid;gap:7px;width:100%;padding:15px 0;text-align:left;border-bottom:1px solid var(--line)}.week-summary:last-child{border:0}.week-summary strong{color:var(--gold);font-size:13px}.week-summary span{font-size:12px;font-weight:400;overflow-wrap:anywhere}.filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:16px 0 14px}.filters label{font-size:11px;color:var(--muted)}.filters select{font-size:13px;padding:10px 20px 10px 9px;min-height:44px}.recipe-card{display:block;text-align:left;width:100%;color:var(--white);font-weight:400}.recipe-card h2{font-size:21px;margin-bottom:9px;overflow-wrap:anywhere}.recipe-card .muted{margin-bottom:12px}.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{color:#e0d3ed;background:#382446;padding:5px 9px;border-radius:20px;font-size:10px;line-height:1.3}.addform{display:flex;gap:9px}.addform input{margin:0;min-width:0;background:#181021}.addform button{font-size:28px;font-weight:400;padding:0;min-width:48px}.listheading{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:23px 0 8px}.listheading h2{margin:0}.listheading>span{font-size:12px;color:var(--gold);background:var(--surface2);min-width:28px;height:28px;border-radius:50%;display:grid;place-items:center}.items{list-style:none;padding:0;margin:0}.items li{border-bottom:1px solid var(--line)}.items li:last-child{border:0}.items label{display:flex;gap:15px;align-items:center;padding:18px 0;cursor:pointer;min-height:72px}.items input{width:24px;height:24px;min-height:24px;flex-shrink:0;margin:0;accent-color:var(--gold);cursor:pointer}.items span{min-width:0}.items strong{display:block;font-size:16px;font-weight:500;overflow-wrap:anywhere}.items small{display:block;font-size:10px;margin-top:5px}#done-items strong{color:var(--muted);text-decoration:line-through}details{border-top:1px solid var(--line);margin-top:12px}summary{font-size:12px;color:var(--muted);cursor:pointer;min-height:48px;padding-top:17px}.empty{text-align:center;color:var(--muted);padding:28px 7px;font-size:13px}.empty>span{display:inline-grid;place-items:center;width:45px;height:45px;color:var(--gold);background:var(--surface2);border-radius:50%;margin-bottom:16px;font-size:22px}.empty h3{font-size:16px;color:var(--white);margin-bottom:7px}.empty p{margin:0}.quiet-note{color:var(--muted);font-size:11px;text-align:center;margin:20px 10px}.news-list{list-style:none;padding:0;margin:0}.news-list li{padding:17px 0;border-top:1px solid var(--line)}.news-list li.unread{padding-left:12px;border-left:3px solid var(--gold)}.news-list p{font-size:14px;white-space:pre-wrap;overflow-wrap:anywhere;margin:7px 0}.news-list strong{font-size:12px}.news-list small{font-size:11px}.push-card{background:var(--green);border-color:#2b594c}.push-card p{color:#d0e7dd}.push-icon{color:var(--gold);font-size:28px;margin-bottom:12px}.stack{display:grid;gap:16px}.stack label{font-size:13px;font-weight:500}.error,#feedback:not(:empty),#message-status:not(:empty){background:#3e2230;color:#ffe2d3;border:1px solid #8a5166;padding:12px;border-radius:12px;font-size:13px;line-height:1.6}#feedback:empty{display:none}.intro{padding:34px 0 18px}.intro p:last-child{color:var(--muted);font-size:14px}fieldset{border:1px solid var(--line);border-radius:14px;min-width:0;padding:17px;display:grid;gap:12px}legend{font-size:13px;font-weight:600;color:var(--gold);padding:0 6px}.remember-option{display:flex;flex-wrap:wrap;gap:9px;align-items:center;font-size:12px!important;font-weight:400!important}.remember-option input{width:20px;height:20px;min-height:20px;margin:0;accent-color:var(--gold)}.remember-option span{color:var(--muted)}.logout{text-align:center;margin-top:22px}footer{text-align:center;font-size:11px;color:var(--muted);line-height:1.9;margin:20px 0}footer span{font-size:10px}.sheet{background:var(--bg);color:var(--white);border:1px solid var(--line);border-radius:22px;width:min(660px,calc(100% - 20px));max-height:90dvh;padding:24px;overflow:auto;overscroll-behavior:contain}.sheet::backdrop{background:#060309c9}.sheet-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.sheet-heading h2{margin:0;font-size:25px;overflow-wrap:anywhere}.sheet-heading .eyebrow{font-size:9px}.sheet-actions{display:grid;gap:9px;margin-top:14px}.form-pair{display:grid;grid-template-columns:1fr 1fr;gap:14px}.ingredient-row{display:grid;grid-template-columns:minmax(0,1fr) 80px minmax(60px,.5fr) 32px;gap:7px}.ingredient-row input{font-size:14px;padding:10px 8px;margin:0}.ingredient-row .ingredient-name{grid-column:1/-2}.ingredient-row .ingredient-amount{grid-column:1/2}.ingredient-row .ingredient-unit{grid-column:2/-2}.ingredient-row .textbutton{grid-column:4;grid-row:1/3;font-size:24px;padding:0}.tag-options{display:flex;flex-wrap:wrap;gap:8px}.tag-choice{position:relative;display:inline-flex;cursor:pointer}.tag-choice input{position:absolute;width:20px;height:20px;min-height:20px;opacity:0;top:0;left:0}.tag-choice span{display:block;border:1px solid #584066;color:var(--muted);border-radius:20px;padding:10px 12px;font-size:12px}.tag-choice input:checked+span{background:var(--gold);border-color:var(--gold);color:#17101e}.tag-choice input:focus-visible+span{outline:2px solid var(--gold);outline-offset:2px}.ingredient-list{list-style:none;padding:0;margin:17px 0 27px}.ingredient-list li{display:flex;justify-content:space-between;gap:20px;padding:13px 0;border-bottom:1px solid var(--line);font-size:14px}.ingredient-list li span{overflow-wrap:anywhere;min-width:0}.ingredient-list strong{font-weight:500;color:var(--gold);text-align:right;flex-shrink:0;max-width:45%;overflow-wrap:anywhere}.servings-control{display:flex;align-items:center;gap:10px;font-size:13px;margin:20px 0 8px}.servings-control input{width:75px;margin:0}.instructions{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;line-height:1.8}#recipe-view .chips{margin-bottom:15px}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}[hidden]{display:none!important}@media(max-width:480px){main{padding:16px 17px calc(100px + env(safe-area-inset-bottom))}.card{padding:20px 17px}.brand{font-size:25px}.brand img{width:36px;height:42px}.badge{font-size:8px}.page-title h1{font-size:31px}.week-controls .textbutton{font-size:13px;padding:5px}.week-days{gap:5px}.day-chip{border-radius:11px}.meal-main{gap:15px}.meal-main h3{font-size:21px}.meal-main>svg{width:35px;height:35px}.section-title h2{font-size:18px}.textbutton{font-size:11px;padding:7px}.filters{gap:7px}.filters select{font-size:12px}.sheet{padding:20px 16px}.sheet-heading h2{font-size:22px}.form-pair{gap:10px}.stack label{font-size:12px}.overview-grid{gap:10px}.shortcut span{font-size:11px}.bottom-nav{padding-left:8px;padding-right:8px}.bottom-nav button{font-size:10px}}@media(prefers-reduced-motion:no-preference){button{transition:background .15s,border-color .15s}}

main{padding-top:calc(24px + env(safe-area-inset-top))}@media(max-width:480px){main{padding-top:calc(16px + env(safe-area-inset-top))}}

.import-actions{display:grid;gap:10px;margin:20px 0}.full-width{width:100%}.import-week-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:17px 0}.import-week-nav>span{font-size:13px;color:var(--white);text-align:center}.import-toggle{display:flex;justify-content:space-between;gap:10px}.import-choices{display:grid;gap:9px;margin:15px 0 22px}.import-choice{display:flex;gap:13px;align-items:flex-start;background:var(--surface);border:1px solid var(--line);border-radius:13px;padding:15px;cursor:pointer}.import-choice input{width:22px;height:22px;min-height:22px;flex-shrink:0;margin:2px 0 0;accent-color:var(--gold)}.import-choice>span{display:block;min-width:0;flex:1}.import-choice strong{font-size:14px;display:block;overflow-wrap:anywhere;line-height:1.45}.import-choice small{font-size:11px;display:block;margin-top:5px;overflow-wrap:anywhere}.import-choice .quantity{color:var(--gold);font-size:15px;display:block;margin-top:6px;font-weight:600}.import-choice:has(input:not(:checked)){opacity:.8}.import-info{padding:12px;border-radius:12px;font-size:12px;color:#d0e7dd}.import-success{display:grid;place-items:center;width:55px;height:55px;border-radius:50%;background:var(--green);color:var(--gold);font-size:28px;margin:20px auto}.import-success+h3{text-align:center}#import-result{font-size:14px;line-height:1.8;text-align:center}.items label>span{flex:1}.items .item-quantity{flex-shrink:0;color:var(--gold);font-size:14px;text-align:right;max-width:36%;overflow-wrap:anywhere}.page-title>.secondary{margin-bottom:18px;width:100%}

.aisle-toolbar{margin-top:22px}.aisle-toolbar h2{font-size:19px}.items>.aisle-group{list-style:none;border:0;margin:12px 0 22px;padding:0}.aisle-heading{color:var(--gold);font-size:15px;line-height:1.5;margin:0;padding:12px 0;border-bottom:1px solid var(--line)}.aisle-heading span{font-size:11px;color:var(--muted);font-weight:400}.aisle-unknown{background:#302034;border:1px dashed #b99a61!important;border-radius:14px;padding:0 12px 6px!important}.aisle-unknown>.fineprint{margin:10px 0 0}.aisle-unknown>.aisle-heading{color:#ffe3aa}.aisle-items>li>label{padding-bottom:3px}.aisle-assign{display:block;margin:0 0 5px auto;font-size:10px;min-height:36px;padding:5px}.aisles-settings-list{display:grid;gap:10px;margin:20px 0}.aisles-settings-row{padding:10px;background:var(--surface);border:1px solid var(--line);border-radius:12px}.aisles-settings-row label{font-size:11px;color:var(--muted)}.aisles-settings-row input{font-size:15px;padding:11px;margin-top:6px}.aisles-row-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:5px}.aisles-row-actions button{font-size:11px;min-height:40px;padding:5px 10px}.aisle-assignment-name{overflow-wrap:anywhere}

/* Shopping trips */
.trip-card{padding:1rem 0;border-top:1px solid #493555}.trip-card h3{margin:0 0 .35rem;overflow-wrap:anywhere}.trip-meta{color:#dcc38a;margin:.3rem 0}.trip-note{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.6}.trip-actions{display:flex;gap:.6rem;flex-wrap:wrap}.trip-done{opacity:.75}.trip-worker-ok{color:#b5dbc8}.trip-worker-warn{border-left:3px solid #dcc38a;padding-left:.75rem;color:#dcc38a}#trip-form input[type="datetime-local"]{min-width:0;width:100%;max-width:100%;box-sizing:border-box}#trips-section{scroll-margin-top:1rem}

.trip-history{list-style:none;padding:0}.trip-history-entry{padding:.8rem 0;border-top:1px solid #493555}.trip-history-entry strong{overflow-wrap:anywhere}.trip-history-entry p{margin:.35rem 0}#trip-history{margin-top:1rem}

.item-actions{display:flex;justify-content:flex-end;gap:.8rem;flex-wrap:wrap}.item-actions .aisle-assign,.item-actions .item-edit{margin:0 0 5px;font-size:11px;min-height:40px}.item-import-note{padding:12px;border-radius:12px;font-size:12px;line-height:1.6}#item-new{margin-top:7px}

.copy-target{padding:12px;border-radius:12px;line-height:1.6}.copy-occupied{border-color:#b99a61}.copy-warning{color:#ffe3aa}.copy-free{color:#b5dbc8}.plan-copy-title-row{flex-wrap:wrap;gap:12px}#plan-copy-open{font-size:12px;white-space:nowrap;width:auto;margin:0}#plan-copy-result{padding:12px;border-left:3px solid #b5dbc8;line-height:1.7}

.recipe-text-open{width:100%;margin-bottom:16px}.recipe-text-warnings{background:#302034;border-left:3px solid #dcc38a;border-radius:10px;padding:14px 14px 14px 30px;font-size:12px;line-height:1.8}.recipe-text-uncertain{color:#ffe3aa}#recipe-text-instructions{max-height:24rem;overflow:auto}#recipe-text-preview h3{overflow-wrap:anywhere}

.bottom-nav{grid-template-columns:repeat(5,minmax(0,1fr))}.bottom-nav button{min-width:0}.task-title-row{flex-wrap:wrap;gap:12px}.task-card{border-top:1px solid var(--line);padding:1rem 0}.task-card h3{margin:0 0 .35rem;overflow-wrap:anywhere}.task-schedule{font-size:12px;color:var(--muted)}.task-overdue{border-left:3px solid #dcc38a;padding-left:12px}.task-overdue .task-schedule{color:#ffe3aa}#task-at{min-width:0;max-width:100%;box-sizing:border-box}#task-filter{margin-bottom:8px}

/* Recipe source import keeps previews local and uses the existing gold/violet palette. */
.import-divider{border-top:1px solid var(--line,#493452);margin:1.5rem 0}
#recipe-import-canvas{display:block;width:100%;height:auto;max-height:24rem;object-fit:contain;border-radius:1rem;background:#fff;margin-bottom:.75rem}
.import-consent{display:flex;align-items:flex-start;gap:.75rem;font-size:.92rem;line-height:1.5}
.import-consent input{width:1.3rem;min-width:1.3rem;height:1.3rem;margin-top:.2rem;accent-color:#dcc38a}
#recipe-import-source{overflow-wrap:anywhere}#recipe-import-preview{margin-top:1.5rem}
