/* =========================================================
   RESET
========================================================= */

*{
    margin:0;
    padding:0;
    box-sizing:border-box;
}

html{
    scroll-behavior:auto;
}

body{
    margin:0;
    padding:0;
    background:#0b0b0b;
    color:#ffffff;
    font-family:"DM Sans",sans-serif;
    overflow-x:hidden;
}

section{
    margin:0 !important;
    padding:0;
}

img,
video{
    display:block;
    max-width:100%;
}

a{
    color:inherit;
    text-decoration:none;
}

button{
    font:inherit;
}

/* Skip link — hidden until keyboard-focused */
.skip-link{
    position:fixed;
    top:2px;
    left:50%;
    transform:translateX(-50%) translateY(-150%);

    z-index:10000;

    padding:10px 20px;

    font-size:12px;
    font-weight:600;
    letter-spacing:.08em;
    text-transform:uppercase;

    color:var(--black);
    background:var(--red);

    border-radius:0 0 12px 12px;

    transition:transform .2s ease;
}

.skip-link:focus,
.skip-link:focus-visible{
    transform:translateX(-50%) translateY(0);
}


/* =========================================================
   VARIABLES
========================================================= */

:root{
    --black:#0b0b0b;
    --white:#ffffff;
    --red:#ff2a1a;
    --muted:#9c9c9c;
    --line:rgba(255,255,255,.13);
}


/* =========================================================
   LOADER
========================================================= */

.loader{
    position:fixed;
    inset:0;
    z-index:99999;

    background:#ffffff;
    color:#0b0b0b;

    display:flex;
    align-items:center;
    justify-content:center;

    overflow:hidden;
}

.loader-inner{
    text-align:center;
}

.loader-logo{
    font-family:"Playfair Display",serif;
    font-size:clamp(42px,8vw,110px);
    letter-spacing:-.06em;
}

.loader-line{
    width:180px;
    height:1px;
    background:rgba(0,0,0,.2);
    margin:25px auto;
    overflow:hidden;
}

.loader-progress{
    width:0%;
    height:100%;
    background:#0b0b0b;
}

.loader-percent{
    font-size:12px;
    letter-spacing:.2em;
}


/* =========================================================
   HEADER (inside hero — scrolls with it)
========================================================= */

.header{
    position:absolute;
    top:0;
    left:0;
    width:100%;

    z-index:500;

    padding:25px 40px;

    display:flex;
    align-items:center;
    justify-content:space-between;

    color:white;
}

.hero-header{
    /* visible immediately on load (logo must show) — GSAP fades it in on scroll */
    opacity:1;
}

.logo{
    display:flex;
    align-items:center;
    gap:10px;

    font-size:14px;
    font-weight:600;
    letter-spacing:.2em;
}

.logo-img{
    display:block;
    width:auto;
    height:44px;
    max-height:44px;

    object-fit:contain;
    object-position:left center;

    border-radius:4px;
}

.logo-icon{
    flex-shrink:0;
    animation:logoSpin 12s linear infinite;
}

@keyframes logoSpin{
    from{transform:rotate(0deg)}
    to{transform:rotate(360deg)}
}

.nav{
    display:flex;
    gap:30px;
}

.loader-logo-img{
    width:clamp(120px,22vw,220px);
    height:auto;

    object-fit:contain;
    margin:0 auto;
}

/* Nav "Book Now" pill */
.nav-book{
    display:inline-block;

    padding:9px 18px;

    font-size:11px;
    font-weight:600;
    text-transform:uppercase;
    letter-spacing:.15em;

    color:var(--black);
    background:var(--red);

    border-radius:100px;

    transition:opacity .3s ease, transform .3s ease;
}

.nav-book::after{
    display:none;
}

.nav-book:hover{
    opacity:.85;
    transform:translateY(-2px);
}

.nav a{
    font-size:11px;
    text-transform:uppercase;
    letter-spacing:.15em;
    position:relative;
}

.nav a::after{
    content:"";
    position:absolute;
    bottom:-4px;
    left:0;
    width:0;
    height:1px;
    background:var(--red);
    transition:width .3s ease;
}

.nav a:hover::after{
    width:100%;
}


/* =========================================================
   GLOBAL
========================================================= */

.scene{
    position:relative;
    width:100%;
    height:100vh;
    height:100svh;

    overflow:hidden;

    margin:0 !important;
    padding:0 !important;
}

.scene-inner{
    width:100%;
    height:100%;

    position:relative;
}


/* =========================================================
   HERO — SCROLL-DRIVEN FRAME ANIMATION
========================================================= */

.hero{
    background:#0b0b0b;
    height:100vh;
    height:100svh;
    position:relative;
    overflow:hidden;
}

.hero-canvas{
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    z-index:1;
}

.hero-canvas canvas{
    width:100%;
    height:100%;
    object-fit:contain;
    display:block;
}

/* Gradient overlays on the frame sequence */
.hero-overlay{
    position:absolute;
    inset:0;
    z-index:2;
    pointer-events:none;
    background:
        linear-gradient(
            to bottom,
            rgba(11,11,11,.45) 0%,
            transparent 30%,
            transparent 60%,
            rgba(11,11,11,.6) 100%
        );
}


/* ── HEADING ART — Premium Diagram Type ── */

.hero-heading-art{
    position:absolute;
    inset:0;
    z-index:10;
    display:flex;
    align-items:center;
    justify-content:center;
    pointer-events:none;
}

.heading-container{
    position:relative;
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:0;
}

/* Top decorative line */
.heading-line-top{
    width:1px;
    height:60px;
    background:var(--red);
    margin-bottom:20px;
    opacity:1;
}

/* The main title block */
.heading-main{
    text-align:center;
    position:relative;
}

.heading-main .h-word{
    display:block;
    font-family:"Playfair Display",serif;
    font-size:clamp(52px,11vw,170px);
    line-height:.82;
    letter-spacing:-.06em;
    color:#ffffff;

    /* visible at load — the gsap.from() intro animates up from 0 */
    opacity:1;
}

.heading-main .h-word.italic{
    font-style:italic;
    color:var(--red);
}

.heading-main .h-word.outline{
    color:transparent;
    -webkit-text-stroke:1.5px rgba(255,255,255,.5);
}

/* Subtitle / tagline */
.heading-sub{
    font-size:clamp(10px,1.2vw,14px);
    letter-spacing:.35em;
    text-transform:uppercase;
    color:var(--muted);
    margin-top:28px;
    opacity:1;
}

/* ── HERO INTRO — copy, CTAs and facts ── */

.hero-intro{
    display:flex;
    flex-direction:column;
    align-items:center;

    max-width:560px;
    margin-top:30px;
    text-align:center;

    pointer-events:auto;

    opacity:1;
}

.hero-intro-text{
    font-size:clamp(12px,1.15vw,15px);
    line-height:1.75;
    color:rgba(255,255,255,.78);
}

