/* ============================================================
   PSK 2026 — porting design Lovable (pixel-polish-95)
   Token e componenti portati 1:1 da src/styles.css + index.tsx.
   Colori ESATTI Lovable (oklch). Scope: .psk-lv (template standalone).
   ============================================================ */

.psk-lv {
  /* --- token Lovable esatti (src/styles.css :root) --- */
  --radius: 0.625rem;
  --background: oklch(0.985 0.005 80);
  --foreground: oklch(0.22 0.07 265);
  --ink: oklch(0.22 0.07 265);
  --ink-muted: oklch(0.52 0.04 265);
  --surface: oklch(1 0 0);
  --surface-2: oklch(0.965 0.008 250);
  --hairline: oklch(0.91 0.012 250);
  --brand: oklch(0.46 0.16 263);
  --brand-foreground: oklch(0.99 0 0);
  --shadow-elev: 0 24px 60px -30px rgba(11, 11, 15, 0.18);
  --shadow-form: 0 24px 60px -30px rgba(11, 11, 15, 0.12);
  --container: 80rem;

  font-family: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  font-feature-settings: "ss01", "cv11";
  -webkit-font-smoothing: antialiased;
  color: var(--ink);
  background: var(--background);
  line-height: 1.5;
}

/* reset scoped */
.psk-lv *,
.psk-lv *::before,
.psk-lv *::after { box-sizing: border-box; margin: 0; padding: 0; }
.psk-lv img { display: block; max-width: 100%; height: auto; }
/* link reset: solo link "nudi" ereditano; i link con classe (bottoni, card) tengono il proprio colore */
.psk-lv a { text-decoration: none; }
.psk-lv a:not([class]) { color: inherit; }
.psk-lv ul, .psk-lv ol { list-style: none; }
.psk-lv h1, .psk-lv h2, .psk-lv h3, .psk-lv h4 {
  letter-spacing: -0.022em;
  font-weight: 700;
  line-height: 1.05;
  hyphens: manual;
  -webkit-hyphens: manual;
  overflow-wrap: normal;
  word-break: normal;
  /* Fix specificity: tema parent sovrascrive color/font-family su h3 */
  color: inherit;
  font-family: inherit;
}
.psk-lv button { font: inherit; cursor: pointer; }

.psk-lv__container {
  width: 100%;
  max-width: var(--container);
  margin-inline: auto;
  padding-inline: 1.5rem;
}
@media (min-width: 1024px) {
  .psk-lv__container { padding-inline: 2.5rem; }
}

.psk-lv__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.75rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--ink-muted);
}
.psk-lv__dot {
  width: 0.375rem;
  height: 0.375rem;
  border-radius: 9999px;
  background: var(--brand);
  flex: none;
}

.psk-lv__section { border-bottom: 1px solid var(--hairline); }
.psk-lv__section--alt { background: var(--surface-2); }
.psk-lv__pad { padding-block: 5rem; }
@media (min-width: 1024px) { .psk-lv__pad { padding-block: 8rem; } }

.psk-lv__icon { width: 1rem; height: 1rem; flex: none; }

/* --- buttons (pill) --- */
.psk-lv-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  border-radius: 9999px;
  padding: 0.875rem 1.5rem;
  font-size: 0.875rem;
  font-weight: 500;
  transition: opacity .2s, background .2s, transform .2s;
  border: 1px solid transparent;
}
.psk-lv-btn svg { width: 1rem; height: 1rem; transition: transform .2s; }
.psk-lv-btn--brand { background: var(--brand); color: var(--brand-foreground); }
.psk-lv-btn--brand:hover { opacity: .95; }
.psk-lv-btn--brand:hover svg { transform: translateX(2px); }
.psk-lv-btn--ghost { background: var(--surface); color: var(--ink); border-color: var(--hairline); }
.psk-lv-btn--ghost:hover { background: var(--surface-2); }
.psk-lv-btn--ink { background: var(--ink); color: var(--background); }
.psk-lv-btn--ink:hover { opacity: .9; }
.psk-lv-btn--sm { padding: 0.5rem 1rem; font-size: 0.75rem; }
.psk-lv-btn--sm svg { width: 0.875rem; height: 0.875rem; }

/* ============================================================
   NAV (sticky, backdrop blur)
   ============================================================ */
.psk-lv-nav {
  position: sticky;
  top: 0;
  z-index: 50;
  border-bottom: 1px solid var(--hairline);
  background: color-mix(in oklch, var(--background) 80%, transparent);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}
.psk-lv-nav__inner {
  display: flex;
  height: 4rem;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}
.psk-lv-nav__brand {
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
  font-size: 0.875rem;
  font-weight: 700;
  letter-spacing: -0.02em;
}
.psk-lv-nav__brand img { height: 2.25rem; width: auto; }
.psk-lv-logo { font-size: 1.0625rem; font-weight: 800; letter-spacing: -0.04em; }
.psk-lv-nav__sub { display: none; color: var(--ink-muted); font-weight: 500; }
.psk-lv-nav__menu { display: none; align-items: center; gap: 2rem; font-size: 0.875rem; color: var(--ink-muted); }
.psk-lv-nav__menu a:hover { color: var(--ink); }
.psk-lv-nav__menu a.is-active { color: var(--ink); }
.psk-lv-nav__cta { display: inline-flex; }
.psk-lv-nav__burger {
  display: inline-flex; align-items: center; justify-content: center;
  width: 2.5rem; height: 2.5rem; border: 1px solid var(--hairline);
  border-radius: 9999px; background: var(--surface); color: var(--ink);
}
@media (min-width: 640px) { .psk-lv-nav__sub { display: inline; } }
@media (min-width: 768px) {
  .psk-lv-nav__menu { display: flex; }
  .psk-lv-nav__burger { display: none; }
}

/* ============================================================
   HERO (split 12-col)
   ============================================================ */
.psk-lv-hero__grid {
  display: grid;
  gap: 3rem;
  padding-block: 4rem;
}
.psk-lv-hero__title {
  margin-top: 1.5rem;
  font-size: 2.75rem;
  line-height: 1.02;
  letter-spacing: -0.025em;
}
.psk-lv-hero__title .muted { color: var(--ink-muted); }
.psk-lv-hero__lead {
  margin-top: 2rem;
  max-width: 32rem;
  font-size: 1rem;
  color: var(--ink-muted);
}
.psk-lv-hero__actions { margin-top: 2.5rem; display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem; }
.psk-lv-hero__stats {
  margin-top: 3.5rem;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
  border-top: 1px solid var(--hairline);
  padding-top: 2rem;
}
.psk-lv-hero__stat dt { font-size: 1.5rem; font-weight: 700; letter-spacing: -0.025em; }
.psk-lv-hero__stat dd { margin-top: 0.25rem; font-size: 0.75rem; color: var(--ink-muted); }
.psk-lv-hero__media {
  position: relative;
  overflow: hidden;
  border-radius: 1.5rem;
  border: 1px solid var(--hairline);
  background: var(--surface-2);
  /* aspect-ratio fisso: la foto NON governa lo spazio (foto alta = crop, non sballa il testo) */
  aspect-ratio: 5 / 4;
}
.psk-lv-hero__media > img { position: absolute; inset: 0; height: 100%; width: 100%; object-fit: cover; }
.psk-lv-hero__badge {
  position: absolute;
  bottom: 1.25rem; left: 1.25rem; right: 1.25rem;
  display: flex; align-items: center; justify-content: space-between;
  border-radius: 1rem;
  border: 1px solid rgba(255,255,255,.15);
  background: rgba(0,0,0,.4);
  padding: 0.75rem 1rem;
  font-size: 0.75rem; color: #fff;
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
}
.psk-lv-hero__badge .o80 { opacity: .8; }
.psk-lv-breadcrumb { display: flex; align-items: center; gap: 0.5rem; font-size: 0.75rem; color: var(--ink-muted); padding-top: 2.5rem; }
.psk-lv-breadcrumb .cur { color: var(--ink); }

@media (min-width: 640px) {
  .psk-lv-hero__title { font-size: 3.75rem; }
  .psk-lv-hero__lead { font-size: 1.125rem; }
  .psk-lv-hero__stat dt { font-size: 1.875rem; }
  .psk-lv-hero__stat dd { font-size: 0.875rem; }
}
@media (min-width: 1024px) {
  .psk-lv-hero__grid {
    grid-template-columns: repeat(12, 1fr);
    gap: 2.5rem;
    padding-block: 6rem;
  }
  .psk-lv-hero__col-l { grid-column: span 6; padding-top: 2rem; }
  .psk-lv-hero__col-r { grid-column: span 6; }
  .psk-lv-hero__title { font-size: 5rem; }
}

/* ============================================================
   SECTION HEADER (eyebrow + h2 + side text)
   ============================================================ */
.psk-lv-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1.5rem; }
.psk-lv-head__h { margin-top: 1rem; font-size: 2.25rem; letter-spacing: -0.025em; }
.psk-lv-head__h .muted { color: var(--ink-muted); }
.psk-lv-head__side { max-width: 24rem; font-size: 1rem; color: var(--ink-muted); }
@media (min-width: 640px) { .psk-lv-head__h { font-size: 3rem; } }

/* ============================================================
   SERVICES (bento)
   ============================================================ */
.psk-lv-services__grid { display: grid; gap: 2.5rem; }
.psk-lv-services__intro-h { margin-top: 1rem; font-size: 2.25rem; line-height: 1.05; letter-spacing: -0.025em; }
.psk-lv-services__intro-h .muted { color: var(--ink-muted); }
.psk-lv-services__intro-p { margin-top: 1.5rem; max-width: 28rem; color: var(--ink-muted); }
.psk-lv-services__cards { display: grid; gap: 1rem; }
.psk-lv-svc {
  position: relative;
  display: flex;
  flex-direction: column;
  border-radius: 1rem;
  border: 1px solid var(--hairline);
  background: var(--surface);
  padding: 1.75rem;
  transition: transform .2s, box-shadow .2s;
}
.psk-lv-svc:hover { transform: translateY(-2px); box-shadow: var(--shadow-elev); }
.psk-lv-svc__top { display: flex; align-items: center; justify-content: space-between; }
.psk-lv-svc__n { font-size: 0.75rem; font-weight: 500; color: var(--ink-muted); }
.psk-lv-svc__arrow { color: var(--ink-muted); }
.psk-lv-svc__arrow svg { width: 1rem; height: 1rem; transition: transform .2s; }
.psk-lv-svc:hover .psk-lv-svc__arrow svg { transform: translate(2px, -2px); }
.psk-lv-svc__title { margin-top: 2.5rem; font-size: 1.25rem; font-weight: 600; letter-spacing: -0.02em; }
.psk-lv-svc__body { margin-top: 0.75rem; font-size: 0.9375rem; line-height: 1.625; color: var(--ink-muted); }
.psk-lv-svc__tag {
  margin-top: auto;
  padding-top: 2.5rem;
  display: none;
}
.psk-lv-svc__tag span {
  display: inline-flex; align-items: center; gap: 0.5rem;
  border: 1px solid rgba(255,255,255,.2); border-radius: 9999px;
  padding: 0.25rem 0.75rem; font-size: 0.6875rem; text-transform: uppercase;
  letter-spacing: 0.05em; color: rgba(255,255,255,.8);
}
.psk-lv-svc__tag span i { width: 0.25rem; height: 0.25rem; border-radius: 9999px; background: var(--brand); display: inline-block; }

