*,:before,:after{box-sizing:border-box}:root{--accent:#0f4f4a;--accent-light:#e7f0ee;--ink:#1c2521;--muted:#5b6864;--border:#dfe5e2;--bg:#f5f3ee;--surface:#fff;--danger:#b3261e;--radius:14px}html{-webkit-text-size-adjust:100%}body{color:var(--ink);background:var(--bg);margin:0;font-family:system-ui,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.5}#root{flex-direction:column;min-height:100svh;display:flex}a{color:var(--accent)}button{font:inherit}.app-header{z-index:10;background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:.9rem 1.1rem;display:flex;position:sticky;top:0}.app-header__brand{letter-spacing:-.01em;color:var(--ink);font-size:1.05rem;font-weight:700;text-decoration:none}.app-header__link{color:var(--muted);font-size:.9rem;text-decoration:none}.app-main{flex:1;width:100%;max-width:640px;margin:0 auto;padding:1.25rem 1.1rem 5.5rem}.section-title{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:1.1rem 0 .4rem;font-size:.78rem;font-weight:700}.section-title:first-child{margin-top:0}.stepper{align-items:center;gap:.9rem;display:flex}.stepper__btn{border:1px solid var(--border);background:var(--surface);width:44px;height:44px;color:var(--accent);border-radius:999px;justify-content:center;align-items:center;font-size:1.2rem;display:flex}.stepper__btn:disabled{opacity:.35}.stepper__value{text-align:center;min-width:2.5rem;font-size:1.1rem;font-weight:700}.chip-row{flex-wrap:wrap;gap:.5rem;display:flex}.select-input{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);width:100%;color:var(--ink);font:inherit;appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%235b6864' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-position:right 1rem center;background-repeat:no-repeat;min-height:48px;padding:0 2.5rem 0 1rem;font-size:.95rem}.chip--number{justify-content:center;min-width:44px}.multi-select{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.multi-select__summary{cursor:pointer;align-items:center;gap:.5rem;min-height:48px;padding:.85rem 1rem;font-weight:600;list-style:none;display:flex}.multi-select__summary::-webkit-details-marker{display:none}.multi-select__summary:after{content:"▾";color:var(--muted);margin-left:auto}details[open]>.multi-select__summary:after{content:"▴"}.multi-select__count{background:var(--accent);color:#fff;border-radius:999px;padding:.1rem .5rem;font-size:.75rem;font-weight:700}.multi-select__list{border-top:1px solid var(--border);max-height:280px;padding:.4rem 1rem;overflow-y:auto}.multi-select__option{align-items:center;gap:.7rem;padding:.65rem 0;font-size:.95rem;display:flex}.multi-select__option input{width:20px;height:20px;accent-color:var(--accent)}.chip{border:1px solid var(--border);background:var(--surface);color:var(--ink);border-radius:999px;align-items:center;min-height:44px;padding:.55rem .95rem;font-size:.92rem;display:inline-flex}.chip--active{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.tag-input{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);flex-wrap:wrap;gap:.4rem;padding:.6rem;display:flex}.tag-input__pill{background:var(--accent-light);color:var(--accent);border-radius:999px;align-items:center;gap:.4rem;padding:.4rem .5rem .4rem .75rem;font-size:.88rem;font-weight:600;display:inline-flex}.tag-input__pill button{color:inherit;cursor:pointer;background:0 0;border:none;padding:.1rem;font-size:1rem;line-height:1}.tag-input__pill--invalid{color:var(--danger);background:#fdecea}.tag-input__field{background:0 0;border:none;outline:none;flex:1;min-width:120px;padding:.45rem .3rem;font-size:.95rem}.tag-input__add{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:999px;flex-shrink:0;width:34px;height:34px;font-size:1.1rem;line-height:1}.btn{cursor:pointer;border:none;border-radius:999px;justify-content:center;align-items:center;gap:.5rem;min-height:48px;padding:.85rem 1.4rem;font-size:1rem;font-weight:700;display:inline-flex}.btn--primary{background:var(--accent);color:#fff;width:100%}.btn--primary:disabled{opacity:.5}.btn--secondary{background:var(--surface);color:var(--accent);border:1px solid var(--border)}.btn--small{min-height:38px;padding:.5rem .9rem;font-size:.85rem}.error-banner{color:var(--danger);border-radius:var(--radius);background:#fdecea;margin-bottom:1rem;padding:.85rem 1rem;font-size:.92rem}.plan-header{text-align:center;margin-bottom:1.5rem}.plan-header__title{letter-spacing:-.01em;margin:0 0 .4rem;font-size:1.5rem;font-weight:800}.plan-header__description{color:var(--muted);margin:0;font-size:.96rem}.skeleton{background:linear-gradient(90deg,#ebe8e1 25%,#f4f2ec 37%,#ebe8e1 63%) 0 0/400% 100%;border-radius:8px;animation:1.4s infinite skeleton-shimmer}@keyframes skeleton-shimmer{0%{background-position:100%}to{background-position:0}}.day-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:1.1rem;overflow:hidden}.day-card__image{aspect-ratio:16/10;object-fit:cover;background:var(--accent-light);width:100%;display:block}.day-card__image--skeleton{aspect-ratio:16/10}.day-card__image--pending{aspect-ratio:16/10;color:var(--text-muted,#9ca3af);background:var(--accent-light);justify-content:center;align-items:center;font-size:.8rem;display:flex}.day-card__body{padding:1.1rem 1.1rem 1.25rem}.day-card__header{text-align:center;margin-bottom:1rem}.day-card__day-label{text-transform:uppercase;letter-spacing:.06em;color:var(--accent);margin:0 0 .3rem;font-size:.78rem;font-weight:700}.day-card__title{margin:0 0 .7rem;font-size:1.15rem;font-weight:700}.day-card__header .day-card__image,.day-card__header .day-card__image--skeleton{border-radius:var(--radius);width:100%}.day-card__section-label{margin:1rem 0 .4rem;font-size:.82rem;font-weight:700}.day-card__ingredient-list,.day-card__step-list{margin:0;padding-left:1.2rem}.day-card__ingredient-list li,.day-card__step-list li{margin-bottom:.3rem;font-size:.94rem}.day-card__serving-suggestion{color:var(--muted);margin:1rem 0 0;font-size:.9rem;font-style:italic}.day-card__detail-btns{gap:.6rem;display:flex}.star-rating{justify-content:center;gap:.15rem;margin:.2rem 0 .7rem;display:flex}.star-rating__star{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:.1rem .15rem;font-size:1.45rem;line-height:1}.star-rating__star--filled{color:#e8a213}.adventure-slider{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.1rem .8rem}.adventure-slider__input{width:100%;accent-color:var(--accent)}.adventure-slider__endpoints{color:var(--muted);justify-content:space-between;margin-top:.15rem;font-size:.72rem;display:flex}.adventure-slider__current{text-align:center;color:var(--accent);margin:.55rem 0 0;font-size:.95rem;font-weight:600}.adventure-slider__hint{color:var(--muted);margin:.5rem 0 0;font-size:.8rem}.auth-form{width:100%;max-width:420px;margin:0 auto}.auth-form__reason{color:var(--muted);background:var(--accent-light);border-radius:var(--radius);margin:0 0 1rem;padding:.7rem .9rem;font-size:.9rem}.auth-form__label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:.9rem 0 .35rem;font-size:.78rem;font-weight:700;display:block}.auth-form__input{box-sizing:border-box;width:100%}.auth-form__pw-header{justify-content:space-between;align-items:baseline;display:flex}.auth-form__pw-row{gap:.5rem;display:flex}.auth-form__pw-row .auth-form__input{flex:1}.auth-form__hint{color:var(--muted);margin:.4rem 0 0;font-size:.78rem}.auth-form__link{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;font-size:.82rem;font-weight:600;text-decoration:underline}.auth-form__error{color:var(--danger);margin:.9rem 0 0;font-size:.88rem}.auth-form__notice{color:var(--accent);margin:.9rem 0 0;font-size:.9rem}.auth-form__submit{width:100%;margin-top:1.2rem}.auth-form__switches{flex-direction:column;align-items:center;gap:.5rem;margin-top:1.1rem;display:flex}.day-card__actions{margin-top:1.1rem}.panel-overlay{z-index:100;background:var(--surface);flex-direction:column;display:flex;position:fixed;inset:0}.panel-overlay__header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:1rem;padding:1rem 1.1rem;display:flex}.panel-overlay__title{margin:.2rem 0 0;font-size:1.1rem;font-weight:700}.panel-overlay__close{background:var(--accent-light);color:var(--accent);border:none;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:1rem;display:flex}.panel-overlay__tabs{border-bottom:1px solid var(--border);display:flex}.panel-overlay__tab{color:var(--muted);background:0 0;border:none;border-bottom:2px solid #0000;flex:1;padding:.85rem;font-size:.92rem;font-weight:700}.panel-overlay__tab--active{color:var(--accent);border-bottom-color:var(--accent)}.panel-overlay__content{flex:1;padding:1.2rem;overflow-y:auto}.panel-overlay__list{margin:0;padding-left:1.2rem}.panel-overlay__list:not(.panel-overlay__list--ordered){list-style:outside}.panel-overlay__list li{margin-bottom:.6rem;font-size:1rem;line-height:1.5}.pantry-suggestion{color:var(--muted);background:var(--accent-light);border:1px solid var(--border);border-radius:var(--radius);margin-top:.5rem;padding:.7rem .9rem;font-size:.85rem}.pantry-suggestion strong{color:var(--accent)}.pantry-suggestion__actions{gap:.5rem;margin-top:.5rem;display:flex}.runtime-confirm__body{padding:1.2rem;font-size:1rem;line-height:1.5}.runtime-confirm__actions{flex-direction:column;gap:.6rem;padding:0 1.2rem 1.2rem;display:flex}.shopping-notice{color:var(--muted);background:var(--surface-alt,#ffc80012);border:1px solid var(--border);border-radius:6px;margin-bottom:1rem;padding:.6rem .8rem;font-size:.82rem}.shopping-section{margin-bottom:1.5rem}.shopping-section--pantry .shopping-section__title{color:var(--muted)}.shopping-section--pantry .shopping-item{opacity:.75}.shopping-section__title{text-transform:uppercase;letter-spacing:.06em;color:var(--accent);border-bottom:1px solid var(--border);margin:0 0 .6rem;padding-bottom:.4rem;font-size:.78rem;font-weight:700}.shopping-list{margin:0;padding:0;list-style:none}.shopping-item{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:.75rem;padding:.55rem 0;font-size:.95rem;display:flex}.shopping-item:last-child{border-bottom:none}.shopping-item--checked .shopping-item__name{color:var(--muted);text-decoration:line-through}.shopping-item--checked{opacity:.55}.shopping-item__check{color:var(--muted);cursor:pointer;touch-action:manipulation;background:0 0;border:none;flex-shrink:0;margin-right:.5rem;padding:0;font-size:1.1rem;line-height:1}.shopping-item--checked .shopping-item__check{color:var(--success,#4caf50)}.shopping-item--clickable{cursor:pointer;-webkit-user-select:none;user-select:none}.shopping-item__name{flex:1;min-width:0}.shopping-item__days{flex-shrink:0;gap:.25rem;display:flex}.day-badge{border-radius:999px;justify-content:center;align-items:center;width:22px;height:22px;font-size:.72rem;font-weight:700;display:flex}.day-badge--active{background:var(--accent);color:#fff}.day-badge--empty{background:var(--border);color:var(--muted);opacity:.35}.save-bar{z-index:100;background:var(--bg);border-top:1px solid var(--border);box-sizing:border-box;flex-direction:row;gap:.6rem;padding:.6rem 1.1rem .75rem;display:flex;position:fixed;bottom:0;left:0;right:0}.save-bar--saved{opacity:.55}.save-bar__input{border:1px solid var(--border);border-radius:999px;flex:1;min-width:0;min-height:44px;padding:0 1rem;font-size:.95rem}.save-bar__btn{white-space:nowrap;flex-shrink:0}.saved-list{margin:0;padding:0;list-style:none}.saved-plan-card{border-bottom:1px solid var(--border);align-items:center;gap:.75rem;display:flex}.saved-plan-card__link{color:var(--ink);flex-direction:column;flex:1;gap:.2rem;padding:.9rem .2rem;text-decoration:none;display:flex}.saved-plan-card__name{font-size:1rem;font-weight:600}.saved-plan-card__subtitle{color:var(--muted);font-size:.85rem;font-style:italic}.saved-plan-card__date{color:var(--muted);font-size:.78rem}.btn--ghost{color:var(--muted);background:0 0;border-color:#0000;padding:.3rem .5rem;font-size:1.1rem;line-height:1}.btn--ghost:hover{color:var(--danger,#b00);border-color:var(--danger,#b00)}.btn--danger{background:var(--danger,#b00);border-color:var(--danger,#b00);color:#fff;white-space:nowrap;font-size:.78rem}.empty-state{color:var(--muted);text-align:center;padding:3rem 1rem}.print-toolbar{flex-wrap:wrap;justify-content:center;align-items:center;gap:.4rem;display:inline-flex}.print-toolbar__label{color:var(--muted);font-size:.82rem}.recipe-print-view{display:none}@media print{@page{size:A4 landscape;margin:.9cm}.app-header,.save-bar,.day-card,.plan-header,.error-banner,.panel-overlay,.print-toolbar,.save-bar+p{display:none!important}body{color:#1c2521;background:#fff;font-size:9pt}.app-main{max-width:none;margin:0;padding:0}.recipe-print-view{display:block}.recipe-print-sheet{break-after:page;page-break-after:always;grid-template-columns:1fr 1fr;gap:0;height:19.2cm;display:grid;overflow:hidden}.recipe-print-sheet>*+*{border-left:.5pt solid #dfe5e2;padding-left:.6cm}.recipe-print-sheet--cover{align-items:start;height:auto;overflow:visible}.recipe-print-sheet--first{break-before:page;page-break-before:always}.recipe-print-cover__left{padding-right:.6cm}.recipe-print-cover__right{grid-template-columns:1fr 1fr;align-content:start;gap:.5cm;display:grid}.recipe-print-cover__plan-header{border-bottom:2pt solid #0f4f4a;margin-bottom:.4cm;padding-bottom:.3cm}.recipe-print-cover__plan-title{color:#1c2521;margin:0 0 .15cm;font-size:20pt;font-weight:800;line-height:1.1}.recipe-print-cover__plan-desc{color:#5b6864;margin:0;font-size:9pt;line-height:1.45}.recipe-print-cover__toc{flex-direction:column;gap:.25cm;display:flex}.recipe-print-cover__toc-item{break-inside:avoid;page-break-inside:avoid}.recipe-print-cover__toc-day{text-transform:uppercase;letter-spacing:.08em;color:#0f4f4a;font-size:7pt;font-weight:700;display:block}.recipe-print-cover__toc-title{color:#1c2521;font-size:9.5pt;font-weight:600;display:block}.recipe-print-cover__toc-desc{color:#5b6864;font-size:8pt;line-height:1.4;display:block}.recipe-print-cover__col-title{text-transform:uppercase;letter-spacing:.08em;color:#0f4f4a;border-bottom:.5pt solid #dfe5e2;margin:0 0 .2cm;padding-bottom:.1cm;font-size:7.5pt;font-weight:700}.recipe-print-cover__shopping-list{margin:0;padding:0;list-style:none}.recipe-print-cover__shopping-list li{border-bottom:.5pt solid #dfe5e2;padding:1.5pt 0;font-size:8.5pt;line-height:1.35}.recipe-print-cover__no-list{color:#5b6864;font-size:8.5pt;font-style:italic}.recipe-print-page{padding-right:.6cm;overflow:hidden}.recipe-print-sheet>.recipe-print-page+.recipe-print-page{padding-right:0}.recipe-print-page__header{break-after:avoid;page-break-after:avoid;border-bottom:2pt solid #0f4f4a;grid-template-columns:1fr auto;align-items:start;gap:.4cm;margin-bottom:.3cm;padding-bottom:.25cm;display:grid}.recipe-print-page__header-text{min-width:0}.recipe-print-page__day{text-transform:uppercase;letter-spacing:.09em;color:#0f4f4a;margin-bottom:.07cm;font-size:7pt;font-weight:700;display:block}.recipe-print-page__title{color:#1c2521;margin:0 0 .12cm;font-size:13pt;font-weight:800;line-height:1.15}.recipe-print-page__desc{color:#5b6864;margin:0;font-size:7.5pt;line-height:1.35}.recipe-print-page__image{object-fit:cover;border-radius:4pt;flex-shrink:0;width:4.2cm;height:3.15cm}.recipe-print-page__body{grid-template-columns:1fr 1fr;gap:.5cm;display:grid}.recipe-print-section-title{text-transform:uppercase;letter-spacing:.09em;color:#0f4f4a;border-bottom:.5pt solid #dfe5e2;margin:0 0 .15cm;padding-bottom:.1cm;font-size:7pt;font-weight:700}.recipe-print-ingredients{margin:0;padding:0;list-style:none}.recipe-print-ingredients li{border-bottom:.5pt solid #dfe5e2;padding:1.5pt 0;font-size:8pt;line-height:1.35}.recipe-print-steps{margin:0;padding-left:1.3em}.recipe-print-steps li{break-inside:avoid;page-break-inside:avoid;margin-bottom:.2cm;font-size:8pt;line-height:1.45}.recipe-print-serving{color:#5b6864;border-top:.5pt solid #dfe5e2;margin:.2cm 0 0;padding-top:.15cm;font-size:7.5pt;font-style:italic}body.print-greyscale .recipe-print-view{filter:grayscale()}}
