/* Prism Air design system — global entry. Imports only. */
/* ---- tokens/fonts.css */
/* Paths changed from ../fonts/ to /fonts/: the bundle keeps tokens/ and fonts/
   as siblings at its root, this site nests them under css/tokens/. Root-absolute
   matches how the icon sprite is referenced and survives any page depth. */
/* Prism Air — webfonts. Oswald (headings) + Montserrat (titles in caps, body, buttons). Both variable, 200–700, OFL. */
/* Oswald — downloaded from Google Fonts (latin + latin-ext covers English and Spanish) */
@font-face{font-family:'Oswald';font-style:normal;font-weight:200 700;font-display:swap;src:url('/fonts/Oswald-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'Oswald';font-style:normal;font-weight:200 700;font-display:swap;src:url('/fonts/Oswald-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
/* Montserrat — carried over from the Nikki's foundation package (same variable files) */
@font-face{font-family:'Montserrat';font-style:normal;font-weight:200 700;font-display:swap;src:url('/fonts/Montserrat-normal.woff2') format('woff2');}
@font-face{font-family:'Montserrat';font-style:italic;font-weight:200 700;font-display:swap;src:url('/fonts/Montserrat-italic.woff2') format('woff2');}
/* ---- tokens/colors.css */
/* Prism Air — color tokens. Navy and crimson are sampled from the logo (assets/logo/prism-air-logo.png).
   Role map from the Nikki's foundation: red signature → navy · gold highlight → crimson · rose mids → ice/frost ·
   oxblood/noir → deep navy/abyss · ivory/pearl → cool whites · warm shadows → cool shadows · gold glitter → frost, ice, snow. */
:root{
/* Navy — the signature. 500 is the logo's navy. */
--pa-navy-50:#EEF3FA;--pa-navy-100:#DCE6F3;--pa-navy-200:#B7C9E3;--pa-navy-300:#8AA6CF;--pa-navy-400:#4F75AE;--pa-navy-500:#1B3A6B;--pa-navy-600:#163160;--pa-navy-700:#112750;--pa-navy-800:#0C1D3E;--pa-navy-900:#08142C;
/* Deep navy / abyss — every dark ground */
--pa-deep:#0E2547;--pa-deep-900:#071430;--pa-abyss:#040A17;
/* Crimson — highlight only: hairlines, dots, eyebrows, link underlines, stars. 500 is the logo red, 700 the flame's inner tone. */
--pa-crimson-100:#FBE7EA;--pa-crimson-300:#F2667A;--pa-crimson-400:#E2324B;--pa-crimson-500:#C8102E;--pa-crimson-700:#990824;--pa-crimson-900:#5E0516;
/* Ice / frost — the gradient mid-tones and the cold light */
--pa-ice-50:#F3F8FD;--pa-ice-100:#E6F1FB;--pa-ice-200:#CFE4F6;--pa-ice-300:#ADD2F0;--pa-ice-400:#7FB6E6;--pa-ice-500:#4E94D2;--pa-ice-600:#2F74B5;
--pa-frost-hi:#D4EEFF;
/* Cool whites, steel and ink */
--pa-white:#FFFFFF;--pa-snow:#F6F9FC;--pa-frost:#EAF1F7;--pa-steel-200:#D5DEE8;--pa-steel-300:#BCC8D6;--pa-steel-500:#8796AA;--pa-steel-600:#5F6F84;--pa-ink-700:#263449;--pa-ink:#0C1524;
/* Status — live is the 24/7 dot; danger is the crimson */
--pa-live:#2FD27A;--pa-success:#16794A;--pa-warning:#9A5B00;--pa-danger:#C8102E;

/* Semantic */
--surface-page:var(--pa-white);--surface-soft:var(--pa-snow);--surface-frost:var(--pa-frost);--surface-ice:var(--pa-ice-100);
--surface-navy:var(--pa-navy-500);--surface-deep:var(--pa-deep);--surface-abyss:var(--pa-abyss);
--text-strong:var(--pa-ink);--text-body:var(--pa-ink-700);--text-muted:var(--pa-steel-600);--text-brand:var(--pa-navy-500);
--text-on-dark:var(--pa-white);--text-on-dark-muted:rgba(255,255,255,.76);--text-highlight:var(--pa-crimson-500);--text-highlight-on-dark:var(--pa-crimson-300);
--accent:var(--pa-navy-500);--accent-deep:var(--pa-deep);--highlight:var(--pa-crimson-500);--frost-hi:var(--pa-frost-hi);
--border-hairline:rgba(12,21,36,.12);--border-strong:rgba(12,21,36,.28);--border-crimson:var(--pa-crimson-500);
--border-on-dark:rgba(255,255,255,.55);--border-on-dark-soft:rgba(255,255,255,.18);
--focus-ring:var(--pa-navy-500);--focus-ring-on-dark:var(--pa-frost-hi);
}
/* ---- tokens/typography.css */
/* Prism Air — type. The pairing: H1 Oswald Medium · H2 Montserrat Regular (tracked caps) · H3 Oswald Regular ·
   body Montserrat Regular & SemiBold. Small caps (buttons, labels, eyebrows) are Montserrat 600 with wide tracking. */
:root{
--font-display:'Oswald','Arial Narrow','Helvetica Neue',Arial,sans-serif;
--font-sans:'Montserrat','Helvetica Neue',Arial,sans-serif;
--fw-light:300;/* @kind font */--fw-regular:400;/* @kind font */--fw-medium:500;/* @kind font */--fw-semibold:600;/* @kind font */--fw-bold:700;/* @kind font */
--fs-micro:11px;--fs-xs:12px;--fs-sm:14px;--fs-md:16px;--fs-lg:18px;--fs-xl:22px;--fs-2xl:28px;--fs-3xl:36px;--fs-4xl:48px;--fs-5xl:64px;--fs-6xl:88px;--fs-7xl:120px;
/* fluid sizes for the site */
--fs-hero:clamp(56px,8.6vw,128px);/* @kind font */--fs-h1:clamp(40px,5.4vw,76px);/* @kind font */--fs-h2:clamp(22px,2.3vw,34px);/* @kind font */--fs-h3:clamp(21px,1.9vw,27px);/* @kind font */--fs-lede:clamp(16px,1.3vw,18px);/* @kind font */
--lh-display:.94;/* @kind font */--lh-tight:1.02;/* @kind font */--lh-snug:1.18;/* @kind font */--lh-body:1.68;/* @kind font */
--tracking-display:.005em;/* @kind font */--tracking-h2:.14em;/* @kind font */--tracking-h3:.03em;/* @kind font */--tracking-caps:.16em;/* @kind font */--tracking-eyebrow:.28em;/* @kind font */--tracking-body:.005em;/* @kind font */
/* Semantic roles */
--type-display:var(--fw-medium) var(--fs-hero)/var(--lh-display) var(--font-display);/* @kind font */
--type-h1:var(--fw-medium) var(--fs-h1)/var(--lh-tight) var(--font-display);/* @kind font */
--type-h2:var(--fw-regular) var(--fs-h2)/var(--lh-snug) var(--font-sans);/* @kind font */
--type-h3:var(--fw-regular) var(--fs-h3)/1.1 var(--font-display);/* @kind font */
--type-body:var(--fw-regular) var(--fs-md)/var(--lh-body) var(--font-sans);/* @kind font */
--type-lede:var(--fw-regular) var(--fs-lede)/1.7 var(--font-sans);/* @kind font */
--type-small:var(--fw-regular) var(--fs-sm)/1.55 var(--font-sans);/* @kind font */
--type-eyebrow:var(--fw-semibold) var(--fs-xs)/1.2 var(--font-sans);/* @kind font */
--type-button:var(--fw-semibold) var(--fs-xs)/1 var(--font-sans);/* @kind font */
--type-numeral:var(--fw-light) var(--fs-3xl)/1 var(--font-display);/* @kind font */
}
/* ---- tokens/spacing.css */
/* Prism Air — space, radii, layout. Same scale as the foundation: generous sections, pill controls, soft 28px cards. */
:root{
--space-0:0;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--space-9:96px;--space-10:144px;
--space-section:clamp(76px,10vw,144px);/* @kind spacing */
--radius-xs:4px;--radius-sm:6px;--radius-md:12px;--radius-lg:20px;--radius-xl:28px;--radius-pill:999px;
--container-max:1320px;/* @kind spacing */--gutter:clamp(20px,5vw,72px);/* @kind spacing */
--topbar-h:80px;/* @kind spacing */--topbar-h-solid:68px;/* @kind spacing */--callbar-h:64px;/* @kind spacing */
--tap-min:44px;/* @kind spacing */
--hairline:1px;/* @kind spacing */--hairline-strong:1.5px;/* @kind spacing */
}
@media (max-width:1100px){:root{--topbar-h:72px;--topbar-h-solid:64px}}
@media (max-width:640px){:root{--topbar-h:64px;--topbar-h-solid:58px}}
/* ---- tokens/effects.css */
/* Prism Air — gradients, glass, glows, shadows. Winter light: navy → glacier → ice → snow. Never purple, never neon. */
:root{
/* Gradients */
--grad-signature:linear-gradient(160deg,#071430 0%,#1B3A6B 34%,#4E94D2 70%,#E6F1FB 100%);/* @kind color */
--grad-glacier:linear-gradient(125deg,#12305C 0%,#4E7FB4 42%,#ADD2F0 78%,#E6F1FB 100%);/* @kind color */
--grad-veil:radial-gradient(120% 95% at 72% 28%,#1F4F8F 0%,#0B2148 50%,#040A17 100%);/* @kind color */
--grad-dark:radial-gradient(110% 90% at 72% 18%,#17386B 0%,#0A1C3C 45%,#040A17 100%);/* @kind color */
--grad-abyss:radial-gradient(120% 100% at 50% 0%,#0E2547 0%,#040A17 70%);/* @kind color */
--grad-navy-depth:radial-gradient(120% 90% at 50% 30%,#2A5598 0%,#1B3A6B 55%,#0B1F3F 100%);/* @kind color */
--grad-frost:linear-gradient(180deg,#FFFFFF 0%,#F6F9FC 60%,#E6F1FB 100%);/* @kind color */
--grad-ice:linear-gradient(165deg,#CFE4F6 0%,#E6F1FB 55%,#F6F9FC 100%);/* @kind color */
--grad-heat:linear-gradient(160deg,#5E0516 0%,#990824 38%,#C8102E 70%,#F2667A 100%);/* @kind color */
--grad-crimson:linear-gradient(90deg,#990824 0%,#E2324B 50%,#C8102E 100%);/* @kind color */
--grad-frostline:linear-gradient(90deg,rgba(173,210,240,0) 0%,#E6F4FF 50%,rgba(173,210,240,0) 100%);/* @kind color */
--grad-protect-bottom:linear-gradient(180deg,rgba(4,10,23,0) 40%,rgba(4,10,23,.78) 100%);/* @kind color */
--grad-protect-left:linear-gradient(90deg,rgba(7,20,48,.86) 0%,rgba(7,20,48,0) 70%);/* @kind color */
--grad-protect-top:linear-gradient(180deg,rgba(4,10,23,.55) 0%,rgba(4,10,23,0) 100%);/* @kind color */
/* Glass — clear on dark grounds, frosted on light ones */
--glass-fill:rgba(255,255,255,.1);/* @kind color */--glass-fill-hover:rgba(255,255,255,.18);/* @kind color */--glass-fill-strong:rgba(255,255,255,.66);/* @kind color */
--glass-border:rgba(255,255,255,.62);/* @kind color */--glass-border-soft:rgba(255,255,255,.3);/* @kind color */
--glass-navy:rgba(7,20,48,.62);/* @kind color */--glass-abyss:rgba(4,10,23,.82);/* @kind color */
--glass-blur:blur(18px) saturate(140%);/* @kind other */
--glass-sheen:linear-gradient(180deg,rgba(255,255,255,.28) 0%,rgba(255,255,255,0) 55%);/* @kind color */
/* Glows — cold light: white core, ice halo */
--glow-text:0 0 4px rgba(255,255,255,.85),0 0 16px rgba(214,236,255,.55),0 0 40px rgba(127,182,230,.45);/* @kind shadow */
--glow-text-soft:0 0 10px rgba(255,255,255,.45),0 0 28px rgba(173,210,240,.35);/* @kind shadow */
--glow-ring:0 0 0 1px rgba(255,255,255,.7),0 0 18px rgba(214,236,255,.38),inset 0 0 12px rgba(255,255,255,.16);/* @kind shadow */
--glow-ring-hover:0 0 0 1px rgba(212,238,255,.95),0 0 28px rgba(170,215,255,.55),inset 0 0 16px rgba(220,240,255,.22);/* @kind shadow */
--glow-frost:0 0 6px rgba(214,236,255,.7),0 0 22px rgba(127,182,230,.45);/* @kind shadow */
--glow-navy:0 0 40px rgba(27,58,107,.45);/* @kind shadow */
--glow-crimson:0 0 14px rgba(200,16,46,.45);/* @kind shadow */
--glow-live:0 0 0 3px rgba(47,210,122,.22),0 0 12px rgba(47,210,122,.75);/* @kind shadow */
/* Shadows — soft and cool, never warm grey */
--shadow-sm:0 2px 8px rgba(7,20,48,.08);--shadow-md:0 12px 32px rgba(7,20,48,.12);--shadow-lg:0 28px 80px rgba(7,20,48,.22);
}
/* ---- tokens/motion.css */
/* Prism Air — motion: "cold air that reveals". Things arrive the way cold air does: they glide in, mist clears off them,
   frost catches the light. Slow and smooth, never bouncy. One house rule from the brief: under reduced motion the
   24/7 dot stays still, and so does every ambient effect. */
:root{
--ease-glide:cubic-bezier(.22,.61,.36,1);/* @kind other */--ease-reveal:cubic-bezier(.16,1,.3,1);/* @kind other */--ease-in-out:cubic-bezier(.65,0,.35,1);/* @kind other */
--dur-fast:180ms;/* @kind other */--dur-base:320ms;/* @kind other */--dur-slow:700ms;/* @kind other */--dur-reveal:1200ms;/* @kind other */--dur-ambient:2400ms;/* @kind other */
--ice-star:polygon(50% 0,56% 39.6%,93.3% 25%,62% 50%,93.3% 75%,56% 60.4%,50% 100%,44% 60.4%,6.7% 75%,38% 50%,6.7% 25%,44% 39.6%);/* @kind other */
}
@keyframes pa-fade{from{opacity:0}to{opacity:1}}
@keyframes pa-rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes pa-clear{from{opacity:0;transform:translateY(18px);filter:blur(7px) brightness(1.25)}to{opacity:1;transform:none;filter:none}}
@keyframes pa-arrive{from{opacity:0;transform:translateX(34px);filter:blur(4px)}to{opacity:1;transform:none;filter:none}}
@keyframes pa-settle{from{opacity:0;transform:scale(1.07)}to{opacity:1;transform:none}}
@keyframes pa-pulse{0%{box-shadow:0 0 0 0 rgba(47,210,122,.55),0 0 10px rgba(47,210,122,.7)}70%{box-shadow:0 0 0 9px rgba(47,210,122,0),0 0 10px rgba(47,210,122,.7)}100%{box-shadow:0 0 0 0 rgba(47,210,122,0),0 0 10px rgba(47,210,122,.7)}}
@keyframes pa-twinkle{35%{opacity:1;transform:scale(1) rotate(0)}100%{opacity:0;transform:scale(.3) rotate(60deg)}}
@keyframes pa-glint-run{0%{opacity:0;transform:translateX(-10px)}15%{opacity:1}85%{opacity:1}100%{opacity:0;transform:translateX(var(--run,104px))}}
@keyframes pa-sheen{from{transform:translateX(-130%)}to{transform:translateX(130%)}}
@keyframes pa-bloom{30%{box-shadow:0 0 0 7px rgba(173,210,240,.3),0 0 22px rgba(173,210,240,.75)}}
@keyframes pa-frostglow{35%{text-shadow:0 0 .3em rgba(255,255,255,.95),0 0 1.1em rgba(173,210,240,.75),0 0 2.4em rgba(78,148,210,.4)}}
@keyframes pa-draw{0%{transform:scaleY(0);opacity:1}60%{transform:scaleY(1);opacity:1}100%{transform:scaleY(1);opacity:0}}
@keyframes pa-breath{0%,100%{opacity:.55;transform:translateY(0) scale(1)}50%{opacity:.85;transform:translateY(-3%) scale(1.04)}}
@keyframes pa-drift{from{transform:translateY(-6%)}to{transform:translateY(6%)}}
@media (prefers-reduced-motion:reduce){
  .pa-live-dot,.pa-live-dot::after{animation:none!important}
  [data-ambient]{animation:none!important}
}
/* ---- tokens/base.css */
/* Prism Air — base + brand utilities (class prefix pa-) */
*,*::before,*::after{box-sizing:border-box}
html,body{margin:0}
body{font:var(--type-body);color:var(--text-body);background:var(--surface-page);-webkit-font-smoothing:antialiased;letter-spacing:var(--tracking-body)}
img,video{max-width:100%;display:block}
button,input,select,textarea{font:inherit}
b,strong{font-weight:600}
a{color:var(--pa-navy-500);text-decoration:none;transition:color var(--dur-fast) var(--ease-glide)}
a:hover{color:var(--pa-crimson-500)}
::selection{background:var(--pa-navy-500);color:#fff}
:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px;border-radius:4px}
[data-tone="dark"] :focus-visible{outline-color:var(--focus-ring-on-dark)}
:is(h1,h2,h3,.pa-lede,blockquote){text-wrap:balance}
:is(p,li,figcaption,dd){text-wrap:pretty}
/* type roles */
.pa-display{margin:0;font:var(--type-display);letter-spacing:var(--tracking-display);text-transform:uppercase}
.pa-h1{margin:0;font:var(--type-h1);letter-spacing:var(--tracking-display);text-transform:uppercase}
.pa-h2{margin:0;font:var(--type-h2);letter-spacing:var(--tracking-h2);text-transform:uppercase;color:var(--text-strong)}
.pa-h2 b{font-weight:600}
.pa-h3{margin:0;font:var(--type-h3);letter-spacing:var(--tracking-h3);text-transform:uppercase;color:var(--text-strong)}
.pa-lede{font:var(--type-lede);color:var(--text-body);max-width:56ch}
.pa-eyebrow{font:var(--type-eyebrow);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;color:var(--text-highlight)}
[data-tone="dark"] .pa-eyebrow,.pa-eyebrow--ice{color:var(--pa-ice-200)}
.pa-numeral{font:var(--type-numeral);letter-spacing:.02em;color:var(--pa-ice-500)}
/* surfaces and light */
.pa-wrap{width:100%;max-width:calc(var(--container-max) + 2 * var(--gutter));margin-inline:auto;padding-inline:var(--gutter)}
.pa-glow{color:#fff;text-shadow:var(--glow-text)}
.pa-glass{background:var(--glass-fill);border:1px solid var(--glass-border);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur)}
.pa-dark{color:var(--text-on-dark);background:var(--grad-dark)}
/* the crimson dot from the logo's tagline, used as a separator */
.pa-sep{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--pa-crimson-500);vertical-align:middle;margin:0 .7em;flex:none}
.pa-sep--navy{background:var(--pa-navy-500)}
[data-tone="dark"] .pa-sep{background:var(--pa-crimson-400);box-shadow:var(--glow-crimson)}
/* brief placeholders ([HOURS], [RATING]…): always visible, never styled away */
.pa-ph{display:inline;padding:.05em .35em;border-radius:4px;background:rgba(200,16,46,.08);box-shadow:inset 0 0 0 1px rgba(200,16,46,.28);color:var(--pa-crimson-700);font-weight:600;letter-spacing:.02em;white-space:normal}
[data-tone="dark"] .pa-ph{background:rgba(242,102,122,.12);box-shadow:inset 0 0 0 1px rgba(242,102,122,.45);color:#FFD3DA}
.pa-sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
/* ---- components/core/core.css */
/* Prism Air — core: Button, IconButton, Icon. Glass pills: clear glass on dark grounds, navy glass on light ones.
   On hover the edge frosts over (ice text, ice ring) and an ice-star glint twinkles at the corner. */
.pa-icon{display:inline-block;flex:none;vertical-align:middle}
.pa-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:10px;height:50px;padding:0 30px;border-radius:var(--radius-pill);font:var(--type-button);letter-spacing:var(--tracking-caps);text-transform:uppercase;white-space:nowrap;cursor:pointer;border:1px solid transparent;text-decoration:none;isolation:isolate;overflow:hidden;transition:background var(--dur-base) var(--ease-glide),box-shadow var(--dur-base) var(--ease-glide),color var(--dur-base) var(--ease-glide),transform var(--dur-fast) var(--ease-glide),border-color var(--dur-base) var(--ease-glide),text-shadow var(--dur-base) var(--ease-glide),translate .7s var(--ease-reveal)}
.pa-btn:active{transform:scale(.97)}
.pa-btn:focus-visible{outline:none;box-shadow:0 0 0 2px #fff,0 0 0 4px var(--focus-ring)}
:is([data-tone="dark"],.pa-dark) .pa-btn:focus-visible,.pa-btn--glass:focus-visible{box-shadow:0 0 0 2px var(--pa-frost-hi),0 0 18px rgba(170,215,255,.6)}
.pa-btn[disabled],.pa-btn[aria-disabled="true"]{opacity:.42;cursor:not-allowed;pointer-events:none}
.pa-btn[aria-busy="true"]{opacity:.7;pointer-events:none}
.pa-btn--sm{height:40px;padding:0 20px;font-size:11px}
.pa-btn--lg{height:56px;padding:0 36px;font-size:12.5px}
.pa-btn--block{width:100%}
.pa-btn--glass{color:#fff;background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.62);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);box-shadow:0 0 18px rgba(214,236,255,.14),inset 0 0 14px rgba(255,255,255,.1),inset 0 1px 0 rgba(255,255,255,.28);text-shadow:0 0 10px rgba(255,255,255,.35)}
.pa-btn--navy{color:#fff;border-color:rgba(255,255,255,.42);background:linear-gradient(180deg,rgba(49,92,158,.96) 0%,rgba(27,58,107,.97) 58%,rgba(12,31,62,.98) 100%);box-shadow:0 10px 28px rgba(11,31,63,.26),0 0 0 1px rgba(11,31,63,.3),inset 0 1px 0 rgba(255,255,255,.34),inset 0 0 14px rgba(255,255,255,.1);text-shadow:0 0 10px rgba(255,255,255,.2)}
/* the emergency button: the logo's crimson, same build as the navy one */
.pa-btn--red{color:#fff;border-color:rgba(255,255,255,.42);background:linear-gradient(180deg,rgba(226,40,70,.97) 0%,rgba(200,16,46,.98) 58%,rgba(153,8,36,.98) 100%);box-shadow:0 10px 28px rgba(153,8,36,.3),0 0 0 1px rgba(153,8,36,.35),inset 0 1px 0 rgba(255,255,255,.34),inset 0 0 14px rgba(255,255,255,.1);text-shadow:0 0 10px rgba(255,255,255,.2)}
.pa-btn--red:hover{color:#fff;border-color:rgba(255,214,220,.95);background:linear-gradient(180deg,rgba(232,52,82,.98) 0%,rgba(205,20,50,.98) 58%,rgba(153,8,36,.98) 100%);box-shadow:0 12px 34px rgba(153,8,36,.38),0 0 0 1px rgba(255,214,220,.5),0 0 26px rgba(226,40,70,.45),inset 0 1px 0 rgba(255,255,255,.3)}
.pa-btn--frost{color:var(--pa-navy-500);background:rgba(255,255,255,.84);border-color:#fff;backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);box-shadow:0 8px 28px rgba(7,20,48,.14),inset 0 1px 0 #fff,inset 0 0 14px rgba(214,236,255,.55)}
.pa-btn--outline{color:var(--pa-navy-500);background:rgba(255,255,255,.4);border-color:rgba(27,58,107,.38)}
.pa-btn--link{height:auto;padding:0 0 6px;border-radius:0;color:currentColor;background:none;border:0;border-bottom:1px solid var(--pa-crimson-500);overflow:visible}
.pa-btn:is(.pa-btn--glass,.pa-btn--navy,.pa-btn--frost,.pa-btn--red)::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:var(--glass-sheen)}
.pa-btn--glass:hover,.pa-btn--navy:hover{color:var(--pa-frost-hi);border-color:rgba(212,238,255,.95);box-shadow:var(--glow-ring-hover),inset 0 1px 0 rgba(255,255,255,.3);text-shadow:0 0 12px rgba(170,215,255,.75)}
.pa-btn--glass:hover{background:rgba(255,255,255,.16)}
.pa-btn--navy:hover{background:linear-gradient(180deg,rgba(57,104,176,.97) 0%,rgba(30,64,118,.98) 58%,rgba(12,31,62,.98) 100%)}
.pa-btn--frost:hover{color:var(--pa-navy-600);background:#fff;box-shadow:0 10px 34px rgba(7,20,48,.18),0 0 0 1px rgba(173,210,240,.9),0 0 26px rgba(173,210,240,.6),inset 0 1px 0 #fff}
.pa-btn--outline:hover{color:var(--pa-navy-600);background:#fff;border-color:var(--pa-navy-500);box-shadow:0 0 0 1px rgba(173,210,240,.6),0 0 22px rgba(173,210,240,.45)}
.pa-btn--link:hover{color:var(--pa-crimson-500);border-bottom-color:currentColor}
:is([data-tone="dark"],.pa-dark) .pa-btn--link:hover{color:var(--pa-frost-hi);border-bottom-color:var(--pa-frost-hi);text-shadow:0 0 10px rgba(170,215,255,.6)}
.pa-btn:is(.pa-btn--glass,.pa-btn--navy,.pa-btn--frost,.pa-btn--outline)::after{content:"";position:absolute;top:5px;right:16%;width:12px;height:12px;pointer-events:none;background:radial-gradient(circle,#fff 0 24%,rgba(214,236,255,.95) 42%,rgba(173,210,240,0) 74%);clip-path:var(--ice-star);opacity:0;transform:scale(.2) rotate(-60deg)}
.pa-btn:is(.pa-btn--frost,.pa-btn--outline)::after{background:radial-gradient(circle,#fff 0 18%,var(--pa-ice-400) 46%,rgba(78,148,210,0) 74%)}
@media (hover:hover){.pa-btn:is(.pa-btn--glass,.pa-btn--navy,.pa-btn--frost,.pa-btn--outline):hover::after{animation:pa-twinkle 1.1s var(--ease-glide)}}
.pa-btn:focus-visible::after{animation:pa-twinkle 1.1s var(--ease-glide)}
@media (hover:none){.pa-btn:active::after{animation:pa-twinkle 1s var(--ease-glide)}}
@media (max-width:480px){.pa-btn{white-space:normal;text-align:center;line-height:1.3;height:auto;min-height:50px;padding:12px 22px;letter-spacing:.14em}.pa-btn--sm{min-height:40px;padding:10px 18px}.pa-btn--lg{min-height:54px;padding:13px 24px}.pa-btn--link{min-height:0;padding:0 0 6px}}
/* Icon button */
.pa-iconbtn{position:relative;width:44px;height:44px;padding:0;flex:none;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;border:1px solid var(--glass-border);background:var(--glass-fill);color:#fff;text-decoration:none;backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);transition:background var(--dur-base) var(--ease-glide),box-shadow var(--dur-base) var(--ease-glide),color var(--dur-base) var(--ease-glide),border-color var(--dur-base) var(--ease-glide),transform var(--dur-fast) var(--ease-glide)}
.pa-iconbtn:hover{color:var(--pa-frost-hi);background:var(--glass-fill-hover);border-color:rgba(212,238,255,.95);box-shadow:var(--glow-ring-hover)}
.pa-iconbtn:hover .pa-icon{filter:drop-shadow(0 0 4px rgba(170,215,255,.8))}
.pa-iconbtn:active{transform:scale(.94)}
.pa-iconbtn:focus-visible{outline:none;box-shadow:0 0 0 2px var(--pa-frost-hi),0 0 18px rgba(170,215,255,.6)}
.pa-iconbtn--sm{width:36px;height:36px}.pa-iconbtn--lg{width:56px;height:56px}
.pa-iconbtn--light{color:var(--pa-navy-500);border-color:rgba(27,58,107,.22);background:rgba(255,255,255,.72)}
.pa-iconbtn--light:hover{color:var(--pa-navy-600);background:#fff;border-color:rgba(173,210,240,.95);box-shadow:var(--shadow-md),0 0 20px rgba(173,210,240,.5)}
.pa-iconbtn--light:focus-visible{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--focus-ring)}
.pa-iconbtn--navy{color:#fff;border-color:rgba(255,255,255,.4);background:var(--pa-navy-500);box-shadow:inset 0 1px 0 rgba(255,255,255,.3)}
.pa-iconbtn--navy:hover{background:var(--pa-navy-400)}
.pa-iconbtn[disabled]{opacity:.4;pointer-events:none}
/* ---- components/forms/forms.css */
/* Prism Air — forms: Field, Input, Textarea, Select, Checkbox, Radio, Switch, Tag, ChoiceChips.
   Pill fields at 52px (tap targets ≥44px), visible labels always, navy focus with a cold halo. */
.pa-field{display:flex;flex-direction:column;gap:8px;min-width:0;margin:0;padding:0;border:0;font-family:var(--font-sans)}
fieldset.pa-field{display:block}
fieldset.pa-field>legend{display:block;margin-bottom:12px}
fieldset.pa-field>.pa-field__hint{display:block;margin-top:10px}
.pa-field__label{padding:0;font:600 11px/1.45 var(--font-sans);letter-spacing:.2em;text-transform:uppercase;color:var(--text-strong)}
.pa-field__req{margin-left:3px;color:var(--pa-crimson-500)}
.pa-field__opt{margin-left:6px;font-weight:500;letter-spacing:.04em;text-transform:none;color:var(--text-muted)}
.pa-field__hint{font-size:12.5px;line-height:1.45;color:var(--text-muted)}
.pa-field--error .pa-field__hint{color:var(--pa-danger)}
.pa-field__count{align-self:flex-end;margin-top:-2px;font-size:11.5px;letter-spacing:.04em;color:var(--text-muted)}
.pa-input{height:52px;width:100%;padding:0 22px;border-radius:var(--radius-pill);border:1px solid var(--border-strong);background:rgba(255,255,255,.8);font:400 15px var(--font-sans);color:var(--text-strong);outline:none;appearance:none;-webkit-appearance:none;text-overflow:ellipsis;transition:border-color var(--dur-base) var(--ease-glide),box-shadow var(--dur-base) var(--ease-glide),background var(--dur-base) var(--ease-glide)}
.pa-input::placeholder{color:var(--pa-steel-500);text-overflow:ellipsis}
.pa-input:hover{border-color:rgba(27,58,107,.45)}
.pa-input:focus{border-color:var(--pa-navy-500);background:#fff;box-shadow:0 0 0 4px rgba(78,148,210,.16),0 0 18px rgba(173,210,240,.45)}
.pa-field--error .pa-input{border-color:var(--pa-danger);box-shadow:0 0 0 4px rgba(200,16,46,.08)}
.pa-input[disabled]{opacity:.5;cursor:not-allowed}
textarea.pa-input{height:auto;min-height:128px;padding:16px 22px;border-radius:24px;resize:vertical;line-height:1.55}
input[type="date"].pa-input{padding-right:16px;min-width:0}
input[type="date"].pa-input::-webkit-calendar-picker-indicator{opacity:.55;cursor:pointer}
.pa-select{position:relative}
.pa-select .pa-input{padding-right:52px;cursor:pointer}
.pa-select__chev{position:absolute;right:20px;top:50%;translate:0 -50%;pointer-events:none;color:var(--text-muted)}
.pa-field--glass .pa-field__label{color:rgba(255,255,255,.88)}
.pa-field--glass .pa-field__hint{color:rgba(255,255,255,.72)}
.pa-field--glass .pa-input{background:var(--glass-fill);border-color:var(--glass-border-soft);color:#fff;backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur)}
.pa-field--glass .pa-input::placeholder{color:rgba(255,255,255,.6)}
.pa-field--glass .pa-input:focus{border-color:#fff;box-shadow:var(--glow-ring)}
.pa-field--glass .pa-select__chev{color:#fff}
.pa-field--glass select.pa-input option{color:var(--pa-ink)}
/* Check / radio / switch */
.pa-check{position:relative;display:inline-flex;align-items:center;gap:12px;min-height:var(--tap-min);cursor:pointer;font:400 14.5px/1.45 var(--font-sans);color:var(--text-body);user-select:none}
.pa-check input{position:absolute;opacity:0;width:1px;height:1px;margin:0;pointer-events:none}
.pa-check__box{width:22px;height:22px;flex:none;border:1px solid var(--border-strong);border-radius:6px;background:#fff;display:inline-flex;align-items:center;justify-content:center;transition:all var(--dur-base) var(--ease-glide)}
.pa-check__box::after{content:"";width:5px;height:10px;border-right:1.75px solid #fff;border-bottom:1.75px solid #fff;transform:translateY(-1px) rotate(45deg) scale(0);transition:transform var(--dur-base) var(--ease-reveal)}
.pa-check input:checked+.pa-check__box{background:var(--pa-navy-500);border-color:var(--pa-navy-500);box-shadow:0 0 0 3px rgba(173,210,240,.35),0 0 14px rgba(78,148,210,.45)}
.pa-check input:checked+.pa-check__box::after{transform:translateY(-1px) rotate(45deg) scale(1)}
.pa-check--radio .pa-check__box{border-radius:50%}
.pa-check--radio .pa-check__box::after{width:8px;height:8px;border:0;border-radius:50%;background:#fff;transform:scale(0)}
.pa-check--radio input:checked+.pa-check__box::after{transform:scale(1)}
.pa-check input:focus-visible+:is(.pa-check__box,.pa-switch__track){box-shadow:0 0 0 2px #fff,0 0 0 4px var(--focus-ring)}
.pa-check--top{align-items:flex-start}.pa-check--top .pa-check__box{margin-top:1px}
.pa-check--error .pa-check__box{border-color:var(--pa-danger);box-shadow:0 0 0 3px rgba(200,16,46,.12)}
.pa-check--disabled{opacity:.45;cursor:not-allowed}
.pa-check--glass{color:#fff}
.pa-check--glass .pa-check__box{background:var(--glass-fill);border-color:var(--glass-border)}
.pa-check--glass input:checked+.pa-check__box{background:#fff;border-color:#fff;box-shadow:var(--glow-ring)}
.pa-check--glass input:checked+.pa-check__box::after{border-color:var(--pa-navy-500)}
.pa-check--glass.pa-check--radio input:checked+.pa-check__box::after{background:var(--pa-navy-500)}
.pa-switch__track{width:48px;height:28px;flex:none;border-radius:999px;background:var(--pa-frost);border:1px solid var(--border-hairline);position:relative;transition:all var(--dur-base) var(--ease-glide)}
.pa-switch__track::after{content:"";position:absolute;top:2px;left:2px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 2px 6px rgba(7,20,48,.2);transition:transform var(--dur-base) var(--ease-reveal)}
.pa-check input:checked+.pa-switch__track{background:var(--pa-navy-500);border-color:var(--pa-navy-500);box-shadow:0 0 16px rgba(78,148,210,.45)}
.pa-check input:checked+.pa-switch__track::after{transform:translateX(20px)}
.pa-check--glass .pa-switch__track{background:var(--glass-fill);border-color:var(--glass-border)}
.pa-check--glass input:checked+.pa-switch__track{background:rgba(255,255,255,.92);box-shadow:var(--glow-ring)}
.pa-check--glass input:checked+.pa-switch__track::after{background:var(--pa-navy-500)}
/* Tag — frosted chip. Interactive chips with a radio inside are the booking form's choices. */
.pa-tag{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:var(--tap-min);padding:0 22px;border-radius:var(--radius-pill);background:rgba(255,255,255,.66);border:1px solid rgba(27,58,107,.2);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);font:500 14px/1.2 var(--font-sans);letter-spacing:.01em;color:var(--pa-navy-500);white-space:nowrap;cursor:default;transition:background var(--dur-base) var(--ease-glide),border-color var(--dur-base) var(--ease-glide),box-shadow var(--dur-base) var(--ease-glide),color var(--dur-base) var(--ease-glide)}
.pa-tag--interactive{cursor:pointer}
.pa-tag--interactive:hover{background:#fff;border-color:rgba(78,148,210,.6);box-shadow:0 0 18px rgba(173,210,240,.55)}
.pa-tag--selected,.pa-tag:has(input:checked){background:var(--pa-navy-500);border-color:var(--pa-navy-500);color:#fff;box-shadow:0 0 0 3px rgba(173,210,240,.42),0 0 18px rgba(78,148,210,.42)}
.pa-tag input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}
.pa-tag:has(input:focus-visible){box-shadow:0 0 0 2px #fff,0 0 0 4px var(--focus-ring)}
.pa-tag--compact{min-height:32px;padding:0 14px;font:600 11px/1 var(--font-sans);letter-spacing:.14em;text-transform:uppercase}
.pa-tag--glass{color:#fff;background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.28)}
.pa-tag--glass.pa-tag--interactive:hover{color:var(--pa-frost-hi);background:rgba(255,255,255,.1);border-color:rgba(212,238,255,.7);box-shadow:0 0 18px rgba(170,215,255,.25)}
.pa-tag--glass:is(.pa-tag--selected,:has(input:checked)){background:rgba(255,255,255,.94);color:var(--pa-navy-500);border-color:#fff;box-shadow:var(--glow-ring)}
.pa-chips{display:flex;flex-wrap:wrap;gap:10px}
/* On narrow phones a long option (the Spanish "Mantenimiento de aire acondicionado")
   is wider than the form card, so chips may wrap onto two lines there. */
@media (max-width:420px){.pa-chips .pa-tag{max-width:100%;white-space:normal;text-align:center;padding:10px 18px;line-height:1.25}}
.pa-field--error .pa-tag{border-color:rgba(200,16,46,.55)}
/* ---- components/surfaces/surfaces.css */
/* Prism Air — surfaces: Card, Badge, Tabs, Accordion, Dialog, Toast, Tooltip */
.pa-card{position:relative;display:block;border-radius:var(--radius-xl);overflow:hidden;font-family:var(--font-sans);color:inherit;text-decoration:none}
a.pa-card:hover{color:inherit}
.pa-card--glass{background:var(--glass-fill);border:1px solid rgba(255,255,255,.34);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);color:#fff;box-shadow:0 0 30px rgba(173,210,240,.12),inset 0 0 24px rgba(214,236,255,.08),inset 0 1px 0 rgba(255,255,255,.2)}
.pa-card--glass::before{content:"";position:absolute;inset:0;background:var(--glass-sheen);pointer-events:none}
.pa-card--frost{background:rgba(255,255,255,.68);border:1px solid rgba(255,255,255,.92);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);color:var(--text-body);box-shadow:var(--shadow-md),inset 0 0 30px rgba(214,236,255,.55)}
.pa-card--paper{background:#fff;border:1px solid var(--border-hairline);color:var(--text-body);box-shadow:var(--shadow-sm)}
.pa-card--snow{background:var(--pa-snow);border:1px solid var(--border-hairline);color:var(--text-body)}
.pa-card--navy{background:var(--grad-navy-depth);color:#fff;box-shadow:var(--shadow-lg)}
.pa-card__media{display:block;width:100%;object-fit:cover}
.pa-card__body{position:relative;z-index:1;padding:28px}
.pa-card--rime::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;box-shadow:inset 0 0 0 1px rgba(214,236,255,.32),inset 0 0 38px rgba(214,236,255,.2);background:radial-gradient(120% 70% at 0% 0%,rgba(230,244,255,.22),rgba(230,244,255,0) 40%),radial-gradient(90% 60% at 100% 100%,rgba(230,244,255,.16),rgba(230,244,255,0) 45%)}
.pa-card--interactive{cursor:pointer;transition:transform var(--dur-slow) var(--ease-reveal),box-shadow var(--dur-slow) var(--ease-reveal),border-color var(--dur-slow) var(--ease-reveal)}
.pa-card--interactive:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg),0 0 0 1px rgba(173,210,240,.6),0 0 34px rgba(173,210,240,.3)}
.pa-card--glass.pa-card--interactive:hover{border-color:rgba(212,238,255,.75);box-shadow:0 0 0 1px rgba(212,238,255,.4),0 0 38px rgba(170,215,255,.28),inset 0 0 30px rgba(214,236,255,.14)}
.pa-card--interactive .pa-card__media{transition:transform var(--dur-reveal) var(--ease-reveal)}
.pa-card--interactive:hover .pa-card__media{transform:scale(1.04)}
.pa-card__sheen{position:absolute;inset:0;z-index:3;pointer-events:none;border-radius:inherit;background:linear-gradient(105deg,rgba(230,244,255,0) 36%,rgba(230,244,255,.14) 46%,rgba(255,255,255,.26) 50%,rgba(230,244,255,.14) 54%,rgba(230,244,255,0) 64%);transform:translateX(-130%)}
@media (hover:hover){.pa-card--interactive:hover .pa-card__sheen{animation:pa-sheen 1.4s var(--ease-glide)}}
/* Badge */
.pa-badge{display:inline-flex;align-items:center;gap:7px;height:26px;padding:0 12px;border-radius:999px;font:600 10.5px/1 var(--font-sans);letter-spacing:.16em;text-transform:uppercase;white-space:nowrap}
.pa-badge--navy{background:var(--pa-navy-500);color:#fff}
.pa-badge--glass{background:var(--glass-fill);border:1px solid var(--glass-border);color:#fff;backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur)}
.pa-badge--ice{background:var(--pa-ice-100);color:var(--pa-navy-600);border:1px solid var(--pa-ice-200)}
.pa-badge--crimson{background:var(--pa-crimson-100);color:var(--pa-crimson-700);border:1px solid rgba(200,16,46,.22)}
.pa-badge--outline{border:1px solid rgba(200,16,46,.55);color:var(--pa-crimson-700)}
.pa-badge__dot{width:6px;height:6px;flex:none;border-radius:50%;background:currentColor}
.pa-badge--live .pa-badge__dot{background:var(--pa-live);box-shadow:var(--glow-live)}
/* Tabs */
.pa-tabs{display:inline-flex;gap:4px;padding:4px;max-width:100%;overflow-x:auto;scrollbar-width:none;border-radius:999px;font-family:var(--font-sans)}
.pa-tabs::-webkit-scrollbar{display:none}
.pa-tabs--light{background:var(--pa-snow);border:1px solid var(--border-hairline)}
.pa-tabs--glass{background:var(--glass-fill);border:1px solid var(--glass-border-soft);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur)}
.pa-tab{flex:none;height:40px;padding:0 22px;border:0;border-radius:999px;background:transparent;font:600 11px/1 var(--font-sans);letter-spacing:var(--tracking-caps);text-transform:uppercase;cursor:pointer;transition:all var(--dur-base) var(--ease-glide)}
.pa-tabs--light .pa-tab{color:var(--text-muted)}
.pa-tabs--light .pa-tab:hover{color:var(--pa-navy-500)}
.pa-tabs--light .pa-tab[aria-selected="true"]{background:#fff;color:var(--pa-navy-500);box-shadow:var(--shadow-sm),0 0 0 1px rgba(173,210,240,.6)}
.pa-tabs--glass .pa-tab{color:rgba(255,255,255,.74)}
.pa-tabs--glass .pa-tab:hover{color:var(--pa-frost-hi)}
.pa-tabs--glass .pa-tab[aria-selected="true"]{background:rgba(255,255,255,.92);color:var(--pa-navy-500);box-shadow:0 0 18px rgba(170,215,255,.45)}
.pa-tabs--underline{gap:32px;padding:0;border-radius:0;border-bottom:1px solid var(--border-hairline)}
.pa-tabs--underline .pa-tab{height:46px;padding:0;border-radius:0;color:var(--text-muted);border-bottom:1.5px solid transparent;margin-bottom:-1px}
.pa-tabs--underline .pa-tab:hover{color:var(--pa-navy-500)}
.pa-tabs--underline .pa-tab[aria-selected="true"]{color:var(--pa-navy-500);border-bottom-color:var(--pa-crimson-500)}
/* Accordion — native <details>; works without JavaScript */
.pa-acc{border-top:1px solid var(--border-hairline)}
.pa-acc__item{border-bottom:1px solid var(--border-hairline)}
.pa-acc__q{display:flex;justify-content:space-between;align-items:center;gap:24px;min-height:var(--tap-min);padding:20px 0;cursor:pointer;list-style:none;font:500 16.5px/1.45 var(--font-sans);color:var(--text-strong);transition:color var(--dur-base) var(--ease-glide)}
.pa-acc__q::-webkit-details-marker{display:none}
.pa-acc__q:hover{color:var(--pa-navy-500)}
.pa-acc__ic{position:relative;flex:none;width:34px;height:34px;border-radius:50%;border:1px solid var(--border-strong);color:var(--pa-navy-500);transition:background-color var(--dur-base) var(--ease-glide),border-color var(--dur-base) var(--ease-glide),box-shadow var(--dur-base) var(--ease-glide),color var(--dur-base)}
.pa-acc__ic::before,.pa-acc__ic::after{content:"";position:absolute;left:50%;top:50%;width:12px;height:1.5px;margin:-.75px 0 0 -6px;background:currentColor;transition:transform var(--dur-slow) var(--ease-reveal)}
.pa-acc__ic::after{transform:rotate(90deg)}
.pa-acc__item[open] .pa-acc__ic{background:var(--pa-navy-500);border-color:var(--pa-navy-500);color:#fff;box-shadow:0 0 0 3px rgba(173,210,240,.35),0 0 14px rgba(78,148,210,.4)}
.pa-acc__item[open] .pa-acc__ic::after{transform:rotate(0)}
.pa-acc__a{padding:0 64px 24px 0;font-size:15.5px;line-height:1.75;color:var(--text-body)}
.pa-acc__a p{margin:0}
.pa-acc__item[open] .pa-acc__a{animation:pa-nudge .7s var(--ease-reveal)}
@keyframes pa-nudge{from{transform:translateY(8px)}}
@media (max-width:640px){.pa-acc__a{padding-right:0}.pa-acc__q{font-size:15.5px;padding:18px 0}}
/* Dialog */
.pa-dialog__scrim{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(4,10,23,.6);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);animation:pa-fade var(--dur-base) var(--ease-glide)}
.pa-dialog__scrim--inline{position:absolute}
.pa-dialog{position:relative;width:min(540px,100%);max-height:100%;overflow:auto;border-radius:var(--radius-xl);padding:44px 40px 36px;text-align:center;font-family:var(--font-sans);animation:pa-rise var(--dur-slow) var(--ease-reveal)}
.pa-dialog--wide{width:min(1080px,100%);padding:0;text-align:left;overflow:hidden}
.pa-dialog--glass{background:rgba(255,255,255,.12);border:1px solid var(--glass-border);color:#fff;backdrop-filter:blur(28px) saturate(140%);-webkit-backdrop-filter:blur(28px) saturate(140%);box-shadow:0 0 60px rgba(173,210,240,.14),inset 0 0 30px rgba(214,236,255,.08)}
.pa-dialog--light{background:#fff;color:var(--text-body);box-shadow:var(--shadow-lg)}
.pa-dialog__title{margin:0 0 12px;font:500 34px/1.02 var(--font-display);letter-spacing:.01em;text-transform:uppercase}
.pa-dialog--glass .pa-dialog__title{text-shadow:var(--glow-text-soft)}
.pa-dialog--light .pa-dialog__title{color:var(--pa-navy-500)}
.pa-dialog__body{margin:0 auto 28px;max-width:420px;font-size:15px;line-height:1.65;opacity:.92}
.pa-dialog__actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.pa-dialog__close{position:absolute;top:16px;right:16px;z-index:2}
/* Toast — sits above the phone call bar, never over it */
.pa-toast{display:flex;align-items:center;gap:14px;min-width:300px;max-width:460px;padding:12px 14px 12px 20px;border-radius:999px;font:400 14px/1.4 var(--font-sans);animation:pa-rise var(--dur-slow) var(--ease-reveal)}
.pa-toast--glass{background:rgba(7,20,48,.66);border:1px solid rgba(255,255,255,.4);color:#fff;backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);box-shadow:0 0 24px rgba(173,210,240,.16)}
.pa-toast--light{background:#fff;color:var(--text-strong);border:1px solid var(--border-hairline);box-shadow:var(--shadow-md)}
.pa-toast__dot{width:8px;height:8px;border-radius:50%;flex:none;background:var(--pa-ice-500);box-shadow:0 0 10px var(--pa-ice-400)}
.pa-toast__dot--success{background:var(--pa-live);box-shadow:var(--glow-live)}
.pa-toast__dot--danger{background:var(--pa-crimson-500);box-shadow:var(--glow-crimson)}
.pa-toast__msg{flex:1}.pa-toast__msg b{font-weight:600}
.pa-toast__action{flex:none;min-height:36px;background:none;border:0;padding:0 10px;font:600 11px var(--font-sans);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:inherit;cursor:pointer;opacity:.85;text-decoration:none}
.pa-toast__action:hover{opacity:1;color:inherit}
/* Tooltip */
.pa-tip{position:relative;display:inline-flex}
.pa-tip__bubble{position:absolute;left:50%;bottom:calc(100% + 10px);z-index:50;transform:translate(-50%,4px);white-space:nowrap;padding:9px 14px;border-radius:999px;font:500 11.5px/1 var(--font-sans);letter-spacing:.04em;opacity:0;pointer-events:none;transition:opacity var(--dur-base) var(--ease-glide),transform var(--dur-base) var(--ease-glide)}
.pa-tip__bubble--dark{background:var(--pa-abyss);color:#fff;box-shadow:var(--shadow-md)}
.pa-tip__bubble--glass{background:rgba(255,255,255,.94);color:var(--pa-navy-500);box-shadow:0 0 20px rgba(173,210,240,.6)}
.pa-tip__bubble--bottom{bottom:auto;top:calc(100% + 10px);transform:translate(-50%,-4px)}
.pa-tip:hover .pa-tip__bubble,.pa-tip:focus-within .pa-tip__bubble,.pa-tip--open .pa-tip__bubble{opacity:1;transform:translate(-50%,0)}
/* ---- components/brand/brand.css */
/* Prism Air — brand pieces: GlowText, FrostRule, ArrowLink, EmergencyLine, Stars */
.pa-glowtext{margin:0;color:#fff;font:500 var(--fs-h1)/var(--lh-display) var(--font-display);letter-spacing:.005em;text-transform:uppercase;text-shadow:var(--glow-text)}
.pa-glowtext--sans{font:400 var(--fs-h2)/1.15 var(--font-sans);letter-spacing:var(--tracking-h2)}
.pa-glowtext b{font-weight:600}
/* ice: the letters themselves are frosted — white core, ice at the foot, and a glint crosses once */
.pa-glowtext--ice{padding:.06em 0 .14em;margin:-.06em 0 -.14em;background:linear-gradient(100deg,rgba(255,255,255,0) 40%,rgba(255,255,255,.95) 50%,rgba(255,255,255,0) 60%) 120% 0/260% 100% no-repeat,linear-gradient(180deg,#FFFFFF 0%,#FFFFFF 42%,#D4EEFF 70%,#9CC8EE 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;text-shadow:none;filter:drop-shadow(0 0 14px rgba(173,210,240,.5)) drop-shadow(0 0 2px rgba(255,255,255,.6))}
.pa-glowtext--animate.pa-glowtext--ice{animation:pa-leaf 2.4s var(--ease-glide) .5s both}
.pa-glowtext--animate:not(.pa-glowtext--ice){animation:pa-clear 1.3s var(--ease-reveal) both}
@keyframes pa-leaf{from{background-position:120% 0,0 0}to{background-position:-20% 0,0 0}}
@media (forced-colors:active){.pa-glowtext--ice{-webkit-text-fill-color:currentColor;background:none}}
/* FrostRule — the crimson hairline; when it arrives, frost glints along it once */
.pa-rule{position:relative;display:block;width:var(--w,120px);height:1.5px;border:0;margin:26px 0;background:var(--grad-crimson);box-shadow:0 0 10px rgba(200,16,46,.3);overflow:visible}
.pa-rule--center{margin-inline:auto}
.pa-rule--frost{height:1px;background:var(--grad-frostline);box-shadow:0 0 10px rgba(173,210,240,.5)}
.pa-rule--hairline{height:1px;background:var(--border-hairline);box-shadow:none}
.pa-rule::after{content:"";position:absolute;top:-3px;left:0;width:26px;height:7px;border-radius:50%;background:radial-gradient(closest-side,rgba(255,255,255,.98),rgba(214,236,255,0));opacity:0}
.pa-rule--wait,.pa-rule--animate{transform-origin:left;transition:transform 1.4s var(--ease-reveal)}
.pa-rule--wait{transform:scaleX(0)}
.pa-rule--center:is(.pa-rule--wait,.pa-rule--animate){transform-origin:center}
.pa-rule--animate::after{animation:pa-rule-glint 1.6s var(--ease-glide) 1.1s}
@keyframes pa-rule-glint{0%{opacity:0;left:-10px}15%{opacity:1}85%{opacity:1}100%{opacity:0;left:calc(100% - 16px)}}
@keyframes pa-rule-draw{from{transform:scaleX(0)}to{transform:none}}
/* ArrowLink — small caps on a crimson underline; the arrow nudges and an ice star glints at the corner */
.pa-arrow{position:relative;display:inline-flex;align-items:center;gap:10px;padding-bottom:6px;border-bottom:1px solid var(--pa-crimson-500);font:600 11px/1.2 var(--font-sans);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--pa-navy-500);transition:border-color var(--dur-base) var(--ease-glide),color var(--dur-base) var(--ease-glide),text-shadow var(--dur-base) var(--ease-glide)}
.pa-arrow .pa-icon{transition:transform var(--dur-base) var(--ease-glide)}
.pa-arrow:hover{color:var(--pa-crimson-500);border-bottom-color:currentColor}
.pa-arrow:hover .pa-icon{transform:translateX(3px)}
.pa-arrow::after{content:"";position:absolute;inset:-12px -4px -8px}
.pa-arrow::before{content:"";position:absolute;top:-7px;right:-9px;width:10px;height:10px;pointer-events:none;background:radial-gradient(circle,#fff 0 18%,var(--pa-ice-300) 46%,rgba(173,210,240,0) 74%);clip-path:var(--ice-star);opacity:0;transform:scale(.2) rotate(-60deg)}
@media (hover:hover){.pa-arrow:hover::before{animation:pa-twinkle 1s var(--ease-glide) .08s}}
.pa-arrow:focus-visible::before{animation:pa-twinkle 1s var(--ease-glide)}
.pa-arrow--light{color:#fff;border-bottom-color:var(--pa-crimson-400)}
.pa-arrow--light:hover{color:var(--pa-frost-hi);border-bottom-color:var(--pa-frost-hi);text-shadow:0 0 10px rgba(170,215,255,.55)}
/* EmergencyLine — the green 24/7 dot pulses gently (still under reduced motion) */
.pa-live{display:inline-flex;align-items:center;gap:10px;min-height:var(--tap-min);font:600 11px/1 var(--font-sans);letter-spacing:.16em;text-transform:uppercase;color:inherit;white-space:nowrap;text-decoration:none}
a.pa-live:hover{color:inherit;opacity:.85}
.pa-live-dot{position:relative;width:8px;height:8px;flex:none;border-radius:50%;background:var(--pa-live);box-shadow:0 0 10px rgba(47,210,122,.7);animation:pa-pulse 2.4s var(--ease-glide) infinite}
/* Stars — crimson on light grounds, frost on dark; they light one by one as a review arrives */
.pa-stars{display:inline-flex;align-items:center;gap:3px;color:var(--pa-crimson-500)}
.pa-stars--ice{color:var(--pa-frost-hi);filter:drop-shadow(0 0 6px rgba(170,215,255,.6))}
.pa-stars__label{margin-left:8px;font:600 12.5px/1 var(--font-sans);letter-spacing:.02em;color:var(--text-strong)}
.pa-stars--ice .pa-stars__label{color:#fff;filter:none}
.pa-stars--animate .pa-icon{opacity:.15;transform:scale(.4) rotate(-40deg);transition:opacity .5s var(--ease-glide),transform .9s var(--ease-reveal);transition-delay:calc(.35s + var(--i,0) * 120ms)}
.pa-stars--animate.is-in .pa-icon{opacity:1;transform:none}
/* ---- components/media/media.css */
/* Prism Air — media: VideoBackdrop, PhotoSlot, FrostParticles. The site is video-led: films play behind the story,
   graded cold, with frosted-glass edges that creep in as you scroll. */
.pa-video{position:absolute;inset:0;z-index:0;overflow:hidden;background:var(--pa-deep);isolation:isolate}
.pa-video__poster,.pa-video__el{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:cover;object-position:var(--pos,50% 50%)}
.pa-video__el{opacity:0;transition:opacity 1.6s var(--ease-glide)}
.pa-video__el.is-playing{opacity:1}
.pa-video__grade{position:absolute;inset:0;pointer-events:none;mix-blend-mode:color;background:var(--pa-navy-500);opacity:var(--grade,.32)}
.pa-video--heat .pa-video__grade{background:var(--pa-crimson-700);mix-blend-mode:soft-light;opacity:var(--grade,.6)}
.pa-video__wash{position:absolute;inset:0;pointer-events:none}
.pa-video--abyss .pa-video__wash{background:radial-gradient(70% 70% at 50% 50%,rgba(4,10,23,.22),rgba(4,10,23,.66))}
.pa-video--left .pa-video__wash{background:var(--grad-protect-left),var(--grad-protect-top),linear-gradient(0deg,rgba(4,10,23,.45),rgba(4,10,23,0) 40%)}
.pa-video--bottom .pa-video__wash{background:var(--grad-protect-top),var(--grad-protect-bottom)}
.pa-video--dim .pa-video__wash{background:rgba(4,10,23,.55)}   /* the owner portrait: the dark overlay David asked for */
.pa-video--frost .pa-video__wash{background:linear-gradient(180deg,rgba(7,20,48,.42),rgba(7,20,48,.08) 40%,rgba(7,20,48,.6))}
/* frosted-glass edges: the window ices over from the corners (set --frost 0…1) */
.pa-video__frost{position:absolute;inset:-2px;pointer-events:none;background:radial-gradient(ellipse 88% 84% at 50% 48%,rgba(230,244,255,0) calc(74% - var(--frost,0) * 42%),rgba(230,244,255,calc(var(--frost,0) * .4)) 100%)}
.pa-video__frost::before{content:"";position:absolute;inset:0;backdrop-filter:blur(12px) saturate(115%) brightness(1.1);-webkit-backdrop-filter:blur(12px) saturate(115%) brightness(1.1);-webkit-mask:radial-gradient(ellipse 88% 84% at 50% 48%,transparent calc(76% - var(--frost,0) * 42%),#000 100%);mask:radial-gradient(ellipse 88% 84% at 50% 48%,transparent calc(76% - var(--frost,0) * 42%),#000 100%)}
.pa-video__toggle{position:absolute;right:var(--gutter);bottom:24px;z-index:4}
@media (max-width:900px){.pa-video__toggle{bottom:auto;top:calc(var(--topbar-h) + 10px)}}
.pa-video__toggle .pa-icon{pointer-events:none}
/* no footage yet: cold mist drifts on the veil, and the placeholder says what goes here */
.pa-video--empty{background:var(--grad-veil)}
.pa-video__mist{position:absolute;inset:-20%;pointer-events:none;background:radial-gradient(40% 30% at 30% 60%,rgba(173,210,240,.22),rgba(173,210,240,0) 70%),radial-gradient(35% 28% at 70% 40%,rgba(214,236,255,.18),rgba(214,236,255,0) 70%),radial-gradient(50% 40% at 50% 90%,rgba(78,148,210,.25),rgba(78,148,210,0) 70%);animation:pa-breath 9s var(--ease-in-out) infinite}
.pa-video__ph{position:absolute;left:var(--gutter);bottom:26px;z-index:4;display:inline-flex;align-items:center;gap:8px;max-width:calc(100% - 2 * var(--gutter) - 60px);padding:9px 14px;border-radius:999px;font:600 10.5px/1.3 var(--font-sans);letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.9);background:rgba(4,10,23,.38);border:1px dashed rgba(255,255,255,.5);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.pa-video__ph--top{bottom:auto;top:calc(var(--topbar-h) + 18px)}
/* PhotoSlot — the brief's [PHOTO: …] placeholders, frosted until the real photograph lands */
.pa-photo{position:relative;display:grid;place-items:center;width:100%;margin:0;aspect-ratio:var(--ar,4/5);overflow:hidden;border-radius:var(--radius,var(--radius-xl));background:var(--grad-ice);color:var(--pa-navy-500);isolation:isolate}
.pa-photo img,.pa-photo video{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:cover}
.pa-photo::before{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(80% 60% at 28% 18%,rgba(255,255,255,.75),rgba(255,255,255,0) 62%),radial-gradient(70% 55% at 85% 95%,rgba(127,182,230,.35),rgba(127,182,230,0) 65%)}
.pa-photo--empty::after{content:"";position:absolute;inset:12px;border:1px dashed rgba(27,58,107,.26);border-radius:calc(var(--radius,var(--radius-xl)) - 8px);pointer-events:none}
.pa-photo__ph{position:relative;display:flex;flex-direction:column;align-items:center;gap:12px;max-width:26ch;padding:24px;text-align:center;font:600 11px/1.5 var(--font-sans);letter-spacing:.14em;text-transform:uppercase}
.pa-photo__ph .pa-icon{opacity:.65}
.pa-photo--dark{background:var(--grad-veil);color:rgba(255,255,255,.88)}
.pa-photo--dark::before{background:radial-gradient(70% 55% at 30% 20%,rgba(173,210,240,.2),rgba(173,210,240,0) 62%)}
.pa-photo--dark.pa-photo--empty::after{border-color:rgba(255,255,255,.3)}
/* cold reveal: a photograph opens out of a cold mist at its centre */
.pa-photo--reveal img{-webkit-mask:radial-gradient(ellipse 170% 170% at 50% 42%,#000 55%,transparent 100%) 50% 42%/100% 100% no-repeat;mask:radial-gradient(ellipse 170% 170% at 50% 42%,#000 55%,transparent 100%) 50% 42%/100% 100% no-repeat;transition:-webkit-mask-size 1.8s var(--ease-reveal),mask-size 1.8s var(--ease-reveal),filter 2.4s var(--ease-glide),transform var(--dur-reveal) var(--ease-reveal)}
.js .pa-photo--reveal:not(.is-in) img{-webkit-mask-size:0% 0%;mask-size:0% 0%;filter:brightness(1.3) saturate(.6) hue-rotate(-12deg);transform:scale(1.05)}
/* FrostParticles — ice motes drifting through dark sections (canvas, paused off screen) */
.pa-snow{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;mix-blend-mode:screen}
/* ---- components/site/site.css */
/* Prism Air — site parts the brief puts on every page: TopBar (+ phone menu), MobileCallBar, CTABand, SiteFooter,
   LangSwitch; and the parts several pages share: DoorCard, StepList, ReviewCard. */
/* ---------- TopBar */
.pa-top{position:fixed;inset:0 0 auto;z-index:60;color:#fff;transition:background-color var(--dur-slow) var(--ease-glide),box-shadow var(--dur-slow) var(--ease-glide),color var(--dur-base) var(--ease-glide)}
.pa-top--static{position:sticky;top:0}
.pa-top--contained{position:absolute}
.pa-top::before{content:"";position:absolute;inset:0 0 -40px;z-index:-1;pointer-events:none;background:var(--grad-protect-top);transition:opacity var(--dur-slow) var(--ease-glide)}
.pa-top__bar{display:flex;align-items:center;gap:clamp(16px,2.4vw,32px);height:var(--topbar-h);transition:height var(--dur-slow) var(--ease-reveal)}
.pa-top__brand{display:inline-flex;align-items:center;gap:12px;flex:none;color:inherit}
.pa-top__brand:hover{color:inherit}
.pa-top__mark{height:34px;width:auto;transition:height var(--dur-slow) var(--ease-reveal)}
.pa-top__word{height:16px;width:auto}
.pa-top__nav{display:flex;align-items:center;gap:clamp(18px,2.2vw,34px);margin-left:auto}
.pa-top__link{position:relative;padding:12px 0 10px;font:600 11px/1 var(--font-sans);letter-spacing:.2em;text-transform:uppercase;color:inherit;white-space:nowrap}
.pa-top__link::after{content:"";position:absolute;left:0;right:.2em;bottom:4px;height:1.5px;background:var(--pa-crimson-500);transform:scaleX(0);transform-origin:left;transition:transform var(--dur-slow) var(--ease-reveal)}
.pa-top__link:hover{color:var(--pa-frost-hi)}
.pa-top__link:hover::after,.pa-top__link[aria-current]::after{transform:scaleX(1)}
.pa-top__actions{display:flex;align-items:center;gap:clamp(12px,1.5vw,20px);flex:none}
.pa-top .pa-lang__opt{min-width:34px;padding:0 8px 0 calc(8px + .16em)}
.pa-top__tel{display:inline-flex;align-items:center;gap:8px;min-height:var(--tap-min);font:600 13px/1 var(--font-sans);letter-spacing:.06em;color:inherit;white-space:nowrap}
.pa-top__tel:hover{color:var(--pa-frost-hi)}
.pa-top__burger{display:none;width:44px;height:44px;padding:0;border-radius:50%;border:1px solid currentColor;background:transparent;color:inherit;cursor:pointer;place-items:center}
.pa-top__burger i{display:block;width:18px;height:1.5px;background:currentColor}
.pa-top__burger i+i{width:12px;margin:6px 0 0 6px}
.pa-top__callic{display:none}
.pa-top__progress{position:absolute;left:0;right:0;bottom:-1px;height:1.5px;background:var(--grad-crimson);transform:scaleX(var(--p,0));transform-origin:left;opacity:0;transition:opacity var(--dur-base) var(--ease-glide)}
.pa-top.is-solid{background:var(--glass-abyss);backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%);box-shadow:0 1px 0 rgba(173,210,240,.16),0 12px 32px rgba(0,0,0,.28)}
.pa-top.is-solid::before{opacity:0}
.pa-top.is-solid .pa-top__bar{height:var(--topbar-h-solid)}
.pa-top.is-solid .pa-top__mark{height:30px}
.pa-top.is-solid .pa-top__progress{opacity:1}
.pa-top--light{color:var(--pa-navy-500)}
.pa-top--light::before{opacity:0}
.pa-top--light .pa-top__link:hover,.pa-top--light .pa-top__tel:hover{color:var(--pa-crimson-500)}
.pa-top--light.is-solid{background:rgba(255,255,255,.84);box-shadow:0 1px 0 var(--border-hairline),0 12px 32px rgba(7,20,48,.08)}
/* The bar gives things up by priority as it narrows: the phone number first,
   then the 24/7 pill, then the nav (to the burger), then everything but the
   phone icon and the burger. The Spanish words are longer, so the Spanish bar
   crosses each line sooner; the html lang attribute carries the difference.
   Widths were measured, not guessed. The Spanish nav and the Spanish pill do
   not both fit even at the container's maximum, so the Spanish bar never
   shows the number, and from 1540px the pill (itself a call link) takes the
   phone icon's place. */
@media (max-width:1439px){.pa-top__tel span{display:none}}
@media (max-width:1319px){.pa-top__live{display:none}}
@media (max-width:1140px){.pa-top__nav{display:none}.pa-top__burger{display:inline-grid}.pa-top__actions{margin-left:auto}.pa-top__live{display:inline-flex}}
html[lang=es] .pa-top__tel span{display:none}
@media (min-width:1540px){html[lang=es] .pa-top__tel{display:none}}
@media (max-width:1539px){html[lang=es] .pa-top__live{display:none}}
@media (max-width:1250px){html[lang=es] .pa-top__nav{display:none}html[lang=es] .pa-top__burger{display:inline-grid}html[lang=es] .pa-top__actions{margin-left:auto}html[lang=es] .pa-top__live{display:inline-flex}}
@media (max-width:900px){.pa-top__live,html[lang=es] .pa-top__live{display:none}}
@media (max-width:760px){.pa-top__live,.pa-top__tel,.pa-top__book,.pa-top .pa-lang{display:none}.pa-top__callic{display:inline-flex}.pa-top__mark{height:30px}.pa-top__word{height:14px}}
@media (max-width:360px){.pa-top__word{display:none}}
/* phone menu: the bottom call bar stays above it */
.pa-menu{position:fixed;inset:0;z-index:65;display:flex;flex-direction:column;padding:0 var(--gutter) calc(var(--callbar-h) + 34px + env(safe-area-inset-bottom));color:#fff;background:linear-gradient(165deg,#040A17 0%,#0B2148 40%,#1B3A6B 75%,#0E2547 100%);overflow-y:auto;overscroll-behavior:contain;animation:pa-fade var(--dur-base) var(--ease-glide)}
.pa-menu__top{display:flex;justify-content:space-between;align-items:center;min-height:var(--topbar-h)}
.pa-menu__list{list-style:none;margin:16px 0 0;padding:0}
.pa-menu__list li{animation:pa-rise var(--dur-slow) var(--ease-reveal) both}
.pa-menu__list li:nth-child(2){animation-delay:50ms}.pa-menu__list li:nth-child(3){animation-delay:100ms}.pa-menu__list li:nth-child(4){animation-delay:150ms}.pa-menu__list li:nth-child(5){animation-delay:200ms}
.pa-menu__link{display:flex;justify-content:space-between;align-items:center;padding:18px 0;border-bottom:1px solid rgba(255,255,255,.14);font:500 30px/1 var(--font-display);text-transform:uppercase;letter-spacing:.01em;color:#fff;text-shadow:var(--glow-text-soft)}
.pa-menu__link:hover,.pa-menu__link[aria-current]{color:var(--pa-frost-hi)}
.pa-menu__foot{margin-top:auto;padding-top:36px;display:grid;gap:18px}
.pa-menu__row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 22px}
.pa-menu__tel{display:inline-flex;align-items:center;gap:12px;min-height:var(--tap-min);font:500 30px/1 var(--font-display);letter-spacing:.02em;color:#fff;text-shadow:var(--glow-text-soft)}
.pa-menu__tel:hover{color:var(--pa-frost-hi)}
/* ---------- MobileCallBar: two equal buttons, pinned, from the first frame */
.pa-callbar{position:fixed;left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom));z-index:70;display:none;grid-template-columns:1fr 1fr;gap:6px;padding:5px;border-radius:999px;background:rgba(4,10,23,.76);border:1px solid rgba(173,210,240,.26);backdrop-filter:blur(18px) saturate(150%);-webkit-backdrop-filter:blur(18px) saturate(150%);box-shadow:0 10px 30px rgba(4,10,23,.25),inset 0 1px 0 rgba(255,255,255,.06)}
.pa-callbar .pa-btn{height:48px;min-height:48px;padding:0 10px;font-size:11px;letter-spacing:.14em;white-space:nowrap}
.pa-callbar--contained{position:absolute}
.pa-callbar--always,.pa-callbar--contained{display:grid}
@media (max-width:900px){.pa-callbar{display:grid}}
/* ---------- CTABand (above the footer, every page) */
.pa-cta{position:relative;overflow:hidden;isolation:isolate;padding:clamp(96px,12vw,168px) 0;color:#fff;text-align:center;background:var(--grad-navy-depth)}
.pa-cta__glow{position:absolute;left:50%;top:58%;z-index:-1;width:min(90vw,880px);aspect-ratio:1;translate:-50% -50%;pointer-events:none;background:radial-gradient(circle,rgba(214,236,255,.32) 0%,rgba(127,182,230,.14) 34%,rgba(27,58,107,0) 66%);mix-blend-mode:screen;animation:pa-breath 8s var(--ease-in-out) infinite}
.pa-cta__eyebrow{margin:0 0 18px}
.pa-cta__title{margin:0 auto;max-width:22ch;text-wrap:balance;font:500 clamp(34px,4.4vw,60px)/1 var(--font-display);letter-spacing:.005em;text-transform:uppercase;text-shadow:var(--glow-text)}
.pa-cta__line{max-width:46ch;margin:24px auto 0;font-size:var(--fs-lede);line-height:1.65;color:rgba(255,255,255,.9)}
.pa-cta__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:14px;margin-top:36px}
/* ---------- SiteFooter */
.pa-foot{position:relative;overflow:hidden;isolation:isolate;padding:clamp(64px,8vw,100px) 0 calc(36px + env(safe-area-inset-bottom));color:rgba(255,255,255,.86);background:var(--grad-abyss);border-top:1px solid rgba(173,210,240,.16)}
.pa-foot__grid{display:grid;grid-template-columns:1.5fr 1fr 1.3fr;gap:48px}
.pa-foot__logo{height:84px;width:auto}
.pa-foot__brand p{max-width:34ch;margin:22px 0 24px;font-size:14px;line-height:1.75;color:rgba(255,255,255,.78)}
.pa-foot__h{margin:6px 0 18px;font:600 10.5px/1 var(--font-sans);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;color:var(--pa-ice-300)}
.pa-foot ul{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.pa-foot li{font-size:14px}
.pa-foot a:not(.pa-btn){display:inline-flex;align-items:center;gap:10px;min-height:32px;color:rgba(255,255,255,.88);font-size:14px;overflow-wrap:anywhere}
.pa-foot a:not(.pa-btn):hover{color:var(--pa-frost-hi)}
/* the language pills keep their own size and colours inside the footer */
.pa-foot .pa-lang__opt{min-height:0;height:26px;font-size:10px;color:rgba(255,255,255,.84)}
.pa-foot .pa-lang__opt.is-on{color:var(--pa-navy-500)}
.pa-foot .pa-lang__opt:hover{color:var(--pa-frost-hi)}
.pa-foot .pa-lang__opt.is-on:hover{color:var(--pa-navy-500)}
.pa-foot .pa-icon{color:var(--pa-ice-300)}
.pa-foot__line{display:inline-flex;align-items:center;gap:10px;min-height:32px}
.pa-foot__rule{height:1px;border:0;margin:56px 0 24px;background:var(--grad-crimson);opacity:.55}
.pa-foot__legal{display:flex;justify-content:space-between;gap:12px 32px;flex-wrap:wrap;font-size:12px;letter-spacing:.03em;color:rgba(255,255,255,.64)}
@media (max-width:900px){.pa-foot__grid{grid-template-columns:1fr 1fr;gap:40px 24px}.pa-foot__brand{grid-column:1/-1}.pa-foot{padding-bottom:calc(var(--callbar-h) + 40px + env(safe-area-inset-bottom))}}
@media (max-width:520px){.pa-foot__grid{grid-template-columns:1fr}}
/* ---------- LangSwitch: EN | ES glass pill */
.pa-lang{display:inline-flex;align-items:center;gap:2px;padding:3px;border-radius:999px;border:1px solid rgba(255,255,255,.55);background:rgba(255,255,255,.08);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);box-shadow:0 0 14px rgba(173,210,240,.12),inset 0 0 10px rgba(255,255,255,.08)}
.pa-lang__opt{display:grid;place-items:center;min-width:38px;height:26px;padding:0 10px 0 calc(10px + .16em);border:0;border-radius:999px;background:none;font:600 10px/1 var(--font-sans);letter-spacing:.16em;color:rgba(255,255,255,.84);cursor:pointer;text-decoration:none;transition:color var(--dur-base) var(--ease-glide),text-shadow var(--dur-base) var(--ease-glide)}
.pa-lang__opt:hover{color:var(--pa-frost-hi);text-shadow:0 0 10px rgba(170,215,255,.5)}
.pa-lang__opt.is-on{background:#fff;color:var(--pa-navy-500);box-shadow:0 0 12px rgba(214,236,255,.4)}
.pa-lang--light{border-color:rgba(27,58,107,.28);background:rgba(255,255,255,.55)}
.pa-lang--light .pa-lang__opt{color:var(--pa-navy-500)}
.pa-lang--light .pa-lang__opt.is-on{background:var(--pa-navy-500);color:#fff}
/* ---------- DoorCard: the home hero's three paths, glass over the film */
.pa-door{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:12px;height:100%;padding:28px 28px 26px;border-radius:var(--radius-xl);color:#fff;background:rgba(7,20,48,.34);border:1px solid rgba(255,255,255,.3);backdrop-filter:blur(20px) saturate(140%);-webkit-backdrop-filter:blur(20px) saturate(140%);box-shadow:inset 0 1px 0 rgba(255,255,255,.18),inset 0 0 30px rgba(214,236,255,.08),0 20px 50px rgba(4,10,23,.25);overflow:hidden;isolation:isolate;transition:transform var(--dur-slow) var(--ease-reveal),border-color var(--dur-slow) var(--ease-reveal),box-shadow var(--dur-slow) var(--ease-reveal),background-color var(--dur-slow)}
.pa-door::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(90% 70% at 14% 0%,rgba(214,236,255,.3),rgba(214,236,255,0) 60%);opacity:0;transition:opacity 1s var(--ease-glide)}
.pa-door::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;border-radius:inherit;background:linear-gradient(105deg,rgba(230,244,255,0) 36%,rgba(230,244,255,.12) 46%,rgba(255,255,255,.22) 50%,rgba(230,244,255,.12) 54%,rgba(230,244,255,0) 64%);transform:translateX(-130%)}
@media (hover:hover){.pa-door:hover{transform:translateY(-6px);border-color:rgba(212,238,255,.75);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),inset 0 0 40px rgba(214,236,255,.16),0 0 0 1px rgba(212,238,255,.35),0 0 40px rgba(170,215,255,.22),0 28px 60px rgba(4,10,23,.32)}.pa-door:hover::before{opacity:1}.pa-door:hover::after{animation:pa-sheen 1.4s var(--ease-glide)}}
.pa-door__head{display:flex;align-items:center;justify-content:space-between;align-self:stretch;gap:12px}
.pa-door__ic{display:grid;place-items:center;width:50px;height:50px;flex:none;border-radius:50%;color:#fff;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.5);box-shadow:var(--glow-ring)}
.pa-door__n{font:600 10.5px/1 var(--font-sans);letter-spacing:.22em;color:var(--pa-ice-200)}
.pa-door__t{margin:8px 0 0;font:500 clamp(26px,2.3vw,34px)/1 var(--font-display);letter-spacing:.01em;text-transform:uppercase;text-shadow:var(--glow-text-soft)}
.pa-door__line{margin:0;max-width:32ch;font-size:15px;line-height:1.6;color:rgba(255,255,255,.88)}
.pa-door__actions{display:flex;flex-direction:column;align-items:flex-start;gap:14px;margin-top:auto;padding-top:12px;max-width:100%}
.pa-door__actions .pa-btn{max-width:100%;white-space:normal;text-align:center;line-height:1.3;height:auto;min-height:50px;padding-block:12px}
.pa-door__small{display:inline-flex;padding-bottom:5px;border-bottom:1px solid var(--pa-crimson-400);font:600 10.5px/1.2 var(--font-sans);letter-spacing:.16em;text-transform:uppercase;color:#fff}
.pa-door__small:hover{color:var(--pa-frost-hi);border-bottom-color:var(--pa-frost-hi)}
/* ---------- StepList: how it works. Each step arrives from the right, in reading order */
.pa-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(var(--n,3),minmax(0,1fr));gap:clamp(24px,3vw,44px)}
.pa-step{position:relative;padding-top:30px;border-top:1px solid var(--border-hairline)}
.pa-step::before{content:"";position:absolute;left:0;top:-1px;width:48px;height:1.5px;background:var(--pa-crimson-500);box-shadow:var(--glow-crimson);transition:width 1.4s var(--ease-reveal) .3s}
.pa-step__n{display:block;font:300 46px/1 var(--font-display);letter-spacing:.02em;color:var(--pa-ice-500)}
.pa-step__t{margin:18px 0 10px;font:400 24px/1.1 var(--font-display);letter-spacing:.03em;text-transform:uppercase;color:var(--text-strong)}
.pa-step p{margin:0;max-width:40ch;font-size:15.5px;line-height:1.7;color:var(--text-body)}
.js .pa-steps--animate .pa-step::before{width:0}
.js .pa-steps--animate .pa-step>*{opacity:0;transform:translateX(34px);filter:blur(4px);transition:opacity .9s var(--ease-glide),transform 1.3s var(--ease-reveal),filter 1.1s var(--ease-glide);transition-delay:calc(var(--d,0ms) + var(--k,0) * 140ms + 120ms)}
.pa-steps--animate.is-in .pa-step::before{width:48px}
.pa-steps--animate.is-in .pa-step>*{opacity:1;transform:none;filter:none}
.pa-steps--animate.is-in .pa-step>.pa-step__n{animation:pa-frostglow 2s var(--ease-glide) calc(var(--d,0ms) + 1.1s)}
.pa-steps--dark .pa-step{border-top-color:var(--border-on-dark-soft)}
.pa-steps--dark .pa-step__n{color:var(--pa-ice-300);text-shadow:var(--glow-frost)}
.pa-steps--dark .pa-step__t{color:#fff}
.pa-steps--dark .pa-step p{color:rgba(255,255,255,.82)}
.pa-steps--dark .pa-step::before{background:var(--pa-crimson-400)}
@media (max-width:760px){.pa-steps{grid-template-columns:minmax(0,1fr);row-gap:40px}}
/* ---------- ReviewCard */
.pa-review{margin:0;display:flex;flex-direction:column;gap:18px;height:100%;padding:32px 30px 28px}
.pa-review blockquote{margin:0}
.pa-review blockquote p{margin:0;font-size:16px;line-height:1.65}
.pa-review figcaption{margin-top:auto;display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:12.5px}
.pa-review figcaption b{font-weight:600;letter-spacing:.03em}
.pa-review figcaption span{font:600 10.5px/1.3 var(--font-sans);letter-spacing:.16em;text-transform:uppercase}
.pa-review--glass{color:#fff}
.pa-review--glass blockquote p{color:rgba(255,255,255,.9)}
.pa-review--glass figcaption b{color:var(--pa-frost-hi)}
.pa-review--glass figcaption span{color:rgba(255,255,255,.62)}
.pa-review--paper figcaption b{color:var(--pa-navy-500)}
.pa-review--paper figcaption span{color:var(--text-muted)}
/* page layouts, ported from the prototype's kit.css */
/* ---- pages.css */
/* Prism Air website UI kit — page layouts only. Every control, card and band comes from the design system (styles.css). */
html{scroll-behavior:smooth;background:var(--pa-abyss)}
body{overflow-x:clip;background:#fff}
main{display:block;overflow-x:clip}
/* ---------- home: opening scroll */
.pk-hero{position:relative;height:200svh;background:var(--pa-abyss);color:#fff}
.pk-hero.is-static{height:auto}
.pk-hero__stage{position:sticky;top:0;height:100svh;min-height:520px;overflow:hidden;isolation:isolate}
.pk-hero.is-static .pk-hero__stage{position:relative;height:auto;min-height:100svh}
.pk-heat{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:var(--heat,0);background:radial-gradient(80% 70% at 62% 38%,rgba(242,102,122,.5),rgba(153,8,36,.28) 60%,rgba(94,5,22,.55));mix-blend-mode:soft-light}
.pk-heat::after{content:"";position:absolute;inset:0;background:var(--pa-crimson-500);mix-blend-mode:color;opacity:.42}
.pk-hero__fx{position:absolute;inset:0;z-index:2;pointer-events:none;opacity:var(--cold,0)}
.pk-hero__copy{position:absolute;inset:0;z-index:5}
.pk-hero__copy>.pa-wrap{position:relative;height:100%}
.pk-beat{position:absolute;left:var(--gutter);right:var(--gutter);top:50%;margin:0;translate:0 -50%;font:500 clamp(44px,6.6vw,104px)/.94 var(--font-display);letter-spacing:.005em;text-transform:uppercase;text-shadow:var(--glow-text);will-change:opacity,transform,filter}
.pk-beat span{display:block}
.pk-beat b{display:block;font-weight:500}
.pk-final{position:relative;display:flex;flex-direction:column;justify-content:flex-end;height:100%;padding:calc(var(--topbar-h) + 28px) 0 clamp(26px,4.4vh,52px)}
.pk-final>*{will-change:opacity,transform}
.pk-final__eyebrow{display:flex;align-items:center;flex-wrap:wrap;margin:0 0 14px}
.pk-final__lede{max-width:54ch;margin:20px 0 0;font:var(--type-lede);color:rgba(255,255,255,.9)}
.pk-doors{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:clamp(22px,3.6vh,38px)}
.pk-doors--flow{padding:28px 0 8px;margin:0}
.pk-scroll{position:absolute;left:50%;bottom:calc(30px + env(safe-area-inset-bottom));z-index:6;display:flex;flex-direction:column;align-items:center;gap:10px;translate:-50% 0;font:600 10px/1 var(--font-sans);letter-spacing:.3em;text-transform:uppercase;color:rgba(255,255,255,.82);pointer-events:none;transition:opacity .6s var(--ease-glide)}
.pk-scroll i{display:block;width:1px;height:36px;background:linear-gradient(180deg,var(--pa-ice-200),rgba(173,210,240,0));transform-origin:top;animation:pa-draw 2.4s var(--ease-glide) infinite}
.pk-doorsec{display:none;background:var(--grad-abyss);color:#fff;padding-bottom:36px}
/* Phones, tablets and short screens: the pinned frame keeps the headline and the
   doors follow in normal flow, so nothing is pushed off the top of the frame */
@media (max-width:900px),(max-height:680px){.pk-doors-stage{display:none}.pk-doorsec{display:block}}
@media (min-width:601px) and (max-width:900px){.pk-doorsec .pk-doors{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}}
/* ---------- trust strip */
.pk-trust{background:#fff;border-bottom:1px solid var(--border-hairline)}
.pk-trust ul{display:flex;align-items:center;justify-content:center;gap:0;margin:0;padding:20px 0;list-style:none;overflow-x:auto;scrollbar-width:none;white-space:nowrap}
.pk-trust ul::-webkit-scrollbar{display:none}
.pk-trust li{display:inline-flex;align-items:center;gap:10px;flex:none;font:500 13.5px/1.3 var(--font-sans);color:var(--text-strong)}
.pk-trust li+li::before{content:"";width:6px;height:6px;margin:0 22px;border-radius:50%;background:var(--pa-crimson-500)}
.pk-trust li>.pa-icon{color:var(--pa-navy-500)}
@media (max-width:1100px){.pk-trust ul{justify-content:flex-start;padding-inline:var(--gutter)}}
/* ---------- sections */
.pk-sec{position:relative;padding:var(--space-section) 0}
.pk-sec--snow{background:var(--pa-snow)}
.pk-sec--frost{background:var(--grad-frost)}
.pk-sec--dark{background:var(--grad-dark);color:#fff;overflow:hidden;isolation:isolate}
.pk-head{margin-bottom:clamp(36px,5vw,64px)}
/* 404: one dark band, the phone first */
.pk-404{min-height:calc(100svh - var(--topbar-h));display:flex;align-items:center;padding-top:calc(var(--topbar-h) + 48px)}
.pk-404 h1{max-width:12ch;margin:10px 0 0;font-size:clamp(40px,6vw,76px)}
.pk-404 .pk-shero__lede{max-width:44ch}
.pk-head--center{text-align:center}
.pk-head--center .pa-rule{margin-inline:auto}
.pk-head--row{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap}
.pk-head .pa-eyebrow{margin:0 0 14px}
.pk-head .pa-rule{margin-bottom:0}
.pk-head__sub{margin:20px 0 0;max-width:58ch;color:var(--text-muted)}
.pk-sec--dark .pk-head__sub{color:rgba(255,255,255,.76)}
.pk-ic{display:grid;place-items:center;width:46px;height:46px;flex:none;border-radius:50%;color:var(--pa-navy-500);background:var(--pa-ice-100);box-shadow:inset 0 0 0 1px var(--pa-ice-200),0 0 18px rgba(173,210,240,.45)}
.pk-ic--heat{color:var(--pa-crimson-500);background:var(--pa-crimson-100);box-shadow:inset 0 0 0 1px rgba(200,16,46,.2),0 0 18px rgba(200,16,46,.18)}
.pk-ic--dark{color:#fff;background:rgba(255,255,255,.1);box-shadow:var(--glow-ring)}
.pk-confirm{display:inline-flex;margin-left:8px;vertical-align:middle;font-size:11px}
/* services */
.pk-svc{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(20px,2.4vw,34px)}
.pk-svc__col{display:flex;flex-direction:column;gap:18px}
.pk-svc__t{display:flex;align-items:center;gap:14px}
.pk-svc__intro{margin:0;font-weight:600;color:var(--text-strong)}
.pk-svc__list{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}
.pk-svc__col .pa-arrow{align-self:flex-start;margin-top:auto}
.pk-svc .pa-photo{transition:transform var(--dur-slow) var(--ease-reveal),box-shadow var(--dur-slow) var(--ease-reveal)}
@media (hover:hover){.pk-svc__col:hover .pa-photo{transform:translateY(-4px);box-shadow:var(--shadow-lg),0 0 0 1px rgba(173,210,240,.6),0 0 34px rgba(173,210,240,.35)}}
/* film band */
.pk-film{position:relative;height:min(86vh,820px);min-height:520px;display:grid;place-items:center;text-align:center;color:#fff;overflow:hidden;isolation:isolate}
.pk-film__copy{position:relative;z-index:3;padding:0 var(--gutter)}
.pk-film__sub{margin:24px 0 0;font:600 11px/1.4 var(--font-sans);letter-spacing:.34em;text-transform:uppercase;text-shadow:var(--glow-text-soft)}
/* reviews */
.pk-reviews{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.pk-reviews__foot{display:flex;justify-content:center;margin-top:44px}
/* meet oswald */
.pk-oswald{display:grid;grid-template-columns:5fr 6fr;gap:clamp(40px,7vw,120px);align-items:center}
.pk-oswald__media{position:relative;max-width:540px}
.pk-oswald__film .pa-video{border-radius:inherit}   /* the owner portrait is a film now; its dark wash is the pa-video--dim variant */
.pk-oswald__cap{position:absolute;left:18px;bottom:18px;z-index:2;display:flex;flex-direction:column;gap:4px;padding:14px 20px;border-radius:18px;color:#fff;background:rgba(7,20,48,.5);border:1px solid rgba(255,255,255,.5);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur)}
.pk-oswald__cap b{font:500 19px/1 var(--font-display);letter-spacing:.02em;text-transform:uppercase}
.pk-oswald__cap span{font:600 10px/1 var(--font-sans);letter-spacing:.2em;text-transform:uppercase;color:var(--pa-ice-200)}
.pk-quote{margin:26px 0 0;padding-left:22px;border-left:0;position:relative;font:400 18px/1.6 var(--font-sans);color:var(--text-strong)}
.pk-quote::before{content:"";position:absolute;left:0;top:.3em;bottom:.3em;width:1.5px;background:var(--grad-crimson)}
/* the work strip: eight job frames, four up on desktop, a snap row that bleeds to the gutter below 900px */
.pk-work{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}
.pk-work__item{margin:0}
.pk-work__item figcaption{margin:12px 2px 0;font:500 12px/1.45 var(--font-sans);letter-spacing:.04em;color:var(--text-muted)}
@media (max-width:900px){.pk-work{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:calc((100% - 16px) / 2.3);gap:16px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;margin:0 calc(-1 * var(--gutter));padding:0 var(--gutter) 6px;scroll-padding-inline:var(--gutter);scrollbar-width:none}.pk-work::-webkit-scrollbar{display:none}.pk-work__item{scroll-snap-align:start}}
@media (max-width:560px){.pk-work{grid-auto-columns:calc((100% - 16px) / 1.45)}}
/* the same promise band on a service page, a step shorter */
.pk-film--svc{height:min(72vh,660px);min-height:440px}
/* service area */
.pk-area__band{position:relative;min-height:clamp(320px,40vw,500px);display:flex;align-items:flex-end;color:#fff;overflow:hidden;isolation:isolate}
.pk-area__band .pa-wrap{position:relative;z-index:3;padding-bottom:clamp(32px,4vw,56px)}
.pk-area__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) minmax(0,1.05fr);gap:clamp(20px,2.6vw,36px);align-items:start}
.pk-county h3{display:flex;align-items:center;gap:10px;margin-bottom:16px}
.pk-county ul{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}
.pk-county .pa-tag{background:var(--pa-snow)}
.pk-area__tabs{display:none;margin-bottom:22px}
.pk-area__line{display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px;margin:36px 0 0;font-weight:600;color:var(--text-strong)}
/* service-area map: inline SVG from _build/mapgen.py, no box behind it; the lit county follows the tabs */
.pk-map{position:relative;margin:0;aspect-ratio:4/5}
.pk-map svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.pk-map__context{fill:var(--pa-ice-50);stroke:var(--pa-navy-200);stroke-width:1.5;stroke-linejoin:round}
.pk-map__base{fill:#fff;fill-opacity:.55}.pk-map__base--on{fill:var(--pa-ice-100);fill-opacity:.9}
.pk-map__dot{fill:var(--pa-navy-200)}.pk-map__dot--on{fill:var(--pa-ice-500)}
.pk-map__county{fill:url(#pk-dots);stroke:var(--pa-navy-500);stroke-width:2.5;stroke-linejoin:round;transition:filter .5s var(--ease-glide)}
.pk-map__county.is-on{fill:url(#pk-dots-on);filter:drop-shadow(0 0 14px rgba(78,148,210,.45))}
.pk-map__name{font:500 46px/1 var(--font-display);letter-spacing:.16em;fill:var(--pa-navy-500);pointer-events:none;paint-order:stroke;stroke:#fff;stroke-width:6px;stroke-linejoin:round}
.pk-map__halo{fill:var(--pa-crimson-500);fill-opacity:.14}
.pk-map__pin{fill:var(--pa-crimson-500);stroke:#fff;stroke-width:3}
.pk-map__city text{font:600 30px/1 var(--font-sans);letter-spacing:.06em;fill:var(--text-strong);paint-order:stroke;stroke:#fff;stroke-width:6px;stroke-linejoin:round}
@media (max-width:1100px){.pk-map{aspect-ratio:1/1;max-width:560px;margin:0 auto}.pk-map__name{font-size:40px}.pk-map__city text{font-size:26px}}
@media (max-width:900px){.pk-map{max-width:440px}}
/* ---------- service pages */
.pk-shero{position:relative;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);min-height:max(660px,92svh);color:#fff;background:var(--grad-dark);overflow:hidden;isolation:isolate}
.pk-shero__panel{position:relative;z-index:2;display:flex;align-items:center;padding:calc(var(--topbar-h) + 44px) clamp(28px,4vw,72px) 56px max(var(--gutter),calc((100vw - var(--container-max)) / 2))}
.pk-shero__inner{max-width:620px}
.pk-shero__inner>*{transition:opacity 1s var(--ease-glide),transform 1.3s var(--ease-reveal),filter 1.2s var(--ease-glide)}
.js .pk-shero:not(.is-in) .pk-shero__inner>*{opacity:0;transform:translateY(18px);filter:blur(6px)}
.pk-shero__inner>:nth-child(2){transition-delay:.12s}.pk-shero__inner>:nth-child(3){transition-delay:.24s}.pk-shero__inner>:nth-child(4){transition-delay:.36s}.pk-shero__inner>:nth-child(5){transition-delay:.48s}
.pk-shero__lede{max-width:46ch;margin:22px 0 0;font:var(--type-lede);color:rgba(255,255,255,.9)}
.pk-ctas{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-top:32px}
.pk-shero__media{position:relative;min-height:420px}
.pk-shero__media::after{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;background:linear-gradient(90deg,rgba(7,20,48,.65) 0%,rgba(7,20,48,0) 24%)}
.pk-shero__ph{position:absolute;inset:0;z-index:2;display:grid;place-items:center;pointer-events:none}
.pk-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.pk-cards .pa-card__body{display:flex;flex-direction:column;gap:14px;height:100%}
.pk-cards h3{margin:4px 0 0}
.pk-cards p{margin:0;font-size:15px;line-height:1.7}
.pk-cards .pa-card{height:100%}
.pk-equip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.pk-equip .pa-card__body{display:flex;align-items:center;gap:14px;padding:18px 20px;font:600 14px/1.35 var(--font-sans);color:var(--text-strong)}
.pk-split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(40px,6vw,100px);align-items:start}
.pk-split p{max-width:52ch}
.pk-check{list-style:none;margin:0;padding:0;border-top:1px solid var(--border-hairline)}
.pk-check li{display:flex;align-items:flex-start;gap:14px;padding:16px 0;border-bottom:1px solid var(--border-hairline);font-size:15.5px;line-height:1.5;color:var(--text-strong)}
.pk-check li>.pa-icon{margin-top:1px;color:var(--pa-navy-500)}
.pk-check li>*{transition:opacity .6s var(--ease-glide),transform 1s var(--ease-reveal);transition-delay:calc(var(--i) * 110ms + .2s)}
.pk-check li>span{transition-delay:calc(var(--i) * 110ms + .3s)}
.js .pk-check:not(.is-in) li>.pa-icon{opacity:.12;transform:scale(.4) rotate(-40deg)}
.js .pk-check:not(.is-in) li>span{opacity:0;transform:translateX(28px)}
.pk-heating{display:flex;align-items:center;gap:22px;padding:26px 30px;border-radius:var(--radius-xl);background:#fff;border:1px solid var(--border-hairline);box-shadow:var(--shadow-sm)}
.pk-heating p{margin:0;max-width:62ch}
.pk-steps-first{counter-reset:s;list-style:none;margin:0;padding:0;display:grid;gap:12px}
.pk-steps-first li{counter-increment:s;display:flex;align-items:center;gap:18px;padding:16px 20px;border-radius:18px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.18);font-size:16px}
.pk-steps-first li::before{content:counter(s,decimal-leading-zero);flex:none;font:300 30px/1 var(--font-display);color:var(--pa-ice-300);text-shadow:var(--glow-frost)}
.pk-note{display:flex;align-items:flex-start;gap:12px;margin:22px 0 0;padding:16px 18px;border-radius:16px;background:rgba(214,236,255,.08);border:1px dashed rgba(214,236,255,.4);font-size:14.5px;color:rgba(255,255,255,.9)}
.pk-faq{display:grid;grid-template-columns:1fr 1.7fr;gap:clamp(40px,6vw,100px);align-items:start}
.pk-faq__head{position:sticky;top:calc(var(--topbar-h-solid) + 32px)}
/* ---------- contact */
.pk-chero{position:relative;padding:calc(var(--topbar-h) + clamp(44px,6vw,90px)) 0 clamp(150px,14vw,200px);color:#fff;background:var(--grad-dark);overflow:hidden;isolation:isolate}
.pk-chero .pa-wrap{position:relative;z-index:2}
.pk-chero__lede{max-width:52ch;margin:22px 0 0;font:var(--type-lede);color:rgba(255,255,255,.9)}
.pk-contact{background:var(--pa-snow);padding-bottom:var(--space-section)}
.pk-contact__grid{position:relative;z-index:3;display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:clamp(24px,3vw,40px);align-items:start;margin-top:-120px}
.pk-form{scroll-margin-top:calc(var(--topbar-h-solid) + 20px)}
.pk-form .pa-card__body{padding:clamp(26px,4vw,52px)}
.pk-form__grid{display:grid;grid-template-columns:1fr 1fr;gap:24px 18px}
.pk-form__full{grid-column:1/-1}
.pk-form__foot{display:flex;flex-direction:column;align-items:flex-start;gap:14px;margin-top:28px}
.pk-form__under{margin:0;font-size:13px;line-height:1.55;color:var(--text-muted)}
.pk-form__err{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-radius:16px;background:var(--pa-crimson-100);color:var(--pa-crimson-700);font-size:14px;line-height:1.5}
.pk-done{display:flex;flex-direction:column;align-items:center;gap:16px;padding:32px 8px;text-align:center}
.pk-done .pk-ic{width:72px;height:72px;animation:pa-bloom 1.6s var(--ease-glide) .3s}
.pk-done p{margin:0;max-width:44ch;font-size:16.5px;line-height:1.65;color:var(--text-strong)}
.pk-call{position:sticky;top:calc(var(--topbar-h-solid) + 24px)}
.pk-call .pa-card__body{display:grid;gap:18px;padding:32px 30px}
.pk-call__tel{display:inline-flex;align-items:center;gap:12px;font:500 clamp(34px,3.4vw,46px)/1 var(--font-display);letter-spacing:.01em;color:#fff;text-shadow:var(--glow-text-soft)}
.pk-call__tel:hover{color:var(--pa-frost-hi)}
.pk-call ul{list-style:none;margin:0;padding:0;border-top:1px solid rgba(255,255,255,.16)}
.pk-call li{display:flex;align-items:center;gap:14px;padding:13px 0;border-bottom:1px solid rgba(255,255,255,.16);font-size:14.5px}
.pk-call li .pa-icon{color:var(--pa-ice-300)}
.pk-call a:not(.pa-btn){color:#fff}
/* ---------- responsive */
.pk-toastwrap{position:fixed;left:0;right:0;bottom:24px;z-index:80;display:flex;justify-content:center;padding:0 16px;pointer-events:none}
.pk-toastwrap>*{pointer-events:auto}
@media (max-width:900px){.pk-toastwrap{bottom:calc(var(--callbar-h) + 22px + env(safe-area-inset-bottom))}}
@media (max-width:1100px){.pk-equip{grid-template-columns:repeat(2,minmax(0,1fr))}.pk-area__grid{grid-template-columns:repeat(3,minmax(0,1fr))}.pk-area__map{grid-column:1/-1}}
@media (max-width:900px){
  .pk-doors{grid-template-columns:minmax(0,1fr)}
  .pk-svc,.pk-reviews,.pk-cards{grid-template-columns:minmax(0,1fr)}
  .pk-reviews{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:14px;margin-inline:calc(var(--gutter) * -1);padding:4px var(--gutter) 18px;scrollbar-width:none}
  .pk-reviews>*{flex:0 0 min(84vw,380px);scroll-snap-align:center}
  .pk-oswald,.pk-split,.pk-faq,.pk-contact__grid{grid-template-columns:minmax(0,1fr)}
  .pk-faq__head,.pk-call{position:static}
  .pk-call{order:-1}
  .pk-contact__grid{margin-top:-90px}
  .pk-shero{grid-template-columns:minmax(0,1fr);min-height:0}
  .pk-shero__media{order:-1;height:min(52svh,460px);min-height:320px}
  .pk-shero__media::after{background:linear-gradient(180deg,rgba(7,20,48,.55) 0%,rgba(7,20,48,0) 30%,rgba(7,20,48,0) 70%,rgba(7,20,48,.8) 100%)}
  .pk-shero__panel{padding:36px var(--gutter) 56px}
  .pk-final__lede{font-size:15.5px}
  .pk-final{padding-bottom:calc(var(--callbar-h) + 36px)}
  .pk-scroll{bottom:calc(var(--callbar-h) + 34px + env(safe-area-inset-bottom))}
}
@media (max-width:760px){
  .pk-area__grid{grid-template-columns:minmax(0,1fr)}
  .pk-area__tabs{display:flex}
  .pk-county:not(.is-on){display:none}
  .pk-county h3{display:none}
  .pk-form__grid{grid-template-columns:minmax(0,1fr)}
  .pk-heating{flex-direction:column;align-items:flex-start}
  .pk-equip{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:640px){.pk-ctas .pa-btn{width:100%}.pk-beat{font-size:min(12.6vw,64px)}}   /* "THE PRICE COMES" holds one line at 360 */

/* ---------- static-site adjustments -------------------------------------
   The design system renders the phone menu conditionally (React only mounts
   it when open), so .pa-menu sets display:flex unconditionally. A static page
   keeps it in the DOM, where display:flex outranks the UA's [hidden] rule and
   the menu sits open on every load. */
.pa-menu[hidden]{display:none}

/* Same reason: the skip link ships with the design system's focus treatment
   but no static-page placement. */
.pa-skip{position:fixed;left:50%;top:0;z-index:80;transform:translate(-50%,-130%);
  display:inline-flex;align-items:center;min-height:44px;padding:0 22px;
  background:var(--pa-crimson-500);color:#fff;text-decoration:none;
  font:600 12px/1 var(--font-sans);letter-spacing:.14em;text-transform:uppercase;
  border-radius:0 0 12px 12px;transition:transform var(--dur-base) var(--ease-glide)}
.pa-skip:focus{transform:translate(-50%,0)}

/* a stand-in photo says so, so review can never mistake it for final art */
.pk-standin{position:absolute;left:10px;right:10px;bottom:10px;z-index:2;text-align:center;
  font:600 9.5px/1.5 var(--font-sans);letter-spacing:.14em;text-transform:uppercase;
  padding:6px 8px;border-radius:8px}

/* ---------- still standing in for footage ---------------------------------
   A slow push on a still, done in CSS rather than exported as an MP4: the
   AVIF is ~15K against roughly a megabyte for the equivalent clip, it stays
   sharp at any size, and swapping in real footage is a one-line change.
   The drift is deliberately long and small - at 28s nobody catches it
   looping, and the reverse leg means there is no jump at the wrap. */
.pa-video--still .pa-video__still{position:absolute;inset:0;width:100%;height:100%;
  max-width:none;object-fit:cover;transform-origin:52% 46%;
  animation:pa-kenburns 28s var(--ease-glide) infinite alternate}
@keyframes pa-kenburns{
  from{transform:scale(1.04) translate3d(-1.2%,.6%,0)}
  to{transform:scale(1.15) translate3d(1.4%,-1.4%,0)}
}
@media (prefers-reduced-motion:reduce){
  .pa-video--still .pa-video__still{animation:none;transform:scale(1.04)}
}
/* the service-area band is a full-width photo: a gentler drift keeps it sharp */
.pk-area__band .pa-video--still .pa-video__still{animation-name:pa-kenburns-soft}
@keyframes pa-kenburns-soft{from{transform:scale(1.02) translate3d(-.6%,.3%,0)}to{transform:scale(1.08) translate3d(.8%,-.6%,0)}}

/* ---------- service page bits the builder introduces --------------------- */
.pk-shero__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1}
.pk-proof{list-style:none;display:flex;flex-wrap:wrap;gap:8px 22px;margin:28px 0 0;padding:0}
.pk-proof li{display:flex;align-items:center;gap:8px;font:600 11px/1.4 var(--font-sans);
  letter-spacing:.14em;text-transform:uppercase;color:var(--pa-ice-300)}
.pk-proof li::before{content:"";width:5px;height:5px;border-radius:50%;flex:none;
  background:var(--pa-crimson-500);box-shadow:0 0 10px rgba(200,16,46,.7)}
.pk-prose{max-width:64ch}
.pk-prose p{font-size:16.5px;line-height:1.75;color:var(--text-body)}
.pk-sec--dark .pk-prose p{color:rgba(255,255,255,.9)}
.pk-after{margin-top:26px;font-size:15.5px;line-height:1.7;color:var(--text-muted)}
.pk-sec--dark .pk-after{color:var(--pa-ice-300)}
.pk-prose .pa-arrow{margin-top:22px}
.pk-chips{list-style:none;display:flex;flex-wrap:wrap;gap:10px;margin:0;padding:0}
.pk-steps-first--light li{background:var(--pa-ice-50);border-color:var(--border-hairline);
  color:var(--text-strong)}
.pk-steps-first--light li::before{color:var(--pa-ice-500);text-shadow:none}
.pk-related__links{display:flex;flex-wrap:wrap;gap:14px 40px;margin-top:18px}
.pk-related{padding-block:clamp(44px,5vw,72px)}
@media (max-width:600px){.pk-cards{grid-template-columns:1fr !important}}
@media (max-width:900px){
  .pk-split{grid-template-columns:1fr;gap:34px}
  .pk-faq{grid-template-columns:1fr;gap:28px}
  .pk-faq__head{position:static}
  .pk-shero{grid-template-columns:1fr}
  .pk-shero__media{min-height:min(52svh,460px);order:-1}
}

/* ---------- booking form -------------------------------------------------
   The success panel is revealed by :target, not by script. The function
   redirects to /contact/?sent=1#sent, so a visitor with JavaScript off still
   gets a real confirmation instead of landing back on an empty form. */
.pk-done{display:none}
#sent:target{display:flex}
#sent:target ~ .pk-form{display:none}
.pk-hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.pk-formcard{padding:0}
.pk-formcard>.pa-card__body{padding:clamp(26px,4vw,52px)}
.pa-field__err{display:block;margin-top:8px;font:500 13px/1.5 var(--font-sans);
  color:var(--pa-crimson-500)}
.pa-field__err[hidden]{display:none}
.pa-field__req{color:var(--pa-crimson-500);margin-left:3px}
.pa-field__opt{margin-left:6px;font-weight:400;color:var(--text-muted);text-transform:none;
  letter-spacing:0}
.pa-field__count{display:block;margin-top:6px;text-align:right;font:500 12px var(--font-sans);
  color:var(--text-muted)}
.pk-form__err{margin:24px 0 0;padding:14px 18px;border-radius:14px;
  background:rgba(200,16,46,.07);border:1px solid rgba(200,16,46,.3);
  font-size:14.5px;line-height:1.6;color:var(--pa-crimson-700)}
.pk-form__err[hidden]{display:none}
.pk-form__foot{margin-top:30px;display:grid;gap:16px;justify-items:start}
.pk-form__under{font-size:13.5px;line-height:1.6;color:var(--text-muted);max-width:52ch}
.pa-input[aria-invalid="true"]{border-color:var(--pa-crimson-500);
  box-shadow:0 0 0 3px rgba(200,16,46,.12)}
.cf-turnstile:empty{display:none}
@media (prefers-reduced-motion:reduce){.pk-done .pk-ic{animation:none}}

/* ---------- tap targets below the WCAG 2.2 AA floor ----------------------
   .pa-door__small was 19px tall and .pa-arrow 23px, both under the 24px
   minimum in 2.5.8. Padding grows the hit area and the negative margin takes
   the space back, so nothing moves — the same trick the design system already
   uses on .cc a. */
.pa-door__small{padding:10px 0;margin:-10px 0}
.pa-arrow{padding:6px 0;margin:-6px 0}

/* ---------- reading measure on the full-width lists ----------------------
   .pk-check was designed inside .pk-split, where the grid column kept its
   lines short. Used full width it ran to 139 characters, nearly double a
   comfortable measure. Two columns use the space and keep each line near 60.
   Inside a split it stays single column, where it already reads correctly. */
@media (min-width:901px){
  .pk-sec > .pa-wrap > .pk-check{
    display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
    column-gap:clamp(36px,4vw,72px)}
  .pk-sec > .pa-wrap > .pk-check li{border-top:1px solid var(--border-hairline)}
  /* with two columns the list's own top rule would only cap the left one */
  .pk-sec > .pa-wrap > .pk-check{border-top:0}
}
.pk-split .pk-check{display:block;max-width:none}

/* Wherever the number is hidden the phone link would be 15px wide. Centre the
   icon in a full target instead: it is the most important control in the bar. */
.pa-top__tel{min-width:var(--tap-min);justify-content:center}

/* The owner caption sits on whatever photograph lands behind it. At .5 alpha
   it only reaches 3.47:1 over a light frame; .68 holds 6.41:1 even against
   pure white, so it is legible whatever Oswald's photo turns out to be. */
.pk-oswald__cap{background:rgba(7,20,48,.68)}

/* ---------- prose paired with a picture ---------------------------------
   The service pages were running 7,000px of text on white with one image in
   the hero. Pairing each prose block with a picture that argues the same
   point shortens the section and gives the eye somewhere to land. Alternating
   sides keeps the scroll from feeling like a template. */
.pk-textsplit{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.85fr);
  gap:clamp(36px,5vw,84px);align-items:center}
.pk-textsplit--flip>.pk-textsplit__col{order:2}
.pk-textsplit .pk-prose{max-width:54ch}
.pk-textsplit__col .pk-head{margin-bottom:26px}
.pk-blockimg{margin:0;border-radius:var(--radius-xl);overflow:hidden;
  box-shadow:var(--shadow-md);background:var(--grad-ice)}
/* displayed at 3:2 rather than the 5:4 the file is cropped to: at 5:4 the
   picture drove the section's height and each block grew ~140px. object-fit
   crops the difference, so the framing survives. */
.pk-blockimg img{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;
  transition:transform 1.2s var(--ease-glide)}
.pk-blockimg:hover img{transform:scale(1.03)}
@media (max-width:900px){
  .pk-textsplit{grid-template-columns:1fr;gap:28px}
  .pk-textsplit--flip>.pk-textsplit__col{order:0}
  .pk-blockimg{order:-1}
}

/* The opening used to be 290svh, which is 1.9 screens of scroll before the
   page released. 200svh is one screen; the beat windows in js/site.js moved
   with it, so the choreography still finishes before the hero lets go. */

/* A status indicator that is not a link: the footer and the call card said
   "24/7 emergency line" as a second tappable call next to the number. */
.pa-live--static{min-height:0;cursor:default}

/* Service area: "do you cover me?" answered by typing, not by hunting three
   tabs. The field reuses .pa-input; only the pin needs placing. */
.pk-area__find{margin:0 0 12px}
.pk-area__findwrap{position:relative;display:block;max-width:420px}
.pk-area__findwrap .pa-icon{position:absolute;left:20px;top:50%;translate:0 -50%;
  color:var(--pa-steel-500);pointer-events:none}
.pk-area__input{padding-left:48px}
.pk-area__input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}
.pk-area__said{display:block;min-height:21px;margin:0 0 20px;
  font:600 14px/1.5 var(--font-sans);color:var(--text-muted)}
.pk-area__said.is-yes{color:var(--pa-success)}
.pk-area__said.is-no{color:var(--text-body)}
.pk-county li.is-hit .pa-tag{background:var(--pa-ice-100);
  box-shadow:0 0 0 1.5px var(--pa-ice-500) inset}

/* ---------- Language gate: the first-visit entrance, English or Spanish */
.pk-gate{position:fixed;inset:0;z-index:68;display:grid;place-items:center;padding:24px;color:#fff;background:var(--grad-dark);opacity:0;transition:opacity .6s var(--ease-glide)}
.pk-gate[hidden]{display:none}
.pk-gate.is-open{opacity:1}
.pk-gate.is-leaving{opacity:0;pointer-events:none}
.pk-gate .pa-snow{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.pk-gate__panel{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;max-width:420px;transform:translateY(14px);opacity:0;transition:transform .9s var(--ease-reveal) .15s,opacity .9s var(--ease-glide) .15s}
.pk-gate.is-open .pk-gate__panel{transform:none;opacity:1}
.pk-gate__mark{height:52px;width:auto;filter:drop-shadow(0 0 22px rgba(170,215,255,.35))}
.pk-gate__word{height:16px;width:auto;margin-top:16px}
.pk-gate .pa-rule{margin:26px auto 22px}
.pk-gate__ask{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:10px 12px;margin:0 0 26px;font:600 11px/1 var(--font-sans);letter-spacing:.22em;text-transform:uppercase;color:rgba(255,255,255,.78)}
.pk-gate__pick{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
.pk-gate__pick .pa-btn{min-width:150px}
.pk-gate__pick .pa-btn.is-primary{border-color:rgba(212,238,255,.85);box-shadow:0 0 0 1px rgba(212,238,255,.35),0 0 28px rgba(170,215,255,.28)}
html.has-gate{overflow:hidden}
.pa-top__lang{margin-left:4px}
.pa-menu__row .pa-lang{margin-left:auto}
.pa-foot__legal{align-items:center}
@media (max-width:900px){.pk-gate{padding-bottom:calc(var(--callbar-h) + 34px + env(safe-area-inset-bottom))}}
@media (max-width:480px){.pk-gate__ask{flex-direction:column;gap:8px}.pk-gate__ask .pa-sep{display:none}}
/* the hero film is landscape; on phones the crop follows Oswald, who works in the left third */
@media (max-width:760px){.pk-hero .pa-video{--pos:30% 50%}}
/* on phones the three county tabs share the row instead of scrolling */
@media (max-width:480px){.pk-area__tabs .pa-tabs{display:flex;width:100%}.pk-area__tabs .pa-tab{flex:1 1 0;min-width:0;padding:0 6px;font-size:10.5px;letter-spacing:.08em}}
@media (prefers-reduced-motion:reduce){.pk-gate,.pk-gate__panel{transition:none}}
/* The service-area band is a daylight skyline: a light brand tint and one
   bottom gradient for the headline, so the sky stays blue instead of grey */
.pk-area__band .pa-video--still .pa-video__grade{opacity:.14}
.pk-area__band .pa-video--still .pa-video__wash{background:linear-gradient(0deg,rgba(4,10,23,.78) 0%,rgba(4,10,23,.35) 38%,rgba(4,10,23,0) 70%),linear-gradient(180deg,rgba(4,10,23,.25),rgba(4,10,23,0) 22%)}

/* Tablets (601-900): the service cards sit photo-left, text-right instead of
   three full-width slabs, and the symptom and option cards pair up */
@media (min-width:601px) and (max-width:900px){
  .pk-svc{gap:28px}
  .pk-svc__col{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);column-gap:28px;row-gap:12px;align-content:center}
  .pk-svc__col>.pa-photo{grid-column:1;grid-row:1/span 6;align-self:center}
  .pk-svc__col>:not(.pa-photo){grid-column:2}
  .pk-svc__col .pa-arrow{margin-top:6px}
  .pk-cards{grid-template-columns:repeat(2,minmax(0,1fr)) !important}
}

/* Footer legal row: copyright, then Privacy and Terms, then EN | ES */
.pa-foot__legal>span{display:inline-flex;align-items:center;flex-wrap:wrap;row-gap:4px}
.pa-foot__links{display:flex;gap:22px;margin-right:auto}
.pa-foot .pa-foot__links a{min-height:32px;font-size:12px;letter-spacing:.03em;color:rgba(255,255,255,.72)}
@media (max-width:640px){.pa-foot__legal>span{flex-basis:100%}.pa-foot__links{margin-right:0}}

/* Booking form: the optional texting box reads as small print, the privacy link under it */
.pk-form__sms>span:last-child{font-size:13px;line-height:1.6;color:var(--text-muted)}
.pk-form__privacy{margin:6px 0 0 34px}
.pk-form__privacy a{color:var(--text-brand);text-decoration:underline;text-underline-offset:3px}

/* Privacy and Terms: a short dark head, then reading type on paper */
.pk-lhero{padding-bottom:clamp(48px,6vw,84px)}
.pk-lhero h1{margin:10px 0 0;font-size:clamp(36px,5vw,64px)}
.pk-lhero__date{margin:18px 0 0;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.6)}
.pk-legal{background:var(--surface-page);padding:clamp(48px,6vw,88px) 0 clamp(64px,8vw,112px)}
.pk-legal__body{max-width:68ch}
.pk-legal__body section+section{margin-top:clamp(30px,3.6vw,44px)}
.pk-legal__h{margin:0 0 12px;font:600 11px/1.4 var(--font-sans);letter-spacing:.24em;text-transform:uppercase;color:var(--text-brand)}
.pk-legal__body p,.pk-legal__body li{font-size:15.5px;line-height:1.75;color:var(--text-body)}
.pk-legal__body p{margin:0}
.pk-legal__body p+p,.pk-legal__body ul+p,.pk-legal__body p+ul{margin-top:12px}
.pk-legal__body ul{margin:0;padding-left:1.15em}
.pk-legal__body li+li{margin-top:6px}
.pk-legal__body li::marker{color:var(--pa-crimson-500)}
.pk-legal__body a{color:var(--text-brand);text-decoration:underline;text-underline-offset:3px;overflow-wrap:anywhere}
.pk-legal__body a[href^="tel:"]{white-space:nowrap}

/* Owner section: the two ways to reach Oswald, under his paragraph */
.pk-oswald__ctas{display:flex;flex-wrap:wrap;align-items:center;gap:18px 28px;margin-top:30px}

/* Hero final frame: a shade behind the headline and lede that rises with the cold,
   so the lede stays readable over the bright parts of the film */
.pk-hero__copy::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:var(--cold,0);
  background:linear-gradient(90deg,rgba(4,10,23,.62) 0%,rgba(4,10,23,.34) 42%,rgba(4,10,23,0) 72%)}
.pk-final__lede{text-shadow:0 1px 14px rgba(4,10,23,.55)}
@media (max-width:900px){.pk-hero__copy::before{background:linear-gradient(0deg,rgba(4,10,23,.72) 0%,rgba(4,10,23,.38) 38%,rgba(4,10,23,0) 62%)}}

/* Touch target: the contact card's number is the page's main action and sat at 34px.
   (Arrow links are fine: brand.css widens their hit area with ::after.) */
.pk-call__tel{min-height:52px}

/* Film toggle: pause icon while playing, play icon once paused */
.pa-video__toggle .pa-video__ic-play,.pa-video.is-paused .pa-video__toggle .pa-video__ic-pause{display:none}
.pa-video.is-paused .pa-video__toggle .pa-video__ic-play{display:block}

/* A keyboard user tabbing into the hero's final frame before it has assembled
   sees what they are focused on */
.pk-final:focus-within>*{opacity:1!important;transform:none!important;pointer-events:auto!important}

/* Reduced motion, everywhere: final states, no movement */
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0s!important;scroll-behavior:auto!important}}

/* The Spanish call bar ("AGENDA EN LÍNEA") clipped at 320px */
@media (max-width:359px){.pa-callbar .pa-btn{letter-spacing:.06em;padding:0 6px;gap:6px}}

/* Without JavaScript a failed booking lands on ?error=1#form-err; :target shows the panel */
.pk-form__err:target{display:flex}
/* refinements: press, lift and reveal, in the site's own motion language */
/* ---- refinements.css */
/* Prism Air — refinements. The motion of davidrolanddesign.com, re-spoken in
   this site's language: controls give under the finger, section heads clear
   like mist, cards arrive a beat apart, pictures open out of the cold.
   Delete this import and the site is exactly as it was. */

/* 1. Press and lift. Buttons already transition transform (fast) and translate
   (slow), so the press snaps and the lift glides. Icons dip inside their ring. */
.pa-btn:not(.pa-btn--link):hover{translate:0 -1px}
.pa-btn:active{transform:scale(.97);translate:0 0}
.pa-tab:active{transform:scale(.96)}
.pa-iconbtn .pa-icon{transition:transform 160ms var(--ease-glide),filter var(--dur-base) var(--ease-glide)}
.pa-iconbtn:active .pa-icon{transform:scale(.86)}
.pa-tag--interactive{transition:background var(--dur-base) var(--ease-glide),border-color var(--dur-base) var(--ease-glide),box-shadow var(--dur-base) var(--ease-glide),color var(--dur-base) var(--ease-glide),transform 140ms var(--ease-glide)}
.pa-tag--interactive:active{transform:scale(.96)}

/* 2. Section heads. The eyebrow fades, the rule draws, the title clears, the
   sub follows. Gated on the rule's own reveal state; without :has() support
   the head is simply always visible. */
.pk-head :is(.pa-eyebrow,.pa-h2,.pa-glowtext,.pk-head__sub){transition:opacity .7s var(--ease-glide),transform 1.1s var(--ease-reveal),filter .9s var(--ease-glide)}
.pk-head :is(.pa-h2,.pa-glowtext){transition-delay:.12s}
.pk-head .pk-head__sub{transition-delay:.48s}
.js .pk-head:has(.pa-rule--wait:not(.is-in)) :is(.pa-eyebrow,.pa-h2,.pa-glowtext,.pk-head__sub){opacity:0;transform:translateY(12px);filter:blur(5px)}

/* 3. Cards arrive in order, a beat apart. The animation fills backwards only,
   so once it has run the hover lift owns the transform again. */
.js .pk-sec .pa-card:not(.is-in){opacity:0}
.pk-sec .pa-card.is-in{animation:pa-rise .9s var(--ease-glide) calc(var(--i,0) * 90ms) backwards}
.pk-sec .pa-card:nth-child(2){--i:1}.pk-sec .pa-card:nth-child(3){--i:2}.pk-sec .pa-card:nth-child(4){--i:3}.pk-sec .pa-card:nth-child(5){--i:4}.pk-sec .pa-card:nth-child(6){--i:5}

/* 4. Block pictures open out of the cold like every other photograph, and
   their hover push glides instead of snapping. */
.pk-blockimg img{-webkit-mask:radial-gradient(ellipse 170% 170% at 50% 42%,#000 55%,transparent 100%) 50% 42%/100% 100% no-repeat;mask:radial-gradient(ellipse 170% 170% at 50% 42%,#000 55%,transparent 100%) 50% 42%/100% 100% no-repeat;transition:-webkit-mask-size 1.8s var(--ease-reveal),mask-size 1.8s var(--ease-reveal),filter 2.4s var(--ease-glide),transform 1.2s var(--ease-reveal)}
.js .pk-blockimg:not(.is-in) img{-webkit-mask-size:0% 0%;mask-size:0% 0%;filter:brightness(1.3) saturate(.6) hue-rotate(-12deg);transform:scale(1.05)}

/* 5. The work strip clears across the row, a beat per column. */
.pk-work__item:nth-child(4n+2) .pa-photo--reveal img{transition-delay:.12s}
.pk-work__item:nth-child(4n+3) .pa-photo--reveal img{transition-delay:.24s}
.pk-work__item:nth-child(4n+4) .pa-photo--reveal img{transition-delay:.36s}

/* 6. City pins breathe, slowly, out of step with each other. */
@keyframes pa-pin{0%,100%{opacity:.12;transform:scale(1)}50%{opacity:.3;transform:scale(1.3)}}
.pk-map__halo{fill-opacity:1;opacity:.14;transform-origin:center;transform-box:fill-box;animation:pa-pin 3.6s var(--ease-in-out) infinite}
.pk-map__city:nth-of-type(2n) .pk-map__halo{animation-delay:-1.3s}
.pk-map__city:nth-of-type(3n) .pk-map__halo{animation-delay:-2.5s}

/* 7. Thumbs: the small icon buttons and the county tabs meet 40 and 44 px on
   touch widths, and anchors land clear of the fixed bar. */
html{scroll-padding-top:calc(var(--topbar-h,72px) + 20px)}
@media (max-width:900px){.pa-iconbtn--sm{width:40px;height:40px}.pa-tab{height:44px}}
/* four steps across a tablet is too tight to read; two by two until the phone stack takes over */
@media (min-width:761px) and (max-width:900px){.pa-steps:has(> :nth-child(4)){grid-template-columns:repeat(2,minmax(0,1fr))}}

/* 8. Still under reduced motion: the script marks everything in view at once,
   and nothing here moves. */
@media (prefers-reduced-motion:reduce){
  .pk-sec .pa-card.is-in,.pk-map__halo{animation:none}
  .pk-head :is(.pa-eyebrow,.pa-h2,.pa-glowtext,.pk-head__sub),.pk-blockimg img,.pk-work__item .pa-photo--reveal img{transition:none}
  .pa-btn:not(.pa-btn--link):hover{translate:none}
}
/* the refraction motif: delete this line and the site is exactly as it was */
/* ---- refraction.css */
/* Prism Air — refraction.

   The logo is a flame and a snowflake split down one edge. This is that split
   continued into the rest of the site: wherever a crimson hairline used to
   run, the signature enters warm and leaves as cold light, the way a prism
   splits what passes through it.

   It touches four things and nothing else: the rule under a heading, the
   footer rule, the scroll progress bar, and the bar beside a pull quote.
   Every one of them was `--grad-crimson` before.

   To remove the motif, delete the last @import in styles.css. To keep it but
   tune it, the two tokens below are the whole of it. */
:root{
  --grad-refract:linear-gradient(90deg,
    #990824 0%, #C8102E 8%, #E2324B 19%,
    #7FB6E6 48%, #D4EEFF 66%, #4E94D2 85%, #2F74B5 100%);/* @kind color */
  --grad-refract-v:linear-gradient(180deg,
    #990824 0%, #C8102E 8%, #E2324B 19%,
    #7FB6E6 48%, #D4EEFF 66%, #4E94D2 85%, #2F74B5 100%);/* @kind color */
  --glow-refract:0 0 10px rgba(127,182,230,.32);
}

/* the frost and hairline variants keep their own treatment */
.pa-rule:not(.pa-rule--frost):not(.pa-rule--hairline){
  background:var(--grad-refract);box-shadow:var(--glow-refract)}
.pa-foot__rule{background:var(--grad-refract)}
.pa-top__progress{background:var(--grad-refract)}
.pk-quote::before{background:var(--grad-refract-v)}
