/* ===== Livre de recettes — palette aged paper ===== */
.navigation-status { margin:12px 20px; color:var(--ink); font-size:14px; }
.navigation-retry { margin-left:12px; padding:6px 12px; border:1px solid var(--line); border-radius:12px; color:var(--ink); background:var(--paper); font:inherit; cursor:pointer; }
:root{
  --paper:#f4ecd1;
  --paper-deep:#ebddb4;
  --card:#fbf5e0;
  --ink:#1f1609;
  --ink-soft:#6b4a1c;
  --ink-faded:#8a6a2e;
  --line:#c9b58a;
  --line-soft:#ddc99d;
  --rose:#a86850;
  --sage:#7a8b5a;
  --ochre:#c69249;
  --plum:#7d5c6a;
  --teal:#5f7d7a;
}
*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;padding:0;background:#322a20}
body{font-family:"Iowan Old Style","Palatino","Baskerville",Georgia,"Times New Roman",serif;
  color:var(--ink);line-height:1.55;-webkit-font-smoothing:antialiased;
  display:flex;justify-content:center;align-items:flex-start;min-height:100vh;padding:24px 0}
a{color:inherit;text-decoration:none}
ul,ol{margin:0;padding:0;list-style:none}
img{display:block;max-width:100%}
button{font:inherit;color:inherit;cursor:pointer}

/* The early shared loader owns this attribute and must always release it.
   Keep layout measurable while the one responsive interface is being mounted. */
html[data-rmp-loading] body > .frame,
html[data-rmp-loading] body > [data-recipe-source],
html[data-rmp-loading] body > #cards { visibility:hidden }
/* Keep the book's paper surface, rather than flashing its dark outer backdrop. */
html[data-rmp-loading] body::before {
  content:""; position:fixed; top:24px; bottom:0; left:50%; transform:translateX(-50%);
  width:calc(100% - 32px); max-width:1640px; pointer-events:none;
  background:var(--paper); border:1px solid var(--line); border-radius:18px;
}
@media (max-width:699px) {
  html[data-rmp-loading] body::before { width:calc(100% - 24px); max-width:360px }
}
@media (min-width:1701px) {
  html[data-rmp-loading] body::before { width:1320px }
}

/* Readable, bounded source before enhancement or when shared scripts fail.
   These rules stop matching as soon as common.js moves the recipe into its frame. */
body > [data-recipe-source] {
  width:calc(100% - 32px); max-width:1000px; min-width:0; padding:28px;
  background:var(--paper); color:var(--ink); border:1px solid var(--line);
  border-radius:18px; font-size:18px; line-height:1.7;
}
body > [data-recipe-source] > .title { margin:0 0 16px }
body > [data-recipe-source] > .photo {
  position:relative; width:280px; max-width:100%; height:260px;
  aspect-ratio:auto; margin:0 0 24px;
}
body > [data-recipe-source] > .photo img {
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
}
@media (min-width:700px) and (max-width:1000px) {
  body > [data-recipe-source] > .photo { width:220px; height:240px }
}
@media (max-width:699px) {
  body > [data-recipe-source] {
    width:calc(100% - 24px); max-width:360px; padding:20px 12px; font-size:17px;
  }
  body > [data-recipe-source] > .title { text-align:center }
  body > [data-recipe-source] > .photo {
    width:100%; max-width:360px; height:auto; aspect-ratio:4 / 3; margin:0 auto 20px;
  }
}

.frame{background:var(--paper);color:var(--ink);position:relative;overflow:hidden;
  box-shadow:0 20px 60px rgba(0,0,0,.5), 0 4px 12px rgba(0,0,0,.3);
  background-image:
    radial-gradient(ellipse at 20% 10%, rgba(198,146,73,.08) 0%, transparent 50%),
    radial-gradient(ellipse at 80% 80%, rgba(168,104,80,.06) 0%, transparent 50%);
}
.frame::before{content:"";position:absolute;inset:0;pointer-events:none;
  background-image:
    radial-gradient(circle at 15% 25%, rgba(122,100,69,.04) 0, transparent 3px),
    radial-gradient(circle at 85% 40%, rgba(122,100,69,.05) 0, transparent 4px),
    radial-gradient(circle at 50% 75%, rgba(122,100,69,.03) 0, transparent 5px),
    radial-gradient(circle at 30% 90%, rgba(122,100,69,.04) 0, transparent 3px);
  background-size:200px 200px,300px 300px,250px 250px,180px 180px;
}

/* ===== iPhone 390 x 844 ===== */
.frame.m{width:390px;min-height:844px;overflow:visible}
.m header{padding:18px 20px 10px;border-bottom:1px solid var(--line-soft);text-align:center}
.m header .title{font-size:19px;font-weight:600;letter-spacing:-0.005em;line-height:1.1;
  font-variant:small-caps;white-space:nowrap}
.m header .title em{font-style:italic;font-variant:normal;color:var(--rose);font-weight:500}
.m header .sub{font-size:11px;color:var(--ink-soft);margin-top:4px;letter-spacing:0.04em}
.m header .date{font-size:10px;color:var(--ink-faded);font-style:italic;margin-top:2px;
  letter-spacing:0.04em}

.m .tabs{display:flex;justify-content:center;border-bottom:1px solid var(--line-soft);
  padding:0 20px;gap:22px}
.m .tabs .t{padding:11px 0 9px;font-size:13px;letter-spacing:0.06em;
  text-transform:uppercase;color:var(--ink-faded);border-bottom:2px solid transparent}
.m .tabs .t.on{color:var(--ink);border-bottom-color:var(--rose)}

.m .section-label{padding:14px 20px 8px;font-size:10px;letter-spacing:0.16em;
  text-transform:uppercase;color:var(--ink-soft);font-weight:600;
  display:flex;align-items:center;gap:10px}
.m .section-label::before,.m .section-label::after{content:"";flex:1;height:1px;
  background:var(--line-soft)}

.m .type-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px 6px;padding:18px 16px 14px}
.m .type-cell{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 2px;
  border-radius:8px}
.m .type-cell .circle{width:44px;height:44px;border-radius:50%;background:var(--card);
  border:1px solid var(--line-soft);display:flex;align-items:center;justify-content:center;
  color:var(--ink-soft)}
.m .type-cell .circle svg{width:26px;height:26px}
.m .type-cell.on .circle{background:var(--rose);border-color:var(--rose);color:var(--paper)}
.m .type-cell .lbl{font-size:10px;color:var(--ink-soft);text-align:center;
  letter-spacing:0.02em;line-height:1.1;white-space:nowrap}
.m .pays-cell .lbl,.t .type-cell .lbl,.t .pays-cell .lbl{white-space:nowrap}
.m .type-cell.on .lbl{color:var(--rose);font-weight:600}

.m .pays-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px 4px;padding:4px 16px 14px}
.m .pays-cell{display:flex;flex-direction:column;align-items:center;gap:4px}
.m .pays-cell .mono{width:38px;height:38px;border-radius:50%;
  background:var(--card);border:1px solid var(--line-soft);
  display:flex;align-items:center;justify-content:center;font-size:12px;
  font-variant:small-caps;letter-spacing:0.05em;color:var(--ink)}
.m .pays-cell.on .mono{background:var(--sage);color:var(--paper);border-color:var(--sage)}
.m .pays-cell .lbl{font-size:9px;color:var(--ink-soft);letter-spacing:0.03em}

/* ===== BOOX 1200 x 1600 ===== */
.frame.t{width:1200px;min-height:1600px;padding:0;overflow:visible}
.t header{padding:38px 56px 22px;border-bottom:1px solid var(--line-soft);text-align:center}
.t header .title{font-size:40px;font-weight:500;letter-spacing:-0.015em;line-height:1;
  font-variant:small-caps;white-space:nowrap}
.t header .title em{font-style:italic;font-variant:normal;color:var(--rose);font-weight:500}
.t header .sub{font-size:14px;color:var(--ink-soft);margin-top:10px;letter-spacing:0.04em}
.t header .date{font-size:12px;color:var(--ink-faded);font-style:italic;margin-top:4px;letter-spacing:0.04em}

.t .tabs{display:flex;justify-content:center;border-bottom:1px solid var(--line-soft);
  padding:0 56px;gap:48px}
.t .tabs .t{padding:18px 0 14px;font-size:15px;letter-spacing:0.1em;
  text-transform:uppercase;color:var(--ink-faded);border-bottom:2px solid transparent}
.t .tabs .t.on{color:var(--ink);border-bottom-color:var(--rose)}

.t .section-label{padding:26px 56px 14px;font-size:13px;letter-spacing:0.18em;
  text-transform:uppercase;color:var(--ink-soft);font-weight:600;
  display:flex;align-items:center;gap:16px}
.t .section-label::before,.t .section-label::after{content:"";flex:1;height:1px;background:var(--line-soft)}

.t .type-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:18px 10px;padding:8px 40px 18px}
.t .type-cell{display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px 4px;border-radius:10px}
.t .type-cell .circle{width:72px;height:72px;border-radius:50%;background:var(--card);
  border:1px solid var(--line-soft);display:flex;align-items:center;justify-content:center;color:var(--ink-soft)}
.t .type-cell .circle svg{width:44px;height:44px}
.t .type-cell.on .circle{background:var(--rose);border-color:var(--rose);color:var(--paper)}
.t .type-cell .lbl{font-size:13px;color:var(--ink-soft);text-align:center}
.t .type-cell.on .lbl{color:var(--rose);font-weight:600}

.t .pays-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:14px 10px;padding:30px 40px 30px}
.t .pays-cell{display:flex;flex-direction:column;align-items:center;gap:8px}
.t .pays-cell .mono{width:60px;height:60px;border-radius:50%;background:var(--card);
  border:1px solid var(--line-soft);display:flex;align-items:center;justify-content:center;
  font-size:16px;font-variant:small-caps;letter-spacing:0.06em}
.t .pays-cell.on .mono{background:var(--sage);color:var(--paper);border-color:var(--sage)}
.t .pays-cell .lbl{font-size:12px;color:var(--ink-soft)}

/* Results row (shared skeleton for both devices) */
.results-head{display:flex;align-items:baseline;justify-content:space-between;
  padding:10px 20px 6px;color:var(--ink-soft);font-size:11px;letter-spacing:0.08em;
  text-transform:uppercase}
.t .results-head{padding:18px 56px 10px;font-size:13px}

.m .grid-cards{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:0 16px 18px}
.m .card{background:var(--card);border:1px solid var(--line-soft);border-radius:4px;overflow:hidden}
.m .card .thumb{aspect-ratio:1/1;background:var(--paper-deep);overflow:hidden}
.m .card .thumb img{width:100%;height:100%;object-fit:cover;filter:saturate(.85) sepia(.08)}
.m .card .info{padding:8px 10px 10px}
.m .card .ct{font-size:13px;font-weight:600;line-height:1.2;letter-spacing:-0.005em}
.m .card .cm{font-size:10px;color:var(--ink-soft);margin-top:3px;
  letter-spacing:0.04em;text-transform:uppercase}

.t .grid-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;padding:0 40px 30px}
.t .card{background:var(--card);border:1px solid var(--line-soft);border-radius:4px;overflow:hidden}
.t .card .thumb{aspect-ratio:1/1;background:var(--paper-deep);overflow:hidden}
.t .card .thumb img{width:100%;height:100%;object-fit:cover;filter:saturate(.85) sepia(.08)}
.t .card .info{padding:14px 16px 16px}
.t .card .ct{font-size:18px;font-weight:600;line-height:1.2}
.t .card .cm{font-size:12px;color:var(--ink-soft);margin-top:5px;letter-spacing:0.06em;text-transform:uppercase}

/* Ornament dividers */
.ornament{text-align:center;color:var(--rose);font-size:14px;padding:4px 0 0;letter-spacing:0.2em}
.t .ornament{font-size:18px;padding:10px 0 0}

/* ===== Recipe page ===== */
.recipe-head{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;
  border-bottom:1px solid var(--line-soft);background:var(--paper-deep)}
.m .recipe-head{margin:10px 0 4px;padding:4px 0;border:0;
  background:transparent;font-weight:400}
.m .recipe-head .date{font-size:10px;color:var(--ink-faded);font-style:italic;font-weight:400}
.t .recipe-head{padding:18px 56px}
.recipe-head .date{font-size:11px;color:var(--ink-faded);font-style:italic;text-align:right}
.t .recipe-head .date{font-size:13px}

.recipe-body{padding:20px 20px 20px}
.t .recipe-body{padding:32px 56px 40px}
.recipe-body .title{font-size:28px;line-height:1.1;font-weight:500;letter-spacing:-0.01em;
  font-variant:small-caps;color:var(--ink)}
.t .recipe-body .title{font-size:56px;letter-spacing:-0.02em}
.m .recipe-body .title{font-size:22px;text-align:center;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}

.badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.m .badges{justify-content:center}
.ing h2,.prep h2{text-align:center}
.t .badges{gap:10px;margin-top:16px}
.badge{font-size:10px;letter-spacing:0.12em;text-transform:uppercase;
  padding:3px 10px;border-radius:999px;border:1px solid var(--line);color:var(--ink-soft);
  background:transparent}
.t .badge{font-size:13px;padding:5px 14px}
.badge.pays{background:var(--ink);color:var(--paper);border-color:var(--ink)}

.recipe-top{display:grid;grid-template-columns:1fr;gap:16px;margin-top:16px}
.t .recipe-top{grid-template-columns:1fr 1fr;grid-template-rows:auto 1fr;
  gap:40px 48px;margin-top:8px;align-items:start}
.t .recipe-top > .photo{grid-column:1;grid-row:1}
.t .recipe-top > .head-right{grid-column:2;grid-row:1;display:flex;flex-direction:column;justify-content:center;height:100%}
.t .recipe-top > .prep{grid-column:1;grid-row:2;margin-top:0;max-width:none}
.t .recipe-top > .ing{grid-column:2;grid-row:2}
.t .head-right .title{font-size:52px;line-height:1.05;font-weight:500;letter-spacing:-0.02em;font-variant:small-caps;color:var(--ink)}
.t .head-right .badges{margin-top:16px}
.t .head-right .meta-bottom{display:flex;flex-direction:column;gap:6px;margin-top:22px;padding-top:14px;border-top:1px solid var(--line-soft)}
.t .head-right .meta-bottom .date{font-size:12px;font-style:italic;color:var(--ink-faded)}
.photo{aspect-ratio:1/1;border:1px solid var(--line);background:var(--paper-deep);
  overflow:hidden;box-shadow:0 2px 4px rgba(0,0,0,.08);border-radius:12px}
.t .photo{border-radius:18px}
.photo img{width:100%;height:100%;object-fit:cover;filter:saturate(.85) sepia(.08)}

.ing h2,.prep h2{font-size:11px;text-transform:uppercase;letter-spacing:0.22em;
  color:var(--ink-soft);font-weight:600;margin:0 0 10px;
  padding-bottom:6px;border-bottom:1px solid var(--line-soft)}
.t .ing h2,.t .prep h2{font-size:14px;margin-bottom:16px}

.ing ul{display:flex;flex-direction:column}
/* iPhone: tout sur une ligne, remarque tronque avec … si trop long */
.m .ing li{display:flex;align-items:center;gap:8px;padding:7px 0;
  border-bottom:1px dotted var(--line-soft);font-size:14px;min-width:0}
