/* ==========================================================================
   Moving Company Template — main stylesheet
   Design: warm paper, deep evergreen for trust, one warm accent for actions (box tape and the truck stripe), kraft
   cardboard details. Fraunces serif headlines in sentence case with italic accents, Figtree body.
   Brand colours come from site.config.json ("accent", "deep") via an inline :root style.
   ========================================================================== */

@font-face{font-family:"Fraunces";src:url("../fonts/fraunces-latin-500-normal.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Fraunces";src:url("../fonts/fraunces-latin-600-normal.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"Fraunces";src:url("../fonts/fraunces-latin-500-italic.woff2") format("woff2");font-weight:500 600;font-style:italic;font-display:swap}
@font-face{font-family:"Figtree";src:url("../fonts/figtree-latin-400-normal.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Figtree";src:url("../fonts/figtree-latin-600-normal.woff2") format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"Figtree";src:url("../fonts/figtree-latin-700-normal.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}

:root{
  --bg:#f7f1e8;
  --bg-2:#efe6d8;
  --surface:#fffaf3;
  --cream:#fff7ec;
  --line:#e3d7c5;
  --line-2:#cdbea7;
  --text:#1d2522;
  --muted:#59605b;
  --prose:#333c38;
  --kraft:#cfa36d;
  --kraft-d:#b3834f;
  --kraft-l:#e6c697;
  --sage:#8fae8b;
  --sky:#bcd8d4;
  --wood:#c4915f;
  --accent:#e8813a;
  --accent-text:#a3501a;
  --accent-soft:#fae3cf;
  --accent-on-deep:#f29a5a;
  --deep:#1f4a40;
  --deep-2:#3a5f56;
  --deep-soft:#e1e6dc;
  --on-deep:#f6efe4;
  --on-deep-muted:#c9d3cc;
  --err:#a5281b;
  --display:"Fraunces",Georgia,"Times New Roman",serif;
  --body:"Figtree",system-ui,-apple-system,"Segoe UI",sans-serif;
  --wrap:1240px;
  --gutter:clamp(18px,4vw,48px);
  --radius:16px;
  --r-sm:10px;
  --ease:cubic-bezier(.16,1,.3,1);
  --header-h:78px;
  --demo-h:0px;
  --shadow:0 1px 2px rgba(60,42,20,.06),0 12px 32px -14px rgba(60,42,20,.22);
  --shadow-lg:0 2px 4px rgba(60,42,20,.05),0 30px 70px -28px rgba(60,42,20,.35);
}
.has-demo{--demo-h:36px}
@media (max-width:860px){.has-demo{--demo-h:44px}}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + var(--demo-h) + 16px)}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--body);font-size:1.0625rem;line-height:1.65;overflow-x:hidden;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,svg,video,canvas{max-width:100%;display:block}
a{color:inherit}
p{margin:0 0 1.1em}
h1,h2,h3,h4{margin:0;font-weight:600;line-height:1.08}
ul,ol{margin:0;padding:0}
button{font:inherit;color:inherit}
fieldset{border:0;margin:0;padding:0;min-width:0}
::selection{background:var(--accent);color:var(--text)}

.skip-link{position:absolute;left:16px;top:-80px;z-index:4000;background:var(--deep);color:#fff;padding:12px 18px;font-weight:700;text-decoration:none;border-radius:var(--r-sm);transition:top .2s}
.skip-link:focus{top:16px}
:focus-visible{outline:3px solid var(--accent-text);outline-offset:3px}
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding:0 var(--gutter)}
.section{position:relative;padding:clamp(80px,10vw,150px) 0}
.section--tight{padding:clamp(56px,7vw,96px) 0}
.section--paper2{background:var(--bg-2)}

/* ---------- Type ---------- */
.eyebrow{display:inline-flex;align-items:center;gap:12px;font-family:var(--body);font-weight:700;font-size:.8rem;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-text);margin-bottom:20px}
.eyebrow::before{content:"";width:30px;height:12px;border-radius:2px;background:var(--accent);opacity:.9;transform:rotate(-4deg);box-shadow:inset 0 0 0 1px rgba(0,0,0,.04)}
.eyebrow--light{color:var(--accent-on-deep)}
.kicker{display:flex;align-items:center;gap:8px;font-weight:700;font-size:.76rem;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-text);margin:0 0 8px}
.kicker svg{width:16px;height:16px}
.display{font-family:var(--display);font-weight:600;letter-spacing:-.02em;line-height:1.02;text-wrap:balance}
.display em,.hl{font-style:italic;font-weight:500;color:var(--accent-text)}
.h-xl{font-size:clamp(2.4rem,5vw,4.5rem)}
.h-lg{font-size:clamp(2.2rem,4.4vw,3.8rem)}
.h-md{font-size:clamp(1.6rem,2.6vw,2.3rem)}
.h-sm{font-size:clamp(1.3rem,1.8vw,1.6rem)}
.lead{font-size:clamp(1.12rem,1.5vw,1.3rem);line-height:1.55;color:var(--muted);max-width:56ch}
.muted{color:var(--muted)}
.fine{font-size:.88rem;color:var(--muted)}
.accent{color:var(--accent-text)}

/* ---------- Buttons ---------- */
.btn{--bh:54px;position:relative;display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:var(--bh);padding:0 26px;border:0;border-radius:999px;font-family:var(--body);font-weight:700;font-size:1.02rem;letter-spacing:.01em;text-decoration:none;cursor:pointer;transition:transform .45s var(--ease),background-color .3s,color .3s,box-shadow .35s}
.btn svg{width:18px;height:18px;flex:none;transition:transform .45s var(--ease)}
.btn:hover{transform:translateY(-2px)}
.btn:hover svg{transform:translateX(3px)}
.btn--primary{background:var(--accent);color:var(--text);box-shadow:0 10px 24px -10px color-mix(in srgb,var(--accent) 80%,transparent),inset 0 -2px 0 rgba(0,0,0,.08)}
.btn--primary:hover{background:color-mix(in srgb,var(--accent) 88%,#fff);box-shadow:0 16px 32px -12px color-mix(in srgb,var(--accent) 85%,transparent),inset 0 -2px 0 rgba(0,0,0,.08)}
.btn--ghost{background:transparent;color:var(--deep);box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--deep) 45%,transparent)}
.btn--ghost:hover{background:var(--deep);color:#fff;box-shadow:inset 0 0 0 1.5px var(--deep)}
.btn--light{background:var(--cream);color:var(--deep)}
.btn--light:hover{background:#fff}
.btn--sm{--bh:44px;padding:0 20px;font-size:.95rem}
.btn-row{display:flex;flex-wrap:wrap;gap:12px}
.link-arrow{display:inline-flex;align-items:center;gap:8px;font-weight:700;text-decoration:none;color:var(--accent-text);background:linear-gradient(currentColor,currentColor) 0 100%/0 2px no-repeat;padding-bottom:2px;transition:background-size .45s var(--ease)}
.link-arrow:hover{background-size:100% 2px}
.link-arrow svg{width:16px;height:16px}

/* ---------- Sample-site banner (demo_mode) ---------- */
.demo-bar{position:fixed;top:0;left:0;right:0;z-index:1102;min-height:var(--demo-h);display:flex;align-items:center;justify-content:center;background:#ffd54a;color:#151100;font:700 .82rem/1.4 var(--body);padding:8px var(--gutter);text-align:center}
@media (max-width:860px){.demo-bar{font-size:.7rem;padding:6px 12px}}

/* ---------- Header ---------- */
.progress{position:fixed;left:0;top:var(--demo-h);height:3px;width:100%;background:var(--accent);transform-origin:0 50%;transform:scaleX(0);z-index:1101;pointer-events:none}
.site-header{position:fixed;left:0;right:0;top:var(--demo-h);height:var(--header-h);z-index:1100;transition:transform .5s var(--ease),background-color .4s,box-shadow .4s}
.site-header.is-scrolled{background:color-mix(in srgb,var(--bg) 90%,transparent);-webkit-backdrop-filter:blur(14px) saturate(130%);backdrop-filter:blur(14px) saturate(130%);box-shadow:0 1px 0 var(--line),0 10px 30px -20px rgba(60,42,20,.35)}
.site-header.is-hidden{transform:translateY(-100%)}
.site-header .wrap{height:100%;display:flex;align-items:center;gap:24px;max-width:1400px}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;flex:none;color:var(--deep)}
.brand__mark{width:40px;height:40px}
.brand__name{font-family:var(--display);font-weight:600;font-size:1.45rem;letter-spacing:-.01em;line-height:1}
.brand__name small{display:block;font-family:var(--body);font-weight:700;font-size:.62rem;letter-spacing:.24em;text-transform:uppercase;color:var(--muted);margin-top:5px}
.brand__logo{display:block;height:44px;width:auto;max-width:220px}
.nav{margin-left:auto;display:flex;align-items:center;gap:6px}
.nav__list{display:flex;list-style:none;gap:2px}
.nav__item{position:relative}
.nav__link{display:flex;align-items:center;gap:6px;height:var(--header-h);padding:0 13px;font-family:var(--body);font-weight:600;font-size:.98rem;text-decoration:none;color:var(--text);background:none;border:0;cursor:pointer;position:relative}
.nav__link::after{content:"";position:absolute;left:13px;right:13px;bottom:22px;height:2px;border-radius:2px;background:var(--accent);transform:scaleX(0);transform-origin:right;transition:transform .45s var(--ease)}
.nav__link:hover::after,.nav__link[aria-current="page"]::after,.nav__item.is-open>.nav__link::after{transform:scaleX(1);transform-origin:left}
.nav__link svg{width:12px;height:12px;transition:transform .35s var(--ease)}
.nav__item.is-open>.nav__link svg{transform:rotate(180deg)}
.nav__link--est{color:var(--accent-text)}
.nav__link--est i{width:7px;height:7px;border-radius:50%;background:var(--accent);margin-right:2px;animation:pulse 2s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 60%,transparent)}70%{box-shadow:0 0 0 10px transparent}100%{box-shadow:0 0 0 0 transparent}}
.nav__cta{display:flex;align-items:center;gap:10px;margin-left:10px}
.nav__phone{display:flex;align-items:center;gap:8px;font-weight:700;font-size:1rem;text-decoration:none;padding:0 6px;white-space:nowrap;color:var(--deep)}
.nav__phone svg{width:18px;height:18px;color:var(--accent-text)}
.mega{position:absolute;top:calc(100% - 8px);left:50%;width:min(1060px,calc(100vw - 48px));transform:translate(calc(-50% + var(--shift,0px)),12px);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:28px;display:grid;grid-template-columns:repeat(3,1fr);gap:28px;opacity:0;visibility:hidden;transition:opacity .3s,transform .45s var(--ease),visibility 0s .3s;box-shadow:var(--shadow-lg)}
.mega--2{grid-template-columns:repeat(2,1fr);width:min(700px,calc(100vw - 48px))}
.mega--1{grid-template-columns:1fr;width:min(420px,calc(100vw - 48px))}
.mega--small{width:320px;grid-template-columns:1fr}
.nav__item.is-open>.mega{opacity:1;visibility:visible;transform:translate(calc(-50% + var(--shift,0px)),0);transition:opacity .3s,transform .45s var(--ease),visibility 0s}
.mega__title{font-weight:700;font-size:.76rem;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-text);margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.mega ul{list-style:none}
.mega a{display:flex;align-items:center;gap:10px;padding:7px 8px;margin:0 -8px;border-radius:10px;text-decoration:none;color:var(--text);font-weight:600;font-size:.97rem;transition:background .25s,color .25s}
.mega a svg{width:20px;height:20px;color:var(--deep-2);flex:none}
.mega a:hover{background:var(--accent-soft);color:var(--deep)}
.mega__all{grid-column:1/-1;display:flex;justify-content:space-between;align-items:center;gap:16px;border-top:1px solid var(--line);padding-top:18px}
.burger{display:none;margin-left:auto;width:50px;height:50px;border:1.5px solid color-mix(in srgb,var(--deep) 30%,transparent);background:var(--surface);border-radius:14px;cursor:pointer;position:relative}
.burger span{position:absolute;left:14px;right:14px;height:2px;border-radius:2px;background:var(--deep);transition:transform .45s var(--ease),opacity .3s}
.burger span:nth-child(1){top:17px}.burger span:nth-child(2){top:24px}.burger span:nth-child(3){top:31px}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.mobile-nav{position:fixed;inset:calc(var(--header-h) + var(--demo-h)) 0 0 0;background:var(--bg);z-index:1099;overflow-y:auto;padding:16px var(--gutter) 120px;clip-path:inset(0 0 100% 0);visibility:hidden;transition:clip-path .7s var(--ease),visibility 0s .7s}
.mobile-nav.is-open{clip-path:inset(0 0 0 0);visibility:visible;transition:clip-path .7s var(--ease),visibility 0s}
.mobile-nav ul{list-style:none}
.mobile-nav>ul>li{border-bottom:1px solid var(--line)}
.mobile-nav>ul>li>a,.mobile-nav summary{display:flex;justify-content:space-between;align-items:center;padding:16px 0;font-family:var(--display);font-weight:600;font-size:1.8rem;letter-spacing:-.01em;text-decoration:none;cursor:pointer;list-style:none;color:var(--deep)}
.mobile-nav summary::-webkit-details-marker{display:none}
.mobile-nav summary svg{width:22px;height:22px;transition:transform .35s var(--ease);color:var(--accent-text)}
.mobile-nav details[open] summary svg{transform:rotate(45deg)}
.mobile-nav details ul{padding:0 0 18px}
.mobile-nav details li a{display:block;padding:8px 0;color:var(--muted);text-decoration:none;font-weight:600}
.mobile-nav__group{font-weight:700;color:var(--accent-text);letter-spacing:.14em;text-transform:uppercase;font-size:.76rem;margin:12px 0 4px}
.mobile-nav__cta{display:grid;gap:12px;margin-top:28px}
.mobile-nav__est{color:var(--accent-text)!important}
@media (max-width:1200px){.nav__phone span{display:none}}
@media (max-width:1080px){.nav{display:none}.burger{display:block}}
@media (min-width:1081px){.mobile-nav{display:none}}

/* ---------- Mobile call bar ---------- */
.callbar{position:fixed;left:0;right:0;bottom:0;z-index:1098;display:none;grid-template-columns:1fr 1fr;border-top:1px solid var(--line);background:color-mix(in srgb,var(--bg) 94%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:10px 12px calc(10px + env(safe-area-inset-bottom));gap:10px;transform:translateY(110%);transition:transform .5s var(--ease)}
.callbar.is-visible{transform:none}
.callbar .btn{--bh:48px;padding:0 12px;font-size:.95rem}
@media (max-width:760px){.callbar{display:grid}body{padding-bottom:72px}}

/* ---------- Split text intro ---------- */
.split .w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.12em;margin-bottom:-.12em}
.split .w>span{display:inline-block;transform:translateY(110%);transition:transform 1.1s var(--ease);transition-delay:calc(var(--wi,0) * 60ms + var(--base-delay,0ms))}
.is-ready .split .w>span{transform:none}
.no-js .split .w>span,.reduced .split .w>span{transform:none}
.intro-fade{opacity:0;transform:translateY(22px);transition:opacity 1s var(--ease),transform 1s var(--ease);transition-delay:var(--d,0ms)}
.is-ready .intro-fade{opacity:1;transform:none}
.no-js .intro-fade{opacity:1;transform:none}
@media (max-width:760px){.split .w>span{transform:none!important;transition:none!important}.hero .intro-fade{opacity:1}}
.page-hero .lead.intro-fade{opacity:1}

/* ---------- Reveal on scroll ---------- */
.js [data-reveal]{opacity:0;transition:opacity 1s var(--ease),transform 1.1s var(--ease),clip-path 1.2s var(--ease);transition-delay:calc(var(--i,0) * 80ms)}
.js [data-reveal="up"]{transform:translateY(40px)}
.js [data-reveal="scale"]{transform:scale(.94)}
.js [data-reveal="rise"]{opacity:1;clip-path:inset(100% 0 0 0)}
.js [data-reveal].is-in{opacity:1;transform:none;clip-path:inset(0 0 0 0)}
.js [data-reveal="rise"].is-in{clip-path:inset(-10px -10px -14px -10px)}

/* ---------- Marquee ---------- */
.marquee{border-top:1px solid var(--line);border-bottom:1px solid var(--line);overflow:hidden;padding:22px 0;background:var(--bg-2);position:relative}
.marquee__track{display:flex;width:max-content;will-change:transform}
.marquee__group{display:flex;align-items:center;flex:none}
.marquee__item{font-family:var(--display);font-weight:500;font-style:italic;font-size:clamp(1.8rem,3.6vw,3rem);line-height:1.1;padding:0 28px;white-space:nowrap;color:var(--deep)}
.marquee__item:nth-child(4n+3){font-style:normal;font-weight:600;color:var(--accent-text)}
.marquee__dot{width:18px;height:14px;flex:none;border-radius:3px;background:var(--kraft);box-shadow:inset 0 -5px 0 var(--kraft-d)}
.marquee__dot--a{background:var(--accent);box-shadow:inset 0 -5px 0 color-mix(in srgb,var(--accent) 70%,#000)}

/* ---------- Statement (deep band, scroll fill) ---------- */
.statement{background:var(--deep);color:var(--on-deep);overflow:hidden}
.statement::before{content:"";position:absolute;right:-12%;top:-30%;width:55%;height:120%;background:radial-gradient(closest-side,color-mix(in srgb,var(--accent) 12%,transparent),transparent);pointer-events:none}
.statement .eyebrow{color:var(--accent-on-deep)}
.fill-text{position:relative;font-family:var(--display);font-weight:500;font-size:clamp(1.9rem,4.2vw,3.7rem);line-height:1.16;letter-spacing:-.015em;max-width:24ch}
.fill-text .fw{opacity:.22;transition:opacity .25s}
.fill-text .fw.on{opacity:1}
.no-js .fill-text .fw,.reduced .fill-text .fw{opacity:1}
.statement__foot{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin-top:clamp(48px,7vw,90px);border-top:1px solid color-mix(in srgb,var(--on-deep) 30%,transparent);padding-top:28px}
.statement__foot h3{font-family:var(--display);font-weight:600;font-size:1.4rem;margin-bottom:8px}
.statement__foot p{color:var(--on-deep-muted);margin:0}
@media (max-width:760px){.statement__foot{grid-template-columns:1fr}}

/* ---------- Section heads ---------- */
.sec-head{display:flex;justify-content:space-between;align-items:flex-end;gap:32px;margin-bottom:clamp(36px,5vw,64px);flex-wrap:wrap}
.sec-head>div{max-width:760px}
.sec-head .lead{max-width:44ch}

/* ---------- Service cards ---------- */
.svc-group+.svc-group{margin-top:clamp(56px,7vw,90px)}
.svc-group__head{display:flex;align-items:baseline;gap:16px;margin-bottom:24px;border-bottom:1px solid var(--line);padding-bottom:16px}
.svc-group__num{font-family:var(--display);font-style:italic;font-weight:500;font-size:1.3rem;color:var(--accent-text)}
.svc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.svc-card{--mx:50%;--my:50%;position:relative;display:flex;flex-direction:column;gap:12px;min-height:250px;padding:28px 26px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);text-decoration:none;overflow:hidden;isolation:isolate;box-shadow:0 1px 0 rgba(60,42,20,.04);transition:transform .5s var(--ease),box-shadow .5s,border-color .4s}
.svc-card::before{content:"";position:absolute;inset:0;background:radial-gradient(380px circle at var(--mx) var(--my),color-mix(in srgb,var(--accent) 12%,transparent),transparent 50%);opacity:0;transition:opacity .4s;z-index:-1}
.svc-card::after{content:"";position:absolute;right:26px;top:-8px;width:54px;height:20px;border-radius:2px;background:var(--accent);opacity:0;transform:rotate(6deg) translateY(-8px);transition:opacity .35s,transform .5s var(--ease)}
.svc-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);border-color:color-mix(in srgb,var(--accent) 40%,var(--line))}
.svc-card:hover::before{opacity:1}
.svc-card:hover::after{opacity:.85;transform:rotate(6deg)}
.svc-card__top{display:flex;justify-content:space-between;align-items:flex-start}
.svc-card__ic{display:grid;place-items:center;width:58px;height:58px;border-radius:16px;background:var(--deep-soft);color:var(--deep);transition:background .4s,color .4s}
.svc-card:hover .svc-card__ic{background:var(--deep);color:var(--cream)}
.svc-card__icon{width:32px;height:32px}
.svc-card__icon path{stroke-dasharray:1;stroke-dashoffset:0}
.svc-card:hover .svc-card__icon *{animation:iconDraw 1s var(--ease)}
@keyframes iconDraw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
.svc-card__no{font-family:var(--display);font-style:italic;font-size:1rem;color:var(--line-2);transition:color .3s}
.svc-card:hover .svc-card__no{color:var(--accent-text)}
.svc-card h3,.svc-card h4{font-family:var(--display);font-weight:600;font-size:clamp(1.35rem,1.8vw,1.6rem);letter-spacing:-.01em;margin-top:10px;color:var(--deep)}
.svc-card p{color:var(--muted);margin:0;font-size:.98rem}
.svc-card__go{margin-top:auto;padding-top:8px;display:flex;align-items:center;gap:8px;font-weight:700;font-size:.92rem;color:var(--accent-text)}
.svc-card__go svg{width:16px;height:16px;transition:transform .45s var(--ease)}
.svc-card:hover .svc-card__go svg{transform:translateX(5px)}
@media (max-width:980px){.svc-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:620px){.svc-grid{grid-template-columns:1fr}.svc-card{min-height:0}}

