/* Gospel map — the life of Jesus on the land, opened from Study.
   Owner direction 2026-10-05: nothing tiny (labels >= 14px, reading text
   18-20px), nothing glaring white, a modern full-bleed experience.
   Mobile safeguards (FLICKER-RULES.md): opaque surfaces, no backdrop
   filters, no slide on opening, transform/opacity only for motion. */
#gospelMap{
  --gm-ink:#e8dec6; --gm-ink2:#c9bfa6; --gm-dim:#a59d88;
  --gm-gold:#f0c35e; --gm-gold2:#d9a441; --gm-accent:var(--gm-gold);
  --gm-shadow:16,21,26; --gm-panel:rgb(var(--gm-shadow));
  --gm-line:rgba(var(--gm-accentRGB,240,195,94),.28); --gm-sheet:46dvh;
  position:fixed; inset:0; z-index:221; display:none; overflow:hidden;
  background:#0c1419; color:var(--gm-ink);
  font-family:'Outfit',system-ui,sans-serif; font-size:16px; line-height:1.45;
  -webkit-tap-highlight-color:transparent; contain:layout paint size;
  overflow:clip;   /* never scrollable, even by focus() or scrollIntoView */
}
#gospelMap.on{display:block;}
#gospelMap small{display:block; font-size:14px; line-height:1.45; color:var(--gm-dim);}   /* never the browser's 'smaller' */
#gospelMap *{box-sizing:border-box;}
#gospelMap button{font:inherit; color:inherit; border:0; background:none; margin:0; cursor:pointer;}
#gospelMap button:focus-visible,#gospelMap [tabindex]:focus-visible{outline:3px solid var(--gm-gold); outline-offset:2px;}
html.gospelMapOpen{overflow:hidden; overscroll-behavior:none;}
/* v278 (owner, 6 Oct 2026: "Dictionary screen flicker when opening from MAP words ... normal and
   fullscreen"). The open map lays its own opaque ground over the whole screen and comes and goes in
   one frame, with no fade. Under it, opened from Study, lay the book, Study's scene still at 30%
   opacity, the room's vignette and dimmer (full-screen gradients), the header, drawer and desk sheet:
   translucent layers stacked beneath every word card a map word opened. FLICKER-RULES fix 3: "a blend
   layer underneath a newly promoted layer is the classic cause of tearing on a handset". A card from
   the page has only the page beneath it. While the map is up those surfaces are not drawn
   (visibility: no layout, every window keeps its place and scroll). Study's own frame stays visible —
   its film host (openHost) reads that. */
html.gospelMapOpen #readView, html.gospelMapOpen #study .panelStill, html.gospelMapOpen .vig,
html.gospelMapOpen #roomDim, html.gospelMapOpen body > header, html.gospelMapOpen #drawer,
html.gospelMapOpen .deskSheet{visibility:hidden !important;}
/* v278: a marked word looks exactly like the words around it (FLICKER-RULES v254; Study and the
   picture viewer already do this). The map's words wore the reader's ink — weight 600 and a four-layer
   gold text-shadow — and in a picture's caption ".gmArt figcaption span" caught the marking's span
   and shrank it to 14px, so about half a second after the map opened, its text thickened, glowed and
   re-wrapped. The words stay tappable; nothing about them changes when they become words. */
#gospelMap .dictw, #gospelMap .lexw, body.night #gospelMap .dictw, body.night #gospelMap .lexw,
#gospelMap .dictw:hover, #gospelMap .lexw:hover, body.night #gospelMap .dictw:hover, body.night #gospelMap .lexw:hover{
  font-weight:inherit; font-size:inherit; font-style:inherit; letter-spacing:inherit;
  color:inherit; text-shadow:inherit; background:none;}