.hero-cta{
    display:flex;
    align-items:center;
    justify-content:center;
    flex-wrap:wrap;

    gap:14px;
    margin-top:28px;
}

.hero-cta-primary{
    padding:14px 32px;

    font-size:11px;
    font-weight:600;
    text-transform:uppercase;
    letter-spacing:.16em;

    color:var(--black);
    background:var(--red);

    border-radius:100px;

    transition:transform .3s ease, box-shadow .3s ease, opacity .3s ease;
}

.hero-cta-primary:hover{
    transform:translateY(-3px);
    box-shadow:0 12px 30px rgba(255,42,26,.35);
}

.hero-cta-ghost{
    padding:13px 30px;

    font-size:11px;
    font-weight:500;
    text-transform:uppercase;
    letter-spacing:.16em;

    color:var(--white);
    border:1px solid rgba(255,255,255,.35);

    border-radius:100px;

    transition:border-color .3s ease, background .3s ease, transform .3s ease;
}

.hero-cta-ghost:hover{
    border-color:var(--red);
    background:rgba(255,42,26,.12);
    transform:translateY(-3px);
}

.hero-facts{
    display:flex;
    align-items:center;
    justify-content:center;
    flex-wrap:wrap;

    gap:14px;
    margin-top:26px;

    font-size:10px;
    letter-spacing:.2em;
    text-transform:uppercase;
    color:var(--muted);
}

.hero-fact-dot{
    width:3px;
    height:3px;
    border-radius:50%;
    background:var(--red);
    opacity:.7;
}


/* Bottom decorative line */
.heading-line-bottom{
    width:1px;
    height:60px;
    background:var(--red);
    margin-top:20px;
    opacity:1;
}

/* Corner diagram decorations */
.hero-corner{
    position:absolute;
    z-index:10;
    pointer-events:none;
    opacity:1;
}

.hero-corner svg{
    display:block;
}

.corner-tl{
    top:100px;
    left:6vw;
}

.corner-tr{
    top:100px;
    right:6vw;
}

.corner-bl{
    bottom:8vh;
    left:6vw;
}

.corner-br{
    bottom:8vh;
    right:6vw;
}

/* Scroll indicator */
.hero-scroll-hint{
    position:absolute;
    bottom:30px;
    left:50%;
    transform:translateX(-50%);
    z-index:15;
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:8px;
    opacity:1;
}

.hero-scroll-hint span{
    font-size:9px;
    letter-spacing:.3em;
    text-transform:uppercase;
    color:var(--muted);
}

.scroll-line{
    width:1px;
    height:40px;
    background:linear-gradient(to bottom,var(--red),transparent);
    animation:scrollPulse 2s ease-in-out infinite;
}

@keyframes scrollPulse{
    0%,100%{opacity:.3;transform:scaleY(.6)}
    50%{opacity:1;transform:scaleY(1)}
}

/* Eyebrow label */
.eyebrow{
    position:absolute;
    top:120px;
    left:6vw;
    z-index:12;

    font-size:10px;
    letter-spacing:.25em;
    text-transform:uppercase;

    color:var(--red);
    opacity:1;
}

/* Diamond / star decorative elements */
.hero-diamond{
    position:absolute;
    z-index:10;
    opacity:.6;
}

.diamond-1{
    top:50%;
    left:4vw;
    transform:translateY(-50%);
}

.diamond-2{
    top:50%;
    right:4vw;
    transform:translateY(-50%);
}


/* Watermark cover — hides Gemini sparkle in bottom-right */
.watermark-cover{
    position:absolute;
    z-index:20;

    bottom:12%;
    right:6%;

    display:flex;
    flex-direction:column;
    align-items:center;
    gap:6px;

    opacity:0;
    pointer-events:none;
}

.watermark-cover svg{
    display:block;
    animation:wmSpin 30s linear infinite;
}

@keyframes wmSpin{
    from{transform:rotate(0deg)}
    to{transform:rotate(360deg)}
}

.wm-label{
    font-size:7px;
    letter-spacing:.35em;
    text-transform:uppercase;
    color:var(--red);
    opacity:.6;
}


/* =========================================================
   STORY
========================================================= */

.story{
    background:#111;
}

.story-image{
    position:absolute;

    width:48vw;
    height:68vh;

    left:50%;
    top:50%;

    transform:
        translate(-50%,-50%)
        scale(.82);

    overflow:hidden;
}

.story-image img{
    width:100%;
    height:100%;

    object-fit:cover;

    transform:scale(1.25);
}

.story-title{
    position:absolute;

    left:7vw;
    top:22%;

    font-family:"Playfair Display",serif;

    font-size:clamp(60px,10vw,150px);

    line-height:.8;

    letter-spacing:-.07em;

    z-index:5;
}

.story-title span{
    display:block;
}

.story-copy{
    position:absolute;

    right:8vw;
    bottom:13vh;

    max-width:320px;

    font-size:14px;
    line-height:1.8;

    color:#bcb7ae;
}

.story-number{
    position:absolute;

    right:7vw;
    top:12vh;

    font-size:11px;
    letter-spacing:.2em;

    color:#777;
}


/* =========================================================
   QUOTE
========================================================= */

.quote{
    background:#e8e1d5;
    color:#111;

    display:flex;
    align-items:center;
    justify-content:center;

    padding:0 8vw !important;
}

.quote-text{
    max-width:1250px;

    text-align:center;

    font-family:"Playfair Display",serif;

    font-size:clamp(42px,7vw,110px);

    line-height:1;

    letter-spacing:-.06em;
}

.quote-word{
    display:inline-block;
    margin-right:.12em;
}


/* =========================================================
   WORK (grid — photos from workphotosandvideo/)
========================================================= */

.work{
    position:relative;
    width:100%;
    height:100vh;
    height:100svh;

    display:flex;
    flex-direction:column;

    overflow:hidden;

    background:var(--black);

    padding:10vh 0 5vh;
}

/* Clips the track on the right and gives the images a definite
   height to be sized against, so the progress bar always fits. */
.work-viewport{
    flex:1;
    min-height:0;

    width:100%;
    overflow:hidden;

    margin-top:40px;

    display:flex;
    align-items:center;
}

.work-header{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;

    gap:30px;

    padding:0 6vw 28px;

    border-bottom:1px solid var(--line);
}

.work-header h2{
    font-family:"Playfair Display",serif;
    font-size:clamp(48px,9vw,130px);
    line-height:.9;
    letter-spacing:-.04em;
}

.work-header span{
    font-size:11px;
    text-transform:uppercase;
    letter-spacing:.25em;
    color:var(--red);
    padding-bottom:12px;
}

.work-track{
    display:flex;
    align-items:center;

    gap:4vw;

    width:max-content;
    height:100%;

    padding:0 8vw;
}

.work-progress{
    position:relative;

    flex-shrink:0;

    width:clamp(160px,22vw,320px);
    height:1px;

    margin:28px 0 0 6vw;

    background:var(--line);
}