/* ---------- Feature list ---------- */
.features{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.feature{padding:30px 26px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--line)}
.feature .feature__no{font-family:var(--display);font-style:italic;font-weight:500;font-size:2.6rem;color:var(--accent-text);line-height:1;margin-bottom:16px}
.feature h3{font-family:var(--display);font-weight:600;font-size:1.3rem;margin-bottom:8px;color:var(--deep)}
.feature p{color:var(--muted);font-size:1rem;margin:0}
@media (max-width:980px){.features{grid-template-columns:1fr 1fr}}
@media (max-width:620px){.features{grid-template-columns:1fr}}

/* ---------- Areas ---------- */
.areas{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.area-card{position:relative;display:flex;flex-direction:column;justify-content:space-between;gap:24px;min-height:320px;padding:30px;border:1px solid var(--line);border-radius:var(--radius);text-decoration:none;overflow:hidden;background:var(--surface);transition:border-color .4s,transform .6s var(--ease),box-shadow .5s}
.area-card::before{content:"";position:absolute;right:-60px;top:-60px;width:200px;height:200px;border-radius:50%;background:var(--accent-soft);transition:transform .7s var(--ease)}
.area-card:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--line));transform:translateY(-5px);box-shadow:var(--shadow-lg)}
.area-card:hover::before{transform:scale(1.35)}
.area-card__no{position:relative;font-family:var(--display);font-style:italic;font-weight:500;font-size:5.5rem;line-height:.8;color:var(--deep)}
.area-card h2,.area-card h3{position:relative;font-family:var(--display);font-weight:600;font-size:2.1rem;margin-bottom:8px;color:var(--deep)}
.area-card p{position:relative;color:var(--muted);margin-bottom:16px}
.area-card .svc-card__go{position:relative}
@media (max-width:900px){.areas{grid-template-columns:1fr}.area-card{min-height:0}.area-card__no{font-size:4rem}}

