/* 114 Dolores — listing site */
@font-face{font-family:'DM Sans';src:url('fonts/dmsans.woff2') format('woff2');font-weight:400 700;font-display:swap}
@font-face{font-family:'DM Serif Display';src:url('fonts/dmserif.woff2') format('woff2');font-weight:400;font-display:swap}
:root{
  --ink:#12181f; --ink2:#46525f; --ink3:#75808c;
  --paper:#ffffff; --mist:#eef2f5; --mist2:#e3eaf0; --line:#d8e0e7;
  --accent:#1457d9; --accent-d:#0e3fa0; --accent-soft:#e8effc;
  --dark:#0d1319; --dark2:#16202a;
  --radius:18px; --maxw:1240px;
  --shadow:0 18px 50px rgba(13,24,38,.16);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
html:focus-within{scroll-behavior:smooth}
body{font-family:'DM Sans',system-ui,sans-serif;color:var(--ink);background:var(--paper);line-height:1.6;font-size:17px;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%}
a{color:var(--accent);text-decoration:none}
h1,h2,h3,.serif{font-family:'DM Serif Display',Georgia,serif;font-weight:400;line-height:1.08}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}
section{padding:96px 0}
.kicker{font-size:.78rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);margin-bottom:14px}
h2{font-size:clamp(2rem,4.2vw,3.1rem);margin-bottom:18px}
.lead{font-size:1.16rem;color:var(--ink2);max-width:62ch}
.rv{opacity:0;transform:translateY(26px);transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.2,1)}
.rv.in{opacity:1;transform:none}
.btn{display:inline-flex;align-items:center;gap:.5rem;background:var(--accent);color:#fff;font-weight:700;padding:.85rem 1.5rem;border-radius:999px;border:1px solid var(--accent);cursor:pointer;transition:.25s;font-size:1rem}
.btn:hover{background:var(--accent-d);border-color:var(--accent-d);transform:translateY(-2px)}
.btn.ghost{background:transparent;color:var(--ink);border-color:var(--line)}
.btn.ghost:hover{border-color:var(--ink);background:#fff}
.btn.light{background:#fff;color:var(--ink);border-color:#fff}
.btn.light:hover{background:var(--mist)}

/* ---------- header ---------- */
header{position:fixed;inset:0 0 auto 0;z-index:60;transition:.3s;color:#fff}
header .bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:16px 24px;max-width:var(--maxw);margin:0 auto}
header .brand{font-family:'DM Serif Display',serif;font-size:1.28rem;letter-spacing:.02em;color:inherit}
header .brand small{display:block;font-family:'DM Sans',sans-serif;font-size:.66rem;font-weight:700;letter-spacing:.3em;text-transform:uppercase;opacity:.75}
header nav{display:flex;gap:1.6rem;align-items:center}
header nav a{color:inherit;font-weight:500;font-size:.95rem;opacity:.92}
header nav a:hover{opacity:1;text-decoration:underline}
header .cta{padding:.55rem 1.1rem;font-size:.9rem}
header.scrolled{background:rgba(255,255,255,.92);backdrop-filter:blur(14px);color:var(--ink);box-shadow:0 6px 30px rgba(13,24,38,.10)}
.langsw{font-weight:700;border:1px solid currentColor;border-radius:999px;padding:.3rem .8rem;font-size:.85rem}
@media(max-width:900px){header nav a:not(.cta):not(.langsw){display:none}}

/* ---------- hero ---------- */
.hero{position:relative;min-height:100svh;display:flex;align-items:flex-end;color:#fff;overflow:hidden;background:var(--dark)}
.hero video,.hero .poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero .scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(9,14,20,.38) 0%,rgba(9,14,20,0) 34%,rgba(9,14,20,.18) 62%,rgba(9,14,20,.78) 100%)}
.hero .inner{position:relative;z-index:2;width:100%;padding:130px 0 0}
.hero .kicker{color:#bcd3ff}
.hero h1{font-size:clamp(3.2rem,9.5vw,7.2rem);letter-spacing:.005em;text-shadow:0 4px 40px rgba(0,0,0,.35)}
.hero .sub{font-size:clamp(1.05rem,2.2vw,1.35rem);max-width:56ch;color:#e8eef5;margin-top:10px}
.hero .facts{margin-top:44px;background:rgba(13,20,28,.55);backdrop-filter:blur(14px);border-top:1px solid rgba(255,255,255,.22)}
.hero .facts .wrap{display:flex;flex-wrap:wrap}
.hero .fact{flex:1 1 150px;padding:20px 22px;border-right:1px solid rgba(255,255,255,.14)}
.hero .fact:last-child{border-right:0}
.hero .fact b{display:block;font-family:'DM Serif Display',serif;font-weight:400;font-size:1.65rem;line-height:1}
.hero .fact span{font-size:.74rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:#b9c8d6}
.hero .scrollcue{position:absolute;right:26px;bottom:120px;z-index:3;font-size:.7rem;letter-spacing:.3em;text-transform:uppercase;writing-mode:vertical-rl;opacity:.85;display:flex;align-items:center;gap:10px}
.hero .scrollcue::after{content:"";width:1px;height:56px;background:#fff;display:block;animation:cue 2.2s ease-in-out infinite}
@keyframes cue{0%,100%{transform:scaleY(.4);transform-origin:top}50%{transform:scaleY(1)}}
@media(max-width:640px){.hero .scrollcue{display:none}.hero .fact{flex:1 1 33%;padding:14px}}

/* ---------- marquee ---------- */
.marquee{background:var(--accent);color:#fff;overflow:hidden;padding:13px 0}
.marquee .track{display:flex;gap:0;width:max-content;animation:mq 30s linear infinite}
.marquee span{font-weight:700;letter-spacing:.14em;text-transform:uppercase;font-size:.8rem;padding:0 1.4rem;white-space:nowrap}
.marquee i{font-style:normal;opacity:.6}
@keyframes mq{to{transform:translateX(-50%)}}

/* ---------- intro / counters ---------- */
.intro .grid{display:grid;grid-template-columns:1.25fr .9fr;gap:56px;align-items:start}
@media(max-width:900px){.intro .grid{grid-template-columns:1fr}}
.intro p{color:var(--ink2);margin-bottom:1rem}
.intro p b{color:var(--ink)}
.counters{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.counter{background:var(--mist);border-radius:var(--radius);padding:26px 22px}
.counter b{font-family:'DM Serif Display',serif;font-weight:400;font-size:2.5rem;line-height:1;color:var(--ink);display:block}
.counter b em{font-style:normal;color:var(--accent)}
.counter span{font-size:.78rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--ink3)}

/* ---------- slideshow ---------- */
.show{background:var(--dark);color:#fff;padding:84px 0}
.show .head{display:flex;justify-content:space-between;align-items:end;gap:2rem;flex-wrap:wrap;margin-bottom:30px}
.show .kicker{color:#9db9e8}
.show .stage{position:relative;border-radius:22px;overflow:hidden;aspect-ratio:16/8.2;background:#000;box-shadow:var(--shadow)}
@media(max-width:700px){.show .stage{aspect-ratio:4/3.4}}
.show .slide{position:absolute;inset:0;opacity:0;transition:opacity 1.1s ease}
.show .slide.on{opacity:1}
.show .slide img{width:100%;height:100%;object-fit:cover;transform:scale(1.02)}
.show .slide.on img{animation:kb 6.5s ease forwards}
@keyframes kb{from{transform:scale(1.02)}to{transform:scale(1.1)}}
.show .cap{position:absolute;left:0;right:0;bottom:0;padding:52px 30px 22px;background:linear-gradient(transparent,rgba(5,9,13,.75));display:flex;justify-content:space-between;align-items:end;gap:1rem}
.show .cap .t{font-family:'DM Serif Display',serif;font-size:1.5rem}
.show .cap .n{font-size:.8rem;letter-spacing:.2em;color:#b9c8d6;font-weight:700}
.show .prog{position:absolute;top:0;left:0;height:4px;background:var(--accent);width:0;z-index:5}
.show .nav{position:absolute;top:50%;transform:translateY(-50%);z-index:6;width:48px;height:48px;border-radius:50%;border:1px solid rgba(255,255,255,.4);background:rgba(10,16,22,.45);color:#fff;font-size:1.3rem;cursor:pointer;backdrop-filter:blur(6px)}
.show .nav:hover{background:rgba(10,16,22,.75)}
.show .nav.prev{left:16px}.show .nav.next{right:16px}
.show .playpause{margin-top:16px;background:none;border:1px solid rgba(255,255,255,.35);color:#fff;border-radius:999px;padding:.45rem 1.1rem;cursor:pointer;font-weight:600}
.show .playpause:hover{background:rgba(255,255,255,.12)}

/* ---------- gallery ---------- */
.chips{display:flex;flex-wrap:wrap;gap:10px;margin:26px 0 30px}
.chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:.5rem 1.15rem;font-weight:600;cursor:pointer;font-size:.95rem;transition:.2s}
.chip:hover{border-color:var(--ink)}
.chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.grid-gal{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media(max-width:1000px){.grid-gal{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.grid-gal{grid-template-columns:1fr}}
.gitem{position:relative;border-radius:14px;overflow:hidden;cursor:zoom-in;border:0;padding:0;background:var(--mist);aspect-ratio:4/3}
.gitem img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.gitem:hover img{transform:scale(1.05)}
.gitem figcaption{position:absolute;left:0;right:0;bottom:0;padding:34px 16px 12px;background:linear-gradient(transparent,rgba(6,10,14,.72));color:#fff;font-size:.92rem;font-weight:600;text-align:left;opacity:0;transition:.3s}
.gitem:hover figcaption,.gitem:focus-visible figcaption{opacity:1}
.gitem.hide{display:none}

/* lightbox */
.lb{position:fixed;inset:0;z-index:100;background:rgba(7,11,15,.94);display:none;align-items:center;justify-content:center;flex-direction:column;padding:22px}
.lb.open{display:flex}
.lb img{max-width:min(1180px,94vw);max-height:76vh;border-radius:12px;box-shadow:var(--shadow)}
.lb .cap{color:#dfe7ee;margin-top:16px;font-size:1rem;text-align:center}
.lb .count{color:#8fa1b3;font-size:.82rem;letter-spacing:.18em;font-weight:700;margin-top:4px}
.lb button{position:absolute;background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.3);color:#fff;border-radius:50%;width:50px;height:50px;font-size:1.35rem;cursor:pointer}
.lb button:hover{background:rgba(255,255,255,.2)}
.lb .x{top:20px;right:20px}
.lb .p{left:18px;top:50%;transform:translateY(-50%)}
.lb .n{right:18px;top:50%;transform:translateY(-50%)}

/* ---------- vision sliders ---------- */
.vision{background:var(--dark);color:#e9eff5}
.vision .kicker{color:#9db9e8}
.vision .lead{color:#aebccb}
.vision .vgrid{display:grid;grid-template-columns:1fr;gap:56px;margin-top:44px}
.vblock h3{font-size:1.7rem;margin-bottom:8px;color:#fff}
.vblock p{color:#aebccb;max-width:66ch;margin-bottom:18px}
.cmp{position:relative;border-radius:20px;overflow:hidden;aspect-ratio:3/2;box-shadow:var(--shadow);touch-action:none;user-select:none;background:#000}
.cmp.tall{aspect-ratio:4/3}
.cmp img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none}
.cmp .before{clip-path:inset(0 calc(100% - var(--pos,50%)) 0 0)}
.cmp .handle{position:absolute;top:0;bottom:0;left:var(--pos,50%);width:3px;background:#fff;transform:translateX(-50%);z-index:4;box-shadow:0 0 20px rgba(0,0,0,.5)}
.cmp .knob{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:52px;height:52px;border-radius:50%;background:#fff;color:var(--ink);display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:700;cursor:ew-resize;box-shadow:0 6px 24px rgba(0,0,0,.4)}
.cmp .handle:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.cmp .tag{position:absolute;top:16px;z-index:3;background:rgba(8,13,18,.72);color:#fff;font-size:.74rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;padding:.42rem .8rem;border-radius:999px;backdrop-filter:blur(4px)}
.cmp .tag.b{left:16px}.cmp .tag.a{right:16px;background:var(--accent)}
.cmp .disc{position:absolute;left:50%;bottom:16px;transform:translateX(-50%);z-index:3;background:rgba(255,193,7,.94);color:#231a00;font-weight:700;font-size:.82rem;padding:.5rem 1rem;border-radius:999px;white-space:nowrap;box-shadow:0 6px 20px rgba(0,0,0,.3)}
@media(max-width:560px){.cmp .disc{font-size:.7rem;white-space:normal;text-align:center;width:88%}}
.vision .fineprint{margin-top:26px;font-size:.86rem;color:#8496a7;max-width:78ch}

/* ---------- features ---------- */
.features{background:var(--mist)}
.fgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:36px}
@media(max-width:1000px){.fgrid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.fgrid{grid-template-columns:1fr}}
.fcard{background:#fff;border-radius:var(--radius);padding:26px;border:1px solid var(--line)}
.fcard .ic{font-size:1.5rem;margin-bottom:10px}
.fcard h3{font-size:1.22rem;margin-bottom:6px}
.fcard p{color:var(--ink2);font-size:.96rem}
.specs{margin-top:44px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.specs table{width:100%;border-collapse:collapse}
.specs th,.specs td{padding:15px 22px;text-align:left;border-bottom:1px solid var(--line);font-size:.98rem}
.specs tr:last-child th,.specs tr:last-child td{border-bottom:0}
.specs th{width:34%;color:var(--ink3);font-weight:700;font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;background:#fbfcfd}
@media(max-width:640px){.specs th,.specs td{padding:12px 14px}}

/* ---------- calculator ---------- */
.calc .box{display:grid;grid-template-columns:1.1fr .9fr;gap:0;border:1px solid var(--line);border-radius:22px;overflow:hidden;margin-top:36px;box-shadow:var(--shadow)}
@media(max-width:900px){.calc .box{grid-template-columns:1fr}}
.calc .form{padding:36px}
.calc .out{background:var(--dark);color:#fff;padding:36px;display:flex;flex-direction:column;justify-content:center}
.calc label{display:block;font-weight:700;font-size:.85rem;letter-spacing:.06em;margin:20px 0 8px}
.calc label:first-child{margin-top:0}
.calc input[type=number],.calc select{width:100%;padding:.8rem 1rem;border:1px solid var(--line);border-radius:12px;font-size:1.05rem;font-family:inherit;background:#fff}
.calc input[type=range]{width:100%;accent-color:var(--accent)}
.calc .rowval{display:flex;justify-content:space-between;align-items:baseline}
.calc .rowval output{font-weight:700;color:var(--accent)}
.calc .big{font-family:'DM Serif Display',serif;font-size:clamp(2.6rem,5vw,3.6rem);line-height:1}
.calc .per{color:#9db4c8;font-weight:600;letter-spacing:.1em;text-transform:uppercase;font-size:.78rem;margin-bottom:8px}
.calc .lines{margin-top:22px;border-top:1px solid rgba(255,255,255,.16);padding-top:16px;font-size:.95rem;color:#c4d2df}
.calc .lines div{display:flex;justify-content:space-between;padding:3px 0}
.calc .note{font-size:.8rem;color:#8496a7;margin-top:18px}

/* ---------- limoges ---------- */
.limo .cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:36px}
@media(max-width:1000px){.limo .cards{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.limo .cards{grid-template-columns:1fr}}
.lcard{border:1px solid var(--line);border-radius:var(--radius);padding:28px;background:#fff;transition:.25s}
.lcard:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:transparent}
.lcard .ic{font-size:1.6rem;margin-bottom:12px}
.lcard h3{font-size:1.25rem;margin-bottom:6px}
.lcard p{color:var(--ink2);font-size:.96rem}
.lcard .dist{margin-top:12px;font-weight:700;color:var(--accent);font-size:.85rem;letter-spacing:.08em;text-transform:uppercase}

/* ---------- agent / contact ---------- */
.agent{background:var(--mist)}
.agent .grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:48px;align-items:start}
@media(max-width:900px){.agent .grid{grid-template-columns:1fr}}
.acard{background:#fff;border-radius:22px;overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow)}
.acard .photo{background:linear-gradient(160deg,#fdfefe,#e8eef4);display:flex;justify-content:center}
.acard .photo img{width:min(320px,80%);height:auto}
.acard .body{padding:28px}
.acard h3{font-size:1.8rem}
.acard .role{color:var(--ink2);margin-bottom:16px}
.acard .cbtns{display:flex;flex-direction:column;gap:10px}
.acard .cbtns a{display:flex;justify-content:space-between;align-items:center;border:1px solid var(--line);border-radius:12px;padding:.8rem 1.1rem;color:var(--ink);font-weight:600}
.acard .cbtns a:hover{border-color:var(--accent);color:var(--accent)}
form.show-form{background:#fff;border:1px solid var(--line);border-radius:22px;padding:32px}
form.show-form h3{font-size:1.5rem;margin-bottom:6px}
form.show-form p{color:var(--ink2);font-size:.95rem;margin-bottom:18px}
form.show-form label{display:block;font-weight:700;font-size:.85rem;margin:16px 0 7px}
form.show-form input,form.show-form textarea{width:100%;padding:.78rem 1rem;border:1px solid var(--line);border-radius:12px;font-family:inherit;font-size:1rem;background:#fbfcfd}
form.show-form input:focus,form.show-form textarea:focus{outline:2px solid var(--accent);border-color:transparent;background:#fff}
form.show-form .btn{margin-top:22px;width:100%;justify-content:center}
form.show-form .fine{font-size:.8rem;color:var(--ink3);margin-top:12px;text-align:center}

/* ---------- footer ---------- */
footer{background:var(--dark);color:#aebccb;padding:64px 0 40px}
footer .cols{display:flex;justify-content:space-between;gap:2rem;flex-wrap:wrap}
footer .brand{font-family:'DM Serif Display',serif;color:#fff;font-size:1.6rem}
footer a{color:#d7e3ee}
footer .fine{border-top:1px solid rgba(255,255,255,.14);margin-top:36px;padding-top:22px;font-size:.82rem;color:#7e8fa0;max-width:95ch}
footer .credit{margin-top:10px;font-size:.82rem;color:#7e8fa0}

/* reduced motion */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  .rv{opacity:1;transform:none;transition:none}
  .marquee .track{animation:none}
  .show .slide.on img{animation:none}
  .hero .scrollcue::after{animation:none}
  *{transition-duration:.01ms!important}
}
