@import url(https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500&family=Nunito+Sans:opsz,wght@6..12,300;6..12,400;6..12,600;6..12,700&display=swap);:root{--bg:#faf7f2;--surface:#fff;--surface-alt:#f3ede3;--text:#2c1810;--text-muted:#8a7060;--accent:#c4622d;--accent-hover:#a84e22;--accent-light:#faeee6;--sage:#4e7060;--sage-light:#ebf2ee;--border:#e5ddd4;--shadow-sm:0 2px 8px rgba(44,24,16,.07);--shadow-md:0 8px 32px rgba(44,24,16,.11);--shadow-lg:0 20px 60px rgba(44,24,16,.15);--radius:14px;--radius-sm:7px;--ease:cubic-bezier(0.25,0.46,0.45,0.94);--font-display:"Cormorant Garamond",Georgia,serif;--font-body:"Nunito Sans",system-ui,sans-serif}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased}body{background:var(--bg);color:var(--text);display:flex;flex-direction:column;font-family:var(--font-body);line-height:1.65;min-height:100vh}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}.nav{align-items:center;backdrop-filter:blur(12px);background:hsla(38,44%,96%,.92);border-bottom:1px solid var(--border);display:flex;height:66px;justify-content:space-between;padding:0 40px;position:sticky;top:0;z-index:100}.nav__logo{color:var(--text);font-family:var(--font-display);font-size:1.7rem;font-style:italic;font-weight:600;letter-spacing:-.01em}.nav__logo span{color:var(--accent)}.nav__links{align-items:center;display:flex;gap:8px}.nav__link{border-radius:100px;color:var(--text-muted);font-family:var(--font-body);font-size:.82rem;font-weight:600;letter-spacing:.08em;padding:7px 16px;text-transform:uppercase;transition:background var(--ease) .15s,color var(--ease) .15s}.nav__link:hover{background:var(--accent-light);color:var(--accent)}.nav__link--active{background:var(--text);color:var(--bg)}.nav__link--active:hover{background:var(--accent);color:#fff}.page{flex:1}.recipes-layout{align-items:start;display:grid;gap:0;grid-template-columns:270px 1fr;margin:0 auto;max-width:1400px;padding:48px 40px}@media (max-width:900px){.recipes-layout{grid-template-columns:1fr;padding:24px 20px}}.filters{max-height:calc(100vh - 130px);overflow-y:auto;padding-right:40px;position:sticky;scrollbar-color:var(--border) transparent;scrollbar-width:thin;top:90px}@media (max-width:900px){.filters{margin-bottom:32px;max-height:none;overflow-y:visible;padding-right:0;position:static}}.filters__title{color:var(--text-muted);font-family:var(--font-display);font-size:.75rem;font-weight:600;letter-spacing:.14em;margin-bottom:20px;text-transform:uppercase}.filters__search{margin-bottom:28px;position:relative}.filters__search input{background:var(--surface);border:1.5px solid var(--border);border-radius:100px;color:var(--text);font-family:var(--font-body);font-size:.875rem;outline:none;padding:10px 16px 10px 40px;transition:border-color .15s,box-shadow .15s;width:100%}.filters__search input::placeholder{color:var(--text-muted)}.filters__search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(196,98,45,.12)}.filters__search-icon{color:var(--text-muted);font-size:.9rem;left:13px;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.filters__group{margin-bottom:24px}.filters__group+.filters__group{border-top:1px solid var(--border);padding-top:24px}.filters__group-label{color:var(--text-muted);font-size:.75rem;font-weight:700;letter-spacing:.1em;margin-bottom:12px;text-transform:uppercase}.filters__option{align-items:center;color:var(--text);cursor:pointer;display:flex;font-size:.875rem;gap:10px;padding:5px 0;transition:color .15s;user-select:none}.filters__option:hover{color:var(--accent)}.filters__option input[type=checkbox]{appearance:none;border:1.5px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;flex-shrink:0;height:17px;position:relative;transition:all .15s;width:17px}.filters__option input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}.filters__option input[type=checkbox]:checked:after{border-bottom:2px solid #fff;border-left:2px solid #fff;content:"";height:6px;left:3px;position:absolute;top:1px;transform:rotate(-45deg);width:9px}.filters__apply{background:var(--accent);border:none;border-radius:100px;color:#fff;cursor:pointer;font-family:var(--font-body);font-size:.82rem;font-weight:700;letter-spacing:.06em;margin-top:24px;padding:11px;text-transform:uppercase;transition:background .15s,transform .1s;width:100%}.filters__apply:hover{background:var(--accent-hover)}.filters__apply:active{transform:scale(.98)}.filters__duration{display:flex;flex-wrap:wrap;gap:8px}.filters__duration label{cursor:pointer}.filters__duration input[type=radio]{display:none}.filters__duration input[type=radio]+span{border:1.5px solid var(--border);border-radius:100px;color:var(--text-muted);display:inline-block;font-size:.8rem;font-weight:600;padding:5px 13px;transition:all .15s}.filters__duration input[type=radio]:checked+span{background:var(--accent);border-color:var(--accent);color:#fff}.recipes-main__header{align-items:baseline;display:flex;justify-content:space-between;margin-bottom:36px}.recipes-main__title{color:var(--text);font-family:var(--font-display);font-size:3.2rem;font-style:italic;font-weight:500;letter-spacing:-.02em;line-height:1}.recipes-main__title em{color:var(--accent);font-style:normal}.recipes-main__count{color:var(--text-muted);font-size:.82rem;font-weight:600}.recipe-grid{display:grid;gap:24px;grid-template-columns:repeat(3,1fr)}@media (max-width:1100px){.recipe-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:600px){.recipe-grid{grid-template-columns:1fr}}.recipe-card{animation:cardReveal .5s var(--ease) forwards;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-sm);cursor:pointer;opacity:0;overflow:hidden;transform:translateY(16px);transition:transform .25s var(--ease),box-shadow .25s var(--ease)}.recipe-card:first-child{animation-delay:0s}.recipe-card:nth-child(2){animation-delay:.04s}.recipe-card:nth-child(3){animation-delay:.08s}.recipe-card:nth-child(4){animation-delay:.12s}.recipe-card:nth-child(5){animation-delay:.16s}.recipe-card:nth-child(6){animation-delay:.2s}.recipe-card:nth-child(7){animation-delay:.24s}.recipe-card:nth-child(8){animation-delay:.28s}.recipe-card:nth-child(9){animation-delay:.32s}.recipe-card:nth-child(10){animation-delay:.36s}.recipe-card:nth-child(11){animation-delay:.4s}.recipe-card:nth-child(12){animation-delay:.44s}.recipe-card:nth-child(13){animation-delay:.48s}.recipe-card:nth-child(14){animation-delay:.52s}.recipe-card:nth-child(15){animation-delay:.56s}.recipe-card:nth-child(16){animation-delay:.6s}.recipe-card:nth-child(17){animation-delay:.64s}.recipe-card:nth-child(18){animation-delay:.68s}.recipe-card:nth-child(19){animation-delay:.72s}.recipe-card:nth-child(20){animation-delay:.76s}.recipe-card:nth-child(21){animation-delay:.8s}.recipe-card:nth-child(22){animation-delay:.84s}.recipe-card:nth-child(23){animation-delay:.88s}.recipe-card:nth-child(24){animation-delay:.92s}.recipe-card:nth-child(25){animation-delay:.96s}.recipe-card:nth-child(26){animation-delay:1s}.recipe-card:nth-child(27){animation-delay:1.04s}.recipe-card:nth-child(28){animation-delay:1.08s}.recipe-card:nth-child(29){animation-delay:1.12s}.recipe-card:nth-child(30){animation-delay:1.16s}.recipe-card:hover{box-shadow:var(--shadow-md);transform:translateY(-4px)}.recipe-card__image-wrap{background:var(--surface-alt);overflow:hidden;padding-top:62%;position:relative}.recipe-card__image{height:100%;inset:0;object-fit:cover;position:absolute;transition:transform .4s var(--ease);width:100%}.recipe-card:hover .recipe-card__image{transform:scale(1.04)}.recipe-card__badge{backdrop-filter:blur(8px);background:hsla(38,44%,96%,.92);border-radius:100px;color:var(--text-muted);font-size:.7rem;font-weight:700;left:12px;letter-spacing:.08em;padding:3px 10px;position:absolute;text-transform:uppercase;top:12px}.recipe-card__body{padding:20px 22px 22px}.recipe-card__name{color:var(--text);font-family:var(--font-display);font-size:1.3rem;font-weight:500;line-height:1.25;margin-bottom:10px}.recipe-card__meta{align-items:center;display:flex;gap:16px}.recipe-card__duration{align-items:center;color:var(--text-muted);display:flex;font-size:.78rem;font-weight:600;gap:5px}.recipe-card__duration svg{height:13px;opacity:.6;width:13px}.recipe-card__heat{display:flex;gap:2px}.recipe-card__flame{font-size:.8rem;opacity:.25;transition:opacity .15s}.recipe-card__flame--on{opacity:1}.recipe-card__calories{background:var(--surface-alt);border-radius:100px;color:var(--text-muted);font-size:.75rem;font-weight:600;padding:2px 7px}.recipe-card__rating{display:flex;gap:1px;margin-top:8px}.recipe-card__star{color:var(--border);font-size:.85rem}.recipe-card__star--on{color:var(--accent)}@keyframes cardReveal{to{opacity:1;transform:translateY(0)}}.empty-state{grid-column:1/-1;padding:80px 20px;text-align:center}.empty-state__icon{font-size:3rem;margin-bottom:16px;opacity:.3}.empty-state__text{color:var(--text-muted);font-family:var(--font-display);font-size:1.4rem;font-style:italic}.modal-overlay{backdrop-filter:blur(4px);background:rgba(44,24,16,.55);inset:0;opacity:0;pointer-events:none;position:fixed;transition:opacity .25s var(--ease);z-index:500}.modal-overlay.is-open{opacity:1;pointer-events:all}.recipe-modal{background:var(--surface);border-radius:var(--radius);bottom:16px;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;left:50%;max-height:calc(100dvh - 82px);overflow:hidden;position:fixed;transform:translateX(-50%) translateY(calc(100% + 16px));transition:transform .35s var(--ease);width:min(860px,96vw);z-index:501}.recipe-modal.is-open{transform:translateX(-50%) translateY(0)}.recipe-modal__handle{background:var(--border);border-radius:100px;height:4px;left:50%;position:absolute;top:10px;transform:translateX(-50%);width:36px;z-index:1}.recipe-modal__hero{background:var(--surface-alt);flex-shrink:0;height:260px;overflow:hidden;position:relative}.recipe-modal__hero img{height:100%;object-fit:cover;width:100%}.recipe-modal__hero-overlay{background:linear-gradient(0deg,rgba(44,24,16,.7) 0,transparent 60%);inset:0;position:absolute}.recipe-modal__hero-title{bottom:24px;color:#fff;font-family:var(--font-display);font-size:2rem;font-style:italic;font-weight:500;left:32px;line-height:1.2;position:absolute;right:32px}.recipe-modal__close{align-items:center;backdrop-filter:blur(8px);background:hsla(38,44%,96%,.9);border:none;border-radius:50%;color:var(--text);cursor:pointer;display:flex;font-size:1rem;height:36px;justify-content:center;position:absolute;right:16px;top:16px;transition:background .15s;width:36px;z-index:2}.recipe-modal__close:hover{background:#fff}.recipe-modal__body{flex:1;overflow-y:auto;padding:32px}.recipe-modal__meta{border-bottom:1px solid var(--border);display:flex;gap:20px;margin-bottom:28px;padding-bottom:20px}.recipe-modal__meta-item{align-items:center;color:var(--text-muted);display:flex;font-size:.82rem;font-weight:600;gap:7px}.recipe-modal__meta-item .icon{font-size:1rem}.recipe-modal__content{display:grid;gap:40px;grid-template-columns:1fr 1.6fr}@media (max-width:600px){.recipe-modal__content{grid-template-columns:1fr}}.recipe-modal__section-title{border-bottom:2px solid var(--accent);color:var(--text);display:inline-block;font-family:var(--font-display);font-size:1.1rem;font-weight:600;letter-spacing:.04em;margin-bottom:14px;padding-bottom:8px}.recipe-modal__ingredients{list-style:none}.recipe-modal__ingredients li{align-items:baseline;border-bottom:1px solid var(--border);display:flex;font-size:.875rem;gap:12px;justify-content:space-between;padding:7px 0}.recipe-modal__ingredients li:last-child{border-bottom:none}.recipe-modal__ingredients li .ing-name{color:var(--text)}.recipe-modal__ingredients li .ing-amount{color:var(--text-muted);font-size:.8rem;font-weight:600;white-space:nowrap}.recipe-modal__preparation{color:var(--text);font-size:.9rem;line-height:1.75}.recipe-modal__preparation ol{padding-left:20px}.recipe-modal__preparation ol li{color:var(--text);padding:6px 0 6px 6px}.recipe-modal__preparation ol li::marker{color:var(--accent);font-family:var(--font-display);font-weight:700}.recipe-modal__preparation p{margin-bottom:.6em}.recipe-modal__rating{align-items:center;display:flex;gap:10px;margin-bottom:16px}.recipe-modal__rating .rating-label{color:var(--text-muted);font-size:.78rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase}.recipe-modal__rating .rating-stars{display:flex;gap:2px}.recipe-modal__rating .rating-star{background:none;border:none;color:var(--border);cursor:pointer;font-size:1.3rem;line-height:1;padding:2px;transition:color .1s,transform .1s}.recipe-modal__rating .rating-star--on{color:var(--accent)}.recipe-modal__rating .rating-star:hover{transform:scale(1.15)}.recipe-modal__nutrition{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}.recipe-modal__nutrition .nutrition-pill{align-items:center;background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius-sm);display:flex;flex-direction:column;min-width:72px;padding:8px 14px}.recipe-modal__nutrition .nutrition-pill__label{color:var(--text-muted);font-size:.65rem;letter-spacing:.06em;margin-bottom:2px;text-transform:uppercase}.recipe-modal__nutrition .nutrition-pill__value{color:var(--text);font-size:.85rem;font-weight:700}.recipe-modal__actions{border-top:1px solid var(--border);display:flex;justify-content:flex-end;margin-top:32px;padding-top:20px}.recipe-modal__actions button{align-items:center;background:var(--accent);border:none;border-radius:100px;color:#fff;cursor:pointer;display:flex;font-family:var(--font-body);font-size:.82rem;font-weight:700;gap:8px;letter-spacing:.06em;padding:10px 24px;text-transform:uppercase;transition:background .15s}.recipe-modal__actions button:hover{background:var(--accent-hover)}.calendar-layout{align-items:start;display:grid;gap:32px;grid-template-columns:1fr 320px;margin:0 auto;max-width:1400px;padding:48px 40px}@media (max-width:1000px){.calendar-layout{grid-template-columns:1fr;padding:24px 20px}}.calendar-main__header{align-items:baseline;display:flex;justify-content:space-between;margin-bottom:24px}.calendar-main__title{color:var(--text);font-family:var(--font-display);font-size:2.8rem;font-style:italic;font-weight:500;line-height:1}.calendar-main__title em{color:var(--accent);font-style:normal}.calendar-wrap{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden}.calendar-wrap .fc{font-family:var(--font-body);font-size:.875rem}.calendar-wrap .fc-toolbar-title{font-family:var(--font-display);font-size:1.4rem;font-weight:500}.calendar-wrap .fc-button{background:var(--surface-alt)!important;border:1px solid var(--border)!important;border-radius:var(--radius-sm)!important;box-shadow:none!important;color:var(--text)!important;font-family:var(--font-body)!important;font-size:.8rem!important;font-weight:600!important;padding:6px 14px!important;transition:background .15s!important}.calendar-wrap .fc-button:hover{background:var(--accent-light)!important;border-color:var(--accent)!important;color:var(--accent)!important}.calendar-wrap .fc-button-primary:not(:disabled).fc-button-active{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important}.calendar-wrap .fc-daygrid-day:hover{background:var(--accent-light)}.calendar-wrap .fc-day-today{background:rgba(196,98,45,.06)!important}.calendar-wrap .fc-daygrid-day-number{color:var(--text-muted);font-size:.8rem;font-weight:600}.calendar-wrap .fc-col-header-cell{background:var(--surface-alt);padding:10px 0}.calendar-wrap .fc-col-header-cell-cushion{color:var(--text-muted);font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.calendar-wrap .fc-event{background:var(--accent)!important;border:none!important;border-radius:var(--radius-sm)!important;cursor:pointer!important;font-size:.75rem!important;font-weight:600!important;padding:2px 6px!important}.calendar-wrap .fc-event:hover{background:var(--accent-hover)!important}.calendar-wrap .fc-daygrid-event-dot{display:none}.calendar-wrap .fc-toolbar{padding:20px 20px 12px}.calendar-sidebar{position:sticky;top:90px}.calendar-sidebar__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.calendar-sidebar__title{color:var(--text);font-family:var(--font-display);font-size:1.2rem;font-style:italic;font-weight:500}.calendar-sidebar__search{margin-bottom:16px;position:relative}.calendar-sidebar__search input{background:var(--surface);border:1.5px solid var(--border);border-radius:100px;font-family:var(--font-body);font-size:.8rem;outline:none;padding:9px 14px 9px 36px;transition:border-color .15s;width:100%}.calendar-sidebar__search input:focus{border-color:var(--accent)}.calendar-sidebar__search-icon{color:var(--text-muted);font-size:.85rem;left:12px;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.calendar-sidebar__list{display:flex;flex-direction:column;gap:8px;max-height:420px;overflow-y:auto;padding-right:4px}.calendar-sidebar__list::-webkit-scrollbar{width:4px}.calendar-sidebar__list::-webkit-scrollbar-track{background:transparent}.calendar-sidebar__list::-webkit-scrollbar-thumb{background:var(--border);border-radius:100px}.calendar-sidebar__recipe{align-items:center;background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius-sm);cursor:grab;display:flex;gap:12px;padding:10px 12px;transition:border-color .15s,box-shadow .15s,transform .1s;user-select:none}.calendar-sidebar__recipe:active{cursor:grabbing;transform:scale(.98)}.calendar-sidebar__recipe:hover{border-color:var(--accent);box-shadow:var(--shadow-sm)}.calendar-sidebar__recipe img{border-radius:6px;flex-shrink:0;height:44px;object-fit:cover;width:44px}.calendar-sidebar__recipe-name{color:var(--text);flex:1;font-family:var(--font-display);font-size:.95rem;font-weight:500;line-height:1.3}.calendar-sidebar__recipe-drag{color:var(--text-muted);font-size:.7rem;opacity:.5}.calendar-sidebar__actions{display:flex;flex-direction:column;gap:8px;margin-top:20px}.calendar-sidebar__btn{align-items:center;background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;display:flex;font-family:var(--font-body);font-size:.78rem;font-weight:700;gap:8px;justify-content:center;letter-spacing:.06em;padding:10px;text-transform:uppercase;transition:all .15s}.calendar-sidebar__btn:hover{background:var(--sage-light);border-color:var(--sage);color:var(--sage)}.calendar-sidebar__btn--primary{background:var(--accent);border-color:var(--accent);color:#fff}.calendar-sidebar__btn--primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:#fff}.shopping-modal{align-items:center;display:flex;inset:0;justify-content:center;opacity:0;pointer-events:none;position:fixed;transition:opacity .25s;z-index:600}.shopping-modal.is-open{opacity:1;pointer-events:all}.shopping-modal__overlay{backdrop-filter:blur(4px);background:rgba(44,24,16,.55);inset:0;position:absolute}.shopping-modal__box{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;max-height:70vh;overflow:hidden;position:relative;transform:scale(.96);transition:transform .25s var(--ease);width:min(500px,94vw);z-index:1}.shopping-modal.is-open .shopping-modal__box{transform:scale(1)}.shopping-modal__header{align-items:center;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;padding:24px 28px 20px}.shopping-modal__title{font-family:var(--font-display);font-size:1.4rem;font-style:italic;font-weight:500}.shopping-modal__close{align-items:center;background:var(--surface-alt);border:none;border-radius:50%;color:var(--text-muted);cursor:pointer;display:flex;font-size:.9rem;height:32px;justify-content:center;transition:background .15s;width:32px}.shopping-modal__close:hover{background:var(--border)}.shopping-modal__content{flex:1;overflow-y:auto;padding:24px 28px}.shopping-modal__list{list-style:none}.shopping-modal__list li{border-bottom:1px solid var(--border);display:flex;font-size:.875rem;justify-content:space-between;padding:9px 0}.shopping-modal__list li:last-child{border-bottom:none}.shopping-modal__list li .sl-name{color:var(--text)}.shopping-modal__list li .sl-amount{color:var(--text-muted);font-size:.8rem;font-weight:600}.shopping-modal__empty{color:var(--text-muted);font-family:var(--font-display);font-size:1.1rem;font-style:italic;padding:40px 0;text-align:center}.shopping-modal__footer{border-top:1px solid var(--border);display:flex;gap:10px;justify-content:flex-end;padding:16px 28px}@media print{.filters,.modal-overlay,.nav,.recipe-modal__close{display:none!important}.recipe-modal{border-radius:0;box-shadow:none;max-height:none;position:static;transform:none}}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:100px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}