/* Stili propri del sito Nobilis (il resto viene dal design system, ds/). La parte di sopra (articoli, elenco e mappa, schede, mappe piccole) viene dal sito Maximus Real Estate; la parte nuova è in fondo. */
.gk-logo__text { font-family: var(--font-display); font-weight: 600; letter-spacing: .1em; text-transform: uppercase; }

/* articoli e pagine legali */
.nb-legal { max-width: 74ch; }
.nb-legal section + section { margin-top: var(--s-6); }
.nb-legal ul { padding-left: 1.2em; }
.nb-legal li + li { margin-top: .4em; }
.nb-legal__lines { line-height: 1.7; }
.nb-excerpt { display: -webkit-box; -webkit-line-clamp: 4; line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }

/* l'interruttore lista ⇄ mappa e «Filtri» stanno nel dock in basso (gk-dock, partials/viewbar.html) su OGNI larghezza: telefono e computer, in elenco e in mappa, sempre allo stesso punto */

/* l'elenco e la mappa sono UNA pagina (static/js/view.js): body[data-nb-view] dice quale si vede. Con la mappa niente piè di pagina, né spazio sopra (la testata galleggia sulla mappa) né sotto (è alta quanto lo schermo) */
body[data-nb-view="map"] { padding-bottom: 0; }
body[data-nb-view="map"] .gk-main { padding-top: 0; }
body[data-nb-view="map"] .gk-footer { display: none; }
body[data-nb-view="map"] .nb-listhead { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }        /* (il titolo e le briciole: sulla mappa li leggono solo gli screen reader) */
body[data-nb-view="map"] .gk-pagelogo__nav { display: none; }                      /* (e senza il marchio in alto a sinistra: richiesta del proprietario, 30/10/2026; nell'elenco c'è) */