.work-progress-bar{
    position:absolute;
    inset:0 auto 0 0;

    width:0%;

    background:var(--red);
}

.work-item{
    position:relative;

    flex-shrink:0;

    overflow:hidden;

    background:#181818;

    /* prevents the whole track from collapsing before images load */
    min-height:40vh;
}

.work-item img{
    width:100%;
    height:100%;

    object-fit:cover;

    transition:transform .7s cubic-bezier(.2,.7,.2,1), filter .7s ease;
}

.work-item:hover img{
    transform:scale(1.06);
    filter:brightness(.7);
}

/* Varied widths/heights for an editorial rhythm.
   Heights are a % of the track height so every item always fits
   inside the pinned section, whatever the viewport height. */
.work-item:nth-child(1){ width:44vw; height:100%; }
.work-item:nth-child(2){ width:34vw; height:88%; }
.work-item:nth-child(3){ width:38vw; height:74%; }
.work-item:nth-child(4){ width:40vw; height:95%; }
.work-item:nth-child(5){ width:36vw; height:78%; }
.work-item:nth-child(6){ width:42vw; height:90%; }
.work-item:nth-child(7){ width:34vw; height:72%; }
.work-item:nth-child(8){ width:40vw; height:84%; }

/* Extra gallery photos (9+) keep a tighter, filmstrip-like rhythm so the
   pinned horizontal scroll stays comfortable with many more items. */
.work-item:nth-child(n+9){ width:20vw; height:76%; }
.work-item:nth-child(n+9):nth-child(odd){ height:90%; }

/* Video cards are wider and full-height so the play badge reads well. */
.work-item.is-video,
.work-item.is-video:nth-child(odd){ width:30vw; height:100%; }

.work-overlay{
    position:absolute;
    inset:0;

    display:flex;
    align-items:flex-end;
    justify-content:space-between;

    padding:26px;

    background:linear-gradient(to top,rgba(0,0,0,.6),transparent 55%);

    opacity:0;
    transition:opacity .45s ease;
}

.work-item:hover .work-overlay{
    opacity:1;
}

.work-overlay h3{
    font-family:"Playfair Display",serif;
    font-size:clamp(20px,2.4vw,32px);
    font-weight:500;
}

.work-overlay span{
    font-size:11px;
    letter-spacing:.2em;
    color:var(--red);
    padding-bottom:6px;
}


/* =========================================================
   WORK — VIDEO CARDS + LIGHTBOX
========================================================= */

.work-item.is-video{
    cursor:pointer;
}

.work-play{
    position:absolute;
    top:50%; left:50%;
    transform:translate(-50%,-50%);

    display:grid;
    place-items:center;

    width:clamp(56px,6vw,84px);
    aspect-ratio:1;
    border-radius:50%;

    background:rgba(230,25,13,.92);
    box-shadow:0 12px 40px rgba(0,0,0,.45);

    transition:transform .35s cubic-bezier(.2,.7,.2,1), background .3s ease;
    z-index:2;
}

.work-play::before{
    content:"";

    margin-left:6px;
    border-style:solid;
    border-width:11px 0 11px 18px;
    border-color:transparent transparent transparent #fff;
}

.work-item.is-video:hover .work-play{
    transform:translate(-50%,-50%) scale(1.12);
    background:var(--red);
}

.work-item.is-video:hover img{
    filter:brightness(.55);
}

.work-item.is-video:focus-visible{
    outline:2px solid var(--red);
    outline-offset:-4px;
}

/* Full-screen lightbox that plays the work videos */
.video-modal{
    position:fixed;
    inset:0;
    z-index:400;

    display:flex;
    align-items:center;
    justify-content:center;
    padding:24px;

    background:rgba(0,0,0,.9);
    backdrop-filter:blur(8px);

    opacity:0;
    visibility:hidden;
    transition:opacity .35s ease, visibility .35s ease;
}

.video-modal.is-open{
    opacity:1;
    visibility:visible;
}

.video-modal video{
    width:auto;
    height:auto;

    max-width:min(94vw,480px);
    max-height:86vh;

    background:#000;
    border:1px solid rgba(255,255,255,.16);
    border-radius:16px;
    box-shadow:0 40px 100px rgba(0,0,0,.7);
}

.video-modal-close{
    position:absolute;
    top:20px;
    right:24px;

    width:48px;
    height:48px;

    display:grid;
    place-items:center;

    border:1px solid rgba(255,255,255,.35);
    border-radius:50%;
    background:transparent;

    color:#fff;
    font-size:24px;
    line-height:1;

    cursor:pointer;
    transition:background .25s ease, border-color .25s ease, transform .25s ease;
}

.video-modal-close:hover{
    background:var(--red);
    border-color:var(--red);
    transform:scale(1.06);
}

.video-modal-close:focus-visible{
    outline:2px solid var(--red);
    outline-offset:3px;
}


/* =========================================================
   FLOATING WHATSAPP BUTTON
========================================================= */

.whatsapp-float{
    position:fixed;
    right:26px;
    bottom:26px;

    z-index:9000;

    display:flex;
    align-items:center;
    gap:0;

    height:60px;
    padding:0 18px;

    color:#fff;
    background:#25D366;

    border-radius:100px;

    box-shadow:0 10px 30px rgba(0,0,0,.35);

    transition:gap .35s ease, padding .35s ease, transform .25s ease, box-shadow .25s ease;

    overflow:hidden;
}

.whatsapp-float:hover{
    gap:10px;
    padding:0 22px;
    transform:translateY(-3px);
    box-shadow:0 14px 38px rgba(37,211,102,.4);
}

.whatsapp-float svg{
    flex-shrink:0;
}

.whatsapp-float-text{
    font-size:11px;
    font-weight:600;
    text-transform:uppercase;
    letter-spacing:.15em;

    white-space:nowrap;

    max-width:0;
    overflow:hidden;
    opacity:0;

    transition:max-width .4s ease, opacity .3s ease;
}

.whatsapp-float:hover .whatsapp-float-text,
.whatsapp-float:focus-visible .whatsapp-float-text{
    max-width:120px;
    opacity:1;
}

/* subtle attention pulse */
.whatsapp-float::before{
    content:"";
    position:absolute;
    inset:0;

    border-radius:100px;
    box-shadow:0 0 0 0 rgba(37,211,102,.55);

    animation:waPulse 2.6s ease-out infinite;
    pointer-events:none;
}

@keyframes waPulse{
    0%   { box-shadow:0 0 0 0 rgba(37,211,102,.55); }
    70%  { box-shadow:0 0 0 18px rgba(37,211,102,0); }
    100% { box-shadow:0 0 0 0 rgba(37,211,102,0); }
}


/* =========================================================
   SOCIAL FEED — Facebook & YouTube (home)
========================================================= */

.social-feed{
    background:#121212;

    border-top:1px solid var(--line);
    border-bottom:1px solid var(--line);

    padding:7vh 6vw;
}

.social-feed-inner{
    display:flex;
    align-items:center;
    flex-wrap:wrap;

    gap:28px;
}