/* ---------- CTA band ---------- */
.cta-band{position:relative;overflow:hidden;background:var(--deep);color:var(--on-deep);padding:clamp(70px,9vw,120px) 0;isolation:isolate}
.cta-band::before{content:"";position:absolute;left:-10%;bottom:-60%;width:60%;height:140%;background:radial-gradient(closest-side,color-mix(in srgb,var(--accent) 13%,transparent),transparent);z-index:-1}
.cta-band__boxes{position:absolute;right:max(var(--gutter),calc((100% - var(--wrap)) / 2));bottom:0;display:flex;align-items:flex-end;gap:6px;z-index:-1;opacity:.95}
.cta-band__boxes i{display:block;width:90px;height:78px;border-radius:5px 5px 0 0;background:linear-gradient(90deg,transparent 42%,var(--kraft-d) 42% 58%,transparent 58%) top/100% 40% no-repeat,var(--kraft)}
.cta-band__boxes i:nth-child(2){height:120px;width:110px}
.cta-band__boxes i:nth-child(3){height:60px;width:70px}
.cta-band .wrap{position:relative;display:grid;grid-template-columns:1.3fr .7fr;gap:40px;align-items:center}
.cta-band h2{font-size:clamp(2.6rem,6vw,5rem)}
.cta-band h2 em{color:var(--accent-on-deep)}
.cta-band p{font-size:1.18rem;max-width:46ch;margin-top:16px;color:var(--on-deep-muted)}
.cta-band .btn-row{flex-direction:column;position:relative;z-index:1}
.cta-band .btn{width:100%}
.cta-band__tel{font-weight:700;text-align:center;color:var(--on-deep);text-decoration:underline;text-underline-offset:4px;padding:6px 0}
@media (max-width:860px){.cta-band .wrap{grid-template-columns:1fr}.cta-band__boxes{opacity:.35}}

/* ---------- Footer ---------- */
.site-footer{background:var(--bg-2);border-top:1px solid var(--line);padding:clamp(60px,8vw,100px) 0 0;position:relative}
.footer__grid{display:grid;grid-template-columns:1.3fr repeat(3,1fr) 1fr;gap:36px}
.footer__grid--2{grid-template-columns:1.3fr repeat(2,1fr) 1fr}
.footer__grid--1{grid-template-columns:1.3fr 1fr 1fr}
.footer__brand p{color:var(--muted);margin:18px 0;max-width:34ch}
.footer__contact{list-style:none;display:grid;gap:10px}
.footer__contact a{text-decoration:none;font-weight:700;color:var(--deep)}
.footer__contact a:hover{color:var(--accent-text)}
.footer__contact span{display:block;font-weight:700;letter-spacing:.14em;text-transform:uppercase;font-size:.7rem;color:var(--muted)}
.footer__col h2{font-family:var(--body);font-weight:700;letter-spacing:.14em;text-transform:uppercase;font-size:.76rem;color:var(--accent-text);margin-bottom:14px}
.footer__col ul{list-style:none;display:grid;gap:8px}
.footer__col a{color:var(--prose);text-decoration:none;font-size:.97rem;transition:color .25s}
.footer__col a:hover{color:var(--accent-text)}
.footer__bottom{margin-top:clamp(40px,5vw,60px);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;border-top:1px solid var(--line-2);padding:22px 0 30px;color:var(--muted);font-size:.9rem}
.footer__bottom ul{list-style:none;display:flex;gap:20px;flex-wrap:wrap}
.footer__bottom a{color:var(--muted);text-decoration:none}
.footer__bottom a:hover{color:var(--text)}
@media (max-width:1180px){.footer__grid,.footer__grid--2{grid-template-columns:repeat(3,1fr)}.footer__brand{grid-column:1/-1}}
@media (max-width:620px){.footer__grid,.footer__grid--2,.footer__grid--1{grid-template-columns:1fr 1fr}}

/* ---------- Page hero (inner pages) ---------- */
.page-hero{position:relative;isolation:isolate;padding:calc(var(--header-h) + var(--demo-h) + clamp(48px,7vw,96px)) 0 clamp(52px,6vw,84px);overflow:hidden;border-bottom:1px solid var(--line);background:radial-gradient(700px 420px at 88% 10%,var(--accent-soft),transparent 65%),radial-gradient(600px 360px at 70% 100%,var(--deep-soft),transparent 70%),var(--bg)}
.page-hero .wrap{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:40px;align-items:center}
.page-hero h1{font-size:clamp(2.6rem,6vw,5.4rem);max-width:16ch;color:var(--deep)}
.page-hero .lead{margin-top:22px}
.page-hero .btn-row{margin-top:30px}
.page-hero__mark{position:relative;width:clamp(160px,18vw,240px);aspect-ratio:1.15;border-radius:10px;background:linear-gradient(180deg,rgba(255,255,255,.12),transparent 30%),var(--kraft);box-shadow:inset 0 -14px 0 var(--kraft-d),var(--shadow-lg);transform:rotate(-4deg);display:grid;place-items:center}
.page-hero__tape{position:absolute;left:50%;top:0;width:22%;height:42%;transform:translateX(-50%);background:var(--accent);opacity:.92}
.page-hero__icon{position:relative;width:46%;height:46%;color:var(--deep);margin-top:16%;padding:10px;border-radius:12px;background:var(--cream);box-shadow:0 2px 0 rgba(0,0,0,.06)}
.page-hero__icon *{stroke-width:1.4}
.page-hero--compact{padding:calc(var(--header-h) + var(--demo-h) + clamp(26px,4vw,44px)) 0 clamp(18px,3vw,28px);border-bottom:0;background:var(--bg)}
.page-hero--compact h1{font-size:clamp(2.2rem,4.4vw,3.8rem);max-width:none}
.page-hero--compact .lead{margin-top:12px;font-size:1.08rem}
.page-hero--compact .crumbs{margin-bottom:14px}
.page-hero--compact .page-hero__mark{width:clamp(100px,10vw,140px)}
@media (max-width:760px){.page-hero .wrap{grid-template-columns:1fr}.page-hero__mark{display:none}}
.crumbs{margin-bottom:24px}
.crumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:8px;font-weight:600;font-size:.88rem;color:var(--muted)}
.crumbs li+li::before{content:"›";margin-right:8px;color:var(--line-2)}
.crumbs a{text-decoration:none;color:var(--muted)}
.crumbs a:hover{color:var(--accent-text)}
.crumbs [aria-current]{color:var(--text)}

