/* Pacific Northwest palette: fir, lichen, sockeye, Puget Sound, driftwood. Section colors are set per element as --c and --on. */
:root{
  color-scheme:light;
  --paper:#fbf8f0; --card:#ffffff; --ink:#16302b; --muted:#56675f; --rule:#e4dfd0;
  --fir:#0f4a3c; --fir-2:#14574a; --lichen:#c6e04f; --sockeye:#c93c25; --sound:#0f6f7a; --wash:#eef3df; --done:#7f8983;
  --f-display:"Young Serif", Georgia, "Times New Roman", serif;
  --f-body:"Figtree", system-ui, -apple-system, "Segoe UI", sans-serif;
  --f-mono:"IBM Plex Mono", ui-monospace, Menlo, monospace;
}
@media (prefers-color-scheme: dark){ :root{
  color-scheme:dark;
  --paper:#0e1c19; --card:#162a25; --ink:#eef2e8; --muted:#a3b3aa; --rule:#27403a;
  --sockeye:#ff8a70; --sound:#6fcad6; --wash:#1b332c; --done:#77827b;
}}

*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{background:var(--paper);color:var(--ink);font-family:var(--f-body);font-size:17px;line-height:1.55;margin:0;overflow-x:clip}
button{font:inherit;color:inherit}
a{color:var(--sockeye)}
:focus-visible{outline:2px solid var(--sound);outline-offset:2px;border-radius:4px}
h1,h2,h3{font-family:var(--f-display);font-weight:400;text-wrap:balance;margin:0}
.vh{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);border:0}
.wrap{max-width:1160px;margin:0 auto;padding:0 16px 72px}