@media (min-width: 640px) {
  .psk-lv-services__cards { grid-template-columns: repeat(2, 1fr); }
  .psk-lv-svc--feature { grid-row: span 2; background: var(--ink); color: var(--background); }
  .psk-lv-svc--feature .psk-lv-svc__n,
  .psk-lv-svc--feature .psk-lv-svc__arrow,
  .psk-lv-svc--feature .psk-lv-svc__body { color: rgba(255,255,255,.7); }
  .psk-lv-svc--feature .psk-lv-svc__tag { display: block; }
}
@media (min-width: 1024px) {
  .psk-lv-services__grid { grid-template-columns: repeat(12, 1fr); }
  .psk-lv-services__intro { grid-column: span 5; }
  .psk-lv-services__right { grid-column: span 7; }
  .psk-lv-services__intro-h { font-size: 3rem; }
}

/* ============================================================
   GALLERY / REALIZZAZIONI wrapper (header above [psk_progetti])
   ============================================================ */
.psk-lv-gallery__grid { margin-top: 3rem; }

/* ============================================================
   PROPERTIES (immobili in vendita)
   ============================================================ */
.psk-lv-props__grid { margin-top: 3rem; display: grid; gap: 1.5rem; }
.psk-lv-prop {
  display: flex; flex-direction: column;
  overflow: hidden;
  border-radius: 1rem;
  border: 1px solid var(--hairline);
  background: var(--surface);
  transition: transform .2s, box-shadow .2s;
}
.psk-lv-prop:hover { transform: translateY(-2px); box-shadow: var(--shadow-elev); }
.psk-lv-prop__media { position: relative; aspect-ratio: 16 / 10; overflow: hidden; }
.psk-lv-prop__media img { height: 100%; width: 100%; object-fit: cover; transition: transform .7s; }
.psk-lv-prop:hover .psk-lv-prop__media img { transform: scale(1.03); }
.psk-lv-prop__badge {
  position: absolute; left: 1rem; top: 1rem;
  display: inline-flex; align-items: center; gap: 0.375rem;
  border-radius: 9999px;
  background: color-mix(in oklch, var(--background) 90%, transparent);
  padding: 0.25rem 0.75rem; font-size: 0.6875rem; font-weight: 500;
  text-transform: uppercase; letter-spacing: 0.05em; color: var(--ink);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
}
.psk-lv-prop__body { display: flex; flex: 1; flex-direction: column; padding: 1.75rem; }
.psk-lv-prop__head { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 0.75rem; }
.psk-lv-prop__title { font-size: 1.25rem; font-weight: 600; letter-spacing: -0.02em; }
.psk-lv-prop__loc { margin-top: 0.25rem; font-size: 0.875rem; color: var(--ink-muted); }
.psk-lv-prop__price { font-size: 1.5rem; font-weight: 700; letter-spacing: -0.025em; color: var(--brand); text-align: right; }
.psk-lv-prop__pricelabel { font-size: 0.6875rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--ink-muted); text-align: right; }
.psk-lv-prop__specs {
  margin-top: 1.5rem;
  display: grid; grid-template-columns: repeat(4, 1fr);
  border: 1px solid var(--hairline); border-radius: 0.75rem;
}
.psk-lv-prop__spec {
  display: flex; flex-direction: column; align-items: center; gap: 0.25rem;
  padding-block: 0.75rem;
}
.psk-lv-prop__spec + .psk-lv-prop__spec { border-left: 1px solid var(--hairline); }
.psk-lv-prop__spec svg { width: 1rem; height: 1rem; color: var(--ink-muted); }
.psk-lv-prop__spec span { font-size: 0.75rem; font-weight: 500; }
.psk-lv-prop__cta { margin-top: 1.5rem; display: inline-flex; align-items: center; gap: 0.5rem; font-size: 0.875rem; font-weight: 500; color: var(--ink); }
.psk-lv-prop__cta svg { width: 1rem; height: 1rem; transition: gap .2s; }
.psk-lv-prop:hover .psk-lv-prop__cta { gap: 0.75rem; }
.psk-lv-props__note { margin-top: 2rem; font-size: 0.75rem; color: var(--ink-muted); }
@media (min-width: 1024px) { .psk-lv-props__grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 640px) {
  .psk-lv-prop__title { font-size: 1.5rem; }
  .psk-lv-prop__price { font-size: 1.5rem; }
}

/* ============================================================
   CONTACT
   ============================================================ */
.psk-lv-contact__grid { display: grid; gap: 3rem; }
.psk-lv-contact__h { margin-top: 1rem; font-size: 2.25rem; line-height: 1.05; letter-spacing: -0.025em; }
.psk-lv-contact__p { margin-top: 1.5rem; max-width: 28rem; color: var(--ink-muted); }
.psk-lv-contact__list { margin-top: 2.5rem; display: flex; flex-direction: column; gap: 1rem; font-size: 0.875rem; }
.psk-lv-contact__list li { display: flex; align-items: flex-start; gap: 0.75rem; }
.psk-lv-contact__list svg { width: 1rem; height: 1rem; margin-top: 0.125rem; color: var(--brand); flex: none; }
.psk-lv-contact__list a:hover { color: var(--brand); }
.psk-lv-contact__pill {
  margin-top: 2rem; display: inline-flex; align-items: center; gap: 0.5rem;
  border: 1px solid var(--hairline); background: var(--surface-2);
  border-radius: 9999px; padding: 0.5rem 1rem; font-size: 0.75rem; font-weight: 500; color: var(--ink);
}
.psk-lv-contact__pill svg { width: 0.875rem; height: 0.875rem; color: var(--brand); }
.psk-lv-formcard {
  border-radius: 1.5rem; border: 1px solid var(--hairline); background: var(--surface);
  padding: 1.75rem; box-shadow: var(--shadow-form);
}
.psk-lv-form__row { display: grid; gap: 1.25rem; }
.psk-lv-field { display: block; }
.psk-lv-field + .psk-lv-field, .psk-lv-form__row + .psk-lv-field { margin-top: 1.25rem; }
.psk-lv-field > span { margin-bottom: 0.5rem; display: block; font-size: 0.75rem; font-weight: 500; color: var(--ink); }
.psk-lv-field > span .req { color: var(--brand); }
.psk-lv-input {
  width: 100%; border-radius: 0.75rem; border: 1px solid var(--hairline);
  background: var(--surface-2); padding: 0.75rem 1rem; font-size: 0.875rem;
  color: var(--ink); outline: none; transition: border .2s, background .2s;
  font-family: inherit;
}
.psk-lv-input::placeholder { color: var(--ink-muted); }
.psk-lv-input:focus { border-color: var(--ink); background: var(--surface); }
textarea.psk-lv-input { resize: none; }
.psk-lv-consent { margin-top: 1.5rem; display: flex; align-items: flex-start; gap: 0.75rem; font-size: 0.75rem; color: var(--ink-muted); }
.psk-lv-consent input { margin-top: 0.125rem; width: 1rem; height: 1rem; accent-color: oklch(0.46 0.16 263); }
.psk-lv-form__submit { margin-top: 2rem; width: 100%; justify-content: center; }
@media (min-width: 640px) {
  .psk-lv-formcard { padding: 2.5rem; }
  .psk-lv-form__row { grid-template-columns: repeat(2, 1fr); }
  .psk-lv-contact__h { font-size: 3rem; }
  .psk-lv-form__submit { width: auto; }
}
@media (min-width: 1024px) {
  .psk-lv-contact__grid { grid-template-columns: repeat(12, 1fr); gap: 4rem; }
  .psk-lv-contact__info { grid-column: span 5; }
  .psk-lv-contact__formwrap { grid-column: span 7; }
}

/* ============================================================
   FOOTER (dark)
   ============================================================ */
