/* Display face: URW Eurostile Extended Black (Mart's design face; Mart supplied the file on 2026-10-15), under the
   neutral family name UFDisplay: every rule names it through --uf-display or as UFDisplay, so changing the file is this
   one rule plus the preload in scripts/build.py. One static Black (900) file, declared at a single weight, so any
   font-weight a rule asks for renders this face and nothing is synthesised bold. scripts/display_font.py makes the
   served copy from fonts-src/ with Saira's line height (the layouts were tuned on it) and capitals centred: the font's
   own metrics put capitals about .17em above the middle of a line box, and Safari ignores CSS ascent-override
   (docs/DESIGN_SYSTEM.md, Typography). Saira (OFL) stays in fonts/saira/, unused, so going back is the same one rule. */
@font-face{font-family:UFDisplay;src:url('fonts/eurostile/eurostile-ext-black.woff2') format('woff2');font-weight:900;font-display:swap}
:root{--uf-navy:#001523;--uf-deep:#000c13;--uf-orange:#ff7d01;--uf-paper:#eceeed;--uf-white:#fffdfc;--uf-ink:#1e1e1e;--uf-display:UFDisplay,Helvetica,Arial,sans-serif;--uf-body:Helvetica,Arial,sans-serif;--navy:#001523;--orange:#ff7d01;--cream:#eceeed;--white:#fffdfc;--panel:#082230;--ink:#1e1e1e;--uf-width:1208px;--uf-gutter:24px;
  /* UF-18 (2026-10-03 audit): one button system. Picked display-face/uppercase/wipe-fill - the look three of the
     four prior systems (.mxbtn, .uf-bh-btn, .uf-home-button) already converged on independently, and the only
     one used on every page the audit named as mattering most: home, every facility page, Melissa, both
     microsites. ".btn" (the editorial family, the largest single count by raw instances) now aliases to the
     same tokens below. See "Button decision" in docs/changes/2026-10-03-audit-fixes.md. */
  --uf-btn-ease:cubic-bezier(.22,1,.36,1);--uf-btn-h:56px;--uf-btn-h-sm:44px;--uf-btn-pad-x:28px;--uf-btn-pad-x-sm:18px}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:104px}
body.uf-site{margin:0;background:var(--uf-navy);color:var(--uf-white);font-family:var(--uf-body);font-size:18px;line-height:1.5;letter-spacing:.01em;overflow-x:visible}
img,video{max-width:100%}
img{height:auto}
button,input,select,textarea{font-family:var(--uf-body);border-radius:0}
button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}
a{color:inherit}
button{cursor:pointer}
[hidden],.uf-source-chrome,.mnavbtn,.mdrawer,.notebar{display:none!important}
:focus-visible{outline:3px solid var(--uf-orange);outline-offset:5px}
h1,h2,h3,h4,.uf-eyebrow,.kick,.kicker,.eyebrow,.k,.tagf,.btn,.num{font-family:var(--uf-display);font-synthesis:none;font-weight:400;text-transform:uppercase;letter-spacing:0}
h1{font-size:clamp(34px,3.5vw,52px);line-height:1.05}
h2{font-size:clamp(28px,2.6vw,40px);line-height:1.1}
h3{font-size:clamp(21px,1.8vw,28px);line-height:1.15}
p{line-height:1.5}
.uf-shell,.uf-site main .wrap{width:100%;max-width:calc(var(--uf-width) + var(--uf-gutter)*2);margin-inline:auto;padding-inline:var(--uf-gutter)}
.uf-site main{min-width:0}
.uf-site main .wrap .wrap{padding-inline:0}
.uf-site .cols,.uf-site .grid{min-width:0}
.uf-site .cols>*{min-width:0}
.uf-site .o,.uf-site .orange{color:var(--uf-orange)}
.uf-site .kick,.uf-site .kicker,.uf-eyebrow{font-size:13px;line-height:1.4;letter-spacing:.1em;color:var(--uf-orange)}
/* UF-18 (2026-10-03 audit): the one shared button system - primary (filled), secondary/"-light" (white
   fill), ghost ("-line"/"-outline"/"-ghost", for dark backgrounds), one small variant for cramped contexts
   (table rows, the footer's inline controls). .btn, .mxbtn, .uf-bh-btn and .uf-home-button are the four
   pre-existing per-family names; they now share one look, so a Mart veto is a token edit here, not a
   40-page pass. Each still carries its own fill-color custom properties where a family needed more than
   two colors (mxbtn/uf-bh-btn's --mx-btn-bg etc., set in facility-premium.css/bay-hero.css); this rule owns
   the font, case, height, radius, wipe-fill motion and focus ring every one of them now shares. */
/* Sizing stays a low-specificity default on purpose: a page's own contextual rule (a full-width card
   button, a centered hero CTA's min-width, the Shop Talk panel's taller button with its own approved
   diagonal cut - design/DESIGN_CONTINUITY_REVIEW.md revision 6) keeps winning without a token override. */
