/* Bodoni Moda by Owen Earl, SIL Open Font License. Served locally. */
@font-face {
  font-family: 'Bodoni Moda'; font-style: normal; font-weight: 400 900; font-display: swap;
  src: url('../assets/fonts/bodoni-moda-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'Bodoni Moda'; font-style: normal; font-weight: 400 900; font-display: swap;
  src: url('../assets/fonts/bodoni-moda-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
  font-family: 'Bodoni Moda'; font-style: italic; font-weight: 400 900; font-display: swap;
  src: url('../assets/fonts/bodoni-moda-italic-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face {
  font-family: 'Bodoni Moda'; font-style: italic; font-weight: 400 900; font-display: swap;
  src: url('../assets/fonts/bodoni-moda-italic-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

:root { --font-editorial: 'Bodoni Moda', 'Didot', 'Bodoni MT', Georgia, serif; }
.hero-title, .hero-quote, .section-title:not(#studio-heading), .cat-card-title,
.journey-heading h2, .quote-text, .gallery-hero-title, .gallery-cta-card h2,
.collection-heading, .collection-title, .gallery-collection h2, .paper-title,
.paper-brand .samae-title, .paper-monogram, .paper-note,
.legal-page h1, .legal-page h2 {
  font-family: var(--font-editorial);
  font-weight: 400;
  font-optical-sizing: auto;
  letter-spacing: -.035em;
}
.hero-title { line-height: 1.12; font-size: clamp(3rem, 5.45vw, 5rem); }
.hero-quote { font-size: clamp(1.25rem, 2.05vw, 1.9rem); }
.section-title:not(#studio-heading) { line-height: 1.2; }
.journey-heading h2 { font-size: clamp(2.3rem, 4.25vw, 4.4rem); line-height: 1.12; letter-spacing: -.04em; max-width: 560px; }
.cat-card-title { font-size: 1.6rem; line-height: 1.25; letter-spacing: -.045em; }

.site-header { transition: background-color .25s, padding .25s, box-shadow .25s; }
.brand-logo-img { height: 68px !important; }
.footer-brand img, .footer-logo img { height: 100px !important; max-width: 100%; margin-bottom: 1.25rem; }
.footer-brand p { max-width: 340px; }

/* A shared row for every kind of copy keeps all five categories level,
   including when an edited description becomes longer than its neighbours. */
@supports (grid-template-rows: subgrid) {
  .editorial-categories-grid { row-gap: 0; }
  .editorial-cat-card {
    display: grid;
    grid-template-rows: subgrid;
    grid-row: span 5;
    height: auto;
    min-height: 480px;
    padding: 0 1.15rem 1.75rem;
    margin-bottom: 1.25rem;
  }
  .editorial-cat-card::before { content: ''; grid-row: 1; min-height: 170px; }
  .cat-card-content {
    display: grid;
    grid-template-rows: subgrid;
    grid-row: 2 / span 4;
    padding: 0;
    gap: 0;
  }
  .cat-card-num { margin-top: 1.5rem; padding-bottom: .55rem; align-self: end; }
  .cat-card-title { padding-bottom: .6rem; align-self: start; }
  .cat-card-desc { padding-bottom: 1rem; margin: 0; align-self: start; }
  .cat-card-action { align-self: end; padding-top: .4rem; }
}
@supports not (grid-template-rows: subgrid) {
  .cat-card-num { min-height: 2.2rem; }
  .cat-card-desc { min-height: 6.25rem; }
}

.quote-container { grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: 3.5rem; }
.quote-content { padding-right: 0; min-width: 0; text-align: left; }
.quote-text {
  white-space: pre-line;
  text-align: left;
  text-wrap: pretty;
  font-size: clamp(1.6rem, 3.05vw, 3rem);
  line-height: 1.4;
  letter-spacing: -.045em;
}
.quote-quick-contacts { justify-content: flex-start; }

/* The underline and arrow use compositor transforms, rather than animating
   widths or gaps. These details never need their own JavaScript frame loop. */
.nav-link::after { width: 100%; transform: scaleX(0); transform-origin: left; transition: transform .28s ease; }
.nav-link:hover::after, .nav-link.active::after, .nav-link:focus-visible::after { width: 100%; transform: scaleX(1); }
.cat-card-action i, .hero-ctas .btn i, .journey-skip { transition: transform .35s cubic-bezier(.2,.7,.2,1); }
.cat-card-action { transition: color .25s; }
.editorial-cat-card:hover .cat-card-action { gap: .5rem; }
.reveal-on-scroll { transition-property: opacity, transform; }
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .editorial-cat-card:hover .cat-card-action i, .hero-ctas .btn:hover i { transform: translateX(4px); }
  .journey-skip:hover { transform: translateY(-3px); }
  .editorial-cat-card:hover .cat-card-img-wrap img { transform: scale(1.045); }
}
@media (max-width: 1320px) {
  .brand-logo-img { height: 62px !important; }
}
@media (max-width: 992px) {
  .quote-container { grid-template-columns: 1fr; gap: 3rem; }
  .quote-content { width: min(100%, 740px); margin-inline: auto; }
}
@media (max-width: 768px) {
  .journey-heading h2 { font-size: clamp(2.15rem, 7.2vw, 3.1rem); }
  .cat-card-title { font-size: 2rem; }
  .editorial-cat-card { min-height: 460px; }
  .cat-card-desc { max-width: 430px; }
}
@media (max-width: 600px) {
  .site-header .header-inner { padding-inline: 14px; gap: 10px; }
  .brand-logo-img { height: 54px !important; }
  .brand-name { font-size: .71rem; letter-spacing: .105em; }
  .brand-sub { font-size: .43rem; letter-spacing: .16em; }
  .brand-logo { gap: 7px; }
  .hero-title { font-size: clamp(2.5rem, 9.15vw, 3.4rem); }
  .quote-text { font-size: clamp(1.25rem, 5.85vw, 2.15rem); letter-spacing: -.05em; }
  .footer-brand img, .footer-logo img { height: 88px !important; }
}
@media (max-width: 380px) {
  .brand-name { font-size: .61rem; }
  .brand-sub { font-size: .39rem; letter-spacing: .1em; }
  .site-header .header-inner { gap: 7px; padding-inline: 11px; }
  .nav-actions { gap: 3px; }
  .nav-actions > .btn { padding-inline: 8px; font-size: .55rem; }
}
@media (prefers-reduced-motion: reduce) {
  .cat-card-img-wrap img, .cat-card-action i, .hero-ctas .btn i { transform: none !important; }
  .motion-ready .reveal-on-scroll { opacity: 1; transform: none; transition: none; }
}

/* Public contact action follows the reference: a compact icon on the right edge. */
.whatsapp-float { position: fixed; z-index: 90; top: 145px; right: max(22px, env(safe-area-inset-right)); width: 54px; height: 54px; display: grid; place-items: center; border-radius: 50%; color: #fff; background: #169d65; box-shadow: 0 6px 24px #0004; transition: transform .22s, background-color .22s; }
.whatsapp-float:visited { color: #fff; }
.whatsapp-float:hover { transform: translateY(-3px); background: #128554; }
.whatsapp-float:focus-visible { outline: 3px solid #fff; outline-offset: 4px; }
.menu-open .whatsapp-float { visibility: hidden; }
.hero-calendar-link { margin: 18px auto 0; font-size: .82rem; letter-spacing: .12em; }
.hero-content { padding-bottom: 100px; }
.footer-legal { display: flex; flex-wrap: wrap; gap: 1.2rem; }
.footer-legal a, .footer-legal a:visited { color: var(--text-muted, #b6b1a9); text-decoration: none; }
.footer-legal a:hover, .footer-legal a:focus-visible { color: var(--gold, #c7ab80); }
.legal-header { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding-block: 30px; }
.legal-main { max-width: 920px; padding-top: 80px; padding-bottom: 120px; min-height: 65vh; }
.legal-main h1 { font-size: clamp(3rem, 7vw, 5rem); margin: 15px 0 35px; }
.legal-draft-notice { color: #c7ab80; padding: 24px; border: 1px solid #c7ab8033; }
.legal-copy { white-space: pre-wrap; overflow-wrap: anywhere; line-height: 1.9; font-size: 1rem; }
.legal-copy:empty { display: none; }
.legal-footer { border-top: 1px solid #ffffff1a; padding-block: 28px; color: #b6b1a9; }
.legal-footer p { margin-top: 24px; font-size: .8rem; }
@media (max-width: 600px) {
  .whatsapp-float { top: 124px; right: 16px; width: 48px; height: 48px; }
  .whatsapp-float svg { width: 26px; height: 26px; }
  .hero-calendar-link { width: 100%; font-size: .69rem; padding-inline: 12px; letter-spacing: .1em; }
  .hero-content { padding-bottom: 115px; }
  .legal-header { padding-right: 20px; }
  .legal-header .brand-name { display: none; }
  .legal-main { padding-top: 60px; }
}
@media (prefers-reduced-motion: reduce) { .whatsapp-float { transition: none; } }
