/* Batch 47 (2026-10-06): Holiday Market A, handoff R2 rows HO-02 to HO-04, HO-06, HO-08, HO-09, HO-11 to HO-14, HO-17 to HO-23, HO-37 note.
   Holiday only. Loads after batch 36 and after the batch 41 background and motion tokens (see the enqueue dependencies).
   Sections: A top art and actions, B memory heading and the tree-led region, C A Place to Belong, D year packages.
   Ruling "Bright and still": the plaid is never dimmed here; every dark layer is local and feathered. No stop control exists, by design; motion is held by the
   script on hover, focus, off screen and hidden, and rests under reduced motion and ?static=1. */

/* ---------- A. Top: the OH10 wreath is the one h1, with an unboxed action row ----------
   The art is visible by default. The hidden start state exists only when the head guard added html.rv33-js (not for reduced motion, not for ?static=1), and the
   script starts the float once the art is decoded and in view. A CSS failsafe shows the art at rest after 6.5 s if the script never runs. */
html.omhm-holiday body.om-mvp #hero-copy.hm47-top{
  --hm47-float-y:var(--om41-hero-float-y,32px);
  display:block;position:relative;z-index:3;width:auto;max-width:none;margin:6px 0 0;padding:0 16px;
  background:transparent;border:0;border-radius:0;box-shadow:none;text-align:center}
html.omhm-holiday body.om-mvp #hero-copy.hm47-top .hm47-lockup{width:min(600px,100%);margin:0 auto}
html.omhm-holiday body.om-mvp #hero-copy.hm47-top h1{margin:0;padding:0;font-size:0;line-height:0;background:none;border:0;text-shadow:none;-webkit-text-stroke:0}
html.omhm-holiday body.om-mvp #hero-copy.hm47-top .hm47-wreath{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:contain;filter:drop-shadow(0 10px 18px rgba(0,0,0,.45))}
html.omhm-holiday body.om-mvp #hero-copy.hm47-top .hm47-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:12px 28px;margin:6px auto 0;padding:0;background:none;border:0}
@keyframes hm47-float{from{opacity:0;translate:0 var(--hm47-float-y);scale:.98}to{opacity:1;translate:0 0;scale:1}}
@keyframes hm47-float-failsafe{to{opacity:1;translate:0 0;scale:1}}
html.rv33-js .hm47-lockup[data-hm47-float]:not([data-hm47-float="go"]):not([data-hm47-float="done"]){
  opacity:0;translate:0 var(--hm47-float-y);scale:.98;animation:hm47-float-failsafe 1ms linear 6500ms forwards}
html.rv33-js .hm47-lockup[data-hm47-float="go"]{animation:hm47-float var(--om41-hero-float-ms,950ms) var(--om41-hero-float-ease,cubic-bezier(0,0,.2,1)) 60ms 1 both}
@media(prefers-reduced-motion:reduce){.hm47-lockup[data-hm47-float]{animation:none!important;opacity:1!important;translate:none!important;scale:none!important}}
/* The framed photo strip stays; its gap to the art is the section rhythm (24 px). */
html.omhm-holiday body.om-mvp .hm19-stripe.hm19-stripe--land{margin-top:10px}

/* ---------- B. Memory heading and the tree-led region (batch 41 treatment a) ----------
   One plate for the chapter index and the origin area: it fades in over the first part of the region, holds, fades out over the last part and feathers at the
   sides, so the tree shows around and between the content. It is the only tree block; it does not drift (the strip and the chapter row already move here). */
html.omhm-holiday body.om-mvp .hm47-memory.om41-tree{--om41-tree-in:9%;--om41-tree-out:11%;--om41-tree-side:6%;--om41-tree-bleed-top:0px;--om41-tree-bleed-bottom:40px;margin-bottom:40px;margin-top:0}
html.omhm-holiday body.om-mvp .hm47-memory>.om41-plate img{object-position:50% 50%}
html.omhm-holiday body.om-mvp #process.chapter-index{margin:0 auto 20px;padding:20px 24px 4px;background:transparent}
html.omhm-holiday body.om-mvp #process .hz-pin{padding:0;gap:0}
html.omhm-holiday body.om-mvp #process .hz-head{display:block;text-align:center;background:transparent;border:0;border-radius:0;box-shadow:none;padding:0 0 4px;margin:0}
html.omhm-holiday body.om-mvp #process h2.hm47-heading{
  display:flex;flex-direction:column;align-items:center;gap:0;width:fit-content;max-width:100%;margin:0 auto;padding:0;
  background:none!important;text-transform:none!important;-webkit-text-stroke:0!important;paint-order:normal;text-shadow:none!important;color:#fff!important;font-weight:700;line-height:1}