.btn,.uf-button,.mxbtn,.uf-bh-btn,.uf-home-button,.uf-footer-request{min-height:var(--uf-btn-h);padding:0 var(--uf-btn-pad-x)}
/* UF-18/UF-19 (2026-10-03 audit, round 2): white-space:normal, not nowrap - this round's shared
   letter-spacing widens longer labels ("Every leasing question, answered") enough that nowrap
   clipped them off narrow viewports instead of wrapping (the same fix bay-hero.css's mobile
   breakpoint already carried for its own long labels; now the default everywhere). */
:is(.uf-site .btn,.uf-button,.mxbtn,.uf-bh-btn,.uf-home-button,.uf-footer-request){position:relative;isolation:isolate;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;gap:12px;border:1px solid transparent;border-radius:0;background:var(--uf-orange);color:var(--uf-navy);font:400 14px/1.2 var(--uf-display);letter-spacing:.1em;text-transform:uppercase;text-decoration:none;text-align:center;white-space:normal;cursor:pointer;clip-path:none;box-shadow:none;transition:color .45s var(--uf-btn-ease),border-color .55s var(--uf-btn-ease),background-color .45s var(--uf-btn-ease),transform .16s ease-out}
:is(.uf-site .btn,.uf-button,.mxbtn,.uf-bh-btn,.uf-home-button,.uf-footer-request)::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--uf-white);transform:translateX(-102%);transition:transform .65s var(--uf-btn-ease);pointer-events:none}
:is(.uf-site .btn,.uf-button,.mxbtn,.uf-bh-btn,.uf-home-button,.uf-footer-request)>span:not([aria-hidden]),:is(.uf-site .btn,.uf-button,.mxbtn,.uf-bh-btn,.uf-home-button,.uf-footer-request)>b{position:relative;z-index:1}
/* A button's arrow never gives way when its row is short of room: it shrank to 8px or to nothing on the use-page
   heroes, where two buttons share a 500px row (Saqib, 2026-10-12). */
