/* ============================================================
   A Cook's Realm — shared recipe-page stylesheet
   Themed per recipe via CSS custom properties (set in the page
   <head> from the recipe's `theme` block). Generalized from the
   hand-coded prototype pages so every recipe renders identically.
   ============================================================ */

:root{
  /* Fallback palette; each page overrides these from recipe.theme */
  --bg:#E7DECB;
  --surface:#F7F2E6;
  --ink:#2B2018;
  --accent:#6B4A2E;       /* primary warm accent (blush / umber / cherry) */
  --accent-soft:#E9C788;
  --accent2:#C0791F;      /* secondary accent (gold / amber) */
  --leaf:#6E7355;         /* check / "done" green */
  --line:#cdbf9f;
  --notes-bg:#2B2018;
  --notes-head:#E9C788;
  --done:#9aa07d;
  --shadow:0 1px 0 rgba(43,32,24,.05), 0 8px 24px -16px rgba(43,32,24,.45);
}

*{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font-family:"Inter",system-ui,-apple-system,sans-serif;line-height:1.5;font-size:16px;
}
.wrap{max-width:760px;margin:0 auto;padding:0 22px 90px;}

/* ---------- header ---------- */
header{position:relative;padding:54px 0 24px;}
.decor{position:absolute;inset:0;overflow:hidden;pointer-events:none;}
.eyebrow{
  font-family:"Inter",sans-serif;font-weight:600;letter-spacing:.22em;text-transform:uppercase;
  font-size:11.5px;color:var(--accent);display:flex;align-items:center;gap:12px;position:relative;
}
.eyebrow::after{content:"";flex:1;height:1px;background:var(--line);}
h1{
  font-family:"Fraunces",Georgia,serif;font-weight:900;font-size:clamp(38px,7.2vw,62px);
  line-height:1.02;letter-spacing:-.018em;margin:.32em 0 .16em;position:relative;
}
h1 em{font-style:italic;font-weight:500;color:var(--accent);}
.scallop{display:block;width:210px;height:14px;margin:6px 0 14px;color:var(--accent2);position:relative;}
.spoondiv{display:block;height:46px;width:auto;margin:10px 0 14px;}
.homelink{display:inline-flex;align-items:center;gap:11px;margin:30px 0 8px;text-decoration:none;}
.homelink img{height:clamp(118px,16vw,176px);width:auto;display:block;}
.homelink .hltext{font-family:"Fraunces",Georgia,serif;font-weight:600;font-size:clamp(20px,2.6vw,30px);color:var(--ink);line-height:1.1;}
.homelink:hover .hltext,.homelink:focus .hltext{color:var(--accent);}
.homelink{margin-bottom:0;}
.homelink+header{padding-top:12px;}
.rhero{display:block;width:100%;max-height:320px;object-fit:cover;border-radius:12px;margin:0 0 16px;}
.blurb{
  font-family:"Fraunces",Georgia,serif;font-style:italic;font-weight:400;
  font-size:clamp(16px,2.4vw,19px);color:#5b4a3a;max-width:48ch;position:relative;margin:.2em 0 0;
}
.watch{margin:12px 0 0;}
.watch a{display:inline-flex;align-items:center;gap:.4em;font-size:14px;font-weight:600;color:var(--cherry,#9E1B2F);text-decoration:none;border:1px solid var(--line,#E0CDB3);border-radius:999px;padding:5px 14px;background:#fff;transition:border-color .15s ease,transform .12s ease;}
.watch a:hover{border-color:var(--cherry,#9E1B2F);transform:translateY(-1px);}
.meta{display:flex;flex-wrap:wrap;gap:10px 26px;margin-top:22px;position:relative;font-size:13px;color:var(--accent);font-weight:500;}
.meta b{color:var(--ink);font-weight:700;}
.ingredients a{color:var(--accent);font-weight:600;text-decoration:underline;text-underline-offset:2px;}
.ingredients a:hover{color:var(--accent2);}

/* difficulty dials + diet badges */
.dials{display:flex;gap:18px;flex-wrap:wrap;margin:16px 0 0;font-size:13px;position:relative;}
.dials span b{color:var(--ink);font-weight:600;}
.dials .dot{letter-spacing:1px;color:var(--accent2);}
.tierpill{display:inline-block;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:2px 10px;font-size:11.5px;font-weight:600;margin-left:4px;}
.badges{display:flex;gap:7px;flex-wrap:wrap;margin:12px 0 0;position:relative;}
.badge{font-size:11px;font-weight:700;letter-spacing:.03em;padding:4px 10px;border-radius:999px;text-transform:uppercase;}
.b-vegan{background:#e4ead0;color:#4f5a26;} .b-veg{background:#eef0e0;color:#6e7a3a;} .b-gf{background:#f4e6cb;color:#9a6a1e;}
.b-ip{background:#dde3ee;color:#3a4a66;}

/* ---------- servings + units ---------- */
.servings{
  display:flex;align-items:center;gap:16px;margin:30px 0 6px;background:var(--surface);
  border:1px solid var(--line);border-radius:14px;padding:14px 18px;box-shadow:var(--shadow);position:relative;
}
.servings .lbl{font-weight:600;font-size:14px;flex:1;}
.servings .lbl span{display:block;font-size:12px;color:var(--accent);font-weight:500;}
.stepper{display:flex;align-items:center;gap:4px;}
.stepper button{
  width:38px;height:38px;border-radius:10px;border:1px solid var(--line);background:#fff;color:var(--ink);
  font-size:22px;line-height:1;cursor:pointer;font-family:inherit;
  transition:transform .08s ease,background .15s ease,border-color .15s ease;
}
.stepper button:hover{background:var(--accent-soft);border-color:var(--accent2);}
.stepper button:active{transform:scale(.92);}
.stepper button:disabled{opacity:.35;cursor:not-allowed;}
.stepper .count{min-width:48px;text-align:center;font-family:"Fraunces",serif;font-weight:600;font-size:24px;}

.units{display:flex;align-items:center;gap:14px;margin:12px 2px 0;}
.units .ulbl{font-size:13px;font-weight:600;color:var(--accent);}
.seg{display:inline-flex;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:3px;gap:2px;}
.seg button{
  border:none;background:transparent;font-family:inherit;font-size:13px;font-weight:600;color:var(--accent);
  padding:7px 14px;border-radius:999px;cursor:pointer;transition:background .15s ease,color .15s ease;
}
.seg button.active{background:var(--ink);color:var(--bg);}
.seg button:not(.active):hover{color:var(--ink);}

/* ---------- sections ---------- */
section{margin-top:46px;}
.sec-head{display:flex;align-items:baseline;gap:14px;margin-bottom:18px;}
.sec-head h2{font-family:"Fraunces",serif;font-weight:600;font-size:25px;margin:0;letter-spacing:-.01em;}
.sec-head .rule{flex:1;height:1px;background:var(--line);align-self:center;}

/* ---------- ingredients ---------- */
ul.ingredients{list-style:none;margin:0;padding:0;}
ul.ingredients li{display:flex;align-items:baseline;gap:14px;padding:10px 2px;border-bottom:1px dashed var(--line);}
ul.ingredients li:last-child{border-bottom:none;}
.grp{font-family:"Fraunces",serif;font-style:italic;font-size:15px;color:var(--accent);padding:14px 2px 4px;font-weight:600;}
.amt{font-variant-numeric:tabular-nums;font-weight:700;color:var(--accent);min-width:92px;flex-shrink:0;font-size:15px;}
.iname{font-size:15.5px;}
.iname small{color:#8a7a66;font-weight:500;}

.callout{margin-top:18px;background:var(--accent-soft);border-left:4px solid var(--accent2);border-radius:0 10px 10px 0;padding:14px 18px;font-size:14px;color:#4a3c2d;}
.callout strong{color:var(--ink);}

/* ---------- steps ---------- */
ol.steps{list-style:none;counter-reset:step;margin:0;padding:0;}
ol.steps li{
  position:relative;padding:20px 18px 20px 60px;margin-bottom:14px;background:var(--surface);
  border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);transition:opacity .25s ease;
}
ol.steps li::before{
  counter-increment:step;content:counter(step);position:absolute;left:16px;top:18px;width:30px;height:30px;
  border-radius:50%;background:var(--ink);color:var(--bg);font-family:"Fraunces",serif;font-weight:600;
  font-size:15px;display:flex;align-items:center;justify-content:center;
}
ol.steps li.done{opacity:.5;}
ol.steps li.done .step-title{text-decoration:line-through;}
ol.steps li.done::before{background:var(--done);}
.step-top{display:flex;align-items:center;gap:12px;margin-bottom:6px;}
.step-title{font-family:"Fraunces",serif;font-weight:600;font-size:18px;flex:1;}
.check{
  appearance:none;-webkit-appearance:none;width:22px;height:22px;flex-shrink:0;border:2px solid var(--line);
  border-radius:6px;cursor:pointer;background:#fff;position:relative;transition:background .15s ease,border-color .15s ease;
}
.check:checked{background:var(--leaf);border-color:var(--leaf);}
.check:checked::after{content:"";position:absolute;left:6px;top:2px;width:6px;height:11px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(42deg);}
.step-body{font-size:15px;color:#3a2e22;}
.step-body b{color:var(--accent);font-weight:700;font-variant-numeric:tabular-nums;}

/* ---------- timer ---------- */
.timer{display:inline-flex;align-items:center;gap:8px;margin-top:12px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:5px 6px 5px 14px;}
.timer .clock{font-variant-numeric:tabular-nums;font-weight:700;font-size:15px;letter-spacing:.02em;min-width:54px;}
.timer.running .clock{color:var(--accent2);}
.timer.fired{animation:flash 1s ease infinite;border-color:var(--accent2);}
@keyframes flash{0%,100%{background:#fff;}50%{background:var(--accent-soft);}}
.timer button{border:none;background:var(--ink);color:var(--bg);font-family:inherit;font-size:12px;font-weight:600;padding:7px 12px;border-radius:999px;cursor:pointer;letter-spacing:.02em;transition:background .15s ease;}
.timer button:hover{background:var(--accent);}
.timer button.reset{background:transparent;color:var(--accent);padding:7px 8px;}
.timer button.reset:hover{color:var(--ink);background:transparent;}

/* ---------- notes ---------- */
.notes{background:var(--notes-bg);color:#e9e0d0;border-radius:16px;padding:26px 28px;font-size:14.5px;line-height:1.6;}
.notes h2{font-family:"Fraunces",serif;color:var(--notes-head);margin:0 0 12px;font-size:22px;}
.notes p{margin:0 0 12px;}
.notes p:last-child{margin-bottom:0;}
.notes b{color:#fff;}

/* ---------- substitutions ---------- */
.subs{margin-top:18px;border:1px solid var(--line);border-radius:12px;overflow:hidden;}
.subs summary{cursor:pointer;list-style:none;padding:13px 18px;font-weight:700;font-size:14px;color:var(--ink);background:var(--surface);display:flex;align-items:center;gap:8px;}
.subs summary::-webkit-details-marker{display:none;}
.subs summary::before{content:"+";color:var(--accent2);font-weight:900;font-size:16px;}
.subs[open] summary::before{content:"\2013";}
.subs .body{padding:14px 18px 6px;font-size:14px;line-height:1.55;}
.subs .body p{margin:0 0 11px;} .subs .body b{color:var(--accent2);}
.notes a{color:var(--notes-head);font-weight:600;text-decoration:underline;text-underline-offset:2px;}
.notes a:hover{color:#fff;}

/* ---------- original scan (heritage) ---------- */
.original{margin-top:18px;border:1px solid var(--line);border-radius:12px;overflow:hidden;}
.original summary{cursor:pointer;list-style:none;padding:13px 18px;font-weight:700;font-size:14px;color:var(--ink);background:var(--surface);display:flex;align-items:center;gap:8px;}
.original summary::-webkit-details-marker{display:none;}
.original summary::before{content:"+";color:var(--accent2);font-weight:900;font-size:16px;}
.original[open] summary::before{content:"\2013";}
.original .body{padding:16px 18px 18px;}
.original figure{margin:0;}
.original img{display:block;width:100%;max-width:560px;height:auto;margin:0 auto;border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 24px -16px rgba(43,32,24,.5);}
.original figcaption{font-size:13px;color:#6a503c;font-style:italic;margin:10px auto 0;text-align:center;max-width:560px;}

/* ---------- footer ---------- */
footer{margin-top:46px;text-align:center;font-size:12.5px;color:var(--accent);}
.backlink{display:inline-block;margin-bottom:10px;font-size:12.5px;color:var(--accent);text-decoration:none;font-weight:600;letter-spacing:.04em;}
.backlink:hover{color:var(--ink);text-decoration:underline;}
.print-btn{display:inline-flex;align-items:center;gap:8px;margin-top:14px;background:none;border:1px solid var(--line);border-radius:999px;padding:9px 18px;font-family:inherit;font-size:13px;font-weight:600;color:var(--ink);cursor:pointer;transition:background .15s ease;}
.print-btn:hover{background:var(--surface);}

:focus-visible{outline:2.5px solid var(--accent);outline-offset:2px;border-radius:4px;}

/* raw (vintage) ingredients + draft note */
ul.ingredients li.raw{display:block;}
.iname small.sub{display:inline-block;color:var(--accent2);font-style:italic;font-weight:600;margin-left:6px;}
.draftnote{margin:20px 0 -10px;background:var(--accent-soft);border-left:4px solid var(--accent2);border-radius:0 10px 10px 0;padding:12px 16px;font-size:13px;color:#5a4636;font-style:italic;}

/* "Easier, if you like" shortcut box */
.shortcuts{background:var(--surface);border:1px dashed var(--accent2);border-radius:12px;padding:16px 20px;}
.shortcuts h3{font-family:"Fraunces",serif;font-size:17px;margin:0 0 8px;color:var(--accent2);font-weight:600;}
.shortcuts ul{margin:0;padding-left:18px;font-size:14px;line-height:1.55;color:#4a3a2c;}
.shortcuts li{margin-bottom:8px;} .shortcuts li:last-child{margin-bottom:0;}
.shortcuts b{color:var(--ink);}
.shortcuts a,.callout a{color:var(--accent);font-weight:600;text-decoration:underline;text-underline-offset:2px;}
.shortcuts a:hover,.callout a:hover{color:var(--accent2);}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;}}

@media print{
  body{background:#fff;font-size:12px;}
  .decor,.servings .stepper,.units,.timer,.print-btn,footer .backlink,.print-btn{display:none!important;}
  ol.steps li,.servings,.notes{box-shadow:none;break-inside:avoid;}
  .notes{background:#fff;color:#000;border:1px solid #999;}
  .notes h2,.notes b{color:#000;}
}