html.omhm-holiday body.om-mvp #process .hm47-heading>span{display:block;-webkit-text-stroke:0!important;paint-order:normal!important;white-space:nowrap}
html.omhm-holiday body.om-mvp #process .hm47-heading .hm47-r1{
  font:700 clamp(16px,2vw,26px)/1.1 "OMHM Tomorrow",Arial,sans-serif!important;letter-spacing:.16em;text-transform:uppercase!important;color:#fff!important;
  text-shadow:0 2px 0 rgba(0,0,0,.65),0 0 14px rgba(0,0,0,.6)!important}
html.omhm-holiday body.om-mvp #process .hm47-heading .hm47-r2{
  font:700 clamp(40px,7.2vw,100px)/.98 "OMHM Tomorrow",Arial,sans-serif!important;letter-spacing:.01em;text-transform:uppercase!important;color:#fff!important;
  text-shadow:0 3px 0 rgba(0,0,0,.7),0 0 22px rgba(0,0,0,.6)!important}
html.omhm-holiday body.om-mvp #process .hm47-heading .hm47-ten{display:inline;font:inherit!important;font-weight:700!important;color:#ef2435!important;padding:0;margin:0;-webkit-text-stroke:0!important;
  text-shadow:0 3px 0 rgba(0,0,0,.7),0 0 22px rgba(0,0,0,.6)!important}
html.omhm-holiday body.om-mvp #process .hm47-heading .hm47-r3{
  font:400 clamp(46px,6.6vw,92px)/1.1 "OMHM Backline",cursive!important;letter-spacing:0;text-transform:none!important;color:#68f8b3!important;padding:.02em .12em .1em;margin-top:-.04em;
  text-shadow:0 3px 0 rgba(0,0,0,.65),0 0 20px rgba(0,0,0,.6)!important}
/* The three rows carry red type (the 10 is #ef2435), which needs a near-black ground to read at 4.5:1, so the heading has one localized, feathered pool of the batch 41
   support family behind it (confined to the heading plus a bleed that never passes the page gutter). The tree shows around it and between the content. */
html.omhm-holiday body.om-mvp #process h2.hm47-heading{position:relative;isolation:isolate}
html.omhm-holiday body.om-mvp #process h2.hm47-heading::before{
  --hm47-pool-x:min(120px,(100vw - 100%) / 2);
  content:"";position:absolute;z-index:-1;pointer-events:none;inset:-34px calc(var(--hm47-pool-x) * -1);border-radius:22px;background:rgba(5,5,5,.97);
  -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 22px,#000 calc(100% - 22px),transparent 100%),linear-gradient(to right,transparent 0,#000 calc(var(--hm47-pool-x) - 10px),#000 calc(100% - var(--hm47-pool-x) + 10px),transparent 100%);
  -webkit-mask-composite:source-in;mask-image:linear-gradient(to bottom,transparent 0,#000 22px,#000 calc(100% - 22px),transparent 100%),linear-gradient(to right,transparent 0,#000 calc(var(--hm47-pool-x) - 10px),#000 calc(100% - var(--hm47-pool-x) + 10px),transparent 100%);mask-composite:intersect}
/* The short intro is a calm reading support (batch 41), confined to its text, feathered; the black container is gone. */
html.omhm-holiday body.om-mvp #process .hm12-head-copy.hm47-intro{max-width:46rem;margin:10px auto 0;padding:14px 8px;text-align:center}
html.omhm-holiday body.om-mvp #process .hm12-head-copy.hm47-intro::before{--om41-support-a:.94;--om41-support-b:.94;--om41-support-angle:90deg;--om41-support-inset-x:calc(min(56px,(100vw - 100%) / 2) * -1);--om41-support-inset-y:-8px;--om41-support-fx:calc(min(56px,(100vw - 100%) / 2) - 4px);--om41-support-fy:12px;--om41-support-radius:14px}
html.omhm-holiday body.om-mvp #process .hm12-head-copy.hm47-intro p{margin:0 0 8px;color:#fff;font-size:16px;line-height:1.55}
html.omhm-holiday body.om-mvp #process .hm12-head-copy.hm47-intro p:last-child{margin-bottom:0}
html.omhm-holiday body.om-mvp #process.chapter-index .hm9-marquee{margin:14px 0 0}
@media(max-width:760px){
  html.omhm-holiday body.om-mvp .hm47-memory.om41-tree{--om41-tree-in:6%;--om41-tree-out:8%;--om41-tree-side:4%;--om41-tree-bleed-bottom:28px;margin-bottom:28px}
  html.omhm-holiday body.om-mvp #process.chapter-index{padding:16px 16px 4px}
  html.omhm-holiday body.om-mvp #process .hm47-heading .hm47-r1{letter-spacing:.12em}
  html.omhm-holiday body.om-mvp #process .hm47-heading .hm47-r2{font-size:clamp(40px,13vw,68px)!important}
  html.omhm-holiday body.om-mvp #process .hm47-heading .hm47-r3{font-size:clamp(44px,13.4vw,72px)!important}
}

/* ---------- C. A Place to Belong: one container, equal halves, one tree-backed reading surface ---------- */
html.omhm-holiday body.om-mvp #ten-years.held-founder-story{width:auto;max-width:1240px;margin:0 auto;padding:0 20px;background:transparent;border:0;box-shadow:none}
html.omhm-holiday body.om-mvp #ten-years .hm9-banner{margin:0 auto 18px}
html.omhm-holiday body.om-mvp #ten-years .hm47-origin{
  position:relative;isolation:isolate;display:grid;grid-template-columns:minmax(0,1fr);gap:20px;padding:24px 20px;margin:0;
  background:transparent;border:0;border-radius:0;box-shadow:none;text-align:left}
