/* First view, 2026-09-09: the painting fills the screen and the words live on top of it.
   Loaded after hybrid.css so every hero rule here wins without !important. */
:root{--fv-ink:#0f2a24}
.city-edition .site-header{background:transparent;border-bottom:0;transition:background .35s,box-shadow .35s,height .35s}
.city-edition .site-header.is-fixed{background:#f4f1e9f2;box-shadow:0 1px 0 #c8d0c5;backdrop-filter:blur(12px)}

.city-edition .hero{position:relative;display:block;padding:0;margin:0;min-height:max(660px,100svh);isolation:isolate;overflow:clip;color:#fff;background:#0f2a24}
.city-edition .hero-landscape{position:absolute;inset:0;margin:0;min-height:0;height:auto;border-radius:0;overflow:hidden;will-change:transform}
.city-edition .hero-plate{position:absolute;inset:0;will-change:transform}
.city-edition .hero-landscape .scene-fallback,.city-edition .hero-landscape canvas{position:absolute;inset:0;width:100%;height:100%;animation:fvSettle 2.8s cubic-bezier(.2,.7,.2,1)}
@keyframes fvSettle{from{transform:scale(1.07)}to{transform:none}}
/* Entrance in CSS, not JS: it must play even while the 3D city is parsing on a slow phone. */
.city-edition .hero h1>span>i{animation:fvRise 1.2s var(--ease) both}
.city-edition .hero h1>span:nth-child(2)>i{animation-delay:.14s}.city-edition .hero h1>span:nth-child(3)>i{animation-delay:.28s}
.city-edition .hero-editorial>.eyebrow{animation:fvFade 1s var(--ease) .1s both}
.city-edition .hero-bottom p{animation:fvFade 1s var(--ease) .75s both}
.city-edition .hero-actions{animation:fvFade 1s var(--ease) .9s both}
.city-edition .hero-foot,.city-edition .scene-index,.city-edition .landscape-caption{animation:fvFade 1.2s var(--ease) 1.1s both}
@keyframes fvRise{from{transform:translateY(105%);opacity:0}to{transform:none;opacity:1}}
@keyframes fvFade{from{transform:translateY(14px);opacity:0}to{transform:none;opacity:1}}
body.motion-paused .city-edition .hero :is(h1>span>i,.eyebrow,.hero-bottom p,.hero-actions,.hero-foot,.scene-index,.landscape-caption,.scene-fallback,canvas){animation:none}
.city-edition .hero-landscape img{width:100%;height:100%;object-fit:cover;object-position:54% 42%}
.city-edition .hero-landscape::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;
 background:linear-gradient(180deg,rgba(15,42,36,.16) 0%,rgba(15,42,36,0) 26%,rgba(15,42,36,0) 44%,rgba(8,31,26,.42) 68%,rgba(8,31,26,.86) 100%)}
.city-edition .hero-landscape::before{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:radial-gradient(120% 80% at 18% 88%,rgba(8,31,26,.42),transparent 55%)}
.city-edition .scene-index{position:absolute;z-index:4;top:calc(var(--header) + 22px);left:var(--gutter);font-size:15px;color:var(--fv-ink);letter-spacing:.04em;opacity:.85}
.city-edition .landscape-caption{position:absolute;z-index:4;top:calc(var(--header) + 22px);right:var(--gutter);left:auto;bottom:auto;display:block;text-align:right;font-size:15px;color:var(--fv-ink);opacity:.85}
.city-edition .landscape-caption>span{display:block;font-style:italic;font-size:14px;margin-top:2px}

.city-edition .hero-editorial{position:absolute;z-index:5;left:var(--gutter);right:var(--gutter);bottom:112px;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr);gap:30px clamp(30px,5vw,90px);align-items:end;padding:0;color:#fff;min-width:0}
.city-edition .hero-editorial>.eyebrow{grid-column:1;font-size:clamp(18px,1.55vw,24px);line-height:1.35;padding:0;color:#eef2e6;opacity:.95;font-style:italic;text-shadow:0 1px 18px rgba(5,25,20,.55)}
.city-edition .hero-editorial>.eyebrow br{display:none}
.city-edition .hero-editorial>.eyebrow::before{position:static;margin:0 14px 0 0;width:34px;background:#dfc48d;vertical-align:middle}
.city-edition .hero h1{grid-column:1;font-size:clamp(46px,5.5vw,92px);line-height:1.3;margin-top:22px;letter-spacing:-.065em;color:#fff;text-shadow:0 2px 40px rgba(5,25,20,.35);max-width:none;text-wrap:balance}
.city-edition .hero h1>span{display:block;white-space:nowrap;overflow:hidden}
.city-edition .hero h1>span>i{display:inline-block;font-style:normal;will-change:transform}
.city-edition .hero h1 .brand-word{font-family:var(--en);font-style:italic;font-weight:400;letter-spacing:-.02em;color:#e8cf95;font-size:1.06em}
.city-edition .hero h1 .reading{font-size:.42em;letter-spacing:-.08em;vertical-align:.3em;color:#e8cf95;margin-left:.1em}
.city-edition .hero-bottom{grid-column:2;grid-row:1/3;display:block;margin:0;padding-bottom:6px;color:#e4eadf}
.city-edition .hero-bottom p{font-size:15px;line-height:2.05;max-width:26em;opacity:.95}
.city-edition .hero-bottom p br{display:inline}
.city-edition .hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.city-edition .hero-cta{display:inline-flex;align-items:center;gap:18px;min-height:56px;padding:0 26px 0 28px;border-radius:999px;background:#f4f1e9;color:var(--fv-ink);font:400 14px/1.4 var(--serif);border:1px solid #f4f1e9;transition:background .35s,color .35s,transform .35s var(--ease),box-shadow .35s;box-shadow:0 12px 40px -18px rgba(0,0,0,.6)}
.city-edition .hero-cta>span{font-family:var(--en);font-size:19px;line-height:1;transition:transform .35s var(--ease)}
.city-edition .hero-cta:hover{background:var(--forest);color:#f4f1e9;border-color:var(--forest);transform:translateY(-2px)}
.city-edition .hero-cta:hover>span{transform:translate(3px,-3px)}
.city-edition .hero-cta.is-ghost{background:transparent;color:#f4f1e9;border-color:rgba(244,241,233,.55);box-shadow:none}
.city-edition .hero-cta.is-ghost:hover{background:rgba(244,241,233,.14);border-color:#f4f1e9;transform:none}
.city-edition .hero-cta small{display:block;font:400 10px/1.2 var(--sans);letter-spacing:.08em;opacity:.7;margin-top:3px}
.city-edition .hero .round-link{display:none}

.city-edition .hero-foot{position:absolute;z-index:5;left:var(--gutter);right:var(--gutter);bottom:0;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:22px 150px 22px 0;border-top:1px solid rgba(244,241,233,.22);font-size:14px;color:#dbe3d4;min-width:0;width:auto}
.city-edition .hero-foot>span:last-child{display:inline-flex;align-items:center;gap:12px;font-size:13px}
.city-edition .hero-foot .live{font-variant-numeric:tabular-nums;letter-spacing:.06em}
.city-edition .hero-foot .live i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#e8cf95;margin-right:8px;vertical-align:middle;animation:fvPulse 2.2s ease-in-out infinite}
@keyframes fvPulse{0%,100%{opacity:.35;transform:scale(.8)}50%{opacity:1;transform:scale(1)}}
.city-edition .hero-foot .scroll-cue{display:inline-block;animation:fvCue 2.4s var(--ease) infinite}
@keyframes fvCue{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}

/* Floating consultation entry. Appears after the first view, disappears at the form. */
.float-cta{position:fixed;z-index:97;left:20px;bottom:max(18px,env(safe-area-inset-bottom));display:inline-flex;align-items:center;gap:16px;min-height:52px;padding:0 20px 0 22px;border-radius:999px;background:var(--forest);color:#f4f1e9;font:400 13px/1.3 var(--serif);box-shadow:0 14px 40px -14px rgba(17,63,54,.7);border:1px solid #275848;
 transform:translateY(20px);opacity:0;pointer-events:none;transition:opacity .45s,transform .45s var(--ease),background .3s}
.float-cta>span{font-family:var(--en);font-size:18px;line-height:1}
.float-cta small{display:block;font:400 10px/1.2 var(--sans);letter-spacing:.08em;opacity:.75;margin-top:2px}
.float-cta.is-visible{transform:none;opacity:1;pointer-events:auto}
.float-cta:hover{background:#275848}
body.menu-open .float-cta,body.city-modal-open .float-cta{opacity:0;pointer-events:none}

/* Contact: the reasons it is easy to ask, right where the hesitation happens. */
.contact-trust{list-style:none;padding:0;margin:26px 0 0;display:flex;flex-wrap:wrap;gap:8px;max-width:440px}
.contact-trust li{font-size:12px;line-height:1.4;padding:8px 13px;border:1px solid #b9c2b1;border-radius:999px;color:var(--ink);background:rgba(255,255,255,.4)}
.contact-trust li::before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--orange);margin-right:8px;vertical-align:middle}

@media(min-width:1600px){.city-edition .hero h1{font-size:92px}}
@media(max-width:1100px){
 .city-edition .hero-editorial{grid-template-columns:1fr;gap:22px;bottom:92px}
 .city-edition .hero-bottom{grid-column:1;grid-row:auto}
 .city-edition .hero h1{font-size:clamp(40px,5.8vw,62px);margin-top:16px}
 .city-edition .hero-bottom p{font-size:14px;line-height:1.95}
 .city-edition .hero-landscape::after{background:linear-gradient(180deg,rgba(15,42,36,.16) 0%,rgba(15,42,36,0) 24%,rgba(8,31,26,.3) 42%,rgba(8,31,26,.62) 66%,rgba(8,31,26,.9) 100%)}
}
@media(max-width:1100px) and (max-height:860px){.city-edition .scene-index{display:none}}
@media(max-width:760px){
 .city-edition .hero{display:block;min-height:max(620px,100svh);padding:0;background:#0f2a24}
 .city-edition .hero-landscape{position:absolute;inset:0;height:auto;border-radius:0}
 .city-edition .hero-landscape img{object-position:center 40%}
 .city-edition .hero-landscape::after{background:linear-gradient(180deg,rgba(15,42,36,.12) 0%,rgba(15,42,36,0) 20%,rgba(8,31,26,.3) 36%,rgba(8,31,26,.62) 55%,rgba(8,31,26,.92) 100%)}
 .city-edition .scene-index{top:calc(var(--header) + 12px);font-size:12px;left:var(--gutter)}
 .city-edition .landscape-caption{display:block;top:calc(var(--header) + 12px);right:var(--gutter);left:auto;bottom:auto;font-size:12px}
 .city-edition .landscape-caption>span{display:none}
 .city-edition .hero-editorial{position:absolute;inset:auto var(--gutter) 84px;padding:0;display:block;color:#fff}
 .city-edition .hero-editorial>.eyebrow{font-size:17px;padding:0;line-height:1.4}
 .city-edition .hero-editorial>.eyebrow::before{position:static;width:24px;margin:0 10px 0 0}
 .city-edition .hero h1{font-size:clamp(38px,10.4vw,56px);line-height:1.32;margin-top:16px;letter-spacing:-.06em}
 .city-edition .hero h1>span{white-space:nowrap}
 .city-edition .hero-bottom{position:relative;inset:auto;display:block;margin-top:20px;color:#e4eadf}
 .city-edition .hero-bottom p{font-size:14px;line-height:1.95;max-width:none}.city-edition .hero-bottom p br{display:none}
 .city-edition .hero-actions{margin-top:22px;gap:10px}
 .city-edition .hero-cta{flex:1 1 100%;justify-content:space-between;min-height:54px;padding-inline:22px}
 .city-edition .hero-cta.is-ghost{flex:1 1 auto}
 .city-edition .hero-foot{position:absolute;left:var(--gutter);right:var(--gutter);bottom:0;width:auto;padding:16px 60px 16px 0;font-size:12px;background:none}
 .city-edition .hero-foot>span:first-child{display:none}.city-edition .hero-foot>span:last-child{display:inline-flex;font-size:12px;white-space:nowrap}
 .city-edition .hero-foot .live-note{display:none}
 .float-cta{left:16px;min-height:48px;padding:0 16px 0 18px;font-size:12px;max-width:calc(100vw - 96px)}
 .contact-trust li{font-size:12px;padding:7px 11px}
}
@media(max-width:360px){.city-edition .hero h1{font-size:36px}}
@media(prefers-reduced-motion:reduce){.city-edition .hero *{animation:none!important}}
body.motion-paused .city-edition .hero-landscape{transform:none!important}
.city-edition .hero-cta b,.float-cta b{font-weight:400}