.social-feed-label{
    margin-right:auto;

    font-size:11px;
    letter-spacing:.2em;
    text-transform:uppercase;

    color:rgba(255,255,255,.55);
}

.social-feed-card{
    display:flex;
    align-items:center;

    gap:14px;

    padding:16px 26px;

    border:1px solid var(--line);
    background:var(--black);

    transition:border-color .3s ease, background .3s ease, transform .3s ease;
}

.social-feed-card:hover,
.social-feed-card:focus-visible{
    border-color:var(--red);
    background:#161616;

    transform:translateY(-3px);
}

.social-feed-icon{
    display:flex;
    align-items:center;
    justify-content:center;

    flex-shrink:0;

    width:40px;
    height:40px;

    border-radius:50%;

    background:var(--red);
    color:#fff;

    font-size:18px;
    font-weight:700;
    line-height:1;
}

.social-feed-text{
    display:flex;
    flex-direction:column;

    line-height:1.35;
}

.social-feed-text strong{
    font-size:15px;
    font-weight:600;
    letter-spacing:.02em;
}

.social-feed-text small{
    font-size:11px;
    letter-spacing:.05em;
    text-transform:uppercase;

    color:rgba(255,255,255,.55);
}

.social-feed-arrow{
    font-size:16px;
    color:var(--red);

    transition:transform .3s ease;
}

.social-feed-card:hover .social-feed-arrow,
.social-feed-card:focus-visible .social-feed-arrow{
    transform:translateX(5px);
}


/* =========================================================
   TRANSFORMATION
========================================================= */

.transformation{
    background:#121212;
}

.transform-image{
    position:absolute;

    width:40vw;
    height:55vh;

    left:50%;
    top:50%;

    transform:
        translate(-50%,-50%)
        rotate(-8deg)
        scale(.7);

    overflow:hidden;
}

.transform-image img{
    width:100%;
    height:100%;

    object-fit:cover;

    transform:scale(1.25);
}

.transform-title{
    position:absolute;

    left:0;
    right:0;
    top:50%;

    transform:translateY(-50%);

    text-align:center;

    font-family:"Playfair Display",serif;

    font-size:clamp(70px,13vw,190px);

    line-height:.8;

    letter-spacing:-.08em;

    white-space:nowrap;

    z-index:5;
}

.transform-title .outline{
    color:transparent;
    -webkit-text-stroke:1px #fff;
}


/* =========================================================
   SERVICES
========================================================= */

.services{
    background:#e8e1d5;
    color:#111;

    display:flex;
    align-items:center;

    padding:0 7vw !important;
}

.services-inner{
    width:100%;
}

.services-header{
    display:flex;
    justify-content:space-between;
    align-items:end;

    margin-bottom:60px;
}

.services-header h2{
    font-family:"Playfair Display",serif;

    font-size:clamp(60px,9vw,130px);

    letter-spacing:-.07em;
    line-height:.8;
}

.services-header span{
    font-size:11px;
    letter-spacing:.2em;
}

.service-list{
    border-top:1px solid rgba(0,0,0,.2);
}

.service{
    position:relative;

    min-height:110px;

    border-bottom:1px solid rgba(0,0,0,.2);

    display:flex;
    align-items:center;
    justify-content:space-between;

    overflow:hidden;
}

.service h3{
    font-family:"Playfair Display",serif;

    font-size:clamp(28px,4vw,60px);

    font-weight:400;

    transition:transform .5s ease;
}

.service span{
    font-size:12px;
    letter-spacing:.15em;
}

.service:hover h3{
    transform:translateX(20px);
}


/* =========================================================
   ABOUT
========================================================= */

.about{
    background:#111;
}

.about-image{
    position:absolute;

    width:34vw;
    height:55vh;

    left:10vw;
    top:50%;

    transform:translateY(-50%);

    overflow:hidden;
}

.about-image img{
    width:100%;
    height:120%;

    object-fit:cover;
}

.about-content{
    position:absolute;

    right:9vw;
    top:50%;

    transform:translateY(-50%);

    max-width:500px;
}

.about-content h2{
    font-family:"Playfair Display",serif;

    font-size:clamp(60px,8vw,120px);

    line-height:.8;

    letter-spacing:-.07em;

    margin-bottom:40px;
}

.about-content p{
    color:#9c9c9c;

    font-size:15px;
    line-height:1.9;

    max-width:430px;
}


/* =========================================================
   MARQUEE
========================================================= */

.marquee{
    height:28vh;
    min-height:180px;

    display:flex;
    align-items:center;

    background:#ff2a1a;

    color:#111;

    overflow:hidden;
}

.marquee-track{
    display:flex;

    width:max-content;

    white-space:nowrap;

    will-change:transform;
}

.marquee-item{
    font-family:"Playfair Display",serif;

    font-size:clamp(60px,9vw,140px);

    line-height:1;

    letter-spacing:-.06em;

    padding-right:60px;
}


/* =========================================================
   CTA
========================================================= */

.cta{
    background:#0b0b0b;
}

.cta-image{
    position:absolute;

    inset:0;

    width:100%;
    height:100%;

    object-fit:cover;

    opacity:.3;

    transform:scale(1.25);

    filter:grayscale(1);
}

.cta-circle{
    position:absolute;

    width:25vw;
    height:25vw;

    min-width:280px;
    min-height:280px;

    border-radius:50%;

    background:#e8e1d5;

    color:#111;

    left:50%;
    top:50%;

    transform:
        translate(-50%,-50%)
        scale(.15);

    display:flex;
    align-items:center;
    justify-content:center;

    text-align:center;

    z-index:2;
}

.cta-circle h2{
    font-family:"Playfair Display",serif;

    font-size:clamp(35px,5vw,80px);

    line-height:.9;

    letter-spacing:-.06em;
}

.cta-small{
    position:absolute;

    bottom:8vh;
    left:50%;

    transform:translateX(-50%);

    font-size:10px;

    letter-spacing:.2em;

    text-transform:uppercase;

    z-index:5;
}


/* =========================================================
   FOOTER
========================================================= */

.footer{
    background:#e8e1d5;
    color:#111;

    padding:70px 6vw 34px !important;
}

.footer-main{
    display:flex;
    align-items:center;
    justify-content:space-between;

    flex-wrap:wrap;
    gap:24px;

    padding-bottom:36px;
    margin-bottom:36px;

    border-bottom:1px solid rgba(0,0,0,.14);
}

.footer-logo{
    display:block;
    flex-shrink:0;
}

.footer-logo-img{
    display:block;
    width:auto;
    height:64px;
    object-fit:contain;
    object-position:left center;
}

.footer-tagline{
    flex:1;
    min-width:220px;

    font-size:13px;
    line-height:1.6;
    color:#555;
}

.footer-book{
    flex-shrink:0;

    padding:13px 26px;

    font-size:11px;
    font-weight:600;
    text-transform:uppercase;
    letter-spacing:.15em;

    color:var(--white);
    background:#111;

    border-radius:100px;

    transition:opacity .3s ease, transform .3s ease;
}

