@font-face{font-family:Firdevs;src:url('/assets/firdevs.woff2') format('woff2');font-display:swap}@font-face{font-family:Ferryman;src:url('/assets/ferryman.woff2') format('woff2');font-display:swap}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:32px}body{margin:0;background:#0c1511;color:#e9e4d2;font-family:Ferryman,Arial,sans-serif;font-size:18px;line-height:1.55}button,input{font:inherit}a{color:inherit;text-underline-offset:5px}button,a,input,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait;opacity:.6}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #e6c47f;outline-offset:5px}h1,h2,h3,.button{font-family:Firdevs,Georgia,serif;font-weight:400}h1,h2,h3,p{margin-top:0}h2{font-size:clamp(36px,5.5vw,76px);line-height:1.04;letter-spacing:-.025em;margin-bottom:28px}h3{font-size:32px;line-height:1.1}p{max-width:580px}.eyebrow{font:11px/1.6 Ferryman,Arial,sans-serif;letter-spacing:.22em;font-weight:600;color:#c5bd9f}.small{font-size:13px;color:#c1c4b8}.button{display:inline-flex;justify-content:space-between;align-items:center;gap:24px;min-height:54px;padding:16px 26px;background:#96c899;color:#0a2015;border:1px solid #add6a3;text-decoration:none;font-size:19px;line-height:1.2;transition:background .2s,transform .2s;box-shadow:inset 0 0 0 3px #96c899,inset 0 0 0 4px #497956}.button:hover{background:#b8dfaa;transform:translateY(-2px)}.button:active{transform:translateY(1px)}.text-link{min-height:44px;background:none;border:0;color:inherit;text-decoration:underline;padding:10px 0}.skip{position:fixed;top:-100px;left:15px;z-index:20;background:#eee;color:#111;padding:16px}.skip:focus{top:10px}header{height:112px;padding:14px 5%;display:flex;align-items:center;justify-content:space-between;gap:24px;position:absolute;z-index:3;width:100%;border-bottom:1px solid #dfd5b325}header>a{display:flex;min-height:44px;align-items:center}header img{width:210px;height:auto}.header-note{font-size:9px;letter-spacing:.22em;text-align:center;line-height:1.9;color:#bebea6}.header-note b{font-weight:400;color:#789580}header .button{font-size:16px;min-height:46px;padding:12px 20px}.hero{min-height:880px;height:100svh;max-height:1100px;position:relative;display:grid;place-items:center;text-align:center;isolation:isolate;background:#0d110e}.hero:after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(#0510099c 0%,#06100925 26%,#0a130c21 60%,#0c1511 100%),radial-gradient(ellipse at 50% 48%,#050a0575,transparent 70%)}.hero-scene{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}.hero-content{padding:140px 20px 100px;max-width:100%}.hero .eyebrow{color:#ddd0ad}.hero h1{font-size:clamp(75px,10.3vw,148px);line-height:.86;letter-spacing:-.025em;margin:30px 0 30px;text-shadow:0 4px 45px #0009}.hero h1 span{font-size:1.28em}.hero-line{font-size:22px;margin:0 auto 30px}.hero .small{margin:16px auto}.hero-bottom{position:absolute;bottom:34px;left:6%;right:6%;display:flex;justify-content:space-between;align-items:center;font-size:9px;letter-spacing:.24em;color:#a5ad9d}.hero-bottom a{border:1px solid #768775;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;text-decoration:none;font-size:24px}.decree{position:relative;text-align:center;margin:auto;padding:110px 24px 120px;max-width:900px}.decree p{margin-left:auto;margin-right:auto}.rule-mark{font-size:45px;color:#b9975b;margin-bottom:20px}.decree .last-line{font-family:Firdevs;font-size:29px;color:#adcb9f}.decree-sign{margin:40px auto 0;display:flex;flex-direction:column;gap:8px;font-size:10px;letter-spacing:.12em}.decree-sign strong{font-family:Georgia,serif;font-style:italic;font-weight:400;font-size:20px;letter-spacing:0;color:#c6b185}.night-story{display:grid;grid-template-columns:1fr 1fr;max-width:1200px;margin:auto;padding:40px 7% 120px;gap:9%}.guarded-light{position:sticky;top:30vh;align-self:start;text-align:center;padding:90px 0}.guarded-light .lantern{transform:scale(1.8);margin-bottom:75px}.night-story article{padding:60px 0 130px}.night-story article:last-child{padding-bottom:0}.night-story article p{color:#aebbae}.lantern{display:block;position:relative;width:75px;height:113px;margin:0 auto 38px;border:3px solid #837755;border-radius:18px 18px 9px 9px;background:radial-gradient(ellipse,#edb34d35,transparent 72%);box-shadow:0 0 95px 30px #e9a8450c}.lantern:before{content:'';position:absolute;width:34px;height:22px;border:3px solid #837755;border-radius:25px 25px 0 0;left:17px;top:-27px}.lantern:after{content:'';position:absolute;inset:8px 9px;border-left:2px solid #6c664f;border-right:2px solid #6c664f}.flame{position:absolute;left:27px;bottom:21px;width:17px;height:39px;border-radius:80% 12% 60% 40%;background:#ffe5a7;box-shadow:0 0 20px 5px #df931a9c;transform:rotate(5deg);animation:flicker 3.7s ease-in-out infinite alternate}.paused .flame{animation-play-state:paused}@keyframes flicker{0%,100%{transform:rotate(5deg) scale(.95)}40%{transform:rotate(-3deg) scale(1,1.07)}70%{transform:rotate(7deg) scale(.93,1.02)}}.group{position:relative;min-height:620px;display:flex;align-items:center;padding:80px 8%;isolation:isolate}.group>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}.group:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#07120cf0,#08130bb0 45%,#06100925);z-index:-1}.group>div{max-width:520px}.observance{display:grid;grid-template-columns:1fr 1fr;gap:9%;padding:140px 8%;max-width:1400px;margin:auto;align-items:center}.observance-intro>.lantern{margin-left:0;width:60px;height:90px;transform:scale(.75);transform-origin:left bottom;margin-bottom:20px}.observance-intro h2{font-size:clamp(40px,4.8vw,68px)}.roll,.booking-card{position:relative;padding:48px 36px 32px;background:#182a20;border:1px solid #687451;box-shadow:inset 0 0 0 7px #182a20,inset 0 0 0 8px #69745255}.seal{position:absolute;right:25px;top:-28px;display:grid;place-items:center;width:56px;height:56px;background:#253e2a;border:3px double #9d9867;outline:5px solid #0c1511;border-radius:50%;font:28px Firdevs;color:#d5c897;transform:rotate(12deg)}label{display:block;font-size:15px}input[type=email]{width:100%;min-height:54px;background:#09170f;border:1px solid #8c9b7e;border-radius:0;padding:12px 15px;margin:9px 0 22px;color:#f2f0df}input::placeholder{color:#a3ac9c}.check{display:flex;gap:12px;align-items:flex-start;line-height:1.5;min-height:44px;padding:6px 0;cursor:pointer}.check input{accent-color:#9fc991;width:21px;height:21px;flex-shrink:0;margin:2px 0 0}.privacy-note{font-size:12px;line-height:1.65;color:#bdc8b8;margin:20px 0}.roll .button{width:100%;font-size:18px;padding:16px 17px}#form-status{font-size:12px;line-height:1.5;margin:16px 0 0;color:#c6cfbd}.error{color:#ffbfaa!important}.success{border-color:#d4c491}.success h3{margin-top:20px}.faq{padding:80px 8% 130px;border-top:1px solid #71857135;display:grid;grid-template-columns:1fr 1fr;gap:0 9%;max-width:1400px;margin:auto}.faq>.eyebrow{grid-column:1/-1}.faq h2{font-size:46px}.faq details{border-bottom:1px solid #67775b70}.faq summary{padding:20px 35px 20px 0;cursor:pointer;min-height:64px;position:relative;list-style:none;font-size:17px}.faq summary:after{content:'+';position:absolute;right:4px;font-size:22px;color:#bdd5a5}.faq details[open] summary:after{content:'−'}.faq details p{font-size:15px;color:#c0caba;padding-bottom:12px}footer{border-top:1px solid #8a977345;padding:60px 6% 50px;text-align:center;background:#08100c}footer img{width:230px;height:auto}footer p{margin:16px auto 25px;font-size:10px;letter-spacing:.25em;color:#b0b69d}footer nav{display:flex;justify-content:center;gap:12px 28px;flex-wrap:wrap;font-size:12px}footer a,footer button{min-height:44px;display:inline-flex;align-items:center}footer button{background:none;border:0;color:inherit;text-decoration:underline;padding:0;font-size:12px}footer small{display:block;margin-top:25px;font-size:10px;color:#99a18f}.mobile-cta{display:none}dialog{background:#13231a;color:#e9e4d2;border:1px solid #9b9971;max-width:620px;width:calc(100% - 32px);max-height:calc(100dvh - 32px);padding:65px 30px 28px;overflow:auto}dialog::backdrop{background:#020804d9;backdrop-filter:blur(5px)}dialog h2{font-size:42px}dialog p{font-size:15px}.close{position:absolute;right:12px;top:10px;min-height:44px;min-width:80px;background:none;border:0;color:#e9e4d2}.dialog-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:24px}#booking-dialog{max-width:880px}#frame-slot iframe{width:100%;height:55dvh;min-height:280px;border:0;background:#202227;margin-bottom:20px}.legal{max-width:850px;margin:auto;padding:200px 24px 100px}.legal h1{font-size:clamp(48px,7vw,85px);line-height:1.1}.legal h2{font-size:34px;margin-top:50px}.legal p{max-width:100%}body.modal-open{overflow:hidden}
@media(max-width:700px){header{height:89px;padding:12px 5%;gap:12px}header img{width:150px}.header-note{display:none}header .button{font-size:14px;min-height:44px;padding:12px;gap:10px}.hero{min-height:700px;max-height:960px}.hero-content{padding-top:140px}.hero h1{font-size:clamp(65px,13.5vw,99px);margin:25px 0}.hero-line{font-size:18px;max-width:260px}.hero .eyebrow{font-size:9px;max-width:270px;margin-left:auto;margin-right:auto}.hero-scene{object-position:51% 50%}.hero-bottom{bottom:28px;font-size:7px;letter-spacing:.13em}.hero-bottom a{width:44px;height:44px}.decree{padding:65px 24px 80px}.decree p{font-size:16px}.decree-sign strong{font-size:18px}.decree-sign span{font-size:8px}.night-story{padding:0 24px 75px;grid-template-columns:65px 1fr;gap:25px}.guarded-light{padding:65px 0;top:28vh}.guarded-light .lantern{transform:scale(.7);transform-origin:left center}.guarded-light .eyebrow{display:none}.night-story h2{font-size:35px}.night-story article{padding:40px 0 85px}.night-story p{font-size:15px}.night-story .button{font-size:16px;padding:15px}.group{padding:70px 24px;min-height:620px}.group h2{font-size:47px}.group:after{background:#07120cc9}.observance{grid-template-columns:1fr;padding:80px 22px;gap:45px}.observance-intro h2{font-size:48px}.observance-intro p{font-size:17px}.roll,.booking-card{padding:40px 23px 25px}.faq{padding:50px 24px 75px;grid-template-columns:1fr;gap:15px}.faq h2{font-size:38px}.faq summary{font-size:16px}footer{padding-bottom:110px}.mobile-cta{display:block;position:fixed;z-index:4;bottom:0;left:0;right:0;background:#0a140feb;padding:9px 16px calc(9px + env(safe-area-inset-bottom));border-top:1px solid #6d7b5866;transform:translateY(120%);transition:transform .25s}.mobile-cta.visible{transform:translateY(0)}.mobile-cta .button{width:100%;min-height:48px;font-size:17px;padding:13px 20px}dialog{padding:62px 22px 24px}dialog h2{font-size:34px}.legal{padding-top:150px}.legal h1{font-size:49px}}
@media(max-height:600px) and (min-width:600px){.hero{height:auto;min-height:760px}.guarded-light{top:15vh}dialog{max-height:calc(100dvh - 16px)}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}@media(min-width:701px){.hero-content .button{min-width:305px}}
.no-js-action{display:none}summary::-webkit-details-marker{display:none}
.no-js-notice{position:relative;z-index:5;padding:120px 24px 20px;background:#182a20}.no-js-notice p{margin:auto}.no-js-notice a{display:block;min-height:44px;text-align:center}
@media(max-width:380px){header img{width:120px}header .button{font-size:12px;padding:11px 10px;gap:6px}.hero h1{font-size:64px}.hero-content{padding-left:16px;padding-right:16px}.hero-bottom{font-size:6px}.roll .button{gap:10px;font-size:16px}.observance-intro h2{font-size:43px}.night-story{gap:15px;grid-template-columns:45px 1fr}.guarded-light .lantern{transform:scale(.55)}.night-story h2{font-size:32px}}

.skip{visibility:hidden}.skip:focus{visibility:visible}
/* Preserve access when text is enlarged independently of the viewport. */
h1,h2,h3,.button,summary{overflow-wrap:anywhere}header>a{min-width:0;flex-shrink:1}header img{max-width:100%}header .button{max-width:50%;min-width:0}.hero{height:auto;min-height:max(880px,100svh);max-height:none}.hero-content{min-width:0}.observance>*,.faq>*,.night-story>*{min-width:0}.roll .button,.booking-card .button{max-width:100%}.night-story .button{max-width:100%}.hero .button{max-width:100%}
@media(max-width:700px){.hero{min-height:max(700px,100svh)}header .button{max-width:52%}.hero-content{padding-bottom:120px}.hero h1{overflow-wrap:anywhere}.header-note{display:none}}
.skip{visibility:visible;clip-path:inset(50%);width:1px;height:1px;overflow:hidden;padding:0}.skip:focus{clip-path:none;width:auto;height:auto;overflow:visible;padding:16px}
.privacy-note a,.faq details p a,.legal p a{display:inline-block;min-height:44px;padding:9px 0}footer a,footer button{min-width:44px}

/* ============================================================
   MOTION — "emerge from the dark"
   Hexmoor's world is candlelight in a buried prison. Nothing slides
   in; things resolve out of blackness as the eye adjusts. Frost
   arrives rather than falls. Disabled entirely for reduced motion.
   ============================================================ */
:root{
  --ease-out-expo:cubic-bezier(.16,1,.3,1);
  --ease-soft:cubic-bezier(.22,.8,.3,1);
}

.js [data-reveal]{will-change:transform,opacity,filter}
.js [data-reveal].in{will-change:auto}
/* The signature: out of focus and out of the dark, into resolution. */
.js [data-reveal="emerge"]:not(.in){opacity:0;transform:scale(.975) translate3d(0,18px,0);filter:blur(5px)}
.js [data-reveal="emerge"].in{opacity:1;transform:none;filter:blur(0);
  transition:opacity 1100ms var(--ease-soft),transform 1400ms var(--ease-out-expo),filter 1200ms var(--ease-soft)}
/* Long, slow, like an exhale in cold air. */
.js [data-reveal="breath"]:not(.in){opacity:0;transform:translate3d(0,30px,0)}
.js [data-reveal="breath"].in{opacity:1;transform:none;
  transition:opacity 1250ms linear,transform 1500ms var(--ease-out-expo)}
/* Photographs warm up as if a lantern were carried toward them. */
.js [data-reveal="lantern"]:not(.in){opacity:0;clip-path:inset(12% 8% 12% 8%);filter:brightness(.35) saturate(.6)}
.js [data-reveal="lantern"].in{opacity:1;clip-path:inset(0 0 0 0);filter:none;
  transition:opacity 900ms linear,clip-path 1500ms var(--ease-out-expo),filter 1800ms var(--ease-soft)}
.js [data-reveal-group]>[data-reveal]:nth-child(2){transition-delay:130ms}
.js [data-reveal-group]>[data-reveal]:nth-child(3){transition-delay:260ms}
.js [data-reveal-group]>[data-reveal]:nth-child(4){transition-delay:390ms}

/* Hero: the hall resolves, then the title is lit. */
@keyframes hallResolve{from{opacity:0;transform:scale(1.085);filter:brightness(.42) contrast(1.15)}
  to{opacity:1;transform:scale(1);filter:none}}
@keyframes kindle{from{opacity:0;transform:translate3d(0,26px,0)}
  to{opacity:1;transform:none}}
.js .hero-scene{animation:hallResolve 2800ms var(--ease-soft) both}
.js .hero .eyebrow{animation:kindle 1100ms var(--ease-out-expo) 500ms both}
.js .hero h1{animation:kindle 1600ms var(--ease-out-expo) 700ms both}
.js .hero-line{animation:kindle 1200ms var(--ease-out-expo) 1150ms both}
.js .hero .button{animation:kindle 1200ms var(--ease-out-expo) 1350ms both}
.js .hero .small{animation:kindle 1200ms var(--ease-out-expo) 1500ms both}
.js .hero-bottom{animation:kindle 1100ms var(--ease-out-expo) 1750ms both}

/* The decree mark turns slowly, like a seal being set. */
@keyframes markTurn{from{transform:rotate(-55deg) scale(.7);opacity:0}
  to{transform:rotate(0) scale(1);opacity:1}}
.js .rule-mark{display:inline-block}
.js .rule-mark.in{animation:markTurn 1400ms var(--ease-out-expo) both}
.js .rule-mark:not(.in){opacity:0}

/* Ambient breathing glow behind the guarded light. Slow enough to feel alive
   rather than animated. Halts with the existing .paused hook. */
@keyframes vigil{0%,100%{opacity:.58;transform:scale(1)}50%{opacity:.9;transform:scale(1.045)}}
.guarded-light{position:relative}
.guarded-light:before{content:'';position:absolute;left:50%;top:38%;width:clamp(180px,22vw,320px);aspect-ratio:1;
  transform:translate(-50%,-50%);border-radius:50%;pointer-events:none;z-index:-1;
  background:radial-gradient(circle,#f0c88338,transparent 68%);animation:vigil 3.8s ease-in-out infinite}
body.paused .guarded-light:before{animation-play-state:paused}

/* Photographs are objects, not backgrounds: they lift to the cursor. */
.group img{transition:transform 900ms var(--ease-out-expo),filter 900ms var(--ease-soft)}


/* FAQ opens instead of snapping. */
.faq details>*:not(summary){animation:kindle 620ms var(--ease-out-expo) both}
.faq summary span,.faq summary b{transition:transform 420ms var(--ease-out-expo)}
.faq details[open] summary span,.faq details[open] summary b{transform:rotate(45deg)}

.button{transition:background 220ms linear,transform 260ms var(--ease-out-expo),box-shadow 380ms var(--ease-soft)}
.button:hover{box-shadow:0 10px 34px #96c89936}

/* Weather sits above the page, below every control. */
.weather-canvas{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:2}
body.paused .weather-canvas{display:none}

/* ---- Browser surfaces ---- */
::selection{background:#96c899;color:#08150e}
::-moz-selection{background:#96c899;color:#08150e}
input,textarea{caret-color:#e6c47f}
html{scrollbar-color:#3c5142 #0c1511;scrollbar-width:thin}
::-webkit-scrollbar{width:11px;height:11px}
::-webkit-scrollbar-track{background:#0a120e}
::-webkit-scrollbar-thumb{background:#2f4437;border:3px solid #0a120e}
::-webkit-scrollbar-thumb:hover{background:#4a6a53}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*:before,*:after{animation:none!important;transition:none!important}
  .weather-canvas{display:none}
  .js [data-reveal]{opacity:1!important;transform:none!important;filter:none!important;clip-path:none!important}
}

/* Horizontal overflow is fixed at its source (rotated elements now settle
   flat on narrow screens). An overflow value here propagates to the viewport
   and takes vertical scrolling with it, so there must not be one. */

/* ---- Display-preference support ----
   Reduced motion is already handled above. These two are separate signals and
   were unhandled: a viewer can want solid surfaces or stronger contrast
   without wanting motion removed. */
@media(prefers-reduced-transparency:reduce){
  .weather-canvas{display:none}
  header,.header{backdrop-filter:none}
  dialog::backdrop{backdrop-filter:none}
}
@media(prefers-contrast:more){
  .small,.fine,.hero-note,figcaption,.eyebrow{color:inherit}
  .button,.btn{outline:1px solid currentColor;outline-offset:-1px}
  .faq details,.inventory details{border-bottom-width:2px}
  input[type=email],select,input[type=text]{border-width:2px}
}

/* Icons are drawn at one stroke weight, not borrowed from the text font. */
.ico{width:1em;height:1em;display:block;flex:none}
.button .ico{width:1.2em;height:1.2em;transition:transform 320ms var(--ease-out-expo)}
.button:hover .ico{transform:translate(2px,-2px)}
.rule-mark .ico.star{width:clamp(26px,3vw,38px);height:auto;margin:0 auto;color:#e6c47f}
dialog .close .ico,.menu-close .ico{width:24px;height:24px;margin:auto}
.hero-bottom .ico{width:18px;height:18px;margin:0 auto}
footer .ico,.faq .ico{width:.85em;height:.85em;display:inline-block;vertical-align:-.08em;margin-left:.3em}
/* Photographic hero: preserve the neutral matte grade and practical highlights. */
.hero:after{background:linear-gradient(180deg,rgba(3,8,5,.48),rgba(3,8,5,.12) 28%,rgba(3,8,5,.17) 65%,#0c1511 100%),radial-gradient(ellipse at 55% 43%,rgba(4,8,5,.23),transparent 70%)}
@media(max-width:700px){.hero-scene{object-position:30% 50%}}
@media(max-width:700px){.hero-content{padding-top:20px}}

/* ============================================================
   THE VIGIL — Hexmoor's set piece
   Four lanterns hanging in the dark, each drifting on its own slow
   orbit. Lighting one flares its flame and unfurls a parchment.
   Everything is drawn: no glyphs, no images, no libraries.
   ============================================================ */
.faq{display:block;padding-bottom:clamp(70px,9vh,130px)}
.faq-head{max-width:760px;margin:0 auto clamp(42px,6vh,78px);text-align:center}
.faq-head h2{margin-bottom:18px}
.faq-hint{font-size:14px;letter-spacing:.04em;color:#93a894;margin:0 auto;max-width:44ch}
.vigil{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:clamp(28px,5vw,80px);
  align-items:center;max-width:1240px;margin:0 auto}
.vigil-ring{display:grid;grid-template-columns:1fr 1fr;gap:clamp(18px,3vw,44px) clamp(10px,2vw,30px);
  place-items:center;padding:10px}

/* --- the lantern itself --- */
.lantern-btn{position:relative;background:none;border:0;padding:12px 6px 0;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;gap:14px;width:100%;color:#cfe0d0;
  transition:color 300ms linear}
.lantern-body{position:relative;width:clamp(58px,6vw,82px);aspect-ratio:.68;display:block;
  animation:lanternDrift var(--drift,7s) ease-in-out infinite alternate}
.lantern-btn:nth-child(1) .lantern-body{--drift:7.2s;animation-delay:-1.1s}
.lantern-btn:nth-child(2) .lantern-body{--drift:8.6s;animation-delay:-3.4s}
.lantern-btn:nth-child(3) .lantern-body{--drift:6.4s;animation-delay:-2.2s}
.lantern-btn:nth-child(4) .lantern-body{--drift:9.1s;animation-delay:-5.0s}
@keyframes lanternDrift{from{transform:translate3d(0,-7px,0) rotate(-2.4deg)}
  to{transform:translate3d(0,8px,0) rotate(2.6deg)}}
/* The hanging wire. */
.lantern-body:before{content:'';position:absolute;left:50%;bottom:100%;width:1px;height:clamp(22px,4vh,46px);
  background:linear-gradient(#7d8f7e00,#7d8f7e99);transform:translateX(-.5px)}
/* Glass housing, drawn with borders rather than an image. */
.lantern-glass{position:absolute;inset:14% 6% 8%;border:1px solid #7f9481;
  border-radius:44% 44% 16% 16%/26% 26% 10% 10%;
  background:linear-gradient(#e7c88a10,#e7c88a04);
  box-shadow:inset 0 0 18px #e7c88a14;transition:border-color 420ms linear,box-shadow 620ms linear}
/* The cap. */
.lantern-ring{position:absolute;left:24%;right:24%;top:2%;height:13%;border:1px solid #7f9481;
  border-bottom:0;border-radius:40% 40% 0 0}
/* The flame: unlit lanterns hold only an ember. */
.lantern-flame{position:absolute;left:50%;bottom:20%;width:26%;aspect-ratio:.6;transform:translateX(-50%);
  border-radius:50% 50% 46% 46%/62% 62% 38% 38%;
  background:radial-gradient(60% 60% at 50% 72%,#ffe6b0,#f0ad4d 55%,#c9702000 100%);
  opacity:.24;filter:blur(.4px);
  transition:opacity 420ms linear,transform 520ms var(--ease-out-expo);
  animation:flameDance 1.7s ease-in-out infinite alternate}
@keyframes flameDance{from{transform:translateX(-50%) scaleY(.94) rotate(-2deg)}
  to{transform:translateX(-50%) scaleY(1.09) rotate(2deg)}}
.lantern-rune{font:11px/1 Ferryman,Arial,sans-serif;letter-spacing:.3em;color:#8aa08c;transition:color 300ms linear}
.lantern-q{font-size:14px;line-height:1.4;max-width:19ch;text-align:center;color:#a9bcab;transition:color 300ms linear}

.lantern-btn:hover .lantern-flame,.lantern-btn:focus-visible .lantern-flame{opacity:.6}
.lantern-btn:hover .lantern-q{color:#dfeadf}
.lantern-btn:focus-visible{outline:2px solid #e6c47f;outline-offset:8px;border-radius:14px}

/* Lit: the flame takes, the glass warms, and a halo spills into the dark. */
.lantern-btn[aria-selected="true"] .lantern-flame{opacity:1}
.lantern-btn[aria-selected="true"] .lantern-glass{border-color:#e6c47f;box-shadow:inset 0 0 26px #f0c67d3d,0 0 44px #e8b96426}
.lantern-btn[aria-selected="true"] .lantern-rune{color:#e6c47f}
.lantern-btn[aria-selected="true"] .lantern-q{color:#f1f4ec}
.lantern-btn[aria-selected="true"] .lantern-body:after{content:'';position:absolute;left:50%;top:52%;
  width:300%;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;pointer-events:none;
  background:radial-gradient(circle,#f0c67d26,transparent 62%);animation:haloBreathe 4.2s ease-in-out infinite}
@keyframes haloBreathe{0%,100%{opacity:.7;transform:translate(-50%,-50%) scale(1)}
  50%{opacity:1;transform:translate(-50%,-50%) scale(1.1)}}

/* --- the parchment --- */
.parchment{position:relative;background:linear-gradient(#f3ecd8,#e7dcc0);color:#2a2a20;
  padding:clamp(30px,3.4vw,50px) clamp(26px,3vw,48px);border:1px solid #b9a97f;
  box-shadow:0 26px 60px #00000059,inset 0 0 0 1px #fffceb66;min-height:300px;
  display:grid;align-content:start;gap:16px}
/* Torn top and bottom edges, drawn with a repeating mask. */
.parchment:before,.parchment:after{content:'';position:absolute;left:0;right:0;height:9px;
  background:repeating-linear-gradient(90deg,#e7dcc0 0 7px,transparent 7px 14px)}
.parchment:before{top:-8px}
.parchment:after{bottom:-8px;transform:scaleY(-1)}
.parchment-rune{font:12px/1 Ferryman,Arial,sans-serif;letter-spacing:.34em;color:#8a7442}
.parchment h3{font-size:clamp(24px,2.5vw,36px);line-height:1.08;letter-spacing:-.02em;max-width:18ch}
.parchment p{font-size:16px;line-height:1.72;color:#3b3728;max-width:52ch}
.parchment p a{color:#6d5220}
.parchment-seal{font:9px/1 monospace;letter-spacing:2.4px;color:#8f7c4e;border-top:1px solid #bfae83;
  padding-top:16px;margin-top:6px}

/* The scroll unrolls from the top when a lantern is lit. */
@keyframes unfurl{from{opacity:0;clip-path:inset(0 0 100% 0);transform:translate3d(0,-10px,0)}
  to{opacity:1;clip-path:inset(0 0 -6% 0);transform:none}}
.js .parchment[data-enter]{animation:unfurl 760ms var(--ease-out-expo) both}

@media(max-width:900px){
  .vigil{grid-template-columns:minmax(0,1fr);gap:40px}
  .vigil-ring{gap:26px 14px}
  .parchment{min-height:0}
}
@media(prefers-reduced-motion:reduce){
  .lantern-body,.lantern-flame,.lantern-btn[aria-selected="true"] .lantern-body:after{animation:none}
  .js .parchment[data-enter]{animation:none}
}
body.paused .lantern-body,body.paused .lantern-flame{animation-play-state:paused}

/* A display value on the element itself beats the UA's [hidden] rule, which is
   how four parchments ended up stacked on top of each other. */
[hidden]{display:none!important}

/* Shared agency credit. Keep the supplied Good Thinking mark and destination. */
footer .gt-credit{display:flex;align-items:center;justify-content:center;gap:12px;width:fit-content;max-width:100%;min-height:48px;margin:28px auto 0;padding:8px 12px;color:#e8e3d7;font:11px/1.5 system-ui,sans-serif;letter-spacing:.04em;text-decoration:none;border:1px solid #d9d4c42b;border-radius:3px;background:#ffffff04}
footer .gt-credit img{display:block;width:auto;height:32px;max-width:none;margin:0;object-fit:contain}
footer .gt-credit:hover{color:#fff;border-color:#d9d4c480;background:#ffffff0c}
footer .gt-credit:focus-visible{outline:2px solid currentColor;outline-offset:4px}

footer .gt-credit{grid-column:1 / -1;justify-self:center;white-space:nowrap}
footer .gt-credit{position:relative;border:0;border-radius:0;background:transparent;padding:12px 24px;isolation:isolate}
footer .gt-credit:before{content:'';position:absolute;z-index:-1;inset:1px -10px;background:linear-gradient(96deg,transparent 0,#183225 7%,#29533c 48%,#142b20 92%,transparent);clip-path:polygon(0 27%,8% 13%,20% 21%,35% 8%,50% 17%,65% 7%,80% 20%,94% 10%,100% 70%,88% 88%,72% 79%,55% 94%,38% 82%,20% 93%,3% 73%)}
footer .gt-credit:hover{background:transparent}

/* Selected candle study 02, with a transparent scene and anchored wick. */
.draft-candle{display:block;width:180px;height:220px;max-width:100%;margin:0 auto 28px;pointer-events:none}
.guarded-light .draft-candle{width:270px;height:330px;margin-bottom:30px}
.observance-intro>.draft-candle{width:108px;height:132px;margin:0 0 20px -24px}
@media(max-width:700px){.guarded-light .draft-candle{width:180px;height:220px}}

/* The hall, the window, the vigil: one continuous descent. */
.hero{height:100svh;min-height:620px;max-height:none;overflow:hidden}
.hero-content{padding:100px 24px 90px;transform:none;align-self:center}
.hero h1{font-size:clamp(72px,min(9vw,15vh),138px);margin:22px 0}
.hero-line{margin-bottom:24px}.hero .small{margin:14px auto 0}
.hero-bottom{bottom:22px}.hero-scene{inset:-3% 0;width:100%;height:106%}
.hero:after{background:linear-gradient(180deg,#03080570,transparent 30%,#03080522 60%,#0c1511 100%)}







.night-story{display:block;position:relative;isolation:isolate;max-width:none;padding:0 8%;margin:0;background:#080f0b}
.night-story>div:last-child{position:relative;max-width:1200px;margin:auto}
.night-story article{min-height:100svh;width:48%;padding:20vh 0;display:flex;flex-direction:column;justify-content:center;position:relative;z-index:1}
.night-story article:nth-child(2){margin-left:52%}.night-story article:last-child{padding-bottom:20vh}
.night-story article h2{font-size:clamp(42px,5.4vw,78px)}.night-story article p{max-width:440px}.night-story article .button{align-self:flex-start}
.night-story .guarded-light{position:absolute;top:0;left:0;width:240px;height:340px;padding:0;z-index:0;pointer-events:none}
.guarded-light .draft-candle{width:240px;height:294px;margin:0}.guarded-light .eyebrow{font-size:8px;letter-spacing:.18em;margin:0;text-align:center;max-width:none}
.guarded-light:before{width:750px;height:750px;left:50%;top:44%;z-index:-1;transform:translate(-50%,-50%);animation:none;background:radial-gradient(ellipse,#edc67922 0%,#d4a45810 35%,transparent 68%)}
@media(max-width:700px){
 .hero{min-height:680px}.hero-content{padding:100px 20px 90px}.hero h1{font-size:clamp(64px,13vw,92px)}
 
 
 .night-story{padding:0 6%}.night-story article{width:76%;min-height:90svh;padding:18vh 0}.night-story article:nth-child(2){margin-left:24%}.night-story article h2{font-size:36px}.night-story article p{font-size:15px}
 .night-story .guarded-light{width:92px;height:180px}.guarded-light .draft-candle{width:92px;height:160px}.guarded-light:before{width:400px;height:500px}.guarded-light .eyebrow{display:none}
}
@media(prefers-reduced-motion:reduce){.night-story .guarded-light{display:none}}
/* Contain the travelling light without creating a nested scroll container. */
.night-story{overflow:clip}
/* A worn ivory window surround, lit from behind. Clip paint, not scrolling. */
html,body{max-width:100%;overflow-x:clip}
.decree{padding-bottom:32px}
.decree-sign{margin-bottom:0}







@media(max-width:700px){.decree{padding-bottom:24px}}

/* Candle-lit masonry only emerges where the moving light reaches it. */
.night-story article{isolation:isolate}
.lit-stone{position:absolute;inset:8% -18%;z-index:-1;pointer-events:none;opacity:0;background:radial-gradient(ellipse at center,#b58a4230,transparent 70%),url('/assets/stone-grain.svg');background-size:auto,180px 180px;mask-image:radial-gradient(ellipse,black 5%,#0009 38%,transparent 72%);mix-blend-mode:screen}
.candle-lit article:focus-within>*:not(.lit-stone){filter:brightness(1.12)!important}
.candle-lit .guarded-light:before{width:min(1100px,110vw);height:950px;background:radial-gradient(ellipse,#f7cf802a 0%,#c38d3918 30%,#ad793609 52%,transparent 72%)}
@media(prefers-reduced-motion:reduce){.lit-stone{display:none}}
/* A diffuse mist behind the agency credit, without a visible silhouette. */
footer .gt-credit:before{inset:-14px -28px;clip-path:none;border:0;border-radius:50%;background:radial-gradient(ellipse at 46% 54%,#76ae8740 0%,#477c5c2b 34%,#315e4214 56%,transparent 76%);filter:blur(14px)}
footer .gt-credit:hover:before{background:radial-gradient(ellipse at 46% 54%,#84bc934d 0%,#477c5c30 34%,#315e4218 56%,transparent 76%)}
/* A soft emerald wand light with a bright centre and a diffuse mist trail. */
.decree{isolation:isolate}
.decree-orb{position:absolute;top:0;left:0;width:0;height:0;pointer-events:none;z-index:2}
.decree-orb:before{content:'';position:absolute;width:260px;height:170px;left:-150px;top:-85px;background:radial-gradient(ellipse at 58% 50%,#caffdcbc 0%,#91efaf64 8%,#58c48432 24%,#45986814 45%,transparent 70%);filter:blur(12px);mix-blend-mode:screen}
.decree-orb:after{content:'';position:absolute;width:12px;height:12px;left:-6px;top:-6px;border-radius:50%;background:#e1ffe7;box-shadow:0 0 14px 5px #b1ffc6a0,0 0 36px 12px #65d39370;filter:blur(3px)}
@media(max-width:700px){.decree-orb:before{width:180px;height:130px;left:-105px;top:-65px}}
@media(prefers-reduced-motion:reduce){.decree-orb{display:none}}
.spell-reveal{mask-image:linear-gradient(90deg,#000 33.333%,transparent 66.667%);mask-size:300% 100%;mask-repeat:no-repeat}
/* The candle pivots near its base as its spring settles. */
.guarded-light .draft-candle{transform-origin:50% 86%}
.guarded-light>.eyebrow{display:none}
.decree-spell-content{position:relative}
.spell-swipe{mask-image:linear-gradient(135deg,#000 33.333%,transparent 66.667%);mask-size:300% 300%;mask-repeat:no-repeat}
.spell-particle{position:absolute;left:0;top:0;width:3px;height:3px;border-radius:50%;background:#bcf7ce;box-shadow:0 0 7px #8cf8ae;pointer-events:none}
.motion-offscreen,.motion-offscreen:before,.motion-offscreen:after,.motion-offscreen .lantern-flame{animation-play-state:paused!important}

/* Observance Roll, adapted from the selected FAQ concept. */
.faq-observance{display:block;--line:#96c89929;--ink:#e9e4d2;--ink-dim:#c0caba;--gold:#e6c47f;--sage-dim:#96c899aa;--ease:cubic-bezier(.16,1,.3,1)}
.faq-observance .faq-head{margin-bottom:36px}.faq-observance .faq-head h2{font-size:clamp(38px,5vw,64px)}
.faq-roll-stage{min-width:0;padding:clamp(16px,3vw,36px);border:1px solid #96c89929;background:#0e1611;box-shadow:inset 0 1px #ffffff0a}
.faq-observance .roll-index{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;margin-bottom:1.5rem}
.faq-observance .roll-tab{
  appearance:none;background:none;border:0;border-bottom:1px solid var(--line);padding:.7rem .3rem .9rem;margin:0;cursor:pointer;
  text-align:left;display:grid;gap:.35rem;color:var(--ink-dim);border-radius:2px 2px 0 0;position:relative;
  transition:color .6s var(--ease);
}
.faq-observance .roll-tab .num{font-size:1.1rem;margin:0}
.faq-observance .roll-tab-q{font-size:.92rem;line-height:1.25}
.faq-observance .roll-tab::after{content:"";position:absolute;left:0;bottom:-1px;height:1px;width:100%;background:var(--gold);transform:scaleX(0);transform-origin:left;transition:transform .8s var(--ease)}
.faq-observance .roll-tab[aria-selected="true"]{color:var(--ink)}
.faq-observance .roll-tab[aria-selected="true"]::after{transform:scaleX(1)}
.faq-observance .faq-roll{display:grid;grid-template-columns:22px minmax(0,1fr) 22px;gap:0;align-items:stretch;min-height:250px}
.faq-observance .rod{
  position:relative;border-radius:11px;
  background:
    repeating-linear-gradient(180deg,rgba(255,255,255,.07) 0 3px,transparent 3px 14px),
    linear-gradient(90deg,#1b2119,#3a3a2b 30%,#514a35 50%,#2e2b1e 75%,#14170f);
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.6),0 6px 12px rgba(0,0,0,.6);
  background-position:0 0;
}
.faq-observance .rod::before,.faq-observance .rod::after{content:"";position:absolute;left:-4px;right:-4px;height:14px;border-radius:50%;background:radial-gradient(circle at 40% 35%,#5b5340,#1c1a12 70%);box-shadow:0 2px 4px rgba(0,0,0,.7)}
.faq-observance .rod::before{top:-10px}.faq-observance .rod::after{bottom:-10px}
.faq-observance .rod.winding{animation:wind 1.1s var(--ease)}
@keyframes wind{to{background-position:0 var(--wind,140px)}}
.faq-observance .roll-window{
  position:relative;overflow:hidden;
  background:
    repeating-linear-gradient(90deg,rgba(255,255,255,.012) 0 1px,transparent 1px 6px),
    repeating-linear-gradient(0deg,rgba(0,0,0,.05) 0 1px,transparent 1px 4px),
    linear-gradient(180deg,#1a2019,#151b16 55%,#11170f);
  box-shadow:inset 24px 0 30px -18px rgba(0,0,0,.95),inset -24px 0 30px -18px rgba(0,0,0,.95),inset 0 1px 0 rgba(255,255,255,.05),inset 0 -1px 0 rgba(0,0,0,.6);
}
.faq-observance .roll-window::before,.faq-observance .roll-window::after{content:"";position:absolute;top:0;bottom:0;width:18px;pointer-events:none;z-index:2}
.faq-observance .roll-window::before{left:0;background:linear-gradient(90deg,rgba(0,0,0,.6),transparent)}
.faq-observance .roll-window::after{right:0;background:linear-gradient(270deg,rgba(0,0,0,.6),transparent)}
.faq-observance .roll-track{display:flex;width:100%;transform:translateX(0);transition:transform 1.1s var(--ease)}
.faq-observance .roll-entry{flex:0 0 100%;padding:clamp(1.3rem,3vw,2.2rem) clamp(1.3rem,4vw,3rem)}
.faq-observance .roll-entry .eyebrow{display:block;margin-bottom:1rem}
.faq-observance .roll-entry h3{font-size:clamp(1.3rem,2.4vw,1.7rem);margin-bottom:.7rem;line-height:1.2}
.faq-observance .roll-entry p.answer-a{font-size:1.02rem}
.faq-observance .roll-entry .faq-observance .roll-sig{margin-top:1.6rem;font-style:italic;color:var(--sage-dim);font-size:.92rem}
@media (max-width:640px){
  .faq-observance .roll-index{grid-template-columns:repeat(2,minmax(0,1fr))}
}


.faq-observance .num{color:#96c899;font-family:Georgia,serif}
.faq-observance .roll-tab{min-height:64px}.faq-observance .roll-tab-q{font-size:16px}
.faq-observance .roll-entry{min-width:0}.faq-observance .roll-entry p{line-height:1.65;margin-bottom:0}
.faq-observance .roll-hint{margin:24px 0 0;font-size:11px;letter-spacing:.1em;color:#aab8a8}
.faq-observance .roll-track{transition:none}
@media(max-width:700px){.faq-observance{padding:60px 18px 75px}.faq-roll-stage{padding:20px 12px}.faq-observance .faq-roll{grid-template-columns:14px minmax(0,1fr) 14px}.faq-observance .roll-entry{padding:24px 18px}.faq-observance .roll-entry h3{font-size:25px}.faq-observance .roll-entry p.answer-a{font-size:16px}.faq-observance .roll-entry .eyebrow{font-size:9px;letter-spacing:.1em}}
/* Keep the mobile vigil moving without empty screenfuls between passages. */
@media(max-width:700px){
 .night-story article{min-height:0;padding:64px 0 72px}
 .night-story article:last-child{padding-bottom:80px}
}
/* A compact window on phones before it opens into the full scene. */


@media(max-width:700px){
 body.candle-docking .night-story{overflow:visible;background:#0c1511;z-index:1}
 body.candle-docking .observance{padding-top:12px}
 body.candle-docking .observance-intro>.draft-candle{visibility:hidden;height:160px;width:92px}
 body.candle-docking .night-story article:last-child{padding-bottom:36px}
}
/* Time-driven breathing and drifting particles, independent of scroll progress. */
.decree-orb:before{animation:orb-mist 3.7s ease-in-out infinite;animation-play-state:paused}
.decree-orb:after{animation:orb-heart 1.9s ease-in-out infinite;animation-play-state:paused}
.decree-orb.orb-alive:before,.decree-orb.orb-alive:after{animation-play-state:running}
@keyframes orb-mist{0%,100%{transform:scale(.88) rotate(-9deg);opacity:.7}45%{transform:scale(1.14,1.08) rotate(8deg);opacity:1}72%{transform:scale(.98,1.12) rotate(2deg);opacity:.82}}
@keyframes orb-heart{0%,100%{transform:scale(.82);opacity:.75}46%{transform:scale(1.22);opacity:1}68%{transform:scale(.98);opacity:.86}}
/* Video frames are keyed to transparent pixels before compositing. */
/* A soft halo breathes behind visible calls to action without moving the label. */
.button{position:relative;isolation:isolate}
.button:before{content:'';position:absolute;inset:-22px -25px;z-index:-1;pointer-events:none;border-radius:18px;background:radial-gradient(ellipse,#96c89970, #96c89930 48%,transparent 73%);filter:blur(10px);opacity:.3;animation:button-halo 4.8s ease-in-out infinite;animation-play-state:paused}
.button.glow-active:before{animation-play-state:running}
@keyframes button-halo{0%,100%{opacity:.25;transform:scale(.96)}50%{opacity:.65;transform:scale(1.035)}}
@media(prefers-reduced-motion:reduce){.button:before{animation:none;opacity:.25}}
/* Contain the fireplace's +/-60px travel beneath its full-section shading. */
.group{overflow:clip}
.group>img{top:-102px;bottom:auto;height:calc(100% + 204px)}

/* Keep the copy in the same expanding arch as the photograph. */



/* Centre every primary call to action and let its halo breathe beyond the edge. */
.button{justify-content:center;text-align:center;gap:0}
.button>svg{display:none}

/* Avoid repainting four animated shadow layers during the window expansion. */






/* The supplied crest replaces the typeset seal. */
.booking-card .seal-submark{width:88px;height:88px;top:-44px;right:16px;background:none;border:0;outline:0;transform:none}
.seal-submark img{display:block;width:100%;height:100%;object-fit:contain;animation:crest-turn 45s linear infinite;animation-play-state:paused}
.seal-submark.crest-visible img{animation-play-state:running}
@keyframes crest-turn{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.seal-submark img{animation:none}}

.decree .bureau-crest{font-size:0;line-height:1;animation:none;transform:none}
.bureau-crest img{display:block;width:100px;height:100px;margin:0 auto;object-fit:contain}
@media(max-width:700px){.bureau-crest img{width:80px;height:80px}}

/* Let the travelling candle pass above the room but behind the group copy. */
@media(max-width:700px){
 body.candle-docking .group{isolation:auto}
 body.candle-docking .group>img,body.candle-docking .group:after{z-index:0}
 body.candle-docking .group>div{position:relative;z-index:2}
}

/* Avoid repainting large animated glow shadows while the mobile window opens. */


/* Keep animated CTA halos inside narrow viewport edges. */
@media(max-width:700px){header .button:before,.mobile-cta .button:before{left:-8px;right:-8px}}

/* Keep the lantern and solstice decorations in the narrow arch crop. */


/* The travelling flame is the reading light; opacity keeps its falloff inexpensive. */
.candle-lit article>:not(.lit-stone){text-shadow:0 0 24px #efbd6633}
.candle-lit article h2{color:#fff0cb}
.candle-lit article p{color:#e1d5b9}
.candle-lit article:focus-within>:not(.lit-stone){opacity:1!important}
.candle-lit .guarded-light:before{width:min(780px,100vw);height:620px;top:26%;background:radial-gradient(ellipse,#ffd78d45 0%,#d8a44b25 26%,#ad79360c 48%,transparent 70%)}
@media(max-width:700px){.candle-lit .guarded-light:before{width:520px;height:480px}}

/* Center the supplied seasonal mark over the candlelit cell block. */
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.hero-content{width:min(100%,1320px);padding:clamp(96px,12vh,150px) 24px clamp(88px,11vh,126px)}
.hero-emblem{position:relative;width:min(100%,1200px);margin:clamp(20px,3.4vh,42px) auto clamp(16px,2.8vh,30px);padding:clamp(14px,2vw,26px) 0;background:radial-gradient(ellipse at 50% 52%,rgba(5,9,7,.58),rgba(5,9,7,.2) 55%,transparent 78%)}
.hero-emblem:before,.hero-emblem:after{content:"";position:absolute;left:4%;right:4%;height:1px;background:linear-gradient(90deg,transparent,rgba(212,193,147,.7) 18%,rgba(204,220,208,.82) 50%,rgba(212,193,147,.7) 82%,transparent)}
.hero-emblem:before{top:0}.hero-emblem:after{bottom:0}
.hero-campaign-logo{display:block;width:min(100%,1120px);height:auto;margin:0 auto;filter:drop-shadow(0 10px 30px rgba(0,0,0,.82)) drop-shadow(0 0 25px rgba(223,194,126,.2))}
.hero .hero-line{font-size:clamp(17px,1.55vw,22px);margin:0 auto 24px;text-shadow:0 2px 18px #000}
.js .hero h1.visually-hidden{animation:none}
.js .hero .hero-campaign-logo{animation:kindle 1600ms var(--ease-out-expo) 700ms both}
@media(max-width:700px){
 .hero{min-height:680px}
 .hero-content{padding:96px 18px 90px}
 .hero-emblem{width:100%;margin:24px auto 22px;padding:13px 0}
 .hero-emblem:before,.hero-emblem:after{left:2%;right:2%}
 .hero-campaign-logo{width:100%;max-width:100%;filter:drop-shadow(0 7px 18px rgba(0,0,0,.9)) drop-shadow(0 0 15px rgba(223,194,126,.22))}
 .hero .hero-line{max-width:300px;margin-bottom:20px}
 .hero-scene{object-position:50% 50%}
}

/* ---- The cell reveal ----
   Default: the open cell, words showing (no JS, reduced motion, Save-Data).
   .reveal-live (added by reveal.js): the pinned arch, bars and scroll sequence. */
.reveal{position:relative;background:#0c1511}
.reveal-stage{position:relative;height:100svh;min-height:540px;overflow:hidden;isolation:isolate;contain:layout paint}
.reveal-stage>*,.reveal-cell>*{position:absolute;inset:0;pointer-events:none}
.reveal-cell{background:#0d110e}
.reveal-scene{width:100%;height:100%;object-fit:cover;object-position:30% center}
.reveal-scrim{background:radial-gradient(46% 42% at 50% 48%,#030906c7,#0309067a 55%,transparent 100%),linear-gradient(0deg,#0c1511,transparent 26%)}
.reveal-copy{inset:auto;left:50%;top:calc(var(--ay,0px) + var(--ah,100%) / 2);width:min(600px,calc(var(--aw,100%) - 56px));translate:-50% -50%;text-align:center}
.reveal-copy h2{font-size:clamp(46px,5.6vw,84px);line-height:1;margin:12px 0 20px;text-shadow:0 2px 30px #000c}
.reveal-copy p{max-width:420px;margin:0 auto;color:#e1e3d6;text-shadow:0 2px 16px #000;font-size:17px}
.reveal-glow,.reveal-rim,.reveal-surround,.reveal-occlusion,.reveal-seam,.reveal-bars,.reveal-pockets,.reveal-exhibit{display:none}

.reveal-live{height:180svh}
.reveal-live .reveal-stage{position:sticky;top:0}
.reveal-live .reveal-glow,.reveal-live .reveal-rim,.reveal-live .reveal-surround,.reveal-live .reveal-occlusion,.reveal-live .reveal-seam,.reveal-live .reveal-bars,.reveal-live .reveal-pockets{display:block}
/* The arch: rim, cream surround, then the cell. Three clip-paths share one geometry. */
.reveal-live .reveal-rim{background:#8a7956;clip-path:var(--arch-rim)}
.reveal-live .reveal-surround{background:#e9e4d2;clip-path:var(--arch-frame)}
.reveal-live .reveal-cell{clip-path:var(--arch)}
.reveal-live .reveal-scene{transform:scale(1.22);will-change:transform}
/* Glow painted once; the embers flicker with opacity only. */
/* The glow fades out before the stage edge, so it never shows as a hard line. */
.reveal-glow{-webkit-mask-image:linear-gradient(transparent,#000 calc(var(--ay,0px) + 90px),#000 calc(100% - 60px),transparent);mask-image:linear-gradient(transparent,#000 calc(var(--ay,0px) + 90px),#000 calc(100% - 60px),transparent)}
.reveal-halo{position:absolute;left:var(--ax);top:var(--ay);width:var(--aw);height:var(--ah);border-radius:48% 48% 2% 2%/48% 48% 2% 2%;box-shadow:0 0 28px #efbd6652,0 0 90px #df9d3b3d,0 0 160px #d3973024}
.reveal-halo.flare{box-shadow:0 0 40px #efbd6640,0 0 120px #df9d3b30,0 0 190px #d3973022;opacity:0;animation:reveal-embers 5.3s ease-in-out infinite}
@keyframes reveal-embers{0%,100%{opacity:0}37%{opacity:1}71%{opacity:.35}}
.reveal-offscreen .reveal-halo.flare,body.paused .reveal-halo.flare{animation-play-state:paused}
.reveal-live .reveal-occlusion{background:radial-gradient(60% 55% at 50% 45%,transparent 40%,#03090680 100%)}
.reveal-live .reveal-seam{inset:0 auto;left:calc(var(--ax) + var(--aw) / 2 - 90px);width:180px;background:radial-gradient(50% 45% at 50% 52%,#ffd79acc,#ffb95a33 55%,transparent 80%);opacity:0}
.reveal-live .reveal-scrim{opacity:0}
.reveal-live .reveal-copy{will-change:transform}
.reveal-live .reveal-copy-in{opacity:0;will-change:transform,opacity}
.reveal-live .reveal-bars{inset:auto;left:var(--ax);top:var(--ay);width:var(--aw);height:var(--ah)}
.reveal-bars img{position:absolute;top:0;height:100%;width:auto;will-change:transform}
.reveal-bars .l{right:50%}
.reveal-bars .r{left:50%}
/* Wall shade at the arch sides, faded out as the window starts to grow. */
.reveal-live .reveal-pockets{inset:0 auto;left:var(--ax);width:var(--aw);background:linear-gradient(90deg,#020604b8,#0206044d 9%,transparent 22% 78%,#0206044d 91%,#020604b8)}
.reveal-live .reveal-exhibit{display:block;inset:auto;left:50%;top:calc(var(--ay) + var(--ah) - 36px);translate:-50% 0;white-space:nowrap;font-size:9px;letter-spacing:.2em;color:#e6d6ae;text-shadow:0 1px 6px #000}
@media(max-width:700px){
 .reveal-copy h2{font-size:40px;margin-bottom:14px}.reveal-copy p{font-size:14px;max-width:250px}.reveal-copy .eyebrow{font-size:9px}
 .reveal-live .reveal-exhibit{font-size:7px;top:calc(var(--ay) + var(--ah) - 28px)}
}

/* ---- Hero: the content never meets the scroll cue ----
   The hero grows with its content instead of clipping at the window height, and
   the bottom padding keeps a clear zone for the cue at every size. */
.hero{height:auto;min-height:100svh}
.hero-content{padding-bottom:max(132px,12vh)}
@media(min-width:701px){
 /* The eyebrow sits centred on the header rule. */
 .hero .eyebrow{position:absolute;left:50%;top:112px;translate:-50% calc(-100% - 7px);margin:0;max-width:none;white-space:nowrap}
 .hero-emblem{width:min(100%,700px)}
 .hero-campaign-logo{width:min(100%,616px)}
 /* Centred in the space between the header rule (112px) and the scroll cue (~80px). */
 .hero-content{padding-top:150px;padding-bottom:118px}
}
@media(max-width:700px){.hero-content{padding-bottom:112px}}

/* ---- Soft edges around the group scene ----
   Fades are pinned to the section, not the photograph, because the photograph drifts with
   the parallax: it melts in from the candlelit passage and out into the booking section. */
.group:before{content:'';position:absolute;inset:0;z-index:0;pointer-events:none;background:linear-gradient(#080f0b,#080f0bcc 70px,transparent 240px,transparent calc(100% - 200px),#0c1511cc calc(100% - 60px),#0c1511)}
.group>div{position:relative;z-index:1}

/* Descriptive copy should remain comfortable to read over the atmospheric artwork. */
.small{font-size:16px;line-height:1.6}
.group p,.night-story article p,.observance-intro>p,.booking-card>p,.faq-hint,
.faq-observance .roll-hint,.privacy-note,#form-status,dialog p{font-size:17px;line-height:1.65}
footer small{font-size:13px;line-height:1.5}
@media(max-width:700px){
 .small{font-size:16px}
 .group p,.night-story article p,.observance-intro>p,.booking-card>p,.faq-hint,
 .faq-observance .roll-hint,.privacy-note,#form-status,dialog p{font-size:16px}
}

/* The credit stacks: words first, then the Good Thinking mark, as one link. */
footer .gt-credit{flex-direction:column;gap:8px;white-space:normal}

/* ============================================================
   SAM'S TWEAKS: hero facts, social proof, the Bureau notice, groups
   ============================================================ */
.hero-hook{font-family:Firdevs,Georgia,serif;font-size:clamp(24px,2.6vw,34px);line-height:1.15;margin:0 auto 14px;color:#f1eedd;text-shadow:0 2px 24px #000a}
.hero-line{max-width:34ch;margin-bottom:22px}
.hero-icons{list-style:none;display:flex;flex-wrap:wrap;justify-content:center;gap:10px 26px;margin:0 auto 20px;padding:0;font:600 11px/1.2 Ferryman,Arial,sans-serif;letter-spacing:.16em;text-transform:uppercase;color:#e2dcc0}
.hero-icons li{display:flex;align-items:center;gap:8px}
.hero-icons .ico{width:20px;height:20px;color:#e6c47f}
.hero-facts{font-size:14px;letter-spacing:.06em;color:#dfe3d3;margin:0 auto 26px}
.hero-facts i{font-style:normal;color:#b9975b;margin:0 .35em}

/* Reviews: a slow ribbon of guest quotes, after the Moonshine page. */
.review-carousel{--review-width:400px;--review-gap:44px;position:relative;color:#f2eedb;text-align:center}
.score{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:6px 12px;margin:0 auto 14px;font-size:14px;letter-spacing:.05em;color:#dfe3d3}
.score b{font:400 28px/1 Firdevs,Georgia,serif;color:#f5e3b3}
.score-stars{display:inline-flex;gap:3px;color:#e6c47f}
.score-stars .ico{width:15px;height:15px}
.review-window{overflow:hidden;mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent)}
.review-track{display:flex;width:max-content;will-change:transform}
.review-list{display:flex;flex:none;gap:var(--review-gap);list-style:none;margin:0;padding:0 var(--review-gap) 0 0;width:max-content}
.review-item{display:flex;flex-direction:column;align-items:center;gap:8px;flex:0 0 var(--review-width);width:var(--review-width);padding:0 4px}
.review-stars{display:inline-flex;gap:3px;color:#e6c47f}
.review-stars svg{width:14px;height:14px;fill:currentColor}
.review-quote{margin:0;font:400 14px/1.45 Georgia,serif;font-style:italic;text-wrap:pretty;text-shadow:0 1px 14px #000a}
.review-credit{display:flex;gap:10px;margin:0;font:600 10px/1.25 Ferryman,Arial,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#cfd3bf}
.review-source{opacity:.65}.review-source:before{content:'·';margin-right:10px}
.review-carousel:not(.is-ready) .review-window{display:none}
.review-carousel.is-browsing .review-window,.review-carousel.is-still .review-window{overflow-x:auto;scrollbar-width:none;scroll-snap-type:x proximity}
.review-window::-webkit-scrollbar{display:none}
.review-carousel.is-browsing .review-list--copy,.review-carousel.is-still .review-list--copy{display:none}
.review-carousel.is-browsing .review-item,.review-carousel.is-still .review-item{scroll-snap-align:center}
.review-window:focus-visible{outline:2px solid #e6c47f;outline-offset:4px}
.proof-hero{max-width:min(760px,92vw);margin:34px auto 0}
.proof-group{margin-top:44px;flex:0 0 100%}
.group{flex-wrap:wrap;align-content:center}
.group>div{flex:0 0 100%}
.group .proof-group{max-width:760px;text-align:center}
.group .button{width:auto;min-width:280px;margin-top:6px}

/* The notice: a printed Bureau form on green stock, after the spellcasting permit. */
.notice-wrap{padding:20px 24px 120px}
.notice{--ink:#1f5f6b;position:relative;max-width:640px;margin:0 auto;padding:54px clamp(28px,6vw,62px) 44px;color:var(--ink);text-align:left;
 background:radial-gradient(circle at 1px 1px,#1f5f6b14 1px,transparent 1.4px) 0 0/9px 9px,radial-gradient(ellipse at 20% 10%,#c6e1bc,transparent 55%),radial-gradient(ellipse at 85% 95%,#7fae93 0,transparent 60%),#a4cba6;
 border:1px solid #1f5f6b;box-shadow:0 30px 80px #000a,inset 0 0 0 9px #a4cba6,inset 0 0 0 10px var(--ink),inset 0 0 0 15px #a4cba6,inset 0 0 0 16px #1f5f6b88,inset 0 0 70px #3f6d5a55;
 font-family:'Courier New',Courier,monospace;transform:rotate(-.6deg)}
.notice:before{content:'';position:absolute;inset:18px;pointer-events:none;border:6px double #1f5f6b55;border-radius:3px;opacity:.55;mask-image:repeating-linear-gradient(90deg,#000 0 6px,transparent 6px 9px);-webkit-mask-image:repeating-linear-gradient(90deg,#000 0 6px,transparent 6px 9px)}
.notice>*{position:relative}
.notice-ref{margin:0 0 10px;font:600 10px/1.4 Ferryman,Arial,sans-serif;letter-spacing:.24em;color:var(--ink)}
.notice h2{font:400 clamp(30px,5vw,44px)/1.05 Ferryman,Firdevs,Georgia,serif;letter-spacing:.01em;color:var(--ink);margin:0 0 18px;padding-bottom:16px;border-bottom:3px double var(--ink)}
.notice p,.notice li{color:var(--ink)}
.notice-open{font-size:15px;line-height:1.7;letter-spacing:.06em;text-transform:uppercase;margin:0 0 22px;text-align:left}
.notice-clauses{margin:0 0 30px;padding:18px 0 0;border-top:3px double var(--ink);list-style:none;counter-reset:clause}
.notice-clauses li{counter-increment:clause;display:grid;grid-template-columns:2.2em 1fr;padding:9px 0;font-size:15px;line-height:1.55}
.notice-clauses li:before{content:counter(clause)'.';font-weight:700}
.notice-sign{margin:0;padding-top:16px;border-top:1px solid var(--ink);display:flex;flex-direction:column;gap:4px}
.notice-sign strong{font:italic 400 clamp(22px,4vw,30px)/1.2 Georgia,serif;letter-spacing:0;color:#173f52}
.notice-sign span{font:600 10px/1.4 Ferryman,Arial,sans-serif;letter-spacing:.2em;font-variant:small-caps;text-transform:none;font-size:12px}
.notice-stamp{position:absolute;right:26px;bottom:26px;width:104px;aspect-ratio:1;display:grid;place-items:center;border:3px double #8a3a3f;border-radius:50%;color:#8a3a3fb0;transform:rotate(-14deg);opacity:.72;mix-blend-mode:multiply;text-align:center}
.notice-stamp b{font:400 46px/1 Firdevs,Georgia,serif}
.notice-stamp i{position:absolute;bottom:9px;font:600 6px/1 Ferryman,Arial,sans-serif;font-style:normal;letter-spacing:.14em;text-transform:uppercase}
.card-facts{font-size:13px;letter-spacing:.06em;color:#dbd2b3}
@media(max-width:700px){
 .hero-hook{font-size:22px}.hero-icons{gap:8px 16px;font-size:9px}.hero-icons .ico{width:17px;height:17px}.hero-facts{font-size:12px}
 .review-carousel{--review-width:min(300px,calc(100vw - 56px));--review-gap:28px}.proof-hero{margin-top:26px}
 .notice-wrap{padding:0 14px 80px}.notice{transform:none}.notice-open,.notice-clauses li{font-size:14px}.notice-stamp{width:78px;right:16px;bottom:88px}.notice-stamp b{font-size:34px}
 .group .button{width:100%}
}
.proof-hero .review-stars{display:none}

/* Photographs sit faintly behind each beat of the night, like the Midwinter Observance. */
.night-story article{position:relative;isolation:isolate}
.night-story article:before{content:'';position:absolute;inset:4% -22% 0 -34%;z-index:-2;pointer-events:none;background:var(--beat) center/cover no-repeat;opacity:.22;filter:saturate(.8) brightness(.85);mask-image:radial-gradient(ellipse at 55% 50%,#000 0,#0008 42%,transparent 72%);-webkit-mask-image:radial-gradient(ellipse at 55% 50%,#000 0,#0008 42%,transparent 72%)}
.beat-dusk{--beat:url('/assets/seq-dusk-cellblock-1100.webp')}
.beat-before{--beat:url('/assets/seq-before-1100.webp')}
.beat-midnight{--beat:url('/assets/seq-midnight-1100.webp')}
.gallery{display:grid;grid-template-columns:1.5fr .8fr;gap:clamp(10px,1.6vw,22px);max-width:1200px;margin:0 auto;padding:20px 24px 110px;align-items:stretch}
.gallery figure{margin:0;overflow:hidden;border:1px solid #687451;box-shadow:0 18px 50px #0009}
.gallery img{display:block;width:100%;height:100%;object-fit:cover;filter:saturate(.9)}
@media(max-width:700px){.night-story article:before{inset:2% -12% 0 -40px;opacity:.24}.gallery{grid-template-columns:1fr;padding-bottom:70px}.gallery figure:nth-child(2){aspect-ratio:4/3}}
.reveal-copy-in{position:relative;isolation:isolate}
.reveal-copy-in:before{content:'';position:absolute;inset:-14% -22%;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at center,#040a06d9 0,#040a06a6 48%,transparent 74%)}


/* Notice legibility: near-black teal ink, heavier type, lighter stock. */
.notice{--ink:#08262f;background:radial-gradient(circle at 1px 1px,#08262f12 1px,transparent 1.4px) 0 0/9px 9px,radial-gradient(ellipse at 20% 10%,#dcefd2,transparent 60%),radial-gradient(ellipse at 85% 95%,#9cc4a8 0,transparent 60%),#b7d8b3}
.notice-ref{color:#0d3b47;font-size:11px}
.notice h2{color:#062029;font-weight:700}
.notice-open{font-size:16px;font-weight:700;color:#08262f}
.notice-clauses li{font-size:17px;font-weight:700;color:#08262f}
.notice-clauses li:before{font-weight:800}
.notice-sign strong{color:#061a24}
.notice-sign span{color:#0d3b47;font-weight:700}
.notice-stamp{color:#7a2a30;opacity:.85}
@media(max-width:700px){.notice-open{font-size:14.5px}.notice-clauses li{font-size:15.5px}}

/* Arch: keep the shadow to the copy so the photograph reads around it. */
.reveal-scene{filter:brightness(1.35) contrast(1.04) saturate(1.05)}
.reveal-scrim{background:radial-gradient(30% 38% at 50% 48%,#030906a6,#03090652 60%,transparent 100%),linear-gradient(0deg,#0c151199,transparent 18%)}
.reveal-occlusion{background:radial-gradient(70% 62% at 50% 45%,transparent 55%,#03090640 100%)}
.reveal-copy-in:before{inset:-6% -8%;background:radial-gradient(ellipse at center,#040a068c 0,#040a0659 50%,transparent 76%)}
.reveal-copy h2,.reveal-copy p{text-shadow:0 2px 18px #000c,0 0 4px #0008}

/* Groups on desktop: copy left, photograph right, reviews along the bottom, all in one screen. */
@media(min-width:901px){
 .group{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);grid-template-rows:auto auto;column-gap:4%;align-items:center;align-content:center;min-height:0;padding:clamp(48px,7vh,80px) 7% clamp(28px,4vh,44px)}
 .group>img{filter:brightness(1.05);object-position:60% 40%}
 .group:after{background:linear-gradient(90deg,#07120cf2 0,#07120cd0 30%,#07120c40 55%,transparent 78%),linear-gradient(0deg,#07120cf0 0,#07120c99 18%,transparent 34%)}
 .group>div{grid-column:1;max-width:560px;flex:none}
 .group h2{font-size:clamp(40px,4.3vw,62px);line-height:1;margin-bottom:16px}
 .group>div p{font-size:16px;line-height:1.55;margin:0 0 12px}
 .group .button{margin-top:10px}
 .group .proof-group{grid-column:1/-1;margin:clamp(22px,4vh,40px) auto 0;flex:none;width:100%}
 .group .proof-group .score{margin-bottom:10px}
}
 @media(min-width:901px){.group .proof-group{max-width:1100px}}

/* Groups v3: reviews under the title in the left column, fire lifted, next section peeking in. */
@media(min-width:901px){
 .group{padding:clamp(40px,6vh,64px) 7% clamp(24px,3vh,34px);row-gap:0}
 .group>img{filter:brightness(1.9) contrast(1.05) saturate(1.1);object-position:70% 62%}
 .group:after{background:linear-gradient(90deg,#07120cf2 0,#07120cd6 32%,#07120c59 52%,transparent 74%),linear-gradient(0deg,#07120c66 0,transparent 22%)}
 .group h2{font-size:clamp(38px,3.9vw,56px);margin-bottom:12px}
 .group>div p{font-size:15.5px;line-height:1.5;margin-bottom:10px}
 .group .proof-group{grid-column:1;max-width:560px;margin:22px 0 0;text-align:left}
 .group .proof-group .score{justify-content:flex-start}
 .group .review-item{align-items:flex-start;text-align:left}
 .group .review-window{mask-image:linear-gradient(90deg,#000,#000 88%,transparent);-webkit-mask-image:linear-gradient(90deg,#000,#000 88%,transparent)}
 .observance{padding-top:clamp(36px,5vh,56px);align-items:start}
}
@media(min-width:901px){.group .review-window{mask-image:linear-gradient(90deg,transparent,#000 7%,#000 88%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 88%,transparent)}}

body.candle-docking .group>.proof-group{position:relative;z-index:2}

/* Gallery: each photograph drifts inside its frame as you scroll, the second on a slower beat. */
.gallery figure{position:relative}
.gallery img{height:calc(100% + 90px);margin-top:-45px;max-width:none;width:100%}
.gallery figure{min-height:300px}
@media(min-width:701px){.gallery figure{min-height:440px}.gallery figure+figure{margin-top:40px}}
body.candle-docking .gallery{position:relative;z-index:3}body.candle-docking .gallery figure{background:#0c1511}

/* Score: 4.9, five stars, then the count, stacked and centred. */
.score{flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center}
.score b{font-size:40px;line-height:1}
.score-stars .ico{width:18px;height:18px}
.score span:last-child{font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:#d4d8c6}
@media(min-width:901px){.group .proof-group .score{align-items:flex-start;text-align:left}}
.review-carousel{min-width:0;max-width:100%}.proof-group,.proof-hero{width:100%}.review-window{min-width:0}

/* Group photo is the real office photograph: no extra lift needed. */
.group>img{object-position:78% 50%}
@media(min-width:901px){.group>img{filter:brightness(1.08);object-position:72% 55%}}

/* The signature: cast in green light, then sealed with the Bureau stamp. Static state is the finished page. */
.notice-sign{position:relative;margin:0;padding:22px 0 0;border-top:1px solid var(--ink);display:block}
.sig-wrap{position:relative;width:min(100%,400px);margin:0 0 4px 4px}
.sig{display:block;width:100%;height:auto;overflow:visible}
.sig-ink path{fill:#0a2b38}
.sig-glow{opacity:0}
.sig-glow path{fill:#9bffb4}
.sig-glow{filter:drop-shadow(0 0 5px #52e07c) drop-shadow(0 0 14px #33c460)}
.sig-orb{display:none;position:absolute;left:0;top:0;width:18px;height:18px;margin:-9px 0 0 -9px;border-radius:50%;pointer-events:none;
 background:radial-gradient(circle,#f4fff6 0,#a8ffbd 28%,#43d46e 55%,#43d46e00 72%);box-shadow:0 0 18px 6px #4be07a99,0 0 42px 14px #2faa5a55;opacity:0}
.sig-orb:before{content:'';position:absolute;right:50%;top:50%;width:90px;height:6px;margin-top:-3px;border-radius:6px;background:linear-gradient(90deg,#4be07a00,#7dffa066);transform-origin:right center;filter:blur(1.5px)}
.sig-live .sig-orb{display:block}
.sig-title{display:block;margin:6px 0 0 6px;font:700 12px/1.4 Ferryman,Arial,sans-serif;letter-spacing:.2em;color:#0d3b47}
.sig-stamp{position:absolute;right:-6px;bottom:-26px;width:clamp(96px,22vw,128px);height:auto;transform:rotate(-12deg);transform-origin:50% 55%;mix-blend-mode:multiply;opacity:.92;pointer-events:none;filter:drop-shadow(0 1px 0 #7a2a3033)}
@media(max-width:700px){.sig-wrap{width:84%}.sig-stamp{right:-2px;bottom:-30px;width:96px}}
.sig-wrap{width:min(100%,470px)}
.sig-stamp{right:-14px;bottom:-40px}
@media(max-width:700px){.sig-wrap{width:92%}.sig-stamp{right:-8px;bottom:-34px;width:88px}}
.sig-stamp{top:-6px;bottom:auto;right:-10px;width:clamp(90px,19vw,112px)}
@media(max-width:700px){.sig-stamp{top:-4px;bottom:auto;right:-6px;width:84px}}
.sig-stamp{top:-64px;right:-6px;width:clamp(84px,17vw,100px)}
@media(max-width:700px){.sig-stamp{top:-58px;right:-4px;width:78px}}
/* Stamp in the bottom-right corner of the notice, below the name. */
.notice-sign{padding-bottom:44px}
.sig-stamp{top:auto;bottom:-26px;right:-4px;width:clamp(96px,19vw,116px)}
@media(max-width:700px){.notice-sign{padding-bottom:36px}.sig-stamp{top:auto;bottom:-24px;right:-2px;width:88px}}
.notice-sign{padding-bottom:58px}
.sig-stamp{bottom:-36px;right:-16px}
@media(max-width:700px){.notice-sign{padding-bottom:48px}.sig-stamp{bottom:-30px;right:-8px}}

/* Gallery on phones: one column that cannot be widened by an image, both frames the same shape. */
@media(max-width:900px){
 .gallery{grid-template-columns:minmax(0,1fr);justify-items:stretch}
 .gallery figure,.gallery figure:nth-child(2){min-width:0;width:100%;min-height:0;margin-top:0;aspect-ratio:4/3}
}

/* Tickets: three sentences, each a Bureau slip. */
.tickets{max-width:1180px;margin:0 auto;padding:clamp(70px,10vh,120px) 24px clamp(60px,9vh,110px);text-align:center}
.tickets-head{max-width:700px;margin:0 auto clamp(34px,5vh,56px)}
.tickets-head h2{margin-bottom:18px}
.tickets-head p:last-child{color:#c5ccbd}
.ticket-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(14px,2vw,28px);align-items:stretch}
.ticket{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;padding:40px 26px 34px;background:linear-gradient(#182a20,#142319);border:1px solid #687451;box-shadow:inset 0 0 0 7px #182a20,inset 0 0 0 8px #69745255,0 18px 44px #0007}
.ticket-no{margin:0;font:600 11px/1 Ferryman,Arial,sans-serif;letter-spacing:.3em;color:#96c899}
.ticket h3{margin:10px 0 0;font-size:clamp(26px,2.4vw,34px);line-height:1.05}
.ticket-price{margin:6px 0 12px;font:400 clamp(44px,4.4vw,60px)/1 Firdevs,Georgia,serif;color:#f1d9a1}
.ticket p:last-child{margin:0;max-width:30ch;color:#cdd3c4;line-height:1.55}
.tickets-cta{margin-top:clamp(30px,4.5vh,48px);display:flex;justify-content:center}
.tickets-cta .button{width:auto;min-width:300px}
@media(max-width:900px){.ticket-row{grid-template-columns:minmax(0,1fr);max-width:520px;margin:0 auto}.tickets-cta .button{width:100%;min-width:0;max-width:520px}}
body.candle-docking .tickets{position:relative;z-index:3}
.ticket-price{display:flex;flex-direction:column;align-items:center;gap:2px}
.ticket-from{font:600 11px/1 Ferryman,Arial,sans-serif;letter-spacing:.3em;text-transform:uppercase;color:#c5bd9f}
/* Good Thinking consent banner in the Hexmoor palette. Contrast on #13231a: text 12.8:1, muted 9.7:1, buttons 9:1. */
#gt-consent{--gtc-bg:#13231a;--gtc-fg:#e9e4d2;--gtc-muted:#c0caba;--gtc-line:#96c8993d;--gtc-accent:#96c899;--gtc-accent-fg:#0a2015;--gtc-font:Ferryman,Arial,sans-serif;--gtc-display:Firdevs,Georgia,serif;--gtc-radius:0}

/* Share link sits centred under the full-width group button on phones. */
@media (max-width:700px){#group .gt-share-wrap{text-align:center}}

/* Hero parallax slack: the hall is a touch oversized so the pointer and scroll shifts never expose an edge. */
@media(prefers-reduced-motion:no-preference){.hero-scene{scale:1.05}}
