/* ============================================================
   ASG · All Service Group
   Friendly-premium theme — navy + emerald + yellow on lavender
   (matches the reference layout the client provided)
   ============================================================ */

:root{
  --navy:      #1E2A4D;
  --navy-2:    #2B3A63;
  --green:     #1FAE73;
  --green-deep:#15885A;
  --green-soft:#63D2A6;
  --green-tint:#E7F6EF;
  --yellow:    #FBC740;

  --bg:        #F4F5FB;   /* lavender-white */
  --bg-mint:   #E9F7F0;
  --bg-lav:    #EEF0FA;
  --surface:   #FFFFFF;

  --ink:       #1E2A4D;   /* headings (navy) */
  --body:      #5B6678;   /* body grey */
  --muted:     #8B94A6;
  --line:      rgba(30,42,77,.10);
  --line-2:    rgba(30,42,77,.055);

  --shadow-sm: 0 6px 22px rgba(30,42,77,.06);
  --shadow:    0 26px 60px -30px rgba(30,42,77,.24);
  --shadow-lg: 0 50px 100px -42px rgba(30,42,77,.30);

  --maxw: 1200px;
  --pad: clamp(22px, 5vw, 64px);
  --r:    18px;
  --r-lg: 28px;
  --r-img:34px;

  --ease: cubic-bezier(.22,1,.36,1);
  --font: "Noto Sans Georgian", "Segoe UI", system-ui, -apple-system, sans-serif;
  --serif: "Noto Serif Georgian", Georgia, serif;
}