.footer-book:hover{
    opacity:.82;
    transform:translateY(-2px);
}

.footer-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);

    gap:40px;
}

.footer-col{
    display:flex;
    flex-direction:column;
    gap:10px;

    font-size:13px;
    line-height:1.7;
    color:#333;
}

.footer-label{
    font-size:10px;
    font-weight:600;
    text-transform:uppercase;
    letter-spacing:.25em;
    color:#8a8378;

    margin-bottom:6px;
}

.footer-col address{
    font-style:normal;
}

.footer-col a{
    width:fit-content;
    transition:color .25s ease;
}

.footer-col a:hover{
    color:var(--red);
}

.footer-right{
    display:flex;
    gap:30px;

    margin-top:46px;
    padding-top:24px;

    border-top:1px solid rgba(0,0,0,.14);

    font-size:11px;
    text-transform:uppercase;
    letter-spacing:.12em;
    color:#8a8378;
}


/* =========================================================
   MOBILE
========================================================= */

/* =========================================================
   REDUCED MOTION
========================================================= */

@media(prefers-reduced-motion:reduce){

    html{
        scroll-behavior:auto;
    }

    *,
    *::before,
    *::after{
        animation-duration:.01ms !important;
        animation-iteration-count:1 !important;
        transition-duration:.01ms !important;
    }

}
/* =========================================================
   FIXED FLOATING NAVBAR
   ========================================================= */

/* Replaces the old hero-absolute header. Fixed so it stays
   reachable on every page and at every scroll position.
   Floating pill: 2px from the top, inset from both sides,
   rounded corners — its own background so it stays legible
   over every section it passes. */
.site-header{
    position:fixed;
    top:2px;
    left:14px;
    right:14px;
    width:auto;

    z-index:900;

    padding:10px 26px;

    display:flex;
    align-items:center;
    justify-content:space-between;

    color:white;

    background:rgba(11,11,11,.78);
    backdrop-filter:blur(16px) saturate(140%);
    -webkit-backdrop-filter:blur(16px) saturate(140%);

    border:1px solid rgba(255,255,255,.12);
    border-radius:18px;

    box-shadow:0 12px 40px rgba(0,0,0,.35);

    transition:background .45s ease, backdrop-filter .45s ease,
               padding .45s ease, box-shadow .45s ease;
}

/* Solid state — applied by JS once scrolled, and always on
   interior pages (which have no canvas hero behind it). */
.site-header.is-stuck{
    padding:6px 22px;

    background:rgba(11,11,11,.9);
    backdrop-filter:blur(18px) saturate(140%);
    -webkit-backdrop-filter:blur(18px) saturate(140%);

    box-shadow:0 1px 0 var(--line), 0 12px 40px rgba(0,0,0,.5);
}

.site-header .logo-img{
    height:40px;
    max-height:40px;
    transition:height .45s ease, max-height .45s ease;
}

.site-header.is-stuck .logo-img{
    height:34px;
    max-height:34px;
}

/* ── Desktop links ── */

.site-nav{
    display:flex;
    align-items:center;
    gap:28px;
}

.site-nav a{
    font-size:11px;
    text-transform:uppercase;
    letter-spacing:.15em;
    position:relative;
    white-space:nowrap;
}

.site-nav > a::after,
.nav-item > a::after{
    content:"";
    position:absolute;
    bottom:-5px;
    left:0;
    width:0;
    height:1px;
    background:var(--red);
    transition:width .3s ease;
}

.site-nav > a:hover::after,
.nav-item:hover > a::after,
.site-nav a.is-active::after{
    width:100%;
}

.site-nav a.is-active{
    color:var(--red);
}

/* ── Dropdown ── */

.nav-item{
    position:relative;
}

.nav-drop{
    position:absolute;
    top:calc(100% + 14px);
    left:50%;

    transform:translateX(-50%) translateY(-8px);

    min-width:230px;
    padding:10px;

    background:rgba(18,18,18,.97);
    backdrop-filter:blur(14px);
    -webkit-backdrop-filter:blur(14px);

    border:1px solid var(--line);
    border-radius:14px;

    box-shadow:0 20px 50px rgba(0,0,0,.5);

    opacity:0;
    visibility:hidden;
    pointer-events:none;

    transition:opacity .3s ease, transform .3s ease, visibility .3s;
}

.nav-item:hover .nav-drop,
.nav-item:focus-within .nav-drop{
    opacity:1;
    visibility:visible;
    pointer-events:auto;

    transform:translateX(-50%) translateY(0);
}

.nav-drop a{
    display:block;

    padding:10px 14px;

    font-size:11px;
    letter-spacing:.12em;

    color:var(--white);
    border-radius:8px;

    transition:background .25s ease, color .25s ease, padding-left .25s ease;
}

.nav-drop a::after{
    display:none;
}

.nav-drop a:hover{
    background:rgba(255,42,26,.12);
    color:var(--red);
    padding-left:20px;
}

.nav-drop small{
    display:block;

    font-size:10px;
    letter-spacing:.06em;
    text-transform:none;

    color:var(--muted);
}

/* ── Hamburger ── */

.nav-toggle{
    display:none;

    position:relative;

    width:44px;
    height:44px;

    background:none;
    border:1px solid var(--line);
    border-radius:50%;

    cursor:pointer;

    z-index:950;
}

.nav-toggle span{
    position:absolute;
    left:50%;
    width:18px;
    height:1.5px;
    background:white;

    transform:translateX(-50%);
    transition:transform .35s cubic-bezier(.2,.7,.2,1), opacity .25s ease;
}

.nav-toggle span:nth-child(1){ top:17px; }
.nav-toggle span:nth-child(2){ top:22px; }
.nav-toggle span:nth-child(3){ top:27px; }

/* X state */
.nav-toggle.is-open span:nth-child(1){
    top:22px;
    transform:translateX(-50%) rotate(45deg);
}
.nav-toggle.is-open span:nth-child(2){
    opacity:0;
}
.nav-toggle.is-open span:nth-child(3){
    top:22px;
    transform:translateX(-50%) rotate(-45deg);
}

/* ── Mobile overlay ── */

.nav-mobile{
    position:fixed;
    inset:0;

    z-index:940;

    background:rgba(8,8,8,.98);
    backdrop-filter:blur(20px);
    -webkit-backdrop-filter:blur(20px);

    padding:110px 28px 40px;

    display:flex;
    flex-direction:column;
    gap:4px;

    overflow-y:auto;

    opacity:0;
    visibility:hidden;
    transition:opacity .4s ease, visibility .4s;
}

.nav-mobile.is-open{
    opacity:1;
    visibility:visible;
}

.nav-mobile a{
    display:block;

    padding:14px 0;

    font-family:"Playfair Display",serif;
    font-size:clamp(26px,7vw,34px);

    border-bottom:1px solid var(--line);

    transition:color .25s ease, padding-left .25s ease;
}