html.omhm-holiday body.om-mvp #ten-years .hm47-origin::before{
  content:"";position:absolute;z-index:-1;pointer-events:none;inset:0;border-radius:14px;
  background:linear-gradient(100deg,rgba(5,5,5,.93) 0%,rgba(5,5,5,.84) 100%);
  -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 16px,#000 calc(100% - 16px),transparent 100%),linear-gradient(to right,transparent 0,#000 16px,#000 calc(100% - 16px),transparent 100%);
  -webkit-mask-composite:source-in;mask-image:linear-gradient(to bottom,transparent 0,#000 16px,#000 calc(100% - 16px),transparent 100%),linear-gradient(to right,transparent 0,#000 16px,#000 calc(100% - 16px),transparent 100%);mask-composite:intersect}
html.omhm-holiday body.om-mvp #ten-years .hm47-o-head,html.omhm-holiday body.om-mvp #ten-years .hm47-o-subs,html.omhm-holiday body.om-mvp #ten-years .hm47-o-close{
  position:static;margin:0;padding:0;background:none;border:0;min-width:0}
html.omhm-holiday body.om-mvp #ten-years .hm47-o-head::before,html.omhm-holiday body.om-mvp #ten-years .hm47-o-subs::before,html.omhm-holiday body.om-mvp #ten-years .hm47-o-close::before{content:none}
html.omhm-holiday body.om-mvp #ten-years .hm47-origin h2{margin:0 0 14px;text-align:left;font-size:clamp(34px,3.6vw,52px)!important;line-height:1.02}
html.omhm-holiday body.om-mvp #ten-years .hm47-origin h3{
  margin:0 0 8px;padding:0 0 0 12px;border-left:4px solid #ef2435;text-align:left;font-family:"OMHM Tomorrow",Arial,sans-serif;font-weight:700;font-size:clamp(18px,1.6vw,22px);line-height:1.2;
  text-transform:uppercase;letter-spacing:.02em;color:#fff;-webkit-text-stroke:0;text-shadow:none}