.psk-lv-footer { background: var(--ink); color: var(--background); }
.psk-lv-footer__pad { padding-block: 5rem; }
.psk-lv-footer__statement {
  max-width: 56rem; font-size: 1.875rem; line-height: 1.1; letter-spacing: -0.025em; font-weight: 700;
}
.psk-lv-footer__statement .brand { color: var(--brand); }
.psk-lv-footer__cols {
  margin-top: 4rem; display: grid; gap: 2.5rem;
  border-top: 1px solid rgba(255,255,255,.1); padding-top: 3rem;
}
.psk-lv-footer__logo { height: 3rem; width: auto; filter: brightness(0) invert(1); }
.psk-lv-footer__blurb { margin-top: 1.25rem; max-width: 20rem; font-size: 0.875rem; color: rgba(255,255,255,.6); }
.psk-lv-footer__cta { margin-top: 1.5rem; }
.psk-lv-footer h4 { font-size: 0.6875rem; font-weight: 500; text-transform: uppercase; letter-spacing: 0.18em; color: rgba(255,255,255,.5); }
.psk-lv-footer__col p { margin-top: 1rem; font-size: 0.875rem; color: rgba(255,255,255,.8); }
.psk-lv-footer__col ul { margin-top: 1rem; display: flex; flex-direction: column; gap: 0.5rem; font-size: 0.875rem; color: rgba(255,255,255,.8); }
.psk-lv-footer__col a:hover { color: var(--background); }
.psk-lv-footer__bottom {
  margin-top: 4rem; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: 0.75rem; border-top: 1px solid rgba(255,255,255,.1); padding-top: 1.5rem;
  font-size: 0.75rem; color: rgba(255,255,255,.5);
}
@media (min-width: 640px) {
  .psk-lv-footer__statement { font-size: 3rem; }
  .psk-lv-footer__cols { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 768px) { .psk-lv-footer__pad { padding-block: 7rem; } }
@media (min-width: 1024px) {
  .psk-lv-footer__statement { font-size: 3.75rem; }
  .psk-lv-footer__cols { grid-template-columns: repeat(4, 1fr); }
}

/* ============================================================
   BENEFITS (immagine sx + 4 card icona 2×2) — coperture.tsx
   ============================================================ */
.psk-lv-benefits__grid { display: grid; gap: 3rem; }
.psk-lv-benefits__img {
  position: relative; overflow: hidden;
  border-radius: 1.5rem; border: 1px solid var(--hairline); background: var(--surface-2);
}
.psk-lv-benefits__img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.psk-lv-benefits__info { }
.psk-lv-benefits__cards { margin-top: 2.5rem; display: grid; gap: 1.25rem; }
.psk-lv-benefits__card {
  border-radius: 1rem; border: 1px solid var(--hairline); background: var(--surface); padding: 1.5rem;
}
.psk-lv-benefits__card svg { width: 1.25rem; height: 1.25rem; color: var(--brand); }
.psk-lv-benefits__card h3 {
  margin-top: 1.25rem; font-size: 1rem; font-weight: 600; letter-spacing: -0.015em;
}
.psk-lv-benefits__card p { margin-top: 0.5rem; font-size: 0.9375rem; color: var(--ink-muted); }
@media (min-width: 640px) {
  .psk-lv-benefits__cards { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1024px) {
  .psk-lv-benefits__grid { grid-template-columns: repeat(12, 1fr); gap: 4rem; align-items: center; }
  .psk-lv-benefits__img  { grid-column: span 5; min-height: 36rem; }
  .psk-lv-benefits__info { grid-column: span 7; padding-top: 1rem; }
}

/* Fix specificity su .psk-lv-benefits__card h3 (tema override) */
.psk-lv .psk-lv-benefits__card h3 { color: var(--ink); font-family: inherit; font-size: 1rem; }

/* ============================================================
   PROCESS (4 step <ol>) — coperture.tsx
   ============================================================ */
.psk-lv-process__head {
  display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1.5rem;
}
.psk-lv-process__side { max-width: 24rem; font-size: 1rem; color: var(--ink-muted); }
.psk-lv-process__ol { margin-top: 3rem; display: grid; gap: 1rem; }
.psk-lv-process__step {
  display: flex; flex-direction: column;
  border-radius: 1rem; border: 1px solid var(--hairline); background: var(--surface);
  padding: 1.75rem; transition: transform .2s, box-shadow .2s;
}
.psk-lv-process__step:hover { transform: translateY(-2px); box-shadow: var(--shadow-elev); }
.psk-lv-process__n { font-size: 0.75rem; font-weight: 500; color: var(--ink-muted); }
.psk-lv-process__step h3 {
  margin-top: 2.5rem; font-size: 1.125rem; font-weight: 600; letter-spacing: -0.015em;
}
.psk-lv-process__step p { margin-top: 0.5rem; font-size: 0.9375rem; color: var(--ink-muted); }
@media (min-width: 640px) { .psk-lv-process__ol { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .psk-lv-process__ol { grid-template-columns: repeat(4, 1fr); } }

/* Fix specificity su .psk-lv-process__step h3 */
.psk-lv .psk-lv-process__step h3 { color: var(--ink); font-family: inherit; font-size: 1.125rem; }

/* ============================================================
   TIMELINE — chi-siamo-2026 (componente nuovo)
   Mobile: lista verticale sinistra (NON toccare).
   Desktop (>=1024px): orizzontale a 3 step, linea in alto + dot + card sotto.
   Struttura item: <content> <spacer+dot> <empty>
   ============================================================ */
.psk-lv-timeline { position: relative; margin-top: 3rem; }

/* Mobile: linea verticale sinistra */
.psk-lv-timeline::before {
  content: '';
  position: absolute; left: 0.5rem; top: 0; bottom: 0;
  width: 2px; background: var(--hairline);
}
.psk-lv-timeline__item { position: relative; padding-left: 2.5rem; padding-bottom: 2.5rem; }
.psk-lv-timeline__item:last-child { padding-bottom: 0; }

/* Su mobile: spacer/empty nascosti; dot posizionato sulla linea sinistra */
.psk-lv-timeline__spacer { display: none; }
.psk-lv-timeline__empty  { display: none; }
.psk-lv-timeline__content { display: block; }

/* Dot via ::before sull'item (mobile) */
.psk-lv-timeline__item::before {
  content: '';
  position: absolute; left: 0; top: 0.2rem;
  width: 1rem; height: 1rem; border-radius: 9999px;
  background: var(--brand); border: 2px solid var(--background);
  box-shadow: 0 0 0 2px var(--brand);
}

.psk-lv-timeline__dot { display: none; } /* solo desktop */

.psk-lv-timeline__year {
  font-size: 0.75rem; font-weight: 600; text-transform: uppercase;
  letter-spacing: 0.12em; color: var(--brand); margin-bottom: 0.375rem;
}
.psk-lv-timeline__title { font-size: 1.125rem; font-weight: 700; letter-spacing: -0.015em; }
.psk-lv-timeline__body { margin-top: 0.375rem; font-size: 0.875rem; color: var(--ink-muted); }

@media (min-width: 1024px) {
  /* Desktop: timeline ORIZZONTALE a 3 step (linea in alto + dot + card sotto) */
  .psk-lv-timeline {
    display: flex; flex-direction: row; gap: 2rem; margin-top: 3.5rem;
  }
  /* Linea orizzontale all'altezza dei dot, dietro alle colonne */
  .psk-lv-timeline::before {
    left: 0; right: 0; top: 0.5rem; bottom: auto;
    width: auto; height: 2px; transform: none; z-index: 0;
  }
  /* Niente dot mobile via ::before */
  .psk-lv-timeline__item::before { display: none; }

  .psk-lv-timeline__item {
    position: relative; z-index: 1;
    flex: 1 1 0; display: flex; flex-direction: column;
    padding: 0; text-align: left;
  }
  .psk-lv-timeline__item:last-child { padding-bottom: 0; }
  .psk-lv-timeline__empty { display: none; }

  /* Dot in alto, sulla linea */
  .psk-lv-timeline__spacer { display: block; order: 0; margin-bottom: 1.75rem; }
  .psk-lv-timeline__dot {
    display: block; width: 1rem; height: 1rem; border-radius: 9999px;
    background: var(--brand); border: 2px solid var(--background);
    box-shadow: 0 0 0 2px var(--brand); margin: 0;
  }

  /* Card contenuto sotto il dot */
  .psk-lv-timeline__content {
    order: 1; flex: 1;
    background: var(--surface); border: 1px solid var(--hairline);
    border-radius: var(--radius); padding: 1.5rem;
  }
  .psk-lv-timeline__year { font-size: 1.75rem; line-height: 1; margin-bottom: 0.5rem; }
  .psk-lv-timeline__title { font-size: 1.125rem; }
}

/* Fix specificity .psk-lv-timeline heading */
.psk-lv .psk-lv-timeline__title { color: var(--ink); font-family: inherit; }

/* ============================================================
   VALORI / VALUES (bento 2×2) — chi-siamo-2026
   ============================================================ */
.psk-lv-values__grid { margin-top: 3rem; display: grid; gap: 1rem; }
.psk-lv-value {
  border-radius: 1rem; border: 1px solid var(--hairline); background: var(--surface);
  padding: 1.75rem; display: flex; flex-direction: column; gap: 0.75rem;
}
.psk-lv-value svg { width: 1.25rem; height: 1.25rem; color: var(--brand); }
.psk-lv-value h3 { font-size: 1rem; font-weight: 600; letter-spacing: -0.015em; }
.psk-lv-value p  { font-size: 0.9375rem; color: var(--ink-muted); line-height: 1.6; }
@media (min-width: 640px)  { .psk-lv-values__grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .psk-lv-values__grid { grid-template-columns: repeat(4, 1fr); } }

/* Fix specificity */
.psk-lv .psk-lv-value h3 { color: var(--ink); font-family: inherit; font-size: 1rem; }

/* ============================================================
   FASE 0 — Fix specificità tema parent (v1.0.2)
   Root cause: regole tema (a:hover, input[type], h3 color) battono
   .psk-lv-* (0,1,0). Fix: prefisso .psk-lv alza a (0,2,0)+(0,2,1).
   ============================================================ */

/* Bug 1–2: bottoni <a> — tema a:hover sovrascrive color */
.psk-lv a.psk-lv-btn--ink            { color: var(--background); }
.psk-lv a.psk-lv-btn--ink:hover      { color: var(--background); }
.psk-lv a.psk-lv-btn--brand          { color: var(--brand-foreground); }
.psk-lv a.psk-lv-btn--brand:hover    { color: var(--brand-foreground); }
.psk-lv a.psk-lv-btn--ghost          { color: var(--ink); }
.psk-lv a.psk-lv-btn--ghost:hover    { color: var(--ink); }

/* Bug 3: titoli schede servizio — bump sm 1.25→1.5rem mancante */
.psk-lv .psk-lv-svc__title { font-size: 1.25rem; }
@media (min-width: 640px) {
  .psk-lv .psk-lv-svc__title { font-size: 1.5rem; }
}

/* Bug 4: card feature dark (ink bg) — heading color override tema */
@media (min-width: 640px) {
  .psk-lv .psk-lv-svc--feature .psk-lv-svc__title { color: var(--background); }
  .psk-lv .psk-lv-svc--feature .psk-lv-svc__body  { color: rgba(255,255,255,.7); }
}

/* Bug 5: campi form — input[type] tema (0,1,1) batte .psk-lv-input (0,1,0) */
.psk-lv .psk-lv-input {
  background: var(--surface-2);
  color: var(--ink);
  font-family: inherit;
}
.psk-lv .psk-lv-input:focus { background: var(--surface); }

/* Bug 6: footer — tema h3 sovrascrive color statement; link bassa visibilità */
.psk-lv .psk-lv-footer__statement        { color: var(--background); }
.psk-lv .psk-lv-footer__col a            { color: rgba(255,255,255,.8); }
.psk-lv .psk-lv-footer__col a:hover      { color: var(--background); }
.psk-lv .psk-lv-footer__col p            { color: rgba(255,255,255,.8); }

/* ============================================================
   FASE 3 — 2026-06-18
   ============================================================ */

/* Admin-bar: sticky nav compensa i 32px della toolbar WP */
body.admin-bar .psk-lv-nav { top: 32px; }

/* Logo nav: PNG trasparente navy su sfondo chiaro — no filtro */
.psk-lv-nav__logo-img {
  height: 2.5rem;
  width: auto;
  display: block;
}
/* Logo footer: stesso PNG, filtro per renderlo bianco su fondo navy */
.psk-lv-footer__logo {
  height: 2.75rem;
  width: auto;
  display: block;
  filter: brightness(0) invert(1);
}

/* Burger: blu brand (era surface/grigio) */
.psk-lv-nav__burger {
  background: var(--brand);
  color: var(--brand-foreground);
  border-color: var(--brand);
  width: 2.75rem;
  height: 2.75rem;
}
.psk-lv-nav__burger:hover { opacity: .9; }
.psk-lv-nav.nav-open .psk-lv-nav__burger { opacity: .85; }

/* Mobile menu: slide-down nascosto di default, visibile con .nav-open */
.psk-lv-mobile-menu {
  display: none;
  flex-direction: column;
  gap: 0;
  background: var(--surface);
  border-top: 1px solid var(--hairline);
  box-shadow: 0 8px 24px rgba(11,11,15,.1);
  padding: 1.25rem 1.5rem 1.5rem;
}
.psk-lv-nav.nav-open .psk-lv-mobile-menu {
  display: flex;
}
.psk-lv-mobile-menu a:not([class]) {
  display: block;
  font-size: 1rem;
  color: var(--ink-muted);
  padding: 0.625rem 0;
  border-bottom: 1px solid var(--hairline);
  font-weight: 500;
}
.psk-lv-mobile-menu a.is-active { color: var(--ink); }
.psk-lv-mobile-menu a:not([class]):hover { color: var(--ink); }
.psk-lv-mobile-menu__actions {
  margin-top: 1.25rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
}
/* Nascondi burger a desktop */
@media (min-width: 768px) {
  .psk-lv-mobile-menu { display: none !important; }
}

/* ============================================================
   CHI SIAMO 2026 — sezione intro 2 colonne (testo + foto Petru)
   ============================================================ */
.psk-lv-cs-intro__grid {
  display: grid;
  gap: 3rem;
}
.psk-lv-cs-intro__photo {
  overflow: hidden;
  border-radius: 1.5rem;
  border: 1px solid var(--hairline);
  background: var(--surface-2);
  max-height: 28rem;
}
.psk-lv-cs-intro__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
@media (min-width: 768px) {
  .psk-lv-cs-intro__grid {
    grid-template-columns: 1fr 1fr;
    align-items: start;
  }
  /* Foto Petru a sinistra, testo a destra (bilancia hero che ha img a dx). Mobile invariato. */
  .psk-lv-cs-intro__photo { order: 1; }
  .psk-lv-cs-intro__text  { order: 2; }
}

/* ============================================================
   CHI SIAMO 2026 — foto squadra wide
   ============================================================ */
.psk-lv-cs-team { overflow: hidden; padding: 0; }
.psk-lv-cs-team__img {
  height: 28rem;
  overflow: hidden;
}
.psk-lv-cs-team__img img {
  width: 100%;
  height: 28rem;
  object-fit: cover;
  object-position: center center;
  display: block;
}

/* ============================================================
   IMMOBILI — varianti badge + prop link + placeholder
   ============================================================ */
.psk-lv__dot--muted { background: var(--ink-muted); }
/* Badge "Realizzato": pill navy on-brand (no verde fuori palette), distinto dal cream "In vendita" */
.psk-lv-prop__badge--done {
  background: color-mix(in oklch, var(--ink) 88%, transparent);
  color: var(--background);
}
.psk-lv-prop__badge--done .psk-lv__dot--muted {
  background: color-mix(in oklch, var(--background) 70%, transparent);
}
.psk-lv-prop__link {
  display: block;
  text-decoration: none;
  color: inherit;
}
.psk-lv-prop__link:hover .psk-lv-prop__media img {
  transform: scale(1.03);
}
/* Card title link */
.psk-lv-prop__title a {
  color: inherit;
  text-decoration: none;
}
.psk-lv-prop__title a:hover { color: var(--brand); }

/* Placeholder card */
.psk-lv-prop--placeholder {
  border: 2px dashed var(--hairline);
  background: var(--surface);
  border-radius: var(--radius);
  display: flex;
  align-items: stretch;
}
.psk-lv-prop__placeholder {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 3rem 2rem;
  gap: 0.75rem;
  width: 100%;
}
.psk-lv-prop__placeholder svg { color: var(--ink-muted); margin-bottom: .5rem; }
.psk-lv-prop__placeholder h3 { font-size: 1.125rem; line-height: 1.3; color: var(--ink); }
.psk-lv-prop__placeholder p { font-size: 0.9375rem; color: var(--ink-muted); }

/* ============================================================
   SINGLE IMMOBILE — hero specs + gallery
   ============================================================ */
.psk-lv-imm-single__price {
  font-size: 2rem;
  font-weight: 700;
  color: var(--brand);
  margin-top: 1.5rem;
  letter-spacing: -0.02em;
}
.psk-lv-imm-single__pricelabel {
  font-size: 0.8125rem;
  color: var(--ink-muted);
  margin-top: .25rem;
}
.psk-lv-imm-single__specs {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem 1.25rem;
  margin-top: 1.5rem;
  list-style: none;
  padding: 0;
}
.psk-lv-imm-single__specs li {
  display: flex;
  align-items: center;
  gap: .375rem;
  font-size: .9375rem;
  color: var(--ink-muted);
}
.psk-lv-imm-single__specs li svg { flex-shrink: 0; color: var(--brand); }
.psk-lv-imm-single__content {
  margin-top: 1.5rem;
  font-size: 1rem;
  line-height: 1.75;
  color: var(--ink-muted);
  max-width: 48rem;
}
.psk-lv-imm-single__content p { margin-bottom: 1rem; }
.psk-lv-imm-single__gallery {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 0.75rem;
  margin-top: 2rem;
}
@media (min-width: 640px) {
  .psk-lv-imm-single__gallery { grid-template-columns: repeat(3, 1fr); }
}
@media (min-width: 1024px) {
  .psk-lv-imm-single__gallery { grid-template-columns: repeat(4, 1fr); }
}
.psk-lv-imm-single__gimg {
  display: block;
  overflow: hidden;
  border-radius: calc(var(--radius) * 0.75);
  aspect-ratio: 4/3;
}
.psk-lv-imm-single__gimg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .3s ease;
}
.psk-lv-imm-single__gimg:hover img { transform: scale(1.04); }

/* ============================================================
   LAVORI 2026 — override token Lovable su archive/single CPT
   Scoped a .psk-lv per non toccare pagine ThemeREX
   ============================================================ */
.psk-lv .psk-archive-wrap {
  max-width: var(--container);
  background: transparent;
  padding-top: 1.5rem;
}
.psk-lv .psk-archive-header {
  border-bottom-color: var(--hairline);
  margin-bottom: 2rem;
  padding-bottom: 1.5rem;
}
.psk-lv .psk-archive-header__title {
  color: var(--ink);
  font-family: inherit;
}
.psk-lv .psk-archive-header__sub { color: var(--ink-muted); }
.psk-lv .psk-filter {
  border-color: var(--hairline);
  color: var(--ink-muted);
  background: var(--surface);
}
.psk-lv .psk-filter:hover {
  border-color: var(--brand);
  color: var(--brand);
}
.psk-lv .psk-filter--active,
.psk-lv .psk-filter--active:hover {
  background: var(--brand);
  color: var(--brand-foreground);
  border-color: var(--brand);
}
.psk-lv .psk-card {
  background: var(--surface);
  border-color: var(--hairline);
  border-radius: var(--radius);
}
.psk-lv .psk-card:hover {
  border-color: var(--brand);
  box-shadow: var(--shadow-elev);
  transform: translateY(-2px);
}
.psk-lv .psk-card__meta { color: var(--ink-muted); }
.psk-lv .psk-card__title { color: var(--ink); font-family: inherit; }
.psk-lv .psk-card__excerpt { color: var(--ink-muted); }
.psk-lv .psk-scheda-tecnica { border-color: var(--hairline); }
.psk-lv .psk-scheda-item { border-color: var(--hairline); }
.psk-lv .psk-scheda-label { color: var(--ink-muted); }
.psk-lv .psk-scheda-value { color: var(--brand); }
.psk-lv .psk-progetto__title { color: var(--ink); font-family: inherit; }
.psk-lv .psk-breadcrumb a { color: var(--ink-muted); }
.psk-lv .psk-breadcrumb a:hover { color: var(--brand); }
.psk-lv .psk-cta-box {
  background: var(--surface-2);
  border: 1px solid var(--hairline);
  border-radius: var(--radius);
}
.psk-lv .psk-cta-box__text { color: var(--ink); }
.psk-lv .psk-cta-box__btn {
  background: var(--brand);
  color: var(--brand-foreground);
  border-radius: calc(var(--radius) * 0.75);
}
.psk-lv .psk-cta-box__btn:hover { background: oklch(0.38 0.16 263); }
.psk-lv .psk-nav-projects__link { color: var(--ink-muted); }
.psk-lv .psk-nav-projects__link:hover { color: var(--brand); }
.psk-lv .psk-cat-faq__title { color: var(--ink); font-family: inherit; }
.psk-lv .psk-faq-item summary { color: var(--ink); }
.psk-lv .psk-faq-item__a p { color: var(--ink-muted); }
/* Progetto descrizione */
.psk-lv .psk-progetto__descrizione { color: var(--ink-muted); line-height: 1.75; }
/* Wrap singolo — 2026 spacing */
.psk-lv .psk-progetto-single { max-width: var(--container); margin: 0 auto; }
.psk-lv .psk-progetto-content { padding: 2rem 1.5rem 4rem; }
@media (min-width: 768px) {
  .psk-lv .psk-progetto-content { padding: 2.5rem 2rem 5rem; }
}
/* Mobile grid 1-col, 2-col tablet */
@media (max-width: 767px) {
  .psk-lv .psk-grid { grid-template-columns: 1fr; }
}
@media (min-width: 640px) and (max-width: 1023px) {
  .psk-lv .psk-grid { grid-template-columns: repeat(2, 1fr); }
}

/* ============================================================
   SERVIZI 2026 — bento 5-card asimmetrico
   Grid 6 colonne: 4+2 prima riga, 2+2+2 seconda riga
   ============================================================ */
.psk-lv-bento {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 1rem;
  margin-top: 2.5rem;
}
.psk-lv-bento__card {
  position: relative;
  background: var(--surface);
  border: 1px solid var(--hairline);
  border-radius: 1.25rem;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  min-height: 22rem;
  transition: border-color .2s ease, box-shadow .2s ease;
}
.psk-lv-bento__card:hover {
  border-color: var(--brand);
  box-shadow: var(--shadow-elev);
}
.psk-lv-bento__card--span4 { grid-column: span 6; }  /* mobile: full width */
.psk-lv-bento__card--span2 { grid-column: span 6; }
@media (min-width: 640px) {
  .psk-lv-bento__card--span4 { grid-column: span 4; }
  .psk-lv-bento__card--span2 { grid-column: span 2; }
}
@media (max-width: 639px) {
  .psk-lv-bento { grid-template-columns: 1fr; }
  .psk-lv-bento__card { min-height: 18rem; }
}
/* Dark card (foto di sfondo) */
.psk-lv-bento__card--dark {
  border-color: transparent;
  background: var(--ink);
}
.psk-lv-bento__bgimg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  opacity: 1;
  transition: transform .6s ease;
}
.psk-lv-bento__card--dark:hover .psk-lv-bento__bgimg { transform: scale(1.04); }
.psk-lv-bento__overlay {
  position: absolute;
  inset: 0;
  /* scrim leggero: scuro solo dove sta il testo (alto = numero/titolo, basso = CTA), foto visibile al centro.
     Neutro (no hue navy) per non tingere di blu le foto calde. */
  background:
    linear-gradient(to bottom, oklch(0.14 0.01 265 / 0.62) 0%, oklch(0.14 0.01 265 / 0.12) 38%, oklch(0.14 0.01 265 / 0.12) 60%, oklch(0.14 0.01 265 / 0.68) 100%);
}
/* Inner content */
.psk-lv-bento__inner {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  flex: 1;
  padding: 2rem;
}
.psk-lv-bento__n {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  background: var(--surface-2);
  border-radius: 0.5rem;
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--ink-muted);
  margin-bottom: 1.25rem;
  letter-spacing: 0.04em;
}
.psk-lv-bento__card--dark .psk-lv-bento__n {
  background: oklch(1 0 0 / 0.15);
  color: oklch(1 0 0 / 0.8);
}
.psk-lv-bento__title {
  font-size: 1.1875rem;
  font-weight: 700;
  color: var(--ink);
  letter-spacing: -0.018em;
  line-height: 1.2;
  margin-bottom: 0.875rem;
}
.psk-lv-bento__card--dark .psk-lv-bento__title { color: oklch(0.98 0 0); text-shadow: 0 1px 12px oklch(0.12 0.01 265 / 0.55); }
.psk-lv-bento__body {
  font-size: 0.9rem;
  line-height: 1.7;
  color: var(--ink-muted);
  margin-bottom: 2rem;
  flex: 1;
}
.psk-lv-bento__card--dark .psk-lv-bento__body { color: oklch(0.92 0.01 265); text-shadow: 0 1px 10px oklch(0.12 0.01 265 / 0.5); }
.psk-lv-bento__cta {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--brand);
  text-decoration: none;
  transition: gap .15s ease;
}
.psk-lv-bento__cta:hover { gap: 0.625rem; }
.psk-lv-bento__card--dark .psk-lv-bento__cta { color: oklch(0.98 0 0); text-shadow: 0 1px 10px oklch(0.12 0.01 265 / 0.55); }