.nav-mobile a:hover,
.nav-mobile a.is-active{
    color:var(--red);
    padding-left:10px;
}

/* =========================================================
   INTERIOR PAGE SHARED BLOCKS
   ========================================================= */

/* Every subpage opens with this instead of the canvas hero */
.page-hero{
    position:relative;

    min-height:78vh;
    min-height:78svh;

    display:flex;
    align-items:flex-end;

    padding:160px 6vw 70px;

    overflow:hidden;

    background:var(--black);
}

.page-hero::after{
    content:"";
    position:absolute;
    inset:0;

    background:linear-gradient(to top,rgba(11,11,11,.96) 5%,rgba(11,11,11,.55) 60%,rgba(11,11,11,.75));

    pointer-events:none;
}

.page-hero-bg{
    position:absolute;
    inset:0;

    width:100%;
    height:100%;

    object-fit:cover;

    opacity:.5;

    transform:scale(1.12);
}

.page-hero-inner{
    position:relative;
    z-index:2;

    width:100%;
}

.page-hero h1{
    font-family:"Playfair Display",serif;
    font-size:clamp(44px,8.5vw,116px);
    line-height:.92;
    letter-spacing:-.04em;

    margin-bottom:26px;
}

.page-hero p{
    max-width:62ch;

    font-size:clamp(15px,1.5vw,19px);
    font-weight:300;
    line-height:1.7;

    color:var(--muted);
}

.crumbs{
    display:flex;
    align-items:center;
    flex-wrap:wrap;
    gap:10px;

    margin-bottom:28px;

    font-size:11px;
    text-transform:uppercase;
    letter-spacing:.18em;

    color:var(--muted);
}

.crumbs a:hover{
    color:var(--red);
}

.crumbs span{
    color:var(--red);
}

/* Generic padded content band */
.band{
    position:relative;

    padding:120px 6vw;

    background:var(--black);
}

.band-alt{
    background:#0e0e0e;
}

.band-head{
    max-width:760px;
    margin-bottom:70px;
}

.band-head h2{
    font-family:"Playfair Display",serif;
    font-size:clamp(34px,5.5vw,72px);
    line-height:1;
    letter-spacing:-.03em;

    margin-bottom:22px;
}

.band-head p{
    font-size:16px;
    font-weight:300;
    line-height:1.75;
    color:var(--muted);
}

.eyebrow-label{
    display:block;

    margin-bottom:18px;

    font-size:11px;
    text-transform:uppercase;
    letter-spacing:.25em;

    color:var(--red);
}

/* Reusable card grid */
.card-grid{
    display:grid;

    grid-template-columns:repeat(auto-fit,minmax(300px,1fr));

    gap:1px;

    background:var(--line);

    border:1px solid var(--line);
}

.card{
    padding:44px 38px;

    background:var(--black);

    transition:background .4s ease;
}

/* Service-area grid — carries the location SEO terms */
.area-grid{
    display:grid;

    grid-template-columns:repeat(auto-fit,minmax(210px,1fr));

    gap:14px;
}

.area-card{
    padding:26px 24px;

    background:#0e0e0e;

    border:1px solid var(--line);
    border-radius:12px;

    transition:border-color .35s ease, transform .35s ease;
}

.area-card:hover{
    border-color:rgba(255,42,26,.5);
    transform:translateY(-4px);
}

.area-card h3{
    font-family:"Playfair Display",serif;
    font-size:20px;
    font-weight:500;

    margin-bottom:8px;
}

.area-card p{
    font-size:13px;
    font-weight:300;
    line-height:1.6;
    color:var(--muted);
}

/* FAQ — long-tail SEO */
.faq-item{
    border-bottom:1px solid var(--line);
}

.faq-q{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:24px;

    width:100%;
    padding:28px 0;

    background:none;
    border:none;

    font-family:"Playfair Display",serif;
    font-size:clamp(18px,2.1vw,25px);
    font-weight:500;
    line-height:1.3;

    color:var(--white);
    text-align:left;

    cursor:pointer;
}

.faq-q span{
    flex-shrink:0;

    font-family:inherit;
    font-size:26px;
    font-weight:400;

    color:var(--red);

    transition:transform .4s ease;
}

.faq-item.is-open .faq-q span{
    transform:rotate(45deg);
}

.faq-a{
    max-height:0;
    overflow:hidden;

    transition:max-height .45s ease;
}

.faq-a p{
    max-width:80ch;

    padding-bottom:30px;

    font-size:15px;
    font-weight:300;
    line-height:1.75;

    color:var(--muted);
}

/* Buttons shared across subpages */
.btn{
    display:inline-flex;
    align-items:center;
    gap:12px;

    padding:16px 32px;

    font-size:11px;
    font-weight:600;
    text-transform:uppercase;
    letter-spacing:.18em;

    border-radius:100px;

    transition:transform .3s ease, opacity .3s ease, background .3s ease;
}

.btn:hover{
    transform:translateY(-3px);
    opacity:.9;
}

.btn-gold{
    color:var(--black);
    background:var(--red);
}

.btn-ghost{
    color:var(--white);
    border:1px solid rgba(255,255,255,.3);
}

.btn-ghost:hover{
    background:rgba(255,255,255,.07);
}

/* =========================================================
   BLOG
   ========================================================= */

.blog-grid{
    display:grid;

    grid-template-columns:repeat(auto-fill,minmax(320px,1fr));

    gap:30px;
}

.blog-card{
    position:relative;

    display:flex;
    flex-direction:column;

    background:#0e0e0e;

    border:1px solid var(--line);
    border-radius:14px;

    overflow:hidden;

    transition:transform .45s cubic-bezier(.2,.7,.2,1),
               border-color .45s ease;
}

.blog-card:hover{
    transform:translateY(-7px);
    border-color:rgba(255,42,26,.45);
}

.blog-thumb{
    position:relative;

    aspect-ratio:4/3;

    overflow:hidden;

    background:#181818;
}

.blog-thumb img{
    width:100%;
    height:100%;
    object-fit:cover;

    transition:transform .8s cubic-bezier(.2,.7,.2,1);
}

.blog-card:hover .blog-thumb img{
    transform:scale(1.07);
}

.blog-tag{
    position:absolute;
    top:16px;
    left:16px;

    padding:7px 13px;

    font-size:10px;
    font-weight:600;
    text-transform:uppercase;
    letter-spacing:.14em;

    color:var(--black);
    background:var(--red);

    border-radius:100px;
}

.blog-body{
    display:flex;
    flex-direction:column;
    flex:1;

    padding:28px 26px 26px;
}

.blog-date{
    margin-bottom:14px;

    font-size:10px;
    text-transform:uppercase;
    letter-spacing:.18em;

    color:var(--muted);
}

.blog-body h3{
    font-family:"Playfair Display",serif;
    font-size:clamp(20px,2.1vw,26px);
    font-weight:500;
    line-height:1.2;

    margin-bottom:14px;
}