/* ---- mappe (static/js/map.js) */
.nb-mapview { position: relative; height: 100svh; min-height: 560px; overflow: hidden; background: #f8f4f0; }        /* (the colour of the light map: the maps are light in every theme) */
.nb-mapview .nb-mapview__canvas { position: absolute; inset: 0; width: 100%; height: 100%; }       /* (the library's .maplibregl-map says position: relative: this wins by being more specific) */
.nb-mapview__bar { position: absolute; z-index: 4; top: calc(var(--sat) + 68px); left: var(--gutter); right: calc(max(var(--gutter), var(--sar))); display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-2); pointer-events: none; }        /* (phone: the second row, under the pill of the header) */
.nb-mapview__bar > * { pointer-events: auto; }
.nb-mapview__count { display: inline-flex; align-items: center; min-height: 44px; padding: 0 var(--s-4); border-radius: var(--r-pill); font-size: var(--fs-sm); font-weight: 650; }
.nb-mapview__count.is-quiet { position: absolute; width: 1px; height: 1px; min-height: 0; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; box-shadow: none; }        /* «N immobili in quest'area»: non si vede (lo leggono gli screen reader); con nessun immobile in vista il messaggio si vede */
/* la mappa è chiara in ogni tema: ciò che sta sopra di lei (il messaggio «nessun immobile in quest'area») è PIENO (il vetro del tema scuro era testo crema su mappa chiara) */
.nb-mapview__count { background-color: var(--glass-solid); box-shadow: inset 0 0 0 1px var(--glass-line), 0 10px 24px -12px var(--glass-shadow); }
.nb-mapview__panel { display: none; }
.nb-mapview__list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s-3); }
.nb-mapview__empty { margin: var(--s-4); color: var(--muted); }
/* telefono: le card dell'immobile toccato stanno in una fila che scorre a scatto sopra il dock; la X sta sopra la fila, a sinistra */
.nb-mapview__card { position: absolute; z-index: 4; left: 0; right: 0; bottom: var(--dock-clear); }
.nb-mapview__rail { display: flex; gap: var(--s-3); margin: 0; padding: var(--s-2) var(--gutter) var(--s-3); list-style: none; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: var(--gutter); overscroll-behavior-x: contain; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.nb-mapview__rail::-webkit-scrollbar { display: none; }
.nb-mapview__rail > li { flex: 0 0 min(88%, 420px); scroll-snap-align: start; scroll-snap-stop: always; min-width: 0; display: grid; }          /* (una scheda alla volta: uno scatto forte del dito non ne salta tre) */
.nb-mapview__rail > li:only-child { flex-basis: min(100%, 520px); margin-inline: auto; }
.nb-mapview__close.gk-glass { position: absolute; top: -34px; left: var(--gutter); color: var(--text); background: var(--glass-solid); box-shadow: inset 0 0 0 1px var(--glass-line), 0 8px 20px -10px var(--glass-shadow); }                        /* (a sinistra, allineata alla fila di card) */
.nb-mapview__fallback { position: absolute; z-index: 6; left: var(--gutter); right: var(--gutter); top: 38%; max-width: 420px; margin-inline: auto; padding: var(--s-5); border-radius: var(--r-lg); display: grid; gap: var(--s-4); justify-items: start; }
/* la card dell'immobile (telefono: nella fila sopra il dock; computer: nell'elenco a sinistra): UN collegamento copre foto e parole, il cuore sta accanto al collegamento, mai dentro.
   Sulla foto due cose piccole (quante foto in basso a sinistra, il cuore in alto a destra; lo stato «In trattativa», di rado, è una fascia in basso e le foto passano in alto); accanto, in ordine: prezzo, titolo, paese, locali e superficie.
   Niente è tagliato con «…» tranne il titolo (due righe): il paese e i dati vanno a capo, la scheda ha il testo intero. */
.nb-mcard { --photo: 120px; position: relative; border-radius: var(--r-lg); background: var(--surface); color: var(--text); box-shadow: inset 0 0 0 1px var(--line), 0 16px 34px -18px rgb(0 0 0 / .55); }
.nb-mcard__link { display: flex; gap: var(--s-3); align-items: center; height: 100%; padding: var(--s-2); border-radius: inherit; color: inherit; text-decoration: none; -webkit-tap-highlight-color: transparent; }
.nb-mcard__media { position: relative; flex: none; width: var(--photo); aspect-ratio: 1; border-radius: var(--r-md); overflow: hidden; background: var(--surface-3); }
.nb-mcard__media img { width: 100%; height: 100%; object-fit: cover; }
.nb-mcard__tag { position: absolute; right: 6px; bottom: 6px; left: 6px; padding: 5px 8px; border-radius: 12px; font: 650 .6875rem/1.15 var(--font); text-align: center; text-wrap: balance; overflow-wrap: break-word; color: #f6dfa8; background: rgb(12 10 8 / .74); box-shadow: inset 0 0 0 1px rgb(255 255 255 / .14); }        /* (lo stato, di rado: fascia scura in basso con la scritta oro chiaro (uguale in ogni tema: sta su una foto), a capo per parole; senza sfocatura, una fila ne ha fino a dodici) */
.nb-mcard__photos { position: absolute; left: 6px; bottom: 6px; display: inline-flex; align-items: center; gap: 4px; padding: 4px 8px 4px 7px; border-radius: var(--r-pill); font: 650 .6875rem/1 var(--font); color: #fff; background: rgb(12 10 8 / .66); box-shadow: inset 0 0 0 1px rgb(255 255 255 / .14); }
.nb-mcard__photos .gk-i { width: 12px; height: 12px; }
.nb-mcard__tag ~ .nb-mcard__photos { top: 6px; bottom: auto; }                                                                                                          /* (con la fascia in basso, quante foto passa in alto a sinistra) */
.nb-mcard__fav { position: absolute; z-index: 2; top: calc(var(--s-2) + 6px); left: calc(var(--s-2) + var(--photo) - 38px); display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; color: #fff; background: rgb(12 10 8 / .66); box-shadow: inset 0 0 0 1px rgb(255 255 255 / .16); -webkit-tap-highlight-color: transparent; }
.nb-mcard__fav::after { content: ""; position: absolute; inset: -6px; }                                                                                                  /* (si tocca su 44 px: il cerchio visibile è più piccolo) */
.nb-mcard__fav .gk-i { width: 18px; height: 18px; }
.nb-mcard__fav[aria-pressed="true"] .gk-i { fill: #ff6b61; stroke: #ff6b61; }                                                                                /* (sta su un cerchio scuro sopra una foto: il corallo del tema scuro in ogni tema; il rosso del chiaro ci si perderebbe) */
.nb-mcard__body { min-width: 0; flex: 1; display: grid; gap: 4px; align-content: center; }
.nb-mcard__price { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 var(--s-1); font: 760 1.375rem/1.1 var(--font-display); letter-spacing: -.02em; }
.nb-mcard__price small { font: 650 .8125rem/1 var(--font); letter-spacing: 0; color: var(--muted); }
.nb-mcard__title { font-weight: 640; line-height: 1.25; display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere; }
.nb-mcard__loc { display: flex; align-items: flex-start; gap: 4px; min-width: 0; color: var(--muted); font-size: var(--fs-sm); font-weight: 560; line-height: 1.3; }
.nb-mcard__loc > span { min-width: 0; display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere; }        /* (il paese a capo se serve, mai tagliato su una riga: «San Bartolomeo al Mare», «Вилла Бордигера») */
.nb-mcard__loc .gk-i { width: 1.1em; height: 1.3em; flex: none; color: var(--accent-ink); }
.nb-mcard__specs { display: flex; flex-wrap: wrap; gap: 2px var(--s-3); margin-top: 2px; color: var(--muted); font-size: var(--fs-sm); font-weight: 600; }
.nb-mcard__specs > span { display: inline-flex; align-items: center; gap: 4px; }
.nb-mcard__specs .gk-i { width: 1.1em; height: 1.1em; flex: none; }
@media (max-width: 379px) { .nb-mapview__rail > li { flex-basis: 92%; } .nb-mcard { --photo: 100px; } .nb-mcard__link { gap: var(--s-2); } .nb-mcard__price { font-size: 1.1875rem; } .nb-mcard__specs { gap: 2px var(--s-2); font-size: var(--fs-xs); } .nb-mcard__specs > span { gap: 3px; } .nb-mcard__loc { font-size: var(--fs-xs); } }
.nb-mcard.is-swipeable, .nb-mcard.is-swipeable a { touch-action: pan-y; }                                                                                  /* (la card grande dell'elenco sulla mappa: un dito che scorre di lato sulla foto la cambia; in verticale scorre l'elenco) */
.nb-mcard.is-on { box-shadow: inset 0 0 0 2px var(--accent), 0 16px 34px -18px rgb(0 0 0 / .55); }
@media (hover: hover) { .nb-mcard:hover { box-shadow: inset 0 0 0 2px var(--accent), 0 20px 38px -18px rgb(0 0 0 / .6); } }
.nb-pointmap { position: relative; height: 300px; background: #f8f4f0; }
/* computer: l'elenco di ciò che si vede sulla mappa sta in un CONTENITORE sopra la mappa, a sinistra (come prima della 0.22.0: nella 0.22.0 era una colonna a tutta altezza con un taglio netto
   contro la mappa e al proprietario non piaceva, 31/10/2026). La mappa resta a tutto schermo sotto di lui. Larghezza: un terzo dello schermo ALMENO e MAI più della metà (sempre il proprietario:
   «almeno 1/3, ma in ogni caso non più del 50 %»): di solito il 40 %, con un minimo di 400 px sugli schermi stretti, tenuta fra 1/3 e 1/2 da clamp(). Altezza FISSA (sempre il proprietario,
   31/10/2026: «non variabile come ora»): dalla testata fino al dock, qualunque sia il numero delle card (con poche resta vuoto in fondo, con tante le card scorrono dentro). Nell'elenco stanno
   TUTTI gli immobili della mappa, anche quelli i cui punti sono sotto il contenitore (static/js/map.js, inView). */
@media (min-width: 900px) {
  .nb-mapview { --panel-w: clamp(33.333vw, max(40vw, 400px), 50vw); --panel-top: calc(var(--header-h) + var(--sat) + 28px); }
  .nb-mapview__bar { top: var(--panel-top); left: calc(var(--gutter) + var(--panel-w) + var(--s-4)); right: var(--s-4); }
  .nb-mapview__panel { display: block; position: absolute; z-index: 3; top: var(--panel-top); left: var(--gutter); width: var(--panel-w); height: calc(100% - var(--panel-top) - var(--dock-clear)); overflow-y: auto;
    overscroll-behavior: contain; scrollbar-width: thin; padding: var(--s-4); border-radius: var(--r-xl); scroll-padding-block: var(--s-3); }
  .nb-mapview__panel[hidden] { display: none; }
  .nb-mapview__list { grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: var(--s-4); }
  .nb-mapview__list > li { display: grid; }
  .nb-mapview__empty { margin: var(--s-2); font-size: var(--fs-lg); }
  /* nell'elenco largo la card è in piedi, come quelle dell'elenco: la foto grande sopra, le parole sotto (sul telefono resta la card bassa e larga della fila) */
  .nb-mapview__panel .nb-mcard { --photo: 100%; display: grid; }
  .nb-mapview__panel .nb-mcard__link { flex-direction: column; align-items: stretch; gap: var(--s-3); padding: var(--s-2) var(--s-2) var(--s-4); }
  .nb-mapview__panel .nb-mcard__media { width: 100%; aspect-ratio: 3 / 2; max-height: 320px; }
  .nb-mapview__panel .nb-mcard__fav { left: auto; right: calc(var(--s-2) + 10px); }
  /* le frecce delle foto: due cerchi sopra la foto (non possono stare dentro il collegamento, che copre la card): un velo grande quanto la foto, che non prende i tocchi, con le frecce dentro */
  .nb-mcard__arrows { position: absolute; z-index: 2; top: var(--s-2); left: var(--s-2); right: var(--s-2); aspect-ratio: 3 / 2; max-height: 320px; pointer-events: none; }
  .nb-mcard__arrows > .gk-pcard__arrow { pointer-events: auto; }
  .nb-mcard:hover .gk-pcard__arrow, html:not(.gk-pointer) .nb-mcard:focus-within .gk-pcard__arrow { opacity: 1; }
  .nb-mapview__panel .nb-mcard__body { flex: none; padding-inline: var(--s-2); gap: 6px; align-content: start; }
  .nb-mapview__panel .nb-mcard__price { font-size: 1.5rem; }
  .nb-mapview__panel .nb-mcard__title { font-size: var(--fs-lg); }
  .nb-mapview__card { display: none !important; }
  .nb-pointmap { height: 380px; }
}
/* the maps are light in every theme, so are the library's own controls: the zoom buttons and the credits (the (i) button) of the SMALL maps (a property's place, the agency); the big map has neither (and no credits line: the owner asked for none on it; they are written in the page footer and the privacy notice) */
.maplibregl-ctrl-group { border-radius: var(--r-md) !important; overflow: hidden; background: rgb(255 255 255 / .94) !important; box-shadow: 0 0 0 1px rgb(29 26 20 / .12), 0 6px 18px -8px rgb(29 26 20 / .35) !important; }
.maplibregl-ctrl-group button { width: 40px !important; height: 40px !important; }
.maplibregl-ctrl-group button + button { border-top: 1px solid rgb(29 26 20 / .12) !important; }
.maplibregl-ctrl-attrib { background: rgb(255 255 255 / .88) !important; color: #5a5446 !important; font-size: 11px; border-radius: var(--r-sm) 0 0 0; }
.maplibregl-ctrl-attrib a { color: #5a5446 !important; }
.maplibregl-canvas:focus-visible { outline: 2px solid var(--focus); outline-offset: -2px; }

/* la posizione di un immobile (scheda): un riquadro senza margini interni, la mappa a tutta larghezza e sotto la riga del luogo (1/11/2026) */
.nb-place { position: relative; border-radius: var(--r-xl); overflow: hidden; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); }
.nb-place .nb-pointmap { margin: 0; }
.nb-place__info { display: grid; gap: var(--s-2) var(--s-4); align-items: center; padding: var(--s-4) var(--s-5) var(--s-5); }
.nb-place__where { display: flex; align-items: flex-start; gap: var(--s-2); margin: 0; font-weight: 650; line-height: 1.35; }
.nb-place__where .gk-i { flex: none; width: 20px; height: 20px; margin-top: 1px; color: var(--accent-ink); }
.nb-place__note { margin: 0; color: var(--muted); font-size: var(--fs-sm); }
.nb-place__open { justify-self: start; margin-top: var(--s-2); }
@media (min-width: 640px) { .nb-place__info { grid-template-columns: minmax(0, 1fr) auto; padding-block: var(--s-4); } .nb-place__where, .nb-place__note { grid-column: 1; } .nb-place__open { grid-column: 2; grid-row: 1 / span 2; margin-top: 0; justify-self: end; } }
.nb-pointmap__chip { position: absolute; z-index: 2; left: var(--s-3); top: var(--s-3); display: inline-flex; align-items: center; gap: 6px; padding: 8px 13px 8px 10px; border-radius: var(--r-pill); font: 650 var(--fs-xs)/1 var(--font); color: #fff; background: rgb(12 10 8 / .66);
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); box-shadow: inset 0 0 0 1px rgb(255 255 255 / .16); pointer-events: none; }
.nb-pointmap__chip svg { width: 15px; height: 15px; color: var(--accent); }

/* le pagine legali: la tabella di ciò che il sito salva (informativa sui cookie). Sul telefono ogni riga è una scheda e l'etichetta della colonna sta davanti al valore. */
.nb-legal__table { margin-block: var(--s-3); overflow-x: auto; border-radius: var(--r-lg); box-shadow: inset 0 0 0 1px var(--line); background: var(--surface); }
.nb-legal__table:focus-visible { outline-offset: 2px; }
.nb-legal__table table { width: 100%; border-collapse: collapse; font-size: var(--fs-sm); line-height: 1.45; }
.nb-legal__table th, .nb-legal__table td { padding: var(--s-3) var(--s-4); text-align: left; vertical-align: top; border-top: 1px solid var(--line); }
.nb-legal__table thead th { border-top: 0; font-size: var(--fs-xs); font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); }
.nb-legal__table tbody th { min-width: 9rem; font-weight: 650; }          /* (il nome di un cookie, come «gk_seg_view», non va spezzato a metà parola) */
.nb-legal__table code { font: 600 .92em/1.4 ui-monospace, SFMono-Regular, Menlo, monospace; overflow-wrap: break-word; }
@media (max-width: 719.98px) {
  .nb-legal__table table, .nb-legal__table tbody, .nb-legal__table tr, .nb-legal__table th, .nb-legal__table td { display: block; }
  .nb-legal__table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .nb-legal__table tr { padding: var(--s-3) 0; border-top: 1px solid var(--line); }
  .nb-legal__table tr:first-child { border-top: 0; }
  .nb-legal__table th, .nb-legal__table td { padding: var(--s-1) var(--s-4); border: 0; }
  .nb-legal__table td::before { content: attr(data-label); display: block; font-size: var(--fs-xs); font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); }
}

/* ---- le pagine dei comuni (/zone/<comune>) e la valutazione gratuita (server/areas.py) ---- */
.nb-twin { display: grid; gap: var(--s-5); }
.nb-twin > .gk-card { display: grid; gap: var(--s-3); align-content: start; justify-items: start; }
.nb-twin > .gk-card .gk-lead, .nb-twin > .gk-card p { margin: 0; }
@media (min-width: 900px) { .nb-twin { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1100px) { .gk-tiles.nb-tiles--3 { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1100px) { .gk-tiles.nb-tiles--2 { grid-template-columns: repeat(2, 1fr); } }
.nb-tile--static:active { transform: none; }
@media (hover: hover) { .nb-tile--static:hover { transform: none; box-shadow: none; } }
.nb-formwrap { max-width: 760px; }
.nb-checks { display: grid; gap: var(--s-3); margin-top: var(--s-3); }
.nb-checks li { display: flex; align-items: flex-start; gap: var(--s-3); }
.nb-checks .gk-i { flex: none; width: 22px; height: 22px; margin-top: 1px; color: var(--accent-ink); }
.nb-area__zones { display: flex; flex-wrap: wrap; gap: var(--s-2); margin-top: var(--s-3); }
.gk-zones .gk-chip .gk-i, .nb-area__zones .gk-chip .gk-i { width: 18px; height: 18px; color: var(--accent-ink); }
.nb-place__area { margin: 0; font-weight: 650; }
.nb-place__area a { color: var(--accent-ink); text-decoration: underline; text-decoration-thickness: 1.5px; text-underline-offset: 3px; }


/* =====================================================================================================================================================================
   Nobilis: le parti nuove (home, sedi, team, schede, piè di pagina, moduli). Prefisso nb-; i colori e i raggi vengono dai token del tema.
   ===================================================================================================================================================================== */
.nb-demonote { margin-bottom: var(--s-4); }
.nb-intro { max-width: 70ch; }
.gk-hero.nb-hero h1 { max-width: 13ch; }
@media (min-width: 900px) { .gk-hero.nb-hero h1 { max-width: 15ch; } }
.gk-hero .gk-eyebrow { color: var(--gold-2); }
.gk-pagelogo--photo small { color: var(--gold-2); }
.nb-numbers .gk-stats b { font-family: var(--font-display); font-weight: 560; letter-spacing: -.01em; }

/* stelle (recensioni) */
.nb-stars { display: inline-flex; gap: 2px; color: var(--gold); }
.nb-stars .gk-i { width: 1.1em; height: 1.1em; stroke-width: 1.5; }
.nb-stars .gk-i.is-on { fill: currentColor; }

/* destinazioni: un mosaico, la prima casella grande */
.nb-dest { display: grid; gap: var(--s-3); grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: clamp(150px, 38vw, 220px); }
.nb-dest__tile { position: relative; display: block; overflow: hidden; border-radius: var(--r-xl); isolation: isolate; color: #fff; text-decoration: none; background: var(--surface-3) var(--lqip, none) center / cover no-repeat; box-shadow: 0 24px 40px -30px var(--glass-shadow); -webkit-tap-highlight-color: transparent; }
.nb-dest__tile > img { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; object-fit: cover; transition: transform .8s var(--ease-out); }
.nb-dest__tile::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgb(5 20 14 / .8), rgb(5 20 14 / .12) 55%, transparent); }
.nb-dest__label { position: absolute; z-index: 1; left: var(--s-4); right: var(--s-4); bottom: var(--s-3); display: grid; gap: 2px; }
.nb-dest__label b { font: 560 clamp(1.25rem, 1.05rem + 1vw, 1.75rem)/1.1 var(--font-display); letter-spacing: -.005em; text-shadow: 0 1px 14px rgb(0 0 0 / .4); }
.nb-dest__label small { font-size: var(--fs-sm); font-weight: 600; opacity: .92; }
.nb-dest__tile--big { grid-column: span 2; }
@media (min-width: 900px) { .nb-dest { grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: 214px; gap: var(--s-4); } .nb-dest__tile--big { grid-row: span 2; } .nb-dest__label { left: var(--s-5); bottom: var(--s-4); } }
@media (hover: hover) { .nb-dest__tile:hover > img { transform: scale(1.05); } }

/* perché Nobilis */
.nb-why__grid { display: grid; gap: var(--s-6); align-items: start; padding: clamp(var(--s-5), 4vw, var(--s-7)); border-radius: var(--r-xl); background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); }
.nb-why__intro { display: grid; gap: var(--s-4); justify-items: start; }
.nb-why__list { display: grid; gap: var(--s-5); }
.nb-why__list li { display: grid; grid-template-columns: auto 1fr; gap: var(--s-4); align-items: start; }
.nb-why__list h3 { font: 640 var(--fs-lg)/1.2 var(--font); letter-spacing: 0; margin-bottom: 4px; }
.nb-why__list p { color: var(--muted); font-size: var(--fs-sm); line-height: 1.55; }
.nb-why__icon { display: grid; place-items: center; width: 46px; height: 46px; border-radius: 15px; color: var(--accent-ink); background: var(--accent-soft); }
.nb-why__icon .gk-i { width: 24px; height: 24px; }
@media (min-width: 900px) { .nb-why__grid { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: var(--s-8); } .nb-why__list { grid-template-columns: 1fr 1fr; gap: var(--s-6) var(--s-5); } }

/* consulenti */
.nb-agents { display: grid; gap: var(--s-4); grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 760px) { .nb-agents { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--s-5); } }
.nb-agents--wide { grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr)); }
.nb-agent { position: relative; display: grid; grid-template-rows: auto 1fr; border-radius: var(--r-lg); overflow: hidden; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); }
.nb-agent__photo { position: relative; display: block; aspect-ratio: 1; overflow: hidden; background: var(--surface-3) var(--lqip, none) center / cover no-repeat; }
.nb-agent__photo img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 18%; transition: transform .7s var(--ease-out); }
.nb-agent__initials { position: absolute; inset: 0; display: grid; place-items: center; font: 560 3rem/1 var(--font-display); color: var(--accent-ink); background: linear-gradient(145deg, var(--accent-soft), var(--surface-2)); }
.nb-agent__body { display: grid; gap: 3px; align-content: start; padding: var(--s-3) var(--s-4) var(--s-4); }
.nb-agent__name { font: 600 1.25rem/1.15 var(--font-display); letter-spacing: 0; }
.nb-agent__name a { color: inherit; text-decoration: none; }
.nb-agent__name a::after { content: ""; position: absolute; inset: 0; }                           /* (tutta la scheda è il collegamento) */
.nb-agent__role { color: var(--muted); font-size: var(--fs-sm); line-height: 1.3; }
.nb-agent__office { display: flex; align-items: center; gap: 5px; font-size: var(--fs-xs); font-weight: 600; color: var(--accent-ink); }
.nb-agent__office a { color: inherit; position: relative; z-index: 1; text-decoration: none; }
.nb-agent__office .gk-i { width: 1em; height: 1em; }
.nb-agent__links { display: flex; gap: var(--s-2); margin-top: var(--s-2); position: relative; z-index: 1; }
@media (hover: hover) { .nb-agent:hover .nb-agent__photo img { transform: scale(1.04); } }