/* ============================================================
   CONTATTI 2026 — grid info + form
   ============================================================ */
.psk-lv-ct__grid {
  display: grid;
  gap: 3rem;
}
@media (min-width: 768px) {
  .psk-lv-ct__grid { grid-template-columns: 1fr 1fr; align-items: start; }
}
.psk-lv-ct__h {
  font-size: clamp(1.5rem, 2.5vw, 2rem);
  font-weight: 700;
  color: var(--ink);
  letter-spacing: -0.02em;
  margin-top: .75rem;
}
.psk-lv-ct__sub {
  font-size: 0.875rem;
  color: var(--ink-muted);
  margin-top: .25rem;
  margin-bottom: 2rem;
}
.psk-lv-ct__list { list-style: none; padding: 0; display: grid; gap: 1.25rem; }
.psk-lv-ct__item {
  display: flex;
  align-items: flex-start;
  gap: 0.875rem;
}
.psk-lv-ct__icon {
  flex-shrink: 0;
  width: 2.25rem;
  height: 2.25rem;
  background: var(--surface-2);
  border: 1px solid var(--hairline);
  border-radius: 0.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--brand);
}
.psk-lv-ct__item-label {
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-muted);
  margin-bottom: 0.2rem;
}
.psk-lv-ct__item-val { font-size: 0.9375rem; color: var(--ink); }
.psk-lv-ct__item-val--link { color: var(--brand); text-decoration: none; }
.psk-lv-ct__item-val--link:hover { text-decoration: underline; }
.psk-lv-ct__pill {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--ink-muted);
  background: var(--surface-2);
  border: 1px solid var(--hairline);
  border-radius: 999px;
  padding: 0.5rem 1rem;
  margin-top: 1.5rem;
  margin-bottom: 1.75rem;
}
.psk-lv-ct__map { margin-top: 1.5rem; }
.psk-lv-ct__map-link {
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  font-size: 0.8125rem;
  color: var(--ink-muted);
  margin-top: 0.5rem;
  text-decoration: none;
}
.psk-lv-ct__map-link:hover { color: var(--brand); }
.psk-lv-ct__formcard {
  border-radius: 1.25rem !important;
  padding: 2rem !important;
}
/* MetForm dentro contatti 2026 */
.psk-lv-ct__form .mf-form-wrapper,
.psk-lv-ct__form .metform-form { background: transparent !important; }
/* clock icon — non c'è in psk_lv_icon, usa map-pin fallback */