/* ---------- header ---------- */
.site-head{background:var(--fir);color:#fff;position:relative;z-index:20}
.site-head-in{max-width:1160px;margin:0 auto;padding:10px 16px;display:flex;flex-wrap:wrap;align-items:center;gap:8px 20px}
.logo{font-family:var(--f-display);font-size:21px;color:#fff;text-decoration:none;display:inline-flex;gap:6px;line-height:1.2}
.logo span{color:var(--lichen)}
.site-nav{display:flex;align-items:center;gap:16px;font-weight:600;font-size:15px;margin-left:auto}
.site-nav>a,.menu summary{color:#fff;text-decoration:none;cursor:pointer;padding:6px 0}
.site-nav>a:hover,.menu summary:hover{color:var(--lichen)}
.menu{position:relative}
.menu summary{list-style:none}
.menu summary::-webkit-details-marker{display:none}
.menu summary::after{content:" ▾";font-size:12px}
.menu-panel{position:absolute;right:0;top:calc(100% + 8px);width:230px;background:var(--card);color:var(--ink);border:1px solid var(--rule);border-radius:12px;padding:6px;box-shadow:0 14px 34px rgba(10,40,32,.22);display:grid}
.menu-panel a{display:flex;align-items:center;gap:9px;color:var(--ink);text-decoration:none;padding:7px 9px;border-radius:7px;font-weight:500}
.menu-panel a:hover{background:var(--wash)}
.menu-panel i,.card-sec i,.fchip i{width:10px;height:10px;border-radius:50%;background:var(--c);flex:none;display:inline-block}

/* ---------- search ---------- */
.search{position:relative;display:flex;align-items:center;gap:8px;background:var(--card);color:var(--ink);border:1.5px solid var(--rule);border-radius:12px;padding:0 12px}
.search:focus-within{border-color:var(--sound)}
.search svg{flex:none;color:var(--muted)}
.search input{flex:1;min-width:0;border:0;background:transparent;font:inherit;color:var(--ink);padding:9px 0;outline:none}
.site-head .search{flex:1 1 100%;order:3}
.search-lg{border-radius:16px;padding:0 18px;border-color:transparent;box-shadow:0 10px 28px rgba(0,0,0,.2)}
.search-lg input{font-size:19px;padding:16px 0}
.suggest{position:absolute;left:-1px;right:-1px;top:calc(100% + 6px);margin:0;padding:6px;list-style:none;background:var(--card);border:1px solid var(--rule);border-radius:12px;box-shadow:0 14px 34px rgba(10,40,32,.22);z-index:30;text-align:left}
.suggest a{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:8px 10px;border-radius:7px;color:var(--ink);text-decoration:none;font-weight:600;font-size:15.5px;line-height:1.3}
.suggest small{color:var(--muted);font-weight:500;font-size:12.5px;white-space:nowrap}
.suggest li:hover a,.suggest li[aria-selected="true"] a{background:var(--wash)}
.suggest-all{border-top:1px solid var(--rule);margin-top:4px;padding-top:4px}
.suggest-all a{color:var(--sockeye);font-size:14.5px}

/* ---------- home ---------- */
.hero{background:var(--fir);color:#fff;position:relative;overflow:visible}
.hero-in{position:relative;z-index:2;max-width:820px;margin:0 auto;padding:40px 16px 34px;text-align:center}
.hero h1{font-size:clamp(34px,6.4vw,62px);line-height:1.06;letter-spacing:-.01em}
.hero p{margin:14px auto 22px;max-width:56ch;font-size:clamp(16.5px,2.2vw,19px);color:#dcebdd}
.quick{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 8px;margin-top:16px;align-items:center;font-size:14.5px}
.quick span{color:#cfe2d4}
.quick a{color:var(--fir);background:var(--lichen);font-weight:700;text-decoration:none;padding:4px 12px;border-radius:999px}
.quick a:hover{background:#fff}
.ridge{display:block;width:100%;height:120px}
.ridge-trees{fill:#0a3429}
@media (min-width:960px){.ridge{height:170px}}

.shelf{margin-top:44px}
.shelf-first{margin-top:18px}
.shelf-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:14px}
.shelf-head h2{font-size:clamp(25px,3.4vw,32px);line-height:1.15}
.shelf-head a{font-weight:600;font-size:15px;text-decoration:none;white-space:nowrap}
.shelf-head a:hover{text-decoration:underline}
.tiles{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.tile{display:flex;flex-direction:column;justify-content:space-between;gap:12px;height:100%;min-height:104px;padding:14px;border-radius:14px;background:var(--c);color:var(--on);text-decoration:none;font-family:var(--f-display);font-size:20px;line-height:1.15;transition:transform .15s ease}
.tile:hover{transform:translateY(-3px)}
.tile small{font-family:var(--f-body);font-size:13px;font-weight:600;opacity:.9}
.promise{margin-top:52px;background:var(--wash);border-radius:18px;padding:24px 22px}
.promise h2{font-size:25px}
.promise ul{list-style:none;margin:14px 0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.promise li{background:var(--fir);color:#fff;font-weight:600;font-size:14px;padding:5px 12px;border-radius:999px}
.promise p{margin:0;color:var(--muted)}

/* ---------- cards ---------- */
.cards{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr;gap:12px}
.card a{display:flex;flex-direction:column;gap:6px;height:100%;background:var(--card);border:1px solid var(--rule);border-top:6px solid var(--c);border-radius:12px;padding:14px 16px;color:inherit;text-decoration:none;transition:transform .15s ease,box-shadow .15s ease}
.card a:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(10,40,32,.11)}
.card a:hover .card-t{color:var(--sockeye)}
.card-sec{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;color:var(--muted)}
.saved-mark{margin-left:auto;color:var(--sockeye);font-weight:700}
.card-t{font-family:var(--f-display);font-size:20px;line-height:1.2}
.card-d{color:var(--muted);font-size:14.5px;line-height:1.42;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card-m{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:auto;padding-top:6px;font-size:13.5px;font-weight:600;color:var(--ink)}
.card-p{color:var(--sound)}

/* ---------- list pages ---------- */
.rband{--c:var(--fir);--on:#fff;background:var(--c);color:var(--on)}
.rband-in{max-width:1160px;margin:0 auto;padding:22px 16px 26px;display:grid;gap:8px}
.rband h1{font-size:clamp(31px,5.6vw,52px);line-height:1.07;max-width:24ch}
.rband .desc{margin:0;font-size:clamp(16.5px,2.1vw,18.5px);max-width:64ch;line-height:1.5}
.rband .desc a{color:inherit}
.crumbs{display:flex;gap:7px;font-size:14px;font-weight:600}
.crumbs a{color:var(--on);text-decoration:none}
.crumbs a:hover{text-decoration:underline}
.browse-top{position:sticky;top:0;z-index:10;background:var(--paper);padding:14px 0 8px;display:grid;gap:8px}
.browse-top .search input{padding:12px 0}
.browse-top .suggest{display:none}
.browse-bar{display:flex;align-items:center;justify-content:space-between;gap:12px}
.count{margin:0;font-weight:700}
.sort{font-size:14px;color:var(--muted);font-weight:600}
.sort select{font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--rule);border-radius:8px;padding:5px 7px;margin-left:4px}
.filters{border:1px solid var(--rule);border-radius:12px;background:var(--card);margin-bottom:14px}
.filters summary{padding:10px 14px;font-weight:700;cursor:pointer}
.filters-in{padding:0 14px 14px;display:grid;gap:14px}
.fgroup{border:0;margin:0;padding:0;min-width:0}
.fgroup legend{padding:0;margin-bottom:6px;font-size:12.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.fchips{display:flex;flex-wrap:wrap;gap:6px}
.fchip{display:inline-flex;align-items:center;gap:7px;background:var(--paper);border:1px solid var(--rule);border-radius:999px;padding:5px 11px;font-size:14px;font-weight:500;cursor:pointer}
.fchip:hover{border-color:var(--sound)}
.fchip[aria-pressed="true"]{background:var(--fir);border-color:var(--fir);color:#fff}
.clear{justify-self:start;background:none;border:0;padding:0;color:var(--sockeye);font-weight:700;font-size:14.5px;cursor:pointer;text-decoration:underline}
.empty{padding:28px 0;color:var(--muted)}
.empty p{margin:0 0 8px}

/* ---------- recipe ---------- */
.meta{display:flex;flex-wrap:wrap;gap:1px;background:var(--rule);border:1px solid var(--rule);border-radius:12px;overflow:hidden;margin-top:18px}
.meta div{flex:1 1 130px;background:var(--card);padding:10px 14px;min-width:0}
.meta b{display:block;font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:700}
.meta span{font-size:15.5px;font-weight:500}
.meta .prot span{color:var(--sound);font-weight:700}
.rtools{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-top:14px}
.tags{display:flex;flex-wrap:wrap;gap:6px}
.tags a{font-size:13px;font-weight:600;padding:3px 10px;border-radius:999px;background:var(--wash);color:var(--ink);text-decoration:none}
.tags a:hover{background:var(--lichen);color:#16302b}
.icons{display:flex;flex-wrap:wrap;gap:6px}
.ib{border:1px solid var(--rule);background:var(--card);border-radius:10px;height:38px;padding:0 12px;display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-size:14px;font-weight:600}
.ib:hover{border-color:var(--sound)}
.ib[aria-pressed="true"]{background:var(--fir);border-color:var(--fir);color:#fff}

.sec{margin-top:28px}
.sechead{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:6px}
.sec h2{font-size:26px}
.scale{display:inline-flex;border:1px solid var(--rule);border-radius:10px;overflow:hidden;background:var(--card)}
.scale button{border:0;background:transparent;padding:6px 11px;font-family:var(--f-mono);font-size:13px;cursor:pointer}
.scale button[aria-pressed="true"]{background:var(--fir);color:#fff}
.group{margin-top:14px}
.group h3{font-family:var(--f-body);font-size:12.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--sockeye);font-weight:700;margin-bottom:2px}
.hint{font-size:13px;color:var(--muted);margin:4px 0 0}

.ing{list-style:none;margin:0;padding:0}
.ing li{position:relative;border-bottom:1px dashed var(--rule)}
.ing label{display:grid;grid-template-columns:76px 1fr;gap:12px;padding:8px 0;cursor:pointer;align-items:baseline}
.ing .q{font-family:var(--f-mono);font-size:14.5px;line-height:1.3;font-variant-numeric:tabular-nums;text-align:right}
.ing .q small{font-size:12px;color:var(--muted);margin-left:2px}
.ing .i{min-width:0}
.ing .note{color:var(--muted);font-size:14px}
.ing li:has(input:checked) :is(.i,.q,.note,small){color:var(--done);text-decoration:line-through;text-decoration-color:var(--done)}
.ing li:has(input:focus-visible),.steps li:has(input:focus-visible){outline:2px solid var(--sound);outline-offset:2px;border-radius:4px}

.steps{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:4px}
.steps li{position:relative;border-bottom:1px solid var(--rule)}
.steps label{display:grid;grid-template-columns:38px 1fr;gap:12px;padding:12px 0;cursor:pointer}
.steps .num{font-family:var(--f-display);font-size:27px;line-height:1;color:var(--sockeye);text-align:right;padding-top:2px}
.steps .st{font-weight:700;display:block;margin-bottom:2px}
.steps .tx{display:block}
.steps li:has(input:checked) .body{opacity:.45}
.steps li:has(input:checked) .num{font-size:0}
.steps li:has(input:checked) .num::after{content:"✓";font-size:27px;color:var(--sound)}

.notes{margin-top:26px;background:var(--wash);border-radius:14px;padding:16px 18px}
.notes h2{font-size:21px;margin-bottom:6px}
.notes ul{margin:0;padding-left:18px;display:grid;gap:6px}
.notes li{font-size:15.5px}
.src{margin-top:18px;font-size:13px;color:var(--muted)}

/* ---------- about ---------- */
.prose{max-width:720px;padding-top:12px}
.prose section{margin-top:30px}
.prose h2{font-size:27px;margin-bottom:8px}
.prose p{margin:0 0 12px}
.prose dt{font-weight:700;margin-top:12px}
.prose dd{margin:2px 0 0;color:var(--muted)}

/* ---------- footer ---------- */
.site-foot{background:var(--fir);color:#dcebdd;font-size:15px}
.site-foot-in{max-width:1160px;margin:0 auto;padding:30px 16px 36px;display:grid;gap:22px}
.site-foot p{margin:8px 0 0;max-width:36ch}
.site-foot nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 16px;align-content:start}
.site-foot nav a{color:#fff;text-decoration:none}
.site-foot nav a:hover{color:var(--lichen)}

/* ---------- wider screens ---------- */
@media (min-width:640px){
  .tiles{grid-template-columns:repeat(3,1fr)}
  .cards{grid-template-columns:repeat(2,1fr)}
  .cards-row{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:639px){ .cards-row{grid-template-columns:1fr} }
@media (min-width:760px){
  .site-head .search{flex:0 1 330px;order:0;margin-left:0}
  .site-nav{margin-left:auto}
}
@media (min-width:960px){
  .wrap,.site-head-in,.rband-in,.site-foot-in{padding-inline:32px}
  .tiles{grid-template-columns:repeat(4,1fr)}
  .rband-in{padding-block:36px 40px}
  .browse-grid{display:grid;grid-template-columns:250px minmax(0,1fr);gap:32px;align-items:start}
  .filters{position:sticky;top:124px;max-height:calc(100vh - 136px);overflow-y:auto;margin:0;border:0;background:transparent}
  .filters summary{display:none}
  .filters-in{padding:0 4px 4px}
  .site-foot-in{grid-template-columns:1.3fr 1.2fr .8fr}
  .site-foot nav:last-child{grid-template-columns:1fr}
  .cook{display:grid;grid-template-columns:380px minmax(0,1fr);gap:56px;align-items:start}
  .ingredients{position:sticky;top:12px;max-height:calc(100vh - 24px);overflow-y:auto;padding-right:10px;scrollbar-width:thin}
}

@media (prefers-reduced-motion:reduce){ .tile,.card a{transition:none} .tile:hover,.card a:hover{transform:none} }

/* ---------- print: one clean sheet for the counter ---------- */
@media print{
  :root{--paper:#fff;--card:#fff;--ink:#000;--muted:#444;--rule:#bbb;--sockeye:#000;--sound:#000;--wash:#fff;color-scheme:light}
  body{font-size:11.5pt;line-height:1.4}
  .site-head,.site-foot,.crumbs,.rtools,.scale,.hint,.src,.related{display:none!important}
  .rband{background:#fff;color:#000}
  .rband-in{padding:0 0 8pt}
  .rband h1{font-size:24pt;max-width:none}
  .rband .desc{font-size:11.5pt}
  .wrap{max-width:none;padding:0}
  .meta{margin-top:0;border-radius:0}
  .cook{display:grid;grid-template-columns:36% 1fr;gap:18pt;align-items:start}
  .ingredients{position:static;max-height:none;overflow:visible;padding:0}
  .sec{margin-top:8pt}
  .ing label{grid-template-columns:52pt 1fr;gap:6pt;padding:2pt 0}
  .steps label{padding:5pt 0}
  .steps li{break-inside:avoid}
  .notes{padding:8pt 0 0;border-top:1px solid var(--rule);border-radius:0}
  .ing li:has(input:checked) :is(.i,.q,.note,small){color:inherit;text-decoration:none}
  .steps li:has(input:checked) .body{opacity:1}
}