/* ---------- Article layout ---------- */
.article{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:clamp(32px,6vw,84px);align-items:start}
.prose{max-width:72ch}
.prose h2{font-family:var(--display);font-weight:600;letter-spacing:-.015em;font-size:clamp(1.7rem,2.8vw,2.3rem);margin:1.7em 0 .55em;line-height:1.1;color:var(--deep)}
.prose h2:first-child{margin-top:0}
.prose h3{font-family:var(--display);font-weight:600;font-size:1.3rem;margin:1.4em 0 .4em;color:var(--deep)}
.prose p,.prose li{color:var(--prose)}
.prose a{color:var(--accent-text);text-decoration-thickness:1px;text-underline-offset:3px;font-weight:600}
.prose a:hover{color:var(--deep)}
.prose ul{list-style:none;margin:0 0 1.3em}
.prose ul li{position:relative;padding-left:28px;margin-bottom:.6em}
.prose ul li::before{content:"";position:absolute;left:0;top:.42em;width:14px;height:12px;border-radius:2px;background:linear-gradient(90deg,transparent 40%,var(--kraft-d) 40% 60%,transparent 60%) top/100% 45% no-repeat,var(--kraft)}
.prose ol{margin:0 0 1.3em;counter-reset:s;list-style:none}
.prose ol li{counter-increment:s;position:relative;padding:0 0 1em 56px;min-height:46px}
.prose ol li::before{content:counter(s);position:absolute;left:0;top:-2px;width:38px;height:38px;display:grid;place-items:center;font-family:var(--display);font-style:italic;font-weight:500;font-size:1.25rem;color:var(--deep);background:var(--accent-soft);border-radius:12px}
.prose strong{color:var(--text);font-weight:700}
.aside{position:sticky;top:calc(var(--header-h) + var(--demo-h) + 24px);display:grid;gap:16px}
.aside-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:26px}
.aside-card h2{font-family:var(--display);font-weight:600;font-size:1.55rem;letter-spacing:-.01em;margin-bottom:10px;color:var(--deep)}
.aside-card p{font-size:1rem}
.aside-card .btn{width:100%;margin-top:10px}
.aside-card--deep{background:var(--deep);border-color:var(--deep);color:var(--on-deep)}
.aside-card--deep h2{color:#fff}
.aside-card--deep p{color:var(--on-deep-muted)}
.aside-card--est{background:linear-gradient(160deg,var(--accent-soft),var(--surface) 70%)}
.aside-card--short{border-color:color-mix(in srgb,var(--accent) 50%,var(--line))}
.aside-list{list-style:none;display:grid}
.aside-list a{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line);text-decoration:none;color:var(--prose);font-weight:600;transition:color .25s,padding .35s var(--ease)}
.aside-list li:last-child a{border-bottom:0}
.aside-list a:hover{color:var(--accent-text);padding-left:6px}
.aside-list a svg{width:14px;height:14px;color:var(--accent-text);flex:none}
.aside-list a[aria-current]{color:var(--accent-text)}
@media (max-width:980px){.article{grid-template-columns:1fr}.aside{position:static}}

/* ---------- City chips ---------- */
.chips{display:flex;flex-wrap:wrap;gap:10px}
.chip{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border:1px solid var(--line-2);background:var(--surface);text-decoration:none;font-weight:700;font-size:.92rem;border-radius:999px;transition:border-color .3s,color .3s,background .3s}
.prose .chip{color:var(--deep)}
.chip:hover{border-color:var(--accent);background:var(--accent-soft)}
.chip svg{width:14px;height:14px;color:var(--accent-text)}

/* ---------- FAQ ---------- */
.faq{border-top:1px solid var(--line)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:22px 0;cursor:pointer;list-style:none;font-family:var(--display);font-weight:600;font-size:clamp(1.1rem,1.5vw,1.28rem);color:var(--deep)}
.faq summary::-webkit-details-marker{display:none}
.faq summary:hover{color:var(--accent-text)}
.faq summary i{position:relative;width:30px;height:30px;flex:none;border-radius:50%;background:var(--accent-soft)}
.faq summary i::before,.faq summary i::after{content:"";position:absolute;left:9px;right:9px;top:14px;height:2px;border-radius:2px;background:var(--accent-text);transition:transform .45s var(--ease)}
.faq summary i::after{transform:rotate(90deg)}
.faq details[open] summary i::after{transform:rotate(0)}
.faq .faq__a{padding:0 0 24px;color:var(--muted);max-width:75ch}
.faq .faq__a p{color:var(--prose)}
.faq .faq__a p:last-child{margin:0}

/* ---------- Forms ---------- */
.form{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.form .full{grid-column:1/-1}
.field label{display:block;font-weight:700;font-size:.92rem;margin-bottom:7px;color:var(--deep)}
.field label .req{color:var(--accent-text)}
.field label .muted{font-weight:400}
.field input,.field select,.field textarea{width:100%;background:#fff;border:1.5px solid var(--line-2);border-radius:12px;color:var(--text);font:inherit;padding:13px 15px;transition:border-color .25s,box-shadow .25s}
.field textarea{min-height:140px;resize:vertical}
.field select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--deep) 50%),linear-gradient(135deg,var(--deep) 50%,transparent 50%);background-position:calc(100% - 22px) 50%,calc(100% - 16px) 50%;background-size:6px 6px;background-repeat:no-repeat;padding-right:44px}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--accent-text);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 22%,transparent)}
.field [aria-invalid="true"]{border-color:var(--err)}
.field__error{display:block;color:var(--err);font-size:.92rem;margin-top:6px}
.field__hint{display:block;color:var(--muted);font-size:.9rem;margin-top:6px}
.form__status{grid-column:1/-1;padding:14px 16px;border:1.5px solid var(--err);border-radius:12px;color:var(--err);background:#fdecea;display:none}
.form__status.is-visible{display:block}
.form__privacy{grid-column:1/-1;font-size:.92rem;color:var(--muted);margin:0}
.form__privacy a{color:var(--deep)}
.hp{position:absolute!important;left:-9999px!important}
@media (max-width:620px){.form{grid-template-columns:1fr}}
.contact-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:clamp(32px,6vw,84px);align-items:start}
.contact-panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:clamp(24px,4vw,44px);box-shadow:var(--shadow)}
.info-list{list-style:none;display:grid;gap:4px}
.info-list li{padding:16px 0;border-bottom:1px solid var(--line)}
.info-list span{display:block;font-weight:700;letter-spacing:.14em;text-transform:uppercase;font-size:.72rem;color:var(--muted);margin-bottom:4px}
.info-list a{font-family:var(--display);font-weight:600;font-size:1.5rem;text-decoration:none;color:var(--deep)}
.info-list a.info-list__email{font-size:1.15rem;word-break:break-all}
.info-list a.info-list__link{font-family:var(--body);font-size:1rem;font-weight:700;text-decoration:underline;text-underline-offset:3px}
.note{display:flex;gap:12px;align-items:flex-start;margin:22px 0 0;padding:14px 16px;border-radius:12px;background:var(--accent-soft);font-size:.96rem;color:var(--prose)}
.note svg{width:20px;height:20px;color:var(--accent-text);flex:none;margin-top:2px}
.note a{font-weight:700;color:var(--deep)}
@media (max-width:980px){.contact-grid{grid-template-columns:1fr}}

/* ---------- Hubs, 404, utilities ---------- */
.hub-intro{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,6vw,84px);margin-bottom:clamp(48px,6vw,80px)}
@media (max-width:860px){.hub-intro{grid-template-columns:1fr}}
.notfound{min-height:100vh;display:flex;align-items:center;padding:calc(var(--header-h) + var(--demo-h) + 40px) 0 80px;background:radial-gradient(700px 500px at 80% 30%,var(--accent-soft),transparent 70%)}
.notfound__code{font-family:var(--display);font-style:italic;font-weight:500;font-size:clamp(7rem,24vw,18rem);line-height:.85;color:var(--deep)}
.mt-0{margin-top:0}.mt-1{margin-top:16px}.mt-2{margin-top:32px}.mt-3{margin-top:56px}
.center{text-align:center}

