@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,500;0,600;0,700;1,500;1,600&display=swap');
:root{--paper:#f7f5ef;--white:#fffefa;--ink:#222c23;--muted:#777d72;--line:#e6e2d8;--green:#354b39;--green2:#e5ebdf;--orange:#c8754d;--shadow:0 14px 40px rgba(38,45,35,.08)}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif;font-size:14px}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #9ab38c;outline-offset:2px}.app-shell{max-width:1240px;margin:auto;padding:0 38px}.topbar{height:88px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;gap:12px;align-items:center;color:inherit;text-decoration:none}.brand-mark{width:42px;height:42px;border-radius:50%;background:var(--green);color:#f9f4e9;display:grid;place-items:center;font-size:25px}.brand strong{display:block;font-size:15px;letter-spacing:-.3px}.brand small{display:block;color:var(--muted);font-size:11px;margin-top:3px}.top-actions{display:flex;align-items:center;gap:12px}.status-pill{font-size:11px;color:#697264;background:#e9e9df;padding:7px 10px;border-radius:99px}.button{border:0;border-radius:8px;padding:11px 16px;font-weight:600;transition:transform .15s,background .15s}.button:active{transform:scale(.98)}.button-dark{background:var(--green);color:white}.button-dark:hover{background:#263a2a}.button-light{background:#eeece4;color:var(--ink)}.button-light:hover{background:#e4e0d5}.button-small{padding:7px 11px;font-size:12px}.button-wide{width:100%;margin-top:5px}.hero{position:relative;min-height:270px;display:flex;align-items:center;justify-content:space-between;padding:42px 7% 38px;background:#e9ece1;border-radius:0 0 20px 20px;overflow:hidden}.eyebrow{font-size:10px;letter-spacing:1.9px;font-weight:700;color:#7b826e;margin:0 0 12px}.hero h1{font-family:'Playfair Display',serif;font-size:clamp(36px,4.5vw,55px);font-weight:500;line-height:1.05;letter-spacing:-1.6px;margin:0}.hero h1 em{color:#5d7457}.hero-copy{max-width:390px;line-height:1.7;color:#687164;margin:15px 0 0}.hero-art{position:relative;width:255px;height:200px;flex-shrink:0;margin-right:4%}.plate{position:absolute;border-radius:50%;box-shadow:0 18px 24px rgba(53,75,57,.12)}.plate-back{width:185px;height:185px;background:#d5b38d;left:32px;top:6px}.plate-front{width:166px;height:166px;left:41px;top:15px;border:10px solid #faf7ee;background:radial-gradient(circle at center,#d8a36d 0 19%,#f1d8a9 20% 32%,#5b7a4d 33% 41%,#f6eedb 42% 100%);display:grid;place-items:center}.plate-front span{font-size:30px;color:#fff8e9;opacity:.8}.herb{position:absolute;color:#5d7457;font-size:44px}.herb-one{right:4px;top:14px;transform:rotate(22deg)}.herb-two{left:4px;bottom:15px;font-size:36px;transform:rotate(-15deg)}.tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);padding:22px 0 0;margin-bottom:28px;overflow-x:auto}.tab{display:flex;align-items:center;gap:9px;border:0;background:transparent;color:#767b70;padding:13px 16px 15px;border-bottom:2px solid transparent;white-space:nowrap}.tab span{font-size:17px}.tab b{font-size:10px;background:#e8e6dc;border-radius:99px;padding:3px 6px;font-weight:600}.tab.active{color:var(--green);border-color:var(--green);font-weight:700}.view{padding-bottom:45px}.hidden{display:none!important}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:18px;margin-bottom:22px}.section-heading h2{font-family:'Playfair Display',serif;font-size:29px;font-weight:500;letter-spacing:-.5px;margin:0}.section-subtitle{color:var(--muted);margin:9px 0 0;line-height:1.5}.muted{color:var(--muted);font-size:12px}.search-row{display:flex;gap:10px;margin-bottom:23px}.searchbox{height:46px;display:flex;align-items:center;gap:10px;flex:1;background:var(--white);border:1px solid var(--line);border-radius:8px;padding:0 12px}.searchbox span{font-size:25px;color:#777f72}.searchbox input{border:0;outline:0;background:transparent;flex:1;min-width:0;color:var(--ink)}.searchbox kbd{border:1px solid var(--line);border-radius:4px;padding:2px 6px;color:#96998f;font-size:11px}.search-row select{min-width:150px;border:1px solid var(--line);border-radius:8px;padding:0 12px;background:var(--white);color:#4c544a}.recipe-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:17px}.recipe-card{background:var(--white);border:1px solid #ebe8df;border-radius:12px;overflow:hidden;transition:transform .18s,box-shadow .18s;display:flex;flex-direction:column;min-width:0}.recipe-card:hover{transform:translateY(-3px);box-shadow:var(--shadow)}.card-visual{height:116px;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden;background:#e8eadf}.card-visual:before,.card-visual:after{content:"";position:absolute;border-radius:50%;width:140px;height:140px;background:rgba(255,255,255,.22);left:-40px;top:-80px}.card-visual:after{width:95px;height:95px;left:auto;right:-24px;top:52px;background:rgba(197,130,79,.12)}.food-symbol{font-size:42px;filter:drop-shadow(0 5px 3px rgba(40,50,35,.12));z-index:1}.card-visual.salads{background:#e6ecdc}.card-visual.meat{background:#efe2d7}.card-visual.vegetarian{background:#e2eadd}.card-visual.mexican{background:#f1e4cf}.card-visual.pasta{background:#e8e1d7}.card-visual.soups{background:#e8e6d8}.card-visual.breakfast{background:#f1e7d5}.card-visual.other{background:#e5e8e1}.card-heart{position:absolute;right:10px;top:10px;z-index:2;width:30px;height:30px;border:0;border-radius:50%;background:rgba(255,254,250,.92);font-size:19px;color:#697464;display:grid;place-items:center}.card-heart.saved{color:#b85642}.card-body{padding:15px 15px 14px;display:flex;flex-direction:column;flex:1}.category-chip{display:inline-block;font-size:9px;letter-spacing:.7px;text-transform:uppercase;font-weight:700;color:#68765f;background:#edf0e8;border-radius:4px;padding:5px 7px;align-self:flex-start}.recipe-card h3{font-family:'Playfair Display',serif;font-size:17px;line-height:1.28;font-weight:500;margin:10px 0 13px;letter-spacing:-.2px}.card-meta{display:flex;gap:12px;color:#83877d;font-size:11px;margin-top:auto;padding-top:7px}.card-open{border:0;background:transparent;text-align:left;padding:0;color:inherit}.empty-state{text-align:center;padding:55px 15px;color:var(--muted)}.empty-state>span{font-size:36px;color:#8a9a80}.empty-state h3{font-family:'Playfair Display',serif;color:var(--ink);font-size:22px;font-weight:500;margin:12px 0 6px}.empty-state p{line-height:1.6;margin:0 0 18px}.week-controls{display:flex;align-items:center;gap:12px;margin-bottom:18px}.week-controls strong{min-width:155px;text-align:center}.icon-button{width:32px;height:32px;border:1px solid var(--line);background:var(--white);border-radius:8px;font-size:18px}.planner-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:9px}.day-column{background:#efede5;border-radius:10px;padding:10px 8px;min-height:250px}.day-column.today{outline:1px solid #9cad91;background:#e9eee3}.day-name{font-size:10px;text-transform:uppercase;letter-spacing:.8px;color:#74796e;font-weight:700}.day-date{font-family:'Playfair Display',serif;font-size:23px;margin:4px 0 12px}.meal-slot{border-top:1px solid #dedbd1;padding:8px 0;min-height:66px}.slot-label{font-size:9px;text-transform:uppercase;color:#8b8d82;letter-spacing:.7px;margin-bottom:5px}.planned-recipe{font-size:11px;line-height:1.3;background:var(--white);border-radius:6px;padding:7px 6px;position:relative;overflow-wrap:anywhere}.planned-recipe button{position:absolute;right:3px;top:2px;border:0;background:transparent;color:#8b8d82;font-size:13px;padding:0 2px}.add-slot{border:1px dashed #cfccbf;background:transparent;border-radius:5px;color:#8a8d80;font-size:10px;width:100%;padding:6px 2px}.shopping-summary{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line);color:var(--muted);font-size:12px}.text-button{border:0;background:transparent;color:#536c4c;text-decoration:underline;text-underline-offset:3px;padding:6px;font-size:12px}.shopping-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:12px}.shopping-item{display:flex;align-items:flex-start;gap:10px;padding:13px;background:var(--white);border:1px solid #ebe8df;border-radius:8px}.shopping-item input{accent-color:var(--green);margin-top:3px;width:15px;height:15px;flex-shrink:0}.shopping-item .item-text{line-height:1.35;flex:1}.shopping-item small{display:block;color:#8a8c82;font-size:10px;margin-top:4px}.shopping-item.checked .item-text{text-decoration:line-through;color:#92958b}.remove-item{border:0;background:transparent;color:#999;font-size:17px;padding:0 2px}.add-item-form{display:flex;gap:8px;margin:14px 0}.add-item-form input{flex:1;min-width:0;padding:11px 12px;border:1px solid var(--line);border-radius:8px;background:var(--white)}footer{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:20px 0 25px;color:#8a8c82;font-size:11px}.modal-backdrop{position:fixed;inset:0;background:rgba(26,33,26,.48);z-index:10;display:flex;align-items:flex-start;justify-content:center;padding:28px 15px;overflow:auto}.recipe-modal,.auth-card{background:var(--white);border-radius:16px;width:min(720px,100%);padding:30px;position:relative;box-shadow:0 24px 80px rgba(0,0,0,.2)}.modal-close{position:absolute;right:18px;top:15px;border:0;background:transparent;font-size:28px;color:#7c8176;line-height:1}.modal-topline{display:flex;align-items:center;justify-content:space-between;padding-right:20px}.heart-button{border:0;background:#f2eee7;border-radius:50%;width:36px;height:36px;font-size:22px;color:#b85642}.recipe-modal h2,.auth-card h2{font-family:'Playfair Display',serif;font-size:32px;font-weight:500;line-height:1.15;letter-spacing:-.6px;margin:17px 0 12px}.recipe-meta{display:flex;gap:9px;align-items:center;color:#83877d;font-size:12px;flex-wrap:wrap}.modal-actions{display:flex;gap:9px;margin:20px 0 22px;flex-wrap:wrap}.serving-control{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:13px 0;font-weight:700}.serving-control label{font-size:12px;font-weight:500;color:var(--muted);display:flex;align-items:center;gap:8px}.serving-control select{border:1px solid var(--line);border-radius:6px;padding:5px 8px;background:white;color:var(--ink)}.modal-ingredients{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding:16px 0 20px}.ingredient-row{display:flex;gap:9px;align-items:flex-start;font-size:12px;line-height:1.4;color:#41493e}.ingredient-row:before{content:"";width:7px;height:7px;border:1px solid #a0ab96;border-radius:50%;margin-top:4px;flex-shrink:0}.instructions-heading{font-family:'Playfair Display',serif;font-weight:500;font-size:22px;margin:0 0 12px}.steps-list{padding-left:22px;margin:0}.steps-list li{padding:0 0 13px 7px;line-height:1.65;color:#4c544a}.steps-list li::marker{color:#75876b;font-weight:700}.step-ingredients{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}.step-ingredients span{font-size:10px;color:#6c735f;background:#f0f0e9;border-radius:4px;padding:4px 6px}.source-note{border-top:1px solid var(--line);padding-top:14px;margin-top:12px;color:#85887f;font-size:11px}.auth-card{width:min(430px,100%);margin:auto;padding:32px}.auth-card h2{margin-top:0}.auth-card form{margin-top:20px}.auth-card form label{display:block;font-size:12px;font-weight:600;margin-bottom:12px}.auth-card input{display:block;width:100%;margin-top:6px;border:1px solid var(--line);border-radius:8px;padding:12px;background:#fff}.tiny-note{font-size:10px;line-height:1.6;color:#8a8c82;margin-top:20px}.error-text{color:#a33a2d;font-size:12px}.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#25382a;color:white;padding:12px 18px;border-radius:8px;box-shadow:var(--shadow);z-index:20;font-size:12px;max-width:90vw}
@media(max-width:850px){.app-shell{padding:0 20px}.hero{padding-left:5%;padding-right:5%}.hero-art{transform:scale(.82);transform-origin:right center;margin-left:-20px;margin-right:-10px}.recipe-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.planner-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.day-column{min-height:200px}}
@media(max-width:560px){.app-shell{padding:0 14px}.topbar{height:72px}.brand-mark{width:36px;height:36px}.brand strong{font-size:13px}.top-actions{gap:6px}.status-pill{display:none}.top-actions .button{font-size:11px;padding:9px 10px}.hero{min-height:220px;padding:30px 22px;border-radius:0 0 14px 14px}.hero h1{font-size:37px}.hero-copy{font-size:12px;max-width:260px}.hero-art{position:absolute;right:-70px;bottom:-36px;opacity:.45;transform:scale(.75)}.tabs{padding-top:12px;margin-bottom:22px;gap:0}.tab{padding:12px 11px;font-size:12px;gap:6px}.tab span{font-size:15px}.section-heading h2{font-size:25px}.section-heading{align-items:flex-start}.search-row{flex-wrap:wrap}.searchbox{flex-basis:100%}.search-row select{flex:1;min-width:0;height:42px}.recipe-grid{gap:10px}.card-visual{height:86px}.food-symbol{font-size:33px}.card-body{padding:11px}.recipe-card h3{font-size:15px;margin:8px 0 10px}.card-meta{font-size:10px;gap:7px}.category-chip{font-size:8px}.planner-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.day-column{min-height:180px}.shopping-list{grid-template-columns:1fr}.section-heading .button{font-size:11px;padding:9px}.recipe-modal{padding:24px 18px}.recipe-modal h2{font-size:27px}.modal-ingredients{grid-template-columns:1fr}.auth-card{padding:27px 22px}footer{gap:10px;flex-direction:column}.modal-actions .button{flex:1;font-size:11px;padding:10px 8px}}

.create-card{max-height:90vh;overflow:auto;width:min(600px,95vw)}.create-card form{display:grid;gap:12px}.create-card label{display:grid;gap:5px}.create-card input,.create-card textarea,.create-card select{width:100%;box-sizing:border-box;padding:10px;border:1px solid #bbb;border-radius:8px;font:inherit}.card-visual{position:relative;overflow:hidden}.recipe-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}

.household-card{width:min(540px,94vw);max-height:90vh;overflow-y:auto}.household-card form{display:grid;gap:10px}.household-card input{width:100%;box-sizing:border-box;padding:10px;border:1px solid #bbb;border-radius:8px}.household-card h3{margin:20px 0 8px}#invite-output{margin-top:12px;display:grid;gap:8px}#invite-output.hidden{display:none}

.managed-category-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 0;border-bottom:1px solid #e5e7eb}.managed-category-row span{flex:1;min-width:150px}.managed-category-row .button{padding:8px 12px}

.recipe-category-fieldset{border:1px solid #ddd;border-radius:10px;padding:12px;margin:12px 0}.recipe-category-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:6px;max-height:220px;overflow:auto}.category-checkbox{display:flex;align-items:center;gap:7px;font-weight:normal!important;margin:0!important}.category-checkbox input{width:auto!important;margin:0!important;flex:none}

/* Authentication dialog: 960px desktop, responsive mobile, readable controls */
.auth-card {
  width: 960px;
  max-width: 95vw;
  font-size: 1.25rem;
  box-sizing: border-box;
}
.auth-card form label,
.auth-card .tiny-note,
.auth-card .error-text {
  font-size: 1.25rem;
}
.auth-card input,
.auth-card button,
.auth-card select {
  font-size: 1.25rem;
}
.auth-card input[type="checkbox"] {
  display: inline-block;
  width: auto;
  margin: 0 6px 0 0;
  vertical-align: middle;
}

/* Recipe editor: show all categories in three columns, without an inner scrollbar. */
#create-modal .recipe-category-options {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px 16px;
  max-height: none;
  overflow: visible;
}

/* Let the modal backdrop scroll instead of the recipe editor or category list. */
#create-modal {
  overflow-y: auto;
}
#create-modal .create-card {
  max-height: none;
  overflow: visible;
  margin: 0 auto;
}

@media (max-width: 700px) {
  #create-modal .recipe-category-options {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 440px) {
  #create-modal .recipe-category-options {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* Global body and recipe card heading typography. */
body { font-size: 20px; }
.recipe-card h3 { font-size: 24px; }

/* Modal action text and buttons. */
.modal-actions,
.modal-actions button {
  font-size: 12px;
}

/* Shared styling for top-level authentication and recipe actions. */
.header-action-button,
.top-actions .header-action-button,
.section-heading .header-action-button {
  font-size: 14px;
}

/* v1.6 flexible meal planning */
.plan-toolbar,.saved-plan-controls{display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin:18px 0}.plan-toolbar label{display:flex;flex-direction:column;gap:6px;font-weight:600}.plan-toolbar input,.saved-plan-controls select{padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--white);font:inherit;min-width:220px}.planner-grid.planner-list{display:flex;flex-direction:column;gap:10px}.plan-recipe-item{display:flex;align-items:center;gap:15px;flex-wrap:wrap;padding:16px;background:var(--white);border:1px solid var(--line);border-radius:10px}.plan-recipe-item span{flex:1;min-width:180px;font-weight:600}.plan-recipe-item small{color:var(--muted)}.saved-plans{margin-top:32px;border-top:1px solid var(--line);padding-top:18px}.saved-plan-controls select{flex:1}.saved-plans .muted{color:var(--muted)}
@media(max-width:560px){.plan-toolbar>*{width:100%}.plan-toolbar input,.saved-plan-controls select{width:100%;min-width:0}.saved-plan-controls>*{width:100%}}

/* v1.6: stack the recipe collection heading and actions on mobile. */
@media (max-width: 767px) {
  #recipes-view > .section-heading {
    flex-direction: column;
    align-items: flex-start;
    gap: 16px;
  }
  #recipes-view > .section-heading > div {
    width: 100%;
  }
  #recipes-view > .section-heading > div:last-child {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
  }
}

