/* Semmelguiden - "Fettisdagen" brand, visual refresh (CR-56, hallmark-informed).
   Same brand, name and logo; only the visual style changes: warm florsocker paper, espresso
   ink, one berry accent, cardamom secondary. Fraunces display + Hanken body + monospace data. */

:root {
  /* palette - warm paper almanac */
  --ink:#2A211C;          /* espresso ink - text & brand */
  --muted:#6E6152;        /* warm taupe, darkened for WCAG AA contrast on --bg (~5:1) - CR-125 */
  --bg:#F4ECE0;           /* florsocker paper ground */
  --card:#FBF6EE;         /* lighter cream surface */
  --line:#D9CDBB;         /* warm hairline */
  --line-strong:#C3B39B;
  --sidebar:#F4ECE0;      /* masthead shares the paper */
  --gold:#C98A2B;         /* cardamom - warm secondary */
  --gold-ink:#8A5E14;     /* readable cardamom-on-paper for small text */
  --lingon:#B3122E;       /* berry - the single accent (<5%) */
  --dusk:#2A211C;         /* dark sections are espresso now */
  --dusk-2:#3A2E26;
  --cream:#F7F0E5;        /* text on espresso */

  /* semla anatomy layer tints (top → bottom) */
  --lock:#E6C079; --gradde:#EAD9B4; --mandel:#B5825A; --brod:#C88C3C;

  /* type - Fraunces display + Hanken body + monospace data-outlier (3 families) */
  --display:'Fraunces', Georgia, 'Times New Roman', serif;
  --body:'Hanken Grotesk', -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;
  --mono:ui-monospace, 'SF Mono', Menlo, 'Cascadia Mono', 'Consolas', monospace;
  --s--1:.82rem; --s0:1rem; --s1:1.15rem; --s2:1.4rem; --s3:1.85rem; --s4:2.4rem;

  /* 4px space scale (hallmark gate 24) */
  --space-2xs:4px; --space-xs:8px; --space-sm:12px; --space-md:16px;
  --space-lg:24px; --space-xl:32px; --space-2xl:48px; --space-3xl:64px;

  /* shape - flatter, more editorial than v3 */
  --r:8px; --r-sm:4px; --shadow:0 6px 22px rgba(42,33,28,.08);
}
html, body { overflow-x:clip; }        /* hallmark gate 34 */

* { box-sizing:border-box; }
html { -webkit-text-size-adjust:100%; }
body {
  margin:0; font-family:var(--body); font-weight:420;
  color:var(--ink); background:var(--bg); line-height:1.6;
  font-feature-settings:"tnum" 0; -webkit-font-smoothing:antialiased;
}
a { color:inherit; text-decoration:none; }
a:hover { text-decoration:underline; text-underline-offset:2px; }
img { max-width:100%; }
:focus-visible { outline:2.5px solid var(--gold); outline-offset:2px; border-radius:3px; }

h1,h2,h3 { font-family:var(--display); font-weight:600; line-height:1.12;
           letter-spacing:-.01em; text-wrap:balance; margin:0; }
h1 { font-size:clamp(2rem,1.3rem + 2.6vw,var(--s4)); }
h2 { font-size:var(--s3); margin-top:2.4rem; }
h3 { font-size:var(--s2); }
p { margin:.7rem 0; }
strong { font-weight:640; }

/* ---------- layout: mobile-first top bar, full-width content (CR-53) ---------- */
.layout { display:flex; flex-direction:column; min-height:100vh; }
/* masthead - full width, sticky top (structure + brand unchanged; new palette only) */
.sidebar { width:100%; background:var(--sidebar); border-bottom:1px solid var(--line);
           position:sticky; top:0; z-index:30; padding:.7rem 1.1rem;
           display:flex; flex-direction:column; gap:0; }
.sidebar-top { display:flex; align-items:center; gap:.7rem; width:100%; }
.brand { font-family:var(--display); font-weight:600; font-size:1.18rem;
         display:flex; align-items:center; gap:.45rem; letter-spacing:-.02em; }
.brand:hover { text-decoration:none; }
.brand-mark { width:30px; height:30px; flex:0 0 auto; display:block; }
.count-chip { display:inline-flex; align-items:baseline; gap:.35rem;
              background:var(--dusk); color:var(--cream); border-radius:999px;
              padding:.3rem .7rem; font-size:.74rem; margin:0 0 0 auto; width:fit-content; white-space:nowrap; }
.count-chip b { font-size:.9rem; color:var(--cream); font-variant-numeric:tabular-nums; }

.site-nav { width:100%; display:flex; flex-direction:column; gap:.05rem; padding-top:.5rem; }
.site-nav a { padding:.65rem .55rem; border-bottom:1px solid var(--line); color:var(--ink);
              display:block; transition:background .12s,color .12s; }