/* recensioni */
.nb-reviews { display: grid; gap: var(--s-4); }
@media (min-width: 900px) { .nb-reviews { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-5); } }
.nb-review { display: grid; gap: var(--s-3); align-content: start; margin: 0; padding: var(--s-5); border-radius: var(--r-lg); background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); }
.nb-review blockquote { margin: 0; }
.nb-review blockquote p { font: 500 1.1875rem/1.45 var(--font-display); letter-spacing: 0; }
.nb-review figcaption { display: grid; gap: 1px; font-size: var(--fs-sm); color: var(--muted); }
.nb-review figcaption b { color: var(--text); font-weight: 650; }

/* articoli del magazine */
.nb-articles { display: grid; gap: var(--s-4); }
@media (min-width: 760px) { .nb-articles { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-5); } }
.nb-article { display: grid; grid-template-rows: auto 1fr; border-radius: var(--r-lg); overflow: hidden; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); }
.nb-article__media { display: block; aspect-ratio: 3 / 2; overflow: hidden; background: var(--surface-3) var(--lqip, none) center / cover no-repeat; }
.nb-article__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s var(--ease-out); }
.nb-article__body { display: grid; gap: var(--s-2); align-content: start; padding: var(--s-4) var(--s-5) var(--s-5); }
.nb-article__cat { font: 700 var(--fs-xs)/1 var(--font); letter-spacing: .12em; text-transform: uppercase; color: var(--accent-ink); }
.nb-article__body h3 { font: 600 1.5rem/1.15 var(--font-display); letter-spacing: 0; }
.nb-article__body h3 a { color: inherit; text-decoration: none; }
.nb-article__body h3 a::after { content: ""; position: absolute; inset: 0; }
.nb-article { position: relative; }
.nb-article__ex { color: var(--muted); font-size: var(--fs-sm); line-height: 1.55; display: -webkit-box; -webkit-line-clamp: 3; line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
@media (hover: hover) { .nb-article:hover .nb-article__media img { transform: scale(1.04); } }

/* le sedi */
.nb-offices { display: grid; gap: var(--s-4); }
@media (min-width: 700px) { .nb-offices { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1100px) { .nb-offices { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-5); } }
.nb-office { position: relative; display: grid; grid-template-rows: auto 1fr; border-radius: var(--r-lg); overflow: hidden; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); transition: box-shadow var(--d2); }
.nb-office.is-on { box-shadow: inset 0 0 0 2px var(--accent), 0 18px 40px -26px var(--glass-shadow); }
.nb-office__media { position: relative; display: block; aspect-ratio: 16 / 10; overflow: hidden; background: var(--surface-3) var(--lqip, none) center / cover no-repeat; }
.nb-office__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s var(--ease-out); }
.nb-office__hq { position: absolute; left: var(--s-3); top: var(--s-3); }
.nb-office__body { display: grid; gap: var(--s-2); align-content: start; padding: var(--s-4) var(--s-5) var(--s-5); }
.nb-office__name { font: 600 1.625rem/1.1 var(--font-display); letter-spacing: 0; }
.nb-office__name a { color: inherit; text-decoration: none; }
.nb-office__name a::after { content: ""; position: absolute; inset: 0; }
.nb-office__tag { color: var(--muted); font-size: var(--fs-sm); line-height: 1.5; }
.nb-office__addr { display: flex; align-items: flex-start; gap: 6px; font-size: var(--fs-sm); font-weight: 600; }
.nb-office__addr .gk-i { flex: none; width: 1.1em; height: 1.3em; color: var(--accent-ink); }
.nb-office__nums { display: flex; flex-wrap: wrap; gap: var(--s-1) var(--s-4); color: var(--accent-ink); font-size: var(--fs-xs); font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
@media (hover: hover) { .nb-office:hover .nb-office__media img { transform: scale(1.04); } }
.nb-officesmap { position: relative; border-radius: var(--r-xl); overflow: hidden; height: clamp(360px, 62vw, 560px); background: #f8f4f0; box-shadow: inset 0 0 0 1px var(--line); margin-bottom: var(--s-6); }
.nb-officesmap .nb-officesmap__canvas { position: absolute; inset: 0; width: 100%; height: 100%; }
.nb-officecard { position: absolute; z-index: 3; left: var(--s-3); bottom: var(--s-3); display: grid; gap: 4px; max-width: min(340px, calc(100% - 2 * var(--s-3))); padding: var(--s-4); padding-right: calc(var(--s-4) + 36px); border-radius: var(--r-lg); background: var(--glass-solid); color: var(--text); box-shadow: inset 0 0 0 1px var(--glass-line), 0 18px 36px -18px var(--glass-shadow); }
.nb-officecard[hidden] { display: none; }
.nb-officecard strong { font: 600 1.375rem/1.1 var(--font-display); }
.nb-officecard span { font-size: var(--fs-sm); color: var(--muted); }
.nb-officecard__row { display: flex; flex-wrap: wrap; gap: var(--s-2); margin-top: var(--s-2); }
.nb-officecard > .gk-btn--icon { position: absolute; top: var(--s-2); right: var(--s-2); }

/* pagina di una sede e di un consulente */
.nb-banner { position: relative; isolation: isolate; overflow: hidden; border-radius: var(--r-xl); min-height: clamp(260px, 38vw, 420px); display: grid; align-content: end; padding: clamp(var(--s-5), 4vw, var(--s-7)); color: #fff; background: var(--surface-3) var(--lqip, none) center / cover no-repeat; }
.nb-banner > img { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; max-width: none; object-fit: cover; }
.nb-banner::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(to top, rgb(5 20 14 / .82), rgb(5 20 14 / .1) 62%, transparent); }
.nb-banner h1 { font-size: var(--fs-3xl); font-weight: var(--dw, 560); text-shadow: 0 2px 24px rgb(0 0 0 / .4); }
.nb-banner p { max-width: 54ch; color: rgb(255 255 255 / .92); }
.nb-banner .gk-eyebrow { color: var(--gold-2); }
.nb-cols { display: grid; gap: var(--s-6); align-items: start; }
@media (min-width: 960px) { .nb-cols { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--s-7); } .nb-cols--rev { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); } }
.nb-prose { max-width: 66ch; }
.nb-prose p { font-size: var(--fs-lg); line-height: 1.7; }
.nb-prose p + p { margin-top: var(--s-4); }
.nb-infocard { display: grid; gap: var(--s-4); padding: var(--s-5); border-radius: var(--r-xl); background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); }
.nb-infocard h2, .nb-infocard h3 { font: 600 1.5rem/1.1 var(--font-display); letter-spacing: 0; }
.nb-lines { display: grid; gap: var(--s-3); }
.nb-lines li { display: grid; grid-template-columns: auto 1fr; gap: var(--s-3); align-items: start; line-height: 1.4; }
.nb-lines .gk-i { width: 20px; height: 20px; margin-top: 1px; color: var(--accent-ink); }
.nb-lines a { color: inherit; font-weight: 600; text-underline-offset: 3px; }
.nb-hours { display: grid; gap: 2px; font-size: var(--fs-sm); }
.nb-hours p { display: flex; justify-content: space-between; gap: var(--s-4); }
.nb-hours span:last-child { color: var(--muted); }
.nb-chips { display: flex; flex-wrap: wrap; gap: var(--s-2); }
.nb-portrait { position: relative; aspect-ratio: 4 / 5; border-radius: var(--r-xl); overflow: hidden; background: var(--surface-3) var(--lqip, none) center / cover no-repeat; box-shadow: 0 30px 50px -34px var(--glass-shadow); }
.nb-portrait img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 20%; }
.nb-portrait .nb-agent__initials { font-size: 6rem; }
.nb-avatar { position: relative; display: grid; place-items: center; width: 56px; height: 56px; border-radius: 50%; overflow: hidden; flex: none; font: 560 1.25rem/1 var(--font-display); color: var(--accent-ink); background: var(--accent-soft) var(--lqip, none) center / cover no-repeat; }
.nb-avatar img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 20%; }
.nb-subtitle { margin-top: var(--s-2); color: var(--muted); font-size: var(--fs-lg); max-width: 60ch; }

