:root{--wall:#1f3b34;--wall-deep:#16302a;--wall-edge:#102420;--plate:#f3ede1;--plate-2:#e9e1d0;--rim:#16302a;--rim-hi:#fff9;--ink:#182b25;--ink-soft:#4f605a;--on-wall:#f3ede1;--on-wall-soft:#f3ede1b8;--action:#d6431f;--action-deep:#b53514;--on-action:#fdf3ec;--spark:#e7c24a;--chip:#ddd2bb;--chip-ink:#333024;--lift:0 14px 26px -14px #06120f8c;--lift-sm:0 4px 10px -4px #06120f66;--sign:"Zilla Slab", Rockwell, "Roboto Slab", Georgia, serif;--sans:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, "Cascadia Code", Consolas, monospace;--gut:24px;--radius:14px;--radius-sm:10px;font:17px/1.5 var(--sans);letter-spacing:.1px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--on-wall);background:var(--wall);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;accent-color:var(--action)}@media (width<=1024px){:root{font-size:16px}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--wall:#0f1c19;--wall-deep:#0a1512;--wall-edge:#060e0c;--plate:#1f2d28;--plate-2:#26352f;--rim:#0a1512;--rim-hi:#ffffff14;--ink:#efe7d7;--ink-soft:#a3b4ab;--on-wall:#ece4d3;--on-wall-soft:#ece4d39e;--action:#f0603f;--action-deep:#d1481f;--on-action:#1a0e08;--chip:#34453f;--chip-ink:#ddd2bb;--lift:0 16px 30px -14px #000000b3;--lift-sm:0 5px 12px -5px #0000008c}*{box-sizing:border-box}body{background-color:var(--wall);background-image:radial-gradient(#ffffff09 1px,#0000 1.4px);background-size:7px 7px;min-height:100svh;margin:0}#root{text-align:left;background:linear-gradient(var(--wall-deep), transparent 140px);border-inline:1px solid var(--wall-edge);flex-direction:column;width:100%;max-width:1180px;min-height:100svh;margin:0 auto;display:flex}::selection{background:var(--action);color:var(--on-action)}:focus-visible{outline:2.5px solid var(--action);outline-offset:2px;border-radius:3px}html{scrollbar-color:var(--action) var(--wall-deep)}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:var(--wall-deep)}::-webkit-scrollbar-thumb{background:var(--action);border:3px solid var(--wall-deep);border-radius:999px}h1,h2,h3{font-family:var(--sign);color:var(--on-wall);margin:0;font-weight:700;line-height:1.05}h1{text-transform:uppercase;letter-spacing:.005em;margin:.1em 0 .35em;font-size:clamp(2.2rem,6vw,3.6rem)}h2{letter-spacing:.01em;font-size:clamp(1.25rem,2.4vw,1.6rem)}h3{font-size:1.1rem;font-weight:600}p{margin:0 0 .9em}p:last-child{margin-bottom:0}a{color:var(--action);text-underline-offset:3px;text-decoration-thickness:1.5px}a:hover{-webkit-text-decoration-color:var(--action-deep);text-decoration-color:var(--action-deep)}small{color:var(--on-wall-soft);font-size:.8rem}code{font-family:var(--mono);color:inherit;background:#0000002e;border-radius:5px;padding:2px 6px;font-size:.9em}input,select,textarea{font:inherit;color:var(--ink);background:var(--plate);border:1.5px solid var(--rim);border-radius:var(--radius-sm);box-shadow:inset 0 1.5px 0 var(--rim-hi);padding:9px 12px;transition:border-color .15s,box-shadow .15s}input::placeholder,textarea::placeholder{color:var(--ink-soft)}input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--action);box-shadow:inset 0 1.5px 0 var(--rim-hi), 0 0 0 3px color-mix(in srgb, var(--action) 30%, transparent);outline:none}select{cursor:pointer;appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--ink) 50%), linear-gradient(135deg, var(--ink) 50%, transparent 50%);background-position:right 15px center,right 10px center;background-repeat:no-repeat;background-size:5px 5px,5px 5px;padding-right:34px}button,a.btn,a.action,button.action{font-family:var(--sign);text-transform:uppercase;letter-spacing:.05em;cursor:pointer;border-radius:var(--radius-sm);background:var(--plate);color:var(--ink);border:1.5px solid var(--rim);box-shadow:inset 0 1.5px 0 var(--rim-hi), var(--lift-sm);justify-content:center;align-items:center;gap:8px;padding:10px 18px;font-size:.9rem;font-weight:600;text-decoration:none;transition:transform 80ms,box-shadow .12s,background .12s;display:inline-flex}button:hover,a.btn:hover,a.action:hover,button.action:hover{transform:translateY(-1px)}button:active,a.btn:active,a.action:active,button.action:active{transform:translateY(1px);box-shadow:inset 0 2px 5px #00000047}button:disabled{opacity:.5;cursor:not-allowed;box-shadow:inset 0 1.5px 0 var(--rim-hi);transform:none}a.action,button.action{background:var(--action);color:var(--on-action);border-color:var(--action-deep);box-shadow:inset 0 1.5px 0 #ffffff47, 0 5px 14px -5px color-mix(in srgb, var(--action) 70%, transparent)}a.action:hover,button.action:hover{background:var(--action-deep)}.chip{font-family:var(--sign);text-transform:uppercase;letter-spacing:.07em;color:var(--chip-ink);background:var(--chip);border:1px solid var(--rim);white-space:nowrap;border-radius:999px;align-items:center;padding:2px 10px;font-size:.7rem;font-weight:600;display:inline-flex}.stamp{font-family:var(--sign);text-transform:uppercase;letter-spacing:.09em;color:var(--action);border:2px solid var(--action);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--action) 25%, transparent);border-radius:9px;padding:6px 12px;font-size:.72rem;font-weight:600;display:inline-block;transform:rotate(-2.5deg)}.plate{background:var(--plate);color:var(--ink);border:1.5px solid var(--rim);border-radius:var(--radius);box-shadow:inset 0 1.5px 0 var(--rim-hi), var(--lift)}.plate h2,.plate h3{color:var(--ink)}.app{flex-direction:column;min-height:100svh;display:flex}.app-header{padding:14px var(--gut);background:var(--wall-deep);border-bottom:2px solid var(--wall-edge);flex-wrap:wrap;align-items:center;gap:18px 22px;display:flex;box-shadow:0 6px 18px -12px #0009}.app-header>a:first-child{font-family:var(--sign);text-transform:uppercase;letter-spacing:.03em;color:var(--on-wall);border:2px solid var(--action);box-shadow:inset 0 0 0 2px var(--wall-deep), 0 0 0 1px var(--wall-edge);border-radius:8px;padding:2px 12px;font-size:1.35rem;font-weight:700;text-decoration:none}.app-header nav{flex-wrap:wrap;gap:4px;margin-right:auto;display:flex}.app-header nav a{font-family:var(--sign);text-transform:uppercase;letter-spacing:.05em;color:var(--on-wall-soft);border:1.5px solid #0000;border-radius:8px;padding:7px 13px;font-size:.85rem;font-weight:600;text-decoration:none;transition:color .12s,border-color .12s,background .12s}.app-header nav a:hover{color:var(--on-wall);background:#ffffff0d}.app-header nav a.active,.app-header nav a[aria-current=page]{color:var(--on-wall);border-color:var(--wall-edge);box-shadow:inset 0 -3px 0 var(--spark);background:#00000038}.app-main{padding:30px var(--gut) 72px;flex:1}.vault-tools{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:26px;display:flex}.vault-tools input{flex:240px;min-width:0}.vault-tools select{flex:0 190px}.vault-tools .action{margin-left:auto}.plate-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:18px;margin:0;padding:0;list-style:none;display:grid}.plate-card{position:relative}.plate-card a{min-height:148px;color:var(--ink);border-radius:var(--radius);flex-direction:column;align-items:flex-start;gap:10px;padding:18px 18px 16px;text-decoration:none;transition:transform .1s,box-shadow .14s;display:flex}.plate-card:hover{box-shadow:inset 0 1.5px 0 var(--rim-hi), 0 20px 30px -16px #06120f99;transform:translateY(-3px)}.plate-mono{font-family:var(--sign);color:var(--action);opacity:.9;font-size:2.6rem;font-weight:700;line-height:1}.plate-title{font-family:var(--sign);text-transform:uppercase;letter-spacing:.01em;margin-top:auto;font-size:1.2rem;font-weight:700;line-height:1.12}.vault-note{color:var(--on-wall-soft);font-size:1.05rem}.plate .vault-note{color:var(--ink-soft)}.recipe-head{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:8px;display:flex}.recipe-head .chip{margin-top:2px}.recipe-meta{flex-wrap:wrap;gap:8px 10px;margin:4px 0 20px;display:flex}.recipe-meta span{font-family:var(--sign);text-transform:uppercase;letter-spacing:.05em;color:var(--on-wall);background:var(--wall-deep);border:1.5px solid var(--wall-edge);border-radius:8px;padding:5px 11px;font-size:.82rem;font-weight:600}.recipe-meta span b{color:var(--spark);font-weight:700}.recipe-actions{flex-wrap:wrap;gap:10px;margin:0 0 26px;display:flex}.recipe-actions .spacer{flex:1}.recipe-body{grid-template-columns:minmax(0,300px) minmax(0,1fr);align-items:start;gap:20px;display:grid}.panel{padding:22px 24px}.panel>h2{text-transform:uppercase;letter-spacing:.06em;border-bottom:2px solid color-mix(in srgb, var(--rim) 30%, transparent);margin-bottom:14px;padding-bottom:10px;font-size:1.05rem}.ing-list{margin:0;padding:0;list-style:none}.ing-list li{border-bottom:1px dashed color-mix(in srgb, var(--rim) 28%, transparent);gap:10px;padding:9px 0;display:flex}.ing-list li:last-child{border-bottom:none}.ing-list .qty{font-family:var(--sign);color:var(--action);font-variant-numeric:tabular-nums;min-width:62px;font-weight:700}.step-list{counter-reset:step;margin:0;padding:0;list-style:none}.step-list li{counter-increment:step;min-height:34px;padding:4px 0 20px 52px;position:relative}.step-list li:last-child{padding-bottom:0}.step-list li:before{content:counter(step);width:34px;height:34px;font-family:var(--sign);color:var(--on-action);background:var(--action);border:1.5px solid var(--action-deep);border-radius:8px;place-items:center;font-weight:700;display:grid;position:absolute;top:0;left:0;box-shadow:inset 0 1.5px #ffffff47}.note-plate{margin-top:20px;padding:20px 24px}.note-plate .stamp{margin-bottom:12px}.note-plate h2{text-transform:uppercase;letter-spacing:.06em;margin-bottom:10px;font-size:1.05rem}form{max-width:720px}form label{font-family:var(--sign);text-transform:uppercase;letter-spacing:.05em;color:var(--on-wall-soft);margin-bottom:16px;font-size:.8rem;font-weight:600;display:block}form label input,form label textarea,form label select{width:100%;font-family:var(--sans);text-transform:none;letter-spacing:normal;color:var(--ink);margin-top:6px;font-size:1rem;font-weight:400;display:block}textarea{resize:vertical;min-height:110px;font-family:var(--sans)}button[type=submit]{background:var(--action);color:var(--on-action);border-color:var(--action-deep);box-shadow:inset 0 1.5px 0 #ffffff47, 0 5px 14px -5px color-mix(in srgb, var(--action) 70%, transparent);margin-top:6px}button[type=submit]:hover{background:var(--action-deep)}button[aria-pressed=true]{background:var(--ink);color:var(--plate);border-color:var(--ink);box-shadow:inset 0 2px 4px #0000004d}.editor-row{flex-wrap:wrap;gap:8px;margin-bottom:8px;display:flex}.editor-row input{flex:120px;min-width:0}.editor-row input:last-of-type{flex:2 200px}.tag-row{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.tag-row button{padding:6px 13px;font-size:.8rem}.ai-panel{margin-bottom:24px;padding:20px 22px}.ai-panel h2{text-transform:uppercase;letter-spacing:.05em;margin-bottom:14px;font-size:1.05rem}.ai-panel label{font-family:var(--sign);text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);margin-bottom:12px;font-size:.8rem;font-weight:600;display:block}.ai-panel label input,.ai-panel label textarea{width:100%;font-family:var(--sans);text-transform:none;letter-spacing:normal;color:var(--ink);margin-top:6px;font-size:1rem;font-weight:400;display:block}.auth-card{max-width:420px;margin:6vh auto;padding:30px 30px 26px}.auth-card h1{margin-top:0}.auth-card label{color:var(--ink-soft)}.auth-card p{color:var(--ink)}.auth-card>button[type=submit]{width:100%}.settings-field{flex-direction:column;gap:6px;max-width:420px;margin-bottom:16px;display:flex}.settings-field>label,.settings-field>.field-label{font-family:var(--sign);text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);font-size:.8rem;font-weight:600}.radio-row{flex-wrap:wrap;gap:14px;display:flex}.form-error{color:var(--action)}.avatar{object-fit:cover;border:1.5px solid var(--rim);width:72px;height:72px;box-shadow:var(--lift-sm);border-radius:50%}.danger-confirm{flex-direction:column;gap:10px;max-width:420px;display:flex}.data-row{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:8px;display:flex}.data-row .key{font-family:var(--mono);font-size:.85rem}.stack{margin:0;padding:0;list-style:none}.plate-row{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px;padding:14px 18px;display:flex}.plate-row .row-title,.plate-row>a:first-child{font-family:var(--sign);text-transform:uppercase;letter-spacing:.01em;color:var(--ink);margin-right:auto;font-size:1.05rem;font-weight:700;text-decoration:none}.plate-row>a:first-child:hover{color:var(--action)}.plate-row code{font-family:var(--mono);background:var(--plate-2);color:var(--ink);border:1px solid color-mix(in srgb, var(--rim) 30%, transparent)}.meal-item .day-slot{flex-wrap:wrap;gap:8px;display:flex}.meal-item .portions{font-family:var(--sign);text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);align-items:center;gap:8px;font-size:.82rem;font-weight:600;display:inline-flex}.meal-item .portions button{padding:4px 12px;font-size:.9rem}.meal-item .portions [aria-label=portions\ value]{text-align:center;font-variant-numeric:tabular-nums;min-width:2ch;color:var(--ink)}.cal-day{margin-bottom:16px;padding:18px 20px}.cal-day h3{color:var(--ink);text-transform:uppercase;letter-spacing:.04em;border-bottom:2px solid color-mix(in srgb, var(--rim) 30%, transparent);margin-bottom:12px;padding-bottom:8px;font-size:1.1rem}.cal-day h4{font-family:var(--sign);text-transform:uppercase;letter-spacing:.06em;color:var(--action);margin:12px 0 6px;font-size:.8rem;font-weight:600}.grocery-list li{border-bottom:1px dashed color-mix(in srgb, var(--rim) 28%, transparent);flex-wrap:wrap;align-items:center;gap:10px;padding:9px 0;display:flex}.grocery-list li:last-child{border-bottom:none}.grocery-list label{cursor:pointer;align-items:center;gap:10px;margin:0;display:flex}.grocery-list input[type=checkbox]{width:18px;height:18px;margin:0}.grocery-list small{color:var(--ink-soft)}.grocery-list .qty{font-family:var(--sign);color:var(--action);font-variant-numeric:tabular-nums;font-weight:700}.grocery-list .chip{margin-left:2px}.cook{text-align:center;max-width:900px;margin:0 auto}.cook-bar{flex-wrap:wrap;justify-content:center;gap:10px;margin-bottom:8px;display:flex}.cook-step{font-family:var(--sign);color:var(--on-wall);max-width:18ch;margin:7vh auto 22px;font-size:clamp(1.9rem,5vw,3rem);font-weight:600;line-height:1.22}.cook-count{font-family:var(--sign);text-transform:uppercase;letter-spacing:.08em;color:var(--spark);margin-bottom:20px;font-weight:600}.cook-nav{justify-content:center;gap:12px;display:flex}.cook-ings{text-align:left;margin:0 auto 12px;display:inline-block}.comment{padding:14px 18px;display:block}.comment .who{font-family:var(--sign);text-transform:uppercase;letter-spacing:.03em;color:var(--ink);margin-bottom:4px;font-weight:700}.comment .when{color:var(--ink-soft);margin:6px 0 0;font-size:.78rem}.catalog-overlay{z-index:50;padding:var(--gut);background:color-mix(in srgb, var(--wall-edge) 72%, transparent);place-items:center;display:grid;position:fixed;inset:0}.catalog-modal{flex-direction:column;gap:14px;width:min(640px,100%);max-height:min(80svh,720px);padding:20px;display:flex}.catalog-modal h3{margin:0}.catalog-fields{grid-template-columns:2fr 1fr;gap:10px;display:grid}.catalog-cats{flex-wrap:wrap;gap:8px;display:flex}.catalog-cats .chip{cursor:pointer;text-transform:uppercase}.catalog-cats .chip[aria-pressed=true]{color:var(--on-action);background:var(--action);border-color:var(--action-deep)}.catalog-list{overflow-y:auto}.catalog-list h4{color:var(--ink-soft);letter-spacing:.06em;text-transform:uppercase;margin:12px 0 6px;font-size:.8rem}.catalog-items{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:4px 12px;display:grid}.catalog-items label{border-radius:var(--radius-sm);color:var(--ink);cursor:pointer;align-items:center;gap:8px;padding:5px 6px;display:flex}.catalog-items label:hover{background:var(--plate-2)}.catalog-actions{gap:10px;display:flex}.plan-dates{flex-wrap:wrap;align-items:flex-end;gap:14px;display:flex}.week-grid{gap:8px;margin-top:18px;display:grid;overflow-x:auto}.week-grid .col-head,.week-grid .slot-head{font-family:var(--sign);text-transform:uppercase;letter-spacing:.06em;color:var(--on-wall-soft);align-self:center;font-size:.72rem}.week-cell{border-radius:var(--radius-sm);background:var(--plate);min-height:64px;color:var(--ink);border:1.5px solid var(--rim);box-shadow:var(--lift-sm);flex-direction:column;gap:4px;padding:8px;font-size:.88rem;display:flex}.week-cell.empty{box-shadow:none;color:var(--on-wall-soft);background:0 0;border-style:dashed;justify-content:center;align-items:center}.week-cell .leftover{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);font-size:.72rem}.nudge{border-radius:var(--radius-sm);background:var(--plate-2);color:var(--ink);border:1.5px solid var(--rim);flex-wrap:wrap;align-items:center;gap:10px;padding:10px 14px;display:flex}.upnext{margin-bottom:30px}.upnext h3{letter-spacing:.08em;text-transform:uppercase;color:var(--on-wall-soft);margin:18px 0 8px;font-size:.78rem}.upnext .slot{font-family:var(--sign);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);min-width:78px;font-size:.72rem}.hero{flex-wrap:wrap;align-items:center;gap:18px;margin-bottom:22px;padding:18px;display:flex}.hero-photo{object-fit:cover;border-radius:var(--radius-sm);border:1.5px solid var(--rim);width:132px;height:132px}.hero-body{flex-direction:column;flex:260px;gap:8px;display:flex}.hero-meta{color:var(--ink-soft);margin:0}.hero-actions{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.staples-strip{margin-top:26px}.staples-strip h3{color:var(--on-wall)}.forgotten{margin-top:26px}.forgotten h3{color:var(--on-wall)}.plans{margin-top:26px}.plans summary{color:var(--on-wall)}.upnext .empty-slot{box-shadow:none;color:var(--on-wall-soft);background:0 0;border-style:dashed}.upnext .empty-slot a{font-family:var(--sign);margin-left:auto;padding:0 10px;font-size:1.1rem;text-decoration:none}.staples{margin-top:18px}.staples summary,.plans summary{cursor:pointer;font-family:var(--sign);color:var(--ink);text-transform:uppercase;letter-spacing:.05em;font-size:.78rem}.staples .chip-row{flex-wrap:wrap;gap:8px;margin:10px 0;display:flex}.staples .chip button{color:inherit;font:inherit;cursor:pointer;box-shadow:none;background:0 0;border:0;margin-left:6px;padding:0 2px}.group-toggle{gap:8px;margin:10px 0 14px;display:flex}.group-toggle button{padding:6px 12px;font-size:.78rem}.group-toggle button[aria-pressed=true]{background:var(--action);color:var(--on-action);border-color:var(--action)}.aisle{font-family:var(--sign);color:var(--ink-soft);letter-spacing:.07em;text-transform:uppercase;margin:16px 0 6px;font-size:.74rem}.aisle:first-child{margin-top:0}.editor-row select{min-width:9rem}.section-namer{align-items:center;gap:6px;display:flex}.aisle-setter select{border-radius:var(--radius-sm);margin-left:8px;padding:2px 6px;font-size:.74rem}@media (width<=720px){.recipe-body{grid-template-columns:1fr}.app-header{gap:12px 14px}.app-header nav{order:3;width:100%}.app-main{padding:22px 16px 56px}:root{--gut:16px}.catalog-fields{grid-template-columns:1fr}.week-grid{font-size:.82rem}}.cook-log{flex-wrap:wrap;align-items:center;gap:12px;margin-top:18px;display:flex}.cook-used{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.cook-used .vault-note{margin:0}.cook-used .chip{cursor:pointer;font:inherit;font-size:.7rem}.cupboard-items{flex-wrap:wrap;gap:8px;padding:0;list-style:none;display:flex}.cupboard-items li{align-items:center;gap:2px;display:flex}.cupboard-chip{cursor:pointer;border:2px solid var(--ink);font:inherit;font-size:.85rem}.cupboard-chip.is-have{color:#1d4a35;background:#c8d9cf}.cupboard-chip.is-low{color:#6b4a10;background:#f0d9a8}.cupboard-chip.is-out{color:#8c2c17;background:#e8c0b6;text-decoration:line-through}.cupboard-week{opacity:.75;font-size:.72rem}.cupboard-remove{cursor:pointer;color:var(--on-wall-soft);background:0 0;border:none;font-size:1.1rem;line-height:1}.cupboard-remove:hover{color:var(--on-wall)}.plate .cupboard-remove{color:var(--ink-soft)}.step-text{width:100%;margin-top:6px;display:block}
