/* Mise — "Culinary Broadsheet": editorial, ink on warm bone, vermilion accent,
   Fraunces display + Archivo text + mono data. Bold reinvention; build-free. */
:root{
  --ink:#1A1410; --ink-soft:#3A2F26;
  --bone:#EDE4D1; --bone-2:#E4D8BE; --paper:#F4EDDD; --surface:#FBF6EA; --card:#FFFCF5;
  --vermilion:#D23F22; --vermilion-deep:#A82E16; --saffron:#E0A03A; --olive:#74803C;
  --line:rgba(26,20,16,.16); --line-strong:rgba(26,20,16,.34); --faint:rgba(26,20,16,.56);
  /* JS references these names for the plate/macros — map to the new palette. */
  --plant:var(--olive); --accent:var(--vermilion); --wheat:var(--saffron);
  --display:"Fraunces",Georgia,serif;
  --sans:"Archivo",ui-sans-serif,system-ui,sans-serif;
  --mono:"Spline Sans Mono",ui-monospace,"SFMono-Regular",monospace;
}
*{box-sizing:border-box}
html{ -webkit-text-size-adjust:100%; }
/* Keyboard skip link: off-screen until focused. */
.skip-link{ position:fixed; left:10px; top:-60px; z-index:100; background:var(--ink); color:var(--paper);
  padding:9px 16px; font-weight:600; text-decoration:none; box-shadow:3px 3px 0 var(--vermilion); transition:top .15s ease; }