/* v1.7 shopping improvements */
.shopping-tools{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px}
.shopping-list{display:block}
.shopping-department{margin:18px 0 26px}
.shopping-department h3{font-family:'Playfair Display',serif;font-size:22px;margin:0 0 10px}
.shopping-department-items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.shopping-choice-card{width:min(650px,95vw);max-width:95vw}
.shopping-choice-actions{display:grid;gap:8px;margin-top:18px}
.shopping-choice-actions p{margin:0 0 12px;color:var(--muted)}
.shopping-export-card{width:min(760px,95vw);max-width:95vw;max-height:90vh;overflow-y:auto}
.export-chunk{display:grid;gap:8px;margin:18px 0}
.export-chunk textarea{box-sizing:border-box;width:100%;font:14px/1.5 monospace;padding:12px;border:1px solid var(--line);border-radius:8px}
.export-chunk button{justify-self:start}
@media(max-width:767px){.shopping-department-items{grid-template-columns:1fr}.shopping-summary{align-items:flex-start;gap:12px;flex-direction:column}.shopping-tools{justify-content:flex-start}}

/* Meal plan row: category labels and compact remove action */
.plan-recipe-item .plan-recipe-categories { font-size: 10px; line-height: 1.35; color: var(--muted); }
.plan-recipe-item .plan-remove-button { appearance: none; border: 0; background: transparent; box-shadow: none; border-radius: 0; color: #b42318; font-size: 12px; font-weight: 600; text-decoration: underline; text-underline-offset: 2px; padding: 4px 2px; flex-shrink: 0; cursor: pointer; }
.plan-recipe-item .plan-remove-button:hover { color: #861a13; text-decoration-thickness: 2px; }
.plan-recipe-item .plan-remove-button:focus-visible { outline: 2px solid #b42318; outline-offset: 3px; }

/* Current plan label and non-interactive name until Rename Plan is selected */
.plan-toolbar label[for="plan-name"] {font-size:1rem;font-style:italic;font-weight:400;}
.plan-toolbar #plan-name[readonly] {background:transparent;border:1px solid transparent;box-shadow:none;outline:none;cursor:default;padding-left:0;padding-right:0;font-style:normal;color:inherit;}
.plan-toolbar #plan-name[readonly]:focus,.plan-toolbar #plan-name[readonly]:focus-visible {border-color:transparent;box-shadow:none;outline:none;}
.plan-toolbar #plan-name:not([readonly]) {background:var(--white);border:1px solid var(--line);cursor:text;padding-left:12px;padding-right:12px;font-style:normal;}
.plan-toolbar #plan-name:not([readonly]):focus {outline:2px solid var(--accent, #304638);outline-offset:2px;}

/* v1.7: inline current plan name and right-aligned action buttons */
.plan-toolbar { justify-content: flex-end; align-items: center; }
.plan-toolbar label[for="plan-name"] { display: flex; flex-direction: row; align-items: center; gap: 5px; margin-right: auto; min-width: 0; }
.plan-toolbar .current-plan-label { flex-shrink: 0; white-space: nowrap; }
.plan-toolbar #plan-name { min-width: 0; width: 190px; max-width: 100%; font-size: inherit; }
.plan-toolbar #plan-name[readonly] { padding: 0; height: auto; border: 0; border-radius: 0; }
@media (max-width: 800px) {
  .plan-toolbar { justify-content: flex-start; }
  .plan-toolbar label[for="plan-name"] { width: 100%; margin-right: 0; }
}
@media (max-width: 560px) {
  .plan-toolbar label[for="plan-name"] { flex-direction: row; }
  .plan-toolbar #plan-name { width: min(190px, 60vw); }
}

/* v1.7: italicize both the Current Plan label and its read-only name */
.plan-toolbar label[for="plan-name"],
.plan-toolbar #plan-name[readonly] { font-style: italic; }

/* Current plan label and name */
.plan-toolbar label[for="plan-name"] { font-size: 1rem; }
.plan-toolbar .current-plan-label,
.plan-toolbar #plan-name { font-style: italic; }

/* v1.7 compact autosave history */
.autosave-history{margin-top:20px;border-top:1px solid var(--line);padding-top:12px}
.autosave-history-heading,.autosave-history-actions{display:flex;align-items:center;justify-content:space-between;gap:12px}
.autosave-history-heading h3{margin:0 0 2px;font-size:15px}
.autosave-history-heading .muted{font-size:11px}
.autosave-history-actions{justify-content:flex-end;gap:14px}
.autosave-text-link{border:0;background:transparent;padding:0;color:var(--ink);font:inherit;font-size:12px;text-decoration:underline;cursor:pointer}
.autosave-text-link:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.autosave-history-list{margin-top:8px;border-top:1px solid var(--line)}
.autosave-history-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 0;border-bottom:1px solid var(--line);font-size:12px;line-height:16px}
.autosave-more{display:block;margin:8px auto 0}.autosave-more.hidden{display:none}

/* v1.7: readable, color-coded notifications */
.toast.toast-error{background:#fde8e8;color:#8f2424;border:1px solid #f4b9b9}
.toast.toast-success{background:#e6f5e9;color:#205e34;border:1px solid #b4dfbe}
.toast.toast-warning{background:#fff4db;color:#72510b;border:1px solid #eed9a3}

/* v1.7: compact, two-step deletion for autosaved plans */
.autosave-row-actions{display:inline-flex;align-items:center;gap:18px;flex-shrink:0}
.autosave-trash-button{display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;padding:2px;color:var(--muted);cursor:pointer}
.autosave-trash-button:hover,.autosave-trash-button:focus-visible{color:#a52b2b}
.autosave-trash-button:focus-visible{outline:2px solid currentColor;outline-offset:2px}
.autosave-delete-link{color:#a52b2b}

/* v1.8 temporary style lab and shared layout */
.style-preview-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:12px 16px;background:#192b27;color:#fff;border-radius:0 0 12px 12px}
.style-preview-label{font-size:12px;font-weight:800;letter-spacing:1px}.style-preview-label small{display:block;font-size:10px;font-weight:400;letter-spacing:0;opacity:.8;margin-top:2px}
.style-preview-options{display:flex;gap:7px;flex-wrap:wrap}.style-preview-option{background:transparent;border:1px solid #8c9c95;color:white;border-radius:6px;padding:8px 12px;font-size:12px}.style-preview-option.active{background:#fff;color:#192b27;border-color:#fff;font-weight:700}
.nav-icon{display:inline-block;width:17px;height:17px;vertical-align:-3px}
.site-footer{display:block;margin-top:52px;padding:30px 26px 18px;border-radius:14px 14px 0 0;background:var(--green);color:#fff}
.footer-main{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap}.footer-main strong{font-size:17px}.footer-main p{opacity:.85;font-size:12px;margin:9px 0 20px}.footer-links{display:flex;gap:10px 24px;align-items:flex-start;flex-wrap:wrap}.footer-links button{border:0;background:none;color:inherit;cursor:pointer;font-size:12px;text-decoration:underline;padding:3px}
.footer-bottom{border-top:1px solid rgba(255,255,255,.25);padding-top:14px;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:11px;opacity:.85}
@media(max-width:600px){.style-preview-bar{padding:10px}.style-preview-options{width:100%}.style-preview-option{flex:1;padding:8px 5px;font-size:11px}.site-footer{padding:25px 17px}}

/* v1.8: allow six theme previews without cramped controls */
.style-preview-bar{align-items:flex-start}.style-preview-options{flex:1;justify-content:flex-end}.style-preview-option{white-space:nowrap}
@media(max-width:900px){.style-preview-options{flex-basis:100%;justify-content:flex-start}}
@media(max-width:600px){.style-preview-option{flex:1 1 30%;min-width:96px}}

/* v1.8: editorial hero headline and functional browse CTA */
.hero h1{max-width:690px;line-height:1.08}.hero h1 em{font-style:normal}.hero-copy{max-width:520px;font-size:15px;line-height:1.7}.hero-cta{display:inline-flex;align-items:center;gap:22px;margin-top:22px;padding:13px 22px;background:#BC5933;color:#fff;border-radius:999px;font-size:14px;font-weight:700;box-shadow:0 6px 16px rgba(0,0,0,.13)}.hero-cta:hover{background:#9E4325}.hero-cta span{font-size:21px;line-height:1}.hero-cta:focus-visible{outline:3px solid #fff;outline-offset:3px}
@media(max-width:700px){.hero-copy-break{display:none}.hero h1{font-size:clamp(31px,7vw,48px)}.hero-cta{margin-top:16px}}

/* MealAlchemy v2.0: the meal title itself opens the recipe instructions. */
.plan-recipe-item .plan-recipe-title{
  appearance:none;
  flex:1;
  min-width:180px;
  background:transparent;
  border:0;
  border-radius:0;
  box-shadow:none;
  padding:0;
  margin:0;
  text-align:left;
  font:inherit;
  font-weight:600;
  color:var(--ink);
  cursor:pointer;
  overflow-wrap:anywhere;
}
.plan-recipe-item .plan-recipe-title:hover{
  color:var(--orange,#b84a2b);
  text-decoration:underline;
  text-underline-offset:3px;
}
.plan-recipe-item .plan-recipe-title:focus-visible{
  outline:2px solid var(--orange,#b84a2b);
  outline-offset:4px;
  border-radius:2px;
}
/* v2.1 recipe photo picker and preview */
.recipe-upload-field{display:grid;gap:8px}
.recipe-upload-field>label{font-weight:600}
.recipe-upload-field input[type="file"]{max-width:100%;padding:11px;border:1px dashed var(--line,#d0cabd);border-radius:10px;background:var(--white,#fff);cursor:pointer}
.recipe-upload-field input[type="file"]::file-selector-button{background:var(--green,#153e3e);color:#fff;border:0;border-radius:7px;padding:9px 12px;margin-right:12px;cursor:pointer}
.recipe-upload-field small{font-size:11px;line-height:1.5;color:var(--muted,#586a69)}
.recipe-image-preview{display:block;width:100%;max-width:460px;aspect-ratio:16/10;object-fit:cover;border-radius:11px;border:1px solid var(--line,#d0cabd);background:#e7e4d9}
.recipe-image-preview.hidden{display:none!important}
/* v2.1: upload / default image picker with an accessible expanding gallery. */
.create-card .recipe-image-picker{min-width:0;display:grid;gap:12px;margin:0;padding:13px;border:1px solid var(--line,#d0cabd);border-radius:12px}
.create-card .recipe-image-picker legend{padding:0 6px;font-weight:700}
.recipe-image-modes{display:flex;flex-wrap:wrap;gap:9px}
.create-card .recipe-image-modes label{display:flex;flex-direction:row;gap:8px;align-items:center;background:var(--white,#fff);border:1px solid var(--line,#d0cabd);border-radius:9px;padding:10px 12px;cursor:pointer;min-width:0}
.create-card .recipe-image-picker input[type="radio"]{width:auto;height:16px;flex:0 0 auto;margin:0;accent-color:var(--green,#153e3e)}
.create-card .recipe-image-modes label:has(input:checked){border-color:var(--green,#153e3e);background:#e7eee7}
.recipe-default-panel{border:1px solid var(--line,#d0cabd);border-radius:9px;overflow:hidden;background:var(--white,#fff)}
.recipe-default-panel.hidden{display:none!important}
.recipe-default-panel summary{padding:12px;font-size:13px;font-weight:700;color:var(--green,#153e3e);cursor:pointer}
.recipe-default-panel[open] summary{border-bottom:1px solid var(--line,#d0cabd)}
.recipe-default-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(125px,1fr));gap:10px;padding:12px}
.create-card .recipe-default-tile{display:grid;grid-template-columns:auto minmax(0,1fr);gap:7px;align-items:center;padding:8px;border:2px solid var(--line,#d0cabd);border-radius:10px;background:#fff;cursor:pointer}
.create-card .recipe-default-tile:has(input:checked){border-color:var(--green,#153e3e);background:#e7eee7}
.recipe-default-tile img{grid-column:1/-1;width:100%;height:98px;object-fit:cover;border-radius:6px}
.recipe-default-tile span{font-size:12px;font-weight:600;line-height:1.3}
.recipe-image-preview-area{display:grid;gap:7px}
.recipe-image-preview-area small{font-size:11px;line-height:1.45;color:var(--muted,#586a69)}
.recipe-upload-field.hidden{display:none!important}
@media(max-width:420px){.recipe-image-modes{display:grid;grid-template-columns:1fr 1fr}.create-card .recipe-image-modes label{font-size:12px;padding:9px}.recipe-default-options{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* v2.1 category artwork defaults — same colors and icons as original recipe cards. */
.recipe-artwork.salads{--recipe-art-bg:#e6ecdc}
.recipe-artwork.meat{--recipe-art-bg:#efe2d7}
.recipe-artwork.vegetarian{--recipe-art-bg:#e2eadd}
.recipe-artwork.mexican{--recipe-art-bg:#f1e4cf}
.recipe-artwork.pasta{--recipe-art-bg:#e8e1d7}
.recipe-artwork.soups{--recipe-art-bg:#e8e6d8}
.recipe-artwork.breakfast{--recipe-art-bg:#f1e7d5}
.recipe-artwork.lunch{--recipe-art-bg:#eee6d9}
.recipe-artwork.dinner{--recipe-art-bg:#e5e6db}
.recipe-artwork.snacks{--recipe-art-bg:#f0e6d6}
.recipe-artwork.sides{--recipe-art-bg:#e8eddb}
.recipe-artwork.desserts{--recipe-art-bg:#f4e6e1}
.recipe-artwork.other{--recipe-art-bg:#e5e8e1}
.card-visual.recipe-artwork,
.home-plan-thumb.recipe-artwork,
.recipe-default-art.recipe-artwork,
.recipe-default-preview.recipe-artwork{background:var(--recipe-art-bg,#e5e8e1)}
.featured-media.category-art{background:var(--recipe-art-bg,#e5e8e1)}
.featured-media.category-art #featured-emoji{font-size:clamp(68px,10vw,125px);filter:drop-shadow(0 9px 6px rgba(34,44,35,.12))}
.recipe-default-art,.recipe-default-preview{display:grid;place-items:center;position:relative;overflow:hidden;border-radius:8px}
.recipe-default-art{grid-column:1/-1;width:100%;height:98px}
.recipe-default-art::before,.recipe-default-preview::before{content:"";position:absolute;top:-35%;left:-20%;width:70%;height:110%;border-radius:50%;background:rgba(255,255,255,.25)}
.recipe-default-art-symbol{position:relative;z-index:1;font-size:44px!important;line-height:1!important}
.recipe-default-preview{width:100%;max-width:460px;min-height:200px;aspect-ratio:16/10;border:1px solid var(--line,#d0cabd)}
.recipe-default-preview #recipe-default-preview-symbol{position:relative;z-index:1;font-size:clamp(62px,13vw,108px);filter:drop-shadow(0 8px 5px rgba(34,44,35,.12))}
.recipe-default-preview.hidden{display:none!important}
.create-card .recipe-default-label{font-size:12px;font-weight:600}
/* v2.1 household membership management */
.household-members-list{list-style:none;padding:0;margin:8px 0 5px;border:1px solid var(--line,#e6e2d8);border-radius:10px;overflow:hidden}
.household-member-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 13px;min-width:0}
.household-member-row + .household-member-row{border-top:1px solid var(--line,#e6e2d8)}
.household-member-details{display:flex;flex-direction:column;gap:3px;min-width:0}
.household-member-email{overflow-wrap:anywhere;font-weight:600;line-height:1.4}
.household-member-role{font-size:11px;color:var(--muted,#777d72)}
.household-remove-member{flex-shrink:0;padding:8px 11px!important;white-space:nowrap;color:#a23b38;border-color:#c9b7b4}
.household-remove-member:hover{background:#fff1ef}
.household-remove-member:disabled{opacity:.5;cursor:wait}
#household-members-status{font-size:12px;line-height:1.5;margin-top:8px}
@media(max-width:430px){.household-member-row{align-items:flex-start;flex-direction:column;gap:8px}.household-remove-member{align-self:flex-end}}
/* Household ownership transfer: separate from the destructive Remove action. */
.household-member-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:7px;flex-shrink:0}
.household-transfer-member{padding:8px 11px!important;white-space:nowrap;color:var(--green,#354b39);border-color:#91a68d}
.household-transfer-member:hover{background:#edf2e8}
.household-transfer-member:disabled{opacity:.5;cursor:wait}
@media(max-width:430px){.household-member-actions{align-self:flex-end}}
/* v2.1: invitation permission separate from household ownership. */
.household-sharing-member{padding:8px 11px!important;white-space:nowrap;border-color:#92a99a;color:var(--green,#354b39)}
.household-sharing-member:hover{background:#e6eee6}
.household-sharing-member[aria-pressed="true"]{color:#6b5238;border-color:#c1ad91}
.household-sharing-member:disabled{opacity:.55;cursor:wait}
#household-invite-permission-note{font-size:12px;line-height:1.55;margin:6px 0 12px}
.household-member-actions{flex-wrap:wrap}

/* Allen's contextual illustrations: purely decorative, never intercept controls */
.allen-empty{position:relative;max-width:620px;margin:14px auto 24px;padding:26px 20px 34px;border-radius:22px;background:rgba(249,244,235,.65)}
.allen-empty-art{display:block;width:auto;max-width:min(240px,58vw);height:190px;object-fit:contain;margin:0 auto 6px;filter:drop-shadow(0 9px 11px rgba(62,43,25,.1));pointer-events:none}
.allen-portrait-art{height:145px;max-width:180px}
#planner-view,#shopping-view{position:relative}
.allen-page-companion{position:absolute;right:0;top:-18px;width:142px;height:152px;pointer-events:none;z-index:0;opacity:.97}
.allen-page-companion img{display:block;width:100%;height:100%;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 5px 7px rgba(50,33,20,.11))}
.allen-page-companion~.section-heading{position:relative;z-index:1;padding-right:145px;min-height:120px}
.allen-planner-companion{width:109px;height:141px;top:-10px}
.allen-auth-card{isolation:isolate}
.allen-auth-welcome{position:absolute;width:190px;height:280px;object-fit:contain;object-position:center bottom;left:-156px;bottom:0;z-index:1;pointer-events:none;filter:drop-shadow(0 12px 13px rgba(40,30,20,.17))}
.allen-choice-card{position:relative}
.allen-choice-art{position:absolute;right:15px;top:13px;width:65px;height:65px;object-fit:contain;pointer-events:none}
.allen-choice-card h2{padding-right:75px}
@media(max-width:1100px){.allen-auth-welcome{left:-76px;width:116px;height:195px;bottom:8px;opacity:.95}}
@media(max-width:700px){.allen-auth-card{margin-top:86px}.allen-auth-welcome{left:8px;top:-104px;bottom:auto;width:114px;height:130px}.allen-page-companion{width:85px;height:110px;top:0;opacity:.75}.allen-planner-companion{width:78px}.allen-page-companion~.section-heading{padding-right:85px;min-height:95px}.allen-page-companion~.section-heading h2{font-size:25px}.allen-empty-art{height:160px}.allen-portrait-art{height:125px}}
@media(max-width:440px){.allen-page-companion{width:65px;opacity:.58}.allen-page-companion~.section-heading{padding-right:58px}}

/* v3.0: Keep Allen inside mobile lightboxes, ahead of the dialog heading. */
@media(max-width:700px){
  .modal-backdrop .allen-auth-card{margin-top:0}
  .modal-backdrop .allen-auth-welcome{
    position:relative;left:auto;top:auto;bottom:auto;right:auto;
    display:block;width:120px;height:126px;max-width:60%;margin:0 auto 12px;
    object-fit:contain;opacity:1;pointer-events:none;
  }
  .modal-backdrop .allen-choice-art{
    position:relative;top:auto;right:auto;left:auto;bottom:auto;
    display:block;width:90px;height:95px;margin:0 auto 12px;
  }
  .modal-backdrop .allen-choice-card h2{padding-right:0}
  /* Dialogs without a dedicated Allen illustration use a compact portrait. */
  .modal-backdrop article.auth-card:not(.allen-auth-card):not(.allen-choice-card)::before,
  #recipe-modal article.recipe-modal::before{
    content:"";display:block;position:relative;flex:none;
    width:95px;height:105px;margin:0 auto 12px;
    background:url("assets/MealAlchemist_Allen_portrait_smile.png") center / contain no-repeat;
    pointer-events:none;
  }
  .modal-backdrop article.auth-card,.modal-backdrop article.recipe-modal{box-sizing:border-box}
}
