@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Fraunces:opsz,wght@9..144,500;9..144,600&display=swap";:root{color:#25302a;font-synthesis:none;text-rendering:optimizelegibility;--cream:#f4efe5;--paper:#fffaf0;--ink:#25302a;--forest:#253a2d;--sage:#a8b89a;--sage-pale:#dae1d0;--tomato:#e77b5a;--tomato-dark:#b9523d;--lemon:#edcd70;--line:#25302a24;--muted:#6f756f;--shadow:0 22px 60px #362f241a;--serif:"Fraunces", Georgia, serif;background:#f4efe5;font-family:DM Sans,sans-serif}*{box-sizing:border-box}html{background:var(--cream);min-width:320px}body{background:radial-gradient(circle at 8% 5%, #e77b5a14, transparent 28rem), radial-gradient(circle at 90% 35%, #a8b89a21, transparent 32rem), var(--cream);min-width:320px;min-height:100vh;margin:0}body:before{z-index:-1;content:"";opacity:.16;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.16'/%3E%3C/svg%3E");position:fixed;inset:0}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline-offset:2px;outline:3px solid #e77b5a57}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:var(--serif);font-weight:500}em{color:var(--tomato-dark);font-weight:500}.kicker{color:var(--tomato-dark);letter-spacing:.14em;text-transform:uppercase;margin-bottom:.7rem;font-size:.69rem;font-weight:700;display:block}.logo{align-items:center;gap:.75rem;display:flex}.logo__mark{width:2.75rem;height:2.75rem;color:var(--cream);background:var(--forest);border-radius:50%;place-items:center;display:grid}.logo strong{font-family:var(--serif);white-space:nowrap;font-size:1.55rem;font-weight:600;line-height:1;display:block}.logo small{color:var(--muted);letter-spacing:.05em;margin-top:.2rem;font-size:.67rem;display:block}.logo--compact{gap:.55rem}.logo--compact .logo__mark{width:2.15rem;height:2.15rem}.logo--compact strong{font-size:1.25rem}.spinner{align-items:center;gap:.5rem;display:inline-flex}.spinner svg{animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.button{border:1px solid var(--line);min-height:2.8rem;color:var(--ink);cursor:pointer;background:#fffaf0b3;border-radius:999px;justify-content:center;align-items:center;gap:.55rem;padding:.75rem 1.05rem;font-size:.84rem;font-weight:700;text-decoration:none;transition:transform .16s,box-shadow .16s,background .16s;display:inline-flex}.button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 22px #25302a1a}.button:disabled{cursor:not-allowed;opacity:.48}.button--primary{border-color:var(--tomato);color:#fffaf4;background:var(--tomato)}.button--primary:hover:not(:disabled){background:var(--tomato-dark)}.button--ghost{background:0 0}.button--ink{border-color:var(--forest);color:var(--cream);background:var(--forest)}.button--spark{color:var(--forest);background:var(--lemon);border-color:#edcd70b3}.button--wide{width:100%}.button--wide>span:last-child:not(.spinner){opacity:.8;margin-left:auto}.button__arrow{margin-left:.45rem;transform:rotate(180deg)}.boot,.page-loader{min-height:100vh;color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:1.6rem;display:flex}.page-loader--small{min-height:18rem}.login{grid-template-columns:minmax(0,1.05fr) minmax(30rem,.95fr);min-height:100vh;display:grid}.login__art{min-height:100vh;color:var(--cream);background:var(--forest);flex-direction:column;justify-content:center;align-items:center;padding:4rem;display:flex;position:relative;overflow:hidden}.login__art:before,.login__art:after{content:"";border:1px solid #f4efe529;border-radius:50%;width:29rem;height:29rem;position:absolute}.login__art:after{border-color:#f4efe514;width:38rem;height:38rem}.login__halo{background:var(--tomato);border-radius:50%;width:24rem;height:24rem;position:absolute;box-shadow:0 0 100px #e77b5a40}.login__plate{z-index:1;width:17rem;height:17rem;color:var(--forest);background:var(--cream);box-shadow:inset 0 0 0 1.3rem var(--cream), inset 0 0 0 1.38rem #253a2d29, var(--shadow);border:1px solid #ffffff73;border-radius:50%;place-items:center;display:grid;position:relative;transform:rotate(-7deg)}.login__plate span{font-family:var(--serif);text-align:center;font-size:2rem;line-height:1.05}.login__art>p{z-index:1;color:#f4efe5b8;max-width:29rem;font-family:var(--serif);text-align:center;margin:3rem 0 0;font-size:1.08rem;line-height:1.6;position:relative}.login__panel{flex-direction:column;justify-content:center;padding:clamp(3rem,8vw,8rem);display:flex}.login__copy{max-width:36rem;margin:6rem 0 2.3rem}.login__copy h1{letter-spacing:-.045em;margin-bottom:1.2rem;font-size:clamp(2.8rem,4.7vw,4.7rem);line-height:.98}.login__copy p{color:var(--muted)}.login__form{max-width:28rem}.login__form label,.field,.source-input>label{color:#59605b;letter-spacing:.02em;flex-direction:column;gap:.5rem;font-size:.77rem;font-weight:700;display:flex}input,textarea{border:1px solid var(--line);width:100%;color:var(--ink);background:#fffaf0b3;border-radius:.85rem;outline:0;transition:border-color .16s,box-shadow .16s,background .16s}input{min-height:3.15rem;padding:0 .95rem}textarea{resize:vertical;padding:.85rem .95rem;line-height:1.55}input:focus,textarea:focus{border-color:var(--tomato);background:var(--paper);box-shadow:0 0 0 4px #e77b5a17}.login__form .button{margin-top:1rem}.login__hint{color:var(--muted);margin-top:1rem;font-size:.69rem;line-height:1.5}.login__hint code{background:var(--sage-pale);padding:.1rem .25rem}.form-error,.form-success{color:#8e3327;background:#e77b5a26;border-radius:.7rem;margin:1rem 0 0;padding:.8rem 1rem;font-size:.8rem}.form-success{color:#34533d;background:#a8b89a40}.shell{min-height:100vh}.topbar{z-index:20;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#f4efe5e0;grid-template-columns:1fr auto 1fr;align-items:center;height:4.5rem;padding:0 4vw;display:grid;position:sticky;top:0}.topbar__logo{cursor:pointer;background:0 0;border:0;width:max-content;padding:0}.desktop-nav{gap:.25rem;display:flex}.desktop-nav button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;align-items:center;gap:.38rem;padding:.55rem .8rem;font-size:.75rem;font-weight:700;display:inline-flex}.desktop-nav button.is-active{color:var(--forest);background:#a8b89a42}.profile{justify-content:flex-end;align-items:center;gap:.55rem;display:flex}.profile__avatar{width:2rem;height:2rem;color:var(--forest);background:var(--sage-pale);font-family:var(--serif);border:1px solid #253a2d40;border-radius:50%;place-items:center;font-weight:600;display:grid}.profile__name{font-size:.75rem;font-weight:700}.icon-button{width:2rem;height:2rem;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;padding:0;display:grid}.mobile-nav{display:none}.page{width:min(1180px,100% - 3rem);margin:0 auto;padding:4.5rem 0 7rem;animation:.42s both rise}@keyframes rise{0%{opacity:0;transform:translateY(10px)}}.dashboard-hero{min-height:26rem;color:var(--cream);background:radial-gradient(circle at 82% 22%, #edcd702e, transparent 18rem), var(--forest);box-shadow:var(--shadow);border-radius:2rem;grid-template-columns:minmax(0,1.25fr) minmax(17rem,.75fr);align-items:center;gap:5rem;padding:clamp(2.5rem,6vw,5.2rem);display:grid;position:relative;overflow:hidden}.dashboard-hero:after{content:"";pointer-events:none;border:1px solid #f4efe51a;border-radius:50%;width:30rem;height:30rem;position:absolute;bottom:-12rem;right:-8rem}.dashboard-hero h1{letter-spacing:-.055em;margin-bottom:1rem;font-size:clamp(3.4rem,6vw,6.4rem);line-height:.92}.dashboard-hero h1 em{color:var(--lemon)}.dashboard-hero>div:first-child>p{color:#f4efe5b8;max-width:37rem;font-size:.98rem;line-height:1.6}.hero-actions{gap:.7rem;margin-top:1.7rem;display:flex}.dashboard-hero .button--ghost{color:var(--cream);border-color:#f4efe538}.hero-note{z-index:2;color:var(--ink);background:#f6df99;padding:2rem 2.1rem 2.2rem;position:relative;transform:rotate(3deg);box-shadow:0 22px 35px #0000002e}.hero-note__tape{background:#fffaf08f;width:5rem;height:1.4rem;position:absolute;top:-.7rem;left:calc(50% - 2.5rem);transform:rotate(-4deg)}.hero-note strong{font-family:var(--serif);margin:1.4rem 0 .6rem;font-size:1.3rem;display:block}.hero-note p{margin:0;font-size:.83rem;line-height:1.6}.section-block{padding:5rem 0 1rem}.section-heading,.page-heading{justify-content:space-between;align-items:end;gap:2rem;margin-bottom:1.8rem;display:flex}.section-heading h2{letter-spacing:-.03em;margin:0;font-size:clamp(2rem,3vw,3rem)}.section-heading--compact{align-items:start;margin-bottom:1.2rem}.section-heading--compact h2{font-size:1.8rem}.text-button,.back-link{border:0;border-bottom:1px solid var(--line);color:var(--forest);cursor:pointer;background:0 0;padding:.4rem 0;font-size:.77rem;font-weight:700}.text-button span{margin-left:.25rem}.recipe-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.3rem;display:grid}.recipe-grid--library{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:2rem}.recipe-card{border:1px solid var(--line);background:#fffaf0a6;border-radius:1.25rem;transition:transform .22s,box-shadow .22s,border-color .22s;position:relative;overflow:hidden;box-shadow:0 8px 26px #362f240a}.recipe-card:hover{box-shadow:var(--shadow);transform:translateY(-5px)rotate(-.3deg)}.recipe-card--selected{border-color:var(--tomato);box-shadow:0 0 0 3px #e77b5a26}.recipe-card__hit{text-align:left;cursor:pointer;background:0 0;border:0;width:100%;padding:0}.recipe-card__photo{object-fit:cover;width:100%;height:13rem;display:block}.recipe-placeholder{font-family:var(--serif);flex-direction:column;justify-content:center;align-items:center;gap:.6rem;display:flex}.recipe-placeholder span{font-size:.8rem}.recipe-placeholder--sage{color:var(--forest);background:var(--sage-pale)}.recipe-placeholder--tomato{color:#fff7ee;background:var(--tomato)}.recipe-placeholder--lemon{color:#68572a;background:var(--lemon)}.recipe-card__body{padding:1.15rem 1.2rem 1.25rem}.recipe-card__eyebrow{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;justify-content:space-between;align-items:center;font-size:.64rem;font-weight:700;display:flex}.recipe-card__eyebrow span{align-items:center;gap:.25rem;display:inline-flex}.recipe-card h3{margin:.8rem 0 .5rem;font-size:1.45rem;line-height:1.05}.recipe-card p{min-height:2.7rem;color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-bottom:1rem;font-size:.76rem;line-height:1.5;display:-webkit-box;overflow:hidden}.recipe-card__footer{justify-content:space-between;align-items:center;min-height:1.4rem;display:flex}.stars{color:var(--tomato);display:flex}.stars button,.stars>span{color:inherit;background:0 0;border:0;place-items:center;padding:.08rem;display:grid}.stars--interactive button{cursor:pointer;transition:transform .12s}.stars--interactive button:hover{transform:scale(1.2)}.make-again{color:var(--forest);align-items:center;gap:.25rem;font-size:.62rem;font-weight:700;display:inline-flex}.selection-check{border:2px solid var(--paper);color:#fff;background:var(--tomato);border-radius:50%;place-items:center;width:1.7rem;height:1.7rem;display:grid;position:absolute;top:.8rem;right:.8rem;box-shadow:0 3px 10px #00000026}.dashboard-columns{grid-template-columns:1.15fr .85fr;gap:1.4rem;margin-top:4rem;display:grid}.paper-panel,.grocery-preview{border:1px solid var(--line);background:#fffaf0b8;border-radius:1.35rem;min-height:22rem;padding:2rem}.grocery-preview{color:var(--cream);background:var(--forest)}.grocery-preview .kicker{color:var(--lemon)}.recent-list{display:grid}.recent-list button{border:0;border-bottom:1px solid var(--line);text-align:left;cursor:pointer;background:0 0;grid-template-columns:3.1rem 1fr auto;align-items:center;gap:.8rem;padding:.72rem 0;display:grid}.recent-list img,.recent-list__placeholder{object-fit:cover;background:var(--sage-pale);border-radius:.65rem;place-items:center;width:3.1rem;height:3.1rem;display:grid}.recent-list strong,.recent-list small{display:block}.recent-list strong{font-family:var(--serif);font-size:1rem}.recent-list small{color:var(--muted);margin-top:.18rem;font-size:.67rem}.grocery-preview ul{min-height:10rem;margin:0 0 1.2rem;padding:0;list-style:none}.grocery-preview li{color:#f4efe5d6;font-family:var(--serif);align-items:center;gap:.6rem;padding:.43rem 0;font-size:1rem;display:flex}.grocery-preview li span{border:1px solid #f4efe580;border-radius:50%;width:.72rem;height:.72rem}.soft-copy{color:var(--muted);font-size:.8rem}.empty-state{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:15rem;padding:2rem;display:flex}.empty-state__icon{width:3.3rem;height:3.3rem;color:var(--forest);background:var(--sage-pale);border-radius:50%;place-items:center;margin-bottom:1rem;display:grid}.empty-state h3{margin-bottom:.5rem;font-size:1.5rem}.empty-state p{max-width:28rem;color:var(--muted);font-size:.8rem;line-height:1.55}.page-heading{align-items:center;margin-bottom:3rem}.page-heading h1{letter-spacing:-.05em;margin:0;font-size:clamp(3rem,5vw,5.4rem);line-height:.97}.page-heading p{max-width:38rem;color:var(--muted);margin:1rem auto 0;line-height:1.6}.page-heading--center{text-align:center;justify-content:center}.library-tools{justify-content:space-between;align-items:center;gap:1.5rem;margin-bottom:2rem;display:flex}.search-box{border:1px solid var(--line);width:min(34rem,100%);color:var(--muted);background:#fffaf0a6;border-radius:999px;align-items:center;gap:.5rem;padding-left:.85rem;display:flex}.search-box input{box-shadow:none;background:0 0;border:0}.filter-chips{gap:.35rem;display:flex}.filter-chips button{border:1px solid var(--line);color:var(--muted);white-space:nowrap;cursor:pointer;background:0 0;border-radius:999px;padding:.55rem .8rem;font-size:.7rem;font-weight:700}.filter-chips button.is-active{border-color:var(--forest);color:var(--cream);background:var(--forest)}.add-page{max-width:980px}.source-card{border:1px solid var(--line);box-shadow:var(--shadow);background:#fffaf0b8;border-radius:1.5rem;margin-bottom:5rem;overflow:hidden}.source-tabs{border-bottom:1px solid var(--line);grid-template-columns:repeat(4,1fr);display:grid}.source-tabs button{border:0;border-right:1px solid var(--line);min-height:4rem;color:var(--muted);cursor:pointer;background:#f4efe58a;justify-content:center;align-items:center;gap:.45rem;font-size:.73rem;font-weight:700;display:flex}.source-tabs button:last-child{border-right:0}.source-tabs button.is-active{color:var(--forest);background:var(--paper);box-shadow:inset 0 -3px var(--tomato)}.source-input{flex-direction:column;justify-content:center;min-height:18rem;padding:2rem;display:flex}.source-input small{color:var(--muted);font-size:.68rem;font-weight:400;line-height:1.5}.source-input>.button{align-self:flex-end;margin-top:1rem}.url-input{border:1px solid var(--line);background:var(--paper);border-radius:.85rem;align-items:center;gap:.25rem;padding-left:.75rem;display:flex}.url-input input{box-shadow:none;background:0 0;border:0}.photo-picker{gap:.8rem;display:grid}.photo-picker__intro,.photo-picker__preview{background:#dae1d04d;border:1px dashed #253a2d59;border-radius:1rem;flex-direction:column;justify-content:center;align-items:center;gap:.4rem;min-height:10.5rem;display:flex;position:relative;overflow:hidden}.photo-picker__intro strong{color:var(--forest);font-family:var(--serif);margin-top:.45rem;font-size:1.1rem}.photo-picker__intro span{color:var(--muted);font-size:.7rem}.photo-picker__preview{border-style:solid;height:18rem}.photo-picker__preview img{object-fit:contain;width:100%;height:100%}.photo-picker__preview button{width:2.2rem;height:2.2rem;color:var(--cream);cursor:pointer;background:#253a2de0;border:1px solid #f4efe559;border-radius:50%;place-items:center;padding:0;display:grid;position:absolute;top:.65rem;right:.65rem;box-shadow:0 6px 18px #253a2d2e}.photo-picker__actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;display:grid}.photo-source-button{border:1px solid var(--line);min-height:4.8rem;color:var(--forest);background:var(--paper);cursor:pointer;border-radius:.95rem;align-items:center;padding:.85rem .95rem;transition:transform .16s,border-color .16s,box-shadow .16s;position:relative;box-shadow:0 8px 18px #253a2d0d;gap:.7rem!important;display:flex!important}.photo-source-button--library{background:#f4efe5e6;border-color:#d9624859}.photo-source-button:hover{border-color:var(--tomato);transform:translateY(-1px);box-shadow:0 10px 22px #253a2d17}.photo-source-button input{opacity:0;width:1px;height:1px;position:absolute}.photo-source-button>span{flex-direction:column;align-items:flex-start;gap:.12rem;display:flex}.photo-source-button strong{font-size:.78rem}.photo-source-button small{color:var(--muted);font-size:.62rem;font-weight:500}@media (width<=520px){.photo-picker__actions{grid-template-columns:1fr}}.manual-prompt{color:var(--muted);font-family:var(--serif);justify-content:center;align-items:center;gap:.7rem;margin:0;font-size:1.15rem;display:flex}.recipe-form{padding:0 2rem}.form-section-heading{border-top:1px solid var(--line);grid-template-columns:2.6rem 1fr;align-items:start;gap:1rem;margin:4rem 0 1.4rem;padding-top:2rem;display:grid}.form-section-heading:first-child{margin-top:0}.form-section-heading>span,.section-number{width:2.35rem;height:2.35rem;color:var(--forest);background:var(--sage-pale);font-family:var(--serif);border-radius:50%;place-items:center;font-size:.75rem;display:grid}.form-section-heading h2{margin-bottom:.25rem;font-size:1.8rem}.form-section-heading p{color:var(--muted);margin:0;font-size:.75rem}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.form-grid--split{gap:1.25rem}.field--wide{grid-column:1/-1}.form-actions{justify-content:flex-end;gap:.7rem;margin-top:2rem;display:flex}.back-link{align-items:center;gap:.4rem;margin-bottom:1.6rem;display:inline-flex}.recipe-hero{grid-template-columns:minmax(18rem,.85fr) minmax(0,1.15fr);align-items:center;gap:clamp(2rem,6vw,6rem);display:grid}.recipe-hero__photo{object-fit:cover;width:100%;height:31rem;box-shadow:var(--shadow);border-radius:45% 45% 1.5rem 1.5rem}.recipe-hero__copy h1{letter-spacing:-.055em;margin-bottom:1rem;font-size:clamp(3.2rem,6vw,6rem);line-height:.93}.recipe-hero__copy>p{max-width:36rem;color:var(--muted);font-size:.95rem;line-height:1.65}.recipe-meta{flex-wrap:wrap;gap:.6rem;margin:1.3rem 0;display:flex}.recipe-meta span,.tag-row span{border:1px solid var(--line);color:var(--muted);border-radius:999px;align-items:center;gap:.35rem;padding:.45rem .7rem;font-size:.67rem;font-weight:700;display:inline-flex}.tag-row{flex-wrap:wrap;gap:.4rem;display:flex}.tag-row span{color:var(--forest);background:var(--sage-pale);border:0}.recipe-hero__actions{gap:.6rem;margin-top:1.8rem;display:flex}.recreate-banner{background:#edcd7047;border:1px solid #edcd70e6;border-radius:.9rem;align-items:center;gap:.8rem;margin:3.5rem 0 -1rem;padding:1rem 1.3rem;display:flex}.recreate-banner strong,.recreate-banner span{display:block}.recreate-banner strong{font-family:var(--serif)}.recreate-banner span{color:var(--muted);margin-top:.15rem;font-size:.7rem}.recipe-layout{grid-template-columns:minmax(0,1.65fr) minmax(17rem,.65fr);align-items:start;gap:5rem;margin-top:5rem;display:grid}.recipe-section{border-top:1px solid var(--line);grid-template-columns:2.8rem 1fr;gap:1.2rem;padding:2.5rem 0;display:grid}.recipe-section h2{margin-bottom:1.5rem;font-size:2.15rem}.source-archive{border:1px solid var(--line);background:#fffaf0b8;border-radius:1rem;margin:2.5rem 0;padding:1.4rem}.source-archive__heading{justify-content:space-between;align-items:end;gap:1rem;margin-bottom:1rem;display:flex}.source-archive__heading h2{margin:.2rem 0 0;font-size:1.8rem}.source-archive__heading small,.source-archive>p{color:var(--muted);font-size:.68rem}.source-archive pre{white-space:pre-wrap;color:#434b46;background:var(--paper);max-height:34rem;font:.76rem/1.6 var(--sans);border-radius:.75rem;margin:0;padding:1rem;overflow:auto}.source-archive>p{margin:.8rem 0 0}.source-archive a{color:var(--forest);font-weight:700}.ingredient-list,.swap-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem 1.5rem;margin:0;padding:0;list-style:none;display:grid}.ingredient-list li{color:#434b46;align-items:baseline;gap:.65rem;font-size:.84rem;line-height:1.45;display:flex}.ingredient-list li span{background:var(--tomato);border-radius:50%;flex:none;width:.4rem;height:.4rem}.step-list{gap:1.2rem;margin:0;padding:0;list-style:none;display:grid}.step-list li{grid-template-columns:2.2rem 1fr;gap:.85rem;display:grid}.step-list span{border:1px solid var(--line);width:2.2rem;height:2.2rem;color:var(--tomato-dark);font-family:var(--serif);border-radius:50%;place-items:center;font-size:.8rem;display:grid}.step-list p{color:#434b46;margin:.4rem 0 0;font-size:.88rem;line-height:1.65}.swap-list{display:grid}.swap-list li{background:#dae1d057;border-radius:.65rem;padding:.85rem;font-size:.76rem;line-height:1.5}.memory-sidebar{gap:1rem;display:grid;position:sticky;top:6rem}.memory-card,.lesson-note{border:1px solid var(--line);background:#fffaf0b3;border-radius:1rem;padding:1.4rem}.memory-card h3{margin-bottom:.7rem;font-size:1.35rem}.memory-card--rating{background:var(--sage-pale)}.memory-actions{grid-template-columns:repeat(2,1fr);gap:.45rem;display:grid}.memory-actions button{border:1px solid var(--line);background:var(--paper);cursor:pointer;border-radius:.65rem;align-items:center;gap:.4rem;min-height:2.6rem;padding:.6rem .7rem;font-size:.66rem;font-weight:700;display:flex}.memory-card textarea{margin-top:.65rem;font-size:.74rem}.lesson-note{background:var(--lemon);border:0;border-radius:0;position:relative;transform:rotate(1.5deg);box-shadow:0 12px 26px #362f241c}.lesson-note:before{content:"";background:#fffaf099;width:3.5rem;height:1rem;position:absolute;top:-.55rem;left:40%}.lesson-note span{color:#725f2a;letter-spacing:.1em;text-transform:uppercase;font-size:.63rem;font-weight:700}.lesson-note p{font-family:var(--serif);margin:.6rem 0 0;line-height:1.5}.note-stack{gap:.9rem;display:grid}.note-stack>div{border-bottom:1px solid var(--line);padding-bottom:.8rem}.note-stack>div:last-child{border-bottom:0;padding-bottom:0}.note-stack strong,.note-stack small{font-size:.66rem}.note-stack p{font-family:var(--serif);margin:.3rem 0;font-size:.86rem;line-height:1.5}.note-stack small{color:var(--muted)}.grocery-layout{grid-template-columns:minmax(0,1.35fr) minmax(18rem,.65fr);align-items:start;gap:2rem;display:grid}.grocery-sheet{border:1px solid var(--line);background:var(--paper);box-shadow:var(--shadow);border-radius:1.2rem;padding:2.2rem}.grocery-sheet__top{border-bottom:2px solid var(--forest);justify-content:space-between;align-items:end;margin-bottom:1.6rem;padding-bottom:1.3rem;display:flex}.grocery-sheet__top span,.grocery-sheet__top strong{display:block}.grocery-sheet__top span{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;font-size:.65rem;font-weight:700}.grocery-sheet__top strong{font-family:var(--serif);margin-top:.3rem;font-size:1.6rem}.grocery-sheet__top small{color:var(--muted);font-size:.65rem}.grocery-category{margin-bottom:1.6rem}.grocery-category h2{color:var(--tomato-dark);letter-spacing:.11em;text-transform:uppercase;margin-bottom:.55rem;font-family:DM Sans,sans-serif;font-size:.67rem;font-weight:700}.grocery-item{border-bottom:1px dotted var(--line);grid-template-columns:1.5rem 1fr auto;align-items:center;gap:.6rem;min-height:2.8rem;display:grid}.grocery-item__check{cursor:pointer;background:0 0;border:1px solid #253a2d66;border-radius:.3rem;place-items:center;width:1.15rem;height:1.15rem;padding:0;display:grid}.grocery-item__name{text-align:left;cursor:pointer;background:0 0;border:0;align-items:baseline;gap:.5rem;padding:.4rem 0;display:flex}.grocery-item__name span{font-family:var(--serif);font-size:.95rem}.grocery-item__name small{color:var(--muted);font-size:.62rem}.grocery-item.is-checked{opacity:.46}.grocery-item.is-checked .grocery-item__name span{text-decoration:line-through}.grocery-item.is-checked .grocery-item__check{color:#fff;background:var(--forest)}.shop-links{gap:.3rem;display:flex}.shop-links a{border:1px solid var(--line);width:1.7rem;height:1.7rem;color:var(--muted);border-radius:50%;place-items:center;font-size:.54rem;font-weight:700;text-decoration:none;display:grid}.grocery-builder{color:var(--cream);background:var(--forest);border-radius:1.2rem;padding:1.7rem;position:sticky;top:6rem}.grocery-builder .kicker{color:var(--lemon)}.grocery-builder h2{margin-bottom:.6rem;font-size:1.8rem}.grocery-builder>p{color:#f4efe5a3;font-size:.74rem;line-height:1.55}.mini-recipe-list{max-height:20rem;margin:1rem 0;overflow:auto}.mini-recipe-list>button{color:#f4efe5cc;text-align:left;cursor:pointer;background:0 0;border:0;border-bottom:1px solid #f4efe51f;grid-template-columns:1.4rem 1fr;align-items:center;gap:.6rem;width:100%;padding:.65rem 0;display:grid}.mini-check{border:1px solid #f4efe566;border-radius:.25rem;place-items:center;width:1.15rem;height:1.15rem;display:grid}.mini-recipe-list button.is-selected .mini-check{color:var(--forest);background:var(--lemon)}.mini-recipe-list small{color:#f4efe56b;margin-top:.1rem;font-size:.58rem;display:block}.grocery-empty .empty-state{min-height:12rem}.sticky-builder{z-index:10;width:min(35rem,100% - 2rem);color:var(--cream);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#253a2df5;border:1px solid #f4efe529;border-radius:999px;justify-content:space-between;align-items:center;margin:2.5rem auto 0;padding:.65rem .75rem .65rem 1.2rem;display:flex;position:sticky;bottom:1rem;box-shadow:0 18px 40px #25302a3d}.sticky-builder>span{font-family:var(--serif);font-size:.9rem}@media (width<=920px){.login{grid-template-columns:1fr}.login__art{min-height:42vh}.login__panel{padding:3rem 8vw 5rem}.login__copy{margin-top:3.5rem}.desktop-nav{display:none}.topbar{grid-template-columns:1fr auto}.dashboard-hero{grid-template-columns:1fr 15rem;gap:2.5rem}.recipe-grid,.recipe-grid--library{grid-template-columns:repeat(2,minmax(0,1fr))}.recipe-layout{grid-template-columns:1fr;gap:2rem}.memory-sidebar{grid-template-columns:repeat(2,1fr);position:static}.lesson-note{transform:none}.grocery-layout{grid-template-columns:1fr}.grocery-builder{position:static}}@media (width<=680px){body{padding-bottom:env(safe-area-inset-bottom)}.login__art{min-height:32vh;padding:2rem}.login__art:before{width:18rem;height:18rem}.login__art:after{width:24rem;height:24rem}.login__halo{width:13rem;height:13rem}.login__plate{width:10rem;height:10rem;box-shadow:inset 0 0 0 .75rem var(--cream), inset 0 0 0 .82rem #253a2d29, var(--shadow)}.login__plate span{font-size:1.25rem}.login__art>p{display:none}.login__panel{padding:2rem 1.4rem 4rem}.login__copy{margin:3rem 0 1.8rem}.login__copy h1{font-size:2.65rem}.topbar{height:4rem;padding:0 1rem}.logo--compact{gap:.4rem}.logo--compact .logo__mark{width:1.95rem;height:1.95rem}.logo--compact strong{font-size:1rem}.profile__name{display:none}.mobile-nav{z-index:30;right:.75rem;bottom:calc(.65rem + env(safe-area-inset-bottom));color:#f4efe5a8;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#253a2df7;border:1px solid #f4efe529;border-radius:1.2rem;grid-template-columns:repeat(4,1fr);align-items:center;height:4.3rem;padding:.35rem .45rem;display:grid;position:fixed;left:.75rem;box-shadow:0 14px 34px #25302a47}.mobile-nav button{color:inherit;background:0 0;border:0;flex-direction:column;align-items:center;gap:.2rem;padding:0;font-size:.52rem;font-weight:700;display:flex}.mobile-nav button span{place-items:center;min-height:1.5rem;display:grid}.mobile-nav button.is-active{color:var(--lemon)}.mobile-nav__add span{border:4px solid var(--cream);color:#fff;background:var(--tomato);border-radius:50%;width:2.65rem;height:2.65rem;margin-top:-1.6rem}.page{width:calc(100% - 1.5rem);padding:2.2rem 0 7rem}.dashboard-hero{border-radius:1.4rem;grid-template-columns:1fr;min-height:auto;padding:2.2rem 1.4rem 2rem}.dashboard-hero h1{font-size:3.5rem}.hero-note{display:none}.hero-actions{flex-direction:column}.section-block{padding-top:3.5rem}.section-heading,.page-heading{flex-direction:column;align-items:start;gap:1rem}.section-heading .text-button{align-self:flex-start}.recipe-grid,.recipe-grid--library{grid-template-columns:1fr}.recipe-card__photo{height:13.5rem}.dashboard-columns{grid-template-columns:1fr;margin-top:2.8rem}.paper-panel,.grocery-preview{padding:1.4rem}.page-heading h1{font-size:3.1rem}.library-tools{flex-direction:column;align-items:stretch}.filter-chips{width:100%;padding-bottom:.3rem;overflow-x:auto}.source-tabs button{flex-direction:column;gap:.2rem;min-height:3.7rem;font-size:.58rem}.source-input{min-height:16rem;padding:1rem}.source-input>.button{width:100%}.recipe-form{padding:0 .4rem}.form-grid,.form-grid--split{grid-template-columns:1fr}.field--wide{grid-column:auto}.form-actions{flex-direction:column-reverse}.form-actions .button{width:100%}.recipe-hero{grid-template-columns:1fr;gap:2rem}.recipe-hero__photo{border-radius:45% 45% 1rem 1rem;height:21rem}.recipe-hero__copy h1{font-size:3.6rem}.recipe-hero__actions{flex-direction:column;align-items:stretch}.recipe-layout{margin-top:3rem}.recipe-section{grid-template-columns:2.3rem 1fr;gap:.7rem}.ingredient-list,.swap-list,.memory-sidebar{grid-template-columns:1fr}.grocery-sheet{padding:1.2rem}.grocery-sheet__top{flex-direction:column;align-items:start;gap:.5rem}.shop-links{display:none}.grocery-item{grid-template-columns:1.5rem 1fr}.sticky-builder{width:100%;bottom:5.6rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