/* scheda immobile */
.nb-highlights { display: grid; gap: var(--s-2) var(--s-5); margin-top: var(--s-5); }
.nb-highlights li { display: flex; align-items: flex-start; gap: var(--s-2); font-weight: 560; }
.nb-highlights .gk-i { flex: none; width: 20px; height: 20px; margin-top: 2px; color: var(--accent-ink); }
@media (min-width: 640px) { .nb-highlights { grid-template-columns: 1fr 1fr; } }
.nb-featgroups { display: grid; gap: var(--s-5); }
.nb-featgroup h3 { margin-bottom: var(--s-3); font: 700 var(--fs-xs)/1 var(--font); letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }
.nb-visit { margin-top: var(--s-1); }
.nb-visit > summary { list-style: none; cursor: pointer; }
.nb-visit > summary::-webkit-details-marker { display: none; }
.nb-visit[open] > summary { margin-bottom: var(--s-4); }
.nb-mortgage { display: grid; gap: var(--s-5); padding: var(--s-5); }
@media (min-width: 720px) { .nb-mortgage { grid-template-columns: minmax(0, 1fr) minmax(0, 260px); align-items: center; } .nb-mortgage__note { grid-column: 1 / -1; } }
.nb-mortgage__fields { display: grid; gap: var(--s-4); }
.nb-mortgage__fields output { float: right; font-weight: 700; color: var(--accent-ink); font-variant-numeric: tabular-nums; }
.nb-range { width: 100%; height: 44px; accent-color: var(--accent); background: transparent; }
.nb-mortgage__result { display: grid; gap: 2px; padding: var(--s-4); border-radius: var(--r-lg); background: var(--accent-soft); text-align: center; }
.nb-mortgage__rate { font: 580 clamp(2rem, 1.4rem + 2vw, 2.75rem)/1.1 var(--font-display); color: var(--accent-ink); font-variant-numeric: tabular-nums; }

