/* A Shared Palate — a warm recipe box.
   Paper and ink, index cards with coloured tabs, one handwritten accent (Caveat) for the human notes.
   Colour is never the only signal: every state also has a word or a mark. Swap the tokens to retheme. */
:root{
  --paper:#f7efe2; --paper-2:#f1e5d1; --card:#fffaf2; --ink:#2a1f16; --mut:#6b5b4b; --line:#e3d4bd;
  --sage:#4d6b4a; --sage-soft:#e3ebdc;
  --butter:#c08a2e; --butter-soft:#f7e8c8;
  --berry:#9c4a6b; --berry-soft:#f4e1e8;
  --cocoa:#5b3a26;
  --display:"Fraunces",Georgia,serif; --hand:"Caveat","Segoe Print",cursive;
  --sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --shadow:0 1px 0 rgba(255,255,255,.6) inset,0 12px 30px -12px rgba(70,45,20,.28),0 2px 6px rgba(70,45,20,.08);
  --grain: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='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .35 0 0 0 0 .25 0 0 0 0 .15 0 0 0 .07 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--paper) var(--grain);color:var(--ink);font:16.5px/1.65 var(--sans)}
img{display:block;max-width:100%;height:auto}
a{color:var(--sage);text-underline-offset:3px}
a:hover{color:var(--ink)}
:focus-visible{outline:3px solid var(--butter);outline-offset:3px;border-radius:4px}
.skip{position:absolute;left:-9999px}.skip:focus{left:16px;top:12px;z-index:9;background:var(--ink);color:#fff;padding:8px 12px;border-radius:6px}
.wrap{max-width:1080px;margin:0 auto;padding:0 22px}
.narrow{max-width:760px}
h1,h2,h3{font-family:var(--display);font-weight:600;line-height:1.08;letter-spacing:-.02em;margin:0;font-variation-settings:"opsz" 96}
h1{font-size:clamp(40px,7vw,76px);font-weight:500}
h1 em{font-style:italic;font-weight:400;color:var(--sage)}
h2{font-size:clamp(28px,4vw,40px);font-weight:500}
h3{font-size:22px}
p{margin:0 0 14px}
.hand{font-family:var(--hand);font-weight:700;font-size:1.45em;line-height:1;color:var(--berry)}
.kicker{font:600 11.5px/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--sage);margin:0 0 12px}
.center{text-align:center}
.lede{font-family:var(--display);font-size:clamp(18px,2.2vw,21px);line-height:1.55;color:var(--mut);margin-top:16px;max-width:36em;font-weight:400}
.small{font-size:13px;color:var(--mut)}

/* header / footer */
.top{position:sticky;top:0;z-index:5;background:rgba(247,239,226,.88);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;justify-content:space-between;align-items:center;height:64px;gap:16px}
.mark{display:flex;align-items:center;gap:10px;font-family:var(--display);font-weight:600;font-size:21px;color:var(--ink);text-decoration:none;letter-spacing:-.01em}
.mark-dot{width:12px;height:12px;border-radius:50%;background:var(--berry);box-shadow:16px 0 0 var(--butter),32px 0 0 var(--sage);margin-right:34px}
.top nav{display:flex;gap:26px}
.top nav a{text-decoration:none;color:var(--mut);font-size:15px;font-weight:500}
.top nav a:hover{color:var(--ink)}
.foot{margin-top:96px;background:var(--cocoa) var(--grain);color:#f3e6d3;padding:48px 0 44px;text-align:center}
.foot-mark{font-family:var(--display);font-size:26px;margin:0}
.foot-hand{font-family:var(--hand);font-size:26px;color:var(--butter-soft);margin:4px 0 14px}
.foot a{color:#f7e8c8}
.foot .small{color:#cdb79c}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:8px;padding:11px 18px;border-radius:999px;border:1.5px solid var(--sage);background:var(--sage);color:#fff;font:600 14.5px/1 var(--sans);text-decoration:none;cursor:pointer;transition:transform .15s,background .15s,box-shadow .15s}
.btn:hover{background:var(--ink);border-color:var(--ink);color:#fff;transform:translateY(-1px)}
.btn.ghost{background:var(--card);color:var(--ink);border-color:var(--line)}
.btn.ghost:hover{border-color:var(--sage);background:var(--sage-soft);color:var(--ink)}
.btn.big{padding:15px 24px;font-size:16px}
.btn[aria-pressed="true"]{background:var(--sage-soft);border-color:var(--sage)}
.ic{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}

/* home hero */
.hero{padding:56px 0 40px;overflow:hidden}
.hero-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:56px;align-items:center}
.hero-hand{font-size:32px;margin:0 0 10px;transform:rotate(-2deg);transform-origin:left}
.hero-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.polaroid{display:block;background:#fff;padding:14px 14px 50px;border-radius:4px;box-shadow:var(--shadow);transform:rotate(2.5deg);transition:transform .35s;position:relative;text-decoration:none}
.polaroid:hover{transform:rotate(0) scale(1.02)}
.polaroid img{border-radius:2px}
.polaroid .hand{position:absolute;left:0;right:0;bottom:12px;text-align:center;font-size:30px;color:var(--cocoa)}
.polaroid::before{content:"";position:absolute;top:-12px;left:50%;width:110px;height:28px;margin-left:-55px;background:rgba(232,213,170,.75);transform:rotate(-3deg);box-shadow:0 1px 2px rgba(0,0,0,.08)}

/* sections */
.sec-head{margin:72px 0 26px}
.feature{display:grid;grid-template-columns:1.25fr .75fr;gap:28px;align-items:center}
.feature-note .hand{font-size:30px;margin-bottom:12px;transform:rotate(-2deg)}
.feature-note p:last-child{color:var(--mut)}

/* index cards */
.icards{list-style:none;margin:28px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:22px}
.icard{position:relative;display:flex;flex-direction:column;height:100%;background:var(--card);border-radius:6px;padding:30px 24px 22px;text-decoration:none;color:var(--ink);box-shadow:var(--shadow);transition:transform .25s,box-shadow .25s;overflow:hidden;
  background-image:repeating-linear-gradient(transparent 0 31px,rgba(150,120,90,.13) 31px 32px);background-position:0 70px}
.icard::before{content:"";position:absolute;top:0;left:0;right:0;height:8px;background:var(--tone)}
.icard::after{content:"";position:absolute;top:0;bottom:0;left:22px;width:1px;background:rgba(156,74,107,.18)}
.icards li:nth-child(odd) .icard{transform:rotate(-.8deg)}
.icards li:nth-child(even) .icard{transform:rotate(.7deg)}
a.icard:hover{transform:rotate(0) translateY(-4px)!important;box-shadow:0 24px 40px -18px rgba(70,45,20,.4)}
.icard h3{margin:2px 0 8px;font-size:26px}
.icard p{color:var(--mut);font-size:15px;margin:0 0 18px}
.icard .go{margin-top:auto;font-weight:600;font-size:14px;color:var(--tone-ink)}
.icard-big{padding:40px 34px 30px}
.icard-big h3{font-size:clamp(34px,5vw,48px)}
.icard-big p{font-size:17px}
.icard-soon{border:2px dashed var(--line);box-shadow:none;background:transparent}
.icard-soon::before{background:var(--line)}
.tone-sage{--tone:var(--sage);--tone-soft:var(--sage-soft);--tone-ink:var(--sage)}
.tone-butter{--tone:var(--butter);--tone-soft:var(--butter-soft);--tone-ink:#8a5f17}
.tone-berry{--tone:var(--berry);--tone-soft:var(--berry-soft);--tone-ink:var(--berry)}
.icard .kicker{color:var(--tone-ink)}

/* quote band */
.quote-band{margin-top:88px;background:var(--paper-2) var(--grain);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:64px 0;text-align:center}
.quote-band .hand{font-size:30px}
.quote-band blockquote{font-family:var(--display);font-size:clamp(22px,3vw,30px);line-height:1.45;margin:14px 0 20px;font-weight:400}
.quote-band a{font-weight:600}

/* courses */
.courses{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.courses li{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:26px}
.course-ic{width:52px;height:52px;border-radius:14px;background:var(--sage-soft);color:var(--sage);display:grid;place-items:center;margin-bottom:16px}
.course-ic .ic{width:26px;height:26px}
.courses li:nth-child(2) .course-ic{background:var(--butter-soft);color:#8a5f17}
.courses li:nth-child(3) .course-ic{background:var(--berry-soft);color:var(--berry)}
.courses p{color:var(--mut);font-size:15px;margin:8px 0 0}

/* recipe page */
.recipe{padding-top:40px}
.rcard{position:relative;display:grid;grid-template-columns:1.2fr .8fr;gap:30px;align-items:stretch;background:var(--card);border-radius:8px;box-shadow:var(--shadow);padding:44px 40px 36px;overflow:hidden;
  background-image:repeating-linear-gradient(transparent 0 33px,rgba(150,120,90,.12) 33px 34px);background-position:0 92px}
.rcard::before{content:"";position:absolute;top:0;left:0;right:0;height:10px;background:var(--tone)}
.rcard::after{content:"";position:absolute;top:0;bottom:0;left:28px;width:1px;background:rgba(156,74,107,.2)}
.rcard .kicker{color:var(--tone-ink)}
.rcard h1{font-size:clamp(40px,6.5vw,68px)}
.photo{margin:0;border-radius:6px;overflow:hidden;min-height:220px;background:var(--tone-soft)}
.photo img{width:100%;height:100%;object-fit:cover}
.photo-empty{display:grid;place-items:center;border:2px dashed color-mix(in srgb,var(--tone) 35%,transparent)}
.photo-empty .hand{color:var(--tone-ink);font-size:30px;transform:rotate(-4deg)}
.meta{display:flex;flex-wrap:wrap;gap:12px 30px;margin:26px 0 0;padding:0}
.meta div{margin:0}
.meta dt{font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--mut)}
.meta dd{margin:4px 0 0;font-family:var(--display);font-size:20px;display:flex;align-items:center;gap:10px}
.scaler{display:inline-flex;align-items:center;background:var(--paper);border:1px solid var(--line);border-radius:999px}
.scaler button{width:34px;height:34px;border:0;background:none;font-size:20px;cursor:pointer;color:var(--ink);border-radius:50%}
.scaler button:hover{background:var(--tone-soft)}
.scaler output{min-width:34px;text-align:center;font-weight:600}
.unit{font-size:17px;color:var(--mut)}
.actions{display:flex;flex-wrap:wrap;gap:10px;margin:22px 0 34px}
.story{background:var(--card);border-left:4px solid var(--berry);border-radius:0 10px 10px 0;padding:18px 22px;margin:0 0 30px;font-family:var(--display);font-size:18px}
.story .hand{margin-bottom:8px}
.cols{display:grid;grid-template-columns:.9fr 1.1fr;gap:26px;align-items:start}
.panel{background:var(--card);border-radius:12px;padding:26px 26px 22px;border:1px solid var(--line)}
.panel h2{font-size:28px;margin-bottom:6px}
.progress{font-size:13.5px;color:var(--mut);margin:0 0 10px}
.progress [data-done]{font-weight:700;color:var(--ink)}
.ings{list-style:none;margin:0;padding:0}
.ings li{border-bottom:1px dashed var(--line)}
.ings label{display:flex;align-items:center;gap:12px;padding:11px 0;cursor:pointer}
.ings input{position:absolute;opacity:0;width:1px;height:1px}
.box{width:22px;height:22px;border:2px solid var(--line);border-radius:6px;flex:none;display:grid;place-items:center;transition:all .15s;background:#fff}
.ings input:checked+.box{background:var(--sage);border-color:var(--sage)}
.ings input:checked+.box::after{content:"✓";color:#fff;font-size:14px;font-weight:700}
.ings input:focus-visible+.box{outline:3px solid var(--butter);outline-offset:2px}
.ings input:checked~.ing-text{color:var(--mut);text-decoration:line-through;text-decoration-color:rgba(77,107,74,.5)}
.qty{font-weight:700}
.payoff{margin:14px 0 0;padding:12px 14px;border-radius:10px;background:var(--sage-soft);color:var(--sage);font-weight:600}
.payoff .hand{color:var(--sage);margin-right:6px}
.steps{margin:0;padding:0;list-style:none}
.step{display:flex;gap:14px;width:100%;text-align:left;background:none;border:0;border-radius:10px;padding:12px 10px;margin:0 -10px;font:inherit;color:inherit;cursor:pointer}
.step:hover{background:var(--paper)}
.step .n{width:32px;height:32px;border-radius:50%;background:var(--tone-soft,var(--sage-soft));color:var(--ink);font-weight:700;display:grid;place-items:center;flex:none}
.step[aria-pressed="true"]{color:var(--mut)}
.step[aria-pressed="true"] .n{background:var(--sage);color:#fff}
.step[aria-pressed="true"] .n::before{content:"✓"}
.step[aria-pressed="true"] .n{font-size:0}.step[aria-pressed="true"] .n::before{font-size:15px}
.pending{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;background:var(--butter-soft);border-radius:10px;padding:12px 14px;color:var(--mut);font-size:15px;margin:10px 0 0}
.pending .hand{font-size:22px;color:#8a5f17}
.made{margin:56px auto 0;max-width:560px;text-align:center;background:var(--card);border-radius:16px;padding:34px 26px;border:1px solid var(--line)}
.made h2{font-family:var(--hand);font-size:44px;color:var(--berry);font-weight:700}
.made p{color:var(--mut)}
.made-yes{margin-top:16px}
.made-yes .hand{font-size:28px}
.printurl{display:none}

/* nanny */
.dedication{padding-top:48px}
.frame{margin:0 0 44px;background:#fff;padding:16px;border-radius:4px;box-shadow:var(--shadow);transform:rotate(-1deg)}
.frame figcaption{font-size:13px;color:var(--mut);margin-top:12px;text-align:center}
.dedication blockquote{margin:0 auto 64px;max-width:32em;text-align:center;font-family:var(--display);font-size:clamp(20px,2.6vw,25px);line-height:1.6;font-weight:400}
.dedication .to{font-family:var(--hand);font-size:clamp(44px,6vw,60px);color:var(--berry);margin-bottom:14px;line-height:1}
.dedication .blessing{font-style:italic;color:var(--sage);margin-top:22px}
.favs-band{background:var(--paper-2) var(--grain);border-top:1px solid var(--line);padding:56px 0 64px}
.favs{list-style:none;margin:30px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px}
.favs li{background:var(--card);border-radius:6px;padding:22px 22px 18px;box-shadow:var(--shadow)}
.favs li:nth-child(3n+1){transform:rotate(-.6deg)}.favs li:nth-child(3n+2){transform:rotate(.5deg)}
.tag{display:inline-block;font-size:30px;color:var(--cocoa);margin-bottom:8px}
.favs p{margin:0;color:var(--mut);font-size:15px}
.favs .inbook{margin-top:10px;font-weight:600;color:var(--sage)}
.favs .inbook::before{content:"✓ "}
.hero-404{padding:80px 22px;text-align:center}.hero-404 .hand{font-size:40px}

/* reveal on scroll: movement only, never opacity, so a block that misses its trigger is still fully readable */
.js .reveal{transform:translateY(18px);transition:transform .7s cubic-bezier(.2,.7,.2,1)}
.js .reveal.in{transform:none}
.js .icards li.reveal.in:nth-child(2){transition-delay:.08s}.js .icards li.reveal.in:nth-child(3){transition-delay:.16s}

@media (max-width:820px){
  .hero-grid,.feature,.rcard,.cols{grid-template-columns:1fr}
  .hero-grid{gap:36px}
  .polaroid{max-width:420px;margin:0 auto}
  .courses{grid-template-columns:1fr}
  .rcard{padding:34px 24px 26px}
  .photo{min-height:160px}
  .top nav{gap:16px}
  .top nav a:nth-child(2){display:none}
}
@media (max-width:480px){
  .wrap{padding:0 16px}
  .mark{font-size:18px}.mark-dot{width:9px;height:9px;box-shadow:12px 0 0 var(--butter),24px 0 0 var(--sage);margin-right:26px}
  .actions .btn{flex:1 1 calc(50% - 10px);justify-content:center}
  .hero-cta .btn{flex:1 1 100%;justify-content:center}
}

/* print: one clean recipe card */
@page{size:letter;margin:.55in}
@media print{
  body{background:#fff;font-size:11pt;line-height:1.45}
  .top,.foot,.actions,.skip,.made,.photo,.scaler button,.progress,.payoff{display:none!important}
  .recipe{padding:0;max-width:none}
  .rcard{display:block;box-shadow:none;border:1px solid #ddd;padding:22pt 22pt 16pt;background-image:none}
  .rcard h1{font-size:28pt}
  .lede{font-size:12pt;margin-top:6pt}
  .meta{margin-top:10pt}
  .meta dd{font-size:13pt}
  .story{font-size:11pt;margin:12pt 0}
  .cols{grid-template-columns:.9fr 1.1fr;gap:16pt;margin-top:14pt}
  .panel{border:0;padding:0}
  .box{width:12pt;height:12pt;border-width:1.2pt}
  .ings label{padding:5pt 0}
  .step{padding:4pt 0;margin:0}
  .step .n{width:18pt;height:18pt;font-size:10pt}
  .pending{background:none;border:1px dashed #bbb}
  .printurl{display:block;margin-top:18pt;padding-top:8pt;border-top:1px solid #ddd;font-size:9pt;color:#777}
  .js .reveal{transform:none!important}
  a{color:inherit;text-decoration:none}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important;scroll-behavior:auto!important}
  .js .reveal{transform:none}}