/* ======================= HERO (home) ======================= */
.hero{position:relative;min-height:100vh;min-height:100svh;display:flex;flex-direction:column;justify-content:center;padding:calc(var(--header-h) + var(--demo-h) + 40px) 0 110px;overflow:hidden;isolation:isolate;background:var(--bg)}
.hero__media{position:absolute;inset:0;z-index:-1;transform-origin:50% 0}
.hero__media svg.scene{position:absolute;inset:0;width:100%;height:100%;max-width:none}
.hero__shade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,color-mix(in srgb,var(--bg) 96%,transparent) 0%,color-mix(in srgb,var(--bg) 88%,transparent) 34%,color-mix(in srgb,var(--bg) 20%,transparent) 58%,transparent 72%),linear-gradient(180deg,color-mix(in srgb,var(--bg) 70%,transparent) 0%,transparent 20%)}
.hero__grid{display:grid;grid-template-columns:1.2fr .8fr;gap:clamp(28px,5vw,72px);align-items:center;width:100%}
.hero h1 .eyebrow{display:flex}
.hero__title{display:block;font-size:clamp(3rem,6.6vw,6.4rem);line-height:1;color:var(--deep)}
.hero__title .line{display:block}
.hero__copy{max-width:640px}
.hero__copy .lead{margin:24px 0 32px;color:var(--prose)}
.hero__areas{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin-top:30px;font-weight:700;font-size:.9rem;color:var(--muted)}
.hero__areas a{text-decoration:none;color:var(--deep);border-bottom:1.5px solid var(--line-2);transition:border-color .3s}
.hero__areas a:hover{border-color:var(--accent)}
.hero__tags{position:absolute;left:0;right:0;bottom:0;list-style:none;display:flex;justify-content:center;gap:clamp(16px,4vw,52px);flex-wrap:wrap;padding:16px var(--gutter);background:color-mix(in srgb,var(--deep) 94%,transparent);color:var(--on-deep);font-weight:700;font-size:.92rem}
.hero__tags li{display:flex;align-items:center;gap:10px}
.hero__tags svg{width:18px;height:18px;color:var(--accent-on-deep)}
.hero__est{--mx:50%;--my:0%;position:relative;padding:clamp(22px,3vw,30px);background:color-mix(in srgb,var(--surface) 94%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow-lg);overflow:hidden}
.hero__est::before{content:"";position:absolute;right:28px;top:-6px;width:64px;height:22px;border-radius:2px;background:var(--accent);transform:rotate(5deg);opacity:.9}
.hero__est-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;font-size:.84rem}
.hero__live{display:inline-flex;align-items:center;gap:8px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--accent-text);font-size:.76rem}
.hero__live i{width:8px;height:8px;border-radius:50%;background:var(--accent);animation:pulse 2s infinite}
.hero__est-title{font-family:var(--display);font-weight:600;letter-spacing:-.015em;font-size:clamp(1.6rem,2.4vw,2.1rem);line-height:1.08;margin:0 0 16px;color:var(--deep)}
.hero__est-title em{display:block;font-style:italic;font-weight:500;color:var(--accent-text)}
.hero__est-text{color:var(--muted);font-size:1rem;margin-bottom:20px}
.hero__est-steps{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px;font-weight:700;font-size:.8rem;color:var(--muted)}
.hero__est-steps li{border-top:1px solid var(--line);padding-top:8px}
.hero__est-steps b{font-family:var(--display);font-style:italic;font-weight:500;color:var(--accent-text);margin-right:6px}
.picker fieldset{margin:0}
.picker__label{font-weight:700;font-size:.84rem;margin-bottom:10px;padding:0;color:var(--deep)}
.picker__grid{display:flex;flex-wrap:wrap;gap:8px}
.pick{flex:1 1 calc(33.333% - 6px);position:relative;display:block;cursor:pointer}
.pick input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.pick__box{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:84px;padding:10px 6px;border:1.5px solid var(--line);border-radius:14px;background:#fff;text-align:center;transition:border-color .25s,background .25s,transform .35s var(--ease)}
.pick__box b{font-weight:700;font-size:.84rem;line-height:1.15}
.pick__icon{width:28px;height:28px;color:var(--deep-2);transition:color .25s}
.pick:hover .pick__box{border-color:color-mix(in srgb,var(--accent) 60%,var(--line));transform:translateY(-2px)}
.pick input:checked+.pick__box{border-color:var(--accent);background:var(--accent-soft)}
.pick input:checked+.pick__box .pick__icon{color:var(--accent-text)}
.pick input:focus-visible+.pick__box{outline:3px solid var(--accent-text);outline-offset:2px}
.picker__go{width:100%;margin-top:14px}
.scroll-cue{position:absolute;left:50%;bottom:74px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;font-weight:700;font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:var(--deep)}
.scroll-cue i{width:2px;height:36px;border-radius:2px;background:linear-gradient(var(--accent),transparent);animation:cue 2s var(--ease) infinite;transform-origin:top}
@keyframes cue{0%{transform:scaleY(0)}50%{transform:scaleY(1)}100%{transform:scaleY(1);opacity:0}}
@media (max-width:1100px){.scroll-cue{display:none}}
@media (max-width:980px){.hero__grid{grid-template-columns:1fr}.hero__shade{background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 96%,transparent) 0%,color-mix(in srgb,var(--bg) 90%,transparent) 70%,color-mix(in srgb,var(--bg) 55%,transparent) 100%)}}
@media (max-width:520px){.hero__title{font-size:clamp(2.6rem,12.5vw,3.6rem)}.pick__box{min-height:74px}.pick__box b{font-size:.78rem}}
.hero__short{margin:20px 0 0}
.hero__short a{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:10px 14px;border-radius:14px;text-decoration:none;background:var(--surface);border:1px solid var(--line);font-size:.95rem;box-shadow:var(--shadow)}
.hero__short svg{width:18px;height:18px;color:var(--accent-text)}
.hero__short b{color:var(--deep)}

