:root{--brand:#f5c518;--brand-strong:#e8b500;--ink:#1f2430;--ink-soft:#5b6472;--page-bg:#f5f6f8;--panel:#fff;--line:#e6e8ec;--sticky-bg:#f0f2f5;--sticky-line:#c9ced6;--band-breakfast:#fff6e0;--band-lunch:#eef4fb;--band-dinner:#f1eef9;--hl-yellow:#fff59d;--hl-orange:#ffcc80;--hl-green:#c5e1a5;--hl-red:#ef9a9a;--hl-blue:#b3e5fc;--toast-bg:#1f2430;--toast-ink:#fff;--toast-x:#cfd3da;--radius-xs:4px;--radius-sm:6px;--radius:8px;--radius-lg:12px;--radius-pill:999px;--text-xs:.72rem;--text-sm:.8rem;--text-md:.85rem;--text-lg:.9rem;--text-xl:1.02rem;--text-2xl:1.2rem;--text-3xl:1.5rem;--text-4xl:1.9rem;--text-display:3rem;--space-2xs:2px;--space-xs:4px;--space-sm:6px;--space-md:8px;--space-lg:12px;--space-xl:16px;--space-2xl:20px;--space-3xl:24px;--space-4xl:32px;--space-5xl:40px;--font-display:"Baloo 2", Avenir, Montserrat, Corbel, "URW Gothic", source-sans-pro, sans-serif;--font-body:"Sora", Inter, Roboto, "Helvetica Neue", "Arial Nova", "Nimbus Sans", Arial, sans-serif;--font-mono:"Chakra Petch", ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, "DejaVu Sans Mono", monospace;--shadow:0 1px 3px #1419281a;--shadow-lg:0 8px 30px #1419282e}*{box-sizing:border-box}body{padding:var(--space-2xl);font-family:var(--font-body);color:var(--ink);background:var(--page-bg);margin:0}@font-face{font-family:"Baloo 2";font-style:normal;font-weight:800;font-display:swap;src:url(/assets/baloo-2-800-BbF3Etk1.woff2)format("woff2")}@font-face{font-family:Sora;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/sora-400-CRt88UEn.woff2)format("woff2")}@font-face{font-family:Sora;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/sora-500-01eiPEn0.woff2)format("woff2")}@font-face{font-family:Sora;font-style:normal;font-weight:600;font-display:swap;src:url(/assets/sora-600-Cdg4DaK0.woff2)format("woff2")}@font-face{font-family:Sora;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/sora-700-9waGdLWo.woff2)format("woff2")}@font-face{font-family:Chakra Petch;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/chakra-petch-400-SafcrIr2.woff2)format("woff2")}@font-face{font-family:Chakra Petch;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/chakra-petch-500-BR1ody1F.woff2)format("woff2")}@font-face{font-family:Chakra Petch;font-style:normal;font-weight:600;font-display:swap;src:url(/assets/chakra-petch-600-DVQm9bgb.woff2)format("woff2")}.topbar{margin-bottom:var(--space-xs);justify-content:space-between;align-items:center;display:flex}header h1{align-items:center;gap:var(--space-lg);font-size:var(--text-4xl);margin:0;display:flex}.logo{border-radius:var(--radius);background:var(--brand);color:#2a2200;justify-content:center;align-items:center;width:34px;height:34px;display:inline-flex}.logo svg{font-size:20px}.brand-link{color:inherit;align-items:center;gap:var(--space-lg);text-decoration:none;display:inline-flex}.brand-link:hover{opacity:.85}.brand-wordmark{font-family:var(--font-display);letter-spacing:-.01em;background:linear-gradient(92deg,#e8b500 0%,#f7d046 42%,#ff9e2c 100%);-webkit-text-fill-color:transparent;color:#0000;-webkit-background-clip:text;background-clip:text;font-weight:800}.subtitle{margin:var(--space-2xs) 0 var(--space-2xs) 44px;color:var(--ink-soft);font-size:var(--text-lg);font-family:var(--font-mono)}.header-links{gap:var(--space-xl);align-items:center;display:flex}.beta-note{margin:var(--space-lg) var(--space-xs) var(--space-xl);padding:var(--space-md) var(--space-lg);border:1px solid var(--sticky-line);border-radius:var(--radius);background:var(--sticky-bg);color:var(--ink-soft);font-size:var(--text-sm);line-height:1.5;font-family:var(--font-mono)}.jotter{margin:var(--space-2xl) 0 var(--space-md);border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--panel);overflow:hidden}.jotter-summary{align-items:center;gap:var(--space-md);padding:var(--space-lg) var(--space-xl);cursor:pointer;font-weight:600;font-size:var(--text-lg);color:var(--ink);-webkit-user-select:none;user-select:none;list-style:none;display:flex}.jotter-summary::-webkit-details-marker{display:none}.jotter-summary:hover{background:var(--sticky-bg)}.jotter-icon{font-size:var(--text-2xl);color:var(--ink-soft)}.jotter-summary:after{content:"";border-right:2px solid var(--ink-soft);border-bottom:2px solid var(--ink-soft);width:7px;height:7px;margin-left:auto;transition:transform .2s;transform:rotate(45deg)}.jotter[open] .jotter-summary:after{transform:rotate(-135deg)}.jotter[open] .jotter-summary{border-bottom:1px solid var(--line)}.jotter-text{box-sizing:border-box;width:100%;color:var(--ink);font:inherit;font-size:var(--text-lg);padding:var(--space-lg) var(--space-xl);resize:vertical;background:0 0;border:none;outline:none;min-height:120px;line-height:1.6;display:block}.jotter-text::placeholder{color:var(--ink-soft);opacity:.75}.jotter-actions{justify-content:flex-end;gap:var(--space-md);padding:0 var(--space-xl) var(--space-lg);display:flex}.galaxy-overlay{z-index:1000;background:#0b0e17;position:fixed;inset:0}.galaxy-top{z-index:2;padding:var(--space-xl) var(--space-2xl);pointer-events:none;justify-content:space-between;align-items:center;display:flex;position:absolute;top:0;left:0;right:0}.galaxy-title{color:#fff;font-weight:700;font-size:var(--text-xl);letter-spacing:.02em;text-shadow:0 1px 10px #000000b3}.galaxy-close{pointer-events:auto;align-items:center;gap:var(--space-sm);color:#fff;padding:var(--space-md) var(--space-xl);border-radius:var(--radius-pill);cursor:pointer;font-weight:600;font-size:var(--text-md);background:#ffffff1a;border:1px solid #ffffff47;transition:background .15s;display:inline-flex}.galaxy-close:hover{background:#ffffff38}.galaxy-hint{z-index:2;text-align:center;color:#ffffff80;font-size:var(--text-sm);pointer-events:none;position:absolute;bottom:14px;left:0;right:0}.galaxy-empty{text-align:center;color:#ffffffb8;padding:var(--space-5xl);font-size:var(--text-xl);justify-content:center;align-items:center;line-height:1.6;display:flex;position:absolute;inset:0}.hdr-chip{align-items:center;gap:var(--space-sm);font-size:var(--text-sm);font-family:var(--font-mono);color:var(--ink);background:var(--panel);border:1px solid var(--sticky-line);border-radius:var(--radius-pill);padding:var(--space-sm) var(--space-lg);cursor:pointer;font-weight:600;text-decoration:none;transition:border-color .15s,box-shadow .2s,transform .1s;display:inline-flex}.hdr-chip svg{color:var(--ink-soft);font-size:15px}.hdr-chip .hdr-chip-accent{color:var(--brand)}.hdr-chip:hover{border-color:var(--brand);box-shadow:0 4px 14px -7px var(--brand);color:var(--ink);transform:translateY(-1px)}.feedback-bar{margin:var(--space-xl) 0 0 var(--space-xs);align-items:center;gap:var(--space-xl);display:flex}.donate-btn{align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-pill);font-family:var(--font-mono);font-weight:600;font-size:var(--text-sm);color:var(--ink);background:var(--panel);border:1px solid var(--sticky-line);text-decoration:none;transition:transform .1s,box-shadow .2s,border-color .2s;display:inline-flex}.donate-btn:hover{border-color:#e0709a;transform:translateY(-1px);box-shadow:0 5px 16px -7px #e0709ab3}.donate-btn:active{transform:translateY(0)}.note{margin:0 0 var(--space-xl);padding:var(--space-md) var(--space-lg);border-radius:var(--radius-sm);font-size:var(--text-sm);color:#7a5a00;background:#fff8e1;border:1px solid #ffe082}.note.preview{color:#3a5169;background:#eef4fb;border-color:#c9ddf5}.toolbars{align-items:stretch;gap:var(--space-lg);margin-bottom:var(--space-xl);display:flex}.toolbar-hint{margin:calc(-1 * var(--space-sm)) var(--space-xs) var(--space-xl);font-size:var(--text-sm);color:var(--ink-soft);line-height:1.5}.toolbar{gap:var(--space-md);background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);min-width:0;padding:var(--space-lg) var(--space-xl);box-shadow:var(--shadow);flex-direction:column;flex:auto;margin:0;display:flex}.toolbar-label{font-size:var(--text-xs);letter-spacing:.09em;text-transform:uppercase;color:var(--ink-soft);font-weight:700}.toolbar-body{align-items:center;gap:var(--space-2xs);flex-wrap:wrap;display:flex}@media (width<=1024px){.toolbars{flex-direction:column}}.tb-dishes{align-items:center;gap:var(--space-md);font-size:var(--text-md);color:var(--ink);background:var(--sticky-bg);border:1px solid var(--sticky-line);border-radius:var(--radius-sm);padding:var(--space-md) var(--space-lg);cursor:pointer;font-weight:600;transition:border-color .15s,background .15s;display:inline-flex}.tb-dishes svg{color:var(--ink-soft);font-size:18px}.tb-dishes:hover{border-color:var(--brand);background:var(--panel)}.tb-dishes.empty,.tb-dishes.empty svg{color:#c0392b}.tb-field{align-items:center;gap:var(--space-sm);font-size:var(--text-sm);color:var(--ink-soft);display:inline-flex}.tb-field.disabled{opacity:.5}.tb-check{align-items:center;gap:var(--space-sm);font-size:var(--text-sm);color:var(--ink-soft);cursor:pointer;display:inline-flex}.tb-check input{cursor:pointer;margin:0}.tb-pop-wrap{display:inline-flex;position:relative}.menu.tb-pop{top:calc(100% + 4px);left:0;right:auto}.menu.tb-pop-right{left:auto;right:0}.menu .tb-field.wide{padding:var(--space-sm) var(--space-md);justify-content:space-between;display:flex}.menu .tb-field.wide .fmt-select,.menu .tb-field.wide .days-input{width:auto}.split-btn{display:inline-flex}.split-btn>.btn:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.split-btn>.split-caret{padding-left:var(--space-sm);padding-right:var(--space-sm);border-left:1px solid #7f7f7f59;border-top-left-radius:0;border-bottom-left-radius:0}.split-btn>.split-caret svg{font-size:18px}.btn.save-manual-btn{border-color:var(--brand);color:var(--brand-strong);font-weight:600}.btn.save-manual-btn svg{color:var(--brand-strong)}.btn{background:var(--brand);color:#2a2200;border-radius:var(--radius-sm);padding:var(--space-md) var(--space-2xl);font-family:var(--font-mono);cursor:pointer;align-items:center;gap:var(--space-sm);border:none;font-weight:600;text-decoration:none;display:inline-flex}.btn svg{font-size:17px}.btn:hover{background:var(--brand-strong)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.ghost{background:var(--panel);border:1px solid var(--sticky-line);color:var(--ink);font-weight:500}.btn.ghost:hover{background:var(--sticky-bg)}.btn.small{padding:var(--space-sm) var(--space-lg);font-size:var(--text-sm)}.btn.glow{background:linear-gradient(180deg, var(--brand) 0%, var(--brand-strong) 100%);text-decoration:none;transition:box-shadow .18s,transform 80ms,filter .18s;box-shadow:0 1px 2px #00000040,0 0 0 1px #f5c51859,0 6px 18px -5px #f5c5188c,0 0 22px -6px #f5c5188c}.btn.glow:hover:not(:disabled){background:linear-gradient(180deg, var(--brand) 0%, var(--brand-strong) 100%);filter:brightness(1.05);transform:translateY(-1px);box-shadow:0 2px 4px #00000047,0 0 0 1px #f5c51880,0 10px 26px -5px #f5c518b3,0 0 30px -5px #f5c518b3}.btn.glow:active:not(:disabled){filter:brightness(.98);transform:translateY(0)}.btn.glow:disabled{background:var(--brand);box-shadow:none;filter:none;transform:none}.days-input,.date-input{padding:var(--space-md) var(--space-md);border:1px solid var(--sticky-line);border-radius:var(--radius-sm);font-size:var(--text-lg);background:var(--panel);color:var(--ink)}.days-input{width:60px}.fmt-select{padding:var(--space-md) var(--space-md);border:1px solid var(--sticky-line);border-radius:var(--radius-sm);font-size:var(--text-md);background:var(--panel);color:var(--ink)}.menu-title-input{box-sizing:border-box;width:100%;margin:var(--space-sm) 0 var(--space-lg);padding:var(--space-xs) var(--space-2xs);color:var(--ink);font-size:var(--text-3xl);background:0 0;border:none;border-bottom:1px solid #0000;font-weight:700;line-height:1.2;display:block}.menu-title-input::placeholder{color:var(--ink-soft);opacity:.7;font-weight:600}.menu-title-input:hover{border-bottom-color:var(--sticky-line)}.menu-title-input:focus{border-bottom-color:var(--brand);outline:none}.viewbar{align-items:center;gap:var(--space-lg);margin-bottom:var(--space-lg);flex-wrap:wrap;display:flex}.view-days{align-items:center;gap:var(--space-sm);font-size:var(--text-sm);color:var(--ink-soft);display:inline-flex}.view-days select{padding:var(--space-xs) var(--space-sm);border:1px solid var(--sticky-line);border-radius:var(--radius-sm);background:var(--panel);color:var(--ink);font-size:var(--text-md);cursor:pointer}.weektabs{gap:var(--space-sm);flex-wrap:wrap;display:flex}.wktab{background:var(--panel);border:1px solid var(--sticky-line);color:var(--ink-soft);padding:var(--space-md) var(--space-xl);border-radius:var(--radius-pill);cursor:pointer;font-family:var(--font-mono);font-weight:600;font-size:var(--text-md)}.wktab.active{background:var(--brand);color:#2a2200;border-color:var(--brand)}.table-wrap{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.scroll{max-height:820px;overflow-x:auto}table{border-collapse:collapse;table-layout:fixed;width:100%}th,td{border-bottom:1px solid var(--line);font-size:var(--text-md);text-align:left;vertical-align:top;padding:0}thead th{background:var(--sticky-bg);z-index:5;padding:var(--space-md) var(--space-lg);text-align:center;border-bottom:2px solid var(--sticky-line);font-weight:600;position:sticky;top:0}thead th.corner{z-index:6;width:var(--label-col,120px);border-right:2px solid var(--sticky-line);left:0}.band-label{z-index:4;background:var(--sticky-bg);border-right:2px solid var(--sticky-line);padding:var(--space-md) var(--space-lg);width:var(--label-col,120px);min-width:var(--label-col,120px);max-width:var(--label-col,120px);font-weight:700;font-size:var(--text-xs);letter-spacing:.06em;color:var(--ink-soft);position:sticky;left:0;box-shadow:4px 0 6px -3px #0006}.row-label{z-index:4;background:var(--panel);border-right:2px solid var(--sticky-line);padding:var(--space-md) var(--space-lg);width:var(--label-col,120px);min-width:var(--label-col,120px);max-width:var(--label-col,120px);color:var(--ink);font-weight:600;position:sticky;left:0;box-shadow:4px 0 6px -3px #0006}.row-label .rl-inner{justify-content:space-between;align-items:center;gap:var(--space-sm);display:flex}.row-label .rl-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.row-label.menu-open{z-index:30}.menu.menu-left{left:6px;right:auto}tr.breakfast td:not(.band-label):not(.row-label){background:var(--band-breakfast)}tr.lunch td:not(.band-label):not(.row-label){background:var(--band-lunch)}tr.dinner td:not(.band-label):not(.row-label){background:var(--band-dinner)}tr.band-start td{border-top:3px solid var(--sticky-line)}.themehdr{padding:0}.th-inner{justify-content:space-between;align-items:center;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);border-bottom:1px dashed var(--sticky-line);background:#00000005;display:flex;position:relative}.th-name{text-transform:capitalize;font-weight:700;font-size:var(--text-lg);color:var(--ink);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.th-empty{color:var(--ink-soft);font-style:italic;font-weight:500}.th-acts{gap:var(--space-xs);flex-shrink:0;display:flex}.mini{border-radius:var(--radius-sm);padding:var(--space-xs) var(--space-sm);cursor:pointer;color:var(--ink-soft);background:#7f7f7f24;border:none;align-items:center;display:inline-flex}.mini:hover{color:var(--ink);background:#7f7f7f47}.mini svg,.dots svg{font-size:18px}.cell{padding:var(--space-md) var(--space-lg);position:relative}.cell .row{justify-content:space-between;align-items:center;gap:var(--space-sm);display:flex}.dish{text-transform:capitalize;white-space:nowrap;text-overflow:ellipsis;flex:auto;min-width:0;overflow:hidden}.add-dish{text-transform:none;color:var(--ink-soft);opacity:.7;cursor:pointer;font-style:italic}.add-dish:hover{opacity:1;color:var(--brand-strong)}.dish.editable{cursor:pointer}.dish.editable:hover{text-underline-offset:2px;text-decoration:underline;text-decoration-thickness:1px}.cell.hidden-cell .dish{color:var(--ink-soft);opacity:.75;text-decoration:line-through;-webkit-text-decoration-color:var(--ink-soft);text-decoration-color:var(--ink-soft);text-decoration-thickness:1px}.cell.deleted-note{background:#7f7f7f12}.cell.deleted-note .dish{color:var(--ink-soft);text-transform:none;font-style:italic}.dots{cursor:pointer;color:var(--ink-soft);opacity:.6;padding:var(--space-2xs) var(--space-xs);border-radius:var(--radius-sm);background:0 0;border:none;flex-shrink:0;align-items:center;line-height:1;display:inline-flex}.dots:hover{opacity:1;background:#7f7f7f24}.hl-yellow{background:var(--hl-yellow)!important}.hl-orange{background:var(--hl-orange)!important}.hl-green{background:var(--hl-green)!important}.hl-red{background:var(--hl-red)!important}.hl-blue{background:var(--hl-blue)!important}.menu{z-index:20;background:var(--panel);border:1px solid var(--sticky-line);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:var(--space-sm);min-width:206px;position:absolute;top:30px;right:6px}.menu button.item{align-items:center;gap:var(--space-md);width:100%;padding:var(--space-md) var(--space-md);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--text-md);text-align:left;color:var(--ink);background:0 0;border:none;display:flex}.menu button.item:hover{background:var(--sticky-bg)}.menu button.item svg{color:var(--ink-soft);flex-shrink:0;font-size:18px}.menu button.item:disabled{opacity:.4;cursor:default}.menu button.item:disabled:hover{background:0 0}.menu .sep{background:var(--line);height:1px;margin:var(--space-sm) var(--space-2xs)}.menu button.item.save-manual{color:var(--brand-strong);font-weight:600}.menu button.item.save-manual svg{color:var(--brand-strong)}.pick-list .item{text-transform:capitalize}.swatches{gap:var(--space-md);padding:var(--space-sm) var(--space-md) var(--space-xs);display:flex}.sw{cursor:pointer;border:2px solid #7f7f7f47;border-radius:50%;width:22px;height:22px;transition:transform 80ms}.sw:hover{transform:scale(1.14)}.sw.y{background:var(--hl-yellow)}.sw.o{background:var(--hl-orange)}.sw.g{background:var(--hl-green)}.sw.r{background:var(--hl-red)}.sw.b{background:var(--hl-blue)}.sw.clear{background:var(--panel);position:relative}.sw.clear:after{content:"✕";color:var(--ink-soft);justify-content:center;align-items:center;font-size:12px;display:flex;position:absolute;inset:0}.sw.custom{background:conic-gradient(from 90deg,#f44336,#ff9800,#ffeb3b,#4caf50,#00bcd4,#3f51b5,#9c27b0,#f44336);padding:0;position:relative;overflow:hidden}.sw.custom input{opacity:0;cursor:pointer;border:none;width:100%;height:100%;padding:0;position:absolute;inset:0}.menu .menu-head{font-size:var(--text-xs);color:var(--ink-soft);padding:var(--space-xs) var(--space-md) var(--space-2xs)}.menu input.menu-input{width:100%;padding:var(--space-md) var(--space-md);border:1px solid var(--sticky-line);border-radius:var(--radius-sm);font-size:var(--text-md);background:var(--panel);color:var(--ink);margin:var(--space-2xs) 0 var(--space-sm)}.pick-list{flex-direction:column;max-height:190px;display:flex;overflow-y:auto}.pick-list .item.empty{color:var(--ink-soft);cursor:default;font-style:italic}.menu .panel-actions{gap:var(--space-sm);padding:var(--space-xs) var(--space-xs) var(--space-2xs);justify-content:flex-end;display:flex}.menu .panel-actions .btn{padding:var(--space-sm) var(--space-lg);font-size:var(--text-sm)}.btn.danger{color:#fff;background:#e05a4d}.btn.danger:hover{background:#c94b3f}.themehdr.meal-hidden .th-name{color:var(--ink-soft);opacity:.7;text-decoration:line-through;text-decoration-thickness:1px}.toast{z-index:50;background:var(--toast-bg);color:var(--toast-ink);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:var(--space-lg) var(--space-xl);align-items:center;gap:var(--space-xl);font-size:var(--text-md);max-width:92vw;display:flex;position:fixed;bottom:22px;left:50%;transform:translate(-50%)}.toast .toast-btn{background:var(--brand);color:#2a2200;border-radius:var(--radius-sm);padding:var(--space-sm) var(--space-lg);cursor:pointer;border:none;font-weight:700}.toast .toast-x{color:var(--toast-x);cursor:pointer;font-size:var(--text-xl);border-radius:var(--radius-sm);padding:var(--space-2xs) var(--space-sm);background:0 0;border:none}.toast .toast-x:hover{color:var(--toast-ink);background:#ffffff1f}.legend{margin:var(--space-xl) var(--space-xs) 0;padding:var(--space-lg) var(--space-xl);background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.legend-title{font-weight:700;font-size:var(--text-xs);letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:var(--space-md);display:block}.legend-items{gap:var(--space-md) var(--space-2xl);flex-wrap:wrap;display:flex}.legend-item{align-items:center;gap:var(--space-md);display:flex}.legend-sw{border-radius:var(--radius-sm);border:1px solid #7f7f7f4d;flex-shrink:0;width:20px;height:20px}.legend-input{border:none;border-bottom:1px solid var(--sticky-line);color:var(--ink);font-size:var(--text-md);padding:var(--space-xs) var(--space-2xs);background:0 0;min-width:190px}.legend-input::placeholder{color:var(--ink-soft);opacity:.7}.legend-input:focus{border-bottom-color:var(--brand);outline:none}.editor-overlay{z-index:70;background:var(--page-bg);display:flex;position:fixed;inset:0}.editor{flex-direction:column;width:100%;height:100%;display:flex}.editor-head{padding:var(--space-xl) var(--space-2xl);border-bottom:1px solid var(--line);background:var(--panel);box-shadow:var(--shadow);justify-content:space-between;align-items:center;display:flex}.editor-head h2{font-size:var(--text-2xl);margin:0}.editor-title{flex:1}.editor-brand{font-size:var(--text-2xl);align-items:center;gap:var(--space-md);margin:0;display:flex}.editor-sub{font-size:var(--text-sm);color:var(--ink-soft);margin-top:var(--space-xs);display:block}.editor-db-title{box-sizing:border-box;width:100%;max-width:340px;margin:var(--space-sm) 0 var(--space-2xs);padding:var(--space-2xs) var(--space-2xs);color:var(--ink);font-size:var(--text-xl);background:0 0;border:none;border-bottom:1px solid #0000;font-weight:600;display:block}.editor-db-title::placeholder{color:var(--ink-soft);opacity:.7;font-weight:500}.editor-db-title:hover{border-bottom-color:var(--sticky-line)}.editor-db-title:focus{border-bottom-color:var(--brand);outline:none}.editor-head-right{justify-content:flex-end;align-items:center;gap:var(--space-lg);flex:1;display:flex}.ai-badge{align-items:center;gap:var(--space-md);margin:0 var(--space-2xs);padding:var(--space-sm) var(--space-xl);border-radius:var(--radius-pill);white-space:nowrap;-webkit-user-select:none;user-select:none;cursor:pointer;background:var(--sticky-bg);border:1px solid var(--sticky-line);color:var(--ink-soft);text-decoration:none;transition:border-color .15s;display:inline-flex}.ai-badge:hover{border-color:var(--brand)}.ai-badge-icon{color:var(--brand);flex-shrink:0;font-size:16px}.ai-badge-text{font-weight:600;font-size:var(--text-sm);letter-spacing:.01em}.nav-row{border-radius:var(--radius-sm);align-items:center;width:100%;display:flex}.nav-row:hover{background:var(--sticky-bg)}.nav-row.active{background:var(--brand)}.nav-row .nav-main{text-align:left;padding:var(--space-md) var(--space-lg);cursor:pointer;color:var(--ink);font-size:var(--text-lg);text-transform:capitalize;background:0 0;border:none;flex:1}.nav-row.active .nav-main{color:#2a2200;font-weight:600}.nav-x{cursor:pointer;color:var(--ink-soft);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-sm);background:0 0;border:none;align-items:center;display:inline-flex}.nav-x svg{font-size:16px}.nav-x:hover{color:#c0392b;background:#7f7f7f26}.nav-row.active .nav-x{color:#2a2200}.btn.ghost.danger-outline{color:#c0392b;background:0 0;border-color:#d98880}.btn.ghost.danger-outline:hover{background:#fdeeec;border-color:#c0392b}.editor-body{flex:1;min-height:0;display:flex}.editor-col{padding:var(--space-lg);overflow-y:auto}.editor-col.themes{border-right:1px solid var(--line);flex-shrink:0;width:220px}.editor-col.buckets{border-right:1px solid var(--line);flex-shrink:0;width:200px}.editor-col.dishes{flex-direction:column;flex:1;min-width:0;display:flex}.editor-nav{text-align:left;width:100%;padding:var(--space-md) var(--space-lg);border-radius:var(--radius-sm);cursor:pointer;color:var(--ink);font-size:var(--text-lg);text-transform:capitalize;background:0 0;border:none;display:block}.editor-nav:hover{background:var(--sticky-bg)}.editor-nav.active{background:var(--brand);color:#2a2200;font-weight:600}.editor-nav.add-type{color:var(--ink-soft);margin-top:var(--space-sm);text-transform:none;align-items:center;gap:var(--space-sm);display:flex}.editor-nav.add-type svg{font-size:16px}.editor-dishlist{gap:var(--space-sm);padding-right:var(--space-xs);flex-direction:column;flex:1;display:flex;overflow-y:auto}.editor-empty{color:var(--ink-soft);font-size:var(--text-md);font-style:italic}.edit-row{gap:var(--space-sm);align-items:center;display:flex}.edit-name{min-width:0;padding:var(--space-sm) var(--space-md);border:1px solid var(--sticky-line);border-radius:var(--radius-sm);background:var(--panel);color:var(--ink);font-size:var(--text-md);flex:1}.edit-name:focus{border-color:var(--brand);outline:none}.edit-del{cursor:pointer;color:var(--ink-soft);padding:var(--space-xs);border-radius:var(--radius-sm);background:0 0;border:none;flex-shrink:0;display:inline-flex}.edit-del:hover{color:#c0392b;background:#7f7f7f1f}.edit-move{cursor:pointer;color:var(--ink-soft);padding:var(--space-xs);border-radius:var(--radius-sm);background:0 0;border:none;flex-shrink:0;display:inline-flex}.edit-move:hover{color:var(--brand-strong);background:#7f7f7f1f}.edit-move svg{font-size:18px}.move-panel{align-items:center;gap:var(--space-md);padding:var(--space-lg) var(--space-lg);margin-top:var(--space-lg);border:1px dashed var(--sticky-line);border-radius:var(--radius-sm);background:var(--sticky-bg);flex-wrap:wrap;display:flex}.move-title{font-size:var(--text-md);color:var(--ink);font-weight:600}.move-panel select{padding:var(--space-sm) var(--space-md);border:1px solid var(--sticky-line);border-radius:var(--radius-sm);background:var(--panel);color:var(--ink);font-size:var(--text-sm)}.dupes-overlay{z-index:75;padding:var(--space-3xl);background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dupes-box{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-lg);width:560px;max-width:100%;max-height:82vh;color:var(--ink);flex-direction:column;display:flex}.dupes-head{padding:var(--space-xl) var(--space-2xl);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;display:flex}.dupes-head h3{font-size:var(--text-xl);margin:0}.dupes-body{padding:var(--space-lg) var(--space-2xl);overflow-y:auto}.dupe-group{border:1px solid var(--line);border-radius:var(--radius-sm);padding:var(--space-md) var(--space-lg);margin-bottom:var(--space-lg)}.dupe-loc{font-size:var(--text-xs);letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:var(--space-sm);font-weight:700}.dupe-name{text-transform:capitalize;font-size:var(--text-lg);flex:1}.editor-add{gap:var(--space-md);padding-top:var(--space-lg);margin-top:var(--space-lg);border-top:1px solid var(--line);align-items:center;display:flex}footer{margin:var(--space-xl) var(--space-xs) var(--space-md);color:var(--ink-soft);font-family:var(--font-mono);font-size:var(--text-sm);text-align:center;flex-shrink:0}.footer-rule{border:none;border-top:1px solid var(--sticky-line);margin:0 0 var(--space-md)}.footer-text{text-align:center}.footer-links{text-align:center;margin-top:var(--space-xs);font-size:var(--text-sm)}.footer-links a{color:var(--ink-soft);text-decoration:none}.footer-links a:hover{color:var(--ink);text-decoration:underline}.footer-egg{text-align:center;margin-top:var(--space-sm)}.footer-egg a{color:var(--ink-soft);opacity:.35;font-size:var(--text-xs);text-decoration:none;transition:opacity .2s}.footer-egg a:hover{opacity:.85}.egg-page{max-width:560px;padding:52px var(--space-2xl) 44px;text-align:center;margin:0 auto}.egg-plate{width:170px;height:170px;margin:0 auto var(--space-4xl);background:var(--panel);border:1px solid var(--sticky-line);box-shadow:0 14px 34px -16px #00000073, inset 0 0 0 6px var(--panel), inset 0 0 0 7px var(--sticky-line);border-radius:50%}.egg-page h1{margin:0 0 var(--space-xl)}.egg-recipe{color:var(--ink);font-size:var(--text-xl);line-height:1.9}.egg-note{color:var(--ink-soft);margin-top:var(--space-2xl)}.egg-back{color:#3d86d6;font-weight:600;text-decoration:none}.egg-back:hover{text-decoration:underline}[data-theme=dark] .egg-back{color:#6db3ff}.legal{flex-direction:column;min-height:100vh;display:flex}.legal-top{padding:var(--space-xl) var(--space-2xl) var(--space-xs);justify-content:space-between;align-items:center;display:flex}.page-top-actions{align-items:center;gap:var(--space-lg);display:flex}.legal-body{width:100%;max-width:720px;padding:var(--space-md) var(--space-2xl) var(--space-4xl);flex:1;margin:0 auto}.legal-body h1{font-size:var(--text-3xl);margin:0 0 var(--space-xl)}.legal-body h2{font-size:var(--text-2xl);margin:var(--space-3xl) 0 var(--space-sm)}.legal-body h3{font-size:var(--text-xl);margin:var(--space-xl) 0 var(--space-xs)}.legal-body p{color:var(--ink);line-height:1.6}.legal-body ul{color:var(--ink);margin:0 0 var(--space-lg);padding-left:var(--space-3xl);line-height:1.6}.legal-body a{color:#3d86d6;text-decoration:none}.legal-body a:hover{text-decoration:underline}[data-theme=dark] .legal-body a{color:#6db3ff}.legal-body hr{border:none;border-top:1px solid var(--sticky-line);margin:var(--space-3xl) 0}.legal-body strong,.legal-body em{color:var(--ink)}.legal-body code{background:var(--sticky-bg);padding:var(--space-2xs) var(--space-sm);border-radius:var(--radius-xs);font-size:.9em}.legal-todo{color:var(--ink-soft);font-style:italic}.help-page{flex-direction:column;min-height:100vh;display:flex}.help-top{padding:var(--space-xl) var(--space-3xl) var(--space-xs);justify-content:space-between;align-items:center;display:flex}.help-layout{gap:var(--space-4xl);width:100%;max-width:1000px;padding:var(--space-md) var(--space-3xl) var(--space-5xl);flex:1;align-items:flex-start;margin:0 auto;display:flex}.help-toc{flex:0 0 210px;position:sticky;top:16px}.help-toc-title{text-transform:uppercase;letter-spacing:.05em;font-weight:700;font-size:var(--text-xs);color:var(--ink-soft);margin:0 0 var(--space-md)}.help-toc ul{gap:var(--space-md);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.help-toc a{color:var(--ink-soft);font-size:var(--text-md);line-height:1.3;text-decoration:none;display:block}.help-toc a:hover{color:var(--ink)}.help-content{flex:1;min-width:0;max-width:720px}.help-content h2{font-size:var(--text-2xl);margin:var(--space-3xl) 0 var(--space-md)}.help-content h3{font-size:var(--text-xl);margin:var(--space-xl) 0 var(--space-xs)}.help-content p{color:var(--ink);margin:0 0 var(--space-lg);line-height:1.6}.help-content ul{color:var(--ink);margin:0 0 var(--space-lg);padding-left:var(--space-3xl);line-height:1.6}.help-content a{color:#3d86d6;text-decoration:none}.help-content a:hover{text-decoration:underline}[data-theme=dark] .help-content a{color:#6db3ff}.help-content hr{border:none;border-top:1px solid var(--sticky-line);margin:var(--space-3xl) 0}.help-content strong{color:var(--ink)}.help-content code{background:var(--sticky-bg);padding:var(--space-2xs) var(--space-sm);border-radius:var(--radius-xs);font-size:.9em}.modal-backdrop{z-index:60;padding:var(--space-2xl);background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-lg);width:540px;max-width:100%;max-height:88vh;padding:var(--space-2xl) var(--space-3xl);color:var(--ink);overflow:auto}.modal h2{margin:0 0 var(--space-xs);font-size:var(--text-2xl)}.modal .explain{color:var(--ink-soft);font-size:var(--text-md);margin:0 0 var(--space-lg);line-height:1.4}.modal .callout{background:var(--sticky-bg);border:1px solid var(--sticky-line);border-radius:var(--radius-sm);padding:var(--space-md) var(--space-lg);font-size:var(--text-sm);color:var(--ink-soft);margin-bottom:var(--space-xl);gap:var(--space-md);align-items:flex-start;display:flex}.modal .callout svg{margin-top:var(--space-2xs);flex-shrink:0;font-size:17px}.modal .callout a{color:#3d86d6;font-weight:600;text-decoration:none}.modal .callout a:hover{text-decoration:underline}[data-theme=dark] .modal .callout a{color:#6db3ff}.qs-welcome p{font-size:var(--text-lg);color:var(--ink);margin:0 0 var(--space-lg);line-height:1.5}.qs-welcome a,.qs-rundown a{color:#3d86d6;font-weight:600;text-decoration:none}.qs-welcome a:hover,.qs-rundown a:hover{text-decoration:underline}[data-theme=dark] .qs-welcome a,[data-theme=dark] .qs-rundown a{color:#6db3ff}.qs-foot{color:var(--ink-soft);font-style:italic;font-size:var(--text-sm)!important;margin-top:var(--space-xs)!important}.qs-rundown h2{margin:0 0 var(--space-sm);font-size:var(--text-2xl)}.qs-rundown h3{margin:var(--space-xl) 0 var(--space-sm);font-size:var(--text-lg);color:var(--ink)}.qs-rundown p{font-size:var(--text-md);color:var(--ink-soft);margin:0 0 var(--space-md);line-height:1.5}.qs-rundown p b{color:var(--ink)}.qs-back{align-items:center;gap:var(--space-xs);cursor:pointer;color:var(--ink-soft);font-size:var(--text-sm);margin:0 0 var(--space-md);background:0 0;border:none;padding:0;display:inline-flex}.qs-back:hover{color:var(--ink)}.qs-back svg{font-size:16px}.fb-text{box-sizing:border-box;resize:vertical;width:100%;min-height:120px;padding:var(--space-lg) var(--space-lg);border:1px solid var(--sticky-line);border-radius:var(--radius-sm);background:var(--panel);color:var(--ink);font:inherit;font-size:var(--text-lg);margin-bottom:var(--space-lg);line-height:1.45}.fb-from{box-sizing:border-box;width:100%;padding:var(--space-md) var(--space-lg);border:1px solid var(--sticky-line);border-radius:var(--radius-sm);background:var(--panel);color:var(--ink);font:inherit;font-size:var(--text-md);margin-bottom:var(--space-xl)}.fb-error{color:#c0392b;font-size:var(--text-sm);margin:0 0 var(--space-lg)}[data-theme=dark] .fb-error{color:#e07a6f}.meal-toggles{align-items:center;gap:var(--space-xl);margin:0 0 var(--space-xl);padding:var(--space-lg) var(--space-lg);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--sticky-bg);flex-wrap:wrap;display:flex}.meal-toggles .mt-label{font-weight:700;font-size:var(--text-xs);letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft)}.meal-toggles .mt-item{align-items:center;gap:var(--space-sm);font-size:var(--text-lg);cursor:pointer;display:flex}.meal-toggles .mt-item.locked{opacity:.55;cursor:default}.struct-heading{font-size:var(--text-xs);letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);margin:var(--space-sm) 0 var(--space-md);font-weight:700}.struct-list{gap:var(--space-sm);margin-bottom:var(--space-xl);flex-direction:column;display:flex}.struct-row{align-items:center;gap:var(--space-lg);padding:var(--space-md) var(--space-lg);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);display:flex}.struct-row .move{flex-direction:column;display:flex}.struct-row .mv{cursor:pointer;color:var(--ink-soft);border-radius:var(--radius-xs);background:0 0;border:none;padding:0;line-height:.65;display:inline-flex}.struct-row .mv svg{font-size:17px}.struct-row .mv:hover:not(:disabled){color:var(--ink);background:#7f7f7f24}.struct-row .mv:disabled{opacity:.3;cursor:default}.struct-row .s-label{text-transform:capitalize;min-width:66px;font-weight:600}.struct-row .s-cat{color:var(--ink-soft);font-size:var(--text-sm);flex:1}.struct-row .s-scope{padding:var(--space-xs) var(--space-sm);border:1px solid var(--sticky-line);border-radius:var(--radius-sm);background:var(--panel);color:var(--ink);font-size:var(--text-sm)}.struct-row .s-del{cursor:pointer;color:var(--ink-soft);padding:var(--space-2xs);border-radius:var(--radius-sm);background:0 0;border:none;display:inline-flex}.struct-row .s-del:hover{color:#c0392b;background:#7f7f7f1f}.struct-add{gap:var(--space-md);margin-bottom:var(--space-2xl);align-items:center;display:flex}.struct-add select{padding:var(--space-md);border:1px solid var(--sticky-line);border-radius:var(--radius-sm);background:var(--panel);color:var(--ink);font-size:var(--text-md);flex:1}.struct-confirm{align-items:center;gap:var(--space-lg);padding:var(--space-md) var(--space-lg);margin:-var(--space-xs) 0 var(--space-xs);border:1px dashed var(--sticky-line);border-radius:var(--radius-sm);background:var(--sticky-bg);font-size:var(--text-sm);color:var(--ink);flex-wrap:wrap;display:flex}.struct-confirm .dontask{align-items:center;gap:var(--space-sm);color:var(--ink-soft);cursor:pointer;display:flex}.struct-confirm .confirm-actions{gap:var(--space-sm);margin-left:auto;display:flex}.modal-actions{justify-content:flex-end;gap:var(--space-md);display:flex}[data-theme=dark]{--brand:#f5c518;--brand-strong:#ffd84d;--ink:#e8ebf0;--ink-soft:#9aa3b2;--page-bg:#151922;--panel:#1e232e;--line:#2b3240;--sticky-bg:#262d3a;--sticky-line:#3a4354;--band-breakfast:#2a2620;--band-lunch:#1d2530;--band-dinner:#241f2e;--hl-yellow:#8a7d1e;--hl-orange:#8a5a1e;--hl-green:#456b2a;--hl-red:#7a3030;--hl-blue:#28566b;--toast-bg:#2b3342;--toast-ink:#e8ebf0;--toast-x:#9aa3b2;--shadow:0 1px 3px #0006;--shadow-lg:0 8px 30px #00000080}[data-theme=dark] .note{color:#e0c98a;background:#2a2620;border-color:#4a4020}[data-theme=dark] .note.preview{color:#a9c2df;background:#1d2530;border-color:#33465e}[data-theme=dark] .brand-wordmark{background:linear-gradient(92deg,#f7d046 0%,#ffe07a 42%,#ffb347 100%);-webkit-background-clip:text;background-clip:text}.home{background:#0b0e17;flex-direction:column;display:flex;position:fixed;inset:0;overflow:hidden}.home-galaxy{z-index:0;pointer-events:none;width:58%;position:absolute;top:0;bottom:0;right:0;-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 24%);mask-image:linear-gradient(90deg,#0000 0,#000 24%)}.home-hero,.home footer{z-index:1;position:relative}.home-hero{width:100%;max-width:560px;padding:var(--space-3xl) var(--space-md) var(--space-3xl) 44px;text-align:left;flex-direction:column;flex:1;justify-content:center;align-items:flex-start;margin:0;display:flex}.home footer{width:100%;max-width:560px;margin:0 0 var(--space-md);box-sizing:border-box;text-align:left;padding-left:44px}.home footer .footer-text,.home footer .footer-links,.home footer .footer-egg{text-align:left}.home-galaxy-caption{z-index:1;box-sizing:border-box;text-align:center;width:58%;font-style:italic;font-size:var(--text-md);color:#eef1f6b8;text-shadow:0 1px 8px #000000b3;pointer-events:none;margin:0;padding:0 44px;position:absolute;bottom:22px;right:0}.home-logo{color:var(--brand);margin-bottom:var(--space-md);display:inline-flex}.home-logo svg{font-size:50px}.home-wordmark{font-size:var(--text-display);margin:0;line-height:1.1}.home-tagline{color:var(--ink-soft);font-size:var(--text-xl);margin:var(--space-sm) 0 var(--space-3xl);font-weight:400;font-family:var(--font-mono)}.home-blurb{color:var(--ink);font-size:var(--text-xl);margin:0 0 var(--space-4xl);max-width:52ch;line-height:1.55}.home-cta{gap:var(--space-lg);margin-bottom:var(--space-4xl);flex-wrap:wrap;justify-content:flex-start;display:flex}.home-points{margin:0 0 var(--space-3xl);text-align:left;gap:var(--space-lg);flex-direction:column;max-width:46ch;padding:0;list-style:none;display:flex}.home-points li{padding-left:var(--space-3xl);color:var(--ink);font-size:var(--text-lg);line-height:1.4;position:relative}.home-points li:before{content:"✓";color:var(--brand);font-weight:700;position:absolute;top:-1px;left:0}.home-foot-note{color:var(--ink-soft);font-size:var(--text-sm);margin:0}@media (width<=900px){.home{min-height:100vh;position:relative;overflow:visible}.home-galaxy,.home-galaxy-caption{display:none}.home-hero{max-width:620px;padding:56px var(--space-md) var(--space-3xl);text-align:center;align-items:center;margin:0 auto}.home-cta{justify-content:center}.home footer{text-align:center;max-width:none;padding-left:0}.home footer .footer-text,.home footer .footer-links,.home footer .footer-egg{text-align:center}}