:is(.uf-site .btn,.uf-button,.mxbtn,.uf-bh-btn,.uf-home-button,.uf-footer-request) :is(span[aria-hidden=true],.arr){position:relative;z-index:1;flex:none;transition:transform .4s var(--uf-btn-ease)}
@media (hover:hover) and (pointer:fine){
  :is(.uf-site .btn,.uf-button,.mxbtn,.uf-bh-btn,.uf-home-button,.uf-footer-request):hover::before{transform:none}
  :is(.uf-site .btn,.uf-button,.mxbtn,.uf-bh-btn,.uf-home-button,.uf-footer-request):hover{color:var(--uf-navy);border-color:var(--uf-white)}
  :is(.uf-site .btn,.uf-button,.mxbtn,.uf-bh-btn,.uf-home-button,.uf-footer-request):hover :is(span[aria-hidden=true],.arr){transform:translate(4px,-3px)}
}
:is(.uf-site .btn,.uf-button,.mxbtn,.uf-bh-btn,.uf-home-button,.uf-footer-request):focus-visible::before{transform:none}
:is(.uf-site .btn,.uf-button,.mxbtn,.uf-bh-btn,.uf-home-button,.uf-footer-request):focus-visible{color:var(--uf-navy);outline:2px solid var(--uf-orange);outline-offset:3px}
:is(.uf-site .btn,.uf-button,.mxbtn,.uf-bh-btn,.uf-home-button,.uf-footer-request):active{transform:scale(.98)}
@media (prefers-reduced-motion:reduce){
  :is(.uf-site .btn,.uf-button,.mxbtn,.uf-bh-btn,.uf-home-button,.uf-footer-request),:is(.uf-site .btn,.uf-button,.mxbtn,.uf-bh-btn,.uf-home-button,.uf-footer-request)::before,:is(.uf-site .btn,.uf-button,.mxbtn,.uf-bh-btn,.uf-home-button,.uf-footer-request) :is(span[aria-hidden=true],.arr){transition:none}
  :is(.uf-site .btn,.uf-button,.mxbtn,.uf-bh-btn,.uf-home-button,.uf-footer-request):active{transform:none}
}
/* Ghost-on-dark: transparent fill, white border, same wipe/focus/height. */
:is(.uf-site .btn-line,.uf-site .btn-outline,.uf-site .btn-ghost,.mxbtn-ghost,.uf-bh-btn-ghost){color:var(--uf-white);background:transparent;border-color:rgba(255,255,255,.45)}
/* Secondary: white fill, navy text, same everything else. */
:is(.uf-site .btn-white,.uf-site .btn-light,.mxbtn-light,.uf-bh-btn-light,.uf-home-button-light){background:var(--uf-white);color:var(--uf-navy)}
:is(.uf-site .btn-white,.uf-site .btn-light,.mxbtn-light,.uf-bh-btn-light,.uf-home-button-light)::before{background:var(--uf-orange)}
:is(.uf-site .btn-white,.uf-site .btn-light,.mxbtn-light,.uf-bh-btn-light,.uf-home-button-light):hover,:is(.uf-site .btn-white,.uf-site .btn-light,.mxbtn-light,.uf-bh-btn-light,.uf-home-button-light):focus-visible{color:var(--uf-navy)}
/* Small/inline: the one extra size tier, for a table row or a tight inline control. Still above the 44px floor. */
:is(.uf-site .btn-sm,.mxbtn-sm,.uf-bh-btn-sm){min-height:var(--uf-btn-h-sm);padding:0 var(--uf-btn-pad-x-sm);font-size:12px}
.uf-site .btns{gap:14px;display:flex;flex-wrap:wrap}
.uf-header{position:relative;z-index:100;background:#01141e;border-bottom:1px solid #ffffff0b}
.uf-header-inner{min-height:98px;display:flex;align-items:center;justify-content:space-between;gap:28px}
/* UF-19 (2026-10-03 audit): min-height:44px is the tap target; the logo image itself is unchanged. */
.uf-logo{display:flex;align-items:center;flex:none;width:191px;min-height:44px}
.uf-logo img{display:block;width:100%;height:auto}
.uf-nav{display:flex;align-items:center;gap:22px}
.uf-nav>a{font:700 14px/1.3 var(--uf-body);white-space:nowrap;text-decoration:none;color:#fff}
.uf-nav>a:hover,.uf-nav>a[aria-current=page]{color:var(--uf-orange)}
.uf-nav>a.uf-button{color:var(--uf-navy);font-size:13px;padding:13px 21px}
.uf-menu-toggle{display:none;border:0;background:none;width:48px;height:48px;padding:10px}
.uf-menu-toggle span{display:block;height:2px;background:white;margin:6px 0;transition:transform .2s}
.uf-reference{background:#0b2635;border-bottom:1px solid #294653;color:#c3d0d7;font:12px/1.5 var(--uf-body);padding:10px max(var(--uf-gutter),calc((100vw - var(--uf-width))/2));}
.uf-reference a{color:#ffb165;margin-left:8px;white-space:nowrap;text-underline-offset:3px}
.uf-skip{position:absolute;z-index:999;left:16px;top:-100px;background:var(--uf-orange);color:var(--uf-navy);padding:12px}
.uf-skip:focus{top:12px}
.uf-visually-hidden{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
/* micro-bay, small-bay, shallow-bay never break at their hyphen (Rick's Loom 2026-10-13; scripts/text_rules.py keep_bay_terms_whole). */
.uf-nobr{white-space:nowrap}
/* Links and buttons keep their words in one run (the admin edits a link label only as one run), so their short labels
   balance their lines instead: "Explore" over "Small-Bay", never "Explore Small-" over "Bay" (as the park FAQs do). */
.uf-home-ways a[href="bay-small.html"] .uf-way-label,.uf-bh-btn>span,.uf-bay-explore,.uf-site button.q h3{text-wrap:balance}

/* Mart's split product hero is the common detail-page structure. */
.uf-site main>.hero,.uf-site main>.phero,.uf-site main>.chero,.uf-site main>.fhero,.uf-site main>.ahero,.uf-site main>.mhead{position:relative;min-height:0;height:auto;padding:82px 0 88px;margin:0;background-color:var(--uf-deep);overflow:clip}
.uf-site main>.hero .wrap,.uf-site main>.phero .wrap,.uf-site main>.ahero .wrap{position:relative;z-index:2}
.uf-site main>.hero h1,.uf-site main>.phero h1,.uf-site main>.ahero h1,.uf-site main>.chero h1,.uf-site main>.fhero h1{margin:20px 0 25px;font-size:clamp(34px,3.5vw,50px);line-height:1.1;max-width:24ch}
.uf-site main>.hero .sub,.uf-site main>.hero .addr,.uf-site .phero .dek,.uf-site .ahero .dek{font-size:18px;line-height:1.5;max-width:62ch;margin-bottom:28px}
.uf-site main>.hero .cols,.uf-site main>.phero .cols{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.2fr);align-items:center;gap:64px}
.uf-site .hframe,.uf-site .hfr{position:relative;aspect-ratio:1.5;height:auto;min-height:0;border:1px solid #536a79;clip-path:none;border-radius:0;background:#082230;overflow:hidden}
.uf-site .hframe img,.uf-site .hframe video,.uf-site .hfr img,.uf-site .hfr video{display:block;width:100%;height:100%;object-fit:cover}
.uf-site .hframe .cap,.uf-site .hfr .cap{position:absolute;inset:auto 0 0;padding:11px 14px;background:#001523d9;color:#e5e8e9;font:11px/1.4 var(--uf-body)}
/* No verified park photo yet: Mart's navy X plate with a centred label, never another property. */
.uf-site :is(.hframe,.hfr).is-pending .cap{inset:0;display:grid;place-items:center;padding:24px;background:none;color:#c4d2d9;font:13px/1.4 var(--uf-display);text-transform:uppercase;letter-spacing:.14em;text-align:center}
.uf-site .spec-chips,.uf-site .chips{display:flex;flex-wrap:wrap;gap:8px;margin:22px 0}
.uf-site .spec-chips span,.uf-site .chips span{padding:7px 10px;border:1px solid #36515f;background:#082230;color:#dce3e7;font:12px/1.3 var(--uf-body);border-radius:0}
.uf-site .hero .xmk,.uf-site .phero .xbg,.uf-site .ahero .xbg{pointer-events:none;opacity:.45}
.uf-site .baseline{height:1px;background:#254353}
.uf-site .crumb,.uf-site .track{position:static;margin:0;font-size:12px;padding:12px max(var(--uf-gutter),calc((100vw - var(--uf-width))/2));}
/* UF-19 (2026-10-03 audit): the breadcrumb link text is 12px/1, well under a 44px tap target; the invisible
   padding expands the hit area without pushing the breadcrumb bar's own height or visible layout around it. */
.uf-site .crumb a{display:inline-block;padding:16px 8px;margin:-16px -8px}
/* UF-21 (2026-10-03 audit): one breadcrumb style, not two. 37 of 39 per-page stylesheets (content/styles/*.css,
   loaded in @layer source, so this unlayered rule already beats them) carried an identical tracked-uppercase
   display-face .crumb .wrap at 10px - under UF-19's 12px floor too - while the facility hero breadcrumb and the
   editorial .crumbs both already use plain sentence case. This brings every .crumb to that same sentence-case
   treatment without touching each page's own padding/background (still declared per page; only case, face,
   size and tracking move here, so nothing needs deleting in those 39 files). */
.uf-site .crumb .wrap{font-family:var(--uf-body);font-weight:400;text-transform:none;font-size:12px;letter-spacing:.02em;color:rgba(255,255,255,.65)}
.uf-site .track{display:flex;gap:20px;flex-wrap:wrap;background:#06202f}
.uf-site .iband{background:var(--uf-orange);color:var(--uf-navy);padding:28px 0;border:0}
.uf-site .iband .wrap{gap:24px;justify-content:space-between}
.uf-site .iband span,.uf-site .iband b{color:var(--uf-navy)}
.uf-site main>.sec,.uf-site main>.btypes,.uf-site main>.bays,.uf-site main>.media,.uf-site main>.local,.uf-site main>.parks,.uf-site main>.rail,.uf-site main>.faq{padding-block:80px}
.uf-site .sec.alt,.uf-site .plan,.uf-site .local,.uf-site .lead,.uf-site .art{background:var(--uf-paper);color:var(--uf-ink)}
.uf-site .sec.dark,.uf-site .sec,.uf-site .btypes,.uf-site .bays,.uf-site .media{background:var(--uf-navy)}
.uf-site .sec.alt .btn-line,.uf-site .local .btn-line,.uf-site .lead .btn-line{color:var(--uf-navy);border-color:#7e8d92}
.uf-site .sec.alt h2,.uf-site .sec.alt h3,.uf-site .plan h2,.uf-site .local h2,.uf-site .local h3,.uf-site .lead h2{color:var(--uf-navy)}
.uf-site .sec .wrap>h2,.uf-site .section-head h2{margin-bottom:30px}
.uf-site .ctaband,.uf-site .actband{background:#082230;border-color:#294552;padding-block:24px}
.uf-site .ctaband a,.uf-site .actband a{font-family:var(--uf-body);font-size:14px}
.uf-site .closer{padding:80px 24px;background:var(--uf-orange);color:var(--uf-navy)}
.uf-site .closer h2{color:var(--uf-navy)}
.uf-site .closer .btn{background:var(--uf-navy);color:white}
/* UF-18 (2026-10-03 audit, round 3): each page's own .closer .wrap (flex row, wraps the button under the
   text if it does not fit) decides whether to wrap from the text block's un-split max-content width - a
   different number once the shared button system's wider CTA button (UF-18) is the other flex item,
   right at the wrap/no-wrap boundary on a couple of pages. Explicit grow/shrink makes the text block
   always fill the row beside the button deterministically, instead of leaving that decision to a content
   measurement that a reveal animation (GSAP SplitText, data-mx="lines") computes differently than a
   plain, unanimated render of the same text. */
.uf-site .closer .wrap>div{flex:1 1 auto;min-width:0;max-width:560px}
.uf-site .manualband{background:var(--uf-paper);color:var(--uf-navy);padding-block:64px}
.uf-site .manualband h2,.uf-site .manualband h3{color:var(--uf-navy)}
.uf-site .manualband a{color:var(--uf-navy)}
.uf-site .uf-table-scroll{max-width:100%;overflow:auto;overscroll-behavior-inline:contain}
.uf-site table{width:100%;border-collapse:collapse;font-family:var(--uf-body);font-size:15px}
.uf-site table th{font-family:var(--uf-display);font-weight:400;text-transform:uppercase;font-size:14px;letter-spacing:.02em}
.uf-site table th,.uf-site table td{padding:17px 18px;line-height:1.4}
/* UF-19 (2026-10-03 audit): was 40px, under the 44px tap-target floor; now the shared small variant's height. */
.uf-site table .btn{min-height:var(--uf-btn-h-sm);padding:0 var(--uf-btn-pad-x-sm);font-size:13px}
.uf-site .plan{padding-block:80px}
.uf-site .planbox{max-width:100%;overflow:auto}
.uf-site .planbox svg{min-width:640px}
.uf-site input,.uf-site select,.uf-site textarea{min-height:46px}
.uf-site input[type=checkbox],.uf-site input[type=radio]{min-height:0}
.uf-site form [data-form-status]{font:14px/1.5 var(--uf-body);margin-top:12px;color:inherit;max-width:60ch}
.uf-site form [data-form-status]:not(:empty){padding:14px;border-left:3px solid var(--uf-orange);background:#ff7d0114}
/* A saved lead (src/theme.js showLeadSaved): the fields give way to the confirmation. A form with a designed panel
   (#leadok on the park pages) is hidden whole; any other keeps its heading and shows the message where its fields were. */
.uf-site form.uf-lead-sent[hidden]{display:none!important}
.uf-site form.uf-lead-sent>:not([data-form-status]):not(h1):not(h2):not(h3){display:none!important}
.uf-site [data-form-status] .uf-lead-receipt{display:block;margin-top:6px}
.uf-site form.uf-lead-sent [data-form-status]:focus{outline:none}
.uf-site form.uf-lead-sent [data-form-status]:focus-visible{outline:2px solid var(--uf-orange);outline-offset:3px}

/* Tools' paper reading surface, extrapolated to long guides and policy pages. */
.uf-site[data-page-family=article] .ahero,.uf-site[data-page-family=video] .ahero,.uf-site[data-page-family=legal] .phero{padding-block:74px 82px;background-image:none;background-position:62% 70%;background-repeat:no-repeat;background-size:cover}
.uf-site[data-page-family=article] .ahero .wrap,.uf-site[data-page-family=video] .ahero .wrap{max-width:1050px}
.uf-site[data-page-family=article] .ahero h1{font-size:clamp(32px,3.2vw,44px);max-width:26ch}
.uf-site .art{padding-block:72px}
.uf-site .art .wrap{max-width:1050px}
.uf-site .art h2{font-size:28px;line-height:1.2;color:var(--uf-navy);margin:40px 0 20px}
.uf-site .art h3{font-size:22px;color:var(--uf-navy)}
.uf-site .art p,.uf-site .art li{font:18px/1.6 var(--uf-body)}
.uf-site .art a{color:#a84900;text-underline-offset:4px}
.uf-site .art .call,.uf-site .art .callout{border-radius:0;border-left:5px solid var(--uf-orange)}
.uf-site .art .btn{color:var(--uf-navy)}
.uf-site .rel{background:var(--uf-paper);color:var(--uf-navy);padding-block:60px}
.uf-site .rel a{color:var(--uf-navy)}
.uf-site .lib{background:var(--uf-paper);color:var(--uf-navy)}
.uf-site .fbar{top:0;background:var(--uf-orange);color:var(--uf-navy);border:0}
.uf-site .fbar button{color:var(--uf-navy);border-radius:0}
.uf-site .fbar button.on{background:var(--uf-navy);color:var(--uf-white)}
.uf-site .card,.uf-site .ccard,.uf-site .pcard{border-radius:0;box-shadow:none}
.uf-site .card img,.uf-site .ccard img,.uf-site .pcard img{border-radius:0}
.uf-site .vmodal{z-index:500}
.uf-site .vmodal button{min-height:44px}
.uf-site .uf-modal-open{overflow:hidden}

/* Shared directory uses Mart's photo cards and orange selected state. */
.uf-finder-hero{padding:75px 0 80px;background:#001523}
.uf-finder-hero h1{margin:20px 0 26px;max-width:800px;font-size:clamp(38px,4.8vw,64px)}
.uf-finder-hero h1 span{color:var(--uf-orange)}
.uf-finder-hero p:last-child{max-width:690px;font-size:21px}
.uf-finder{padding:0 0 90px}
.uf-filters{display:grid;grid-template-columns:1.5fr 1fr 1fr auto auto;gap:18px;align-items:end;padding:32px 0;border-bottom:1px solid #315060}
.uf-filters label{display:grid;gap:8px;font-size:13px;font-weight:700}
.uf-filters input,.uf-filters select{width:100%;height:50px;background:var(--uf-paper);color:var(--uf-navy);border:0;padding:12px;font-size:16px}
.uf-reset{background:transparent;border:0;color:white;text-decoration:underline;min-height:50px;font-size:14px}
.uf-result-head{display:flex;justify-content:space-between;gap:20px;align-items:center;margin:30px 0;font-size:15px}
.uf-result-head a{color:var(--uf-orange)}
.uf-park-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:38px 30px}
.uf-card-image{display:block;position:relative;border:1px solid #516674;aspect-ratio:382/271;overflow:hidden}
.uf-card-image img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .35s}
.uf-card-image span{position:absolute;bottom:0;right:0;padding:9px 14px 9px 26px;color:var(--uf-navy);background:var(--uf-orange);font:14px var(--uf-display);text-transform:uppercase;clip-path:polygon(18px 0,100% 0,100% 100%,0 100%)}
.uf-card-pending{position:absolute;left:50%;top:42%;z-index:2;transform:translate(-50%,-50%);white-space:nowrap;color:#c4d2d9;font:12px/1.3 var(--uf-display);text-transform:uppercase;letter-spacing:.14em}
.uf-park-card:hover .uf-card-image{outline:4px solid var(--uf-orange);outline-offset:-4px}
.uf-park-card:hover img{transform:scale(1.04)}
.uf-card-copy{padding:23px 0 0}
.uf-card-copy h2{font-size:24px;margin:0 0 12px}
/* UF-19 (2026-10-03 audit): invisible padding expands the tap target to 44px without changing the
   visible heading size or spacing. */
.uf-card-copy h2 a{display:inline-block;text-decoration:none;padding-block:12px;margin-block:-12px}
.uf-card-copy p{font-size:14px;color:#b9c8d0;margin:0 0 20px}
.uf-card-copy .uf-button{font-size:14px;min-height:44px}
.uf-empty{padding:50px 0}
.uf-first-look{margin-top:64px;padding:36px;border:1px solid #315060;background:#082230}
.uf-first-look h2{font-size:26px}
.uf-first-look p{max-width:780px}
.uf-first-look a{color:var(--uf-orange);margin-right:30px}
.uf-reading{padding-block:75px;min-height:60vh}
.uf-reading h1{max-width:900px}
.uf-reading h1 span{color:var(--uf-orange)}
.uf-reading p,.uf-reading li{max-width:850px}
.uf-reading h2{font-size:28px;margin-top:45px}
.uf-route-index{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 24px;padding-block:25px}
.uf-route-index a{font-size:15px;text-decoration:none;border-bottom:1px solid #294653;padding:12px 0}

@media(max-width:1190px){.uf-nav{gap:14px}.uf-nav>a{font-size:13px}.uf-logo{width:160px}.uf-header-inner{gap:20px}.uf-site main>.hero .cols,.uf-site main>.phero .cols{gap:36px}.uf-filters{grid-template-columns:1.4fr 1fr 1fr}.uf-filters .uf-button{width:max-content}.uf-reset{justify-self:start}}
@media(max-width:980px){.uf-menu-toggle{display:block}.uf-header-inner{min-height:82px}.uf-nav{display:none;position:absolute;inset:82px 0 auto;background:#01141e;padding:24px;box-shadow:0 12px 20px #0005;max-height:calc(100dvh - 82px);overflow:auto}.uf-nav.is-open{display:flex;flex-direction:column;align-items:stretch;gap:0}.uf-nav>a{font-size:17px;padding:15px}.uf-nav .uf-button{margin-top:12px}.uf-site main>.hero .cols,.uf-site main>.phero .cols{grid-template-columns:1fr}.uf-site .hframe,.uf-site .hfr{max-width:720px}.uf-park-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.uf-route-index{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){:root{--uf-gutter:20px}.uf-header-inner{min-height:76px}.uf-logo{width:154px}.uf-nav{top:76px}.uf-reference{font-size:11px;padding:10px 20px}.uf-site main>.hero,.uf-site main>.phero,.uf-site main>.chero,.uf-site main>.fhero,.uf-site main>.ahero,.uf-site main>.mhead{padding:44px 0 52px}.uf-site main>.hero h1,.uf-site main>.phero h1,.uf-site main>.ahero h1,.uf-site main>.chero h1,.uf-site main>.fhero h1{font-size:32px;overflow-wrap:anywhere}.uf-site main>.hero .sub,.uf-site main>.hero .addr,.uf-site .phero .dek,.uf-site .ahero .dek{font-size:16px}.uf-site .btns{gap:10px}.uf-site .btns .btn{min-height:44px;font-size:14px;padding:13px 17px}.uf-site .iband .wrap{flex-wrap:wrap;justify-content:flex-start}.uf-site main>.sec,.uf-site main>.btypes,.uf-site main>.bays,.uf-site main>.media,.uf-site main>.local,.uf-site main>.parks,.uf-site main>.rail,.uf-site main>.faq{padding-block:52px}.uf-site h2{font-size:28px}.uf-site table{font-size:13px;min-width:580px}.uf-site .art p,.uf-site .art li{font-size:17px}.uf-site .art{padding-block:45px}.uf-site .art h2{font-size:25px}.uf-site .track{gap:10px;font-size:11px}.uf-finder-hero{padding:45px 0}.uf-finder-hero h1{font-size:36px}.uf-finder-hero p:last-child{font-size:18px}.uf-filters{grid-template-columns:1fr 1fr;gap:14px}.uf-filters label:first-child{grid-column:1/-1}.uf-filters .uf-button{font-size:14px}.uf-park-grid{grid-template-columns:1fr;gap:38px}.uf-first-look{padding:24px}.uf-result-head{font-size:13px}.uf-route-index{grid-template-columns:1fr}.uf-reading{padding-block:45px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.uf-site .rv,.uf-site .rv-r,.uf-site .rv-l,.uf-site .lt{opacity:1!important;transform:none!important}}

/* Imported layouts must flow inside the shared shell, including narrow screens. */
html{overflow-x:visible}
.uf-site{height:auto;display:block}
.uf-site .layout>*,.uf-site .box>*,.uf-site .grid>*,.uf-site .mgrid>*,.uf-site .optin .bd{min-width:0}
.uf-site .lts .w{max-width:100%;white-space:normal;overflow-wrap:anywhere}
.uf-site .btn{max-width:100%;white-space:normal;text-align:center}
.uf-site .ctaband,.uf-site .actband{max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain}
.uf-site .ctaband .wrap,.uf-site .actband .wrap{flex-wrap:wrap}
.uf-site .ctaband a,.uf-site .actband a{white-space:normal;flex:1 1 200px}
.uf-site .optin form,.uf-site .gate form{flex-wrap:wrap}
.uf-site form [data-form-status]{flex:1 0 100%;width:100%;min-width:0}
.uf-site .area,.uf-site .steps,.uf-site .faq,.uf-site .seo,.uf-site .rail.alt{color:var(--uf-navy)}
.uf-site .area h2,.uf-site .steps h2,.uf-site .faq h2,.uf-site .rail.alt h2{color:var(--uf-navy)}
.uf-site[data-page-family=article] main,.uf-site[data-page-family=legal] main{background:var(--uf-paper);color:var(--uf-navy)}
.uf-site[data-page-family=article] .layout{grid-template-columns:230px minmax(0,1fr);gap:48px}
.uf-site[data-page-family=article] .art{padding-top:0;max-width:100%}
.uf-site[data-page-family=article] .ahero{color:var(--uf-white)}
.uf-site .film .cap{max-width:calc(100% - 36px);white-space:normal;line-height:1.45}
.uf-site[data-page=map3d] .stage{height:720px;min-height:600px;max-width:100%}
.uf-site[data-page=map3d] .rail{padding:0}
.uf-site[data-page=map3d] .sc{min-width:0}
.uf-site[data-page=map3d] .info{min-width:0;width:min(450px,calc(100% - 32px))}
@media(max-width:960px){.uf-site[data-page-family=article] .layout{grid-template-columns:minmax(0,1fr);gap:32px}.uf-site .ctaband .wrap,.uf-site .actband .wrap{display:grid;grid-template-columns:1fr 1fr}.uf-site .ctaband a,.uf-site .actband a{padding:14px}.uf-site .ctaband .lbl{grid-column:1/-1;padding:12px 14px}.uf-site[data-page=map3d] .stage{height:740px}.uf-site[data-page=map3d] .rail{height:150px}.uf-site[data-page=map3d] .info{bottom:170px}.uf-site[data-page=map3d] .gate{align-items:flex-start;padding-top:28px}.uf-site[data-page=map3d] .gcard{padding:24px}.uf-site[data-page=map3d] .gcard .row{flex-wrap:wrap}}
@media(max-width:640px){.uf-site main>.hero h1,.uf-site main>.phero h1{font-size:27px}.uf-site .optin form,.uf-site .gate form{display:grid;grid-template-columns:minmax(0,1fr)}.uf-site .film .cap{position:static;display:block;padding:12px;max-width:100%;background:var(--uf-navy)}.uf-site .optin .bd{padding:28px 24px}.uf-site .optin .bd .xw{right:0}.uf-site .sc-x{max-width:100%}}
/* Each hero owns its vertical rhythm once, independent of source wrappers. */
.uf-site main>.hero .cols,.uf-site main>.phero .cols,.uf-site main>.hero>.wrap,.uf-site main>.phero>.wrap,.uf-site main>.chero>.wrap,.uf-site main>.ahero>.wrap{padding-block:0}
.uf-site[data-page-family=facility] main>.hero h1{font-size:clamp(27px,2.55vw,38px)}
.uf-site table{display:table;overflow:visible}
.uf-site .ctaband .row{max-width:1256px;margin-inline:auto;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));overflow:visible;gap:0}
.uf-site .ctaband .lbl{padding:18px 20px}
.uf-site .ctaband a{min-width:0;justify-content:flex-start}
.uf-site .ctaband a .arr{display:none}
.uf-site .film .over{position:relative;inset:auto;padding:18px 20px;background:var(--uf-deep);display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.uf-site .film .cap{position:static;flex:1 1 240px;font:12px/1.5 var(--uf-body);padding:0}
.uf-site .film video{aspect-ratio:16/9}
.uf-site .vband video{aspect-ratio:16/7;max-height:none;object-fit:cover;width:100%}
.uf-site .vband img{display:block;width:100%;aspect-ratio:16/7;object-fit:cover}
.uf-site .vband .bd{position:relative;inset:auto;background:var(--uf-navy);padding:30px 0}
.uf-site .vband .bd h2{max-width:900px}
.uf-site .elay>*{min-width:0}
.uf-site .lead a[href^='mailto:']{font-family:var(--uf-body);font-size:17px;overflow-wrap:anywhere}
.uf-site h1,.uf-site h2,.uf-site h3{overflow-wrap:anywhere}
.uf-site[data-page=search] .shero{height:auto;min-height:0;padding:65px 0}
.uf-site[data-page=search] .mid{position:relative;inset:auto;transform:none;padding:0 24px}
.uf-site[data-page=search] .shero h1{max-width:1000px;margin-inline:auto;font-size:clamp(30px,4vw,54px);line-height:1.2;padding-bottom:30px}
/* 2026-10-02 (Rick, rule C2): the search hero photo had a 60% brightness filter over all of it. It is full colour now;
   a navy gradient sits behind the heading at the top edge and stops halfway down, with a light one at the bottom edge. */
.uf-site[data-page=search] .shero .bg{filter:none}
.uf-site[data-page=search] .shero .vg{background:linear-gradient(180deg,rgba(0,21,35,.9) 0%,rgba(0,21,35,.72) 30%,rgba(0,21,35,0) 56%,rgba(0,21,35,0) 82%,rgba(0,21,35,.55) 100%)}
@media(max-width:820px){.uf-site .ctaband .row{grid-template-columns:repeat(2,minmax(0,1fr))}.uf-site .ctaband .lbl{grid-column:1/-1}.uf-site .ctaband a{font-size:13px;padding:15px 20px}.uf-site .film .over{padding:18px 20px}.uf-site .film .cap{max-width:100%}.uf-site .vband video{aspect-ratio:16/10}.uf-site .vband img{aspect-ratio:16/10}}
@media(max-width:640px){.uf-site .oband .stat .n{font-size:23px;overflow-wrap:anywhere}.uf-site .h2x,.uf-site[data-page=ma] h2{font-size:25px}.uf-site[data-page-family=legal] .h2x{font-size:23px}.uf-site .lead a[href^='mailto:']{font-size:15px}}
.uf-site form[data-preview-form]{flex-wrap:wrap}
.uf-site form [data-form-status]:empty{display:none}
.uf-site .split>*{min-width:0}
.uf-site .split .locsel select{max-width:100%;width:100%}
.uf-site .btn-line,.uf-site .btn-outline{background:var(--uf-paper);color:var(--uf-navy);border:1px solid var(--uf-paper)}
/* Park cards on Locations and the state pages (Rick + Mart call, 2026-10-02, 51:16 and 01:00:50): the park's
   own email (and phone once a tracking number exists) and a Schedule a tour link into the park's lead form. The
   phone sits under that link (Rick, Teams 2026-10-07 12:23 PM PT); 12px above it keeps the phone's 44px tap area
   (the link padding below) clear of the tour link's 44px box. */
.uf-card-contact{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:6px}
.uf-card-contact li{margin:0;padding:0;font-size:15px;line-height:1.4;overflow-wrap:anywhere}
.uf-card-contact li::before{content:none}
/* UF-19 (2026-10-03 audit): invisible padding expands the tap target to 44px without changing the
   visible row size or spacing. */
.uf-card-contact a{display:inline-block;color:#e6edf0;text-decoration:underline;text-decoration-color:#ffffff55;text-underline-offset:3px;padding-block:12px;margin-block:-12px}
.uf-card-contact a:hover,.uf-card-contact a:focus-visible{color:var(--uf-orange);text-decoration-color:currentColor}
.uf-card-tour{display:inline-flex;align-items:center;gap:8px;min-height:44px;color:var(--uf-orange);font:14px/1.2 var(--uf-display);text-transform:uppercase;letter-spacing:.06em;text-decoration:none}
.uf-card-tour:hover,.uf-card-tour:focus-visible{text-decoration:underline;text-underline-offset:4px}
.uf-site .pcard .uf-card-contact{padding:0 18px;margin:14px 0 16px}

/* Rick, Teams 2026-10-13 8:46 PM PT (T03): on his iPhone three looping films showed an empty dark box. theme.js puts
   each looping film's poster in --uf-poster as soon as it has one, and the film draws it as its own background, so
   the still shows whether or not the film ever paints a frame (refused autoplay, a codec the phone cannot draw). */
video[data-uf-poster-bg][loop]:not([controls]){background-image:var(--uf-poster);background-position:center;background-repeat:no-repeat;background-size:cover}

/* Phones under 360px (Eurostile Extended Black, 2026-10-15): buttons give up side padding and tracking before the
   long-word guard in theme.js has to shrink their text. */
@media(max-width:359px){.uf-site :is(.btn,.uf-button,.mxbtn,.uf-bh-btn){padding-inline:14px;letter-spacing:.04em}}
