/* Revive Habitat — site design system (inner pages). Same language as the v1.3 homepage (assets/home.css).
   Scoped to .rv (page template wrapper). Static state is complete; site.js adds motion only on the front end. */

/* ---------- Tokens ---------- */
.rv{--brand-dot:#40b54e;--ink:#1d2b32;--ink-2:#26373b;--paper:#f2f1e9;--paper-2:#e8e8df;--lime:#d9ef87;--sage:#607346;--plaster:#ebe5d8;--timber:#a5794f;--concrete:#d6d2c8;--line:#1d2b3226;--line-light:#f2f1e926;
  --accent:var(--lime);--surface:var(--paper);--gutter:clamp(22px,5vw,88px);--sec:clamp(52px,6.2vw,100px);--r-xl:28px;--r-lg:20px;--r-md:12px;--r-sm:6px;
  --ease:cubic-bezier(.2,.7,.2,1);--ease-io:cubic-bezier(.7,0,.2,1);
  --h1:clamp(50px,8.2vw,148px);--h2:clamp(38px,5.4vw,90px);--h3:clamp(22px,2vw,32px);
  font:400 16px/1.6 Arial,Helvetica,sans-serif;color:var(--ink);background:var(--paper);overflow-x:clip;position:relative;-webkit-font-smoothing:antialiased}
