/* ============================================================================
   SOCIAL MAPIA — Brutal Lite, batch 3a (pin page, business page, Moments, sharing)
   Source of truth: C:\Users\pc\Downloads\test\SocialMapia-BrutalLite-with-Moments.html
   Loads AFTER assets/css/lite.css (shared tokens/classes) + assets/css/lite-tabs.css
   (shell + bottom tab bar). Reuses lite.css classes (.card, .chip, .btn-*, .plan-bar,
   .vgrid/.vcard, .av, .list, .sticker…) wherever they already match the design; this
   file only adds what's specific to pin.php / place.php / Moments / sharing.
   Scoped to body.lite so it never touches the old dark theme.
   ============================================================================ */

/* Immersive pages (pin/business/moment-view): our own back/share sit over the hero,
   so the standard top nav bar (logo/city/search/bell/menu) is hidden here. Set via
   $body_class = 'pg-immersive' on those pages only — every other Lite page (plan.php,
   my-moments.php, moments-all.php, add/edit forms…) keeps the normal top nav. */
body.pg-immersive header.nav{display:none;}
body.pg-immersive .lite-page{padding-top:0;}
/* pin.php v2: the title/byline now lives below the hero (.pg-title) — hide the original
   overlay (.pinA__foot, required unchanged for the full-screen reel view) except while
   actually playing full screen, when brutal.css's body.is-reelfs rules take back over. */
body.lite .pinA__hero:not(.is-playing) .pinA__foot{display:none;}
/* Design has no overlays on the hero photo in the NORMAL (non-fullscreen) pin view: no orange
   category bubble, no "Places nearby" swipe-list pill, no swipe coach-mark note. The nearby-swipe
   feature (assets/js/pin-swipe.js) keeps working — this only hides its on-photo UI here; brutal.css
   already hides the same elements while body.is-reelfs (full screen), so full-screen is untouched. */
body.pg-immersive:not(.is-reelfs) .pg-hero .pin-gallery__cat,
body.pg-immersive:not(.is-reelfs) .pg-hero .pswipe__count,
body.pg-immersive:not(.is-reelfs) .pg-hero .pswipe__note{display:none;}
/* v3: the hero duration pill + mute button (design's "▶ 0:24 · 3 photos" + round mute
   button) only make sense over the silent preview loop — the fullscreen reel view has its
   own controls (pinA__vx / pinA__vmute / pinA__vprog, see brutal.css), so hide these once
   playing full screen. */
body.is-reelfs .pg-hero-stickers,
body.is-reelfs .pg-hero-mute{display:none;}

/* reference (pin-page-preview.html .hero/.title-block): a FULL-BLEED hero (edge to edge,
   from under the status area, ~360px tall — fixed height, not aspect-ratio driven) with the
   white content sheet starting right below it, rounded top corners overlapping the hero by
   20px. Was previously relying on var(--sat)/var(--sab), custom properties only defined in
   the older assets/css/lite.css — NOT loaded on this page (STRICT-CONTRACT.md's real stack
   is brutal-lite.css + brutal-lite-web.css, which use env(safe-area-inset-*) directly) — so
   the whole margin: calc(...) declaration was invalid and silently dropped to 0, leaving the
   16px page padding showing on both sides. Fixed to use env(...) like the rest of the site. */
body.lite .pg-hero{position:relative;height:360px;background:var(--ink);
  /* width:auto (not 100%) is required for the bleed trick: with the parent's 16px padding,
     width:100% would resolve against the padding BOX, locking the hero to 361px even with
     negative margins; width:auto lets the negative margins actually add the extra 32px so
     the hero reaches both edges. */
  overflow:hidden;margin:calc(-18px - env(safe-area-inset-top,0px)) -16px 0;}
