:root{--color-bg:#f5f4f0;--color-surface:#fff;--color-lane-bg:#eeece8;--color-border:#dddbd5;--color-text:#1a1a1a;--color-text-muted:#706c65;--color-accent:#d97706;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--header-height:52px;--tabbar-height:60px;color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;font-family:system-ui,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.5}@media (prefers-color-scheme:dark){:root{--color-bg:#1a1918;--color-surface:#242220;--color-lane-bg:#1e1d1b;--color-border:#333230;--color-text:#e8e6e1;--color-text-muted:#908c84;--color-accent:#f59e0b}}*,:before,:after{box-sizing:border-box}body,h1,h2,h3{margin:0}#root{min-height:100svh}.btn{border-radius:var(--radius-md);cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;padding:.4rem .9rem;font-family:inherit;font-size:.875rem;font-weight:500;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.btn--primary{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.btn--primary:hover{filter:brightness(1.1)}.btn--ghost{color:var(--color-text-muted);border-color:var(--color-border);background:0 0}.btn--ghost:hover{color:var(--color-text);border-color:var(--color-text-muted)}.btn--danger{color:#dc2626;background:0 0;border-color:#dc2626;align-self:flex-start;font-size:.8rem}.btn--danger:hover{background:#dc262615}.label-chip{background:var(--chip-bg);color:var(--chip-text);white-space:nowrap;-webkit-user-select:none;user-select:none;border-radius:999px;align-items:center;gap:.2rem;padding:.15rem .5rem;font-size:.72rem;font-weight:600;line-height:1.4;display:inline-flex}.label-chip--clickable{cursor:pointer;transition:opacity .15s,box-shadow .15s}.label-chip--clickable:hover{box-shadow:0 0 0 2px var(--chip-text)}.label-chip--included{background:var(--chip-text);color:var(--chip-bg);font-weight:700}.label-chip--active{box-shadow:0 0 0 2px var(--chip-text);opacity:.6;text-decoration:line-through}.label-chip--faded{opacity:.45}.label-chip-remove{cursor:pointer;color:inherit;opacity:.7;background:0 0;border:none;align-items:center;margin-left:.1rem;padding:0;font-size:.85rem;line-height:1;display:flex}.label-chip-remove:hover{opacity:1}@keyframes card-flash{0%,to{box-shadow:none;border-color:var(--color-border)}30%,70%{box-shadow:0 0 0 3px var(--color-accent);border-color:var(--color-accent)}}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);align-items:flex-start;gap:.25rem;transition:box-shadow .15s,border-color .15s;display:flex;position:relative}.card--highlighted{animation:1.8s card-flash}.card:hover{box-shadow:0 2px 8px #00000026}.card--favorite{border-left:3px solid var(--color-accent)}.card--leftover{border-left:3px solid #16a34a}.card-template-badge{color:#7c3aed;background:#7c3aed14;border:1px solid #7c3aed40;border-radius:999px;margin-bottom:.2rem;padding:.05rem .45rem;font-size:.7rem;font-weight:600;display:inline-block}.card-leftover-badge{color:#16a34a;background:#16a34a1a;border:1px solid #16a34a4d;border-radius:999px;margin-bottom:.2rem;padding:.05rem .45rem;font-size:.7rem;font-weight:600;display:inline-block}.card--dragging{opacity:.35}.card--overlay{opacity:1;cursor:grabbing;box-shadow:0 8px 24px #00000059}.card-drag-handle{color:var(--color-text-muted);cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;flex-shrink:0;padding:.6rem .25rem .6rem .5rem;font-size:1.1rem;line-height:1}.card-drag-handle:active{cursor:grabbing}.card-body{cursor:pointer;flex:1;min-width:0;padding:.6rem .6rem .6rem 0}.card-header{justify-content:space-between;align-items:flex-start;gap:.5rem;display:flex}.card-title{color:var(--color-text);font-size:.9rem;font-weight:600;line-height:1.3}.card-fav{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:0;font-size:1rem;line-height:1}.card-fav--active{color:var(--color-accent)}.card-snippet{color:var(--color-text-muted);margin:.25rem 0 0;font-size:.8rem;line-height:1.4}.card-meta{color:var(--color-text-muted);margin:.25rem 0 0;font-size:.75rem}.card-labels{flex-wrap:wrap;gap:.25rem;margin-top:.35rem;display:flex}.card-details{border-top:1px solid var(--color-border);flex-direction:column;gap:.75rem;margin-top:.75rem;padding-top:.75rem;display:flex}.card-section{flex-direction:column;gap:.25rem;display:flex}.card-section-title{text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);font-size:.75rem}.card-ingredients{color:var(--color-text);flex-direction:column;gap:.1rem;margin:0;padding-left:1.2rem;font-size:.85rem;display:flex}.card-recipe-text{color:var(--color-text);margin:0;font-size:.85rem;line-height:1.5}.card-recipe-text p{margin:0 0 .3rem}.card-recipe-text p:last-child{margin-bottom:0}.card-recipe-text h3{color:var(--color-text);margin:.4rem 0 .15rem;font-size:.85rem;font-weight:700}.card-recipe-text h4{color:var(--color-text-muted);margin:.3rem 0 .1rem;font-size:.82rem;font-weight:600}.card-recipe-text ul{margin:.2rem 0;padding-left:1.2rem}.card-recipe-text li{margin-bottom:.1rem}.card-recipe-text hr{border:none;border-top:1px solid var(--color-border);margin:.4rem 0}.card-recipe-text br{content:"";margin-top:.25rem;display:block}.card-link{color:var(--color-accent);font-size:.85rem;text-decoration:none}.card-link:hover{text-decoration:underline}.card-history-entry{color:var(--color-text-muted);flex-wrap:wrap;gap:.5rem;font-size:.8rem;display:flex}.card-history-portions{color:var(--color-text);font-weight:500}.card-history-notes{font-style:italic}.card-day-select{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);color:var(--color-text);cursor:pointer;width:100%;padding:.3rem .5rem;font-family:inherit;font-size:.85rem}.card-day-select:focus{border-color:var(--color-accent);outline:none}.card-action-row{flex-wrap:wrap;gap:.5rem;display:flex}.lane{background:var(--color-lane-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);flex-direction:column;flex-shrink:0;width:280px;min-height:400px;transition:border-color .15s,background .15s;display:flex}.lane--over{border-color:var(--color-accent);background:color-mix(in srgb, var(--color-accent) 5%, var(--color-lane-bg))}.lane-header{border-bottom:1px solid var(--color-border);padding:.875rem 1rem .5rem}.lane-header-top{justify-content:space-between;align-items:center;display:flex}.lane-title{color:var(--color-text);text-transform:uppercase;letter-spacing:.06em;margin:0;font-size:.95rem;font-weight:700}.lane-count{color:var(--color-text-muted);background:var(--color-bg);border:1px solid var(--color-border);border-radius:999px;padding:.1rem .5rem;font-size:.75rem;font-weight:600}.lane-header-bottom{justify-content:space-between;align-items:center;gap:.5rem;margin-top:.25rem;display:flex}.lane-desc{color:var(--color-text-muted);margin:0;font-size:.75rem}.lane-action-btn{color:var(--color-accent);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:0;font-family:inherit;font-size:.75rem}.lane-action-btn:hover{text-decoration:underline}.lane-header-add{border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-muted);cursor:pointer;white-space:nowrap;background:0 0;flex-shrink:0;margin-left:auto;padding:.15rem .5rem;font-family:inherit;font-size:.75rem;transition:color .15s,border-color .15s}.lane-header-add:hover{color:var(--color-accent);border-color:var(--color-accent)}.lane-filter-bar{border-bottom:1px solid var(--color-border);flex-direction:column;gap:.3rem;padding:.4rem .75rem;display:flex}.lane-filter-select{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);width:100%;color:var(--color-text);cursor:pointer;padding:.2rem .4rem;font-family:inherit;font-size:.78rem}.lane-filter-select:focus{border-color:var(--color-accent);outline:none}.lane-filter-pills{flex-wrap:wrap;gap:.25rem;display:flex}.lane-filter-pill{border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text-muted);cursor:pointer;white-space:nowrap;text-align:center;border-radius:999px;flex:1;padding:.15rem .3rem;font-family:inherit;font-size:.72rem;transition:background .1s,color .1s,border-color .1s}.lane-filter-pill:hover{border-color:var(--color-text-muted);color:var(--color-text)}.lane-filter-labels{border-top:1px solid var(--color-border);padding-top:.1rem}.lane-filter-pill--active{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.lane-body{flex-direction:column;flex:1;gap:.5rem;min-height:80px;padding:.75rem;display:flex}.lane-empty{color:var(--color-text-muted);text-align:center;border:1px dashed var(--color-border);border-radius:var(--radius-md);margin:0;padding:1.5rem 0;font-size:.8rem}.planned-lane-body{flex-direction:column;flex:1;display:flex;overflow-y:auto}.pslot{border-bottom:1px solid var(--color-border);transition:background .15s}.pslot:last-child{border-bottom:none}.pslot--over{background:color-mix(in srgb, var(--color-accent) 6%, var(--color-lane-bg))}.pslot--past{opacity:.75}.pslot-header{background:var(--color-lane-bg);z-index:1;justify-content:space-between;align-items:center;gap:.5rem;padding:.35rem .75rem .2rem;display:flex;position:sticky;top:0}.pslot--today .pslot-header{background:color-mix(in srgb, var(--color-accent) 8%, var(--color-lane-bg))}.pslot-label{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);font-size:.7rem;font-weight:700}.pslot--today .pslot-label{color:var(--color-accent)}.pslot-count{background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text-muted);border-radius:999px;padding:0 .35rem;font-size:.65rem;font-weight:600}.pslot-body{flex-direction:column;gap:.4rem;min-height:46px;padding:.35rem .75rem .5rem;display:flex}.lane-header-actions{align-items:center;gap:.5rem;display:flex}.pslot-empty{color:var(--color-text-muted);text-align:center;border:1px dashed var(--color-border);border-radius:var(--radius-md);margin:0;padding:.4rem;font-size:.72rem}.modal-backdrop{z-index:100;background:#0009;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:1.5rem;padding-bottom:max(1.5rem, env(safe-area-inset-bottom,0px));flex-direction:column;gap:1rem;width:100%;max-width:400px;max-height:calc(100svh - 2rem);display:flex;overflow-y:auto}.modal-title{color:var(--color-text);margin:0;font-size:1.1rem;font-weight:600}.modal-subtitle{color:var(--color-text-muted);margin:0;font-size:.875rem}.portion-buttons{gap:.5rem;display:flex}.portion-btn{border:2px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);color:var(--color-text);cursor:pointer;flex-direction:column;flex:1;align-items:center;gap:.25rem;padding:.75rem .5rem;font-size:.875rem;transition:border-color .15s,background .15s;display:flex}.portion-btn:hover{border-color:var(--color-accent)}.portion-btn--active{border-color:var(--color-accent);background:color-mix(in srgb, var(--color-accent) 15%, transparent)}.portion-emoji{font-size:1.25rem}.modal-notes{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);width:100%;color:var(--color-text);resize:vertical;box-sizing:border-box;padding:.5rem .75rem;font-family:inherit;font-size:.875rem}.modal-notes:focus{border-color:var(--color-accent);outline:none}.modal-actions{justify-content:flex-end;gap:.5rem;display:flex}.label-input{border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:text;background:var(--color-surface);min-height:2.25rem;padding:.35rem .5rem;position:relative}.label-input:focus-within{border-color:var(--color-accent)}.label-input-inner{flex-wrap:wrap;align-items:center;gap:.3rem;display:flex}.label-input-field{color:var(--color-text);background:0 0;border:none;outline:none;flex:1;min-width:7rem;padding:.1rem 0;font-size:.875rem}.label-input-field::placeholder{color:var(--color-text-muted)}.label-input-suggestions{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);z-index:100;flex-wrap:wrap;gap:.3rem;margin:0;padding:.25rem;list-style:none;display:flex;position:absolute;top:calc(100% + 4px);left:0;right:0;box-shadow:0 4px 12px #0000001a}.label-input-suggestions li{cursor:pointer}.label-input-limit{color:var(--color-text-muted);margin:.25rem 0 0;font-size:.72rem}.add-modal{max-width:480px}.field{flex-direction:column;gap:.25rem;display:flex}.field-label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:.8rem;font-weight:500}.field-input,.field-textarea{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);color:var(--color-text);box-sizing:border-box;width:100%;padding:.5rem .75rem;font-family:inherit;font-size:.9rem}.field-input:focus,.field-textarea:focus{border-color:var(--color-accent);outline:none}.field-textarea{resize:vertical}.field-label-row{align-items:center;gap:.4rem;display:flex}.field-help-btn{border:1px solid var(--color-border);width:17px;height:17px;color:var(--color-text-muted);cursor:pointer;background:0 0;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:.68rem;line-height:1;transition:color .15s,border-color .15s;display:flex}.field-help-btn:hover{color:var(--color-accent);border-color:var(--color-accent)}.field-help{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-muted);padding:.5rem .75rem;font-size:.78rem;line-height:2}.field-help code{background:color-mix(in srgb, var(--color-accent) 10%, var(--color-bg));color:var(--color-text);border-radius:3px;padding:.05rem .3rem;font-family:monospace;font-size:.78rem}.field-checkbox{cursor:pointer;color:var(--color-text);align-items:center;gap:.5rem;font-size:.9rem;display:flex}.shopping-modal{flex-direction:column;max-width:440px;max-height:80vh;display:flex}.shopping-header{justify-content:space-between;align-items:center;display:flex}.shopping-count{color:var(--color-text-muted);background:var(--color-bg);border:1px solid var(--color-border);border-radius:999px;padding:.1rem .6rem;font-size:.8rem}.shopping-empty{color:var(--color-text-muted);text-align:center;margin:0;padding:1rem 0;font-size:.9rem}.shopping-body{flex-direction:column;flex:1;gap:1rem;display:flex;overflow-y:auto}.shopping-group{flex-direction:column;gap:.25rem;display:flex}.shopping-group-title{text-transform:uppercase;letter-spacing:.05em;color:var(--color-accent);margin:0;font-size:.75rem;font-weight:700}.shopping-list{flex-direction:column;gap:.15rem;margin:0;padding:0;list-style:none;display:flex}.shopping-item{color:var(--color-text);border-radius:var(--radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.5rem;padding:.3rem .4rem;font-size:.9rem;transition:background .1s,color .1s;display:flex}.shopping-item:hover{background:var(--color-lane-bg)}.shopping-item--checked{color:var(--color-text-muted);text-decoration:line-through}.shopping-item-check{color:var(--color-text-muted);flex-shrink:0;font-size:1rem}.shopping-item--checked .shopping-item-check{color:var(--color-accent)}.shopping-ai-badge{color:var(--color-accent);padding:.15rem 0;font-size:.75rem;font-weight:600}.shopping-ai-result{white-space:pre-wrap;flex:1;margin:0;font-family:inherit;font-size:.875rem;line-height:1.6;overflow-y:auto}.shopping-ai-error{color:#c0392b;margin:0;font-size:.8rem}.btn--ai{background:color-mix(in srgb, var(--color-accent) 12%, transparent);color:var(--color-accent);border:1px solid color-mix(in srgb, var(--color-accent) 30%, transparent);border-radius:var(--radius-md);cursor:pointer;padding:.4rem .8rem;font-size:.875rem;font-weight:500;transition:background .15s}.btn--ai:hover:not(:disabled){background:color-mix(in srgb, var(--color-accent) 20%, transparent)}.btn--ai:disabled{opacity:.5;cursor:not-allowed}.slot-conflict-modal{max-width:400px}.conflict-existing{background:var(--color-lane-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:.6rem .75rem}.conflict-existing-label{text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);margin:0 0 .25rem;font-size:.75rem;font-weight:600}.conflict-existing-list{color:var(--color-text);flex-direction:column;gap:.1rem;margin:0;padding-left:1.1rem;font-size:.875rem;display:flex}.conflict-choices{flex-direction:column;gap:.5rem;display:flex}.conflict-btn{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);cursor:pointer;text-align:left;align-items:center;gap:.75rem;width:100%;padding:.65rem .75rem;font-family:inherit;transition:border-color .15s,background .15s;display:flex}.conflict-btn:hover{border-color:var(--color-accent);background:color-mix(in srgb, var(--color-accent) 5%, var(--color-bg))}.conflict-btn strong{color:var(--color-text);margin-bottom:.1rem;font-size:.875rem;display:block}.conflict-btn p{color:var(--color-text-muted);margin:0;font-size:.775rem;line-height:1.3}.conflict-btn-icon{text-align:center;width:1.75rem;color:var(--color-text-muted);flex-shrink:0;font-size:1.2rem}.conflict-btn--alongside .conflict-btn-icon{color:#2563eb}.conflict-btn--insert .conflict-btn-icon{color:#d97706}.conflict-btn--replace .conflict-btn-icon{color:#dc2626}.conflict-btn--alongside:hover{border-color:#2563eb}.conflict-btn--insert:hover{border-color:#d97706}.conflict-btn--replace:hover{border-color:#dc2626}.board{min-height:calc(100vh - var(--header-height));align-items:flex-start;gap:1rem;padding:1.5rem;display:flex;overflow-x:auto}.board--compact .card-snippet,.board--compact .card-meta{display:none}.board-loading{height:calc(100vh - var(--header-height));color:var(--color-text-muted);justify-content:center;align-items:center;font-size:1rem;display:flex}.mcard{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);flex-shrink:0;overflow:hidden}.mcard--fav{border-left:4px solid var(--color-accent)}.mcard--leftover{border-left:4px solid #16a34a}.mcard-template-badge{color:#7c3aed;background:#7c3aed14;border:1px solid #7c3aed40;border-radius:999px;margin:.5rem 1rem 0;padding:.1rem .5rem;font-size:.72rem;font-weight:600;display:inline-block}.mcard-leftover-badge{color:#16a34a;background:#16a34a1a;border:1px solid #16a34a4d;border-radius:999px;margin:.5rem 1rem 0;padding:.1rem .5rem;font-size:.72rem;font-weight:600;display:inline-block}.mcard-top{cursor:pointer;padding:.5rem .75rem .2rem;position:relative}.mcard-title-row{justify-content:space-between;align-items:center;gap:.5rem;padding-right:1.5rem;display:flex}.mcard-title{color:var(--color-text);font-size:1.05rem;font-weight:600;line-height:1.3}.mcard-fav{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:flex-end;align-items:center;min-width:32px;min-height:28px;padding:.2rem 0;font-size:1.1rem;display:flex}.mcard-fav--active{color:var(--color-accent)}.mcard-snippet{color:var(--color-text-muted);margin:.35rem 0 0;font-size:.875rem;line-height:1.4}.mcard-meta{color:var(--color-text-muted);margin:.25rem 0 0;font-size:.8rem}.mcard-labels{flex-wrap:wrap;gap:.25rem;margin-top:.4rem;display:flex}.mcard-chevron{color:var(--color-text-muted);font-size:.7rem;position:absolute;top:.5rem;right:.75rem}.mcard-actions{flex-wrap:wrap;gap:.4rem;padding:0 .75rem .6rem;display:flex}.mcard-btn{border-radius:var(--radius-md);cursor:pointer;border:1px solid #0000;flex:1;min-height:28px;padding:.2rem .5rem;font-family:inherit;font-size:.82rem;font-weight:500;transition:background .15s,filter .15s}.mcard-btn--primary{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.mcard-btn--primary:hover{filter:brightness(1.1)}.mcard-btn--cook{color:#fff;background:#16a34a;border-color:#16a34a}.mcard-btn--cook:hover{filter:brightness(1.1)}.mcard-btn--ghost{color:var(--color-text-muted);border-color:var(--color-border);background:0 0}.mcard-btn--ghost:hover{color:var(--color-text);border-color:var(--color-text-muted)}.mcard-details{border-top:1px solid var(--color-border);flex-direction:column;gap:.75rem;padding:.75rem;display:flex}.mcard-section{flex-direction:column;gap:.4rem;display:flex}.mcard-section-title{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin:0;font-size:.75rem;font-weight:700}.mcard-ingredients{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.mcard-ingredient{min-height:44px;color:var(--color-text);cursor:pointer;border-bottom:1px solid var(--color-border);-webkit-user-select:none;user-select:none;align-items:center;gap:.75rem;padding:0 .25rem;font-size:1rem;transition:color .1s;display:flex}.mcard-ingredient:last-child{border-bottom:none}.mcard-ingredient--checked{color:var(--color-text-muted);text-decoration:line-through}.mcard-ingredient-check{color:var(--color-text-muted);text-align:center;flex-shrink:0;min-width:28px;font-size:1.3rem}.mcard-ingredient--checked .mcard-ingredient-check{color:var(--color-accent)}.mcard-recipe-text{color:var(--color-text);margin:0;font-size:.9rem;line-height:1.6}.mcard-recipe-text p{margin:0 0 .35rem}.mcard-recipe-text p:last-child{margin-bottom:0}.mcard-recipe-text h3{color:var(--color-text);margin:.5rem 0 .2rem;font-size:.9rem;font-weight:700}.mcard-recipe-text h4{color:var(--color-text-muted);margin:.4rem 0 .15rem;font-size:.875rem;font-weight:600}.mcard-recipe-text ul{margin:.25rem 0;padding-left:1.4rem}.mcard-recipe-text li{margin-bottom:.2rem}.mcard-recipe-text hr{border:none;border-top:1px solid var(--color-border);margin:.5rem 0}.mcard-recipe-text br{content:"";margin-top:.3rem;display:block}.mcard-link{color:var(--color-accent);font-size:.9rem;text-decoration:none}.mcard-link:hover{text-decoration:underline}.mcard-history-entry{color:var(--color-text-muted);flex-wrap:wrap;gap:.5rem;padding:.25rem 0;font-size:.875rem;display:flex}.mcard-history-portions{color:var(--color-text);font-weight:500}.mcard-history-notes{font-style:italic}.mcard-day-select{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);width:100%;color:var(--color-text);min-height:38px;padding:.35rem .6rem;font-family:inherit;font-size:.875rem}.mcard-day-select:focus{border-color:var(--color-accent);outline:none}.mcard-action-row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.mobile-board{height:calc(100dvh - var(--header-height) - var(--tabbar-height));flex-direction:column;display:flex;overflow:hidden}.mobile-board--compact .mcard-snippet,.mobile-board--compact .mcard-actions{display:none}.mobile-board--compact .mcard--expanded .mcard-actions{display:flex}.mobile-loading{height:50vh;color:var(--color-text-muted);justify-content:center;align-items:center;display:flex}.mobile-lane-header{border-bottom:1px solid var(--color-border);background:var(--color-surface);flex-shrink:0;justify-content:space-between;align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex}.mobile-lane-title{align-items:center;gap:.5rem;display:flex}.mobile-lane-title h2{color:var(--color-text);margin:0;font-size:1rem;font-weight:700}.mobile-lane-count{color:var(--color-text-muted);background:var(--color-bg);border:1px solid var(--color-border);border-radius:999px;padding:.1rem .5rem;font-size:.75rem}.mobile-lane-actions{gap:.5rem;display:flex}.mobile-action-btn{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);min-height:36px;color:var(--color-text-muted);cursor:pointer;white-space:nowrap;padding:.4rem .75rem;font-family:inherit;font-size:.8rem}.mobile-action-btn:hover{color:var(--color-text);border-color:var(--color-text-muted)}.mobile-action-btn--add{color:var(--color-accent);border-color:var(--color-accent)}.mobile-pool-filter{border-bottom:1px solid var(--color-border);background:var(--color-surface);flex-wrap:wrap;flex-shrink:0;gap:.4rem;padding:.4rem .75rem;display:flex}.mobile-label-filter{flex-wrap:wrap;gap:.3rem;width:100%;padding-top:.1rem;display:flex}.mobile-filter-select{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);color:var(--color-text);flex:1;min-height:32px;padding:.25rem .4rem;font-family:inherit;font-size:.8rem}.mobile-filter-select:focus{border-color:var(--color-accent);outline:none}.mobile-cards{-webkit-overflow-scrolling:touch;flex-direction:column;flex:1;gap:.5rem;min-height:0;padding:.5rem .75rem 1rem;display:flex;overflow-y:auto}.mobile-empty{text-align:center;color:var(--color-text-muted);margin:2rem 0;font-size:.9rem}.mobile-tabbar{height:var(--tabbar-height);background:var(--color-surface);border-top:1px solid var(--color-border);z-index:20;padding-bottom:env(safe-area-inset-bottom);display:flex;position:fixed;bottom:0;left:0;right:0;overflow:hidden}.mobile-tab{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.15rem;min-width:0;padding:.4rem 2px;display:flex;position:relative;overflow:hidden}.mobile-tab-icon{font-size:1.3rem;line-height:1}.mobile-tab-label{color:var(--color-text-muted);white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-family:inherit;font-size:.6rem;transition:color .15s;overflow:hidden}.mobile-tab--active .mobile-tab-label{color:var(--color-accent);font-weight:600}.mobile-tab--active .mobile-tab-icon{transform:scale(1.15)}.mobile-tab-badge{background:var(--color-accent);color:#fff;border-radius:999px;justify-content:center;align-items:center;min-width:16px;height:16px;padding:0 3px;font-family:inherit;font-size:.6rem;font-weight:700;display:flex;position:absolute;top:.25rem;right:calc(50% - 1.1rem)}.plan-date-select{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);width:100%;color:var(--color-text);min-height:38px;padding:.35rem .6rem;font-family:inherit;font-size:.875rem}.plan-date-select:focus{border-color:var(--color-accent);outline:none}.mobile-day-group{border-bottom:1px solid var(--color-border);margin-bottom:.25rem;padding-bottom:.5rem}.mobile-day-group:last-child{border-bottom:none}.mobile-day-group--past{opacity:.75}.mobile-day-header{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);background:var(--color-bg);z-index:1;align-items:center;gap:.5rem;padding:.5rem 0 .35rem;font-size:.72rem;font-weight:700;display:flex;position:sticky;top:0}.mobile-day-group--today .mobile-day-header{color:var(--color-accent)}.mobile-day-count{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text-muted);border-radius:999px;padding:0 .35rem;font-size:.65rem}.mobile-day-empty{color:var(--color-text-muted);margin:0;padding:.25rem 0 .5rem;font-size:.8rem}.device-modal{text-align:center;max-width:380px}.device-modal-icon{margin-bottom:.25rem;font-size:2.5rem}.device-modal .field-input{text-align:center;font-size:1rem}.device-suggestions{flex-wrap:wrap;justify-content:center;gap:.4rem;display:flex}.device-suggestion{border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text-muted);cursor:pointer;border-radius:999px;padding:.25rem .6rem;font-family:inherit;font-size:.78rem;transition:border-color .15s,color .15s}.device-suggestion:hover{border-color:var(--color-accent);color:var(--color-accent)}.kitchen-modal{text-align:center;max-width:400px}.kitchen-modal-icon{margin-bottom:.25rem;font-size:2.5rem}.kitchen-modal .field-input{text-align:center;font-size:1rem}.kitchen-mode-tabs{justify-content:center;gap:.5rem;margin-bottom:1rem;display:flex}.kitchen-tab{border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text-muted);cursor:pointer;border-radius:999px;padding:.3rem 1rem;font-family:inherit;font-size:.85rem;transition:border-color .15s,color .15s,background .15s}.kitchen-tab--active{border-color:var(--color-accent);background:var(--color-accent);color:#fff}.kitchen-id-preview{color:var(--color-text-muted);margin:.4rem 0 .8rem;font-size:.8rem}.kitchen-id-preview code{background:var(--color-bg-subtle,#f5f5f5);color:var(--color-text);border-radius:3px;padding:.1rem .3rem;font-family:monospace}.kitchen-join-hint{color:var(--color-text-muted);margin:.4rem 0 .8rem;font-size:.8rem}.import-modal{width:100%;max-width:480px}.import-tabs{border:1px solid var(--color-border);border-radius:var(--radius-md);gap:0;margin-bottom:1rem;display:flex;overflow:hidden}.import-tab{cursor:pointer;color:var(--color-text-muted);background:0 0;border:none;flex:1;padding:.5rem 1rem;font-size:.875rem;transition:background .15s,color .15s}.import-tab+.import-tab{border-left:1px solid var(--color-border)}.import-tab--active{background:var(--color-accent);color:#fff;font-weight:600}.import-paste-area{box-sizing:border-box;border:1px solid var(--color-border);border-radius:var(--radius-md);resize:vertical;background:var(--color-surface);width:100%;color:var(--color-text);margin-bottom:.5rem;padding:.75rem;font-family:monospace;font-size:.8rem}.import-paste-area:focus{border-color:var(--color-accent);outline:none}.import-paste-hint{color:var(--color-text-muted);margin:0 0 1rem;font-size:.75rem}.import-drop-zone{border:2px dashed var(--color-border);border-radius:var(--radius-md);text-align:center;cursor:pointer;margin-bottom:1rem;padding:1.5rem 1rem;transition:border-color .15s,background .15s}.import-drop-zone:hover{border-color:var(--color-accent);background:color-mix(in srgb, var(--color-accent) 4%, transparent)}.import-drop-hint{color:var(--color-text-muted);font-size:.875rem}.import-file-name{color:var(--color-text);font-size:.875rem;font-weight:500}.import-preview{margin-bottom:1rem}.import-preview-count{color:var(--color-text);margin:0 0 .5rem;font-size:.9rem;font-weight:500}.import-errors{border-radius:var(--radius-md);background:#ef44440d;border:1px solid #ef444440;padding:.5rem .75rem}.import-errors-title{color:#dc2626;margin:0 0 .25rem;font-size:.8rem;font-weight:600}.import-error-row{color:#dc2626;margin:.1rem 0 0;font-size:.8rem}.import-result{flex-direction:column;gap:.75rem;margin-bottom:.5rem;display:flex}.import-result-count{color:#16a34a;margin:0;font-size:1rem;font-weight:600}.schema-modal{max-width:680px;max-height:90vh;overflow-y:auto}.schema-desc{color:var(--color-text-muted);margin:0;font-size:.875rem}.schema-table{border-collapse:collapse;width:100%;font-size:.8rem}.schema-table th{text-align:left;border-bottom:1px solid var(--color-border);color:var(--color-text-muted);padding:.25rem .5rem;font-weight:600}.schema-table td{border-bottom:1px solid color-mix(in srgb, var(--color-border) 50%, transparent);vertical-align:top;padding:.2rem .5rem}.schema-row--required td:first-child code{font-weight:700}.schema-example{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);white-space:pre;min-height:10rem;margin:0;padding:.75rem;font-size:.75rem;overflow:auto}.schema-actions{justify-content:flex-end;gap:.5rem;display:flex}.status-modal{width:100%;max-width:540px;max-height:85vh;overflow-y:auto}.status-section-title{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);margin:1.25rem 0 .6rem;font-size:.75rem;font-weight:700}.status-section-title:first-of-type{margin-top:.25rem}.status-tiles{flex-wrap:wrap;gap:.5rem;display:flex}.status-tile{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);flex-direction:column;align-items:center;min-width:72px;padding:.6rem .75rem;display:flex}.status-tile--accent{border-color:var(--color-accent);background:color-mix(in srgb, var(--color-accent) 8%, var(--color-surface))}.status-tile-value{color:var(--color-text);font-size:1.5rem;font-weight:700;line-height:1.1}.status-tile--accent .status-tile-value{color:var(--color-accent)}.status-tile-label{color:var(--color-text-muted);margin-top:.2rem;font-size:.7rem}.status-activity{flex-direction:column;gap:.4rem;display:flex}.status-bar-row{grid-template-columns:3.5rem 1fr 1.75rem;align-items:center;gap:.5rem;display:grid}.status-bar-label{color:var(--color-text-muted);text-align:right;font-size:.75rem}.status-bar-track{background:var(--color-border);border-radius:4px;height:10px;overflow:hidden}.status-bar-fill{background:var(--color-accent);border-radius:4px;min-width:2px;height:100%;transition:width .4s}.status-bar-count{color:var(--color-text-muted);text-align:right;font-size:.75rem}.status-top-list{flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.status-top-row{border-radius:var(--radius-sm);counter-increment:top-counter;justify-content:space-between;align-items:baseline;gap:.75rem;padding:.35rem .5rem;display:flex}.status-top-row:nth-child(odd){background:var(--color-surface)}.status-top-title{color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;font-size:.875rem;font-weight:500;overflow:hidden}.status-top-meta{color:var(--color-text-muted);white-space:nowrap;flex-shrink:0;font-size:.75rem}.status-devices{flex-wrap:wrap;gap:.4rem;margin-bottom:.5rem;display:flex}.status-device-chip{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text);border-radius:999px;padding:.2rem .6rem;font-size:.8rem}.login-overlay{z-index:9999;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.login-modal{background:var(--card-bg,#fff);border-radius:12px;flex-direction:column;align-items:center;gap:.5rem;width:min(360px,90vw);padding:2.5rem 2rem;display:flex;box-shadow:0 8px 32px #0000004d}.login-logo{margin-bottom:.25rem;font-size:2.5rem;line-height:1}.login-title{color:var(--text,#1a1a1a);margin:0;font-size:1.25rem;font-weight:700}.login-subtitle{color:var(--text-muted,#666);text-align:center;margin:0 0 1rem;font-size:.875rem}.login-form{flex-direction:column;gap:.75rem;width:100%;display:flex}.login-input{border:1.5px solid var(--border,#ddd);background:var(--input-bg,#fafafa);width:100%;color:var(--text,#1a1a1a);box-sizing:border-box;border-radius:6px;outline:none;padding:.625rem .875rem;font-size:1rem}.login-input:focus{border-color:var(--accent,#f59e0b)}.login-error{color:#dc2626;text-align:center;margin:0;font-size:.875rem}.login-btn{background:var(--accent,#f59e0b);color:#fff;cursor:pointer;border:none;border-radius:6px;width:100%;padding:.625rem;font-size:1rem;font-weight:600;transition:opacity .15s}.login-btn:disabled{opacity:.5;cursor:not-allowed}.login-btn:not(:disabled):hover{opacity:.9}.sync-status{flex-shrink:0;align-items:center;gap:.5rem;margin-left:auto;display:flex}.sync-pill{white-space:nowrap;border:1px solid #0000;border-radius:999px;padding:.2rem .55rem;font-size:.72rem;font-weight:600}.sync-pill--syncing{color:#2563eb;background:#2563eb1a;border-color:#2563eb4d;animation:1s infinite sync-pulse}@keyframes sync-pulse{0%,to{opacity:1}50%{opacity:.6}}.sync-pill--synced{color:#16a34a;background:#16a34a1a;border-color:#16a34a4d}.sync-pill--offline{color:var(--color-text-muted);background:var(--color-lane-bg);border-color:var(--color-border)}.sync-pill--error{color:#dc2626;background:#dc26261a;border-color:#dc26264d}.sync-pill--idle{color:var(--color-text-muted);border-color:var(--color-border);background:0 0}.sync-device-btn{border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-muted);cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;max-width:120px;padding:.2rem .55rem;font-family:inherit;font-size:.78rem;transition:color .15s,border-color .15s;overflow:hidden}.sync-device-btn:hover{color:var(--color-text);border-color:var(--color-text-muted)}.sync-force-btn{border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-muted);cursor:pointer;background:0 0;padding:.15rem .4rem;font-family:inherit;font-size:1rem;line-height:1;transition:color .15s,border-color .15s}.sync-force-btn:hover:not(:disabled){color:var(--color-accent);border-color:var(--color-accent)}.sync-force-btn:disabled{opacity:.4;cursor:default;animation:1s infinite sync-pulse}.toast-stack{z-index:200;pointer-events:none;flex-direction:column;gap:.5rem;width:min(400px,100vw - 2rem);display:flex;position:fixed;bottom:1rem;left:50%;transform:translate(-50%)}@media (width<=768px){.toast-stack{bottom:calc(var(--tabbar-height) + .75rem)}}.toast{background:var(--color-surface);border:1px solid var(--color-border);border-left:3px solid var(--color-accent);border-radius:var(--radius-md);pointer-events:all;cursor:pointer;align-items:center;gap:.75rem;padding:.75rem 1rem;animation:.2s toast-in;display:flex;box-shadow:0 4px 16px #0003}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.toast-icon{color:var(--color-accent);flex-shrink:0;font-size:1.1rem}.toast-body{flex-direction:column;gap:.1rem;min-width:0;display:flex}.toast-message{color:var(--color-text);font-size:.875rem;font-weight:500}.toast-sub{color:var(--color-text-muted);font-size:.75rem}.app{background:var(--color-bg);min-height:100vh}.app-header{height:var(--header-height);background:var(--color-surface);border-bottom:1px solid var(--color-border);z-index:10;align-items:center;gap:.75rem;padding:0 1.5rem;display:flex;position:sticky;top:0}.app-logo{font-size:1.4rem}.app-title{color:var(--color-text);margin:0;font-size:1.1rem;font-weight:700}.app-version{color:var(--color-text-muted);opacity:.6;font-size:.7rem}.app-search-wrap{align-items:center;margin-left:auto;display:flex;position:relative}.app-search{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);width:260px;color:var(--color-text);outline:none;padding:.35rem 2rem .35rem .75rem;font-family:inherit;font-size:.875rem;transition:border-color .15s}.app-search:focus{border-color:var(--color-accent)}.app-search::-webkit-search-cancel-button{display:none}.app-search-clear{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;padding:.2rem;font-size:.75rem;line-height:1;position:absolute;right:.4rem}.app-search-clear:hover{color:var(--color-text)}@media (width<=768px) and (orientation:portrait){.app-search-wrap{flex:1;min-width:0}.app-search{width:100%}}@media (width<=900px) and (orientation:landscape){.app-title,.app-version{display:none}.app-search{width:140px}}.app-kitchen-badge{border:1px solid var(--color-border);color:var(--color-text-muted);cursor:pointer;white-space:nowrap;background:0 0;border-radius:999px;padding:.15rem .55rem;font-family:inherit;font-size:.78rem;transition:border-color .15s,color .15s}.app-kitchen-badge:hover{border-color:var(--color-accent);color:var(--color-accent)}.app-import-btn{color:var(--color-text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:0;font-family:inherit;font-size:.78rem;transition:color .15s}.app-import-btn:hover{color:var(--color-accent)}.app-compact-btn{color:var(--color-text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:0;font-family:inherit;font-size:.78rem;transition:color .15s}.app-compact-btn:hover,.app-compact-btn--active{color:var(--color-accent)}.app-settings-btn{border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-muted);cursor:pointer;background:0 0;flex-shrink:0;justify-content:center;align-items:center;min-width:36px;min-height:36px;padding:.2rem .5rem;font-size:1rem;line-height:1;transition:color .15s,border-color .15s;display:flex}.app-settings-btn--open,.app-settings-btn:active{color:var(--color-accent);border-color:var(--color-accent)}.mobile-settings-backdrop{z-index:14;position:fixed;inset:0}.mobile-settings-panel{top:var(--header-height);background:var(--color-surface);border-bottom:1px solid var(--color-border);z-index:15;flex-direction:column;padding:.75rem 1rem .25rem;animation:.15s settings-slide-down;display:flex;position:fixed;left:0;right:0;box-shadow:0 6px 20px #0000001f}@keyframes settings-slide-down{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.mobile-settings-title{color:var(--color-text);margin:0 0 .5rem;font-size:.85rem;font-weight:600}.mobile-settings-version{color:var(--color-text-muted);margin-left:.25rem;font-size:.75rem;font-weight:400}.mobile-settings-row{border:none;border-top:1px solid var(--color-border);width:100%;color:var(--color-text);cursor:pointer;text-align:left;background:0 0;justify-content:space-between;align-items:center;padding:.75rem 0;font-family:inherit;font-size:.9rem;display:flex}.mobile-settings-row:disabled{opacity:.5;cursor:default}.mobile-settings-value{color:var(--color-text-muted);font-size:.85rem}
