    /* ═══════════════════════════════════════════════════
   PALETTE — la caixa mana per al lloc, l'art dels
   components mana per a les corporacions i les fases.
   Cap color fora d'aquestes variables.
═══════════════════════════════════════════════════ */
    :root {
      --parch-light: #F8EFDE;  /* marfil de la caixa */
      --parch-mid: #F2E6CF;
      --parch-dark: #E3D3B5;
      --parch-deep: #C9B48E;
      --card: #FCF7EC;
      --ink: #112B42;
      --ink-soft: #3E5268;
      --ink-faint: #7D8996;
      --red: #A84A26;          /* el taronja del foc i del sol */
      --red-mid: #C25A2E;
      --gold: #C9834F;         /* coure dels filets */
      --gold-light: #DDA57C;
      --gold-pale: #F3E3CC;
      --gold-deep: #9A5C31;
      --sea: #3A5F80;
      --navy: #112B42;         /* el blau de la caixa */
      --navy-soft: #24476A;
      --shadow: rgba(17, 43, 66, 0.14);
      --navy-deep: #0A1C2D;
      --is-mallorca: #2F6F5E;
      --is-menorca: #B8862A;
      --is-eivissa: #C2507A;
      --is-formentera: #2C5D8A;
      --corsari: #1D1A24;
      --foc: #C25A2E;
      --fum: #6B6A66;
      --phase-yellow: #9A7800;
      --phase-green: #2F6F5E;
      --phase-brown: #9A5C31;
      --phase-grey: #5A5A5A;
      --display: 'Cormorant Garamond', Georgia, serif;
      --text: 'EB Garamond', Georgia, serif;
    }

    *,
    *::before,
    *::after {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }

    html {
      scroll-behavior: smooth;
    }

    body {
      background: var(--parch-light);
      color: var(--ink);
      font-family: var(--text);
      font-size: 20px;
      line-height: 1.75;
      overflow-x: hidden;
    }

    /* Texture noise */
    body::before {
      content: '';
      position: fixed;
      inset: 0;
      pointer-events: none;
      z-index: 0;
      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='400' height='400'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
    }


    nav,
    .hero,
    .page-content,
    footer,
    .modal-overlay {
      position: relative;
      z-index: 1;
    }

    /* ══════════════════════════════════════
   TOP NAV
══════════════════════════════════════ */
    nav {
      position: fixed;
      top: 0;
      left: 0;
      right: 0;
      z-index: 500;
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding: 0 28px;
      height: 50px;
      background: rgba(12, 34, 56, 0.96);
      border-bottom: 2px solid var(--gold);
      backdrop-filter: blur(6px);
      box-shadow: 0 2px 16px rgba(12, 34, 56, 0.28);
    }

    .nav-brand {
      display: flex;
      align-items: center;
      gap: 9px;
      text-decoration: none;
      cursor: pointer;
      white-space: nowrap;
      transition: opacity .2s;
    }

    .nb-year {
      font-family: var(--display);
      font-size: 13px;
      line-height: 1;
      padding: 5px 6px 4px;
      background: var(--red);
      color: var(--gold-pale);
      box-shadow: inset 0 0 0 1px rgba(238, 220, 168, .3);
      font-weight: 600;
    }

    .nb-name {
      font-family: var(--text);
      font-size: 13px;
      font-weight: 700;
      letter-spacing: 3.5px;
      text-transform: uppercase;
      color: var(--gold-pale);
    }

    .nav-brand:hover {
      opacity: .75;
    }

    .nav-links {
      display: flex;
      align-items: center;
      gap: 2px;
      flex: 1;
      justify-content: center;
    }

    .nav-link {
      background: transparent;
      border: none;
      font-family: var(--text);
      font-size: 10px;
      letter-spacing: 2px;
      color: rgba(238, 220, 168, .72);
      text-transform: uppercase;
      padding: 6px 12px;
      cursor: pointer;
      transition: all .2s;
      white-space: nowrap;
    }

    .nav-link:hover {
      color: var(--gold-pale);
    }

    .nav-link,
    .nav-link:visited,
    .nav-link:hover,
    .nav-link:focus {
      text-decoration: none;
    }

    .nav-link.active {
      color: var(--gold-pale);
      font-weight: 700;
    }

    .nav-langs {
      display: flex;
      gap: 3px;
    }

    .page-content {
      background: var(--parch-light);
    }

    /* ══════════════════════════════════════
   ORNAMENTAL UTILS
══════════════════════════════════════ */
    .framed {
      position: relative;
      border: 2px solid var(--gold);
      box-shadow: inset 0 0 0 5px var(--parch-light), inset 0 0 0 7px var(--parch-mid), 4px 4px 20px var(--shadow);
    }

    .framed::before {
      content: '';
      position: absolute;
      inset: 10px;
      border: 1px solid rgba(176, 138, 62, 0.4);
      pointer-events: none;
      z-index: 1;
    }

    .framed::after {
      content: '\2726';
      font-size: 11px;
      color: var(--gold-light);
      position: absolute;
      top: 3px;
      left: 50%;
      transform: translateX(-50%);
      pointer-events: none;
      z-index: 2;
    }

    /* ══════════════════════════════════════
   HERO
══════════════════════════════════════ */
    .hero {
      min-height: 100vh;
      display: grid;
      grid-template-columns: 1fr 1fr;
      align-items: center;
      padding-top: 50px;
      /* el degradat va a sang, però les dues columnes es queden centrades */
      padding-inline: max(0px, calc((100% - 1440px) / 2));
      background: linear-gradient(160deg, var(--card) 0%, var(--parch-light) 45%, var(--parch-mid) 100%);
      overflow: hidden;
    }

    /* Doble filet marí + or, com el marc imprès de la caixa */
    .hero::before,
    .hero::after {
      content: '';
      position: absolute;
      pointer-events: none;
    }

    .hero::before {
      inset: 72px 26px 26px;
      border: 1px solid rgba(21, 49, 78, .28);
    }

    .hero::after {
      inset: 78px 32px 32px;
      border: 1px solid rgba(176, 138, 62, .5);
    }

    .hero-left {
      padding: 60px 36px 60px 60px;
    }

    .hero-eyebrow {
      display: flex;
      align-items: center;
      gap: 12px;
      font-family: var(--text);
      font-size: 11px;
      letter-spacing: 5px;
      color: var(--navy);
      text-transform: uppercase;
      margin-bottom: 16px;
    }

    .eyebrow-rule {
      flex: 0 0 36px;
      height: 1px;
      background: var(--navy);
    }

    /* Rètol del hero: nom, bloc vermell i cua */
    .hero-year {
      display: flex;
      flex-direction: column;
      gap: 12px;
      font-family: var(--display);
      font-size: clamp(50px, 8vw, 104px);
      font-weight: 600;
      line-height: 0.88;
      letter-spacing: -.015em;
      text-transform: uppercase;
      color: var(--navy);
      text-shadow: 3px 4px 0 rgba(21, 49, 78, 0.14), 6px 7px 16px rgba(21, 49, 78, 0.07);
      animation: slideUp 1s cubic-bezier(.16, 1, .3, 1) both;
    }

    .hy-line {
      display: flex;
      align-items: center;
      gap: 14px;
      flex-wrap: wrap;
    }

    .hy-badge {
      background: var(--red);
      color: var(--parch-mid);
      font-size: .4em;
      line-height: 1;
      padding: .17em .26em .13em;
      box-shadow: inset 0 0 0 2px rgba(244, 238, 225, .3);
      text-shadow: none;
    }

    .hy-tail {
      font-size: .27em;
      line-height: 1.1;
      letter-spacing: 0;
      text-transform: none;
      text-shadow: none;
    }

    .hero-title {
      font-family: var(--text);
      font-size: clamp(18px, 2.5vw, 28px);
      font-weight: 700;
      color: var(--ink);
      letter-spacing: 2px;
      line-height: 1.2;
      font-variant-caps: all-small-caps;
    }

    .hero-ornament {
      display: flex;
      align-items: center;
      gap: 10px;
      margin: 22px 0;
      animation: slideUp 1s .3s cubic-bezier(.16, 1, .3, 1) both;
    }

    .ornament-line {
      flex: 1;
      height: 1px;
      background: linear-gradient(90deg, var(--navy), transparent);
      max-width: 140px;
    }

    .ornament-sym {
      font-size: 20px;
      color: var(--navy);
      line-height: 1;
    }

    .hero-desc {
      font-family: var(--text);
      font-size: clamp(15px, 1.4vw, 17px);
      color: var(--ink-soft);
      line-height: 1.85;
      max-width: 440px;
      animation: slideUp 1s .45s cubic-bezier(.16, 1, .3, 1) both;
    }

    .hero-badges {
      display: flex;
      flex-wrap: wrap;
      gap: 8px;
      margin-top: 28px;
      animation: slideUp 1s .6s cubic-bezier(.16, 1, .3, 1) both;
    }

    .badge {
      border: 1px solid var(--gold);
      color: var(--navy);
      padding: 5px 16px;
      font-family: var(--text);
      font-size: 11px;
      letter-spacing: 2px;
      background: var(--card);
      text-transform: uppercase;
    }

    .hero-right {
      display: flex;
      justify-content: center;
      align-items: center;
      padding: 20px 24px 20px 0;
      animation: slideRight 1.2s .2s cubic-bezier(.16, 1, .3, 1) both;
    }

    .box-wrap {
      position: relative;
      max-width: 660px;
      width: 100%;
      padding-right: 30%;
    }

    .box-wrap img {
      width: 100%;
      display: block;
      filter: drop-shadow(8px 14px 30px rgba(21, 49, 78, 0.3)) drop-shadow(0 3px 8px rgba(21, 49, 78, 0.16));
      transition: transform .6s ease, filter .6s ease;
    }

    .box-front {
      position: relative;
      z-index: 2;
      transform: rotate(-1.5deg);
    }

    .box-wrap .box-back {
      position: absolute;
      z-index: 1;
      right: 0;
      bottom: 4%;
      width: 58%;
      transform: rotate(5deg);
    }

    .box-wrap:hover .box-front {
      transform: rotate(-3deg) translateX(-4%) scale(1.03);
      filter: drop-shadow(8px 14px 36px rgba(21, 49, 78, 0.3)) drop-shadow(0 0 22px rgba(176, 138, 62, 0.25));
    }

    .box-wrap:hover .box-back {
      transform: rotate(9deg) translateX(8%) scale(1.03);
    }

    .box-glow {
      position: absolute;
      bottom: -20px;
      left: 50%;
      transform: translateX(-50%);
      width: 70%;
      height: 40px;
      background: radial-gradient(ellipse, rgba(21, 49, 78, 0.22), transparent 70%);
      filter: blur(12px);
    }

    /* ══════════════════════════════════════
   SECTION WRAPPERS
══════════════════════════════════════ */
    .section-wrap {
      padding: 72px 0;
      background: var(--parch-light);
    }

    .section-wrap.alt {
      background: linear-gradient(180deg, var(--card) 0%, var(--parch-mid) 50%, var(--card) 100%);
    }

    .section-inner {
      max-width: 1080px;
      margin: 0 auto;
      padding: 0 36px;
    }

    .sec-label {
      font-family: var(--text);
      font-size: 11px;
      letter-spacing: 5px;
      color: var(--navy);
      text-transform: uppercase;
      display: flex;
      align-items: center;
      gap: 12px;
      margin-bottom: 10px;
    }

    .sec-label-line {
      flex: 0 0 50px;
      height: 1px;
      background: linear-gradient(90deg, var(--gold), var(--navy));
    }

    .sec-title {
      font-family: var(--display);
      font-size: clamp(21px, 2.6vw, 34px);
      font-weight: 600;
      letter-spacing: -.01em;
      text-transform: uppercase;
      color: var(--navy);
      line-height: 1.12;
      margin-bottom: 14px;
    }

    .sec-title .accent {
      color: var(--red);
    }

    .sec-rule {
      display: flex;
      align-items: center;
      gap: 10px;
      margin-bottom: 32px;
    }

    .sec-rule-line {
      flex: 0 0 60px;
      height: 2px;
      background: linear-gradient(90deg, var(--navy), var(--gold));
    }

    .sec-rule-dot {
      width: 7px;
      height: 7px;
      transform: rotate(45deg);
      background: var(--gold);
    }

    .full-divider {
      position: relative;
      z-index: 1;
      height: 28px;
      background: var(--parch-mid);
      display: flex;
      align-items: center;
      justify-content: center;
      overflow: hidden;
    }

    .full-divider::before,
    .full-divider::after {
      content: '';
      position: absolute;
      left: 0;
      right: 0;
      height: 1px;
      background: var(--gold);
    }

    .full-divider::before {
      top: 6px;
    }

    .full-divider::after {
      bottom: 6px;
    }

    .div-ornament {
      font-family: var(--text);
      font-size: 11px;
      letter-spacing: 8px;
      color: var(--gold);
      background: var(--parch-mid);
      padding: 0 16px;
      font-variant-caps: all-small-caps;
    }

    /* ══════════════════════════════════════
   MAP
══════════════════════════════════════ */
    .map-wrap {
      position: relative;
      margin: 28px auto 0;
      max-width: 680px;
    }

    .map-wrap img {
      width: 100%;
      height: auto;
      display: block;
      border: 8px solid var(--card);
      outline: 1px solid var(--gold);
      box-shadow: 4px 6px 24px var(--shadow);
      cursor: zoom-in;
    }

    /* ══════════════════════════════════════
   CARDS (overview)
══════════════════════════════════════ */
    .cards-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
      gap: 20px;
      margin-top: 24px;
    }

    .card {
      background: var(--card);
      border: 1px solid var(--parch-dark);
      padding: 24px 20px;
      position: relative;
      box-shadow: 2px 2px 10px var(--shadow);
      transition: transform .3s, box-shadow .3s;
    }

    .card:hover {
      transform: translateY(-4px);
      box-shadow: 4px 6px 18px var(--shadow);
    }

    .card::after {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      height: 3px;
      background: linear-gradient(90deg, var(--navy), var(--gold), transparent);
    }

    .card-icon {
      font-size: 28px;
      margin-bottom: 10px;
      display: block;
    }

    .card-icon i,
    .comp-ico i,
    .bk-ch-t i,
    .nav-mobile-link i,
    .div-ornament i,
    .contact-icon i,
    .agr-role i {
      color: inherit;
    }

    .card-title {
      font-family: var(--text);
      font-size: 15px;
      font-weight: 600;
      color: var(--ink);
      margin-bottom: 8px;
      letter-spacing: .5px;
      font-variant-caps: all-small-caps;
    }

    .card-text {
      font-family: var(--text);
      font-size: 17px;
      color: var(--ink-soft);
      line-height: 1.7;
    }

    /* ══════════════════════════════════════
   FLOW STEPS
══════════════════════════════════════ */
    .flow-steps {
      margin-top: 28px;
      display: flex;
      flex-direction: column;
      position: relative;
    }

    .flow-steps::before {
      content: '';
      position: absolute;
      left: 27px;
      top: 20px;
      bottom: 20px;
      width: 2px;
      background: linear-gradient(180deg, var(--navy), var(--gold), var(--sea));
    }

    .flow-step {
      display: flex;
      gap: 24px;
      align-items: flex-start;
      padding: 16px 0;
    }

    .step-num {
      width: 56px;
      height: 56px;
      border-radius: 50%;
      display: flex;
      align-items: center;
      justify-content: center;
      font-family: var(--text);
      font-size: 19px;
      font-weight: 700;
      flex-shrink: 0;
      border: 2px solid var(--gold);
      background: var(--card);
      color: var(--navy);
      position: relative;
      z-index: 1;
      font-variant-caps: all-small-caps;
    }

    .step-title {
      font-family: var(--text);
      font-size: 16px;
      font-weight: 600;
      color: var(--ink);
      margin-bottom: 5px;
      padding-top: 6px;
      font-variant-caps: all-small-caps;
    }

    .step-desc {
      font-family: var(--text);
      font-size: 17px;
      color: var(--ink-soft);
      line-height: 1.7;
    }

    .step-desc strong {
      color: var(--ink);
    }

    .event-step {
      background: var(--card);
      border: 2px solid var(--gold);
      color: var(--navy);
      font-size: 20px;
    }

    /* ══════════════════════════════════════
   TRAINS TABLE (Vaixells)
══════════════════════════════════════ */
    .trains-table {
      width: 100%;
      margin-top: 24px;
      border-collapse: collapse;
    }

    .trains-table th {
      font-family: var(--text);
      font-size: 10px;
      letter-spacing: 2px;
      color: var(--parch-light);
      background: var(--navy);
      padding: 12px 14px;
      text-align: left;
      text-transform: uppercase;
    }

    .trains-table td {
      padding: 10px 14px;
      font-family: var(--text);
      font-size: 17px;
      color: var(--ink-soft);
      background: var(--card);
      border-bottom: 1px solid var(--parch-dark);
    }

    .trains-table tr:hover td {
      background: rgba(176, 138, 62, 0.09);
    }

    .t-num {
      font-family: var(--display);
      font-size: 20px;
      color: var(--sea);
      font-weight: 600;
    }

    .t-num.diesel {
      color: var(--gold);
    }

    /* els números d'era, en lacre com a la caixa */
    .t-num.era {
      color: var(--red);
    }

    .t-yellow {
      color: var(--phase-yellow);
      font-weight: 600;
    }

    .t-green {
      color: var(--phase-green);
      font-weight: 600;
    }

    .t-brown {
      color: var(--phase-brown);
      font-weight: 600;
    }

    .t-grey {
      color: var(--phase-grey);
      font-weight: 600;
    }

    /* ══════════════════════════════════════
   COMPANIES
══════════════════════════════════════ */
    .companies-grid {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 16px;
      margin-top: 16px;
    }

    .co-card {
      background: var(--card);
      border: 1px solid var(--parch-dark);
      padding: 18px 18px 16px;
      position: relative;
      box-shadow: 2px 2px 10px var(--shadow);
      transition: transform .3s, box-shadow .3s;
    }

    .co-card:hover {
      transform: translateY(-4px);
      box-shadow: 4px 6px 18px var(--shadow);
    }

    .co-stripe {
      width: 100%;
      height: 4px;
      margin-bottom: 14px;
    }

    .co-abbr {
      font-family: var(--display);
      font-size: 22px;
      letter-spacing: 2px;
      margin-bottom: 2px;
      font-weight: 600;
    }

    .co-name {
      font-family: var(--text);
      font-style: italic;
      font-size: 16px;
      color: var(--ink-soft);
      margin-bottom: 8px;
    }

    .co-detail {
      font-size: 16px;
      color: var(--ink-faint);
      line-height: 1.6;
      font-family: var(--text);
    }

    .co-detail em {
      color: var(--ink-soft);
      font-style: italic;
      font-size: 15px;
    }

    /* ══════════════════════════════════════
   PRIVADES
══════════════════════════════════════ */
    .priv-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
      gap: 14px;
      margin-top: 20px;
    }

    .priv-card {
      background: var(--card);
      border: 1px solid var(--parch-dark);
      padding: 16px 18px;
      position: relative;
      box-shadow: 2px 2px 8px var(--shadow);
    }

    .priv-card::before {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      bottom: 0;
      width: 3px;
      background: var(--gold);
    }

    .priv-abbr {
      font-family: var(--text);
      font-size: 13px;
      font-weight: 700;
      color: var(--navy);
      letter-spacing: 1.5px;
      font-variant-caps: all-small-caps;
    }

    .priv-name {
      font-family: var(--text);
      font-size: 15px;
      color: var(--ink);
      font-weight: 600;
      margin-bottom: 6px;
      font-variant-caps: all-small-caps;
    }

    .priv-meta {
      display: flex;
      gap: 16px;
      margin-bottom: 8px;
    }

    .priv-badge {
      font-family: var(--text);
      font-size: 11px;
      letter-spacing: 1px;
      padding: 3px 10px;
      border: 1px solid var(--parch-dark);
      color: var(--ink-soft);
      background: rgba(176, 138, 62, 0.1);
      font-variant-caps: all-small-caps;
    }

    .priv-desc {
      font-family: var(--text);
      font-size: 16px;
      color: var(--ink-soft);
      line-height: 1.65;
    }

    /* ══════════════════════════════════════
   FASES
══════════════════════════════════════ */
    .fases-list {
      display: flex;
      flex-direction: column;
      gap: 14px;
      margin-top: 20px;
    }

    .fase-row {
      display: grid;
      grid-template-columns: auto 1fr auto;
      gap: 16px;
      align-items: center;
      padding: 16px 20px;
      background: var(--card);
      border: 1px solid var(--parch-dark);
      border-left: 4px solid var(--navy);
    }

    .fase-num {
      font-family: var(--display);
      font-size: 30px;
      color: var(--red);
      line-height: 1;
      font-weight: 600;
    }

    .fase-name {
      font-family: var(--text);
      font-size: 16px;
      color: var(--ink);
      font-weight: 600;
      font-variant-caps: all-small-caps;
    }

    .fase-years {
      font-family: var(--text);
      font-style: italic;
      font-size: 15px;
      color: var(--ink-soft);
    }

    .fase-vehicles {
      display: flex;
      flex-direction: column;
      gap: 6px;
      align-items: flex-end;
    }

    .fase-ship {
      font-family: var(--text);
      font-size: 12px;
      letter-spacing: 1px;
      text-transform: uppercase;
      padding: 6px 14px;
      background: var(--red);
      color: var(--parch-mid);
      white-space: nowrap;
    }

    /* els carros, en marí, per distingir-los de la flota */
    .fase-ship.wagon {
      background: var(--navy);
    }

    /* ══════════════════════════════════════
   CONTACT
══════════════════════════════════════ */
    .contact-body {
      max-width: 720px;
      margin: 0 auto;
      padding: 72px 36px;
    }

    .contact-title {
      font-family: var(--display);
      font-size: clamp(28px, 4vw, 44px);
      color: var(--navy);
      margin-bottom: 20px;
      font-weight: 600;
    }

    .contact-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
      gap: 16px;
      margin: 24px 0 36px;
    }

    .contact-card {
      border: 1px solid var(--parch-dark);
      padding: 22px 18px;
      background: var(--card);
      text-align: center;
      transition: transform .3s;
    }

    .contact-card:hover {
      transform: translateY(-3px);
    }

    .contact-icon {
      font-size: 28px;
      margin-bottom: 8px;
    }

    .contact-type {
      font-family: var(--text);
      font-size: 11px;
      letter-spacing: 3px;
      color: var(--navy);
      text-transform: uppercase;
      margin-bottom: 6px;
    }

    .contact-val {
      font-family: var(--text);
      font-size: 17px;
      color: var(--ink-soft);
    }

    .contact-form {
      margin-top: 32px;
    }

    .form-field {
      margin-bottom: 16px;
    }

    .form-field label {
      display: block;
      font-family: var(--text);
      font-size: 11px;
      letter-spacing: 2px;
      color: var(--ink-soft);
      text-transform: uppercase;
      margin-bottom: 6px;
    }

    .form-field input,
    .form-field textarea {
      width: 100%;
      padding: 10px 14px;
      background: var(--card);
      border: 1px solid var(--parch-dark);
      font-family: var(--text);
      font-size: 18px;
      color: var(--ink);
      outline: none;
      transition: border .2s;
    }

    .form-field input:focus,
    .form-field textarea:focus {
      border-color: var(--navy);
    }

    .form-field textarea {
      height: 120px;
      resize: vertical;
    }

    .form-submit {
      background: var(--navy);
      color: var(--parch-light);
      border: none;
      font-family: var(--text);
      font-size: 12px;
      letter-spacing: 3px;
      text-transform: uppercase;
      padding: 13px 32px;
      cursor: pointer;
      transition: background .2s;
    }

    .form-submit:hover {
      background: var(--sea);
    }

    /* ══════════════════════════════════════
   LEGAL MODALS
══════════════════════════════════════ */
    .modal-overlay {
      display: none;
      position: fixed;
      inset: 0;
      z-index: 800;
      background: rgba(21, 49, 78, 0.6);
      backdrop-filter: blur(4px);
      align-items: center;
      justify-content: center;
    }

    .modal-overlay.open {
      display: flex;
    }

    .modal-box {
      background: var(--card);
      max-width: 720px;
      width: 90%;
      max-height: 80vh;
      overflow-y: auto;
      border: 2px solid var(--gold);
      padding: 40px 36px;
      position: relative;
      box-shadow: 0 20px 60px rgba(21, 49, 78, 0.35);
    }

    .modal-close {
      position: absolute;
      top: 12px;
      right: 16px;
      background: none;
      border: none;
      font-size: 22px;
      color: var(--ink-soft);
      cursor: pointer;
      transition: color .2s;
    }

    .modal-close:hover {
      color: var(--navy);
    }

    .modal-title {
      font-family: var(--text);
      font-size: 22px;
      font-weight: 700;
      color: var(--navy);
      margin-bottom: 20px;
      font-variant-caps: all-small-caps;
    }

    .modal-content p {
      font-family: var(--text);
      font-size: 17px;
      color: var(--ink-soft);
      line-height: 1.8;
      margin-bottom: 12px;
    }

    .modal-content h4 {
      font-family: var(--text);
      font-size: 15px;
      font-weight: 600;
      color: var(--ink);
      margin: 16px 0 6px;
      letter-spacing: .5px;
      font-variant-caps: all-small-caps;
    }

    /* ══════════════════════════════════════
   FOOTER
══════════════════════════════════════ */
    footer {
      background: linear-gradient(180deg, var(--navy) 0%, var(--navy-deep) 100%);
      border-top: 3px solid var(--gold);
      padding: 40px 28px 24px;
      position: relative;
      z-index: 1;
      overflow: hidden;
    }

    footer::before {
      content: 'Talaia';
      position: absolute;
      font-family: var(--display);
      font-size: 160px;
      color: rgba(238, 220, 168, 0.06);
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      pointer-events: none;
      line-height: 1;
      font-weight: 600;
    }

    .foot-main {
      max-width: 1080px;
      margin: 0 auto;
      display: grid;
      grid-template-columns: 1fr auto 1fr;
      align-items: center;
      gap: 20px;
    }

    .foot-logo {
      display: flex;
      align-items: center;
      gap: 11px;
    }

    .foot-logo .nb-year {
      font-size: 18px;
      padding: 6px 8px 5px;
    }

    .foot-logo .nb-name {
      font-size: 17px;
      letter-spacing: 4px;
    }

    .foot-nav-links {
      display: flex;
      gap: 4px;
      justify-content: center;
      flex-wrap: wrap;
    }

    .foot-nav-btn {
      background: none;
      border: none;
      text-decoration: none;
      font-family: var(--text);
      font-size: 10px;
      letter-spacing: 2px;
      color: rgba(238, 220, 168, 0.55);
      text-transform: uppercase;
      cursor: pointer;
      padding: 4px 8px;
      transition: color .2s;
    }

    .foot-nav-btn:hover {
      text-decoration: none;
      color: var(--gold-light);
    }

    .foot-social {
      display: flex;
      flex-direction: column;
      gap: 6px;
      align-items: flex-end;
    }

    .foot-social-row {
      display: flex;
      gap: 14px;
    }

    .foot-social a {
      font-family: var(--text);
      font-size: 10px;
      letter-spacing: 2px;
      color: rgba(238, 220, 168, 0.55);
      text-decoration: none;
      text-transform: uppercase;
      transition: color .2s;
    }

    .foot-social a:hover {
      color: var(--gold-light);
    }

    .foot-rule {
      max-width: 1080px;
      margin: 20px auto;
      height: 1px;
      background: rgba(210, 172, 94, 0.3);
    }

    .foot-legal {
      max-width: 1080px;
      margin: 0 auto;
      display: flex;
      justify-content: space-between;
      align-items: center;
      flex-wrap: wrap;
      gap: 12px;
    }

    .foot-copy {
      font-family: var(--text);
      font-size: 13px;
      color: rgba(238, 220, 168, 0.4);
    }

    .foot-copy a {
      color: inherit;
      text-decoration: none;
      transition: color .2s;
    }

    .foot-copy a:hover {
      color: var(--gold-light);
    }

    .foot-legal-links {
      display: flex;
      gap: 16px;
    }

    .foot-legal-btn {
      background: none;
      border: none;
      text-decoration: none;
      font-family: var(--text);
      font-size: 10px;
      letter-spacing: 2px;
      color: rgba(238, 220, 168, 0.45);
      text-transform: uppercase;
      cursor: pointer;
      text-decoration: none;
      transition: color .2s;
    }

    .foot-legal-btn:hover {
      text-decoration: none;
      color: var(--gold-light);
    }

    .foot-attrib {
      max-width: 1080px;
      margin: 10px auto 0;
      text-align: center;
      font-family: var(--text);
      font-size: 12px;
      font-style: italic;
      color: rgba(238, 220, 168, 0.3);
    }

    /* ══════════════════════════════════════
   AUTOR PAGE
══════════════════════════════════════ */
    .autor-wrap {
      min-height: 100vh;
      padding-top: 50px;
      background: linear-gradient(160deg, var(--card) 0%, var(--parch-light) 45%, var(--parch-mid) 100%);
      display: flex;
      align-items: center;
      justify-content: center;
    }

    .autor-card {
      max-width: 680px;
      width: 90%;
      margin: 60px auto;
      background: var(--card);
      border: 2px solid var(--gold);
      box-shadow: 6px 8px 36px rgba(21, 49, 78, 0.14), inset 0 0 0 5px rgba(244, 238, 225, 0.9);
      padding: 52px 52px 44px;
      position: relative;
      text-align: center;
    }

    .autor-card::before {
      content: '';
      position: absolute;
      inset: 10px;
      border: 1px solid rgba(176, 138, 62, 0.4);
      pointer-events: none;
    }

    .autor-card::after {
      content: '\2726';
      font-size: 12px;
      color: var(--gold-light);
      position: absolute;
      top: 4px;
      left: 50%;
      transform: translateX(-50%);
    }

    .autor-eyebrow {
      font-family: var(--text);
      font-size: 10px;
      letter-spacing: 5px;
      color: var(--navy);
      text-transform: uppercase;
      margin-bottom: 10px;
    }

    .autor-name {
      font-family: var(--display);
      font-size: clamp(26px, 4vw, 40px);
      color: var(--ink);
      margin-bottom: 6px;
      font-weight: 600;
    }

    .autor-rule {
      display: flex;
      align-items: center;
      gap: 10px;
      justify-content: center;
      margin: 18px 0 24px;
    }

    .autor-rule-line {
      width: 60px;
      height: 1px;
      background: var(--gold);
    }

    .autor-rule-sym {
      font-size: 16px;
      color: var(--gold);
    }

    .autor-bio {
      text-decoration: none;
      font-family: var(--text);
      font-size: 19px;
      color: var(--ink-soft);
      line-height: 1.95;
      text-align: left;
      max-width: 520px;
      margin: 0 auto;
    }

    .autor-bio p {
      margin-bottom: 16px;
    }

    .autor-bio .highlight {
      font-style: italic;
      color: var(--navy);
    }

    .autor-tags {
      display: flex;
      flex-wrap: wrap;
      gap: 8px;
      justify-content: center;
      margin-top: 32px;
    }

    .autor-tag {
      border: 1px solid var(--gold);
      color: var(--ink-soft);
      padding: 5px 16px;
      font-family: var(--text);
      font-size: 10px;
      letter-spacing: 2px;
      background: rgba(176, 138, 62, 0.08);
      text-transform: uppercase;
    }

    .bgg-user-link,
    .bgg-user-link:visited,
    .bgg-user-link:hover,
    .bgg-user-link:active {
      color: inherit;
      text-decoration: none;
    }

    /* ══════════════════════════════════════
   BOOKLET HISTORIC CSS
══════════════════════════════════════ */
    .bk-hero {
      position: relative;
      overflow: hidden;
      background: linear-gradient(150deg, var(--navy-deep) 0%, var(--navy) 60%, var(--navy-deep) 100%);
      padding: 90px 36px 56px;
      min-height: 36vh;
      display: flex;
      align-items: flex-end;
    }

    .bk-hero-bg {
      position: absolute;
      right: -20px;
      bottom: -60px;
      font-family: var(--display);
      font-size: clamp(120px, 22vw, 300px);
      color: rgba(238, 220, 168, 0.05);
      line-height: 1;
      pointer-events: none;
      user-select: none;
      font-weight: 600;
    }

    .bk-hero-inner {
      position: relative;
      z-index: 1;
      max-width: 820px;
    }

    .bk-hero-eyebrow {
      font-family: var(--text);
      font-size: .72rem;
      letter-spacing: 3px;
      text-transform: uppercase;
      color: var(--gold);
      margin-bottom: 14px;
    }

    .bk-hero-title {
      font-family: var(--display);
      font-size: clamp(28px, 5vw, 58px);
      color: var(--gold-pale);
      line-height: 1.1;
      margin-bottom: 12px;
      font-weight: 600;
    }

    .bk-hero-sub {
      font-family: var(--text);
      font-style: italic;
      font-size: clamp(14px, 2vw, 18px);
      color: var(--gold-light);
    }

    .bk-body {
      max-width: 820px;
      margin: 0 auto;
      padding: 48px 36px 80px;
    }

    .bk-index {
      background: var(--card);
      border: 1px solid var(--parch-dark);
      border-left: 4px solid var(--navy);
      padding: 20px 20px 16px;
      margin-bottom: 40px;
    }

    .bk-index-title {
      font-family: var(--text);
      font-size: .8rem;
      letter-spacing: 2px;
      text-transform: uppercase;
      color: var(--ink);
      margin-bottom: 14px;
    }

    .bk-index-grid {
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
      gap: 4px;
    }

    .bk-idx {
      background: none;
      border: none;
      font-family: var(--text);
      font-size: .72rem;
      letter-spacing: .4px;
      color: var(--ink);
      padding: 7px 8px;
      text-align: left;
      cursor: pointer;
      display: flex;
      align-items: flex-start;
      gap: 8px;
      border-radius: 2px;
      transition: background .15s, color .15s;
      line-height: 1.3;
      font-variant-caps: all-small-caps;
    }

    .bk-idx:hover {
      background: var(--parch-dark);
      color: var(--navy);
    }

    .bk-idx span {
      background: var(--navy);
      color: var(--card);
      font-size: .65rem;
      font-weight: 700;
      min-width: 18px;
      height: 18px;
      border-radius: 50%;
      display: flex;
      align-items: center;
      justify-content: center;
      flex-shrink: 0;
      margin-top: 1px;
    }

    .bk-prefaci {
      border-left: 3px solid var(--gold);
      padding: 20px 24px;
      background: var(--card);
      margin-bottom: 40px;
      font-family: var(--text);
      font-size: 19px;
      color: var(--ink-soft);
      line-height: 1.9;
    }

    .bk-prefaci p {
      margin-bottom: 16px;
    }

    .bk-prefaci .bk-signoff {
      font-style: italic;
      color: var(--navy);
      text-align: right;
    }

    .bk-sep {
      text-align: center;
      font-family: var(--text);
      font-size: 16px;
      letter-spacing: 8px;
      color: var(--gold);
      margin: 36px 0;
      font-variant-caps: all-small-caps;
    }

    .bk-ch {
      margin-bottom: 48px;
    }

    .bk-ch-hd {
      display: flex;
      align-items: flex-start;
      gap: 18px;
      margin-bottom: 20px;
      padding-bottom: 12px;
      border-bottom: 1px solid var(--parch-mid);
    }

    .bk-ch-n {
      font-family: var(--display);
      font-size: 2.5rem;
      color: var(--navy);
      line-height: 1;
      flex-shrink: 0;
      font-weight: 600;
    }

    .bk-ch-t {
      font-family: var(--text);
      font-size: clamp(1rem, 2.5vw, 1.4rem);
      color: var(--ink);
      font-weight: 700;
      padding-top: 8px;
      line-height: 1.3;
      font-variant-caps: all-small-caps;
    }

    .bk-ch-b {
      font-family: var(--text);
      font-size: 19px;
      color: var(--ink-soft);
      line-height: 1.9;
    }

    .bk-ch-b p {
      margin-bottom: 16px;
    }

    .bk-ch-b a,
    .comp-nm a {
      color: var(--navy);
      text-decoration: none;
      border-bottom: 1px solid var(--gold);
      transition: color .2s;
    }

    .bk-ch-b a:hover,
    .comp-nm a:hover {
      color: var(--red);
    }

    .bk-sub {
      font-family: var(--text);
      font-size: .9rem;
      color: var(--ink);
      margin: 24px 0 10px;
      letter-spacing: .5px;
      border-left: 3px solid var(--gold);
      padding-left: 10px;
      font-variant-caps: all-small-caps;
    }

    .bk-nota {
      display: flex;
      gap: 14px;
      align-items: flex-start;
      background: rgba(176, 138, 62, 0.07);
      border: 1px solid rgba(176, 138, 62, 0.35);
      padding: 16px 18px;
      margin: 24px 0 0;
      font-size: .9rem;
    }

    .bk-nota svg {
      flex-shrink: 0;
      margin-top: 2px;
    }

    .bk-nota p {
      margin: 0;
      font-family: var(--text);
      font-size: 1rem;
      color: var(--ink-soft);
      line-height: 1.7;
    }

    /* ══════════════════════════════════════
   HAMBURGER & MOBILE MENU
══════════════════════════════════════ */
    .nav-hamburger {
      color: var(--gold-pale);
      display: flex;
      align-items: center;
      justify-content: center;
      text-decoration: none;
      background: transparent;
      border: none;
      color: var(--gold-pale);
      font-size: 1.3rem;
      cursor: pointer;
      padding: 0;
      width: 36px;
      height: 36px;
      border-radius: 4px;
      flex-shrink: 0;
    }

    @media (min-width:821px) {
      .nav-hamburger {
        display: none;
      }
    }

    .nav-hamburger:hover {
      color: var(--card);
    }

    .nav-mobile-menu {
      display: none;
      flex-direction: column;
      background: var(--navy);
      border-top: 2px solid var(--gold);
      position: fixed;
      top: 50px;
      left: 0;
      right: 0;
      z-index: 600;
      box-shadow: 0 8px 24px rgba(0, 0, 0, .5);
      max-height: calc(100vh - 50px);
      overflow-y: auto;
    }

    .nav-mobile-menu.open {
      display: flex;
    }

    .nav-mobile-link {
      background: none;
      border: none;
      border-bottom: 1px solid rgba(255, 255, 255, .08);
      color: var(--parch-light);
      font-family: var(--text);
      font-size: .85rem;
      letter-spacing: 1.5px;
      text-transform: uppercase;
      padding: 16px 24px;
      text-align: left;
      cursor: pointer;
      display: flex;
      align-items: center;
      gap: 12px;
      transition: background .15s;
    }

    .nav-mobile-link:hover {
      background: rgba(255, 255, 255, .07);
      color: var(--gold);
    }

    .nav-lang-switcher {
      display: flex;
      gap: 2px;
      align-items: center;
      margin-right: 8px;
    }

    .nav-lang {
      background: transparent;
      border: 1px solid rgba(238, 220, 168, .35);
      font-family: var(--text);
      font-size: 10px;
      letter-spacing: 1px;
      color: rgba(238, 220, 168, .72);
      padding: 3px 7px;
      cursor: pointer;
      text-decoration: none;
      transition: all .2s;
      font-variant-caps: all-small-caps;
    }

    .nav-lang:hover {
      text-decoration: none;
      color: var(--gold-pale);
      border-color: var(--gold-pale);
    }

    .nav-lang.active {
      background: var(--gold-pale);
      color: var(--navy);
      border-color: var(--gold-pale);
    }

    /* ══════ FASE LORE ══════ */
    .fase-meta {
      margin: 4px 0 6px;
      font-family: var(--text);
      font-size: 15px;
      color: var(--ink-faint);
      font-style: italic;
    }

    .fase-canvis {
      font-family: var(--text);
      font-size: 15px;
      color: var(--ink-faint);
      margin: 2px 0 5px;
    }

    .fase-lore {
      font-family: var(--text);
      font-size: 16px;
      color: var(--ink-soft);
      line-height: 1.75;
      margin-top: 7px;
      padding-top: 7px;
      border-top: 1px solid var(--parch-mid);
    }

    .reveal {
      opacity: 0;
      transform: translateY(20px);
      transition: opacity .7s ease, transform .7s ease;
    }

    .reveal.in {
      opacity: 1;
      transform: translateY(0);
    }

    @keyframes slideUp {
      from {
        opacity: 0;
        transform: translateY(36px)
      }

      to {
        opacity: 1;
        transform: translateY(0)
      }
    }

    @keyframes slideRight {
      from {
        opacity: 0;
        transform: translateX(60px) rotate(2deg)
      }

      to {
        opacity: 1;
        transform: translateX(0) rotate(0)
      }
    }

    /* ══════════════════════════════════════
   RESPONSIVE
══════════════════════════════════════ */
    @media (max-width:820px) {
      .nav-links {
        display: none;
      }

      .nav-brand {
        font-size: 11px;
      }

      .nav-hamburger {
        display: flex;
      }

      .hero {
        grid-template-columns: 1fr;
        padding-top: 50px;
      }

      .hero-left {
        padding: 24px 16px 12px;
      }

      .hero-right {
        padding: 0 16px 36px;
      }

      .box-wrap {
        max-width: 440px;
        margin: 0 auto;
      }

      .section-inner {
        padding-left: 16px;
        padding-right: 16px;
      }

      .companies-grid {
        grid-template-columns: 1fr !important;
      }

      .foot-main {
        grid-template-columns: 1fr;
        text-align: center;
      }

      .foot-social {
        align-items: center;
      }

      .foot-social-row {
        justify-content: center;
      }

      .foot-legal {
        justify-content: center;
        text-align: center;
      }

      .bk-body {
        padding: 32px 16px 60px;
      }

      .contact-body {
        padding: 48px 16px;
      }

      .autor-card {
        padding: 36px 24px 32px;
      }
    }

    /* ══════ COMPONENTS MANIFEST ══════ */
    .comp-manifest {
      border: 1px solid var(--parch-dark);
      overflow: hidden;
      margin-top: 16px;
      background: linear-gradient(180deg, rgba(21, 49, 78, 0.04) 0%, var(--card) 100%);
    }

    .comp-section-hd {
      background: var(--navy);
      color: var(--gold-pale);
      font-family: var(--text);
      font-size: 10px;
      letter-spacing: 4px;
      text-transform: uppercase;
      padding: 8px 20px;
    }

    .comp-row {
      display: flex;
      align-items: baseline;
      gap: 12px;
      padding: 11px 20px;
      border-bottom: 1px solid rgba(176, 138, 62, 0.2);
      transition: background .15s;
    }

    .comp-row:hover {
      background: rgba(176, 138, 62, 0.08);
    }

    .comp-row-last {
      border-bottom: none;
    }

    .comp-ico {
      font-size: 20px;
      flex-shrink: 0;
      width: 26px;
      text-align: center;
    }

    .comp-nm {
      font-family: var(--text);
      font-size: 17px;
      color: var(--ink);
      flex: 1;
      line-height: 1.5;
    }

    .comp-nm em {
      color: var(--ink-soft);
      font-style: italic;
    }

    .comp-qt {
      font-family: var(--text);
      font-size: 16px;
      font-weight: 600;
      letter-spacing: .5px;
      color: var(--navy);
      white-space: nowrap;
      flex-shrink: 0;
    }

    /* ══════ BIBLIOGRAFIA + COLOFON ══════ */
    .bk-bib {
      list-style: none;
      padding: 0;
      margin: 10px 0 20px;
    }

    .bk-bib li {
      font-family: var(--text);
      font-size: 17px;
      color: var(--ink-soft);
      line-height: 1.7;
      padding: 7px 0;
      border-bottom: 1px solid var(--parch-mid);
    }

    .bk-bib li em {
      font-style: italic;
    }

    .bk-bib-web li {
      border: none;
      display: flex;
      gap: 8px;
      align-items: baseline;
    }

    /* ══════════════════════════════════════
   MATERIAL DEL JOC — fitxes, llosetes, galeries
══════════════════════════════════════ */
    .token-row {
      display: flex;
      flex-wrap: wrap;
      justify-content: center;
      gap: 24px 30px;
      margin-top: 26px;
    }

    .token-fig {
      width: 104px;
      margin: 0;
      text-align: center;
    }

    .token-fig img {
      width: 86px;
      height: 86px;
      display: block;
      margin: 0 auto 9px;
      filter: drop-shadow(2px 3px 7px var(--shadow));
      transition: transform .3s;
    }

    .token-fig:hover img {
      transform: translateY(-3px) scale(1.04);
    }

    .token-fig b {
      display: block;
      font-family: var(--display);
      font-size: 13px;
      font-weight: 600;
      letter-spacing: 1px;
      color: var(--navy);
    }

    .token-fig figcaption {
      font-family: var(--text);
      font-size: 13px;
      font-style: italic;
      color: var(--ink-faint);
      line-height: 1.45;
    }

    .co-head {
      display: flex;
      align-items: center;
      gap: 12px;
      margin-bottom: 8px;
    }

    .co-head .co-abbr,
    .co-head .co-name {
      margin-bottom: 0;
    }

    .priv-head {
      display: flex;
      align-items: center;
      gap: 11px;
      margin-bottom: 8px;
    }

    .priv-head .priv-name {
      margin-bottom: 0;
    }

    .priv-token {
      width: 42px;
      height: 42px;
      flex-shrink: 0;
      filter: drop-shadow(1px 2px 4px var(--shadow));
    }

    .co-token {
      width: 48px;
      height: 48px;
      flex-shrink: 0;
      filter: drop-shadow(1px 2px 5px var(--shadow));
    }

    .tiles-grid {
      display: flex;
      flex-wrap: wrap;
      gap: 20px 16px;
      margin-top: 22px;
    }

    .tile-fig {
      margin: 0;
      width: 122px;
      text-align: center;
    }

    .tile-series {
      margin-top: 18px;
      border-top: 1px solid var(--parch-dark);
    }

    .tile-serie {
      display: flex;
      align-items: flex-start;
      gap: 22px;
      padding: 16px 0;
      border-bottom: 1px solid var(--parch-dark);
    }

    .tile-serie-nom {
      font-family: var(--text);
      font-size: 13px;
      font-weight: 600;
      letter-spacing: 1px;
      color: var(--ink);
      width: 180px;
      flex-shrink: 0;
      padding-top: 36px;
      font-variant-caps: all-small-caps;
    }

    .tile-serie-row {
      display: flex;
      flex-wrap: wrap;
      gap: 14px;
    }

    .tile-serie .tile-fig {
      width: 104px;
    }

    .tile-fig img {
      width: 100%;
      max-width: 130px;
      height: auto;
      display: block;
      margin: 0 auto 8px;
      cursor: zoom-in;
      filter: drop-shadow(2px 3px 6px var(--shadow));
      transition: transform .3s;
    }

    .tile-fig:hover img {
      transform: translateY(-3px);
    }

    .tile-fig figcaption {
      font-family: var(--text);
      font-size: 11px;
      letter-spacing: .5px;
      color: var(--ink);
      line-height: 1.5;
      font-variant-caps: all-small-caps;
    }

    .tile-fig span {
      display: block;
      font-family: var(--text);
      font-style: italic;
      font-size: 12px;
      color: var(--ink-faint);
    }

    /* ── LIGHTBOX ── */
    .lightbox {
      position: fixed;
      inset: 0;
      z-index: 900;
      display: none;
      align-items: center;
      justify-content: center;
      flex-direction: column;
      gap: 14px;
      padding: 30px 24px;
      background: rgba(12, 34, 56, .93);
      cursor: zoom-out;
    }

    .lightbox.open {
      display: flex;
    }

    .lightbox img {
      max-width: 100%;
      max-height: 82vh;
      display: block;
      border: 6px solid var(--parch-light);
      box-shadow: 0 12px 44px rgba(0, 0, 0, .5);
    }

    .lightbox-cap {
      font-family: var(--text);
      font-size: 12px;
      letter-spacing: 2px;
      text-transform: uppercase;
      color: var(--gold-pale);
      text-align: center;
    }

    .lightbox-close {
      position: absolute;
      top: 16px;
      right: 20px;
      width: 38px;
      height: 38px;
      border: 1px solid var(--gold);
      background: transparent;
      color: var(--gold-pale);
      font-size: 22px;
      line-height: 1;
      cursor: pointer;
    }

    @media (max-width:820px) {
      .tile-fig {
        width: 100px;
      }

      .tile-serie {
        flex-direction: column;
        gap: 8px;
      }

      .tile-serie-nom {
        width: auto;
        padding-top: 0;
      }

      .tile-serie .tile-fig {
        width: 88px;
      }
    }

    .bk-bib-web a {
      color: var(--navy);
      text-decoration: none;
    }

    .bk-bib-web a:hover {
      text-decoration: none;
    }

    .bk-colofon {
      text-align: center;
      padding: 32px 0 16px;
    }

    .bk-col-title {
      font-family: var(--display);
      font-size: 1rem;
      color: var(--ink);
      margin-bottom: 6px;
      font-weight: 600;
    }

    .bk-col-sub {
      font-family: var(--text);
      font-style: italic;
      font-size: .88rem;
      color: var(--ink-faint);
    }



    /* ══════════════════════════════════════
   IDENTITAT DE LA CAIXA — marfil, blau marí, filets de coure
══════════════════════════════════════ */
    body {
      font-family: var(--text);
      color: var(--ink);
    }

    .nb-name {
      font-family: var(--display);
      font-size: 17px;
      font-weight: 600;
      letter-spacing: 6px;
    }

    /* Hero: calca la portada de la caixa */
    .hero::before {
      border-color: var(--gold);
    }

    .hero::after {
      border-color: var(--gold);
      opacity: .6;
    }

    .hero-left {
      text-align: center;
      display: flex;
      flex-direction: column;
      align-items: center;
    }

    .hero-eyebrow {
      font-family: var(--text);
      font-weight: 600;
      font-size: 13px;
      letter-spacing: .32em;
      margin-bottom: 22px;
      animation: slideUp 1s cubic-bezier(.16, 1, .3, 1) both;
    }

    .ht {
      display: flex;
      flex-direction: column;
      align-items: center;
      margin: 0;
      animation: slideUp 1s .1s cubic-bezier(.16, 1, .3, 1) both;
    }

    .ht-name {
      font-family: var(--display);
      font-weight: 700;
      font-size: clamp(64px, 9vw, 128px);
      line-height: .9;
      letter-spacing: .04em;
      text-transform: uppercase;
      color: var(--navy);
    }

    .ht-sub {
      font-family: var(--text);
      font-style: italic;
      font-weight: 400;
      font-size: clamp(19px, 2vw, 26px);
      letter-spacing: .03em;
      color: var(--navy);
      margin-top: 10px;
    }

    .flourish {
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 12px;
      color: var(--gold);
      margin: 20px 0 22px;
      font-size: 13px;
    }

    .flourish::before,
    .flourish::after {
      content: '';
      width: 70px;
      height: 1px;
      background: linear-gradient(90deg, transparent, var(--gold));
    }

    .flourish::after {
      transform: scaleX(-1);
    }

    .hero-desc {
      max-width: 470px;
      font-size: clamp(16px, 1.4vw, 18px);
      line-height: 1.75;
    }

    .hero-meta {
      margin-top: 26px;
      font-weight: 600;
      font-size: 13px;
      letter-spacing: .26em;
      text-transform: uppercase;
      color: var(--navy);
      animation: slideUp 1s .6s cubic-bezier(.16, 1, .3, 1) both;
    }

    .hero-meta a {
      color: inherit;
      text-decoration: none;
      border-bottom: 1px solid var(--gold);
    }

    .hero-author {
      margin-top: 6px;
      font-style: italic;
      font-size: 16px;
      color: var(--ink-soft);
      animation: slideUp 1s .7s cubic-bezier(.16, 1, .3, 1) both;
    }

    .hero-author a {
      color: inherit;
      text-decoration: none;
      border-bottom: 1px solid var(--gold);
    }

    /* Com a màxim la meitat dels píxels de l'arxiu, perquè en pantalles 2x no s'amplïi */
    .hero-box {
      width: min(500px, 80%);
      height: auto;
      display: block;
      filter: drop-shadow(10px 18px 30px rgba(17, 43, 66, .28));
    }

    /* Títols de secció en la lletra del rètol, amb l'accent en cursiva de coure */
    .sec-title {
      font-size: clamp(28px, 3.4vw, 44px);
      font-weight: 600;
      text-transform: none;
      letter-spacing: 0;
      line-height: 1.08;
    }

    .sec-title .accent {
      font-style: italic;
      font-weight: 500;
      color: var(--gold-deep);
    }

    .sec-label {
      font-weight: 600;
      font-size: 12px;
      letter-spacing: .3em;
    }

    .div-ornament {
      font-size: 13px;
      letter-spacing: 0;
    }

    /* Doble filet de coure, com el marc de la caixa */
    .card,
    .co-card,
    .priv-card,
    .contact-card,
    .autor-card,
    .bk-prefaci,
    .bk-index {
      border: 1px solid var(--gold);
      box-shadow: inset 0 0 0 4px var(--card), inset 0 0 0 5px rgba(201, 131, 79, .45), 2px 3px 12px var(--shadow);
    }

    .card-title,
    .co-abbr,
    .priv-abbr {
      font-family: var(--display);
      font-weight: 700;
      font-size: 21px;
      letter-spacing: .01em;
      font-variant-caps: normal;
    }

    .co-name,
    .priv-name {
      font-style: italic;
      font-variant-caps: normal;
    }

    .bk-ch-t,
    .bk-hero-title {
      font-family: var(--display);
      font-weight: 600;
      font-variant-caps: normal;
    }

    .bk-ch-t {
      font-size: 27px;
    }

    .bk-sub {
      font-family: var(--display);
      font-weight: 700;
      font-size: 21px;
      font-variant-caps: normal;
    }

    /* ══════════════════════════════════════
   GRAVATS — les il·lustracions de les cartes
══════════════════════════════════════ */
    .carta-row {
      display: flex;
      flex-wrap: wrap;
      justify-content: center;
      gap: 22px 26px;
      margin-top: 30px;
    }

    .carta-fig {
      width: 170px;
      margin: 0;
      text-align: center;
      padding: 12px 12px 10px;
      background: var(--card);
      border: 1px solid var(--gold);
      box-shadow: inset 0 0 0 4px var(--card), inset 0 0 0 5px rgba(201, 131, 79, .45), 2px 3px 12px var(--shadow);
    }

    .carta-fig.wide {
      width: 280px;
    }

    .carta-fig img {
      width: 100%;
      height: auto;
      display: block;
      margin: 0 auto 8px;
      cursor: zoom-in;
      mix-blend-mode: multiply;
      transition: transform .3s;
    }

    .carta-fig:hover img {
      transform: scale(1.04);
    }

    .carta-fig b {
      display: block;
      font-family: var(--display);
      font-size: 19px;
      font-weight: 700;
      color: var(--navy);
    }

    .carta-fig figcaption {
      font-style: italic;
      font-size: 14px;
      color: var(--ink-soft);
      line-height: 1.4;
    }

    @media (max-width: 900px) {
      .hero-left {
        padding: 70px 44px 30px;
      }

      .hero-right {
        padding: 0 0 40px;
      }

      .hero-box {
        width: min(300px, 70%);
      }
    }

    /* ══════════════════════════════════════
   REGLES EN UN COP D'ULL — escena + text, alternats
══════════════════════════════════════ */
    .rg-hero-img {
      display: block;
      width: min(100%, 980px);
      height: auto;
      margin: 10px auto 0;
    }

    .rg-steps {
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      gap: 18px;
      margin: 46px 0 10px;
      counter-reset: rg;
    }

    .rg-step {
      text-align: center;
      padding: 22px 16px 18px;
      background: var(--card);
      border: 1px solid var(--gold);
      box-shadow: inset 0 0 0 4px var(--card), inset 0 0 0 5px rgba(201, 131, 79, .45);
    }

    .rg-step::before {
      counter-increment: rg;
      content: counter(rg);
      display: block;
      font-family: var(--display);
      font-weight: 700;
      font-size: 38px;
      line-height: 1;
      color: var(--gold-deep);
    }

    .rg-step b {
      display: block;
      font-family: var(--display);
      font-size: 22px;
      margin: 6px 0 4px;
      color: var(--navy);
    }

    .rg-step span {
      font-size: 16px;
      font-style: italic;
      color: var(--ink-soft);
      line-height: 1.4;
    }

    .rg {
      display: grid;
      grid-template-columns: 1.15fr 1fr;
      gap: 44px;
      align-items: center;
      padding: 56px 0;
      border-top: 1px solid rgba(201, 131, 79, .35);
    }

    .rg:nth-of-type(even) .rg-img {
      order: 2;
    }

    .rg-img img {
      width: 100%;
      height: auto;
      display: block;
    }

    .rg-img.small img {
      width: 72%;
      margin: 0 auto;
    }

    .rg-label {
      font-weight: 600;
      font-size: 13px;
      letter-spacing: .3em;
      text-transform: uppercase;
      color: var(--gold-deep);
      margin-bottom: 6px;
    }

    .rg h2 {
      font-family: var(--display);
      font-weight: 600;
      font-size: clamp(30px, 3.4vw, 42px);
      line-height: 1.05;
      color: var(--navy);
      margin-bottom: 8px;
    }

    .rg-lead {
      font-style: italic;
      font-size: 21px;
      color: var(--ink-soft);
      margin-bottom: 16px;
    }

    .rg ul {
      list-style: none;
      padding: 0;
    }

    .rg li {
      position: relative;
      padding-left: 26px;
      margin-bottom: 8px;
      font-size: 18px;
      line-height: 1.55;
    }

    .rg li::before {
      content: '◆';
      position: absolute;
      left: 0;
      top: .1em;
      font-size: 12px;
      color: var(--gold);
    }

    .rg-cta {
      text-align: center;
      margin: 30px auto 10px;
      padding: 34px 28px;
      max-width: 680px;
      background: var(--navy);
      color: var(--gold-pale);
      border: 1px solid var(--gold);
      box-shadow: inset 0 0 0 5px var(--navy), inset 0 0 0 6px rgba(201, 131, 79, .7);
    }

    .rg-cta h2 {
      font-family: var(--display);
      font-weight: 600;
      font-size: 32px;
      color: var(--parch-light);
      margin-bottom: 6px;
    }

    .rg-cta p {
      font-style: italic;
      font-size: 18px;
      margin-bottom: 18px;
    }

    .rg-cta a {
      display: inline-block;
      padding: 10px 26px;
      background: var(--gold-pale);
      color: var(--navy);
      text-decoration: none;
      font-weight: 600;
      letter-spacing: .2em;
      text-transform: uppercase;
      font-size: 14px;
    }

    @media (max-width: 860px) {
      .rg-steps {
        grid-template-columns: 1fr 1fr;
      }

      .rg {
        grid-template-columns: 1fr;
        gap: 22px;
        padding: 40px 0;
      }

      .rg:nth-of-type(even) .rg-img {
        order: 0;
      }
    }

    .rg-body {
      max-width: 1120px;
      margin: 0 auto;
      padding: 40px 36px 80px;
    }

    .rg-intro {
      text-align: center;
      max-width: 720px;
      margin: 0 auto;
      font-size: 21px;
      line-height: 1.6;
      color: var(--ink-soft);
    }

    .rg-intro strong {
      display: block;
      margin-top: 12px;
      font-size: 14px;
      font-weight: 600;
      letter-spacing: .26em;
      text-transform: uppercase;
      color: var(--navy);
    }

    .nb-logo {
      height: 38px;
      width: auto;
      display: block;
      margin-top: -4px;
    }

    .nav-brand {
      gap: 10px;
    }

    /* ══════════════════════════════════════
   ICONES — gravats del joc tintats, mai SVG
══════════════════════════════════════ */
    .ico {
      display: inline-block;
      height: auto;
      vertical-align: middle;
    }

    .ico-card {
      width: 76px;
    }

    .card-icon {
      margin-bottom: 6px;
    }

    .ico-ch {
      width: 46px;
      margin: -6px 8px 0 0;
    }

    .ico-row {
      width: 30px;
    }

    .comp-ico {
      width: 34px;
    }

    .ico-contact {
      width: 58px;
    }

    .ico-orn {
      width: 30px;
    }

    .div-ornament {
      display: flex;
      align-items: center;
      padding: 0 14px;
    }

    .full-divider {
      height: 40px;
    }

    .bk-sep {
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 14px;
      letter-spacing: 0;
    }

    .bk-sep::before,
    .bk-sep::after {
      content: '';
      width: 60px;
      height: 1px;
      background: var(--gold);
    }

    .bk-index-title {
      display: flex;
      align-items: center;
    }

    .bk-bib li {
      position: relative;
      padding-left: 22px;
    }

    .bk-bib li::before {
      content: '◆';
      position: absolute;
      left: 0;
      top: 11px;
      font-size: 10px;
      color: var(--gold);
    }

    /* Botó del menú mòbil: tres filets que fan una creu en obrir-se */
    .hb {
      position: relative;
      width: 22px;
      height: 16px;
      display: block;
    }

    .hb span {
      position: absolute;
      left: 0;
      width: 100%;
      height: 2px;
      border-radius: 1px;
      background: currentColor;
      transition: transform .25s, opacity .2s, top .25s;
    }

    .hb span:nth-child(1) { top: 0; }
    .hb span:nth-child(2) { top: 7px; }
    .hb span:nth-child(3) { top: 14px; }

    .menu-open .hb span:nth-child(1) { top: 7px; transform: rotate(45deg); }
    .menu-open .hb span:nth-child(2) { opacity: 0; }
    .menu-open .hb span:nth-child(3) { top: 7px; transform: rotate(-45deg); }

    /* Selector d'idioma: desplegable, sense SVG */
    .lang-dd {
      position: relative;
      margin-left: auto;
      margin-right: 8px;
    }

    .lang-dd summary {
      list-style: none;
      cursor: pointer;
      display: flex;
      align-items: center;
      gap: 8px;
      padding: 6px 12px;
      border: 1px solid rgba(201, 131, 79, .6);
      color: var(--gold-pale);
      font-family: var(--text);
      font-weight: 600;
      font-size: 13px;
      letter-spacing: .18em;
    }

    .lang-dd summary::-webkit-details-marker {
      display: none;
    }

    .lang-dd summary::after {
      content: '▾';
      font-size: 11px;
      color: var(--gold);
      letter-spacing: 0;
      transition: transform .2s;
    }

    .lang-dd[open] summary::after {
      transform: rotate(180deg);
    }

    .lang-dd ul {
      list-style: none;
      position: absolute;
      right: 0;
      top: calc(100% + 8px);
      min-width: 160px;
      margin: 0;
      padding: 6px 0;
      background: var(--navy);
      border: 1px solid var(--gold);
      box-shadow: 0 10px 24px rgba(10, 28, 45, .35);
      z-index: 600;
    }

    .lang-dd a {
      display: block;
      padding: 8px 18px;
      color: var(--gold-pale);
      text-decoration: none;
      font-family: var(--text);
      font-size: 16px;
    }

    .lang-dd a:hover {
      background: var(--navy-soft);
    }

    .lang-dd a[aria-current] {
      color: var(--gold);
      font-style: italic;
    }

    .autor-bio a {
      color: var(--gold-deep);
      text-decoration: none;
      border-bottom: 1px solid rgba(201, 131, 79, .55);
      transition: color .2s, border-color .2s;
    }

    .autor-bio a:hover {
      color: var(--navy);
      border-bottom-color: var(--navy);
    }

    .lang-dd .flag {
      width: 22px;
      height: auto;
      display: block;
      flex-shrink: 0;
    }

    .lang-dd a {
      display: flex;
      align-items: center;
      gap: 10px;
    }

    /* Separador: un sol filet centrat que s'esvaeix, amb la talaia al mig */
    .full-divider {
      height: 64px;
      background: var(--parch-light);
    }

    .full-divider::before {
      top: 50%;
      left: 8%;
      right: 8%;
      background: linear-gradient(90deg, transparent, var(--gold) 25%, var(--gold) 75%, transparent);
    }

    .full-divider::after {
      display: none;
    }

    .div-ornament {
      position: relative;
      z-index: 1;
      background: var(--parch-light);
      padding: 0 18px;
    }

    .div-ornament .ico-orn {
      width: 40px;
    }
