/* Preserve the authored palette when browsers offer automatic darkening. */
:root{color-scheme:only light}
@font-face{font-family:Malboro;src:url('/assets/malboro.woff2') format('woff2');font-display:swap}@font-face{font-family:Playfair;src:url('/assets/playfair.woff2') format('woff2');font-display:swap}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}main,footer{overflow-x:clip}body{margin:0;background:#191b17;color:#e9dfc7;font:16px/1.7 Playfair,Georgia,serif}a{color:inherit;text-underline-offset:5px}button,input{font:inherit}button,a,input,summary{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.65;cursor:wait}a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #d8a661;outline-offset:5px}button:active,.button:active{transform:translateY(2px)}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-weight:400;line-height:1.04}h1,h2{font-family:Malboro,Georgia,serif;text-transform:uppercase}h2{font-size:clamp(46px,5.5vw,88px);letter-spacing:.015em}h3{font-family:Malboro,serif;font-size:37px}em{font-style:normal;color:#b8945c}p{margin-bottom:1.3em}header{height:106px;display:flex;align-items:center;justify-content:space-between;padding:12px 4.5%;border-bottom:1px solid #dbc69e35;background:#191b17}header img{height:80px;width:135px;object-fit:contain}.header-note{font:10px/1.7 monospace;letter-spacing:2px;text-align:center}.nav-cta{font:13px/1.5 monospace;text-transform:uppercase;text-decoration:none;border-bottom:1px solid #bca06b;padding:12px 0}.nav-cta span{margin-left:20px}.eyebrow,.chapter,.hero-foot,.scroll-note,.photo-caption{font:10px/1.6 monospace;letter-spacing:2px;text-transform:uppercase}.eyebrow{display:block;margin-bottom:22px}.hero{position:relative;min-height:max(730px,calc(100svh - 106px));height:auto;isolation:isolate;overflow:hidden}.hero-image{position:absolute;width:100%;height:100%;object-fit:cover;object-position:center 53%;z-index:-3}.hero-shade{position:absolute;inset:0;z-index:-2;background:linear-gradient(90deg,rgba(14,18,16,.92),rgba(14,18,16,.56) 40%,rgba(14,18,16,.03) 75%),linear-gradient(0deg,#161914a6,transparent 45%)}.hero-copy{padding:55px 7% 100px;max-width:900px}.hero h1{font-size:clamp(88px,9.4vw,160px);line-height:.9;letter-spacing:1px;margin:0 0 26px}.hero-copy p{font-size:clamp(17px,1.5vw,22px);line-height:1.6}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:26px;min-height:54px;border:1px solid #d5ae71;background:#d5ae71;color:#211e18;padding:14px 23px;font:13px/1.5 monospace;text-transform:uppercase;letter-spacing:.7px;text-decoration:none;transition:background .2s,transform .2s}.button:hover{background:#ebc98e}.hero-foot{display:block;margin-top:17px;font-size:9px;letter-spacing:1px}.weather-note{position:absolute;right:5%;bottom:110px;transform:rotate(3deg);padding:25px;border:1px solid #d2bb8c90;background:#151c17e8;box-shadow:8px 8px 0 #0003}.weather-note span{font:9px monospace;letter-spacing:2px}.weather-note strong{display:block;font:27px/1.2 Playfair;margin:15px 0 20px;font-weight:400}.scroll-note{position:absolute;bottom:25px;left:7%;right:5%;display:flex;justify-content:space-between;text-decoration:none;border-top:1px solid #e4d4b240;padding-top:18px}.dispatch-story{background:#e6dcc2;color:#30291e;padding:48px 7% 90px;position:relative}.chapter{display:flex;justify-content:space-between;border-bottom:1px solid #6c594c55;padding-bottom:22px;font-size:9px}.story-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:9%;padding-top:60px}.story-grid h2{margin:0}.story-grid em{color:#795833}.lead{font-size:23px;line-height:1.6}.signature{display:block;font-size:30px;font-style:italic;transform:rotate(-5deg);margin:25px 0 7px}.story-grid small{font:8px monospace;letter-spacing:1.5px}.run{display:grid;grid-template-columns:1.03fr 1fr}.run-photo{position:sticky;top:0;align-self:start;height:100svh;max-height:1100px;min-height:700px}.run-photo img{height:100%;width:100%;object-fit:cover;object-position:48% center}.photo-caption{position:absolute;bottom:0;left:0;right:0;padding:35px 20px 20px;background:linear-gradient(transparent,#141510);font-size:8px}.run-content{padding:90px 12% 85px}.run-content h2{font-size:clamp(48px,4.5vw,73px)}.manifest{background:#d9cbaa;color:#393a2c;padding:25px;margin-top:45px;transform:rotate(-2deg);box-shadow:10px 12px 0 #0003}.manifest-top{font-family:Malboro;font-size:30px;border-bottom:3px double #5e5d49;display:flex;flex-direction:column}.manifest-top span{font:9px monospace;letter-spacing:2px;margin:5px 0 15px}.manifest-row{padding:18px 0;border-bottom:1px solid #6d6b5455}.manifest-row span{font:9px monospace;display:block}.manifest-row strong{font-weight:400;font-size:18px}.stamp{margin:20px 0 0 auto;width:max-content;max-width:100%;border:3px double #725130;color:#725130;padding:7px 12px;transform:rotate(-8deg);font:17px Malboro}.reverend{padding:90px 10%;background:#28362f;border-top:1px solid #b4ad8838}.reverend-grid{display:grid;grid-template-columns:1fr 1fr;gap:14%;align-items:center}.reverend h2{font-size:clamp(60px,8vw,118px);margin:0}.invitation{padding:95px 7%;display:grid;grid-template-columns:1fr 1fr;gap:12%;background:radial-gradient(ellipse at 20% 80%,#45423255,transparent 70%),#1b211c}.invitation-intro{padding:18px 0}.invitation-intro p{max-width:360px;font-size:19px}.postmark{border:3px double #bda67c80;border-radius:50%;width:160px;height:160px;display:flex;flex-direction:column;justify-content:center;align-items:center;transform:rotate(-15deg);font:9px/2.3 monospace;color:#bda67c;margin-top:45px}.postmark b{font-size:15px;font-weight:400}.paper{background:#e9dfc7;color:#322d23;padding:38px 36px;box-shadow:8px 8px 0 #0002;align-self:start;border-top:6px double #8a7957}.paper .eyebrow{font-size:9px;letter-spacing:1px;margin-bottom:16px}.paper p{font-size:15px}.paper .fine,.fine{font:12px/1.7 Georgia,serif}.paper label:not(.check){display:block;font-size:14px;margin-bottom:7px}.paper input[type=email]{min-width:0;width:100%;border:1px solid #7b705a;background:#f5eddc;color:#28271f;padding:13px 12px;border-radius:0;min-height:50px}.check{display:flex;gap:12px;align-items:flex-start;margin:20px 0;font:13px/1.65 Georgia,serif;min-height:44px;cursor:pointer}.check input{appearance:auto;accent-color:#735329;flex-shrink:0;width:20px;height:20px;margin:3px 0}.paper .button{width:100%;background:#29392f;border-color:#29392f;color:#fff0cf}.paper .button:hover{background:#405443}.form-status{margin:15px 0 0;font:14px/1.5 Georgia}.form-status:empty{display:none}.paper dl{margin:25px 0}.paper dl div{display:flex;gap:20px;justify-content:space-between;border-bottom:1px solid #62523844;padding:12px 0;font-size:12px}.paper dd{text-align:right;margin:0}.ticket-paper>a{font-size:13px}.faq{padding:90px 15%;background:#e6dcc2;color:#30291e}.faq h2{font-size:56px}.faq details{border-top:1px solid #7a684b77}.faq details:last-child{border-bottom:1px solid #7a684b77}.faq summary{padding:22px 28px 22px 0;cursor:pointer;font-size:18px;min-height:60px}.faq details p{font-size:15px;max-width:650px;padding:0 0 15px}footer{padding:45px 7%;display:grid;grid-template-columns:1fr 1fr 1fr;gap:30px;border-top:1px solid #dbc69e35;font-size:14px}footer img{width:130px;height:90px;object-fit:contain}footer nav{display:flex;flex-direction:column;align-items:start}footer nav a,footer button{min-height:44px;display:flex;align-items:center}footer small{grid-column:1/-1;font:10px/1.7 monospace;opacity:.7}.text-button{background:none;border:0;color:inherit;padding:10px 0;text-decoration:underline;text-underline-offset:4px;font-size:13px;min-height:44px}.mobile-cta{display:none}dialog{width:min(560px,calc(100% - 32px));max-height:calc(100svh - 32px);overflow:auto;background:#e9dfc7;color:#322d23;border:1px solid #c7ab77;padding:45px 35px;box-shadow:0 20px 80px #0008}dialog::backdrop{background:#0b110dde;backdrop-filter:blur(5px)}dialog h2{font-size:48px}dialog p{font-size:15px}.close{position:sticky;top:-30px;display:block;margin:-30px -20px 0 auto;width:44px;height:44px;background:transparent;border:0;font:30px Georgia;color:inherit}dialog .text-button{display:block}.cookie-note{position:fixed;bottom:20px;left:20px;max-width:420px;background:#e9dfc7;color:#312b22;padding:16px 20px;z-index:20;box-shadow:0 5px 35px #0005;border:1px solid #ab9470;display:flex;flex-wrap:wrap;gap:0 18px}.cookie-note p{width:100%;font-size:14px;margin:0 0 6px}.cookie-note small{font:11px/1.5 Georgia}.cookie-note button{min-height:44px;background:none;border:0;border-bottom:1px solid #715832;font:12px monospace;padding:8px 0;color:inherit}.cookie-note[hidden]{display:none}.legal{max-width:900px;padding:80px 7%;margin:auto;min-height:65vh}.legal h1{font-size:clamp(52px,7vw,90px)}.legal h2{font-size:37px}.legal h3{font:24px Playfair;margin-top:40px}.skip{position:fixed;top:-100px;left:15px;z-index:99;background:#e9dfc7;color:#211e18;padding:15px}.skip:focus{top:15px}@media(min-width:1600px){.hero-copy{padding-top:85px}}@media(max-width:900px){.header-note{display:none}.hero-copy{padding-top:65px}.hero h1{font-size:110px}.weather-note{right:5%;bottom:100px;padding:17px}.weather-note strong{font-size:22px}.story-grid{gap:6%}.story-grid h2{font-size:57px}.lead{font-size:20px}.run-content{padding:65px 9%}.run-photo{min-height:700px}.invitation{gap:6%}.paper{padding:30px 25px}.invitation h2{font-size:57px}.reverend{padding:65px 7%}.faq{padding:65px 9%}}@media(max-width:600px){header{height:82px;padding:7px 6%}header img{height:66px;width:110px}.nav-cta{font-size:10px;letter-spacing:0}.nav-cta span{margin-left:9px}.hero{min-height:max(720px,calc(100svh - 82px));height:auto}.hero-copy{padding:50px 7% 115px}.hero h1{font-size:100px}.hero-copy .eyebrow{font-size:8px;letter-spacing:1.5px}.hero-copy p{font-size:17px}.hero-image{object-position:52% center}.hero-shade{background:linear-gradient(90deg,#101a16dc,#11171238),linear-gradient(0deg,#161914 0%,transparent 60%)}.hero-foot{font-size:8px;max-width:280px;line-height:1.8}.hero .button{font-size:11px;gap:15px;padding:14px 17px}.weather-note{display:none}.scroll-note{font-size:8px;bottom:24px}.dispatch-story{padding:30px 7% 55px}.chapter{font-size:7px;letter-spacing:1px;gap:15px}.chapter span:last-child{text-align:right}.story-grid{display:block;padding-top:35px}.story-grid h2{font-size:57px;margin-bottom:30px}.story-grid p{font-size:16px}.story-grid .lead{font-size:20px}.run{display:flex;flex-direction:column}.run-photo{position:relative;height:380px;min-height:0;width:100%}.run-photo img{object-position:center}.run-content{padding:50px 7% 60px}.run-content h2{font-size:59px}.manifest{margin:35px 3% 0;padding:23px}.reverend-grid{display:block}.reverend h2{font-size:86px;margin-bottom:28px}.invitation{display:block;padding:55px 6%}.invitation h2{font-size:60px}.invitation-intro p{font-size:17px}.postmark{display:none}.paper{margin-top:28px;padding:30px 23px}.paper h3{font-size:34px}.paper .button{font-size:11px;gap:10px;padding:14px}.faq{padding:55px 7%}.faq h2{font-size:49px}.faq summary{font-size:16px}footer{grid-template-columns:1fr 1fr;padding:35px 7% 105px;gap:20px}footer nav{grid-column:1/-1;flex-direction:row;flex-wrap:wrap;gap:0 20px}footer p{font-size:13px}footer small{font-size:8px}.mobile-cta{position:fixed;display:flex;bottom:0;left:0;right:0;z-index:10;font-size:11px;padding:16px 6% calc(16px + env(safe-area-inset-bottom));border:0;box-shadow:0 -6px 25px #0003}.cookie-note{bottom:75px;left:12px;right:12px;padding:14px 17px;max-width:none}dialog{padding:35px 24px}dialog h2{font-size:41px}dialog .close{top:-25px;margin-top:-20px}.legal{padding:50px 7%}}@media(max-width:350px){.hero h1{font-size:87px}.hero-copy{padding-top:38px}.hero{min-height:660px}.hero-copy p{font-size:15px}.story-grid h2{font-size:49px}.invitation h2{font-size:53px}.paper{padding:25px 17px}.paper .button{font-size:10px}}@media(max-height:500px) and (min-width:601px){.hero{height:auto;min-height:660px}.cookie-note{max-width:360px;bottom:10px;padding:10px 16px}dialog{max-height:calc(100svh - 20px)}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}
.manifest-row{transition:color .5s,border-color .5s}.manifest-row.entered{color:#78582f;border-bottom-color:#78582f}.manifest-row.entered strong:after{content:'';font-family:Georgia;color:#546040}
.scroll-note{min-height:44px}.nav-cta{min-height:44px}.manifest-row strong:after{display:inline-block;min-width:16px}
@media(max-width:600px){.run-content h2{font-size:clamp(47px,15vw,59px)}.reverend h2{font-size:clamp(62px,22vw,86px)}}
@media(max-width:600px){.hero h1{font-size:clamp(72px,22vw,100px)}}
.hero{height:auto;max-height:none;min-height:max(730px,calc(100svh - 106px))}header{height:auto;min-height:106px}.story-grid>* ,.run>* ,.reverend-grid>* ,.invitation>*{min-width:0}h1,h2,h3,.button{overflow-wrap:anywhere}.hero-copy{position:relative}.hero h1{max-width:100%}.paper dl div{flex-wrap:wrap}.paper dd{margin-left:auto}.legal{overflow-wrap:anywhere}
@media(max-width:600px){header{min-height:82px}.hero{min-height:max(720px,calc(100svh - 82px))}.mobile-cta{max-height:35svh;overflow:auto}.hero-copy{padding-bottom:105px}}
@media(max-width:350px){.hero{min-height:660px}}
.paper :focus-visible,dialog :focus-visible,.faq :focus-visible,.dispatch-story :focus-visible,.cookie-note :focus-visible{outline-color:#354f3e}
@media(max-width:600px){.scroll-note{bottom:80px}body:has(#waitlist:focus-within) .mobile-cta{display:none}}
[hidden]{display:none!important}
header>a{display:flex;align-items:center;min-height:44px}

/* ============================================================
   MOTION - "the line is down, the wire still works"
   Coldwater, Kansas, 1904. A telegraph-and-blizzard vocabulary:
   type arrives in struck lines, cards slide like dealt paper,
   photographs drift against a driving wind.
   ============================================================ */
:root{
  --ease-out-expo:cubic-bezier(.16,1,.3,1);
  --ease-deal:cubic-bezier(.22,1.14,.36,1);
}

.js [data-reveal]{will-change:transform,opacity}
.js [data-reveal].in{will-change:auto}
/* Struck: the line arrives from under a mask, like a printed strike. */
.js [data-reveal="struck"]:not(.in){opacity:0;clip-path:inset(0 0 100% 0);transform:translate3d(0,.2em,0)}
.js [data-reveal="struck"].in{opacity:1;clip-path:inset(-20% 0 -20% 0);transform:none;
  transition:clip-path 660ms var(--ease-out-expo),opacity 280ms linear,transform 660ms var(--ease-out-expo)}
.js [data-reveal="drift"]:not(.in){opacity:0;transform:translate3d(-26px,14px,0)}
.js [data-reveal="drift"].in{opacity:1;transform:none;
  transition:opacity 480ms linear,transform 720ms var(--ease-out-expo)}
/* Dealt: paper laid down on a table, with a little overshoot. */
.js [data-reveal="dealt"]:not(.in){opacity:0;transform:translate3d(0,46px,0) rotate(var(--deal,-2.5deg)) scale(.97)}
.js [data-reveal="dealt"].in{opacity:1;transform:rotate(var(--deal-rest,0deg));
  transition:opacity 520ms linear,transform 880ms var(--ease-deal)}
.js [data-reveal-group]>[data-reveal]:nth-child(2){transition-delay:110ms}
.js [data-reveal-group]>[data-reveal]:nth-child(3){transition-delay:220ms}
.js [data-reveal-group]>[data-reveal]:nth-child(4){transition-delay:330ms}
[data-deal="a"]{--deal:-4deg;--deal-rest:-1.2deg}
[data-deal="b"]{--deal:3.5deg;--deal-rest:1deg}

/* Hero: the storm arrives before the type does. */
@keyframes stormIn{from{opacity:0;transform:translateZ(-620px) scale(1.56)}to{opacity:1;transform:translateZ(-620px) scale(1.443)}}
@keyframes strikeIn{from{opacity:0;clip-path:inset(0 0 100% 0);transform:translate3d(0,.18em,0)}
  to{opacity:1;clip-path:inset(-20% 0 -20% 0);transform:none}}
@keyframes slideUp{from{opacity:0;transform:translate3d(0,22px,0)}to{opacity:1;transform:none}}
.hero picture,.hero>img{position:absolute;inset:0;display:block}
.js .hero picture,.js .hero>img{animation:stormIn 2400ms var(--ease-out-expo) both}
.js .hero .eyebrow{animation:slideUp 700ms var(--ease-out-expo) 220ms both}
.js .hero h1{animation:strikeIn 1250ms var(--ease-out-expo) 340ms both}
.js .hero-sub,.js .hero p:not(.eyebrow){animation:slideUp 820ms var(--ease-out-expo) 720ms both}
.js .hero .button{animation:slideUp 820ms var(--ease-out-expo) 880ms both}

/* Telegraph cards and stamps land rather than appear. */
.js .stamp{transition:transform 600ms var(--ease-deal)}
.js .stamp:not(.in){transform:scale(1.7) rotate(-22deg);opacity:0}
.js .stamp.in{transform:none;opacity:1}

/* Photographs lift toward the cursor, against the wind. */
.run img,.reverend img,.dispatch-story img{transition:transform 820ms var(--ease-out-expo),filter 820ms var(--ease-out-expo)}
.run img:hover,.reverend img:hover,.dispatch-story img:hover{transform:translateY(-7px) scale(1.012);filter:brightness(1.06) contrast(1.03)}

/* FAQ opens instead of snapping. */
.faq details>*:not(summary){animation:slideUp 520ms var(--ease-out-expo) both}
.faq summary{transition:color 220ms linear}

.button{transition:background 220ms linear,transform 240ms var(--ease-out-expo),box-shadow 360ms var(--ease-out-expo)}

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

/* ---- Browser surfaces ---- */
::selection{background:#c8a24a;color:#1b1a15}
::-moz-selection{background:#c8a24a;color:#1b1a15}
input,textarea{caret-color:#8a6a2f}
html{scrollbar-color:#5d5340 #1b1a15;scrollbar-width:thin}
::-webkit-scrollbar{width:11px;height:11px}
::-webkit-scrollbar-track{background:#171610}
::-webkit-scrollbar-thumb{background:#4a4233;border:3px solid #171610}
::-webkit-scrollbar-thumb:hover{background:#6d6047}

@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;clip-path:none!important}
}

/* A resting rotation widens an element's bounding box beyond its layout box,
   which pushes the document sideways on a narrow screen. Keep the dealt-card
   tilt for the entrance, but settle flat where there is no room for it. */
@media(max-width:760px){
  [data-deal="a"],[data-deal="b"]{--deal-rest:0deg;--deal:0deg}
  .run-photo{max-width:100%}
}
/* 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. */

/* ---- Typographic tracking is size-specific ----
   A single positive value across a 46px-to-160px range is wrong at the top of
   it. Tighten display sizes; body copy stays at 0. */
h2{letter-spacing:-.015em}
.hero h1{letter-spacing:-.02em}

/* ---- 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,.btn .ico{width:1.2em;height:1.2em;transition:transform 320ms var(--ease-out-expo)}
.button:hover .ico,.btn:hover .ico{transform:translate(2px,-2px)}
dialog .close .ico,[data-close] .ico{width:24px;height:24px;margin:auto}
footer .ico,.faq .ico,a .ico{width:.85em;height:.85em;display:inline-block;vertical-align:-.08em;margin-left:.3em}

/* ============================================================
   THE DISPATCH BOARD - Moonshine's set piece
   Telegram slips on a spike. Choosing one brings its message
   forward on Western Plains Telegraph paper, stamped RECEIVED.
   ============================================================ */
.faq{display:block;padding-bottom:clamp(70px,9vh,130px)}
.wire-head{max-width:720px;margin:0 0 clamp(34px,5vh,60px)}
.wire-hint{font-size:15px;color:#9a917d;margin-top:14px;font-style:italic}
.wire{display:grid;grid-template-columns:minmax(230px,.68fr) minmax(0,1.32fr);
  gap:clamp(24px,3.4vw,58px);align-items:start;max-width:1280px}

/* The spike: slips hang off a single vertical rule. */
.wire-spike{position:relative;display:flex;flex-direction:column;gap:10px;padding-left:22px}
.wire-spike:before{content:'';position:absolute;left:5px;top:6px;bottom:6px;width:1px;
  background:linear-gradient(#7d7461,#7d746122)}
.slip{position:relative;text-align:left;width:100%;background:#ece4cf;color:#26251d;border:0;
  border-left:1px solid #b9ab8a;padding:15px 16px 15px 18px;min-height:56px;cursor:pointer;
  box-shadow:2px 3px 0 #00000026;
  transform:rotate(var(--tilt,-.5deg));
  transition:transform 420ms var(--ease-out-expo),box-shadow 420ms var(--ease-out-expo),
             background 260ms linear,border-color 260ms linear}
.slip:nth-child(2n){--tilt:.7deg}
.slip:nth-child(3n){--tilt:-1.1deg}
.slip-code{display:block;font:9px/1 monospace;letter-spacing:2px;color:#8a7f66;margin-bottom:7px}
.slip-q{display:block;font-size:14.5px;line-height:1.35}
/* The pin that holds it to the spike. */
.slip-pin{position:absolute;left:-22px;top:50%;width:9px;height:9px;border-radius:50%;
  background:#6d6353;box-shadow:0 0 0 2px #1b1a15;transform:translateY(-50%);
  transition:background 260ms linear,box-shadow 260ms linear}
.slip:hover{transform:rotate(0deg) translateX(3px);box-shadow:4px 5px 0 #00000033}
.slip:focus-visible{outline:2px solid #c8a24a;outline-offset:4px}
/* The pulled dispatch sits straight and proud of the others. */
.slip[aria-selected="true"]{background:#f7f1e1;border-left-color:#a9701f;
  transform:rotate(0deg) translateX(9px);box-shadow:6px 7px 0 #0000003d}
.slip[aria-selected="true"] .slip-code{color:#a9701f}
.slip[aria-selected="true"] .slip-pin{background:#c8a24a;box-shadow:0 0 0 2px #1b1a15,0 0 12px #c8a24a80}

/* The telegram itself. */
.telegram{position:relative;background:#f7f2e3;color:#221f18;border:1px solid #c0b494;
  padding:clamp(26px,3vw,44px);box-shadow:0 22px 54px #00000047;
  background-image:repeating-linear-gradient(0deg,#7a6b3f0a 0,#7a6b3f0a 1px,transparent 1px,transparent 26px);
  display:grid;align-content:start;gap:0;min-height:320px}
.tg-head{display:flex;justify-content:space-between;gap:16px;font:9px/1 monospace;letter-spacing:2.2px;
  color:#7d7053;border-bottom:2px solid #221f18;padding-bottom:12px}
.tg-meta{display:grid;grid-template-columns:auto 1fr;gap:5px 14px;align-items:baseline;
  padding:16px 0;border-bottom:1px dashed #b2a684}
.tg-meta span{font:9px/1 monospace;letter-spacing:1.8px;color:#8b7f60}
.tg-meta b{font:12px/1.4 monospace;letter-spacing:1px;font-weight:700;color:#3a352a}
.telegram h3{font-size:clamp(23px,2.3vw,34px);line-height:1.1;letter-spacing:-.015em;margin-top:26px;max-width:22ch}
.telegram>p{font-size:16px;line-height:1.72;margin-top:16px;max-width:56ch;color:#393428}
.telegram>p a{color:#8a5a12}
.tg-foot{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:30px;
  padding-top:18px;border-top:2px solid #221f18}
.tg-stop{font:10px/1 monospace;letter-spacing:3px;color:#7d7053}
.tg-mark{font:15px/1 monospace;letter-spacing:3px;color:#8a5a12;border:2px solid #8a5a12;
  padding:6px 11px;transform:rotate(-6deg);opacity:.85}

/* The message comes in over the wire, line by line. */
@keyframes wireIn{from{opacity:0;clip-path:inset(0 0 100% 0)}to{opacity:1;clip-path:inset(0 0 -4% 0)}}
@keyframes markHit{from{opacity:0;transform:scale(1.7) rotate(-26deg)}to{opacity:.85;transform:rotate(-6deg)}}
.js .telegram[data-enter]{animation:wireIn 640ms var(--ease-out-expo) both}
.js .telegram[data-enter] .tg-mark{animation:markHit 460ms var(--ease-deal) 300ms both}

@media(max-width:900px){
  .wire{grid-template-columns:minmax(0,1fr);gap:28px}
  .telegram{min-height:0}
}
@media(prefers-reduced-motion:reduce){
  .js .telegram[data-enter],.js .telegram[data-enter] .tg-mark{animation:none}
  .slip{transform:none}
}
[hidden]{display:none!important}

/* .tg-head and .tg-foot are <header>/<footer> elements, so the site-wide
   header/footer rules were painting the telegram's own chrome dark. */
.telegram>.tg-head,.telegram>.tg-foot{background:none;padding-left:0;padding-right:0;
  position:static;height:auto;min-height:0;width:auto;display:flex;border-radius:0}
.telegram>.tg-head{color:#6f6348}
.telegram>.tg-foot{color:inherit}

/* ============================================================
   DEPTH + SCROLL - "the storm moves past you"
   The hero is a perspective stage. Every later section carries the
   same idea at lower amplitude: the photograph sits behind its
   caption, the caption behind the type, and scrolling travels past
   all three at different rates.
   ============================================================ */
.hero{perspective:1400px;perspective-origin:50% 45%;transform-style:preserve-3d}
.js .hero>*{transform-style:preserve-3d}
/* Z is compensated with scale so each plane still fills its box:
   scale = 1 - z/perspective. */
.js .hero-image{transform:translateZ(-620px) scale(1.443);will-change:transform}
.js .hero-shade{transform:translateZ(-300px) scale(1.214)}
.js .hero-copy{transform:translateZ(70px);will-change:transform}
.js .weather-note{transform:translateZ(190px);will-change:transform}
.js .scroll-note{transform:translateZ(50px)}

/* Later sections get depth without perspective: rate alone reads as distance. */
.run-photo,.run-photo img{will-change:transform}

/* ---- Reveals: type arrives like it was printed, a line at a time ---- */
.js [data-line]{display:block;overflow:hidden}
.js [data-line]>span{display:block;transform:translate3d(0,108%,0);
  transition:transform 620ms var(--ease-out-expo)}
.js [data-line].in>span{transform:none}
.js [data-line]:nth-of-type(2)>span{transition-delay:55ms}
.js [data-line]:nth-of-type(3)>span{transition-delay:110ms}

/* A rule that draws itself across as the section arrives. */
.js [data-rule]{position:relative}
.js [data-rule]:after{content:'';position:absolute;left:0;right:0;bottom:-14px;height:1px;
  background:currentColor;opacity:.32;transform:scaleX(0);transform-origin:0 50%;
  transition:transform 780ms var(--ease-out-expo)}
.js [data-rule].in:after{transform:scaleX(1)}

/* Captions and labels counter-move against their photograph. */
.photo-caption{will-change:transform}

/* Paper stays legible; only decorative holes are armed for impacts. */
.manifest{position:relative}
.manifest-row,.js .manifest-row{position:relative;opacity:1;transform:none;padding-right:66px}
.manifest-row strong{font-weight:700;font-size:clamp(19px,1.7vw,23px);line-height:1.3}
.manifest-row>.hole{position:absolute;right:15px;top:23px;width:25px;height:25px;margin:0;opacity:1;transform:none;border-radius:47% 53% 42% 58%;background:radial-gradient(ellipse at 42% 38%,#080906 0 36%,#241b10 40% 49%,#806043 53% 61%,#bc9f6b 66% 70%,transparent 74%);filter:drop-shadow(0 1px 0 #f6e9bd);pointer-events:none}
.manifest-row:nth-of-type(3)>.hole{right:31px;top:38px}
.manifest-row:nth-of-type(4)>.hole{right:5px;top:19px;width:29px;height:29px}
.hole:before{content:'';position:absolute;inset:-5px;background:#70552d;clip-path:polygon(48% 0,57% 30%,80% 8%,72% 39%,100% 43%,75% 57%,93% 83%,61% 72%,53% 100%,42% 72%,15% 93%,30% 61%,0 48%,30% 38%,13% 13%,41% 30%);z-index:-1}
.hole i{position:absolute;left:50%;top:50%;width:7px;height:5px;background:#f2e3b9;box-shadow:0 1px 1px #34220d;clip-path:polygon(0 0,100% 20%,65% 100%,15% 75%);opacity:0}
.hole i:nth-child(even){width:5px;height:8px;background:#c3a273}
.manifest-row.armed>.hole{opacity:0}

/* The hero grows to fit, but its content must not sit flush against the fold. */
.hero{padding-bottom:clamp(34px,6vh,72px)}

/* ============================================================
   THE BATWINGS - scroll-driven entry to the saloon
   Two slatted doors hinged at the outer edges. Scrolling pushes
   them open on a real hinge (rotateY in perspective), so the run
   section is revealed through the gap rather than faded in.
   ============================================================ */
.swing{position:relative;height:clamp(300px,52vh,560px);overflow:hidden;background:#12110d;
  display:grid;place-items:center}
/* Warm light spilling from inside, so there is something to open onto. */
.swing:before{content:'';position:absolute;inset:0;
  background:radial-gradient(ellipse 62% 76% at 50% 62%,#c8913f3d,transparent 68%),
             linear-gradient(#0c0b08,#181509 62%,#0c0b08)}
.swing-stage{position:absolute;inset:0;perspective:1500px;perspective-origin:50% 52%;
  display:flex;transform-style:preserve-3d}
.door{position:relative;flex:1 1 50%;height:100%;background:
  linear-gradient(#6b4a29,#4a3219 46%,#3a2613);
  box-shadow:inset 0 0 44px #00000080;will-change:transform;
  display:flex;flex-direction:column;justify-content:center;gap:clamp(8px,1.6vh,16px);
  padding:clamp(20px,5vh,54px) 0}
.door-l{transform-origin:left center;border-right:2px solid #221708}
.door-r{transform-origin:right center;border-left:2px solid #221708}
/* Horizontal planks, with the gaps between them catching the light. */
.slat{display:block;height:clamp(16px,3.4vh,34px);flex:none;
  background:linear-gradient(#7a552f,#573a1d 52%,#422c14);
  box-shadow:0 1px 0 #00000073,inset 0 1px 0 #ffffff14}
.hinge{position:absolute;width:13px;height:30px;background:linear-gradient(#8d7a5a,#4a3f2c);
  box-shadow:0 1px 3px #000000a6;border-radius:2px}
.hinge-t{top:18%}
.hinge-b{bottom:18%}
.door-l .hinge{left:-4px}
.door-r .hinge{right:-4px}

/* Default is OPEN, so the section is never gated on the animation. */
.door-l{transform:rotateY(-104deg)}
.door-r{transform:rotateY(104deg)}
/* The scroll-driven animation below supplies the closed→open travel. */

@media(prefers-reduced-motion:reduce){
  .swing{height:clamp(300px,52vh,560px)}
  .door-l,.door-r{transform:rotateY(-104deg)}
}

/* ============================================================
   THE SIGN-OFF - the letter finishes itself
   The body writes on as you scroll, then the signature is stroked
   in, an ink blot lands beside it, and a wax seal presses into the paper.
   ============================================================ */
/* Static defaults are the completed letter, including the stamped wax. */
.sign-off{position:relative;display:flex;align-items:center;gap:20px;width:max-content;max-width:100%;min-height:92px;margin:30px 0 8px;color:#30291e}
.sig-text{display:block;width:clamp(250px,26vw,365px);height:auto;overflow:visible;flex:0 1 auto;transform:rotate(-3deg)}
.sig-text path{fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:100;stroke-dashoffset:0}
.sig-text path:nth-child(3n){stroke-width:2}.sig-text path:last-child{stroke-width:1.3}
.blot{position:absolute;right:99px;bottom:0;width:17px;height:14px;background:#292519;border-radius:39% 61% 52% 48%;opacity:1}
.blot:before,.blot:after{content:'';position:absolute;background:#292519;border-radius:50%;width:5px;height:4px;left:-9px;top:4px}.blot:after{left:22px;top:-5px;width:3px}
.seal{position:relative;flex:none;display:grid;place-items:center;width:80px;height:82px;background:url('/assets/cassidy-wax.svg') center/contain no-repeat;filter:drop-shadow(1px 4px 2px #33261965);transform:rotate(-9deg);opacity:1}
.seal-mark{font:700 18px/1 Georgia,serif;letter-spacing:-1.5px;color:#581c15;text-shadow:0 1px 0 #d4775b,0 -1px 0 #3c120e;transform:rotate(-2deg)}
.sign-cap{display:block;margin-top:12px}
.swing:before{background:linear-gradient(#10120d30,#10120d50),url('/assets/room-photo-v3-1672.webp') center 56%/cover no-repeat}
.swing-stage{align-items:center;perspective:1100px}
.door{height:90%;flex:0 0 50%;background:repeating-linear-gradient(90deg,#38211025 0 2px,transparent 2px 9px),linear-gradient(100deg,#714c2e,#3d2516);gap:6px;box-shadow:inset 0 0 0 10px #49301d,inset 0 0 30px #130c0790,5px 4px 18px #0007}
.door-l{border-radius:7% 48% 4% 4% / 3% 20% 3% 3%;transform:rotateY(-96deg)}
.door-r{border-radius:48% 7% 4% 4% / 20% 3% 3% 3%;transform:rotateY(96deg)}
.slat{margin:0 20px;height:clamp(24px,5vh,46px);background:repeating-linear-gradient(0deg,#27150615 0 1px,transparent 1px 4px),linear-gradient(#815936,#664225 25%,#4d301a);border-top:1px solid #b2895355;border-bottom:2px solid #26180e}
.hinge{width:22px;height:42px;background:linear-gradient(90deg,#302b20,#a08b5b 35%,#49412d 65%,#211e16);border:1px solid #241f16;z-index:2}
@media(max-width:700px){.sign-off{gap:10px}.sig-text{width:calc(100% - 75px)}.blot{right:80px;bottom:5px;width:14px;height:12px}.seal{width:65px;height:68px}.seal-mark{font-size:16px}.swing{height:360px}.slat{margin:0 12px}}
@media(prefers-reduced-motion:reduce){.sig-text{clip-path:none}.manifest-row.armed>.hole{opacity:1}.door-l{transform:rotateY(-96deg)}.door-r{transform:rotateY(96deg)}}

/* Torn fibres surround a dark aperture, rather than a solid star-shaped mark. */
.hole:before{opacity:.7;mask:radial-gradient(circle,transparent 0 42%,#000 46%)}
.hole:after{content:'';position:absolute;inset:4px;border-radius:46% 54% 39% 61% / 54% 42% 58% 46%;background:radial-gradient(ellipse at 38% 30%,#060805,#15120b 70%,#382817);box-shadow:inset 1px 2px 2px #000,0 1px 0 #e9d39f,0 0 2px 2px #5d4329}
.door-l{transform:rotateY(104deg)}.door-r{transform:rotateY(-104deg)}
@media(prefers-reduced-motion:reduce){.door-l{transform:rotateY(104deg)}.door-r{transform:rotateY(-104deg)}}

/* Worn joinery: irregular grain, inset louvers, end grain and iron straps. */
.door{background:linear-gradient(90deg,#100c0980,transparent 9%,#d4a36520 45%,#100b0860),url('/assets/saloon-wood.svg') center/430px 620px;border:3px solid #352316;box-shadow:inset 0 0 0 5px #93633b55,inset 0 0 0 12px #291b12a0,inset 0 0 35px #120b08aa,8px 9px 18px #0009;transform-style:flat}
.door:before{content:'';position:absolute;inset:12px;border:1px solid #d1a37245;border-radius:inherit;box-shadow:inset 0 0 14px #09070480;pointer-events:none}
.door:after{content:'';position:absolute;top:18%;bottom:4%;width:13px;background:linear-gradient(90deg,#130e0a,#76502d 35%,#2c1d13);box-shadow:2px 0 3px #0007;transform:rotateY(90deg);transform-origin:left center}
.door-l:after{right:-13px}.door-r:after{left:0}
.slat{position:relative;margin:0 30px;background:linear-gradient(#d5a77140,#140d08a0 16%,transparent 25%,#0c08066b 95%),url('/assets/saloon-louver.svg') 30% 40%/740px 180px;border-top:2px solid #b386534d;border-bottom:3px solid #1d130b;box-shadow:0 5px 5px #090603a0,inset 0 -2px 0 #986c3c50;transform:none}
.slat:nth-child(2){background-position:0 0,70% 65%}.slat:nth-child(3){background-position:0 0,25% 90%}.slat:nth-child(4){background-position:0 0,90% 30%}.slat:nth-child(5){background-position:0 0,40% 15%}
.hinge{width:64px;height:27px;background:linear-gradient(#99805c,#403c31 14%,#262722 65%,#706653);border:1px solid #171812;border-radius:3px 35% 35% 3px;box-shadow:0 3px 3px #0c080bbb,inset 0 1px #c0a97b70}
.hinge:before{content:'';position:absolute;left:5px;top:-9px;width:12px;height:43px;border-radius:4px;background:linear-gradient(90deg,#29291f,#a4946b 40%,#4e4938 65%,#171a15);box-shadow:2px 1px 2px #0008}
.hinge:after{content:'';position:absolute;right:9px;top:9px;width:6px;height:6px;border-radius:50%;background:#151811;box-shadow:0 1px 0 #baac82,-20px 0 0 #191b16,-20px 1px 0 #aa956b}
.door-r .hinge{transform:scaleX(-1)}
@media(max-width:700px){.sign-off{width:100%}.slat{margin:0 18px}.hinge{width:43px}.hinge:after{right:6px}}

/* The whole opening invitation fits the desktop viewport, including its footer. */
@media(min-width:901px){
 body>header{height:90px}
 .hero{min-height:calc(100svh - 90px);padding-bottom:0}
 .hero-copy{padding:clamp(18px,3svh,38px) 7% 80px;max-width:68%}
 .hero h1{font-size:clamp(64px,min(9vw,14svh),150px);margin-bottom:18px}
 .hero-copy .eyebrow{margin-bottom:14px}
 .hero-copy p{font-size:clamp(16px,2.3svh,22px);line-height:1.45;margin-bottom:18px}
 .hero-foot{margin-top:12px;font-size:8px}
 .weather-note{bottom:110px;right:7%;padding:clamp(18px,2.5svh,28px)}
 .weather-note strong{font-size:clamp(22px,3.4svh,30px)}
 .scroll-note{bottom:24px}
}

/* A revolver cylinder on the saloon's dark counter. The answers exist in HTML. */
.cylinder-faq{background:radial-gradient(ellipse at 22% 55%,#49341f50,transparent 55%),#181a16}
.faq-heading{max-width:950px;margin-bottom:26px}
.faq-heading h2{font-size:clamp(48px,5.6vw,80px);margin-bottom:20px}
.faq-heading>p{color:#c4bba6;font-size:17px;margin-bottom:0}
.cylinder-layout{max-width:1240px}
.cylinder-ready .cylinder-layout{display:grid;grid-template-columns:minmax(310px,.9fr) minmax(0,1.1fr);gap:clamp(36px,6vw,95px);align-items:center}
.cylinder-controls{--drum:300px;--round:62px;padding-top:100px;position:relative;justify-self:center}
.cylinder-controls[hidden],.cylinder-index[hidden],.cylinder-answer[hidden]{display:none}
.chalk-cue{position:absolute;top:0;right:-30px;width:245px;height:115px;transform:rotate(-5deg);color:#e6dfcb;pointer-events:none}
.chalk-cue span{display:block;font:22px/1.25 'Bradley Hand','Segoe Print','Comic Sans MS',cursive;text-align:center;text-shadow:1px 0 #e6dfcb40}
.chalk-cue svg{position:absolute;left:-68px;top:33px;width:142px;height:79px;transform:rotate(-12deg)}
.chalk-cue path{fill:none;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:100;stroke-dashoffset:0;opacity:.86}
.cylinder-frame{position:relative;width:calc(var(--drum) + 44px);height:calc(var(--drum) + 44px);display:grid;place-items:center;border-radius:50%;background:radial-gradient(circle at 40% 25%,#393a37,#080a09 75%);box-shadow:0 24px 35px -15px #000,inset 0 2px 1px #b5b8ab40,0 0 0 1px #060806}
.cylinder-frame:after{content:'';position:absolute;inset:-11px;border:1px solid #aa937831;border-radius:50%;pointer-events:none}
.cylinder-pin{position:absolute;z-index:2;top:-11px;left:calc(50% - 10px);height:34px;width:20px;clip-path:polygon(0 0,100% 0,100% 56%,50% 100%,0 56%);background:linear-gradient(90deg,#6d501e,#e5c17a 40%,#8e682d 85%);filter:drop-shadow(0 3px 3px #000)}
.cylinder-drum{position:relative;width:var(--drum);height:var(--drum);border-radius:50%;background:repeating-conic-gradient(from 25deg,#ffffff03 0 2deg,transparent 2deg 10deg),radial-gradient(circle at 38% 30%,#74756f,#383c38 48%,#101412 85%);box-shadow:inset 0 0 0 5px #141814,inset 0 0 0 7px #696c60,inset 0 0 0 9px #1a1e19,inset 0 0 35px #000c}
.cylinder-drum:before{content:'';position:absolute;inset:18%;border-radius:50%;border:1px solid #0c100bb3;box-shadow:0 1px 0 #f1e7cc18}
.cylinder-drum:after{content:'';position:absolute;left:calc(50% - 19px);top:calc(50% - 19px);width:38px;height:38px;border-radius:50%;background:linear-gradient(115deg,transparent 45%,#1b2119 46% 51%,transparent 52%),radial-gradient(circle at 35% 30%,#a2a395,#41463e 55%,#161b15);border:2px solid #252b23;box-shadow:0 3px 6px #000}
.cylinder-round,.cylinder-empty{position:absolute;left:50%;top:50%;width:var(--round);height:var(--round);margin:calc(var(--round)/-2);padding:0;border-radius:50%;border:0;transform:rotate(var(--angle)) translateY(calc(var(--drum)/-2 + var(--round)*.88)) rotate(calc(-1*var(--angle)));background:radial-gradient(circle at 35% 30%,#e5cb8d,#b08a43 48%,#5e461d 83%,#34250f);box-shadow:inset 0 0 0 1px #402e10,inset 0 -4px 6px #0008,inset 0 3px 5px #fff5,0 0 0 5px #070906,0 0 0 6px #696c6240;color:#35230c;cursor:pointer}
.round-0{--angle:0deg}.round-1{--angle:60deg}.round-2{--angle:120deg}.round-3{--angle:180deg}.round-4{--angle:240deg}
.cylinder-empty{--angle:300deg;background:radial-gradient(circle,#030504 45%,#151a15 64%,#000);box-shadow:inset 0 4px 7px #000,0 1px 0 #8a8d7155;cursor:default}
.cylinder-round:before{content:'';position:absolute;inset:8px;border-radius:50%;border:1px solid #6044179c;box-shadow:0 1px 0 #fbe5aa70}
.cylinder-round[aria-selected="true"]{box-shadow:inset 0 0 0 1px #402e10,inset 0 -4px 6px #0008,inset 0 3px 5px #fff5,0 0 0 5px #080a07,0 0 0 7px #e4be71,0 0 22px #d8a95c66}
.cylinder-round:hover{filter:brightness(1.15)}
.cylinder-round:focus-visible{outline:3px solid #fff0c6;outline-offset:8px}
.round-number{display:grid;place-items:center;position:absolute;inset:0;font:700 19px/1 Georgia,serif;text-shadow:0 1px #ffeec480}
.cylinder-caption{text-align:center;font:9px/1.6 monospace;letter-spacing:2px;margin:30px 0 7px;color:#bfb297}
.cylinder-keyboard{text-align:center;font:11px/1.5 monospace;color:#b2aa96;margin:0}
.cylinder-reading{min-width:0;padding-top:50px}
.cylinder-index{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:30px}
.cylinder-index button{border:1px solid #9b835850;background:#25251b70;color:#d2c6aa;padding:10px 12px;min-height:44px;font:10px/1.3 monospace;letter-spacing:.6px;text-transform:uppercase;text-align:left}
.cylinder-index b{color:#d5b579;margin-right:9px}
.cylinder-index [aria-pressed="true"]{border-color:#d6b477;background:#cba25a1c;color:#f5e8c7}
.cylinder-answer{border-top:1px solid #bea37266;padding:28px 0 14px;margin-bottom:20px}
.cylinder-ready .cylinder-answers{min-height:325px}
.answer-number{font:10px/1.5 monospace;letter-spacing:2px;color:#cead70}
.cylinder-answer h3{font:400 clamp(26px,2.5vw,36px)/1.2 Playfair,Georgia,serif;margin:20px 0 20px;color:#f2e8ce;max-width:25ch}
.cylinder-answer p{font-size:17px;line-height:1.75;color:#d8ceba;max-width:53ch}
.cylinder-answer a{color:#e4be78;text-underline-offset:4px}
.answer-signature{display:block;font:italic 15px/1.5 Playfair,Georgia,serif;color:#b9a782;margin-top:24px}
@media(max-width:900px){.cylinder-ready .cylinder-layout{grid-template-columns:1fr;gap:20px}.cylinder-reading{padding-top:8px}.cylinder-ready .cylinder-answers{min-height:330px}.faq-heading h2{font-size:clamp(46px,8vw,70px)}}
@media(max-width:500px){
 .cylinder-faq{padding:34px 18px 82px}
 .faq-heading{margin-bottom:12px}
 .faq-heading .eyebrow{margin-bottom:9px;font-size:8px;letter-spacing:1.4px}
 .faq-heading h2{font-size:clamp(39px,12vw,48px);line-height:.9;margin-bottom:10px}
 .faq-heading>p{max-width:31ch;font-size:14px;line-height:1.45}
 .cylinder-ready .cylinder-layout{display:grid;grid-template-columns:minmax(0,1fr) 112px;gap:8px 7px;align-items:start;width:100%}
 .cylinder-reading{display:contents}
 .cylinder-controls{--drum:174px;--round:42px;grid-column:1;grid-row:1;padding-top:62px;justify-self:start;min-width:0}
 .cylinder-frame{width:calc(var(--drum) + 32px);height:calc(var(--drum) + 32px)}
 .cylinder-frame:after{inset:-6px}
 .cylinder-pin{top:-8px;height:28px;width:16px;left:calc(50% - 8px)}
 .chalk-cue{right:-5px;top:2px;width:151px;height:61px;transform:rotate(-4deg)}
 .chalk-cue span{font-size:17px;line-height:1.08;text-align:right}
 .chalk-cue svg{left:-8px;top:17px;width:82px;height:56px;transform:rotate(-11deg)}
 .cylinder-round:before{inset:6px}
 .round-number{font-size:15px}
 .cylinder-caption{display:none}
 .cylinder-keyboard{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
 .cylinder-index{grid-column:2;grid-row:1;display:grid;grid-template-columns:1fr;gap:5px;margin:62px 0 0;align-self:start}
 .cylinder-index button{width:100%;min-height:44px;padding:5px 7px;font-size:8px;line-height:1.2;letter-spacing:.25px}
 .cylinder-index b{display:block;margin:0 0 2px;font-size:10px}
 .cylinder-answers{grid-column:1/-1;grid-row:2;min-width:0}
 .cylinder-ready .cylinder-answers{min-height:0}
 .cylinder-answer{margin:0;padding:15px 0 0}
 .answer-number{font-size:8px;letter-spacing:1.4px}
 .cylinder-answer h3{font-size:clamp(23px,7.5vw,29px);line-height:1.1;margin:9px 0 10px}
 .cylinder-answer p{font-size:15px;line-height:1.52;margin-bottom:10px}
 .answer-signature{font-size:13px;margin-top:11px}
}
@media(max-width:350px){
 .cylinder-faq{padding-inline:14px}
 .cylinder-ready .cylinder-layout{grid-template-columns:minmax(0,1fr) 104px;gap:5px}
 .cylinder-controls{--drum:158px;--round:40px}
 .cylinder-index button{padding-inline:5px;font-size:7.5px}
}

/* Dark lettering and hand-drawn charcoal rules on the freight paper. */
.manifest-row,.manifest-row.entered{color:#2b2418;border-bottom:0}
.manifest-row strong{color:#241d12;font-weight:700;letter-spacing:-.02em}
.manifest-row>span:first-child{color:#47351d;font-weight:700;letter-spacing:.6px}
.manifest-underline{position:absolute;left:0;bottom:5px;width:8.4em;height:18px;overflow:visible;pointer-events:none;mix-blend-mode:multiply}
.manifest-row:nth-of-type(3) .manifest-underline{width:12.2em}
.manifest-row:nth-of-type(4) .manifest-underline{width:12.8em}
.manifest-underline path{fill:none;stroke:#5b4630;stroke-width:7.2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:100;stroke-dashoffset:0;opacity:.94}

/* 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}

.cylinder-faq{color:#e9dfc7}.faq-heading .eyebrow{color:#d0b579}
.js .hero-copy,.js .weather-note,.js .scroll-note{transform:none}
.cylinder-drum:before,.cylinder-drum:after{pointer-events:none}
.cylinder-round{z-index:1}
.cylinder-round:active{transform:rotate(var(--angle)) translateY(calc(var(--drum)/-2 + var(--round)*.88)) rotate(calc(-1*var(--angle)))}

footer .gt-credit{grid-column:1 / -1;justify-self:center;white-space:nowrap}

.cylinder-answer{scroll-margin-top:28px}
@media(max-width:900px){.cylinder-reading{padding-bottom:32px}}

/* Road report entrance detail and post-impact smoke. */
.weather-rule{display:block;width:72%;height:1px;margin-top:4px;background:linear-gradient(90deg,#d2bb8c,transparent);transform-origin:left center}
.hole .smoke{position:absolute;z-index:4;left:50%;top:38%;width:1px;height:1px;pointer-events:none}
.hole .smoke i{position:absolute;left:0;top:0;width:17px;height:25px;border-radius:50%;background:radial-gradient(ellipse,#353630e6 0 18%,#55574ec9 38%,#686b5866 58%,transparent 76%);filter:blur(1px);opacity:0;clip-path:none;box-shadow:none}
.hole .smoke i:nth-child(2){width:14px;height:29px}.hole .smoke i:nth-child(3){width:19px;height:24px}

/* The cue reads as a note from Cassidy and lands on the chamber at twelve. */
.chalk-cue{top:2px;right:auto;left:72px;width:250px;height:112px;transform:rotate(-3deg)}
.chalk-cue span{font:italic 400 23px/1.12 Playfair,Georgia,serif;letter-spacing:.01em;text-align:center;transform:rotate(-2deg)}
.chalk-cue svg{left:40px;top:29px;width:130px;height:82px;transform:rotate(-5deg)}

/* A soft amber glow echoes the saloon lanterns behind the agency credit. */
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:-24px -20px;pointer-events:none;border-radius:50%;background:radial-gradient(ellipse at center,rgba(213,174,113,.2) 0%,rgba(184,139,73,.1) 35%,rgba(184,139,73,.025) 58%,transparent 74%);filter:blur(9px);opacity:.9;transition:opacity .25s ease}
footer .gt-credit:hover:before,footer .gt-credit:focus-visible:before{opacity:1}
footer .gt-credit:hover{background:transparent}

/* Fit the full interactive FAQ composition into a conventional desktop view. */
@media(min-width:901px){
 .cylinder-faq{padding-top:44px;padding-bottom:44px;min-height:min(100svh,900px)}
 .faq-heading{margin-bottom:10px;display:grid;grid-template-columns:1.05fr 1fr;column-gap:50px;align-items:end}
 .faq-heading .eyebrow{grid-column:1 / -1;margin-bottom:7px}
 .faq-heading h2{font-size:clamp(44px,4.4vw,64px);line-height:.9;margin:0}
 .faq-heading>p{margin:0 0 4px;font-size:15px}
 .cylinder-ready .cylinder-layout{grid-template-columns:minmax(290px,.76fr) minmax(0,1.24fr);gap:clamp(32px,5vw,72px)}
 .cylinder-controls{--drum:264px;--round:56px;padding-top:68px}
 .cylinder-frame{width:calc(var(--drum) + 36px);height:calc(var(--drum) + 36px)}
 .cylinder-reading{padding-top:2px}
 .cylinder-index{margin-bottom:12px;gap:6px}
 .cylinder-index button{min-height:38px;padding:7px 10px;font-size:9px}
 .cylinder-ready .cylinder-answers{min-height:225px}
 .cylinder-answer{padding:16px 0 4px;margin:0}
 .cylinder-answer h3{font-size:clamp(25px,2.2vw,32px);margin:10px 0}
 .cylinder-answer p{font-size:15px;line-height:1.5;margin-bottom:9px}
 .answer-signature{margin-top:10px}
 .cylinder-keyboard{margin-top:14px;font-size:9px}
 .chalk-cue{top:-4px;left:58px;transform:scale(.86) rotate(-3deg);transform-origin:left top}
}

@media(min-width:501px) and (max-width:900px){
 .chalk-cue{z-index:4;left:calc(50% - 125px);right:auto;top:2px;width:250px;height:128px;transform:rotate(-3deg)}
 .chalk-cue span{font-size:23px;line-height:1.12;text-align:center}
 .chalk-cue svg{left:48px;top:82px;width:150px;height:84px;transform:rotate(-7deg)}
}

@media(max-width:500px){
 .chalk-cue{right:-5px;left:auto;top:2px;width:151px;height:61px;transform:rotate(-4deg)}
 .chalk-cue span{font-size:17px;line-height:1.08;text-align:right}
 .chalk-cue svg{left:22px;top:17px;width:88px;height:56px;transform:rotate(-8deg)}
}

/* Preserve the full group composition in the photographic replacement. */
.run-photo{height:auto;min-height:0;max-height:none;aspect-ratio:5/3;top:10vh}
.run-photo img{display:block;object-position:center}
@media(max-width:600px){.run-photo{top:auto}}

/* Keep the entrance sign in-frame; its photograph must not drift behind the header. */
.hero-image,.js .hero-image{object-position:center top;transform:none;will-change:auto}
@media(min-width:601px){.hero{min-height:max(730px,56.28vw)}}

/* Fixed desktop opening: all information stays inside the visible viewport. */
@media(min-width:901px){
 body>header{height:90px}
 .hero{height:calc(100svh - 90px);min-height:0;max-height:calc(100svh - 90px)}
 .hero-copy{padding:clamp(14px,3svh,30px) 7% 64px}
 .hero h1{font-size:clamp(54px,min(8vw,12svh),130px);margin-bottom:16px}
 .hero-copy .eyebrow{margin-bottom:12px}
 .hero-foot{margin-top:10px}
 .weather-note{bottom:72px;padding:18px;transform:none}
 .weather-note strong{font-size:clamp(20px,3svh,28px);margin:10px 0}
 .scroll-note{bottom:18px}
 .hero-image{object-position:60% top}
}
/* Answers share one grid cell so changing tabs cannot shift the controls. */
.cylinder-ready .cylinder-answers{display:grid;align-items:start;overflow-anchor:none}
.cylinder-ready .cylinder-answer{grid-area:1/1}
.cylinder-ready .cylinder-answer[hidden]{display:block;visibility:hidden;pointer-events:none}
@media(max-width:900px){
 .faq-heading h2{font-size:clamp(42px,8vw,60px)}
 .faq-heading{margin-bottom:14px}
 .cylinder-controls{--drum:158px;--round:40px}
 .chalk-cue svg{top:45px;left:42px;width:65px;height:37px}
 .chalk-cue{height:82px}
}
@media(max-width:500px){
 .cylinder-controls{padding-top:76px}
 .cylinder-index{margin-top:76px;gap:4px}
 .cylinder-index button{min-height:40px}
 .chalk-cue{top:0;left:12px;right:auto;width:160px;transform:none}
 .chalk-cue span{text-align:center;font-size:16px;line-height:1.15;position:relative;z-index:2}
 .chalk-cue svg{top:43px;left:55px;width:58px;height:30px;transform:none}
}
@media(min-width:901px){body header{height:90px}}

.run-photo{overflow:hidden;isolation:isolate}
.run-photo img{position:absolute;inset:0;width:100%;height:100%}
.photo-caption{z-index:1;transform:none}
@media(min-width:901px){body header{height:90px;min-height:90px;padding-block:4px}}
/* The cocktail photograph is desktop-only; mobile moves directly into the copy. */
@media(max-width:600px){.run-photo{display:none}}
/* Mobile art direction: reserve the sign's area above the invitation. */
@media(max-width:600px){
 .hero{height:auto;min-height:720px;perspective:none}
 .hero-image,.js .hero-image{object-position:64% top;transform:none}
 .hero-shade,.js .hero-shade{transform:none;background:linear-gradient(180deg,rgba(15,22,18,.08) 0,rgba(15,22,18,.12) 145px,rgba(15,22,18,.78) 310px,#161914e8 100%)}
 .hero-copy,.js .hero-copy{transform:none;padding:180px 7% 100px;max-width:none}
 .hero-copy .eyebrow{font-size:8px;letter-spacing:1.3px;margin-bottom:14px}
 .hero h1{font-size:clamp(70px,22vw,94px);line-height:.92;margin-bottom:22px}
 .hero-copy p{font-size:16px;line-height:1.5;margin-bottom:18px}
 .hero-foot{font-size:8px;line-height:1.8;max-width:290px;margin-top:12px}
 .scroll-note,.js .scroll-note{transform:none;bottom:22px}
}
@media(max-width:600px){
 .hero-shade,.js .hero-shade{transform:none!important;animation:none!important}
}
/* A complete opening screen on phones, including the compact road report. */
@media(max-width:600px){
 header{height:70px;min-height:70px;padding-block:3px}
 header img{height:60px}
 .hero{height:calc(100svh - 70px);min-height:0;max-height:calc(100svh - 70px)}
 .hero-image{object-position:64% top}
 .hero-copy,.js .hero-copy{padding:clamp(110px,17svh,150px) 7% 0}
 .hero-copy .eyebrow{font-size:7px;margin-bottom:10px}
 .hero h1{font-size:clamp(48px,min(20vw,9.5svh),82px);line-height:.9;margin-bottom:14px}
 .hero-copy p{font-size:clamp(13px,1.9svh,16px);line-height:1.4;margin-bottom:10px}
 .hero-foot{font-size:7px;line-height:1.5;margin-top:8px;max-width:100%;letter-spacing:.65px}
 .weather-note,.js .weather-note{display:block;left:7%;right:7%;bottom:54px;padding:10px 13px;transform:none;box-shadow:none}
 .weather-note span{font-size:7px;letter-spacing:1.3px}
 .weather-note strong{font-size:18px;line-height:1.15;margin:5px 0}
 .weather-rule{display:none}
 .scroll-note{bottom:14px;font-size:7px;padding-top:10px;min-height:30px}
}
@media(max-width:600px) and (max-height:700px){
 .hero-copy,.js .hero-copy{padding-top:100px}
 .hero h1{font-size:min(18vw,8.5svh);margin-bottom:10px}
 .weather-note,.js .weather-note{padding:7px 11px;bottom:48px}
 .weather-note strong{font-size:16px}
 .weather-note span:last-of-type{display:none}
}
@media(max-width:600px) and (max-height:700px){.weather-note,.js .weather-note{bottom:60px}}
/* Centre the mobile road report and keep its message neatly wrapped. */
@media(max-width:600px){
 .weather-note,.js .weather-note{left:0;right:0;margin-inline:auto;width:min(82%,300px);transform:none;text-align:center}
 .weather-note strong{max-width:18ch;margin:5px auto;text-wrap:balance}
}

/* Bounded parallax with overscan; the card and captions remain fixed. */
.hero .hero-image,.js .hero .hero-image{inset:-40px -16px; width:calc(100% + 32px);height:calc(100% + 80px);animation:none!important;transform:none;will-change:transform}
@media(max-width:600px){.hero .hero-image,.js .hero .hero-image{inset:-64px -8px;width:calc(100% + 16px);height:calc(100% + 128px)}}
@media(min-width:601px){.run-photo img{inset:-16px 0;width:100%;height:calc(100% + 32px)}}

/* Transparent masthead keeps the photograph continuous to the top edge. */
body>.landing-header{position:absolute;inset:0 0 auto;z-index:8;display:grid;grid-template-columns:1fr auto 1fr;height:90px;min-height:90px;background:linear-gradient(#10181066,#10181016);border-bottom:1px solid #e9dfc738;padding:5px 5%}
.landing-header>a:first-child{grid-column:2;grid-row:1;justify-self:center}
.landing-header .header-note{grid-column:1;grid-row:1;justify-self:start}
.landing-header .nav-cta{grid-column:3;grid-row:1;justify-self:end}
body:has(>.landing-header) .hero{height:100svh;min-height:740px;max-height:none}
.landing-header+main .hero-copy{padding-top:120px}
/* Supplied photographic batwings: alpha removes the backdrop and floor.
   Each leaf uses one half of the same sprite and pivots at its iron hinges. */
/* Compensate for the sprite's unequal transparent side margins so both
   hinge axes remain on the viewport edges throughout the swing. */
.swing .swing-stage{inset:0 -3.733333% 0 -2.933333%;perspective:1400px;align-items:center}
.swing .door{height:auto;aspect-ratio:1.5;flex:0 0 50%;padding:0;border:0;border-radius:0;box-shadow:none;display:block;background-image:url('/assets/saloon-doors-cutout.png');background-size:200% 100%;background-repeat:no-repeat;filter:drop-shadow(0 8px 7px #0006);transform-style:flat}
.swing .door-l{background-position:left center;transform-origin:5.5% 50%}
.swing .door-r{background-position:right center;transform-origin:93% 50%}
.swing .door:before,.swing .door:after,.swing .slat,.swing .hinge{display:none}
/* Match the full sprite height on wide screens instead of clipping it to vh. */
@media(min-width:701px){.swing{height:calc(35.555556vw + 24px)}}
@media(max-width:700px){.swing{height:clamp(180px,38vw,270px)}}
.swing:before{display:none}
.swing-backdrop{position:absolute;inset:-100px 0;background:linear-gradient(#10120d30,#10120d50),url('/assets/room-photo-v3-1672.webp') center 56%/cover no-repeat;will-change:transform}
@media(min-width:901px){body:has(>.landing-header) .hero{min-height:650px}.landing-header+main .hero-copy{padding-top:110px}.hero h1{font-size:clamp(54px,min(8vw,10svh),112px)}}
@media(max-width:600px){
 body>.landing-header{height:78px;min-height:78px;padding:4px 5%}
 .landing-header>a:first-child{grid-column:1;justify-self:start}
 .landing-header img{height:52px;width:90px}
 .landing-header .nav-cta{font-size:8px;max-width:82px;text-align:right}
 body:has(>.landing-header) .hero{height:100svh;min-height:700px}
 .landing-header+main .hero-copy,.js .landing-header+main .hero-copy{padding-top:clamp(130px,19svh,165px)}
 .weather-note,.js .weather-note{bottom:85px;width:min(82%,290px);padding:13px 16px;text-align:center}
 .weather-note strong{font-size:20px;line-height:1.28;max-width:19ch;margin:7px auto;text-wrap:balance}
 .weather-note span{display:block;line-height:1.5}
 .run-content{padding-top:76px}
}

/* Mobile cylinder: slim casing, spaced chambers and readable topic buttons. */
@media(max-width:500px){
 .cylinder-ready .cylinder-layout{grid-template-columns:minmax(0,1.12fr) minmax(0,1fr);gap:14px 12px}
 .cylinder-controls{--drum:clamp(140px,43vw,176px);--round:clamp(32px,9.6vw,38px);justify-self:center}
 .cylinder-frame{width:calc(var(--drum) + 6px);height:calc(var(--drum) + 6px)}
 .cylinder-frame:after{inset:-4px}
 .cylinder-drum{box-shadow:inset 0 0 0 2px #141814,inset 0 0 0 3px #696c60,inset 0 0 20px #0009}
 .cylinder-round,.cylinder-empty,.cylinder-round:active{transform:rotate(var(--angle)) translateY(calc(var(--drum)/-2 + var(--round)*.55)) rotate(calc(-1*var(--angle)))}
 .cylinder-drum:after{width:26px;height:26px;left:calc(50% - 15px);top:calc(50% - 15px)}
 .cylinder-index button{min-height:44px;padding:7px 8px;font-family:Georgia,serif;font-size:14px;font-weight:700;line-height:1.2;letter-spacing:0;color:#eee2c6}
 .cylinder-index b{display:inline;margin-right:6px;font-size:12px}
 .chalk-cue{left:50%;transform:translateX(-50%);width:160px}
}

/* Centre the mobile invitation vertically above the road report. */
@media(max-width:600px){
 .landing-header+main .hero-copy,.js .landing-header+main .hero-copy{position:absolute;top:100px;bottom:225px;left:0;right:0;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;padding:0 7%;max-width:none}
 .hero-copy .eyebrow{font-size:11px;font-weight:700;line-height:1.5;letter-spacing:1.4px;margin-bottom:15px}
 .hero-foot{font-size:11px;font-weight:700;line-height:1.6;letter-spacing:.7px;max-width:32ch;margin-top:12px}
 .hero-copy p{font-size:17px;line-height:1.45}
}

@media(max-width:500px){
 .cylinder-pin{top:-21px;height:25px;width:14px;left:calc(50% - 7px)}
 .chalk-cue svg{top:39px;left:calc(50% + 8px);width:58px;height:32px}
 .chalk-cue path{d:path('M150 8 C170 54 110 92 20 70 M36 59 L20 70 L37 81');stroke-width:3}
}