.blog-body h3 a{
    color:inherit;
}

/* makes the whole card clickable without nesting interactive elements */
.blog-body h3 a::after{
    content:"";
    position:absolute;
    inset:0;
}

.blog-body p{
    font-size:14px;
    font-weight:300;
    line-height:1.72;

    color:var(--muted);
}

.blog-more{
    margin-top:auto;
    padding-top:22px;

    font-size:11px;
    font-weight:600;
    text-transform:uppercase;
    letter-spacing:.16em;

    color:var(--red);
}

/* Category filter */
.blog-filters{
    display:flex;
    flex-wrap:wrap;
    gap:10px;

    margin-bottom:52px;
}

.filter-btn{
    padding:11px 22px;

    font-size:11px;
    font-weight:600;
    text-transform:uppercase;
    letter-spacing:.14em;

    color:var(--muted);

    background:none;
    border:1px solid var(--line);
    border-radius:100px;

    cursor:pointer;

    transition:color .3s ease, border-color .3s ease, background .3s ease;
}

.filter-btn:hover{
    color:var(--white);
    border-color:rgba(255,255,255,.4);
}

.filter-btn.is-active{
    color:var(--black);
    background:var(--red);
    border-color:var(--red);
}

/* Post hero */
.post-head{
    max-width:820px;
    margin:0 auto 60px;
    text-align:center;
}

.post-head h1{
    font-family:"Playfair Display",serif;
    font-size:clamp(32px,5.4vw,64px);
    font-weight:500;
    line-height:1.05;
    letter-spacing:-.03em;

    margin-bottom:24px;
}

.post-meta{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    justify-content:center;
    gap:16px;

    font-size:11px;
    text-transform:uppercase;
    letter-spacing:.16em;

    color:var(--muted);
}

.post-meta span{
    color:var(--red);
}

.post-cover{
    display:block;

    width:100%;
    max-width:1100px;

    aspect-ratio:16/9;

    margin:0 auto 70px;

    object-fit:cover;

    border-radius:16px;
}

.post-nav{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    justify-content:space-between;
    gap:20px;

    max-width:74ch;
    margin:70px auto 0;

    padding-top:40px;

    border-top:1px solid var(--line);
}

.post-nav a{
    font-size:12px;
    text-transform:uppercase;
    letter-spacing:.14em;
    color:var(--red);
}


/* =========================================================
   CONTACT
   ========================================================= */

.contact-grid{
    display:grid;

    grid-template-columns:1.1fr .9fr;

    gap:70px;

    align-items:start;
}

.contact-block{
    margin-bottom:38px;
}

.contact-block h3{
    font-family:"Playfair Display",serif;
    font-size:22px;
    font-weight:500;

    margin-bottom:12px;
}

.contact-block p,
.contact-block a{
    display:block;

    font-size:15.5px;
    font-weight:300;
    line-height:1.75;

    color:var(--muted);
}

.contact-block a:hover{
    color:var(--red);
}

.contact-form{
    padding:42px 38px;

    background:#0e0e0e;

    border:1px solid var(--line);
    border-radius:16px;
}

.contact-form h3{
    font-family:"Playfair Display",serif;
    font-size:clamp(24px,2.8vw,32px);
    font-weight:500;

    margin-bottom:8px;
}

.contact-form > p{
    margin-bottom:30px;

    font-size:14px;
    font-weight:300;
    line-height:1.7;

    color:var(--muted);
}

.form-row{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:16px;
}

.field{
    margin-bottom:16px;
}

.field label{
    display:block;

    margin-bottom:9px;

    font-size:10px;
    text-transform:uppercase;
    letter-spacing:.16em;

    color:var(--red);
}

.field input,
.field select,
.field textarea{
    width:100%;

    padding:14px 16px;

    font-family:inherit;
    font-size:14.5px;
    font-weight:300;

    color:var(--white);

    background:#141414;

    border:1px solid var(--line);
    border-radius:10px;

    transition:border-color .3s ease;
}

.field textarea{
    min-height:130px;
    resize:vertical;
}

.field input:focus,
.field select:focus,
.field textarea:focus{
    outline:none;
    border-color:var(--red);
}

.contact-form .btn{
    width:100%;
    justify-content:center;

    margin-top:10px;

    cursor:pointer;
}

.form-note{
    margin-top:18px;

    font-size:12.5px;
    font-weight:300;
    line-height:1.6;

    color:var(--muted);
    text-align:center;
}
.btn-row{
    display:flex;
    flex-wrap:wrap;
    gap:14px;
    margin-top:38px;
}

/* Map embed on the contact page */
.map-embed{
    margin-top:44px;

    border:1px solid var(--line);
    border-radius:16px;

    overflow:hidden;
}

.map-embed iframe{
    display:block;
    width:100%;
    height:380px;

    border:0;

    filter:grayscale(.35) contrast(1.05);
}

/* Prose body used by the blog post template */
.prose{
    max-width:74ch;
    margin:0 auto;
}

.prose h2{
    font-family:"Playfair Display",serif;
    font-size:clamp(26px,3.4vw,38px);
    font-weight:500;
    line-height:1.15;
    letter-spacing:-.02em;

    margin:56px 0 20px;
}

.prose p{
    font-size:17px;
    font-weight:300;
    line-height:1.85;

    color:#d6d0c5;

    margin-bottom:24px;
}

.prose ul{
    margin:0 0 26px;
    padding-left:22px;
}

.prose li{
    font-size:16px;
    font-weight:300;
    line-height:1.75;

    color:#d6d0c5;

    margin-bottom:10px;
}

.prose blockquote{
    margin:40px 0;
    padding:26px 30px;

    border-left:2px solid var(--red);

    background:#111;

    font-family:"Playfair Display",serif;
    font-size:clamp(19px,2.2vw,25px);
    font-style:italic;
    line-height:1.45;
}
.band-alt .card{
    background:#0e0e0e;
}

.card:hover{
    background:#141414;
}

.card-num{
    display:block;

    margin-bottom:24px;

    font-family:"Playfair Display",serif;
    font-size:14px;

    color:var(--red);
}

.card h3{
    font-family:"Playfair Display",serif;
    font-size:clamp(22px,2.4vw,30px);
    font-weight:500;
    line-height:1.15;

    margin-bottom:14px;
}

.card p{
    font-size:14.5px;
    font-weight:300;
    line-height:1.72;
    color:var(--muted);
}

.card-meta{
    display:flex;
    flex-wrap:wrap;
    gap:8px;

    margin-top:26px;
}

.card-meta span{
    padding:6px 12px;

    font-size:10px;
    text-transform:uppercase;
    letter-spacing:.12em;

    color:var(--red);

    border:1px solid rgba(255,42,26,.35);
    border-radius:100px;
}
.nav-mobile .nav-mobile-cta{
    margin-top:26px;
    padding:16px;

    font-family:inherit;
    font-size:12px;
    font-weight:600;
    letter-spacing:.18em;
    text-align:center;

    color:var(--black);
    background:var(--red);
    border-radius:100px;
    border:none;
}