*,*::before,*::after{ box-sizing:border-box; margin:0; padding:0 }
html{ -webkit-text-size-adjust:100% }
html.js{ scroll-behavior:auto }
body{
  font-family:var(--font);
  background:var(--bg);
  color:var(--body);
  line-height:1.6;
  font-weight:400;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
img,svg{ display:block; max-width:100% }
a{ color:inherit; text-decoration:none }
button{ font:inherit; color:inherit; background:none; border:none; cursor:pointer }
ul{ list-style:none }
h1,h2,h3,h4{ color:var(--ink) }
::selection{ background:var(--green); color:#fff }

.container{ width:100%; max-width:var(--maxw); margin-inline:auto; padding-inline:var(--pad) }

/* ---------- Decorative shapes ---------- */
.blob{ position:absolute; border-radius:50%; z-index:0; pointer-events:none }
.blob--green{ background:var(--green) }
.blob--yellow{ background:var(--yellow) }
.blob--navy{ background:var(--navy) }
.dots{ position:absolute; z-index:0; pointer-events:none;
  background-image:radial-gradient(var(--navy) 1.5px, transparent 1.6px); background-size:18px 18px; opacity:.12 }
.ring{ position:absolute; z-index:0; border-radius:50%; border:1.5px solid var(--green); opacity:.4; pointer-events:none }

/* ---------- Atmosphere (soft tints) ---------- */
.atmosphere{ position:fixed; inset:0; z-index:0; pointer-events:none; overflow:hidden }
.atmosphere__glow{ position:absolute; border-radius:50%; filter:blur(120px); opacity:.5 }
.atmosphere__glow--1{ width:55vw; height:55vw; right:-18vw; top:-20vw;
  background:radial-gradient(circle, rgba(31,174,115,.10), transparent 64%) }

/* ---------- Preloader ---------- */
.preloader{ position:fixed; inset:0; z-index:9000; background:var(--bg); display:grid; place-items:center;
  transition:opacity .8s var(--ease),visibility .8s }
.preloader.is-done{ opacity:0; visibility:hidden }
.preloader__inner{ display:grid; justify-items:center; gap:24px; width:min(240px,68vw) }
.preloader__mark{ animation:pulseMark 2.4s var(--ease) infinite }
.preloader__mark img{ filter:drop-shadow(0 10px 22px rgba(30,42,77,.14)) }
@keyframes pulseMark{ 50%{ transform:scale(1.05); opacity:.82 } }
.preloader__bar{ width:100%; height:3px; background:var(--line); border-radius:3px; overflow:hidden }
.preloader__fill{ display:block; height:100%; width:0%; background:var(--green); border-radius:3px }
.preloader__count{ font-size:12px; letter-spacing:.2em; color:var(--muted); font-variant-numeric:tabular-nums }
.preloader__count i{ font-style:normal; opacity:.5 }

/* ---------- Buttons (pill) ---------- */
.btn{
  --bh:54px;
  position:relative; display:inline-flex; align-items:center; justify-content:center; gap:.55em;
  height:var(--bh); padding:0 30px; border-radius:100px; font-size:15px; font-weight:600;
  white-space:nowrap; transition:transform .4s var(--ease), background .35s, color .3s, box-shadow .4s, border-color .35s;
}
.btn--sm{ --bh:44px; padding:0 22px; font-size:14px }
.btn--lg{ --bh:62px; padding:0 38px; font-size:16.5px }
.btn--solid{ color:#fff; background:var(--green); box-shadow:0 14px 28px -12px rgba(31,174,115,.5) }
.btn--solid:hover{ background:var(--green-deep); transform:translateY(-2px); box-shadow:0 20px 40px -12px rgba(31,174,115,.55) }
.btn--ghost{ color:var(--navy); border:1.5px solid var(--line); background:var(--surface); box-shadow:var(--shadow-sm) }
.btn--ghost:hover{ border-color:var(--green); color:var(--green-deep); transform:translateY(-2px) }

/* ---------- Nav ---------- */
.nav{ position:fixed; top:0; left:0; right:0; z-index:1000; transition:transform .5s var(--ease) }
.nav__inner{
  display:flex; align-items:center; justify-content:space-between; gap:24px;
  max-width:var(--maxw); margin-inline:auto; margin-top:16px;
  padding:9px 14px 9px 20px; border-radius:100px;
  background:rgba(255,255,255,.7); border:1px solid var(--line-2);
  backdrop-filter:blur(16px) saturate(1.3); -webkit-backdrop-filter:blur(16px) saturate(1.3);
  transition:background .4s, border-color .4s, box-shadow .4s; width:calc(100% - var(--pad)*2);
}
.nav.is-scrolled .nav__inner{ background:rgba(255,255,255,.92); border-color:var(--line); box-shadow:0 16px 40px -22px rgba(30,42,77,.25) }
.nav.is-hidden{ transform:translateY(-135%) }
.brand{ display:inline-flex; align-items:center; gap:11px }
/* official ASG logo — real <img> for crisp high-quality downscaling; the
   surrounding 1080² transparent padding is cropped by the overflow window
   (artwork is centered: 70% wide, 50.6% tall). */
.brand-logo{ display:block; aspect-ratio:700/506; overflow:hidden; position:relative }
.brand-logo img{ position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); width:142.86%; height:auto; display:block }
.brand .brand-logo{ height:40px }
.footer__brand .brand-logo{ height:54px }
.preloader__mark .brand-logo{ width:158px }
.brand__mark{ width:38px; height:33px; color:var(--navy); flex:0 0 auto }
.brand__mark svg{ width:100%; height:100% }
.brand__txt{ display:flex; flex-direction:column; line-height:1.05 }
.brand__txt strong{ font-size:16.5px; font-weight:800; letter-spacing:.04em; color:var(--navy) }
.brand__txt em{ font-style:normal; font-size:9.5px; letter-spacing:.2em; text-transform:uppercase; color:var(--muted) }
.nav__links{ display:flex; gap:4px; align-items:center }
.nav__links a{ position:relative; padding:9px 15px; font-size:14px; color:var(--navy-2); border-radius:100px; transition:color .3s }
.nav__links a::after{ content:""; position:absolute; left:15px; right:15px; bottom:6px; height:2px; background:var(--green); border-radius:2px; transform:scaleX(0); transform-origin:left; transition:transform .35s var(--ease) }
.nav__links a:hover{ color:var(--green-deep) }
.nav__links a:hover::after{ transform:scaleX(1) }
.nav__actions{ display:flex; align-items:center; gap:12px }
.lang{ display:inline-flex; align-items:center; gap:6px; font-size:12px; letter-spacing:.06em; color:var(--muted); padding:8px 13px; border:1px solid var(--line); border-radius:100px; transition:border-color .3s }
.lang:hover{ border-color:var(--green) }
.lang__opt.is-active{ color:var(--green-deep) }
.lang__sep{ opacity:.4 }
.nav__burger{ display:none; width:42px; height:42px; border:1px solid var(--line); border-radius:50%; flex-direction:column; align-items:center; justify-content:center; gap:5px; background:var(--surface) }
.nav__burger span{ width:16px; height:1.5px; background:var(--navy); transition:.3s var(--ease) }
.nav.is-open .nav__burger span:nth-child(1){ transform:translateY(3.25px) rotate(45deg) }
.nav.is-open .nav__burger span:nth-child(2){ transform:translateY(-3.25px) rotate(-45deg) }

/* ---------- Type helpers ---------- */
.eyebrow,.section-eyebrow{ font-size:12.5px; letter-spacing:.16em; text-transform:uppercase; color:var(--green-deep);
  display:inline-flex; align-items:center; gap:10px; font-weight:700 }
.section-eyebrow::before{ content:""; width:24px; height:2px; border-radius:2px; background:var(--green) }
.accent{ color:var(--green) }

/* ---------- Hero ---------- */
.hero{ position:relative; min-height:100svh; display:flex; align-items:center; z-index:1; padding:130px 0 70px; overflow:hidden }
.hero__grid{ display:grid; grid-template-columns:1.02fr .98fr; gap:clamp(30px,5vw,70px); align-items:center; width:100% }
.hero__content{ max-width:600px; position:relative; z-index:2 }
.eyebrow{ margin-bottom:24px }
.hero__title{ font-weight:800; font-size:clamp(44px,6.2vw,86px); line-height:1.04; letter-spacing:-.025em; margin-bottom:28px; color:var(--navy) }
.hero__title .line{ display:block; overflow:hidden }
.hero__title .line > span{ display:block }
.hero__title .accent{ color:var(--green) }
.hero__lead{ font-size:clamp(16px,1.5vw,18.5px); color:var(--body); max-width:480px; margin-bottom:36px; line-height:1.65 }
.hero__cta{ display:flex; flex-wrap:wrap; gap:14px }

.hero__stage{ position:relative; min-height:clamp(380px,46vw,520px); display:grid; place-items:center; z-index:1 }
.hero__stage .blob--green{ width:clamp(230px,25vw,310px); aspect-ratio:1; left:50%; top:calc(50% - 5px); transform:translate(-50%,-50%) }
.hero__stage .blob--yellow{ width:60px; height:60px; left:8%; top:14% }
.hero__stage .blob--navy{ width:26px; height:26px; right:14%; bottom:14% }
.hero__stage .dots{ width:120px; height:90px; left:2%; bottom:10% }
.hero__card{ position:relative; z-index:2; width:min(420px,80%); background:var(--surface); border-radius:var(--r-lg);
  padding:20px; box-shadow:var(--shadow-lg); transform:rotate(-4deg); transition:transform .6s var(--ease) }
.hero__card:hover{ transform:rotate(-1deg) translateY(-6px) }
.hero__card img{ width:100%; border-radius:16px }
.hero__tag{ position:absolute; right:-18px; bottom:26px; background:var(--navy); color:#fff; border-radius:16px;
  padding:12px 18px; display:grid; gap:2px; box-shadow:var(--shadow); transform:rotate(4deg) }
.hero__tag b{ font-size:14px; font-weight:700 }
.hero__tag i{ font-style:normal; font-size:11px; color:var(--green-soft); letter-spacing:.02em }

.hero__scroll{ position:absolute; left:50%; bottom:28px; transform:translateX(-50%); z-index:3; display:flex; flex-direction:column; align-items:center; gap:10px; font-size:10.5px; letter-spacing:.24em; text-transform:uppercase; color:var(--muted); transition:color .3s }
.hero__scroll:hover{ color:var(--navy) }
.hero__scroll i{ width:1px; height:42px; background:linear-gradient(var(--green),transparent); position:relative; overflow:hidden }
.hero__scroll i::after{ content:""; position:absolute; top:-50%; left:0; width:100%; height:50%; background:var(--green); animation:scrollLine 2.2s var(--ease) infinite }
@keyframes scrollLine{ to{ top:100% } }

/* ===== Hero device cluster (laptop + phone showing portal.asg.ge) ===== */
.hero__devices{ position:relative; width:min(660px,100%); margin:0 auto; z-index:2 }
.laptop{ position:relative; width:67%; margin:7% auto 0; z-index:2 }
.laptop__bezel{ background:#0f1116; border-radius:15px 15px 4px 4px; padding:9px; container-type:inline-size;
  box-shadow:0 34px 60px -26px rgba(30,42,77,.55), inset 0 0 0 1px rgba(255,255,255,.06) }
.laptop__base{ height:14px; width:118%; margin-left:-9%; border-radius:0 0 16px 16px; position:relative;
  background:linear-gradient(#d3d8df,#b4bac3 58%,#969ca6); box-shadow:0 18px 26px -14px rgba(30,42,77,.45) }
.laptop__base::after{ content:""; position:absolute; left:50%; top:0; transform:translateX(-50%);
  width:18%; height:5px; border-radius:0 0 7px 7px; background:rgba(120,127,138,.7) }

.hphone{ position:absolute; right:18%; bottom:4%; width:24%; z-index:3; container-type:inline-size;
  background:#0c0f15; border-radius:22px; padding:6px; box-shadow:0 30px 46px -20px rgba(30,42,77,.5), inset 0 0 0 1px rgba(255,255,255,.07) }
.hphone__notch{ position:absolute; top:11px; left:50%; transform:translateX(-50%); width:30%; height:5px; border-radius:4px; background:#000; z-index:2 }
.hphone__scr{ aspect-ratio:9/19; border-radius:17px; overflow:hidden; background:#eef1f5 }

/* --- portal desktop: building dashboard (scales with the device via container units) --- */
.portal{ aspect-ratio:16/10; border-radius:1.98cqw; overflow:hidden; display:flex; flex-direction:column;
  background:#f1f4f8; color:#1E2A4D; box-shadow:inset 0 0 0 1px rgba(0,0,0,.05) }
.portal__top{ display:flex; align-items:center; gap:1.65cqw; padding:1.98cqw 2.64cqw; background:#fff; border-bottom:1px solid #edeff3 }
.portal__brand{ width:5.6cqw; height:5.6cqw; border-radius:50%; background:radial-gradient(circle at 35% 30%,#34c98a,var(--green-deep)) }
.portal__acct{ font-size:2.31cqw; font-weight:700; background:#f0f2f6; border-radius:1.65cqw; padding:.99cqw 1.98cqw }
.portal__sp{ flex:1 }
.portal__bal{ display:flex; flex-direction:column; align-items:flex-end; line-height:1.1 }
.portal__bal i{ font-style:normal; font-size:1.65cqw; color:#9aa3b2 }
.portal__bal b{ font-size:2.64cqw; white-space:nowrap }
.portal__btn{ font-size:2.31cqw; font-weight:700; color:#fff; background:var(--green); border-radius:1.65cqw; padding:1.32cqw 2.31cqw; white-space:nowrap }
.portal__avatar{ width:5.6cqw; height:5.6cqw; border-radius:50%; background:var(--green-deep); color:#fff; font-size:1.98cqw; font-weight:700; display:grid; place-items:center }
.portal__body{ flex:1; display:flex; min-height:0 }
.portal__nav{ width:25%; background:#fff; border-right:1px solid #edeff3; padding:2.31cqw 1.65cqw; display:flex; flex-direction:column; gap:.99cqw }
.portal__nav span{ display:flex; align-items:center; gap:1.65cqw; font-size:2.08cqw; font-weight:600; color:#6b7585; padding:1.32cqw 1.65cqw; border-radius:1.65cqw; white-space:nowrap; overflow:hidden }
.portal__nav span i{ width:2.64cqw; height:2.64cqw; border-radius:.82cqw; background:#d3dae2; flex:none }
.portal__nav .is-active{ background:var(--green); color:#fff }
.portal__nav .is-active i{ background:rgba(255,255,255,.85) }
.portal__main{ flex:1; padding:2.31cqw; display:flex; flex-direction:column; gap:1.65cqw; min-width:0 }
.portal__pbal{ display:flex; align-items:center; justify-content:space-between; gap:1.98cqw;
  background:linear-gradient(118deg,#1aa564,var(--green-deep) 72%); color:#fff; border-radius:2.64cqw; padding:2.64cqw 3.3cqw }
.portal__pbal span{ display:block; font-size:1.98cqw; opacity:.85; margin-bottom:.33cqw }
.portal__pbal b{ font-size:4.94cqw; font-weight:800; letter-spacing:-.02em; white-space:nowrap }
.portal__pcard{ width:7.91cqw; height:5.6cqw; border-radius:1.32cqw; background:rgba(255,255,255,.16); border:1px solid rgba(255,255,255,.32); flex:none }
.portal__stats{ display:grid; grid-template-columns:1fr 1fr; gap:1.65cqw }
.pstat{ position:relative; background:#fff; border:1px solid #edeff3; border-radius:2.31cqw; padding:1.98cqw 2.31cqw; display:flex; flex-direction:column; gap:.33cqw }
.pstat i{ font-style:normal; font-size:1.81cqw; color:#8b94a3 }
.pstat b{ font-size:2.97cqw; font-weight:800; white-space:nowrap }
.pstat--up b{ color:var(--green-deep) } .pstat--down b{ color:#e0564f }
.pstat em{ position:absolute; right:2.31cqw; top:1.98cqw; font-style:normal; font-size:1.81cqw; font-weight:700 }
.pstat--up em{ color:var(--green) } .pstat--down em{ color:#e0564f }
.portal__chart{ flex:1; min-height:0; background:#fff; border:1px solid #edeff3; border-radius:2.64cqw; padding:2.31cqw 2.64cqw; display:flex; flex-direction:column; gap:1.65cqw }
.pchart__head{ display:flex; align-items:center; justify-content:space-between; font-size:2.14cqw; font-weight:700 }
.pchart__yr{ font-size:1.81cqw; color:#8b94a3; background:#f0f2f6; border-radius:1.98cqw; padding:.66cqw 1.98cqw }
.pchart__bars{ flex:1; min-height:0; display:flex; align-items:flex-end; gap:.99cqw }
.pchart__bars span{ flex:1; height:100%; display:flex; align-items:flex-end; justify-content:center; gap:.49cqw }
.pchart__bars i{ width:34%; border-radius:.49cqw .49cqw 0 0; background:var(--green) }
.pchart__bars i.x{ background:#ef6b62 }

/* --- portal mobile: dashboard (real 390px view, scales via container units) --- */
.pmob{ height:100%; display:flex; flex-direction:column; background:#eef1f6; color:#1E2A4D }
.pmob__bar{ display:flex; align-items:center; gap:5.8cqw; padding:8.7cqw 7.8cqw 5.8cqw; background:var(--green-deep) }
.pmob__burger{ display:flex; flex-direction:column; gap:1.9cqw; width:11.6cqw; flex:none }
.pmob__burger i{ height:1.5cqw; border-radius:.97cqw; background:#fff }
.pmob__bld{ flex:1; min-width:0; font-size:5.8cqw; font-weight:700; color:#fff; background:rgba(255,255,255,.16); border-radius:5.8cqw; padding:3.9cqw 6.8cqw; white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
.pmob__ava{ width:17.4cqw; height:17.4cqw; border-radius:50%; background:rgba(255,255,255,.22); color:#fff; font-size:5.8cqw; font-weight:700; display:grid; place-items:center; flex:none }
.pmob__hero{ background:var(--green-deep); color:#fff; padding:2.9cqw 9.7cqw 12.6cqw; border-radius:0 0 15.5cqw 15.5cqw }
.pmob__hero span{ font-size:6.3cqw; opacity:.82 }
.pmob__hero b{ display:block; font-size:14.5cqw; font-weight:800; margin:.97cqw 0 7.8cqw; letter-spacing:-.03em }
.pmob__hero b em{ font-style:normal; font-size:8.7cqw }
.pmob__find{ display:block; font-size:5.3cqw; opacity:.72; background:rgba(255,255,255,.12); border-radius:6.8cqw; padding:4.8cqw 7.8cqw }
.pmob__stats{ margin:9.7cqw; display:flex; flex-direction:column; gap:7.8cqw }
.pms{ display:flex; align-items:center; justify-content:space-between; gap:5.8cqw; background:#fff; border-radius:10.7cqw; padding:7.8cqw 9.7cqw; box-shadow:0 3px 8px -5px rgba(30,42,77,.16) }
.pms__t{ display:flex; flex-direction:column; gap:.97cqw; min-width:0 }
.pms__t i{ font-style:normal; font-size:5.8cqw; color:#8b94a3 }
.pms__t b{ font-size:9cqw; font-weight:800; white-space:nowrap }
.pms--up .pms__t b{ color:var(--green-deep) } .pms--down .pms__t b{ color:#e0564f }
.pms em{ font-style:normal; font-size:6.8cqw; font-weight:700; flex:none }
.pms--up em{ color:var(--green) } .pms--down em{ color:#e0564f }
.pmob__chartcard{ flex:1; min-height:0; margin:0 9.7cqw 9.7cqw; background:#fff; border-radius:11.6cqw; padding:9.7cqw; display:flex; flex-direction:column; gap:5.8cqw; box-shadow:0 3px 8px -5px rgba(30,42,77,.16) }
.pmc__head{ display:flex; align-items:center; justify-content:space-between; font-size:7.8cqw; font-weight:700 }
.pmc__yr{ font-size:6.3cqw; color:var(--green-deep); font-weight:700; background:var(--green-tint); border-radius:7.8cqw; padding:2.9cqw 7.8cqw }
.pmc__legend{ display:flex; gap:9.7cqw; font-size:5.8cqw; color:#6b7585 }
.pmc__dep::before,.pmc__exp::before{ content:""; display:inline-block; width:5.8cqw; height:5.8cqw; border-radius:50%; margin-right:2.9cqw; vertical-align:middle }
.pmc__dep::before{ background:var(--green) } .pmc__exp::before{ background:#ef6b62 }
.pmob__bars{ flex:1; min-height:0; display:flex; align-items:flex-end; gap:4.8cqw }
.pmob__bars span{ flex:1; height:100%; display:flex; align-items:flex-end; justify-content:center; gap:1.9cqw }
.pmob__bars i{ width:38%; border-radius:1.9cqw 1.9cqw 0 0; background:var(--green) }
.pmob__bars i.x{ background:#ef6b62 }

/* --- floaters: glossy 3D service chips (AROUND the devices, profy-style) --- */
.floaty{ position:absolute; z-index:6; animation:floaty var(--dur,7s) ease-in-out infinite; transform:rotate(var(--rot,0deg)); will-change:transform }
.floaty--chip{ width:clamp(46px,4.6vw,60px); aspect-ratio:1; border-radius:30%; display:grid; place-items:center; color:#fff;
  background:linear-gradient(155deg,#52e8a9,#12855a 92%);
  box-shadow:0 22px 34px -12px rgba(16,120,78,.6), inset 0 2.5px 3px rgba(255,255,255,.5), inset 0 -9px 16px rgba(0,0,0,.2) }
.floaty--chip::before{ content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none;
  background:radial-gradient(118% 74% at 30% 15%, rgba(255,255,255,.6), rgba(255,255,255,0) 56%) }
.floaty--chip svg{ position:relative; width:50%; height:50% }
.floaty--lari{ font-size:clamp(26px,2.7vw,37px); font-weight:800 }
.floaty--spark{ width:clamp(28px,3vw,42px); height:clamp(28px,3vw,42px); display:grid; place-items:center; color:var(--yellow); font-size:clamp(20px,2.6vw,36px); line-height:1; text-shadow:0 8px 20px rgba(251,199,64,.55) }
@keyframes floaty{
  0%,100%{ transform:translate(0,0) rotate(var(--rot,0deg)) }
  30%{ transform:translate(3px,-8px) rotate(calc(var(--rot,0deg) + 2.5deg)) }
  62%{ transform:translate(-3px,-13px) rotate(calc(var(--rot,0deg) - 2deg)) }
}
/* 8 icons orbiting the cluster — symmetric ring (mirrored top/bottom & left/right) */
.floaty--reader  { left:5%;   top:-5%;     --rot:-5deg; --dur:7s;   animation-delay:-.3s }
.floaty--cam     { left:44%;  top:-38%;    --rot:5deg;  --dur:6.9s; animation-delay:-.9s }
.floaty--barrier { right:5%;  top:-5%;     --rot:5deg;  --dur:8s;   animation-delay:-1.1s }
.floaty--garden  { right:-4%; top:40%;     --rot:4deg;  --dur:6.4s; animation-delay:-4s }
.floaty--lari    { right:5%;  bottom:-5%;  --rot:-4deg; --dur:7.4s; animation-delay:-2.7s }
.floaty--clean   { left:44%;  bottom:-38%; --rot:5deg;  --dur:8.2s; animation-delay:-1.5s }
.floaty--intercom{ left:5%;   bottom:-5%;  --rot:-4deg; --dur:6.6s; animation-delay:-3.4s }
.floaty--card    { left:-4%;  top:40%;     --rot:4deg;  --dur:7.8s; animation-delay:-2.1s }

/* footer card flourish (moved from hero) */
.footer__card{ position:relative; margin-top:30px; width:216px; max-width:100% }
.footer__card-circle{ position:absolute; right:30px; top:-16px; width:128px; height:128px; border-radius:50%; background:var(--green); opacity:.16 }
.footer__card figure{ position:relative; z-index:1; width:176px; margin:0; background:#fff; border-radius:18px; padding:12px; box-shadow:var(--shadow-lg); transform:rotate(-4deg) }
.footer__card img{ display:block; width:100%; border-radius:11px }
.footer__card .hero__tag{ right:-14px; bottom:14px; padding:9px 13px }
.footer__card .hero__tag b{ font-size:12px } .footer__card .hero__tag i{ font-size:10px }

@media (max-width:920px){
  .hero__devices{ width:min(430px,94%) }
  .floaty--chip{ width:clamp(44px,8.5vw,58px) }
}

/* ---------- Marquee (quiet) ---------- */
.marquee{ position:relative; z-index:1; padding:20px 0; border-block:1px solid var(--line-2); overflow:hidden; white-space:nowrap; background:var(--surface) }
.marquee__track{ display:inline-flex; align-items:center; gap:28px; animation:marquee 48s linear infinite; will-change:transform }
.marquee__track span{ font-size:14px; font-weight:600; color:var(--muted); letter-spacing:.04em; text-transform:uppercase }
.marquee__track i{ color:var(--green); font-size:9px; font-style:normal }
@keyframes marquee{ to{ transform:translateX(-50%) } }

/* ---------- Stats (rounded cards) ---------- */
.stats{ position:relative; z-index:1; padding:clamp(64px,9vw,120px) 0 }
.stats__grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(16px,2vw,22px) }
.stat{ position:relative; background:var(--surface); border:1px solid var(--line-2); border-radius:var(--r-lg);
  padding:30px 28px; box-shadow:var(--shadow-sm); overflow:hidden }
.stat::before{ content:""; position:absolute; right:-20px; top:-20px; width:64px; height:64px; border-radius:50%; background:var(--green-tint) }
.stat__num{ position:relative; display:flex; align-items:baseline; font-weight:800; font-size:clamp(36px,4.4vw,56px); line-height:1; letter-spacing:-.03em; color:var(--navy) }
.stat__num b{ color:var(--green); font-size:.5em; margin-left:3px }
.stat__label{ position:relative; margin-top:12px; font-size:13.5px; color:var(--muted) }

/* ---------- Promise ---------- */
.promise{ position:relative; z-index:1; padding:clamp(60px,10vw,140px) 0 }
.promise__head{ font-weight:800; font-size:clamp(28px,3.8vw,52px); line-height:1.16; letter-spacing:-.02em; max-width:20ch; margin:22px 0 50px; color:var(--navy) }
.promise__cols{ display:grid; grid-template-columns:1fr 1fr; gap:44px; max-width:860px; margin-left:auto }
.promise__cols p{ font-size:clamp(15px,1.3vw,17px); color:var(--body); line-height:1.7 }

/* ---------- Systems ---------- */
.systems{ position:relative; z-index:1; background:var(--bg-mint); overflow:hidden }
.systems__sticky{ padding:clamp(70px,10vw,140px) 0 }
.systems__head{ text-align:center; display:grid; justify-items:center; gap:18px; margin-bottom:clamp(44px,6vw,80px) }
.systems__title{ font-weight:800; font-size:clamp(30px,4.2vw,56px); letter-spacing:-.025em; line-height:1.06; max-width:16ch; color:var(--navy) }
.systems__stage{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(40px,6vw,80px); align-items:center }

/* reader showcase (dark tile) */
.device{ position:relative; display:grid; justify-items:center; gap:22px }
.device .blob--green{ width:90px; height:90px; left:0; top:6%; opacity:.85 }
.device .blob--yellow{ width:40px; height:40px; right:4%; bottom:12% }
.device__cap{ font-size:12.5px; color:var(--muted); text-align:center; letter-spacing:.02em; max-width:30ch }

/* ===== Interactive reader replica ===== */
.reader{
  --blue:#5b9bff; --rgreen:#27e07e;
  position:relative; z-index:1; width:min(290px,72vw); aspect-ratio:600/950;
  border-radius:34px; padding:13px;
  background:linear-gradient(150deg,#e4e7eb,#a8aeb7 44%,#cbd0d7 70%,#8c929b);
  box-shadow:var(--shadow-lg), inset 0 0 0 1.5px rgba(255,255,255,.55), inset 0 -7px 16px rgba(0,0,0,.2);
}
.reader__screen{ position:relative; height:100%; border-radius:22px; overflow:hidden;
  background:radial-gradient(125% 80% at 50% 6%, #1a2030, #07090e 72%);
  padding:8.5% 11% 7%; display:flex; flex-direction:column;
  box-shadow:inset 0 0 0 1px #000, inset 0 0 28px rgba(0,0,0,.6); transition:box-shadow .5s var(--ease) }
.reader.is-green .reader__screen{ box-shadow:inset 0 0 0 1px #000, inset 0 0 60px rgba(39,224,126,.3) }

.reader__logo{ display:flex; align-items:center; justify-content:center; gap:8px; color:var(--blue); transition:color .5s }
.reader__logo .ln{ width:24px; height:1.5px; background:currentColor; border-radius:2px; box-shadow:0 0 7px currentColor; transition:background .5s,box-shadow .5s }
.reader.is-green .reader__logo{ color:var(--rgreen) }
.reader.is-green .reader__logo .ln{ background:var(--rgreen); box-shadow:0 0 7px var(--rgreen) }
.reader__brand{ display:grid; justify-items:center; line-height:1; text-align:center; padding:6px 11px; border:1.4px solid currentColor; border-radius:50%/68%; box-shadow:0 0 8px rgba(91,155,255,.45); transition:border-color .5s,box-shadow .5s }
.reader.is-green .reader__brand{ box-shadow:0 0 8px rgba(39,224,126,.5) }
.reader__brand b{ font-size:11px; font-weight:800; letter-spacing:.06em }
.reader__brand i{ font-style:normal; font-size:4.6px; letter-spacing:.04em; opacity:.85; margin-top:1px }

.reader__code{ height:15px; margin-top:9px; text-align:center; font-size:13px; font-weight:600; letter-spacing:.26em; color:var(--blue); text-shadow:0 0 8px rgba(91,155,255,.7); transition:color .5s }
.reader.is-green .reader__code{ color:var(--rgreen); text-shadow:0 0 8px rgba(39,224,126,.7) }

.reader__keys{ flex:1; display:grid; grid-template-columns:repeat(3,1fr); align-items:center; justify-items:center; padding:5% 0 }
.key{ position:relative; font-size:clamp(15px,4.2vw,23px); font-weight:600; line-height:1; color:var(--blue); background:none; pointer-events:none;
  text-shadow:0 0 10px rgba(91,155,255,.75); transition:color .45s,text-shadow .45s,transform .12s var(--ease) }
.reader.is-green .key{ color:var(--rgreen); text-shadow:0 0 12px rgba(39,224,126,.8) }
/* a pressed key lights up green and STAYS green until the door opens */
.key.is-on{ color:var(--rgreen); text-shadow:0 0 16px rgba(39,224,126,.95) }
/* press splash — soft green flash + expanding ring */
.key::before{ content:""; position:absolute; left:50%; top:50%; width:170%; aspect-ratio:1; transform:translate(-50%,-50%) scale(.2); border-radius:50%;
  background:radial-gradient(circle, rgba(39,224,126,.78), rgba(39,224,126,.16) 46%, transparent 66%); opacity:0; pointer-events:none; mix-blend-mode:screen }
.key::after{ content:""; position:absolute; left:50%; top:50%; width:150%; aspect-ratio:1; transform:translate(-50%,-50%) scale(.3); border-radius:50%;
  border:2px solid var(--rgreen); opacity:0; pointer-events:none }
.key.is-press{ animation:keyPress .46s var(--ease) }
.key.is-press::before{ animation:keyGlow .62s var(--ease) }
.key.is-press::after{ animation:keyRing .66s var(--ease) }
@keyframes keyPress{ 0%{transform:scale(1)} 28%{transform:scale(.7)} 58%{transform:scale(1.16)} 100%{transform:scale(1)} }
@keyframes keyGlow{ 0%{opacity:.95; transform:translate(-50%,-50%) scale(.2)} 55%{opacity:.55} 100%{opacity:0; transform:translate(-50%,-50%) scale(1.4)} }
@keyframes keyRing{ 0%{opacity:.95; transform:translate(-50%,-50%) scale(.3)} 100%{opacity:0; transform:translate(-50%,-50%) scale(1.9)} }

.reader__icons{ display:flex; align-items:center; justify-content:space-between; padding:4% 7% 0 }
.reader__icons-mid{ display:flex; align-items:center; gap:9px }
.ic{ color:var(--blue); transition:color .5s,filter .35s; filter:drop-shadow(0 0 5px rgba(91,155,255,.55)) }
.reader.is-green .ic{ color:var(--rgreen); filter:drop-shadow(0 0 6px rgba(39,224,126,.7)) }
.ic--qr,.ic--card{ width:16px; height:16px; background:currentColor; -webkit-mask:center/contain no-repeat; mask:center/contain no-repeat }
.ic--qr{ -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M3 3h7v7H3V3Zm2 2v3h3V5H5Zm9-2h7v7h-7V3Zm2 2v3h3V5h-3ZM3 14h7v7H3v-7Zm2 2v3h3v-3H5Zm9 0h3v3h-3v-3Zm5-2h2v2h-2v-2Zm-5 5h2v2h-2v-2Zm4 0h3v3h-3v-3Z'/%3E%3C/svg%3E");
  mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M3 3h7v7H3V3Zm2 2v3h3V5H5Zm9-2h7v7h-7V3Zm2 2v3h3V5h-3ZM3 14h7v7H3v-7Zm2 2v3h3v-3H5Zm9 0h3v3h-3v-3Zm5-2h2v2h-2v-2Zm-5 5h2v2h-2v-2Zm4 0h3v3h-3v-3Z'/%3E%3C/svg%3E") }
.ic--card{ width:20px; height:17px; -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='8.4' width='10' height='7' rx='1.6' transform='rotate(-20 7 11.9)'/%3E%3Cpath d='M14.2 7.1a7.6 7.6 0 0 1 0 9.8'/%3E%3Cpath d='M17.6 4.7a12 12 0 0 1 0 14.6'/%3E%3C/svg%3E");
  mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='8.4' width='10' height='7' rx='1.6' transform='rotate(-20 7 11.9)'/%3E%3Cpath d='M14.2 7.1a7.6 7.6 0 0 1 0 9.8'/%3E%3Cpath d='M17.6 4.7a12 12 0 0 1 0 14.6'/%3E%3C/svg%3E") }
.ic--fp{ width:19px; height:19px; border-radius:50%; border:1.7px solid currentColor; box-sizing:border-box }
.ic--bar{ width:3px; height:13px; border-radius:3px; background:currentColor }
.reader.is-scanning .ic--qr{ animation:icPulse .6s var(--ease) infinite alternate }
@keyframes icPulse{ to{ filter:drop-shadow(0 0 9px rgba(39,224,126,.95)); color:var(--rgreen) } }

.reader__scan{ position:absolute; left:7%; right:7%; top:0; height:30%; pointer-events:none; opacity:0;
  background:linear-gradient(180deg, rgba(39,224,126,0), rgba(39,224,126,.32)); border-bottom:2px solid var(--rgreen); box-shadow:0 0 18px rgba(39,224,126,.6) }
.reader.is-scanning .reader__scan{ opacity:1; animation:readerScan 1.3s var(--ease) }
@keyframes readerScan{ 0%{transform:translateY(-15%)} 100%{transform:translateY(250%)} }

.reader__ring{ position:absolute; left:50%; top:50%; width:34%; aspect-ratio:1; border-radius:50%; border:2.5px solid var(--rgreen);
  transform:translate(-50%,-50%) scale(.4); opacity:0; pointer-events:none }
.reader.is-open .reader__ring{ animation:openRing 1.1s var(--ease) }
@keyframes openRing{ 0%{opacity:.85; transform:translate(-50%,-50%) scale(.4)} 100%{opacity:0; transform:translate(-50%,-50%) scale(2.5)} }
.reader__ok{ position:absolute; left:50%; top:43%; width:30%; aspect-ratio:1; color:var(--rgreen); opacity:0; pointer-events:none;
  transform:translate(-50%,-50%) scale(.5); filter:drop-shadow(0 0 12px rgba(39,224,126,.85)) }
.reader__ok svg{ width:100%; height:100% }
.reader.is-open .reader__ok{ animation:okPop 1.5s var(--ease) }
@keyframes okPop{ 0%{opacity:0; transform:translate(-50%,-50%) scale(.4)} 24%{opacity:1; transform:translate(-50%,-50%) scale(1)} 78%{opacity:1; transform:translate(-50%,-50%) scale(1)} 100%{opacity:0; transform:translate(-50%,-50%) scale(1.08)} }

/* animated props */
.reader-card{ position:absolute; z-index:4; width:46%; aspect-ratio:1304/800; right:0; top:30%;
  background:url("../models/cardF_tex.png") center/cover; border-radius:11px; box-shadow:var(--shadow);
  opacity:0; transform:translate(70px,0) rotate(-14deg); transition:transform 1s var(--ease), opacity .5s; pointer-events:none }
.reader-card.is-tap{ opacity:1; transform:translate(-28%,-4%) rotate(-7deg) }
.reader-phone{ position:absolute; z-index:5; width:29%; left:2%; bottom:0;
  border-radius:22px; background:#10182b; padding:4px 4px 5px;
  box-shadow:var(--shadow-lg), inset 0 0 0 1px rgba(255,255,255,.08);
  opacity:0; transform:translate(6%,70px) rotate(-3deg); transition:transform 1s var(--ease), opacity .55s; pointer-events:none }
.reader-phone.is-scan{ opacity:1; transform:translate(74%,-26%) rotate(-5deg) }
.appui{ display:block; border-radius:19px; overflow:hidden; background:#fff }
.appui__bar{ display:flex; align-items:center; justify-content:space-between; background:var(--green-deep); color:#fff; padding:4px 9px; font-size:7px; font-weight:700 }
.appui__sig{ width:16px; height:7px; border-radius:2px; background:repeating-linear-gradient(90deg,#fff 0 2px,transparent 2px 4px); opacity:.85 }
.appui__qrwrap{ padding:9px 9px 6px; display:grid; place-items:center }
.appui__qr{ width:80%; aspect-ratio:1; border:2px solid var(--green); border-radius:9px; padding:6px; box-shadow:0 0 0 4px rgba(31,174,115,.08) }
.appui__qr svg{ width:100%; height:100%; display:block }
.appui__pill{ display:block; width:-moz-max-content; width:max-content; max-width:86%; margin:0 auto 8px; padding:3px 9px; border:1px solid rgba(31,174,115,.4); border-radius:20px; color:var(--green-deep); font-size:6px; text-align:center }
.appui__lbl{ display:flex; align-items:center; gap:5px; margin:0 9px 5px; font-size:6.5px; color:var(--navy) }
.appui__lbl u{ text-decoration:none; background:var(--green-tint); color:var(--green-deep); border-radius:5px; padding:1px 5px; font-weight:700 }
.appui__addr{ display:flex; align-items:center; gap:6px; margin:0 9px 9px; padding:6px; border-radius:9px; box-shadow:0 3px 10px rgba(20,40,30,.08) }
.appui__tag{ display:grid; place-items:center; width:24px; height:24px; background:var(--green-tint); color:var(--green-deep); border-radius:7px; font-size:6.5px; font-weight:700 }
.appui__name{ flex:1; color:var(--navy); font-size:7px; font-weight:600 }
.appui__active{ display:inline-flex; align-items:center; gap:3px; background:var(--green-tint); color:var(--green-deep); border-radius:12px; padding:2px 6px; font-size:5.5px; font-weight:600 }
.appui__active i{ width:4px; height:4px; border-radius:50%; background:var(--green) }
.appui__nav{ display:flex; align-items:center; justify-content:space-around; border-top:1px solid var(--line-2); padding:6px 0 5px }
.appui__nav .n{ display:block }
.appui__nav .n-home,.appui__nav .n-prof{ width:9px; height:9px; border:1.5px solid var(--muted); border-radius:2px }
.appui__nav .n-qr{ width:18px; height:18px; border-radius:50%; background:var(--green); box-shadow:0 4px 10px -2px rgba(31,174,115,.6); position:relative; top:-4px }

/* access method tabs */
.access{ display:grid; gap:12px; align-content:center }
.acc-tab{ display:flex; gap:16px; align-items:flex-start; text-align:left; padding:20px 22px; border-radius:var(--r);
  border:1px solid var(--line-2); background:var(--surface); box-shadow:var(--shadow-sm); cursor:pointer;
  transition:border-color .35s,box-shadow .35s,transform .35s }
.acc-tab:hover{ transform:translateY(-2px); border-color:rgba(31,174,115,.3) }
.acc-tab.is-active{ border-color:rgba(31,174,115,.45); box-shadow:var(--shadow) }
.acc-tab__no{ flex:0 0 auto; display:grid; place-items:center; width:34px; height:34px; border-radius:50%; background:var(--green-tint); color:var(--green-deep); font-weight:800; font-size:15px; transition:background .35s,color .35s }
.acc-tab.is-active .acc-tab__no{ background:var(--green); color:#fff }
.acc-tab__txt{ display:grid; gap:4px }
.acc-tab__txt b{ font-size:18px; color:var(--navy); font-weight:700 }
.acc-tab__txt i{ font-style:normal; font-size:14px; color:var(--muted); line-height:1.55 }
.acc-tab.is-active .acc-tab__txt i{ color:var(--body) }

/* steps */
.systems__steps{ display:grid; gap:8px }
.sys-step{ position:relative; padding:24px 26px 24px 72px; border-radius:var(--r); border:1px solid transparent; transition:border-color .4s, background .4s, box-shadow .4s }
.sys-step::before{ content:attr(data-step); position:absolute; left:24px; top:24px; display:grid; place-items:center; width:30px; height:30px; border-radius:50%; background:var(--green-tint); color:var(--green-deep); font-size:12px; font-weight:700 }
.sys-step.is-active{ background:var(--surface); border-color:var(--line); box-shadow:var(--shadow) }
.sys-step.is-active::before{ background:var(--green); color:#fff }
.sys-step h3{ font-size:clamp(19px,2vw,23px); font-weight:700; letter-spacing:-.012em; margin-bottom:8px; color:var(--navy) }
.sys-step p{ font-size:15px; color:var(--muted); max-width:44ch; line-height:1.6 }
.sys-step.is-active p{ color:var(--body) }

/* card flip */
.systems__row{ display:grid; grid-template-columns:minmax(240px,360px) 1fr; gap:clamp(40px,5vw,76px); align-items:center; margin-top:clamp(64px,8vw,120px) }
.flipcard{ position:relative; aspect-ratio:1304/800; perspective:1500px; cursor:pointer; outline:none }
.flipcard__inner{ position:relative; width:100%; height:100%; transform-style:preserve-3d; transition:transform .9s var(--ease) }
.flipcard:hover .flipcard__inner,.flipcard:focus-visible .flipcard__inner,.flipcard.is-flipped .flipcard__inner{ transform:rotateY(180deg) }
.flipcard__face{ position:absolute; inset:0; backface-visibility:hidden; border-radius:var(--r-img); overflow:hidden;
  background:#fff no-repeat center/cover; box-shadow:var(--shadow-lg), 0 0 0 1px var(--line-2) }
.flipcard__face--front{ background-image:url("../models/cardF_tex.png") }
.flipcard__face--back{ transform:rotateY(180deg); background-image:url("../models/cardB_tex.png") }
.flipcard__hint{ position:absolute; bottom:-32px; left:50%; transform:translateX(-50%); font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:var(--muted) }
.systems__copy h3{ font-size:clamp(24px,3vw,38px); font-weight:800; letter-spacing:-.02em; margin-bottom:18px; color:var(--navy) }
.systems__copy > p{ font-size:clamp(15px,1.35vw,17px); color:var(--body); max-width:46ch; margin-bottom:26px; line-height:1.7 }
.ticks{ display:grid; gap:13px }
.ticks li{ position:relative; padding-left:32px; font-size:15px; color:var(--body) }
.ticks li::before{ content:""; position:absolute; left:0; top:5px; width:20px; height:20px; border-radius:50%; background:var(--green) }
.ticks li::after{ content:""; position:absolute; left:6px; top:11px; width:6px; height:3px; border-left:1.5px solid #fff; border-bottom:1.5px solid #fff; transform:rotate(-45deg) }

/* ---------- Services ---------- */
.services{ position:relative; z-index:1; padding:clamp(72px,10vw,150px) 0 }
.services__head{ display:grid; grid-template-columns:1.25fr 1fr; gap:46px; align-items:end; margin-bottom:clamp(44px,6vw,76px) }
.services__title{ font-weight:800; font-size:clamp(28px,4vw,54px); letter-spacing:-.025em; line-height:1.08; margin-top:20px; max-width:14ch; color:var(--navy) }
.services__intro{ font-size:clamp(15px,1.3vw,16.5px); color:var(--body); line-height:1.65 }
.services__grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:16px }
.svc{ position:relative; padding:32px 28px 34px; border-radius:var(--r-lg); border:1px solid var(--line-2); background:var(--surface); box-shadow:var(--shadow-sm); transition:border-color .5s var(--ease), transform .5s var(--ease), box-shadow .5s var(--ease) }
.svc::before{ content:attr(data-num); position:absolute; top:30px; right:30px; font-size:12.5px; font-weight:700; color:#C7CDD9 }
.svc:hover{ border-color:rgba(31,174,115,.32); transform:translateY(-5px); box-shadow:var(--shadow) }
.svc__icon{ display:grid; place-items:center; width:54px; height:54px; border-radius:16px; margin-bottom:24px; color:var(--green-deep); background:var(--green-tint) }
.svc__icon svg{ width:25px; height:25px }
.svc h3{ font-size:18.5px; font-weight:700; letter-spacing:-.01em; margin-bottom:10px; color:var(--navy) }
.svc p{ font-size:14.5px; color:var(--muted); line-height:1.6 }
/* pressable */
.svc{ cursor:pointer }
.svc:focus-visible{ outline:2px solid var(--green); outline-offset:3px; border-color:rgba(31,174,115,.4) }
.svc__icon{ transition:background .4s var(--ease), color .4s var(--ease) }
.svc:hover .svc__icon{ background:var(--green); color:#fff }
.svc__more{ display:inline-flex; align-items:center; gap:6px; margin-top:15px; font-size:13px; font-weight:700; color:var(--green-deep); opacity:.72; transition:opacity .4s var(--ease), gap .4s var(--ease) }
.svc__more i{ font-style:normal; transition:transform .4s var(--ease) }
.svc:hover .svc__more{ opacity:1; gap:9px }
.svc:hover .svc__more i{ transform:translateX(3px) }

/* ===== Service detail drawer ===== */
html.svcd-lock, html.svcd-lock body{ overflow:hidden }
.svcd{ position:fixed; inset:0; z-index:2000; visibility:hidden; pointer-events:none;
  display:flex; align-items:center; justify-content:center; padding:clamp(16px,4vw,40px) }
.svcd.is-open{ visibility:visible; pointer-events:auto }
.svcd__scrim{ position:absolute; inset:0; background:rgba(15,20,32,.55); -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px); opacity:0; transition:opacity .45s var(--ease) }
.svcd.is-open .svcd__scrim{ opacity:1 }
.svcd__panel{ position:relative; width:min(560px,100%); max-height:min(90vh,760px); background:var(--bg); border-radius:22px;
  box-shadow:0 40px 90px -30px rgba(15,20,32,.55); display:flex; flex-direction:column; overflow:hidden;
  opacity:0; transform:translateY(18px) scale(.96); transition:opacity .4s var(--ease), transform .45s var(--ease) }
.svcd.is-open .svcd__panel{ opacity:1; transform:none }
.svcd__close{ position:absolute; top:16px; right:16px; z-index:3; width:38px; height:38px; border-radius:50%; border:none; cursor:pointer;
  display:grid; place-items:center; background:rgba(255,255,255,.85); color:var(--navy); box-shadow:var(--shadow-sm); transition:background .3s, transform .35s var(--ease) }
.svcd__close:hover{ background:#fff; transform:rotate(90deg) }
.svcd__close svg{ width:18px; height:18px }
.svcd__media{ position:relative; aspect-ratio:16/9; flex:none; overflow:hidden; background:linear-gradient(160deg,#eef6ff,#e7f6ef) }
.svcd__video{ position:absolute; inset:0; display:grid; place-content:center; justify-items:center; gap:14px; background:linear-gradient(150deg,var(--green-deep),#0f5c3c) }
.svcd__video b{ color:rgba(255,255,255,.9); font-size:12.5px; font-weight:600; letter-spacing:.02em }
.svcd__play{ width:58px; height:58px; border-radius:50%; display:grid; place-items:center; background:rgba(255,255,255,.16); border:1.5px solid rgba(255,255,255,.55); color:#fff }
.svcd__play svg{ width:22px; height:22px; margin-left:3px }
.svcd__body{ padding:26px clamp(24px,4vw,36px) 34px; display:flex; flex-direction:column; flex:1; min-height:0; overflow-y:auto; overscroll-behavior:contain; scrollbar-width:none; -ms-overflow-style:none }
.svcd__body::-webkit-scrollbar{ width:0; height:0; display:none }
.svcd__num{ font-size:11.5px; font-weight:800; letter-spacing:.16em; color:var(--green); text-transform:uppercase }
.svcd__title{ font-size:clamp(22px,3vw,29px); font-weight:800; letter-spacing:-.02em; color:var(--navy); margin:9px 0 14px; line-height:1.16 }
.svcd__lead{ font-size:15.5px; color:var(--body); line-height:1.65 }
.svcd__points{ list-style:none; margin:22px 0 0; padding:0; display:flex; flex-direction:column; gap:13px }
.svcd__points li{ position:relative; padding-left:30px; font-size:14.5px; color:var(--ink); line-height:1.5 }
.svcd__points li::before{ content:""; position:absolute; left:0; top:0; width:19px; height:19px; border-radius:50%; background:var(--green-tint) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2315885A' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5 9-10'/%3E%3C/svg%3E") center/11px no-repeat }
.svcd__foot{ display:flex; flex-wrap:wrap; gap:12px; margin-top:30px }

/* cleaning animation */
.svcd__anim{ position:absolute; inset:0; display:flex; flex-direction:column; justify-content:flex-end }
.ca{ width:100%; flex:1; min-height:0; display:block }
.ca-floor{ fill:#cfe9db }
.ca-body{ fill:#fff; stroke:#cdd6e2; stroke-width:1.5 }
.ca-band{ fill:var(--green) }
.ca-win rect{ fill:#dcecfb; stroke:#bcd4ee; stroke-width:1 }
.ca-door{ fill:var(--green-tint); stroke:#bcd4ee; stroke-width:1 }
.ca-knob{ fill:var(--green-deep) }
.ca-dirt rect{ fill:rgba(122,134,152,.5) }
.ca-dirt .ca-streak{ fill:none; stroke:rgba(255,255,255,.4); stroke-width:2; stroke-linecap:round }
.ca-dirt{ animation:caWipe 4.4s cubic-bezier(.65,.05,.36,1) infinite }
@keyframes caWipe{ 0%{clip-path:inset(0 0 0 0)} 46%{clip-path:inset(100% 0 0 0)} 64%{clip-path:inset(100% 0 0 0)} 100%{clip-path:inset(0 0 0 0)} }
.ca-sqz-b{ fill:#5b6678 } .ca-sqz-h{ fill:#8b94a3 } .ca-sqz-g{ fill:var(--green-deep) }
.ca-sqz{ animation:caSqz 4.4s cubic-bezier(.65,.05,.36,1) infinite }
@keyframes caSqz{ 0%{transform:translateY(0)} 46%{transform:translateY(166px)} 64%{transform:translateY(166px)} 100%{transform:translateY(0)} }
.ca-sparks .cs{ fill:var(--green); opacity:0; transform-box:fill-box; transform-origin:center }
.cs1{ animation:caSpark 4.4s ease-in-out .5s infinite } .cs2{ animation:caSpark 4.4s ease-in-out 1s infinite }
.cs3{ animation:caSpark 4.4s ease-in-out 1.5s infinite } .cs4{ animation:caSpark 4.4s ease-in-out 2s infinite }
@keyframes caSpark{ 0%,100%{ opacity:0; transform:scale(.3) } 10%{ opacity:1; transform:scale(1) } 26%{ opacity:0; transform:scale(.4) } }
.ca-spray{ fill:none; stroke:var(--green-deep); stroke-width:2; stroke-linecap:round; stroke-linejoin:round }
.ca-spray .cd{ fill:var(--green); stroke:none; opacity:0; transform-box:fill-box; transform-origin:center }
.cd1{ animation:caDot 2.2s ease-out infinite } .cd2{ animation:caDot 2.2s ease-out .3s infinite } .cd3{ animation:caDot 2.2s ease-out .6s infinite }
@keyframes caDot{ 0%{ opacity:0; transform:translate(0,0) scale(.4) } 25%{ opacity:.9; transform:translate(3px,-2px) scale(1) } 100%{ opacity:0; transform:translate(9px,-6px) scale(.3) } }
.ca-mop{ fill:none; stroke:var(--green-deep); stroke-width:2; stroke-linecap:round; stroke-linejoin:round }
.ca-mop .mophead{ fill:var(--green); stroke:none }
.ca-mop-sw{ transform-box:fill-box; transform-origin:50% 0; animation:caMop 2.6s ease-in-out infinite }
@keyframes caMop{ 0%,100%{ transform:rotate(-8deg) } 50%{ transform:rotate(8deg) } }
.svcd__animcap{ position:relative; z-index:1; margin:0; padding:0 20px 16px; text-align:center; font-size:12.5px; font-weight:600; color:var(--green-deep) }

@media (max-width:820px){ .svcd__panel{ width:100% } }
@media (max-width:600px){
  .svcd{ padding:14px }
  .svcd__panel{ max-height:92vh; border-radius:18px }
  .svcd__media{ aspect-ratio:16/8.4 }
  .svcd__body{ padding:20px 20px 24px }
  .svcd__title{ font-size:21px; margin:7px 0 10px }
  .svcd__lead{ font-size:14.5px; line-height:1.6 }
  .svcd__points{ margin-top:16px; gap:11px }
  .svcd__points li{ font-size:13.5px; padding-left:28px }
  .svcd__foot{ margin-top:22px; gap:10px }
  .svcd__foot .btn{ flex:1 1 auto; justify-content:center }
}

/* ---------- Process ---------- */
.process{ position:relative; z-index:1; padding:clamp(64px,9vw,140px) 0; overflow:hidden }
.process__title{ font-weight:800; font-size:clamp(28px,3.8vw,52px); letter-spacing:-.025em; line-height:1.1; margin:22px 0 clamp(44px,5vw,72px); max-width:18ch; color:var(--navy) }
.process__rail{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px }
.pstep{ position:relative; padding:38px 32px; border-radius:var(--r-lg); border:1px solid var(--line-2); background:var(--surface); box-shadow:var(--shadow-sm) }
.pstep__no{ display:grid; place-items:center; width:54px; height:54px; border-radius:50%; background:var(--green-tint); color:var(--green-deep); font-size:20px; font-weight:800; margin-bottom:22px }
.pstep h3{ font-size:21px; font-weight:700; margin-bottom:11px; letter-spacing:-.01em; color:var(--navy) }
.pstep p{ font-size:15px; color:var(--muted); line-height:1.6 }

/* ---------- App ---------- */
.app{ position:relative; z-index:1; padding:clamp(64px,9vw,140px) 0; background:var(--bg-lav); overflow:hidden }
.app__grid{ display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(44px,6vw,90px); align-items:center }
.app__title{ font-weight:800; font-size:clamp(30px,4vw,54px); letter-spacing:-.025em; line-height:1.06; margin:22px 0 24px; color:var(--navy) }
.app__lead{ font-size:clamp(16px,1.4vw,18px); color:var(--body); max-width:46ch; margin-bottom:32px; line-height:1.65 }
.app__cta{ display:flex; flex-wrap:wrap; gap:14px; margin-bottom:36px }
.app__pays{ display:flex; align-items:center; gap:16px; flex-wrap:wrap; color:var(--muted); font-size:13px }
.app__pays ul{ display:flex; flex-wrap:wrap; gap:9px }
.app__pays li{ padding:7px 15px; border:1px solid var(--line); border-radius:100px; font-size:12.5px; color:var(--body); background:var(--surface) }

.app__phone{ position:relative; display:grid; place-items:center }
.app__phone .blob--green{ width:120px; height:120px; left:6%; top:8%; opacity:.16 }
.app__phone .blob--yellow{ width:50px; height:50px; right:8%; bottom:12% }
.phone{ position:relative; z-index:1; width:min(300px,78vw); aspect-ratio:300/620; border-radius:46px; padding:13px;
  background:linear-gradient(165deg,#28365c,#161f38); border:1px solid rgba(20,30,50,.5);
  box-shadow:var(--shadow-lg), inset 0 0 0 1px rgba(255,255,255,.05) }
.phone__notch{ position:absolute; top:20px; left:50%; transform:translateX(-50%); width:118px; height:26px; background:#10182c; border-radius:0 0 16px 16px; z-index:3 }
.phone__screen{ position:relative; height:100%; border-radius:34px; background:radial-gradient(120% 60% at 50% 0%, #243456, #121a30); padding:42px 18px 22px; display:flex; flex-direction:column; gap:14px; overflow:hidden; color:#EAF0FB }
.phone__top{ display:flex; align-items:center; justify-content:space-between }
.phone__brand{ font-weight:800; letter-spacing:.08em; color:var(--green-soft) }
.phone__bell{ width:18px; height:18px; border:1.5px solid #8893ad; border-radius:6px 6px 0 0; position:relative }
.phone__bell::after{ content:""; position:absolute; bottom:-4px; left:50%; transform:translateX(-50%); width:6px; height:3px; border-radius:0 0 4px 4px; background:#8893ad }
.phone__card{ position:relative; padding:18px; border-radius:18px; background:linear-gradient(120deg,var(--green),var(--green-deep)); color:#fff; display:grid; gap:4px; box-shadow:0 14px 30px -14px rgba(0,0,0,.5) }
.phone__label{ font-size:11px; opacity:.85; letter-spacing:.05em }
.phone__bal{ font-size:30px; font-weight:800; letter-spacing:-.02em }
.phone__pill{ justify-self:start; margin-top:6px; font-size:11px; padding:4px 10px; background:rgba(255,255,255,.22); border-radius:100px; font-weight:600 }
.phone__actions{ display:grid; grid-template-columns:repeat(4,1fr); gap:8px }
.pa{ display:grid; justify-items:center; gap:7px; padding:12px 4px; border-radius:14px; background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.08) }
.pa__i{ width:22px; height:22px; border-radius:6px; background:linear-gradient(150deg,var(--green-soft),var(--green)) }
.pa b{ font-size:10px; font-weight:500; color:#C3CCE0 }
.phone__row{ display:flex; align-items:center; justify-content:space-between; padding:14px 4px; border-top:1px solid rgba(255,255,255,.09); font-size:13px; color:#C3CCE0 }
.phone__row i{ width:7px; height:7px; border-right:1.5px solid #8893ad; border-top:1.5px solid #8893ad; transform:rotate(45deg) }

/* ---------- Branches ---------- */
.branches{ position:relative; z-index:1; padding:clamp(64px,9vw,140px) 0 }
.branches__title{ font-weight:800; font-size:clamp(28px,3.8vw,52px); letter-spacing:-.025em; margin:22px 0 clamp(44px,5vw,68px); color:var(--navy) }
.branches__grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:16px }
.branch{ position:relative; padding:36px 30px 32px; border-radius:var(--r-lg); border:1px solid var(--line-2); background:var(--surface); box-shadow:var(--shadow-sm); transition:border-color .4s, transform .4s, box-shadow .4s; overflow:hidden }
.branch::before{ content:""; position:absolute; right:-22px; top:-22px; width:70px; height:70px; border-radius:50%; background:var(--green-tint) }
.branch:hover{ border-color:rgba(31,174,115,.28); transform:translateY(-5px); box-shadow:var(--shadow) }
.branch__city{ position:relative; display:inline-block; font-size:12px; letter-spacing:.16em; text-transform:uppercase; color:var(--green-deep); margin-bottom:16px }
.branch__addr{ position:relative; font-size:18px; color:var(--navy); line-height:1.45; margin-bottom:22px; min-height:3em }
.branch__map{ position:relative; font-size:14px; color:var(--muted); display:inline-flex; align-items:center; gap:8px; transition:color .3s }
.branch__map::after{ content:"→"; transition:transform .3s var(--ease) }
.branch:hover .branch__map{ color:var(--green-deep) }
.branch:hover .branch__map::after{ transform:translateX(4px) }
.branches__hours{ margin-top:32px; font-size:14px; color:var(--muted); letter-spacing:.03em }

/* ---------- CTA (green block) ---------- */
.cta{ position:relative; z-index:1; padding:clamp(40px,6vw,80px) 0 clamp(72px,9vw,130px) }
.cta__inner{ position:relative; text-align:center; display:grid; justify-items:center; gap:8px; padding:clamp(56px,8vw,110px) var(--pad); border-radius:var(--r-lg);
  background:linear-gradient(135deg,var(--green),var(--green-deep)); overflow:hidden; box-shadow:var(--shadow-lg) }
.cta__inner::before{ content:""; position:absolute; left:-40px; top:-40px; width:180px; height:180px; border-radius:50%; background:rgba(255,255,255,.10) }
.cta__inner::after{ content:""; position:absolute; right:-30px; bottom:-50px; width:150px; height:150px; border-radius:50%; background:var(--yellow); opacity:.22 }
.cta__glow{ display:none }
.cta .section-eyebrow{ color:rgba(255,255,255,.85) }
.cta .section-eyebrow::before{ background:rgba(255,255,255,.7) }
.cta__title{ position:relative; font-weight:800; font-size:clamp(32px,4.6vw,62px); letter-spacing:-.03em; line-height:1.05; max-width:17ch; margin:18px 0 14px; color:#fff }
.cta__lead{ position:relative; font-size:clamp(16px,1.45vw,18.5px); color:rgba(255,255,255,.92); max-width:52ch; margin-bottom:14px; line-height:1.6 }
.cta__actions{ position:relative; display:flex; flex-wrap:wrap; gap:14px; justify-content:center; margin-top:20px }
.cta .btn--solid{ background:#fff; color:var(--green-deep); box-shadow:0 16px 36px -14px rgba(8,40,24,.4) }
.cta .btn--solid:hover{ background:#F0FBF5; color:var(--green-deep) }
.cta .btn--ghost{ background:transparent; border-color:rgba(255,255,255,.55); color:#fff; box-shadow:none }
.cta .btn--ghost:hover{ background:rgba(255,255,255,.14); color:#fff; border-color:#fff }

/* ---------- Footer ---------- */
.footer{ position:relative; z-index:1; border-top:1px solid var(--line); padding:clamp(56px,8vw,96px) 0 32px; background:var(--surface) }
.footer__grid{ display:grid; grid-template-columns:1.5fr 1fr 1fr 1.2fr; gap:44px; padding-bottom:50px; border-bottom:1px solid var(--line) }
.footer__brand .brand__mark{ width:52px; height:46px; color:var(--navy) }
.footer__tag{ font-size:17px; color:var(--body); margin-top:18px; max-width:24ch; line-height:1.55 }
.footer__col{ display:flex; flex-direction:column; gap:13px }
.footer__col h4{ font-size:11.5px; letter-spacing:.16em; text-transform:uppercase; color:var(--muted); margin-bottom:6px; font-weight:700 }
.footer__col a,.footer__col span{ font-size:14.5px; color:var(--body); transition:color .3s }
.footer__col a:hover{ color:var(--green-deep) }
.footer__bar{ display:flex; align-items:center; justify-content:space-between; gap:16px; padding-top:26px; font-size:13px; color:var(--muted); flex-wrap:wrap }

/* ---------- Reveal states ---------- */
html.anim .reveal-up{ opacity:0; transform:translateY(34px) }
html.anim .split-lines{ opacity:0; transform:translateY(30px) }
html.anim .hero__title .line > span{ transform:translateY(110%) }
html.anim .hero__stage{ opacity:0 }
html.anim .stat{ opacity:0; transform:translateY(26px) }
html.anim .svc{ opacity:0; transform:translateY(40px) }

/* ---------- Responsive ---------- */
@media (max-width:1024px){
  .hero__grid{ grid-template-columns:1fr; gap:30px }
  .hero__content{ max-width:none }
  .hero__stage{ order:-1; min-height:340px }
  .hero__stage .blob--green{ right:14% }
  .systems__stage{ grid-template-columns:1fr; gap:50px }
  .systems__steps,.access{ max-width:640px; margin-inline:auto; width:100% }
  .systems__row{ grid-template-columns:1fr; gap:54px }
  .systems__row .flipcard{ max-width:400px; margin-inline:auto; width:100% }
  .app__grid{ grid-template-columns:1fr; gap:56px }
  .app__phone{ order:-1 }
  .promise__cols{ grid-template-columns:1fr; gap:22px }
}
@media (max-width:860px){
  .nav__links{ display:none }
  .nav__burger{ display:flex }
  .stats__grid{ grid-template-columns:repeat(2,1fr); gap:14px }
  .services__head{ grid-template-columns:1fr; align-items:start; gap:18px }
  .services__grid{ grid-template-columns:repeat(2,1fr) }
  .process__rail{ grid-template-columns:1fr }
  .branches__grid{ grid-template-columns:1fr }
  .footer__grid{ grid-template-columns:1fr 1fr; gap:38px 28px }
  .nav.is-open .nav__links{ display:flex; flex-direction:column; gap:4px; position:absolute; top:calc(100% + 8px); left:var(--pad); right:var(--pad);
    padding:16px; border-radius:24px; background:rgba(255,255,255,.98); border:1px solid var(--line); backdrop-filter:blur(18px); box-shadow:var(--shadow-lg) }
  .nav.is-open .nav__links a{ padding:14px 16px; font-size:16px }
}
@media (max-width:520px){
  .stats__grid{ grid-template-columns:1fr 1fr }
  .services__grid{ grid-template-columns:1fr }
  .brand__txt em{ display:none }
  .footer__grid{ grid-template-columns:1fr }
  .hero__tag{ right:0 }
}

/* ---------- Reduced motion ----------
   Motion is core to the ASG brand experience, so the site's gentle decorative
   animations are intentionally kept on even when the OS requests reduced motion
   (client request). Ask to restore automatic suppression if a11y compliance is needed. */

/* ============================================================
   The Building, Alive — interactive services explorer
   ============================================================ */
.estate{ position:relative; z-index:1; padding:clamp(70px,10vw,140px) 0 clamp(60px,8vw,110px); overflow:hidden }
.estate__head{ text-align:center; display:grid; justify-items:center; gap:18px; margin-bottom:clamp(28px,5vw,56px) }
.estate__title{ font-weight:800; font-size:clamp(28px,4.2vw,54px); letter-spacing:-.03em; line-height:1.06; max-width:18ch; color:var(--navy) }
.estate__intro{ font-size:clamp(15px,1.35vw,17px); color:var(--body); max-width:56ch; line-height:1.6 }

.estate__stage{ display:grid; grid-template-columns:1.08fr .92fr; gap:clamp(24px,4vw,64px); align-items:center; min-height:min(84vh,740px) }
.estate__scene{ position:relative; width:100% }
.estate__svg{ width:100%; height:auto; display:block; overflow:visible }
.estate__svg .halo{ transition:opacity .55s var(--ease) }
.estate__svg .svc-el{ transition:opacity .45s var(--ease) }
.estate__svg .svc-el .accent,.estate__svg .svc-el .accent2 *{ transition:fill .4s }
.estate__scene[data-active] .svc-el{ opacity:.72 }
.estate__scene .svc-el.lit{ opacity:1 }
.estate__scene .svc-el.lit .halo{ opacity:1 }
/* animated parts */
.barrier-arm{ transform-origin:256px 628px; transition:transform .65s var(--ease) }
#b-barrier.lit .barrier-arm{ transform:rotate(-56deg) }
.cabin{ transition:transform .7s var(--ease) }
#b-lift.lit .cabin{ transform:translateY(-34px) }

/* hotspot markers */
.hot{ position:absolute; transform:translate(-50%,-50%); width:30px; height:30px; border-radius:50%;
  background:#fff; border:2px solid var(--green); color:var(--green-deep); display:grid; place-items:center;
  box-shadow:var(--shadow-sm); cursor:pointer; z-index:3; transition:transform .35s var(--ease), background .35s, color .35s, box-shadow .35s }
.hot i{ font-style:normal; font-size:11px; font-weight:800 }
.hot::before{ content:""; position:absolute; inset:-5px; border-radius:50%; border:2px solid var(--green); opacity:0 }
.hot:hover{ transform:translate(-50%,-50%) scale(1.14) }
.hot.is-active{ background:var(--green); color:#fff; transform:translate(-50%,-50%) scale(1.22); box-shadow:0 10px 24px -8px var(--glow) }
.hot.is-active::before{ animation:hotPing 1.7s var(--ease) infinite }
@keyframes hotPing{ 0%{opacity:.7; transform:scale(.78)} 100%{opacity:0; transform:scale(1.7)} }

/* panel */
.estate__panel{ position:relative }
.estate__count{ display:flex; align-items:baseline; gap:7px; margin-bottom:16px }
.estate__count b{ font-size:clamp(34px,4vw,46px); line-height:1; font-weight:800; color:var(--green) }
.estate__count span{ font-size:15px; color:var(--muted); font-weight:600 }
.estate__loc{ display:inline-block; font-size:11.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--green-deep); background:var(--green-tint); padding:5px 13px; border-radius:100px; margin-bottom:18px }
#estTitle{ font-weight:800; font-size:clamp(24px,2.9vw,38px); letter-spacing:-.02em; line-height:1.12; color:var(--navy); margin-bottom:14px }
#estDesc{ font-size:clamp(15px,1.4vw,17.5px); color:var(--body); line-height:1.7; max-width:42ch }
.estate__loc,#estTitle,#estDesc,.estate__count b{ transition:opacity .3s var(--ease) }
.estate__panel.is-swap .estate__loc,.estate__panel.is-swap #estTitle,.estate__panel.is-swap #estDesc,.estate__panel.is-swap .estate__count b{ opacity:0 }
.estate__progress{ margin-top:28px; height:4px; border-radius:4px; background:var(--line); overflow:hidden }
.estate__progress span{ display:block; height:100%; width:8.33%; background:var(--green); border-radius:4px; transition:width .55s var(--ease) }
.estate__hint{ margin-top:16px; font-size:12.5px; color:var(--muted) }

@media (max-width:900px){
  .estate__stage{ grid-template-columns:1fr; gap:18px; min-height:0 }
  .estate__scene{ max-width:520px; margin:0 auto; order:-1 }
  .estate__panel{ text-align:center; display:grid; justify-items:center }
  #estDesc{ max-width:46ch }
  .estate__count{ justify-content:center }
  .hot{ width:26px; height:26px }
  .hot i{ font-size:10px }
}
@media (prefers-reduced-motion:reduce){
  .barrier-arm,.cabin{ transition:none }
  .hot.is-active::before{ animation:none }
}

/* Access in action — 3D cinematic */
.a3d{ position:relative; z-index:1; background:#0a0c11; color:#e9ecf2 }
.a3d__pin{ position:relative; height:100vh; min-height:560px; overflow:hidden }
.a3d__canvas{ position:absolute; inset:0; width:100%; height:100%; display:block }
.a3d__grain{ position:absolute; inset:0; pointer-events:none;
  background:radial-gradient(125% 105% at 50% 38%, transparent 52%, rgba(0,0,0,.6)) }
.a3d__hud{ position:absolute; inset:0; pointer-events:none; padding:clamp(24px,4vw,60px) }
.a3d__head{ position:absolute; top:clamp(24px,4vw,56px); left:clamp(24px,4vw,60px); max-width:20ch }
.a3d__eyebrow{ color:#5fd0a6 }
.a3d__title{ font-weight:800; font-size:clamp(24px,3vw,42px); letter-spacing:-.025em; line-height:1.08; color:#fff; margin-top:16px }

/* right-side benefits — revealed when the camera pulls back */
.a3d__benefits{ position:absolute; right:clamp(22px,4vw,72px); top:50%; transform:translateY(-50%);
  width:min(40vw,400px); list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:clamp(16px,2.4vw,28px) }
.a3d__benefit{ display:flex; gap:15px; align-items:flex-start; opacity:0; transform:translateX(26px);
  transition:opacity .6s var(--ease), transform .6s var(--ease) }
.a3d__benefits.is-shown .a3d__benefit{ opacity:1; transform:none }
.a3d__benefits.is-shown .a3d__benefit:nth-child(2){ transition-delay:.12s }
.a3d__benefits.is-shown .a3d__benefit:nth-child(3){ transition-delay:.24s }
.a3d__benefits.is-shown .a3d__benefit:nth-child(4){ transition-delay:.36s }
.a3d__bicon{ flex:none; width:42px; height:42px; border-radius:12px; display:grid; place-items:center;
  background:rgba(39,224,143,.12); border:1px solid rgba(39,224,143,.28); color:#3fe6a0 }
.a3d__bicon svg{ width:22px; height:22px }
.a3d__btext{ display:flex; flex-direction:column; gap:3px }
.a3d__btext b{ font-size:clamp(15px,1.4vw,18px); font-weight:700; color:#fff; letter-spacing:-.01em }
.a3d__btext i{ font-style:normal; font-size:clamp(12.5px,1.15vw,14.5px); color:#9aa3b2; line-height:1.5 }
@media (max-width:820px){
  .a3d__head{ max-width:none }
  .a3d__benefits{ right:auto; left:clamp(24px,4vw,60px); top:auto; bottom:clamp(22px,4vw,40px); transform:none;
    width:auto; max-width:30ch; gap:13px; background:rgba(10,12,17,.5); backdrop-filter:blur(6px); padding:16px; border-radius:14px }
  .a3d__benefit{ transform:translateY(16px) }
}

/* featured real building — Monolith Green City showcase */
.featured{ position:relative; z-index:1; padding:clamp(56px,8vw,120px) 0; overflow:hidden }
.featured .estate__real{ margin-bottom:0 }
.estate__real{ display:grid; grid-template-columns:.82fr 1.18fr; gap:clamp(28px,4vw,60px); align-items:center; margin-bottom:clamp(40px,6vw,84px) }
.estate__realtxt .section-eyebrow{ margin-bottom:16px }
.estate__realtitle{ font-weight:800; font-size:clamp(24px,2.8vw,36px); letter-spacing:-.02em; color:var(--navy); margin-bottom:14px }
.estate__realnote{ font-size:clamp(15px,1.3vw,16.5px); color:var(--body); line-height:1.65; margin-bottom:24px; max-width:42ch }
.estate__facts{ display:flex; flex-wrap:wrap; gap:9px }
.estate__facts li{ display:inline-flex; align-items:center; gap:5px; padding:7px 15px; border:1px solid var(--line); border-radius:100px; font-size:13px; color:var(--navy); background:var(--surface) }
.estate__facts li b{ color:var(--green); font-weight:800 }

.gallery{ position:relative }
.gallery__main{ position:relative; border-radius:var(--r-lg); overflow:hidden; aspect-ratio:16/9; box-shadow:var(--shadow-lg) }
.gallery__main img{ width:100%; height:100%; object-fit:cover; display:block; transition:opacity .35s var(--ease) }
.gallery__info{ position:absolute; inset:auto 0 0 0; padding:22px 26px; display:grid; gap:2px; color:#fff;
  background:linear-gradient(0deg, rgba(14,22,40,.82), rgba(14,22,40,.25) 56%, transparent) }
.gallery__badge{ justify-self:start; display:inline-flex; align-items:center; gap:7px; margin-bottom:8px; padding:5px 12px; border-radius:100px;
  background:rgba(31,174,115,.95); color:#fff; font-size:11px; font-weight:700; letter-spacing:.05em; text-transform:uppercase }
.gallery__badge i{ width:6px; height:6px; border-radius:50%; background:#fff }
.gallery__info strong{ font-size:21px; font-weight:800; letter-spacing:-.01em }
.gallery__info em{ font-style:normal; font-size:13px; opacity:.88 }
.gallery__thumbs{ display:grid; grid-template-columns:repeat(5,1fr); gap:10px; margin-top:12px }
.gallery__thumb{ position:relative; border-radius:12px; overflow:hidden; aspect-ratio:16/10; cursor:pointer; padding:0; border:2px solid transparent; box-shadow:var(--shadow-sm); transition:border-color .3s, transform .3s }
.gallery__thumb img{ width:100%; height:100%; object-fit:cover; display:block }
.gallery__thumb:hover{ transform:translateY(-2px) }
.gallery__thumb.is-active{ border-color:var(--green) }

.estate__inside{ text-align:center; font-size:12.5px; letter-spacing:.16em; text-transform:uppercase; color:var(--muted); margin-bottom:clamp(8px,2vw,24px) }
.estate__inside::after{ content:"↓"; display:block; margin-top:8px; color:var(--green); font-size:17px }

@media (max-width:900px){
  .estate__real{ grid-template-columns:1fr; gap:24px }
  .gallery{ order:-1 }
  .estate__realtxt{ display:grid; justify-items:center; text-align:center }
  .estate__realnote{ max-width:48ch }
  .estate__facts{ justify-content:center }
}

/* ============================================================
   NEWS — homepage section, /news/ listing, /news/<slug> article
   Cards are locked to a 16:9 media box (object-fit:cover), so
   every post renders identically no matter the source photo.
   ============================================================ */
.news{ position:relative; z-index:1; padding:clamp(64px,9vw,130px) 0; background:var(--bg-mint) }
.news__head{ display:flex; align-items:flex-end; justify-content:space-between; gap:18px; flex-wrap:wrap; margin-bottom:clamp(26px,4vw,44px) }
.news__title{ font-weight:800; font-size:clamp(26px,3.4vw,44px); letter-spacing:-.02em; color:var(--navy) }
.news__grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(16px,2vw,24px) }

.newsc{
  display:flex; flex-direction:column; background:var(--surface); border-radius:var(--r-lg);
  overflow:hidden; text-decoration:none; box-shadow:var(--shadow-sm); border:1px solid var(--line-2);
  transition:transform .45s var(--ease), box-shadow .45s var(--ease);
}
.newsc:hover{ transform:translateY(-6px); box-shadow:var(--shadow) }
.newsc__media{ margin:0; aspect-ratio:16/9; overflow:hidden; background:var(--green-tint) }
.newsc__media img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .8s var(--ease) }
.newsc:hover .newsc__media img{ transform:scale(1.05) }
.newsc__body{ display:flex; flex-direction:column; gap:9px; padding:20px 22px 22px; flex:1 }
.newsc__date{
  align-self:flex-start; font-size:11.5px; font-weight:700; letter-spacing:.05em;
  color:var(--green-deep); background:var(--green-tint); border-radius:100px; padding:4px 12px;
}
.newsc__title{
  font-size:17.5px; font-weight:800; line-height:1.35; letter-spacing:-.01em; color:var(--navy);
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
}
.newsc__excerpt{
  font-size:14px; line-height:1.6; color:var(--body);
  display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
}
.newsc__more{ margin-top:auto; padding-top:6px; font-size:13.5px; font-weight:700; color:var(--green-deep) }
.newsc__more::after{ content:" →"; transition:margin .3s var(--ease) }
.newsc:hover .newsc__more::after{ margin-left:4px }

/* js-driven reveal (independent of GSAP so cards never stay hidden) */
.newsc.io-wait{ opacity:0; transform:translateY(26px) }
.newsc.io-in{ opacity:1; transform:none; transition:opacity .7s var(--ease), transform .7s var(--ease) }

/* ── subpages (news listing + article) ── */
.subpage__main{ padding-top:clamp(84px,10vw,110px); min-height:62vh }
.newspage{ padding:clamp(24px,4vw,56px) 0 clamp(72px,9vw,120px) }
.newspage__title{ font-weight:800; font-size:clamp(28px,4vw,52px); letter-spacing:-.02em; color:var(--navy); margin-bottom:12px }
.newspage__lead{ font-size:clamp(15px,1.4vw,17px); color:var(--body); margin-bottom:clamp(30px,4vw,52px); max-width:60ch }
.newspage__empty{ color:var(--muted); padding:60px 0; }
.news__grid--page{ margin-top:6px }
.nav__links a.is-current{ color:var(--green-deep) }

/* ── article ── */
.article{ padding:clamp(16px,3vw,40px) 0 clamp(72px,9vw,120px) }
.article__wrap{ max-width:860px }
.article__crumbs{ display:flex; gap:8px; font-size:13px; margin-bottom:22px; color:var(--muted) }
.article__crumbs a{ color:var(--muted); text-decoration:none }
.article__crumbs a:hover{ color:var(--green-deep) }
.article__date{
  display:inline-block; font-size:12px; font-weight:700; letter-spacing:.05em;
  color:var(--green-deep); background:var(--green-tint); border-radius:100px; padding:5px 14px; margin-bottom:16px;
}
.article__title{ font-weight:800; font-size:clamp(27px,3.8vw,46px); line-height:1.18; letter-spacing:-.02em; color:var(--navy); margin-bottom:14px }
.article__excerpt{ font-size:clamp(15.5px,1.5vw,18px); line-height:1.6; color:var(--body); margin-bottom:clamp(22px,3vw,34px) }
.article__cover{ margin:0 0 clamp(26px,4vw,42px); border-radius:var(--r-img); overflow:hidden; aspect-ratio:16/9; box-shadow:var(--shadow-lg) }
.article__cover img{ width:100%; height:100%; object-fit:cover; display:block }
.article__body{ font-size:clamp(15.5px,1.35vw,17px); line-height:1.75; color:var(--body) }
.article__body p{ margin-bottom:16px }
.article__body h2{ font-size:clamp(20px,2.2vw,26px); font-weight:800; letter-spacing:-.01em; color:var(--navy); margin:34px 0 12px }
.article__body h3{ font-size:clamp(17px,1.8vw,20px); font-weight:700; color:var(--navy); margin:26px 0 10px }
.article__body ul{ margin:0 0 16px 22px }
.article__body li{ margin-bottom:6px }
.article__body a{ color:var(--green-deep); font-weight:600 }
.article__body strong{ color:var(--navy) }
.article__body blockquote{
  border-left:3px solid var(--green); background:var(--green-tint);
  border-radius:0 14px 14px 0; padding:14px 18px; margin:0 0 16px;
}
.article__body blockquote p{ margin:0 }
.article__foot{ margin-top:clamp(30px,4vw,46px) }
.article__morewrap{ margin-top:clamp(40px,6vw,70px); padding-top:clamp(30px,4vw,46px); border-top:1px solid var(--line) }
.article__moretitle{ font-weight:800; font-size:clamp(20px,2.4vw,28px); letter-spacing:-.02em; color:var(--navy); margin-bottom:22px }
.footer--sub{ margin-top:0 }

@media (max-width:1000px){
  .news__grid{ grid-template-columns:repeat(2,1fr) }
}
@media (max-width:640px){
  .news__grid{ grid-template-columns:1fr }
  .news__head{ align-items:flex-start; flex-direction:column }
}

/* ═══════════════ FEEDBACK WIDGET (improvement notes) ═══════════════
   Bottom-LEFT on purpose — the CRM chat bubble owns the bottom-right. */
.fb{ position:fixed; left:18px; bottom:18px; z-index:1200 }
.fb [hidden]{ display:none!important }
.fb__fab{
  display:inline-flex; align-items:center; gap:8px;
  padding:12px 18px; border:0; border-radius:999px;
  background:var(--navy); color:#fff;
  font:inherit; font-weight:600; font-size:14px; cursor:pointer;
  box-shadow:0 10px 28px rgba(30,42,77,.28);
  transition:transform .15s ease, box-shadow .15s ease;
}
.fb__fab:hover{ transform:translateY(-2px); box-shadow:0 14px 32px rgba(30,42,77,.34) }
.fb__fab svg{ width:18px; height:18px; flex:none }
.fb__panel{
  position:absolute; left:0; bottom:calc(100% + 12px);
  width:min(340px, calc(100vw - 36px));
  background:var(--surface); border:1px solid var(--line); border-radius:18px;
  box-shadow:0 24px 60px rgba(30,42,77,.18); padding:16px;
}
.fb__head{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:10px }
.fb__head b{ color:var(--ink); font-size:15px }
.fb__close{ border:0; background:none; color:var(--muted); cursor:pointer; padding:4px; line-height:0 }
.fb__close svg{ width:16px; height:16px }
.fb__close:hover{ color:var(--ink) }
.fb__field{ display:block; margin-bottom:10px }
.fb__field span{ display:block; font-size:12.5px; color:var(--body); margin-bottom:5px }
.fb__field textarea, .fb__field input{
  width:100%; border:1px solid var(--line); border-radius:10px;
  padding:9px 11px; font:inherit; font-size:14px; color:var(--ink);
  background:var(--bg); resize:vertical;
}
.fb__field textarea:focus, .fb__field input:focus{
  outline:2px solid var(--green); outline-offset:0; border-color:transparent;
}
.fb__send{ width:100% }
.fb__err{ margin-top:8px; font-size:13px; color:#C43D3D }
.fb__ok{ text-align:center; padding:8px 0 2px }
.fb__ok b{ display:block; color:var(--ink); margin-bottom:4px }
.fb__ok p{ font-size:13.5px; color:var(--body); margin-bottom:10px }
@media (max-width:640px){
  .fb{ left:12px; bottom:12px }
}