body.rv-page{margin:0;background:var(--paper,#f2f1e9)}
.rv *,.rv *:before,.rv *:after{box-sizing:border-box}
.rv :where(h1,h2,h3,h4,p,ul,ol,figure){margin:0;color:inherit;font-family:inherit}
.rv :where(h1,h2,h3){font-weight:500;letter-spacing:-.055em;line-height:1.02}
.rv :where(a){color:inherit;text-decoration:none}
.rv :where(a):hover,.rv :where(a):focus{color:inherit}
:where(.rv) img{max-width:100%;height:auto;display:block}
.rv :where(button){font:inherit;color:inherit;cursor:pointer;background:none;border:0;padding:0;border-radius:0;box-shadow:none;text-transform:none;letter-spacing:inherit;min-height:0;line-height:inherit}
.rv :where(button:not(.rv-btn)):hover,.rv :where(button:not(.rv-btn)):focus{background:none;color:inherit}
.rv :focus-visible{outline:3px solid #6c941c!important;outline-offset:4px}
.rv a:focus:not(:focus-visible),.rv button:focus:not(:focus-visible){outline:none!important}
.rv ::selection{background:var(--lime);color:var(--ink)}
.rv .screen-reader-text{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);white-space:nowrap}
.rv-dark{background:var(--ink);color:var(--paper)}
.rv-theme-interior .rv{--accent:var(--timber);--surface:var(--plaster)}
.rv-theme-service-int .rv{--accent:var(--timber);--surface:var(--plaster)}
.rv-theme-exterior .rv,.rv-theme-service-ext .rv{--accent:var(--lime);--surface:var(--concrete)}

/* ---------- Elementor neutralisation inside Revive sections ---------- */
.rv .e-con.rv-sec{--padding-top:var(--sec);--padding-bottom:var(--sec);--padding-left:var(--gutter);--padding-right:var(--gutter)}
.rv .e-con.rv-sec--hero,.rv .e-con.rv-sec--materials,.rv .e-con.rv-sec--facade,.rv .e-con.rv-sec--cta,.rv .e-con.rv-sec--contact,.rv .e-con.rv-col,.rv .e-con.rv-home{--padding-top:0px;--padding-right:0px;--padding-bottom:0px;--padding-left:0px}
.rv .e-con.rv-sec,.rv .e-con.rv-col,.rv .e-con.rv-home{--gap:0px 0px;--row-gap:0px;--column-gap:0px;--margin-top:0px;--margin-bottom:0px;--content-width:100%;--width:100%;--min-height:0;max-width:none}
.rv .e-con.rv-sec>.e-con-inner{max-width:none;padding:0}
.rv .rv-sec .elementor-widget,.rv .rv-home .elementor-widget{margin:0!important;--kit-widget-spacing:0px;width:100%}
.rv .elementor-widget-heading .elementor-heading-title{font-family:inherit;color:inherit;font-weight:500;line-height:1.02;letter-spacing:-.055em;font-size:var(--h2);margin:0}
.rv .elementor-widget-text-editor{color:inherit;font-family:inherit;font-size:inherit}
.rv .elementor-widget-image img{width:100%;height:auto}
.rv-home{padding:0!important}

/* ---------- Header ---------- */
.rv-header{position:fixed;z-index:50;top:20px;left:var(--gutter);right:var(--gutter)}
.admin-bar .rv-header{top:52px}
.rv-skip{position:absolute;left:12px;top:0;transform:translateY(-200%);background:var(--lime);padding:10px 14px;border-radius:30px;z-index:60}
.rv-skip:focus{transform:none}
.rv-header-bar{height:70px;display:flex;align-items:center;gap:24px;padding:10px 12px 10px 28px;border-radius:60px;background:#f7f7efe8;border:1px solid #ffffff80;box-shadow:0 8px 30px #16202712;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);transition:height .5s var(--ease),background-color .5s,color .5s,border-color .5s,box-shadow .5s}
.rv-header.is-compact .rv-header-bar{height:60px;box-shadow:0 14px 40px #16202722}
.rv-header.is-dark .rv-header-bar{background:#1b2a2fe8;color:var(--paper);border-color:#ffffff1a}
.rv-header.is-dark .rv-logo img{filter:invert(1) hue-rotate(180deg) brightness(1.2)}
.rv-logo{width:104px;flex-shrink:0}.rv-logo img{width:100%;height:auto}
.rv-nav{position:relative;margin:0 auto}
.rv-nav-list{list-style:none;display:flex;gap:6px;padding:0}
.rv-nav-item{position:relative;display:flex;align-items:center}
.rv-nav-item>a{font-size:13px;padding:10px 12px;border-radius:30px;transition:background-color .3s}
.rv-nav-item>a:hover,.rv-nav-item.is-current>a{background:#1d2b320d}
.rv-header.is-dark .rv-nav-item>a:hover,.rv-header.is-dark .rv-nav-item.is-current>a{background:#ffffff14}
.rv-sub-toggle{width:22px;height:30px;display:grid;place-items:center;margin-left:-6px}
.rv-sub-toggle i{width:7px;height:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .3s}
.rv-sub-toggle[aria-expanded="true"] i{transform:translateY(2px) rotate(225deg)}
.rv-sub{list-style:none;position:absolute;top:calc(100% + 14px);left:-10px;min-width:290px;padding:12px;border-radius:var(--r-lg);background:var(--paper);color:var(--ink);box-shadow:0 30px 60px #16202733;opacity:0;visibility:hidden;transform:translateY(-8px);transition:opacity .35s var(--ease),transform .35s var(--ease),visibility 0s .35s}
.rv-sub.is-open,.rv-nav-item.has-sub:focus-within .rv-sub{opacity:1;visibility:visible;transform:none;transition-delay:0s}
@media(hover:hover){.rv-nav-item.has-sub:hover .rv-sub{opacity:1;visibility:visible;transform:none;transition-delay:0s}}
.rv-sub a{display:block;font-size:14px;padding:10px 14px;border-radius:10px;transition:background-color .25s,transform .3s var(--ease)}
.rv-sub a:hover,.rv-sub a[aria-current="page"]{background:var(--lime);transform:translateX(3px)}
.rv-nav-dot{position:absolute;left:0;bottom:-2px;width:5px;height:5px;margin-left:-2.5px;border-radius:50%;background:currentColor;opacity:0;pointer-events:none}
.rv-header-cta{display:inline-flex;align-items:center;gap:16px;font-size:12px;padding:14px 18px;border-radius:32px;background:var(--ink);color:#fff!important;white-space:nowrap;transition:background-color .3s,color .3s}
.rv-header-cta span{font-size:18px;line-height:1}
.rv-header-cta:hover{background:var(--lime);color:var(--ink)!important}
.rv-header.is-dark .rv-header-cta{background:var(--lime);color:var(--ink)!important}
.rv-burger{display:none;width:44px;height:44px;flex-direction:column;justify-content:center;align-items:center;gap:6px}
.rv-burger i{width:22px;height:1.5px;background:currentColor;transition:transform .35s var(--ease)}
.rv-burger[aria-expanded="true"] i:first-of-type{transform:translateY(3.75px) rotate(45deg)}.rv-burger[aria-expanded="true"] i:last-of-type{transform:translateY(-3.75px) rotate(-45deg)}
.rv-mobile{position:absolute;top:calc(100% + 10px);left:0;right:0;max-height:calc(100vh - 120px);overflow:auto;background:var(--paper);color:var(--ink);border-radius:var(--r-xl);padding:26px;box-shadow:0 30px 60px #16202740}
.rv-mobile ul{list-style:none;padding:0}
.rv-mobile>ul>li{border-bottom:1px solid var(--line);padding:10px 0}
.rv-mobile>ul>li>a{font-size:26px;letter-spacing:-.04em}
.rv-mobile ul ul{padding:6px 0 4px 14px}.rv-mobile ul ul a{font-size:15px;display:block;padding:6px 0;opacity:.8}
.rv-mobile .rv-btn{margin-top:22px}

/* ---------- Shared elements ---------- */
.rv-eyebrow{display:flex;align-items:center;gap:10px;font-size:11px;letter-spacing:.12em;text-transform:uppercase}
.rv-dot{width:7px;height:7px;border-radius:50%;background:currentColor;flex-shrink:0}
.rv-eyebrow-wrap{margin-bottom:28px!important}
.rv-title,.rv .rv-title .elementor-heading-title{font-size:var(--h2)}
.rv-intro{font-size:17px;line-height:1.6;max-width:540px;margin-top:18px}
.rv-block-head{display:grid;gap:0;margin-bottom:clamp(28px,3.4vw,52px)}
.rv-block-head .rv-eyebrow{margin-bottom:20px}
.rv-block-head .rv-title{max-width:16ch}
.rv-num{font-size:11px;letter-spacing:.1em;color:var(--sage)}
.rv-dark .rv-num{color:var(--lime)}
.rv-btn{position:relative;overflow:hidden;isolation:isolate;display:inline-flex;align-items:center;justify-content:space-between;gap:28px;min-height:58px;padding:7px 8px 7px 26px;border-radius:40px;border:1px solid currentColor;font-size:13px;line-height:1.3;transition:color .4s}
.rv-btn:before{content:'';position:absolute;z-index:-1;left:var(--fx,50%);top:var(--fy,110%);width:280%;aspect-ratio:1;border-radius:50%;background:var(--ink);transform:translate(-50%,-50%) scale(0);transition:transform .75s var(--ease)}
.rv-btn:hover:before{transform:translate(-50%,-50%) scale(1)}
.rv-btn:hover{color:#fff}
.rv-btn>span{white-space:nowrap}
.rv-btn i{font-style:normal;font-size:22px;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:var(--ink);color:var(--paper);overflow:hidden;transition:background-color .35s,color .35s}
.rv-btn i b{display:block;font-weight:400;text-shadow:-34px 34px currentColor;transition:transform .55s var(--ease-io)}
.rv-btn:hover i{background:var(--lime);color:var(--ink)}.rv-btn:hover i b{transform:translate(34px,-34px)}
.rv button.rv-btn{min-height:58px;padding:7px 8px 7px 26px;border-radius:40px;font-size:13px;line-height:1.3;text-transform:none;letter-spacing:0;font-weight:400}
.rv button.rv-btn--ink,.rv button.rv-btn--ink:hover,.rv button.rv-btn--ink:focus{background:var(--ink);border:1px solid var(--ink)}
.rv button.rv-btn--ink{color:var(--paper)}.rv button.rv-btn--ink:hover{color:var(--ink)}
.rv-btn--lime{background:var(--lime);border-color:var(--lime);color:var(--ink)}
.rv-btn--ink{background:var(--ink);border-color:var(--ink);color:var(--paper)}.rv-btn--ink:before{background:var(--lime)}.rv-btn--ink:hover{color:var(--ink)}.rv-btn--ink i{background:var(--lime);color:var(--ink)}
.rv-text-link{display:inline-flex;align-items:center;gap:28px;padding:10px 0;font-size:14px;position:relative}
.rv-text-link:after{content:'';position:absolute;left:0;right:0;bottom:0;height:1px;background:currentColor}
.rv-text-link:hover:after{animation:rv-redraw .8s var(--ease-io)}
.rv-text-link span{font-size:20px}
@keyframes rv-redraw{0%{transform:scaleX(1);transform-origin:right}50%{transform:scaleX(0);transform-origin:right}50.1%{transform:scaleX(0);transform-origin:left}100%{transform:scaleX(1);transform-origin:left}}
.rv-points{list-style:none;padding:0;margin-top:22px;display:grid;gap:8px}
.rv-points li{position:relative;padding-left:22px;font-size:14px}
.rv-points li:before{content:'';position:absolute;left:0;top:.62em;width:12px;height:1px;background:currentColor}
.rv-breadcrumbs{position:absolute;z-index:3;top:118px;left:var(--gutter);right:var(--gutter);font-size:11px;letter-spacing:.06em}
.admin-bar .rv-breadcrumbs{top:150px}
.rv-breadcrumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:6px;padding:0}
.rv-breadcrumbs li+li:before{content:'/';margin-right:6px;opacity:.5}
.rv-breadcrumbs a{opacity:.75}.rv-breadcrumbs a:hover{opacity:1;text-decoration:underline}
.rv-todo{display:inline-block;border:1px dashed #c26a00;color:#8a4b00;background:#fff4e0;font-size:12px;padding:2px 8px;border-radius:4px}
.rv-admin-bar-note{position:fixed;z-index:9999;left:12px;bottom:12px;max-width:520px;background:#fff4e0;color:#5c3300;border:1px solid #c26a00;font:12px/1.4 Arial,sans-serif;padding:10px 12px;border-radius:8px;box-shadow:0 8px 24px #0002}
.rv-admin-bar-note a{text-decoration:underline}

/* ---------- Sections & prose ---------- */
.rv-sec{padding:var(--sec) var(--gutter)}
.rv-sec--hero,.rv-sec--materials,.rv-sec--facade,.rv-sec--cta,.rv-sec--contact{padding:0}
.rv-sec--narrow{max-width:980px;margin:0 auto}
.rv-sec--warm{background:var(--plaster)}
.rv-sec--technical{background:var(--concrete)}
.rv-split-sec{display:grid!important;grid-template-columns:1.05fr .95fr;gap:clamp(36px,7vw,120px);align-items:center}
.rv-split-sec .rv-col--media{align-self:stretch}
.rv-split-sec .rv-title{font-size:clamp(34px,4.2vw,70px)}
.rv-prose{font-size:17px;line-height:1.7}
.rv-prose p+p{margin-top:1em}
.rv-prose p{max-width:64ch}
.rv-prose a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.rv-prose a:hover{text-decoration-color:var(--sage)}
.rv-split-sec .rv-prose{margin-top:30px}
.rv-article{display:grid!important;grid-template-columns:minmax(200px,280px) 1fr;gap:clamp(30px,6vw,110px);align-items:start}
.rv-article .rv-col--toc{position:sticky;top:120px}
.rv-article-body h2,.rv-legal h2{font-size:clamp(28px,2.8vw,44px);letter-spacing:-.045em;margin:1.6em 0 .55em;scroll-margin-top:120px}
.rv-article-body h2:first-child,.rv-legal h2:first-child{margin-top:0}
.rv-article-body h3,.rv-legal h3{font-size:22px;margin:1.4em 0 .4em}
.rv-article-body ul,.rv-legal ul{padding-left:0;list-style:none;margin:1em 0;display:grid;gap:10px}
.rv-article-body li,.rv-legal li{position:relative;padding-left:24px;max-width:62ch}
.rv-article-body li:before,.rv-legal li:before{content:'';position:absolute;left:0;top:.75em;width:13px;height:1px;background:var(--sage)}
.rv-legal{font-size:16px}
.rv-legal code{font-size:13px;background:#1d2b320d;padding:1px 5px;border-radius:4px}
.rv .rv-media img{border-radius:var(--r-lg);object-fit:cover;width:100%;height:100%}
.rv-media--frame{height:100%}.rv .rv-media--frame .elementor-widget-container,.rv .rv-media--frame img{height:100%;min-height:420px}

/* Aspect-ratio media frames: the image fills the frame (percent heights don't resolve against aspect-ratio boxes). */
.rv-gallery-media,.rv-project-media,.rv-link-media,.rv-chapter-media{position:relative}
/* .rv prefix: Elementor's later `.elementor img{height:auto}` would otherwise win. */
.rv :is(.rv-gallery-media,.rv-project-media,.rv-link-media,.rv-chapter-media,.rv-contact-visual figure,.rv-hero-media,.rv-materials-layer,.rv-facade-final)>img{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:cover}

/* ---------- Hero ---------- */
.rv-hero{position:relative;min-height:100svh;display:flex;align-items:flex-end;padding:170px var(--gutter) clamp(54px,7vw,100px);overflow:hidden;isolation:isolate}
.rv-hero-media{position:absolute;inset:0;z-index:-2;overflow:hidden;--ct:0%;--cr:0%;--cb:0%;--cl:0%;--crad:0px;clip-path:inset(var(--ct) var(--cr) var(--cb) var(--cl) round var(--crad))}
.rv-hero-img{width:100%;height:100%;object-fit:cover;will-change:transform}
.rv-hero-shade{position:absolute;inset:0;background:linear-gradient(180deg,#14283226 0%,#1428320d 40%,#0f2229c4 100%)}
.rv-hero-frame i{position:absolute;width:18px;height:18px;border:1.5px solid #ffffffb0}
.rv-hero-frame i:nth-child(1){left:calc(var(--cl) + 16px);top:calc(var(--ct) + 16px);border-width:1.5px 0 0 1.5px}
.rv-hero-frame i:nth-child(2){right:calc(var(--cr) + 16px);top:calc(var(--ct) + 16px);border-width:1.5px 1.5px 0 0}
.rv-hero-frame i:nth-child(3){right:calc(var(--cr) + 16px);bottom:calc(var(--cb) + 16px);border-width:0 1.5px 1.5px 0}
.rv-hero-frame i:nth-child(4){left:calc(var(--cl) + 16px);bottom:calc(var(--cb) + 16px);border-width:0 0 1.5px 1.5px}
.rv-hero-lines{position:absolute;inset:0;width:100%;height:100%;z-index:-1;fill:none;stroke:#ffffff38;stroke-width:1;pointer-events:none}
.rv-hero-lines path{vector-effect:non-scaling-stroke;stroke-dasharray:1}
.rv-hero-copy{position:relative;width:100%;max-width:1200px}
.rv-hero .rv-eyebrow{margin-bottom:30px}
.rv-hero-title{font-size:var(--h1);line-height:.96;letter-spacing:-.07em}
.rv-line{display:block;overflow:hidden;padding-bottom:.1em;margin-bottom:-.1em}.rv-line>span{display:block}
.rv-hero-lead{max-width:440px;font-size:16px;line-height:1.6;margin-top:30px}
.rv-hero-actions{display:flex;flex-wrap:wrap;align-items:center;gap:18px 34px;margin-top:34px}
.rv-hero-notes{list-style:none;position:absolute;right:var(--gutter);bottom:clamp(54px,7vw,100px);text-align:right;font-size:10px;letter-spacing:.14em;text-transform:uppercase;display:grid;gap:8px;padding:0}
.rv-hero-notes li:before{content:'— '}
/* Intérieur: warm, photographic, layered */
.rv-hero--interieur,.rv-hero--projets{color:#fff}
.rv-hero--interieur .rv-hero-media{--crad:0px}
.rv-hero--interieur .rv-hero-shade{background:linear-gradient(180deg,#2a1d1226 0%,#2a1d120a 35%,#22170ecc 100%)}
/* Extérieur: technical, dark, framed panel */
.rv-hero--exterieur{background:var(--ink);color:var(--paper);align-items:center}
.rv-hero--exterieur .rv-hero-media{left:44%;top:120px;bottom:60px;right:var(--gutter);border-radius:4px;clip-path:inset(var(--ct) var(--cr) var(--cb) var(--cl) round 4px)}
.rv-hero--exterieur .rv-hero-shade{background:linear-gradient(90deg,#1d2b3266,transparent 40%)}
.rv-hero--exterieur .rv-hero-copy{max-width:42%}
.rv-hero--exterieur .rv-hero-title{font-size:clamp(44px,6.4vw,118px)}
.rv-hero--exterieur:before{content:'';position:absolute;inset:0;z-index:-3;background-image:linear-gradient(#f2f1e90a 1px,transparent 1px),linear-gradient(90deg,#f2f1e90a 1px,transparent 1px);background-size:56px 56px}
.rv-hero--exterieur .rv-hero-lines{stroke:#d9ef8755}
/* Services: split */
.rv-hero--service-int,.rv-hero--service-ext{min-height:min(82svh,820px);align-items:center}
.rv-hero--service-int{background:var(--plaster)}
.rv-hero--service-ext{background:var(--ink);color:var(--paper)}
.rv-hero--service-int .rv-hero-media,.rv-hero--service-ext .rv-hero-media{left:50%;top:110px;bottom:40px;right:var(--gutter)}
.rv-hero--service-int .rv-hero-media{border-radius:var(--r-xl);clip-path:inset(var(--ct) var(--cr) var(--cb) var(--cl) round var(--r-xl))}
.rv-hero--service-ext .rv-hero-media{clip-path:inset(var(--ct) var(--cr) var(--cb) var(--cl) round 4px)}
.rv-hero--service-int .rv-hero-shade,.rv-hero--service-ext .rv-hero-shade{display:none}
.rv-hero--service-int .rv-hero-copy,.rv-hero--service-ext .rv-hero-copy{max-width:46%}
.rv-hero--service-int .rv-hero-title,.rv-hero--service-ext .rv-hero-title{font-size:clamp(42px,5.4vw,96px)}
.rv-hero--service-int .rv-hero-lines{stroke:#1d2b3222}.rv-hero--service-ext .rv-hero-lines{stroke:#d9ef8740}
.rv-hero--service-int .rv-hero-frame i,.rv-hero--service-int .rv-hero-notes{display:none}
/* Réalisations: cinematic full-bleed */
.rv-hero--projets .rv-hero-title{font-size:clamp(56px,9.6vw,172px)}
.rv-hero--projets .rv-hero-title .rv-line:nth-child(2) span{font-family:Georgia,serif;font-style:italic;font-weight:400;letter-spacing:-.05em}
/* Contact & légal: typography first */
.rv-hero--no-media{min-height:auto;padding-top:clamp(150px,15vw,210px);padding-bottom:clamp(32px,4vw,60px)}
.rv-hero--contact .rv-hero-title{font-size:clamp(60px,11vw,210px);line-height:.9}
.rv-hero--contact .rv-hero-title .rv-line:first-child span{color:var(--sage)}
.rv-hero--contact .rv-hero-lines,.rv-hero--legal .rv-hero-lines{stroke:#1d2b3218}
.rv-hero--legal{background:var(--paper)}
.rv-hero--legal .rv-hero-title{font-size:clamp(46px,6.6vw,120px)}
.rv-hero--legal .rv-hero-notes,.rv-hero--contact .rv-hero-notes{color:var(--ink);opacity:.7}

/* ---------- Interior: materials scene ---------- */
.rv-materials{padding:var(--sec) var(--gutter);background:var(--plaster)}
.rv-materials-stage{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(30px,6vw,100px);align-items:start}
.rv-materials-frame{position:sticky;top:110px;height:min(78vh,760px);border-radius:var(--r-xl);overflow:hidden;background:#d9d1c2;box-shadow:0 40px 90px -50px #2a1d1299}
.rv-materials-layer{position:absolute;inset:0}
.rv-materials-layer img{width:100%;height:100%;object-fit:cover}
.rv-materials-lines{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:#ffffff70;stroke-width:1;pointer-events:none;z-index:5}
.rv-materials-lines path{vector-effect:non-scaling-stroke;stroke-dasharray:1}
.rv-materials-swatch{position:absolute;z-index:6;left:22px;bottom:22px;display:flex;align-items:center;gap:12px;padding:8px 16px 8px 8px;border-radius:40px;background:#f2f1e9e6;font-size:11px;letter-spacing:.1em;text-transform:uppercase}
.rv-materials-swatch i{width:30px;height:30px;border-radius:50%;background:var(--swatch,#efe9dc);box-shadow:inset 0 0 0 1px #1d2b3222;transition:background-color .6s}
.rv-materials-swatch b{font-weight:400}
.rv-materials-steps{list-style:none;padding:0;display:grid;gap:0}
.rv-materials-step{padding:clamp(26px,4.5vh,56px) 0;border-top:1px solid var(--line);min-height:42vh;display:flex;flex-direction:column;justify-content:center}
.rv-materials-step:first-child{border-top:0}
.rv-materials-step h3{font-size:var(--h3);margin:10px 0 14px}
.rv-materials-step p{max-width:42ch;font-size:15px}
.rv-materials-label{font-size:11px;letter-spacing:.12em;text-transform:uppercase;display:flex;align-items:center;gap:10px;margin-top:10px}
.rv-materials-label:before{content:'';width:18px;height:18px;border-radius:50%;background:var(--swatch);box-shadow:inset 0 0 0 1px #1d2b3226}
.rv-materials-step--final{min-height:40vh}
.rv-materials-step--final h3{font-size:clamp(28px,3vw,46px)}
.rv-materials-step.is-active h3{color:var(--ink)}

/* ---------- Exterior: facade cross-section ---------- */
.rv-facade{padding:var(--sec) var(--gutter);position:relative}
.rv-facade:before{content:'';position:absolute;inset:0;background-image:linear-gradient(#f2f1e908 1px,transparent 1px),linear-gradient(90deg,#f2f1e908 1px,transparent 1px);background-size:48px 48px;pointer-events:none}
.rv-facade-head .rv-intro{color:#c8ceca}
.rv-facade-stage{position:relative;display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(30px,6vw,100px);align-items:start}
.rv-facade-drawing{position:sticky;top:110px;height:min(76vh,720px);border:1px solid #ffffff1c;border-radius:6px;background:#22343a;overflow:hidden;perspective:1400px}
.rv-facade-rig{position:absolute;left:12%;right:12%;top:16%;bottom:20%;display:flex;align-items:stretch;justify-content:center;gap:0;transform-style:preserve-3d;transform:rotateX(14deg) rotateY(-26deg)}
.rv-facade-layer{position:relative;flex:0 0 auto;border:1px solid #1d2b3240;box-shadow:inset 0 0 0 1px #ffffff12}
.rv-facade-layer--0{width:28%;background:repeating-linear-gradient(45deg,#b7b2a7 0 2px,#c9c4b9 2px 12px)}
.rv-facade-layer--1{width:20%;background:#dfcf8e repeating-linear-gradient(0deg,#cdbd7c 0 1px,transparent 1px 14px)}
.rv-facade-layer--2{width:5%;background:#d9d5ca repeating-linear-gradient(90deg,transparent 0 3px,#9da29a 3px 4px)}
.rv-facade-layer--3{width:4%;background:#f0ebe0}
.rv-facade-layer--4{width:9%;margin-left:3%;background:repeating-linear-gradient(0deg,#a5794f 0 22px,#7f5b39 22px 24px)}
.rv-facade-layer--5{width:6%;background:#8e9a93}
.rv-facade-tag{position:absolute;left:50%;top:-38px;transform:translateX(-50%) translateZ(40px);white-space:nowrap;font:500 9px/1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.12em;text-transform:uppercase;color:#d3dfb8}
.rv-facade-layer:nth-child(even) .rv-facade-tag{top:auto;bottom:-34px}
.rv-facade-dims{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:#d9ef8770;stroke-width:1}
.rv-facade-dims path{vector-effect:non-scaling-stroke;stroke-dasharray:1}
.rv-facade-scale{position:absolute;left:18px;bottom:16px;font:500 9px/1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.14em;text-transform:uppercase;color:#d3dfb899}
.rv-facade-final{position:absolute;inset:0;margin:0;opacity:0;visibility:hidden}
.rv-facade-final img{width:100%;height:100%;object-fit:cover}
.rv-facade-steps{list-style:none;padding:0}
.rv-facade-step{padding:clamp(26px,4.5vh,56px) 0;border-top:1px solid var(--line-light);min-height:40vh;display:flex;flex-direction:column;justify-content:center}
.rv-facade-step:first-child{border-top:0}
.rv-facade-step h3{font-size:var(--h3);margin:12px 0 8px}
.rv-facade-spec{font:500 11px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.08em;color:var(--lime);margin-bottom:12px}
.rv-facade-step p:not(.rv-facade-spec){font-size:15px;color:#c8ceca;max-width:44ch}
.rv-facade-step--final{min-height:34vh}

/* ---------- Service chapters ---------- */
.rv-chapters-body{display:grid;grid-template-columns:minmax(220px,300px) 1fr;gap:clamp(30px,6vw,110px);align-items:start}
.rv-chapters-index{position:sticky;top:120px}
.rv-chapters-index ol{list-style:none;padding:0;display:grid;gap:2px;position:relative}
.rv-chapters-index a{display:flex;gap:14px;align-items:baseline;padding:10px 0;font-size:15px;opacity:.5;transition:opacity .35s,transform .35s var(--ease)}
.rv-chapters-index a span{font-size:10px;letter-spacing:.1em}
.rv-chapters-index a.is-active,.rv-chapters-index a:hover{opacity:1;transform:translateX(6px)}
/* Architectural rail: a hairline the reading fills, with a marker on the active chapter. */
.rv-chapters-index{padding-left:20px}
.rv-chapters-progress{position:absolute;left:0;top:4px;bottom:4px;width:1px;background:var(--line);overflow:hidden}
.rv-chapters-progress i{display:block;width:100%;height:100%;background:var(--accent);transform:scaleY(0);transform-origin:top}
.rv-chapters-list{display:grid;gap:clamp(44px,6vw,92px)}
.rv-chapter{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(24px,4vw,64px);align-items:end;scroll-margin-top:120px}
.rv-chapter:nth-child(even){grid-template-columns:.85fr 1.15fr}
.rv-chapter:nth-child(even) .rv-chapter-media{order:2}
.rv-chapter-media{border-radius:var(--r-lg);overflow:hidden;aspect-ratio:4/4.6}
.rv-chapter-media img{width:100%;height:100%;object-fit:cover;transform:scale(1.04)}
.rv-chapter-copy h3{font-size:clamp(28px,3vw,46px);margin:12px 0 16px}
.rv-chapter-copy>p{font-size:15px;max-width:40ch}
.rv-chapter-copy .rv-text-link{margin-top:24px}
.rv-theme-exterior .rv-chapter-media{border-radius:4px}

/* ---------- Process ---------- */
.rv-process-list{list-style:none;padding:0;position:relative;display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:clamp(22px,3vw,44px);padding-top:44px}
.rv-process-line{position:absolute;left:0;right:0;top:0;height:1px;background:var(--line)}
.rv-dark .rv-process-line{background:var(--line-light)}
.rv-process-line i{position:absolute;inset:0;background:var(--accent);transform-origin:left;transform:scaleX(1)}
.rv-process-step{position:relative}
.rv-process-step:before{content:'';position:absolute;top:-49px;left:0;width:11px;height:11px;border-radius:50%;background:var(--paper);border:1px solid currentColor}
.rv-dark .rv-process-step:before{background:var(--ink)}
.rv-process-step h3{font-size:22px;margin:14px 0 10px}
.rv-process-step p{font-size:14px;opacity:.85}
.rv-process.rv-dark{padding:var(--sec) var(--gutter)}
.rv .e-con.rv-sec--process:has(.rv-process.rv-dark){--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px}

/* ---------- FAQ ---------- */
.rv-faq{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(30px,6vw,110px);align-items:start}
.rv-faq-head{position:sticky;top:120px}
.rv-faq-head .rv-title{font-size:clamp(34px,4vw,64px)}
.rv-faq-item{border-bottom:1px solid var(--line)}
.rv-faq-item:first-child{border-top:1px solid var(--line)}
.rv-faq-item summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:20px 0;font-size:clamp(17px,1.4vw,21px);letter-spacing:-.02em}
.rv-faq-item summary::-webkit-details-marker{display:none}
.rv-faq-item summary i{position:relative;flex-shrink:0;width:30px;height:30px;border-radius:50%;border:1px solid currentColor;transition:transform .45s var(--ease),background-color .3s}
.rv-faq-item summary i:before,.rv-faq-item summary i:after{content:'';position:absolute;left:50%;top:50%;width:11px;height:1px;background:currentColor;transform:translate(-50%,-50%)}
.rv-faq-item summary i:after{transform:translate(-50%,-50%) rotate(90deg)}
.rv-faq-item[open] summary i{transform:rotate(45deg);background:var(--lime)}
.rv-faq-answer{padding:0 0 26px;max-width:62ch;font-size:15px}
.rv-faq-answer p+p{margin-top:.8em}

/* ---------- Projects ---------- */
.rv-projects-filters{display:flex;flex-wrap:wrap;gap:8px;margin:-14px 0 36px}
.rv-projects-filters button{padding:10px 18px;border-radius:30px;border:1px solid var(--line);font-size:13px;transition:background-color .3s,border-color .3s}
.rv-projects-filters button[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.rv-projects-filters sup{font-size:9px;margin-left:3px}
/* Editorial rhythm: wide / narrow pairs with a controlled overlap of rows (no isolated images). */
.rv-projects-list{list-style:none;padding:0;display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(34px,4vw,60px) clamp(16px,2vw,30px)}
.rv-project{grid-column:span 6}
.rv-project:nth-child(4n+2){grid-column:1/span 7}
.rv-project:nth-child(4n+3){grid-column:8/span 5;margin-top:clamp(40px,6vw,96px)}
.rv-project:nth-child(4n+4){grid-column:2/span 5;margin-top:calc(clamp(24px,4vw,64px) * -1)}
.rv-project:nth-child(4n+5){grid-column:7/span 6;margin-top:clamp(16px,2.5vw,40px)}
.rv-project--feature{grid-column:1/-1!important;margin-top:0!important}
.rv-project[hidden]{display:none}
.rv-project-open{display:block;width:100%;text-align:left}
.rv-project-media{display:block;position:relative;overflow:hidden;border-radius:var(--r-md);aspect-ratio:4/5;background:#ddd}
.rv-project--feature .rv-project-media{aspect-ratio:16/8.4}
.rv-project:nth-child(4n+2) .rv-project-media{aspect-ratio:4/3.3}
.rv-project:nth-child(4n+4) .rv-project-media{aspect-ratio:1/1}
.rv-project-img{width:100%;height:100%;object-fit:cover;transform:scale(1.06);transition:filter .6s}
.rv-project-open:hover .rv-project-img{filter:brightness(.92)}
.rv-project-meta{display:grid;grid-template-columns:auto 1fr auto;column-gap:16px;row-gap:4px;align-items:baseline;margin-top:18px}
.rv-project-index{font-size:10px;letter-spacing:.12em;color:var(--sage);grid-row:1/3}
.rv-project-title{font-weight:400;font-size:clamp(20px,1.8vw,28px);letter-spacing:-.035em}
.rv-project-type{grid-column:2;font-size:12px;opacity:.7}
.rv-project-kind{grid-column:3;grid-row:1;font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding:5px 10px;border-radius:20px}
.rv-project-kind--realisation{background:var(--lime)}
.rv-project-kind--inspiration{border:1px solid var(--line)}
.rv-project-dialog{border:0;padding:0;width:min(1000px,92vw);max-height:88svh;border-radius:16px;background:var(--paper);color:var(--ink);overflow:auto}
.rv-project-dialog[open]{display:grid;grid-template-columns:1.1fr .9fr}
.rv-project-dialog::backdrop{background:#14232dd9}
.rv .rv-dialog-media img{width:100%;height:100%;min-height:440px;object-fit:cover}
.rv-dialog-body{padding:60px 40px 40px;align-self:center}
.rv-dialog-body h2{font-size:clamp(32px,3.4vw,52px);margin:18px 0}
.rv-dialog-body>p:not(.rv-eyebrow){font-size:15px;margin-bottom:24px}
.rv-dialog-close{position:absolute;top:12px;right:12px;width:42px!important;height:42px;border-radius:50%!important;background:var(--paper)!important;font-size:28px!important;line-height:1;z-index:2;transition:transform .4s var(--ease)}
.rv-dialog-close:hover{transform:rotate(90deg)}

/* ---------- Contact ---------- */
.rv-contact{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(20px,3vw,44px);padding:clamp(14px,1.6vw,24px);margin:0 var(--gutter) var(--sec);background:var(--lime);border-radius:var(--r-xl);scroll-margin-top:100px}
.rv-contact-visual{position:relative;border-radius:var(--r-lg);overflow:hidden;min-height:520px}
.rv-contact-visual figure{position:absolute;inset:0;opacity:0;transition:opacity .7s var(--ease)}
.rv-contact-visual figure.is-active{opacity:1}
.rv-contact-visual img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.rv-contact-visual figcaption{position:absolute;left:18px;right:18px;bottom:18px;padding:14px 16px;border-radius:12px;background:#f2f1e9eb;font-size:13px}
.rv-contact-panel{background:var(--paper);border-radius:var(--r-lg);padding:clamp(26px,4vw,56px)}
.rv-contact-head{margin-bottom:34px}
.rv-contact-head .rv-title{font-size:clamp(32px,3.4vw,54px)}
.rv-scope{border:0;padding:0;margin:0 0 26px;display:flex;flex-wrap:wrap;gap:10px}
.rv-scope legend{font-size:11px;letter-spacing:.12em;text-transform:uppercase;margin-bottom:12px;padding:0}
.rv-scope-option{position:relative;cursor:pointer}
.rv-scope-option input{position:absolute;opacity:0;inset:0;cursor:pointer}
.rv-scope-option span{display:block;padding:14px 22px;border-radius:40px;border:1px solid var(--ink);font-size:clamp(15px,1.3vw,19px);letter-spacing:-.02em;transition:background-color .3s,color .3s,transform .3s var(--ease)}
.rv-scope-option input:checked+span{background:var(--ink);color:var(--paper)}
.rv-scope-option input:focus-visible+span{outline:3px solid #6c941c;outline-offset:3px}
.rv-scope-option:hover span{transform:translateY(-2px)}
.rv-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 26px}
.rv-field{position:relative;margin-bottom:14px}
.rv-field label{display:block;font-size:12px;letter-spacing:.04em;margin-bottom:6px}
.rv-field input,.rv-field select,.rv-field textarea{width:100%;font:inherit;font-size:16px;color:var(--ink);background:transparent;border:0;border-bottom:1px solid #1d2b3259;border-radius:0;padding:10px 0;box-shadow:none;transition:border-color .3s;appearance:none}
.rv-field select{background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 12px) 50%,calc(100% - 7px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:24px}
.rv-field textarea{resize:vertical;min-height:130px;border:1px solid #1d2b3259;border-radius:10px;padding:12px 14px}
.rv-field input:focus,.rv-field select:focus,.rv-field textarea:focus{outline:none;border-color:var(--ink);box-shadow:0 1px 0 0 var(--ink)}
.rv-field textarea:focus{box-shadow:0 0 0 1px var(--ink)}
.rv-field.has-error input,.rv-field.has-error select,.rv-field.has-error textarea{border-color:#b3261e}
.rv-field-hint{font-size:12px;opacity:.65;margin-top:6px}
.rv-field-error{font-size:12px;color:#b3261e;margin-top:6px;min-height:0}
.rv-field--check label{display:block;position:relative;padding-left:32px;font-size:13px;letter-spacing:0;line-height:1.5}
.rv-field--check input{position:absolute;left:0;top:0;width:20px;height:20px;margin:0;appearance:auto;accent-color:var(--ink)}
.rv-field--check a{text-decoration:underline}
.rv-hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
.rv-form-actions{display:flex;align-items:center;gap:22px;margin-top:22px;flex-wrap:wrap}
.rv-form-note{font-size:12px;opacity:.6}
.rv-form-status{padding:14px 18px;border-radius:12px;margin-bottom:22px;font-size:14px}
.rv-form-status.is-ok,.rv-form-live.is-ok{background:#e6f3c8;color:#2f4a12}
.rv-form-status.is-error,.rv-form-live.is-error{background:#fbe3e1;color:#7c1d16}
.rv-form-live:not(:empty){margin-top:18px;padding:14px 18px;border-radius:12px;font-size:14px}

/* ---------- CTA, links, gallery ---------- */
.rv-cta{margin:0 var(--gutter) clamp(36px,4vw,64px);padding:clamp(40px,6vw,90px) clamp(28px,5vw,80px);border-radius:var(--r-xl);background:var(--lime);color:var(--ink)}
.rv-cta--ink{background:var(--ink);color:var(--paper)}.rv-cta--paper{background:var(--paper-2)}
.rv-cta-main{display:flex;align-items:center;justify-content:space-between;gap:40px;margin:40px 0 34px}
.rv-cta-title{font-size:clamp(46px,7vw,124px)}
.rv-cta-orb{flex-shrink:0;width:clamp(76px,10vw,150px);aspect-ratio:1;border-radius:50%;background:var(--ink);color:var(--lime)!important;display:grid;place-items:center;transition:background-color .4s}
.rv-cta--ink .rv-cta-orb{background:var(--lime);color:var(--ink)!important}
.rv-cta-orb span{font-size:clamp(38px,5vw,80px);line-height:1;transition:transform .5s var(--ease)}
.rv-cta-orb:hover span{transform:rotate(45deg)}
.rv-cta-bottom{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;flex-wrap:wrap}
.rv-cta-bottom p{max-width:420px;font-size:15px}
.rv-links-list{list-style:none;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,2vw,28px)}
.rv-link-card{position:relative;display:flex;flex-direction:column;height:100%;border-radius:var(--r-lg);overflow:hidden;background:#fff6;border:1px solid var(--line);transition:transform .5s var(--ease),box-shadow .5s}
.rv-link-card:hover{transform:translateY(-6px);box-shadow:0 30px 60px -30px #1d2b3255}
.rv-link-media{display:block;aspect-ratio:16/10;overflow:hidden}
.rv-link-img{width:100%;height:100%;object-fit:cover;transition:transform 1s var(--ease)}
.rv-link-card:hover .rv-link-img{transform:scale(1.05)}
.rv-link-copy{display:grid;gap:6px;padding:20px 64px 24px 22px}
.rv-link-copy strong{font-weight:500;font-size:21px;letter-spacing:-.03em}
.rv-link-copy span{font-size:14px;opacity:.75}
.rv-link-card>i{position:absolute;right:20px;bottom:22px;font-style:normal;font-size:22px;transition:transform .45s var(--ease)}
.rv-link-card:hover>i{transform:rotate(45deg)}
.rv-dark .rv-link-card,.rv-theme-service-ext .rv-link-card{background:#ffffff08;border-color:#ffffff1f}
.rv-gallery-grid{display:grid;grid-template-columns:1.2fr .8fr 1fr;gap:clamp(14px,2vw,28px);align-items:start}
.rv-gallery-item{margin:0}
.rv-gallery-item--1{margin-top:clamp(24px,4vw,64px)}
.rv-gallery-item--2{margin-top:clamp(10px,2vw,30px)}
.rv-gallery-media{display:block;overflow:hidden;border-radius:var(--r-md);aspect-ratio:4/5}
.rv-gallery-item--0 .rv-gallery-media{aspect-ratio:4/5.4}
.rv-gallery-item--2 .rv-gallery-media{aspect-ratio:1}
.rv-gallery-img{width:100%;height:100%;object-fit:cover;transform:scale(1.06)}
.rv-gallery-item figcaption{font-size:12px;margin-top:12px;opacity:.75}
.rv-gallery-note{margin-top:18px;font-size:11px;letter-spacing:.1em;text-transform:uppercase;opacity:.6}

/* ---------- TOC ---------- */
.rv-toc{font-size:13px}
.rv-toc-title{font-size:11px;letter-spacing:.12em;text-transform:uppercase;margin-bottom:16px}
.rv-toc-list{list-style:none;padding:0;display:grid;gap:2px;border-left:1px solid var(--line)}
.rv-toc-list a{display:block;padding:7px 0 7px 16px;margin-left:-1px;border-left:1px solid transparent;opacity:.6;transition:opacity .3s,border-color .3s}
.rv-toc-list a:hover,.rv-toc-list a.is-active{opacity:1;border-left-color:var(--ink)}
.rv-toc-progress{display:block;height:2px;background:var(--line);margin-top:18px;overflow:hidden}.rv-toc-progress i{display:block;height:100%;background:var(--sage);transform:scaleX(0);transform-origin:left}

/* ---------- 404 ---------- */
.rv-404{position:relative;min-height:100svh;display:flex;align-items:center;padding:150px var(--gutter) 80px;overflow:hidden;isolation:isolate}
.rv-404-grid{position:absolute;inset:-60px;z-index:-2;background-image:linear-gradient(#d9ef8712 1px,transparent 1px),linear-gradient(90deg,#d9ef8712 1px,transparent 1px);background-size:40px 40px}
.rv-404-plan{position:absolute;inset:0;width:100%;height:100%;z-index:-1;fill:none;stroke:#d9ef8766;stroke-width:1.5}
.rv-404-plan path{vector-effect:non-scaling-stroke;stroke-dasharray:1}
.rv-404-plan .rv-404-dash{stroke-dasharray:6 8;stroke:#d9ef8740}
.rv-404-plan circle{fill:var(--lime);stroke:none}
.rv-404-content{max-width:900px}
.rv-404-number{display:flex;font-size:clamp(130px,26vw,420px);line-height:.8;letter-spacing:-.08em;font-weight:600;color:var(--lime);margin:26px 0 18px}
.rv-404-number span{display:inline-block}
.rv-404-title{font-size:clamp(30px,3.6vw,58px)}
.rv-404-lead{margin:18px 0 26px;color:#c8ceca}
.rv-404-links{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.rv-404-links a{display:inline-flex;align-items:center;gap:18px;padding:12px 18px;border:1px solid #ffffff33;border-radius:30px;font-size:14px;transition:background-color .3s,color .3s}
.rv-404-links a:hover{background:var(--lime);color:var(--ink)}
.rv-404-coords{position:absolute;right:var(--gutter);bottom:28px;font:500 10px/1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.14em;text-transform:uppercase;color:#d3dfb899}

/* ---------- Footer ---------- */
.rv-footer{position:relative;overflow:hidden;background:var(--paper-2);color:var(--ink)}
.rv-footer-inner{padding:clamp(48px,5vw,80px) var(--gutter) 26px}
.rv-footer-grid{display:grid;grid-template-columns:1.2fr repeat(4,1fr);gap:40px}
.rv-footer-mark{display:inline-block;font-size:34px;font-weight:700;line-height:.82;letter-spacing:-.07em}
.rv-footer-mark span,.rv-footer-word span{color:var(--brand-dot)}
.rv-footer-brand p{font-size:13px;margin-top:20px;opacity:.8}
.rv-footer-title{font-size:11px;letter-spacing:.12em;text-transform:uppercase;margin-bottom:14px;opacity:.6}
.rv-footer-col ul{list-style:none;padding:0;display:grid;gap:8px;font-size:13px}
.rv-footer-col a:hover{text-decoration:underline}
.rv-footer-word{font-size:clamp(110px,27vw,480px);line-height:.85;letter-spacing:-.085em;font-weight:600;margin:60px 0 24px;white-space:nowrap;border-bottom:1px solid var(--line);padding-bottom:30px}
.rv-footer-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px;font-size:11px}
.rv-footer-bottom ul{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:6px 18px}
.rv-footer-bottom a:hover{text-decoration:underline}

/* ---------- Pointer follower (media only, fine pointers) ---------- */
.rv-cursor{position:fixed;left:0;top:0;z-index:70;width:88px;height:88px;margin:-44px 0 0 -44px;display:grid;place-items:center;pointer-events:none;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);opacity:0;visibility:hidden}
.rv-cursor i{position:absolute;inset:0;border-radius:50%;background:var(--lime);box-shadow:0 12px 34px #1d2b3233}
.rv-cursor span{position:relative}.rv-cursor span:after{content:' ↗'}
.rv-has-cursor [data-cursor]:not([data-cursor=""]){cursor:none}

/* ---------- Responsive ---------- */
@media(max-width:1100px){
  .rv-nav,.rv-header-cta{display:none}.rv-burger{display:flex;margin-left:auto}
  .rv-footer-grid{grid-template-columns:1fr 1fr 1fr}.rv-footer-brand{grid-column:1/-1}
}
@media(max-width:1024px){
  .rv-hero--exterieur .rv-hero-media{left:var(--gutter);top:auto;height:44%;bottom:40px}
  .rv-hero--exterieur{align-items:flex-start;padding-top:150px}
  .rv-hero--exterieur .rv-hero-copy{max-width:100%}
  .rv-hero--exterieur .rv-hero-notes{display:none}
  .rv-hero--service-int .rv-hero-copy,.rv-hero--service-ext .rv-hero-copy{max-width:52%}
  .rv-chapters-body{grid-template-columns:1fr}.rv-chapters-index{position:relative;top:auto}.rv-chapters-index ol{display:flex;flex-wrap:wrap;gap:4px 18px}.rv-chapters-progress{display:none}
  .rv-faq{grid-template-columns:1fr}.rv-faq-head{position:relative;top:auto}
  .rv-contact{grid-template-columns:1fr}.rv-contact-visual{min-height:300px}
}
@media(max-width:760px){
  .rv-header{top:14px}.admin-bar .rv-header{top:60px}
  .rv-header-bar{height:62px;padding:8px 10px 8px 20px}
  .rv-logo{width:90px}
  .rv-breadcrumbs{top:96px}
  .rv-hero{padding-top:150px;min-height:92svh}
  .rv-hero-notes{display:none}
  .rv-hero--service-int,.rv-hero--service-ext{flex-direction:column;align-items:stretch;justify-content:flex-end;padding-top:130px;min-height:auto}
  .rv-hero--service-int .rv-hero-media,.rv-hero--service-ext .rv-hero-media{position:relative;inset:auto;left:auto;right:auto;top:auto;bottom:auto;order:2;height:62vw;margin-top:34px;z-index:0}
  .rv-hero--service-int .rv-hero-copy,.rv-hero--service-ext .rv-hero-copy{max-width:100%}
  .rv-hero--exterieur .rv-hero-media{position:relative;left:auto;right:auto;top:auto;bottom:auto;height:62vw;margin-top:34px;z-index:0;order:2}
  .rv-hero--exterieur{flex-direction:column;align-items:stretch;min-height:auto}
  .rv-hero--no-media{padding-top:150px}
  .rv-split-sec{grid-template-columns:1fr}
  .rv .rv-media--frame .elementor-widget-container,.rv .rv-media--frame img{min-height:300px}
  .rv-article{grid-template-columns:1fr}.rv-article .rv-col--toc{position:relative;top:auto}
  .rv-materials-stage,.rv-facade-stage{grid-template-columns:1fr}
  .rv-materials-frame,.rv-facade-drawing{top:84px;height:46vh;z-index:2}
  .rv-materials-step,.rv-facade-step{min-height:auto;padding:36px 0}
  .rv-facade-tag{opacity:0;transition:opacity .3s}.rv-facade-layer.is-active .rv-facade-tag,.rv-facade-layer:only-child .rv-facade-tag{opacity:1}
  .rv-chapter,.rv-chapter:nth-child(even){grid-template-columns:1fr}
  .rv-chapter:nth-child(even) .rv-chapter-media{order:0}
  .rv-chapter-media{aspect-ratio:4/3}
  .rv-process-list{grid-template-columns:1fr;padding-top:0;padding-left:30px;gap:30px}
  .rv-process-line{left:5px;right:auto;top:0;bottom:0;width:1px;height:auto}
  .rv-process-line i{transform-origin:top}
  .rv-process-step:before{top:4px;left:-30px}
  .rv-projects-head{grid-template-columns:1fr}
  .rv-projects-filters{margin-top:-14px}
  .rv-projects-list{grid-template-columns:1fr;gap:44px}
  .rv-project,.rv-project:nth-child(n){grid-column:1/-1!important;margin-top:0!important}
  .rv-project-media,.rv-project:nth-child(n) .rv-project-media{aspect-ratio:4/4.4}
  .rv-project--feature .rv-project-media{aspect-ratio:4/4.6}
  .rv-project-dialog[open]{display:block}.rv .rv-dialog-media img{min-height:0;height:280px}.rv-dialog-body{padding:28px}
  .rv-form-grid{grid-template-columns:1fr}
  .rv-contact{margin:0 12px 60px;padding:12px}
  .rv-cta{margin:0 12px 60px;padding:40px 24px}
  .rv-cta-main{align-items:flex-end}
  .rv-links-list{grid-template-columns:1fr}
  .rv-gallery-grid{grid-template-columns:1fr 1fr}.rv-gallery-item--0{grid-column:1/-1}.rv-gallery-item--1,.rv-gallery-item--2{margin-top:0}
  .rv-footer-grid{grid-template-columns:1fr 1fr;gap:30px 20px}
  .rv-footer-word{font-size:26vw;margin:44px 0 18px}
}
@media(prefers-reduced-motion:reduce){
  .rv *,.rv *:before,.rv *:after{transition:none!important;animation:none!important;scroll-behavior:auto!important}
  .rv-cursor{display:none}
}
/* Elementor editor: static, everything visible */
.elementor-editor-active .rv-materials-frame,.elementor-editor-active .rv-facade-drawing,.elementor-editor-active .rv-chapters-index,.elementor-editor-active .rv-faq-head,.elementor-editor-active .rv-article .rv-col--toc{position:relative;top:auto}
.elementor-editor-active .rv-header{position:absolute}

/* =====================================================================
   v2.1 — density, depth and interaction pass (inner pages only)
   ===================================================================== */

/* ---------- Continuous sections: the first section after a hero rises over it like a sheet ---------- */
.rv .e-con.rv-sec--intro,.rv .e-con.rv-sec--article{--margin-top:-28px;position:relative;z-index:2;border-radius:28px 28px 0 0}
.rv .e-con.rv-sec--article{background:var(--paper)}
.rv-theme-exterior .rv .e-con.rv-sec--intro,.rv-theme-service-ext .rv .e-con.rv-sec--article{border-radius:10px 10px 0 0}
.rv-hero{z-index:1}

/* ---------- Header: forgiving dropdowns (bridge across the gap, short close delay) ---------- */
.rv-sub:before{content:'';position:absolute;left:0;right:0;top:-18px;height:18px}
.rv-sub{transition:opacity .3s var(--ease) .12s,transform .3s var(--ease) .12s,visibility 0s .42s}

/* ---------- Hero: technical dimension lines (exterior) ---------- */
.rv-hero-dims{position:absolute;z-index:0;overflow:visible;pointer-events:none;fill:none}
.rv-hero-dims path{stroke:#d9ef87b3;stroke-width:1;vector-effect:non-scaling-stroke;stroke-dasharray:1}
.rv-hero-dims .rv-hero-dims-grid{stroke:#f2f1e924}
.rv-hero--exterieur .rv-hero-dims{left:44%;top:120px;bottom:60px;right:var(--gutter);width:auto;height:auto}
.rv-hero--service-ext .rv-hero-dims{left:50%;top:110px;bottom:40px;right:var(--gutter);width:auto;height:auto}
.rv-hero-media{will-change:transform}

/* ---------- Materials (intérieur): bigger frame, focused steps, depth ---------- */
.rv-materials-stage{grid-template-columns:1.22fr .78fr}
.rv-materials-frame{height:min(80vh,800px);perspective:1200px}
.rv-materials-layer{transform-origin:50% 100%}
.rv-materials-count{position:absolute;z-index:6;right:20px;top:18px;padding:7px 12px;border-radius:30px;background:#1d2b32b3;color:#f2f1e9;font-size:11px;letter-spacing:.14em}
.rv-materials-step h3{font-size:clamp(26px,2.3vw,40px)}
.rv-materials-step p{font-size:16px}
.rv-materials.is-live .rv-materials-step{opacity:.34;transition:opacity .5s var(--ease)}
.rv-materials.is-live .rv-materials-step.is-active{opacity:1}

/* ---------- Façade (extérieur): larger drawing, exploded layers ---------- */
.rv-facade-stage{grid-template-columns:1.3fr .7fr}
.rv-facade-drawing{height:min(78vh,760px);perspective-origin:var(--px,50%) var(--py,40%)}
.rv-facade-layer{transition:box-shadow .5s var(--ease)}
.rv-facade-layer.is-active{box-shadow:0 0 0 1px var(--lime),0 40px 60px -30px #000c}
.rv-facade-layer.is-active .rv-facade-tag{color:var(--lime)}
.rv-facade.is-live .rv-facade-step{opacity:.34;transition:opacity .5s var(--ease)}
.rv-facade.is-live .rv-facade-step.is-active{opacity:1}

/* ---------- Chapters: staged layout (desktop, added by site.js) ---------- */
.rv-ci-marker{position:absolute;left:-21px;top:0;width:3px;height:20px;border-radius:2px;background:var(--accent);opacity:0;transition:transform .6s var(--ease),opacity .3s}
.rv-chapters-num{position:absolute;z-index:4;left:20px;bottom:18px;display:flex;align-items:center;gap:12px;padding:8px 14px 8px 8px;border-radius:30px;background:#f2f1e9e8;color:var(--ink);font-size:13px}
.rv-chapters-num b{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--ink);color:var(--paper);font-weight:400;font-size:10px;letter-spacing:.06em}
@media(min-width:1025px){
  .rv-chapters.is-staged .rv-chapters-body{grid-template-columns:210px minmax(0,1fr);gap:clamp(28px,3vw,56px)}
  .rv-chapters.is-staged .rv-chapters-list{grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr);column-gap:clamp(32px,4vw,72px);row-gap:0}
  .rv-chapters-stage{grid-column:1;position:sticky;top:104px;align-self:start;height:min(calc(100vh - 136px),760px);border-radius:var(--r-xl);overflow:hidden;background:#d9d1c2;perspective:1200px}
  .rv-theme-exterior .rv-chapters-stage{border-radius:6px;background:#22343a}
  .rv-chapters-stage .rv-chapter-media{position:absolute;inset:0;aspect-ratio:auto;border-radius:0;clip-path:inset(100% 0 0 0)}
  .rv-chapters-stage .rv-chapter-media.is-active{clip-path:inset(0 0 0 0)}
  .rv-chapters.is-staged .rv-chapter{grid-column:2;display:flex;align-items:center;min-height:min(70vh,620px)}
  .rv-chapters.is-staged .rv-chapter-copy{transition:opacity .5s var(--ease),transform .6s var(--ease)}
  .rv-chapters.is-staged .rv-chapter:not(.is-active) .rv-chapter-copy{opacity:.28;transform:translateX(10px)}
  .rv-chapters.is-staged .rv-chapter-copy h3{font-size:clamp(30px,2.8vw,48px)}
}

/* ---------- Process: steps light up as the line reaches them ---------- */
.rv-process-step{transition:opacity .5s var(--ease),transform .6s var(--ease)}
.rv-process.is-live .rv-process-step:not(.is-reached){opacity:.4}
.rv-process.is-live .rv-process-step.is-current{transform:translateY(-6px)}
.rv-process-step.is-reached:before{background:var(--accent);border-color:var(--accent);transition:background-color .4s}
.rv-process-list{padding-top:38px}
.rv-process--vertical .rv-process-list{grid-template-columns:1fr;padding:0 0 0 34px;gap:20px}
.rv-process--vertical .rv-process-line{left:5px;right:auto;top:8px;bottom:8px;width:1px;height:auto}
.rv-process--vertical .rv-process-line i{transform-origin:top}
.rv-process--vertical .rv-process-step:before{top:4px;left:-34px}
.rv-process--vertical .rv-process-step h3{margin:6px 0 6px;font-size:21px}
.rv-process--vertical .rv-block-head{margin-bottom:22px}
.rv .e-con.rv-sec--next{--padding-top:clamp(36px,4vw,64px);align-items:start}
.rv-sec--next .rv-title,.rv-sec--next .rv-title .elementor-heading-title{font-size:clamp(34px,3.6vw,58px)}

/* ---------- Article: counters, tighter body; third column for the specimen ---------- */
.rv-article-body,.rv-legal{counter-reset:rvh}
.rv-article-body h2,.rv-legal h2{counter-increment:rvh}
.rv-article-body h2:before,.rv-legal h2:before{content:counter(rvh,decimal-leading-zero);display:block;margin-bottom:12px;font-size:11px;letter-spacing:.14em;color:var(--sage)}
.rv-article-body h2{font-size:clamp(26px,2.4vw,40px)}
.rv .rv-article.rv-article--aside{grid-template-columns:minmax(170px,210px) minmax(0,1fr) minmax(300px,.82fr);gap:clamp(28px,3.6vw,64px)}
.rv-article--aside .rv-col--aside{position:sticky;top:104px;align-self:start}
.rv-article .rv-col--toc{top:104px}

/* ---------- TOC: sliding marker ---------- */
.rv-toc-list{position:relative}
.rv-toc-marker{position:absolute;left:-1px;top:0;width:2px;height:20px;background:var(--ink);transition:transform .55s var(--ease),height .55s var(--ease);opacity:0}
.rv-toc.has-marker .rv-toc-marker{opacity:1}
.rv-toc.has-marker .rv-toc-list a.is-active{border-left-color:transparent}
.rv-toc-list a{transition:opacity .3s,border-color .3s,transform .4s var(--ease)}
.rv-toc-list a:hover{transform:translateX(3px)}

/* ---------- Specimen (one signature scene per service) ---------- */
.rv-spec{margin:0;display:grid;gap:14px}
.rv-spec-stage{position:relative;aspect-ratio:4/4.6;border-radius:var(--r-lg);overflow:hidden;background:#d6cfc2;perspective:1100px;isolation:isolate}
.rv-theme-service-ext .rv-spec-stage{border-radius:6px;background:#22343a}
.rv-spec-rig{position:absolute;inset:0;transform-style:preserve-3d}
.rv-spec-base{position:absolute;inset:0;background:var(--spec-img2) center/cover}
.rv-spec-el{position:absolute;display:block}
.rv-spec-caption{display:grid;gap:10px}
.rv-spec-title{font-weight:500;font-size:19px;letter-spacing:-.025em}
.rv-spec-steps{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:6px}
.rv-spec-step{font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding:6px 11px;border:1px solid var(--line);border-radius:20px;opacity:.6;transition:opacity .35s,background-color .35s,color .35s,border-color .35s}
.rv-spec-step span{margin-right:7px;opacity:.6}
.rv-spec-step.is-active{opacity:1;background:var(--ink);color:var(--paper);border-color:var(--ink)}
.rv-spec-note{font-size:10px;letter-spacing:.14em;text-transform:uppercase;opacity:.5}
.rv-spec-guides{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:#607346;stroke-width:1;stroke-dasharray:1;pointer-events:none;z-index:5}
.rv-spec-guides path{vector-effect:non-scaling-stroke}
/* paint — vertical roller passes: primer (--p) then finish (--f); 1 = finished (static) */
.rv-spec-k--paint .rv-spec-el{top:0;bottom:0;left:calc(var(--i) * 16.6667%);width:16.75%;background:linear-gradient(var(--spec-primer,#ebe5d9),var(--spec-primer,#ebe5d9)) top/100% calc(var(--p,1) * 100%) no-repeat}
.rv-spec-k--paint .rv-spec-el:after{content:'';position:absolute;inset:0;background:var(--spec-img) calc(var(--i) * 20%) 50%/600% 100%;clip-path:inset(0 0 calc((1 - var(--f,1)) * 100%) 0)}
.rv-spec--peinture-ext{--spec-primer:#dcdcd6}
.rv-spec-tool{position:absolute;z-index:4;top:0;left:0;width:16.6667%;height:26px;border-radius:8px;background:#f4efe6;box-shadow:0 10px 18px -8px #0007,inset 0 -6px 0 #0000001a;opacity:0}
.rv-spec-tool:after{content:'';position:absolute;left:50%;top:100%;width:3px;height:44px;margin-left:-1.5px;background:#1d2b32;border-radius:2px}
/* wall — plasterboard partition assembling in depth */
.rv-spec-k--wall .rv-spec-base{background:#cfc7b8}
.rv-spec-k--wall .rv-spec-rig{transform:rotateY(-16deg) rotateX(6deg) scale(.88)}
.rv-spec-k--wall .rv-spec-el{top:12%;bottom:12%;background:#b8bcb7;box-shadow:inset 0 0 0 1px #0000001f}
.rv-spec-k--wall .rv-spec-el:nth-child(-n+3){left:10%;right:10%;height:3%;bottom:auto}
.rv-spec-k--wall .rv-spec-el:nth-child(3){top:auto;bottom:12%}
.rv-spec-k--wall .rv-spec-el:nth-child(n+4):nth-child(-n+8){width:2.6%;left:calc(10% + (var(--i) - 2) * 19.35%)}
.rv-spec-k--wall .rv-spec-el:nth-child(9),.rv-spec-k--wall .rv-spec-el:nth-child(10){left:10%;width:39.3%;background:#ece8df var(--spec-img2) center/cover;background-blend-mode:multiply;opacity:.98}
.rv-spec-k--wall .rv-spec-el:nth-child(10){left:49.3%;width:40.7%}
.rv-spec-k--wall .rv-spec-el:nth-child(11){left:47.6%;width:3.4%;background:#f6f2ea}
.rv-spec-k--wall .rv-spec-el:nth-child(12){left:10%;top:47%;bottom:auto;height:3%;width:80%;background:#f6f2ea}
.rv-spec-k--wall .rv-spec-el:nth-child(13){left:10%;right:10%;background:var(--spec-img) center/cover;box-shadow:0 30px 40px -24px #0006}
/* boards — floor plane in perspective, staggered courses */
.rv-spec-k--boards .rv-spec-base{background:#b7b0a4 repeating-linear-gradient(45deg,#0000 0 10px,#00000010 10px 11px)}
.rv-spec-k--boards .rv-spec-rig{transform:rotateX(38deg) scale(1.18) translateY(4%);transform-origin:50% 60%}
.rv-spec-k--boards .rv-spec-el{height:12.2%;top:calc(6% + var(--r) * 12.5%);background:var(--spec-img) calc(var(--i) * 13%) calc(var(--r) * 17%)/320% 420%;box-shadow:inset 0 0 0 1px #00000026}
.rv-spec-k--boards .rv-spec-el{left:calc(4% + var(--c) * var(--w0) * 1%);width:calc((1 - var(--c)) * var(--w0) * 1% + var(--c) * (92% - var(--w0) * 1%))}
/* tiles — calepinage, then tiles, then grout */
.rv-spec-k--tiles .rv-spec-base{background:var(--spec-grout,#cfc8bc)}
.rv-spec-k--tiles .rv-spec-el{left:calc(4% + var(--c) * 18.6%);top:calc(3.5% + var(--r) * 15.6%);width:17.8%;height:14.8%;background:var(--spec-img) calc(var(--c) * 25%) calc(var(--r) * 20%)/540% 650%;border-radius:2px}
/* room — trades resolving into one finished interior */
.rv-spec-k--room .rv-spec-el{inset:0}
.rv-spec-k--room .rv-spec-el:nth-child(2){background:var(--spec-img2) center/cover}
.rv-spec-k--room .rv-spec-el:nth-child(3){background:#ece6da}
.rv-spec-k--room .rv-spec-el:nth-child(4){top:64%;background:var(--spec-img) 50% 100%/cover}
.rv-spec-k--room .rv-spec-el:nth-child(5){background:var(--spec-img) center/cover}
/* layers — ITE section exploded then compressed */
.rv-spec-k--layers .rv-spec-base{background:#22343a}
.rv-spec-k--layers .rv-spec-rig{transform:rotateY(-26deg) rotateX(8deg) scale(.86)}
.rv-spec-k--layers .rv-spec-el{top:12%;bottom:12%;box-shadow:inset 0 0 0 1px #ffffff1c}
.rv-spec-k--layers .rv-spec-el:nth-child(2){left:8%;width:34%;background:repeating-linear-gradient(45deg,#b7b2a7 0 2px,#c9c4b9 2px 12px)}
.rv-spec-k--layers .rv-spec-el:nth-child(3){left:42%;width:30%;background:#dfcf8e repeating-linear-gradient(0deg,#cdbd7c 0 1px,transparent 1px 14px)}
.rv-spec-k--layers .rv-spec-el:nth-child(4){left:72%;width:7%;background:#d9d5ca repeating-linear-gradient(90deg,transparent 0 3px,#9da29a 3px 4px)}
.rv-spec-k--layers .rv-spec-el:nth-child(5){left:79%;width:9%;background:#efeae0 repeating-linear-gradient(0deg,#0000 0 3px,#00000008 3px 4px)}
/* surface — façade: cracks found, patched, rendered */
.rv-spec-cracks{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:#d9ef87;stroke-width:1.5;stroke-dasharray:1;z-index:3}
.rv-spec-cracks path{vector-effect:non-scaling-stroke}
.rv-spec-k--surface .rv-spec-el{border-radius:40%;background:#e7e1d4;box-shadow:0 0 0 1px #0000001a;width:30%;height:22%}
.rv-spec-k--surface .rv-spec-el:nth-child(3){left:6%;top:6%}
.rv-spec-k--surface .rv-spec-el:nth-child(4){left:56%;top:22%}
.rv-spec-k--surface .rv-spec-el:nth-child(5){inset:0;width:auto;height:auto;border-radius:0;background:var(--spec-img) center/cover;z-index:4}
/* cladding — boards on battens */
.rv-spec-k--cladding .rv-spec-base{background:#2c3a3f repeating-linear-gradient(0deg,transparent 0 22%,#56636466 22% 24%)}
.rv-spec-k--cladding .rv-spec-rig{transform:rotateY(-14deg) scale(.94)}
.rv-spec-k--cladding .rv-spec-el{top:5%;bottom:5%;left:calc(5% + var(--c) * 8.2%);width:7.5%;background:var(--spec-img) calc(var(--c) * 10%) 50%/1300% 100%;box-shadow:6px 0 10px -6px #0008}
/* slabs — scattered slabs aligning on a laying bed */
.rv-spec-k--slabs .rv-spec-base{background:#c4b597 repeating-linear-gradient(90deg,#0000 0 6px,#00000008 6px 7px)}
.rv-spec-k--slabs .rv-spec-rig{transform:rotateX(42deg) scale(1.08);transform-origin:50% 60%}
.rv-spec-k--slabs .rv-spec-el{left:calc(5% + var(--c) * 30.4%);top:calc(5% + var(--r) * 22.6%);width:29.4%;height:21.6%;background:var(--spec-img) calc(var(--c) * 50%) calc(var(--r) * 33%)/340% 460%;box-shadow:0 8px 14px -8px #0008}

/* ---------- Gallery: depth on pointer ---------- */
.rv-gallery-media{transform-style:preserve-3d}

/* ---------- Réalisations: tactile filters, pointer depth, richer dialog ---------- */
.rv-projects-filters.has-pill{display:inline-flex;position:relative;padding:5px;gap:2px;border:1px solid var(--line);border-radius:40px}
.rv-projects-filters.has-pill button,.rv-projects-filters.has-pill button[aria-pressed="true"]{position:relative;z-index:1;border:0;background:none;color:var(--ink);transition:color .4s}
.rv-projects-filters.has-pill button[aria-pressed="true"]{color:var(--paper)}
.rv-filter-pill{position:absolute;z-index:0;top:5px;bottom:5px;left:0;width:0;border-radius:30px;background:var(--ink);transition:transform .6s var(--ease),width .6s var(--ease)}
.rv-project-media{transform-style:preserve-3d;transition:box-shadow .6s var(--ease)}
.rv-project-open:hover .rv-project-media{box-shadow:0 40px 60px -40px #1d2b3299}
.rv-project-dialog::backdrop{background:#14232dd9;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.rv-dialog-nav{position:absolute;z-index:3;left:12px;bottom:12px;display:flex;align-items:center;gap:6px;padding:5px;border-radius:30px;background:#f2f1e9eb}
.rv .rv-dialog-nav button{width:38px;height:38px;border-radius:50%;font-size:17px;line-height:1;transition:background-color .3s,transform .4s var(--ease)}
.rv .rv-dialog-nav button:hover{background:var(--lime)}
.rv .rv-dialog-nav button[data-dir="1"]:hover{transform:translateX(2px)}.rv .rv-dialog-nav button[data-dir="-1"]:hover{transform:translateX(-2px)}
.rv-dialog-count{font-size:11px;letter-spacing:.12em;min-width:46px;text-align:center}
.rv-project-dialog{overflow:hidden}
.rv-dialog-body{overflow:auto;max-height:88svh}
.rv-dialog-body h2{font-size:clamp(34px,3.6vw,56px);line-height:.98}
.rv-cursor i{transform-origin:50% 50%}

/* ---------- Contact: image follows the scope; premium fields; conversion CTA ---------- */
.rv-contact-visual figure{opacity:1;clip-path:inset(0 0 0 100%);transition:clip-path 1s var(--ease-io)}
.rv-contact-visual figure.is-active{clip-path:inset(0 0 0 0);z-index:2}
.rv .rv-contact-visual figure img{transform:scale(1.1);transition:transform 1.6s var(--ease)}
.rv .rv-contact-visual figure.is-active img{transform:scale(1)}
.rv-contact-visual figure:after{content:'';position:absolute;inset:0;pointer-events:none}
.rv-contact-visual figure[data-scope="interieur"]:after{background:linear-gradient(180deg,#a5794f1f,#2a1d1238)}
.rv-contact-visual figure[data-scope="exterieur"]:after{background:linear-gradient(#f2f1e914 1px,transparent 1px) 0 0/44px 44px,linear-gradient(90deg,#f2f1e914 1px,transparent 1px) 0 0/44px 44px,linear-gradient(180deg,#1d2b3214,#1d2b3247)}
.rv-contact-visual figcaption{z-index:2}
.rv-contact-panel{padding:clamp(24px,3.4vw,48px)}
.rv-contact-head{margin-bottom:26px}
.rv-scope{margin-bottom:22px}
.rv-form-grid{gap:0 28px}
.rv-field{margin-bottom:18px}
.rv-field label{font-size:11px;letter-spacing:.1em;text-transform:uppercase;opacity:.72;margin-bottom:2px;transition:color .3s,opacity .3s}
.rv-field:focus-within label{opacity:1;color:var(--sage)}
.rv .rv-field input,.rv .rv-field select{font-size:17px;padding:11px 0 10px;background-image:linear-gradient(var(--ink),var(--ink));background-size:0 2px;background-position:0 100%;background-repeat:no-repeat;transition:background-size .55s var(--ease),border-color .3s}
.rv .rv-field select{background-image:linear-gradient(var(--ink),var(--ink)),linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-size:0 2px,5px 5px,5px 5px;background-position:0 100%,calc(100% - 12px) 52%,calc(100% - 7px) 52%;cursor:pointer}
.rv .rv-field input:focus{background-size:100% 2px;box-shadow:none}
.rv .rv-field select:focus{background-size:100% 2px,5px 5px,5px 5px;box-shadow:none}
.rv .rv-field textarea{background:#ffffff80;border-radius:14px;padding:14px 16px;font-size:16px;transition:border-color .3s,box-shadow .3s}
.rv .rv-field textarea:focus{box-shadow:0 0 0 3px #d9ef8799}
.rv-form-actions{gap:16px 26px;margin-top:26px}
.rv .rv-submit{position:relative;isolation:isolate;overflow:hidden;display:inline-flex;align-items:center;gap:24px;height:62px;min-width:min(100%,330px);padding:0 8px 0 30px;border:0;border-radius:40px;background:var(--ink);color:var(--paper);font:500 15px/1 Arial,Helvetica,sans-serif;letter-spacing:-.01em;text-transform:none;cursor:pointer;box-shadow:0 18px 40px -22px #1d2b32aa;transition:color .45s var(--ease),transform .25s var(--ease),box-shadow .45s var(--ease)}
.rv .rv-submit:hover,.rv .rv-submit:focus{background:var(--ink);color:var(--ink)}
.rv .rv-submit:not(:hover):not(.is-success):focus{color:var(--paper)}
.rv-submit-fill{position:absolute;z-index:-1;inset:0;border-radius:inherit;background:var(--lime);transform:translateX(-101%);transition:transform .7s var(--ease-io)}
.rv-submit:hover .rv-submit-fill,.rv-submit.is-success .rv-submit-fill{transform:none}
.rv-submit-label{position:relative;display:block;overflow:hidden;height:1.25em;line-height:1.25em}
.rv-submit-text{display:block;transition:transform .55s var(--ease-io)}
.rv-submit-text:after{content:attr(data-text);position:absolute;left:0;top:100%;white-space:nowrap}
.rv-submit:hover .rv-submit-text{transform:translateY(-100%)}
.rv-submit-icon{margin-left:auto;flex-shrink:0;display:grid;place-items:center;width:46px;height:46px;border-radius:50%;background:var(--lime);color:var(--ink);overflow:hidden;transition:background-color .45s var(--ease),color .45s var(--ease)}
.rv-submit-icon i{font-style:normal;font-size:20px;line-height:1;text-shadow:-32px 32px currentColor;transition:transform .55s var(--ease-io)}
.rv-submit:hover .rv-submit-icon,.rv-submit.is-success .rv-submit-icon{background:var(--ink);color:var(--lime)}
.rv-submit:hover .rv-submit-icon i{transform:translate(32px,-32px)}
.rv .rv-submit:active{transform:scale(.975)}
.rv .rv-submit:focus-visible{outline:3px solid #6c941c;outline-offset:4px}
.rv-submit-progress{position:absolute;left:30px;right:66px;bottom:13px;height:1px;background:currentColor;opacity:0;transform:scaleX(0);transform-origin:left}
.rv-submit.is-loading{cursor:progress}
.rv-submit.is-loading .rv-submit-progress{opacity:.7;animation:rv-load 1.15s var(--ease-io) infinite}
.rv-submit.is-loading .rv-submit-icon i{animation:rv-nudge 1.15s var(--ease-io) infinite}
.rv-submit.is-success{color:var(--ink)}
.rv-submit.is-error{animation:rv-shake .45s var(--ease)}
@keyframes rv-load{0%{transform:scaleX(0);transform-origin:left}50%{transform:scaleX(1);transform-origin:left}50.1%{transform:scaleX(1);transform-origin:right}100%{transform:scaleX(0);transform-origin:right}}
@keyframes rv-nudge{0%,100%{transform:none}50%{transform:translate(5px,-5px)}}
@keyframes rv-shake{0%,100%{transform:none}25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}

/* ---------- Legal: serious, dense, beautiful ---------- */
.rv-hero--legal{padding-top:clamp(140px,13vw,190px);padding-bottom:clamp(26px,3vw,44px)}
.rv-hero--legal .rv-hero-title{font-size:clamp(44px,5.4vw,92px)}
.rv-legal h2{font-size:clamp(25px,2.2vw,36px);padding-top:clamp(22px,2.4vw,32px);margin:clamp(22px,2.4vw,34px) 0 .45em;border-top:1px solid var(--line)}
.rv-legal h2:first-child{margin-top:0;border-top:0;padding-top:0}
.rv-legal p,.rv-legal li{font-size:16px;line-height:1.7}
.rv-legal a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;transition:text-decoration-color .3s,color .3s}
.rv-legal a:hover{color:var(--sage)}
.rv-sec--legal{padding-top:clamp(40px,4vw,64px)!important}

/* ---------- 404 ---------- */
.rv-404{perspective:1400px}
.rv-404-plan{transform-style:preserve-3d;will-change:transform}

/* ---------- Tablet ---------- */
@media(max-width:1280px){
  .rv .rv-article.rv-article--aside{grid-template-columns:minmax(0,1fr) minmax(280px,.8fr)}
  .rv-article--aside .rv-col--toc{display:none}
}
@media(max-width:1024px){
  .rv-chapters-index{padding-left:0}
  .rv .rv-article.rv-article--aside{grid-template-columns:1fr}
  .rv-article--aside .rv-col--aside{position:relative;top:auto;order:-1;max-width:640px}
  .rv-spec-stage{aspect-ratio:16/11}
  .rv-materials-stage{grid-template-columns:1.05fr .95fr}
  .rv-facade-stage{grid-template-columns:1.1fr .9fr}
  .rv-materials-step,.rv-facade-step{min-height:36vh}
  .rv-projects-filters.has-pill{display:inline-flex}
  .rv-hero-dims{display:none}
  .rv .e-con.rv-sec--next{flex-direction:column}
}
@media(max-width:760px){
  .rv .e-con.rv-sec--intro,.rv .e-con.rv-sec--article{--margin-top:-20px;border-radius:20px 20px 0 0}
  .rv-projects-list{gap:36px}
  .rv-form-actions{flex-direction:column;align-items:stretch}
  .rv .rv-submit{width:100%;min-width:0;height:60px}
  .rv-contact-visual{min-height:240px}
  .rv-materials-step,.rv-facade-step{min-height:auto}
  .rv-dialog-nav{left:auto;right:12px;bottom:auto;top:230px}
  .rv-legal h2{font-size:24px}
  .rv-hero--legal{padding-top:130px}
  /* v2.2.2: the TOC stacks above the text; static so the desktop sticky offset (top:104px) can't push it into the first section */
  .rv-article .rv-col--toc{position:static;margin-bottom:36px}
  /* v2.2.2: looser tracking so the glyphs of the footer wordmark no longer collide at phone sizes */
  .rv-footer-word{letter-spacing:-.045em}
}
@media(prefers-reduced-motion:reduce){
  .rv-contact-visual figure{transition:none}
  .rv-submit-text,.rv-submit-icon i,.rv-submit-fill{transition:none}
}
.elementor-editor-active .rv-chapters-stage,.elementor-editor-active .rv-article--aside .rv-col--aside{position:relative;top:auto}
.rv-chapters-index a{transform:translateX(calc(var(--near,0) * 1px))}
.rv-chapters-index a.is-active,.rv-chapters-index a:hover{transform:translateX(calc(6px + var(--near,0) * 1px))}
/* v2.1 density fixes */
.rv-gallery-item--0 .rv-gallery-media{aspect-ratio:4/4.4}
.rv-gallery-item--1 .rv-gallery-media{aspect-ratio:4/4.6}
.rv-hero--contact{padding-top:clamp(140px,12vw,176px)}
.rv-hero--contact .rv-hero-title{font-size:clamp(56px,8.6vw,160px)}
.rv-project:nth-child(4n+4):last-child{grid-column:3/span 8;margin-top:0}
.rv-project:nth-child(4n+4):last-child .rv-project-media{aspect-ratio:16/8}
.rv-materials-step--final,.rv-facade-step--final{min-height:28vh}
@media(max-width:760px){.rv-project:nth-child(4n+4):last-child .rv-project-media{aspect-ratio:4/4.4}}
/* Errors sit in reserved space under each field: showing or clearing one never shifts the form (no missed clicks). */
.rv-field{position:relative;margin-bottom:24px}
.rv-field-error{position:absolute;left:0;right:0;top:100%;margin-top:3px;font-size:11.5px;line-height:1.25}
.rv-field--check{margin-bottom:26px}
.rv .rv-field--check label{text-transform:none;letter-spacing:0;font-size:13px;opacity:1;line-height:1.5}
.rv .rv-field input:not([type=checkbox]):not([type=radio]),.rv .rv-field select{border:0;border-bottom:1px solid #1d2b3259;border-radius:0;background-color:transparent;box-shadow:none;outline:0;height:auto;min-height:0}
.rv .rv-field input:not([type=checkbox]):not([type=radio]):focus,.rv .rv-field select:focus{border-bottom-color:var(--ink)}
.rv .rv-field.has-error input:not([type=checkbox]),.rv .rv-field.has-error select{border-bottom-color:#b3261e}
.rv .rv-field textarea{border:1px solid #1d2b3240}
.rv .rv-field :focus-visible{outline-width:2px;outline-offset:3px}
@media(max-width:760px){.rv-materials.is-live .rv-materials-step,.rv-facade.is-live .rv-facade-step{opacity:1}}
/* Editor: keep every column visible and editable whatever the preview width. */
.elementor-editor-active .rv-article--aside .rv-col--toc{display:block}
@media(max-width:1280px) and (min-width:1025px){.elementor-editor-active .rv .rv-article.rv-article--aside{grid-template-columns:minmax(140px,170px) minmax(0,1fr) minmax(240px,.8fr)}}
/* v2.2 — navigation typography: self-hosted Manrope (SIL OFL 1.1), navigation only */
@font-face{font-family:'Revive Manrope';src:url(fonts/manrope-latin-wght.woff2) format('woff2');font-weight:200 800;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
.rv-nav-item>a,.rv-sub a,.rv-header-cta,.rv-mobile a{font-family:'Revive Manrope',Arial,Helvetica,sans-serif}
.rv-nav-item>a{font-size:15.5px;font-weight:600;letter-spacing:-.01em}
.rv-sub a{font-size:15px;font-weight:500}
.rv-header-cta{font-size:13px;font-weight:600}
.rv-mobile>ul>li>a{font-weight:600;letter-spacing:-.03em}
.rv-mobile ul ul a{font-size:16px;font-weight:500;opacity:.85}
@media(max-width:1240px) and (min-width:1101px){.rv-nav-item>a{font-size:15px;padding:10px 10px}}
/* v2.2 — project detail: extra photos of the same project */
.rv-dialog-more{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:0 0 24px;max-width:420px}
.rv .rv-dialog-thumb{padding:0;border:0;border-radius:var(--r-sm);overflow:hidden;aspect-ratio:1;cursor:pointer;background:var(--paper-2);opacity:.62;transition:opacity .25s,box-shadow .25s}
.rv .rv-dialog-thumb:hover,.rv .rv-dialog-thumb[aria-current="true"]{opacity:1}
.rv .rv-dialog-thumb[aria-current="true"]{box-shadow:0 0 0 2px var(--ink)}
.rv .rv-dialog-thumb:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.rv .rv-dialog-more .rv-dialog-thumb img{width:100%;height:100%;min-height:0;max-width:none;object-fit:cover;display:block}