@media (min-width:481px){ body.lite .pg-hero{margin-left:0;margin-right:0;border-radius:0 0 0 0;} }
body.lite .pg-hero img,body.lite .pg-hero video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
body.lite .pg-hero .pg-hero-scrim{position:absolute;inset:0;background:linear-gradient(to bottom, rgba(0,0,0,.32) 0%, rgba(0,0,0,0) 30%, rgba(0,0,0,0) 58%, rgba(0,0,0,.42) 100%);}
/* the back/share row sits ~58px down (below the status area), matching the reference's
   .hero-top{top:64px} — the hero box itself starts above the viewport (negative margin, so
   it extends under the status bar), so this offset is measured from the HERO's own top, not
   the viewport: safe-area + 44px lands the row at the same on-screen spot as the reference. */
body.lite .pg-hero-top{position:absolute;top:calc(env(safe-area-inset-top,0px) + 44px);left:14px;right:14px;z-index:10;display:flex;align-items:center;justify-content:space-between;}
body.lite .pg-hero-stickers{position:absolute;left:14px;bottom:14px;z-index:10;display:flex;gap:8px;}
body.lite .pg-hero-mute{position:absolute;right:14px;bottom:14px;z-index:10;}
body.lite .icon-btn.on-hero{box-shadow:none;background:rgba(255,255,255,.9);}
/* the actual photo/video element (#galMain, classes .pin-gallery__main.pinA__hero) carries
   its OWN sizing/radius/shadow from the older app.css/brutal.css (height 340px or 64vh,
   rounded corners, a hard shadow) meant for a card-style hero, not this full-bleed one —
   that mismatch is what showed as a stray grey band/seam at the crop boundary. Force it to
   exactly fill .pg-hero instead, so there is nothing to clip or peek through. */
body.lite .pg-hero .pin-gallery__main.pinA__hero{position:absolute;inset:0;width:100%;height:100%;
  min-height:0;max-height:none;border-radius:0;box-shadow:none;}
/* the multi-photo thumbnail strip (.gstrip) has no slot in the reference — closest-style
   placement: a small on-photo filmstrip just above the sheet, no flat background panel
   (so it never reads as a stray bar), real feature kept working. */
body.lite .pg-hero .pin-gallery__thumbs.gstrip{position:absolute;left:14px;right:14px;bottom:50px;z-index:10;
  padding:0;margin:0;background:none;}
body.lite .pg-hero .pin-gallery__thumbs.gstrip .pin-gallery__thumb{width:34px;height:34px;border-radius:8px;
  border:1.5px solid rgba(255,255,255,.8);flex:0 0 auto;}

/* the title/content sheet overlaps the hero's bottom edge with rounded top corners
   (reference .title-block: border-radius 22px 22px 0 0, margin-top -20px) */
body.lite .pg-title{position:relative;background:var(--paper);border-radius:22px 22px 0 0;
  margin-top:-20px;z-index:2;}

/* business cover (shorter, logo tile overlapping the title block) */
body.lite .pg-cover{position:relative;height:200px;background:var(--ink);overflow:hidden;
  margin:calc(-18px - env(safe-area-inset-top,0px)) -16px 0;}
body.lite .pg-cover img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
body.lite .pg-cover .pg-hero-scrim{position:absolute;inset:0;background:linear-gradient(to bottom, rgba(0,0,0,.28) 0%, rgba(0,0,0,0) 32%, rgba(0,0,0,0) 62%, rgba(0,0,0,.32) 100%);}
body.lite .pg-logo-tile{position:absolute;left:16px;bottom:-24px;z-index:5;width:58px;height:58px;border-radius:16px;
  background:var(--yellow);border:var(--bd);display:flex;align-items:center;justify-content:center;color:var(--ink);
  font:800 18px/1 var(--font-display);overflow:hidden;}
body.lite .pg-logo-tile img{width:100%;height:100%;object-fit:cover;}