html.omhm-holiday body.om-mvp #ten-years .hm47-origin p{margin:0 0 10px;font-size:17px;line-height:1.55;color:#fff;max-width:none;text-align:left}
html.omhm-holiday body.om-mvp #ten-years .hm47-origin p:last-child{margin-bottom:0}
html.omhm-holiday body.om-mvp #ten-years .hm47-o-subs{display:grid;grid-template-columns:minmax(0,1fr);gap:18px}
html.omhm-holiday body.om-mvp #ten-years.held-founder-story :is(#story-origin,#story-purpose,#story-walk){width:auto!important;max-width:none!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;background:none!important;box-shadow:none!important;display:block!important}
html.omhm-holiday body.om-mvp #ten-years.held-founder-story .hm47-o-close#story-walk{padding:14px 0 0!important;border-top:2px solid rgba(239,36,53,.85)!important}
html.omhm-holiday body.om-mvp #ten-years .hm47-o-media{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-content:start;min-width:0}
html.omhm-holiday body.om-mvp #ten-years .hm47-o-media figure{margin:0;padding:0}
html.omhm-holiday body.om-mvp #ten-years .hm47-o-media picture{display:block}
html.omhm-holiday body.om-mvp #ten-years .hm47-o-media img{display:block;width:100%;height:auto;object-fit:cover;border:0;border-radius:0;margin:0}
html.omhm-holiday body.om-mvp #ten-years .hm47-m-lead{grid-column:1/-1}
html.omhm-holiday body.om-mvp #ten-years .hm47-m-lead img{aspect-ratio:3/2}
html.omhm-holiday body.om-mvp #ten-years .hm47-m-a img,html.omhm-holiday body.om-mvp #ten-years .hm47-m-b img{aspect-ratio:4/5}
html.omhm-holiday body.om-mvp #ten-years .hm47-o-media figcaption{margin:0;padding:6px 10px;font:600 12px/1.3 "OMHM Tomorrow",Arial,sans-serif;letter-spacing:.04em;color:#fff;background:#0a0a0a;text-align:left}
/* The artifact slot paints nothing until the hand-drawn scan exists. */
html.omhm-holiday body.om-mvp #ten-years .hm47-art-slot{display:none;width:0;height:0}
@media(min-width:1100px){
  html.omhm-holiday body.om-mvp #ten-years .hm47-origin{
    grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"head media" "subs media" "close media";column-gap:28px;row-gap:20px;padding:28px;align-items:start}
  html.omhm-holiday body.om-mvp #ten-years .hm47-o-head{grid-area:head}
  html.omhm-holiday body.om-mvp #ten-years .hm47-o-media{grid-area:media}
  html.omhm-holiday body.om-mvp #ten-years .hm47-o-subs{grid-area:subs}
  html.omhm-holiday body.om-mvp #ten-years .hm47-o-close{grid-area:close}
  html.omhm-holiday body.om-mvp #ten-years .hm47-origin::before{inset:0 calc(50% + 4px) 0 0}
}
@media(max-width:760px){
  html.omhm-holiday body.om-mvp #ten-years.held-founder-story{padding:0 12px}
  html.omhm-holiday body.om-mvp #ten-years .hm47-origin{padding:20px;gap:18px}
  html.omhm-holiday body.om-mvp #ten-years .hm47-origin p{font-size:16px}
}

/* ---------- D. Year packages: image-led rows that rotate in place ----------
   Each row is a window of 80 by 100 photographs over its own strip. The script advances the strip by whole pages on its own schedule; without it the strip is a
   plain native scroll row with every photograph reachable. The line under each year tile is gone from the markup. */
html.omhm-holiday body.om-mvp .hm9-years .year-preview-index{display:grid;grid-auto-rows:auto;gap:8px;margin:0;flex:none}
html.omhm-holiday body.om-mvp .hm9-years .hm47-row{
  display:grid;grid-template-columns:64px minmax(0,1fr) 84px;grid-template-areas:"label stage side";align-items:center;gap:10px;
  min-height:0;padding:10px 12px;margin:0;border-radius:10px}
html.omhm-holiday body.om-mvp .hm9-years .hm47-row .year-preview-heading{grid-area:label;margin:0;padding:0;min-width:0}
html.omhm-holiday body.om-mvp .hm9-years .hm47-row .year-preview-heading h3{font-size:24px;line-height:1;margin:0!important}
html.omhm-holiday body.om-mvp .hm9-years .hm47-row .year-preview-strip{
  grid-area:stage;display:flex;gap:6px;align-items:stretch;height:100px;min-width:0;margin:0!important;padding:0!important;overflow-x:auto;overflow-y:hidden;
  scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain;transition:opacity var(--om41-crossfade-ms,450ms) ease}