/* =========================================================
   MOBILE OVERRIDES — kept at the end of the file on purpose
   (same-specificity rules above would otherwise win)
   ========================================================= */

@media(max-width:768px){

    .header{
        padding:20px;
    }

    .nav{
        display:none;
    }

    .eyebrow{
        top:90px;
        left:20px;
    }

    /* Hero heading mobile */
    .heading-main .h-word{
        font-size:clamp(38px,15vw,80px);
    }

    .heading-sub{
        font-size:9px;
        letter-spacing:.25em;
        margin-top:18px;
    }

    /* Hero intro */
    .hero-intro{
        max-width:100%;
        margin-top:24px;
    }

    .hero-intro-text{
        font-size:12px;
        line-height:1.7;
    }

    .hero-cta{
        gap:10px;
        margin-top:22px;
    }

    .hero-cta-primary,
    .hero-cta-ghost{
        padding:11px 22px;
        font-size:10px;
        letter-spacing:.12em;
    }

    .hero-facts{
        gap:10px;
        margin-top:20px;
        font-size:9px;
        letter-spacing:.14em;
    }

    .heading-line-top,
    .heading-line-bottom{
        display:none;
    }

    .hero-corner{
        display:none;
    }

    .hero-diamond{
        display:none;
    }

    .corner-tl,
    .corner-tr{
        top:80px;
    }

    .corner-bl,
    .corner-br{
        bottom:60px;
    }

    /* Watermark cover — smaller on mobile */
    .watermark-cover{
        bottom:8%;
        right:4%;
    }

    .watermark-cover svg{
        width:60px;
        height:60px;
    }


    .story-image{
        width:78vw;
        height:58vh;

        top:47%;
    }

    .story-title{
        left:20px;
        top:18%;

        font-size:21vw;
    }

    .story-copy{
        left:20px;
        right:20px;

        bottom:6vh;

        max-width:310px;

        font-size:12px;
    }

    .story-number{
        right:20px;
        top:90px;
    }


    .quote{
        padding:0 20px !important;
    }

    .quote-text{
        font-size:12vw;
    }


    .transform-image{
        width:76vw;
        height:52vh;
    }

    .transform-title{
        font-size:19vw;
    }


    .services{
        padding:0 20px !important;
    }

    .services-header{
        margin-bottom:35px;
    }

    .services-header h2{
        font-size:18vw;
    }

    .service{
        min-height:90px;
    }

    .service h3{
        font-size:8vw;
    }


    .about-image{
        width:75vw;
        height:40vh;

        left:50%;
        top:35%;

        transform:translate(-50%,-50%);
    }

    .about-content{
        left:20px;
        right:20px;

        top:auto;
        bottom:7vh;

        transform:none;
    }

    .about-content h2{
        font-size:18vw;
        margin-bottom:20px;
    }

    .about-content p{
        font-size:12px;
    }


    .marquee{
        height:22vh;
        min-height:150px;
    }


    .cta-circle{
        width:70vw;
        height:70vw;

        min-width:0;
        min-height:0;
    }


    .work{
        padding:9vh 0 5vh;
    }

    .work-header{
        flex-direction:column;
        align-items:flex-start;
        gap:14px;

        padding:0 20px 22px;
    }

    .work-header h2{
        font-size:16vw;
    }

    .work-header span{
        padding-bottom:0;
    }

    .work-viewport{
        margin-top:30px;

        /* On mobile the track is a native swipe strip — no scroll pin. */
        overflow-x:auto;
        overflow-y:hidden;
        scroll-snap-type:x mandatory;
        -webkit-overflow-scrolling:touch;
        scrollbar-width:none;
    }

    .work-viewport::-webkit-scrollbar{
        display:none;
    }

    .work-track{
        gap:16px;
        padding:0 20px;
    }

    .work-item{
        scroll-snap-align:center;
    }

    .work-item:nth-child(n){
        width:78vw;
        height:82% !important;
    }

    .work-item.is-video,
    .work-item.is-video:nth-child(odd){
        width:78vw;
        height:82% !important;
    }

    .work-overlay{
        opacity:1;
        padding:18px;
    }

    .work-overlay h3{
        font-size:20px;
    }

    .work-progress{
        margin:28px 0 0 20px;
    }


    /* Social feed strip */
    .social-feed{
        padding:40px 20px;
    }

    .social-feed-inner{
        flex-direction:column;
        align-items:stretch;

        gap:14px;
    }

    .social-feed-label{
        margin-right:0;
    }

    .social-feed-card{
        padding:14px 18px;
    }


    /* Floating WhatsApp */
    .whatsapp-float{
        right:16px;
        bottom:16px;

        height:54px;
        padding:0 15px;
    }

    .whatsapp-float-text{
        max-width:0;
        opacity:0;
    }


    .footer{
        padding:46px 20px 26px !important;
    }

    .footer-main{
        flex-direction:column;
        align-items:flex-start;
        gap:20px;

        padding-bottom:28px;
        margin-bottom:28px;
    }

    .footer-logo-img{
        height:52px;
    }

    .footer-grid{
        grid-template-columns:1fr;
        gap:28px;
    }

    .footer-right{
        margin-top:32px;
        font-size:10px;
    }

}

/* =========================================================
   MOBILE — floating navbar, interior pages, blog, contact
   ========================================================= */

@media(max-width:900px){

    .contact-grid{
        grid-template-columns:1fr;
        gap:46px;
    }
}

@media(max-width:768px){

    /* Desktop nav links become the overlay menu */
    .site-nav{
        display:none;
    }

    .nav-toggle{
        display:block;
    }

    .site-header,
    .site-header.is-stuck{
        left:8px;
        right:8px;
        padding:8px 16px;
        border-radius:14px;
    }

    .site-header .logo-img,
    .site-header.is-stuck .logo-img{
        height:36px;
        max-height:36px;
    }

    .page-hero{
        min-height:70vh;
        min-height:70svh;

        padding:130px 20px 54px;
    }

    .page-hero h1{
        margin-bottom:20px;
    }

    .band{
        padding:80px 20px;
    }

    .band-head{
        margin-bottom:46px;
    }

    .card{
        padding:32px 26px;
    }

    .faq-q{
        padding:22px 0;
    }

    .blog-grid{
        grid-template-columns:1fr;
        gap:22px;
    }

    .post-cover{
        border-radius:12px;
        margin-bottom:48px;
    }

    .map-embed iframe{
        height:280px;
    }

    .post-head{
        margin-bottom:42px;
        text-align:left;
    }

    .post-meta{
        justify-content:flex-start;
    }

    .prose p{
        font-size:16px;
    }

    .contact-form{
        padding:30px 24px;
    }

    .form-row{
        grid-template-columns:1fr;
        gap:0;
    }

    .btn{
        width:100%;
        justify-content:center;
    }
}