/* moduli */
.nb-leadform { gap: var(--s-3); }
.nb-formcard { display: grid; gap: var(--s-4); padding: clamp(var(--s-4), 3vw, var(--s-6)); border-radius: var(--r-xl); background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); }
.nb-two { display: grid; gap: var(--s-3); }
@media (min-width: 640px) { .nb-two { grid-template-columns: 1fr 1fr; } }
.nb-steps { counter-reset: step; display: grid; gap: var(--s-5); }
.nb-steps li { counter-increment: step; display: grid; grid-template-columns: auto 1fr; gap: var(--s-4); align-items: start; }
.nb-steps li::before { content: counter(step); display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; font: 600 1.5rem/1 var(--font-display); color: var(--accent-ink); background: var(--accent-soft); }
.nb-steps h3 { font: 640 var(--fs-lg)/1.2 var(--font); margin-bottom: 4px; }
.nb-steps p { color: var(--muted); font-size: var(--fs-sm); line-height: 1.55; }

/* piè di pagina con le sedi */
.nb-footer__card { display: grid; gap: var(--s-6); padding: clamp(var(--s-5), 4vw, var(--s-7)); border-radius: var(--r-xl); background: radial-gradient(90% 52% at 50% 0%, rgb(var(--accent-rgb) / .14), transparent 74%), var(--surface); box-shadow: inset 0 0 0 1px var(--line), inset 0 1px 0 var(--glass-hi), 0 40px 70px -50px var(--glass-shadow); }
.nb-footer__brand { display: grid; gap: var(--s-4); justify-items: start; align-content: start; }
.nb-footer__logo { display: flex; align-items: center; gap: var(--s-3); color: inherit; }
.nb-footer__emblem { width: 56px; height: 56px; }
.nb-footer__wordmark { font: 600 1.875rem/1 var(--font-display); letter-spacing: .14em; text-transform: uppercase; color: var(--text); }
.nb-footer__wordmark small { display: block; margin-top: 8px; font: 650 .6875rem/1 var(--font); letter-spacing: .42em; color: var(--accent-ink); }
.nb-footer__tagline { color: var(--muted); font-size: var(--fs-sm); line-height: 1.5; max-width: 38ch; }
.nb-footer__brand .gk-reach { --tile: 58px; width: 100%; max-width: 360px; justify-content: start; }
.nb-footer__address { display: grid; gap: 2px; font-style: normal; }
.nb-footer__address a { display: flex; align-items: flex-start; gap: var(--s-2); min-height: 40px; padding: 8px 0; font-size: var(--fs-sm); line-height: 1.35; color: var(--text); text-decoration: none; }
.nb-footer__address a:hover { color: var(--accent-ink); }
.nb-footer__address .gk-i { flex: none; width: 18px; height: 18px; margin-top: 1px; color: var(--accent-ink); }
.nb-footer__cols { display: grid; gap: var(--s-5) var(--s-4); grid-template-columns: repeat(2, minmax(0, 1fr)); align-content: start; }
.nb-footer__group h2 { margin-bottom: var(--s-3); }
.nb-footer__group ul { display: grid; gap: 0; }
.nb-footer__group a { display: block; padding: 7px 0; font-size: var(--fs-sm); color: var(--text); text-decoration: none; }
.nb-footer__group a:hover { color: var(--accent-ink); text-decoration: underline; text-underline-offset: 3px; }
.nb-footer__group--offices { grid-column: 1 / -1; }
.nb-footer__group--offices ul { grid-template-columns: 1fr 1fr; column-gap: var(--s-4); }
@media (min-width: 640px) { .nb-footer__cols { grid-template-columns: repeat(3, minmax(0, 1fr)); } .nb-footer__group--offices { grid-column: auto; } .nb-footer__group--offices ul { grid-template-columns: 1fr; } }
@media (min-width: 1000px) { .nb-footer__card { grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: var(--s-8); } }
.gk-footer a:not(.gk-btn) { text-decoration: none; }