/* ============================================================
   FASE 4 — UI polish (2026-06-18)
   Nav personality, H1 scale, button unity, footer compact,
   mobile menu borders, prop card no-image placeholder.
   ============================================================ */

/* FIX SPECIFICITÀ IMG — `.psk-lv img{height:auto}` (0,1,1) e
   `.psk-lv-nav__brand img` (0,1,1) battono le classi logo (0,1,0).
   Prefisso .psk-lv porta a (0,2,0)/(0,2,1) → vincono. Causa "logo gigante footer". */
.psk-lv img.psk-lv-nav__logo-img { height: 3.25rem; width: auto; }
.psk-lv .psk-lv-footer__logo     { height: 2.75rem; width: auto; }

/* NAV — barra più alta, logo più grande, menu font leggibile */
.psk-lv-nav {
  box-shadow: 0 1px 16px rgba(11,11,15,.06);
}
.psk-lv-nav__inner {
  height: 4.5rem;
}
.psk-lv-nav__logo-img {
  height: 3.25rem;
}
.psk-lv-nav__menu {
  font-size: 1rem;
  font-weight: 500;
  gap: 2.5rem;
}

/* HERO TITLE — 5rem desktop era troppo pesante */
@media (min-width: 640px) {
  .psk-lv-hero__title { font-size: 3rem; }
}
@media (min-width: 1024px) {
  .psk-lv-hero__title { font-size: 3.75rem; }
}

/* BUTTONS — colore scuro uniforme (no discordanza brand vs ink) */
.psk-lv-btn--brand {
  background: var(--ink);
  color: var(--brand-foreground);
}
.psk-lv-btn--brand:hover { opacity: .88; background: var(--ink); }
.psk-lv a.psk-lv-btn--brand       { color: var(--brand-foreground); }
.psk-lv a.psk-lv-btn--brand:hover { color: var(--brand-foreground); }

/* Bottone footer su sfondo ink: serve contrasto proprio, non ink-su-ink invisibile */
.psk-lv-footer__cta {
  background: var(--brand);
  border: 1px solid rgba(255,255,255,.15);
}
.psk-lv-footer__cta:hover { opacity: .88; background: var(--brand); }

/* FOOTER — meno immenso */
.psk-lv-footer__pad      { padding-block: 3.5rem; }
.psk-lv-footer__statement{ font-size: 1.375rem; }
@media (min-width: 640px) {
  .psk-lv-footer__statement { font-size: 2rem; }
  .psk-lv-footer__pad       { padding-block: 4rem; }
}
@media (min-width: 768px) {
  .psk-lv-footer__pad { padding-block: 4.5rem; }
}
@media (min-width: 1024px) {
  .psk-lv-footer__statement { font-size: 2.5rem; }
}
.psk-lv-footer__cols { margin-top: 2.5rem; padding-top: 2rem; }

/* MOBILE MENU — bordo su TUTTI i link (non solo :not([class])) */
.psk-lv-mobile-menu a {
  border-bottom: 1px solid var(--hairline);
}
.psk-lv-mobile-menu a.is-active {
  color: var(--ink);
}
.psk-lv-mobile-menu__actions { margin-top: 1rem; padding-top: .25rem; }

/* PROP CARD — placeholder grigio quando nessuna immagine */
.psk-lv-prop__media--empty {
  background: var(--surface-2);
  display: flex;
  align-items: center;
  justify-content: center;
}
.psk-lv-prop__nophoto {
  opacity: .18;
  color: var(--ink-muted);
}

/* ============================================================
   FASE 5 — CLAIM SCALE DOWN (tutti) — 2026-06-18
   Feedback Filippo "claim giganti tutti". Riduzione ~20% scala
   titoli su TUTTE le pagine 2026. Prefisso .psk-lv → (0,2,0)
   batte ogni (0,1,0) base/FASE-4 a prescindere dall'ordine.
   ============================================================ */

/* HERO TITLE: 44px base · 40px tablet · 48px desktop (era 60px) */
.psk-lv .psk-lv-hero__title { font-size: 2.25rem; }
@media (min-width: 640px)  { .psk-lv .psk-lv-hero__title { font-size: 2.5rem; } }
@media (min-width: 1024px) { .psk-lv .psk-lv-hero__title { font-size: 3rem;  } }

/* SECTION HEADERS (head / services intro / contact): 28px base · 36px desktop (era 48px) */
.psk-lv .psk-lv-head__h,
.psk-lv .psk-lv-services__intro-h,
.psk-lv .psk-lv-contact__h { font-size: 1.75rem; }
@media (min-width: 640px) {
  .psk-lv .psk-lv-head__h,
  .psk-lv .psk-lv-services__intro-h,
  .psk-lv .psk-lv-contact__h { font-size: 2.25rem; }
}

/* FOOTER STATEMENT: 20px base · 28px tablet · 32px desktop (era 40px) */
.psk-lv .psk-lv-footer__statement { font-size: 1.25rem; }
@media (min-width: 640px)  { .psk-lv .psk-lv-footer__statement { font-size: 1.75rem; } }
@media (min-width: 1024px) { .psk-lv .psk-lv-footer__statement { font-size: 2rem;    } }

/* CONTATTI page heading: già clamp max 32px, lo tengo ma cap 28px desktop */
.psk-lv .psk-lv-ct__h { font-size: clamp(1.375rem, 2.2vw, 1.75rem); }

/* HERO BAND full-width — Chi Siamo / Servizi / Contatti (sorgente psk_page_hero).
   .psk-lv prefisso → batte reset `.psk-lv img{height:auto}`. */
.psk-lv .psk-lv-hero__band { border-top: 1px solid var(--hairline); overflow: hidden; height: 18rem; }
.psk-lv .psk-lv-hero__band img { width: 100%; height: 100%; object-fit: cover; object-position: center; display: block; }
@media (min-width: 768px) { .psk-lv .psk-lv-hero__band { height: 26rem; } }

/* FORM FIX (2026-06-18) — "campi disallineati": il 2° campo (Email) DENTRO
   la row grid 2-col ereditava `margin-top:1.25rem` da `.psk-lv-field + .psk-lv-field`
   (regola pensata per campi IMPILATI) → Email 20px sotto Nome. Nella row il
   `gap` gestisce già lo spazio: azzera il margin. Specificità (0,3,0) vince. */
.psk-lv-form__row > .psk-lv-field + .psk-lv-field { margin-top: 0; }

/* ============================================================
   FASE 6 — LAVORI 2026 ristrutturazione (2026-06-18)
   Archive header → hero left · card placeholder/badge/CTA arrow ·
   single eyebrow + CTA brand. Prefisso .psk-lv batte style.css base.
   ============================================================ */