/* ======================= PROCESS ======================= */
.procs{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:18px;counter-reset:p}
.proc{position:relative;padding:30px 24px 28px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);overflow:hidden}
.proc::after{content:"";position:absolute;left:24px;top:0;width:44px;height:14px;border-radius:0 0 3px 3px;background:var(--accent);transform:scaleY(0);transform-origin:top;transition:transform .7s var(--ease) .3s}
.proc.is-in::after{transform:scaleY(1)}
.proc__no{display:block;font-family:var(--display);font-style:italic;font-weight:500;font-size:2.6rem;line-height:1;color:var(--accent-text);margin:6px 0 16px}
.proc h3{font-family:var(--display);font-weight:600;font-size:1.4rem;margin-bottom:8px;color:var(--deep)}
.proc p{color:var(--muted);margin:0;font-size:1rem}
@media (max-width:980px){.procs{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.procs{grid-template-columns:1fr}}

/* ======================= ESTIMATE TEASER (home): box stack ======================= */
.est-teaser{background:var(--bg);overflow:hidden}
.est-teaser__grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,6vw,84px);align-items:center}
.est-teaser__steps{list-style:none;margin-top:28px;display:grid;gap:2px}
.est-teaser__steps li{display:flex;gap:16px;padding:14px 0;border-top:1px solid var(--line);color:var(--muted)}
.est-teaser__steps b{font-family:var(--display);font-style:italic;font-weight:500;font-size:1.3rem;color:var(--accent-text);line-height:1.3;flex:none;width:36px}
.est-teaser__steps strong{color:var(--text)}
.boxstack{width:100%;max-width:540px;height:auto;margin:0 auto;filter:drop-shadow(0 30px 40px rgba(80,55,25,.22))}
.tb{transform-box:fill-box;transform-origin:50% 100%;opacity:0;transform:translateY(-60px);transition:opacity .4s,transform .8s cubic-bezier(.3,1.4,.5,1);transition-delay:calc(.2s + var(--k) * 140ms)}
.is-in .tb,.no-js .tb,.reduced .tb{opacity:1;transform:none}
.tb__b{fill:var(--kraft)}
.tb__t{fill:var(--kraft-d)}
.tb__e{stroke:var(--kraft-d);stroke-width:2;opacity:.5}
.tb__l{fill:var(--cream)}
.tb__tx{font-family:var(--body);font-weight:700;fill:var(--deep);letter-spacing:.06em}
.tb__hx{font-family:var(--body);font-size:11px;fill:var(--muted)}
.tb__arrow{fill:none;stroke:var(--kraft-d);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
.tb__floor{fill:var(--line-2)}
.tb:hover .tb__b{fill:var(--kraft-l)}
@media (max-width:980px){.est-teaser__grid{grid-template-columns:1fr}}

/* ======================= HIRE SAFELY (home) ======================= */
.signs{background:var(--deep);color:var(--on-deep);overflow:hidden;isolation:isolate}
.signs::before{content:"";position:absolute;left:-15%;top:-20%;width:50%;height:80%;background:radial-gradient(closest-side,color-mix(in srgb,var(--accent) 11%,transparent),transparent);z-index:-1}
.signs .display{color:#fff}
.signs .display em{color:var(--accent-on-deep)}
.signs .lead{color:var(--on-deep-muted)}
.signs__list{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.sign{display:flex;gap:16px;padding:24px;border-radius:var(--radius);background:color-mix(in srgb,#fff 7%,transparent);border:1px solid color-mix(in srgb,#fff 12%,transparent);transition:background .3s,transform .4s var(--ease)}
.sign:hover{background:color-mix(in srgb,#fff 11%,transparent);transform:translateY(-3px)}
.sign__ic{flex:none;display:grid;place-items:center;width:46px;height:46px;border-radius:14px;background:var(--accent);color:var(--text)}
.sign__ic svg{width:22px;height:22px}
.sign h3{font-family:var(--display);font-weight:600;font-size:1.22rem;margin:2px 0 6px;color:#fff}
.sign p{margin:0;color:var(--on-deep-muted);font-size:1rem}
.signs__cta{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:20px;margin-top:28px;padding:22px 26px;border-radius:var(--radius);background:var(--cream);color:var(--text)}
.signs__cta p{margin:0;max-width:62ch;color:var(--prose)}
.signs__cta strong{color:var(--deep)}
@media (max-width:980px){.signs__list{grid-template-columns:1fr 1fr}}
@media (max-width:620px){.signs__list{grid-template-columns:1fr}.sign{padding:18px}}

/* ======================= INSTANT ESTIMATE PAGE ======================= */
.est{padding:clamp(24px,4vw,48px) 0 clamp(56px,7vw,96px);border-bottom:1px solid var(--line)}
.est__grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:clamp(20px,3vw,34px);align-items:start}
.est__panel{display:grid;gap:18px}
.est-card,.est-lead{border:1px solid var(--line);background:var(--surface);padding:clamp(20px,2.6vw,30px);border-radius:20px}
.est__step{font-weight:700;letter-spacing:.12em;text-transform:uppercase;font-size:.8rem;color:var(--muted);margin:0 0 14px;display:flex;align-items:center;gap:10px}
.est__step b{font-family:var(--display);font-style:italic;font-weight:500;font-size:1rem;letter-spacing:0;color:#fff;background:var(--deep);width:30px;height:30px;display:grid;place-items:center;border-radius:10px}
.field-label{display:block;font-weight:700;font-size:.95rem;margin-bottom:8px;color:var(--deep)}
.opts{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}
.opts>.opt{flex:1 1 150px}
.opts--sys>.opt{flex-basis:170px}
.opts:last-child{margin-bottom:0}
.opts legend{font-weight:700;font-size:.95rem;margin-bottom:8px;padding:0;color:var(--deep)}
.opts--sys{margin-bottom:0}
.opt{position:relative;display:block;cursor:pointer}
.opt input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.opt__box{display:flex;flex-direction:column;gap:3px;height:100%;padding:12px 14px;border:1.5px solid var(--line);border-radius:14px;background:#fff;transition:border-color .25s,background .25s}
.opt__box b{font-weight:700;font-size:.98rem;color:var(--text)}
.opt__box small{color:var(--muted);font-size:.84rem;line-height:1.3}
.opt__icon{width:32px;height:32px;color:var(--deep-2);margin-bottom:6px;transition:color .25s}
.opt:hover .opt__box{border-color:var(--line-2)}
.opt input:checked+.opt__box{border-color:var(--accent);background:var(--accent-soft)}
.opt input:checked+.opt__box .opt__icon{color:var(--accent-text)}
.opt input:focus-visible+.opt__box,.chk input:focus-visible+.chk__box{outline:3px solid var(--accent-text);outline-offset:2px}
.stepper{display:inline-flex;align-items:stretch;border:1.5px solid var(--line-2);border-radius:12px;overflow:hidden;background:#fff}
.stepper__b{width:46px;min-height:46px;border:0;background:#fff;color:var(--deep);font-size:1.4rem;cursor:pointer}
.stepper__b:hover{background:var(--accent-soft)}
.stepper input{width:58px;border:0;border-left:1.5px solid var(--line);border-right:1.5px solid var(--line);background:#fff;color:var(--text);font:700 1.1rem var(--body);text-align:center;-moz-appearance:textfield}
.stepper input::-webkit-inner-spin-button,.stepper input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.chk{position:relative;display:block;cursor:pointer}
.chk[hidden]{display:none}
.chk input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.chk__box{display:grid;grid-template-columns:24px 1fr auto;align-items:center;column-gap:12px;padding:13px 15px;border:1.5px solid var(--line);border-radius:14px;background:#fff;transition:border-color .25s,background .25s}
.chk__box i{width:22px;height:22px;border:1.5px solid var(--line-2);border-radius:6px;display:grid;place-items:center;transition:background .25s,border-color .25s}
.chk__box i svg{width:14px;height:14px;color:var(--text);opacity:0}
.chk__box b{font-weight:600;font-size:.98rem}
.chk__box small{color:var(--muted);font-weight:700;font-size:.88rem}
.chk input:checked+.chk__box{border-color:var(--accent);background:var(--accent-soft)}
.chk input:checked+.chk__box i{background:var(--accent);border-color:var(--accent)}
.chk input:checked+.chk__box i svg{opacity:1}
.est__side{position:sticky;top:calc(var(--header-h) + var(--demo-h) + 20px);display:grid;gap:18px}
.est-result{position:relative;overflow:hidden;padding:clamp(18px,2.4vw,26px);border-radius:22px;background:var(--deep);color:var(--on-deep);box-shadow:var(--shadow-lg)}
.est-result.is-new .est-result__price{animation:pop .6s var(--ease)}
@keyframes pop{0%{transform:scale(.97);opacity:.5}100%{transform:none;opacity:1}}
.est-result__label{font-weight:700;letter-spacing:.14em;text-transform:uppercase;font-size:.76rem;margin:0 0 4px;text-align:center;color:var(--on-deep-muted)}
.est-result__price{font-family:var(--display);font-weight:600;font-size:clamp(2.1rem,3.4vw,2.9rem);line-height:1;margin:0 0 10px;display:flex;flex-wrap:wrap;justify-content:center;gap:6px 12px;align-items:baseline;font-variant-numeric:tabular-nums;color:#fff}
.est-result__price i{font-style:normal;color:var(--accent-on-deep)}
.est-result__sum{text-align:center;font-size:.86rem;color:var(--on-deep-muted);margin:0 0 14px}
.est-result .fine{color:var(--on-deep-muted)}
.est-result__go{width:100%;margin-top:6px}
.est-sample{font-size:.85rem;background:#ffd54a;color:#151100;padding:8px 12px;border-radius:8px;font-weight:600}
.est-lead{display:grid;grid-template-columns:1fr;gap:14px}
.est-lead[hidden]{display:none}
.est-noscript{border:1.5px solid var(--accent);border-radius:var(--radius);padding:18px 22px;margin-bottom:20px;background:var(--surface)}
@media (max-width:980px){.est__grid{grid-template-columns:1fr}.est__side{position:static}}
@media (max-width:520px){.opts>.opt,.opts--sys>.opt{flex-basis:140px}.opt__box b{font-size:.92rem}}
.est-live{display:none}
@media (max-width:980px){.page-estimate .callbar{display:none}.est-live{position:fixed;left:0;right:0;bottom:0;z-index:1098;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:var(--deep);color:#fff;transform:translateY(110%);transition:transform .5s var(--ease)}.est-live.is-visible{transform:none}.est-live__k{display:block;font-weight:700;letter-spacing:.14em;text-transform:uppercase;font-size:.7rem;color:var(--on-deep-muted)}.est-live__v{font-family:var(--display);font-weight:600;font-size:1.4rem;line-height:1.1;font-variant-numeric:tabular-nums}.est-live .btn{--bh:44px;padding:0 16px;font-size:.9rem}.page-estimate{padding-bottom:76px}}
.len{margin-bottom:18px}
.len__row{display:flex;align-items:center;gap:14px}
.len__range{flex:1;-webkit-appearance:none;appearance:none;height:8px;border-radius:99px;background:linear-gradient(90deg,var(--accent) calc(var(--fill,25) * 1%),var(--line) 0);outline-offset:6px;cursor:pointer}
.len__range::-webkit-slider-thumb{-webkit-appearance:none;width:28px;height:28px;border-radius:50%;background:#fff;border:6px solid var(--deep);box-shadow:0 4px 12px rgba(60,42,20,.3)}
.len__range::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:#fff;border:6px solid var(--deep)}
.len__num{display:flex;align-items:center;border:1.5px solid var(--line-2);border-radius:12px;background:#fff;padding-right:12px}
.len__num input{width:80px;border:0;background:transparent;color:var(--text);font:700 1.12rem var(--body);padding:11px 0 11px 12px;text-align:right;-moz-appearance:textfield}
.len__num input::-webkit-inner-spin-button,.len__num input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.len__num span{color:var(--muted);margin-left:6px;font-weight:600}
@media (max-width:560px){.len__row{flex-wrap:wrap}.len__range{flex-basis:100%}}
.gate-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 0;border-bottom:1px solid var(--line)}
.gate-row .field-label{margin-bottom:2px}
.job[hidden]{display:none}
.job>*+*{margin-top:18px}
.job .len{margin-bottom:0}
.inp__hint{display:block;margin-top:8px;font-size:.88rem}
.gate-row .inp__hint{margin-top:2px}
.job .opts{margin-bottom:0}
.job .chk--wide{margin:0}
.est-preview{position:relative;display:grid;margin:-4px -4px 16px;border-radius:16px;background:linear-gradient(180deg,#f3e8d8,var(--cream));padding:14px 12px 8px}
.est-art{grid-area:1/1}
.est-art[hidden]{display:none}
.est-preview__h{position:absolute;left:10px;top:10px;font-weight:700;font-size:.8rem;letter-spacing:.06em;color:#fff;background:var(--deep);padding:3px 9px;border-radius:999px}
.est-preview__h:empty{display:none}
.ja{width:100%;height:auto}
.est-notes:empty{display:none}
.est-notes{display:grid;gap:8px;margin:0 0 12px}
.est-notes p{margin:0;padding:10px 12px;border-left:3px solid var(--accent-on-deep);background:color-mix(in srgb,#fff 8%,transparent);border-radius:0 8px 8px 0;font-size:.9rem;color:var(--on-deep)}

/* estimate previews */
.ja .bx.ja-b{opacity:0;transform-box:fill-box;transform-origin:50% 100%;transform:translateY(-14px) scale(.9);transition:opacity .25s,transform .45s cubic-bezier(.3,1.5,.5,1);transition-delay:calc(var(--d,0) * 1ms)}
.ja .bx.ja-b.is-on{opacity:1;transform:none}
.ja-desk{opacity:.18;transition:opacity .35s}
.ja-desk.is-on{opacity:1}
.ja-item{opacity:0;transition:opacity .35s}
.ja-item.is-on{opacity:1}
.ja-route{fill:none;stroke:var(--accent-text);stroke-width:3;stroke-dasharray:8 8;animation:dash 1.4s linear infinite}
@keyframes dash{to{stroke-dashoffset:-32}}
.ja-pin{fill:var(--deep)}.ja-pin--to{fill:var(--accent)}
.ja-floor{fill:var(--line-2)}
.ja-unit{fill:var(--deep)}
.tk-frame-r{fill:var(--deep-2)}
.tk-shut-r{fill:#e9dfcf}
.tk-rib{stroke:#d3c6b2;stroke-width:2}
.k-line-r{fill:none;stroke:#7d8784;stroke-width:3}
.k-ink-s{stroke:var(--text);stroke-width:5;stroke-linecap:round}

/* ======================= SCENE PALETTE (move_art.py) ======================= */
.scene text,.ja text{font-family:var(--body);font-weight:700}
.sky1{stop-color:#f6dcc0}.sky2{stop-color:#fbeee0}.sky3{stop-color:var(--bg)}
.sun{fill:#fbd6a6}.sun__halo{fill:#fbe3c6;opacity:.6}
.cloud ellipse{fill:#fff;opacity:.8}
.cloud{animation:drift var(--cd,80s) linear infinite alternate}
@keyframes drift{to{transform:translateX(120px)}}
.hills{fill:#e8d9c1}
.soil{fill:#e7d4b6}
.soil__l{fill:none;stroke:#d9c19c;stroke-width:3;opacity:.7}
.grass{fill:#a9bf8f}
.road{fill:#5b625e}
.road__dash{fill:#f1e7d7;opacity:.8}
.k-trunk{fill:#8a6440}.k-leaf{fill:#8fae8b}.k-leaf2{fill:#7d9f79}
.bush circle{fill:#86a682}
.roof{fill:var(--deep)}
.roof__trim{fill:none;stroke:var(--accent);stroke-width:6;stroke-linejoin:round;opacity:.9}
.chim{fill:#b56a4a}
.shell{fill:#f1e1c9;stroke:var(--deep);stroke-width:10}
.basement-wall{fill:#d8c3a2;stroke:#bba07a;stroke-width:6}
.slab{fill:var(--deep)}
.part{fill:#e2cfb2}
.stairs{fill:none;stroke:#b79d78;stroke-width:5;stroke-linejoin:round}
.sidedoor{fill:var(--accent)}
.runner{fill:#c7d6d1;opacity:0;transition:opacity .5s}
.is-crew .runner{opacity:1}
.room__bg{fill:#fbf1e3}
.room--kids .room__bg{fill:#f3efe2}
.room--living .room__bg{fill:#f8eadb}
.room--kitchen .room__bg{fill:#f6efe6}
.room--basement .room__bg{fill:#ede1cd}
.room__floor{fill:#e1c9a6}
.k-wood{fill:var(--wood)}.k-wood-s{stroke:var(--wood);stroke-width:6;stroke-linecap:round}
.k-deep{fill:var(--deep)}.k-deep2{fill:var(--deep-2)}
.k-acc{fill:var(--accent)}
.k-cream{fill:#fffaf2}
.k-sage{fill:var(--sage)}
.k-sky{fill:var(--sky)}
.k-ink{fill:#2b322f}.k-ink2{fill:#2b322f;stroke:#2b322f;stroke-width:2}
.k-metal{fill:#d9dcd6;stroke:#b7bdb6;stroke-width:2}
.k-frame{fill:#fffaf2;stroke:var(--wood);stroke-width:5}
.k-line{fill:none;stroke:rgba(43,50,47,.28);stroke-width:2.5}
.k-line-c{fill:none;stroke:#fff;stroke-width:3;opacity:.6}
.k-knob{stroke:#2b322f;stroke-width:3;stroke-linecap:round}
.k-cab{fill:#e8dcc8}
.k-counter{fill:#9aa8a2}
.k-rug{fill:var(--accent);opacity:.55}
.k-pot{fill:#b56a4a}
.k-tire{fill:none;stroke:#2b322f;stroke-width:6}
.k-bike{fill:none;stroke:var(--accent);stroke-width:5;stroke-linecap:round;stroke-linejoin:round}
.tv{fill:#3e5a6a}
.glow{fill:url(#mv-glow)}
.g1{stop-color:#ffe3b3;stop-opacity:.75}.g2{stop-color:#ffe3b3;stop-opacity:0}
.bx__b{fill:var(--kraft)}
.bx__t{fill:var(--kraft-d)}
.bx__e{stroke:var(--kraft-d);stroke-width:1.5;opacity:.6}
.bx__l{fill:#fff7ec}
.bx__tx{fill:var(--deep);letter-spacing:.04em}
.bn__b{fill:#7c9a93}
.bn__q path{stroke:#6a8881;stroke-width:2}
.bn__s{fill:var(--accent);opacity:.85}
.crew .cr-leg{fill:#2f3a36}.crew .cr-shirt{fill:var(--deep)}.crew .cr-skin{fill:#d9a77e}.crew .cr-cap{fill:var(--accent)}.crew .cr-logo{fill:var(--accent)}
.dolly{fill:none;stroke:#2b322f;stroke-width:4;stroke-linecap:round}
.dolly__w{fill:#2b322f}
.trail{fill:none;stroke:var(--accent);stroke-width:4;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:calc(1 - var(--w,0));opacity:0;transition:opacity .4s}
.room__done{opacity:0;transform-box:fill-box;transition:opacity .4s}
.room__done rect{fill:var(--deep)}.room__done path{fill:none;stroke:#fff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
/* truck */
.tk-frame{fill:var(--deep)}
.tk-in{fill:#efe2cf}
.tk-in-line{stroke:#e0cfb5;stroke-width:2}
.tk-shut rect:first-child{fill:#f7efe2}
.tk-ribs path{stroke:#e5d8c4;stroke-width:3}
.tk-stripe{fill:var(--accent)}
.tk-handle{stroke:#9aa39e;stroke-width:5;stroke-linecap:round}
.tk-fascia{fill:var(--deep)}
.tk-name{fill:#fff7ec;font-size:14px;letter-spacing:.16em}
.tk-door{opacity:0;transition:opacity .3s}
.tk-door rect{fill:#f2e7d6;stroke:var(--deep);stroke-width:3}
.tk-door path{stroke:#9aa39e;stroke-width:4;stroke-linecap:round}
.tk-chassis{fill:#2b322f}
.tk-cab{fill:var(--deep)}
.tk-win{fill:#cfe3df}
.tk-cabline{fill:none;stroke:rgba(255,255,255,.35);stroke-width:3;stroke-linecap:round}
.tk-light{fill:#ffe1a8}
.tk-tire{fill:#2b322f}
.tk-hub{fill:#cfd3cd}
.tk-spoke{stroke:#2b322f;stroke-width:3}
.wheel{transform-box:view-box;transform-origin:var(--cx) 644px;transform:rotate(var(--rot,0deg))}
.tk-ramp path{stroke:#9aa39e;stroke-width:8;stroke-linecap:round;opacity:0;transition:opacity .3s}
.slot{opacity:0;transform-box:fill-box;transform-origin:50% 100%;transform:translateY(-18px);transition:opacity .25s,transform .5s cubic-bezier(.3,1.5,.5,1);transition-delay:calc(var(--k) * 90ms)}
.slot.is-in{opacity:1;transform:none}
.tk-shut{transition:opacity .45s}
.truck{transition:none}
.house-b .hb-wall{fill:#fbf1e3}
.hb-door{fill:var(--deep)}.hb-knob{fill:var(--accent)}.hb-step{fill:#cdb898}
.win rect{fill:#dbe9e6;stroke:var(--deep);stroke-width:5}
.win path{stroke:var(--deep);stroke-width:4}
.win .win__glow{fill:#ffd89a;stroke:none;opacity:0;transition:opacity .8s}
.hb-sign path{stroke:#8a6440;stroke-width:5}
.hb-sign rect{fill:var(--accent)}
.hb-sign text{fill:var(--text);font-size:16px;letter-spacing:.12em}
.carry{opacity:0;transition:opacity .25s}
.carry.is-on{opacity:1}
.crew-idle{opacity:0;transition:opacity .4s}
.bx--sm .bx__b{fill:var(--kraft)}
/* packing states */
.pk{opacity:0;transition:opacity .45s}
.furn{transition:opacity .45s}
.room.is-packed .furn{opacity:0}
.room.is-packed .pk{opacity:1}
.room.is-gone .pk{opacity:0}
.room.is-gone .room__done{opacity:1}
.room.is-gone .glow{opacity:.4}
/* doors, crew, trails while the scroll scene runs */
.scene.is-open .tk-shut{opacity:0}
.scene.is-open .tk-door,.scene.is-open .tk-ramp path{opacity:1}
.scene.is-crew .crew-idle{opacity:1}
.scene-live .trail{opacity:.85}
.scene-live .trail.is-done{opacity:0}
.scene.is-home .win__glow{opacity:.9}
.scene-live .scene:not(.is-open) .slots{opacity:0}
/* no JS / reduced motion: the house furnished, the truck parked with its doors shut */
.no-js .scene .cloud,.reduced .scene .cloud{animation:none}

/* ======================= MOVING SCROLL SCENE (home hero, assets/js/move.js) =======================
   With JavaScript and motion allowed, the hero is pinned for several screens while the house is packed room by
   room, loaded and driven to the new home. Otherwise it stays the normal hero, with the scene still behind it. */
.scene__hud,.scene__msgs{display:none}
@media (prefers-reduced-motion:no-preference){
  .js .hero.moving{height:620vh;min-height:0;display:block;padding:0;overflow:visible}
  .js .hero.moving .scene__pin{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;display:flex;flex-direction:column;justify-content:center;padding:calc(var(--header-h) + var(--demo-h) + 30px) 0 100px}
  .js .hero.moving .hero__media{transform:none!important}
}
.scene-live .hero.moving .hero__shade{transition:opacity .8s}
.scene-live .hero.moving:not(.is-start) .hero__shade{opacity:0}
.scene-live .scene__hud,.scene-live .scene__msgs{display:block}
.hero.moving .hero__grid{position:relative;z-index:4}
.scene-live .hero.moving .hero__copy{transition:opacity .5s,transform .6s var(--ease)}
.scene-live .hero.moving:not(.is-start) .hero__copy{opacity:0;transform:translateY(-24px);pointer-events:none}
.scene-live .hero.moving .hero__est{transition:opacity .6s,transform .7s var(--ease)}
.scene-live .hero.moving:not(.is-start):not(.is-end) .hero__est{opacity:0;transform:translateX(30px);pointer-events:none}
.scene-live .hero.moving .hero__tags{transition:opacity .4s}
.scene-live .hero.moving:not(.is-start) .hero__tags,.scene-live .hero.moving:not(.is-start) .scroll-cue{opacity:0}
.scene-live .hero.moving .scroll-cue{bottom:22px}
.scene__hud{position:absolute;right:max(var(--gutter),calc((100% - var(--wrap)) / 2 + var(--gutter)));bottom:24px;z-index:3;width:min(330px,calc(100% - 2 * var(--gutter)));padding:16px 18px;border-radius:18px;background:color-mix(in srgb,var(--surface) 94%,transparent);border:1px solid var(--line);box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;transform:translateY(16px);transition:opacity .5s,transform .6s var(--ease)}
.hero.moving:not(.is-start):not(.is-end) .scene__hud{opacity:1;transform:none}
.scene__hud-top{display:flex;justify-content:space-between;align-items:baseline;font-weight:700;font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.scene__hud-top b{font-family:var(--display);font-weight:600;font-size:1.4rem;color:var(--deep);letter-spacing:0;font-variant-numeric:tabular-nums}
.scene__boxes b{color:var(--accent-text)}
.scene__name{margin:6px 0 0;font-family:var(--display);font-weight:600;font-size:1.6rem;line-height:1.1;color:var(--deep)}
.scene__detail{margin:2px 0 12px;font-weight:600;font-size:.88rem;color:var(--muted)}
.scene__meter{display:block;height:6px;background:var(--line);border-radius:6px;overflow:hidden}
.scene__meter b{display:block;height:100%;background:var(--accent);transform-origin:0 50%;transform:scaleX(0)}
.scene__strip{list-style:none;display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin-top:12px}
.scene__strip li{height:22px;border-radius:4px;border:1.5px dashed var(--line-2);position:relative}
.scene__strip li i{position:absolute;inset:2px;border-radius:2px;background:linear-gradient(90deg,transparent 40%,var(--kraft-d) 40% 60%,transparent 60%) top/100% 45% no-repeat,var(--kraft);transform:translateY(-10px) scale(.6);opacity:0;transition:transform .45s cubic-bezier(.3,1.6,.5,1),opacity .2s}
.scene__strip li.is-on{border-color:transparent}
.scene__strip li.is-on i{transform:none;opacity:1}
.scene__msgs{position:absolute;left:0;right:0;top:calc(var(--header-h) + var(--demo-h) + 1.5vh);z-index:3;pointer-events:none}
.smsg{position:absolute;left:max(var(--gutter),calc((100% - var(--wrap)) / 2 + var(--gutter)));right:var(--gutter);max-width:620px}
.smsg__k{margin:0;font-family:var(--display);font-weight:600;letter-spacing:-.02em;font-size:clamp(2.2rem,4.4vw,4.2rem);line-height:1.02;color:var(--deep);clip-path:inset(0 0 100% 0);transform:translateY(30px);transition:clip-path .6s var(--ease),transform .7s var(--ease)}
.smsg__s{margin:12px 0 0;max-width:36ch;font-size:clamp(1.05rem,1.5vw,1.22rem);line-height:1.45;color:var(--prose);opacity:0;transform:translateY(14px);transition:opacity .5s,transform .6s var(--ease)}
.smsg.is-on .smsg__k{clip-path:inset(-40px -60px -40px -40px);transform:none}
.smsg.is-on .smsg__s{opacity:1;transform:none;transition-delay:.15s}
.smsg--final .smsg__k{font-style:italic;font-weight:500;color:var(--accent-text);font-size:clamp(2.8rem,6vw,5.8rem)}
@media (max-width:900px){
  .js .hero.moving .scene__pin{justify-content:flex-start;padding-top:calc(var(--header-h) + var(--demo-h) + 20px)}
  .scene-live .hero.moving .hero__est{position:absolute;left:var(--gutter);right:var(--gutter);bottom:18px;max-width:none}
  .scene-live .hero.moving.is-start .hero__est{opacity:0;pointer-events:none;visibility:hidden}
  .scene-live .hero.moving .hero__tags{display:none}
  .scene__hud{left:var(--gutter);right:var(--gutter);width:auto;bottom:86px;padding:12px 14px}
  .scene__name{font-size:1.3rem}
  .smsg__k{font-size:clamp(2.1rem,10vw,3.6rem)}
  .scene-live .hero.moving.is-end .smsg--final{top:-1vh}
  .smsg--final .smsg__s{display:none}
}
@media (max-width:900px) and (max-height:760px){.scene-live .hero.moving.is-end .smsg--final .smsg__s{display:none}.scene__strip{display:none}}
@media (min-width:901px){.scene-live .hero.moving .hero__title{font-size:clamp(3rem,5.6vw,5.8rem)}.scene-live .hero.moving .hero__copy .lead{margin:20px 0 26px}.scene-live .hero.moving .hero__areas{display:none}}

/* ======================= OPENING ANIMATION: TAPED AND LABELLED =======================
   0.00-0.45s  a moving box rises into view, flaps open
   0.45-1.10s  the flaps fold shut
   1.10-1.55s  tape runs across the top and down the front
   1.55-1.90s  the shipping label with the business name slaps on
   1.95-2.20s  the "handle with care" stamp thumps down
   2.45s+      the box lifts, and the page slides in from under the cover */
.intro{position:fixed;inset:0;z-index:3000;display:none;pointer-events:none;overflow:hidden;background:radial-gradient(70% 60% at 50% 45%,#fbf3e7,var(--bg) 70%)}
.js:not(.no-intro) .intro{display:block;pointer-events:auto;animation:introFailsafe 0s 8s forwards}
@keyframes introFailsafe{to{visibility:hidden;pointer-events:none}}
@keyframes fadeIn{to{opacity:1}}
.intro__stage{position:absolute;inset:0;display:grid;place-items:center}
.ibx{position:relative;width:min(360px,72vw);aspect-ratio:1.2;opacity:0;transform:translateY(70px) scale(.92);animation:ibxIn .5s var(--ease) .05s forwards,ibxLift .6s var(--ease) 2.45s forwards}
@keyframes ibxIn{to{opacity:1;transform:none}}
@keyframes ibxLift{to{transform:translateY(-26px) scale(1.03)}}
.ibx__body{position:absolute;inset:0;border-radius:10px;background:linear-gradient(180deg,rgba(255,255,255,.14),transparent 25%),var(--kraft);box-shadow:inset 0 -18px 0 var(--kraft-d),0 30px 60px -20px rgba(80,55,25,.45);overflow:hidden}
.ibx__flap{position:absolute;top:2px;width:50%;height:44%;background:var(--kraft-l);border:2px solid var(--kraft-d);border-bottom:0;transform-origin:50% 100%;z-index:0;animation:iflap .5s cubic-bezier(.6,0,.3,1) .55s forwards}
.ibx__flap--l{left:0;border-radius:8px 0 0 0;transform:translateY(-100%) rotate(-28deg);transform-origin:0 100%}
.ibx__flap--r{right:0;border-radius:0 8px 0 0;transform:translateY(-100%) rotate(28deg);transform-origin:100% 100%;animation-delay:.72s}
@keyframes iflap{to{transform:translateY(-100%) rotate(0) scaleY(.05)}}
.ibx__tape{position:absolute;left:50%;top:0;width:18%;height:46%;margin-left:-9%;background:var(--accent);opacity:.95;transform:scaleY(0);transform-origin:top;animation:itape .4s var(--ease) 1.15s forwards;box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}
.ibx__tape::before{content:"";position:absolute;left:-260%;right:-260%;top:0;height:12px;background:var(--accent);transform:scaleX(0);animation:itapeX .35s var(--ease) 1.1s forwards}
@keyframes itape{to{transform:none}}
@keyframes itapeX{to{transform:none}}
.ibx__label{position:absolute;left:12%;right:12%;top:50%;padding:12px 16px 10px;border-radius:6px;background:#fffaf2;box-shadow:0 6px 14px -6px rgba(60,40,20,.4);opacity:0;transform:scale(1.3) rotate(-8deg);animation:ilabel .35s cubic-bezier(.3,1.5,.5,1) 1.55s forwards}
@keyframes ilabel{to{opacity:1;transform:rotate(-2deg)}}
.ibx__name{margin:0;font-family:var(--display);font-weight:600;letter-spacing:-.02em;font-size:clamp(1.3rem,4.2vw,1.9rem);line-height:1.05;color:var(--deep)}
.ibx__name span{font-family:var(--body);font-weight:700;font-size:.42em;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);vertical-align:middle;margin-left:4px}
.ibx__meta{margin:6px 0 6px;font-weight:700;font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-text)}
.ibx__bars{margin:0;display:flex;gap:3px;height:14px}
.ibx__bars i{display:block;width:4px;background:var(--text)}
.ibx__bars i:nth-child(3n){width:2px}.ibx__bars i:nth-child(4n){width:6px}
.ibx__stamp{position:absolute;right:7%;top:12%;margin:0;padding:4px 10px;border:3px solid #b5432a;border-radius:6px;color:#b5432a;font-weight:700;font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;opacity:0;transform:scale(2.2) rotate(-12deg);animation:istamp .25s cubic-bezier(.5,0,.75,0) 1.95s forwards}
@keyframes istamp{to{opacity:.85;transform:rotate(-12deg)}}
.ibx__arrows{position:absolute;left:7%;top:12%;margin:0;display:flex;gap:6px;opacity:0;animation:fadeIn .3s 1.75s forwards}
.ibx__arrows i{width:16px;height:22px;background:linear-gradient(var(--text),var(--text)) 50% 8px/3px 14px no-repeat;position:relative}
.ibx__arrows i::before{content:"";position:absolute;left:1px;top:0;border:7px solid transparent;border-bottom:9px solid var(--text);border-top:0}
.intro__shadow{position:absolute;left:50%;top:calc(50% + min(150px,30vw) + 14px);width:min(320px,64vw);height:24px;transform:translateX(-50%);border-radius:50%;background:radial-gradient(closest-side,rgba(80,55,25,.28),transparent);opacity:0;animation:fadeIn .5s .2s forwards}
.intro__wipe{position:absolute;inset:0;background:var(--deep);transform:translateY(100%)}
.intro.is-done{background:transparent;transition:background .01s .5s}
.intro.is-done .intro__stage{animation:istageOut .7s var(--ease) forwards}
@keyframes istageOut{to{transform:translateY(-110vh)}}
.intro.is-done .intro__wipe{animation:iwipe 1.1s var(--ease) forwards}
@keyframes iwipe{0%{transform:translateY(100%)}45%{transform:translateY(0)}100%{transform:translateY(-100%)}}
.intro.is-skip *{animation-duration:.01s!important;animation-delay:0s!important}
.intro-on .site-header{transform:translateY(-110%)}
.is-ready.intro-on .site-header{transform:none;transition:transform .9s var(--ease) .1s}

/* ---------- misc ---------- */
@keyframes spin{to{transform:rotate(360deg)}}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .js [data-reveal]{opacity:1!important;transform:none!important;clip-path:none!important}
}
/* ---- client work photos (added by _build/photos.py; shared across Rank Boss templates) ---- */
.work-section{padding:clamp(48px,7vw,88px) 0}
.work-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.work-photo{margin:0;border:1px solid var(--line,#2a2f38);border-radius:var(--r,14px);overflow:hidden;background:var(--card,#12151b)}
.work-photo img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}
.work-photo figcaption{padding:10px 14px;font-size:.92rem;color:var(--muted,#9aa3b0)}
@media (max-width:1100px){.work-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:700px){.work-grid{grid-template-columns:1fr}}
/* ---- end client work photos ---- */