.skip-link:focus{ top:10px; outline:2.5px solid var(--vermilion); outline-offset:2px; }
body{
  margin:0; color:var(--ink); background:var(--paper);
  font-family:var(--sans); font-size:16px; line-height:1.55; letter-spacing:.005em;
  background-image:
    radial-gradient(120% 80% at 100% 0%, rgba(224,160,58,.10), transparent 60%),
    radial-gradient(90% 70% at 0% 100%, rgba(210,63,34,.07), transparent 55%);
  background-attachment:fixed;
}
/* Film-grain overlay for paper texture. */
body::after{
  content:""; position:fixed; inset:0; z-index:9998; pointer-events:none; opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
button{ font:inherit; cursor:pointer; border:none; color:inherit; }
a{ color:var(--vermilion-deep); }
.hidden{ display:none!important; }
::selection{ background:var(--vermilion); color:var(--paper); }
:focus-visible{ outline:2.5px solid var(--vermilion); outline-offset:3px; }

/* ---- Masthead ---------------------------------------------------------- */
.bar{
  display:flex; align-items:flex-end; justify-content:space-between; gap:16px; flex-wrap:wrap;
  padding:20px 40px 16px; border-bottom:none;
  position:sticky; top:0; z-index:6; background:var(--paper);
  /* No backdrop-filter: the background is opaque, and filter on a sticky element
     causes a floaty/jittery header on iOS Safari. */
}
/* The broadsheet double rule — every masthead on the site closes with it. */
.bar::after{ content:""; position:absolute; left:0; right:0; bottom:0; height:7px;
  border-top:3px solid var(--ink); border-bottom:1px solid var(--ink); }
.brand{ display:flex; align-items:baseline; gap:12px; }
.mark{ color:var(--vermilion); font-size:24px; transform:translateY(3px); }
.word{ font-family:var(--display); font-weight:900; font-size:30px; letter-spacing:-.03em; font-optical-sizing:auto; }
.tag{ font-family:var(--mono); text-transform:uppercase; letter-spacing:.14em; font-size:10.5px; color:var(--faint); padding-bottom:4px; }
.bar-right{ display:flex; align-items:flex-end; gap:10px; padding-bottom:2px; flex-wrap:wrap; justify-content:flex-end; }
.menu{ position:relative; }
.menu-panel{ position:absolute; right:0; top:calc(100% + 7px); z-index:20; min-width:200px;
  background:var(--paper); border:2px solid var(--ink); box-shadow:5px 5px 0 var(--ink); }
.menu-panel[hidden]{ display:none; }
.menu-item{ display:block; width:100%; text-align:left; background:transparent; border:none;
  border-bottom:1px solid rgba(26,20,16,.14); padding:11px 16px; cursor:pointer; text-decoration:none;
  font-family:var(--sans); font-weight:600; font-size:13px; color:var(--ink); }
.menu-item:last-child{ border-bottom:none; }
.menu-item:hover{ background:var(--ink); color:var(--paper); }
.menu-item[aria-pressed="true"]{ background:var(--olive); color:#fff; }
.ghost{ background:var(--card); border:1.5px solid var(--ink); color:var(--ink); padding:9px 15px; border-radius:0; font-weight:600; font-size:13px; box-shadow:2px 2px 0 var(--ink); transition:transform .08s ease, box-shadow .08s ease; }
.ghost:hover{ background:var(--ink); color:var(--paper); transform:translate(1px,1px); box-shadow:1px 1px 0 var(--ink); }
.ghost:active{ transform:translate(2px,2px); box-shadow:0 0 0 var(--ink); }
.solid{ background:var(--vermilion); color:var(--paper); padding:10px 18px; border-radius:0; font-weight:700; font-size:13px; letter-spacing:.01em; box-shadow:3px 3px 0 var(--ink); }
.solid:hover{ transform:translate(1px,1px); box-shadow:2px 2px 0 var(--ink); }
.solid:active{ transform:translate(3px,3px); box-shadow:0 0 0 var(--ink); }
.solid:disabled{ opacity:.55; cursor:wait; box-shadow:3px 3px 0 var(--ink); }
.p-short{ display:none; }   /* mobile shows this, hides .p-long (see responsive) */

/* ---- Intake ------------------------------------------------------------ */
.intake{ max-width:780px; margin:0 auto; padding:48px 40px 90px; }
.intro{ margin-bottom:40px; }
.intro h1{
  font-family:var(--display); font-weight:900; font-size:clamp(42px,7vw,72px); line-height:.96;
  letter-spacing:-.035em; margin:0 0 18px; font-optical-sizing:auto;
}
.intro h1::after{ content:""; display:block; width:88px; height:5px; background:var(--vermilion); margin-top:22px; }
.intro p{ color:var(--ink-soft); margin:0; max-width:56ch; font-size:17px; line-height:1.6; }
.modetabs{ display:inline-flex; margin-top:26px; border:2px solid var(--ink); box-shadow:3px 3px 0 var(--ink); }
.modetab{ background:transparent; color:var(--ink); font-family:var(--mono); text-transform:uppercase; letter-spacing:.09em; font-size:12px; font-weight:600; padding:10px 22px; }
.modetab + .modetab{ border-left:2px solid var(--ink); }
.modetab.on{ background:var(--ink); color:var(--paper); }
.modetab:not(.on):hover{ background:var(--bone-2); }

.field{ margin-bottom:30px; }
.field>label{ display:block; font-family:var(--mono); text-transform:uppercase; letter-spacing:.1em; font-size:12px; font-weight:600; margin-bottom:13px; color:var(--ink); }
.field>label::before{ content:"▸ "; color:var(--vermilion); }
.opt{ color:var(--faint); font-weight:400; text-transform:none; letter-spacing:0; }
.sub{ display:block; font-family:var(--mono); font-size:11px; text-transform:uppercase; letter-spacing:.08em; color:var(--faint); margin-bottom:6px; }

.chips{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:10px; }
.chip{ background:var(--surface); border:1.5px solid var(--line-strong); color:var(--ink); padding:8px 15px; border-radius:0; font-size:14px; font-weight:500; transition:transform .08s, background .12s; }
.chip:hover{ background:var(--bone-2); }
.chip.on{ background:var(--ink); color:var(--paper); border-color:var(--ink); }
.chip:focus-visible{ outline:2.5px solid var(--vermilion); outline-offset:2px; }

.text{ width:100%; background:var(--card); border:1.5px solid var(--line-strong); border-radius:0; padding:12px 14px; font:inherit; color:var(--ink); transition:border-color .12s, box-shadow .12s; }
.text::placeholder{ color:var(--faint); }
.text:focus{ outline:none; border-color:var(--ink); box-shadow:4px 4px 0 var(--vermilion); }
textarea.text{ resize:vertical; }
select.text{ appearance:none; background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%),linear-gradient(135deg,var(--ink) 50%,transparent 50%); background-position:calc(100% - 18px) center,calc(100% - 12px) center; background-size:6px 6px,6px 6px; background-repeat:no-repeat; padding-right:34px; }
.row3{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:16px; margin-bottom:14px; }
.row3:last-child{ margin-bottom:0; }
.hrow{ display:flex; align-items:center; gap:7px; } .unit{ font-family:var(--mono); color:var(--faint); font-size:12px; }
.hint{ margin-top:6px; font-size:12.5px; line-height:1.4; color:var(--faint); font-style:italic; }
.trust{ margin:-14px 0 30px; font-family:var(--mono); font-size:11.5px; letter-spacing:.02em; color:var(--faint); }
.trust::before{ content:"⌁ "; color:var(--olive); }
.goal{ display:flex; flex-direction:column; gap:6px; }
.slider{ width:100%; accent-color:var(--vermilion); margin:8px 0 0; }
.goalval{ font-family:var(--mono); font-size:12.5px; font-weight:600; color:var(--vermilion-deep); text-transform:uppercase; letter-spacing:.04em; }

.generate{
  width:100%; margin-top:14px; background:var(--vermilion); color:var(--paper);
  font-family:var(--display); font-weight:600; font-size:20px; letter-spacing:.01em;
  padding:18px; border-radius:0; box-shadow:5px 5px 0 var(--ink); transition:transform .1s, box-shadow .1s;
}
.generate:hover{ transform:translate(1px,1px); box-shadow:4px 4px 0 var(--ink); }
.generate:active{ transform:translate(5px,5px); box-shadow:0 0 0 var(--ink); }
.generate:disabled{ opacity:.7; cursor:wait; }
.error{ background:#f7e2d6; color:var(--vermilion-deep); border:1.5px solid var(--vermilion); border-left-width:5px; padding:12px 15px; border-radius:0; margin:16px 0; font-size:14px; font-weight:500; }

/* ---- Loading view ------------------------------------------------------ */
.loading{ max-width:640px; margin:0 auto; padding:90px 28px; min-height:58vh; display:flex; align-items:center; justify-content:center; }
.loadwrap{ width:100%; display:flex; flex-direction:column; align-items:center; gap:24px; text-align:center; }
.loadhead{ font-family:var(--display); font-weight:900; font-size:clamp(28px,5vw,40px); letter-spacing:-.025em; }
.loadicon{ width:92px; height:92px; color:var(--vermilion); }
.loadicon svg{ width:100%; height:100%; animation:popin .5s cubic-bezier(.2,.7,.2,1); }
@keyframes popin{ 0%{ opacity:0; transform:scale(.55) rotate(-10deg); } 100%{ opacity:1; transform:none; } }
.loadbar{ width:100%; max-width:380px; height:8px; background:var(--bone-2); border:1.5px solid var(--ink); box-shadow:3px 3px 0 var(--ink); }
.loadbar > i{ display:block; height:100%; background:var(--vermilion); width:0; transition:width 9s cubic-bezier(.1,.7,.25,1); }
.loadcap{ font-family:var(--mono); font-size:12.5px; text-transform:uppercase; letter-spacing:.09em; color:var(--faint); }

/* ---- Plan -------------------------------------------------------------- */
.plan{ max-width:860px; margin:0 auto; padding:44px 40px 90px; counter-reset:sec; }
.summary-chips{ display:flex; flex-wrap:wrap; gap:7px; margin-bottom:28px; }
.tagchip{ background:transparent; border:1.5px solid var(--line-strong); color:var(--ink-soft); font-family:var(--mono); font-size:11.5px; padding:5px 11px; border-radius:0; text-transform:uppercase; letter-spacing:.04em; }
.tagchip.soft{ background:var(--bone-2); border-color:transparent; }

.care{ background:var(--card); border:2px solid var(--vermilion); border-left-width:7px; padding:24px 26px; border-radius:0; margin-bottom:26px; box-shadow:5px 5px 0 rgba(210,63,34,.18); }
.care h2{ font-family:var(--display); font-weight:900; margin:0 0 10px; font-size:26px; letter-spacing:-.02em; }
.care p{ margin:0; line-height:1.62; font-size:16px; }
.care-resources{ margin-top:16px; padding-top:16px; border-top:1.5px solid var(--line); }
.care-res-title{ font-family:var(--mono); font-weight:600; font-size:11px; text-transform:uppercase; letter-spacing:.1em; color:var(--vermilion-deep); margin:0 0 9px!important; }
.care-resources ul{ margin:0; padding-left:18px; line-height:1.75; }
.care-resources a{ color:var(--vermilion-deep); font-weight:700; }

/* Signature: daily targets as a bold nutrition-label / prep ticket. */
.targets{ position:relative; display:grid; grid-template-columns:auto 1fr; gap:18px 30px; align-items:center;
  background:var(--ink); color:var(--paper); border-radius:0; padding:30px 30px 24px; margin:30px 0 30px;
  box-shadow:7px 7px 0 var(--vermilion); }
.targets::before{ content:"Your daily estimate · a starting point"; position:absolute; top:-22px; left:0;
  font-family:var(--mono); font-size:11px; text-transform:uppercase; letter-spacing:.16em; color:var(--faint); }
.targets .cal{ text-align:left; padding-right:28px; border-right:2px solid rgba(244,237,221,.25); }
.cal-num{ font-family:var(--mono); font-size:54px; font-weight:600; line-height:.9; letter-spacing:-.02em; }
.cal-unit{ font-family:var(--mono); font-size:11px; text-transform:uppercase; letter-spacing:.16em; opacity:.7; margin-top:8px; }
.macros{ display:flex; gap:30px; flex-wrap:wrap; }
.macro{ display:flex; align-items:center; gap:11px; }
.macro-dot .dot{ width:14px; height:14px; }
.macro-val{ font-family:var(--mono); font-size:24px; font-weight:600; line-height:1; }
.macro-label{ font-family:var(--mono); font-size:10.5px; text-transform:uppercase; letter-spacing:.12em; opacity:.78; margin-top:5px; }
.macro-sub{ font-family:var(--mono); font-size:11px; opacity:.62; margin-top:4px; letter-spacing:.02em; }
.targets .basis{ grid-column:1 / -1; font-size:13.5px; line-height:1.55; opacity:.9; margin:8px 0 0; padding-top:14px; border-top:1px solid rgba(244,237,221,.16); }
.targets .basis.muted{ opacity:.62; font-style:italic; margin-top:4px; padding-top:0; border-top:none; }

.hero-plan{ display:flex; gap:36px; align-items:center; background:var(--surface); border:2px solid var(--ink); border-radius:0; padding:30px; margin-bottom:32px; }
.plate-wrap{ display:flex; flex-direction:column; align-items:center; gap:16px; flex-shrink:0; }
.plate{ border-radius:50%; position:relative; background:var(--surface); border:3px solid var(--ink); box-shadow:6px 6px 0 var(--ink); }
.plate-food{ position:absolute; border-radius:50%; border:1.5px solid rgba(26,20,16,.30); box-shadow:inset 0 0 0 2px var(--surface); }
.legend{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:7px; font-family:var(--mono); font-size:12px; color:var(--ink-soft); text-transform:uppercase; letter-spacing:.04em; }
.legend li{ display:flex; align-items:center; gap:8px; } .dot{ width:11px; height:11px; border-radius:0; border:1px solid var(--ink); }
/* Section kicker: mono small caps with a trailing hairline, like a paper's section head. */
.eyebrow{ display:flex; align-items:center; gap:14px; font-family:var(--mono); text-transform:uppercase; letter-spacing:.16em; font-size:11px; color:var(--vermilion); font-weight:600; margin:0 0 10px; }
.eyebrow::after{ content:""; flex:1; height:1px; background:linear-gradient(to right, var(--ink) 0 30%, transparent); opacity:.35; }
.hero-text h2{ font-family:var(--display); font-weight:900; font-size:32px; letter-spacing:-.025em; line-height:1.02; margin:0 0 12px; }
.lede{ margin:0; line-height:1.62; font-size:16.5px; color:var(--ink-soft); }
.plate-note{ margin:12px 0 0; color:var(--faint); font-size:14px; font-style:italic; }

.scale-row{ display:flex; align-items:flex-end; justify-content:center; gap:34px; margin-bottom:18px; }
.scale-item{ display:flex; flex-direction:column; align-items:center; gap:11px; }
.scale-cap{ font-family:var(--mono); font-size:11px; text-transform:uppercase; letter-spacing:.1em; color:var(--faint); }
.scale-arrow{ font-family:var(--display); font-size:30px; color:var(--vermilion); align-self:center; transform:translateY(-12px); }
.scale-note{ text-align:center; color:var(--ink-soft); font-size:15.5px; line-height:1.6; max-width:54ch; margin:0 auto; }
.block{ margin-bottom:34px; counter-increment:sec; }
.block h3{ font-family:var(--mono); font-size:13px; text-transform:uppercase; letter-spacing:.08em; color:var(--ink);
  border-bottom:2px solid var(--ink); padding-bottom:9px; margin:0 0 16px; display:flex; align-items:baseline; gap:10px; }
.block h3::before{ content:counter(sec,decimal-leading-zero); font-weight:600; color:var(--vermilion); font-size:13px; }
.bullets{ margin:0; padding-left:0; list-style:none; line-height:1.7; }
.bullets li{ position:relative; padding-left:24px; margin-bottom:9px; }
.bullets li::before{ content:"—"; position:absolute; left:0; color:var(--vermilion); font-weight:700; }

.portions{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.portion{ display:flex; align-items:center; gap:14px; background:var(--surface); border:1.5px solid var(--ink); border-radius:0; padding:14px 16px; }
.p-icon{ font-size:26px; line-height:1; }
.p-label{ font-family:var(--mono); font-weight:600; text-transform:uppercase; letter-spacing:.06em; font-size:13px; } .p-cue{ color:var(--faint); font-size:14px; }

.meals{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.meal{ background:var(--card); border:1.5px solid var(--ink); border-radius:0; padding:17px 19px; box-shadow:3px 3px 0 var(--bone-2); }
.meal-slot{ font-family:var(--mono); font-weight:600; text-transform:uppercase; letter-spacing:.06em; margin-bottom:11px; color:var(--vermilion-deep); font-size:13px; }
.meal ul{ margin:0; padding-left:0; list-style:none; line-height:1.6; font-size:15px; }
.meal li{ position:relative; padding-left:16px; margin-bottom:6px; } .meal li::before{ content:"·"; position:absolute; left:3px; color:var(--vermilion); font-weight:700; }
.worksheet p{ line-height:1.68; margin:0; font-size:16px; }

.glossary{ margin:-12px 0 26px; border:1.5px solid var(--line); background:var(--surface); padding:0 16px; }
.glossary summary{ font-family:var(--mono); font-size:12px; text-transform:uppercase; letter-spacing:.06em; color:var(--vermilion-deep); padding:12px 0; cursor:pointer; }
.glossary[open] summary{ border-bottom:1px solid var(--line); margin-bottom:10px; }
.glossary ul{ margin:0 0 14px; padding-left:18px; line-height:1.7; font-size:14.5px; } .glossary li{ margin-bottom:6px; }

.foodguide{ display:grid; gap:10px; }
.fg-item{ background:var(--surface); border:1.5px solid var(--ink); padding:12px 15px; }
.fg-head{ display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }
.fg-name{ font-family:var(--mono); font-weight:600; text-transform:uppercase; letter-spacing:.05em; font-size:13px; color:var(--vermilion-deep); }
.fg-rule{ font-size:13.5px; color:var(--faint); font-style:italic; }
.fg-ex{ margin-top:5px; font-size:14.5px; color:var(--ink-soft); }

.starter{ background:var(--ink); color:var(--paper); padding:22px 26px; box-shadow:6px 6px 0 var(--vermilion); }
.starter h3{ color:var(--paper); border-bottom-color:rgba(244,237,221,.35); }
.starter h3::before{ color:var(--saffron); }
.habits{ margin:0; padding-left:24px; line-height:1.55; }
.habits li{ margin-bottom:10px; font-size:16.5px; font-weight:500; }
.habits li::marker{ color:var(--saffron); font-family:var(--mono); font-weight:600; }

.scope{ font-size:13px; color:var(--faint); line-height:1.6; border-top:2px solid var(--ink); padding-top:18px; margin-top:36px; font-style:italic; }
.refine{ margin-top:40px; background:var(--surface); border:2px dashed var(--line-strong); border-radius:0; padding:24px 26px; }
.refine h3{ font-family:var(--display); font-weight:600; margin:0 0 14px; font-size:22px; }
.applied{ display:flex; flex-wrap:wrap; gap:7px; margin-bottom:14px; }
.refine-row{ display:flex; gap:10px; } .refine-row .text{ flex:1; }
/* 7-day meal plan */
.week-section{ margin-top:40px; border-top:3px double var(--ink); padding-top:34px; }
.plan7-cta{ display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap;
  background:var(--ink); color:var(--paper); padding:22px 26px; box-shadow:6px 6px 0 var(--vermilion); }
.plan7-cta.building{ justify-content:center; text-align:center; }
.plan7-cta.cooking{ flex-direction:column; gap:14px; padding:30px 26px; }
.plan7-cta.cooking .loadicon{ width:58px; height:58px; color:var(--saffron); }
.plan7-cta.cooking .cooking-text{ text-align:center; }
.plan7-cta.cooking .loadcap{ color:var(--paper); opacity:.82; margin-top:6px; }
.plan7-cta h3{ font-family:var(--display); font-weight:900; font-size:22px; margin:0 0 4px; color:var(--paper); border:none; padding:0; text-transform:none; letter-spacing:-.01em; }
.plan7-cta h3::before{ content:none; }
.plan7-cta p{ margin:0; font-size:14.5px; opacity:.85; max-width:46ch; }
.plan7-cta .solid{ background:var(--vermilion); box-shadow:3px 3px 0 var(--paper); flex-shrink:0; }
.plan7-title{ font-family:var(--display); font-weight:900; font-size:clamp(28px,5vw,40px); letter-spacing:-.03em; margin:0 0 22px; }
.week-wrap{ overflow-x:auto; -webkit-overflow-scrolling:touch; }
.week{ width:100%; border-collapse:collapse; border:2px solid var(--ink); font-size:13.5px; }
.week th, .week td{ border:1px solid var(--line-strong); padding:10px 12px; vertical-align:top; text-align:left; }
.week thead th{ background:var(--ink); color:var(--paper); font-family:var(--mono); text-transform:uppercase; letter-spacing:.06em; font-size:11.5px; font-weight:600; }
/* Day labels run vertically (rotated -90°) so a thin column gives the meals more width. */
.week th.daycol{ width:26px; padding:0; }
.week .weekday{ background:var(--bone-2); width:26px; padding:8px 2px; text-align:center; }
.week .weekday span{ writing-mode:vertical-rl; transform:rotate(180deg); display:inline-block; font-family:var(--mono); text-transform:uppercase; letter-spacing:.07em; font-size:11px; font-weight:600; white-space:nowrap; }
.week tbody tr:nth-child(even) td{ background:var(--surface); }
/* Scannable cell: bold dish + kcal, lighter ingredient list — no extra space. */
.week .meal-name{ display:block; font-weight:700; font-size:12.5px; line-height:1.32; color:var(--ink); margin-bottom:3px; }
.week .meal-body{ display:block; font-size:11.8px; line-height:1.4; color:var(--ink-soft); }
/* Six eating occasions: tighten so the grid still fits without horizontal scroll. */
.week-dense th, .week-dense td{ padding:8px 8px; }
.week-dense .meal-name{ font-size:11.5px; } .week-dense .meal-body{ font-size:11px; }
/* Premium/rare-item alternative — the quiet second line of a cell. */
.week .meal-swap{ display:block; margin-top:3px; font-size:11px; font-style:italic; color:var(--olive); }
/* Intentionally not planned (e.g. no snack at that slot) — hatched, obviously blank. */
.week td.empty-meal{ background:repeating-linear-gradient(45deg, var(--surface), var(--surface) 5px, var(--bone-2) 5px, var(--bone-2) 7px); }

/* Exclusion-lint callout + flagged cells (#125). Visible on screen AND print —
   a flagged cell is never served silently. */
.lint-note{ border:2px solid var(--vermilion); border-left-width:7px; background:var(--card);
  padding:12px 15px; margin:0 0 14px; font-size:13.5px; line-height:1.55; }
.lint-note p{ margin:0 0 6px; } .lint-note p:last-child{ margin-bottom:0; }
.week td.lint-hit{ outline:2.5px dashed var(--vermilion); outline-offset:-3px; }

/* Weekly grocery cart — categorized shopping list above the meal grid. */
.grocery{ border:2px solid var(--ink); background:var(--surface); padding:18px 20px; margin:0 0 22px; box-shadow:4px 4px 0 var(--olive); }
.grocery-h{ font-family:var(--mono); font-size:12px; text-transform:uppercase; letter-spacing:.08em; color:var(--olive); margin:0 0 12px; border:none; padding:0; }
.grocery-h::before{ content:"⊞  "; }
.grocery-cols{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:14px 26px; }
.grocery-cat-h{ font-family:var(--sans); font-weight:700; font-size:12.5px; text-transform:uppercase; letter-spacing:.04em; color:var(--ink); margin-bottom:5px; border-bottom:1.5px solid var(--line-strong); padding-bottom:3px; }
.grocery-cat ul{ margin:0; padding-left:16px; }
.grocery-cat li{ font-size:13.5px; line-height:1.5; margin-bottom:3px; }

/* ---- "Plan" form (free-text multi-week) ------------------------------- */
.stepper{ display:inline-flex; align-items:center; gap:14px; margin-bottom:14px; }
.step{ width:34px; height:34px; border:2px solid var(--ink); background:var(--paper); font-size:20px; line-height:1; cursor:pointer; box-shadow:2px 2px 0 var(--ink); }
.step:active{ transform:translate(2px,2px); box-shadow:none; }
.week-count{ font-family:var(--mono); font-size:13px; text-transform:uppercase; letter-spacing:.05em; min-width:72px; }
.weeks{ display:flex; flex-direction:column; gap:10px; }
.week-row{ display:flex; align-items:center; gap:12px; }
.week-num{ font-family:var(--mono); font-size:12px; text-transform:uppercase; letter-spacing:.05em; color:var(--vermilion-deep); white-space:nowrap; min-width:62px; }
.week-row .text{ flex:1; }

/* Multi-week output — each week is one of the existing .week grids. */
.mw-intro{ font-family:var(--mono); font-size:12.5px; letter-spacing:.02em; color:var(--ink-soft); margin:-6px 0 18px; }
.refine-week{ margin-top:16px; padding-top:16px; border-top:1px solid var(--line); }
.refine-week .solid{ flex-shrink:0; }
/* Feedback (thumbs + comment) — only present when feedback mode is toggled on. */
.fb-strip{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin:10px 0 0; }
.fb-label{ font-family:var(--mono); font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-soft); }
.fb-btn{ font-size:15px; line-height:1; border:1.5px solid var(--ink); background:var(--paper); padding:3px 8px; cursor:pointer; box-shadow:2px 2px 0 var(--ink); }
.fb-btn:active{ transform:translate(2px,2px); box-shadow:none; }
.fb-comment{ flex:1; min-width:160px; max-width:380px; padding:5px 9px; }
.fb-thanks{ font-family:var(--mono); font-size:11px; color:var(--olive); white-space:nowrap; }
#feedbackBtn.on{ background:var(--ink); color:var(--paper); }
/* Post-plan pulse: "Was this plan useful?" + "Get a fresh take" (escalation). */
.plan-pulse{ margin:22px 0 6px; padding:14px 16px; border:1.5px solid var(--ink); background:var(--surface); box-shadow:3px 3px 0 var(--ink); display:flex; flex-direction:column; gap:10px; }
.pulse-rate{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.pulse-comment{ display:flex; align-items:center; gap:6px; flex:1; min-width:220px; }
.pulse-fresh{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; border-top:1px dashed rgba(26,20,16,.25); padding-top:10px; }
.pulse-hint{ font-family:var(--mono); font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-soft); }
.pulse-sub{ font-size:12.5px; color:var(--ink-soft); font-style:italic; }
.fb-btn.on{ background:var(--ink); color:var(--paper); }
/* Per-business usage table (#128) — inside the history-panel idiom. */
.usage-table{ width:100%; border-collapse:collapse; font-size:13px; margin-top:4px; }
.usage-table th{ font-family:var(--mono); font-size:10.5px; text-transform:uppercase; letter-spacing:.06em; text-align:left; border-bottom:2px solid var(--ink); padding:6px 8px 6px 0; }
.usage-table td{ padding:7px 8px 7px 0; border-bottom:1px solid var(--line); font-variant-numeric:tabular-nums; }

/* "Your next plan" succession block (#0810) — the next-cycle CTA, styled like
   the week-section break: a new chapter, not another tweak. */
.next-plan{ margin-top:40px; border-top:3px double var(--ink); padding-top:26px; }
.next-plan h3{ font-family:var(--display); font-weight:900; font-size:24px; margin:0 0 8px; letter-spacing:-.02em; }
.next-plan p{ margin:0 0 16px; color:var(--ink-soft); font-size:15px; max-width:56ch; }
.next-actions{ display:flex; gap:12px; flex-wrap:wrap; }
.next-dials{ display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:14px; }
.next-dial .sub{ margin-bottom:6px; }
@media (max-width:520px){ .next-dials{ grid-template-columns:1fr; } }

/* Practice-name dialog (white-label handout attribution; on-device only). */
.practice-panel{ max-width:440px; }
.practice-body{ padding:14px 20px 20px; }
.practice-note{ font-size:13px; color:var(--ink-soft); margin:0 0 14px; line-height:1.5; }
.practice-actions{ display:flex; gap:10px; margin-top:16px; }
.mw-week{ margin-top:34px; }
.mw-week:first-of-type{ margin-top:8px; }
.mw-guidance{ border-left:3px solid var(--olive); padding-left:18px; }
.mw-num{ font-family:var(--mono); font-size:12px; font-weight:500; text-transform:uppercase; letter-spacing:.06em; color:var(--vermilion); margin-left:12px; -webkit-text-fill-color:var(--vermilion); }

.print-only{ display:none; }

/* ---- v0.4: GLP-1 toggles, units, manual mode, live preview ------------- */
.metrics-top{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:16px; margin-bottom:18px; }
.pillwrap,.units{ display:flex; align-items:center; gap:10px; }
.pill-label{ font-family:var(--mono); font-size:11px; text-transform:uppercase; letter-spacing:.08em; color:var(--faint); }
.segset{ display:inline-flex; border:1.5px solid var(--ink); }
.seg{ background:transparent; color:var(--ink); font-family:var(--mono); text-transform:uppercase; letter-spacing:.06em; font-size:11px; font-weight:600; padding:7px 14px; }
.seg + .seg{ border-left:1.5px solid var(--ink); }
.seg.on{ background:var(--ink); color:var(--paper); }
.seg:not(.on):hover{ background:var(--bone-2); }
.calorie-axis{ grid-column:1 / -1; margin-top:4px; }
.axis-head{ display:flex; align-items:center; gap:12px; margin-bottom:8px; }

.preview-wrap{ margin:30px 0; }
.preview-h{ font-family:var(--mono); font-size:12px; font-weight:600; text-transform:uppercase; letter-spacing:.1em; color:var(--ink); margin:0 0 4px; }
.preview-h::before{ content:"◗ "; color:var(--vermilion); }
.preview-empty{ border:1.5px dashed var(--line-strong); padding:22px; font-size:14px; color:var(--faint); font-style:italic; }

/* GLP-1 emphasis: the protein headline reads as the lead number. */
.targets.glp1::before{ content:"Protein-first · a floor to meet, not a cap"; }
.targets.glp1 .cal-num{ color:var(--saffron); }

/* Info bubbles — accessible ⓘ disclosure. */
.info{ display:inline-block; vertical-align:middle; }
.info > summary{ list-style:none; cursor:help; display:inline-flex; width:17px; height:17px; align-items:center; justify-content:center;
  font-family:var(--mono); font-size:12px; border:1.3px solid currentColor; border-radius:50%; opacity:.7; }
.info > summary::-webkit-details-marker{ display:none; }
.info[open] > summary{ opacity:1; }
.info-body{ font-family:var(--sans); font-size:12.5px; line-height:1.5; font-weight:400; text-transform:none; letter-spacing:0;
  margin-top:8px; padding:10px 12px; background:rgba(244,237,221,.1); border-left:2px solid var(--saffron); max-width:46ch; }
.targets .info-body{ color:var(--paper); }

.calc-notes{ grid-column:1 / -1; margin-top:14px; padding-top:12px; border-top:1px solid rgba(244,237,221,.16); }
.calc-notes > summary{ font-family:var(--mono); font-size:11px; text-transform:uppercase; letter-spacing:.08em; cursor:pointer; opacity:.85; }
.calc-notes ul{ margin:12px 0 0; padding-left:18px; }
.calc-notes li{ font-size:13px; line-height:1.55; margin-bottom:7px; opacity:.92; }
.basis.warn{ color:var(--saffron)!important; opacity:1!important; font-weight:500; }

/* Soft (clinician-reviewable) screening banner. */
.care.soft{ border-color:var(--saffron); box-shadow:5px 5px 0 rgba(224,160,58,.2); }
.care.soft h2{ color:var(--ink); }
.care.soft .ghost{ margin-top:14px; }
.care.soft.ack{ opacity:.6; }
.care.soft.ack::after{ content:"✓ Reviewed"; display:block; margin-top:10px; font-family:var(--mono); font-size:11px; letter-spacing:.06em; color:var(--olive); }

/* ---- Adjust-target hint + calculator disclaimer ----------------------- */
/* Direct adjustment is the top-level "Set manually" toggle; this just points to it. */
.adjust-hint{ grid-column:1 / -1; margin:14px 0 0; padding-top:12px; border-top:1px solid rgba(244,237,221,.16);
  font-family:var(--sans); font-size:12.5px; line-height:1.5; color:var(--paper); opacity:.82; text-transform:none; letter-spacing:0; }
.linkbtn{ background:none; border:none; padding:0; color:var(--saffron); font:inherit; text-decoration:underline; cursor:pointer; }
.targets.below-floor{ outline:2px solid var(--saffron); outline-offset:3px; }

/* "A calculator, not a prescription" — on the card, and top + bottom of the report. */
.disclaimer{ font-family:var(--sans); font-size:13px; line-height:1.55; color:var(--ink-soft);
  border:1.5px solid var(--line-strong); background:var(--surface); padding:11px 14px; margin:0 0 4px; border-radius:2px; }
.targets .disclaimer{ grid-column:1 / -1; margin-top:14px; color:var(--paper); opacity:.85; background:transparent; border-color:rgba(244,237,221,.3); }
.disclaimer.top{ margin-bottom:24px; }
.disclaimer.bottom{ margin-top:30px; }

/* GLP-1 education — a normal light-on-paper block; prints cleanly. */
.glp1-edu .edu-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px 26px; margin-top:6px; }
.edu-item h4{ font-family:var(--display); font-weight:600; font-size:17px; margin:0 0 5px; color:var(--ink); }
.edu-item p{ margin:0; font-size:14.5px; line-height:1.55; color:var(--ink-soft); }

/* Print-only inputs record. */
.inputs-used{ margin:18px 0; }
.iu-title{ font-family:var(--mono); font-size:10px; text-transform:uppercase; letter-spacing:.1em; color:#555; margin-bottom:8px; }
.iu-grid{ display:flex; flex-wrap:wrap; gap:6px 22px; }
.iu-item{ font-size:12px; } .iu-k{ color:#666; } .iu-v{ font-weight:600; margin-left:6px; }

/* ---- Load reveal ------------------------------------------------------- */
@keyframes rise{ from{ opacity:0; transform:translateY(14px); } to{ opacity:1; transform:none; } }
.intake>*, .plan>*{ animation:rise .5s cubic-bezier(.2,.7,.2,1) both; }
.plan>:nth-child(1){animation-delay:.02s} .plan>:nth-child(2){animation-delay:.07s}
.plan>:nth-child(3){animation-delay:.12s} .plan>:nth-child(4){animation-delay:.17s}
.plan>:nth-child(5){animation-delay:.22s} .plan>:nth-child(6){animation-delay:.27s}
.plan>:nth-child(7){animation-delay:.32s} .plan>:nth-child(n+8){animation-delay:.37s}
.intake>:nth-child(1){animation-delay:.02s} .intake>:nth-child(2){animation-delay:.06s}
.intake>:nth-child(3){animation-delay:.1s} .intake>:nth-child(n+4){animation-delay:.14s}

/* ---- Responsive -------------------------------------------------------- */
@media (max-width:680px){
  /* Brand on its own row, a single compact action row beneath — keeps the sticky
     header short instead of a bulky multi-row block. */
  .bar{ padding:12px 22px 10px; align-items:center; row-gap:10px; }
  .brand{ flex:1 1 100%; }
  .word{ font-size:25px; }
  .bar-right{ flex:1 1 100%; justify-content:flex-start; gap:8px; }
  .bar-right .ghost, .bar-right .solid{ padding:8px 12px; font-size:12.5px; }
  .p-long{ display:none; } .p-short{ display:inline; }
  .intake,.plan{ padding:34px 22px 70px; }
  .row3{ grid-template-columns:1fr; } .meals,.portions{ grid-template-columns:1fr; }
  .glp1-edu .edu-grid{ grid-template-columns:1fr; }
  .hero-plan{ flex-direction:column; text-align:center; } .legend{ align-items:center; }
  .scale-row{ gap:14px; flex-wrap:wrap; }   /* two fixed-size plates + arrow must fit */
  .targets{ grid-template-columns:1fr; text-align:left; }
  .targets .cal{ border-right:none; border-bottom:2px solid rgba(244,237,221,.25); padding:0 0 16px; }
  .tag{ display:none; }
}
/* Mobile popovers + the targets kicker (UX pass 2026-07-08). */
@media (max-width:680px){
  /* The menu dropdown anchored right to its button walked off-screen once the
     action row moved left on mobile: make it a full-width sheet under the bar. */
  .menu{ position:static; }
  .menu-panel{ left:22px; right:22px; top:calc(100% + 8px); min-width:0; }
  /* The hanging targets kicker clipped at narrow widths: flow it above the card. */
  .targets{ margin-top:16px; }
  .targets::before{ position:static; grid-column:1 / -1; margin-bottom:4px; white-space:normal; line-height:1.6; color:rgba(244,237,221,.7); }   /* now inside the ink card */
}

@media (prefers-reduced-motion:reduce){ *{ transition:none!important; animation:none!important; } }

/* ---- Resume hint + "Your plans" history overlay ------------------------ */
.resume-hint{ font-size:13px; color:var(--faint); margin:8px 0 0; max-width:52ch; }

.hist-overlay{ position:fixed; inset:0; z-index:60; display:none; align-items:flex-start; justify-content:center;
  background:rgba(26,20,16,.55); padding:7vh 18px 18px; backdrop-filter:blur(2px); }
.hist-panel{ width:100%; max-width:560px; max-height:82vh; overflow:auto; background:var(--paper);
  border:2px solid var(--ink); box-shadow:8px 8px 0 var(--ink); }
.hist-head{ display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding:16px 20px; border-bottom:2px solid var(--ink); position:sticky; top:0; background:var(--paper); }
.hist-head h2{ font-family:var(--display); font-weight:900; font-size:23px; margin:0; letter-spacing:-.02em; }
.hist-x{ background:transparent; border:1.5px solid var(--ink); width:34px; height:34px; font-size:15px; }
.hist-x:hover{ background:var(--ink); color:var(--paper); }
.hist-empty{ padding:24px 20px; color:var(--faint); }
.hist-row{ display:flex; align-items:center; gap:12px; padding:14px 20px; border-bottom:1px solid var(--line); }
.hist-open{ flex:1; display:flex; flex-direction:column; gap:3px; text-align:left; background:transparent; padding:0; min-width:0; }
.hist-open:hover .hist-title{ color:var(--vermilion); }
.hist-title{ font-weight:700; font-size:16px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.hist-meta{ font-family:var(--mono); font-size:11.5px; color:var(--faint); }
.hist-badge{ font-family:var(--mono); text-transform:uppercase; letter-spacing:.05em; font-size:10px;
  padding:4px 8px; border:1.5px solid var(--ink); white-space:nowrap; }
.hist-badge.ok{ background:var(--olive); color:#fff; border-color:var(--olive); }
.hist-badge.mid{ background:var(--saffron); color:var(--ink); border-color:var(--ink); }
.hist-badge.warn{ background:var(--vermilion); color:#fff; border-color:var(--vermilion); }
.hist-del{ background:transparent; border:none; font-size:15px; opacity:.5; padding:4px; }
.hist-del:hover{ opacity:1; }

/* ---- Print: force a clean ink-on-white handout ------------------------- */
/* The bottom margin reserves the strip the running footer sits in; without it
   content prints underneath the footer. */
@page{ margin:14mm 12mm 18mm; }
@media print{
  .no-print{ display:none!important; } .print-only{ display:block!important; }
  .skip-link{ display:none!important; }
  body{ background:#fff; font-size:12pt; } body::after{ display:none; }
  .plan{ max-width:100%; padding:0; }
  .plan>*{ animation:none!important; }
  .targets{ background:#fff!important; color:#000!important; border:2px solid #000; box-shadow:none; }
  .targets::before{ color:#444; } .targets .cal{ border-right-color:#000; }
  .targets .basis{ opacity:1; border-top-color:#bbb; } .macro-label,.cal-unit{ opacity:1; }
  .hero-plan,.meal,.care{ box-shadow:none; } .plate{ box-shadow:none; }
  /* Ink economy. A printed plan runs dozens of pages, and forcing fills across
     whole subtrees puts solid ink on every one of them — which is what makes a
     clinic printer crawl. Keep forced color to the few marks that ARE the
     meaning (the plate wedges and the macro dots); everything else prints as
     type on white. Measured: see web/bench/README.md. */
  .plate,.plate-food,.dot{ -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  section,.hero-plan,.targets,.block,.meal,.care{ break-inside:avoid; }
  /* Keep small grids/cards intact across page breaks. */
  .foodguide,.portions,.scale-row,.legend,.meals .meal,.fg-item,.portion,.grocery-cat{ break-inside:avoid; }
  p,li{ orphans:2; widows:2; }
  /* Denser grid: at 9.5pt only two days fit a page, so a 12-week plan ran 37
     pages. 8.5pt with tighter cells fits three to four and drops it to 28. */
  .week{ font-size:8.5pt; } .week th, .week td{ padding:4px 5px; } .week tr{ break-inside:avoid; } .plan7-title{ font-size:22px; }
  /* The header repeats on EVERY page of a long table, so a solid ink bar here
     was the single largest ink cost in the handout. Rules and weight instead. */
  .week thead th{ background:#fff; color:#000; border-bottom:2px solid #000; }
  .week .weekday{ background:#fff; border-right:1.5px solid #000; }
  .week tbody tr:nth-child(even) td{ background:#fff; }
  /* The hatch was a rasterized repeating gradient; a dash reads the same in
     grayscale and costs nothing to spool. (An empty-value placeholder, which
     the house dash rule explicitly allows.) */
  .week td.empty-meal{ background:none; color:#666; }
  .week td.empty-meal::after{ content:"—"; }
  .week-dense{ font-size:8.5pt; } .week-dense th, .week-dense td{ padding:5px 5px; }
  /* If a week table must span pages, repeat its header row at the top of each.
     Chrome and Firefox honour this; WebKit does NOT, so each cell also carries
     its slot name (data-slot from WeekTable) as a quiet inline prefix. Without
     it, page 2 of a week has unlabeled columns and a reader cannot tell
     breakfast from dinner. */
  .week thead{ display:table-header-group; }
  .week td[data-slot]::before{
    content:attr(data-slot) " · "; font-family:var(--mono); font-size:6.5pt;
    letter-spacing:.06em; text-transform:uppercase; color:#666;
  }
  /* Cell type is sized in pt for print. On screen these are absolute px, which
     do NOT scale with the table's font-size — that is why the grid stayed at
     two days per page no matter how the table was tuned. 8.5/8 is the largest
     pair that captures the whole win: smaller gains no further pages. */
  .week .meal-name{ color:#000; font-size:8.5pt; }
  .week .meal-body{ color:#000; font-size:8pt; line-height:1.25; }
  .week .meal-swap{ color:#333; font-size:7.5pt; } .week .weekday{ padding:6px 1px; }
  .lint-note{ border-color:#000; background:#fff; break-inside:avoid; } .week td.lint-hit{ outline-color:#000; }
  /* Page-align: the 7-day table is large, so start it on a fresh page (keeps the
     framework clean and the table off page seams). */
  .week-section{ border-top:none; padding-top:0; margin-top:0; break-before:page; }
  /* Keep a week's grocery cart with the start of its table. Safari largely
     ignores break-after:avoid, so this must not be the ONLY thing keeping a
     heading off a page of its own — the grocery panel below is allowed to
     fragment so there is always content to follow the title. Legacy
     page-break-* is kept alongside for older WebKit. */
  h2.plan7-title{ break-after:avoid; page-break-after:avoid; }
  /* Deliberately NO break-after on .grocery. It used to say "keep the cart with
     the table that follows"; chained with the title's own break-after that asks
     the engine to keep title + cart + first table row together, and when that
     combined block does not fit, Safari satisfies it by moving the cart down and
     stranding the title alone on a page. Keeping the cart adjacent to the table
     is nice-to-have; a blank page is not. */
  /* Every week starts on a fresh page, not just the ones after the first. A
     week is the unit someone hands over, so a deterministic start beats saving
     a partial page. Rows stay atomic (.week tr break-inside:avoid) so a day is
     never split across a page. */
  .mw-week{ break-before:page; page-break-before:always; }
  .mw-week.mw-guidance:first-of-type{ break-before:auto; page-break-before:auto; }
  /* Breakable: an atomic panel that will not fit beside its heading pushes to
     the next page and leaves the heading stranded (observed in Safari). The
     CATEGORIES stay atomic, so a category never splits mid-list. */
  .grocery{ box-shadow:none; border-color:#000; background:#fff; break-inside:auto; }
  .grocery-h{ color:#000; }
  .mw-num{ -webkit-text-fill-color:#000; color:#000; }
  .meals{ break-inside:auto; } h2,h3{ break-after:avoid; }
  /* ---- Branded cover page + running footer (white-label tenants) -----------
     Browsers do not support @page margin boxes, so a running footer has to be a
     position:fixed element — Chrome and WebKit both paint those once per printed
     page. The @page margin below reserves the strip it sits in, or content would
     print underneath it. */
  .print-cover{
    /* display:flex must be !important: .print-only above sets display:block
       with !important to reveal print-only nodes, and would flatten this. */
    display:flex!important; flex-direction:column; justify-content:space-between;
    min-height:23cm; break-after:page; page-break-after:always; text-align:center;
  }
  .cover-lockup{ padding-top:2.5cm; }
  .cover-mark{ display:block; width:260px; height:auto; margin:0 auto 10px; }
  .cover-name{ display:block; font-family:var(--display); font-size:34px; }
  .cover-sub{
    display:block; font-family:var(--sans); text-transform:uppercase;
    letter-spacing:.34em; font-size:9.5pt; color:#444;
  }
  .cover-mid .print-title{ font-size:26pt; font-weight:400; margin-bottom:6px; }
  .cover-mid .print-date{ font-size:10pt; color:#555; }
  .cover-mid .print-practice{ font-size:11pt; color:#333; margin-top:8px; }
  .cover-nap{
    padding-bottom:1.5cm; font-size:9pt; line-height:1.55; color:#333;
  }
  .cover-nap-name{ font-weight:600; margin-bottom:3px; }
  .cover-nap-contact{ color:#444; }
  .cover-nap-social{ margin-top:5px; color:#666; font-size:8.5pt; }

  .print-running{
    position:fixed; bottom:0; left:0; right:0;
    display:flex!important; justify-content:space-between; align-items:baseline; gap:12px;
    border-top:1px solid #999; padding-top:5px;
    font-family:var(--sans); font-size:7.5pt; color:#555;
  }
  .print-running .pr-name{ letter-spacing:.04em; }

  .print-head{ border-bottom:2px solid #000; padding-bottom:12px; margin-bottom:18px; }
  .print-title{ font-family:var(--display); font-size:24px; font-weight:900; }
  .print-practice{ font-size:15px; color:#000; font-weight:600; margin-top:2px; }
  .print-date{ font-family:var(--mono); font-size:12px; color:#555; margin-top:3px; }
  .print-foot{ margin-top:24px; padding-top:10px; border-top:1px solid #999; font-family:var(--mono); font-size:10px; color:#666; }
  /* Complete report: every collapsible section prints fully expanded. */
  details[open] > summary, details > summary{ list-style:none; }
  details > summary::-webkit-details-marker{ display:none; }
  details:not([open]) > *:not(summary){ display:revert!important; }
  /* Drop the inline ⓘ tooltips; the consolidated calc notes carry the same why. */
  .info{ display:none!important; }
  .calc-notes{ break-inside:avoid; border-top-color:#bbb; }
  .calc-notes > summary{ display:none!important; }
  .calc-notes > ul{ display:block!important; }
  .calc-notes li{ opacity:1; color:#000; }
  .glossary{ background:#fff; border-color:#999; padding:0 0 0 0; }
  .glossary > summary{ font-size:11px; color:#444; padding:6px 0; }
  .glossary ul{ display:block!important; color:#000; }
  .inputs-used{ display:block!important; }
  .targets.glp1 .cal-num{ color:#000; }
  .care.soft{ box-shadow:none; }
  .targets.below-floor{ outline-color:#000; }
  .disclaimer{ color:#000; border-color:#000; background:#fff; }
  .targets .disclaimer{ color:#000; border-color:#000; }
  .glp1-edu{ break-inside:avoid; } .glp1-edu .edu-grid{ gap:10px 24px; }
  .edu-item p{ color:#000; }
}