.m .ing li:last-child{border-bottom:0}
.m .ing .ico{align-self:center;flex:0 0 22px;color:var(--sage);line-height:0}
.m .ing .ico svg{width:22px;height:22px;display:block}
.m .ing .ico img{width:28px;height:28px;display:block;object-fit:contain;
  filter:drop-shadow(.5px 0 0 #000) drop-shadow(-.5px 0 0 #000) drop-shadow(0 .5px 0 #000) drop-shadow(0 -.5px 0 #000)}
.m .ing .nm{font-weight:500;white-space:nowrap;flex:0 0 auto}
.m .ing .rm{font-size:11px;color:var(--ink-soft);font-style:italic;
  flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.m .ing .qt{color:var(--rose);font-variant:small-caps;font-weight:600;
  letter-spacing:0.04em;white-space:nowrap;font-size:13px;margin-left:auto;flex-shrink:0}

/* Tablette : remarque sur la même ligne que l'ingrédient */
.t .ing li{display:flex;align-items:center;gap:12px;padding:10px 0;
  border-bottom:1px dotted var(--line-soft);font-size:17px;min-width:0}
.t .ing li:last-child{border-bottom:0}
.t .ing .ico{align-self:center;flex:0 0 40px;color:var(--sage);line-height:0}
.t .ing .ico svg{width:32px;height:32px;display:block}
.t .ing .ico img{width:40px;height:40px;display:block;object-fit:contain;
  filter:drop-shadow(.5px 0 0 #000) drop-shadow(-.5px 0 0 #000) drop-shadow(0 .5px 0 #000) drop-shadow(0 -.5px 0 #000)}
.t .ing .nm{font-weight:500;white-space:nowrap;flex:0 0 auto}
.t .ing .rm{font-size:14px;color:var(--ink-soft);font-style:italic;
  flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.t .ing .qt{color:var(--rose);font-variant:small-caps;font-weight:600;
  letter-spacing:0.04em;white-space:nowrap;font-size:16px;margin-left:auto;flex-shrink:0}

.prep{margin-top:26px}
.t .prep{margin-top:44px;max-width:840px;margin-left:auto;margin-right:auto}
.prep ol{counter-reset:step}
.prep li{counter-increment:step;position:relative;padding:12px 0 14px 38px;
  font-size:16px;line-height:1.55;border-bottom:1px dotted var(--line-soft)}
.t .prep li{font-size:19px;line-height:1.65;padding:18px 0 20px 54px}
.prep li:last-child{border-bottom:0}
.prep li::before{content:counter(step) ".";position:absolute;left:0;top:22px;
  font-size:14px;color:var(--rose);font-weight:600;width:30px;text-align:right;line-height:1}
.t .prep li::before{font-size:17px;left:0;top:34px;width:44px}
.prep li::first-letter{font-size:1.5em;color:var(--rose);font-weight:600;line-height:1}

/* ==== Site build additions ==== */
[data-auth-only][hidden] { display:none !important }
@media (max-width: 699px) { .frame.t { display: none !important } }
@media (min-width: 700px) { .frame.m { display: none !important } }
.hidden { display: none }
.t.disabled { opacity: .3; cursor: default }
.search-wrap { padding: 14px 20px; display: flex; flex-direction: column; align-items: center; gap: 10px }
.kb { display:grid; grid-template-columns:minmax(0,1fr) 48px; gap:8px; width:100%; min-width:0 }
.kb-letters { display:grid; gap:6px; min-width:0 }
.kb-row { display:grid; grid-template-columns:repeat(10,minmax(0,1fr)); gap:4px }
.kb-row:last-child .kb-key[data-k="w"] { grid-column:3 }
.kb-actions { display:flex; flex-direction:column; gap:6px; min-width:0 }
.kb-key { flex: 1; min-width: 0; padding: 8px 0; border: 1px solid var(--line);
  background: var(--card); color: var(--ink); border-radius: 5px; font: inherit;
  font-size: 14px; cursor: pointer; text-transform: uppercase }
.kb-key:active { background: var(--rose); color: #fff }
.query-banner { display:flex; align-items:center; gap:12px; width:100%; min-width:0; box-sizing:border-box }
.query-banner.is-empty { visibility:hidden; pointer-events:none }
.filter-recall { display:flex; align-items:center; justify-content:center;
  flex:1 1 0; min-width:0; max-width:100%; height:64px; box-sizing:border-box;
  padding:8px 12px; border:2px solid var(--rose); border-radius:6px;
  background:var(--card); color:var(--ink); font:inherit; font-size:24px; line-height:1.2;
  font-weight:600; letter-spacing:normal; text-transform:none; text-align:center }
.t .filter-recall { height:76px; font-size:28px }
.query-count { box-sizing:border-box; flex:0 0 104px; width:104px; min-width:0;
  white-space:nowrap; text-align:right; font-size:14px; color:var(--ink-soft);
  letter-spacing:normal; text-transform:none }
.t .query-count { flex-basis:120px; width:120px; font-size:16px }
.t .kb-key { padding: 14px 0; font-size: 18px }
.m .kb-key { font-size: 13px; padding: 9px 0 }
.t.on { color: var(--ink); border-bottom-color: var(--rose) }
nav.tabs .t { cursor: pointer }
nav.tabs .t.disabled { cursor: default }
nav.tabs button.t { background:transparent; border:0; border-bottom:2px solid transparent }
nav.tabs button.t.on { border-bottom-color:var(--rose) }
@media (max-width:699px) {
  .m nav.tabs { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:0 }
  .m nav.tabs .t { min-width:0; width:auto; text-align:center }
}
.card { cursor: pointer }
.card .photo-pending { display:flex; align-items:center; justify-content:center;
  color:var(--ink-soft); font-size:14px; font-style:italic }
.type-cell, .pays-cell { cursor: pointer }
.type-cell, .pays-cell { background:transparent; border:0; padding:0; font:inherit; color:var(--ink) }
.results-head { display:flex; align-items:center; justify-content:center; gap:8px;
  width:max-content; max-width:calc(100% - 40px); min-height:54px; padding:8px 0; margin:0 auto }
.t .results-head { padding:8px 0 }
.results-head .filter-recall { flex:0 1 auto; height:34px; padding:4px 10px;
  border-width:1px; border-radius:6px; font-size:16px }
.results-head .query-count { flex:0 0 auto; width:auto; font-size:13px }
.t .results-head .filter-recall { height:34px; font-size:17px }
.t .results-head .query-count { font-size:14px }
.results-head[hidden] { display:none !important }
.filter-recall-label { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
/* normalize pays-grid spacing on iPhone to match type-grid */
.m .pays-grid { gap: 12px 6px !important; padding: 18px 16px 14px !important }
/* consistent gap between tabs and first view element */
.m .type-grid, .m .pays-grid { padding-top: 18px !important }
.m .search-wrap { padding-top: 18px !important }
.t .type-grid, .t .pays-grid { padding-top: 24px !important }
.t .search-wrap { padding-top: 24px !important }
.view[data-view="nom"] .search-wrap { padding-top:0 !important }
/* align prep numbers left-edge with ingredient icons */
.m .prep li::before { text-align: left !important }
/* Three device variants — frame slightly smaller than viewport to show the "book" border */
@media (max-width: 699px) { .frame.m { width: calc(100vw - 24px) !important; max-width: 360px } }
/* BOOX (Tab X C portrait + similar e-readers): fine border on sides via vw */
@media (min-width: 700px) and (max-width: 1700px) {
  .frame.t { width: calc(100vw - 32px) !important; max-width: 1640px }
  .t .pays-grid { grid-template-columns: repeat(5, minmax(0, 1fr)) !important }
  .t .type-grid { grid-template-columns: repeat(5, minmax(0, 1fr)) !important }
  .t .favs-grid { grid-template-columns: repeat(5, minmax(0, 1fr)) !important }
}
/* Desktop: 10 icons per row (wider frame) */
@media (min-width: 1701px) {
  .t .pays-grid { grid-template-columns: repeat(10, minmax(0, 1fr)) !important }
  .t .type-grid { grid-template-columns: repeat(10, minmax(0, 1fr)) !important }
  .t .favs-grid { grid-template-columns: repeat(10, minmax(0, 1fr)) !important }
}
.t .pays-cell, .t .type-cell { min-width: 0 }
@media (min-width: 1701px) { .frame.t { width: 1320px !important } }
/* Rounded corners on all frames */
.frame { border-radius: 18px !important }
.frame::before { border-radius: 18px !important }
/* Cards: reserve 2 lines for title, anchor meta at bottom so subtitles align across rows */
.card .info { display: flex !important; flex-direction: column !important }
.m .card .info { min-height: 58px }
.t .card .info { min-height: 82px }
.card .ct { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden; text-overflow: ellipsis }
.card .cm { margin-top: auto !important }
/* Country and favorite circles share their exact outer dimensions. */
.pays-cell .mono, .favs-cell .mono { box-sizing:border-box; flex:none }
.m .pays-cell .mono, .m .favs-cell .mono { width:44px !important; height:44px !important }
.t .pays-cell .mono, .t .favs-cell .mono { width:72px !important; height:72px !important }
.m .pays-cell .mono, .t .pays-cell .mono { font-weight:700; font-variant:normal; letter-spacing:0; text-transform:uppercase }
.m .pays-cell .mono { font-size:20px }
.t .pays-cell .mono { font-size:28px }
/* Larger click area on nav tabs */
nav.tabs { gap: 0 !important }
nav.tabs .t { flex: 1 !important; padding-left: 8px !important; padding-right: 8px !important;
  text-align: center }
.m nav.tabs .t { padding-top: 14px !important; padding-bottom: 14px !important }
.t nav.tabs .t { padding-top: 20px !important; padding-bottom: 18px !important }
/* Remove border-top between title area and meta on BOOX/desktop */
.t .head-right .meta-bottom { border-top: 0 !important; padding-top: 0 !important; margin-top: 12px !important }
/* Mobile: 5 columns for type grid (like pays) */
.m .type-grid { grid-template-columns: repeat(5, 1fr) !important }
/* Collapsed state: leave room for recipes after choosing a type, country or person. */
.view.collapsed .type-grid, .view.collapsed .pays-grid, .view.collapsed .favs-grid { display: none !important }
/* Countries and favorites share columns, padding, gaps and label geometry. */
.m .pays-grid, .m .favs-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr));
  gap:12px 6px !important; padding:18px 16px 14px !important }
.t .pays-grid, .t .favs-grid { display:grid; gap:14px 10px !important; padding:24px 40px 30px !important }
.m .pays-cell, .m .favs-cell, .t .pays-cell, .t .favs-cell {
  cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 6px;
  font: inherit; font-size: 12px; color: var(--ink); text-align: center; min-width: 0;
  background:transparent; border:0; padding:4px 0 }
.m .pays-cell .lbl, .m .favs-cell .lbl, .t .pays-cell .lbl, .t .favs-cell .lbl {
  font-size:12px; line-height:1.3; letter-spacing:.03em; color:var(--ink-soft); white-space:normal; overflow-wrap:anywhere }
.favs-cell.on .lbl { text-decoration:underline; text-underline-offset:4px }
.favs-cell .mono { display: flex; align-items: center; justify-content: center;
  border-radius: 50%; background: var(--card); border: 1px solid var(--line);
  font-weight: 600; color: var(--rose); font-size: 18px }
.t .favs-cell .mono { font-size: 28px }
.favs-cell.on .mono { background: var(--rose); color: #fff; border-color: var(--rose) }
.empty-msg { text-align: center; color: var(--ink); opacity: .6; padding: 28px 16px; font-style: italic }
/* Share button */
.share-btn { display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 12px; border: 1px solid var(--line); border-radius: 999px;
  background: var(--card); color: var(--ink); font: inherit; cursor: pointer;
  font-size: 12px; letter-spacing: 0.04em; transition: background .12s }
.share-btn:hover { background: var(--paper-deep) }
.share-btn:active { background: var(--rose); color: var(--paper); border-color: var(--rose) }
.share-btn svg { display: block }
.share-btn.copied { background: var(--rose); color: var(--paper); border-color: var(--rose) }
.m .share-btn { font-size: 11px; padding: 4px 10px }
.t .share-btn { font-size: 13px; padding: 6px 14px }
/* Aimé par on recipe page */
.favs-line { display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  margin: 8px 0; font-size: 0.9em }
.favs-label { color: var(--ink); opacity: .7; font-style: italic }
.fav-chip { display: inline-flex; align-items: center; gap: 6px;
  padding: 3px 10px 3px 4px; border: 1px solid var(--line);
  background: var(--card); border-radius: 999px; color: var(--ink);
  text-decoration: none; cursor: default; pointer-events: none }
.fav-chip .mono { display: inline-flex; align-items: center; justify-content: center;
  width: 22px; height: 22px; border-radius: 50%; background: var(--rose); color: #fff;
  font-weight: 600; font-size: 11px }
.fav-chip .lbl { font-size: 0.95em }
.t .fav-chip { padding: 4px 12px 4px 4px }
.t .fav-chip .mono { width: 26px; height: 26px; font-size: 13px }
.m .favs-line { justify-content: center; gap: 6px; font-size: 0.85em }
.m .recipe-head { flex-direction: column !important; align-items: center !important; gap: 4px }
.m .recipe-head .date { text-align: center !important }
.m .fav-chip { padding: 2px 8px 2px 3px; gap: 4px }
.m .fav-chip .mono { width: 18px; height: 18px; font-size: 10px }
.m .fav-chip .lbl { font-size: 0.9em }
/* Tab cells styled to match recipe-page badges:
   pays = ink (black), type = transparent, favs = rose (red) */
.pays-cell .mono { background: var(--ink) !important; color: var(--paper) !important;
  border-color: var(--ink) !important }
.type-cell .circle { background: transparent !important; color: var(--ink-soft) !important }
.favs-cell .mono { background: var(--rose) !important; color: var(--paper) !important;
  border-color: var(--rose) !important }
/* On-state: invert/highlight */
.pays-cell.on .mono { background: var(--rose) !important; color: var(--paper) !important;
  border-color: var(--rose) !important }
.pays-cell.on .lbl { color: var(--rose) !important; font-weight: 600 }
.favs-cell.on .mono { background: var(--ink) !important; color: var(--paper) !important;
  border-color: var(--ink) !important }
.favs-cell.on .lbl { color: var(--ink) !important; font-weight: 600 }
/* Per-device font tuning for ing/prep */
.m .ing li { font-size: 15px !important }
.m .ing .rm { font-size: 12px !important }
.m .ing .qt { font-size: 14px !important }
.m .prep li { font-size: 15px !important }
.t .ing li { font-size: 15px !important }
.t .ing .rm { font-size: 12px !important }
.t .ing .qt { font-size: 14px !important }
.t .prep li { font-size: 17px !important }
.t .prep li::before { font-size: 15px !important }
/* Desktop only: ingredients larger (prep unchanged) */
@media (min-width: 1701px) {
  .t .ing li { font-size: 20px !important }
  .t .ing .rm { font-size: 16px !important }
  .t .ing .qt { font-size: 18px !important }
}
/* Reading view: one column, static highlights and the original step order. */
.reading-page { --ingredient-ink: #783629; --container-ink: #31554d }
.reading-header { max-width:920px; margin:0 auto 24px }
.recipe-overview { display:flex; align-items:center; gap:32px }
.reading-header .photo { width:320px; flex:0 0 320px; box-sizing:border-box; border-radius:12px }
.reading-page .title { margin:0; font-variant:normal; overflow-wrap:anywhere }
.recipe-header-details > .title { text-align:left }
.t .reading-page .title { font-size:42px; line-height:1.12 }
.recipe-header-details { display:grid; flex:1; min-width:0; gap:20px; align-items:center }
.recipe-details-main { display:grid; gap:16px; min-width:0 }
.recipe-meta-top,.recipe-meta-bottom,.recipe-badges { display:flex; flex-wrap:wrap; align-items:center; gap:8px }
.recipe-badges { min-width:0 }
.recipe-badge { display:inline-flex; align-items:center; justify-content:center; gap:7px; min-height:40px;
  box-sizing:border-box; padding:6px 10px; border:1px solid var(--line); border-radius:8px;
  background:var(--card); color:var(--ink); font-size:14px; line-height:1.3; overflow-wrap:anywhere }
.recipe-badge svg { flex:none; color:var(--ink-soft) }
.country-landmark { display:block; flex:none; width:28px; height:28px }
.t .pays-cell .country-landmark { width:46px; height:46px }
.recipe-country .country-landmark { width:26px; height:26px }
.type-cell .circle { box-sizing:border-box; flex:none }
.m .type-cell .circle { width:44px !important; height:44px !important }
.t .type-cell .circle { width:72px !important; height:72px !important }
.type-cell .circle, .pays-cell .mono, .favs-cell .mono { border-width:2px }
.m .type-grid { gap:12px 6px !important; padding:18px 16px 14px !important }
.t .type-grid { gap:14px 10px !important; padding:24px 40px 30px !important }
.m .type-cell, .t .type-cell { padding:4px 0; gap:6px }
.m .type-cell .lbl, .t .type-cell .lbl { font-size:12px; line-height:1.3; letter-spacing:.03em }
.recipe-container { display:flex; flex-wrap:wrap; align-items:center; gap:8px; min-width:0 }
.recipe-container .container-text { border-color:var(--teal); color:var(--teal); font-weight:600 }
.reading-copy { max-width:920px; margin:0 auto; font-size:21px; line-height:1.8 }
.reading-copy > .rmp-favorites { margin-bottom:24px }
.reading-copy > .rmp-favorites .favorite-controls { grid-template-columns:repeat(5,minmax(0,1fr)) }
.favorite-name { color:var(--ingredient-ink); font-weight:700 }
.reading-flow p { margin-top:0 }
.reading-flow .ingredient-mention { color:var(--ingredient-ink); font-weight:700; background:none }
.reading-flow .ingredient-amount { color:var(--ingredient-ink); font-size:.86em; font-weight:500 }
.reading-flow .unmatched-ingredients { font-size:.93em; margin-bottom:28px }
.reading-ingredients { margin:24px 0 30px; line-height:1.7 }
.reading-ingredients h2 { font-size:.85em; font-weight:700; color:var(--ink-soft); margin:0 0 10px; letter-spacing:.04em }
.reading-ingredients ul { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:28px; row-gap:5px; list-style:none; margin:0; padding:0 }
.reading-ingredients .ingredient-total { min-width:0; overflow-wrap:anywhere; font-size:.9em }
.reading-ingredients .stock-hint { font-size:.8em; font-style:italic; color:var(--ink-soft); margin:0 0 10px }
.reading-note { margin:0 0 7px; font-size:.92em }
.notes-title { margin:0 0 10px; color:var(--ink-soft); font-weight:700 }
.reading-steps { list-style:decimal outside; padding-left:1.8em; margin:0 }
.reading-step { padding:0 0 20px .35em; break-inside:avoid; overflow-wrap:anywhere }
.reading-step::marker { color:var(--ingredient-ink); font-weight:700 }
.reading-step .step-text { margin:0 }
.reading-page .share-btn { flex:none }
.m .reading-header { display:block; margin-bottom:22px }
.m .recipe-overview { display:block }
.m .reading-header .photo { width:240px; max-width:100%; margin:0 auto 20px }
.m .reading-page .title { white-space:normal; overflow:visible; text-overflow:clip; font-size:27px; text-align:center }
.m .recipe-header-details { gap:20px }
.m .recipe-meta-top,.m .recipe-meta-bottom,.m .recipe-badges,.m .recipe-container { justify-content:center }
.m .recipe-badge { font-size:13px; min-height:38px; padding:5px 8px }
.m .reading-copy { font-size:17px; line-height:1.8 }
.m .reading-copy > .rmp-favorites .favorite-controls { grid-template-columns:repeat(3,minmax(0,1fr)) }
@media (max-width:380px) {
  .m .reading-copy > .rmp-favorites .favorite-controls { grid-template-columns:repeat(2,minmax(0,1fr)) }
}
.m .reading-ingredients ul { grid-template-columns:1fr }
.m .reading-step { padding-bottom:18px }
@media (min-width:700px) and (max-width:1000px) {
  .t .reading-page { padding:28px 30px }
  .t .recipe-overview { gap:24px }
  .t .reading-header .photo { width:240px; flex-basis:240px }
  .t .reading-page .title { font-size:32px }
  .t .reading-copy { font-size:20px }
}
@media print {
  .reading-page .ingredient-mention,.reading-page .ingredient-amount,.reading-page .container-text,.reading-page .favorite-name { color:#000 }
}

/* RMP SHOPPING START */
/* Shopping uses the existing AZERTY keyboard and the immutable icon library. */
.reading-ingredients, .reading-preparation, .shopping-category { border: 2px solid var(--ink); border-radius: 8px;
  background: var(--card); overflow: hidden }
.reading-ingredients, .reading-preparation { margin: 30px 0 36px }
.reading-section-header, .reading-preparation > h2, .shopping-category > h2, .shopping-category-header { margin: 0; padding: 13px 16px;
  background: var(--paper-deep); color: var(--ink); font-size: 23px; font-weight: 700;
  letter-spacing: .015em; line-height: 1.3; border-bottom: 2px solid var(--ink) }
.reading-section-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 16px }
.reading-ingredients .reading-section-header > h2 { margin: 0; padding: 0; border: 0; min-width: 0;
  font: inherit; letter-spacing: inherit; color: inherit }
.reading-section-header .recipe-shopping-edit { flex: 0 0 auto; font-size: 18px; white-space: nowrap }
.reading-preparation .reading-steps { padding: 14px 16px 16px 2.5em }
.reading-preparation .reading-step:last-child { padding-bottom: 0 }
.reading-ingredients ul { padding: 14px 16px 16px; column-gap: 24px; row-gap: 8px }
.reading-ingredients .stock-hint { margin: 0; padding: 12px 16px 0;
  color: var(--ink); font-style: normal; line-height: 1.45 }
.reading-ingredients .ingredient-total { display: flex; align-items: center; gap: 10px; break-inside: avoid }
.reading-ingredients .ingredient-icon { display: block; flex: 0 0 44px;
  width: 44px; min-width: 44px; height: 44px; object-fit: contain }
.ingredient-copy { flex: 1; min-width: 0; overflow-wrap: anywhere }
.recipe-shopping-edit { min-height: 44px; padding: 8px 16px; font: inherit; font-weight: 700;
  border: 1px solid var(--ink); border-radius: 5px; background: var(--card); color: var(--ink); cursor: pointer }
.recipe-shopping-controls { --recipe-shopping-button-size: 44px; display: inline-grid; flex: 0 0 auto;
  grid-template-columns: var(--recipe-shopping-button-size) minmax(0, 112px) var(--recipe-shopping-button-size);
  width: calc(2 * var(--recipe-shopping-button-size) + 124px); min-width: 0; max-width: 100%;
  align-items: center; justify-content: end; gap: 6px }
.recipe-shopping-controls[hidden] { display: none !important }
.recipe-shopping-quantity-label { min-width: 0; overflow-wrap: anywhere; font-size: 13px; text-align: center }
.recipe-shopping-quantity { display: block; font-weight: 700; font-size: 17px }
.recipe-shopping-add, .recipe-shopping-remove { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 44px;
  box-sizing: border-box; width: var(--recipe-shopping-button-size); height: var(--recipe-shopping-button-size);
  min-width: 44px; min-height: 44px; padding: 4px; border: 1px solid var(--ink); border-radius: 5px;
  background: var(--card); color: var(--ink); font: inherit; font-size: 25px; cursor: pointer }
.recipe-shopping-add:disabled, .recipe-shopping-remove:disabled { cursor: default; border-style: dashed; opacity: .55 }
.recipe-shopping-status { margin: 10px 0; font-size: 15px; line-height: 1.4; font-weight: 700 }
.recipe-shopping-status:empty { display: none }
.shopping-panel { max-width: 1000px; margin: 0 auto; padding: 20px; color: var(--ink) }
.shopping-panel [hidden], .shopping-login-dialog [hidden], .shopping-retry[hidden] { display: none !important }
.shopping-retry, .shopping-clear-confirm, .shopping-clear-cancel {
  min-height: 48px; padding: 10px 16px; font: inherit; font-weight: 700;
  border: 2px solid var(--ink); border-radius: 5px; background: var(--paper); color: var(--ink); cursor: pointer }
.shopping-login-dialog { width: min(560px, calc(100% - 32px)); max-height: calc(100vh - 32px);
  box-sizing: border-box; padding: 24px; border: 2px solid var(--ink); border-radius: 8px;
  background: var(--paper); color: var(--ink); font: inherit }
.shopping-login-dialog::backdrop { background: rgba(0, 0, 0, .5) }
.shopping-login-dialog:not([open]) { display: none }
.shopping-login-dialog[open] { display: block }
.shopping-dialog-fallback { position: fixed; z-index: 1000; top: 50%; left: 50%; margin: 0;
  transform: translate(-50%, -50%); overflow-y: auto; box-shadow: 0 0 0 100vmax rgba(0, 0, 0, .5) }
.shopping-login-dialog p { line-height: 1.5 }
.shopping-clear-dialog button { margin: 8px 8px 0 0 }
.shopping-clear { padding: 8px 16px; font-weight: 700 !important }
.shopping-storage-note:empty { display:none }
.shopping-category { margin: 0 0 26px }
.shopping-category-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 16px }
.shopping-category-header > h2 { margin: 0; padding: 0; border: 0; min-width: 0;
  font: inherit; letter-spacing: inherit; color: inherit }
.shopping-panel .shopping-category-header .shopping-clear { flex: 0 0 auto; margin-left: auto; font-size: 18px; white-space: nowrap }
.shopping-category-body { padding: 16px }
.shopping-category-body > :first-child { margin-top: 0 }
.shopping-category-body > :last-child { margin-bottom: 0 }
.shopping-intro, .shopping-storage-note { line-height: 1.45 }
.shopping-panel .shopping-keyboard { padding: 14px 0 0 !important }
.shopping-panel .kb-key { min-height: 44px }
.shopping-space-row { width: 100% }
.shopping-space-row .kb-key { max-width: 360px; text-transform: none }
.shopping-results, .shopping-items { list-style: none; padding: 0; margin: 12px 0; display: grid; gap: 10px }
.shopping-aisle { min-width:0; list-style:none }
.shopping-aisle + .shopping-aisle { margin-top:28px }
.shopping-aisle-title { display:flex; align-items:center; gap:12px; margin:0 0 12px; padding:4px 0;
  border:0; background:none; font-size:19px; font-weight:700; line-height:1.3; color:var(--ink-soft); overflow-wrap:anywhere }
.shopping-aisle-title::after { content:''; flex:1; min-width:20px; border-top:1px solid var(--line); }
.shopping-aisle-items { display:grid; gap:10px; min-width:0; list-style:none; margin:0; padding:0 }
.shopping-results { grid-template-columns: repeat(2, minmax(0, 1fr)) }
.shopping-panel button { font: inherit; color: var(--ink); background: var(--card);
  border: 1px solid var(--ink); border-radius: 5px; min-height: 46px }
.shopping-panel button { cursor: pointer }
.shopping-panel button:disabled { cursor: default; border-style: dashed }
.shopping-result { display: grid; grid-template-columns: 44px minmax(0, 1fr); align-items: center;
  gap: 10px; border: 1px solid var(--line); border-radius: 5px; padding: 10px; min-width: 0 }
.shopping-result .shopping-adjustments { grid-column: 1 / -1 }
.shopping-adjustments { display: grid; gap: 8px; min-width: 0 }
.shopping-adjustment { display: flex; justify-content: flex-end; align-items: center; gap: 8px; min-width: 0 }
.shopping-adjustment button { display: inline-flex; align-items: center; justify-content: center;
  flex: 0 0 48px; min-width: 48px; min-height: 48px; padding: 4px; font-size: 25px }
.shopping-panel .shopping-adjustment .shopping-remove,
.shopping-panel .shopping-adjustment .shopping-add { flex: 0 0 104px; padding: 8px 12px; font-size: 16px }
.shopping-adjustment-value { min-width: 0; text-align: right; flex: 1; overflow-wrap: anywhere }
.shopping-adjustment-value[hidden] { display: none }
.shopping-adjustment .shopping-quantity { display: block }
.shopping-name { overflow-wrap: anywhere; font-weight: 700; min-width: 0 }
.shopping-add .shopping-name { flex: 1 }
.shopping-add-label { font-size: 13px; white-space: nowrap }
.shopping-panel .shopping-ingredient-icon { display: block; flex: 0 0 44px;
  width: 44px; min-width: 44px; height: 44px; object-fit: contain }
.shopping-aisle-label, .shopping-name-line { min-width:0; overflow-wrap:anywhere }
.shopping-name-line { flex:1; line-height:1.4 }
.shopping-item { display: grid; grid-template-columns: minmax(0, 1fr) minmax(168px, 240px); align-items: center;
  gap: 10px; padding: 10px; border: 1px solid var(--line); border-radius: 5px; background: var(--card) }
.shopping-check { display: flex; align-items: center; gap: 10px; min-height: 48px; cursor: pointer; min-width: 0 }
.shopping-check input { width: 26px; height: 26px; flex: 0 0 26px; accent-color: var(--ink) }
.shopping-item.is-bought { background: #e2e2e2; border-color: #777; color: #444 }
.shopping-item.is-bought button { background: #eee; border-color: #777; color: #444 }
.shopping-item.is-bought button:disabled { background: #eee; border-color: #777; color: #555 }
.shopping-item.is-bought .shopping-check input { accent-color: #555 }
.shopping-item.is-bought .shopping-name { text-decoration: line-through }
.shopping-quantity-label { display: grid; gap: 4px; min-width: 0; font-size: 12px }
.shopping-quantity { font-size: 18px; font-weight: 700; overflow-wrap: anywhere }
.shopping-remove { padding: 8px 12px }
.shopping-storage-note { font-size: 13px; margin-top: 18px }
@media (max-width: 699px) {
  .shopping-panel { padding: 16px 12px }
  .reading-section-header, .reading-preparation > h2, .shopping-category > h2 { font-size: 20px; padding: 12px }
  .reading-section-header { padding: 8px 12px }
  .reading-ingredients ul { padding: 12px }
  .reading-ingredients .ingredient-total { flex-wrap: wrap }
  .recipe-shopping-controls { flex-basis: 100%; justify-content: flex-end }
  .reading-preparation .reading-steps { padding: 12px 12px 12px 2.5em }
  .reading-ingredients .stock-hint { padding: 12px 12px 0 }
  .shopping-category-body { padding: 12px 8px }
  .shopping-results { grid-template-columns: 1fr }
  .shopping-item { grid-template-columns: minmax(0, 1fr) auto; gap: 8px }
  .shopping-check { grid-column: 1 / -1 }
  .shopping-item .shopping-adjustments { grid-column: 1 / -1 }
  .shopping-quantity-label { max-width: 180px }
}
@media print {
  .reading-section-header, .reading-preparation > h2, .shopping-category > h2 { background: transparent; color: #000 }
}
/* RMP SHOPPING END */

/* RMP FAVORITES START */
.rmp-favorites { margin: 0; min-width: 0; border: 2px solid var(--line, #666); border-radius: 12px;
  background: var(--card, #fff); overflow: hidden; }
.rmp-favorites[hidden], .rmp-favorites [hidden] { display: none !important; }
.favorite-header { display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 10px 12px; border-bottom: 2px solid var(--line, #666); background: var(--paper-deep, #fff); }
.favorite-heading { display: flex; align-items: center; gap: 8px; min-width: 0; }
.favorite-header h2 { margin: 0; padding: 0; font: inherit; font-size: 18px; font-weight: 700; color: var(--ink, #222); }
.favorite-sync-state { display: inline-flex; align-items: center; justify-content: center;
  width: 22px; height: 22px; flex: 0 0 22px; border: 2px solid var(--ochre, #704a00);
  border-radius: 50%; color: var(--ochre, #704a00); font-size: 14px; font-weight: 700; }
.favorite-summary { margin: 0; padding: 0 12px 12px; font-size: 14px; line-height: 1.45; font-weight: 700; }
.favorite-controls { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; padding: 12px; }
.favorite-toggle { position: relative; display: flex; justify-content: center; align-items: center;
  min-height: 48px; min-width: 0; padding: 10px 14px;
  font: inherit; font-size: 14px; font-weight: 600; line-height: 1.25; text-align: center; cursor: pointer;
  border: 2px solid var(--line, #666); border-radius: 6px;
  color: var(--ink, #222); background: var(--paper, #fff); }
.favorite-name-label { display: block; width: 100%; text-align: center; white-space: nowrap; }
.favorite-toggle[aria-pressed="true"] { color: var(--paper, #fff); background: var(--sage, #506335); border-color: var(--sage, #506335); }
.favorite-toggle:disabled { opacity: 1; cursor: default; }
.favorite-check { position: absolute; right: 4px; top: 4px; transform: none;
  width: 12px; text-align: center; font-size: 11px; line-height: 1; font-weight: 700; }
.favorite-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.favorite-actions button { min-height: 48px; min-width: 0; padding: 8px 12px;
  font: inherit; font-size: 14px; font-weight: 600; color: var(--ink, #222); background: var(--paper, #fff);
  border: 2px solid var(--line, #666); border-radius: 6px; cursor: pointer; }
.favorite-header-actions { flex: none; }
.favorite-header-actions button { min-width: 100px; font-size: 18px; font-weight: 700;
  line-height: 1.3; letter-spacing: normal; white-space: nowrap; border-radius: 5px; }
.favorite-actions .favorite-save { color: var(--paper, #fff); background: var(--rose, #884632); }
.favorite-actions button:disabled { cursor: default; }
.favorite-actions [hidden] { display: none; }
.favorite-persistence { font-size: 13px; line-height: 1.5; margin: 0; padding: 0 12px 12px; }
.person-favorites-toolbar { display: flex; align-items: center; justify-content: flex-end;
  flex-wrap: wrap; gap: 8px 12px; margin: 0 auto 16px; max-width: 1000px; }
.m .person-favorites-toolbar { margin: 16px 16px 0; }
.t .person-favorites-toolbar { margin: 16px 40px 0; max-width: none; }
.person-favorites-toolbar[hidden], .person-favorites-toolbar [hidden],
.person-favorite-check[hidden] { display: none !important; }
.person-favorites-edit { min-height: 44px; min-width: 100px; padding: 8px 12px;
  border: 2px solid var(--line, #666); border-radius: 6px; background: var(--paper, #fff);
  color: var(--ink, #222); font: inherit; font-weight: 700; cursor: pointer; }
.person-favorites-edit[aria-pressed="true"] { background: var(--rose, #884632); color: var(--paper, #fff); }
.person-favorites-edit:disabled { cursor: default; }
.person-favorites-status { flex-basis: 100%; margin: 0; font-size: 14px; line-height: 1.45; }
.card.is-person-favorite-editing { position: relative; cursor: pointer; min-height: 44px; }
.person-favorite-check { position: absolute; z-index: 1; top: 8px; right: 8px;
  display: flex; align-items: center; justify-content: center; width: 44px; height: 44px;
  box-sizing: border-box; border: 2px solid var(--ink, #222); border-radius: 8px;
  background: var(--paper, #fff); color: var(--ink, #222); font-size: 28px; font-weight: 700;
  line-height: 1; pointer-events: none; }
.is-person-favorite .person-favorite-check { background: var(--rose, #884632); color: var(--paper, #fff); }
@media (max-width: 380px) {
  .m .favorite-controls { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media print {
  .person-favorites-toolbar, .person-favorite-check { display: none !important; }
  .favorite-actions, .favorite-persistence, .favorite-sync-state,
  .favorite-toggle[aria-pressed="false"] { display: none; }
}
/* RMP FAVORITES END */

/* RMP WARM_CSS START */

/* ==== Original book colors, with stronger contrast ==== */
:root {
  color-scheme: light;
  --paper:#f4ecd1; --paper-deep:#ebddb4; --card:#fbf5e0;
  --ink:#1f1609; --ink-soft:#593d18; --ink-faded:#70501f;
  --line:#8c7448; --line-soft:#8c7448;
  --rose:#884632; --sage:#506335; --ochre:#78501c; --plum:#694657; --teal:#365e58;
  --danger:#8b2f27;
}

/* RMP WARM_CSS END */

/* RMP CONTRAST_CSS START */

/* ==== Clear section headings and accessible controls in both palettes ==== */
.site-header-content { width:max-content; max-width:100%; margin:0 auto }
.site-header-content > .title { white-space:normal !important }
.site-meta-row { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:16px; margin-top:14px }
.site-meta { flex:1 1 0; min-width:0; text-align:left }
.site-header-actions { display:flex; align-items:center; gap:8px; flex:none; margin-left:auto }
.display-mode-toggle { display:inline-flex; align-items:center; justify-content:center;
  min-width:96px; height:48px; min-height:48px; padding:8px 10px; border:2px solid var(--rose);
  border-radius:999px; background:var(--card); color:var(--ink); font:inherit; font-size:14px;
  line-height:1.2; font-weight:700; cursor:pointer }
.display-mode-toggle[hidden] { display:none !important }
.display-mode-toggle[aria-pressed="true"] { text-decoration:underline; text-underline-offset:4px }
.site-access { min-width:96px }
.site-login-form { margin:0; padding:0; width:96px }
.site-access [hidden] { display:none !important }
.site-code, .site-logout { box-sizing:border-box; width:100%; min-height:48px; padding:8px;
  border:2px solid var(--rose); border-radius:5px; font:inherit; font-size:16px; line-height:1.2 }
.site-code { display:block; background:#ffffff; color:#151515 }
.site-logout { width:auto; background:var(--card); color:var(--ink); font-size:14px; font-weight:700; cursor:pointer }
.site-logout:disabled { cursor:default; opacity:.65 }
.frame header .site-meta .sub { margin-top:0 }
.frame header .site-meta .date { margin-top:4px }
@media (max-width:699px) {
  .m .site-meta-row { gap:10px; margin-top:10px }
  .m .site-access { min-width:84px }
  .m .site-login-form { width:84px }
}
@media (max-width:360px) {
  .m .site-meta { flex-basis:100% }
}
.frame { border:1px solid var(--line) }
.frame header .sub, .frame header .date { color:var(--ink-soft) }
.frame nav.tabs { border-bottom:2px solid var(--line) }
.frame nav.tabs .t { min-height:48px; color:var(--ink); border-bottom-width:4px }
.frame nav.tabs .t.on { color:var(--rose); border-bottom-color:var(--rose); font-weight:700 }
.frame nav.tabs .t.disabled { color:#888888; opacity:1; cursor:default }
.empty-msg, .favs-label { opacity:1; color:var(--ink-soft) }
.kb-caret { animation:none; opacity:1 }
.kb-key, .share-btn { transition:none }
.kb-key { border-width:2px }
.recipe-shopping-edit, .recipe-shopping-add, .recipe-shopping-remove,
.shopping-panel button, .share-btn { border-width:2px }
.recipe-shopping-edit, .favorite-actions .favorite-edit { border-color:var(--rose) }
.recipe-shopping-edit[aria-expanded="true"], .favorite-actions .favorite-save {
  background:var(--rose); border-color:var(--rose); color:var(--paper);
}
.favorite-toggle[aria-pressed="true"] {
  background:var(--sage); border-color:var(--sage); color:var(--paper);
}
.recipe-shopping-add:disabled, .recipe-shopping-remove:disabled,
.shopping-panel button:disabled, .favorite-actions button:disabled {
  opacity:1; color:var(--ink-faded); background:var(--paper); border-color:var(--line); border-style:dashed;
}
.shopping-panel .shopping-clear, .shopping-clear-confirm {
  border-color:var(--danger); color:var(--danger); font-weight:700;
}
.shopping-panel .shopping-clear:disabled { border-color:var(--line); color:var(--line) }
/* Keep unrelated article actions visually steady during an in-flight request.
   They remain natively disabled; unavailable/error controls keep their styling. */
.shopping-panel.is-mutating .shopping-adjustment button:disabled {
  color:var(--ink); background:var(--card); border-color:var(--ink); border-style:solid;
}
.shopping-panel.is-mutating .shopping-item.is-bought .shopping-adjustment button:disabled {
  color:#444; background:#eee; border-color:#777;
}
.shopping-check input { accent-color:var(--sage) }
@media (min-width:700px) and (max-width:1700px) {
  .t nav.tabs .t { font-size:17px }
  .t .type-cell .lbl, .t .pays-cell .lbl, .t .favs-cell .lbl {
    font-size:16px; line-height:1.3; white-space:normal; overflow-wrap:anywhere; text-align:center;
  }
  .t .card .ct { font-size:20px }
  .t .card .cm { font-size:14px }
  .t .reading-copy { font-size:22px; line-height:1.7 }
  .t .reading-page { padding-left:28px; padding-right:28px }
  .t .recipe-shopping-add, .t .recipe-shopping-remove,
  .t .recipe-shopping-edit, .t .shopping-adjustment button, .t .kb-key,
  .t .share-btn { min-height:48px }
  .t .recipe-shopping-add, .t .recipe-shopping-remove, .t .shopping-adjustment button { flex-basis:48px; min-width:48px }
  .t .recipe-shopping-controls { --recipe-shopping-button-size:48px }
  .t header .date { font-size:14px }
}
@media (min-width:700px) and (max-width:1000px) {
  .t .reading-ingredients ul { grid-template-columns:1fr }
  .t .grid-cards { grid-template-columns:repeat(3,minmax(0,1fr)) }
}
@media print {
  .site-access, .display-mode-toggle { display:none }
  .frame { box-shadow:none }
}

/* RMP CONTRAST_CSS END */

/* RMP SECTION_CSS START */

/* One visual treatment for recipe sections and the shared shopping panels. */
.reading-ingredients, .reading-preparation, .shopping-category, .rmp-favorites, .planning-section {
  border:2px solid var(--ink); border-radius:8px; background:var(--card); overflow:hidden;
}
.reading-section-header, .reading-preparation > h2, .shopping-category > h2, .shopping-category-header, .favorite-header {
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  box-sizing:border-box; min-height:68px; margin:0; padding:8px 16px;
  background:var(--paper-deep); color:var(--ink);
  font-family:inherit; font-size:23px; font-weight:700; line-height:1.3; letter-spacing:.015em;
  border-left:6px solid var(--rose); border-bottom:2px solid var(--ink);
}
.reading-ingredients .reading-section-header > h2, .favorite-header h2, .planning-section-header > h2 {
  min-width:0; margin:0; padding:0; border:0; font:inherit; color:inherit; letter-spacing:inherit;
}
.reading-section-header .recipe-shopping-edit, .favorite-header .favorite-edit {
  flex:none; min-height:48px; padding:8px 12px; border:2px solid var(--rose); border-radius:5px;
  background:var(--card); color:var(--ink); font:inherit; font-size:18px; font-weight:700;
  line-height:1.3; letter-spacing:normal; white-space:nowrap;
}
.reading-section-header .recipe-shopping-edit, .favorite-header .favorite-edit, .favorite-header .favorite-save {
  box-sizing:border-box; display:inline-flex; align-items:center; justify-content:center;
  flex:0 0 104px; width:104px; min-width:104px; height:48px; min-height:48px;
}
.reading-section-header .recipe-shopping-edit[hidden] { display:none !important }
.reading-section-header .recipe-shopping-edit[aria-expanded="true"] {
  background:var(--rose); color:var(--paper);
}
.favorite-controls { padding:14px 16px 16px }
.favorite-draft-actions, .favorite-summary, .favorite-persistence { padding:0 16px 16px }
@media (max-width:699px) {
  .reading-section-header, .reading-preparation > h2, .shopping-category > h2, .shopping-category-header, .favorite-header {
    font-size:20px; padding:8px 12px;
  }
  .favorite-controls { padding:12px }
  .favorite-draft-actions, .favorite-summary, .favorite-persistence { padding:0 12px 12px }
}
@media print {
  .reading-section-header, .reading-preparation > h2, .shopping-category > h2, .shopping-category-header, .favorite-header {
    background:transparent; color:#000000; border-left-color:#000000;
  }
}

/* RMP SECTION_CSS END */

/* RMP BOOX_CSS START */

/* ==== White paper: dark type, quiet red outlines, unchanged food artwork ==== */
:root[data-display="paper"] {
  --paper:#ffffff; --paper-deep:#ffffff; --card:#ffffff;
  --ink:#171717; --ink-soft:#333333; --ink-faded:#4b4b4b;
  --line:#666666; --line-soft:#727272;
  --rose:#8b3036; --sage:#8b3036; --ochre:#8b3036; --plum:#8b3036; --teal:#8b3036;
  --danger:#8b3036;
  --type-accent:var(--rose); --country-accent:var(--rose); --favorite-accent:var(--rose);
}
html[data-display="paper"], html[data-display="paper"] body { background:var(--paper) }
html[data-display="paper"] .frame { background-image:none; box-shadow:none }
html[data-display="paper"] .frame::before { background-image:none }
html[data-display="paper"] .photo { box-shadow:none }
html[data-display="paper"] .reading-page { --ingredient-ink:var(--ink); --container-ink:var(--ink) }
html[data-display="paper"] .frame nav.tabs .t { color:var(--ink) }
html[data-display="paper"] .frame nav.tabs .t.on { color:var(--rose); border-bottom-color:var(--rose) }
html[data-display="paper"] .frame nav.tabs .t.disabled { color:var(--ink-faded) }
html[data-display="paper"] .frame .type-cell .circle,
html[data-display="paper"] .frame .pays-cell .mono,
html[data-display="paper"] .frame .favs-cell .mono {
  background:var(--paper) !important; border:1.5px solid var(--rose) !important; color:var(--rose) !important;
}
html[data-display="paper"] .frame .type-cell.on .circle,
html[data-display="paper"] .frame .pays-cell.on .mono,
html[data-display="paper"] .frame .favs-cell.on .mono { border-width:3px !important }
html[data-display="paper"] .frame .type-cell .lbl,
html[data-display="paper"] .frame .pays-cell .lbl,
html[data-display="paper"] .frame .favs-cell .lbl { color:var(--ink) !important }
html[data-display="paper"] .frame .type-cell.on .lbl,
html[data-display="paper"] .frame .pays-cell.on .lbl,
html[data-display="paper"] .frame .favs-cell.on .lbl { font-weight:700; text-decoration:underline; text-underline-offset:3px }
/* Existing type symbols already use 1.4-unit line art; country drawings match them. */
html[data-display="paper"] .frame .type-cell svg,
html[data-display="paper"] .frame .country-landmark,
html[data-display="paper"] .frame .recipe-type svg { fill:none; stroke:currentColor; stroke-width:1.4 }
html[data-display="paper"] .frame .recipe-type,
html[data-display="paper"] .frame .recipe-country,
html[data-display="paper"] .frame .recipe-container .container-text {
  background:var(--paper); color:var(--rose); border-color:var(--rose);
}
html[data-display="paper"] .frame .favorite-toggle[aria-pressed="true"],
html[data-display="paper"] .frame .favorite-save,
html[data-display="paper"] .frame .recipe-shopping-edit[aria-expanded="true"],
html[data-display="paper"] .frame .person-favorites-edit[aria-pressed="true"],
html[data-display="paper"] .frame .is-person-favorite .person-favorite-check,
html[data-display="paper"] .frame .kb-key:active {
  background:var(--paper); color:var(--rose); border-color:var(--rose); text-decoration:underline;
  text-underline-offset:3px;
}
html[data-display="paper"] .frame .favorite-toggle[aria-pressed="true"] .favorite-check { color:var(--rose) }
html[data-display="paper"] .frame .reading-section-header,
html[data-display="paper"] .frame .reading-preparation > h2,
html[data-display="paper"] .frame .shopping-category-header,
html[data-display="paper"] .frame .favorite-header { border-left-width:2px }

/* RMP BOOX_CSS END */

/* RMP NAV_RECIPE_CSS START */

/* Compact navigation, shared keyboards and clear category accents. */
html { overflow-y:scroll }
:root { --type-accent:var(--teal); --country-accent:var(--sage); --favorite-accent:var(--plum) }
.frame nav.tabs .t { position:relative; display:flex; flex-direction:column; align-items:center;
  justify-content:flex-start; height:62px; min-height:62px; box-sizing:border-box; padding:7px 6px 27px !important; line-height:1.2 }
.tab-label { display:block }
.frame nav.tabs .results-head { position:absolute; left:3px; right:3px; bottom:4px;
  display:flex; align-items:center; justify-content:center; gap:4px; width:auto; max-width:none;
  height:23px; min-height:0; margin:0; padding:0 !important; text-transform:none; letter-spacing:normal }
.frame nav.tabs .results-head.is-empty { visibility:hidden; pointer-events:none }
.frame nav.tabs .results-head .filter-recall { flex:0 1 auto; min-width:0; height:auto; padding:0;
  border:0; background:transparent; font-size:15px; line-height:1.2; font-weight:700; color:inherit }
.frame nav.tabs .results-head .query-count { flex:0 0 auto; width:auto; font-size:12px; color:var(--ink-soft) }
.frame .grid-cards { padding-top:18px }
.frame .recipe-search-view .search-wrap, .frame .shopping-panel .shopping-keyboard {
  width:100%; max-width:1000px; margin:0 auto; padding:20px 20px 0 !important }
.frame .ingredient-suggestions { width:100%; max-width:1000px; margin:0 auto; padding:12px 20px 0; text-align:center }
.frame .ingredient-suggestions[hidden], .frame .ingredient-suggestions [hidden] { display:none !important }
.ingredient-selection-list, .ingredient-suggestion-list { display:flex; flex-wrap:wrap; justify-content:center; gap:8px; margin:0; padding:0 }
.ingredient-selection-list:not([hidden]) + .ingredient-suggestion-list:not([hidden]) { margin-top:10px }
.ingredient-suggestion { display:inline-flex; align-items:center; gap:7px; max-width:100%; min-width:0;
  min-height:44px; padding:4px 10px; border:2px solid var(--line); border-radius:8px;
  background:var(--card); color:var(--ink); font:inherit; font-size:14px; line-height:1.3; cursor:pointer }
.ingredient-suggestion-icon { flex:0 0 32px; width:32px; height:32px; object-fit:contain }
.ingredient-suggestion-label { min-width:0; max-width:240px; overflow-wrap:anywhere; text-align:left }
.ingredient-selection-remove { flex:none; font-size:18px; line-height:1 }
.ingredient-suggestion[aria-pressed="true"] { background:var(--rose); border-color:var(--rose); color:#ffffff }
html[data-display="paper"] .ingredient-suggestion[aria-pressed="true"] { background:#ffffff; border-color:#8b2026; color:#8b2026 }
.frame nav.tabs .t[data-view="ingredients"] .filter-recall { max-width:100%; overflow:hidden }
.frame nav.tabs .t[data-view="ingredients"] .filter-recall-label { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.frame .kb-key {
  box-sizing:border-box; height:48px; min-height:48px; padding:8px 0; border:2px solid var(--ink);
  border-radius:5px; background:var(--card); color:var(--ink); font:inherit; font-size:16px; line-height:1.2 }
.frame .kb-key:active { background:var(--rose); color:#ffffff }
.frame .kb-context-slot, .frame .kb-key.kb-context-action { grid-column:1 / span 2; grid-row:1; box-sizing:border-box; }
.frame .kb-context-slot { height:48px; border:1px solid var(--line-soft); border-radius:5px; }
.frame .kb-key.kb-context-action { display:flex; align-items:center; justify-content:center; gap:6px; text-transform:none; font-size:13px; }
.frame .kb-context-action svg { display:block; width:20px; height:20px; flex:none; }
.frame .kb-context-action:disabled { color:var(--ink-soft); cursor:default; }
.frame .kb-context-label { min-width:0; }
.frame .kb-key.kb-all { grid-column:9 / span 2; display:flex; align-items:center; justify-content:center; }
.frame .kb-all svg { display:block; width:22px; height:22px; flex:none; }
.frame .kb-actions .kb-key { flex:1; height:auto; min-width:48px; font-size:20px }
.frame .type-grid, .frame .pays-grid, .frame .favs-grid {
  display:flex; flex-wrap:wrap; justify-content:center; width:100%; max-width:1000px; margin:0 auto;
  gap:14px 10px !important; padding:20px 20px 14px !important }
.frame .type-cell, .frame .pays-cell, .frame .favs-cell { flex:0 0 calc((100% - 40px) / 5); min-width:0; padding:0 0 4px }
.frame .type-cell .lbl { max-width:100%; white-space:normal }
.frame nav.tabs .t[data-view="type"], .frame nav.tabs .t[href$="#type"] { color:var(--type-accent) }
.frame nav.tabs .t[data-view="pays"], .frame nav.tabs .t[href$="#pays"] { color:var(--country-accent) }
.frame nav.tabs .t[data-view="favs"], .frame nav.tabs .t[href$="#favs"] { color:var(--favorite-accent) }
.frame nav.tabs .t[data-view="type"].on { border-bottom-color:var(--type-accent) }
.frame nav.tabs .t[data-view="pays"].on { border-bottom-color:var(--country-accent) }
.frame nav.tabs .t[data-view="favs"].on { border-bottom-color:var(--favorite-accent) }
.frame .type-cell .circle { background:var(--type-accent) !important; border-color:var(--type-accent) !important; color:#ffffff !important }
.frame .pays-cell .mono { background:var(--country-accent) !important; border-color:var(--country-accent) !important; color:#ffffff !important }
.frame .favs-cell .mono { background:var(--favorite-accent) !important; border-color:var(--favorite-accent) !important; color:#ffffff !important }
.country-landmark { width:26px; height:26px; stroke-width:1.4 }
.t .pays-cell .country-landmark { width:44px; height:44px }
.recipe-country .country-landmark { width:22px; height:22px }
.recipe-overview { display:grid; grid-template-columns:280px minmax(0,1fr); align-items:start; gap:24px }
.recipe-header-details:only-child { grid-column:1 / -1 }
.reading-header .photo { position:relative; width:100%; min-height:260px; aspect-ratio:auto; margin:0 }
.reading-header .photo img { position:absolute; inset:0; display:block }
.recipe-header-details { align-content:start; align-self:start }
.recipe-title-row { display:block; min-width:0; font-size:42px; line-height:1.12; text-align:left }
.recipe-title-row > .title { display:inline; min-width:0; text-align:left }
.recipe-title-row .share-btn { margin-left:6px; vertical-align:middle; white-space:nowrap }
.recipe-details-main { display:flex; flex-wrap:wrap; align-items:center; gap:6px }
.recipe-meta-top, .recipe-meta-bottom, .recipe-badges { display:contents }
.reading-page .recipe-badge, .m .reading-page .recipe-badge { min-height:34px; padding:4px 7px;
  border-width:1px; border-radius:5px; font-size:12px; font-weight:600; gap:5px }
.recipe-badge svg { width:22px; height:22px }
.recipe-type { background:var(--type-accent); color:#ffffff; border-color:var(--type-accent) }
.recipe-country { background:var(--country-accent); color:#ffffff; border-color:var(--country-accent) }
.recipe-container .container-text { background:var(--ochre); color:#ffffff; border-color:var(--ochre) }
.recipe-equipment { display:flex; flex-wrap:wrap; align-items:center; gap:5px; min-width:0; max-width:100% }
.reading-page .recipe-equipment-item, .m .reading-page .recipe-equipment-item {
  background:transparent; color:var(--ink-soft); border-color:var(--line);
  font-size:11px; font-weight:400; min-height:32px; padding:3px 6px; white-space:nowrap;
}
.recipe-equipment-item svg { flex:none; width:24px; height:24px }
.m .recipe-equipment { justify-content:center }
html[data-display="paper"] .reading-page .recipe-equipment-item {
  background:#ffffff; color:var(--rose); border-color:var(--rose);
}
.reading-page .share-btn { box-sizing:border-box; min-height:32px; height:32px; padding:3px 7px; gap:4px; border-radius:5px;
  font-size:11px; line-height:1.3; background:var(--card); border-color:var(--rose); color:var(--ink) }
.reading-page .share-btn svg { width:16px; height:16px; color:inherit }
.recipe-type svg, .recipe-country svg { color:inherit }
.recipe-header-details, .m .recipe-header-details { gap:12px }
.recipe-header-details .rmp-favorites { display:block; margin:0; min-width:0; width:100%; box-sizing:border-box; padding:0 }
.recipe-header-details .favorite-heading { gap:4px }
.recipe-header-details .favorite-header-actions { min-height:44px; align-items:center }
.recipe-header-details .favorite-controls { gap:4px; padding:6px 8px;
  grid-template-columns:repeat(5,minmax(0,1fr)) }
.recipe-header-details .favorite-summary, .recipe-header-details .favorite-persistence {
  margin:0; padding:0 8px 8px; font-size:12px }
.recipe-header-details .favorite-toggle { min-height:44px; padding:6px 2px; font-size:12px;
  border-width:1px; border-color:var(--favorite-accent); border-radius:4px; background:var(--card); color:var(--ink) }
.recipe-header-details .favorite-toggle[aria-pressed="true"] { background:var(--favorite-accent); color:#ffffff }
.recipe-header-details .favorite-edit { border-color:var(--favorite-accent) }
.recipe-header-details .favorite-save { background:var(--favorite-accent); border-color:var(--favorite-accent); color:#ffffff }
.reading-section-header, .shopping-category-header, .favorite-header { min-height:66px; box-sizing:border-box }
.recipe-header-details .favorite-header {
  min-height:52px; padding:3px 8px; gap:8px; font-size:16px; border-left-width:4px }
.recipe-header-details .favorite-header .favorite-edit,
.recipe-header-details .favorite-header .favorite-save {
  flex:0 0 68px; width:68px; min-width:68px; height:32px; min-height:32px;
  padding:3px 6px; font-size:11px; line-height:1.3 }
.site-access { flex:0 0 112px; width:112px; min-width:112px }
.site-login-form { width:100% }
.site-code, .site-logout { width:100%; height:48px; min-height:48px; padding:8px 10px;
  border-radius:999px; text-align:center }
.site-logout { font-size:13px }
.frame .shopping-panel { max-width:none; padding:0 }
.shopping-search-region { max-width:1000px; margin:0 auto }
.shopping-search-region .shopping-results { margin:18px 20px 0 }
.shopping-search-region .shopping-results:empty { margin:0 }
.shopping-kind-heading { grid-column:1 / -1; list-style:none; margin:4px 0 0; }
.shopping-kind-title { margin:0 0 8px; padding:8px 0 5px; border-bottom:2px solid var(--line); font-size:17px; font-weight:700; }
.shopping-kind-heading .shopping-kind-title { margin-bottom:0; }
.shopping-remark { grid-column:1 / -1; display:flex; flex-wrap:wrap; align-items:center; gap:4px 10px; min-width:0; }
.shopping-remark-text { margin-left:.4em; color:var(--ink-soft); font-size:13px; font-weight:400; line-height:1.4; white-space:pre-wrap; overflow-wrap:anywhere; }
.shopping-remark-text[hidden] { display:none; }
.shopping-panel .shopping-remark-edit { margin-left:auto; min-height:44px; padding:4px 7px; border-color:transparent; background:transparent; font-size:13px; }
.shopping-panel .shopping-remark-edit:disabled { border-color:transparent; background:transparent; color:var(--ink); }
.shopping-remark-form { flex-basis:100%; width:100%; min-width:0; padding-top:8px; border-top:1px solid var(--line-soft); }
.shopping-remark-label { display:grid; gap:7px; font-size:14px; }
.shopping-remark-input { width:100%; min-width:0; max-width:100%; min-height:70px; box-sizing:border-box; resize:vertical; padding:8px; border:1px solid var(--line); border-radius:6px; background:var(--paper); color:var(--ink); font:inherit; line-height:1.4; }
.shopping-remark-actions { display:flex; justify-content:flex-end; flex-wrap:wrap; gap:8px; margin-top:8px; }
.shopping-panel .shopping-remark-actions button { min-height:44px; padding:5px 12px; font-size:14px; }
.shopping-remark-status { margin:8px 0 0; font-size:13px; line-height:1.4; overflow-wrap:anywhere; }
.shopping-remark-draft-host { margin:12px 20px; }
html[data-display=paper] .shopping-kind-title { border-color:#8b2026; }
html[data-display=paper] .shopping-remark-input { background:#fff; color:#222; }
.shopping-panel .shopping-category[data-shopping-category="list"] {
  width:calc(100% - 40px); max-width:960px; margin:20px auto 26px }
.shopping-panel > .shopping-storage-note, .shopping-panel > .shopping-retry { margin-left:20px; margin-right:20px }
@media (min-width:700px) and (max-width:1300px) {
  .t nav.tabs { padding:0 16px !important }
  .t nav.tabs .t { font-size:14px; letter-spacing:.02em }
  .t nav.tabs .t[data-view="ingredients"], .t nav.tabs .t[href$="#ingredients"] {
    flex:1.35 !important; font-size:13px; letter-spacing:0 }
}
@media (min-width:700px) and (max-width:1000px) {
  .t .recipe-title-row { font-size:32px }
  .t .recipe-overview { grid-template-columns:220px minmax(0,1fr); gap:20px }
  .t .reading-header .photo { width:100%; min-height:240px }
}
@media (max-width:1000px) {
  .frame nav.tabs .t { height:64px; min-height:64px; padding-top:6px !important; padding-bottom:31px !important }
  .frame nav.tabs .results-head { height:29px; bottom:3px; flex-direction:column; gap:0 }
  .frame nav.tabs .results-head .filter-recall { flex:none; max-width:100%; font-size:13px; line-height:15px }
  .frame nav.tabs .results-head .query-count { flex:none; font-size:10px; line-height:12px }
}
@media (max-width:699px) {
  .m .site-access { width:112px; min-width:112px }
  .m .site-login-form { width:100% }
  .m nav.tabs { display:flex; flex-wrap:wrap; justify-content:center; padding:0 8px !important }
  .m nav.tabs .t { flex:0 0 20% !important; width:20% }
  .m nav.tabs .t:nth-child(2) { flex-basis:40% !important; width:40% }
  .m nav.tabs .t:nth-child(n+5) { flex-basis:33.333333% !important; width:33.333333% }
  .m nav.tabs .t[data-view="ingredients"], .m nav.tabs .t[href$="#ingredients"] { font-size:11px; letter-spacing:0 }
  .frame .type-grid, .frame .pays-grid, .frame .favs-grid { gap:12px 6px !important; padding:20px 20px 14px !important }
  .frame .type-cell, .frame .pays-cell, .frame .favs-cell { flex-basis:calc((100% - 24px) / 5) }
  .frame .kb-key { font-size:13px }
  .frame .kb-context-action .kb-context-label { display:none }
  .m .reading-header .photo { width:100%; max-width:360px; min-height:0; aspect-ratio:4 / 3; margin:0 auto 16px }
  .m .recipe-body { padding-left:12px; padding-right:12px }
  .m .recipe-details-main { justify-content:center }
  .m .recipe-title-row { font-size:27px; text-align:center }
  .m .recipe-title-row > .title { text-align:center }
  .m .recipe-title-row .share-btn { width:32px; height:32px; padding:3px; justify-content:center }
  .m .recipe-title-row .share-btn .lbl { display:none }
  .m .recipe-header-details .favorite-controls { gap:3px }
  .m .recipe-header-details .favorite-toggle { padding-left:1px; padding-right:1px }
  .m .recipe-header-details .favorite-check { font-size:8px; top:2px; right:2px }
}
@media (max-width:380px) {
  .frame .kb-row { gap:2px }
  .frame .kb-letters .kb-key { font-size:12px }
  .frame .type-cell { flex-basis:calc((100% - 18px) / 4) }
  .m .recipe-header-details .favorite-toggle { font-size:10px }
}

/* RMP NAV_RECIPE_CSS END */

/* Public and shared tabs use the same compact geometry and typography. */
.frame nav.tabs.tabs-public, .frame nav.tabs.tabs-private {
  display:grid; grid-template-columns:repeat(5,minmax(0,1fr));
  gap:0; padding:0 16px !important; align-items:stretch;
}
.frame nav.tabs.tabs-public > .t, .frame nav.tabs.tabs-private > .t {
  width:auto !important; min-width:0 !important; flex:none !important;
  white-space:nowrap; height:44px; min-height:44px; padding:2px 6px 18px !important;
  font-size:14px; letter-spacing:.02em; text-transform:none;
}
.frame nav.tabs.tabs-public > .t .tab-label, .frame nav.tabs.tabs-private > .t .tab-label {
  flex:none; line-height:1.2; min-height:1.2em;
}
.frame nav.tabs.tabs-public .results-head, .frame nav.tabs.tabs-private .results-head {
  height:16px; bottom:1px; flex-direction:row; flex-wrap:nowrap; gap:4px;
}
.frame nav.tabs.tabs-public .results-head .filter-recall,
.frame nav.tabs.tabs-private .results-head .filter-recall {
  flex:0 1 auto; min-width:0; max-width:100%; font-size:12px; line-height:16px;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.frame nav.tabs.tabs-public .results-head .query-count,
.frame nav.tabs.tabs-private .results-head .query-count {
  flex:0 0 auto; font-size:12px; line-height:16px; white-space:nowrap;
}
.frame nav.tabs.tabs-public .recipe-tab-title {
  position:absolute; left:3px; right:3px; bottom:1px; height:16px;
  display:flex; align-items:center; justify-content:center;
  font-size:10px; line-height:14px; font-weight:400; text-transform:none; letter-spacing:normal;
  white-space:nowrap; text-align:center;
}
.frame nav.tabs.tabs-public .recipe-tab-title[hidden] { display:none !important }
.recipe-tab-title-text {
  display:block; min-width:0; max-width:100%;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.frame nav.tabs.tabs-private {
  grid-template-columns:repeat(5,minmax(0,1fr)); background:var(--card);
}
.frame nav.tabs.tabs-private .filter-recall-label {
  display:block; overflow:hidden; text-overflow:ellipsis;
}
@media (max-width:699px) {
  .frame nav.tabs.tabs-public, .frame nav.tabs.tabs-private { padding:0 8px !important }
  .frame nav.tabs.tabs-public > .t, .frame nav.tabs.tabs-private > .t {
    height:40px; min-height:40px; padding:2px 2px 18px !important;
    font-size:11px; letter-spacing:0;
  }
  .frame nav.tabs.tabs-public .results-head .filter-recall,
  .frame nav.tabs.tabs-private .results-head .filter-recall,
  .frame nav.tabs.tabs-public .results-head .query-count,
  .frame nav.tabs.tabs-private .results-head .query-count { font-size:11px }
  .frame nav.tabs.tabs-public .recipe-tab-title { font-size:9px; line-height:12px }
}

/* Equipment and serving guidance is a quiet red annotation, not heavy black. */
.reading-page .reading-step .cooking-guidance { color:#8b3036; font-weight:400 }
html[data-display="paper"] .reading-page .reading-step .cooking-guidance { color:#8b2026; font-weight:400 }

/* RMP INTERACTION_CSS START */

/* Selection keeps its fill/check; focusing or tapping adds no surrounding halo. */
:focus { outline:none }
a, button, input, select, textarea, [tabindex], [role="checkbox"] {
  -webkit-tap-highlight-color:transparent;
}

/* RMP INTERACTION_CSS END */

/* Shared personal meal tools — visible only after the existing code unlocks them. */
.frame .favs-grid [hidden] { display:none !important; }
.frame .favs-cell .mono { background:#e5eddf !important; border-color:#7d9470 !important; color:#344e2b !important; }
.frame .favs-cell.on .mono { background:#527146 !important; border-color:#527146 !important; color:#fff !important; }
.frame .view[data-view="favs"] .person-favorites-toolbar {
  justify-content:center; flex-wrap:wrap; margin:0 auto 14px; padding:0 16px;
}
.frame .view[data-view="favs"] .person-favorites-edit { min-width:88px; min-height:44px; font-size:14px; }
.frame .view[data-view="favs"] .person-favorites-status { flex-basis:100%; text-align:center }
.is-person-favorite-editing[aria-checked="mixed"] .person-favorite-check {
  background:var(--card); color:var(--favorite-accent); border-style:dashed;
}
.allergies-panel, .planning-panel { max-width:960px; margin:0 auto; padding:24px 20px }
.allergies-panel { width:100%; max-width:1000px; padding:20px }
.allergies-panel [hidden], .planning-panel [hidden], .allergy-dot[hidden] { display:none !important }
.meal-persons { display:flex; justify-content:center; flex-wrap:wrap; gap:8px; margin:0 0 12px }
.meal-person, .meal-action {
  min-height:44px; padding:8px 16px; border:1px solid var(--line); border-radius:6px;
  background:var(--card); color:var(--ink); font:inherit; font-size:16px; cursor:pointer;
}
.meal-person[aria-pressed="true"] { border-color:var(--rose); background:var(--rose); color:#fff }
.meal-person:disabled, .meal-action:disabled { cursor:default; opacity:.65 }
.meal-toolbar { display:flex; justify-content:center; gap:8px; margin:0 0 16px }
.meal-action[aria-pressed="true"] { background:var(--rose); color:#fff; border-color:var(--rose) }
.meal-status { margin:10px auto; max-width:640px; text-align:center; font-size:15px }
.allergy-selection-list { display:flex; flex-wrap:wrap; align-items:stretch; justify-content:center;
  gap:8px; padding:0; margin:0 0 14px; }
.allergy-selection-remove { position:relative; display:inline-flex; flex-direction:column;
  align-items:center; justify-content:center; flex:0 0 108px; gap:6px;
  min-height:88px; min-width:0; max-width:100%; padding:8px 16px; box-sizing:border-box;
  border:1px solid #bf7777; border-radius:8px; background:#f7e7e3; color:#743535;
  font:inherit; font-size:12px; line-height:1.3; text-align:center; cursor:pointer; }
.allergy-selection-name { display:block; min-width:0; max-width:100%; overflow-wrap:anywhere; }
.allergy-selection-cross { position:absolute; top:4px; right:5px; font-size:14px; line-height:1; }
.allergy-selection-remove:disabled { cursor:default; }
.allergy-selection-list.is-editing .allergy-selection-remove:disabled { opacity:.55; }
.allergy-query { display:flex; justify-content:center; align-items:baseline; gap:8px;
  min-height:24px; margin:0 0 10px; text-align:center; font-size:16px; }
.allergy-query-value { min-width:0; overflow-wrap:anywhere; }
.allergy-query-count { flex:none; color:var(--ink-soft); font-size:13px; }
.frame .allergy-keyboard { width:100%; margin:0 auto 10px; padding:0; }
html[data-display="paper"] .allergy-selection-remove { background:#fff; color:#8b2026; border-color:#8b2026; }
.allergy-ingredients {
  list-style:none; padding:0; margin:0; display:grid; grid-template-columns:minmax(0,1fr); gap:8px;
}
.allergy-ingredient {
  display:flex; align-items:center; gap:8px; width:100%; min-height:58px; box-sizing:border-box;
  padding:6px 9px; border:1px solid var(--line-soft); border-radius:6px; background:var(--card);
  color:var(--ink); text-align:left; font:inherit; font-size:15px;
}
button.allergy-ingredient { cursor:pointer }
.allergy-ingredient .ingredient-icon { flex:0 0 40px; width:40px; height:40px; object-fit:contain }
.allergy-name { flex:1; min-width:0; overflow-wrap:anywhere }
.allergy-check { flex:0 0 18px; width:18px; font-weight:bold; color:#a52323; text-align:center }
.allergy-ingredient.is-selected { border:2px solid #a52323; padding:5px 8px }
.allergy-dot { display:inline-block; flex:0 0 12px; width:12px; height:12px; border-radius:50%;
  background:#b32222; border:2px solid var(--card); box-shadow:0 0 0 1px #851717; vertical-align:middle; }
.card { position:relative }
.card > .allergy-dot { position:absolute; top:10px; left:10px; z-index:1 }
.recipe-title-row > .allergy-dot { margin:0 4px }
.ingredient-copy > .allergy-dot { margin:0 5px; width:8px; height:8px }
/* Bémols: the same personal choices, expressed through quiet icon-led rows. */
.preference-sr-only, .recipe-header-details .favorite-heading h2 {
  position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden;
  clip-path:inset(50%); white-space:nowrap; border:0;
}
.frame .allergy-persons {
  display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:14px 10px;
  margin:0 auto 20px; padding:4px 20px 10px; max-width:1000px; width:100%; box-sizing:border-box;
}
.frame .view[data-view="favs"] .favs-grid {
  display:grid; grid-template-columns:repeat(5,minmax(0,1fr)) !important;
  margin:0 auto 20px; padding:24px 40px 10px !important;
}
.frame .allergy-person, .frame .favs-cell {
  display:flex; flex-direction:column; align-items:center; gap:6px; min-width:0;
  padding:4px 0; border:0; background:transparent; color:var(--ink); text-align:center;
}
.allergy-person .mono, .frame .favs-cell .mono {
  display:flex; align-items:center; justify-content:center; width:72px; height:72px;
  border:1px solid #ae6262; border-radius:50%; background:#f7e7e3; color:#743535;
  font-size:28px; font-weight:700; box-sizing:border-box;
}
.allergy-person .lbl, .frame .favs-cell .lbl { font-size:12px; line-height:1.3; overflow-wrap:anywhere; }
.frame .favs-cell .lbl, .frame .favs-cell.on .lbl {
  color:var(--ink) !important; font-weight:400 !important; letter-spacing:normal; text-decoration:none !important;
}
.frame .favs-cell:disabled { cursor:default; opacity:.65; }
.allergy-person[aria-pressed="true"] .mono { color:#fff; background:#a04b4b; border-color:#a04b4b; }
.frame .view[data-view="favs"] .person-favorites-edit {
  min-width:88px; min-height:44px; padding:8px 16px; font-size:14px; font-weight:400;
  border-width:1px; border-radius:6px; background:var(--card); color:var(--ink);
}
.frame .allergy-keyboard .allergy-edit .kb-context-label { display:inline; font-size:12px; }
@media (max-width:699px) {
  .frame .allergy-keyboard .allergy-edit svg { display:none; }
  .frame .allergy-keyboard .allergy-edit .kb-context-label { font-size:10px; }
}
.frame .view[data-view="favs"] .person-favorites-edit[aria-pressed="true"] {
  background:#e5eddf; border-color:#527146; color:#344e2b;
}
.allergy-selection-icon { display:block; width:40px; height:40px; flex:none; object-fit:contain; }
.allergy-ingredient.is-selected { border:1px solid #bf7777; padding:6px 9px; background:#f7e7e3; }
.allergy-criterion-icon { flex:none; width:40px; height:40px; object-fit:contain; color:#743535; }
.recipe-header-details .rmp-favorites {
  display:grid; grid-template-columns:22px minmax(0,1fr) 68px; align-items:center;
  gap:6px; padding:5px 7px; border-width:1px; border-radius:7px; background:var(--card);
}
.recipe-header-details .favorite-header { display:contents; }
.recipe-header-details .favorite-heading { grid-column:1; grid-row:1; color:var(--sage); }
.recipe-header-details .favorite-heading > svg { width:20px; height:20px; flex:none; }
.recipe-header-details .favorite-controls {
  grid-column:2; grid-row:1; display:flex; align-items:center; gap:4px; padding:0;
  min-width:0; overflow-x:auto; scrollbar-width:thin;
}
.recipe-header-details .favorite-toggle {
  flex:0 0 auto; min-height:32px; padding:3px 7px; font-size:11px; border-color:#7d9470;
}
.recipe-header-details .favorite-toggle[aria-pressed="true"] { color:#344e2b; background:#e5eddf; border-color:#7d9470; }
.recipe-header-details .favorite-header-actions { grid-column:3; grid-row:1; min-height:36px; }
.recipe-header-details .favorite-header-actions .favorite-edit,
.recipe-header-details .favorite-header-actions .favorite-save { border-color:#7d9470; color:#344e2b; background:var(--card); }
.recipe-header-details .favorite-header-actions .favorite-save { background:#e5eddf; }
.recipe-header-details .favorite-summary, .recipe-header-details .favorite-persistence { grid-column:1 / -1; }
.recipe-avoidances {
  display:flex; align-items:center; gap:6px; width:100%; min-width:0; box-sizing:border-box;
  border:1px solid #c99690; border-radius:7px; padding:4px 7px; background:var(--card);
}
.recipe-avoidances[hidden] { display:none !important; }
.recipe-avoidances-heading { flex:none; margin:0; padding:0; line-height:1; color:#8b3036; }
.recipe-avoidances-heading svg { display:block; width:20px; height:20px; }
.recipe-avoidance-list { display:flex; gap:6px; align-items:center; min-width:0; overflow-x:auto; scrollbar-width:thin; }
.recipe-avoidance-person {
  display:inline-flex; align-items:center; gap:5px; flex:none; min-height:32px;
  border:1px solid transparent; border-radius:5px; padding:2px 5px; color:#743535; background:#f7e7e3;
}
.recipe-avoidance-name { font-size:11px; font-weight:600; white-space:nowrap; }
.recipe-avoidance-icons { display:inline-flex; align-items:center; gap:3px; }
.recipe-avoidance-icon { display:block; width:26px; height:26px; object-fit:contain; color:#8b3036; }
html[data-display="paper"] .allergy-person .mono,
html[data-display="paper"] .allergy-ingredient.is-selected,
html[data-display="paper"] .recipe-avoidance-person { background:#fff; color:#8b2026; border-color:#8b2026; }
html[data-display="paper"] .allergy-person[aria-pressed="true"] .mono { border-width:2px; text-decoration:underline; }
html[data-display="paper"] .frame .favs-cell .mono {
  background:#fff !important; border-color:#527146 !important; color:#344e2b !important;
}
html[data-display="paper"] .frame .favs-cell.on .mono {
  background:#fff !important; border-color:#527146 !important; color:#344e2b !important;
  border-width:2px !important; text-decoration:underline;
}
html[data-display="paper"] .frame .view[data-view="favs"] .person-favorites-edit[aria-pressed="true"] {
  background:#fff; border-color:#527146; color:#344e2b;
}
html[data-display="paper"] .frame .allergy-person[aria-pressed="true"] {
  background:transparent; border:0; color:var(--ink);
}
html[data-display="paper"] .recipe-header-details .favorite-toggle[aria-pressed="true"],
html[data-display="paper"] .recipe-header-details .favorite-header-actions .favorite-save {
  background:#fff; border-color:#527146; color:#344e2b; text-decoration:underline;
}
@media (max-width:699px) {
  .frame .allergy-persons { gap:12px 6px; padding:0 0 10px; }
  .frame .view[data-view="favs"] .favs-grid { padding:20px 12px 10px !important; }
  .allergy-person .mono, .frame .favs-cell .mono { width:44px; height:44px; font-size:20px; }
  .allergy-person .lbl, .frame .favs-cell .lbl { font-size:11px; }
  .allergies-panel { padding:20px 12px; }
}
/* Shared protected planning, using the same warm/paper tokens. */
.planning-panel{width:min(100%,760px);margin:20px auto 24px;padding:0;border:0;background:transparent;color:var(--ink);box-sizing:border-box}
.planning-panel[hidden],.planning-panel [hidden]{display:none!important}
.planning-header{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.planning-header h2{margin:0 auto 0 0}
.planning-panel button,.planning-panel select,.planning-panel input,.planning-share{font:inherit;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:8px;min-height:48px;box-sizing:border-box}
.planning-panel button,.planning-share{padding:8px 14px;cursor:pointer}
.planning-panel input,.planning-panel select{padding:7px 9px;max-width:100%;min-width:0}
.planning-panel button:disabled{opacity:.55;cursor:default}
.planning-zone,.planning-basis{font-size:.86rem;color:var(--ink-soft);margin:10px 0}
.planning-slots,.planning-free-slots{list-style:none;padding:0;margin:14px 0;display:grid;gap:10px}
.planning-slot,.planning-free-slot{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid var(--line);border-radius:10px;flex-wrap:wrap}
.planning-slot-label,.planning-free-label{flex:1;min-width:150px;line-height:1.5}
.planning-field{display:flex;flex-direction:column;gap:5px;min-width:0;flex:1;font-size:.9rem}
.planning-add,.planning-range{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}
.planning-add .planning-field,.planning-slot .planning-field{min-width:190px}
.planning-add-button,.planning-find,.planning-remove{flex:0 0 auto}
.planning-section + .planning-section{margin-top:20px}
.planning-range .planning-field:first-child{flex:1.5}
.planning-status,.planning-range-status{font-size:.9rem;line-height:1.5;color:#a52323;margin:12px 0}
.planning-slot.is-invalid{border-color:#a52323}
.planning-share{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
@media(max-width:480px){.planning-panel{margin:20px auto}.planning-add .planning-field,.planning-slot .planning-field{min-width:100%;flex-basis:100%}.planning-range .planning-field:first-child{flex-basis:100%}.planning-calendar,.planning-share{flex:1}.planning-free-label{flex-basis:100%}.planning-person{max-width:none}}
html[data-display="paper"] .meal-person[aria-pressed="true"],
html[data-display="paper"] .meal-action[aria-pressed="true"] {
  background:#fff; color:var(--rose); border:2px solid var(--rose); font-weight:700;
}
@media (min-width:700px) and (max-width:1000px) {
  .t nav.tabs { flex-wrap:wrap }
  .t nav.tabs .t, .t nav.tabs .t[data-view="ingredients"], .t nav.tabs .t[href$="#ingredients"] {
    flex:1 1 18% !important; min-width:110px;
  }
}
@media (max-width:699px) {
  .m nav.tabs { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); justify-content:stretch }
  .m nav.tabs .t, .m nav.tabs .t:nth-child(2), .m nav.tabs .t:nth-child(n+5) { width:auto; min-width:0 }
  .planning-panel { padding:0 }
  .allergy-ingredients { gap:6px }
  .allergy-ingredient { padding:6px; font-size:14px }
  .allergy-ingredient.is-selected { padding:5px }
  .allergy-ingredient .ingredient-icon { flex-basis:32px; width:32px; height:32px }
  .meal-person, .meal-action { padding:8px 12px; font-size:14px }
}


/* One weekly model, a compact week and a horizontal, useful-hours day view. */
.planning-week-layout{display:grid;grid-template-columns:minmax(0,1fr);align-items:start;gap:12px;--planning-name-width:108px;--planning-lane-height:44px}
.planning-day-tabs{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;min-width:0}
.planning-panel .planning-day-tab{width:100%;min-width:0;padding:10px 3px;min-height:44px;text-align:center;font-size:.82rem;line-height:1.35;border-color:var(--line-soft)}
.planning-panel .planning-day-tab[aria-selected=true]{background:var(--rose);border-color:var(--rose);color:#fff;font-weight:700}
.planning-day-short{display:none}
.planning-day-view{min-width:0}
.planning-week-scroll{width:100%;max-width:100%;overflow:clip;border:1px solid var(--line);border-radius:8px;background:#fff;box-sizing:border-box}
.planning-week-grid{width:100%;min-width:0;position:relative;color:var(--ink)}
.planning-week-axis-row,.planning-week-row{display:grid;grid-template-columns:var(--planning-name-width) minmax(0,1fr)}
.planning-week-axis-row{position:sticky;top:0;z-index:5;background:var(--card);border-bottom:1px solid var(--line)}
.planning-week-corner,.planning-week-person{position:sticky;left:0;z-index:3;box-sizing:border-box;background:var(--card);border-right:1px solid var(--line);padding:10px;display:flex;align-items:center;line-height:1.3}
.planning-week-corner{font-size:.72rem;color:var(--ink-soft)}
.planning-week-person{font-size:.85rem;font-weight:700;overflow-wrap:anywhere}
.planning-week-row{border-bottom:1px solid var(--line-soft)}
.planning-week-row:last-child{border-bottom:0}
.planning-week-axis{height:44px;position:relative;box-sizing:border-box;font-variant-numeric:tabular-nums}
.planning-week-hour{position:absolute;top:15px;font-size:.76rem;line-height:1;transform:translateX(-50%);white-space:nowrap}
.planning-week-hour:first-child{transform:none;margin-left:3px}
.planning-week-hour:last-child{transform:translateX(-100%);margin-left:-3px}
.planning-week-track{min-width:0;height:calc(var(--planning-lanes,1)*var(--planning-lane-height) + 8px);position:relative;box-sizing:border-box}
.planning-week-gridline{position:absolute;top:0;bottom:0;width:0;border-left:1px solid var(--line);pointer-events:none;z-index:1}
.planning-week-gridline.is-half-hour{border-left-style:dashed;border-left-color:var(--line-soft)}
.planning-week-free{position:absolute;top:4px;bottom:4px;min-width:1px;box-sizing:border-box;border:1px solid #6b9470;border-radius:4px;background:#e6f2e4;color:#214928;overflow:hidden;font-size:.75rem;line-height:1.3;padding:4px 3px;font-variant-numeric:tabular-nums;white-space:nowrap}
.planning-week-event{position:absolute;box-sizing:border-box;z-index:2;overflow:hidden;height:40px;min-width:1px;padding:4px 3px;border:1px solid #9b333d;border-left-width:3px;border-radius:4px;background:#f8dce0;color:#7c2630;font-size:.75rem;line-height:1.3;font-variant-numeric:tabular-nums;white-space:nowrap;cursor:default}
.planning-week-event-time{display:block;overflow:hidden;text-overflow:ellipsis}
.planning-week-legend{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:12px;font-size:.73rem;line-height:1.5;color:var(--ink-soft);margin:0}
.planning-legend-free,.planning-legend-busy{display:inline-flex;align-items:center;gap:5px}
.planning-legend-free::before,.planning-legend-busy::before{content:'';width:10px;height:10px;border:1px solid #6b9470;border-radius:3px;background:#e6f2e4;box-sizing:border-box}
.planning-legend-busy::before{border-color:var(--rose);background:var(--rose)}
.planning-week-empty{font-size:.86rem;color:var(--ink-soft);margin:10px 0}
html[data-display=paper] .planning-week-corner,html[data-display=paper] .planning-week-person,html[data-display=paper] .planning-week-axis-row{background:#fff}
html[data-display=paper] .planning-panel .planning-day-tab[aria-selected=true]{background:#fff;color:#8b2026;border:2px solid #8b2026}
html[data-display=paper] .planning-week-event{background:#fff;color:#8b3036;border-color:#8b3036;border-width:1px;border-left-width:2px;box-shadow:none}
html[data-display=paper] .planning-week-free{background:#fff;border-color:#4a7952;color:#235f30}
html[data-display=paper] .planning-legend-free::before{background:#fff}
html[data-display=paper] .planning-legend-busy::before{background:#fff;border-color:#8b3036;border-left-width:3px}
@media(max-width:600px){.planning-week-layout{gap:8px;--planning-name-width:68px}.planning-panel .planning-day-tab{padding:10px 1px;font-size:.72rem}.planning-day-name{display:none}.planning-day-short{display:inline}.planning-week-person,.planning-week-corner{padding:8px 5px}.planning-week-person{font-size:.72rem}.planning-week-hour{font-size:.65rem}.planning-week-event,.planning-week-free{font-size:.66rem;padding:4px 1px}.planning-week-legend{font-size:.7rem}}

/* Weekly overview first; the editor opens without changing the stored intervals. */
.planning-panel { width:calc(100% - 40px); max-width:none; }
.planning-participants,.planning-editor-people { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:14px 10px; width:100%; max-width:1000px; box-sizing:border-box; margin:0 auto; }
.planning-panel .planning-participants { grid-template-columns:repeat(6,minmax(0,1fr)); padding:16px 16px 12px; }
.planning-panel .planning-participant,.planning-panel .planning-all,.planning-panel .planning-editor-person {
  display:flex; flex-direction:column; align-items:center; gap:6px; min-width:0; min-height:0;
  padding:4px 0; border:0; background:transparent; color:var(--ink); text-align:center;
}
.planning-panel .planning-all { --planning-person-color:var(--sage); --planning-person-fill:#e5eddf; }
.planning-participants .mono,.planning-editor-people .mono {
  display:flex; align-items:center; justify-content:center; width:72px; height:72px;
  border:1px solid var(--planning-person-color,var(--rose)); border-radius:50%;
  background:var(--planning-person-fill,#f7e7e3); color:var(--planning-person-color,var(--rose));
  font-size:28px; font-weight:700; box-sizing:border-box;
}
.planning-participants .lbl,.planning-editor-people .lbl { font-size:12px; line-height:1.3; overflow-wrap:anywhere; }
.planning-participants [aria-pressed=true] .mono,.planning-editor-people [aria-pressed=true] .mono {
  color:#fff; background:var(--planning-person-color,var(--rose)); border-color:var(--planning-person-color,var(--rose));
}
.planning-panel .planning-header { margin-bottom:8px; }
.planning-panel .planning-zone,.planning-week-note { font-size:.8rem; line-height:1.5; color:var(--ink-soft); }
.planning-week-note { margin:12px 0; }
.planning-week-host { min-width:0; }
.planning-panel .planning-add { margin:12px 0; }
.planning-availability .planning-range { margin-top:12px; }
html[data-display=paper] .planning-participants .mono,html[data-display=paper] .planning-editor-people .mono { background:#fff; color:var(--rose); border-color:var(--rose); }
html[data-display=paper] .planning-participants [aria-pressed=true] .mono,html[data-display=paper] .planning-editor-people [aria-pressed=true] .mono { border-width:2px; text-decoration:underline; }
@media(max-width:699px) {
  .planning-panel { width:calc(100% - 24px); padding:0; }
  .planning-panel .planning-add-button { width:100%; }
}

/* The complete common week stays visible independently of the selected detail. */
.planning-week-host { margin:0; padding:16px 16px 0; }
.planning-common-host { padding:0 16px 16px; }
.planning-common-days { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:5px; margin-top:0; min-width:0; }
.planning-common-day { min-width:0; display:flex; flex-direction:column; align-items:stretch; gap:6px; padding:7px 5px; border:1px solid var(--line-soft); border-radius:8px; background:var(--paper); }
.planning-common-day h3 { margin:0 0 2px; font-size:.78rem; line-height:1.4; text-align:center; color:var(--ink); }
.planning-panel .planning-common-slot { display:flex; flex-direction:column; align-items:center; justify-content:center; width:100%; min-width:0; min-height:44px; margin:0; padding:5px 2px; border:1px solid #4a7952; border-radius:5px; color:#214928; background:#e6f2e4; font-size:.78rem; font-weight:600; font-variant-numeric:tabular-nums; line-height:1.4; text-align:center; white-space:nowrap; }
.planning-common-start,.planning-common-end{display:block}
.planning-common-empty { margin:8px 0 0; font-size:.78rem; line-height:1.5; text-align:center; color:var(--ink-soft); }
.planning-sharing { display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin:0 16px 16px; padding:12px; border:1px solid #4a7952; border-radius:10px; }
/* Planned dishes share the existing week; the server owns their cart amounts. */
.planning-common-entry { display:flex; flex-direction:column; gap:3px; min-width:0; }
.planning-panel .planning-meal-day-add,.planning-panel .planning-meal-slot-add { padding:0; min-height:30px; width:100%; min-width:0; font-size:20px; line-height:1; border-radius:5px; }
.planning-panel .planning-meal-day-add { border-color:var(--line-soft); background:transparent; }
.planning-panel .planning-meal-slot-add { color:#214928; border-color:#4a7952; background:#e6f2e4; }
.planning-meals { margin:0 16px 16px; min-width:0; }
.planning-meal-picker { padding:12px; margin:0 0 16px; border:1px solid var(--line); border-radius:8px; background:var(--paper); }
.planning-meal-fields { display:grid; grid-template-columns:minmax(110px,1.2fr) minmax(100px,1fr) minmax(100px,1fr) 36px; align-items:end; gap:10px; }
.planning-panel .planning-meal-fields select { min-width:0; width:100%; padding:7px 4px; }
.planning-panel .planning-meal-close { padding:0; min-width:36px; min-height:48px; font-size:22px; }
.planning-meal-search-label { display:flex; flex-direction:column; gap:5px; margin:12px 0; font-size:.9rem; }
.planning-panel .planning-meal-search { min-width:0; width:100%; padding:8px; }
.planning-meal-results { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:5px 12px; max-height:280px; overflow-y:auto; overscroll-behavior:contain; }
.planning-meal-result { display:grid; grid-template-columns:44px minmax(0,1fr) 36px; gap:8px; align-items:center; min-height:48px; min-width:0; }
.planning-meal-title { grid-column:2; grid-row:1; font-size:.9rem; line-height:1.3; overflow-wrap:anywhere; }
.planning-meal-photo { grid-column:1; grid-row:1; width:44px; height:44px; min-width:44px; object-fit:cover; border-radius:6px; }
.planning-panel .planning-meal-add,.planning-panel .planning-meal-remove { min-width:36px; min-height:40px; padding:0; font-size:21px; line-height:1; }
.planning-meal-add { grid-column:3; grid-row:1; }
.planning-meal-remove { grid-column:4; grid-row:1; }
.planning-meal-days { display:grid; gap:14px; }
.planning-meal-day-group { min-width:0; }
.planning-meal-day-group h3 { margin:0 0 6px; font-size:.9rem; color:var(--ink); }
.planning-meal-list { margin:0; padding:0; list-style:none; display:grid; gap:5px; }
.planning-meal-row { display:grid; grid-template-columns:44px 84px minmax(0,1fr) 36px; gap:8px; align-items:center; min-height:48px; min-width:0; }
.planning-meal-time { grid-column:2; grid-row:1; font-size:.75rem; font-variant-numeric:tabular-nums; white-space:nowrap; color:var(--ink-soft); }
.planning-meal-link { grid-column:3; grid-row:1; min-width:0; color:var(--ink); font-size:.9rem; line-height:1.35; text-underline-offset:3px; overflow-wrap:anywhere; }
.planning-meal-status,.planning-meal-empty { margin:10px 0 0; font-size:.85rem; color:var(--ink-soft); }
.planning-panel .planning-meal-retry { margin-top:8px; }
html[data-display=paper] .planning-meal-picker { background:#fff; }
html[data-display=paper] .planning-panel .planning-meal-slot-add { color:#235f30; background:#fff; border-color:#4a7952; }
@media(max-width:699px) {
  .planning-meals { margin:0 10px 12px; }
  .planning-meal-fields { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
  .planning-meal-fields > .planning-field:first-child { grid-column:1; grid-row:1; }
  .planning-panel .planning-meal-close { grid-column:2; grid-row:1; justify-self:end; }
  .planning-meal-results { grid-template-columns:minmax(0,1fr); max-height:250px; }
  .planning-meal-row { grid-template-columns:36px 75px minmax(0,1fr) 32px; gap:5px; }
  .planning-meal-row .planning-meal-photo { width:36px; height:36px; min-width:36px; }
  .planning-panel .planning-meal-remove { min-width:32px; }
  .planning-meal-time { font-size:.69rem; }
}
.planning-panel .planning-add .planning-field,.planning-panel .planning-slot .planning-field { min-width:100px; flex:1 1 100px; }
.planning-panel .planning-add .planning-field:first-child,.planning-panel .planning-slot .planning-field:first-child { flex:1.4 1 120px; }
.planning-panel .planning-add input,.planning-panel .planning-slot input { font-variant-numeric:tabular-nums; width:100%; }
.planning-week-summary { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:12px; margin-top:20px; }
.planning-person-summary { min-width:0; padding:12px; border:1px solid var(--line-soft); border-left:3px solid var(--planning-person-color); border-radius:8px; }
.planning-person-name { margin:0; font-size:1rem; line-height:1.4; color:var(--planning-person-color,var(--ink)); }
.planning-person-agenda { padding:0; margin:10px 0 0; list-style:none; font-size:.85rem; line-height:1.6; font-variant-numeric:tabular-nums; }
.planning-person-agenda li + li { margin-top:5px; }
.planning-person-agenda-time { white-space:nowrap; }
.planning-agenda-free,.planning-agenda-busy{display:flex;align-items:baseline;gap:7px}
.planning-agenda-free::before,.planning-agenda-busy::before{content:'';flex:none;width:7px;height:7px;border-radius:50%;background:#4a7952;align-self:center}
.planning-agenda-busy::before{background:var(--planning-person-color,var(--rose))}
.planning-agenda-free{color:#235f30}
.planning-person-editors { display:grid; gap:0; margin:0; padding:14px 16px 16px; border:0; }
.planning-person-section { min-width:0; border:1px solid var(--line-soft); border-left:3px solid var(--planning-person-color); border-radius:10px; padding:10px 12px; }
.planning-person-header { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.planning-person-header .planning-person-name { min-width:0; overflow-wrap:anywhere; }
.planning-editor-toolbar { display:flex; justify-content:center; margin-top:12px; }
.planning-panel .planning-person-edit { min-width:88px; min-height:44px; flex:0 0 auto; padding:8px 16px; font-size:14px; font-weight:400; border-radius:6px; background:var(--card); }
.planning-panel .planning-person-edit[aria-pressed=true] { color:#743535; background:#f7e7e3; border-color:#a04b4b; }
.planning-person-editor { padding-top:10px; }
.planning-person-editor .planning-slots { margin:0 0 12px; }
.planning-person-editor .planning-slot { align-items:flex-end; }
.planning-panel .planning-clock { padding:0; border:0; margin:0; min-inline-size:0; }
.planning-clock-label { padding:0 0 5px; }
.planning-clock-parts { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); gap:4px; align-items:center; }
.planning-clock-separator { text-align:center; }
.planning-panel .planning-clock select { width:100%; min-width:0; min-height:48px; padding:7px 4px; font-variant-numeric:tabular-nums; }
.planning-panel .planning-clock select:disabled { opacity:.65; }
html[data-display=paper] .planning-person-summary,
html[data-display=paper] .planning-person-section { border-left-color:#8b2026; background:#fff; }
html[data-display=paper] .planning-person-name { color:var(--ink); }
html[data-display=paper] .planning-panel .planning-common-slot { color:#235f30; background:#fff; border:2px solid #4a7952; }
html[data-display=paper] .planning-panel .planning-person-edit[aria-pressed=true] { background:#fff; color:var(--rose); border-color:var(--rose); }
@media(max-width:699px) {
  .planning-panel .planning-participants { padding:14px 10px 12px; }
  .planning-participants,.planning-editor-people { gap:12px 4px; }
  .planning-participants .mono,.planning-editor-people .mono { width:44px; height:44px; font-size:20px; }
  .planning-participants .lbl,.planning-editor-people .lbl { font-size:11px; }
  .planning-common-host { padding:0 10px 12px; }
  .planning-week-host { padding:12px 10px 0; }
  .planning-person-editors { padding:12px 10px; }
  .planning-sharing { margin:0 10px 12px; }
  .planning-week-summary { grid-template-columns:minmax(0,1fr); }
  .planning-person-summary,.planning-person-section { padding:10px 8px; }
  .planning-common-days { gap:3px; }
  .planning-common-day { padding:6px 2px; gap:5px; }
  .planning-common-day h3 { font-size:.69rem; }
  .planning-panel .planning-common-slot { font-size:.65rem; padding:4px 0; }
  .planning-common-empty { font-size:.65rem; overflow-wrap:anywhere; }
  .planning-panel .planning-add .planning-field,.planning-panel .planning-slot .planning-field { min-width:0; flex:1 1 35%; }
  .planning-panel .planning-add .planning-field:first-child,.planning-panel .planning-slot .planning-field:first-child { flex:1 1 100%; }
  .planning-panel .planning-remove { margin-left:auto; }
}
@media(max-width:380px) {
  .planning-panel .planning-participants { gap:10px 2px; padding:14px 6px 12px; }
  .planning-participants .mono { width:36px; height:36px; font-size:18px; }
  .planning-participants .lbl { font-size:10px; }
  .planning-common-day { padding:6px 1px; }
  .planning-panel .planning-common-slot { font-size:.6rem; }
}

/* Compact shared shopping: controls retain their space before/after editing. */
.frame .reading-ingredients .ingredient-total { display:grid; grid-template-columns:36px minmax(0,1fr) auto;
  gap:7px; min-height:40px; align-items:center; font-size:14px; line-height:1.35; }
.frame .reading-ingredients .ingredient-icon { width:36px; min-width:36px; height:36px; }
.frame .recipe-shopping-controls { --recipe-shopping-button-size:28px; grid-template-columns:28px 56px 28px;
  width:120px; height:36px; gap:4px; flex-basis:auto; }
.frame .reading-ingredients[data-shopping-authorized="true"] .recipe-shopping-controls[hidden] {
  display:inline-grid !important; visibility:hidden; pointer-events:none;
}
.frame .recipe-shopping-add, .frame .recipe-shopping-remove { min-width:28px; min-height:28px;
  width:28px; height:28px; padding:0; font-size:20px; border-width:1px; border-style:solid; }
.frame .recipe-shopping-quantity-label { height:36px; display:flex; align-items:center; justify-content:center; }
.frame .recipe-shopping-quantity { font-size:10px; line-height:1.2; font-variant-numeric:tabular-nums; }
.frame .is-shopping-mutating .recipe-shopping-add:disabled,
.frame .is-shopping-mutating .recipe-shopping-remove[data-has-quantity="true"]:disabled {
  color:var(--ink); border-color:var(--ink); background:var(--card); border-style:solid;
}
.frame .reading-section-header .recipe-shopping-edit { min-width:80px; }
.recipe-ingredient-remark, .recipe-ingredient-note { display:block; font-size:11px; line-height:1.35; color:var(--ink-soft); }
.recipe-ingredient-remark[hidden] { display:none; }
.frame .shopping-results, .frame .shopping-aisle-results { grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; }
.shopping-aisle-results { display:grid; min-width:0; list-style:none; padding:0; margin:0; }
.shopping-results-aisle { grid-column:1 / -1; min-width:0; list-style:none; }
.shopping-results-aisle + .shopping-results-aisle { margin-top:24px; }
.frame .shopping-result { grid-template-columns:32px minmax(0,1fr) 48px; gap:5px; padding:6px;
  align-content:start; font-size:12px; line-height:1.3; }
.frame .shopping-result .shopping-ingredient-icon { width:32px; min-width:32px; height:32px; }
.frame .shopping-result .shopping-adjustments { grid-column:3; grid-row:1; }
.frame .shopping-result .shopping-adjustment { flex-wrap:wrap; gap:3px; }
.frame .shopping-result .shopping-adjustment-value { flex-basis:100%; }
.frame .shopping-result .shopping-quantity { font-size:10px; }
.frame .shopping-result .shopping-adjustment button { flex:0 0 48px; width:48px; min-width:48px; min-height:32px;
  padding:2px; font-size:11px; border-width:1px; }
.frame .shopping-result .shopping-adjustment .shopping-add { font-size:24px; }
.frame .shopping-result .shopping-remark { grid-column:2 / 4; margin:0; min-height:0; }
.frame .shopping-result .shopping-remark-edit { min-height:24px; min-width:24px; padding:1px 5px;
  margin-left:auto; font-size:13px; border:0; background:transparent; color:var(--ink-soft); }
.frame .shopping-result .shopping-remark-form { width:100%; font-size:12px; }
.frame .shopping-result .shopping-remark-text { display:block; margin:2px 0 0; font-size:11px; }
.frame .shopping-item { padding:7px; gap:6px; grid-template-columns:minmax(0,1fr) minmax(85px,150px); }
.frame .shopping-item .shopping-check { grid-column:auto; gap:7px; min-height:38px; font-size:14px; }
.frame .shopping-item .shopping-ingredient-icon { width:34px; min-width:34px; height:34px; }
.frame .shopping-item .shopping-adjustments { grid-column:auto; }
.frame .shopping-item .shopping-adjustment { flex-wrap:wrap; gap:4px; }
.frame .shopping-item .shopping-adjustment .shopping-remove { flex:0 0 62px; min-width:62px; min-height:32px; padding:3px 6px; font-size:12px; }
.frame .shopping-item .shopping-quantity { font-size:12px; }
.frame .shopping-item .shopping-remark-text { font-size:11px; }
@media(max-width:699px) {
  .frame .reading-ingredients .ingredient-total { grid-template-columns:28px minmax(0,1fr) auto; gap:5px; font-size:13px; }
  .frame .reading-ingredients .ingredient-icon { width:28px; min-width:28px; height:28px; }
  .frame .recipe-shopping-controls { grid-template-columns:26px 40px 26px; width:100px; }
  .frame .recipe-shopping-add, .frame .recipe-shopping-remove { width:26px; min-width:26px; }
  .frame .shopping-results, .frame .shopping-aisle-results { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .frame .shopping-result { grid-template-columns:26px minmax(0,1fr) 36px; gap:3px; padding:4px; font-size:11px; }
  .frame .shopping-result .shopping-ingredient-icon { width:26px; min-width:26px; height:26px; }
  .frame .shopping-result .shopping-adjustment button { width:36px; min-width:36px; flex-basis:36px; font-size:9px; }
  .frame .shopping-item { grid-template-columns:minmax(0,1fr) 85px; }
}

/* Shared catalogue selections: same three-column rhythm in every library. */
.frame .catalogue-groups { display:block; margin:14px auto 0; padding:0; width:100%; max-width:760px; list-style:none; }
.catalogue-group { list-style:none; min-width:0; margin:0 0 22px; padding:0; }
.catalogue-group-title { margin:0 0 9px; padding:0 0 5px; border-bottom:1px solid var(--line-soft); font-size:14px; font-weight:600; color:var(--ink-soft); text-transform:lowercase; }
.catalogue-choice-grid { list-style:none; padding:0; margin:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; }
.catalogue-choice-grid > li { list-style:none; min-width:0; }
.frame .catalogue-choice-grid .ingredient-suggestion,.frame .catalogue-choice-grid .allergy-ingredient,.frame .favorite-interest {
  box-sizing:border-box; width:100%; max-width:none; display:flex; align-items:center; justify-content:flex-start;
  min-height:54px; gap:6px; padding:6px; border:1px solid var(--line-soft); border-radius:6px; background:var(--card); color:var(--ink); font:inherit; font-size:12px; text-align:left;
}
.frame .catalogue-choice-grid img { width:36px; height:36px; min-width:36px; object-fit:contain; }
.frame .catalogue-choice-grid .is-selected,.frame .catalogue-choice-grid [aria-pressed=true] { border-color:var(--sage); background:#e5eddf; }
.frame .allergies-panel .catalogue-choice-grid .is-selected { border-color:#a3545a; background:#f5e1e2; }
.frame .favorite-interest[disabled] { opacity:1; cursor:default; }
.favorite-interest-check { margin-left:auto; color:#3c6b43; }
.favorite-interests { margin:0 auto; width:calc(100% - 32px); max-width:760px; }
/* A separate, accessible share control for each protected destination. */
.frame nav.tabs .tab-label { font-weight:750; font-size:15px; }
.private-tab { position:relative; min-width:0; display:flex; align-items:stretch; }
.frame nav.tabs.tabs-private .private-tab > .t { position:relative; flex:1 1 auto!important; min-width:0!important; width:auto!important; height:44px; min-height:44px; padding:2px 21px 18px 3px!important; font-weight:750; font-size:15px; text-transform:none; white-space:nowrap; }
.frame .tab-share { position:absolute; right:0; top:0; display:flex; align-items:center; justify-content:center; padding:0; width:24px; min-width:24px; height:28px; border:0; background:transparent; color:var(--ink-soft); }
.frame .kb-context-slot,.frame .kb-all-slot { background:var(--card); border:2px solid var(--ink); border-radius:5px; height:48px; box-sizing:border-box; }
.frame .kb-all-slot { grid-column:9 / span 2; grid-row:1; }
.frame .kb-context-action:disabled { opacity:1; background:var(--card); }
.frame .kb-key:active { background:var(--rose); border-color:var(--rose); color:#fff; }
/* Personal colours belong to the central ordered people list. */
.planning-week-person,.planning-participant .lbl,.planning-editor-person .lbl { color:var(--planning-person-color); }
.planning-week-event { color:var(--planning-person-color); border-color:var(--planning-person-color); background:var(--planning-person-fill); }
html[data-display=paper] .planning-week-event { color:var(--planning-person-color); border-color:var(--planning-person-color); background:#fff; border-left-width:4px; }
html[data-display=paper] .planning-participants .mono,html[data-display=paper] .planning-editor-people .mono { color:var(--planning-person-color); border-color:var(--planning-person-color); }
.planning-panel .planning-participants,.planning-panel .planning-editor-people { display:flex; flex-wrap:wrap; justify-content:center; gap:12px; }
.planning-panel .planning-participant,.planning-panel .planning-all,.planning-panel .planning-editor-person { flex:0 0 72px; }
.planning-panel .planning-day-tab { border-color:var(--ink-soft); font-weight:700; background:var(--paper-deep); }
.planning-panel .planning-person-edit,.planning-panel .planning-add-button { font-weight:700; border:1px solid var(--ink); background:var(--paper-deep); }
.planning-week-scroll { overflow-x:auto; }
.planning-week-grid { min-width:960px; }
.planning-week-event { padding:2px 1px; }
.planning-week-event-time { display:flex; flex-direction:column; align-items:center; justify-content:center; height:100%; font-size:9px; line-height:1.3; white-space:nowrap; }
.planning-common-hours { grid-template-columns:24px repeat(7,minmax(0,1fr)); gap:3px; }
.planning-common-hours .planning-common-day { padding:0; gap:0; border:0; background:transparent; border-radius:0; }
.planning-common-hours h3,.planning-common-axis-heading { display:flex; align-items:center; justify-content:center; height:34px; margin:0; font-weight:700; }
.planning-common-hour { height:32px; display:flex; align-items:flex-start; justify-content:flex-end; font-size:11px; font-variant-numeric:tabular-nums; padding-right:3px; box-sizing:border-box; }
.planning-common-hour:last-child { height:16px; }
.planning-panel .planning-common-hours .planning-common-slot { position:relative; overflow:hidden; height:32px; min-height:32px; padding:0; border:1px solid var(--line-soft); border-bottom:0; border-radius:0; background:var(--card); }
.planning-common-hours .planning-common-slot:last-child { border-bottom:1px solid var(--line-soft); }
.planning-common-free { position:absolute; left:0; right:0; background:#cee3cb; border-left:2px solid #4a7952; box-sizing:border-box; pointer-events:none; }
.planning-panel .planning-common-hours .planning-common-slot[aria-pressed=true] { box-shadow:inset 0 0 0 2px var(--ink); }
html[data-display=paper] .planning-common-free { background:#edf4eb; border-color:#36643e; }
/* Plain caddie rows; notes only here, never injected into the recipe. */
.frame .shopping-item { border:0; border-radius:0; box-shadow:none; background:transparent; padding:7px 0; }
.frame .shopping-item.is-bought { background:#e5e5e5; }
.frame .shopping-aisle-list { border:0; background:transparent; box-shadow:none; }
.frame .shopping-result { grid-template-columns:32px minmax(0,1fr); position:relative; }
.frame .shopping-result .shopping-adjustments { grid-row:2; grid-column:2; justify-self:end; }
.frame .shopping-result .shopping-remark { display:contents; }
.frame .shopping-result .shopping-remark-edit { grid-row:2; grid-column:1 / 3; justify-self:start; margin:0; min-width:44px; min-height:32px; padding:2px 8px; border:1px solid var(--line); background:var(--paper); color:var(--ink); font-size:12px; }
.frame .shopping-result .shopping-remark-form { grid-row:3; grid-column:1 / -1; }
.frame .shopping-result .shopping-adjustment,.frame .shopping-item .shopping-adjustment { display:flex; flex-wrap:nowrap; gap:4px; }
.frame .shopping-result .shopping-adjustment .shopping-remove,.frame .shopping-result .shopping-adjustment .shopping-add,.frame .shopping-item .shopping-adjustment .shopping-remove,.frame .shopping-item .shopping-adjustment .shopping-add { width:32px; min-width:32px; flex:0 0 32px; min-height:32px; height:32px; padding:0; font-size:22px; }
.frame .shopping-adjustment-value { min-width:0; flex:1 1 auto!important; }
.frame .shopping-remark-actions { display:none; }
.shopping-remark-heading { display:none; }
.frame .shopping-remark-input { min-height:48px; background:#fff; }
.shopping-name,.shopping-aisle-label { text-transform:lowercase; }
@media(max-width:699px){
  .frame nav.tabs .tab-label { font-size:12px; }
  .frame nav.tabs.tabs-private .private-tab > .t { font-size:12px; height:40px; min-height:40px; padding-right:3px!important; }
  .frame .tab-share { width:20px; min-width:20px; height:19px; top:auto; bottom:2px; }
  .frame .tab-share svg { width:13px; height:13px; }
  .planning-panel .planning-participant,.planning-panel .planning-all,.planning-panel .planning-editor-person { flex-basis:44px; }
  .planning-participants .lbl,.planning-editor-people .lbl { font-size:10px; white-space:nowrap; overflow-wrap:normal; }
  .planning-panel .planning-participants,.planning-panel .planning-editor-people { display:grid; grid-template-columns:repeat(auto-fit,minmax(36px,1fr)); gap:4px; }
  .planning-participants .mono,.planning-editor-people .mono { width:36px; height:36px; font-size:19px; }
  .catalogue-choice-grid,  .frame .catalogue-choice-grid .ingredient-suggestion,.frame .catalogue-choice-grid .allergy-ingredient,.frame .favorite-interest { font-size:11px; }
  .frame .shopping-item { grid-template-columns:minmax(0,1fr) 96px; }
  .frame .shopping-result .shopping-adjustment button { min-width:30px; width:30px; flex-basis:30px; font-size:21px; }
}

/* Person selectors grow from the central catalogue, with no fixed head count. */
.frame .allergy-persons,.frame .view[data-view=favs] .favs-grid { grid-template-columns:repeat(auto-fit,minmax(72px,1fr))!important; }
@media(max-width:699px){
  .frame .allergy-persons,.frame .view[data-view=favs] .favs-grid { grid-template-columns:repeat(auto-fit,minmax(44px,1fr))!important; }
}
@media(max-width:380px){
  .frame nav.tabs .tab-label,.frame nav.tabs.tabs-private .private-tab > .t { font-size:11px; }
}

/* V2: the same compact controls in each private view. */
.recipe-header-details .favorite-heading,.paper .recipe-header-details .favorite-heading { color:#387344; }
.recipe-header-details .favorite-heading>svg { fill:currentColor; stroke:currentColor; }
html[data-display="paper"] .recipe-header-details .favorite-heading>svg,html[data-theme="paper"] .recipe-header-details .favorite-heading>svg { fill:none; stroke:#387344; }
.recipe-avoidances { min-height:44px; }
.recipe-equipment-item svg { fill:#eadbb6; color:#6b6147; }
html[data-display="paper"] .recipe-equipment-item svg { fill:none; color:var(--ink); }
.favorite-selection-list { display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:6px;margin:10px 0; }
.favorite-selection-list[hidden] { display:none; }
.favorite-selection-list .favorite-interest { width:100%;text-decoration:none;color:var(--ink);display:flex;gap:8px;align-items:center;text-align:left; }
.favorite-selection-list img { width:40px;height:40px;object-fit:contain;flex:none; }
.favorite-keyboard { margin-top:12px; }
.frame .shopping-clear-control { display:grid;grid-template-columns:100px 64px;align-items:center;gap:6px;margin-left:auto; }
.frame .shopping-clear-control button { border:1px solid var(--line);border-radius:7px;min-height:36px;padding:4px 8px; }
.frame .shopping-clear-confirm { grid-column:1;grid-row:1; }
.frame .shopping-clear { grid-column:2;grid-row:1; }
.frame .shopping-result { grid-template-columns:32px minmax(0,1fr) 36px auto;gap:5px;align-items:center; }
.frame .shopping-result .shopping-adjustments { grid-column:4;grid-row:1; }
.frame .shopping-result .shopping-remark-edit { grid-column:3;grid-row:1;min-width:32px;min-height:36px;padding:2px;font-size:20px; }
.frame .shopping-result .shopping-remark-form,.frame .shopping-result .shopping-remark-text { grid-column:2 / -1;grid-row:2; }
.frame .shopping-result .shopping-adjustment-value { flex-basis:auto; }
.frame .shopping-results,.frame .shopping-aisle-results { grid-template-columns:repeat(2,minmax(0,1fr)); }
.shopping-ingredient-icon svg { width:100%;height:100%; }
.planning-availability-days { display:flex;gap:5px;flex-wrap:wrap;margin:10px 0; }
.planning-availability-day { flex:1;min-width:36px; }
.planning-availability-day[aria-pressed="true"] { background:var(--sage);color:white; }
.planning-common-bubbles { display:flex;flex-wrap:wrap;gap:8px; }
.planning-common-bubbles button { border:1px solid #5d865b;border-radius:22px;padding:8px 16px;min-height:44px;background:#eaf2e5;color:#254d2d; }
.planning-common-bubbles button:disabled { background:#eeece7;border-color:#c9c6bf;color:#777;opacity:1;cursor:default; }
.planning-saved-slots { list-style:none;padding:0;margin:12px 0; }
.planning-saved-slot { display:flex;align-items:center;gap:6px;flex-wrap:wrap;border-bottom:1px solid var(--line-soft);padding:7px 0; }
.planning-saved-time { flex:1;min-width:130px; }
.planning-slot-pencil { font-size:20px; }
.planning-saved-slot button { min-height:36px; }
.planning-meal-people { display:flex;gap:3px;flex-wrap:wrap; }
.planning-meal-person { display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--planning-person-color);color:var(--planning-person-color);background:var(--planning-person-fill);border-radius:50%;width:26px;height:26px;font-size:12px; }
.planning-meal-row { grid-template-columns:44px 84px minmax(0,1fr) 36px; }
.planning-meal-people { grid-column:3;grid-row:2; }
.planning-meal-filters { display:flex;flex-wrap:wrap;gap:6px;margin:8px 0; }
.planning-meal-filters [aria-pressed="true"] { background:var(--sage);color:white; }
.planning-meal-keyboard { width:100%;margin:10px 0; }
@media(max-width:600px) {
 .frame .shopping-results,.frame .shopping-aisle-results { grid-template-columns:1fr; }
 .frame .shopping-result .shopping-adjustment button { min-height:40px; }
 .favorite-selection-list { grid-template-columns:1fr; }
 .planning-meal-row { grid-template-columns:36px minmax(0,1fr) 32px; }
 .planning-meal-photo { grid-row:1 / 3; }
 .planning-meal-time { grid-column:2;grid-row:1; }
 .planning-meal-link { grid-column:2;grid-row:2; }
 .planning-meal-people { grid-column:2;grid-row:3; }
 .planning-meal-remove { grid-column:3;grid-row:1 / 4; }
}

.planning-common-bubbles .planning-common-day { display:flex;gap:8px;flex-wrap:wrap;width:100%;padding:8px;border:0;background:transparent; }

.planning-panel .planning-common-slot { width:auto;min-width:96px;border-radius:22px;padding:8px 16px; }

html[data-display="paper"] .frame .recipe-header-details .favorite-heading>svg { color:#387344;fill:none;stroke:#387344; }
.frame nav.tabs.tabs-private .private-tab>.t[data-view="favs"],.frame nav.tabs.tabs-private .private-tab>a[href$="#favs"] { color:var(--ink); }
.frame .tab-share { right:calc(50% - 12px);top:23px;height:20px; }
@media(max-width:699px) { .frame .tab-share { top:21px;bottom:auto; } }

/* Keep compact controls readable down to 320px. */
.frame .shopping-clear-control { grid-template-columns:88px 54px;gap:4px;flex:none; }
.frame .shopping-panel .shopping-clear-control button { font-size:12px;line-height:1.2;white-space:nowrap;width:100%;min-width:0;min-height:36px;padding:4px; }
.frame .shopping-clear-control .shopping-clear svg { display:none; }
.frame .shopping-clear-control .kb-context-label { position:static;width:auto;height:auto;clip:auto;overflow:visible;white-space:nowrap; }
.frame .tabs-private .query-count { display:none!important; }
@media(max-width:699px) {
 .planning-availability-day .planning-day-name { display:none; }
 .planning-availability-day .planning-day-short { display:inline; }
 .planning-panel .planning-availability-day { padding:6px 2px;font-size:12px; }
}

.planning-availability-days { display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px; }
.planning-panel .planning-availability-day { min-width:0; }
@media(max-width:600px){
 .frame .shopping-item { grid-template-columns:minmax(0,1fr) 68px; }
 .frame .shopping-item .shopping-check { gap:4px; }
 .frame .shopping-item .shopping-household-icon { width:28px;min-width:28px;height:28px; }
}

.frame .allergy-query-count,.frame .notes-query-count,.frame .shopping-search-summary { display:none!important; }
/* V3: quieter hierarchy, fixed controls and aligned weekly columns. */
.reading-section-header h2,.recipe-title { font-weight:450; }
.reading-section-header h2 { font-size:1rem; letter-spacing:.025em; opacity:.85; }
.reading-ingredients { font-size:1.05rem; }
.share-btn .lbl { position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%); }
.private-tab { display:inline-flex;align-items:center;gap:2px; }
.private-tab .tab-share { margin-left:0;flex:0 0 24px; }
.frame[data-catalog-view=pays] .filter-recall { color:var(--country-accent); }
.frame[data-catalog-view=type] .filter-recall { color:var(--type-accent); }
.favorite-interests .catalogue-choice-grid,.favorite-selection-list { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px; }
.favorite-interest img { width:40px;height:40px;object-fit:contain; }
.favorite-selection-list .favorite-interest { cursor:default; }
.frame .shopping-result,.frame .shopping-item { border-radius:7px; }
.frame .shopping-adjustments { min-width:112px; }
.frame .shopping-adjustment-value { min-width:40px; font-variant-numeric:tabular-nums; }
.frame .shopping-adjustment-value[hidden] { display:inline-flex!important;visibility:hidden; }
.frame .shopping-adjustment button:disabled { opacity:1; }
.shopping-clear-control { position:relative;display:flex;align-items:center; }
.shopping-clear-control .shopping-clear-confirm { position:absolute;right:100%;white-space:nowrap;z-index:2; }
.frame .shopping-remark-form { display:flex;flex-wrap:wrap;gap:3px;padding:0;margin:0;border:0;background:transparent;width:100%; }
.shopping-remark-heading { display:none; }
.frame .shopping-remark-label { flex:1;min-width:70px; }
.frame .shopping-remark-input { box-sizing:border-box;width:100%;height:26px;min-height:26px;max-height:26px;padding:2px 4px;font:inherit;resize:none; }
.frame .shopping-remark-actions { display:flex;gap:3px;margin:0; }
.frame .shopping-remark-actions button { min-height:26px;padding:1px 4px;font-size:11px; }
.planning-common-host,.planning-week-host { overflow:auto;max-height:650px;scrollbar-gutter:stable; }
.planning-board { display:grid;grid-template-columns:repeat(7,minmax(118px,1fr));min-width:900px;gap:6px;align-items:start; }
.planning-board .planning-common-day { display:flex;flex-direction:column;gap:4px;padding:0;min-width:0; }
.planning-column-heading { position:sticky;top:0;z-index:2;background:var(--paper);margin:0;padding:9px 3px;text-align:center;font-size:13px; }
.planning-column-slots { display:grid;grid-template-rows:repeat(32,30px);gap:3px; }
.planning-board .planning-common-slot { min-height:30px;height:30px;width:100%;padding:2px;border-radius:4px;font-size:12px;background:#ebe9e4;color:#6d6b66;border:1px solid #ccc; }
.planning-board .planning-common-slot.is-common { background:#e0eee0;color:#315b38;border-color:#82a58a; }
.planning-board .planning-common-slot:disabled { cursor:default;opacity:1; }
.planning-column-meals:empty { display:none; }
.planning-column-meals .planning-meal-day-group h3 { display:none; }
.planning-column-meals .planning-meal-list { display:grid;grid-template-columns:1fr;gap:5px;padding:0; }
.planning-column-meals .planning-meal-row { display:flex;flex-wrap:wrap;gap:4px;padding:7px;min-width:0; }
.planning-column-meals .planning-meal-link { flex-basis:100%;overflow-wrap:anywhere; }
.planning-column-meals .planning-meal-time { font-size:12px; }
.planning-availability { border-top:2px solid #709a78; }
.planning-unavailability { border-top:2px solid #ad7475; }
.planning-participants,.planning-editor-people { min-height:80px;margin:10px 0; }
.planning-participant[aria-pressed=false] .mono,.planning-editor-person[aria-pressed=false] .mono { background:var(--paper);color:var(--planning-person-color);border:1px solid var(--planning-person-color); }
.planning-participant[aria-pressed=true] .mono,.planning-editor-person[aria-pressed=true] .mono { background:var(--planning-person-fill);color:var(--planning-person-color);border:3px solid var(--planning-person-color); }
.planning-participant[aria-pressed=true] .lbl:after,.planning-editor-person[aria-pressed=true] .lbl:after { content:' ✓'; }
.planning-meal-results { display:grid;grid-template-columns:repeat(3,minmax(0,1fr)); }
html[data-display=paper] .planning-board .planning-common-slot.is-common { background:#fff;border:2px solid #375d3d;color:#25472b; }
.planning-busy-slot { box-sizing:border-box;display:flex;align-items:center;gap:3px;height:30px;border:1px solid var(--line);border-radius:4px;padding:2px 4px;font-size:11px;overflow:hidden; }
.planning-busy-slot.is-busy { background:#f1e0df;border-color:#af8080; }
.planning-busy-names { overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.preference-family { list-style:none;margin:0 0 18px;padding:0; }
.preference-family>h2 { font-size:1rem;font-weight:500;margin:10px 0; }
.preference-family .catalogue-group-title { font-size:12px;font-weight:400; }
.favorite-interests,.allergy-panel .allergy-results { margin:12px auto; }

/* Shared grid rows keep every half-hour aligned even when one day has more meals. */
.planning-board { grid-template-rows:auto auto auto; }
.planning-board .planning-common-day { display:grid;grid-template-rows:subgrid;grid-row:1 / 4;gap:4px; }
.planning-column-heading { grid-row:1; }
.planning-column-meals,.planning-column-meals:empty { display:block;grid-row:2; }
.planning-column-slots { grid-row:3; }
.favorite-selection-list .favorite-selected-recipe { aspect-ratio:1;display:flex;flex-direction:column;justify-content:center;text-align:center; }

.frame .type-cell.on .lbl { color:var(--type-accent)!important; }
.frame .pays-cell.on .lbl { color:var(--country-accent)!important; }
.frame .type-cell.on .circle { outline:2px solid var(--type-accent);outline-offset:3px; }
.frame .pays-cell.on .mono { outline:2px solid var(--country-accent);outline-offset:3px; }
.frame nav.tabs.tabs-private .private-tab { justify-content:center;align-items:flex-start;gap:0; }
.frame nav.tabs.tabs-private .private-tab>.t { flex:0 1 auto!important;padding:2px 0 18px!important; }
.frame .private-tab .tab-share { position:static;flex:0 0 20px;width:20px;min-width:20px;height:24px;margin:0; }
@media(max-width:699px){
 .frame nav.tabs.tabs-private .private-tab>.t { font-size:11px; }
 .frame .private-tab .tab-share { flex-basis:14px;width:14px;min-width:14px;height:20px; }
 .frame .private-tab .tab-share svg { width:12px;height:12px; }
}
/* The action occupies exactly its two keyboard cells, including at 320px. */
.frame .view .kb-row .kb-key.kb-context-action { box-sizing:border-box;min-width:0;width:100%;max-width:100%;padding:2px; }

/* Match the actual section containers so inherited heading fonts stay quiet. */
.frame .reading-section-header, .frame .reading-preparation > h2,
.frame .shopping-category-header, .frame .shopping-category > h2 {
  font-size:18px; font-weight:450; min-height:54px; border-left-width:3px;
}
.frame .reading-ingredients .reading-section-header > h2 { font:inherit; }
.frame .recipe-title-row > .title { font-weight:450; }
.frame .reading-ingredients .ingredient-total { line-height:1.6; }

/* Keep Vider inside the existing command column; confirmation opens left. */
.frame .shopping-panel .kb-actions .shopping-clear-control {
  position:relative;display:flex;flex:1;min-width:0;margin:0;gap:0;
}
.frame .shopping-panel .kb-actions .shopping-clear {
  flex:1;width:100%;height:100%;min-height:48px;padding:2px;border:2px solid var(--ink);border-radius:5px;
}
.frame .shopping-panel .kb-actions .shopping-clear svg { display:block;width:20px;height:20px; }
.frame .shopping-panel .kb-actions .shopping-clear .kb-context-label { display:none; }
.frame .shopping-panel .kb-actions .shopping-clear-confirm {
  position:absolute;right:calc(100% + 4px);top:0;width:100px;height:100%;min-height:48px;
  z-index:5;background:var(--card);border:2px solid var(--ink);border-radius:5px;
}

/* V4: more visible ingredient families and sharing beside the country. */
.catalogue-group-title { font-size:18px; font-weight:650; color:var(--ink); padding:6px 0 8px; border-bottom:2px solid var(--line); }
.shopping-aisle-title { font-size:18px; font-weight:650; color:var(--ink); }
.recipe-badges > .share-btn { flex:none; margin:0; }

/* V4 — shared hierarchy, compact headers and stable search positions. */
.frame > header .title { font-size:clamp(21px,4.9vw,64px); white-space:nowrap; letter-spacing:-.045em; line-height:1.12; font-weight:500; }
.carnet-signature { display:block; text-align:center; font-size:12px; font-style:italic; color:#b31e46; margin:5px 0; }
.carnet-signature[hidden] { display:none; }
.reading-section-header,.planning-section-header,.shopping-list-heading { min-height:0; padding:5px 10px; }
.reading-section-header h2,.planning-section-header h2,.shopping-list-heading h2,.shopping-panel h2,.favorite-header h2 { font-weight:700; text-transform:uppercase; margin:0; }
.recipe-equipment-item svg { stroke-width:1.65; }
.reading-page .recipe-equipment-item { color:var(--ink); }
.tabs .t[data-view=pays] .filter-recall,.tabs .t[data-view=pays] .query-count { color:var(--country-accent); }
.tabs .t[data-view=type] .filter-recall,.tabs .t[data-view=type] .query-count { color:var(--type-accent); }
.frame .view[data-view=favs],.frame .view[data-view=allergies],.frame .allergies-panel { padding-top:0; }
.frame .favorite-keyboard,.frame .allergy-keyboard { margin:0 0 12px; padding:0; }
.frame .favs-grid,.frame .allergy-persons { display:flex; justify-content:center; flex-wrap:wrap; align-items:start; gap:8px; margin:0 0 12px; padding:0; min-height:64px; }
.frame .favs-cell,.frame .allergy-person { flex:0 0 64px; margin:0; padding:0; }
.frame .favs-cell .mono,.frame .allergy-person .mono { width:40px; height:40px; margin:auto; }
.frame .favs-cell .lbl,.frame .allergy-person .lbl { font-size:12px; line-height:18px; }
.frame .favorite-selection-list,.frame .allergy-selection-list { margin:0; }
.frame .favorite-selection-list:empty,.frame .allergy-selection-list:empty { display:none; }
.frame .favorite-interests .catalogue-choice-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
.frame .favorite-interest,.frame .allergy-ingredient { min-height:46px; padding:5px 7px; font-size:12px; gap:6px; }
.frame .favorite-interest img,.frame .favorite-interest svg { width:32px; height:32px; }
.frame .shopping-aisle-items { grid-template-columns:repeat(3,minmax(0,1fr)); }
.frame .shopping-remark { min-height:26px; position:relative; }
.frame .shopping-remark-form { position:absolute; inset:0 22px 0 0; display:block; margin:0; padding:0; border:0; background:transparent; }
.frame .shopping-remark-label { display:block; }
.frame .shopping-remark-input { border:0; border-radius:0; background:transparent; padding:3px 0; font-size:11px; line-height:20px; height:26px; min-height:26px; box-shadow:none; }
.frame .shopping-remark-actions { display:none; }
.frame .shopping-remark-text { font-size:11px; line-height:20px; }
@media(max-width:680px){.frame .shopping-aisle-items{grid-template-columns:repeat(2,minmax(0,1fr));}.frame .favs-cell,.frame .allergy-person{flex-basis:44px;}.frame .favs-cell .lbl,.frame .allergy-person .lbl{font-size:10px;}}
@media(max-width:380px){.frame .shopping-aisle-items{grid-template-columns:1fr;}}
/* V4 — fixed half-hour grid, shared weekday buttons, personal calendar bands. */
.frame .planning-common-host,.frame .planning-week-host { overflow:visible; max-height:none; scrollbar-gutter:auto; }
.frame .planning-availability-grid,.frame .planning-shared-days { display:grid; grid-template-columns:44px repeat(7,minmax(0,1fr)); width:100%; min-width:0; gap:0; }
.planning-half-hour-axis,.planning-availability-column { display:grid; grid-template-rows:repeat(32,18px); min-width:0; }
.planning-half-hour-axis { font-size:11px; line-height:18px; font-variant-numeric:tabular-nums; }
.frame .planning-availability-column .planning-common-slot { min-width:0; width:100%; min-height:0; height:auto; padding:0; border:0; border-radius:0; font-size:12px; line-height:18px; background:#e6e3dc; color:#857777; }
.frame .planning-availability-column .planning-common-slot.is-common { background:#dce9da; color:#31623e; }
.frame .planning-availability-column .planning-common-slot:disabled { opacity:1; }
.frame .planning-shared-days .planning-day-tab { min-width:0; width:100%; min-height:40px; padding:7px 1px; border:0; border-radius:0; border-top:5px solid #578368; border-bottom:5px solid #d8d3ca; font-size:12px; background:var(--paper); color:var(--ink); }
.frame .planning-shared-days .planning-day-tab[aria-pressed=true] { border-bottom-color:#a04550; color:#94323e; background:var(--paper); }
.planning-calendar-bands { width:100%; margin:12px 0; }
.planning-calendar-axis-row,.planning-calendar-person-row { display:grid; grid-template-columns:44px minmax(0,1fr); align-items:center; min-width:0; }
.planning-calendar-axis-row { height:24px; }
.planning-calendar-axis { position:relative; height:20px; font-size:11px; }
.planning-calendar-hour { position:absolute; transform:translateX(-50%); }
.planning-calendar-hour:first-child { transform:none; }
.planning-calendar-hour:last-child { transform:translateX(-100%); }
.planning-calendar-person { display:grid;place-items:center;width:28px;height:28px;border-radius:50%;border:1px solid var(--planning-person-color);color:var(--planning-person-color);background:var(--planning-person-fill);font-size:14px; }
.planning-calendar-person-row { margin-bottom:6px; }
.planning-calendar-track { height:calc(6px + var(--calendar-lanes,1)*30px); min-height:36px; position:relative; background:#e5e2dc; border-radius:4px; }
.frame .planning-calendar-event { position:absolute; height:28px; min-height:0; padding:2px; border:1px solid var(--planning-person-color); border-radius:4px; color:var(--planning-person-color);background:var(--planning-person-fill);font-size:11px;line-height:1.1;overflow:hidden; }
.frame .planning-participants,.frame .planning-editor-people { display:flex; flex-wrap:wrap; justify-content:center; align-items:start; gap:8px; margin:10px 0; padding:0; min-height:64px; }
.frame .planning-participant,.frame .planning-all,.frame .planning-editor-person { flex:0 0 64px; padding:0; margin:0; }
.frame .planning-participants .mono,.frame .planning-editor-people .mono { width:40px; height:40px; margin:auto; }
.frame .planning-availability,.frame .planning-unavailability { border-top:0; }
.frame .planning-unavailability { margin-top:12px; }
.frame .planning-meal-day-group h3 { display:none; }
html[data-display=paper] .planning-calendar-track { background:#ededed; }
html[data-display=paper] .planning-availability-column .planning-common-slot { background:#ededed; }
html[data-display=paper] .planning-availability-column .planning-common-slot.is-common { background:#d8e8d5; }
@media(max-width:650px){.frame .planning-participant,.frame .planning-all,.frame .planning-editor-person{flex-basis:38px;}.frame .planning-shared-days .planning-day-tab{font-size:10px;overflow-wrap:anywhere;}.planning-calendar-hour.minor-hour{visibility:hidden;}}

/* Keep the requested site spelling, including lowercase letter forms. */
.masthead .title, .title { font-variant: normal; text-transform: none; }
.frame header .title { font-variant:normal; text-transform:none; }
.frame .planning-panel .reading-section-header,.frame .reading-page .reading-section-header,.frame .shopping-category-header { min-height:0; height:auto; padding:5px 10px; }
.frame .planning-panel .reading-section-header h2,.frame .reading-page .reading-section-header h2,.frame .shopping-category-header h2 { margin:0; font-size:14px; line-height:20px; font-weight:700; text-transform:uppercase; }

.frame .planning-shared-days { width:calc(100% - 32px); margin:0 16px; }
.frame .shopping-panel .shopping-clear-control.kb-context-slot { position:relative; display:block; margin:0; width:auto; min-width:0; flex:2; }
.frame .shopping-panel .shopping-clear-control .shopping-clear { display:block; width:100%; height:100%; min-height:44px; margin:0; }
.frame .shopping-panel .shopping-clear-control .shopping-clear-confirm { position:absolute; left:0; right:auto; bottom:calc(100% + 6px); width:100%; min-width:90px; z-index:5; background:var(--paper); }
.frame > header .title { font-size:clamp(24px,7.2vw,96px); }
@media(max-width:480px){.frame nav.tabs.tabs-private .tab-label{font-size:11px;letter-spacing:0;}.frame nav.tabs.tabs-private .tab-share{width:12px;min-width:12px;padding:0;}}
/* The remark shares the name's reserved second line; opening it never grows a card. */
.frame .shopping-aisle-results,.frame .shopping-aisle-items { grid-template-columns:repeat(3,minmax(0,1fr)); }
.frame .shopping-result .shopping-name-line,.frame .shopping-item .shopping-name-line { position:relative; min-height:44px; display:flex; flex-direction:column; justify-content:center; }
.frame .shopping-result .shopping-name { font-size:12px; line-height:14px; }
.frame .shopping-result .shopping-name-line:has(.shopping-remark-form) { justify-content:flex-start; }
.frame .shopping-result .shopping-name-line .shopping-remark-form { display:block; position:absolute; inset:auto 0 0; width:100%; height:20px; margin:0; padding:0; }
.frame .shopping-result .shopping-name-line .shopping-remark-input { display:block; height:20px; min-height:20px; max-height:20px; padding:0; border:0; background:transparent; font-size:11px; line-height:20px; }
.frame .shopping-result .shopping-remark-text { height:20px; margin:0; }
.frame .shopping-result .shopping-remark-text[hidden] { display:none; }
@media(max-width:767px){.frame .shopping-aisle-results,.frame .shopping-aisle-items{grid-template-columns:1fr;}}

.frame .shopping-panel .shopping-clear-control.kb-context-slot .shopping-clear svg { display:block; width:20px; height:20px; margin:auto; }

/* Identical keyboard and person geometry across Nom, Ingredients, Favoris and Bemols. */
.frame .allergies-panel { width:100%; max-width:none; padding:0; }
.frame .view[data-view=favs] .favorite-keyboard,.frame .allergies-panel .allergy-keyboard { width:100%; max-width:1000px; margin:0 auto; padding:20px 20px 0!important; }
.frame .view[data-view="favs"] .favs-grid,.frame .allergy-persons { display:grid!important;grid-template-columns:repeat(auto-fit,minmax(44px,1fr))!important;gap:6px;max-width:1000px;width:100%;padding:12px 20px 10px!important;margin:0 auto 12px;min-height:64px; }
.frame .view[data-view="favs"] .favs-cell,.frame .allergy-person { padding:0;gap:6px; }
.frame .view[data-view="favs"] .favs-cell .mono,.frame .allergy-person .mono { width:40px;height:40px;font-size:22px; }
.frame .view[data-view="favs"] .favs-cell .lbl,.frame .allergy-person .lbl { font-size:12px;line-height:18px; }
.frame .allergy-content { padding:0 20px 20px; }

html[data-display=paper] .frame .planning-panel .planning-availability-column .planning-common-slot { border:0;box-shadow:none;color:#857777; }
html[data-display=paper] .frame .planning-panel .planning-availability-column .planning-common-slot.is-common { color:#31623e; }
.planning-shared-day-short { display:none; }
@media(max-width:650px){.planning-shared-day-name{display:none;}.planning-shared-day-short{display:inline;}.frame .planning-shared-days .planning-day-tab{white-space:nowrap;overflow-wrap:normal;}.frame .planning-calendar-event{display:flex;align-items:center;justify-content:center;white-space:nowrap;overflow:visible;font-size:9px;padding:0;}}

.frame .reading-section-header .recipe-shopping-edit { min-height:30px;height:30px;padding:4px 9px;font-size:12px;line-height:1.2;font-weight:700; }

/* Keep the note's place while its transparent field is active. */
.frame .shopping-result .shopping-remark-text { min-height:20px; }
.frame .shopping-result .shopping-remark-text[hidden] { display:block!important;visibility:hidden; }
/* Old desktop grid and circle rules must not move the two person rows. */
.frame .view[data-view="favs"] .favs-grid,.frame .allergy-persons { gap:6px!important; }
.frame .view[data-view="favs"] .favs-cell .mono,.frame .allergy-person .mono { width:40px!important;height:40px!important;font-size:22px!important; }

.frame nav.tabs .t:is([data-view=pays],[data-view=type]) .results-head,
.frame nav.tabs .t:is([data-view=pays],[data-view=type]) .filter-recall,
.frame nav.tabs .t:is([data-view=pays],[data-view=type]) .query-count { color:inherit!important; }

/* Shared ingredient selector: one layout, with per-page permissions and selection colour. */
.frame .unified-selector { --selector-width:960px; --selection-fill:var(--card); --selection-line:var(--line); }
.frame .unified-selector .search-wrap { box-sizing:border-box; width:100%; max-width:1000px; margin:0 auto; padding:20px 20px 0!important; }
.frame .view.unified-selector .kb .kb-key { border-width:2px; border-radius:5px; }
.frame .unified-selector .kb-context-label { display:inline; position:static; width:auto; height:auto; clip:auto; overflow:visible; white-space:normal; font-size:12px; }
.frame .unified-selector .kb-context-action svg { display:none; }
.frame .unified-selector .ingredient-suggestions { padding:0; width:calc(100% - 40px); max-width:var(--selector-width); margin:16px auto 0; }
.frame .unified-selector .catalogue-groups,
.frame .unified-selector .favorite-interests,
.frame .unified-selector .shopping-results,
.frame .unified-selector .shopping-items,
.frame .unified-selector .catalogue-selection { box-sizing:border-box; width:calc(100% - 40px); max-width:var(--selector-width); padding:0; margin:20px auto 0; }
.frame .unified-selector .ingredient-suggestions > .catalogue-groups,
.frame .unified-selector .ingredient-suggestions > .catalogue-selection,
.frame .unified-selector .favorite-interests.catalogue-groups { width:100%; }
.frame .unified-selector .favorite-interests.catalogue-groups { width:calc(100% - 40px); }
.frame .unified-selector .catalogue-group { margin:0 0 40px; }
.frame .unified-selector .catalogue-group-title,
.frame .unified-selector .shopping-aisle-title { display:flex; align-items:center; gap:14px; border:0; padding:0; margin:0 0 14px; font-size:22px; font-weight:700; line-height:1.25; color:var(--ink); text-transform:none; text-align:left; }
.frame .unified-selector .catalogue-group-title::after,
.frame .unified-selector .shopping-aisle-title::after { content:''; flex:1; min-width:18px; border-top:3px solid var(--line); }
.frame .unified-selector .catalogue-choice-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:9px; }
.frame .unified-selector .catalogue-choice-grid > li { min-width:0; padding:0; margin:0; border:0; background:none; display:block; }
.frame .unified-selector .catalogue-choice { position:relative; box-sizing:border-box; display:flex; align-items:center; justify-content:flex-start; gap:6px; width:100%; min-width:0; min-height:46px; padding:5px 7px; border:1px solid var(--line); border-radius:6px; background:var(--card); color:var(--ink); font:inherit; font-size:12px; line-height:1.15; text-align:left; cursor:pointer; box-shadow:none; }
.frame .unified-selector .catalogue-choice:disabled { opacity:1; cursor:default; }
.frame .unified-selector .catalogue-choice-icon { display:flex; flex:none; align-items:center; justify-content:center; width:28px; height:28px; }
.frame .unified-selector .catalogue-choice-icon > :is(img,svg) { display:block; width:100%; min-width:0; height:100%; object-fit:contain; flex:none; }
.frame .unified-selector .catalogue-choice-name { display:block; min-width:0; flex:1; max-width:none; overflow-wrap:anywhere; }
.frame .unified-selector .catalogue-choice-mark { display:grid; place-items:center; box-sizing:border-box; flex:none; margin:0 0 0 auto; width:16px; height:16px; border:1px solid var(--line); border-radius:3px; font-size:12px; font-weight:700; color:var(--ink); }
.frame .unified-selector .catalogue-choice.is-selected { background:#d8d5cc; border-color:#898376; color:var(--ink); }
.frame .unified-selector .catalogue-choice.is-selected .catalogue-choice-icon { filter:grayscale(.65); }
.frame .unified-selector .catalogue-choice.is-selected .catalogue-choice-mark { background:var(--ink); border-color:var(--ink); color:var(--card); }
.frame .unified-selector .catalogue-selection { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:9px; min-height:64px; margin-bottom:32px; align-items:start; justify-items:center; }
.frame .unified-selector .catalogue-selection[data-tone=green] { --selection-fill:#e5eddf; --selection-line:#62784b; }
.frame .unified-selector .catalogue-selection[data-tone=red] { --selection-fill:#f5e1e2; --selection-line:#a3545a; }
.frame .unified-selector .catalogue-choice.catalogue-chip { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; width:64px; min-height:64px; height:64px; padding:6px 4px 3px; border:1px solid var(--selection-line); background:var(--selection-fill); color:var(--ink); font-size:11px; text-align:center; }
.frame .unified-selector .catalogue-chip .catalogue-choice-icon { width:24px; height:24px; }
.frame .unified-selector .catalogue-chip .catalogue-choice-name { flex:0 1 auto; max-height:26px; overflow:hidden; }
.frame .unified-selector .catalogue-chip .catalogue-choice-mark { position:absolute; top:2px; right:2px; width:15px; height:15px; border:0; font-size:14px; background:none; color:var(--ink); }
.frame .unified-selector .catalogue-choice-mark[hidden] { display:none; }
.frame .unified-selector .shopping-category-body { padding:0; }
.frame .unified-selector .shopping-items { display:block; }
.frame .unified-selector .shopping-aisle { margin:0 0 32px; }
.frame .unified-selector .shopping-aisle-items { display:block; margin:0; padding:0; }
.frame .unified-selector .shopping-item { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:12px; padding:7px 0; margin:0; border:0; border-bottom:1px solid var(--line-soft); border-radius:0; background:transparent; box-shadow:none; }
.frame .unified-selector .shopping-item .shopping-check { min-width:0; gap:10px; }
.frame .unified-selector .shopping-item .shopping-name-line { min-height:32px; }
.frame .unified-selector .shopping-item .shopping-ingredient-icon { width:28px; min-width:28px; height:28px; }
.frame .unified-selector .shopping-item.is-bought { color:var(--ink-soft); background:transparent; }
.frame .unified-selector .shopping-item.is-bought .shopping-check { opacity:.55; }
.frame .unified-selector .shopping-item .shopping-quantity { max-width:140px; font-size:12px; text-align:right; overflow-wrap:anywhere; }
.frame .unified-selector .shopping-item .shopping-remark-text[hidden] { display:none!important; }
.frame .unified-selector .shopping-category-header { box-sizing:border-box; width:calc(100% - 40px); max-width:var(--selector-width); margin:20px auto 14px; }
.frame .unified-selector .allergy-query { box-sizing:border-box; width:calc(100% - 40px); max-width:var(--selector-width); margin:10px auto; }
@media(max-width:699px) {
  .frame .unified-selector .catalogue-choice-grid,.frame .unified-selector .catalogue-selection { gap:5px; }
  .frame .unified-selector .catalogue-group { margin-bottom:34px; }
  .frame .unified-selector .catalogue-group-title,.frame .unified-selector .shopping-aisle-title { font-size:19px; gap:10px; }
  .frame .unified-selector .catalogue-choice { min-height:64px; flex-direction:column; justify-content:center; gap:3px; padding:4px 3px; font-size:10px; text-align:center; }
  .frame .unified-selector .catalogue-choice-icon { width:24px; height:24px; }
  .frame .unified-selector .catalogue-choice-name { flex:none; }
  .frame .unified-selector .catalogue-choice-mark { position:absolute; top:3px; right:3px; width:12px; height:12px; font-size:10px; }
  .frame .unified-selector .catalogue-choice.catalogue-chip { width:60px; height:60px; min-height:60px; }
  .frame .unified-selector .catalogue-chip .catalogue-choice-icon { width:22px; height:22px; }
  .frame .unified-selector .catalogue-selection { min-height:60px; margin-bottom:28px; }
  .frame .unified-selector .kb-context-label { font-size:10px; }
}

/* Cart contents are plain lines, on the same edges as the common keyboard. */
.frame .unified-selector .shopping-category[data-shopping-category=list] { width:100%; max-width:none; margin:0; padding:0; border:0; border-radius:0; background:transparent; box-shadow:none; }
.frame .unified-selector .shopping-category-header { border:0; padding:0; background:transparent; gap:14px; }
.frame .unified-selector .shopping-category-header::after { content:''; flex:1; border-top:3px solid var(--line); }
.frame .unified-selector .shopping-category-header h2 { font-size:18px; }
@media(max-width:380px) {
 .frame .unified-selector .kb-row .kb-context-action .kb-context-label { font-size:8px; white-space:nowrap; }
}

/* A solid border light, with only a few pixels of inward halo. */
.frame > header { border-bottom:2px solid var(--line); }
.frame nav.tabs.tabs-private { border-bottom:1px solid var(--line-soft); }
.frame nav.tabs.tabs-public { border-bottom:2px solid var(--line); }
.frame nav.tabs .t { position:relative; border-bottom-width:0!important; }
.frame nav.tabs.tabs-private .private-tab > .t {
  flex:1 1 auto!important; width:100%!important; padding:0!important; justify-content:center;
}
.frame nav.tabs.tabs-private .t:has(.results-head:not([hidden]):not(.is-empty)) .tab-label { transform:translateY(-7px); }
.frame nav.tabs.tabs-private .private-tab > .t.on { color:var(--rose); }
.frame nav.tabs .t.on::after {
  content:''; position:absolute; pointer-events:none; left:10%; right:10%; height:2px;
  border-radius:0; background:currentColor; animation:none;
}
.frame nav.tabs.tabs-private .t.on::after {
  top:-2px; box-shadow:0 10px 14px 2px color-mix(in srgb,currentColor 38%,transparent);
}
.frame nav.tabs.tabs-public .t.on::after {
  bottom:-2px; box-shadow:0 -10px 14px 2px color-mix(in srgb,currentColor 38%,transparent);
}
.frame nav.tabs .t.on .tab-label { text-shadow:0 0 9px color-mix(in srgb,currentColor 45%,transparent); }
html[data-display=paper] .frame nav.tabs .t.on .tab-label { text-shadow:none; }
@keyframes book-led { from { transform:scaleX(.12); opacity:.65; } to { transform:scaleX(1); opacity:1; } }
@view-transition { navigation:auto; }
::view-transition { pointer-events:none; }
.frame > header { view-transition-name:book-header; }
.frame > nav.tabs-public { view-transition-name:book-tabs; }
.frame > nav.tabs-private { view-transition-name:book-private-tabs; }
/* Keep the previous page until the next is ready, then switch like the other tabs.
   Include the header and navigation snapshots: their browser defaults also fade. */
::view-transition-group(*),::view-transition-image-pair(*),
::view-transition-old(*),::view-transition-new(*) { animation:none; }
::view-transition-old(*) { display:none; }
::view-transition-new(*) { mix-blend-mode:normal; }
html[data-display=paper] nav.tabs .t.on::after { box-shadow:none; animation:none; }
@media(prefers-reduced-motion:reduce) { .frame nav.tabs .t.on::after { animation:none; } }

/* Recipe panels share one header and a stable two-row bémol frame. */
.frame .reading-page .reading-section-header { min-height:42px; padding:5px 10px; }
.frame .reading-page .reading-section-header > h2 { font-size:14px; line-height:20px; font-weight:700; margin:0; text-transform:uppercase; }
.frame .recipe-overview { align-items:stretch; }
.frame .recipe-header-details { align-self:stretch; grid-template-rows:auto auto auto minmax(80px,1fr); align-content:stretch; }
.frame .recipe-header-details .recipe-avoidances { align-self:end; height:80px; min-height:80px; max-height:80px; margin:0; overflow:hidden; }
.frame .recipe-avoidance-list { align-self:stretch; flex:1; display:grid; grid-auto-flow:column; grid-template-rows:repeat(2,32px); grid-auto-columns:max-content; gap:4px 8px; align-content:center; overflow-x:auto; overflow-y:hidden; }
.frame .recipe-avoidance-person { min-height:32px; height:32px; padding:0 4px; }
.frame .recipe-avoidance-icon { width:28px; height:28px; border-radius:4px; }
.frame .reading-header .photo { align-self:stretch; height:auto; min-height:260px; }
@media(max-width:699px) { .frame .recipe-header-details { grid-template-rows:auto auto auto 80px; } .frame .reading-header .photo { min-height:220px; } }

/* Caddie keeps its tablet frame; only section headings separate the lines. */
.frame .unified-selector .shopping-category[data-shopping-category=list] { box-sizing:border-box; width:calc(100% - 40px); max-width:960px; margin:20px auto; padding:0; border:2px solid var(--ink); border-radius:8px; background:var(--card); overflow:hidden; }
.frame .unified-selector .shopping-category[data-shopping-category=list] .shopping-category-header { width:100%; max-width:none; min-height:42px; margin:0; padding:5px 10px; border:0; border-left:3px solid var(--rose); border-bottom:2px solid var(--ink); border-radius:0; background:var(--paper-deep); }
.frame .unified-selector .shopping-category-header::after { content:none; }
.frame .unified-selector .shopping-category-header h2 { font-size:14px; line-height:20px; font-weight:700; text-transform:uppercase; }
.frame .unified-selector .shopping-category .shopping-items { width:100%; margin:0; padding:16px; }
.frame .unified-selector .shopping-item { border:0; }
.frame .unified-selector .shopping-aisle:last-child { margin-bottom:0; }
.frame .unified-selector .shopping-clear-control .shopping-clear { font-weight:400!important; }
.frame .unified-selector .shopping-content > .shopping-clear-confirm { display:block; position:static; box-sizing:border-box; width:calc(100% - 40px); max-width:960px; min-height:44px; margin:16px auto -10px; padding:9px 14px; border:1px solid #a19079; border-radius:7px; background:#e9dfcb; color:#625044; font-size:13px; line-height:1.4; font-weight:400!important; text-align:center; }
.frame .unified-selector .shopping-content > .shopping-clear-confirm[hidden] { display:none; }
html[data-display=paper] .frame .unified-selector .shopping-content > .shopping-clear-confirm { background:#f5f0e6; color:#514739; }
/* Stable selection shelves and the shared, larger person circles. */
:root { --person-circle-size:64px; }
.frame .view[data-view="favs"] .favs-grid,
.frame .allergy-persons {
  grid-template-columns:repeat(auto-fit,minmax(calc(var(--person-circle-size) + 8px),1fr))!important;
  align-items:start; row-gap:14px!important;
}
.frame .view[data-view="favs"] .favs-cell .mono,
.frame .allergy-person .mono {
  width:var(--person-circle-size)!important; height:var(--person-circle-size)!important;
  font-size:28px!important;
}
.frame .unified-selector .ingredient-selection-list,
.frame .unified-selector .allergy-selection-list,
.frame .unified-selector .allergy-selection-list:empty {
  display:grid; grid-auto-flow:column; grid-template-columns:none; grid-auto-columns:64px;
  justify-content:start; align-content:start; align-items:start; justify-items:center;
  height:80px; min-height:80px; max-height:80px; overflow-x:auto; overflow-y:hidden;
  overscroll-behavior-x:contain; scrollbar-width:thin;
  margin-top:16px; margin-bottom:20px; padding:2px 0 10px;
}
.frame .unified-selector .allergy-selection-list,
.frame .unified-selector .allergy-selection-list:empty {
  grid-auto-columns:calc((100% - 63px) / 8);
}
.frame .unified-selector .allergy-selection-list .catalogue-chip {
  width:min(64px,100%); min-height:0; height:auto; aspect-ratio:1;
}
.frame .unified-selector .allergy-query { display:none; }
.frame .view[data-view="favs"] .favorite-selection-list { display:none; }
@media(max-width:680px) {
  :root { --person-circle-size:48px; }
  .frame .view[data-view="favs"] .favs-cell .mono,
  .frame .allergy-person .mono { font-size:22px!important; }
  .frame .unified-selector .ingredient-selection-list { grid-auto-columns:60px; }
}
@media(max-width:699px) {
  .frame .unified-selector .allergy-selection-list,
  .frame .unified-selector .allergy-selection-list:empty { grid-auto-columns:calc((100% - 35px) / 8); }
  .frame .unified-selector .allergy-selection-list .catalogue-chip { padding:2px; }
  .frame .unified-selector .allergy-selection-list .catalogue-choice-icon { width:22px; height:22px; max-width:100%; }
  .frame .unified-selector .allergy-selection-list .catalogue-choice-name { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
  .frame .unified-selector .allergy-selection-list .catalogue-choice-mark { top:0; right:0; width:10px; height:10px; font-size:10px; }
}
/* Planning: fixed weekly availability and a separate daily timetable. */
.frame .planning-panel { width:calc(100% - 40px); max-width:960px; margin:20px auto; }
.frame .planning-panel .planning-section { border:2px solid var(--ink); border-radius:8px; background:var(--card); overflow:hidden; }
.frame .planning-panel .planning-section + .planning-section { margin-top:24px; }
.frame .planning-panel .planning-participants,.frame .planning-panel .planning-editor-people { display:flex; flex-wrap:wrap; align-items:flex-start; justify-content:center; gap:16px 12px; box-sizing:border-box; width:100%; min-height:0; padding:18px 12px; margin:0; }
.frame .planning-participant-cell { display:flex; flex-direction:column; align-items:center; gap:7px; flex:0 0 76px; min-width:0; min-height:108px; }
.frame .planning-panel .planning-participant,.frame .planning-panel .planning-editor-person { display:flex; flex-direction:column; align-items:center; flex:0 0 auto; min-width:0; width:76px; min-height:0; padding:0; gap:7px; background:transparent; border:0; }
.frame .planning-panel .planning-participants .mono,.frame .planning-panel .planning-editor-people .mono { width:var(--person-circle-size,64px); height:var(--person-circle-size,64px); flex:none; margin:0; border-width:2px; font-size:28px; box-sizing:border-box; }
.frame .planning-panel .planning-participants [aria-pressed=true] .mono,.frame .planning-panel .planning-editor-people [aria-pressed=true] .mono { border-width:2px; background:var(--planning-person-fill); color:var(--planning-person-color); box-shadow:0 0 0 3px var(--card),0 0 0 4px var(--planning-person-color); }
.frame .planning-panel .planning-participants .lbl,.frame .planning-panel .planning-editor-people .lbl { font-size:12px; line-height:16px; white-space:normal; overflow-wrap:anywhere; }
.frame .planning-panel .planning-participants .lbl::after,.frame .planning-panel .planning-editor-people .lbl::after { content:none; }
.frame .planning-regular { display:flex; align-items:center; justify-content:center; gap:4px; margin:0; font-size:10px; line-height:16px; color:var(--ink-soft); cursor:pointer; white-space:nowrap; }
.frame .planning-panel .planning-regular-check { width:13px; height:13px; min-height:13px; padding:0; margin:0; accent-color:var(--rose); }
.frame .planning-common-host { padding:0 12px 20px; overflow:visible; max-height:none; }
.frame .planning-availability-grid,.frame .planning-availability-days { display:grid; grid-template-columns:40px repeat(7,minmax(0,1fr)); gap:0; box-sizing:border-box; min-width:0; width:100%; }
.frame .planning-availability-days { width:calc(100% - 24px); margin:0 12px; }
.frame .planning-panel .planning-availability-days .planning-day-tab,.frame .planning-panel .planning-shared-days .planning-day-tab { min-width:0; width:100%; min-height:38px; padding:7px 1px; border:0; border-bottom:2px solid transparent; border-radius:0; background:transparent; color:var(--ink-soft); font-size:12px; font-weight:400; }
.frame .planning-panel .planning-availability-days .planning-day-tab[aria-pressed=true],.frame .planning-panel .planning-shared-days .planning-day-tab[aria-pressed=true] { background:var(--paper-deep); color:var(--ink); border-bottom-color:var(--rose); }
.frame .planning-panel .planning-day-tab[aria-current=date] { box-shadow:inset 0 3px var(--rose); font-weight:700; }
.frame .planning-availability-grid { border:1px solid var(--line); border-radius:9px; padding:8px 0; background:var(--paper); }
.frame .planning-half-hour-axis { display:block; position:relative; height:576px; font-size:10px; line-height:1; color:var(--ink-soft); font-variant-numeric:tabular-nums; }
.frame .planning-axis-hour { position:absolute; right:7px; transform:translateY(-50%); white-space:nowrap; }
.frame .planning-axis-hour:first-child { transform:none; }
.frame .planning-axis-hour:last-child { transform:translateY(-100%); }
.frame .planning-availability-column { position:relative; display:grid; grid-template-rows:repeat(32,18px); gap:0; min-width:0; padding:0 3px; border-left:1px solid var(--line-soft); }
.frame .planning-availability-column.is-current-day { background:color-mix(in srgb,var(--rose) 5%,transparent); }
.frame .planning-availability-line { position:absolute; left:0; right:0; height:0; border-top:1px solid var(--line-soft); z-index:2; pointer-events:none; }
.frame .planning-availability-line.is-half-hour { border-top-style:dotted; opacity:.7; }
.frame .planning-panel .planning-availability-column .planning-common-slot { position:relative; z-index:1; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; align-self:stretch; box-sizing:border-box; width:100%; min-width:0; min-height:0; height:auto; padding:0 2px; margin:2px 0; border:1px solid #d2ceca; border-radius:12px; background:#e6e2de; color:#8c847e; font-size:12px; line-height:16px; box-shadow:none; overflow:hidden; }
.frame .planning-panel .planning-availability-column .planning-common-slot.is-common { border-color:#b4cbb5; background:#dcebdc; color:#45694c; }
.frame .planning-panel .planning-availability-column .planning-common-slot:disabled { opacity:1; }
.frame .planning-bubble-symbol { font-size:17px; line-height:14px; font-weight:400; }
.frame .planning-bubble-hours { font-size:9px; line-height:13px; font-variant-numeric:tabular-nums; overflow-wrap:anywhere; }
.frame .planning-panel .planning-availability-column .planning-common-slot.is-common:hover { background:#cfe2cf; }
.frame .planning-panel .planning-availability-column .planning-common-slot:focus-visible { outline:2px solid var(--ink); outline-offset:-3px; }
.frame .planning-shared-days { display:grid; grid-template-columns:64px repeat(7,minmax(0,1fr)); width:calc(100% - 24px); margin:10px 12px 0; gap:0; }
.frame .planning-week-host { box-sizing:border-box; padding:0 12px 14px; overflow:visible; max-height:none; }
.frame .planning-calendar-bands { box-sizing:border-box; width:100%; min-width:0; margin:0; border:1px solid var(--line); border-radius:9px; background:var(--paper); padding:6px 6px 4px 0; overflow:hidden; }
.frame .planning-calendar-axis-row,.frame .planning-calendar-person-row { display:grid; grid-template-columns:64px minmax(0,1fr); min-width:0; align-items:center; }
.frame .planning-calendar-axis-row { height:28px; }
.frame .planning-calendar-axis { position:relative; font-size:10px; font-variant-numeric:tabular-nums; }
.frame .planning-calendar-person-row { margin:0 0 7px; }
.frame .planning-calendar-identity { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; padding:0 3px; min-width:0; }
.frame .planning-calendar-person { flex:none; width:30px; height:30px; font-size:15px; }
.frame .planning-calendar-name { font-size:9px; line-height:12px; color:var(--planning-person-color); max-width:100%; overflow-wrap:anywhere; text-align:center; }
.frame .planning-calendar-track { position:relative; height:calc(8px + var(--calendar-lanes,1)*38px); min-height:46px; box-sizing:border-box; border-radius:4px; background:var(--card); border-top:1px solid var(--line-soft); border-bottom:1px solid var(--line-soft); }
.frame .planning-calendar-gridline { position:absolute; top:0; bottom:0; width:0; border-left:1px solid var(--line); pointer-events:none; z-index:1; }
.frame .planning-calendar-gridline.is-half-hour { border-left-style:dotted; border-left-color:var(--line-soft); }
.frame .planning-panel .planning-calendar-event { z-index:2; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1px; height:34px; min-height:0; min-width:0; padding:2px; border:1px solid var(--planning-person-color); border-radius:7px; color:var(--planning-person-color); background:var(--planning-person-fill); font-size:10px; line-height:12px; overflow:hidden; box-shadow:none; }
.frame .planning-calendar-event-title,.frame .planning-calendar-event-time { display:block; flex:none; width:100%; min-width:0; white-space:nowrap; text-overflow:ellipsis; overflow:hidden; }
.frame .planning-panel .planning-calendar-event.is-unavailability { border-style:dashed; }
.frame .planning-calendar-event-time { font-size:9px; font-variant-numeric:tabular-nums; }
.frame .planning-person-editors { padding:0 12px 14px; }
.frame .planning-saved-slot { padding:10px 0; border:0; border-bottom:1px solid var(--line-soft); border-radius:0; }
.frame .planning-saved-slot:last-child { border-bottom:0; }
html[data-display=paper] .frame .planning-panel .planning-availability-column .planning-common-slot { border:1px solid #d2ceca; background:#eeece9; color:#8c847e; }
html[data-display=paper] .frame .planning-panel .planning-availability-column .planning-common-slot.is-common { border-color:#b4cbb5; background:#e0eddf; color:#45694c; }
html[data-display=paper] .frame .planning-panel .planning-calendar-event { background:var(--planning-person-fill); color:var(--planning-person-color); border-color:var(--planning-person-color); }
@media(max-width:680px) {
 .frame .planning-panel .planning-participants,.frame .planning-panel .planning-editor-people { gap:14px 8px; padding:16px 8px; }
 .frame .planning-participant-cell { flex-basis:56px; min-height:94px; }
 .frame .planning-panel .planning-participant,.frame .planning-panel .planning-editor-person { width:56px; }
 .frame .planning-panel .planning-participants .mono,.frame .planning-panel .planning-editor-people .mono { width:var(--person-circle-size,48px); height:var(--person-circle-size,48px); font-size:24px; }
 .frame .planning-panel .planning-participants .lbl,.frame .planning-panel .planning-editor-people .lbl { font-size:10px; line-height:14px; }
 .frame .planning-regular { font-size:9px; gap:3px; }
 .frame .planning-common-host { padding:0 6px 14px; }
 .frame .planning-availability-days { width:calc(100% - 12px); margin:0 6px; }
 .frame .planning-availability-grid,.frame .planning-availability-days { grid-template-columns:30px repeat(7,minmax(0,1fr)); }
 .frame .planning-axis-hour { right:4px; font-size:9px; }
 .frame .planning-availability-column { padding:0 2px; }
 .frame .planning-panel .planning-availability-column .planning-common-slot { border-radius:9px; padding:0; }
 .frame .planning-bubble-hours { display:none; }
 .frame .planning-panel .planning-day-tab { font-size:10px; }
 .frame .planning-calendar-axis-row,.frame .planning-calendar-person-row { grid-template-columns:44px minmax(0,1fr); }
 .frame .planning-shared-days { grid-template-columns:44px repeat(7,minmax(0,1fr)); width:calc(100% - 12px); margin:10px 6px 0; }
 .frame .planning-week-host { padding:0 6px 12px; }
 .frame .planning-calendar-hour { font-size:9px; }
 .frame .planning-calendar-hour.minor-hour { visibility:hidden; }
 .frame .planning-panel .planning-calendar-event { font-size:9px; padding:1px; }
 .frame .planning-calendar-event-time { font-size:8px; }
 .frame .planning-calendar-name { font-size:8px; }
}
@media(prefers-reduced-motion:no-preference) {
 .frame .planning-availability-bubble { animation:planning-bubble-in .25s ease-out; }
 @keyframes planning-bubble-in { from { opacity:.5; transform:scale(.98); } to { opacity:1; transform:scale(1); } }
}
/* Dated appointments are created from a green range and inspected read-only. */
.frame .planning-schedule-date { margin:4px 12px 8px; text-align:right; color:var(--ink-soft); font-size:11px; }
.frame .planning-rendezvous { padding:0 12px 16px; }
.frame .planning-rendezvous-heading { margin:8px 0 10px; font-size:14px; font-weight:500; }
.frame .planning-rendezvous-list { display:grid; gap:8px; }
.frame .planning-panel .planning-rendezvous-card { display:grid; grid-template-columns:minmax(0,1fr) auto; text-align:left; gap:5px 12px; min-height:62px; padding:10px 12px; border:1px solid var(--line-soft); border-radius:9px; background:var(--paper); font-weight:400; }
.frame .planning-rendezvous-when { font-size:13px; line-height:18px; }
.frame .planning-rendezvous-names { grid-column:1; font-size:11px; color:var(--ink-soft); }
.frame .planning-rendezvous-count { grid-column:2; grid-row:1 / span 2; align-self:center; font-size:11px; color:var(--ink-soft); white-space:nowrap; }
.frame .planning-rendezvous-empty { margin:4px 0; font-size:12px; line-height:1.5; color:var(--ink-soft); }
.frame .planning-rendezvous-dialog { box-sizing:border-box; width:min(560px,calc(100vw - 32px)); max-height:calc(100dvh - 40px); padding:20px; border:1px solid var(--line); border-radius:14px; background:var(--paper); color:var(--ink); box-shadow:0 12px 60px #0003; overflow:auto; }
.frame .planning-rendezvous-dialog::backdrop { background:#342b294d; backdrop-filter:blur(3px); }
.frame .planning-rendezvous-header { display:flex; align-items:center; gap:12px; margin:0 0 16px; }
.frame .planning-rendezvous-title { flex:1; font-size:18px; font-weight:500; margin:0; }
.frame .planning-panel .planning-rendezvous-close { flex:none; width:36px; height:36px; min-height:36px; padding:0; font-size:24px; border:0; background:transparent; }
.frame .planning-rendezvous-form { display:grid; gap:16px; }
.frame .planning-rendezvous-hours { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.frame .planning-rendezvous-people { margin:0; font-size:13px; line-height:1.5; color:var(--ink-soft); }
.frame .planning-panel .planning-rendezvous-save { min-height:44px; font-weight:400; background:var(--card); }
.frame .planning-rendezvous-detail { display:grid; gap:12px; }
.frame .planning-rendezvous-recipe { display:grid; grid-template-columns:auto minmax(0,1fr) auto; gap:12px; align-items:center; padding:8px 0; border-bottom:1px solid var(--line-soft); }
.frame .planning-rendezvous-recipe:last-child { border-bottom:0; }
.frame .planning-rendezvous-photo { width:44px; height:44px; border-radius:6px; object-fit:cover; }
.frame .planning-rendezvous-recipe-name { font-size:14px; line-height:1.4; }
.frame .planning-panel .planning-rendezvous-remove { min-height:36px; width:36px; padding:0; font-size:21px; font-weight:400; background:transparent; border:0; }
.frame .planning-rendezvous-message { font-size:12px; line-height:1.5; margin:12px 0 0; color:var(--rose); }

/* Recipe-to-meeting picker, using the same restrained book controls. */
.frame .recipe-rendezvous-button { min-height:34px; padding:4px 8px; border:1px solid #998391; border-radius:5px; background:#eee5ee; color:#655568; font-size:12px; line-height:1.25; }
.rendezvous-dialog { box-sizing:border-box; width:calc(100% - 32px); max-width:620px; max-height:85vh; overflow:auto; padding:20px; border:1px solid var(--line); border-radius:14px; background:var(--card); color:var(--ink); box-shadow:0 14px 60px #302c2440; }
.rendezvous-dialog::backdrop { background:#28251f55; }
.rendezvous-dialog h2 { font-size:20px; margin:0 60px 14px 0; }
.rendezvous-dialog button { font:inherit; font-size:14px; min-height:40px; border:1px solid var(--line); border-radius:6px; padding:7px 12px; background:var(--paper); color:var(--ink); }
.rendezvous-dialog .rendezvous-close { position:absolute; top:12px; right:12px; }
.recipe-rendezvous-list { display:grid; gap:10px; }
.rendezvous-dialog .recipe-rendezvous-choice { display:grid; gap:5px; text-align:left; width:100%; padding:12px; }
.rendezvous-dialog .recipe-rendezvous-choice:disabled { opacity:.6; cursor:default; }
.rendezvous-status { font-size:14px; line-height:1.5; }

/* Réunions: the site favicon and the people identify each meeting. */
.frame .planning-reunion-icon { display:block; flex:none; width:32px; height:32px; object-fit:contain; }
.frame .planning-panel .planning-rendezvous-card { grid-template-columns:32px minmax(0,1fr) auto; }
.frame .planning-rendezvous-card > .planning-reunion-icon { grid-column:1; grid-row:1 / span 2; align-self:center; }
.frame .planning-rendezvous-card .planning-rendezvous-when { grid-column:2; grid-row:1; }
.frame .planning-rendezvous-card .planning-rendezvous-names { grid-column:2; grid-row:2; }
.frame .planning-rendezvous-card .planning-rendezvous-count { grid-column:3; }
.frame .planning-calendar-event.is-reunion .planning-calendar-event-title { display:flex; align-items:center; justify-content:center; gap:3px; }
.frame .planning-calendar-event.is-reunion .planning-reunion-icon { width:14px; height:14px; }
.frame .planning-calendar-reunion-names { min-width:0; overflow:hidden; text-overflow:ellipsis; }

.frame .recipe-rendezvous-button { display:inline-flex; align-items:center; gap:5px; }
.frame .recipe-rendezvous-button[hidden] { display:none; }
.reunion-icon { width:24px; height:24px; object-fit:contain; flex:none; }
.recipe-rendezvous-choice .reunion-icon { float:left; }

/* Restore the same query count beside the recall in these private tabs. */
.frame nav.tabs.tabs-private .t[data-view=favs] .query-count,
.frame nav.tabs.tabs-private .t[data-view=allergies] .query-count { display:inline!important; }

/* Navigation mirrors the public and private reading directions. */
.frame nav.tabs.tabs-private .private-tab > .t { height:48px; min-height:48px; display:flex; flex-direction:column-reverse; justify-content:flex-start; padding:4px 2px!important; gap:3px; }
.frame nav.tabs.tabs-private .t .tab-label,.frame nav.tabs.tabs-private .t:has(.results-head:not([hidden]):not(.is-empty)) .tab-label { transform:none; line-height:18px; }
.frame nav.tabs.tabs-private .t .results-head { position:static; flex:none; height:16px; min-height:16px; width:100%; order:0; }
.frame nav.tabs.tabs-private .t .tab-label { order:-1; }
.frame nav.tabs.tabs-public > .t { display:flex; align-items:center; justify-content:flex-start; flex-direction:column; padding-top:5px!important; }
/* Every keyboard keeps the same clickable lower-left target. */
.frame .view .kb-context-action svg,.frame .allergy-keyboard .allergy-edit svg { display:block; width:20px; height:20px; }
.frame .view .kb-context-action .kb-context-label { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.frame .allergy-edit.is-empty-action { visibility:visible; }
/* Stable person rows align between the keyboard and the content shelf. */
.frame .view[data-view="favs"] .favs-grid,.frame .allergy-persons { display:grid; grid-template-columns:repeat(auto-fit,minmax(72px,1fr))!important; align-items:start; box-sizing:border-box; width:calc(100% - 40px); max-width:960px; margin:0 auto!important; padding:30px 0!important; gap:18px 8px!important; }
.frame .view[data-view="favs"] .favs-cell,.frame .allergy-person { justify-content:center; align-items:center; gap:6px; }
.frame .view[data-view="favs"] .favs-cell .mono,.frame .allergy-person .mono { margin:0; }
.frame[data-catalog-view="favs"] .person-favorites-toolbar { margin:0; padding:0; min-height:0; }
.frame[data-catalog-view="favs"] .person-favorites-status:empty { display:none; }
.frame[data-catalog-view="favs"] .card .person-favorite-check { position:absolute; top:auto; bottom:8px; right:8px; }
/* Recipe preferences can occupy two rows without reserving a red empty box. */
.frame .recipe-header-details { grid-template-rows:auto auto auto auto; align-content:start; gap:10px; }
.frame .recipe-header-details .rmp-favorites { grid-template-columns:22px minmax(0,1fr) 36px; background:#edf2e8; }
.frame .recipe-header-details .favorite-controls { display:grid; grid-auto-flow:column; grid-template-rows:repeat(2,32px); grid-auto-columns:max-content; gap:4px; padding:0; }
.frame .recipe-header-details .favorite-header-actions { min-width:0; width:36px; }
.frame .recipe-header-details .favorite-header-actions button { width:36px; min-width:36px; height:36px; min-height:36px; padding:7px; }
.frame .recipe-header-details .favorite-header-actions svg { display:block; width:20px; height:20px; }
.frame .recipe-header-details .favorite-header-actions .kb-context-label { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
.frame .recipe-header-details .recipe-avoidances { align-self:start; height:auto; min-height:40px; max-height:80px; background:#f7e9e6; }
.frame .recipe-avoidance-list { grid-template-rows:repeat(2,minmax(28px,32px)); }
/* A small centered shopping list, with the quantities close to the names. */
.frame .unified-selector .shopping-category[data-shopping-category=list] { width:calc(100% - 40px); max-width:540px; }
.frame .unified-selector .shopping-category .shopping-items { padding:12px 16px; }
.frame .unified-selector .shopping-item { gap:8px; padding:5px 0; }
.frame .unified-selector .shopping-aisle-title { font-size:17px; margin-bottom:8px; }
.frame .unified-selector .shopping-aisle { margin-bottom:20px; }
.frame .shopping-panel .shopping-clear-control .shopping-clear-confirm { position:absolute; top:calc(100% + 5px); left:0; right:auto; width:104px; min-height:38px; height:auto; z-index:8; padding:8px; margin:0; border:1px solid var(--ink); border-radius:5px; background:var(--card); color:var(--ink); font-size:12px; }
.frame .shopping-clear-confirm[hidden] { display:none!important; }
html[data-display=paper] .frame .recipe-header-details :is(.rmp-favorites,.recipe-avoidances) { background:#fff; }
@media(max-width:699px) { .frame .view[data-view="favs"] .favs-grid,.frame .allergy-persons { grid-template-columns:repeat(3,minmax(0,1fr))!important; padding:24px 0!important; gap:16px 6px!important; } .frame nav.tabs.tabs-private .private-tab > .t { height:44px; min-height:44px; } }

/* Planning: stable violet people, compact cream calendars and inline validation. */
.frame .planning-panel .planning-participants,.frame .planning-panel .planning-editor-people { gap:12px; padding:16px 10px 12px; }
.frame .planning-participant-cell,.frame .planning-editor-person-cell { display:flex;flex-direction:column;align-items:center;gap:7px;flex:0 0 76px;min-height:118px; }
.frame .planning-panel .planning-participants .mono,.frame .planning-panel .planning-editor-people .mono { color:#76539a;border-color:#76539a;background:#faf6fb; }
.frame .planning-panel .planning-participants [aria-pressed=true] .mono,.frame .planning-panel .planning-editor-people [aria-pressed=true] .mono { color:#684286;border-color:#76539a;background:#e3d3ef;box-shadow:0 0 0 3px var(--card),0 0 0 4px #76539a; }
.frame .planning-regular { display:flex;align-items:center;justify-content:center;min-height:25px;width:100%;margin:0; }
.frame .planning-regular-check { appearance:none;width:18px;height:18px;padding:0;margin:0;border:1.5px solid #76539a;border-radius:50%;background:transparent;cursor:pointer; }
.frame .planning-regular-check:checked { background:#76539a;box-shadow:inset 0 0 0 3px var(--card); }
.frame .planning-regular-check:focus-visible { outline:2px solid #76539a;outline-offset:3px; }
.frame .planning-person-action { display:flex;align-items:center;justify-content:center;width:100%;height:28px; }
.frame .planning-panel .planning-person-add { display:grid;place-items:center;width:26px;height:26px;min-width:26px;min-height:26px;padding:0;border:1px solid #76539a;border-radius:50%;background:#eee1f5;color:#76539a;font-size:21px;line-height:1; }
.frame .planning-day-cell { display:flex;flex-direction:column;min-width:0;background:#f3eddf; }
.frame .planning-panel .planning-availability-days .planning-day-tab,.frame .planning-panel .planning-shared-days .planning-day-tab { display:flex;flex-direction:column;justify-content:center;align-items:center;gap:3px;min-height:52px;padding:7px 1px;font-size:13px;color:var(--ink);border:0;border-radius:0;background:#f3eddf; }
.frame .planning-panel .planning-shared-days .planning-day-tab[aria-pressed=true] { background:#e4dae9;color:#684286;box-shadow:inset 0 -2px #76539a; }
.frame .planning-panel .planning-day-tab[aria-current=date] .planning-day-date { color:var(--rose);font-weight:700; }
.frame .planning-day-date { display:block;font-size:11px;line-height:1; }
.frame .planning-panel .planning-availability-days,.frame .planning-panel .planning-shared-days { border:1px solid #d9d0c1;border-bottom:0;border-radius:10px 10px 0 0;overflow:hidden; }
.frame .planning-common-host,.frame .planning-week-host { margin-top:0;padding-top:0; }
.frame .planning-availability-grid,.frame .planning-calendar-bands { border-color:#d9d0c1;border-radius:0 0 10px 10px;background:#f9f4e9; }
.frame .planning-availability-grid { border-top:0; }
.frame .planning-availability-column { border-left-color:#ddd4c144; }
.frame .planning-availability-column.is-current-day { background:#decfeb66; }
.frame .planning-availability-line { border-top-color:#c9bfaa55; }
.frame .planning-availability-line.is-half-hour { opacity:.4; }
.frame .planning-panel .planning-availability-column .planning-common-slot { border-color:#d4cbbb;background:#e9e1d466;color:#a09588; }
.frame .planning-panel .planning-availability-column .planning-common-slot.is-common { border-color:#8cab8e;background:#bcd5bce8;color:#355e3f; }
.frame .planning-bubble-hours { writing-mode:vertical-rl;text-orientation:mixed;white-space:nowrap;font-size:11px;letter-spacing:.06em; }
.frame .planning-calendar-track { background:#f3eddf55;border-color:#d9d0c133; }
.frame .planning-calendar-gridline { border-left-color:#bdb4a655; }
.frame .planning-calendar-gridline.is-half-hour { border-left-color:#bdb4a62b; }
.frame .planning-panel .planning-calendar-event,.frame .planning-panel .planning-calendar-event.is-unavailability { border:1px solid var(--planning-person-color);background:color-mix(in srgb,var(--planning-person-fill) 72%,transparent);border-radius:5px; }
.frame .planning-calendar-event-time { font-size:10px; }
.frame .planning-day-rendezvous { display:flex;flex-wrap:wrap;justify-content:center;gap:3px;min-height:0; }
.frame .planning-panel .planning-rendezvous-card { display:grid;place-items:center;flex:none;width:30px;height:30px;min-width:30px;min-height:30px;margin:0 0 5px;padding:3px;border:0;border-radius:50%;background:#e6ddcb; }
.frame .planning-rendezvous-card .planning-reunion-icon { width:23px;height:23px; }
.frame .planning-rendezvous { padding:0;margin:0; }
.frame .planning-rendezvous-list:empty { display:none; }
.frame .planning-rendezvous-recipe-name { color:var(--ink);text-decoration:underline;text-underline-offset:3px; }
.frame .planning-add { margin:0 0 10px;padding:10px;border:1px solid #cfbedb;border-radius:9px;background:#f4edf8; }
.frame .planning-slots,.frame .planning-saved-slots { list-style:none;padding:0;margin:0; }
.frame .planning-slot,.frame .planning-saved-slot { display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--line-soft); }
.frame .planning-saved-time { flex:1;min-width:0;font-size:13px; }
.frame .planning-panel .planning-slot-pencil,.frame .planning-panel .planning-slot-confirm,.frame .planning-panel .planning-slot-delete { display:grid;place-items:center;flex:none;min-width:28px;width:28px;min-height:28px;height:28px;padding:0;border:1px solid #76539a;border-radius:50%;font-size:18px;line-height:1;color:#76539a;background:#f4edf8; }
.frame .planning-panel .planning-slot-delete { color:#a25760;border-color:#d8b1b6;background:transparent; }
.frame .planning-slot.is-pending-delete { background:#f1dedd; }
.frame .planning-slot-summary { padding:9px 0;font-size:13px;color:var(--ink-soft); }
.frame .planning-panel .planning-slot { flex-wrap:wrap; }
.recipe-rendezvous-button { width:36px;min-width:36px;min-height:36px;padding:5px;justify-content:center; }
html[data-display=paper] .frame .planning-panel .planning-participants .mono,html[data-display=paper] .frame .planning-panel .planning-editor-people .mono { color:#76539a;border-color:#76539a;background:#fff; }
html[data-display=paper] .frame .planning-panel .planning-participants [aria-pressed=true] .mono,html[data-display=paper] .frame .planning-panel .planning-editor-people [aria-pressed=true] .mono { background:#e3d3ef; }
html[data-display=paper] .frame .planning-panel .planning-availability-column .planning-common-slot.is-common { background:#c6dcc4;border-color:#8cab8e;color:#355e3f; }
html[data-display=paper] .frame .planning-calendar-track { background:#f3eddf55; }
@media(max-width:650px){
 .frame .planning-participant-cell,.frame .planning-editor-person-cell{flex-basis:52px;min-height:100px;}
 .frame .planning-panel .planning-participant,.frame .planning-panel .planning-editor-person{width:52px;}
 .frame .planning-panel .planning-participants,.frame .planning-panel .planning-editor-people{gap:10px 6px;padding:14px 6px 10px;}
 .frame .planning-panel .planning-availability-days .planning-day-tab,.frame .planning-panel .planning-shared-days .planning-day-tab{font-size:11px;}
 .frame .planning-day-date{font-size:10px;}
 .frame .planning-bubble-hours{font-size:9px;letter-spacing:0;}
 .frame .planning-calendar-event-time{font-size:8px;}
 .frame .planning-slot{gap:5px;}
 .frame .planning-panel .planning-clock select{padding:5px 2px;min-width:36px;}
}

.frame .recipe-header-details .favorite-header-actions button { flex:0 0 36px; }

.frame .planning-bubble-hours{display:block;font-size:9px;line-height:10px}
.frame .planning-availability-bubble.is-short .planning-bubble-hours{font-size:8px}
.frame .planning-availability-bubble.is-short:has(.planning-bubble-hours) .planning-bubble-symbol{display:none}
@media(max-width:650px){.frame .planning-calendar-event-time{display:flex;flex-direction:column;align-items:center;line-height:11px}.frame .planning-event-dash{display:none}}
.frame .planning-panel .planning-rendezvous-card{grid-template-columns:1fr;grid-template-rows:1fr}
.frame .planning-rendezvous-card>.planning-reunion-icon{grid-row:1}
.frame .shopping-panel .shopping-clear-control.kb-context-slot { border:0; background:transparent; }

/* A dated badge distinguishes later weeks without a separate meeting heading. */
.frame .planning-panel .planning-rendezvous-card { position:relative; }
.frame .planning-rendezvous-date-badge { position:absolute;bottom:-3px;left:50%;transform:translateX(-50%);display:block;box-sizing:border-box;min-width:24px;padding:1px 2px;border:1px solid #c4b5cd;border-radius:4px;background:#fffaf0;color:#684286;font:600 8px/10px Arial,sans-serif;font-variant-numeric:tabular-nums;white-space:nowrap;pointer-events:none; }
html[data-display=paper] .frame .planning-rendezvous-date-badge { background:#fff;color:#684286; }

/* Review: press feedback is momentary, and recipe actions keep one stable target. */
.frame .view .kb .kb-context-action[aria-pressed],
html[data-display=paper] .frame .view .kb .kb-context-action[aria-pressed] {
  background:var(--card); color:var(--ink); border-color:var(--ink); transition:none;
}
.frame .view .kb .kb-context-action:active:not(:disabled),
.frame .view .kb .kb-context-action[aria-pressed]:active:not(:disabled),
html[data-display=paper] .frame .view .kb .kb-context-action:active:not(:disabled),
html[data-display=paper] .frame .view .kb .kb-context-action[aria-pressed]:active:not(:disabled) {
  background:var(--rose); border-color:var(--rose); color:#fff;
}
.frame .recipe-header-details .favorite-header-actions .favorite-action {
  background:var(--card); color:#344e2b; border-color:#7d9470; transition:none;
}
.frame .recipe-header-details .favorite-header-actions .favorite-action:active:not(:disabled) {
  background:var(--rose); border-color:var(--rose); color:#fff;
}
.frame .recipe-avoidance-person { border-color:#c99690; }
/* Review: common person controls, dated week history and compact appointments. */
.frame .planning-panel .planning-participants .mono,.frame .planning-panel .planning-editor-people .mono,
html[data-display=paper] .frame .planning-panel .planning-participants .mono,html[data-display=paper] .frame .planning-panel .planning-editor-people .mono{color:var(--ink);border:2px solid var(--ink);background:var(--paper);box-shadow:none;text-decoration:none}
.frame .planning-panel .planning-participants [aria-pressed=true] .mono,.frame .planning-panel .planning-editor-people [aria-pressed=true] .mono,
html[data-display=paper] .frame .planning-panel .planning-participants [aria-pressed=true] .mono,html[data-display=paper] .frame .planning-panel .planning-editor-people [aria-pressed=true] .mono{color:#fff;border-color:var(--rose);background:var(--rose);box-shadow:none;text-decoration:none}
.frame .planning-panel .planning-day-tab[aria-current=date]{box-shadow:none}
.frame .planning-panel .planning-day-tab[aria-current=date] .planning-day-date{border:1px solid var(--rose);border-radius:50%;color:var(--rose)}
.frame .planning-panel .planning-day-date{display:grid;place-items:center;min-width:24px;height:24px;box-sizing:border-box;border:1px solid transparent}
.frame .planning-panel .planning-shared-days .planning-day-tab{border-top:2px solid transparent;border-bottom:2px solid transparent;background:var(--paper);box-shadow:none}
.frame .planning-panel .planning-shared-days .planning-day-tab[aria-current=date]{border-top-color:var(--rose)}
.frame .planning-panel .planning-shared-days .planning-day-tab[aria-pressed=true]{background:var(--paper);color:var(--ink);border-bottom-color:var(--rose);box-shadow:none}
.frame .planning-availability-column.is-current-day{background:transparent}
.frame .planning-panel .planning-availability-column .planning-common-slot,
html[data-display=paper] .frame .planning-panel .planning-availability-column .planning-common-slot{background:#c6c2b9;color:#57534c;border-color:#b4b0a7;animation:none}
.frame .planning-panel .planning-availability-column .planning-common-slot.is-common{border-color:#8cab8e;background:#bcd5bce8;color:#355e3f}
html[data-display=paper] .frame .planning-panel .planning-availability-column .planning-common-slot.is-common{background:#c6dcc4;border-color:#8cab8e;color:#355e3f}
.frame .planning-panel .planning-availability-column .planning-common-slot.is-past{background:#c6c2b9;color:#57534c;border-color:#b4b0a7}
.frame .planning-bubble-hours{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;white-space:nowrap;font-size:10px;line-height:1.15;font-variant-numeric:tabular-nums}
.frame .planning-availability-bubble.is-short .planning-bubble-hours{font-size:9px;line-height:1.05}
.frame .planning-week-navigation{display:flex;align-items:center;justify-content:center;gap:10px;overflow-x:auto;padding:2px 12px 14px;scrollbar-width:thin;touch-action:pan-x}
.frame .planning-panel .planning-week-navigation button{flex:none;min-width:32px;min-height:32px;padding:3px 8px;border:1px solid var(--line);border-radius:5px;background:var(--paper);color:var(--ink)}
.frame .planning-week-label{white-space:nowrap;font-size:13px;font-variant-numeric:tabular-nums}
.frame .planning-panel .planning-availability-days{overflow:visible;align-items:start}
.frame .planning-day-rendezvous{display:flex;flex-direction:column;align-items:stretch;gap:4px;padding:4px 1px}
.frame .planning-panel .planning-rendezvous-card{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:3px;width:100%;min-width:0;height:auto;min-height:80px;margin:0;padding:5px 2px;border:1px solid var(--line);border-radius:5px;background:var(--paper);font-size:10px;line-height:1.2;text-align:center;overflow-wrap:anywhere}
.frame .planning-rendezvous-card .planning-reunion-icon{width:24px;height:24px;flex:none}
.frame .planning-rendezvous-when{font-weight:700;color:var(--rose)}
.frame .planning-rendezvous-hours{font-size:9px;white-space:nowrap}
.frame .planning-rendezvous-names{color:var(--ink);font-size:10px}
.frame .planning-rendezvous-actions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}
.frame .planning-panel .planning-rendezvous-actions button{border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:5px;padding:7px 10px}
.frame .planning-panel .planning-rendezvous-actions .planning-rendezvous-delete{color:var(--rose)}
.frame .planning-person-editor{padding-top:0}
.frame .planning-panel .planning-person-edit,.frame .planning-panel .planning-person-edit[aria-pressed=true],.frame .planning-panel .planning-person-add{color:var(--ink);background:var(--paper);border:1px solid var(--line);box-shadow:none}
.frame .planning-panel .planning-editor-toolbar{gap:10px;margin:0;padding:4px 0 10px}
.frame .planning-add,.frame .planning-slot,.frame .planning-saved-slot{display:flex;align-items:center;flex-wrap:nowrap;gap:8px;margin:0;min-height:44px;padding:8px 0;border:0;border-bottom:1px solid var(--line-soft);border-radius:0;background:transparent;box-sizing:border-box}
.frame .planning-panel .planning-add .planning-field,.frame .planning-panel .planning-slot .planning-field,.frame .planning-panel .planning-saved-slot .planning-field{flex:1 1 0;min-width:0;margin:0;padding:0;border:0;font-size:0}
.frame .planning-panel .planning-add .planning-field:first-child,.frame .planning-panel .planning-slot .planning-field:first-child,.frame .planning-panel .planning-saved-slot .planning-field:first-child{flex:1.4 1 0;min-width:0}
.frame .planning-panel .planning-add .planning-clock-label,.frame .planning-panel .planning-slot .planning-clock-label,.frame .planning-panel .planning-saved-slot .planning-clock-label{display:none}
.frame .planning-panel .planning-add select,.frame .planning-panel .planning-slot select,.frame .planning-panel .planning-saved-slot select{min-width:0;min-height:28px;height:28px;padding:2px;font-size:12px;color:var(--ink);background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0;opacity:1;-webkit-text-fill-color:var(--ink)}
.frame .planning-panel .planning-saved-slot select{appearance:none;border-bottom-color:transparent}
.frame .planning-panel .planning-saved-slot:after{content:'';display:block;flex:none;width:28px;height:28px}
.frame .planning-panel .planning-slot-delete{background:transparent;color:var(--rose);border:0;box-shadow:none}
@media(max-width:650px){.frame .planning-week-navigation{gap:6px;padding-inline:6px}.frame .planning-week-label{font-size:11px}.frame .planning-rendezvous-card .planning-reunion-icon{width:20px;height:20px}.frame .planning-rendezvous-hours{font-size:8px;white-space:normal}.frame .planning-rendezvous-names{font-size:9px}.frame .planning-panel .planning-add select,.frame .planning-panel .planning-slot select,.frame .planning-panel .planning-saved-slot select{font-size:11px}.frame .planning-add,.frame .planning-slot,.frame .planning-saved-slot{gap:4px}.frame .planning-panel .planning-day-date{min-width:22px;height:22px}}
.frame .planning-bubble-hours{writing-mode:horizontal-tb;text-orientation:mixed;letter-spacing:normal}
.frame .planning-panel .planning-availability-days .planning-day-tab{border-top:2px solid transparent}
.frame .planning-panel .planning-availability-days .planning-day-tab[aria-current=date]{border-top-color:var(--rose)}
.frame .planning-week-scroll{width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin}
.frame .planning-week-canvas{min-width:0}
.frame .planning-panel .planning-regular-check{border-color:var(--ink-soft);background:transparent;box-shadow:none}
.frame .planning-panel .planning-regular-check:checked{border-color:var(--rose);background:var(--rose);box-shadow:none}
.frame .planning-panel .planning-regular-check:focus-visible{outline-color:var(--rose)}
@media(max-width:650px){.frame .planning-week-canvas{min-width:560px}.frame .planning-panel .planning-rendezvous-card{min-height:92px}.frame .planning-rendezvous-when,.frame .planning-rendezvous-hours{white-space:nowrap}}

/* September UI wave: compact masthead, paired book emblems and stable controls. */
.frame > header { padding:10px 32px 8px; }
.frame .site-header-content { width:100%; max-width:1000px; }
.frame > header .title { font-size:clamp(20px,4.3vw,58px); line-height:1.05; letter-spacing:.025em; }
.frame .site-meta-row { margin-top:5px; gap:8px; }
.frame header .site-meta .date { margin-top:0; }
.frame .site-header-actions :is(.display-mode-toggle,.site-code,.site-logout) { height:34px; min-height:34px; padding:4px 8px; font-size:12px; }
.frame nav.tabs .tab-label { display:inline-flex; align-items:center; justify-content:center; gap:7px; max-width:100%; }
.frame nav.tabs .tab-emblem { flex:none; width:17px; height:17px; }
.frame nav.tabs .t[data-view=pays] { color:var(--country-accent); }
.frame nav.tabs .t[data-view=type] { color:var(--type-accent); }
.frame[data-catalog-view=favs] #cards-slot-shared { min-height:calc(100svh - 220px); }
.frame .recipe-header-details .favorite-controls { grid-template-rows:repeat(2,36px); grid-template-columns:repeat(3,minmax(0,1fr)); grid-auto-flow:column; grid-auto-columns:minmax(64px,1fr); }
.frame .recipe-header-details .favorite-toggle { min-width:0; min-height:36px; height:36px; padding:3px 6px; }
.frame .recipe-header-details .recipe-avoidances { display:flex; flex-direction:column; align-items:stretch; min-height:0; max-height:none; padding:7px; gap:5px; overflow:visible; }
.frame .recipe-avoidances-heading { font-size:11px; line-height:16px; font-weight:600; }
.frame .recipe-avoidance-list { grid-template-rows:none; grid-auto-flow:row; grid-template-columns:repeat(2,minmax(0,1fr)); align-content:start; gap:4px; overflow:visible; }
.frame .recipe-avoidance-person { min-height:36px; height:auto; padding:4px 6px; align-items:center; flex-wrap:wrap; gap:2px 5px; }
.frame .recipe-avoidance-icons { display:inline; font-size:11px; line-height:1.35; }
.frame .recipe-avoidance-ingredient + .recipe-avoidance-ingredient::before { content:', '; }
.frame .recipe-rendezvous-button { width:44px; min-width:44px; height:44px; padding:5px; color:var(--ink-soft); border-color:var(--line); background:var(--card); }
.frame .recipe-rendezvous-button .reunion-icon { width:32px; height:32px; }
.frame .shopping-keyboard .kb-all { display:flex; align-items:center; justify-content:center; gap:2px; padding:2px; }
.frame .shopping-keyboard .kb-all .visibility-eye { width:17px; height:17px; }
.frame .shopping-keyboard .kb-all .visibility-subject { width:21px; height:21px; }
.frame .shopping-panel .shopping-clear.is-confirming { color:var(--danger); border-color:var(--danger); background:var(--card); }
.frame .shopping-panel .shopping-clear.is-confirming .kb-context-label { position:static; width:auto; height:auto; clip-path:none; white-space:normal; font-size:12px; line-height:1.1; }
.frame .unified-selector .shopping-item { position:relative; border:1px solid transparent; padding:6px 8px; transition:none; }
.frame .unified-selector .shopping-item.is-bought { opacity:1; border-color:#789473; border-radius:10px; background:#e2ebd9; box-shadow:inset 0 0 0 2px color-mix(in srgb,#fff 45%,transparent); color:#3e583b; }
.frame .shopping-item.is-bought::after { content:''; position:absolute; left:40px; right:9px; top:50%; border-top:1.5px solid #56734e; pointer-events:none; }
.frame .shopping-item.is-bought :is(.shopping-name,.shopping-quantity,.shopping-remark-text) { text-decoration:none; opacity:1; }
.frame .shopping-item.is-bought input { accent-color:#56734e; }
html[data-display=paper] .frame .shopping-item.is-bought { background:#edf3e8; border-color:#56734e; }
@media(max-width:699px) {
 .frame > header { padding:5px 16px; }
 .frame > header .title { font-size:clamp(17px,5.1vw,32px); letter-spacing:.025em; white-space:nowrap!important; }
 .frame .site-meta-row { margin-top:3px; flex-wrap:nowrap; gap:5px; }
 .frame .site-meta { flex:1 1 0; }
 .frame .site-meta .sub,.frame .site-meta .date { font-size:9px; letter-spacing:0; }
 .frame .site-header-actions { gap:4px; }
 .frame .site-header-actions .display-mode-toggle { min-width:0; padding:4px 6px; }
 .frame .site-access { min-width:70px; }
 .frame .site-login-form { width:70px; }
 .frame nav.tabs .tab-label { gap:3px; font-size:11px; letter-spacing:0; }
 .frame nav.tabs .tab-emblem { width:11px; height:11px; }
 .frame .recipe-header-details .favorite-controls { grid-auto-columns:minmax(55px,1fr); }
 .frame .recipe-avoidance-list { grid-template-columns:1fr; }
}
@media(max-width:380px) {
 .frame nav.tabs .tab-label { gap:2px; font-size:10px; }
 .frame nav.tabs .tab-emblem { width:9px; height:9px; }
 .frame .site-header-actions :is(.display-mode-toggle,.site-logout) { font-size:10px; }
 .frame .shopping-keyboard .kb-all .visibility-eye { width:13px; height:13px; }
 .frame .shopping-keyboard .kb-all .visibility-subject { width:17px; height:17px; }
}
/* Planning: compact shared day navigation, discreet meeting seals and a single editor. */
.frame .planning-week-navigation { padding:0 12px 7px; gap:8px; }
.frame .planning-days-navigation { display:grid; grid-template-columns:22px 22px minmax(0,1fr) 22px 22px; align-items:stretch; gap:0; margin:0 12px; }
.frame .planning-panel .planning-days-navigation > button { display:grid;place-items:center;min-width:0;width:22px;min-height:32px;padding:0;border:0;border-radius:0;background:var(--paper);color:var(--ink-soft);font-size:21px;line-height:1;box-shadow:none; }
.frame .planning-panel .planning-days-navigation > button:focus-visible { outline:2px solid var(--rose);outline-offset:-2px; }
.frame .planning-panel .planning-days-navigation .planning-availability-days,.frame .planning-panel .planning-days-navigation .planning-shared-days { width:100%;margin:0;border:0;border-radius:0;overflow:visible; }
.frame .planning-panel .planning-days-navigation .planning-day-tab { position:relative;flex-direction:row;gap:3px;min-height:32px;height:32px;padding:3px 1px;border:0;background:var(--paper);font-size:12px;line-height:1;box-shadow:none; }
.frame .planning-panel .planning-days-navigation .planning-day-tab[aria-current=date],.frame .planning-panel .planning-days-navigation .planning-day-tab[aria-pressed=true] { border:0;background:var(--paper);color:var(--ink);box-shadow:none; }
.frame .planning-panel .planning-days-navigation .planning-day-date { min-width:22px;height:22px;font-size:11px; }
.frame .planning-panel .planning-days-navigation .planning-day-tab[aria-current=date] .planning-day-date { color:var(--rose);border-color:var(--rose); }
.frame .planning-panel .planning-shared-days .planning-day-tab[aria-pressed=true]::after { content:'';position:absolute;bottom:0;left:10%;right:10%;height:2px;border-radius:2px;background:var(--rose);box-shadow:0 0 5px var(--rose),0 0 11px color-mix(in srgb,var(--rose) 55%,transparent); }
.frame .planning-availability .planning-common-host { padding-inline:56px; }
.frame .planning-day-cell { background:var(--paper); }
.frame .planning-availability-slot { position:relative;display:grid;min-width:0;min-height:0;margin:0; }
.frame .planning-panel .planning-availability-column .planning-availability-slot .planning-common-slot { grid-area:1 / 1; width:100%;height:auto;min-height:0; }
.frame .planning-panel .planning-availability-column .planning-common-slot.is-common.is-past { border-color:#8cab8e;background:#bcd5bce8;color:#355e3f; }
html[data-display=paper] .frame .planning-panel .planning-availability-column .planning-common-slot.is-common.is-past { border-color:#8cab8e;background:#c6dcc4;color:#355e3f; }
.frame .planning-panel .planning-common-slot.is-past .planning-bubble-hours,.frame .planning-panel .planning-common-slot:not(.is-common) .planning-bubble-hours { display:none; }
.frame .planning-slot-rendezvous { position:absolute;z-index:3;top:5px;left:3px;right:3px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;justify-items:center;gap:3px 2px;pointer-events:none; }
.frame .planning-panel .planning-slot-rendezvous .planning-rendezvous-card { position:relative;display:grid;place-items:center;pointer-events:auto;width:25px;height:25px;min-width:0;min-height:25px;margin:0;padding:2px;border:1px solid #64866a;border-radius:50%;background:#edf4e9;color:#355e3f;box-shadow:0 1px 3px #355e3f26; }
.frame .planning-slot-rendezvous .planning-reunion-icon { width:20px;height:20px; }
.frame .planning-slot-rendezvous:empty { display:none; }
.frame .planning-person-action { box-sizing:border-box;flex:none;width:28px;height:28px;border:1px solid var(--line);border-radius:50%;background:var(--paper); }
.frame .planning-panel .planning-person-action .planning-person-edit { display:grid;place-items:center;width:26px;height:26px;min-width:26px;min-height:26px;padding:4px;border:0;border-radius:50%;background:transparent;color:var(--ink); }
.frame .planning-panel .planning-person-edit svg { display:block;width:18px;height:18px; }
.frame .planning-panel .planning-person-edit[aria-pressed=true] { color:var(--rose); }
.frame .planning-panel .planning-editor-toolbar { justify-content:center;padding:0 0 8px; }
.frame .planning-panel .planning-person-cancel { font-size:11px;min-height:26px;padding:2px 7px;border:0;color:var(--ink-soft);background:transparent; }
.frame .planning-panel .planning-person-editor { padding:0 10px 12px; }
.frame .planning-panel .planning-add,.frame .planning-panel .planning-slot,.frame .planning-panel .planning-saved-slot { justify-content:center;gap:10px;min-height:42px; }
.frame .planning-panel .planning-add .planning-field,.frame .planning-panel .planning-add .planning-field:first-child { flex:0 1 auto; }
.frame .planning-panel .planning-add .planning-clock-parts { justify-content:center;gap:1px; }
.frame .planning-panel .planning-add .planning-day { width:100px; }
.frame .planning-panel .planning-add .planning-clock select { width:35px;min-width:35px;text-align:center; }
.frame .planning-panel .planning-add .planning-person-add { flex:none;display:grid;place-items:center;width:28px;min-width:28px;height:28px;min-height:28px;margin-left:1px;padding:0;border:1px solid var(--line);background:var(--paper);color:var(--ink);font-size:20px; }
.frame .planning-slot-day-label { flex:0 1 100px;font-size:12px; }
.frame .planning-slot-time-label { flex:0 0 72px;text-align:center;font-size:12px;font-variant-numeric:tabular-nums; }
.frame .planning-panel .planning-saved-slot:after { width:28px; }
.frame .planning-panel .planning-slot-delete { flex:none;min-width:28px;width:28px;padding:0;border:0; }
.frame .planning-panel .planning-slot-delete.is-confirming { width:auto;min-width:74px;padding:2px 6px;border:1px solid var(--rose);border-radius:5px;background:var(--paper);font-size:11px; }
.frame .planning-panel .planning-slot.is-pending-delete { border-radius:5px;background:color-mix(in srgb,var(--rose) 10%,var(--paper)); }
@media(max-width:650px) {
 .frame .planning-days-navigation { grid-template-columns:18px 18px minmax(0,1fr) 18px 18px;margin-inline:6px; }
 .frame .planning-panel .planning-days-navigation > button { width:18px;font-size:19px; }
 .frame .planning-panel .planning-days-navigation .planning-day-tab { gap:1px;font-size:10px; }
 .frame .planning-panel .planning-days-navigation .planning-day-date { min-width:18px;height:18px;font-size:10px; }
 .frame .planning-availability .planning-common-host { padding-inline:42px; }
 .frame .planning-panel .planning-schedule .planning-shared-day-short { font-size:9px; }
 .frame .planning-panel .planning-schedule .planning-day-date { min-width:16px;height:16px;font-size:9px; }
 .frame .planning-panel .planning-add,.frame .planning-panel .planning-slot,.frame .planning-panel .planning-saved-slot { gap:5px; }
 .frame .planning-panel .planning-add .planning-day { width:77px; }
 .frame .planning-panel .planning-add .planning-clock select { width:29px;min-width:29px;font-size:11px; }
 .frame .planning-slot-day-label { flex-basis:77px;font-size:11px; }
 .frame .planning-slot-time-label { flex-basis:60px;font-size:11px; }
}
.frame nav.tabs.tabs-private .t[data-view=courses] .shopping-search-summary { display:inline!important; }
.frame .unified-selector .shopping-item.is-bought .shopping-check { opacity:1; }
.frame .planning-panel .planning-days-navigation .planning-shared-days { grid-template-columns:repeat(7,minmax(0,1fr)); }
.frame .planning-shared-days .planning-day-corner { display:none; }
@media(max-width:699px) {
 .frame nav.tabs.tabs-public { grid-template-columns:.82fr 1.35fr .82fr .82fr 1.19fr; }
 .frame nav.tabs.tabs-private .private-tab > .t .tab-label { font-size:10px; gap:2px; }
 .frame nav.tabs.tabs-private .tab-emblem { width:9px; height:9px; }
 .frame nav.tabs.tabs-private .private-tab > .t { padding-inline:0!important; }
}
@media(max-width:380px) {
 .frame nav.tabs.tabs-private .private-tab > .t .tab-label { font-size:9px; gap:1px; }
 .frame nav.tabs.tabs-private .tab-emblem { width:8px; height:8px; }
}
/* Keep both digits legible in compact hour/minute selectors. */
.frame .planning-panel .planning-add .planning-clock select { appearance:none; text-align:center; text-align-last:center; padding:2px 1px; cursor:pointer; }
.frame[data-catalog-view=favs] .view[data-view=favs] .person-favorites-toolbar { margin:0; padding:0; min-height:0; }
@media(max-width:699px) {
 .frame .shopping-keyboard .kb-all { gap:1px; }
 .frame .shopping-keyboard .kb-all .visibility-eye { width:26%; flex:0 1 26%; height:16px; }
 .frame .shopping-keyboard .kb-all .visibility-subject { width:28%; flex:0 1 28%; height:19px; }
}
.frame .planning-panel .planning-add .planning-clock-separator { font-size:12px; line-height:1; }

/* Masthead shares the keyboard's exact content edges. */
.frame > header { padding-inline:20px; }
.frame .site-header-content { max-width:960px; margin-inline:auto; }
.frame > header .title { display:flex; justify-content:space-between; align-items:baseline; width:100%; gap:0; font-size:clamp(20px,4.3vw,58px); letter-spacing:0; white-space:nowrap!important; }
.frame > header .masthead-letter { display:block; flex:0 0 auto; }
.frame .site-meta-row { width:100%; flex-wrap:nowrap; }
.frame .site-meta { text-align:left; }
.frame .site-header-actions { justify-content:flex-end; margin-left:auto; }
.frame .unified-selector .shopping-clear svg { display:block; width:24px; height:24px; stroke-width:2; }
.frame .unified-selector .shopping-clear .kb-context-label,
.frame .unified-selector .shopping-clear.is-confirming .kb-context-label { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.frame .shopping-keyboard .kb-all :is(.visibility-eye,.visibility-subject),
.frame nav.tabs .t[data-view=courses] .tab-emblem { stroke-width:2; }
.frame .shopping-panel .shopping-clear.is-confirming { box-shadow:inset 0 0 0 1px var(--danger); }
@media(max-width:699px) {
 .frame > header { padding-inline:20px; }
 .frame > header .title { font-size:clamp(16px,4.5vw,30px); letter-spacing:0; }
}
/* Recipe preferences share ten aligned places and a consistent metadata line. */
.frame .recipe-header-details { gap:12px; grid-template-rows:auto auto auto auto; }
.frame .recipe-header-details :is(.rmp-favorites,.recipe-avoidances) {
  display:grid; grid-template-columns:22px minmax(0,1fr) 36px; align-items:center;
  gap:6px; padding:7px; min-height:100px; height:auto; max-height:none; overflow:visible;
}
.frame .recipe-header-details .favorite-controls,
.frame .recipe-avoidance-list {
  grid-column:2; grid-row:1; display:grid; grid-template-columns:repeat(5,minmax(0,1fr));
  grid-template-rows:repeat(2,40px); grid-auto-flow:row; grid-auto-columns:auto;
  grid-auto-rows:40px; align-content:start; align-self:center; gap:4px; padding:0;
  min-width:0; overflow:visible;
}
.frame .recipe-header-details .favorite-toggle,
.frame .recipe-avoidance-person {
  box-sizing:border-box; min-width:0; width:100%; min-height:40px; height:40px;
  padding:3px 4px; margin:0; border-radius:5px; overflow:hidden;
}
.frame .recipe-header-details .favorite-toggle { font-size:11px; }
.frame .recipe-header-details .favorite-name-label { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.frame .recipe-avoidances-heading { grid-column:1; grid-row:1; margin:0; color:#b9353e; }
.frame .recipe-avoidances-heading .recipe-bemol-icon { width:22px; height:22px; fill:currentColor; stroke:none; }
.frame .recipe-avoidance-person { display:flex; flex-direction:column; flex-wrap:nowrap; justify-content:center; align-items:flex-start; gap:2px; }
.frame .recipe-avoidance-name { display:block; max-width:100%; font-size:11px; line-height:13px; overflow:hidden; text-overflow:ellipsis; }
.frame .recipe-avoidance-icons { display:block; width:100%; font-size:10px; line-height:12px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.frame .recipe-header-details .favorite-header-actions { grid-column:3; grid-row:1; align-self:center; }
.frame .reading-page :is(.share-btn,.recipe-rendezvous-button,.recipe-equipment-item) {
  box-sizing:border-box; min-height:34px; height:34px; min-width:34px; width:34px;
  padding:6px; border-radius:5px; color:var(--ink-soft); border:1px solid var(--line); background:var(--card);
}
.frame .reading-page :is(.recipe-rendezvous-button,.recipe-equipment-item) svg {
  display:block; width:20px; height:20px; fill:none; color:inherit; stroke:currentColor;
  stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round;
}
.frame .reading-page .share-btn svg { width:18px; height:18px; }
.frame .allergy-persons.needs-person .allergy-person .mono { box-shadow:0 0 0 3px color-mix(in srgb,var(--danger) 22%,transparent); }
html[data-display="paper"] .frame .recipe-avoidances-heading .recipe-bemol-icon { fill:#b9353e; stroke:none; }
html[data-display="paper"] .frame .reading-page :is(.recipe-rendezvous-button,.recipe-equipment-item) { background:#fff; color:var(--ink); }
@media(max-width:699px) {
  .frame .recipe-header-details :is(.rmp-favorites,.recipe-avoidances) { grid-template-columns:18px minmax(0,1fr) 30px; gap:4px; padding:6px; min-height:98px; }
  .frame .recipe-header-details .favorite-toggle { padding:3px 1px; font-size:9px; }
  .frame .recipe-avoidance-person { padding:3px 2px; }
  .frame .recipe-avoidance-name { font-size:9px; }
  .frame .recipe-avoidance-icons { font-size:8px; }
  .frame .recipe-avoidances-heading .recipe-bemol-icon { width:18px; height:20px; }
  .frame .recipe-header-details .favorite-header-actions { width:30px; }
  .frame .recipe-header-details .favorite-header-actions .favorite-action { width:30px; min-width:30px; flex-basis:30px; padding:5px; }
}
/* Aligned weekly headers, warm meeting invitations and immediate draft feedback. */
.frame .planning-panel { --planning-table-edge:12px; --planning-arrow-width:30px; }
.frame .planning-week-scroll { border:0; border-radius:0; background:transparent; overflow:visible; }
.frame .planning-week-canvas { min-width:0; }
.frame .planning-days-navigation { grid-template-columns:var(--planning-arrow-width) 26px minmax(0,1fr) 26px var(--planning-arrow-width); grid-template-rows:30px 34px; margin:10px var(--planning-table-edge) 0; padding:0; border:1px solid var(--line); border-bottom:0; border-radius:9px 9px 0 0; background:var(--paper); overflow:hidden; }
.frame .planning-days-navigation .planning-week-label { grid-column:3; grid-row:1; display:flex; align-items:center; justify-content:center; margin:0; padding:0 4px; color:var(--ink); font-size:12px; font-variant-numeric:tabular-nums; white-space:nowrap; }
.frame .planning-panel .planning-days-navigation > .planning-week-previous,.frame .planning-panel .planning-days-navigation > .planning-week-next { grid-row:1 / 3; width:var(--planning-arrow-width); height:64px; min-height:64px; font-size:30px; color:var(--ink); background:var(--paper-deep); }
.frame .planning-days-navigation > .planning-week-previous { grid-column:1; border-right:1px solid var(--line-soft); }
.frame .planning-days-navigation > .planning-week-next { grid-column:5; border-left:1px solid var(--line-soft); }
.frame .planning-panel .planning-days-navigation > .planning-week-current { grid-row:1; align-self:center; justify-self:center; width:12px; height:12px; min-height:12px; border:1.5px solid var(--rose); border-radius:50%; background:transparent; font-size:0; }
.frame .planning-days-navigation > .planning-week-current-previous { grid-column:2; }
.frame .planning-days-navigation > .planning-week-current-next { grid-column:4; }
.frame .planning-panel .planning-days-navigation > .planning-week-current[aria-pressed=true] { background:var(--rose); box-shadow:0 0 0 3px color-mix(in srgb,var(--rose) 12%,transparent); }
.frame .planning-panel .planning-days-navigation > .planning-week-current::before { content:''; position:absolute; width:26px; height:28px; }
.frame .planning-panel .planning-days-navigation .planning-availability-days,.frame .planning-panel .planning-days-navigation .planning-shared-days { grid-column:2 / 5; grid-row:2; align-self:stretch; border-top:1px solid var(--line-soft); }
.frame .planning-panel .planning-days-navigation .planning-day-tab { min-height:34px; height:34px; background:transparent; }
.frame .planning-availability .planning-common-host,.frame .planning-week-host { box-sizing:border-box; padding:0 calc(var(--planning-table-edge) + var(--planning-arrow-width) + 1px) 16px; }
.frame .planning-calendar-bands,.frame .planning-availability-grid { border-radius:0 0 8px 8px; }
.frame .planning-panel .planning-slot-rendezvous .planning-rendezvous-card { width:27px; height:27px; min-height:27px; border:1.5px solid #b87422; border-radius:10px; color:#764215; background:#ffe4a1; box-shadow:0 2px 5px #9a642938,0 0 0 2px #fff5d8b3; transform:rotate(-4deg); }
.frame .planning-panel .planning-slot-rendezvous .planning-rendezvous-card:hover,.frame .planning-panel .planning-slot-rendezvous .planning-rendezvous-card.is-meeting-open { color:#6b3612; background:#ffcf6c; box-shadow:0 0 0 3px #ffe9a8,0 0 18px #ffbf49ad; transform:rotate(0deg) scale(1.08); }
.frame .planning-slot-rendezvous .planning-reunion-icon { width:20px; height:20px; }
.frame .planning-rendezvous-dialog { position:fixed; inset:auto; margin:0; width:min(680px,calc(100vw - 24px)); max-height:calc(100dvh - 24px); padding:26px; border:2px solid #d4a258; border-radius:20px; background:var(--paper); box-shadow:0 0 0 5px #fff0b866,0 16px 65px #44321040,0 0 60px #ffd47766; }
.frame .planning-rendezvous-dialog::backdrop { background:#40322329; backdrop-filter:blur(1px); }
.frame .planning-rendezvous-header { gap:14px; margin-bottom:22px; }
.frame .planning-rendezvous-header > .planning-reunion-icon { width:42px; height:42px; box-sizing:border-box; padding:7px; border:1px solid #dbb467; border-radius:13px; color:#8b531f; background:#ffebba; }
.frame .planning-rendezvous-title { font-size:20px; line-height:1.35; }
.frame .planning-rendezvous-detail { gap:18px; }
.frame .planning-rendezvous-people { display:flex; flex-wrap:wrap; align-items:flex-start; justify-content:center; gap:14px 20px; margin:2px 0 8px; }
.frame .planning-rendezvous-person { display:flex; flex-direction:column; align-items:center; gap:6px; width:68px; }
.frame .planning-rendezvous-person .mono { display:grid; place-items:center; box-sizing:border-box; width:54px; height:54px; border:2px solid var(--planning-person-color); border-radius:50%; font-size:24px; color:var(--planning-person-color); background:var(--planning-person-fill); box-shadow:0 0 0 4px color-mix(in srgb,var(--planning-person-fill) 65%,transparent); }
.frame .planning-rendezvous-person .lbl { font-size:12px; line-height:1.35; text-align:center; overflow-wrap:anywhere; }
.frame .planning-rendezvous-actions { display:flex; justify-content:center; flex-wrap:wrap; gap:8px; }
.frame .planning-rendezvous-recipe { gap:16px; padding:12px 0; }
.frame .planning-rendezvous-photo { width:72px; height:72px; border-radius:12px; }
.frame .planning-rendezvous-recipe-name { font-size:16px; }
.frame .planning-panel .planning-rendezvous-save { border:1px solid #bd914a; border-radius:9px; color:#744b1f; background:#ffe9b8; }
.frame .planning-panel .planning-person-edit[aria-pressed=true] { color:#42694c; }
.frame .planning-panel .planning-slot.is-new,.frame .planning-panel .planning-saved-slot.is-new { position:relative; border-radius:6px; background:#eaf1df; box-shadow:inset 3px 0 #83a365; }
html[data-display=paper] .frame .planning-rendezvous-dialog { background:#fff; }
html[data-display=paper] .frame .planning-panel .planning-slot.is-new,html[data-display=paper] .frame .planning-panel .planning-saved-slot.is-new { background:#eff5e8; }
@media(prefers-reduced-motion:no-preference) {
 .frame .planning-panel .planning-rendezvous-card { transition:background .18s ease,box-shadow .18s ease,transform .18s ease; }
 .frame .planning-panel .planning-slot.is-new { animation:planning-new-slot .4s ease-out; }
 @keyframes planning-new-slot { from { opacity:.35; transform:translateY(-6px); } to { opacity:1; transform:translateY(0); } }
}
@media(max-width:650px) {
 .frame .planning-panel { --planning-table-edge:6px; --planning-arrow-width:22px; }
 .frame .planning-days-navigation { grid-template-columns:var(--planning-arrow-width) 22px minmax(0,1fr) 22px var(--planning-arrow-width); }
 .frame .planning-days-navigation .planning-week-label { font-size:11px; }
 .frame .planning-panel .planning-days-navigation .planning-day-tab { flex-direction:column; gap:2px; font-size:9px; }
 .frame .planning-availability-grid,.frame .planning-availability-days { grid-template-columns:24px repeat(7,minmax(0,1fr)); }
 .frame .planning-panel .planning-slot-rendezvous .planning-rendezvous-card { width:23px; height:23px; min-height:23px; border-radius:8px; padding:2px; }
 .frame .planning-slot-rendezvous { left:0; right:0; grid-template-columns:repeat(auto-fit,minmax(23px,1fr)); gap:4px 1px; }
 .frame .planning-slot-rendezvous .planning-reunion-icon { width:17px; height:17px; }
 .frame .planning-rendezvous-dialog { padding:18px; border-radius:16px; }
 .frame .planning-rendezvous-title { font-size:16px; }
 .frame .planning-rendezvous-photo { width:58px; height:58px; }
 .frame .planning-rendezvous-recipe { gap:10px; }
 .frame .planning-rendezvous-recipe-name { font-size:14px; }
 .frame .planning-rendezvous-people { gap:12px; }
 .frame .planning-rendezvous-person { width:58px; }
}
.frame nav.tabs .t[data-view=planning] .tab-emblem { stroke-width:2; }
/* Match the availability grid's inner border exactly and enlarge reset-circle hit areas. */
.frame .planning-panel .planning-days-navigation .planning-availability-days { border-left:1px solid transparent; border-right:1px solid transparent; }
.frame .planning-panel .planning-days-navigation > .planning-week-current { position:relative; }
.frame .planning-panel .planning-days-navigation > .planning-week-current::before { top:50%; left:50%; transform:translate(-50%,-50%); }

/* Keep the add form and saved/draft rows on the same four columns at narrow widths. */
@media(max-width:380px) {
 .frame .planning-panel .planning-add,.frame .planning-panel .planning-slot,.frame .planning-panel .planning-saved-slot { display:grid; grid-template-columns:minmax(0,1fr) 44px 44px 24px; align-items:center; gap:3px; }
 .frame .planning-panel .planning-add .planning-day { box-sizing:border-box; width:100%; min-width:0; }
 .frame .planning-panel .planning-add .planning-clock-parts { gap:0; }
 .frame .planning-panel .planning-add .planning-clock select { box-sizing:border-box; width:20px; min-width:20px; padding-inline:0; }
 .frame .planning-panel .planning-slot-day-label,.frame .planning-panel .planning-slot-time-label { min-width:0; white-space:nowrap; }
 .frame .planning-panel .planning-add .planning-person-add,.frame .planning-panel .planning-slot-delete,.frame .planning-panel .planning-saved-slot::after { box-sizing:border-box; width:24px; min-width:24px; margin-left:0; }
 .frame .planning-panel .planning-slot-delete.is-confirming { width:24px; min-width:24px; padding:0; font-size:0; }
 .frame .planning-panel .planning-slot-delete.is-confirming::before { content:'✓'; font-size:16px; }
}

/* Stable recipe transitions and compact, permanently reserved preferences. */
.frame .navigation-status.is-loading {
  position:fixed; z-index:40; right:20px; bottom:20px; max-width:calc(100vw - 40px);
  margin:0; padding:9px 14px; border:1px solid var(--line); border-radius:8px;
  background:var(--card); box-shadow:0 3px 14px #302c241a; pointer-events:none;
}
.frame .recipe-overview { align-items:start; }
.frame .reading-header .photo { height:360px; min-height:360px; max-height:360px; align-self:start; }
.frame .recipe-header-details {
  height:360px; min-height:360px; grid-template-rows:auto minmax(0,1fr) 80px 80px;
  align-content:start; align-items:start; gap:10px;
}
.frame .recipe-details-main { align-content:start; align-self:start; }
.frame .recipe-title-actions { display:inline-flex; gap:5px; margin-left:8px; vertical-align:middle; white-space:nowrap; }
.frame .recipe-title-actions .share-btn { margin-left:0; }
.frame .recipe-title-actions .recipe-rendezvous-button[hidden] { display:inline-flex!important; visibility:hidden; }
.frame .recipe-title-actions .recipe-rendezvous-button { align-items:center; justify-content:center; }
.frame .recipe-header-details :is(.rmp-favorites,.recipe-avoidances) {
  position:relative; box-sizing:border-box; width:100%; margin:0; height:80px; min-height:80px; max-height:80px;
  padding:6px; gap:5px; align-self:stretch; grid-template-columns:20px minmax(0,1fr) 30px;
}
.frame .recipe-header-details :is(.rmp-favorites,.recipe-avoidances)[hidden] {
  display:grid!important; visibility:hidden; pointer-events:none;
}
.frame .recipe-header-details .favorite-controls,.frame .recipe-avoidance-list {
  grid-template-rows:repeat(2,30px); grid-auto-rows:30px; gap:4px;
}
.frame .recipe-header-details .favorite-toggle,.frame .recipe-avoidance-person {
  min-height:30px; height:30px; padding:2px 3px; border-radius:4px;
}
.frame .recipe-avoidance-person { gap:0; }
.frame .recipe-avoidance-name { font-size:10px; line-height:12px; }
.frame .recipe-avoidance-icons { font-size:9px; line-height:11px; }
.frame .recipe-header-details .favorite-header-actions { width:30px; }
.frame .recipe-header-details .favorite-header-actions .favorite-action {
  width:30px; min-width:30px; flex-basis:30px; height:30px; min-height:30px; padding:5px;
}
.frame .recipe-header-details :is(.favorite-summary,.favorite-persistence):not([hidden]) {
  position:absolute; top:100%; left:0; right:0; z-index:2; padding:5px 7px; margin:2px 0;
  border:1px solid var(--line); border-radius:4px; background:var(--card);
}
/* The cart heading spans the keyboard; its reading column stays centered. */
.frame .unified-selector .shopping-category[data-shopping-category=list] { max-width:960px; }
.frame .unified-selector .shopping-category .shopping-items { max-width:540px; margin:0 auto; }
@media(max-width:699px) {
  .frame .reading-header .photo { height:220px; min-height:220px; max-height:220px; aspect-ratio:auto; }
  .frame .recipe-header-details { height:416px; min-height:416px; gap:8px; }
  .frame .recipe-header-details :is(.rmp-favorites,.recipe-avoidances) { grid-template-columns:18px minmax(0,1fr) 30px; gap:4px; }
  .frame .recipe-avoidance-name { font-size:9px; }
  .frame .recipe-avoidance-icons { font-size:8px; }
}

/* Planning tables share their own aligned weekly headers and a continuous timetable. */
.frame .planning-panel { --planning-axis-width:40px; --planning-table-inset:calc(var(--planning-table-edge) + var(--planning-arrow-width) + 1px); }
.frame .planning-days-navigation { margin:10px var(--planning-table-inset) 0; grid-template-rows:34px 34px; }
.frame .planning-panel .planning-days-navigation > .planning-week-previous,.frame .planning-panel .planning-days-navigation > .planning-week-next { grid-row:1; height:34px; min-height:34px; background:transparent; }
.frame .planning-panel .planning-days-navigation .planning-availability-days,.frame .planning-panel .planning-days-navigation .planning-shared-days { grid-column:1 / 6; grid-row:2; grid-template-columns:var(--planning-axis-width) repeat(7,minmax(0,1fr)); border-left:0; border-right:0; }
.frame .planning-shared-days .planning-day-corner { display:block; }
.frame .planning-availability-grid { grid-template-columns:var(--planning-axis-width) repeat(7,minmax(0,1fr)); }
.frame .planning-calendar-bands { padding:0; background:var(--paper); }
.frame .planning-availability-grid { background:var(--paper); }
.frame .planning-calendar-axis-row,.frame .planning-calendar-person-row { grid-template-columns:var(--planning-axis-width) minmax(0,1fr); margin:0; }
.frame .planning-calendar-axis-row { height:28px; }
.frame .planning-calendar-axis { height:100%; background:repeating-linear-gradient(to right,var(--line-soft) 0,var(--line-soft) 1px,transparent 1px,transparent calc(100% / 16)); }
.frame .planning-calendar-hour { top:5px; padding:0 2px; background:var(--paper); }
.frame .planning-calendar-track,html[data-display=paper] .frame .planning-calendar-track { border:0; border-radius:0; background:transparent; }
.frame .planning-calendar-gridline { border-left:1px solid var(--line-soft); }
.frame .planning-calendar-gridline.is-half-hour { display:none; }
.frame .planning-calendar-identity { padding:0 2px; gap:2px; min-height:0; }
.frame .planning-calendar-name { max-width:100%; font-size:8px; line-height:10px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.frame .planning-panel .planning-calendar-event,.frame .planning-panel .planning-calendar-event.is-unavailability,html[data-display=paper] .frame .planning-panel .planning-calendar-event { border:1px solid var(--planning-person-color); border-radius:3px; color:var(--planning-person-color); background:var(--planning-person-fill); }
.frame .planning-panel .planning-availability-column .planning-common-slot.is-common,html[data-display=paper] .frame .planning-panel .planning-availability-column .planning-common-slot.is-common { border-color:#99b6cd; color:#315877; background:#dce9f3; }
.frame .planning-panel .planning-availability-column .planning-common-slot.is-common:hover,html[data-display=paper] .frame .planning-panel .planning-availability-column .planning-common-slot.is-common:hover { background:#cbddea; }
.frame .planning-panel .planning-availability-column .planning-common-slot.is-common.is-past,html[data-display=paper] .frame .planning-panel .planning-availability-column .planning-common-slot.is-common.is-past { border-color:#aabac7; color:#627789; background:#d7e0e8; }
.frame .planning-panel .planning-slot-rendezvous .planning-rendezvous-card,.frame .planning-panel .planning-slot-rendezvous .planning-rendezvous-card:hover,.frame .planning-panel .planning-slot-rendezvous .planning-rendezvous-card.is-meeting-open { border:1px solid var(--line); border-radius:5px; color:var(--ink); background:var(--paper); box-shadow:none; transform:none; transition:none; animation:none; }
.frame .planning-panel .planning-slot-rendezvous .planning-rendezvous-card:hover,.frame .planning-panel .planning-slot-rendezvous .planning-rendezvous-card.is-meeting-open { border-color:var(--ink-soft); background:var(--card); }
.frame .planning-panel .planning-rendezvous-card .planning-reunion-icon { transform:none; transition:none; animation:none; }
.frame .planning-rendezvous { padding:0 var(--planning-table-inset) 16px; }
.frame .planning-panel .planning-rendezvous-all { display:flex; align-items:center; justify-content:center; gap:10px; box-sizing:border-box; width:100%; min-height:42px; padding:7px 10px; border:1px solid var(--line); border-radius:6px; background:var(--paper); color:var(--ink); font-size:13px; font-weight:400; }
.frame .planning-rendezvous-all .planning-reunion-icon { width:24px; height:24px; }
.frame .planning-rendezvous-list:not(:empty) { margin-top:10px; }
.frame .planning-rendezvous-dialog { border:1px solid var(--line); border-radius:12px; box-shadow:0 12px 48px #302a2633; }
.frame .planning-rendezvous-header > .planning-reunion-icon { padding:5px; border:0; border-radius:0; background:transparent; color:var(--ink); }
.frame .planning-panel .planning-rendezvous-back { display:grid; place-items:center; flex:none; width:26px; min-width:26px; min-height:32px; padding:0; border:0; background:transparent; color:var(--ink); font-size:28px; }
.frame .planning-rendezvous-dialog.is-list .planning-rendezvous-detail { gap:0; }
.frame .planning-rendezvous-entry { padding:18px 0; border-top:1px solid var(--line-soft); }
.frame .planning-rendezvous-entry:first-child { padding-top:0; border-top:0; }
.frame .planning-rendezvous-entry-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:14px; }
.frame .planning-rendezvous-entry h4 { margin:0; font-size:15px; line-height:1.4; font-weight:500; }
.frame .planning-panel .planning-rendezvous-inspect { flex:none; min-height:32px; padding:4px 8px; border:1px solid var(--line); border-radius:5px; background:var(--paper); color:var(--ink); font-size:12px; }
.frame .planning-rendezvous-entry .planning-rendezvous-people { justify-content:flex-start; gap:10px 14px; margin-bottom:14px; }
.frame .planning-rendezvous-entry .planning-rendezvous-person { width:58px; }
.frame .planning-rendezvous-entry .planning-rendezvous-person .mono { width:38px; height:38px; font-size:19px; box-shadow:none; }
.frame .planning-rendezvous-entry-dishes { list-style:none; display:grid; gap:9px; margin:0; padding:0; }
.frame .planning-rendezvous-entry-dish { display:flex; align-items:center; gap:10px; font-size:14px; }
.frame .planning-rendezvous-entry-dish .planning-rendezvous-photo { width:42px; height:42px; border-radius:5px; }
.frame .planning-panel .planning-rendezvous-save { border-color:var(--line); color:var(--ink); background:var(--paper); }
@media(max-width:650px) {
 .frame .planning-calendar-person { width:26px; height:26px; font-size:13px; }
 .frame .planning-rendezvous-entry-heading { gap:6px; }
 .frame .planning-rendezvous-entry h4 { font-size:13px; }
 .frame .planning-rendezvous-entry-dish { font-size:12px; }
 .frame .planning-panel .planning-rendezvous-all { gap:6px; font-size:12px; }
}

/* Person selection keeps the same distinct palette as the timetable and meeting list. */
.frame .planning-panel .planning-participants .mono,.frame .planning-panel .planning-editor-people .mono,
html[data-display=paper] .frame .planning-panel .planning-participants .mono,html[data-display=paper] .frame .planning-panel .planning-editor-people .mono { color:var(--planning-person-color); border-color:var(--planning-person-color); background:var(--paper); box-shadow:none; text-decoration:none; }
.frame .planning-panel .planning-participants [aria-pressed=true] .mono,.frame .planning-panel .planning-editor-people [aria-pressed=true] .mono,
html[data-display=paper] .frame .planning-panel .planning-participants [aria-pressed=true] .mono,html[data-display=paper] .frame .planning-panel .planning-editor-people [aria-pressed=true] .mono { color:var(--planning-person-color); border-color:var(--planning-person-color); background:var(--planning-person-fill); box-shadow:none; text-decoration:none; }
.frame .planning-panel .planning-participants .lbl,.frame .planning-panel .planning-editor-people .lbl,
html[data-display=paper] .frame .planning-panel .planning-participants .lbl,html[data-display=paper] .frame .planning-panel .planning-editor-people .lbl { color:var(--planning-person-color); }
.frame .planning-panel .planning-person-edit[aria-pressed=true],html[data-display=paper] .frame .planning-panel .planning-person-edit[aria-pressed=true] { color:var(--ink); }

/* Recipe reading: square artwork and a stable title/actions/categories stack. */
.frame .reading-header .photo { width:100%; height:auto; min-height:0; max-height:none; aspect-ratio:1; align-self:start; }
.frame .reading-header .photo img { width:100%; height:100%; object-fit:cover; }
.frame .recipe-header-details { height:auto; min-height:360px; grid-template-rows:auto minmax(84px,1fr) 80px 80px; }
.frame .recipe-title-row > .title { display:block; }
.frame .recipe-details-main { display:grid; width:100%; gap:9px; }
.frame .recipe-title-actions { display:flex; align-items:center; flex-wrap:wrap; gap:5px; margin:0; white-space:normal; }
.frame .recipe-title-actions .recipe-meta-bottom { display:flex; min-width:0; border-left:1px solid var(--line); margin-left:5px; padding-left:10px; flex:1; }
.frame .recipe-title-actions .recipe-equipment { justify-content:flex-start; }
.frame .recipe-meta-top,.frame .recipe-badges { display:flex; flex-wrap:wrap; justify-content:flex-start; gap:5px; }
.frame .recipe-header-details .favorite-toggle,
.frame .recipe-header-details .favorite-action,
html[data-display=paper] .frame .recipe-header-details .favorite-toggle,
html[data-display=paper] .frame .recipe-header-details .favorite-action { border-style:solid; }
.frame .recipe-header-details .favorite-action[data-action-label=Valider],
html[data-display=paper] .frame .recipe-header-details .favorite-action[data-action-label=Valider] { background:color-mix(in srgb,var(--favorite-accent) 10%,var(--paper)); color:var(--ink); }
.frame .reading-page .reading-step .cooking-guidance,
html[data-display=paper] .frame .reading-page .reading-step .cooking-guidance { font-weight:700; }
.frame .reading-step::marker { font-size:1.3em; font-weight:800; }
.frame .reading-preparation .reading-steps { padding-left:3em; }
.frame .reading-page .reading-section-header > h2,
.frame .planning-panel .reading-section-header h2,
.frame .planning-section-header > h2,
.frame .unified-selector .shopping-category-header h2 { font-size:20px; line-height:24px; font-weight:700; }
@media(prefers-reduced-motion:no-preference) {
 .frame .favorite-action[data-action-label=Valider] svg { animation:recipe-edit-acknowledge .22s ease-out; }
 @keyframes recipe-edit-acknowledge { from { opacity:.45; } to { opacity:1; } }
}
@media(max-width:699px) {
 .frame .reading-header .photo { width:min(100%,360px); height:auto; min-height:0; max-height:none; aspect-ratio:1; margin:0 auto 16px; }
 .frame .recipe-header-details { height:auto; min-height:360px; grid-template-rows:auto minmax(84px,1fr) 80px 80px; }
 .frame .reading-page .reading-section-header > h2,
 .frame .planning-panel .reading-section-header h2,
 .frame .planning-section-header > h2,
 .frame .unified-selector .shopping-category-header h2 { font-size:18px; line-height:24px; }
}

/* Réunions: consistent weekly navigation, aligned half-hours and inline meetings. */
.frame .planning-panel { --planning-table-inset:12px; }
.frame .planning-availability .planning-common-host,.frame .planning-week-host { padding-inline:var(--planning-table-inset); }
.frame .planning-days-navigation { grid-template-columns:minmax(0,1fr) 26px 22px auto 22px 26px minmax(0,1fr); grid-template-rows:42px 36px; }
.frame .planning-days-navigation .planning-week-label { grid-column:4; grid-row:1; font-size:18px; font-weight:700; }
.frame .planning-panel .planning-days-navigation > .planning-week-previous { grid-column:2; }
.frame .planning-panel .planning-days-navigation > .planning-week-next { grid-column:6; }
.frame .planning-panel .planning-days-navigation > .planning-week-previous,.frame .planning-panel .planning-days-navigation > .planning-week-next { align-self:center; justify-self:center; width:26px; height:32px; min-height:32px; border:0; }
.frame .planning-days-navigation > .planning-week-current-previous { grid-column:3; }
.frame .planning-days-navigation > .planning-week-current-next { grid-column:5; }
.frame .planning-panel .planning-days-navigation .planning-availability-days,.frame .planning-panel .planning-days-navigation .planning-shared-days { grid-column:1 / -1; }
.frame .planning-panel .planning-shared-days .planning-day-tab[aria-pressed=true]::after { content:none; }
.frame .planning-panel .planning-day-tab:is([aria-pressed=true],[aria-current=date]) :is(.planning-shared-day-name,.planning-shared-day-short) { color:var(--rose); font-weight:700; text-shadow:0 0 7px color-mix(in srgb,var(--rose) 40%,transparent); }
.frame .planning-calendar-gridline.is-half-hour { display:block; border-left:1px dotted var(--line); }
.frame .planning-availability-line.is-half-hour { opacity:.85; border-top:1px dotted var(--line); }
.frame .planning-calendar-axis-bottom { border-top:1px solid var(--line-soft); }
.frame .planning-calendar-axis { overflow:visible; }
.frame .planning-calendar-hour { font-size:10px; white-space:nowrap; }
.frame .planning-calendar-gridline { z-index:2; pointer-events:none; }
.frame .planning-calendar-event .planning-reunion-icon { width:22px; height:22px; }
.frame .planning-panel .planning-availability-column .planning-common-slot,.frame .planning-panel .planning-availability-column .planning-common-slot:disabled,html[data-display=paper] .frame .planning-panel .planning-availability-column .planning-common-slot:disabled { border-color:#b7b9b7; background:#e1e3e0; color:#626963; }
.frame .planning-panel .planning-availability-column .planning-common-slot.is-common,html[data-display=paper] .frame .planning-panel .planning-availability-column .planning-common-slot.is-common { border-color:#86a98b; background:#d4e6cc; color:#325b38; }
.frame .planning-panel .planning-availability-column .planning-common-slot.is-common:hover,html[data-display=paper] .frame .planning-panel .planning-availability-column .planning-common-slot.is-common:hover { background:#c1dab8; }
.frame .planning-panel .planning-availability-column .planning-common-slot.is-past,.frame .planning-panel .planning-availability-column .planning-common-slot.is-common.is-past,.frame .planning-panel .planning-availability-column .planning-common-slot.is-common.is-past:hover,html[data-display=paper] .frame .planning-panel .planning-availability-column .planning-common-slot.is-past,html[data-display=paper] .frame .planning-panel .planning-availability-column .planning-common-slot.is-common.is-past,html[data-display=paper] .frame .planning-panel .planning-availability-column .planning-common-slot.is-common.is-past:hover { border-color:#c4c7c2; background:#e8e9e6; color:#757b74; cursor:default; }
.frame .planning-panel .planning-person-edit { transition:background .18s ease,color .18s ease; }
.frame .planning-panel .planning-person-edit[aria-pressed=true] { background:color-mix(in srgb,var(--rose) 9%,var(--paper)); }
.frame .planning-panel .planning-person-editor :is(.planning-add-button,.planning-slot-delete) { border:1px solid var(--line); border-radius:50%; color:var(--ink); background:var(--paper); }
.frame .planning-panel .planning-slot { position:relative; }
.frame .planning-panel .planning-slot-delete { position:relative; overflow:visible; }
.frame .planning-panel .planning-person-editor { padding-right:30px; }
.frame .planning-panel .planning-slot-delete.is-confirming { width:28px; min-width:28px; padding:0; border-color:transparent; background:transparent; }
.frame .planning-panel .planning-slot-delete.is-confirming::before { content:none; }
.frame .planning-panel .planning-slot-delete.is-confirming svg { position:absolute; top:50%; left:0; transform:translateY(-50%); box-sizing:border-box; width:44px; height:30px; padding:4px; border:1px solid var(--line); border-radius:15px; background:var(--paper); }
.frame .planning-panel .planning-slot.is-pending-delete { background:transparent; }
.frame .planning-rendezvous { padding:0 var(--planning-table-inset) 10px; }
.frame .planning-panel .planning-rendezvous-all { width:118px; min-height:36px; margin:0 auto; padding:5px 10px; }
.frame .planning-visibility-eye { width:23px; height:23px; flex:none; }
.frame .planning-rendezvous-list { width:100%; }
.frame .planning-rendezvous-entry { margin-top:10px; padding:16px; border:1px solid var(--line); border-radius:9px; background:var(--paper); scroll-margin-block:20px; }
.frame .planning-rendezvous-entry:first-child { padding-top:16px; border-top:1px solid var(--line); }
.frame .planning-rendezvous-entry.is-meeting-open { border-color:var(--rose); outline:2px solid color-mix(in srgb,var(--rose) 15%,transparent); }
.frame .planning-rendezvous-entry h4 { margin-bottom:14px; font-weight:700; }
.frame .planning-rendezvous-entry .planning-rendezvous-actions { justify-content:flex-start; margin-bottom:12px; }
.frame .planning-rendezvous-entry .planning-rendezvous-photo { width:52px; height:52px; }
@media(max-width:650px) {
 .frame .planning-panel { --planning-table-inset:6px; }
 .frame .planning-days-navigation .planning-week-label { font-size:15px; padding-inline:2px; }
 .frame .planning-days-navigation { grid-template-columns:minmax(0,1fr) 22px 19px auto 19px 22px minmax(0,1fr); }
 .frame .planning-calendar-hour { font-size:8px; padding-inline:0; }
 .frame .planning-calendar-hour.minor-hour { visibility:hidden; }
 .frame .planning-panel .planning-slot-delete.is-confirming { width:24px; min-width:24px; }
 .frame .planning-rendezvous-entry { padding:12px; }
 .frame .planning-rendezvous-entry:first-child { padding-top:12px; }
}
@media(prefers-reduced-motion:reduce) { .frame .planning-panel .planning-person-edit { transition:none; } }

/* September 24 refinements: shared navigation, immediate actions and recipe alignment. */
.frame nav.tabs.tabs-private .private-tab > .t[data-view=favs] { color:#527146; }
.frame nav.tabs.tabs-private .private-tab > .t[data-view=allergies] { color:#a04b4b; }
.frame nav.tabs.tabs-private .private-tab > .t:is([data-view=planning],[data-view=courses],[data-view=notes]) { color:#6b5185; }
.frame .favorite-action svg,.frame .person-favorites-edit svg,.frame .allergy-edit svg { transition:none; animation:none; }
.frame .recipe-header-details .favorite-action[data-action-label=Valider] svg,
.frame .person-favorites-edit[data-action-label=Valider] svg,.frame .allergy-edit[data-action-label=Valider] svg { stroke-width:2.2; animation:none; }
.frame .shopping-panel .shopping-clear-control .shopping-clear { border:1px solid var(--line); box-shadow:none; border-radius:5px; }
.frame .shopping-panel .shopping-clear-control .shopping-clear svg { width:34px; height:34px; stroke-width:1.7; }
.frame .shopping-panel .shopping-clear-control .shopping-clear.is-confirming { border-color:var(--danger); color:var(--danger); }
.frame .shopping-panel .shopping-clear-control .shopping-clear.is-confirming svg { width:27px; height:27px; stroke-width:2.2; }
.frame .recipe-overview { grid-template-columns:340px minmax(0,1fr); align-items:stretch; gap:24px; }
.frame .reading-header .photo { width:100%; height:340px; min-height:0; max-height:none; aspect-ratio:1; margin:0; }
.frame .recipe-header-details { height:340px; min-height:0; grid-template-rows:auto minmax(70px,1fr) 74px 74px; gap:9px; align-items:stretch; }
.frame .recipe-header-details :is(.rmp-favorites,.recipe-avoidances) { height:74px; min-height:74px; max-height:74px; grid-template-columns:32px minmax(0,1fr); grid-template-rows:26px 26px; padding:8px; gap:4px 8px; align-content:start; }
.frame .recipe-header-details .favorite-heading,.frame .recipe-avoidances-heading { grid-column:1; grid-row:1; align-self:start; justify-self:start; width:28px; height:26px; min-height:0; margin:0; padding:0; }
.frame .recipe-header-details .favorite-heading > svg,.frame .recipe-avoidances-heading .recipe-bemol-icon { width:27px; height:27px; }
.frame .recipe-header-details .favorite-header-actions { grid-column:1; grid-row:2; align-self:start; justify-self:start; min-height:26px; width:28px; }
.frame .recipe-header-details .favorite-header-actions .favorite-action { width:28px; min-width:28px; height:26px; min-height:26px; flex-basis:28px; padding:3px; }
.frame .recipe-header-details .favorite-controls,.frame .recipe-avoidance-list { grid-column:2; grid-row:1 / 3; grid-template-columns:repeat(5,minmax(0,1fr)); grid-template-rows:repeat(2,26px); grid-auto-rows:26px; gap:4px; align-self:start; }
.frame .recipe-header-details .favorite-toggle,.frame .recipe-avoidance-person { min-height:26px; height:26px; padding:2px 3px; font-size:10px; }
.frame .recipe-avoidance-name { font-size:10px; line-height:11px; }
.frame .recipe-avoidance-icons { font-size:9px; line-height:10px; }
.frame .recipe-title-actions .recipe-meta-bottom { border:0; margin-left:9px; padding-left:0; }
.frame .recipe-badges { display:grid; grid-template-columns:73px repeat(auto-fit,minmax(34px,max-content)); justify-content:start; gap:5px; }
.frame .recipe-badges .recipe-country { grid-column:1; }
.frame .recipe-header-details.has-equipment .recipe-badges { column-gap:9px; }
@media(min-width:700px) and (max-width:1000px) {
 .frame .recipe-overview { grid-template-columns:300px minmax(0,1fr); gap:18px; }
 .frame .reading-header .photo { height:300px; }
 .frame .recipe-header-details { height:300px; grid-template-rows:auto minmax(70px,1fr) 66px 66px; gap:7px; }
 .frame .recipe-header-details :is(.rmp-favorites,.recipe-avoidances) { height:66px; min-height:66px; max-height:66px; padding:4px; gap:4px; }
 .frame .recipe-header-details .favorite-toggle { font-size:9px; padding:2px 1px; }
}
@media(max-width:699px) {
 .frame .recipe-overview { display:block; }
 .frame .reading-header .photo { width:min(100%,380px); height:auto; aspect-ratio:1; margin:0 auto 16px; }
 .frame .recipe-header-details { height:auto; min-height:290px; grid-template-rows:auto minmax(70px,1fr) 74px 74px; gap:9px; }
 .frame .recipe-header-details :is(.rmp-favorites,.recipe-avoidances) { grid-template-columns:28px minmax(0,1fr); padding:8px 5px; column-gap:5px; }
 .frame .recipe-header-details .favorite-toggle,.frame .recipe-avoidance-name { font-size:9px; }
 .frame .recipe-avoidance-icons { font-size:8px; }
}
.frame .recipe-badges { grid-template-columns:78px repeat(auto-fit,minmax(34px,max-content)); }
.frame .recipe-badges .recipe-country { padding:3px; gap:3px; font-size:10px; }
.frame .recipe-badges .recipe-country > span { overflow-wrap:normal; word-break:normal; }
.frame .recipe-badges .recipe-country svg { width:20px; height:20px; }
.frame .recipe-title-actions .recipe-meta-bottom { justify-content:flex-start; }
/* Réunions: exclusive list/calendar controls, compact editable meals and clear time grids. */
.frame .planning-rendezvous-views { display:flex; justify-content:center; align-items:center; gap:24px; margin:0 0 12px; }
.frame .planning-panel .planning-rendezvous-views > button { display:flex; align-items:center; justify-content:center; gap:9px; width:118px; min-width:118px; min-height:38px; margin:0; padding:5px 10px; border:1px solid var(--line); border-radius:6px; background:var(--paper); color:var(--ink); }
.frame .planning-visibility-calendar { width:24px; height:24px; flex:none; }
.frame .planning-rendezvous-entry,.frame .planning-rendezvous-entry:first-child { padding:12px; }
.frame .planning-rendezvous-entry-heading { display:grid; grid-template-columns:auto minmax(150px,1fr) auto; align-items:center; gap:12px; margin:0; }
.frame .planning-rendezvous-entry h4 { margin:0; min-width:0; }
.frame .planning-panel .planning-rendezvous-inspect { display:flex; flex-wrap:wrap; gap:3px 12px; width:100%; min-height:32px; padding:0; border:0; background:transparent; text-align:left; font-size:15px; line-height:1.45; }
.frame .planning-rendezvous-date-text { color:var(--rose); font-weight:700; }
.frame .planning-rendezvous-time-text { color:#262421; font-weight:700; white-space:nowrap; }
.frame .planning-rendezvous-entry .planning-rendezvous-actions { display:flex; flex-wrap:nowrap; gap:6px; margin:0; }
.frame .planning-panel .planning-rendezvous-actions button { display:grid; place-items:center; width:30px; height:30px; min-width:30px; min-height:30px; padding:5px; border:1px solid var(--line); border-radius:50%; background:var(--paper); color:var(--ink); font-size:23px; line-height:1; }
.frame .planning-rendezvous-actions svg { width:20px; height:20px; }
.frame .planning-panel .planning-rendezvous-edit.is-editing { color:#347747; border-color:#70a177; }
.frame .planning-panel .planning-rendezvous-delete.is-confirming { color:var(--rose); border-color:var(--rose); }
.frame .planning-rendezvous-entry .planning-rendezvous-people { justify-content:flex-end; flex-wrap:wrap; gap:6px; margin:0; }
.frame .planning-panel .planning-rendezvous-person { flex:none; width:44px; min-width:0; min-height:0; padding:0; border:0; border-radius:0; background:transparent; color:var(--ink); gap:3px; }
.frame .planning-rendezvous-entry .planning-rendezvous-person .mono { width:32px; height:32px; font-size:17px; border-width:1px; }
.frame .planning-rendezvous-entry .planning-rendezvous-person .lbl { font-size:9px; line-height:12px; }
.frame .planning-rendezvous-person[aria-pressed=false] .mono { background:var(--paper); opacity:.55; }
.frame .planning-rendezvous-person[aria-pressed=true] .mono { box-shadow:0 0 0 2px color-mix(in srgb,var(--planning-person-color) 22%,transparent); }
.frame .planning-rendezvous-form.is-inline { display:flex; flex-wrap:wrap; gap:12px; align-items:end; padding:12px 0 0; }
.frame .planning-rendezvous-form.is-inline .planning-rendezvous-hours { display:flex; flex-wrap:wrap; gap:10px; }
.frame .planning-rendezvous-dishes { display:flex; flex-wrap:wrap; align-items:flex-start; gap:10px; margin-top:12px; padding-left:4px; }
.frame .planning-rendezvous-recipe { position:relative; display:block; width:72px; min-width:0; padding:0; margin:0; border:0; }
.frame .planning-rendezvous-recipe-name { display:flex; flex-direction:column; align-items:center; gap:4px; width:100%; color:var(--ink); text-align:center; text-decoration:none; }
.frame .planning-rendezvous-entry .planning-rendezvous-photo { display:block; width:64px; height:64px; object-fit:cover; border-radius:7px; }
.frame .planning-rendezvous-dish-title { font-size:10px; line-height:1.25; overflow-wrap:anywhere; }
.frame .planning-panel .planning-rendezvous-remove { position:absolute; top:-5px; right:0; display:grid; place-items:center; width:23px; height:23px; min-width:23px; min-height:23px; padding:0; border:1px solid var(--rose); border-radius:50%; background:var(--paper); color:var(--rose); font-size:18px; }
.frame .planning-days-navigation { grid-template-columns:minmax(0,1fr) 34px 34px 210px 34px 34px minmax(0,1fr); grid-template-rows:44px 46px; border-color:var(--line-soft); }
.frame .planning-days-navigation .planning-week-label { width:210px; box-sizing:border-box; padding:0; font-size:18px; }
.frame .planning-panel .planning-days-navigation > .planning-week-previous,.frame .planning-panel .planning-days-navigation > .planning-week-next { width:30px; font-size:32px; }
.frame .planning-panel .planning-days-navigation .planning-day-tab { height:46px; min-height:46px; font-size:17px; font-weight:400; text-transform:none; }
.frame .planning-panel .planning-days-navigation .planning-day-date { min-width:27px; height:27px; font-size:16px; font-weight:400; color:var(--ink); }
.frame .planning-panel .planning-day-tab:is([aria-pressed=true],[aria-current=date]) :is(.planning-shared-day-name,.planning-shared-day-short) { color:var(--ink); font-weight:400; text-shadow:none; }
.frame .planning-panel .planning-day-tab.is-selected :is(.planning-shared-day-name,.planning-shared-day-short) { color:var(--rose); }
.frame .planning-panel .planning-days-navigation .planning-day-tab[aria-current=date] .planning-day-date { border-color:var(--rose); color:var(--ink); }
.frame .planning-panel .planning-days-navigation .planning-shared-days .planning-day-tab[aria-pressed=true] { background:color-mix(in srgb,var(--rose) 7%,var(--paper)); border-radius:5px; }
.frame .planning-availability-grid,.frame .planning-calendar-bands { border:1px solid var(--line-soft); border-top:0; }
.frame .planning-availability-line { border-top:1px solid color-mix(in srgb,var(--ink) 27%,transparent); opacity:1; }
.frame .planning-availability-line.is-half-hour { border-top:1px solid color-mix(in srgb,var(--ink) 9%,transparent); opacity:1; }
.frame .planning-axis-hour,.frame .planning-axis-hour:first-child,.frame .planning-axis-hour:last-child { transform:translateY(calc(-100% - 2px)); font-size:11px; color:var(--ink); }
.frame .planning-availability-grid { padding-top:16px; padding-bottom:8px; }
.frame .planning-calendar-gridline { border-left:1px solid color-mix(in srgb,var(--ink) 27%,transparent); }
.frame .planning-calendar-gridline.is-half-hour { display:block; border-left:1px solid color-mix(in srgb,var(--ink) 9%,transparent); }
.frame .planning-calendar-axis { background:repeating-linear-gradient(to right,color-mix(in srgb,var(--ink) 27%,transparent) 0,color-mix(in srgb,var(--ink) 27%,transparent) 1px,transparent 1px,transparent calc(100% / 16)); }
.frame .planning-calendar-hour { transform:translateX(calc(-100% - 2px)); padding:0; font-size:10px; color:var(--ink); }
.frame .planning-panel .planning-calendar-event,.frame .planning-panel .planning-calendar-event.is-unavailability,html[data-display=paper] .frame .planning-panel .planning-calendar-event { background:color-mix(in srgb,var(--planning-person-fill) 76%,transparent); }
.frame .planning-panel .planning-availability-column .planning-common-slot:not(.is-common),.frame .planning-panel .planning-availability-column .planning-common-slot:not(.is-common):disabled,html[data-display=paper] .frame .planning-panel .planning-availability-column .planning-common-slot:not(.is-common):disabled { border-color:#b6b5b3; background:#deddd9; }
.frame .planning-panel .planning-person-editor .planning-slot-delete.is-confirming { width:28px; height:28px; min-width:28px; min-height:28px; padding:4px; border:1px solid var(--line); border-radius:50%; background:var(--paper); }
.frame .planning-panel .planning-slot-delete.is-confirming svg { position:static; transform:none; width:100%; height:100%; padding:0; border:0; border-radius:0; background:transparent; }
.frame .planning-rendezvous [hidden],.frame .planning-week-scroll[hidden] { display:none!important; }
@media(max-width:650px) {
 .frame .planning-rendezvous-entry-heading { grid-template-columns:auto minmax(0,1fr); gap:8px; }
 .frame .planning-rendezvous-entry-heading > .planning-rendezvous-people { grid-column:1 / -1; justify-content:flex-start; }
 .frame .planning-rendezvous-entry-heading > .planning-rendezvous-actions[hidden] + h4 { grid-column:1 / -1; }
 .frame .planning-panel .planning-rendezvous-inspect { font-size:13px; }
 .frame .planning-days-navigation { grid-template-columns:minmax(0,1fr) 27px 25px 174px 25px 27px minmax(0,1fr); }
 .frame .planning-days-navigation .planning-week-label { width:174px; font-size:15px; }
 .frame .planning-panel .planning-days-navigation .planning-day-tab { flex-direction:column; gap:3px; font-size:13px; }
 .frame .planning-panel .planning-days-navigation .planning-day-date { min-width:23px; height:23px; font-size:13px; }
 .frame .planning-panel .planning-person-editor .planning-slot-delete.is-confirming { width:24px; height:24px; min-width:24px; min-height:24px; }
 .frame .planning-calendar-hour { font-size:8px; }
}
/* Anchor each meeting group to its time inside the availability interval. */
.frame .planning-slot-rendezvous { display:block; top:0; bottom:0; left:3px; right:3px; }
.frame .planning-meeting-time { position:absolute; left:0; right:0; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); justify-items:center; align-items:center; gap:3px 2px; transform:translateY(-50%); pointer-events:none; }
.frame .planning-meeting-time > .planning-rendezvous-card { pointer-events:auto; }
.frame .planning-meeting-time > .planning-rendezvous-card:only-child { grid-column:1 / -1; }
/* Keep both weekly arrow pairs fixed inside the narrowest planning panel. */
.frame .planning-calendar-hour,.frame .planning-calendar-hour.minor-hour { visibility:visible; }
@media(max-width:650px) {
 .frame .planning-days-navigation { grid-template-columns:minmax(0,1fr) 22px 22px 142px 22px 22px minmax(0,1fr); }
 .frame .planning-days-navigation .planning-week-label { width:142px; font-size:13px; padding:0; }
 .frame .planning-panel .planning-days-navigation > .planning-week-previous,.frame .planning-panel .planning-days-navigation > .planning-week-next { width:22px; font-size:28px; }
 .frame .planning-panel .planning-days-navigation > .planning-week-current::before { width:20px; }
 .frame .planning-calendar-hour,.frame .planning-calendar-hour.minor-hour { visibility:visible; }
}
.frame .planning-rendezvous-entry-heading:not(.has-actions) { grid-template-columns:minmax(150px,1fr) auto; }
@media(max-width:650px) { .frame .planning-rendezvous-entry-heading:not(.has-actions) { grid-template-columns:minmax(0,1fr); } }
@media(max-width:650px) {
 .frame .planning-rendezvous-views { gap:16px; }
 .frame .planning-panel .planning-rendezvous-views > button { width:104px; min-width:104px; padding:5px 7px; }
}
