:root{--vt-c-white:#fff;--vt-c-white-soft:#f8f8f8;--vt-c-white-mute:#f2f2f2;--vt-c-black:#181818;--vt-c-black-soft:#222;--vt-c-black-mute:#282828;--vt-c-indigo:#2c3e50;--vt-c-divider-light-1:#3c3c3c4a;--vt-c-divider-light-2:#3c3c3c1f;--vt-c-divider-dark-1:#545454a6;--vt-c-divider-dark-2:#5454547a;--vt-c-text-light-1:var(--vt-c-indigo);--vt-c-text-light-2:#3c3c3ca8;--vt-c-text-dark-1:var(--vt-c-white);--vt-c-text-dark-2:#ebebeba3;--color-background:var(--vt-c-white);--color-background-soft:var(--vt-c-white-soft);--color-background-mute:var(--vt-c-white-mute);--color-border:var(--vt-c-divider-light-2);--color-border-hover:var(--vt-c-divider-light-1);--color-heading:var(--vt-c-text-light-1);--color-text:var(--vt-c-text-light-1);--section-gap:160px}@media (prefers-color-scheme:dark){:root{--color-background:var(--vt-c-black);--color-background-soft:var(--vt-c-black-soft);--color-background-mute:var(--vt-c-black-mute);--color-border:var(--vt-c-divider-dark-2);--color-border-hover:var(--vt-c-divider-dark-1);--color-heading:var(--vt-c-text-dark-1);--color-text:var(--vt-c-text-dark-2)}}*,:before,:after{box-sizing:border-box;margin:0;font-weight:400}body{min-height:100vh;color:var(--color-text);background:var(--color-background);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:15px;line-height:1.6;transition:color .5s,background-color .5s}:root,:root[data-theme=light]{--brand:#2f7a58;--brand-weak:#dceee4;--on-brand:#fff;--danger:#b43b3b;--surface:#f7faf8;--surface-muted:#edf2ef;--border:#cdd8d1;--text:#1f3028;--text-muted:#45594f;--shadow:0 8px 24px #1d262114}@media (prefers-color-scheme:dark){:root{--brand:#6ac99a;--brand-weak:#183226;--on-brand:#0f1d17;--danger:#ff8f8f;--surface:#15201b;--surface-muted:#0f1713;--border:#2b3a33;--text:#e7efe9;--text-muted:#b3c2ba;--shadow:none}}:root[data-theme=dark]{--brand:#6ac99a;--brand-weak:#183226;--on-brand:#0f1d17;--danger:#ff8f8f;--surface:#15201b;--surface-muted:#0f1713;--border:#2b3a33;--text:#e7efe9;--text-muted:#b3c2ba;--shadow:none}body{color:var(--text);background:var(--surface-muted)}#app{min-height:100vh}.app-shell{background:var(--surface-muted);min-height:100vh;overflow-x:clip}.top-header{z-index:10;background:var(--surface);border-bottom:1px solid var(--border);padding:1rem;position:sticky;top:0}.top-header h1{font-size:1.125rem;font-weight:700}.logo-link{color:inherit;align-items:center;gap:.5rem;text-decoration:none;display:flex}.logo-icon{width:1.75rem;height:1.75rem;color:var(--brand);flex-shrink:0}.logo-wordmark{letter-spacing:-.02em;color:var(--brand);font-size:1.25rem;font-weight:800}.auth-logo{flex-direction:column;align-items:center;gap:.5rem;display:flex}.auth-logo-icon{width:3.5rem;height:3.5rem;color:var(--brand)}.auth-logo-name{letter-spacing:-.03em;color:var(--brand);margin:0;font-size:2rem;font-weight:800}.top-header-content{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.theme-toggle{color:var(--text-muted);align-items:center;gap:.5rem;font-size:.875rem;display:flex}.theme-toggle select{width:auto;min-height:2rem;padding:.375rem .5rem}.content{min-width:0;max-width:960px;margin:0 auto;padding:1rem 1rem 6rem}.page{gap:1rem;display:grid}.card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:.75rem;min-width:0;padding:1rem;overflow:hidden}.grid{gap:.75rem;display:grid}.two-cols{grid-template-columns:repeat(2,minmax(0,1fr))}.stack{gap:.5rem;display:grid}.muted{color:var(--text-muted)}a{overflow-wrap:break-word;word-break:break-all}.stat-card h2{font-size:1.75rem;font-weight:700;line-height:1.2}.form{gap:.75rem;display:grid}.form label{gap:.25rem;font-size:.925rem;display:grid}.form.inline{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));align-items:end}input,select,textarea,button{border:1px solid var(--border);width:100%;min-height:2.625rem;font:inherit;color:inherit;background:var(--surface);border-radius:.625rem;padding:.625rem .75rem}input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb, var(--brand) 20%, transparent);outline:none}textarea{min-height:unset;resize:none;field-sizing:content;line-height:1.6;overflow:hidden}.form.inline textarea{grid-column:1/-1}button,.button-link,.list-button{cursor:pointer}button,.button-link{border-color:var(--brand);background:var(--brand);color:var(--on-brand);text-align:center;text-decoration:none}.button-link{border-radius:.625rem;padding:.625rem .75rem;display:inline-block}.button-secondary{border-color:var(--border);background:var(--surface);color:var(--text)}.btn-edit,.btn-delete{width:auto;min-height:unset;border-radius:999px;justify-content:center;align-items:center;gap:.35rem;padding:.35rem .75rem;font-size:.8rem;font-weight:600;display:inline-flex}.btn-edit{border-color:var(--border);background:var(--surface);color:var(--text)}.btn-delete{border-color:var(--danger);background:var(--danger);color:#fff}.button-row{align-items:center;gap:.5rem;display:flex}.plain-list li>.button-row{justify-content:flex-end;justify-self:end}.with-icon{justify-content:center;align-items:center;gap:.4rem;display:inline-flex}.btn-icon{stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;fill:none;flex-shrink:0;width:.95rem;height:.95rem}button:disabled{opacity:.5;cursor:not-allowed}.danger{border-color:var(--danger);background:var(--danger)}.mode-toggle{grid-template-columns:1fr 1fr;gap:.5rem;margin-bottom:1rem;display:grid}.mode-toggle button{background:var(--surface);color:inherit;border-color:var(--border)}.mode-toggle button.active{background:var(--brand-weak);border-color:var(--brand);color:var(--text)}.list-button{text-align:left;background:var(--surface);color:inherit;border:1px solid var(--border);gap:.125rem;display:grid}.recipe-list-item{grid-template-columns:auto 1fr;align-items:center;gap:.75rem;display:grid}.list-button.active{border-color:var(--brand);background:var(--brand-weak)}.plain-list,.check-list{gap:.5rem;margin-top:.75rem;list-style:none;display:grid}.plain-list li{border-bottom:1px solid var(--border);grid-template-columns:1fr 1fr;align-items:center;gap:.5rem;min-width:0;padding:.5rem 0;display:grid}.entity-list-item{grid-template-columns:1fr auto}.entity-list-item small{margin-top:.125rem;display:block}.warning-list li{padding:.25rem 0;display:block}.check-list label{align-items:center;gap:.5rem;display:flex}.check-list input{width:auto;min-height:auto}.bottom-nav{z-index:20;border-top:1px solid var(--border);background:var(--surface);grid-template-columns:repeat(7,minmax(0,1fr));gap:.25rem;padding:.5rem;display:grid;position:fixed;bottom:0;left:0;right:0}.nav-item{color:inherit;text-align:center;white-space:nowrap;border-radius:.5rem;flex-direction:column;justify-content:center;align-items:center;gap:.2rem;padding:.45rem .25rem;text-decoration:none;display:inline-flex}.nav-item-icon{stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;fill:none;width:1rem;height:1rem}.nav-item-label{font-size:.72rem;line-height:1}.nav-item.router-link-active{background:var(--brand-weak);color:var(--text);font-weight:600}.auth-page{align-content:center;gap:.75rem;max-width:440px;min-height:100vh;margin:0 auto;padding:1rem;display:grid}.subtitle{color:var(--text-muted)}.error{color:var(--danger)}.success{color:var(--brand)}.update-toast{z-index:90;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:.75rem;gap:.5rem;padding:.75rem;display:grid;position:fixed;bottom:5.5rem;left:1rem;right:1rem}.update-toast-title{margin:0;font-weight:700}.update-toast-message{color:var(--text-muted);margin:0;font-size:.9rem}.update-toast-actions{justify-content:flex-end;gap:.5rem;display:flex}.update-toast-actions button{width:auto;min-height:2.25rem}.dialog-backdrop{z-index:100;background:#00000073;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.dialog-panel{background:var(--surface);border:1px solid var(--border);border-radius:1rem;gap:.75rem;width:100%;max-width:400px;padding:1.5rem;display:grid;box-shadow:0 20px 60px #00000040}.dialog-title{margin:0;font-size:1.05rem;font-weight:700}.dialog-message{color:var(--text-muted);margin:0;font-size:.925rem}.dialog-actions{justify-content:flex-end;gap:.625rem;margin-top:.25rem;display:flex}.dialog-actions button{width:auto}.dialog-confirm-btn{min-width:5rem}.recipe-detail-header{justify-content:space-between;align-items:center;margin-bottom:.75rem;display:flex}.recipe-detail-header h3{margin:0}.recipe-description{white-space:pre-wrap;overflow-wrap:break-word;word-break:break-word;margin-top:.75rem;line-height:1.6}.recipe-detail-header+.recipe-image{margin-bottom:.75rem}.card>.recipe-image+.form{margin-top:.75rem}.recipe-edit-actions{grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;display:grid}.recipe-edit-actions button{width:100%}.meal-plan-calendar{gap:.875rem;margin-top:1rem;padding-bottom:.25rem;display:grid;overflow-x:auto}.planner-weekdays,.planner-week{grid-template-columns:repeat(7,minmax(220px,1fr));gap:.875rem;min-width:max-content;display:grid}.planner-weekday-label{background:var(--surface-muted);border:1px solid var(--border);color:var(--text-muted);letter-spacing:.03em;text-transform:uppercase;border-radius:999px;justify-content:center;align-items:center;padding:.5rem .75rem;font-size:.8rem;font-weight:700;display:inline-flex}.planner-week-cell{min-width:0}.planner-week-cell--empty{background:color-mix(in srgb, var(--surface-muted) 82%, transparent);border:1px dashed var(--border);border-radius:.875rem;min-height:12rem}.planner-day{border:1px solid var(--border);background:color-mix(in srgb, var(--surface) 92%, var(--brand-weak));border-radius:.875rem;gap:.875rem;height:100%;padding:.875rem;display:grid}.planner-day--today{border-color:var(--brand);box-shadow:0 0 0 2px color-mix(in srgb, var(--brand) 24%, transparent)}.planner-day-header{justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.planner-day-name,.planner-day-date{margin:0}.planner-day-name{font-size:1rem;font-weight:700}.planner-day-date{color:var(--text-muted);font-size:.875rem}.planner-today-badge{background:var(--brand);color:var(--on-brand);white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;padding:.25rem .55rem;font-size:.72rem;font-weight:700;display:inline-flex}.planner-day-sections{gap:.75rem;display:grid}.planner-day-section{background:var(--surface);border:1px solid var(--border);border-top-width:4px;border-radius:.75rem;gap:.5rem;padding:.75rem;transition:border-color .15s,box-shadow .15s,transform .15s;display:grid}.planner-day-section--droppable{min-height:5.5rem}.planner-day-section--drag-over{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb, var(--brand) 18%, transparent);transform:translateY(-1px)}.planner-day-section--sunrise{border-top-color:#f1b64b}.planner-day-section--daylight{border-top-color:#58a6ff}.planner-day-section--evening{border-top-color:#8b6cff}.planner-day-section--berry{border-top-color:#e15d97}.planner-section-header{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.planner-section-header h4{margin:0;font-size:.9rem}.planner-count-badge{background:var(--brand-weak);min-width:1.5rem;min-height:1.5rem;color:var(--text);border-radius:999px;justify-content:center;align-items:center;padding:0 .4rem;font-size:.75rem;font-weight:700;display:inline-flex}.planner-empty-slot{background:var(--surface-muted);border:1px dashed var(--border);border-radius:.625rem;margin:0;padding:.5rem .625rem;font-size:.875rem}.planner-meal-list{gap:.5rem;display:grid}.planner-meal-entry{background:var(--surface-muted);cursor:grab;border:1px solid #0000;border-radius:.75rem;justify-content:space-between;align-items:flex-start;gap:.75rem;padding:.625rem;transition:transform .15s,box-shadow .15s,border-color .15s;display:flex}.planner-meal-entry:hover{border-color:color-mix(in srgb, var(--brand) 24%, var(--border));box-shadow:var(--shadow)}.planner-meal-entry:active{cursor:grabbing}.planner-meal-entry--dragging{opacity:.65;transform:rotate(1deg)scale(.99)}.planner-meal-content{gap:.2rem;min-width:0;display:grid}.planner-meal-title-row{align-items:center;gap:.4rem;min-width:0;display:flex}.planner-meal-title-row strong{min-width:0}.planner-drag-handle{width:1.5rem;height:1.5rem;color:var(--text-muted);background:var(--surface);border:1px solid var(--border);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.planner-meal-content small{display:block}.planner-meal-actions{flex-shrink:0;justify-content:flex-end;margin-left:auto}@media (width<=640px){.recipe-edit-actions{grid-template-columns:1fr}.planner-meal-entry{flex-direction:column}.planner-meal-actions{width:100%}.planner-weekdays,.planner-week{grid-template-columns:repeat(7,minmax(180px,1fr))}}@media (width<=420px){.top-header{padding:.75rem}.content{padding:.75rem .75rem calc(5.75rem + env(safe-area-inset-bottom))}.card{border-radius:.625rem;padding:.875rem}.form.inline{grid-template-columns:1fr}.plain-list li{grid-template-columns:1fr;align-items:start;gap:.375rem}.entity-list-item{grid-template-columns:1fr}.button-row{flex-wrap:wrap}.plain-list li>.button-row{justify-self:end}.bottom-nav{overscroll-behavior-x:contain;padding:.375rem .5rem calc(.375rem + env(safe-area-inset-bottom));scrollbar-width:none;grid-template-columns:none;grid-auto-columns:minmax(4.25rem,1fr);grid-auto-flow:column;overflow-x:auto}.bottom-nav::-webkit-scrollbar{display:none}.nav-item{padding:.4rem .2rem}.nav-item-icon{width:.9rem;height:.9rem}.nav-item-label{font-size:.68rem}}.dialog-fade-enter-active,.dialog-fade-leave-active{transition:opacity .15s}.update-toast-fade-enter-active,.update-toast-fade-leave-active{transition:opacity .15s,transform .15s}.dialog-fade-enter-from,.dialog-fade-leave-to{opacity:0}.update-toast-fade-enter-from,.update-toast-fade-leave-to{opacity:0;transform:translateY(8px)}.dialog-fade-enter-active .dialog-panel,.dialog-fade-leave-active .dialog-panel{transition:transform .15s}.dialog-fade-enter-from .dialog-panel,.dialog-fade-leave-to .dialog-panel{transform:scale(.95)translateY(8px)}@media (width>=960px){.update-toast{max-width:420px;bottom:1rem;left:auto;right:calc(50% - 480px + 1rem)}.content{padding:1.25rem 1.25rem 1.5rem}.bottom-nav{border:1px solid var(--border);border-radius:.75rem;grid-template-columns:repeat(7,minmax(0,1fr));max-width:960px;margin:0 auto;position:sticky;top:0;bottom:auto}.two-cols{grid-template-columns:repeat(4,minmax(0,1fr))}}.recipe-image[data-v-1291d2ea]{border:1px solid var(--border);background:var(--surface-muted);border-radius:.625rem;overflow:hidden}.recipe-image img[data-v-1291d2ea]{object-fit:cover;width:100%;height:100%;display:block}.recipe-image--thumb[data-v-1291d2ea]{flex-shrink:0;width:4rem;height:4rem}.recipe-image--hero[data-v-1291d2ea]{aspect-ratio:16/9;width:100%;max-height:320px}.recipe-image__placeholder[data-v-1291d2ea]{width:100%;height:100%;color:var(--text-muted);text-align:center;place-items:center;gap:.375rem;padding:.5rem;font-size:.75rem;display:grid}.recipe-image__placeholder svg[data-v-1291d2ea]{fill:none;stroke:currentColor;stroke-width:2.5px;stroke-linecap:round;stroke-linejoin:round;width:2rem;height:2rem}.recipe-image--hero .recipe-image__placeholder[data-v-1291d2ea]{font-size:.875rem}.recipe-image--hero .recipe-image__placeholder svg[data-v-1291d2ea]{width:3rem;height:3rem}