/* i titoli piccoli restano in Inter (il serif è per i titoli grandi); le cifre del serif sono tutte «alte» (più leggibili nei prezzi) */
body { font-variant-numeric: lining-nums; }
.gk-pcard__title, .gk-tile h3, .mx-mcard__title, .nb-mcard__title { font-family: var(--font); font-weight: 650; letter-spacing: -.005em; }
.gk-pcard__title { font-size: 1.0625rem; }
.gk-tile h3 { font-size: 1.125rem; }
.gk-pcard__price, .gk-price, .nb-mcard__price { font-family: var(--font-display); font-variant-numeric: lining-nums; }

/* pagine di contenuto */
.nb-filterrow { display: grid; gap: var(--s-3); }
.nb-feature { display: grid; border-radius: var(--r-xl); overflow: hidden; background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); position: relative; }
.nb-feature__media { display: block; aspect-ratio: 16 / 10; overflow: hidden; background: var(--surface-3) var(--lqip, none) center / cover no-repeat; }
.nb-feature__media img { width: 100%; height: 100%; object-fit: cover; }
.nb-feature__body { display: grid; gap: var(--s-3); align-content: center; justify-items: start; padding: clamp(var(--s-5), 4vw, var(--s-7)); }
.nb-feature__body h2 { font: 560 var(--fs-2xl)/1.1 var(--font-display); letter-spacing: 0; }
.nb-feature__body h2 a { color: inherit; text-decoration: none; }
@media (min-width: 900px) { .nb-feature { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); } .nb-feature__media { aspect-ratio: auto; min-height: 380px; } }
.nb-article-page { max-width: 920px; }
.nb-article-head { display: grid; gap: var(--s-3); margin: var(--s-5) 0 var(--s-6); }
.nb-article-head h1 { font-size: var(--fs-3xl); font-weight: var(--dw, 560); }
.nb-article-cover { position: relative; aspect-ratio: 16 / 9; border-radius: var(--r-xl); overflow: hidden; margin-bottom: var(--s-7); background: var(--surface-3) var(--lqip, none) center / cover no-repeat; }
.nb-article-cover img { width: 100%; height: 100%; object-fit: cover; }
.nb-md { max-width: 70ch; margin-inline: auto; font-size: 1.125rem; line-height: 1.75; }
.nb-md h2 { margin: 2em 0 .6em; font: 560 var(--fs-xl)/1.15 var(--font-display); letter-spacing: 0; font-size: clamp(1.75rem, 1.4rem + 1vw, 2.2rem); }
.nb-md h3 { margin: 1.6em 0 .4em; font: 650 var(--fs-lg)/1.3 var(--font); }
.nb-md p + p, .nb-md ul, .nb-md ol { margin-top: 1em; }
.nb-md ul, .nb-md ol { padding-left: 1.3em; list-style: revert; }
.nb-md li + li { margin-top: .4em; }
.nb-md a { color: var(--accent-ink); text-decoration: underline; text-underline-offset: 3px; }
.nb-md strong { font-weight: 650; }
.nb-md blockquote { margin: 1.6em 0; padding: .4em 1.2em; border-left: 3px solid var(--gold); font: 500 1.375rem/1.45 var(--font-display); color: var(--text); }
.nb-author { display: grid; grid-template-columns: auto 1fr; gap: var(--s-3) var(--s-4); align-items: center; margin: var(--s-7) auto; max-width: 70ch; padding: var(--s-4) var(--s-5); border-radius: var(--r-lg); background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); }
.nb-author .gk-btn { grid-column: 1 / -1; justify-self: start; }
@media (min-width: 720px) { .nb-author { grid-template-columns: auto 1fr auto; } .nb-author .gk-btn { grid-column: auto; } }
.nb-cta-inline { display: grid; gap: var(--s-4); align-items: center; max-width: 70ch; margin: var(--s-7) auto; padding: var(--s-5); border-radius: var(--r-xl); }
@media (min-width: 720px) { .nb-cta-inline { grid-template-columns: 1fr auto; } }
.nb-values { display: grid; gap: var(--s-4); }
@media (min-width: 720px) { .nb-values { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1100px) { .nb-values { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.nb-value { display: grid; gap: var(--s-3); align-content: start; padding: var(--s-5); border-radius: var(--r-lg); background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); }
.nb-value h3 { font: 600 1.5rem/1.1 var(--font-display); letter-spacing: 0; }
.nb-value p { color: var(--muted); font-size: var(--fs-sm); line-height: 1.55; }
.nb-timeline { display: grid; gap: 0; border-left: 2px solid var(--gold-soft); margin-left: var(--s-3); }
.nb-timeline li { position: relative; display: grid; grid-template-columns: 5.5rem 1fr; gap: var(--s-3); align-items: baseline; padding: var(--s-2) 0 var(--s-2) var(--s-5); }
.nb-timeline li::before { content: ""; position: absolute; left: -7px; top: 1.1em; width: 12px; height: 12px; border-radius: 50%; background: var(--gold); box-shadow: 0 0 0 4px var(--bg); }
.nb-timeline b { font: 560 1.625rem/1 var(--font-display); color: var(--accent-ink); }
.nb-timeline a { color: var(--text); font-weight: 600; text-decoration: none; }
@media (min-width: 900px) { .nb-timeline { grid-template-columns: repeat(2, 1fr); column-gap: var(--s-8); border-left: 0; margin-left: 0; } .nb-timeline li { border-left: 2px solid var(--gold-soft); } }
.nb-stats-col { grid-template-columns: repeat(2, 1fr); align-self: center; }
.nb-servicegrid { display: grid; gap: var(--s-4); }
@media (min-width: 760px) { .nb-servicegrid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1100px) { .nb-servicegrid { grid-template-columns: repeat(3, 1fr); } }
.nb-service { align-content: start; }
.nb-service h2 { font: 600 1.75rem/1.1 var(--font-display); letter-spacing: 0; }
.nb-service__bullets { display: grid; gap: var(--s-2); margin-top: var(--s-3); font-size: var(--fs-sm); }
.nb-service__bullets li { display: flex; align-items: flex-start; gap: var(--s-2); color: var(--text); }
.nb-service__bullets .gk-i { flex: none; width: 18px; height: 18px; margin-top: 2px; color: var(--accent-ink); }
.nb-banner--square { min-height: 0; aspect-ratio: 4 / 3; padding: 0; }
.nb-eyebrow-icon { display: inline-grid; place-items: center; vertical-align: -5px; margin-right: 8px; width: 24px; height: 24px; }
.nb-highlights--one { grid-template-columns: 1fr; margin-top: 0; }
.nb-openings { display: grid; gap: var(--s-4); }
@media (min-width: 900px) { .nb-openings { grid-template-columns: repeat(3, 1fr); } }
.nb-opening { display: grid; gap: var(--s-2); align-content: start; justify-items: start; padding: var(--s-5); border-radius: var(--r-lg); background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); }
.nb-opening h3 { font: 600 1.5rem/1.1 var(--font-display); letter-spacing: 0; }
.nb-opening__where { display: flex; align-items: center; gap: 6px; color: var(--accent-ink); font-weight: 650; font-size: var(--fs-sm); }
.nb-ratingbar { display: flex; align-items: center; gap: var(--s-4); width: fit-content; padding: var(--s-4) var(--s-6); margin-bottom: var(--s-6); border-radius: var(--r-xl); background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); }
.nb-ratingbar__num { font: 560 3.25rem/1 var(--font-display); color: var(--accent-ink); }
@media (min-width: 900px) { .nb-reviews--all { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.nb-reviews--all { grid-template-columns: 1fr; }
@media (min-width: 640px) { .nb-reviews--all { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1000px) { .nb-reviews--all { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.nb-faqgroup { margin-top: var(--s-7); scroll-margin-top: calc(var(--header-h) + var(--sat) + var(--s-6)); }
.nb-faqgroup h2 { margin-bottom: var(--s-4); }
.nb-formcard { display: grid; padding: clamp(var(--s-4), 3vw, var(--s-6)); border-radius: var(--r-xl); background: var(--surface); box-shadow: inset 0 0 0 1px var(--line), 0 30px 60px -44px var(--glass-shadow); }
.nb-officelist { display: grid; gap: var(--s-3); }
@media (min-width: 720px) { .nb-officelist { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1100px) { .nb-officelist { grid-template-columns: repeat(3, 1fr); } }
.nb-officelist__item { display: grid; gap: 3px; padding: var(--s-4) var(--s-5); border-radius: var(--r-lg); background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); font-size: var(--fs-sm); }
.nb-officelist__item.is-on { box-shadow: inset 0 0 0 2px var(--accent); }
.nb-officelist__item h3 { font: 600 1.375rem/1.1 var(--font-display); letter-spacing: 0; }
.nb-officelist__item a { color: inherit; text-underline-offset: 3px; }
.nb-error { padding-block: var(--s-8); }
.nb-legal { max-width: 860px; }
.nb-legal section { margin-top: var(--s-6); }
.nb-legal section p { margin-top: var(--s-3); line-height: 1.7; max-width: 72ch; }
.nb-mortgage--page { max-width: 880px; }
.nb-agenthead .nb-portrait { max-width: 440px; }
.nb-servicehead .nb-banner { align-self: stretch; }
.nb-faqgroup .gk-faq { margin-top: 0; }
@media (max-width: 959px) { .nb-agenthead .nb-portrait { max-width: 320px; } }
.nb-mortgage__rate, .nb-mortgage__fields output { font-variant-numeric: lining-nums tabular-nums; }
/* cifre «alte» (lining) ovunque il serif mostra numeri: nei prezzi e nei dati devono leggersi al volo (il serif le disegna «basse» di serie) */
h1, h2, h3, h4, .gk-keyfact__value, .gk-price, .gk-pcard__price, .gk-stats b, .gk-spec b, .nb-timeline b, .nb-ratingbar__num, .nb-dest__label b, .nb-office__nums { font-variant-numeric: lining-nums; }

/* iscrizione alla newsletter (in cima al riquadro del piè di pagina) */
.nb-newsletter { grid-column: 1 / -1; display: grid; gap: var(--s-3) var(--s-6); align-items: center; padding-bottom: var(--s-5); border-bottom: 1px solid var(--line); }
.nb-newsletter__text p { color: var(--muted); font-size: var(--fs-sm); margin-top: 4px; max-width: 52ch; }
.nb-newsletter__fields { display: flex; flex-wrap: wrap; gap: var(--s-2); }
.nb-newsletter__fields .gk-input { flex: 1 1 220px; min-width: 0; }
.nb-newsletter__fine { grid-column: 1 / -1; color: var(--muted); font-size: var(--fs-xs); }
.nb-newsletter__fine a { color: inherit; }
@media (min-width: 900px) { .nb-newsletter { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); } .nb-newsletter__fine { grid-column: 2; margin-top: calc(var(--s-3) * -1); } }

/* stampa: la scheda dell'immobile senza testata, dock, barre e piè di pagina */
@media print {
  .gk-header, .gk-pagelogo__nav, .gk-dock, .gk-ctabar, .gk-footer, .gk-cookiebar, .gk-gallery__actions, .gk-gallery__count, .nb-mortgage, .gk-contact-card form, .gk-actions, dialog { display: none !important; }
  body { background: #fff !important; color: #000 !important; }
  .gk-gallery__track { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; }
  .gk-gallery__item:nth-child(n+7) { display: none; }
  a { color: inherit; text-decoration: none; }
}
.nb-officelist__item h3 a { text-decoration: none; }

/* riquadro finale della home: testo e foto affiancati (sul telefono la foto sta sopra) */
.gk-cta-band .nb-cta__text { display: grid; gap: var(--s-5); justify-items: start; align-content: center; }
.gk-cta-band.nb-cta { grid-template-columns: minmax(0, 1fr); gap: 0; padding: 0; justify-items: stretch; }
.nb-cta .nb-cta__text { position: relative; padding: clamp(var(--s-6), 6vw, var(--s-8)); }
.nb-cta__media { position: relative; order: -1; min-height: clamp(190px, 46vw, 280px); background: var(--lqip) center / cover no-repeat, var(--surface-2); }
.nb-cta__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
@media (min-width: 860px) { .gk-cta-band.nb-cta { grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); } .nb-cta__media { order: 0; min-height: 100%; } }