html.omhm-holiday body.om-mvp .hm9-years .hm47-row .year-preview-strip::-webkit-scrollbar{display:none}
html.omhm-holiday body.om-mvp .hm9-years .hm47-row .year-preview-strip.is-fading{opacity:0}
html.omhm-holiday body.om-mvp .hm9-years .hm47-row .year-preview-photo{
  flex:0 0 80px;width:80px;height:100px;scroll-snap-align:start;border-radius:6px;overflow:hidden;transform:none!important;transition:none;z-index:auto;background:#050505}
html.omhm-holiday body.om-mvp .hm9-years .hm47-row .year-preview-photo img{width:80px!important;height:100px!important;object-fit:cover!important;transform:none!important;border-radius:6px;min-height:0}
html.omhm-holiday body.om-mvp .hm9-years .hm47-row .hm47-side{grid-area:side;display:flex;flex-direction:column;align-items:flex-end;justify-content:center;gap:6px;min-width:0}
html.omhm-holiday body.om-mvp .hm9-years .hm47-row .year-preview-link{position:static;min-width:44px;min-height:44px;margin:0;justify-content:center;font-size:24px}
html.omhm-holiday body.om-mvp .hm9-years .hm47-row .hm47-nav{display:flex;gap:6px}
html.omhm-holiday body.om-mvp .hm9-years .hm47-row .hm47-nav button{
  display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;padding:0;margin:0;border:2px solid #ef2435;border-radius:10px;background:#050505;color:#fff;
  font:700 20px/1 "OMHM Tomorrow",Arial,sans-serif;cursor:pointer;transition:transform var(--om41-hover-ms,180ms) ease,border-color var(--om41-hover-ms,180ms) ease}
html.omhm-holiday body.om-mvp .hm9-years .hm47-row .hm47-nav button:focus-visible{outline:3px solid #68f8b3;outline-offset:2px}
@media(hover:hover) and (prefers-reduced-motion:no-preference){html.omhm-holiday body.om-mvp .hm9-years .hm47-row .hm47-nav button:hover{transform:translateY(calc(var(--om41-hover-lift,2px) * -1));border-color:#fff}}
/* The Early Years and The Later Years: Backline mint. One compact invitation line, the year links and the button stay. */
html.omhm-holiday body.om-mvp .hm9-years .album-gift-body h2{color:#68f8b3!important;-webkit-text-stroke:0!important;text-shadow:0 2px 0 rgba(0,0,0,.6)!important;font-family:"OMHM Backline",cursive!important;font-weight:400!important}
@media(max-width:760px){
  html.omhm-holiday body.om-mvp .hm9-years .hm47-row{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"label side" "stage stage";gap:4px 10px;padding:10px 12px}
  html.omhm-holiday body.om-mvp .hm9-years .hm47-row .hm47-side{flex-direction:row;align-items:center;justify-content:flex-end}
  html.omhm-holiday body.om-mvp .hm9-years .hm47-row .hm47-side .year-preview-link{order:2}
  html.omhm-holiday body.om-mvp .hm9-years .hm47-row .year-preview-strip{height:96px}
  html.omhm-holiday body.om-mvp .hm9-years .hm47-row .year-preview-photo{flex-basis:77px;width:77px;height:96px}
  html.omhm-holiday body.om-mvp .hm9-years .hm47-row .year-preview-photo img{width:77px!important;height:96px!important}
}
@media(prefers-reduced-motion:reduce){html.omhm-holiday body.om-mvp .hm9-years .hm47-row .year-preview-strip{transition:none}}
/* Each package keeps its natural height (the Early Years column has four rows, the Later Years five), so no empty black base is left under the shorter one. */
html.omhm-holiday body.om-mvp .hm9-years{align-items:start}
/* The secondary action sits on the bare plaid, so it carries its own small feathered support (batch 41 family), confined to the link. */
html.omhm-holiday body.om-mvp #hero-copy.hm47-top .hm47-actions .hm12-link{position:relative;isolation:isolate;padding:10px 18px;color:#68f8b3}
html.omhm-holiday body.om-mvp #hero-copy.hm47-top .hm47-actions .hm12-link::before{
  content:"";position:absolute;z-index:-1;inset:0;border-radius:12px;pointer-events:none;background:rgba(5,5,5,.9);
  -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 24%,#000 76%,transparent 100%),linear-gradient(to right,transparent 0,#000 14%,#000 86%,transparent 100%);
  -webkit-mask-composite:source-in;mask-image:linear-gradient(to bottom,transparent 0,#000 24%,#000 76%,transparent 100%),linear-gradient(to right,transparent 0,#000 14%,#000 86%,transparent 100%);mask-composite:intersect}
