/* POUR CORNER — build pass C: atlas, bag detail, thank-the-farmer.
   Flat ink + hairlines, vermilion sparingly. No gradients, no shadows. */

/* ---------- Atlas ---------- */
/* (v33) Atlas header: the #view top padding (var(--pad)*1.2) leaves more air
   above the "Origins" title than the .mb margin leaves below it, so the title
   sits low in its band. Pull it up by exactly the difference so it centers. */
.at-title{margin-top:calc(1.6rem - var(--pad)*1.2)}
.at-map{height:min(62vh,560px);min-height:420px;border:1px solid #4a3a26;
  border-radius:var(--r);background:#ece4d2}
.leaflet-container{font-family:var(--body);background:#ece4d2}
.leaflet-bar a{background:var(--ink-2);color:var(--paper);border-color:var(--line-strong);
  min-width:44px;min-height:44px;line-height:44px}
.leaflet-bar a:hover{background:var(--ink-3);color:var(--paper)}
/* (v40) "Harvesting now" — the section has a heading, the cards, and the
   map is the interface. */
/* (v44) the map sits in a coffee-sack frame: burlap border, no stitching (v45).
   (v61) user asked to keep the sack backdrop — the v59 Koraïchi frame is retired. */
.at-sack{background-color:var(--sack-ground);background-image:var(--sack-burlap);
  background-size:240px 240px;padding:12px;border-radius:var(--r)}
.at-sack .at-map{border:1px solid #2b1e10;border-radius:2px}
/* (v48) highlighted countries and regions answer the pointer */
path.pc-country-fill,path.pc-region-poly{cursor:pointer}
/* (v45) harvest cards: plain quiet cards — the sack treatment lives on
   the map frame only */
.harv-cards{display:flex;flex-wrap:wrap;gap:.6rem;margin:0 0 1.8rem} /* (v57) more air between the cards and the map */
.harv-card{background-color:rgba(250,246,235,.05);
  border:1px solid #4a3a26;border-radius:8px;
  padding:.55rem .9rem;cursor:pointer;text-align:start;color:var(--paper)}
.harv-card-name{display:block;font-family:var(--body);font-weight:700;font-size:14px;letter-spacing:.02em}
.harv-card-win{display:block;font-size:11px;color:var(--meta-bronze);margin-top:2px} /* (v59) uniform card-subtitle bronze */
/* country fills: the country shape itself is the highlight, no stroke */
.pc-country-fill{cursor:pointer}
.at-harvest-title{color:var(--paper);margin:0 0 1.6rem} /* (v57) more air below the heading */
/* region + halo name labels: plain umber type on the map, no bubble */
.leaflet-tooltip.pc-region-label{background:none;border:0;box-shadow:none;
  color:#3a2a14;font-family:var(--body);font-weight:700;font-size:11px;
  letter-spacing:.12em;text-transform:uppercase;pointer-events:none;
  text-shadow:0 1px 2px rgba(250,246,235,.9),0 0 6px rgba(250,246,235,.9)}
/* region popup body */
.pc-region-note{font-size:13px;color:var(--paper);margin:.55rem 0 0;line-height:1.55}
/* (v40) region popups are bone, not ink — the standard bag popup keeps
   its dark body */
.leaflet-popup:has(.pc-pop-region) .leaflet-popup-content-wrapper{
  background:var(--paper);color:#33240f;border-radius:10px}
.leaflet-popup:has(.pc-pop-region) .leaflet-popup-tip{background:var(--paper)}
.leaflet-popup:has(.pc-pop-region) .leaflet-popup-close-button{color:#5a3d1a}
.pc-pop.pc-pop-region{background:none;padding:2px 4px}
.pc-pop-region .pc-pop-bean{color:#2c1e0e}
.pc-pop-region .pc-pop-meta{color:#7a5a26}
.pc-pop-region .pc-region-note{color:#33240f}
.pc-pop-region .pc-region-bound{color:#8a7a5a}
/* (v41) "Tastings from here" — user's bags from this region, above the
   region's own content. Flat bone-on-bone, vermilion-free. */
.pc-tastings{margin:0 0 .7rem;padding-bottom:.65rem;border-bottom:1px solid #d9cba8}
.pc-tastings-title{font-size:11px;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:#7a5a26;margin-bottom:.45rem}
.pc-tastings-empty{font-size:13px;color:#8a7a5a;font-style:italic}
.pc-tasting{display:block;text-decoration:none;margin-bottom:.5rem}
.pc-tasting:last-child{margin-bottom:0}
.pc-tasting-name{font-size:14px;font-weight:700;color:#2c1e0e}
.pc-tasting-meta{font-size:12px;color:#7a5a26;line-height:1.5}
/* reset-view control shown while zoomed into a country */
.pc-reset-view{background:var(--ink-2);color:var(--paper);
  border:1px solid var(--line-strong);border-radius:999px;min-height:44px;
  padding:0 18px;font-family:var(--body);font-size:12px;font-weight:700;
  letter-spacing:.16em;text-transform:uppercase;cursor:pointer}

/* Leaflet layer control, skinned to the ink palette */
.leaflet-control-layers{background:var(--ink-2);color:var(--paper);
  border:1px solid var(--line-strong);border-radius:var(--r)}
.leaflet-control-layers label{font-family:var(--body);font-size:13px}
.leaflet-tooltip{background:var(--ink-2);color:var(--paper);border:1px solid var(--line-strong);
  font-family:var(--body);font-size:12px;border-radius:var(--r);box-shadow:none}
.leaflet-tooltip:before{display:none}
.leaflet-control-attribution{background:rgba(250,246,235,.85);color:#6b5b40;font-size:10px}
.leaflet-control-attribution a{color:#6b5b40}

/* producer pins */
.pc-pin{background:none;border:0}
.pc-pin-hit{width:52px;height:52px;display:block;position:relative;cursor:pointer}
.pc-pin-dot{position:absolute;left:50%;top:50%;width:7px;height:7px;margin:-3.5px 0 0 -3.5px;
  border-radius:50%;background:var(--verm)}
/* (v53) the portrait/initials float up-right of the location dot so the
   country's harvest fill stays visible underneath */
.pc-pin-face{position:absolute;left:50%;top:50%;
  transform:translate(calc(-50% + 13px),calc(-50% - 13px))}
.pc-pin-face img{width:38px;height:38px;border-radius:50%;object-fit:cover;
  border:2px solid #c8a24a;display:block}
.pc-pin-mono{position:absolute;left:50%;top:50%;width:38px;height:38px;border-radius:50%;
  transform:translate(calc(-50% + 13px),calc(-50% - 13px));
  background:var(--ink-3);color:var(--paper);
  display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;
  letter-spacing:.06em;border:2px solid var(--line-strong)}

/* dark popups */
.leaflet-popup-content-wrapper{background:var(--ink-2);color:var(--paper);
  border:1px solid var(--line-strong);border-radius:var(--r);box-shadow:none}
.pc-pop-crease{color:var(--crema);line-height:0;margin-bottom:.5rem}
.pc-pop-crease svg{width:34px;height:10px}
.leaflet-popup-tip{background:var(--ink-2);border:1px solid var(--line-strong);box-shadow:none}
.leaflet-popup-content{margin:14px 16px;font-family:var(--body);line-height:1.5}
.leaflet-popup-close-button{color:var(--mute)}
.pc-pop-bean{font-family:var(--disp);font-weight:700;font-size:1.25rem;line-height:1.2;margin-bottom:.25rem}
.pc-pop-meta{font-size:12px;color:var(--mute);margin-top:.15rem}
.pc-pop-link{display:inline-block;margin-top:.6rem;min-height:44px;line-height:44px;
  font-size:12px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;
  color:var(--verm);text-decoration:none}

/* distance + harvest ticker */
.at-ticker{margin-top:1.6rem}
/* (v53) bag banner: rounded corners, no side rules, no tibeb. The ground is
   a Rachid Koraïchi calligraphy panel, recolored to the app's dark green
   and antique gold (assets/texture/koraichi-tab-bg.jpg). */
/* (v55) the banner is a kora-card now: shared calligraphy ground, dark veil,
   and hairline cream rim. The producer medallion (photo + flag badge) rides
   left of the text; tighter padding fits the 76px medallion. */
.at-ticktab{display:block;text-decoration:none;color:inherit;margin-bottom:1.1rem}
.at-ticktab:last-child{margin-bottom:0}
.at-ticktab-body{position:relative;display:flex;align-items:center;gap:1rem;padding:.8rem 1.2rem}
/* (v56) spacing mirrors the Brew page's Now Brewing bar: the text sits a
   touch right of the medallion, the pill a touch left of the card edge */
.at-ticktab-txt{flex:1;min-width:0;margin-inline-start:.35rem}
.at-ticktab-name{font-size:1.35rem;font-weight:600;letter-spacing:.01em;color:var(--paper);
  text-shadow:0 1px 10px rgba(0,0,0,.7)}
.at-ticktab-meta{margin-top:.35rem;font-size:13px;color:var(--meta-bronze);
  text-shadow:0 1px 8px rgba(0,0,0,.7)} /* (v59) uniform card-subtitle bronze */
/* (v54) "Open bag" as a real pill button — the .btn.btn-solid language,
   pill-shaped like the Now Brewing "Log a pour" pill */
.at-ticktab-pill{flex:none;border-radius:999px;padding:.8rem 1.3rem;font-size:11px;
  letter-spacing:.18em;white-space:nowrap;margin-inline-end:.5rem}

/* ---------- Bag detail ---------- */
.bg-head{display:flex;gap:1.2rem;align-items:center;margin-bottom:1.6rem}
.bg-flag{width:64px;height:64px;border-radius:50%;overflow:hidden;flex:none;
  border:1px solid var(--line-strong)}
.bg-flag img{width:100%;height:100%;object-fit:cover}
.bg-mono{background:var(--ink-3);color:var(--paper);display:flex;align-items:center;
  justify-content:center;font-weight:700;font-size:20px;letter-spacing:.05em}

/* standard recipe key/values */
.bg-kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:1px;
  background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.bg-kv>div{background:var(--ink-2);padding:.9rem 1rem}
.bg-kv .k{font-size:10px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;
  color:var(--mute);margin-bottom:.25rem}
.bg-kv .v{font-weight:500}

/* origin photos — hero on top, supporting beneath; never a lone orphan */
.bg-hero{margin:0 0 .7rem}
.bg-hero img,.bg-photo img{width:100%;height:auto;border-radius:var(--r);border:1px solid var(--line)}
.bg-hero img{aspect-ratio:16/9;object-fit:cover}
.bg-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.7rem}
.bg-photo{margin:0}
.bg-photo img{aspect-ratio:4/3;object-fit:cover}
.bg-photo--feature{grid-column:1/-1}
.bg-photo--feature img{aspect-ratio:16/9}
.bg-cap{font-size:12px;color:var(--mute);margin-top:.4rem}
.bg-credit{font-size:11px;color:var(--mute-2);margin-top:.1rem}

/* ---------- Thank the farmer ---------- */
.th-tmpl{min-height:190px;margin:.8rem 0 1.1rem}
.th-compose{min-height:230px}
.th-route{position:relative}
.th-route.chosen{border-color:var(--verm)}
.th-route-head{display:flex;align-items:center;gap:.7rem;margin-bottom:.4rem;flex-wrap:wrap}
.th-route-head strong{font-weight:500}
.th-route p{margin:.45em 0}
.th-note-label{font-size:11px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;
  color:var(--mute);margin-bottom:.45rem}

/* origin slideshow: one unified, full-width swipeable strip */
.bg-slideswrap{margin:0 0 .7rem}
.bg-slides{display:flex;gap:.7rem;overflow-x:auto;scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:.15rem}
.bg-slides::-webkit-scrollbar{display:none}
.bg-slide{flex:0 0 100%;scroll-snap-align:center;margin:0}
.bg-slide img{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:var(--r);
  border:1px solid var(--line)}
.bg-slide-meta{margin-top:.35rem}
.bg-slidenav{display:flex;align-items:center;gap:1.1rem;margin-top:.55rem}
.bg-navbtn{color:var(--mute);padding:.55rem .7rem;display:flex;align-items:center}
.bg-navbtn:active{color:var(--paper)}
.bg-navbtn .ti{width:20px;height:20px}
.flip{transform:scaleX(-1)}
.bg-count{font-size:13px;letter-spacing:.1em}

/* about the producer: full-width feature — portrait + bio + journey flow */
.bg-feature{margin:0}
.bg-producer{display:grid;grid-template-columns:minmax(190px,250px) 1fr;gap:1.8rem;
  align-items:start;margin:0}
.bg-producer-photo{margin:0;display:flex;flex-direction:column;align-items:center;
  text-align:center;justify-self:stretch}
.bg-producer-photo img{display:block;width:100%;aspect-ratio:3/4;object-fit:cover;
  /* (v24) focal point on the producer: he stands left-of-center in the
     source frame, so the 3/4 cover crop is biased left to keep him centered
     instead of cutting him off and leaving dead landscape to the right. */
  object-position:12% 30%;
  border-radius:var(--r);border:1px solid var(--line)}
.bg-producer-photo .bg-cap{width:100%}
.bg-producer .prose{font-size:1.06rem;line-height:1.78}
.bg-producer .prose p:first-child{margin-top:0}
/* pull-quote drawn from the existing bio copy — magazine treatment.
   No rule/bar: the tonal zone carries the separation on its own. */
.bg-pull{margin:1.5rem 0;padding:0}
.bg-pull p{font-family:var(--disp);font-weight:700;font-size:clamp(1.5rem,3.4vw,2rem);
  line-height:1.4;color:var(--paper);margin:0}
.bg-pull cite{display:block;font-style:normal;font-family:var(--body);font-size:13px;
  color:var(--mute);letter-spacing:.06em;margin-top:.55rem;padding-inline-start:2.5rem} /* (v58) attribution sits well in under the quote */
@media(max-width:560px){.bg-producer{grid-template-columns:1fr;gap:.9rem}
  .bg-producer-photo{max-width:240px;margin:0 auto}}

/* farm-to-cup graphic: node flow on a hairline, vermilion markers */
.bg-flow{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,1fr)}
.bg-node{position:relative;padding-top:1.7rem;text-align:center}
.bg-node::before{content:'';position:absolute;top:calc(2.1rem + 4px);left:0;right:0;
  height:1px;background:var(--line-strong);z-index:0}
.bg-node:first-child::before{left:50%}
.bg-node:last-child::before{right:50%}
/* (v62) RTL: the flow mirrors — first node sits right, its line runs left.
   Desktop row only; the mobile column uses inset-inline-start throughout. */
@media(min-width:641px){
  [dir="rtl"] .bg-node:first-child::before{left:0;right:50%}
  [dir="rtl"] .bg-node:last-child::before{left:50%;right:0}
}
.bg-node-dot{position:relative;z-index:1;display:block;width:9px;height:9px;margin:.4rem auto 0;
  border-radius:50%;background:var(--ink);border:2px solid var(--verm)}
.bg-node:first-child .bg-node-dot{width:13px;height:13px;margin-top:calc(.4rem - 2px);
  background:var(--verm);border-color:var(--verm)}
.bg-node-name{display:block;margin-top:.7rem;font-weight:500;font-size:15px;color:var(--paper)}
.bg-node:first-child .bg-node-name{color:var(--verm)}
.bg-node-role{display:block;font-size:12px;color:var(--mute);margin-top:.2rem}
@media(max-width:640px){
  .bg-flow{grid-template-columns:1fr;gap:1.3rem}
  .bg-node{padding-top:0;padding-inline-start:1.6rem;text-align:start}
  .bg-node::before{top:0;bottom:-1.3rem;inset-inline-start:4px;inset-inline-end:auto;width:1px;height:auto}
  .bg-node:first-child::before{inset-inline-start:4px;top:14px}
  .bg-node:last-child::before{bottom:auto;height:0}
  .bg-node-dot{position:absolute;inset-inline-start:0;top:.3rem;margin:0}
  .bg-node:first-child .bg-node-dot{top:calc(.3rem - 2px)}
  .bg-node-name{margin-top:0}
}

/* origin radio: broadcast-console card — identity + transport left,
   station details (local clock, city, file) in the right column */
.bg-air{background:var(--ink-2);border:1px solid var(--line);border-radius:var(--r);
  padding:1.05rem clamp(1rem,2.6vw,1.5rem)}
.bg-air-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:1.2rem 2.4rem;
  align-items:stretch}
.bg-air-main{display:flex;flex-direction:column;min-height:100%}
.bg-air-status{margin:0 0 .45rem}
.bg-air-dot{display:inline-block;width:8px;height:8px;border-radius:50%;
  background:var(--mute-2);margin-inline-end:.55rem;vertical-align:1px}
.bg-air-dot.on{background:var(--verm)}
.bg-air-name{font-size:clamp(1.7rem,4.6vw,2.6rem);margin:0 0 .5rem}
.bg-air-side{display:flex;flex-direction:column;gap:.7rem}
.bg-air-clock{font-family:var(--disp);font-weight:700;line-height:1;color:var(--paper);
  font-size:clamp(1.5rem,3.8vw,2.1rem);white-space:nowrap;text-align:end}
.bg-air-city{margin:0;text-align:end}
.bg-air-ctl{margin:auto 0} /* (v58) transport rests in the open space, not hugging the name */
/* station file — honest metadata cluster from the Radio Browser record.
   2×2 grid of detail cells: Language | Format / Stream | Web. */
.bg-air-file{margin:0;padding-top:.8rem;
  border-top:1px solid var(--line);
  display:grid;grid-template-columns:1fr 1fr;gap:.75rem 1.2rem;text-align:start}
.bg-air-filerow{display:block;margin:0;min-width:0}
.bg-air-filek{display:block;color:var(--mute);letter-spacing:.08em;
  text-transform:uppercase;font-size:10.5px;margin:0 0 .2rem}
.bg-air-filev{display:block;color:var(--paper-faint);min-width:0;text-transform:capitalize;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.bg-air-filev a{text-transform:none}
.bg-air-filev a{color:var(--paper);text-decoration:underline;
  text-underline-offset:3px;text-decoration-color:var(--line-strong)}
@media(max-width:560px){
  .bg-air-grid{grid-template-columns:1fr}
  .bg-air-clock,.bg-air-city{text-align:start}
  .bg-air-file{grid-template-columns:1fr}}

/* ---------- bag-page creative zones ----------
   Full-bleed tonal sections with ORGANIC flowing edges between them — a
   soft uneven wave, one breathing lobe, one torn-paper edge. A different
   edge language from the homepage's rolling hills; no straight lines,
   no hard rules — calm, sparse, intentional. */
.bg-zone{width:100vw;max-width:none;margin-inline-start:calc(50% - 50vw); /* (v62) logical: full-bleed in RTL too */
  background:var(--zbg);padding:2.8rem 0 3rem}
/* (v33) Origin radio zone: extra air above the title so the section reads
   vertically centered between the looming dune divider above and the wave
   below. Scoped to the bag page's radio zone only. */
.bg-zone.bg-zone-radio{padding-top:4.6rem}
.bg-zone-inner{max-width:var(--max);margin:0 auto;padding:0 var(--pad)}
.bg-div{width:100vw;max-width:none;margin-inline-start:calc(50% - 50vw); /* (v62) logical: full-bleed in RTL too */
  background:var(--b);line-height:0;margin-bottom:-1px;position:relative}
.bg-div svg{display:block;width:100%;height:clamp(52px,7vw,88px)}
/* (v30) bag-page dividers render larger: ~1.7x the shared default — clearly
   more presence, still well short of the homepage hero waves. Scoped to the
   'bg-div-lg' class the bag page passes, so the Atlas dividers and the hero
   keep their own sizes. */
.bg-div.bg-div-lg svg{height:clamp(88px,12vw,150px)}
.bg-div .wv-front{position:relative}
.bg-div .wv-front path{fill:var(--t)}
/* (v24) the second, back wave: the same shape flipped horizontally so its
   phase differs, cresting above the front wave in places. Mid tone between
   the two sections — a flat color-mix, not a gradient. Static: no drift. */
.bg-div .wv-back{position:absolute;left:0;right:0;bottom:0;transform:scaleX(-1)}
/* (v27) --bk lets a divider override the auto mix when it would melt into
   a zone (dark-on-dark); falls back to the flat color-mix otherwise. */
.bg-div .wv-back path{fill:var(--bk,color-mix(in srgb, var(--t) 55%, var(--b)))}
.bg-zone .tibeb{margin:2.2rem 0 1.5rem}
/* (v25) standard-brew panel on the bag page: breathing room below so the
   brew details never sit right on top of the next section's wave divider. */
.bg-std{margin:0 0 2.6rem}

/* ---------- design evolution: bean, crease, tibeb ---------- */

/* tibeb-inspired woven ribbon — a thin geometric strip between major sections.
   Coffee-cherry, gold and bean-brown: culturally rooted color, a ribbon never
   wallpaper. ORIGINAL colorway only, used sparingly — a rare accent. */
.tibeb{height:8px;margin:2.8rem 0;border:0;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='8' viewBox='0 0 36 8'%3E%3Crect x='0' y='3.6' width='36' height='0.8' fill='%233d2617'/%3E%3Cpath d='M9 1.2 L11.8 4 L9 6.8 L6.2 4 Z' fill='%23c8a24a'/%3E%3Cpath d='M27 1.2 L29.8 4 L27 6.8 L24.2 4 Z' fill='%23a11f14'/%3E%3Crect x='17' y='2.6' width='2' height='2.8' fill='%23d3ac76'/%3E%3C/svg%3E") repeat-x left center/auto 8px}

/* palette carry-through: crema key numerals, quiet gold top-rules on cards —
   more color, still editorial. (The active-tab gold indicator now lives on
   #topnav in base.css.) */
.st-num{color:var(--crema)}
.tm-water{color:var(--crema)}
.panel{border-top:2px solid rgba(200,162,74,.38)}

/* bean-crease signature mark — the coffee bean's center S-curve as the site's
   one repeated gesture. Small, centered, crema: the maker's hand. */
.crease-div{text-align:center;margin:2.4rem 0;color:var(--crema);line-height:0}
.crease-div svg{display:inline-block;width:78px;height:22px}

/* ---- motif family: handcrafted Ethiopian-coffee marks ----
   Each used sparingly, never twice on one screen. Shared hand, distinct homes. */
.motif{line-height:0;pointer-events:none}
.motif svg{display:block;width:100%;height:auto}
/* jebena: gold single-line pot, home = quick-log/brew area */
.motif-jebena{width:52px;color:var(--gold);margin:0 auto 1.1rem}
/* cherry sprig: beside the Origin heading on the bag page */
.motif-sprig{width:44px;flex:none}
.sect-row{display:flex;align-items:center;gap:.8rem;margin:0 0 1.3rem}
.sect-row.mt{margin-top:3rem}
.sect-row .sect{margin:0}
/* coffee ring: faint cup-stain behind the stats totals */
.motif-ring{position:absolute;top:-46px;right:-34px;width:190px;color:var(--crema);opacity:.13}
.st-totals{position:relative;overflow:hidden}

/* ---- atmosphere zones: stronger weave texture behind heroes ----
   Same letterpress layer, bolder where there is air, calm behind prose. */
.tex-zone{position:relative}
.tex-zone::before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:url('../assets/texture/weave-page.png') center/cover no-repeat;
  opacity:.18}

/* editorial drop cap on the producer bio */
.bg-producer .prose>p:first-child::first-letter{font-family:var(--disp);font-weight:700;
  font-size:3.2em;line-height:.84;float:inline-start;padding-top:.05em;
  padding-inline-end:.14em;padding-bottom:0;padding-inline-start:0;color:var(--crema)}

/* standard recipe values as oversized display numerals — figures, not labels */
.bg-kv>div{padding:1rem 1.1rem}
.bg-kv .k{margin-bottom:.45rem}
.bg-kv .v{font-family:var(--disp);font-weight:700;font-size:1.55rem;line-height:1.15;
  color:var(--crema);font-variant-numeric:tabular-nums}

/* ---- Local tab (lc-) — DC-metro coffee: map, news feed, roaster directory,
   where-to-buy-beans. Same hand as the rest: kora cards, display type,
   vermilion kickers and links only. ---- */
.lc-title{margin:0 0 .8rem}
.lc-intro{margin:0 0 .4rem;color:var(--paper-faint);font-size:1.05rem;max-width:44rem}
.lc-updated{margin:0 0 2rem}
.lc-sec{margin:2.6rem 0 1.2rem}
.lc-map-card{padding:.7rem;margin:0 0 .9rem}
.lc-map{height:min(58vh,520px);min-height:400px;border:1px solid #2b1e10;border-radius:2px}
.lc-legend{display:flex;gap:1.6rem;margin:0 0 .4rem;color:var(--paper-faint);font-size:.92rem}
.lc-leg{display:inline-flex;align-items:center;gap:.5rem}
.lc-dot{width:11px;height:11px;border-radius:50%;border:1px solid #16110d;display:inline-block}
.lc-card{display:block;padding:1.25rem 1.3rem;margin:0 0 1.3rem}
.lc-kicker{margin:0 0 .5rem;color:var(--verm);font-size:.82rem;font-weight:700;
  letter-spacing:.12em;text-transform:uppercase}
[dir="rtl"] .lc-kicker{letter-spacing:0}
.lc-head{margin:0 0 .35rem;font-size:1.35rem;line-height:1.2}
.lc-meta{margin:0 0 .7rem}
.lc-sum{margin:0 0 .9rem;color:var(--paper-faint);line-height:1.55}
.lc-link{color:var(--verm);font-weight:700;text-decoration:none}
.lc-link:hover{text-decoration:underline}