/* ── the map ───────────────────────────────────────────────────────────── */
.gmStage{position:absolute; inset:0; touch-action:none; user-select:none; -webkit-user-select:none; cursor:grab; background:#081824;}
.gmStage.dragging{cursor:grabbing;}
.gmCanvas,.gmGL,.gmOver{position:absolute; left:0; top:0; display:block; width:100%; height:100%;}
.gmGL[hidden],.gmOver[hidden],.gmCanvas[hidden]{display:none;}
.gmHint{position:absolute; left:50%; top:calc(env(safe-area-inset-top,0px) + 84px); transform:translateX(-50%);
  padding:9px 16px; border-radius:22px; background:rgba(var(--gm-shadow),.9); border:1px solid var(--gm-line);
  font-size:15px; color:var(--gm-ink2); white-space:nowrap; pointer-events:none; transition:opacity .4s ease;}
.gmStage.explored .gmHint{opacity:0;}

/* ── floating controls ────────────────────────────────────────────────── */
.gmTop{position:absolute; left:0; right:0; top:0; display:flex; align-items:center; gap:10px;
  padding:calc(env(safe-area-inset-top,0px) + 14px) 16px 0; pointer-events:none;}
.gmTop > *{pointer-events:auto;}
.gmRound{flex:0 0 auto; width:50px; height:50px; border-radius:50% !important; display:grid; place-items:center;
  background:rgba(var(--gm-shadow),.92) !important; border:1px solid var(--gm-line) !important;
  box-shadow:0 4px 18px rgba(0,0,0,.35);}
.gmRound svg{width:22px; height:22px; fill:none; stroke:var(--gm-ink); stroke-width:2; stroke-linecap:round; stroke-linejoin:round;}
.gmTitleChip{min-width:0; display:flex; flex-direction:column; justify-content:center; padding:6px 18px; min-height:50px;
  border-radius:25px; background:rgba(var(--gm-shadow),.92); border:1px solid var(--gm-line); box-shadow:0 4px 18px rgba(0,0,0,.35);}
.gmTitleChip b{font-weight:500; font-size:18px; line-height:1.2; color:var(--gm-ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.gmTitleChip span{font-size:14px; line-height:1.25; color:var(--gm-dim); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.gmModes{display:flex; margin-left:auto; padding:4px; gap:4px; border-radius:25px; min-height:50px;
  background:rgba(var(--gm-shadow),.92); border:1px solid var(--gm-line); box-shadow:0 4px 18px rgba(0,0,0,.35);}
.gmModes button{min-height:42px; padding:0 16px; border-radius:21px !important; font-size:15px; font-weight:500; color:var(--gm-ink2) !important; white-space:nowrap;}
.gmModes button[aria-pressed="true"]{background:linear-gradient(180deg,rgba(var(--gm-accentRGB,240,195,94),.30),rgba(var(--gm-accentRGB,240,195,94),.16)) !important; color:var(--gm-ink) !important;
  box-shadow:inset 0 0 0 1px rgba(var(--gm-accentRGB,240,195,94),.55);}
.gmZoom{position:absolute; right:16px; display:flex; flex-direction:column; gap:10px; z-index:2;}
.gmZoom button{width:50px; height:50px;}
/* v288: find on the map — a panel over the top of the map, opaque like the chips (no backdrop filter) */
.gmFind{position:absolute; z-index:6; left:22px; top:calc(env(safe-area-inset-top,0px) + 14px); width:min(440px,calc(100% - min(440px,44vw) - 120px));   /* clear of the card and the zoom buttons */
  display:flex; flex-direction:column; border-radius:22px; overflow:hidden;
  background:var(--gm-panel); color:var(--gm-ink); border:1px solid var(--gm-line); box-shadow:0 8px 28px rgba(0,0,0,.45);}
.gmFind[hidden]{display:none;}
.gmFindBar{display:flex; align-items:center; gap:10px; min-height:56px; padding:5px 5px 5px 16px; border-bottom:1px solid var(--gm-line);}
.gmFindBar > svg{flex:0 0 auto; width:22px; height:22px; fill:none; stroke:var(--gm-dim); stroke-width:2; stroke-linecap:round;}
.gmFindBox{flex:1 1 auto; min-width:0; height:46px; padding:0; border:0; outline:0; background:none; color:var(--gm-ink); font:inherit; font-size:18px;}
.gmFindBox::placeholder{color:var(--gm-dim); opacity:1;}
.gmFindBox::-webkit-search-cancel-button{-webkit-appearance:none; display:none;}
#gospelMap .gmFindClose{flex:0 0 auto; width:46px; height:46px; border-radius:23px; display:grid; place-items:center;}
.gmFindClose svg{width:20px; height:20px; fill:none; stroke:var(--gm-ink2); stroke-width:2; stroke-linecap:round;}
/* the magnifier by the scene count (a column button collided with the hint and the top bar on short phones) */
.gmThreadTop .gmCount{margin-left:auto;}
#gospelMap .gmFindBtn,#gospelMap .gmPlayBtn{flex:0 0 auto; align-self:center; width:40px; height:40px; margin:-10px -6px -10px -2px; border-radius:20px;
  display:grid; place-items:center; border:1px solid var(--gm-line); touch-action:manipulation;}
#gospelMap .gmPlayBtn{margin-right:0;}   /* v290: play the journey, beside the magnifier */
/* v292 (owner: "a nice visual flare around the play button ... some sparkle to make it stand out in nice themed
   blending way"): the ▶ wears the theme's own call-to-action pair — the Read button's — with a soft halo of the
   theme's accent, and three small stars in its gold-ink twinkle around it until it has been used once. Transform
   and opacity only (the phone rules); still for reduced motion and lite. Finite (owner, 6 Oct 23:17 UTC: no flicker
   on the phone now, "keep it that way"): six twinkles, about 16 s after the map opens, then it rests — bright,
   but still. Nothing pulses during narration. */
#gospelMap .gmPlayBtn{position:relative; overflow:visible; border-color:transparent;
  background:var(--gm-cta,linear-gradient(180deg,#f3cd78,#d9a441)); box-shadow:0 0 0 3px rgba(var(--gm-accentRGB,240,195,94),.18),0 0 15px rgba(var(--gm-accentRGB,240,195,94),.42);}
.gmPlayBtn > svg{width:17px; height:17px; fill:var(--gm-ctaInk,#1b1405); stroke:none;}
.gmPlayBtn::after{content:""; position:absolute; inset:-3px; border-radius:50%; border:2px solid rgba(var(--gm-accentRGB,240,195,94),.55);
  opacity:0; pointer-events:none; animation:gmHalo 2.6s ease-out 6;}
.gmSpark{position:absolute; width:10px; height:10px; pointer-events:none; opacity:0; animation:gmTwinkle 2.6s ease-in-out 6;}
.gmSpark svg{display:block; width:100%; height:100%; fill:var(--gm-gold,#f0c35e);}
.gmSpark.s1{top:-8px; right:-4px;}
.gmSpark.s2{bottom:-6px; right:-7px; width:8px; height:8px; animation-delay:.9s;}
.gmSpark.s3{top:-7px; left:-5px; width:7px; height:7px; animation-delay:1.7s;}   /* above the count's line, never on it */
@keyframes gmTwinkle{0%,100%{opacity:0; transform:scale(.3) rotate(0deg);} 45%{opacity:1; transform:scale(1) rotate(45deg);} 70%{opacity:.55;}}
@keyframes gmHalo{0%{opacity:.75; transform:scale(1);} 100%{opacity:0; transform:scale(1.6);}}
#gospelMap .gmPlayBtn.seen .gmSpark{display:none;}
#gospelMap .gmPlayBtn.seen::after{animation:none;}
@media (prefers-reduced-motion:reduce){ .gmPlayBtn::after,.gmSpark{animation:none !important;} .gmSpark{opacity:.8;} }
html.lite .gmPlayBtn::after,html.lite .gmSpark{animation:none !important;}
#gospelMap .gmFindBtn:hover,#gospelMap .gmFindBtn[aria-expanded="true"]{background:rgba(var(--gm-accentRGB,240,195,94),.14);}
.gmFindBtn svg{width:19px; height:19px; fill:none; stroke:var(--gm-ink2); stroke-width:2.2; stroke-linecap:round;}
.gmFindList{overflow-y:auto; overscroll-behavior:contain; touch-action:pan-y; max-height:min(64vh,560px); padding:6px;
  scrollbar-width:thin; scrollbar-color:rgba(var(--gm-accentRGB,240,195,94),.35) transparent;}
.gmFindNote{margin:8px 12px 8px; font-size:14px; line-height:1.4; color:var(--gm-dim);}
.gmFindKinds{margin:2px 10px 8px;}   /* v291: browse by kind */
/* v292: the scene's title with its share icon */
.gmTitleRow{display:flex; align-items:flex-start; gap:10px;}
.gmTitleRow .gmSceneTitle{flex:1 1 auto; min-width:0;}
#gospelMap .gmShare{flex:0 0 auto; width:40px; height:40px; margin-top:2px; border-radius:20px; display:grid; place-items:center; border:1px solid var(--gm-line);}
#gospelMap .gmShare:hover{background:rgba(var(--gm-accentRGB,240,195,94),.14);}
.gmShare svg{width:19px; height:19px; fill:none; stroke:var(--gm-ink2); stroke-width:2; stroke-linecap:round; stroke-linejoin:round;}
#gospelMap .gmHit{display:flex; align-items:center; gap:12px; width:100%; padding:7px 10px; border-radius:14px; text-align:left;}
#gospelMap .gmHit:hover,#gospelMap .gmHit.on{background:rgba(var(--gm-accentRGB,240,195,94),.14);}
.gmHitPic{flex:0 0 auto; width:56px; height:42px; border-radius:8px; overflow:hidden; display:grid; place-items:center;
  background:rgba(var(--gm-tint,232,222,198),.08);}
.gmHitPic img{display:block; width:100%; height:100%; object-fit:cover;}
.gmHitPic svg{width:20px; height:20px; fill:none; stroke:var(--gm-gold); stroke-width:2; stroke-linecap:round; stroke-linejoin:round;}
.gmHitText{min-width:0; display:flex; flex-direction:column;}
.gmHitText b{font-weight:500; font-size:17px; line-height:1.3; color:var(--gm-ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
#gospelMap .gmHitText small{white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}

/* ── the scene card: a bottom sheet on phones, a side card on wide screens ── */
.gmCard{position:absolute; z-index:3; display:flex; flex-direction:column; overflow:hidden; overflow:clip;
  background:var(--gm-panel); color:var(--gm-ink); border:1px solid var(--gm-line);
  box-shadow:0 -10px 40px rgba(0,0,0,.45);}
.gmCard::before{content:""; position:absolute; inset:0; pointer-events:none; opacity:.55;
  background:linear-gradient(160deg,rgba(255,240,205,.045),transparent 40%), linear-gradient(0deg,rgba(0,0,0,.18),transparent 30%);}
.gmGrip{position:relative; flex:0 0 auto; height:30px; display:grid; place-items:center; cursor:grab; touch-action:none;}
.gmGrip i{width:46px; height:5px; border-radius:3px; background:rgba(var(--gm-tint,232,222,198),.42);}
.gmSheetHint{position:absolute; right:16px; top:6px; padding:3px 12px; border-radius:12px; font-size:14px; line-height:1.4;
  color:var(--gm-ctaInk,#1b1405); background:var(--gm-cta,linear-gradient(180deg,#f3cd78,#d9a441)); animation:gmHintIn .5s ease both;}
.gmSheetHint[hidden]{display:none;}
@keyframes gmHintIn{from{opacity:0; transform:translateY(4px);}to{opacity:1; transform:none;}}
.gmScroll{position:relative; flex:1 1 auto; min-height:0; overflow-y:auto; overscroll-behavior:contain;
  padding:2px 22px 18px; scrollbar-width:thin; scrollbar-color:rgba(var(--gm-accentRGB,240,195,94),.35) transparent;}
.gmScroll::-webkit-scrollbar{width:8px;} .gmScroll::-webkit-scrollbar-thumb{background:rgba(var(--gm-accentRGB,240,195,94),.3); border-radius:8px;}

/* life thread: scrub through the sequence */
.gmThread{position:relative; flex:0 0 auto; padding:2px 22px 8px; touch-action:none; user-select:none;}
.gmThreadTop{display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin-bottom:9px;}
.gmPhase{font-size:14px; font-weight:500; letter-spacing:.09em; text-transform:uppercase; color:var(--gm-gold); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.gmCount{font-size:15px; color:var(--gm-dim); white-space:nowrap; font-variant-numeric:tabular-nums;}
.gmTrack{position:relative; height:36px; cursor:pointer;}
.gmTrack::before{content:""; position:absolute; left:0; right:0; top:16px; height:4px; border-radius:2px; background:rgba(var(--gm-tint,232,222,198),.16);}
.gmFill{position:absolute; left:0; top:16px; height:4px; border-radius:2px; background:linear-gradient(90deg,var(--gm-gold2),var(--gm-gold)); width:0;}
.gmTick{position:absolute; top:12px; width:12px; height:12px; margin-left:-6px; border-radius:50%;
  background:var(--gm-tick,#1d262c); border:2px solid rgba(var(--gm-accentRGB,240,195,94),.55);}
.gmTick.past{background:var(--gm-gold2); border-color:var(--gm-gold2);}
.gmSeg{position:absolute; top:9px; width:2px; height:18px; margin-left:-1px; background:rgba(var(--gm-tint,232,222,198),.30);}
.gmThumb{position:absolute; top:5px; width:26px; height:26px; margin-left:-13px; border-radius:50%;
  background:var(--gm-knob,radial-gradient(circle at 40% 35%,#ffe3a0,var(--gm-gold) 55%,var(--gm-gold2))); border:3px solid var(--gm-knobRim,#1a1206);
  box-shadow:0 0 0 3px rgba(var(--gm-accentRGB,240,195,94),.35),0 3px 10px rgba(0,0,0,.5); transform:translateZ(0);}
/* v287: the scenes in pictures, under the slider: a filmstrip, the current one ringed, the parts of his life apart
   (#gospelMap-scoped: the button reset above outranks a bare class) */
.gmStrip{display:flex; gap:6px; overflow-x:auto; overflow-y:hidden; margin:4px -22px 0; padding:4px 22px 4px; scrollbar-width:none;
  touch-action:pan-x; overscroll-behavior-x:contain; scroll-snap-type:x proximity;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 22px,#000 calc(100% - 22px),transparent);
          mask-image:linear-gradient(90deg,transparent,#000 22px,#000 calc(100% - 22px),transparent);}
.gmStrip::-webkit-scrollbar{display:none;} .gmStrip[hidden]{display:none;}
#gospelMap .gmFrame{flex:0 0 auto; width:72px; height:54px; padding:0; border:2px solid transparent; border-radius:9px; overflow:hidden; cursor:pointer;
  background:rgba(var(--gm-tint,232,222,198),.08); opacity:.74; scroll-snap-align:center; transition:opacity .2s ease, border-color .2s ease;}
#gospelMap .gmFrame img{display:block; width:100%; height:100%; object-fit:cover; pointer-events:none;}
#gospelMap .gmFrame:hover,#gospelMap .gmFrame:focus-visible{opacity:1;}
#gospelMap .gmFrame.on{border-color:var(--gm-gold); opacity:1;}
#gospelMap .gmFrame.part{margin-left:12px;}
.gmThread.scrubbing .gmThumb{box-shadow:0 0 0 7px rgba(var(--gm-accentRGB,240,195,94),.28),0 3px 10px rgba(0,0,0,.5);}

/* reading */
.gmEyebrow{margin:6px 0 6px; font-size:14px; font-weight:500; letter-spacing:.09em; text-transform:uppercase; color:var(--gm-dim);}
.gmSceneTitle{margin:0 0 6px; font-family:var(--panel-reader,'Noto Serif'),Georgia,serif; font-weight:600;
  font-size:clamp(24px,5.6vw,30px); line-height:1.22; color:var(--gm-hi,#f1e7cf); letter-spacing:-.005em;}
.gmRefs{margin:0 0 12px; font-size:16px; color:var(--gm-gold); font-weight:500;}
.gmWhere{display:flex; flex-wrap:wrap; align-items:center; gap:8px 10px; margin:0 0 16px; font-size:17px; color:var(--gm-ink);}
.gmWhere svg{width:20px; height:20px; flex:none; fill:none; stroke:var(--gm-gold); stroke-width:2;}
.gmBadge{display:inline-flex; align-items:center; gap:6px; padding:4px 11px; border-radius:14px; font-size:14px; font-weight:500; line-height:1.3;
  background:rgba(var(--gm-tint,232,222,198),.08); border:1px solid rgba(var(--gm-tint,232,222,198),.22); color:var(--gm-ink2);}
.gmBadge::before{content:""; width:9px; height:9px; border-radius:50%; background:var(--gm-gold);}
.gmBadge.debated::before{background:none; border:2px solid var(--gm-gold);}
.gmBadge.traditional::before{background:none; border:2px dotted var(--gm-gold);}
.gmBadge.regional::before,.gmBadge.inferred::before{background:rgba(var(--gm-accentRGB,240,195,94),.45);}
.gmBadge.unnamed::before,.gmBadge.parable::before{background:none; border:2px dashed var(--gm-dim);}
.gmQuote{margin:0 0 14px; padding:2px 0 2px 16px; border-left:3px solid rgba(var(--gm-accentRGB,240,195,94),.55);
  font-family:var(--panel-reader,'Noto Serif'),Georgia,serif; font-size:19px; line-height:1.6; color:var(--gm-body,#ece2ca);}
.gmQuote p{margin:0 0 .45em;}
.gmQuote sup{font-family:'Outfit',sans-serif; font-size:14px; font-weight:500; color:var(--gm-gold); margin-right:5px; vertical-align:baseline; position:relative; top:-.35em;}
.gmQuote cite{display:block; font-style:normal; font-family:'Outfit',sans-serif; font-size:14px; letter-spacing:.06em; color:var(--gm-dim); margin-top:2px;}
.gmArt{margin:2px 0 18px; border-radius:14px; overflow:hidden; background:#0d1216; border:1px solid rgba(var(--gm-tint,232,222,198),.16);
  box-shadow:0 10px 26px rgba(0,0,0,.35);}
.gmArt img{display:block; width:100%; aspect-ratio:16/10; object-fit:cover; cursor:zoom-in; transition:aspect-ratio .3s ease;}
.gmArt.open img{aspect-ratio:auto; object-fit:contain; max-height:70vh; cursor:zoom-out;}
.gmArt figcaption{padding:10px 14px 12px;}
/* v279 (owner, 6 Oct: the boy-in-the-temple picture's "text in it..was terribly displayed / broken"): these
   style the caption's own title and credit line only. As "figcaption span" they also caught the span
   word-marking wraps around every word, so each word stood on its own line at 14px. */
.gmArt figcaption > b{display:block; font-weight:500; font-size:16px; color:var(--gm-ink);}
.gmArt figcaption > span{display:block; margin-top:2px; font-size:14px; color:var(--gm-dim);}
/* v283: a place's photograph shows whole (no crop to the artwork's 16:10); its credit's links stay quiet */
.gmPhoto img{aspect-ratio:auto; height:auto; cursor:default;}
/* v286: a painting shows whole; a tall one stands centred in the card, no taller than about half the screen */
.gmPainting img{aspect-ratio:auto; height:auto; max-height:min(56vh,460px); object-fit:contain; cursor:default;}
.gmPhoto figcaption a,.gmPainting figcaption a{color:inherit; text-decoration:underline; text-decoration-color:rgba(var(--gm-tint,232,222,198),.35); text-underline-offset:2px;}
.gmNote{margin:0 0 16px; font-size:17px; line-height:1.55; color:var(--gm-ink2);}
.gmBlock{margin:0 0 16px; padding:14px 16px; border-radius:14px; background:rgba(var(--gm-tint,232,222,198),.055); border:1px solid rgba(var(--gm-tint,232,222,198),.12);}
.gmBlock h3{margin:0 0 8px; font-size:14px; font-weight:500; letter-spacing:.09em; text-transform:uppercase; color:var(--gm-gold);}
.gmLeg p{margin:0 0 6px; font-size:17px; line-height:1.5; color:var(--gm-ink);}
.gmLeg small,.gmFoot small{display:block; font-size:14px; line-height:1.45; color:var(--gm-dim); margin-top:6px;}
.gmLegBig{display:flex; flex-wrap:wrap; gap:6px 16px; margin:2px 0 8px;}
.gmLegBig span{font-size:15px; color:var(--gm-dim);}
.gmLegBig b{display:block; font-size:22px; font-weight:500; color:var(--gm-hi,#f1e7cf); font-variant-numeric:tabular-nums;}
.gmFact{display:grid; grid-template-columns:auto 1fr; gap:4px 12px; align-items:baseline; padding:9px 0; border-top:1px solid rgba(var(--gm-tint,232,222,198),.10);}
.gmFact:first-of-type{border-top:0; padding-top:2px;}
.gmFact > span{font-size:14px; font-weight:500; letter-spacing:.07em; text-transform:uppercase; color:var(--gm-dim); min-width:5.4em;}
.gmFact q{font-family:var(--panel-reader,'Noto Serif'),Georgia,serif; font-size:17px; line-height:1.5; color:var(--gm-body,#ece2ca); quotes:"“" "”";}
.gmFact button,.gmLink{font-size:14px !important; color:var(--gm-gold) !important; text-decoration:underline; text-underline-offset:3px; padding:0 !important; justify-self:start;}
.gmFact em{grid-column:2; font-style:normal; font-size:14px; color:var(--gm-dim);}
.gmWord{display:grid; grid-template-columns:minmax(5.5em,auto) 1fr; gap:4px 14px; align-items:baseline; padding:8px 0; border-top:1px solid rgba(var(--gm-tint,232,222,198),.10);}
.gmWord:first-of-type{border-top:0; padding-top:2px;}
.gmWord b{font-family:var(--panel-reader,'Noto Serif'),Georgia,serif; font-weight:600; font-size:17px; color:var(--gm-gold);}
.gmWord span{font-size:16px; line-height:1.5; color:var(--gm-body,#ece2ca);}
@media (max-width:420px){ .gmWord{grid-template-columns:1fr; gap:2px;} }
.gmSecs{display:flex; flex-direction:column; gap:2px;}
.gmSecs button{display:flex; justify-content:space-between; gap:12px; width:100%; text-align:left; padding:10px 2px !important;
  font-size:17px; color:var(--gm-ink) !important; border-top:1px solid rgba(var(--gm-tint,232,222,198),.10) !important;}
.gmSecs button:first-child{border-top:0 !important;}
.gmSecs button span{color:var(--gm-dim); font-size:15px; white-space:nowrap;}
.gmChips{display:flex; flex-wrap:wrap; gap:8px;}
.gmChips button{padding:8px 14px !important; border-radius:18px !important; font-size:15px; background:rgba(var(--gm-tint,232,222,198),.07) !important;
  border:1px solid rgba(var(--gm-tint,232,222,198),.18) !important; color:var(--gm-ink) !important; text-align:left;}
.gmChips button.cur{border-color:rgba(var(--gm-accentRGB,240,195,94),.7) !important; background:rgba(var(--gm-accentRGB,240,195,94),.16) !important;}
.gmFoot{margin:6px 0 0; font-size:14px; color:var(--gm-dim);}
.gmFoot a{color:var(--gm-ink2);}
.gmLoading{font-size:17px; color:var(--gm-dim); margin:8px 0 16px;}
/* v289: the whole passage — the accounts as chips, then the verses set like the key verses */
.gmStory .gmChips{margin-bottom:12px;}
/* v290: hear it — Listen beside the block's name; the verse being read is lit */
.gmStoryHead{display:flex; align-items:center; justify-content:space-between; gap:12px; margin:0 0 10px;}
.gmStoryHead h3{margin:0;}
#gospelMap .gmListen{flex:0 0 auto; display:inline-flex; align-items:center; gap:7px; min-height:38px; padding:6px 15px 6px 11px; border-radius:19px;
  font-size:15px; font-weight:500; color:var(--gm-ink); background:rgba(var(--gm-accentRGB,240,195,94),.12); border:1px solid rgba(var(--gm-accentRGB,240,195,94),.45);}
#gospelMap .gmListen.on{background:rgba(var(--gm-accentRGB,240,195,94),.26);}
#gospelMap .gmListen:disabled{opacity:.55; cursor:default;}
.gmListen svg{width:17px; height:17px; fill:currentColor; stroke:none;}
.gmStoryText p{border-radius:8px;}
.gmQuote p{border-radius:8px;}
.gmQuote p.reading,.gmStoryText p.reading{background:rgba(var(--gm-accentRGB,240,195,94),.13); box-shadow:0 0 0 6px rgba(var(--gm-accentRGB,240,195,94),.13);}
#gospelMap .gmStoryOpen{display:block; width:100%; padding:12px 14px; border-radius:14px; font-size:16px; font-weight:500; text-align:center;
  color:var(--gm-ink); background:rgba(var(--gm-accentRGB,240,195,94),.12); border:1px solid rgba(var(--gm-accentRGB,240,195,94),.45);}
#gospelMap .gmStoryOpen:hover{background:rgba(var(--gm-accentRGB,240,195,94),.2);}
.gmStory .gmStoryText{margin:2px 0 0;}

.gmNav .gmStep{width:54px; height:54px; flex:0 0 auto; border-radius:50% !important; display:grid; place-items:center;
  background:rgba(var(--gm-tint,232,222,198),.08) !important; border:1px solid rgba(var(--gm-tint,232,222,198),.2) !important;}
.gmNav .gmStep svg{width:24px; height:24px; fill:none; stroke:var(--gm-ink); stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round;}
.gmNav .gmStep:disabled{opacity:.32; cursor:default;}
.gmRead{flex:1 1 auto; min-width:0; min-height:54px; padding:0 18px !important; border-radius:27px !important; font-size:17px !important; font-weight:500;
  color:var(--gm-ctaInk,#1b1405) !important; background:var(--gm-cta,linear-gradient(180deg,#f3cd78,#d9a441)) !important; box-shadow:0 2px 0 rgba(255,255,255,.25) inset,0 6px 16px rgba(0,0,0,.35);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.gmRead:disabled{opacity:.45;}
.gmLive{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap;}

/* phones: a bottom sheet that peeks or opens; it moves by transform only */
#gospelMap{--gm-navh:calc(78px + env(safe-area-inset-bottom,0px)); --gm-peek:calc(44dvh - 78px);}
.gmRefBtn{font-size:16px !important; color:inherit !important; padding:0 !important;}
.gmRefBtn:hover{text-decoration:underline; text-underline-offset:3px;}
.gmNav{position:absolute; z-index:4; display:flex; align-items:center; gap:10px; padding:11px 16px calc(env(safe-area-inset-bottom,0px) + 12px);
  background:var(--gm-panel); border:1px solid var(--gm-line);}
@media (orientation:portrait) and (max-width:1000px){
  #gospelMap .gmFrame{width:56px; height:42px; border-radius:8px;}
  .gmFind{left:10px; right:10px; width:auto; top:calc(env(safe-area-inset-top,0px) + 10px);}
  /* the card's height is set by script (setSheet); it moves by transform only. Its frame reaches the top of the screen,
     so opened full it is a clear reading page over the map and its top bar (owner, 7 Oct 2026: "full screen viewing..
     clear viewing mode"); peek and half sit where they did, being measured from the card's own height */
  .gmCard{left:0; right:0; top:env(safe-area-inset-top,0px); bottom:var(--gm-navh); border-radius:22px 22px 0 0;
    border-bottom:0; border-left:0; border-right:0; transform:translateY(calc(100% - 50dvh));
    transition:transform .38s cubic-bezier(.2,.85,.25,1); will-change:transform; touch-action:none;}
  .gmCard.full{touch-action:pan-y; border-radius:0;}
  .gmCard.dragging{transition:none;}
  .gmCard:not(.full) .gmScroll{overflow:hidden;}
  .gmGrip{height:34px;}
  .gmNav{left:0; right:0; bottom:0; border-left:0; border-right:0; border-bottom:0;}
  /* v284: the buttons ride above the sheet on a transform (the compositor's business): animating `bottom`
     laid the map out again on every frame of the sheet's slide */
  .gmZoom{bottom:calc(var(--gm-navh) + 14px); transform:translateY(calc(-1 * var(--gm-vis, 40dvh))); will-change:transform;
    transition:opacity .2s, transform .38s cubic-bezier(.2,.85,.25,1);}
  #gospelMap:has(.gmCard.full) .gmZoom{opacity:0; pointer-events:none;}
  .gmZoom .gmFit{display:none;}
  .gmTop{gap:8px; padding-left:12px; padding-right:12px;}
  .gmTitleChip{flex:1 1 auto; padding:5px 14px;}
  .gmModes button{padding:0 12px;}
  .gmFull{display:none !important;}
}
@media (max-width:380px){ .gmModes button{padding:0 9px;} .gmTitleChip b{font-size:17px;} }
@media (max-width:360px){ .gmTitleChip{display:none;} .gmReadRef{display:none;} }   /* the mode button already names the chapter */
@media (orientation:portrait) and (min-width:600px) and (max-width:1000px){ #gospelMap{--gm-peek:calc(40dvh - 78px);} .gmFind{left:max(10px,calc(50% - 360px)); right:max(10px,calc(50% - 360px));} .gmCard,.gmNav{left:max(0px,calc(50% - 360px)); right:max(0px,calc(50% - 360px)); border-left:1px solid var(--gm-line); border-right:1px solid var(--gm-line);} }
/* wide screens and phones on their side: a card on the right */
@media (orientation:landscape), (min-width:1001px){
  .gmCard{right:16px; top:calc(env(safe-area-inset-top,0px) + 80px); bottom:calc(16px + 78px); width:min(440px,44vw);
    border-radius:20px 20px 0 0; border-bottom:0;}
  .gmNav{right:16px; bottom:16px; width:min(440px,44vw); border-radius:0 0 20px 20px; padding-bottom:12px;}
  .gmGrip{display:none;}
  .gmThread{padding-top:16px;}
  .gmZoom{right:calc(min(440px,44vw) + 32px); bottom:22px;}
}
@media (max-height:560px) and (orientation:landscape){
  .gmCard{top:12px; bottom:calc(12px + 78px); right:12px;}
  .gmNav{right:12px; bottom:12px;}
  .gmTop{padding-top:12px; right:calc(min(440px,44vw) + 24px); width:auto;}
  .gmFind{top:12px;}
  .gmTop .gmModes{margin-left:0;}
  .gmTitleChip{display:none;}
  .gmZoom{bottom:12px;}
  .gmFull{display:none !important;}
  .gmSceneTitle{font-size:24px;}
  .gmHint{left:calc(50% - min(440px,44vw)/2); top:72px;}
}
@media (orientation:landscape) and (min-height:561px), (min-width:1001px) and (min-height:561px){
  .gmTop{padding-left:22px; right:calc(min(440px,44vw) + 32px); width:auto;}
  .gmHint{left:calc(50% - min(440px,44vw)/2);}
}
@media (prefers-reduced-motion:reduce){ .gmCard,.gmHint{transition:none !important;} }
html.lite #gospelMap .gmRound,html.lite #gospelMap .gmTitleChip,html.lite #gospelMap .gmModes,html.lite #gospelMap .gmCard{box-shadow:none;}

/* ── the Study tab ────────────────────────────────────────────────────── */
#stBody .gmTab{--gmz:var(--stz,1); font-family:'Outfit',system-ui,sans-serif; color:var(--washPanelInk,#e9e0c6);}
#stBody .gmTab .stOverline{font-size:calc(14px * var(--gmz)); letter-spacing:.16em;}
#stBody .gmPreview{position:relative; display:block; width:100%; aspect-ratio:16/11; margin:0 0 16px; padding:0; overflow:hidden; cursor:pointer;
  border-radius:16px; border:1px solid rgba(var(--goldRGB),.42); background:#0b1922; box-shadow:0 6px 20px rgba(0,0,0,.35);}
#stBody .gmPreview canvas{position:absolute; inset:0; width:100%; height:100%; display:block;}
#stBody .gmPreview .gmOpen{position:absolute; left:12px; right:12px; bottom:12px; display:flex; align-items:center; justify-content:space-between; gap:10px;
  min-height:52px; padding:0 18px; border-radius:26px; background:var(--gm-openBg,rgba(14,19,24,.9)); border:1px solid rgba(var(--gm-accentRGB,240,195,94),.5);
  font-size:calc(17px * var(--gmz)); font-weight:500; color:var(--gm-openInk,#efe4c9); text-align:left;}
#stBody .gmPreview .gmOpen svg{width:22px; height:22px; fill:none; stroke:var(--gm-openIcon,#f0c35e); stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; flex:none;}
#stBody .gmList{list-style:none; margin:0 0 14px; padding:0; display:flex; flex-direction:column; gap:6px;}
#stBody .gmList button{display:grid; grid-template-columns:38px 1fr auto; align-items:center; gap:12px; width:100%; min-height:62px; padding:10px 12px;
  text-align:left; border-radius:14px; border:1px solid rgba(var(--goldRGB),.24); background:rgba(var(--goldRGB),.06); color:inherit; font:inherit; cursor:pointer;}
#stBody .gmList button:hover{border-color:rgba(var(--goldRGB),.55); background:rgba(var(--goldRGB),.12);}
#stBody .gmNum{width:34px; height:34px; border-radius:50%; display:grid; place-items:center; font-size:calc(15px * var(--gmz)); font-weight:500;
  background:#141a1f; border:2px solid #e2b24f; color:#f0c35e;}
#stBody .gmNum.none{border-style:dashed; color:#cfc5ab; border-color:rgba(var(--gm-tint,232,222,198),.45);}
#stBody .gmRow b{display:block; font-size:calc(17px * var(--gmz)); font-weight:500; line-height:1.3;}
#stBody .gmRow small{display:block; margin-top:2px; font-size:calc(14px * var(--gmz)); line-height:1.35; color:var(--washPanelInk2,#b9ad8c);}
#stBody .gmVv{font-size:calc(14px * var(--gmz)); font-weight:500; padding:4px 10px; border-radius:12px; border:1px solid rgba(var(--goldRGB),.4); white-space:nowrap;}
#stBody .gmLife{display:flex; align-items:center; justify-content:space-between; gap:12px; width:100%; min-height:56px; margin:4px 0 12px; padding:0 18px;
  border-radius:28px; border:1px solid rgba(var(--goldRGB),.5); background:linear-gradient(180deg,rgba(var(--goldRGB),.18),rgba(var(--goldRGB),.07));
  font:inherit; font-size:calc(17px * var(--gmz)); font-weight:500; color:inherit; cursor:pointer; text-align:left;}
#stBody .gmLife svg{width:22px; height:22px; fill:none; stroke:currentColor; stroke-width:2; flex:none;}
#stBody .gmTabNote{font-size:calc(14px * var(--gmz)); line-height:1.5; color:var(--washPanelInk2,#b9ad8c); margin:4px 2px 0;}
body:not(.night) #stBody .gmNum{background:#f3ead6; color:#6b4813; border-color:#b8862e;}
body:not(.night) #stBody .gmNum.none{color:#6b5a3a; border-color:rgba(107,76,26,.5);}

/* Big screens read from further away: everything one step larger. */
@media (min-width:1100px) and (min-height:640px){
  .gmCard,.gmNav{width:min(500px,40vw);}
  .gmZoom{right:calc(min(500px,40vw) + 32px);}
  .gmTop{right:calc(min(500px,40vw) + 32px);}
  .gmHint{left:calc(50% - min(500px,40vw)/2); font-size:17px;}
  .gmTitleChip b{font-size:20px;} .gmTitleChip span{font-size:15px;}
  .gmModes button{font-size:17px; min-height:44px;}
  .gmPhase,.gmBlock h3,.gmFact > span{font-size:15px;}
  .gmCount{font-size:16px;}
  .gmSceneTitle{font-size:33px;}
  .gmRefs,.gmRefBtn{font-size:18px !important;}
  .gmWhere{font-size:19px;} .gmBadge{font-size:15px;}
  .gmQuote{font-size:21px;} .gmQuote sup{font-size:15px;} .gmQuote cite{font-size:15px;}
  .gmNote,.gmLeg p{font-size:18.5px;}
  #gospelMap small,.gmLeg small,.gmFoot small,.gmFoot{font-size:15px;}
  .gmLegBig b{font-size:25px;} .gmLegBig span{font-size:16px;}
  .gmFact q{font-size:19px;} .gmFact em,.gmFact button,.gmLink{font-size:15px !important;}
  .gmWord b{font-size:19px;} .gmWord span{font-size:18px;}
  .gmSecs button{font-size:18.5px;} .gmSecs button span{font-size:16px;}
  .gmChips button{font-size:16.5px;}
  .gmRead{font-size:18.5px !important; min-height:58px;}
  .gmNav .gmStep{width:58px; height:58px;}
}
@media (min-width:1600px) and (min-height:800px){
  .gmCard,.gmNav{width:560px;}
  .gmZoom,.gmTop{right:592px;}
  .gmHint{left:calc(50% - 280px);}
  .gmSceneTitle{font-size:36px;}
  .gmQuote{font-size:22.5px;} .gmNote,.gmLeg p{font-size:19.5px;} .gmFact q{font-size:20px;}
}

/* v264: a word tapped on the map opens its definition ABOVE the map. The
   reader's window manager stacks the card inline in its 180-218 band and the
   compact pane sits at 219; the map is 221. Only while the map is open. */
html.gospelMapOpen .dictPop{z-index:232 !important;}
html.gospelMapOpen .dictMini{z-index:233 !important;}

/* v265: verse numbers in the card are links into the Bible */
#gospelMap .gmVerseLink{font-family:'Outfit',sans-serif; font-size:14px; font-weight:600; color:var(--gm-gold); background:none; border:0;
  padding:4px 6px 4px 0; margin:0 2px 0 0; min-width:28px; min-height:28px; vertical-align:baseline; position:relative; top:-.3em;
  text-decoration:underline; text-underline-offset:3px; text-decoration-color:rgba(var(--gm-accentRGB,240,195,94),.45); cursor:pointer;}
#gospelMap .gmVerseLink:active{color:var(--gm-hi,#fff1c9);}
/* v265: the way back to the map from the Bible (opaque, transform/opacity only) */
.gmBackPill{position:fixed; left:16px; bottom:calc(var(--barH,72px) + 18px + env(safe-area-inset-bottom,0px)); z-index:175;
  display:flex; align-items:center; gap:10px; max-width:min(380px,calc(100vw - 32px)); min-height:52px; padding:8px 18px 8px 12px;
  border-radius:999px; border:1px solid rgba(var(--gm-accentRGB,240,195,94),.55); background:var(--gm-pill,#1c222b); color:var(--gm-ink,#e8dec6); text-align:left; cursor:pointer;
  box-shadow:0 10px 26px rgba(0,0,0,.35); font-family:'Outfit',sans-serif;
  opacity:0; transform:translateY(14px); pointer-events:none; transition:opacity .28s ease, transform .28s cubic-bezier(.2,.85,.25,1);}
.gmBackPill.on{opacity:1; transform:none; pointer-events:auto;}
.gmBackPill svg{width:22px; height:22px; flex:none; color:var(--gm-gold,#f0c35e);}
.gmBackPill svg path{fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round;}
.gmBackT{display:flex; flex-direction:column; min-width:0;}
.gmBackT b{font-size:15px; font-weight:600; letter-spacing:.02em;}
.gmBackT small{font-size:14px; color:var(--gm-dim,#c9bd9f); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
@media (prefers-reduced-motion:reduce){ .gmBackPill{transition:none;} }
html.lite .gmBackPill{transition:none;}

/* v267: the 3D switch reads as a word, like the modes beside it */
#gospelMap .gm3D{font-family:'Outfit',sans-serif; font-size:15px; font-weight:600; letter-spacing:.04em; color:var(--gm-ink);}
#gospelMap .gm3D[aria-pressed="true"]{color:var(--gm-ctaInk,#1a1206); background:var(--gm-cta,#f0c35e) !important; border-color:var(--gm-ctaLine,#f0c35e) !important;}

/* v277 (owner, 6 Oct: "The map needs to blend in with themes.. 'Map windows'"):
   under a washed theme the map's windows wear the theme like every other window —
   the plate is the theme's (--washB, its leather by night), the writing its ink,
   the second voice its second ink, and what is chosen or pressed its chosen-control
   pair (--washOnBg/--washOnInk, certified Lc 90 in every theme). Opaque, as the
   phone safeguards require. Original and Daylight keep the map's own navy and gold;
   the land itself is not a window and keeps its colours. */
body.hasWash #gospelMap, body.hasWash .gmBackPill, body.hasWash #stBody .gmTab{
  --gm-shadow:var(--washB); --gm-panel:rgb(var(--washB));
  --gm-ink:var(--washInk); --gm-ink2:var(--washInk2); --gm-dim:var(--washInk2);
  --gm-hi:var(--washInk); --gm-body:var(--washInk);
  --gm-gold:var(--washInk2); --gm-gold2:rgb(var(--washOnBg));
  --gm-accentRGB:var(--washOnBg); --gm-tint:var(--sheen);
  --gm-line:rgba(var(--washA),.6);
  --gm-tick:rgb(var(--washA)); --gm-knob:rgb(var(--washOnBg)); --gm-knobRim:var(--washOnInk);
  --gm-cta:rgb(var(--washOnBg)); --gm-ctaInk:var(--washOnInk); --gm-ctaLine:rgb(var(--washOnBg));
  --gm-pill:rgb(var(--washB));
  --gm-openBg:rgba(var(--washB),.94); --gm-openInk:var(--washInk); --gm-openIcon:var(--washInk2);}
body.hasWash #gospelMap .gmModes button[aria-pressed="true"]{background:rgb(var(--washOnBg)) !important; color:var(--washOnInk) !important; box-shadow:none;}
body.hasWash #gospelMap .gmChips button.cur{background:rgb(var(--washOnBg)) !important; color:var(--washOnInk) !important; border-color:rgb(var(--washOnBg)) !important;}
body.hasWash #stBody .gmNum{background:rgb(var(--washA)); color:var(--washInk); border-color:rgb(var(--washOnBg));}
body.hasWash #stBody .gmNum.none{color:var(--washInk2); border-color:rgba(var(--washOnBg),.6);}

/* the accounts side by side (owner's map list): a reading panel over the map in the card's own colours, type and
   close; columns across a desk, one to the screen in a sideways scroller on a phone. Static: no motion, no blur. */
.gmSide{position:absolute; inset:0; z-index:7; display:flex; flex-direction:column; background:var(--gm-panel); color:var(--gm-ink);
  padding:calc(env(safe-area-inset-top,0px) + 14px) 0 env(safe-area-inset-bottom,0px);}
.gmSideHead{display:flex; align-items:flex-start; justify-content:space-between; gap:14px; padding:0 18px 12px; border-bottom:1px solid var(--gm-line);}
.gmSideHead h3{margin:0;}
.gmSideWho{margin:4px 0 0; font-family:'Outfit',sans-serif; font-size:15px; color:var(--gm-dim);}
.gmSideCols{flex:1 1 auto; min-height:0; display:grid; grid-template-columns:repeat(var(--n,2),minmax(0,1fr)); gap:0; overflow:auto;}
.gmSideCol{padding:16px 18px 28px; border-right:1px solid var(--gm-line); min-width:0;}
.gmSideCol:last-child{border-right:0;}
.gmSideCol h4{margin:0 0 10px; font-family:'Outfit',sans-serif; font-size:16px; font-weight:600; letter-spacing:.04em; color:var(--gm-gold);}
@media (max-width:700px){
  .gmSideCols{display:flex; overflow-x:auto; overflow-y:hidden; scroll-snap-type:x mandatory; overscroll-behavior-x:contain;}
  .gmSideCol{flex:0 0 100%; scroll-snap-align:start; overflow-y:auto; border-right:1px solid var(--gm-line);}
}

/* the Sunday school sheet (owner's map list): print only, black on white, one page. The screen never shows it (it is
   measured off-screen, hidden, before printing), and the reader's own printing is untouched: the print rules below
   apply only while html.gmPrinting is set */
#gmPrintSheet{display:none; box-sizing:border-box; color:#000; background:#fff; font:11.5pt/1.45 Georgia,'Times New Roman',serif;}
#gmPrintSheet.psMeasure{display:block; position:fixed; left:-10000px; top:0; width:184mm; visibility:hidden; pointer-events:none;}
#gmPrintSheet h1{font-size:22pt; line-height:1.2; margin:0 0 2mm; font-weight:700;}
#gmPrintSheet h2{font-size:12.5pt; line-height:1.3; margin:4mm 0 1.5mm; font-weight:700; letter-spacing:.02em;}
#gmPrintSheet p{margin:0 0 1.6mm;}
#gmPrintSheet .psEyebrow{font:9pt/1.3 Arial,sans-serif; letter-spacing:.12em; text-transform:uppercase; color:#444;}
#gmPrintSheet .psWhere{font:10.5pt/1.4 Arial,sans-serif; color:#222;}
#gmPrintSheet .psSmall{font:8.5pt/1.3 Arial,sans-serif; color:#444;}
#gmPrintSheet .psPic{margin:3mm 0;}
#gmPrintSheet .psPic img{display:block; max-width:100%; max-height:72mm; margin:0 auto; object-fit:contain;}
#gmPrintSheet .psPic figcaption{font:8.5pt/1.3 Arial,sans-serif; color:#444; text-align:center; margin-top:1.2mm;}
#gmPrintSheet .psKey p{font-size:12pt;}
#gmPrintSheet .psFoot{margin:5mm 0 0; font:8.5pt/1.3 Arial,sans-serif; color:#444; text-align:center;}
#gmPrintSheet ol{margin:0 0 1.5mm 6mm; padding:0;}
#gmPrintSheet .psLine{border-bottom:1px solid #888; height:8mm;}
.gmPrintRow{margin:6px 0 18px;}
@page gmSheet{margin:14mm 16mm 16mm;}
@media print{
  html.gmPrinting{overflow:visible !important;}
  html.gmPrinting,html.gmPrinting body{background:#fff !important;}
  html.gmPrinting body > *:not(#gmPrintSheet){display:none !important;}
  html.gmPrinting #gmPrintSheet{display:block !important; page:gmSheet;}
}
