@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Fraunces:opsz,wght@9..144,600;9..144,700&display=swap";:root{font-family:DM Sans,system-ui,sans-serif;color:#17372f;background:#f7f5ef;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}h1,h2,h3,p{margin-top:0}h1,h2{font-family:Fraunces,Georgia,serif;letter-spacing:-.035em}h1{font-size:clamp(2.3rem,4vw,3.7rem);line-height:1.08;margin-bottom:.75rem}h2{font-size:1.5rem}p{line-height:1.55}.app-shell{min-height:100vh}.topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;background:#17372f;color:#fff;padding:1rem clamp(1rem,4vw,3rem)}.brand{display:flex;align-items:center;gap:.7rem;font-family:Fraunces,Georgia,serif;font-size:1.55rem;line-height:1}.brand small{display:block;font-family:DM Sans,sans-serif;font-size:.69rem;letter-spacing:.01em;margin-top:.25rem;color:#b9d8c8}.brand-mark{display:grid;place-items:center;width:2.5rem;height:2.5rem;background:#f2b36e;color:#17372f;border-radius:50%;font-size:2rem}.brand-mark.large{width:3.7rem;height:3.7rem;font-size:3rem;margin-bottom:2.5rem}.account{display:flex;align-items:center;gap:1rem}.account select{background:#22483d;color:#fff;border:1px solid #638072;padding:.6rem .8rem;border-radius:.5rem}.text-button{border:0;background:none;color:inherit;text-decoration:underline;padding:.4rem}.nav{display:flex;gap:.2rem;overflow:auto;padding:.65rem clamp(1rem,4vw,3rem);background:#fff;border-bottom:1px solid #e3e9e2}.nav button{border:0;background:transparent;color:#597066;padding:.7rem .95rem;border-radius:.5rem;white-space:nowrap;font-weight:700}.nav button:hover,.nav button.active{background:#e6efe7;color:#17372f}.nav button.active{box-shadow:inset 0 -3px #de9553}.content{max-width:1320px;margin:auto;padding:2.5rem clamp(1rem,4vw,3rem) 5rem}.page-heading{max-width:650px;margin-bottom:2rem}.page-heading p:last-child{color:#60736a}.eyebrow{font-size:.72rem;letter-spacing:.13em;text-transform:uppercase;font-weight:800;color:#a35f32;margin-bottom:.6rem}.card{background:#fff;border:1px solid #e5e7df;box-shadow:0 8px 28px #12372a0b;border-radius:1rem;padding:1.5rem}.card h2{margin-bottom:1rem}.period-banner{display:flex;align-items:center;justify-content:space-between;gap:1rem;background:#e8eee5;border-radius:1rem;padding:1.2rem 1.5rem;margin-bottom:1.25rem}.period-banner h2{margin:0}.period-banner>span{color:#49695a;font-weight:700}.session-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:1.25rem}.session-card{padding:0;overflow:hidden}.session-head{display:flex;justify-content:space-between;align-items:center;padding:1.35rem 1.5rem;border-bottom:1px solid #edf0e9}.session-head h2{margin:0}.pill{display:inline-flex;align-items:center;white-space:nowrap;border-radius:100px;background:#eaf0e7;color:#32634f;font:700 .72rem DM Sans,sans-serif;padding:.35rem .6rem}.pill.done{background:#f8e5ce;color:#805222}.meal-options{padding:.5rem}.meal-option{display:flex;align-items:center;text-align:left;gap:.75rem;width:100%;border:1px solid transparent;background:#fff;border-radius:.65rem;padding:.65rem;transition:background .15s,border-color .15s}.meal-option:hover:not(:disabled),.meal-option.selected{background:#f3f8f1;border-color:#6b9d79}.meal-option:disabled{opacity:1}.meal-option:focus-visible,.button:focus-visible,.nav button:focus-visible{outline:3px solid #d88e47;outline-offset:2px}.meal-thumb{display:grid;place-items:center;flex:0 0 3.25rem;width:3.25rem;height:3.25rem;overflow:hidden;border-radius:.6rem;background:#e9d7b5;color:#a35f32;font-size:1.8rem}.meal-thumb img{width:100%;height:100%;object-fit:cover}.meal-copy{display:flex;flex-direction:column;min-width:0;flex:1}.meal-copy strong{font-size:.95rem}.meal-copy small{color:#6b7c73;margin-top:.2rem}.vote-meta{font-size:.72rem;color:#6b7c73;white-space:nowrap}.selected .vote-meta{font-weight:800;color:#28734b}.session-message{padding:1.5rem;color:#63786d}.hint{font-size:.82rem;color:#68786f;margin:.7rem 1.4rem 1.3rem}.split-layout{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(290px,.85fr);gap:1.3rem;align-items:start}.two-col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.3rem}.form-stack{display:flex;flex-direction:column;gap:1rem}.form-stack h2{margin-bottom:0}label{display:flex;flex-direction:column;gap:.35rem;font-size:.86rem;font-weight:700}input,select,textarea{width:100%;border:1px solid #bdcbc2;border-radius:.5rem;padding:.7rem .8rem;color:#17372f;background:#fff}textarea{resize:vertical}input:focus,select:focus,textarea:focus{outline:2px solid #8ab798;border-color:#53956a}.form-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.label-help{font-size:.72rem;color:#738178;font-weight:400}.button{border:0;border-radius:.55rem;padding:.75rem 1rem;font-weight:800}.button.primary{background:#176345;color:#fff}.button.primary:hover:not(:disabled){background:#114d35}.button.secondary{background:#e4eee6;color:#174a34}.button.secondary:hover:not(:disabled){background:#d5e6d9}.simple-list,.shopping-list{list-style:none;padding:0;margin:0}.simple-list li{padding:.85rem 0;border-bottom:1px solid #edf0e9;display:flex;flex-direction:column;gap:.22rem}.simple-list li:last-child,.shopping-list li:last-child{border:0}.simple-list span,.muted{color:#68786f}.shopping-list li{display:flex;align-items:center;justify-content:space-between;gap:1rem;border-bottom:1px solid #edf0e9;padding:.85rem 0}.shopping-list li>span:first-child{display:flex;align-items:center;gap:.5rem}.check-list{display:flex;flex-direction:column;gap:.65rem}.check-list label{display:flex;align-items:center;flex-direction:row;font-size:.95rem;font-weight:500}.check-list input{width:auto}.add-item{border-top:1px solid #edf0e9;margin-top:1.2rem;padding-top:1.2rem}.icon-button{border:0;border-radius:50%;background:#f3e7dd;color:#a35f32;width:1.6rem;height:1.6rem;margin-left:.5rem}.invite-code{display:flex;align-items:center;justify-content:space-between;gap:1rem;background:#f0f5ed;border-radius:.5rem;padding:1rem;overflow-wrap:anywhere}.invite-code span{font-family:monospace}.empty{padding:3rem;text-align:center;background:#fff;border:1px dashed #b8cabc;border-radius:1rem;color:#60736a}.alert{padding:.8rem 1rem;border-radius:.55rem}.alert.error{background:#fff0ea;color:#803d2e}.alert.success{background:#e9f4eb;color:#28613a}.messages:empty{display:none}.auth-layout{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.auth-intro{display:flex;flex-direction:column;justify-content:center;background:#17372f;color:#fff;padding:clamp(2rem,6vw,6rem)}.auth-intro h1{max-width:650px}.auth-intro p:last-child{max-width:480px;color:#c4dace}.auth-card{align-self:center;justify-self:center;width:min(90%,430px)}.auth-card label{margin:1rem 0}.auth-card .button{width:100%}.auth-card .text-button{margin-top:1rem;color:#176345}.dev-note{padding:.6rem;background:#fff6e9;border-radius:.5rem}.center{min-height:100vh;display:grid;place-items:center}@media (max-width:800px){.split-layout,.two-col,.auth-layout{grid-template-columns:1fr}.auth-intro{padding:2.5rem 1.5rem}.auth-intro .brand-mark{margin-bottom:1rem}.auth-intro h1{font-size:2.3rem}.auth-card{margin:2rem 0}.account-name{display:none}.topbar{flex-wrap:wrap}.brand small{display:none}}@media (max-width:480px){.content{padding-top:1.7rem}.card{padding:1.2rem}.session-card{padding:0}.period-banner{align-items:start;flex-direction:column}.account{width:100%;justify-content:space-between}}:root .checklist-row{display:flex;align-items:center;gap:.65rem;cursor:pointer}.checklist-row input{width:1.15rem;height:1.15rem;flex:none}.checked-item{text-decoration:line-through;opacity:.65}.recipe-layout{grid-template-columns:minmax(260px,.8fr) minmax(0,1.2fr)}.recipe-heading{display:flex;align-items:start;justify-content:space-between;gap:1rem}.recipe-heading h2{margin-bottom:.6rem}.recipe-search{margin-bottom:1rem}.recipe-list{list-style:none;padding:0;margin:0;max-height:65vh;overflow:auto}.recipe-list li{border-bottom:1px solid #edf0e9}.recipe-list button{display:flex;flex-direction:column;gap:.25rem;width:100%;border:0;border-radius:.5rem;background:transparent;text-align:left;padding:.8rem;color:#17372f}.recipe-list button:hover,.recipe-list button.selected{background:#e6efe7}.recipe-list span,.recipe-meta{color:#68786f;font-size:.85rem}.recipe-detail h3{margin:1.6rem 0 .7rem}.recipe-tags{display:flex;flex-wrap:wrap;gap:.4rem}.recipe-ingredients,.recipe-steps{padding-left:1.4rem;line-height:1.6}.recipe-ingredients li,.recipe-steps li{margin-bottom:.55rem}.recipe-notes{white-space:pre-wrap}.ingredient-editor{border:1px solid #dce6dc;border-radius:.65rem;padding:1rem;display:flex;flex-direction:column;gap:1rem}.ingredient-editor legend{font-weight:700}.ingredient-row{display:grid;grid-template-columns:minmax(130px,2fr) minmax(80px,.8fr) minmax(85px,.8fr) auto auto;align-items:end;gap:.5rem}.ingredient-row .pantry-check{display:flex;flex-direction:row;align-items:center;align-self:center;white-space:nowrap}.ingredient-row .pantry-check input{width:auto}.recipe-detail .text-button{color:#176345}@media (max-width:800px){.recipe-layout{grid-template-columns:1fr}.recipe-list{max-height:40vh}}.app-shell{background-color:#f7f5ef;background-size:cover;background-position:center;background-repeat:no-repeat;background-attachment:fixed}@media (max-width:800px){.app-shell{background-attachment:scroll}}.recipe-steps{list-style:none;padding-left:0;margin-left:0}.recipe-steps li{display:grid;grid-template-columns:1.5rem minmax(0,1fr);gap:.35rem;align-items:start}.recipe-step-number{text-align:left;font-family:Consolas,Courier New,monospace;font-variant-numeric:tabular-nums}.ingredient-row{grid-template-columns:minmax(180px,2fr) minmax(80px,.8fr) minmax(85px,.8fr) auto}.catalog-pantry{display:flex;align-items:center;flex-direction:row;gap:.6rem}.catalog-pantry input{width:auto}@media (max-width:950px){.ingredient-row{grid-template-columns:repeat(3,minmax(0,1fr))}.ingredient-row label:first-child{grid-column:1/-1}}@media (max-width:480px){.ingredient-row{grid-template-columns:1fr 1fr}.ingredient-row label:first-child{grid-column:1/-1}}