.site-nav a:last-child { border-bottom:0; }
.site-nav a:hover { background:#efe6d7; text-decoration:none; }
.site-nav a[aria-current="page"] { background:#efe6d7; font-weight:620; }
.nav-label { display:block; text-transform:uppercase; letter-spacing:.11em; font-size:.66rem;
             color:var(--muted); font-weight:700; margin:.8rem .55rem .1rem; }
.nav-all { color:var(--gold-ink); font-weight:640; }

/* hamburger toggle - shown on mobile, hidden on desktop */
.nav-toggle { display:inline-flex; border:1px solid var(--line); background:var(--card); border-radius:10px;
              width:44px; height:40px; align-items:center; justify-content:center; cursor:pointer;
              flex:0 0 auto; color:var(--ink); margin-left:.4rem; }
.nav-toggle-bars, .nav-toggle-bars::before, .nav-toggle-bars::after {
  content:""; display:block; width:20px; height:2px; background:currentColor; border-radius:2px; }
.nav-toggle-bars { position:relative; }
.nav-toggle-bars::before { position:absolute; top:-6px; }
.nav-toggle-bars::after  { position:absolute; top:6px; }
@media (prefers-reduced-motion:no-preference) {
  .nav-toggle-bars, .nav-toggle-bars::before, .nav-toggle-bars::after { transition:transform .2s ease, background .2s ease, top .2s ease; }
  .js .site-nav { transition:max-height .26s ease, opacity .2s ease; }
}
.nav-toggle[aria-expanded="true"] .nav-toggle-bars { background:transparent; }
.nav-toggle[aria-expanded="true"] .nav-toggle-bars::before { top:0; transform:rotate(45deg); }
.nav-toggle[aria-expanded="true"] .nav-toggle-bars::after  { top:0; transform:rotate(-45deg); }
/* progressive enhancement: the drawer collapses only when JS is present (mobile) */
.js .site-nav { max-height:0; opacity:0; overflow:hidden; }
.js .site-nav.is-open { max-height:82vh; opacity:1; overflow:auto; }
/* CR-53 (B): inline primary links + "Mer" - hidden on mobile, shown on desktop */
.nav-primary { display:none; }
.nav-toggle-text { display:none; }

.content-col { flex:1 1 auto; min-width:0; width:100%; }
.site-main { max-width:1180px; margin:0 auto; padding:1.2rem 1.1rem 2.6rem; }
.breadcrumb { padding:1rem 0 0; font-size:.82rem; color:var(--muted); }
.breadcrumb a:hover { color:var(--ink); }
/* CR-55/57: page-top row (breadcrumb + share button) - shares .site-main inline padding so both edges align */
.page-top { max-width:1180px; margin:0 auto; padding:0 1.1rem; display:flex; align-items:center; gap:1rem;
            justify-content:space-between; }
.page-top .breadcrumb { flex:1 1 auto; min-width:0; }
.share-btn { flex:0 0 auto; margin:1rem 0 0; display:inline-flex; align-items:center; gap:.3rem;
             background:transparent; border:1px solid var(--line); border-radius:999px; cursor:pointer;
             color:var(--muted); font-family:var(--body); font-size:.78rem; padding:.28rem .7rem;
             transition:background .12s,color .12s,border-color .12s; }
.share-btn:hover { color:var(--ink); border-color:var(--muted); background:var(--card); }

/* desktop: primary links inline (right) + "Mer" drawer; full-width content (CR-53 B - structure unchanged) */
@media (min-width:821px) {
  /* masthead inner shares the exact width + inline padding of .site-main so menu and text align */
  .sidebar { padding:.6rem 0; }
  .sidebar-top, .site-nav { max-width:1180px; margin-inline:auto; padding-inline:2rem; }
  .site-nav.is-open { padding-bottom:.6rem; }
  .site-main { padding:1.9rem 2rem 3.5rem; }
  .breadcrumb { padding:1.1rem 0 0; }
  .page-top { padding:0 2rem; }
  .count-chip { display:none; }
  .nav-primary { display:flex; flex-wrap:wrap; align-items:center; gap:.05rem .1rem; margin-left:auto; }
  .nav-primary a { padding:.35rem .6rem; border-radius:var(--r-sm); font-size:.92rem; color:var(--ink);
                   white-space:nowrap; }
  .nav-primary a:hover { background:var(--card); text-decoration:none; }
  .nav-toggle { width:auto; height:auto; padding:.42rem .8rem; gap:.35rem; margin-left:.5rem; }
  .nav-toggle-bars { display:none; }
  .nav-toggle-text { display:inline; font-family:var(--body); font-size:.88rem; font-weight:600; }
}
/* CR-53 fix: search moved out of the overflow:hidden hero into its own band (dropdown was clipped) */
.home-search-band { margin:.1rem 0 1.7rem; }
.home-search-band .home-search { margin-top:0; }

/* ---------- shared text bits ---------- */
.lead { font-size:var(--s1); color:#544b5b; max-width:60ch; }
.muted { color:var(--muted); font-size:.9rem; }
.note { color:var(--muted); font-size:.85rem; }
.kicker { text-transform:uppercase; letter-spacing:.13em; font-size:.72rem;
          color:var(--gold-ink); font-weight:700; margin:0 0 .3rem; }
.eyebrow { text-transform:uppercase; letter-spacing:.13em; font-size:.7rem;
           color:var(--muted); font-weight:700; }
.badge { background:#efe6d7; color:#6c6270; font-size:.68rem; font-weight:600;
         padding:.1rem .45rem; border-radius:5px; letter-spacing:.02em; }
.rating { font-family:var(--mono); color:var(--gold-ink); font-weight:600; font-variant-numeric:tabular-nums; }
.mono-line { font-family:var(--mono); font-size:.8rem; color:var(--muted); font-variant-numeric:tabular-nums; }
.place-stats { font-family:var(--mono); font-size:.82rem; color:var(--muted); margin-top:-.2rem;
               font-variant-numeric:tabular-nums; }
.place-stats .star { color:var(--gold-ink); }
/* CR-61: unique per-city intro */
.place-intro, .bakery-intro { max-width:62ch; margin:1.2rem 0 0; font-size:1.06rem; color:#4a4038;
               border-left:3px solid var(--gold); padding-left:1rem; }
.place-intro p, .bakery-intro p { margin:.35rem 0; }

/* ---------- hero (dusk band) ---------- */
.hero { position:relative; overflow:hidden; border-radius:var(--r);
        background:linear-gradient(135deg,var(--dusk),var(--dusk-2));
        color:var(--cream); margin-bottom:.6rem;
        display:grid; grid-template-columns:1.15fr .85fr; align-items:stretch; }
.hero-body { padding:2.4rem 2rem; align-self:center; }
.hero .eyebrow { color:#c8b6ff; }
.hero h1 { color:#fff; margin:.5rem 0 .7rem; }
.hero p { color:#d9d1e6; max-width:42ch; }
.hero-count { display:inline-flex; align-items:baseline; gap:.5rem; margin-top:1.1rem;
              background:rgba(255,255,255,.09); border:1px solid rgba(255,255,255,.16);
              border-radius:999px; padding:.4rem .9rem; font-size:.82rem; }
.hero-count b { font-size:1.05rem; color:var(--gold); font-variant-numeric:tabular-nums; }
.hero-figure { position:relative; min-height:230px; }
.hero-figure img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.hero-figure::after { content:""; position:absolute; inset:0;
  background:linear-gradient(90deg,var(--dusk) 0%,rgba(33,27,55,.35) 30%,transparent 60%); }
.hero-credit { position:absolute; left:1rem; bottom:.9rem; z-index:2;
               font-size:.76rem; color:#fff; text-shadow:0 1px 6px rgba(0,0,0,.6); }
.hero-credit .rating { color:var(--gold); }
@media (max-width:720px) {
  .hero { grid-template-columns:1fr; }
  .hero-body { padding:1.6rem 1.3rem; order:2; }
  .hero-figure { order:1; min-height:200px; }
  .hero-figure::after { background:linear-gradient(0deg,var(--dusk) 0%,transparent 55%); }
}

/* section heading with eyebrow, no gold underline */
.section-head { margin-top:2.6rem; padding-top:1.4rem; border-top:2px solid var(--ink); }
.section-head h2 { margin-top:.15rem; }
.home-first .section-head { margin-top:1.8rem; }

/* ---------- CR-56: home lede + top-pick inset ---------- */
.lede { display:grid; grid-template-columns:1.35fr .9fr; gap:var(--space-2xl); align-items:end;
        padding-block:2.4rem 2.6rem; }
.lede h1 { font-size:clamp(2.1rem,1.4rem + 3vw,3.6rem); max-width:15ch; margin:.4rem 0 0; }
.lede .lead { margin-top:1.1rem; }
.lede-stamp { font-family:var(--mono); font-size:.74rem; letter-spacing:.02em; color:var(--muted);
              margin-top:1.2rem; }
.lede-stamp b { color:var(--ink); }
.pick { position:relative; border:1px solid var(--line-strong); background:var(--card);
        padding:1.4rem; text-align:left; }
.pick-tag { position:absolute; top:-.85rem; left:1.2rem; background:var(--lingon); color:var(--bg);
            font-family:var(--mono); font-size:.62rem; letter-spacing:.09em; text-transform:uppercase;
            padding:.2rem .55rem; }
.pick-img { width:100%; height:190px; object-fit:cover; border-radius:var(--r-sm); display:block;
            margin:.4rem 0 .9rem; }
.pick-mark { display:block; margin:.6rem auto 1rem; }
.pick-name { font-size:1.4rem; }
.pick-meta { font-family:var(--mono); font-size:.72rem; color:var(--muted); margin:.15rem 0 0; }
.pick-score { font-family:var(--mono); font-size:2.4rem; color:var(--lingon); line-height:1;
              font-variant-numeric:tabular-nums; margin:.5rem 0 .2rem; }
.pick-score span { font-size:1.1rem; color:var(--ink); }
.pick-link { font-family:var(--mono); font-size:.72rem; text-transform:uppercase; letter-spacing:.07em;
             color:var(--gold-ink); }

/* ---------- CR-56: the ranking chart (signature) ---------- */
.chart-section { margin-top:2.4rem; }
.chart-head { display:flex; align-items:baseline; justify-content:space-between; gap:1rem;
              padding-top:1.4rem; border-top:2px solid var(--ink); }
.chart { list-style:none; margin:.6rem 0 0; padding:0; }
.chart-row { display:grid; grid-template-columns:2.4rem minmax(0,1fr) auto; gap:1rem; align-items:center;
             padding-block:.85rem; border-bottom:1px solid var(--line); }
.chart-rank { font-family:var(--mono); font-size:1.4rem; color:var(--muted); text-align:right;
              font-variant-numeric:tabular-nums; }
.chart-row:first-child .chart-rank { color:var(--lingon); }
.chart-who { min-width:0; }
.chart-name { font-family:var(--display); font-size:1.25rem; font-weight:600; }
.chart-city { display:block; font-family:var(--mono); font-size:.7rem; color:var(--muted); margin-top:.05rem; }
.chart-bar { display:block; height:4px; background:var(--line); margin-top:.4rem; max-width:360px; position:relative; }
.chart-bar span { position:absolute; inset:0 auto 0 0; background:var(--gold); }
.chart-row:first-child .chart-bar span { background:var(--lingon); }
.chart-val { font-family:var(--mono); font-size:1.25rem; font-variant-numeric:tabular-nums; text-align:right;
             white-space:nowrap; }
.chart-val small { color:var(--muted); font-size:.8rem; }
@media (max-width:820px) { .lede { grid-template-columns:1fr; gap:var(--space-xl); padding-block:1.6rem 2rem; } }

/* ---------- bakery cards ---------- */
.bcard-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr));
              gap:1.1rem; margin-top:1.1rem; }
.bcard { background:var(--card); border:1px solid var(--line); border-radius:var(--r);
         overflow:hidden; transition:box-shadow .15s,transform .15s; }
.bcard:hover { box-shadow:var(--shadow); transform:translateY(-2px); }
.bcard-link, .bcard-link:hover { display:block; text-decoration:none; }
.bcard-media { position:relative; aspect-ratio:4/3; background:#efe6d7; }
.bcard-media img { width:100%; height:100%; object-fit:cover; display:block; }
.bcard-noimg { display:flex; align-items:center; justify-content:center; height:100%; font-size:2.6rem; }
.bcard-body { padding:.7rem .8rem .85rem; }
.bcard-name { display:block; font-family:var(--display); font-weight:600; font-size:1.08rem;
              line-height:1.2; }
.bcard-meta { display:flex; align-items:center; gap:.45rem; flex-wrap:wrap; margin-top:.35rem; }
.bcard-city { color:var(--muted); font-size:.82rem; }

/* rank badge */
.rank { display:inline-flex; min-width:1.75rem; height:1.75rem; padding:0 .35rem;
        align-items:center; justify-content:center; background:var(--gold); color:#fff;
        border-radius:999px; font-family:var(--display); font-weight:600; font-size:.9rem;
        font-variant-numeric:tabular-nums; }
.rank-abs { position:absolute; top:.55rem; left:.55rem; box-shadow:0 2px 8px rgba(0,0,0,.28); }
.rank.rank-1 { background:var(--lingon); }

/* ---------- map (CR-16: Leaflet + OSM) ---------- */
.semla-map { flex:1 1 340px; height:440px; border-radius:var(--r); overflow:hidden;
             border:1px solid var(--line); background:#e7edf0; isolation:isolate; }
/* CR-73: world map sits in the article column, so it is a full-width block, not a flex child */
.semla-map-world { flex:none; width:100%; height:min(58vh, 460px); margin:1.3rem 0 .4rem; }
.semla-map .leaflet-container { font-family:var(--body); background:#e7edf0; }
.semla-map .leaflet-popup-content { font-size:.9rem; }
.semla-map .leaflet-popup-content strong { font-family:var(--display); }
/* CR-114: Senaste nytt - home freshness strip + archive page */
.news-strip { margin:1.4rem 0 0; }
.news-head { display:flex; align-items:baseline; justify-content:space-between; gap:1rem; }
.news-all { font-size:.82rem; font-weight:640; white-space:nowrap; }
.news-list { list-style:none; padding:0; margin:.4rem 0 0; display:flex; flex-direction:column; gap:.2rem; }
.news-list li { display:flex; align-items:baseline; justify-content:space-between; gap:.6rem;
                padding:.35rem 0; border-top:1px solid var(--line); font-size:.9rem; }
.news-list li > a { display:flex; align-items:baseline; gap:.5rem; flex-wrap:wrap; min-width:0; }
.news-list time, .news-archive time { color:var(--muted); font-size:.78rem; white-space:nowrap; font-variant-numeric:tabular-nums; }
.news-tag { font-size:.7rem; font-weight:700; text-transform:uppercase; letter-spacing:.03em;
            color:var(--lingon); background:var(--cream); padding:.1rem .4rem; border-radius:999px; white-space:nowrap; }
.news-title { font-weight:600; }
.news-archive { list-style:none; padding:0; margin:1rem 0 0; }
.news-archive li { display:flex; align-items:baseline; gap:.6rem; flex-wrap:wrap;
                   padding:.5rem 0; border-top:1px solid var(--line); }
.news-archive time { min-width:4.5rem; }

/* CR-123: FAQ section (visible Q&A backing the FAQPage schema) */
.faq { margin:1.8rem 0 0; }
.faq h2 { margin-bottom:.5rem; }
.faq-item { border-top:1px solid var(--line); padding:.55rem 0; }
.faq-item summary { cursor:pointer; font-weight:640; font-family:var(--display); }
.faq-item p { margin:.5rem 0 .2rem; }

/* CR-122: article byline + dates (E-E-A-T) - discreet, instrument-like */
.byline { font-family:var(--body); font-size:.82rem; color:var(--muted); margin:.1rem 0 .6rem; }
.byline time { color:inherit; }

/* CR-115: bakery mini-map is a full-width block in the content column, not a flex child */
.bakery-map { flex:none; width:100%; height:300px; margin:1.2rem 0 .4rem; }

/* CR-115: bakery page zones - readable content first, then a clearly separated contribution area */
.admin-bar { margin:0 0 .3rem; opacity:.75; }
.related-links { margin:1.6rem 0 0; }
.related-links h2 { margin-bottom:.4rem; }
.related-links ul { list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:.3rem; }
.related-links li { padding:.15rem 0; }
.zone-divider { border:0; border-top:2px solid var(--line); margin:2.2rem 0 0; }
.contribute-zone { margin-top:0; padding-top:.2rem; }
.contribute-zone .zone-heading { margin:1.1rem 0 .2rem; }
.contribute-zone > .muted { margin-top:0; }
.contribute-zone .like, .contribute-zone .mylist, .contribute-zone .contribute { margin-top:1rem; }

/* ---------- CR-21 semla variant chips ---------- */
.variants { display:flex; gap:.4rem; flex-wrap:wrap; margin:.3rem 0 .9rem; }
.vchip { font-size:.78rem; font-weight:640; padding:.15rem .6rem; border-radius:999px; border:1px solid var(--line); }
.vchip a, .vchip a:hover { text-decoration:none; color:inherit; }
.vchip-klassisk { background:#efe6d7; color:#6c6270; }
.vchip-modern { background:#fbeef1; color:var(--lingon); border-color:var(--lingon); }
/* CR-69: dietary chip + the semlor filter row */
.vchip-diet { background:#eaf3ec; color:#2f6b45; border-color:#bcd9c5; text-decoration:none; }
.semla-filter { display:flex; flex-wrap:wrap; align-items:center; gap:.5rem; margin:1rem 0 1.2rem; }
.fchip { display:inline-flex; align-items:center; gap:.4rem; font-size:.85rem; font-weight:640;
  padding:.3rem .7rem; border-radius:999px; border:1px solid var(--line); color:var(--ink);
  text-decoration:none; background:var(--card); }
.fchip span { font-family:var(--mono); font-size:.72rem; color:var(--gold-ink); }
.fchip.is-on { background:var(--ink); color:#fff; border-color:var(--ink); }
.fchip.is-on span { color:#fff; opacity:.75; }
.fchip-diet.is-on { background:#2f6b45; border-color:#2f6b45; }
.fchip-sep { width:1px; height:1.2rem; background:var(--line); margin:0 .2rem; }
.variant-form { display:flex; gap:.4rem; flex-wrap:wrap; align-items:center; margin:1rem 0 1.6rem; }
.variant-form select, .variant-form input { font:inherit; padding:.42rem .55rem; border:1px solid var(--line); border-radius:8px; }
.variant-form button { font:inherit; font-weight:640; cursor:pointer; background:var(--ink); color:#fff; border:0; border-radius:8px; padding:.45rem 1.1rem; }

/* ---------- Sweden map (legacy SVG, retained) ---------- */
.map-layout { display:flex; gap:2rem; align-items:flex-start; flex-wrap:wrap; margin-top:1.1rem; }
.sweden-map { width:210px; height:auto; flex:0 0 auto; filter:drop-shadow(0 6px 16px rgba(43,34,51,.10)); }
.sweden-outline { fill:#efe6d7; stroke:#dcccb2; stroke-width:1.5; }
.sweden-map circle { cursor:pointer; transition:fill-opacity .15s; }
.sweden-map a:hover circle { fill-opacity:1; }
.map-layout .place-list { flex:1 1 280px; margin-top:0; }
.map-layout .place-col { flex:1 1 300px; min-width:0; }          /* CR-48: konditorier beside the map */
.map-layout .place-col .place-list { margin-top:.3rem; }
.map-layout .place-col .nav-label { margin-top:1.2rem; }

/* CR-51: quick search */
.home-search { position:relative; display:flex; gap:.5rem; margin-top:1.3rem; max-width:460px; }
.home-search.on-page { margin:1rem 0 1.6rem; }
.home-search input { flex:1 1 auto; min-width:0; padding:.7rem .95rem; border:1px solid var(--line);
                     border-radius:var(--r); font-size:1rem; font-family:var(--body); background:#fff; }
.home-search button { padding:.7rem 1.25rem; border:none; border-radius:var(--r-sm); background:var(--lingon);
                      color:#fff; font-weight:600; font-family:var(--body); cursor:pointer; }
.home-search button:hover { background:#8f0f24; }
.search-suggest { position:absolute; top:100%; left:0; right:0; margin:.35rem 0 0; padding:0; list-style:none;
                  background:#fff; border:1px solid var(--line); border-radius:var(--r);
                  box-shadow:0 10px 28px rgba(43,34,51,.16); z-index:30; overflow:hidden; }
.search-suggest li a { display:flex; justify-content:space-between; gap:1rem; align-items:baseline;
                       padding:.55rem .9rem; }
.search-suggest li a:hover { background:#f3eee7; }
.search-suggest .s-type { color:#8b8391; font-size:.82rem; white-space:nowrap; }
.section-sub { margin-top:2.2rem; }

/* ---------- lists ---------- */
.place-list, .link-list { list-style:none; padding:0; margin:1rem 0 0; }
.place-list li, .link-list li { padding:.6rem 0; border-bottom:1px solid var(--line);
                                display:flex; justify-content:space-between; gap:1rem; align-items:baseline; }
.place-list li a, .link-list li a { font-weight:560; }
.place-list li a:hover { color:var(--gold-ink); }
.place-list li .muted { font-family:var(--mono); font-size:.78rem; font-variant-numeric:tabular-nums; }

/* ---------- rating (the signature) - mono + berry star (CR-56 visual) ---------- */
.rating-big { font-family:var(--mono); font-size:2.6rem; color:var(--ink); font-weight:600;
              font-variant-numeric:tabular-nums; line-height:1; margin:.3rem 0 .1rem; }
.rating-big .star { color:var(--lingon); }
.rating-big.muted { font-family:var(--display); font-weight:600; }

/* CR-22 likes - heart + lingon, deliberately unlike the gold-star betyg */
.like { display:flex; align-items:center; gap:.75rem; flex-wrap:wrap; margin:.5rem 0 1.1rem; }
.like-btn { display:inline-flex; align-items:center; gap:.45rem; cursor:pointer; font:inherit;
            font-weight:640; color:var(--ink); background:var(--card);
            border:1.5px solid var(--line); border-radius:999px; padding:.4rem .95rem; }
.like-btn:hover { border-color:var(--lingon); }
.like-heart { color:var(--dis); font-size:1.05rem; line-height:1; }
.like-count { font-variant-numeric:tabular-nums; }
.like-btn.is-liked { border-color:var(--lingon); background:#fbeef1; color:var(--lingon); }
.like-btn.is-liked .like-heart { color:var(--lingon); }
.like-note { font-size:.8rem; max-width:34ch; }
/* likes indicator on cards (read-only) */
.bcard-like { color:var(--lingon); font-size:.82rem; font-variant-numeric:tabular-nums; }
.semla-anatomy { display:flex; gap:1.6rem; align-items:center; flex-wrap:wrap;
                 background:var(--card); border:1px solid var(--line); border-radius:var(--r);
                 padding:1.2rem 1.3rem; margin:1.2rem 0; }
.semla-anatomy .cutaway { width:132px; height:120px; flex:0 0 auto; }
.semla-anatomy.is-empty { background:var(--sidebar); }
.semla-anatomy.is-empty .cutaway { opacity:.85; }
.anatomy-body { flex:1 1 260px; }
.anatomy-body .eyebrow { display:block; margin-bottom:.6rem; }
.anatomy-body .note { margin:0; max-width:46ch; }
.anatomy-scores { list-style:none; padding:0; margin:0; }
.anatomy-scores li { display:grid; grid-template-columns:6.5rem 1fr 2.2rem; align-items:center;
                     gap:.7rem; padding:.28rem 0; }
.anatomy-scores .alabel { font-size:.9rem; }
.anatomy-scores .track { height:.62rem; border-radius:999px; background:#efe6d7; overflow:hidden; }
.anatomy-scores .fill { display:block; height:100%; border-radius:999px; }
.anatomy-scores .aval { text-align:right; font-weight:640; font-variant-numeric:tabular-nums; }
.fill-lock   { background:var(--lock); }
.fill-gradde { background:var(--gradde); }
.fill-mandel { background:var(--mandel); }
.fill-brod   { background:var(--brod); }
@media (prefers-reduced-motion:no-preference) {
  .anatomy-scores .fill { animation:fillbar .7s cubic-bezier(.2,.8,.2,1) both; }
}
@keyframes fillbar { from { width:0 !important; } }

/* ---------- media ---------- */
.hero-img { width:100%; max-height:440px; object-fit:cover; border-radius:var(--r);
            margin:1.2rem 0; aspect-ratio:16/9; }
.gallery { display:grid; grid-template-columns:repeat(auto-fill,minmax(120px,1fr)); gap:.55rem; margin-top:1rem; }
.gallery img { width:100%; height:120px; object-fit:cover; border-radius:var(--r-sm); }

/* ---------- CR-93: engagement (levels, badges, leaderboard) ---------- */
.estats { border-left:3px solid var(--gold); padding:.3rem 0 .3rem 1rem; margin:1.1rem 0; }
.estats-level { margin:0 0 .2rem; }
.badges { display:flex; flex-wrap:wrap; gap:.4rem; margin:.4rem 0 0; }
.badge { font-size:.72rem; font-weight:640; padding:.18rem .6rem; border-radius:999px;
  background:#efe6d7; color:var(--gold-ink); border:1px solid var(--line-strong); }
.leaderboard { list-style:none; padding:0; margin:1.4rem 0; }
.leaderboard li { display:flex; align-items:center; gap:.9rem; padding:.6rem 0; border-bottom:1px solid var(--line); }
.lb-rank { font-family:var(--mono); font-weight:700; color:var(--gold-ink); min-width:1.6rem; }
.lb-who { flex:1 1 auto; min-width:0; display:flex; flex-wrap:wrap; align-items:center; gap:.4rem; }
.lb-pts { font-family:var(--mono); font-weight:700; white-space:nowrap; }

/* ---------- CR-88: semla-season "active now" badge ---------- */
.badge-active { display:inline-block; vertical-align:middle; font-size:.62em; font-weight:700;
  text-transform:uppercase; letter-spacing:.05em; color:#fff; background:var(--lingon);
  padding:.2em .6em; border-radius:999px; }

/* ---------- CR-87: admin user table ---------- */
.admin-table { width:100%; border-collapse:collapse; margin-top:1rem; font-size:.9rem; }
.admin-table th, .admin-table td { text-align:left; padding:.5rem .6rem; border-bottom:1px solid var(--line); }
.admin-table th { font-size:.78rem; text-transform:uppercase; letter-spacing:.06em; color:var(--gold-ink); }
.user-edit { display:flex; gap:.4rem; align-items:center; }
.user-edit select, .user-edit input { font:inherit; padding:.25rem .4rem; border:1px solid var(--line-strong); border-radius:var(--r-sm); }

/* ---------- CR-86: account controls in the masthead ---------- */
.account { display:inline-flex; align-items:center; gap:.5rem; }
.account-me, .account-in { font-weight:640; font-size:.9rem; }
.account-out { font:inherit; font-size:.8rem; cursor:pointer; border:1px solid var(--line-strong);
  background:var(--card); color:var(--ink); border-radius:999px; padding:.22rem .65rem; }
.account-out:hover { border-color:var(--lingon); color:var(--lingon); }

/* ---------- CR-23: wishlist / visited ---------- */
.mylist { display:flex; flex-wrap:wrap; align-items:center; gap:.5rem; margin:.9rem 0 0; }
.mylist-btn { font-size:.85rem; font-weight:640; padding:.35rem .8rem; border-radius:999px;
  border:1px solid var(--line-strong); background:var(--card); color:var(--ink); cursor:pointer; }
.mylist-btn.is-on { background:var(--ink); color:#fff; border-color:var(--ink); }
.mylist-list { list-style:none; padding:0; }
.mylist-list li { padding:.4rem 0; border-bottom:1px solid var(--line); }

/* ---------- CR-11: sign-in + contribution ---------- */
.linklike { background:none; border:none; padding:0; color:inherit; text-decoration:underline; cursor:pointer; font:inherit; }
.contribute { margin:1.3rem 0 0; border:1px solid var(--line); border-radius:var(--r-sm); padding:.7rem 1rem; }
.contribute summary { cursor:pointer; font-weight:640; color:var(--gold-ink); }
.contribute-form { display:flex; flex-wrap:wrap; gap:.8rem; margin-top:.9rem; align-items:flex-end; }
.contribute-form label { display:flex; flex-direction:column; gap:.25rem; font-size:.8rem; font-weight:640; }
.contribute-form select, .contribute-form textarea { font:inherit; padding:.4rem .5rem; border:1px solid var(--line-strong);
  border-radius:var(--r-sm); background:var(--card); color:var(--ink); }
.contribute-notes { flex:1 1 100%; }

/* ---------- CR-75: suggestion form ---------- */
.tip-form { display:flex; flex-direction:column; gap:1rem; max-width:34rem; margin:1.4rem 0; }
.tip-field { display:flex; flex-direction:column; gap:.35rem; }
.tip-field label { font-size:.82rem; font-weight:640; color:var(--ink); }
.tip-field input, .tip-field select, .tip-field textarea { font:inherit; padding:.55rem .7rem;
  border:1px solid var(--line-strong); border-radius:var(--r-sm); background:var(--card); color:var(--ink); }
.tip-field textarea { resize:vertical; }
.tip-hp { position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }

/* ---------- CR-74: cookie/measurement consent banner ---------- */
.consent { position:fixed; left:0; right:0; bottom:0; z-index:1000; background:var(--ink); color:#fff;
  display:flex; flex-wrap:wrap; align-items:center; gap:1rem; padding:.9rem 1.1rem;
  box-shadow:0 -2px 14px rgba(0,0,0,.18); }
.consent-text { flex:1 1 260px; font-size:.85rem; margin:0; line-height:1.45; }
.consent-text a { color:var(--gold); }
.consent-actions { display:flex; gap:.55rem; flex:none; }
.consent-btn { font-size:.85rem; font-weight:640; padding:.45rem .95rem; border-radius:999px;
  cursor:pointer; border:1px solid transparent; }
.consent-accept { background:var(--lingon); color:#fff; }
.consent-reject { background:transparent; color:#fff; border-color:rgba(255,255,255,.4); }
/* the class sets display:flex, which would override the [hidden] attribute - restore hiding */
.consent[hidden] { display:none; }

/* ---------- CR-72: brand section divider ---------- */
.brand-divider { display:flex; align-items:center; gap:1rem; margin:2.6rem auto; max-width:68ch; }
.brand-divider-line { flex:1; height:1px; background:var(--line); }
.brand-divider-mid { display:inline-flex; align-items:center; gap:.55rem; flex:none; }
.brand-divider-mark { width:26px; height:22px; opacity:.85; }
.brand-divider-label { font-family:var(--mono); font-size:.7rem; letter-spacing:.14em;
  text-transform:uppercase; color:var(--gold-ink); white-space:nowrap; }

/* ---------- long-form content ---------- */
/* CR-77 (supersedes CR-71's centering): the article content spans the FULL main width, aligned to the
   masthead/breadcrumb - no reading-measure cap, so text fills the column like the menu does. */
.content { max-width:none; }
.body { margin-top:1.1rem; }
.body :is(h1,h2,h3) { margin-top:1.8rem; }
.body p { max-width:68ch; }

/* ---------- CR-30 admin shell (no public chrome) ---------- */
.admin-body { background:var(--bg); color:var(--ink); }
/* CR-86: admin is a left-sidebar layout (best practice) */
.admin-shell { display:flex; align-items:flex-start; gap:1.6rem; max-width:1240px; margin:0 auto;
               padding:1.4rem 1.6rem 3.5rem; }
.admin-main { flex:1 1 auto; min-width:0; }
.admin-main h1 { font-size:1.9rem; margin-bottom:.3rem; }

/* ---------- CR-28/86 admin nav: vertical left sidebar ---------- */
.admin-nav { flex:0 0 190px; position:sticky; top:1.4rem; display:flex; flex-direction:column;
             align-items:stretch; gap:.15rem; padding:.9rem .7rem; background:var(--card);
             border:1px solid var(--line); border-radius:var(--r); }
.admin-brand { font-family:var(--display); font-weight:600; margin-bottom:.5rem; font-size:1.1rem; }
.admin-nav a { padding:.45rem .7rem; border-radius:8px; font-weight:560; font-size:.9rem; color:var(--ink); }
.admin-nav a:hover { background:#efe6d7; text-decoration:none; }
.admin-nav a[aria-current="page"] { background:var(--ink); color:#fff; }
.admin-logout { margin:.5rem 0 0; border-top:1px solid var(--line); padding-top:.6rem; }
@media (max-width:720px) { .admin-shell { flex-direction:column; } .admin-nav { position:static; flex-direction:row; flex-wrap:wrap; width:100%; flex-basis:auto; } }
.admin-logout button { font:inherit; font-size:.85rem; cursor:pointer; border:1px solid var(--line);
                       background:var(--card); border-radius:8px; padding:.35rem .8rem; }
.admin-logout button:hover { border-color:var(--lingon); color:var(--lingon); }
.kpi-link { text-decoration:none; transition:box-shadow .15s, transform .15s; }
.kpi-link:hover { box-shadow:var(--shadow); transform:translateY(-2px); text-decoration:none; }
.admin-login { display:flex; flex-direction:column; gap:.8rem; max-width:320px; margin-top:1rem; }
.admin-login input { font:inherit; padding:.5rem .6rem; border:1px solid var(--line); border-radius:8px; }
.admin-login button { font:inherit; font-weight:640; cursor:pointer; background:var(--ink); color:#fff;
                      border:0; border-radius:9px; padding:.55rem 1.1rem; width:fit-content; }

/* ---------- CR-30 growth trend table ---------- */
.trend { width:100%; border-collapse:collapse; margin-top:1rem; font-size:.9rem; font-variant-numeric:tabular-nums; }
.trend th { text-align:right; font-size:.7rem; text-transform:uppercase; letter-spacing:.06em;
            color:var(--muted); border-bottom:1px solid var(--line); padding:.45rem .6rem; }
.trend th:first-child { text-align:left; }
.trend td { text-align:right; padding:.4rem .6rem; border-bottom:1px solid var(--line); }
.trend td.day { text-align:left; font-variant-numeric:normal; color:var(--muted); }
.delta { color:#2e7d4f; font-weight:700; font-size:.82rem; }

/* ---------- CR-09 daily-loop admin surface ---------- */
.kpi-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:.9rem; margin:1.1rem 0; }
.kpi { background:var(--card); border:1px solid var(--line); border-radius:var(--r);
       padding:1rem 1.1rem; display:flex; flex-direction:column; gap:.15rem; }
.kpi-num { font-family:var(--display); font-size:1.7rem; font-weight:600; font-variant-numeric:tabular-nums; }
.kpi-lab { font-size:.78rem; color:var(--muted); text-transform:uppercase; letter-spacing:.08em; }
.kpi-warn { border-color:var(--lingon); }
.kpi-warn .kpi-num { color:var(--lingon); }
.hints { list-style:none; padding:0; margin:.6rem 0 0; display:flex; flex-direction:column; gap:.25rem; }
.hints li { font-size:.85rem; color:var(--muted); padding-left:1rem; position:relative; }
.hints li::before { content:"›"; position:absolute; left:0; color:var(--gold); }
.proposals { list-style:none; padding:0; margin:1rem 0 0; display:flex; flex-direction:column; gap:.6rem; }
.proposal { display:flex; gap:1rem; align-items:flex-start; justify-content:space-between;
            background:var(--card); border:1px solid var(--line); border-left:4px solid var(--dis);
            border-radius:var(--r); padding:.85rem 1rem; }
.proposal.prio-1 { border-left-color:var(--lingon); }
.proposal.prio-2 { border-left-color:var(--gold); }
.proposal.status-dismissed { opacity:.5; }
.proposal-main { min-width:0; }
.proposal-main p { margin:.3rem 0 0; }
.prio-chip, .kind-chip { display:inline-block; font-size:.68rem; font-weight:700; letter-spacing:.03em;
                         padding:.08rem .4rem; border-radius:5px; margin-right:.4rem; vertical-align:.08em; }
.prio-chip { background:var(--ink); color:#fff; }
.kind-chip { background:#efe6d7; color:#6c6270; text-transform:uppercase; }
.target { font-variant-numeric:tabular-nums; }
.proposal-actions { display:flex; gap:.4rem; flex:0 0 auto; }
.proposal-actions form { margin:0; }
.proposal-actions button { cursor:pointer; font:inherit; font-size:.82rem; font-weight:640;
                           border-radius:8px; padding:.35rem .7rem; border:1px solid var(--line); background:var(--card); }
.btn-accept { border-color:#2e7d4f; color:#2e7d4f; }
.btn-accept:hover { background:#2e7d4f; color:#fff; }
.btn-dismiss:hover { background:#efe6d7; }
.proposal-actions a.btn-preview { display:inline-flex; align-items:center; text-decoration:none;
  font-size:.82rem; font-weight:640; color:var(--ink); border:1px solid var(--line);
  background:var(--card); border-radius:8px; padding:.35rem .7rem; }
.proposal-actions a.btn-preview:hover { border-color:var(--gold); }
.dir-form { display:flex; gap:.3rem; align-items:center; margin:0; }
.dir-form input { font:inherit; padding:.3rem .5rem; border:1px solid var(--line); border-radius:7px; min-width:0; }
.status-tag { font-size:.78rem; color:var(--muted); text-transform:uppercase; letter-spacing:.06em; align-self:center; }

/* CR-16 geo-correction table */
.geo-table { width:100%; border-collapse:collapse; margin-top:1rem; font-size:.9rem; }
.geo-table th { text-align:left; font-size:.72rem; text-transform:uppercase; letter-spacing:.06em;
                color:var(--muted); border-bottom:1px solid var(--line); padding:.4rem .5rem; }
.geo-table td { padding:.35rem .5rem; border-bottom:1px solid var(--line); vertical-align:middle; }
.geo-table tr.geo-missing { background:#fbeef1; }
.ingest-form { display:flex; flex-direction:column; gap:.6rem; margin:1rem 0 1.6rem; max-width:720px; }
.ingest-meta { display:flex; gap:.4rem; flex-wrap:wrap; }
.ingest-form input, .ingest-form textarea { font:inherit; padding:.45rem .55rem; border:1px solid var(--line); border-radius:8px; }
.ingest-form textarea { width:100%; resize:vertical; }
.ingest-form button { font:inherit; font-weight:640; cursor:pointer; background:var(--ink); color:#fff; border:0; border-radius:8px; padding:.5rem 1.2rem; width:fit-content; }
.geo-form { display:flex; gap:.3rem; align-items:center; margin:0; }
.geo-form input { min-width:0; }
.geo-table input { font:inherit; padding:.25rem .4rem; border:1px solid var(--line); border-radius:6px; }
.geo-table button { font:inherit; font-size:.82rem; font-weight:640; cursor:pointer;
                    border:1px solid var(--line); background:var(--card); border-radius:7px; padding:.3rem .7rem; }
.geo-table button:hover { border-color:var(--gold); }

/* ---------- footer (dusk) ---------- */
/* CR-54: slim footer - one compact row that wraps on mobile */
.site-footer { border-top:1px solid var(--line); margin-top:2.5rem; background:var(--dusk);
               color:#cfc7dc; font-size:.82rem; padding:.9rem 1.1rem;
               display:flex; flex-wrap:wrap; align-items:center; gap:.5rem 1.1rem; }
.footer-brand { font-family:var(--display); color:#fff; font-weight:600; }
.footer-links { display:flex; flex-wrap:wrap; gap:.4rem 1rem; }
.site-footer a { color:#cfc7dc; }
.site-footer a:hover { color:#fff; }
.footer-count { margin-left:auto; color:#cfc7dc; white-space:nowrap; }
.footer-count strong { color:var(--gold); font-variant-numeric:tabular-nums; }
@media (min-width:821px) { .site-footer { padding:1rem 2rem; } }

/* CR-95: community task hub */
.task-buckets { display:grid; grid-template-columns:1fr; gap:1rem; margin:1rem 0 1.4rem; }
@media (min-width:640px) { .task-buckets { grid-template-columns:1fr 1fr; } }
.task-bucket { background:var(--card); border:1px solid var(--line); border-radius:12px; padding:1rem 1.1rem; }
.task-bucket h3 { margin:.1rem 0 .3rem; }
.task-count { font-family:var(--mono); font-size:2rem; font-weight:700; color:var(--gold-ink);
  font-variant-numeric:tabular-nums; margin:0; line-height:1; }
.task-list { list-style:none; padding:0; margin:.4rem 0 1rem; }
.task-list li { display:flex; flex-wrap:wrap; align-items:baseline; gap:.5rem; padding:.4rem 0;
  border-bottom:1px solid var(--line); }
.task-do { margin-left:auto; color:var(--gold-ink); font-weight:640; white-space:nowrap; }
.cta-row { display:flex; flex-wrap:wrap; align-items:center; gap:.6rem 1rem; margin:1.2rem 0; }
.account-mod { color:var(--gold-ink); font-weight:640; margin-right:.5rem; }
.chip { display:inline-block; background:#efe6d7; color:#6c6270; font-size:.68rem; font-weight:700;
  padding:.1rem .5rem; border-radius:999px; vertical-align:middle; }
/* CR-95 P2: kost-info propose + admin proposal cards */
.kost-opts { border:none; padding:0; margin:0; display:flex; flex-wrap:wrap; gap:.4rem 1rem; }
.kost-opt { flex-direction:row !important; align-items:center; gap:.35rem !important; font-weight:500 !important; }
.proposal-card { background:var(--card); border:1px solid var(--line); border-radius:12px;
  padding:1rem 1.1rem; margin:1rem 0; }
.proposal-card .admin-table { margin:.5rem 0 .8rem; }

/* CR-109: bakery contact + opening hours */
.bakery-contact { margin:1.4rem 0; }
.contact-list { list-style:none; padding:0; margin:.3rem 0; display:flex; flex-wrap:wrap; gap:.3rem 1.2rem; }
.contact-list a { color:var(--gold-ink); font-weight:640; }
.opening-hours summary { cursor:pointer; color:var(--gold-ink); font-weight:640; }
.opening-hours ul { list-style:none; padding:.4rem 0 0; margin:0; font-size:.9rem; }

/* CR-111: semla pillar - informational answer block on the home page */
.home-about { max-width:52rem; margin:.4rem 0 1.6rem; }
.home-about h2 { margin-top:.6rem; }
.home-about a { color:var(--gold-ink); font-weight:600; }