/* --- ARCHIVE HEADER → hero 2026 left-aligned --- */
.psk-lv .psk-lv-work-arch__head { text-align: left; border-bottom: 1px solid var(--hairline); margin-bottom: 2.5rem; padding-bottom: 2rem; }
.psk-lv .psk-lv-work-arch__head .psk-lv-breadcrumb { padding-top: 0; margin-bottom: 1.25rem; }
.psk-lv .psk-lv-work-arch__title { font-size: clamp(2rem, 4vw, 3rem); line-height: 1.05; letter-spacing: -0.025em; margin: 0.5rem 0 0; }
.psk-lv .psk-lv-work-arch__sub { font-size: 1.0625rem; max-width: 42rem; margin: 1rem 0 0; line-height: 1.6; }
.psk-lv .psk-filters { justify-content: flex-start; margin-bottom: 2.5rem; }

/* --- CARD progetto: placeholder · badge categoria · CTA arrow --- */
.psk-lv .psk-card { border-radius: var(--radius); }
.psk-lv .psk-card__img-wrap--empty { display: flex; align-items: center; justify-content: center; background: var(--surface-2); }
.psk-lv .psk-card__placeholder { color: var(--ink-muted); opacity: .22; }
.psk-lv .psk-card__placeholder svg { width: 2.5rem; height: 2.5rem; }
.psk-lv .psk-lv-work__badge {
  position: absolute; left: .75rem; top: .75rem;
  display: inline-flex; align-items: center;
  border-radius: 9999px;
  background: color-mix(in oklch, var(--background) 90%, transparent);
  padding: .25rem .75rem; font-size: .6875rem; font-weight: 500;
  text-transform: uppercase; letter-spacing: .05em; color: var(--ink);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
}
.psk-lv .psk-card__meta { display: flex; align-items: center; gap: .375rem; color: var(--ink-muted); font-size: .8125rem; text-transform: none; letter-spacing: 0; font-weight: 500; }
.psk-lv .psk-card__meta svg { width: .8125rem; height: .8125rem; color: var(--brand); flex: none; }
.psk-lv .psk-lv-work__cta {
  margin-top: auto; padding-top: .75rem;
  display: inline-flex; align-items: center; gap: .375rem;
  font-size: .875rem; font-weight: 500; color: var(--ink);
}
.psk-lv .psk-lv-work__cta svg { width: 1rem; height: 1rem; transition: transform .2s; }
.psk-lv .psk-card:hover .psk-lv-work__cta { color: var(--brand); }
.psk-lv .psk-card:hover .psk-lv-work__cta svg { transform: translateX(3px); }

/* --- SINGLE: eyebrow categoria + CTA box brand uniforme (--ink) --- */
.psk-lv .psk-progetto__eyebrow { margin-bottom: .75rem; }
.psk-lv .psk-cta-box__btn { background: var(--ink); color: var(--background); }
.psk-lv .psk-cta-box__btn:hover { background: var(--ink); opacity: .9; }

/* ============================================================
   FASE 7 — BLOCK LIBRARY (port lab.tsx, vanilla)
   Blocchi: 1 Morphing Bento · 2 Flip Card · 3 Gallery Rail ·
   4 Sticky Stack · 5 Expand Bento · 8 Stat Counter ·
   16 Image Accordion · 18 Scroll Cinematic.
   Token ereditati da .psk-lv (descendant). JS: assets/psk-blocks.js.
   ============================================================ */