body.lite .pg-title{position:relative;padding-top:18px;}
body.lite .pg-h1{font:800 23px/1.22 var(--font-display);color:var(--ink);margin:0 0 6px;display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
body.lite .pg-h1 .ph-seal-check{color:var(--blue);font-size:.75em;}
body.lite .pg-tagline{font:600 14px/1.4 var(--font-ui);color:var(--muted);margin-bottom:9px;}
body.lite .pg-meta{font:700 12.5px/1 var(--font-ui);color:var(--muted);margin-bottom:8px;}
body.lite .open-line{display:flex;align-items:center;gap:6px;font:700 12.5px/1 var(--font-ui);margin-bottom:10px;}
body.lite .open-line .gdot{width:7px;height:7px;border-radius:50%;background:var(--teal);flex:0 0 auto;}
body.lite .open-line .green{color:var(--teal);}
body.lite .open-line .grey{color:var(--muted);font-weight:600;}
body.lite .pg-private{display:flex;align-items:center;gap:6px;font:700 12.5px/1 var(--font-ui);color:var(--muted);margin-bottom:10px;}
body.lite .pg-proof{font:600 12.5px/1 var(--font-ui);color:var(--muted);margin-bottom:6px;}
body.lite .pg-proof b{color:var(--ink);font-weight:800;}

/* yellow-soft offer card (the site's existing .coupon keeps its JS hooks; this re-skins it) */
body.lite .coupon{background:var(--yellow-soft);border:var(--bd);border-radius:var(--r-card);padding:14px;box-shadow:none;margin-bottom:10px;}
/* reference (pin-page-preview.html .offer-top/.offer-ico): a yellow icon tile beside the
   title. The old .coupon__title::before relied on an undefined --tag-ico var and never
   actually drew an icon — pin.php's render_offer_card() now emits a real <i> instead
   (.coupon__top wraps it + the title, matching the reference's layout). */
body.lite .coupon__top{display:flex;align-items:flex-start;gap:10px;}
body.lite .coupon__icotile{width:30px;height:30px;border-radius:9px;background:var(--yellow);flex:0 0 auto;
  display:flex;align-items:center;justify-content:center;color:var(--ink);font-size:15px;}
body.lite .coupon__title{font:800 13.5px/1.3 var(--font-display);color:var(--ink);}
body.lite .coupon__codebox{display:flex;align-items:center;gap:10px;margin-top:10px;flex-wrap:wrap;}
body.lite .coupon__code{display:inline-flex;align-items:center;gap:6px;font:800 13px/1 var(--font-ui);color:var(--ink);}
body.lite .coupon__copybtn{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;border-radius:9px;
  background:var(--ink);color:#fff;border:0;font:700 12.5px/1 var(--font-ui);cursor:pointer;}
body.lite .coupon__copybtn[hidden]{display:none;}
body.lite .coupon__desc{font:600 12px/1.4 var(--font-ui);color:var(--muted);margin:8px 0 0;}
body.lite .coupon__exp{font:700 11px/1 var(--font-ui);color:var(--muted-2);display:block;margin-top:6px;}
body.lite .coupon.coupon--expired{opacity:.6;}
body.lite .coupon.is-revealed .coupon__codetxt{letter-spacing:.04em;}

/* creator strip under the hero (pin page) */
body.lite .pg-creator{background:var(--card-2);border-radius:var(--r-card);padding:14px;margin-bottom:10px;}
body.lite .pg-creator-head{display:flex;align-items:center;gap:10px;margin-bottom:12px;}
body.lite .pg-creator-info{flex:1;min-width:0;}
body.lite .pg-creator-name{display:flex;align-items:center;gap:4px;font:800 13.5px/1 var(--font-ui);color:var(--ink);}
body.lite .pg-creator-sub{font:600 11.5px/1 var(--font-ui);color:var(--muted);margin-top:3px;}
body.lite .pg-note{font:500 13.5px/1.55 var(--font-ui);color:var(--ink);margin:0 0 10px;}

/* "at this place" box (restyled .atplace, same markup/JS) */
/* Launch review: this restyle never reset brutal.css's plain .atplace border/box-shadow,
   so the card kept its hard shadow+border by cascade even though this rule's own
   background/radius/padding applied — a second hard shadow on a screen whose one hard
   shadow is already the main "Plan a visit" button. Flattened to a calm border. */
body.lite .atplace{display:flex;align-items:center;gap:10px;background:var(--card-2);border-radius:var(--r-card);
  padding:13px 14px;margin-bottom:10px;text-decoration:none;border:1px solid var(--line,#e4e4e7);box-shadow:none;}
body.lite .atplace__img{width:36px;height:36px;border-radius:10px;object-fit:cover;flex:0 0 auto;background:#fff;
  display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:17px;}
body.lite .atplace__txt{flex:1;min-width:0;}
body.lite .atplace__k{display:block;font:800 10.5px/1 var(--font-ui);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin-bottom:2px;}
body.lite .atplace__n{font:800 13.5px/1.2 var(--font-display);color:var(--ink);}
body.lite .atplace__m{display:block;font:600 11.5px/1.3 var(--font-ui);color:var(--muted);margin-top:2px;}
body.lite .atplace__off{color:var(--blue);margin-left:6px;}
body.lite .atplace__go{color:var(--muted-2);flex:0 0 auto;}

/* map box */
body.lite .pg-map{position:relative;width:100%;height:160px;border-radius:16px;overflow:hidden;background:var(--card-2);margin:12px 0;}
body.lite .pg-map .map{width:100%;height:100%;}
body.lite .pg-map .map-dir{position:absolute;bottom:10px;right:10px;z-index:5;display:inline-flex;align-items:center;gap:6px;
  height:34px;padding:0 12px;border-radius:9px;background:var(--ink);color:#fff;font:700 12.5px/1 var(--font-ui);text-decoration:none;}

/* also pinned / nearby rails: restyle the existing .railrow / .cmini from inc/cards.php output */
body.lite .railrow{display:flex;gap:16px;overflow-x:auto;scrollbar-width:none;margin:0 -16px;padding:2px 16px 4px;}
body.lite .also-line{display:flex;align-items:center;gap:10px;margin:10px 0;}
body.lite .also-stack{display:flex;align-items:center;}
body.lite .also-stack img{width:28px;height:28px;border-radius:50%;object-fit:cover;border:2px solid #fff;margin-left:-9px;}
body.lite .also-stack img:first-child{margin-left:0;}
body.lite .also-label{font:700 12.5px/1 var(--font-ui);color:var(--muted);}

body.lite .claim-card{display:flex;align-items:center;gap:12px;background:var(--card-2);border-radius:var(--r-card);padding:14px;margin-top:10px;}
body.lite .claim-ico{width:36px;height:36px;border-radius:10px;background:#fff;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:17px;flex:0 0 auto;}
body.lite .claim-title{font:800 13px/1 var(--font-ui);color:var(--ink);}
body.lite .claim-sub{font:600 11.5px/1.3 var(--font-ui);color:var(--muted);margin-top:2px;}

body.lite .plan-bar .btn-brand.is-on{background:var(--ink);color:var(--yellow);}

body.lite .pg-report{display:flex;justify-content:center;margin:18px 0 0;}
body.lite .pg-report button{background:none;border:0;color:var(--muted-2);font:600 12px/1 var(--font-ui);
  display:inline-flex;align-items:center;gap:6px;padding:10px;cursor:pointer;min-height:44px;}

/* inc/cards.php's pin_card_html() output is now re-skinned to the vcard look from
   inside inc/cards.php itself (pin_card_lite_css(), emitted inline, once per request) —
   not here — so every page that calls pin_card_html() gets it automatically (pin.php
   rails, place.php's grid, radar.php, index.php, inc/happening.php), lite or not,
   with no per-page wiring. See inc/cards.php. */

/* place.php's guest-facing markup was rebuilt against the strict-mode reference
   (lite5/business-preview.html etc.) — see assets/css/page-business.css, which
   owns .cover/.title-block/.biz-* /.offer-card/.grid2/.map-wrap/.also-line/
   .claim-card now. The .hub__* /.mbar--float rules that used to style the old
   markup are gone (grepped: nothing else on the site ever used them). What's
   left here is just the manager-only grid tweak below, still place-exclusive
   (.placepage), no reference equivalent (see PAGE-BUILDER.md's LEFT-OUT.md). */
body.lite .place-claim-note{font:600 12px/1.4 var(--font-ui);color:var(--muted);margin-top:8px;}

/* Every card in the manager's full pin grid belongs to the SAME place, so repeating
   its category chip on each thumbnail (inc/cards.php's .pin-card__cat) is just noise
   here — and it sits awkwardly on a photo-less placeholder tile, reading like a stray
   colour swatch. This page doesn't have per-clip duration data to show instead, so
   the chip is simply dropped rather than left cluttering the grid. */
body.lite .placepage .pgrid .pin-card__cat{display:none;}
body.lite .placepage .pgrid .pin-card__ph{font-size:30px;opacity:.5;}
/* The design (business-preview.html) has one plain .vcard clip grid, no separate
   "N clips here" card-framed list. This page keeps BOTH (the vcard preview above,
   owned by page-business.css, plus this fuller pin_card_html() grid below it for
   everything beyond the first 4) — see LEFT-OUT.md. Since there's no reference for
   this extra section, it should at least look calm like the rest of the page, not
   like inc/cards.php's shared pin_card_lite_css() framed-card default (2px ink
   border + white box + inner padding — brutal.css's old .pin-card rule, which the
   lite override never resets since it only ADDS properties, same specificity-tie
   class of bug fixed elsewhere on this page). Scoped to this page only — other
   pin_card_html() consumers (profile.php, radar.php, index.php) keep the frame. */
body.lite .placepage .pgrid .pin-card{border:0;background:none;border-radius:0;}
body.lite .placepage .pgrid .pin-card__info{padding:0;margin-top:6px;}

/* ============================================================================
   MOMENTS — place-page strip + empty state + dedicated pages
   ============================================================================ */
body.lite .moments-strip{display:flex;gap:12px;overflow-x:auto;scrollbar-width:none;padding-bottom:2px;margin-bottom:12px;}
body.lite .moment-card{flex:0 0 auto;width:140px;display:flex;flex-direction:column;gap:7px;text-decoration:none;color:inherit;}
body.lite .moments-grid .moment-card{width:auto;}
body.lite .moments-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 12px;}
body.lite .moment-card__media{position:relative;width:140px;height:140px;border-radius:16px;overflow:hidden;background:var(--card-2);}
body.lite .moments-grid .moment-card__media{width:100%;aspect-ratio:1/1;height:auto;}
body.lite .moment-card__media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
body.lite .moment-card__user{display:flex;align-items:center;gap:6px;padding:0 1px;}
body.lite .moment-card__user img{width:18px;height:18px;border-radius:50%;object-fit:cover;background:var(--card-2);flex:0 0 auto;}
body.lite .moment-card__user span{font:700 11.5px/1 var(--font-ui);color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
body.lite .moment-card__user.anon span{color:var(--muted);}
body.lite .anon-avatar{width:18px;height:18px;border-radius:50%;background:var(--card-2);display:flex;align-items:center;justify-content:center;color:var(--muted-2);font-size:10px;flex:0 0 auto;}
body.lite .moment-card__cap{font:600 11.5px/1.35 var(--font-ui);color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
body.lite .moment-card__date{font:700 10.5px/1 var(--font-ui);color:var(--muted-2);}

body.lite .add-moment-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;border:1.5px dashed var(--line);
  border-radius:14px;background:var(--card-2);color:var(--ink);font:700 13px/1 var(--font-ui);padding:13px;min-height:44px;cursor:pointer;text-decoration:none;}
body.lite .add-moment-btn i{color:var(--blue);font-size:16px;}
body.lite .empty-moment{text-align:center;padding:22px 14px;background:var(--card-2);border-radius:var(--r-card);margin-bottom:12px;}
body.lite .empty-moment-ico{width:44px;height:44px;border-radius:50%;background:#fff;margin:0 auto 10px;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:20px;}
body.lite .empty-moment-title{font:800 14px/1.2 var(--font-display);color:var(--ink);margin-bottom:4px;}
body.lite .empty-moment-sub{font:600 12px/1.4 var(--font-ui);color:var(--muted);margin-bottom:12px;}

body.lite .back-row{display:flex;align-items:center;gap:2px;color:var(--blue);font:600 15px/1 var(--font-ui);margin-bottom:10px;cursor:pointer;background:none;border:0;padding:0;text-decoration:none;}
body.lite .back-row i{font-size:19px;}
body.lite .page-sub{font:600 13px/1 var(--font-ui);color:var(--muted);margin:4px 0 16px;}

/* moment-add.php + moment-view.php: rebuilt against the strict rules — moved to
   assets/css/page-moments.css (builder B1, see PAGE-BUILDER.md report).
   Deleted here on purpose; do not re-add. (my-moments.php's own styling is
   likewise moved to assets/css/page-my-moments.css by builder B2.) */

/* ============================================================================
   SHARING — bottom sheet + the two downloadable cards
   ============================================================================ */
body.lite .share-sheet-backdrop{position:fixed;inset:0;background:rgba(10,8,6,.45);z-index:900;display:none;}
body.lite .share-sheet-backdrop.is-open{display:block;}
body.lite .share-sheet{position:fixed;left:0;right:0;bottom:0;max-width:480px;margin:0 auto;z-index:901;background:#fff;
  border-radius:24px 24px 0 0;box-shadow:0 -10px 40px rgba(0,0,0,.22);padding:10px 16px calc(22px + env(safe-area-inset-bottom,0px));}
body.lite .share-grabber{width:38px;height:5px;border-radius:3px;background:var(--line);margin:0 auto 10px;}
body.lite .share-title{font:800 16px/1 var(--font-display);color:var(--ink);text-align:center;margin:0 0 14px;}
/* reference (share-sheet-preview.html .story-row/.story-opt/.story-thumb): a row of small
   FIXED-size 96x170 9:16 thumbnails, left-aligned — not a flex:1 card stretched to the full
   width. Only "Sticker card" is a real feature (see LEFT-OUT.md for Ticket/Mini map), so
   this is a one-item row at the same size/position as the reference's first thumb. */
body.lite .share-opts{display:flex;gap:10px;margin-bottom:14px;}
body.lite .share-opt{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:6px;background:none;border:0;cursor:pointer;color:inherit;text-decoration:none;}
body.lite .share-opt-thumb{position:relative;width:96px;height:170px;border-radius:12px;border:2px solid var(--ink);overflow:hidden;background:var(--card-2);display:flex;align-items:center;justify-content:center;}
body.lite .share-opt.on .share-opt-thumb{box-shadow:0 0 0 3px var(--yellow),var(--sh);}
body.lite .share-opt-thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
body.lite .share-opt-thumb i{font-size:26px;color:var(--ink);}
body.lite .share-opt span{font:700 11px/1.2 var(--font-ui);color:var(--ink);text-align:center;}
/* caption box (reference .caption-box): the real pin URL, tap to copy */
body.lite .share-caption{display:flex;align-items:flex-start;gap:8px;background:var(--card-2);border-radius:12px;
  padding:8px 11px;margin:0 0 14px;width:100%;border:0;cursor:pointer;text-align:left;font-family:inherit;}
body.lite .share-caption i{color:var(--muted);font-size:13px;margin-top:2px;flex:0 0 auto;}
body.lite .share-caption span{margin:0;font:600 11.5px/1.4 var(--font-ui);color:var(--ink-soft);word-break:break-all;}
/* v151: variable number of channel buttons (Instagram/Download only show when a real
   card image exists) — auto-fit columns instead of a fixed 4, so the row never leaves
   odd gaps or squeezes icons when a channel is missing. */
body.lite .share-targets{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:4px;margin-bottom:6px;}
body.lite .share-target{display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;background:none;border:0;color:inherit;}
body.lite .share-target .circ{width:46px;height:46px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:19px;color:#fff;}
body.lite .share-target span{font:700 10px/1.15 var(--font-ui);color:var(--ink);text-align:center;}
body.lite .circ.ig{background:linear-gradient(135deg,#ff5a5a,#c13584,#5851db);}
body.lite .circ.wa{background:#25d366;}
body.lite .circ.link{background:var(--card-2);color:var(--ink);}
body.lite .circ.dl{background:var(--ink);color:#fff;}
body.lite .circ.more{background:var(--yellow);color:var(--ink);}

/* share-pin-card.php / share-my-map.php moved to assets/css/page-share-cards.css
   (builder B2, v3.1 rebuild — full-bleed ink preview for the pin card, a
   native light map page for My map). */