/* --- 1 · Morphing Bento --- */
.psk-lv-morph { display: grid; grid-template-columns: repeat(2, 1fr); gap: .75rem; }
@media (min-width: 768px) {
  .psk-lv-morph { grid-template-columns: repeat(4, 1fr); grid-auto-rows: 12rem; }
  .psk-lv-morph__tile:nth-child(1) { grid-column: span 2; grid-row: span 2; }
  .psk-lv-morph__tile:nth-child(2) { grid-column: span 2; }
}
.psk-lv-morph__tile {
  position: relative; min-height: 12rem; overflow: hidden;
  border-radius: 1rem; border: 1px solid var(--hairline);
  text-align: left; cursor: pointer; background: var(--ink);
  transition: transform .55s cubic-bezier(.22,1,.36,1), box-shadow .4s;
}
.psk-lv-morph__tile:hover, .psk-lv-morph__tile.is-active { z-index: 2; box-shadow: var(--shadow-elev); }
@media (min-width: 768px) { .psk-lv-morph__tile:hover, .psk-lv-morph__tile.is-active { transform: scale(1.03); } }
.psk-lv-morph__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: opacity .6s, transform .7s; }
.psk-lv-morph__img--b { opacity: 0; }
.psk-lv-morph__tile:hover .psk-lv-morph__img--a, .psk-lv-morph__tile.is-active .psk-lv-morph__img--a { opacity: 0; }
.psk-lv-morph__tile:hover .psk-lv-morph__img--b, .psk-lv-morph__tile.is-active .psk-lv-morph__img--b { opacity: 1; transform: scale(1.05); }
.psk-lv-morph__grad { position: absolute; inset: 0; background: linear-gradient(to top, color-mix(in oklch, var(--ink) 85%, transparent), color-mix(in oklch, var(--ink) 25%, transparent) 45%, transparent); }
.psk-lv-morph__body { position: relative; display: flex; flex-direction: column; justify-content: flex-end; height: 100%; padding: 1.25rem; }
.psk-lv-morph__tag { align-self: flex-start; margin-bottom: .5rem; border-radius: 9999px; border: 1px solid color-mix(in oklch, white 25%, transparent); background: color-mix(in oklch, white 10%, transparent); padding: .125rem .625rem; font-size: .625rem; font-weight: 500; text-transform: uppercase; letter-spacing: .06em; color: #fff; backdrop-filter: blur(6px); }
.psk-lv-morph__title { font-size: 1.125rem; font-weight: 600; color: #fff; }
.psk-lv-morph__desc { margin-top: .5rem; max-width: 28rem; font-size: .875rem; color: color-mix(in oklch, white 80%, transparent); opacity: 0; max-height: 0; transition: opacity .35s, max-height .35s; }
.psk-lv-morph__tile:hover .psk-lv-morph__desc, .psk-lv-morph__tile.is-active .psk-lv-morph__desc { opacity: 1; max-height: 6rem; }

/* --- 2 · Flip Card 3D --- */
.psk-lv-flips { display: grid; grid-template-columns: 1fr; gap: 1.25rem; }
@media (min-width: 768px) { .psk-lv-flips { grid-template-columns: repeat(3, 1fr); } }
.psk-lv-flip { position: relative; height: 22rem; perspective: 1400px; cursor: pointer; outline: none; }
.psk-lv-flip__inner { position: relative; height: 100%; width: 100%; transform-style: preserve-3d; transition: transform .75s cubic-bezier(.22,1,.36,1); }
.psk-lv-flip:hover .psk-lv-flip__inner, .psk-lv-flip:focus-visible .psk-lv-flip__inner, .psk-lv-flip.is-flipped .psk-lv-flip__inner { transform: rotateY(180deg); }
.psk-lv-flip__front, .psk-lv-flip__back { position: absolute; inset: 0; border-radius: 1rem; overflow: hidden; border: 1px solid var(--hairline); backface-visibility: hidden; -webkit-backface-visibility: hidden; }
.psk-lv-flip__front img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.psk-lv-flip__fgrad { position: absolute; inset: 0; background: linear-gradient(to top, color-mix(in oklch, var(--ink) 80%, transparent), transparent 60%); }
.psk-lv-flip__fcap { position: absolute; inset-inline: 0; bottom: 0; padding: 1.25rem; }
.psk-lv-flip__fcap h3 { font-size: 1.5rem; font-weight: 600; color: #fff; }
.psk-lv-flip__fcap span { font-size: .75rem; color: color-mix(in oklch, white 70%, transparent); }
.psk-lv-flip__back { transform: rotateY(180deg); display: flex; flex-direction: column; justify-content: space-between; padding: 1.5rem; background: var(--ink); color: var(--background); }
.psk-lv-flip__back .eyebrow { font-size: .6875rem; text-transform: uppercase; letter-spacing: .12em; color: color-mix(in oklch, var(--background) 60%, transparent); margin-bottom: .75rem; }
.psk-lv-flip__back p { font-size: .95rem; line-height: 1.6; }
.psk-lv-flip__back a { align-self: flex-start; display: inline-flex; align-items: center; gap: .5rem; border-radius: 9999px; background: var(--background); color: var(--ink); padding: .5rem 1rem; font-size: .75rem; font-weight: 500; text-decoration: none; }

/* --- 3 · Gallery Rail --- */
.psk-lv-rail__head { display: flex; align-items: center; gap: 1rem; margin-bottom: 1.25rem; }
.psk-lv-rail__progress { position: relative; height: 3px; flex: 1; overflow: hidden; border-radius: 9999px; background: var(--hairline); }
.psk-lv-rail__progress > span { position: absolute; inset: 0 auto 0 0; width: 6%; background: var(--ink); }
.psk-lv-rail__nav { display: flex; gap: .5rem; }
.psk-lv-rail__nav button { display: grid; place-items: center; width: 2.5rem; height: 2.5rem; border-radius: 9999px; border: 1px solid var(--hairline); background: var(--surface); color: var(--ink); cursor: pointer; transition: background .2s, color .2s; }
.psk-lv-rail__nav button:hover { background: var(--ink); color: var(--background); }
.psk-lv-rail__track { display: flex; gap: 1rem; overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 1rem; scrollbar-width: none; }
.psk-lv-rail__track::-webkit-scrollbar { display: none; }
.psk-lv-rail__item { position: relative; flex: none; width: 18rem; height: 24rem; scroll-snap-align: start; overflow: hidden; border-radius: 1rem; border: 1px solid var(--hairline); }
.psk-lv-rail__item img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .7s; }
.psk-lv-rail__item:hover img { transform: scale(1.08); }
.psk-lv-rail__cap { position: absolute; inset: auto 0 0 0; padding: 3rem 1.25rem 1.25rem; color: #fff; background: linear-gradient(to top, color-mix(in oklch, var(--ink) 95%, transparent) 0%, color-mix(in oklch, var(--ink) 80%, transparent) 55%, transparent 100%); }
.psk-lv-rail__cap .loc { font-size: .6875rem; font-weight: 600; text-transform: uppercase; letter-spacing: .12em; color: rgba(255,255,255,.92); text-shadow: 0 1px 6px rgba(0,0,0,.5); }
.psk-lv-rail__cap .ttl { margin-top: .25rem; font-size: 1.0625rem; font-weight: 600; text-shadow: 0 1px 6px rgba(0,0,0,.5); }

/* --- 4 · Sticky Stack --- */
.psk-lv-stack { display: grid; gap: 2.5rem; }
@media (min-width: 768px) { .psk-lv-stack { grid-template-columns: 1fr 1.2fr; } .psk-lv-stack__intro { position: sticky; top: 7rem; align-self: start; } }
.psk-lv-stack__list { display: flex; flex-direction: column; gap: 1.5rem; }
.psk-lv-stack__card { position: sticky; overflow: hidden; border-radius: 1rem; border: 1px solid var(--hairline); background: var(--surface); box-shadow: var(--shadow-elev); }
.psk-lv-stack__card:nth-child(1) { top: 6rem; }
.psk-lv-stack__card:nth-child(2) { top: 7rem; }
.psk-lv-stack__card:nth-child(3) { top: 8rem; }
.psk-lv-stack__card:nth-child(4) { top: 9rem; }
.psk-lv-stack__card:nth-child(5) { top: 10rem; }
.psk-lv-stack__grid { display: grid; grid-template-columns: 1fr; }
@media (min-width: 640px) { .psk-lv-stack__grid { grid-template-columns: 1fr 1.2fr; } }
.psk-lv-stack__txt { padding: 1.5rem; }
@media (min-width: 768px) { .psk-lv-stack__txt { padding: 2rem; } }
.psk-lv-stack__n { font-size: .6875rem; text-transform: uppercase; letter-spacing: .12em; color: var(--ink-muted); }
.psk-lv-stack__t { margin-top: .75rem; font-size: 1.5rem; font-weight: 600; }
.psk-lv-stack__b { margin-top: .75rem; font-size: .9rem; color: var(--ink-muted); }
.psk-lv-stack__media { position: relative; min-height: 11rem; }
.psk-lv-stack__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }

/* --- 5 · Expand Bento --- */
.psk-lv-xbento { display: grid; grid-template-columns: repeat(2, 1fr); gap: .75rem; }
@media (min-width: 768px) { .psk-lv-xbento { grid-template-columns: repeat(3, 1fr); } }
.psk-lv-xbento__tile { position: relative; overflow: hidden; border-radius: 1rem; border: 1px solid var(--hairline); aspect-ratio: 1 / 1; background: var(--ink); transition: aspect-ratio .4s; }
.psk-lv-xbento__tile.is-open { grid-column: span 2; aspect-ratio: 2 / 1; }
.psk-lv-xbento__tile img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.psk-lv-xbento__grad { position: absolute; inset: 0; background: linear-gradient(to top, color-mix(in oklch, var(--ink) 80%, transparent), transparent 55%); }
.psk-lv-xbento__bar { position: absolute; inset: auto 0 0 0; display: flex; flex-direction: column; gap: .5rem; padding: 1rem; color: #fff; }
.psk-lv-xbento__row { display: flex; align-items: flex-end; justify-content: space-between; gap: .5rem; }
.psk-lv-xbento__t { font-size: 1rem; font-weight: 600; }
.psk-lv-xbento__meta { margin-top: .25rem; font-size: .75rem; color: color-mix(in oklch, white 70%, transparent); opacity: 0; max-height: 0; transition: opacity .3s, max-height .3s; }
.psk-lv-xbento__tile.is-open .psk-lv-xbento__meta { opacity: 1; max-height: 2rem; }
.psk-lv-xbento__toggle { display: inline-flex; align-items: center; gap: .25rem; border: 0; cursor: pointer; border-radius: 9999px; background: color-mix(in oklch, white 15%, transparent); padding: .25rem .75rem; font-size: .6875rem; font-weight: 500; color: #fff; backdrop-filter: blur(6px); }
.psk-lv-xbento__dots { display: none; gap: .375rem; }
.psk-lv-xbento__tile.is-open .psk-lv-xbento__dots { display: flex; }
.psk-lv-xbento__dots button { height: 6px; width: 2rem; border: 0; cursor: pointer; border-radius: 9999px; background: color-mix(in oklch, white 30%, transparent); }
.psk-lv-xbento__dots button.is-active { background: #fff; }

/* --- Mosaic Gallery (Case realizzate, porting Lovable) --- */
.psk-lv-mosaic { display: grid; grid-template-columns: 1fr; gap: 1rem; margin-top: 3rem; }
@media (min-width: 640px) { .psk-lv-mosaic { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .psk-lv-mosaic { grid-template-columns: repeat(12, 1fr); grid-template-rows: repeat(2, minmax(0, 1fr)); } }
.psk-lv-mosaic__tile { position: relative; overflow: hidden; border-radius: 1rem; border: 1px solid var(--hairline); background: var(--surface-2); aspect-ratio: 4 / 3; }
.psk-lv-mosaic__tile--2, .psk-lv-mosaic__tile--3 { aspect-ratio: 1 / 1; }
@media (min-width: 1024px) {
  .psk-lv-mosaic__tile--1 { grid-column: span 6; grid-row: span 2; aspect-ratio: auto; min-height: 30rem; }
  .psk-lv-mosaic__tile--2, .psk-lv-mosaic__tile--3 { grid-column: span 3; }
  .psk-lv-mosaic__tile--4, .psk-lv-mosaic__tile--5, .psk-lv-mosaic__tile--6 { grid-column: span 4; }
}
.psk-lv-mosaic__tile img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .7s; }
.psk-lv-mosaic__tile:hover img { transform: scale(1.03); }
.psk-lv-mosaic__cap { position: absolute; inset-inline: .75rem; bottom: .75rem; display: flex; align-items: center; justify-content: space-between; gap: .5rem; border-radius: .75rem; background: color-mix(in oklch, var(--background) 85%, transparent); padding: .5rem .75rem; font-size: .75rem; font-weight: 500; color: var(--ink); opacity: 0; backdrop-filter: blur(6px); transition: opacity .3s; pointer-events: none; }
.psk-lv-mosaic__tile:hover .psk-lv-mosaic__cap { opacity: 1; }

/* --- 8 · Stat Counter + Ticker --- */
.psk-lv-stats { overflow: hidden; border-radius: 1.5rem; background: var(--ink); color: var(--background); }
.psk-lv-stats__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; background: color-mix(in oklch, white 10%, transparent); }
@media (min-width: 768px) { .psk-lv-stats__grid { grid-template-columns: repeat(4, 1fr); } }
.psk-lv-stat { background: var(--ink); padding: 2rem; }
.psk-lv-stat__val { font-size: clamp(2.5rem, 5vw, 3.75rem); font-weight: 600; letter-spacing: -.02em; line-height: 1; }
.psk-lv-stat__label { margin-top: .5rem; font-size: .875rem; font-weight: 500; }
.psk-lv-stat__sub { font-size: .75rem; color: color-mix(in oklch, var(--background) 60%, transparent); }
.psk-lv-ticker { overflow: hidden; border-top: 1px solid color-mix(in oklch, white 10%, transparent); }
.psk-lv-ticker__track { display: flex; width: max-content; gap: 3rem; white-space: nowrap; padding: 1rem 0; font-size: .8125rem; text-transform: uppercase; letter-spacing: .2em; color: color-mix(in oklch, var(--background) 60%, transparent); animation: psk-marquee 22s linear infinite; }
.psk-lv-ticker__track > span { display: flex; gap: 3rem; align-items: center; }
@keyframes psk-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* --- 16 · Image Accordion --- */
.psk-lv-acc { display: flex; gap: .5rem; height: 28rem; overflow: hidden; border-radius: 1.25rem; border: 1px solid var(--hairline); background: var(--ink); }
@media (min-width: 768px) { .psk-lv-acc { height: 32rem; } }
.psk-lv-acc__panel { position: relative; flex: 1 1 0; flex-basis: 0; overflow: hidden; padding: 0; border: 0; text-align: left; cursor: pointer; outline: none; transition: flex-grow .6s cubic-bezier(.22,1,.36,1); }
.psk-lv-acc__panel:hover, .psk-lv-acc__panel.is-active { flex-grow: 4; }
.psk-lv-acc__panel img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.psk-lv-acc__grad { position: absolute; inset: 0; background: linear-gradient(to top, color-mix(in oklch, var(--ink) 90%, transparent), color-mix(in oklch, var(--ink) 40%, transparent) 45%, color-mix(in oklch, var(--ink) 10%, transparent)); }
.psk-lv-acc__body { position: relative; display: flex; flex-direction: column; justify-content: flex-end; height: 100%; padding: 1.25rem; color: var(--background); }
.psk-lv-acc__num { font-size: .75rem; font-weight: 500; text-transform: uppercase; letter-spacing: .2em; opacity: 0; transition: opacity .3s; }
.psk-lv-acc__panel:hover .psk-lv-acc__num, .psk-lv-acc__panel.is-active .psk-lv-acc__num { opacity: .8; }
.psk-lv-acc__title { font-weight: 600; line-height: 1.1; font-size: 1.0625rem; writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap; }
.psk-lv-acc__panel:hover .psk-lv-acc__title, .psk-lv-acc__panel.is-active .psk-lv-acc__title { writing-mode: horizontal-tb; transform: none; font-size: clamp(1.5rem, 3vw, 2.25rem); }
.psk-lv-acc__desc { margin-top: .75rem; max-width: 28rem; font-size: .875rem; color: color-mix(in oklch, var(--background) 80%, transparent); opacity: 0; max-height: 0; transition: opacity .3s; }
.psk-lv-acc__panel:hover .psk-lv-acc__desc, .psk-lv-acc__panel.is-active .psk-lv-acc__desc { opacity: 1; max-height: 8rem; }

/* --- 18 · Scroll Cinematic --- */
.psk-lv-cine { position: relative; height: 300vh; }
.psk-lv-cine__sticky { position: sticky; top: 0; display: flex; height: 100vh; align-items: center; justify-content: center; overflow: hidden; background: var(--background); }
.psk-lv-cine__frame { position: relative; height: 80vh; width: 92%; max-width: 72rem; overflow: hidden; background: var(--ink); transform-origin: center; will-change: transform; }
.psk-lv-cine__frame > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .8; }
.psk-lv-cine__grad { position: absolute; inset: 0; background: linear-gradient(to top, var(--ink), color-mix(in oklch, var(--ink) 40%, transparent) 45%, transparent); }
.psk-lv-cine__content { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: flex-end; padding: 2rem; color: var(--background); }
@media (min-width: 768px) { .psk-lv-cine__content { padding: 3.5rem; } }
.psk-lv-cine__phase { display: flex; align-items: center; gap: .5rem; margin-bottom: .75rem; font-size: .6875rem; font-weight: 500; text-transform: uppercase; letter-spacing: .2em; color: color-mix(in oklch, var(--background) 70%, transparent); }
.psk-lv-cine__h { font-size: clamp(2.25rem, 5vw, 3.75rem); font-weight: 600; line-height: 1.05; }
.psk-lv-cine__p { margin-top: 1rem; max-width: 32rem; font-size: 1.0625rem; color: color-mix(in oklch, var(--background) 80%, transparent); }
.psk-lv-cine__dots { display: flex; gap: .5rem; margin-top: 2rem; }
.psk-lv-cine__dots span { height: 4px; width: 3rem; border-radius: 9999px; background: color-mix(in oklch, var(--background) 25%, transparent); transition: background .3s; }
.psk-lv-cine__dots span.is-on { background: var(--background); }

/* --- 20 · Works slider --- */
.psk-lv-slider { margin-top: 3rem; }
.psk-lv-slider__viewport { overflow: hidden; border-radius: 1.25rem; border: 1px solid var(--hairline); background: var(--ink); box-shadow: var(--shadow-elev); }
.psk-lv-slider__track { display: flex; will-change: transform; transition: transform .6s cubic-bezier(.22,.61,.36,1); touch-action: pan-y; }
.psk-lv-slider__track.is-dragging { transition: none; cursor: grabbing; }
.psk-lv-slider__slide { position: relative; flex: 0 0 100%; display: block; aspect-ratio: 16 / 9; overflow: hidden; color: #fff; }
.psk-lv-slider__slide img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s cubic-bezier(.22,.61,.36,1); }
.psk-lv-slider__slide:hover img { transform: scale(1.05); }
.psk-lv-slider__veil { position: absolute; inset: 0; background: linear-gradient(to top, color-mix(in oklch, var(--ink) 88%, transparent), color-mix(in oklch, var(--ink) 25%, transparent) 45%, transparent 70%); }
.psk-lv-slider__cap { position: absolute; inset: auto 0 0 0; padding: 1.75rem; display: flex; flex-direction: column; gap: .5rem; }
@media (min-width: 768px) { .psk-lv-slider__cap { padding: 2.75rem; } }
.psk-lv-slider__ey { font-size: .6875rem; font-weight: 500; text-transform: uppercase; letter-spacing: .18em; color: color-mix(in oklch, white 72%, transparent); }
.psk-lv-slider__ttl { color: #fff; font-family: inherit; font-size: clamp(1.5rem, 3.5vw, 2.5rem); font-weight: 600; line-height: 1.08; }
.psk-lv-slider__link { display: inline-flex; align-items: center; gap: .375rem; margin-top: .25rem; font-size: .875rem; font-weight: 500; color: color-mix(in oklch, white 88%, transparent); opacity: 0; transform: translateY(6px); transition: opacity .35s, transform .35s; }
.psk-lv-slider__slide:hover .psk-lv-slider__link { opacity: 1; transform: none; }
.psk-lv-slider__ctrl { margin-top: 1.5rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.psk-lv-slider__dots { display: flex; align-items: center; gap: .5rem; }
.psk-lv-slider__dot { width: 2.25rem; height: 4px; border: 0; padding: 0; border-radius: 9999px; background: var(--hairline); cursor: pointer; transition: background .3s, width .3s; }
.psk-lv-slider__dot:hover { background: color-mix(in oklch, var(--ink) 40%, transparent); }
.psk-lv-slider__dot.is-on { width: 3rem; background: var(--ink); }
.psk-lv-slider__nav { display: flex; gap: .5rem; }
.psk-lv-slider__btn { display: grid; place-items: center; width: 2.75rem; height: 2.75rem; border-radius: 9999px; border: 1px solid var(--hairline); background: var(--surface); color: var(--ink); cursor: pointer; transition: background .2s, color .2s, border-color .2s; }
.psk-lv-slider__btn:hover { background: var(--ink); color: var(--background); border-color: var(--ink); }
.psk-lv-slider__btn--prev svg { transform: rotate(180deg); }

/* --- reduced motion --- */
@media (prefers-reduced-motion: reduce) {
  .psk-lv-ticker__track { animation: none; }
  .psk-lv-morph__img, .psk-lv-flip__inner, .psk-lv-rail__item img, .psk-lv-morph__tile { transition: none; }
  .psk-lv-cine__frame { transform: none !important; border-radius: 0 !important; }
  .psk-lv-slider__track { transition: none; }
  .psk-lv-slider__slide img { transition: none; }
}

/* ============================================================
   HOME 2026 — hero stat overlay (count-up) + metodologia 3-step
   ============================================================ */
.psk-lv-hh__statcard {
  position: absolute; inset: auto 1.25rem 1.25rem 1.25rem;
  display: grid; grid-template-columns: repeat(3, 1fr); gap: .75rem;
  border-radius: 1rem; border: 1px solid rgba(255, 255, 255, .2);
  background: rgba(255, 255, 255, .12);
  backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
  padding: 1rem 1.25rem; color: #fff; text-align: center;
}
.psk-lv-hh__val { font-size: clamp(1.25rem, 2.5vw, 1.6rem); font-weight: 700; letter-spacing: -.02em; line-height: 1; }
.psk-lv-hh__lab { margin-top: .35rem; font-size: .625rem; text-transform: uppercase; letter-spacing: .08em; opacity: .85; }
/* Numeri hero: nascosti su mobile (non coprono la foto team) */
@media (max-width: 767px) { .psk-lv-hh__statcard { display: none; } }

/* Hero slideshow: riempie il media (5/4), riusa engine .psk-lv-slider */
.psk-lv-hero__slides { position: absolute; inset: 0; overflow: hidden; margin: 0; border: 0; border-radius: 0; box-shadow: none; background: transparent; }
.psk-lv-hero__slides .psk-lv-slider__viewport,
.psk-lv-hero__slides .psk-lv-slider__track { height: 100%; }
.psk-lv-hero__slides .psk-lv-slider__slide { aspect-ratio: auto; height: 100%; }
.psk-lv-hero__dots { position: absolute; top: 1rem; right: 1rem; z-index: 2; display: flex; gap: .375rem; }
.psk-lv-hero__dot { width: 1.75rem; height: 4px; border: 0; padding: 0; border-radius: 9999px; background: rgba(255,255,255,.45); cursor: pointer; transition: background .3s, width .3s; }
.psk-lv-hero__dot.is-on { width: 2.25rem; background: #fff; }

/* ============================================================
   PORTFOLIO: desktop = rail orizzontale, mobile = reels verticale
   ============================================================ */
.psk-lv-only-mobile { display: block; }
.psk-lv-only-desktop { display: none; }
@media (min-width: 768px) {
  .psk-lv-only-mobile { display: none; }
  .psk-lv-only-desktop { display: block; }
}

.psk-lv-reels { position: relative; }
.psk-lv-reels__viewport { position: relative; height: 78vh; max-height: 640px; overflow: hidden; border-radius: 1.25rem; border: 1px solid var(--hairline); background: var(--ink); }
.psk-lv-reels__track { display: flex; flex-direction: column; height: 100%; will-change: transform; transition: transform .5s cubic-bezier(.22,.61,.36,1); touch-action: none; }
.psk-lv-reels__track.is-dragging { transition: none; }
.psk-lv-reels__slide { position: relative; flex: 0 0 100%; height: 100%; overflow: hidden; }
.psk-lv-reels__slide img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.psk-lv-reels__veil { position: absolute; inset: 0; background: linear-gradient(to top, oklch(0.22 0.07 265 / .92) 0%, oklch(0.22 0.07 265 / .35) 45%, oklch(0.22 0.07 265 / .12) 100%); }
.psk-lv-reels__cap { position: absolute; inset: auto 0 0 0; padding: 1.5rem 1.5rem 2.5rem; color: #fff; }
.psk-lv-reels__loc { font-size: .75rem; font-weight: 600; text-transform: uppercase; letter-spacing: .14em; color: #fff; opacity: .92; }
.psk-lv-reels__ttl { display: block; margin-top: .4rem; font-size: 1.5rem; font-weight: 700; line-height: 1.15; color: #fff; text-shadow: 0 1px 12px rgba(0, 0, 0, .35); }
.psk-lv-reels__slide--cta img { opacity: .5; }
.psk-lv-reels__ctabox { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 1.25rem; padding: 2rem; color: #fff; }
.psk-lv-reels__ctabox h3 { font-size: 1.6rem; font-weight: 700; line-height: 1.15; color: #fff; }
.psk-lv-reels__ctabtns { display: flex; flex-direction: column; gap: .6rem; width: 100%; }
.psk-lv-reels__cta { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; border-radius: 9999px; padding: .85rem 1.4rem; font-size: .9rem; font-weight: 600; text-decoration: none; transition: opacity .2s, background .2s; }
.psk-lv-reels__cta--primary { background: #fff; color: var(--ink); }
.psk-lv-reels__cta--primary:hover { opacity: .9; }
.psk-lv-reels__cta--alt { background: rgba(255, 255, 255, .08); color: #fff; border: 1px solid rgba(255, 255, 255, .55); }
.psk-lv-reels__cta--alt:hover { background: rgba(255, 255, 255, .18); }
.psk-lv-reels__dots { position: absolute; top: 50%; right: .75rem; transform: translateY(-50%); z-index: 3; display: flex; flex-direction: column; gap: .4rem; }
.psk-lv-reels__dots [data-slider-dot] { width: 4px; height: 1.5rem; border: 0; padding: 0; border-radius: 9999px; background: rgba(255, 255, 255, .4); cursor: pointer; transition: background .3s; }
.psk-lv-reels__dots [data-slider-dot].is-on { background: #fff; }
.psk-lv-reels__hint { position: absolute; left: 50%; bottom: 1rem; transform: translateX(-50%); z-index: 3; display: flex; flex-direction: column; align-items: center; gap: .1rem; color: #fff; font-size: .625rem; font-weight: 600; text-transform: uppercase; letter-spacing: .14em; pointer-events: none; animation: psk-reels-bounce 1.6s ease-in-out infinite; }
.psk-lv-reels__hint svg { transform: rotate(-90deg); }
.psk-lv-reels__hint.is-hidden { opacity: 0; transition: opacity .4s; }
@keyframes psk-reels-bounce { 0%, 100% { transform: translate(-50%, 0); } 50% { transform: translate(-50%, -8px); } }
@media (prefers-reduced-motion: reduce) {
  .psk-lv-reels__track { transition: none; }
  .psk-lv-reels__hint { animation: none; }
}

.psk-lv-method__grid { display: grid; gap: 1rem; }
@media (min-width: 768px) { .psk-lv-method__grid { grid-template-columns: repeat(3, 1fr); } }
.psk-lv-method__card {
  display: flex; flex-direction: column;
  border-radius: 1.25rem; border: 1px solid var(--hairline); background: var(--surface);
  padding: 1.75rem; transition: transform .2s, box-shadow .2s;
}
.psk-lv-method__card:hover { transform: translateY(-2px); box-shadow: var(--shadow-elev); }
.psk-lv-method__top { display: flex; align-items: center; justify-content: space-between; }
.psk-lv-method__n { font-size: .6875rem; font-weight: 500; text-transform: uppercase; letter-spacing: .12em; color: var(--ink-muted); }
.psk-lv-method__icon { color: var(--brand); display: inline-flex; }
.psk-lv-method__t { margin-top: 2.5rem; font-size: 1.125rem; font-weight: 600; letter-spacing: -.015em; }
.psk-lv-method__b { margin-top: .75rem; font-size: .9rem; line-height: 1.6; color: var(--ink-muted); }
