:root {
  --ink: #121212;
  --paper: #f8f7f2;
  --gold: #b89455;
  --red: #c6192e;
  --line: rgba(18, 18, 18, .18);
  --font-display: "Cormorant Garamond", Georgia, serif;
  --font-ui: "DM Sans", "Helvetica Neue", sans-serif;
}

html { scroll-behavior: smooth; }
body { background: var(--paper); color: var(--ink); font-family: var(--font-ui); }
a, a:hover, a:focus { color: inherit; text-decoration: none; }
.tsf-header { color: #fff; left: 0; padding: 0 5.6vw; position: absolute; top: 0; width: 100%; z-index: 20; }
.tsf-topbar { align-items: center; border-bottom: 1px solid rgba(255,255,255,.36); display: flex; font-size: 10px; justify-content: space-between; letter-spacing: .7px; min-height: 54px; }.tsf-topbar div { display: flex; gap: 20px; }.tsf-topbar a { transition: color .25s ease; }.tsf-topbar a:hover { color: var(--red); }
.tsf-mainbar { align-items: center; display: flex; justify-content: space-between; min-height: 98px; }
.tsf-brand { font-family: Georgia, "Times New Roman", serif; font-size: 27px; font-weight: bold; letter-spacing: -1.7px; line-height: 1; }
.tsf-brand { align-items: center; display: flex; height: 66px; }.tsf-brand img { display: block; height: 61px; object-fit: contain; width: 79px; }
.tsf-brand span { color: var(--red); font-style: italic; font-weight: normal; }
.tsf-brand sup { font-family: Arial, sans-serif; font-size: 7px; letter-spacing: 0; margin-left: 2px; vertical-align: top; }
.tsf-nav { align-items: center; display: flex; gap: 29px; font-size: 10px; font-weight: bold; letter-spacing: 1.2px; text-transform: uppercase; }
.tsf-nav { font-family: Georgia, "Times New Roman", serif; font-size: 15px; font-weight: bold; letter-spacing: -.15px; text-transform: none; }.tsf-nav .tsf-nav-cta { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 9px; letter-spacing: 1.1px; text-transform: uppercase; }
.tsf-nav { position: relative; }.tsf-nav > a:not(.tsf-nav-cta) { padding-bottom: 12px; transition: color .28s ease; }.tsf-nav > a:not(.tsf-nav-cta):hover { color: var(--red); }.tsf-nav-indicator { background: var(--red); bottom: 2px; height: 2px; left: 0; opacity: 0; pointer-events: none; position: absolute; transform: translateX(var(--nav-indicator-x, 0)); transition: transform .38s cubic-bezier(.2,.7,.25,1), width .38s cubic-bezier(.2,.7,.25,1), opacity .2s ease; width: var(--nav-indicator-width, 0); }.tsf-nav.has-indicator .tsf-nav-indicator { opacity: 1; }
.tsf-nav a { transition: color .25s ease; }
.tsf-nav a:hover { color: var(--gold); }
.tsf-nav .tsf-nav-cta { border: 1px solid rgba(255,255,255,.72); padding: 11px 15px; }
.tsf-menu-button { background: transparent; border: 0; display: none; height: 28px; padding: 0; width: 34px; }
.tsf-menu-button span { background: #fff; display: block; height: 1px; margin: 7px 0; width: 100%; }
.tsf-hero { color: #fff; height: 100vh; min-height: 650px; overflow: hidden; position: relative; }
.tsf-slide { align-items: center; background-position: center; background-size: cover; display: flex; inset: 0; justify-content: center; position: absolute; transform: translateY(100%); transition: transform 1.35s cubic-bezier(.77, 0, .18, 1); visibility: visible; will-change: transform; }.tsf-slide.is-active { transform: translateY(0); z-index: 2; }.tsf-slide.is-leaving { transform: translateY(-100%); z-index: 1; }.tsf-slide-encierro { background-image: url("../images/hero-encierro.png"); }.tsf-slide-chupinazo { background-image: url("../images/hero-chupinazo.png"); }.tsf-slide-gigantes { background-image: url("../images/hero-gigantes.png"); }.tsf-slide-navarra { background-image: url("../images/hero-navarra.png"); }
.tsf-slide-shade { background: rgba(0,0,0,.34); inset: 0; position: absolute; }.tsf-slide:first-child .tsf-slide-shade { background: linear-gradient(90deg, rgba(0,0,0,.51), rgba(0,0,0,.20)); }
.tsf-slide-content { max-width: 920px; position: relative; text-align: center; z-index: 1; }
.tsf-eyebrow, .tsf-label { color: var(--gold); font-size: 10px; font-weight: bold; letter-spacing: 2px; margin: 0 0 22px; text-transform: uppercase; }
.tsf-slide h1, .tsf-intro h2, .tsf-section-top h2, .tsf-territory h2, .tsf-contact h2 { font-family: Georgia, "Times New Roman", serif; font-size: clamp(48px, 6.2vw, 94px); font-weight: normal; letter-spacing: -5px; line-height: .97; margin: 0; }
em { color: var(--red); font-weight: normal; }
.tsf-slide-content > p { font-size: 20px; font-weight: 300; letter-spacing: .2px; margin: 26px 0 34px; }
.tsf-button { border: 1px solid currentColor; display: inline-flex; font-size: 10px; font-weight: bold; letter-spacing: 1.4px; padding: 16px 18px; text-transform: uppercase; transition: background .25s ease, color .25s ease; }
.tsf-button span { font-size: 16px; line-height: 10px; margin-left: 38px; }
.tsf-button:hover { background: #fff; color: var(--ink); }
.tsf-hero-meta { bottom: 30px; display: flex; font-size: 9px; justify-content: space-between; left: 5.6vw; letter-spacing: 1px; position: absolute; right: 5.6vw; z-index: 1; }
.tsf-scroll { text-transform: uppercase; }.tsf-scroll i { margin-left: 12px; }
.tsf-slider-control { background: transparent; border: 0; color: #fff; cursor: pointer; font-family: Georgia, serif; font-size: 56px; font-weight: normal; line-height: 1; padding: 10px; position: absolute; top: 53%; transform: translateY(-50%); z-index: 3; }.tsf-slider-prev { left: 2vw; }.tsf-slider-next { right: 2vw; }.tsf-slider-control:hover { color: var(--gold); }
.tsf-offer-strip { background: #f4f3ef; padding: 56px 0; }.tsf-offer { align-items: center; display: flex; min-height: 65px; padding-bottom: 10px; padding-top: 10px; transition: transform .25s ease; }.tsf-offer:hover { color: var(--red); transform: translateY(-3px); }.tsf-offer i { color: var(--gold); font-size: 41px; text-align: center; width: 77px; }.tsf-offer span { display: block; padding-left: 15px; }.tsf-offer strong { display: block; font-size: 13px; letter-spacing: .5px; margin-bottom: 7px; text-transform: uppercase; }.tsf-offer small { color: #6c6b69; display: block; font-size: 12px; line-height: 1.45; max-width: 195px; }
.tsf-marquee { background: var(--red); color: #fff; font-size: 12px; font-weight: bold; letter-spacing: 2px; overflow: hidden; padding: 15px 0; white-space: nowrap; }
.tsf-marquee-track { animation: tsf-scroll 35s linear infinite; display: inline-block; padding-left: 100%; }
@keyframes tsf-scroll { to { transform: translateX(-50%); } }
.tsf-intro { padding: 145px 0 130px; }.tsf-intro h2 { font-size: clamp(44px, 5vw, 75px); }.tsf-lede { font-size: 17px; line-height: 1.75; margin: 38px 0 0; max-width: 610px; }
.tsf-invitation { background: #f4f3ef; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); min-height: 680px; }.tsf-invitation-copy { align-items: center; display: flex; padding: 82px 10vw 82px max(7vw, calc((100vw - 1210px) / 2)); position: relative; }.tsf-invitation-copy:before { background: var(--red); content: ""; height: 92px; left: 0; position: absolute; top: 0; width: 5px; }.tsf-invitation-copy-inner { max-width: 580px; }.tsf-invitation h2 { font-family: Georgia, "Times New Roman", serif; font-size: clamp(42px, 4.15vw, 69px); font-weight: normal; letter-spacing: -3.8px; line-height: .99; margin: 0; }.tsf-invitation h2 em { font-style: italic; }.tsf-invitation-copy-inner > p:not(.tsf-label):not(.tsf-invitation-signature) { font-size: 16px; line-height: 1.78; margin: 36px 0 25px; max-width: 470px; }.tsf-invitation-signature { border-left: 2px solid var(--red); color: #5b5752; font-family: Georgia, serif; font-size: 16px; font-style: italic; line-height: 1.45; margin: 0 0 37px; max-width: 365px; padding-left: 19px; }.tsf-invitation-button { background: var(--red); border-color: var(--red); color: #fff; }.tsf-invitation-button span { color: var(--gold); font-size: 17px; margin-left: 17px; }.tsf-invitation-button:hover { background: var(--ink); border-color: var(--ink); color: #fff; }.tsf-invitation-image { margin: 0; min-height: 680px; overflow: hidden; position: relative; }.tsf-invitation-image:after { background: linear-gradient(90deg, rgba(0,0,0,.24), transparent 38%), linear-gradient(0deg, rgba(0,0,0,.45), transparent 46%); content: ""; inset: 0; position: absolute; }.tsf-invitation-image img { height: 100%; object-fit: cover; transition: transform .9s cubic-bezier(.2,.65,.25,1); width: 100%; }.tsf-invitation:hover .tsf-invitation-image img { transform: scale(1.045); }.tsf-invitation-image figcaption { bottom: 37px; color: #fff; font-size: 10px; font-weight: bold; left: 45px; letter-spacing: 1.8px; position: absolute; text-transform: uppercase; z-index: 1; }
.tsf-worlds { display: grid; grid-template-columns: 1fr 1fr; min-height: 550px; }
.tsf-world { color: #fff; display: flex; flex-direction: column; justify-content: space-between; overflow: hidden; padding: 38px 11%; position: relative; transition: filter .3s ease; }
.tsf-world:before { background: linear-gradient(0deg, rgba(0,0,0,.75), rgba(0,0,0,.08)); content: ""; inset: 0; position: absolute; }.tsf-world:hover { filter: brightness(1.12); }
.tsf-world:hover:before { background: linear-gradient(135deg, rgba(198,25,46,.96), rgba(145,14,29,.91)); }.tsf-world:hover { color: #fff; filter: none; }.tsf-world:hover .tsf-world-number, .tsf-world:hover .tsf-arrow b { color: #fff; }
.tsf-world { background-size: 100%; transition: background-size .85s cubic-bezier(.2,.65,.25,1), color .35s ease; }.tsf-world-fiesta { background-image: url("../images/hero-encierro.png"); }.tsf-world-recorrido { background-image: url("../images/hero-navarra.png"); background-position: center; background-size: 100%; }.tsf-world:hover { background-size: 111%; color: var(--red); }.tsf-world:hover:before { background: linear-gradient(0deg, rgba(0,0,0,.7), rgba(0,0,0,.18) 78%); }.tsf-world:hover .tsf-world-number, .tsf-world:hover .tsf-arrow b, .tsf-world:hover p, .tsf-world:hover h2 { color: var(--red); }
.tsf-world-fiesta { background: url("../images/hero-encierro.png") center / cover; }.tsf-world-recorrido { background: radial-gradient(circle at 70% 20%, #664d34, transparent 26%), linear-gradient(130deg, #1d2520, #3b2d1f 52%, #10100d); }
.tsf-world > * { position: relative; z-index: 1; }.tsf-world-number { font-size: 11px; font-weight: bold; letter-spacing: 1px; }.tsf-world p { font-size: 10px; font-weight: bold; letter-spacing: 2px; margin: 0 0 18px; text-transform: uppercase; }.tsf-world h2 { font-family: Georgia, serif; font-size: clamp(57px, 6vw, 94px); font-weight: normal; letter-spacing: -5px; line-height: .82; margin: 0 0 32px; }.tsf-arrow { font-size: 10px; font-weight: bold; letter-spacing: 1.3px; text-transform: uppercase; }.tsf-arrow b { color: var(--gold); font-size: 19px; margin-left: 20px; }
.tsf-moments { padding: 135px 0; }.tsf-section-top { align-items: flex-end; display: flex; justify-content: space-between; margin-bottom: 70px; }.tsf-section-top h2 { font-size: clamp(40px, 4.6vw, 68px); }.tsf-section-top > p { font-size: 14px; line-height: 1.7; margin: 0; max-width: 280px; }.tsf-moment-list { border-top: 1px solid var(--line); }.tsf-moment { align-items: center; border-bottom: 1px solid var(--line); display: grid; gap: 22px; grid-template-columns: 45px minmax(210px, 1.2fr) 110px minmax(220px, 1fr) 30px; padding: 26px 0; transition: padding .3s ease, color .3s ease; }.tsf-moment:hover { color: var(--red); padding-left: 13px; }.tsf-moment span, .tsf-moment small { font-size: 10px; letter-spacing: 1px; }.tsf-moment strong { font-family: Georgia, serif; font-size: 28px; font-weight: normal; letter-spacing: -1px; }.tsf-moment em { color: #555; font-family: Arial, sans-serif; font-size: 13px; line-height: 1.5; }.tsf-moment b { font-size: 23px; font-weight: 300; text-align: right; }
.tsf-territory { background: var(--ink); color: #fff; overflow: hidden; padding: 138px 0 74px; position: relative; }.tsf-territory-mark { color: rgba(255,255,255,.035); font-family: Georgia, serif; font-size: 31vw; letter-spacing: -3vw; line-height: .6; position: absolute; right: -2vw; top: 25px; }.tsf-territory .row { position: relative; z-index: 1; }.tsf-territory h2 { font-size: clamp(43px, 5vw, 75px); }.tsf-territory .col-md-5 > p { font-size: 16px; line-height: 1.8; margin-bottom: 32px; }.tsf-button-light { color: #fff; }.tsf-button-light:hover { color: var(--ink); }.tsf-places { display: flex; flex-wrap: wrap; gap: 13px 29px; margin-top: 150px; position: relative; z-index: 1; }.tsf-places span { color: var(--gold); font-size: 11px; letter-spacing: 1.8px; }
.tsf-proof { padding: 140px 0; }.tsf-proof blockquote { border: 0; font-family: Georgia, serif; font-size: clamp(34px, 4vw, 58px); letter-spacing: -2.8px; line-height: 1.1; margin: 0; padding: 0; }.tsf-proof-caption { color: #666; font-size: 14px; line-height: 1.7; margin: 30px 0; max-width: 530px; }.tsf-text-link { border-bottom: 1px solid var(--ink); display: inline-block; font-size: 10px; font-weight: bold; letter-spacing: 1px; padding-bottom: 8px; text-transform: uppercase; }.tsf-text-link span { color: var(--red); font-size: 17px; margin-left: 15px; }
.tsf-journal { background: #e9e5dd; padding: 125px 0; }.tsf-journal .tsf-section-top { align-items: flex-end; }.tsf-journal-grid article { border-top: 1px solid var(--line); padding-top: 22px; }.tsf-journal-grid article > p { color: var(--red); font-size: 9px; font-weight: bold; letter-spacing: 1.3px; }.tsf-journal-grid h3 { font-family: Georgia, serif; font-size: 27px; font-weight: normal; letter-spacing: -1px; line-height: 1.15; margin: 18px 0 34px; max-width: 300px; }.tsf-journal-grid article a { font-size: 10px; font-weight: bold; letter-spacing: 1px; text-transform: uppercase; }.tsf-journal-grid article a span { color: var(--red); font-size: 17px; margin-left: 10px; }
.tsf-contact { background: var(--red); color: #fff; padding: 136px 0; }.tsf-contact .tsf-label { color: rgba(255,255,255,.7); }.tsf-contact h2 { font-size: clamp(50px, 6vw, 89px); margin-bottom: 37px; }.tsf-contact h2 em { color: #fff; font-style: italic; }.tsf-contact .tsf-button:hover { color: var(--red); }
.tsf-footer { background: var(--ink); color: #fff; padding: 68px 0 25px; }.tsf-footer p, .tsf-footer a { display: block; font-size: 11px; letter-spacing: .5px; margin: 0 0 10px; }.tsf-footer a:hover { color: var(--gold); }.tsf-footer-bottom { border-top: 1px solid rgba(255,255,255,.18); color: rgba(255,255,255,.48); display: flex; font-size: 9px; justify-content: space-between; letter-spacing: .7px; margin-top: 55px; padding-top: 18px; text-transform: uppercase; }
@media (max-width: 767px) { .tsf-header { padding: 0 26px; }.tsf-topbar { display: none; }.tsf-mainbar { min-height: 82px; }.tsf-menu-button { display: block; z-index: 3; }.tsf-nav { background: var(--ink); display: none; flex-direction: column; gap: 23px; left: 0; padding: 100px 30px 35px; position: absolute; top: 0; width: 100%; }.tsf-nav.is-open { display: flex; }.tsf-nav .tsf-nav-cta { padding: 12px; }.tsf-hero { min-height: 630px; }.tsf-slide-content { margin: 45px 28px 0; }.tsf-slide h1 { font-size: 51px; letter-spacing: -3.2px; }.tsf-slide-content > p { font-size: 15px; line-height: 1.6; }.tsf-hero-meta { bottom: 20px; left: 28px; right: 28px; }.tsf-slider-control { display: none; }.tsf-scroll { display: none; }.tsf-offer-strip { padding: 34px 0; }.tsf-offer { padding-bottom: 15px; padding-top: 15px; }.tsf-offer i { font-size: 34px; width: 62px; }.tsf-offer span { padding-left: 10px; }.tsf-marquee { font-size: 10px; }.tsf-intro, .tsf-moments, .tsf-proof, .tsf-journal, .tsf-contact { padding: 78px 0; }.tsf-intro h2, .tsf-section-top h2, .tsf-territory h2 { letter-spacing: -2.8px; }.tsf-intro .col-md-4 { margin-bottom: 24px; }.tsf-invitation { display: block; min-height: 0; }.tsf-invitation-copy { min-height: 570px; padding: 76px 28px; }.tsf-invitation h2 { font-size: 45px; letter-spacing: -2.7px; }.tsf-invitation-image { min-height: 430px; }.tsf-invitation-image img { display: block; height: 430px; }.tsf-invitation-image figcaption { bottom: 25px; left: 28px; }.tsf-worlds { display: block; }.tsf-world { min-height: 390px; padding: 30px 11%; }.tsf-section-top { align-items: flex-start; display: block; margin-bottom: 42px; }.tsf-section-top > p { margin-top: 25px; }.tsf-moment { align-items: start; gap: 10px; grid-template-columns: 25px 1fr 24px; padding: 22px 0; }.tsf-moment small, .tsf-moment em { grid-column: 2 / 3; }.tsf-moment strong { font-size: 23px; }.tsf-moment b { grid-column: 3; grid-row: 1; }.tsf-territory { padding: 78px 0 54px; }.tsf-territory .col-md-5 { margin-top: 32px; }.tsf-places { margin-top: 75px; }.tsf-proof blockquote { letter-spacing: -1.8px; }.tsf-proof .col-md-4 { margin-bottom: 36px; }.tsf-footer { padding-top: 50px; }.tsf-footer .col-md-3 { margin-top: 28px; }.tsf-footer-bottom { display: block; line-height: 1.8; }.tsf-footer-bottom span { display: block; } }

/* San Fermin red is the recurring ceremonial accent, not a decorative afterthought. */
.tsf-proof .col-md-4 { margin-bottom: 24px; }
.tsf-topbar { border-top: 4px solid var(--red); }
.tsf-slide-content:before { background: var(--red); color: #fff; content: "PAMPLONA Â· 6 â€” 14 JULIO"; display: inline-block; font-size: 9px; font-weight: bold; letter-spacing: 2px; margin-bottom: 24px; padding: 8px 12px; }
.tsf-slide .tsf-button, .tsf-invitation-button { background: #fff; border-color: #fff; color: var(--ink); }.tsf-slide .tsf-button:hover, .tsf-invitation-button:hover { background: var(--red); border-color: var(--red); color: #fff; }
.tsf-slide h1 em { color: var(--red); }
.tsf-button { border-color: var(--red); }.tsf-button:hover { border-color: #fff; }
.tsf-button.tsf-invitation-button:hover { background: var(--red); border-color: var(--red); color: #fff; }.tsf-button.tsf-invitation-button:hover span { color: #fff; }
.tsf-slider-control:hover { color: var(--red); }
.tsf-offer-strip { border-bottom: 3px solid var(--red); }.tsf-offer i { color: var(--red); }
.tsf-label:before { background: var(--red); content: ""; display: inline-block; height: 8px; margin-right: 10px; width: 8px; }
.tsf-world-number, .tsf-arrow b, .tsf-moment span, .tsf-moment b { color: var(--red); }.tsf-moment span { font-weight: bold; }
.tsf-places span:before { color: var(--red); content: "â€¢"; margin-right: 9px; }
.tsf-journal-grid article { border-top: 3px solid var(--red); }

/* Territory block: a calm editorial pause after the intensity of the fiesta. */
.tsf-territory { background: #f4f3ef; color: var(--ink); padding: 125px 0; }
.tsf-territory-mark { display: none; }.tsf-territory-layout { align-items: center; display: flex; }.tsf-map-art { background: #e1e3de url("../images/mapa-territorio.png") center / cover no-repeat; min-height: 475px; position: relative; }.tsf-map-art:after { border: 1px solid rgba(198,25,46,.8); content: "NAVARRA Â· EUSKADI Â· IPARRALDE"; color: var(--red); font-size: 9px; font-weight: bold; letter-spacing: 1.7px; padding: 10px 12px; position: absolute; right: 22px; top: 22px; }
.tsf-territory-copy h2 { font-size: clamp(41px, 4.4vw, 66px); }.tsf-territory-copy > p:not(.tsf-label) { font-size: 15px; line-height: 1.78; margin: 25px 0 27px; max-width: 500px; }.tsf-territory-rule { background: var(--red); display: block; height: 3px; margin: 25px 0; width: 56px; }.tsf-place-list { display: flex; flex-wrap: wrap; gap: 10px 23px; margin: 0 0 35px; }.tsf-place-list a { border-bottom: 1px solid rgba(18,18,18,.18); font-family: Georgia, serif; font-size: 20px; letter-spacing: -.5px; padding: 0 0 8px; transition: border-color .2s ease, color .2s ease; width: calc(50% - 12px); }.tsf-place-list a:hover { border-color: var(--red); color: var(--red); }.tsf-place-list small { color: #74716c; display: block; font-family: Arial, sans-serif; font-size: 9px; letter-spacing: .7px; margin-top: 4px; text-transform: uppercase; }
@media (max-width: 767px) { .tsf-territory { padding: 78px 0; }.tsf-territory-layout { display: block; }.tsf-map-art { min-height: 300px; margin-bottom: 45px; }.tsf-map-art:after { font-size: 8px; right: 16px; top: 16px; }.tsf-territory-copy h2 { letter-spacing: -2.8px; }.tsf-place-list { gap: 10px 18px; }.tsf-place-list a { font-size: 18px; width: calc(50% - 9px); } }

/* Calendar explorations: three interaction directions using the same San Fermin story. */
.tsf-calendar-lab { background: #ece9e2; padding: 135px 0; }.tsf-calendar-lab-heading { align-items: end; display: flex; justify-content: space-between; margin-bottom: 78px; }.tsf-calendar-lab h2 { font-family: Georgia, serif; font-size: clamp(43px, 5vw, 72px); font-weight: normal; letter-spacing: -3.7px; line-height: .98; margin: 0; max-width: 800px; }.tsf-calendar-lab-heading > p { font-size: 14px; line-height: 1.7; margin: 0; max-width: 290px; }.tsf-calendar-concept { border-top: 1px solid rgba(18,18,18,.25); margin-top: 95px; padding-top: 22px; }.tsf-calendar-concept header { align-items: center; display: grid; grid-template-columns: 46px 1fr auto; margin-bottom: 30px; }.tsf-calendar-concept header > span { color: var(--red); font-size: 11px; font-weight: bold; letter-spacing: 1px; }.tsf-calendar-concept header p { color: var(--red); font-size: 9px; font-weight: bold; letter-spacing: 1.5px; margin: 0 0 6px; text-transform: uppercase; }.tsf-calendar-concept header h3 { font-family: Georgia, serif; font-size: 31px; font-weight: normal; letter-spacing: -1.5px; line-height: 1; margin: 0; }.tsf-calendar-concept header small { color: #6f6b65; font-size: 10px; letter-spacing: 1.1px; text-transform: uppercase; }.scene-chupinazo { background-image: url("../images/hero-chupinazo.png"); }.scene-encierro { background-image: url("../images/hero-encierro.png"); }.scene-gigantes { background-image: url("../images/hero-gigantes.png"); }.scene-navarra { background-image: url("../images/hero-navarra.png"); }
.tsf-calendar-showcase { display: flex; height: 490px; overflow: hidden; }.tsf-calendar-scene { background-color: var(--ink); background-position: center; background-size: cover; color: #fff; display: flex; flex: 1; flex-direction: column; justify-content: end; min-width: 0; overflow: hidden; padding: 25px 18px; position: relative; transition: flex .65s cubic-bezier(.2,.65,.25,1), filter .45s ease; }.tsf-calendar-scene:before { background: linear-gradient(0deg, rgba(0,0,0,.85), rgba(0,0,0,.05) 68%); content: ""; inset: 0; position: absolute; }.tsf-calendar-scene:hover { filter: saturate(1.1); flex: 4.5; }.tsf-calendar-scene > * { position: relative; z-index: 1; }.tsf-date { color: rgba(255,255,255,.75); font-size: 9px; font-weight: bold; letter-spacing: 1.5px; margin-bottom: 11px; }.tsf-calendar-scene strong { font-family: Georgia, serif; font-size: 24px; font-weight: normal; letter-spacing: -1px; line-height: .95; min-width: 110px; }.tsf-scene-detail { border-left: 2px solid var(--red); font-size: 13px; line-height: 1.58; margin-top: 20px; max-height: 0; opacity: 0; overflow: hidden; padding-left: 15px; transform: translateY(10px); transition: max-height .45s ease .15s, opacity .3s ease .18s, transform .4s ease .15s; width: 250px; }.tsf-scene-detail b { color: var(--gold); display: block; font-size: 10px; letter-spacing: .8px; margin-top: 9px; text-transform: uppercase; }.tsf-calendar-scene:hover .tsf-scene-detail { max-height: 140px; opacity: 1; transform: translateY(0); }
.tsf-calendar-scene, .tsf-calendar-scene:hover, .tsf-calendar-scene:focus { color: #fff !important; text-decoration: none !important; }.tsf-calendar-scene:hover:before, .tsf-calendar-scene:focus:before { background: linear-gradient(135deg, rgba(198,25,46,.96), rgba(137,14,29,.92)); }.tsf-calendar-scene:hover { filter: none; }.tsf-calendar-scene strong { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 13px; font-weight: 700; letter-spacing: .25px; line-height: 1.18; text-decoration: none; text-transform: uppercase; }.tsf-calendar-scene .tsf-date { color: #fff; text-decoration: none; }.tsf-calendar-scene:hover .tsf-scene-detail { border-color: #fff; }.tsf-calendar-scene:hover .tsf-scene-detail b { color: #fff; }
.tsf-calendar-scene { appearance: none; border: 0; cursor: default; font-family: inherit; text-align: left; }.tsf-calendar-scene.is-expanded { flex: 8; padding-right: 272px; }.tsf-scene-panel { align-items: flex-start; background: #f7f5f0; bottom: 0; color: var(--ink); display: flex; flex-direction: column; justify-content: center; opacity: 0; padding: 34px 28px; position: absolute; right: 0; top: 0; transform: translateX(28px); transition: opacity .35s ease .12s, transform .45s cubic-bezier(.2,.65,.25,1) .12s; visibility: hidden; width: 244px; z-index: 3; }.tsf-scene-panel:before { background: var(--red); content: ""; height: 100%; left: 0; position: absolute; top: 0; width: 5px; }.tsf-scene-panel i { color: var(--red); font-size: 9px; font-style: normal; font-weight: bold; letter-spacing: 1.3px; margin-bottom: 17px; text-transform: uppercase; }.tsf-scene-panel b { font-family: Georgia, serif; font-size: 21px; font-weight: normal; letter-spacing: -.8px; line-height: 1.1; }.tsf-scene-panel em { color: #706a62; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 10px; font-style: normal; line-height: 1.45; margin-top: 23px; }.tsf-calendar-scene.is-expanded .tsf-scene-panel { opacity: 1; transform: translateX(0); visibility: visible; }.tsf-calendar-scene.is-expanded .tsf-scene-detail { max-height: 140px; opacity: 1; transform: translateY(0); }.tsf-calendar-scene.is-expanded .tsf-scene-detail, .tsf-calendar-scene.is-expanded .tsf-scene-detail b { border-color: #fff; color: #fff; }
.tsf-calendar-showcase { position: relative; }.tsf-calendar-scene { transition: flex 1.05s cubic-bezier(.2,.65,.2,1), opacity .78s ease, padding 1.05s cubic-bezier(.2,.65,.2,1), transform 1.05s cubic-bezier(.2,.65,.2,1); }.tsf-calendar-showcase.is-focused .tsf-calendar-scene:not(.is-selected) { flex: 0 1 0; opacity: 0; padding-left: 0; padding-right: 0; pointer-events: none; }.tsf-calendar-showcase.is-focused .tsf-calendar-scene.is-before { transform: translateX(-120px); }.tsf-calendar-showcase.is-focused .tsf-calendar-scene.is-after { transform: translateX(120px); }.tsf-calendar-showcase.is-focused .tsf-calendar-scene.is-selected { flex: 1 0 100%; padding-right: 315px; }.tsf-calendar-showcase.is-focused .tsf-calendar-scene.is-selected:before { background: linear-gradient(90deg, rgba(0,0,0,.72), rgba(0,0,0,.16) 72%); }.tsf-calendar-showcase.is-focused .tsf-calendar-scene.is-selected .tsf-scene-panel { opacity: 1; transform: translateX(0); visibility: visible; }.tsf-calendar-showcase.is-focused .tsf-calendar-scene.is-selected .tsf-scene-detail { max-height: 140px; opacity: 1; transform: translateY(0); }.tsf-calendar-showcase.is-focused .tsf-calendar-scene.is-selected .tsf-scene-detail, .tsf-calendar-showcase.is-focused .tsf-calendar-scene.is-selected .tsf-scene-detail b { border-color: var(--red); color: #fff; }
.tsf-month-grid { background: #f8f7f3; display: grid; grid-template-columns: repeat(7, 1fr); overflow: hidden; }.tsf-month-grid > span, .tsf-month-day { border-bottom: 1px solid #ddd9d0; border-right: 1px solid #ddd9d0; min-height: 105px; padding: 13px; }.tsf-week-day { align-items: center; background: var(--ink); border-color: var(--ink) !important; color: #fff; display: flex; font-size: 9px; font-weight: bold; justify-content: center; letter-spacing: 1px; min-height: 40px !important; }.tsf-muted-day { color: #c6c1b9; font-family: Georgia, serif; font-size: 19px; }.tsf-month-day { background-position: center; background-size: cover; color: #fff; display: flex; flex-direction: column; justify-content: end; overflow: hidden; position: relative; transition: transform .3s ease, z-index .3s ease; }.tsf-month-day:before { background: linear-gradient(0deg, rgba(0,0,0,.82), rgba(0,0,0,.12)); content: ""; inset: 0; position: absolute; }.tsf-month-day > * { position: relative; z-index: 1; }.tsf-month-day b { color: var(--red); font-family: Georgia, serif; font-size: 29px; font-weight: normal; line-height: .9; }.tsf-month-day em { font-size: 11px; font-style: normal; font-weight: bold; letter-spacing: .4px; margin: 8px 0 3px; }.tsf-month-day i { font-size: 0; font-style: normal; line-height: 1.4; max-height: 0; opacity: 0; transition: font-size .25s ease, max-height .25s ease, opacity .25s ease; }.tsf-month-day:hover { transform: scale(1.09); z-index: 3; }.tsf-month-day:hover i { font-size: 10px; max-height: 38px; opacity: 1; }.tsf-calendar-note { color: #6f6b65; font-family: Georgia, serif; font-size: 16px; font-style: italic; margin: 23px 0 0; }
.tsf-timeline-track { display: grid; grid-template-columns: repeat(9, 1fr); overflow: hidden; }.tsf-timeline-item { background: var(--ink); border-right: 1px solid rgba(255,255,255,.2); color: #fff; min-height: 410px; overflow: hidden; padding: 25px 14px; position: relative; }.tsf-timeline-item:after { background: linear-gradient(0deg, rgba(0,0,0,.82), rgba(0,0,0,.05) 80%); content: ""; inset: 0; position: absolute; }.tsf-timeline-item span, .tsf-timeline-item strong, .tsf-timeline-item p { position: relative; z-index: 2; }.tsf-timeline-item span { color: var(--red); display: block; font-size: 10px; font-weight: bold; letter-spacing: 1px; }.tsf-timeline-item strong { bottom: 27px; font-family: Georgia, serif; font-size: 20px; font-weight: normal; left: 14px; letter-spacing: -1px; line-height: .9; position: absolute; transform: rotate(-90deg); transform-origin: left top; white-space: nowrap; }.tsf-timeline-item img { height: 100%; inset: 0; object-fit: cover; opacity: .68; position: absolute; transition: opacity .35s ease, transform .65s ease; width: 100%; }.tsf-timeline-item p { bottom: 25px; font-size: 11px; line-height: 1.55; margin: 0; max-height: 0; opacity: 0; overflow: hidden; position: absolute; transform: translateY(12px); transition: max-height .35s ease, opacity .3s ease, transform .35s ease; }.tsf-timeline-item:hover img { opacity: .98; transform: scale(1.06); }.tsf-timeline-item:hover strong { opacity: 0; }.tsf-timeline-item:hover p { max-height: 90px; opacity: 1; transform: translateY(0); }
@media (max-width: 767px) { .tsf-calendar-lab { padding: 80px 0; }.tsf-calendar-lab-heading { display: block; margin-bottom: 48px; }.tsf-calendar-lab h2 { font-size: 46px; letter-spacing: -2.7px; }.tsf-calendar-lab-heading > p { margin-top: 25px; }.tsf-calendar-concept { margin-top: 65px; }.tsf-calendar-concept header { align-items: start; grid-template-columns: 35px 1fr; }.tsf-calendar-concept header small { display: none; }.tsf-calendar-concept header h3 { font-size: 27px; }.tsf-calendar-showcase { height: 525px; overflow-x: auto; scroll-snap-type: x mandatory; }.tsf-calendar-scene { flex: 0 0 73%; padding: 26px; scroll-snap-align: start; }.tsf-calendar-scene:hover { flex: 0 0 73%; }.tsf-scene-detail { max-height: 140px; opacity: 1; transform: none; }.tsf-month-grid > span, .tsf-month-day { min-height: 64px; padding: 7px; }.tsf-month-day b { font-size: 22px; }.tsf-month-day em { font-size: 0; }.tsf-month-day:hover { transform: none; }.tsf-week-day { min-height: 32px !important; }.tsf-muted-day { font-size: 15px; }.tsf-calendar-note { font-size: 14px; line-height: 1.5; }.tsf-timeline-track { grid-template-columns: repeat(9, 72vw); overflow-x: auto; scroll-snap-type: x mandatory; }.tsf-timeline-item { min-height: 385px; padding: 25px; scroll-snap-align: start; }.tsf-timeline-item strong { font-size: 35px; left: 25px; transform: none; white-space: normal; }.tsf-timeline-item p { max-height: 90px; opacity: 1; transform: none; } }
@media (max-width: 767px) { .tsf-calendar-scene.is-expanded, .tsf-calendar-showcase.is-focused .tsf-calendar-scene.is-selected { flex: 0 0 73%; padding-right: 26px; }.tsf-calendar-showcase.is-focused .tsf-calendar-scene:not(.is-selected) { flex: 0 0 73%; opacity: 1; padding: 26px; pointer-events: auto; transform: none; }.tsf-scene-panel { display: none; } }

/* Territory: a compact Basque silhouette rather than a large rectangular map. */
.tsf-territory { padding: 82px 0; }.tsf-territory-layout { align-items: center; }.tsf-map-art { align-items: center; background: transparent; display: flex; justify-content: center; min-height: 350px; overflow: visible; }.tsf-map-art:after { display: none; }.tsf-euskadi-silhouette { filter: drop-shadow(18px 20px 22px rgba(99,14,26,.18)); max-width: 580px; transform: rotate(-3deg); width: 100%; }.tsf-map-shape { fill: url(#tsf-territory-red); }.tsf-map-contour { fill: none; opacity: .45; stroke: #fff; stroke-dasharray: 3 8; stroke-width: 2; }.tsf-map-points circle { fill: #fff; stroke: #9d1122; stroke-width: 5; }.tsf-map-caption { border-bottom: 2px solid var(--red); color: var(--red); font-size: 9px; font-weight: bold; letter-spacing: 1.6px; padding-bottom: 9px; position: absolute; text-transform: uppercase; transform: translateY(166px); }.tsf-territory-copy h2 { font-size: clamp(40px, 4vw, 61px); }.tsf-territory-copy > p:not(.tsf-label) { font-size: 14px; line-height: 1.68; margin: 20px 0 22px; }.tsf-place-list { gap: 8px 23px; margin-bottom: 27px; }.tsf-place-list a { font-size: 18px; padding-bottom: 6px; }.tsf-place-list small { font-size: 8px; }
@media (max-width: 767px) { .tsf-territory { padding: 70px 0; }.tsf-map-art { min-height: 250px; }.tsf-euskadi-silhouette { max-width: 390px; }.tsf-map-caption { transform: translateY(120px); }.tsf-territory-copy h2 { font-size: 44px; } }
.tsf-map-caption { bottom: 0; left: 50%; transform: translateX(-50%); white-space: nowrap; }

/* A slower, calmer calendar reveal: image on the left, substantial editorial reading on the right. */
.tsf-calendar-scene { transition: flex 1.65s cubic-bezier(.22,.61,.2,1), opacity 1.2s ease, padding 1.65s cubic-bezier(.22,.61,.2,1), transform 1.65s cubic-bezier(.22,.61,.2,1); }.tsf-calendar-showcase.is-focused .tsf-calendar-scene.is-selected { background-color: #f7f5f0; background-position: left center; background-repeat: no-repeat; background-size: 57% 100%; padding-right: 43%; }.tsf-calendar-showcase.is-focused .tsf-calendar-scene.is-selected:before { inset: 0 auto 0 0; width: 57%; }.tsf-calendar-showcase.is-focused .tsf-calendar-scene.is-selected .tsf-scene-panel { box-sizing: border-box; padding: 47px 42px; transition: opacity .7s ease .52s, transform .85s cubic-bezier(.22,.61,.2,1) .52s; width: 43%; }.tsf-scene-panel b { font-size: clamp(20px, 1.7vw, 28px); letter-spacing: -1px; line-height: 1.13; }.tsf-scene-panel em { font-size: 12px; line-height: 1.65; margin-top: 27px; max-width: 420px; }.tsf-scene-panel i { margin-bottom: 20px; }.tsf-calendar-showcase.is-focused .tsf-calendar-scene.is-selected .tsf-scene-detail { max-width: 52%; }
@media (max-width: 767px) { .tsf-calendar-scene { transition-duration: .6s; }.tsf-calendar-showcase.is-focused .tsf-calendar-scene.is-selected { background-size: cover; padding-right: 26px; }.tsf-calendar-showcase.is-focused .tsf-calendar-scene.is-selected:before { inset: 0; width: auto; } }

/* Intro: a visual, more informative opening to the TuSanfermin proposition. */
.tsf-intro { padding: 115px 0; }.tsf-intro-photo { margin: 28px 0 0; max-width: 325px; overflow: hidden; position: relative; }.tsf-intro-photo:after { border: 1px solid var(--red); content: ""; inset: 14px; pointer-events: none; position: absolute; }.tsf-intro-photo img { display: block; height: 245px; object-fit: cover; transition: transform .7s cubic-bezier(.2,.65,.25,1); width: 100%; }.tsf-intro:hover .tsf-intro-photo img { transform: scale(1.05); }.tsf-intro-photo figcaption { background: var(--red); bottom: 0; color: #fff; font-size: 9px; font-weight: bold; letter-spacing: 1.5px; margin: 0; padding: 10px 13px; position: absolute; right: 0; text-transform: uppercase; z-index: 1; }.tsf-intro .tsf-lede { margin: 32px 0 0; max-width: 650px; }.tsf-intro-detail { color: #625d56; font-family: Georgia, serif; font-size: 17px; font-style: italic; line-height: 1.55; margin: 23px 0 27px; max-width: 610px; }.tsf-intro-notes { border-top: 1px solid rgba(18,18,18,.18); display: flex; gap: 0; max-width: 620px; padding-top: 16px; }.tsf-intro-notes span { border-right: 1px solid rgba(18,18,18,.18); color: var(--red); font-size: 9px; font-weight: bold; letter-spacing: 1.15px; padding: 0 20px; text-transform: uppercase; }.tsf-intro-notes span:first-child { padding-left: 0; }.tsf-intro-notes span:last-child { border-right: 0; }
@media (max-width: 767px) { .tsf-intro { padding: 78px 0; }.tsf-intro-photo { margin: 24px 0 40px; max-width: none; }.tsf-intro-photo img { height: 230px; }.tsf-intro-detail { font-size: 16px; }.tsf-intro-notes { flex-wrap: wrap; gap: 12px 0; }.tsf-intro-notes span { padding: 0 13px; } }

/* Invitation: compact editorial balance, with the story leading and photography supporting. */
.tsf-invitation { grid-template-columns: minmax(0, 1.18fr) minmax(360px, .82fr); min-height: 525px; }.tsf-invitation-copy { padding: 62px 6vw 62px max(6vw, calc((100vw - 1240px) / 2)); }.tsf-invitation-copy:before { height: 68px; }.tsf-invitation-copy-inner { max-width: 685px; }.tsf-invitation h2 { font-size: clamp(40px, 3.65vw, 59px); letter-spacing: -3.2px; line-height: 1.01; }.tsf-invitation-copy-inner > p:not(.tsf-label):not(.tsf-invitation-signature) { font-size: 15px; line-height: 1.68; margin: 24px 0 18px; max-width: 575px; }.tsf-invitation-signature { font-size: 15px; margin-bottom: 25px; max-width: 470px; padding-left: 15px; }.tsf-invitation-button { padding: 13px 16px; }.tsf-invitation-image { min-height: 525px; }.tsf-invitation-image img { object-position: 56% center; }.tsf-invitation-image figcaption { bottom: 25px; left: 30px; }
@media (max-width: 767px) { .tsf-invitation { display: block; min-height: 0; }.tsf-invitation-copy { min-height: 0; padding: 68px 28px 62px; }.tsf-invitation h2 { font-size: 43px; letter-spacing: -2.5px; }.tsf-invitation-image { min-height: 345px; }.tsf-invitation-image img { height: 345px; } }

/* Calendar opening in two quiet beats: release the surrounding days, then open the selected story. */
.tsf-calendar-scene { transition: flex 2.25s cubic-bezier(.18,.72,.2,1), opacity 1.75s cubic-bezier(.25,.1,.25,1), padding 2.25s cubic-bezier(.18,.72,.2,1), transform 1.85s cubic-bezier(.25,.1,.25,1); }.tsf-calendar-showcase.is-focused:not(.is-open) .tsf-calendar-scene:not(.is-selected) { flex: 1; opacity: 1; padding: 25px 18px; pointer-events: auto; transform: none; }.tsf-calendar-showcase.is-focused:not(.is-open) .tsf-calendar-scene.is-selected { flex: 1; padding-right: 18px; }.tsf-calendar-showcase.is-focused:not(.is-open) .tsf-calendar-scene.is-selected .tsf-scene-panel { opacity: 0; transform: translateX(28px); visibility: hidden; }.tsf-calendar-showcase.is-open .tsf-calendar-scene.is-before { transform: translateX(-68px); }.tsf-calendar-showcase.is-open .tsf-calendar-scene.is-after { transform: translateX(68px); }.tsf-calendar-showcase.is-open .tsf-calendar-scene.is-selected .tsf-scene-panel { transition-delay: .82s; }
@media (max-width: 767px) { .tsf-calendar-showcase.is-focused:not(.is-open) .tsf-calendar-scene:not(.is-selected), .tsf-calendar-showcase.is-focused:not(.is-open) .tsf-calendar-scene.is-selected { flex: 0 0 73%; padding: 26px; } }

/* Territory as a compact chapter break between the fiesta and the wider north. */
.tsf-territory { margin: 58px 0; padding: 72px 0; position: relative; }.tsf-territory:before, .tsf-territory:after { background: linear-gradient(90deg, transparent, rgba(18,18,18,.2) 12%, rgba(18,18,18,.2) 88%, transparent); content: ""; height: 1px; left: 5vw; position: absolute; right: 5vw; }.tsf-territory:before { top: 18px; }.tsf-territory:after { bottom: 18px; }.tsf-territory-layout:before { background: var(--red); content: ""; height: 7px; left: 50%; position: absolute; top: -57px; transform: translateX(-50%); width: 7px; }.tsf-map-art { min-height: 285px; }.tsf-euskadi-silhouette { max-width: 470px; }.tsf-map-caption { font-size: 8px; }.tsf-territory-copy h2 { font-size: clamp(37px, 3.5vw, 54px); }.tsf-territory-copy > p:not(.tsf-label) { font-size: 14px; margin: 17px 0; }.tsf-territory-rule { margin: 18px 0; }.tsf-place-list { gap: 7px 20px; margin-bottom: 22px; }.tsf-place-list a { font-size: 16px; padding-bottom: 5px; }.tsf-place-list small { font-size: 7px; margin-top: 3px; }
@media (max-width: 767px) { .tsf-territory { margin: 35px 0; padding: 64px 0; }.tsf-territory:before { top: 14px; }.tsf-territory:after { bottom: 14px; }.tsf-territory-layout:before { top: -45px; }.tsf-map-art { min-height: 230px; margin-bottom: 30px; }.tsf-euskadi-silhouette { max-width: 365px; } }

/* Frequently asked questions: useful content presented as a calm editorial accordions. */
.tsf-faq { background: var(--ink); color: #fff; padding: 120px 0; position: relative; }.tsf-faq:before { background: var(--red); content: ""; height: 5px; left: 0; position: absolute; top: 0; width: 100%; }.tsf-faq-intro { padding-right: 7%; }.tsf-faq .tsf-label { color: #fff; }.tsf-faq h2 { font-family: Georgia, serif; font-size: clamp(43px, 4.25vw, 65px); font-weight: normal; letter-spacing: -3.2px; line-height: .98; margin: 0; }.tsf-faq h2 em { color: var(--red); }.tsf-faq-intro > p:last-child { color: rgba(255,255,255,.62); font-size: 15px; line-height: 1.7; margin: 30px 0 0; max-width: 280px; }.tsf-faq-list { border-top: 1px solid rgba(255,255,255,.34); }.tsf-faq-item { border-bottom: 1px solid rgba(255,255,255,.24); }.tsf-faq-item summary { align-items: center; cursor: pointer; display: grid; grid-template-columns: 46px minmax(0, 1fr) 34px; list-style: none; min-height: 87px; outline: none; padding: 14px 0; }.tsf-faq-item summary::-webkit-details-marker { display: none; }.tsf-faq-item summary span { color: var(--red); font-size: 10px; font-weight: bold; letter-spacing: 1px; }.tsf-faq-item summary strong { font-family: Georgia, serif; font-size: 22px; font-weight: normal; letter-spacing: -.6px; line-height: 1.15; transition: color .25s ease; }.tsf-faq-item summary i { align-items: center; border: 1px solid rgba(255,255,255,.45); border-radius: 50%; color: var(--red); display: flex; font-family: Arial, sans-serif; font-size: 23px; font-style: normal; font-weight: 300; height: 29px; justify-content: center; line-height: 1; transition: background .3s ease, border-color .3s ease, color .3s ease, transform .4s ease; width: 29px; }.tsf-faq-item summary:hover strong, .tsf-faq-item[open] summary strong { color: var(--red); }.tsf-faq-item summary:hover i, .tsf-faq-item[open] summary i { background: var(--red); border-color: var(--red); color: #fff; }.tsf-faq-item[open] summary i { transform: rotate(45deg); }.tsf-faq-answer { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .48s cubic-bezier(.22,.61,.2,1); }.tsf-faq-answer > p { color: rgba(255,255,255,.75); font-size: 14px; line-height: 1.8; margin: 0; max-width: 665px; min-height: 0; overflow: hidden; padding-left: 46px; }.tsf-faq-item[open] .tsf-faq-answer { grid-template-rows: 1fr; }.tsf-faq-item[open] .tsf-faq-answer > p { padding-bottom: 30px; }
@media (max-width: 767px) { .tsf-faq { padding: 78px 0; }.tsf-faq-intro { margin-bottom: 42px; padding-right: 0; }.tsf-faq h2 { font-size: 46px; letter-spacing: -2.7px; }.tsf-faq-item summary { grid-template-columns: 32px minmax(0, 1fr) 30px; min-height: 80px; }.tsf-faq-item summary strong { font-size: 19px; }.tsf-faq-answer > p { font-size: 13px; padding-left: 32px; }.tsf-faq-item[open] .tsf-faq-answer > p { padding-bottom: 25px; } }

/* Unified editorial type system: display for the stories, DM Sans for every functional detail. */
body, .tsf-topbar, .tsf-nav .tsf-nav-cta, .tsf-label, .tsf-eyebrow, .tsf-button, .tsf-hero-meta, .tsf-scroll, .tsf-marquee, .tsf-offer-copy small, .tsf-world p, .tsf-arrow, .tsf-moment span, .tsf-moment small, .tsf-moment em, .tsf-journal-grid article > p, .tsf-journal-grid article a, .tsf-footer, .tsf-place-list small, .tsf-calendar-concept header, .tsf-calendar-scene, .tsf-scene-detail, .tsf-scene-panel i, .tsf-scene-panel em, .tsf-faq, .tsf-faq-item summary i { font-family: var(--font-ui); }.tsf-slide h1, .tsf-intro h2, .tsf-invitation h2, .tsf-world h2, .tsf-section-top h2, .tsf-territory h2, .tsf-proof blockquote, .tsf-journal-grid h3, .tsf-contact h2, .tsf-calendar-lab h2, .tsf-calendar-concept header h3, .tsf-intro-detail, .tsf-offer .tsf-offer-copy strong, .tsf-place-list a, .tsf-scene-panel b, .tsf-faq h2, .tsf-faq-item summary strong { font-family: var(--font-display); }.tsf-topbar, .tsf-hero-meta, .tsf-label, .tsf-eyebrow, .tsf-button, .tsf-world p, .tsf-arrow, .tsf-marquee, .tsf-calendar-concept header p, .tsf-calendar-concept header small, .tsf-offer .tsf-offer-copy small, .tsf-place-list small { font-weight: 600; }.tsf-lede, .tsf-invitation-copy-inner > p, .tsf-section-top > p, .tsf-territory-copy > p, .tsf-proof-caption, .tsf-journal-grid article a, .tsf-faq-answer > p { font-family: var(--font-ui); letter-spacing: 0; }.tsf-moment strong, .tsf-journal-grid h3, .tsf-faq-item summary strong { font-weight: 500; }.tsf-nav { font-family: var(--font-display); font-weight: 600; }.tsf-nav .tsf-nav-cta { font-weight: 700; }.tsf-footer p, .tsf-footer a { font-family: var(--font-ui); font-size: 11px; font-weight: 500; letter-spacing: .2px; }.tsf-footer-bottom { font-family: var(--font-ui); font-weight: 600; letter-spacing: .8px; }.tsf-calendar-scene strong { font-family: var(--font-ui); font-weight: 700; }

/* Experience strip: four curated entry points, each with an editorial seal. */
.tsf-offer-strip { background: #f7f5f0; border-bottom: 0; padding: 46px 0; }.tsf-offer { align-items: center; border-right: 1px solid rgba(18,18,18,.14); min-height: 120px; padding: 14px 30px; transition: background .3s ease, color .3s ease, transform .3s ease; }.tsf-offer:last-child { border-right: 0; }.tsf-offer:hover { background: #fff; color: var(--ink); transform: translateY(-5px); }.tsf-offer .tsf-offer-icon { align-items: center; border: 1px solid rgba(198,25,46,.6); display: flex; flex: 0 0 58px; height: 58px; justify-content: center; padding: 0; position: relative; width: 58px; }.tsf-offer .tsf-offer-icon i { color: var(--red); font-size: 25px; line-height: 1; text-align: center; width: auto; }.tsf-offer .tsf-offer-icon b { background: var(--red); color: #fff; font-size: 8px; font-weight: bold; letter-spacing: .5px; padding: 4px 5px; position: absolute; right: -8px; top: -8px; }.tsf-offer .tsf-offer-copy { display: block; padding-left: 20px; }.tsf-offer .tsf-offer-copy strong { font-size: 12px; letter-spacing: .7px; line-height: 1.25; margin-bottom: 9px; }.tsf-offer .tsf-offer-copy small { color: #69645e; font-size: 12px; line-height: 1.55; max-width: 195px; }.tsf-offer:hover .tsf-offer-icon { background: var(--red); border-color: var(--red); }.tsf-offer:hover .tsf-offer-icon i { color: #fff; }.tsf-offer:hover .tsf-offer-copy strong { color: var(--red); }
.tsf-offer .tsf-offer-copy strong { font-family: Georgia, "Times New Roman", serif; font-size: 20px; font-weight: normal; letter-spacing: -.65px; line-height: 1; margin-bottom: 11px; text-transform: none; }.tsf-offer .tsf-offer-copy small { color: #6c655d; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 12px; letter-spacing: .05px; line-height: 1.55; }.tsf-offer:hover .tsf-offer-copy strong { color: var(--red); }
@media (max-width: 991px) { .tsf-offer { border-bottom: 1px solid rgba(18,18,18,.14); }.tsf-offer:nth-child(2n) { border-right: 0; } }.tsf-offer-strip { border-bottom: 3px solid var(--red); }
@media (max-width: 767px) { .tsf-offer-strip { padding: 22px 0; }.tsf-offer { border-right: 0; min-height: 104px; padding: 16px 28px; }.tsf-offer .tsf-offer-icon { flex-basis: 52px; height: 52px; width: 52px; }.tsf-offer .tsf-offer-copy { padding-left: 17px; } }

/* Two paths: the image stays visible; hover only enlarges it and turns the editorial details red. */
.tsf-world {
  background-position: center;
  background-repeat: no-repeat;
  background-size: 100%;
  color: #fff;
  transition: background-size 2.25s cubic-bezier(.12,.72,.18,1), color .55s ease;
}
.tsf-world-fiesta { background-image: url("../images/hero-encierro.png"); }
.tsf-world-recorrido { background-image: url("../images/hero-navarra.png"); }
.tsf-world:hover {
  background-size: 112%;
  color: var(--red);
  filter: none;
}
.tsf-world:hover:before {
  background: linear-gradient(0deg, rgba(0,0,0,.69), rgba(0,0,0,.13) 78%);
}
.tsf-world:hover .tsf-world-number,
.tsf-world:hover p,
.tsf-world:hover h2,
.tsf-world:hover .tsf-arrow,
.tsf-world:hover .tsf-arrow b { color: var(--red) !important; }
.tsf-world-summary { display: block; max-width: 315px; margin: -4px 0 25px; color: rgba(255,255,255,.88); font-family: var(--font-ui); font-size: 14px; line-height: 1.55; transition: color .55s ease; }
.tsf-world-cta { display: inline-flex; align-items: center; padding-top: 13px; border-top: 1px solid rgba(255,255,255,.38); transition: border-color .55s ease, color .55s ease; }
.tsf-world-cta b { transition: transform .55s cubic-bezier(.16,.77,.22,1); }
.tsf-world:hover .tsf-world-summary { color: #fff; }
.tsf-world:hover .tsf-world-cta { border-top-color: var(--red); }
.tsf-world:hover .tsf-world-cta b { transform: translateX(7px); }
@media (max-width: 767px) {
  .tsf-world-summary { max-width: 285px; font-size: 13px; }
}

/* Visual CTA for calendar stories. It is intentionally not a link until the service pages exist. */
.tsf-scene-panel-cta { display: inline-flex; align-items: center; align-self: flex-start; gap: 16px; margin-top: 28px; padding: 10px 0 8px; border-bottom: 1px solid var(--red); color: var(--red); font-family: "Poppins", sans-serif; font-size: 9px; font-style: normal; font-weight: 600; letter-spacing: .11em; line-height: 1; text-transform: uppercase; }
.tsf-scene-panel-cta b { color: inherit; font-family: inherit; font-size: 15px; font-weight: 400; line-height: .5; transition: transform .4s ease; }
.tsf-calendar-scene:hover .tsf-scene-panel-cta b { transform: translateX(4px); }

/* Territory as an open network: Pamplona is the origin, not a fixed itinerary. */
.tsf-route-lines path { fill: none; stroke: rgba(255,255,255,.82); stroke-width: 1.5; stroke-dasharray: 4 7; }
.tsf-map-points .tsf-map-origin-dot { fill: #fff7ec; stroke: #8f0e20; stroke-width: 7; }
.tsf-map-labels text { fill: rgba(255,255,255,.9); font-family: "Poppins", sans-serif; font-size: 10px; font-weight: 600; letter-spacing: 1.1px; text-anchor: middle; }
.tsf-map-labels .tsf-map-origin-label { fill: #fff; font-size: 11px; letter-spacing: 1.35px; }
.tsf-map-origin { position: absolute; left: 50%; bottom: -31px; transform: translateX(-50%); padding: 8px 11px; border: 1px solid rgba(198,25,46,.45); background: #f7f2e9; color: var(--red); font-family: "Poppins", sans-serif; font-size: 8px; font-weight: 600; letter-spacing: .09em; text-transform: uppercase; white-space: nowrap; }
.tsf-route-intro { max-width: 500px; margin: -2px 0 20px !important; padding-left: 15px; border-left: 2px solid var(--red); color: #655d55; font-size: 13px !important; line-height: 1.55 !important; }
.tsf-route-intro b { color: var(--ink); font-weight: 600; }
.tsf-place-list span { width: calc(50% - 12px); padding: 0 0 6px; border-bottom: 1px solid rgba(18,18,18,.18); font-family: var(--font-display); font-size: 18px; letter-spacing: -.5px; line-height: 1.1; }
.tsf-place-list span small { display: block; margin-top: 3px; color: #74716c; font-family: var(--font-ui); font-size: 8px; font-weight: 600; letter-spacing: .7px; text-transform: uppercase; }
@media (max-width: 767px) {
  .tsf-map-labels text { font-size: 8px; letter-spacing: .7px; }
  .tsf-map-labels .tsf-map-origin-label { font-size: 9px; }
  .tsf-map-origin { bottom: -27px; font-size: 7px; }
  .tsf-route-intro { font-size: 12px !important; }
  .tsf-place-list span { width: calc(50% - 9px); font-size: 17px; }
}

/* Euskal Herria is read as a real, regional silhouette: a lighter forest field, fine borders and a red origin. */
.tsf-territory { background: #4d7166; color: #fffaf2; }
.tsf-territory:before, .tsf-territory:after { background: linear-gradient(90deg, transparent, rgba(255,250,242,.42) 12%, rgba(255,250,242,.42) 88%, transparent); }
.tsf-map-art { min-height: 350px; }
.tsf-euskadi-silhouette { max-width: 530px; transform: rotate(-1.5deg); }
.tsf-map-shape { fill: url(#tsf-territory-green); filter: drop-shadow(14px 18px 17px rgba(21,49,42,.23)); }
.tsf-map-contour { fill: none; stroke: rgba(255,255,255,.73); stroke-dasharray: none; stroke-linecap: round; stroke-width: 1.55; }
.tsf-route-lines path { stroke: rgba(198,25,46,.92); stroke-width: 2; stroke-dasharray: 3 6; }
.tsf-map-points circle { fill: #fff9f0; stroke: #c6192e; stroke-width: 4; }
.tsf-map-points .tsf-map-origin-dot { fill: #c6192e; stroke: #fff9f0; stroke-width: 5; }
.tsf-map-labels text { fill: #fff; font-size: 9px; letter-spacing: .9px; }
.tsf-map-labels .tsf-map-origin-label { fill: #fff; font-size: 10px; }
.tsf-map-caption { color: #fffaf2; border-bottom-color: var(--red); }
.tsf-map-origin { background: #fffaf2; color: var(--red); }
.tsf-territory .tsf-label { color: #ffd6dc; }
.tsf-territory-copy h2 { color: #fffaf2; }
.tsf-territory-copy h2 em { color: var(--red); }
.tsf-territory-copy > p:not(.tsf-label) { color: rgba(255,250,242,.87); }
.tsf-route-intro { border-left-color: var(--red); color: rgba(255,250,242,.84); }
.tsf-route-intro b { color: #fffaf2; }
.tsf-place-list span { border-bottom-color: rgba(255,250,242,.28); color: #fffaf2; }
.tsf-place-list span small { color: rgba(255,250,242,.67); }
.tsf-territory .tsf-button { border-color: #fffaf2; color: #fffaf2; }
.tsf-territory .tsf-button:hover { border-color: #fffaf2; background: #fffaf2; color: #4d7166; }

/* Chupinazo: gentle contrast on the red editorial emphasis, without a visible panel. */
.tsf-slide-chupinazo .tsf-slide-content h1 em {
  position: relative;
  z-index: 0;
  display: inline-block;
  margin: 0 -.06em;
  padding: 0 .06em .03em;
  color: var(--red);
  text-shadow: 0 2px 2px rgba(255, 248, 238, .3), 0 6px 17px rgba(42, 7, 13, .62), 0 0 1px rgba(42, 7, 13, .8);
}
.tsf-slide-chupinazo .tsf-slide-content h1 em::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: .13em -.1em .1em;
  border-radius: 3px;
  background: linear-gradient(90deg, rgba(255, 244, 228, .12), rgba(53, 7, 14, .2) 50%, rgba(255, 244, 228, .1));
  filter: blur(9px);
}

/* The Chupinazo image carries a lot of red, so its red emphasis needs a soft local veil instead of a hard text box. */
.tsf-slide-chupinazo .tsf-slide-content h1 em {
  position: relative;
  z-index: 0;
  display: inline-block;
  margin: 0 -.06em;
  padding: 0 .06em .03em;
  color: var(--red);
  text-shadow: 0 2px 2px rgba(255, 248, 238, .3), 0 6px 17px rgba(42, 7, 13, .62), 0 0 1px rgba(42, 7, 13, .8);
}
.tsf-slide-chupinazo .tsf-slide-content h1 em:before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: .13em -.1em .1em;
  border-radius: 3px;
  background: linear-gradient(90deg, rgba(255, 244, 228, .12), rgba(53, 7, 14, .2) 50%, rgba(255, 244, 228, .1));
  filter: blur(9px);
}

/* Invitation: give the proposition more context without turning it into a dense sales block. */
.tsf-invitation-copy-inner .tsf-invitation-detail { max-width: 560px; margin-top: 10px; color: #5d564f; font-size: 14px; line-height: 1.62; }
.tsf-invitation-points { display: flex; flex-wrap: wrap; gap: 8px 0; margin: 21px 0 22px; }
.tsf-invitation-points span { padding: 0 15px; border-right: 1px solid rgba(18,18,18,.2); color: var(--red); font-family: "Poppins", sans-serif; font-size: 9px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
.tsf-invitation-points span:first-child { padding-left: 0; }
.tsf-invitation-points span:last-child { border-right: 0; }
.tsf-invitation-image img { object-position: 50% 42%; }
@media (max-width: 767px) {
  .tsf-invitation-copy-inner .tsf-invitation-detail { font-size: 13px; }
  .tsf-invitation-points span { padding: 0 10px; font-size: 8px; }
  .tsf-invitation-image img { object-position: 50% 34%; }
}
@media (max-width: 767px) {
  .tsf-map-art { min-height: 265px; }
  .tsf-euskadi-silhouette { max-width: 410px; }
  .tsf-map-labels text { font-size: 7px; }
  .tsf-map-labels .tsf-map-origin-label { font-size: 8px; }
}

/* Plesire's Poppins family gives the calendar a cleaner, more legible event rhythm. */
.tsf-calendar-lab,
.tsf-calendar-lab button,
.tsf-calendar-lab .tsf-date,
.tsf-calendar-lab .tsf-calendar-scene strong,
.tsf-calendar-lab .tsf-scene-detail,
.tsf-calendar-lab .tsf-scene-detail b,
.tsf-calendar-lab .tsf-scene-panel,
.tsf-calendar-lab .tsf-scene-panel b,
.tsf-calendar-lab .tsf-scene-panel em { font-family: "Poppins", sans-serif; }
.tsf-calendar-scene .tsf-date {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 1.15px;
}
.tsf-calendar-scene strong {
  font-size: 15px;
  font-weight: 600;
  letter-spacing: -.2px;
  line-height: 1.25;
  text-transform: none;
}
.tsf-scene-detail,
.tsf-scene-panel em { font-size: 12px; font-weight: 400; }
.tsf-scene-detail b,
.tsf-scene-panel i { font-family: "Poppins", sans-serif; font-weight: 600; }

/* Main slider controls keep the functional Plesire typography. */
.tsf-hero .tsf-button,
.tsf-hero-meta,
.tsf-hero-meta .tsf-scroll,
.tsf-hero-meta .tsf-slide-count {
  font-family: "Poppins", sans-serif;
  font-weight: 600;
}
.tsf-hero .tsf-button { letter-spacing: 1px; }

/* Intro annotations use the same Plesire interface family as the slider and calendar. */
.tsf-intro .tsf-label,
.tsf-intro-photo figcaption,
.tsf-intro-notes span {
  font-family: "Poppins", sans-serif;
  font-weight: 600;
}

/* A warm San Fermin veil keeps the original black logo readable without muting the photography. */
.tsf-slide-shade,
.tsf-slide:first-child .tsf-slide-shade {
  background:
    linear-gradient(90deg, rgba(248, 244, 234, .94) 0%, rgba(248, 244, 234, .74) 15%, rgba(248, 244, 234, 0) 43%),
    linear-gradient(270deg, rgba(164, 18, 39, .32) 0%, rgba(164, 18, 39, 0) 31%);
}
.tsf-topbar > span { color: var(--ink); }
.tsf-topbar { border-bottom-color: rgba(18,18,18,.24); }
@media (max-width: 767px) { .tsf-menu-button span { background: var(--ink); } }

/* SEO-relevant third slide image with a continuous colour veil, never a visible blur band. */
.tsf-slide-photo {
  height: 100%;
  inset: 0;
  object-fit: cover;
  position: absolute;
  width: 100%;
}
.tsf-slide-gigantes .tsf-slide-shade {
  background:
    linear-gradient(90deg, rgba(248, 244, 234, .92) 0%, rgba(248, 244, 234, .62) 15%, rgba(248, 244, 234, 0) 41%),
    radial-gradient(ellipse 78% 63% at 52% 112%, rgba(111, 13, 29, .76) 0%, rgba(160, 18, 38, .48) 43%, rgba(160, 18, 38, 0) 76%),
    linear-gradient(0deg, rgba(48, 12, 17, .48) 0%, rgba(48, 12, 17, 0) 56%);
}

/* FAQ: a light editorial guide rather than a heavy black interruption. */
.tsf-faq {
  background: #f1eee6;
  color: var(--ink);
  overflow: hidden;
  padding: 128px 0;
}
.tsf-faq:before {
  background: var(--red);
  height: 4px;
}
.tsf-faq:after {
  border: 1px solid rgba(198,25,46,.18);
  border-radius: 50%;
  content: "";
  height: 33vw;
  position: absolute;
  right: -16vw;
  top: -16vw;
  width: 33vw;
}
.tsf-faq .row { position: relative; z-index: 1; }
.tsf-faq .tsf-label { color: var(--red); }
.tsf-faq h2 { color: var(--ink); font-size: clamp(48px, 4.6vw, 70px); }
.tsf-faq h2 em { color: var(--red); }
.tsf-faq-intro > p:last-child { color: #5b5550; font-family: "Poppins", sans-serif; font-size: 14px; line-height: 1.75; }
.tsf-faq-list { border-top-color: rgba(18,18,18,.2); }
.tsf-faq-item { border-bottom-color: rgba(18,18,18,.18); }
.tsf-faq-item summary {
  grid-template-columns: 52px minmax(0, 1fr) 38px;
  min-height: 94px;
  transition: background .35s ease, padding .35s ease;
}
.tsf-faq-item summary span { color: var(--red); font-family: "Poppins", sans-serif; font-weight: 700; }
.tsf-faq-item summary strong {
  color: var(--ink);
  font-family: "Poppins", sans-serif;
  font-size: 17px;
  font-weight: 500;
  letter-spacing: -.25px;
  line-height: 1.35;
}
.tsf-faq-item summary i {
  border-color: rgba(18,18,18,.36);
  color: var(--red);
}
.tsf-faq-item summary:hover,
.tsf-faq-item[open] summary { padding-left: 14px; }
.tsf-faq-item summary:hover strong,
.tsf-faq-item[open] summary strong { color: var(--red); }
.tsf-faq-item summary:hover i,
.tsf-faq-item[open] summary i { background: var(--red); border-color: var(--red); color: #fff; }
.tsf-faq-answer > p {
  color: #564f49;
  font-family: "Poppins", sans-serif;
  font-size: 13px;
  line-height: 1.78;
  max-width: 700px;
}
.tsf-faq-item[open] { background: rgba(255,255,255,.58); }
@media (max-width: 767px) {
  .tsf-faq { padding: 82px 0; }
  .tsf-faq:after { height: 80vw; right: -40vw; top: -35vw; width: 80vw; }
  .tsf-faq-item summary { grid-template-columns: 36px minmax(0, 1fr) 30px; }
  .tsf-faq-item summary strong { font-size: 16px; }
}

/* Home rhythm: each chapter has its own restrained material and colour temperature. */
.tsf-offer-strip { background: #fffdf8; }
.tsf-intro {
  background:
    radial-gradient(circle at 9% 18%, rgba(198,25,46,.08) 0 1px, transparent 1.5px) 0 0 / 19px 19px,
    linear-gradient(125deg, #f5f0e7 0%, #ece2d5 100%);
}
.tsf-invitation { background: #ddd5c9; }
.tsf-calendar-lab {
  background:
    linear-gradient(90deg, rgba(198,25,46,.05) 1px, transparent 1px) 0 0 / 72px 72px,
    linear-gradient(0deg, rgba(198,25,46,.04) 1px, transparent 1px) 0 0 / 72px 72px,
    #e5d5ce;
}
.tsf-moments {
  background: #faf6ef;
  position: relative;
}
.tsf-moments:before {
  background: linear-gradient(90deg, transparent, var(--red) 16%, var(--red) 84%, transparent);
  content: "";
  height: 2px;
  left: 7vw;
  position: absolute;
  right: 7vw;
  top: 0;
}
.tsf-territory { background: #243a32; }
.tsf-territory:before,
.tsf-territory:after {
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.35) 12%, rgba(255,255,255,.35) 88%, transparent);
}
.tsf-proof {
  background:
    linear-gradient(90deg, rgba(198,25,46,.09) 0 5px, transparent 5px) 0 0 / 100% 100% no-repeat,
    #e9dfd2;
}
.tsf-journal { background: #d9c4b9; }
.tsf-faq { background: #f8f2e8; }

/* Gentle separation for editorial text over the most energetic hero photographs. */
.tsf-slide-content h1 {
  text-shadow: 0 2px 3px rgba(34, 8, 13, .28), 0 8px 24px rgba(34, 8, 13, .38);
}
.tsf-slide-content h1 em { text-shadow: 0 2px 12px rgba(34, 8, 13, .48); }
.tsf-slide-content > p { text-shadow: 0 2px 12px rgba(34, 8, 13, .62); }

/* Keep the current brand mark legible against the ink footer. */
.tsf-footer-brand img { height: 61px; width: 79px; }

/* A quiet glass veil keeps the navigation readable over detailed hero imagery. */
.tsf-nav {
  background: linear-gradient(90deg, rgba(250,246,237,0), rgba(250,246,237,.13) 16%, rgba(250,246,237,.13) 84%, rgba(250,246,237,0));
  border: 1px solid rgba(255,255,255,.14);
  box-shadow: 0 9px 28px rgba(50,12,18,.16), inset 0 1px 0 rgba(255,255,255,.17);
  padding: 11px 15px;
  text-shadow: 0 1px 7px rgba(55,12,18,.52);
}
.tsf-nav .tsf-nav-cta { text-shadow: none; }
@supports (backdrop-filter: blur(1px)) {
  .tsf-nav { backdrop-filter: blur(4px); }
}
@media (max-width: 767px) {
  .tsf-nav {
    background: var(--ink);
    border: 0;
    box-shadow: none;
    padding: 100px 30px 35px;
    text-shadow: none;
  }
}

/* Sister brands: a curated editorial collection, not a plain logo strip. */
.tsf-other-projects {
  position: relative;
  overflow: hidden;
  padding: 118px 0 126px;
  background:
    linear-gradient(90deg, rgba(198, 25, 46, .08) 1px, transparent 1px) 0 0 / 104px 100%,
    linear-gradient(180deg, #ece2d5 0%, #e5d7c9 100%);
}
.tsf-other-projects:before {
  position: absolute;
  content: "";
  top: 33px;
  left: 5%;
  right: 5%;
  height: 1px;
  background: rgba(35, 29, 26, .22);
}
.tsf-other-projects-heading {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(260px, .65fr);
  gap: 56px;
  align-items: end;
  margin-bottom: 55px;
}
.tsf-other-projects-heading h2 { margin: 0; font-size: clamp(43px, 5.2vw, 76px); line-height: .9; }
.tsf-other-projects-heading > p { max-width: 395px; margin: 0 0 5px; font-size: 17px; line-height: 1.7; color: #4d4944; }
.tsf-other-projects-grid { margin-left: -12px; margin-right: -12px; }
.tsf-other-projects-grid > [class*="col-"] { padding-left: 12px; padding-right: 12px; }
.tsf-other-project {
  position: relative;
  display: flex;
  min-height: 365px;
  padding: 26px 30px 29px;
  flex-direction: column;
  justify-content: space-between;
  overflow: hidden;
  color: #1d1b19;
  text-decoration: none;
  border: 1px solid rgba(33, 27, 23, .2);
  background: rgba(252, 249, 242, .72);
  transition: transform .7s cubic-bezier(.16,.77,.22,1), box-shadow .7s ease, border-color .45s ease;
}
.tsf-other-project:before {
  position: absolute;
  content: "";
  width: 150%;
  height: 58%;
  right: -28%;
  top: -38%;
  border-radius: 50%;
  opacity: .8;
  transition: transform .85s cubic-bezier(.16,.77,.22,1);
}
.tsf-other-project:hover { color: #1d1b19; transform: translateY(-9px); border-color: rgba(33, 27, 23, .38); box-shadow: 0 22px 38px rgba(42, 30, 25, .16); }
.tsf-other-project:hover:before { transform: translate(-8%, 13%) rotate(-7deg); }
.tsf-other-project-index { position: relative; z-index: 1; font-family: "Poppins", sans-serif; font-size: 11px; font-weight: 600; letter-spacing: .18em; }
.tsf-other-project-logo { position: relative; z-index: 1; display: flex; min-height: 126px; align-items: center; justify-content: center; margin: 8px 0 20px; }
.tsf-other-project-logo img { display: block; max-width: 190px; max-height: 104px; width: auto; height: auto; transition: transform .8s cubic-bezier(.16,.77,.22,1); }
.tsf-other-project:hover .tsf-other-project-logo img { transform: scale(1.06); }
.tsf-other-project-copy { position: relative; z-index: 1; display: block; padding-top: 17px; border-top: 1px solid rgba(33, 27, 23, .19); }
.tsf-other-project-copy strong { display: block; margin-bottom: 5px; font-family: "Poppins", sans-serif; font-size: 12px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; }
.tsf-other-project-copy small { display: block; max-width: 235px; font-size: 15px; line-height: 1.45; color: #625d57; }
.tsf-other-project-arrow { position: absolute; z-index: 1; right: 29px; bottom: 27px; font-size: 24px; line-height: 1; transition: transform .55s ease; }
.tsf-other-project:hover .tsf-other-project-arrow { transform: translate(4px, -4px); }
.tsf-other-project-toscana:before { background: #bac8b8; }
.tsf-other-project-sevilla:before { background: #e5b9a7; }
.tsf-other-project-venecia:before { background: #bdc9d7; }
.tsf-other-project-venecia .tsf-other-project-logo img { max-height: 92px; }
@media (max-width: 991px) {
  .tsf-other-projects { padding: 82px 0 90px; }
  .tsf-other-projects-heading { grid-template-columns: 1fr; gap: 20px; }
  .tsf-other-projects-heading > p { max-width: 580px; }
  .tsf-other-projects-grid > [class*="col-"] { margin-bottom: 24px; }
  .tsf-other-project { min-height: 310px; }
}
@media (max-width: 767px) {
  .tsf-other-projects:before { left: 30px; right: 30px; }
  .tsf-other-projects-heading h2 { font-size: 47px; }
  .tsf-other-project { min-height: 290px; }
}

/* A detailed enquiry is the conversion point: deliberate, warm and personal. */
.tsf-contact { padding: 112px 0 118px; }
.tsf-contact-layout { display: grid; grid-template-columns: minmax(290px, .8fr) minmax(490px, 1.2fr); gap: clamp(48px, 8vw, 135px); align-items: start; }
.tsf-contact-intro { padding-top: 23px; }
.tsf-contact h2 { font-size: clamp(48px, 5.4vw, 80px); line-height: .91; margin-bottom: 31px; }
.tsf-contact-intro > p:not(.tsf-label) { max-width: 335px; font-size: 16px; line-height: 1.72; color: rgba(255,255,255,.86); }
.tsf-contact-note { display: flex; gap: 16px; max-width: 310px; margin-top: 48px; padding-top: 18px; border-top: 1px solid rgba(255,255,255,.35); }
.tsf-contact-note span { color: rgba(255,255,255,.72); font-family: "Poppins", sans-serif; font-size: 10px; font-weight: 600; letter-spacing: .12em; }
.tsf-contact-note p { margin: 0; font-size: 12px; line-height: 1.55; color: rgba(255,255,255,.82); }
.tsf-contact-form { padding: 38px 42px 32px; color: var(--ink); background: #f8f2e8; box-shadow: 18px 18px 0 rgba(102, 10, 25, .18); }
.tsf-form-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 20px; padding-bottom: 21px; border-bottom: 1px solid rgba(18,18,18,.25); }
.tsf-form-heading p { margin: 0; font-family: var(--font-display); font-size: 27px; letter-spacing: -.8px; }
.tsf-form-heading span { color: #6b645d; font-family: "Poppins", sans-serif; font-size: 9px; font-weight: 500; letter-spacing: .04em; }
.tsf-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px 22px; padding: 27px 0 23px; }
.tsf-contact-form label { display: block; margin: 0; }
.tsf-contact-form label > span { display: block; margin-bottom: 8px; font-family: "Poppins", sans-serif; font-size: 10px; font-weight: 600; letter-spacing: .07em; text-transform: uppercase; }
.tsf-contact-form input:not([type="checkbox"]), .tsf-contact-form select, .tsf-contact-form textarea { width: 100%; border: 0; border-bottom: 1px solid rgba(18,18,18,.32); border-radius: 0; outline: 0; background: transparent; color: var(--ink); font-family: var(--font-ui); font-size: 14px; line-height: 1.4; padding: 8px 0 10px; transition: border-color .25s ease, background .25s ease; }
.tsf-contact-form select { min-height: 39px; cursor: pointer; }
.tsf-contact-form textarea { min-height: 104px; resize: vertical; }
.tsf-contact-form input::placeholder, .tsf-contact-form textarea::placeholder { color: #8e857d; opacity: 1; }
.tsf-contact-form input:focus, .tsf-contact-form select:focus, .tsf-contact-form textarea:focus { border-bottom-color: var(--red); background: rgba(198,25,46,.035); }
.tsf-phone-fields { display: grid !important; grid-template-columns: 75px minmax(0, 1fr); gap: 12px; margin: 0 !important; }
.tsf-phone-fields select, .tsf-phone-fields input { min-width: 0; }
.tsf-form-full { grid-column: 1 / -1; }
.tsf-form-consent { display: flex !important; gap: 10px; align-items: flex-start; padding-top: 18px; border-top: 1px solid rgba(18,18,18,.16); cursor: pointer; }
.tsf-form-consent input { width: 14px; height: 14px; margin: 2px 0 0; accent-color: var(--red); }
.tsf-form-consent span { margin: 0 !important; color: #5f5952; font-family: var(--font-ui) !important; font-size: 11px !important; font-weight: 400 !important; letter-spacing: 0 !important; line-height: 1.5; text-transform: none !important; }
.tsf-form-footer { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-top: 26px; }
.tsf-form-footer p { max-width: 218px; margin: 0; color: #6b645d; font-size: 11px; line-height: 1.45; }
.tsf-form-submit { border-color: var(--red); background: var(--red); color: #fff; cursor: pointer; padding: 16px 19px; }
.tsf-form-submit:hover, .tsf-form-submit:focus { border-color: var(--ink); background: var(--ink); color: #fff; }
.tsf-form-submit span { margin-left: 15px; font-size: 17px; }
@media (max-width: 991px) {
  .tsf-contact-layout { grid-template-columns: 1fr; gap: 45px; }
  .tsf-contact-intro > p:not(.tsf-label) { max-width: 540px; }
  .tsf-contact-note { margin-top: 32px; }
}
@media (max-width: 767px) {
  .tsf-contact { padding: 78px 0; }
  .tsf-contact h2 { font-size: 49px; }
  .tsf-contact-form { padding: 28px 22px 25px; box-shadow: 9px 9px 0 rgba(102, 10, 25, .18); }
  .tsf-form-heading, .tsf-form-footer { display: block; }
  .tsf-form-heading span { display: block; margin-top: 6px; }
  .tsf-form-grid { grid-template-columns: 1fr; gap: 20px; }
  .tsf-form-full { grid-column: auto; }
  .tsf-form-footer p { margin-bottom: 18px; }
}

/* A quiet, editorial marker between the first impression and the story. */
.tsf-countdown { padding: 34px 0; background: #ded3c6; }
.tsf-countdown-shell { display: grid; grid-template-columns: minmax(165px, .55fr) minmax(420px, 1.45fr) minmax(195px, .65fr); gap: 38px; align-items: center; min-height: 194px; padding: 30px 35px; border-top: 1px solid rgba(18,18,18,.32); border-bottom: 1px solid rgba(18,18,18,.32); background: linear-gradient(90deg, rgba(255,255,255,.37), rgba(255,255,255,.1)); }
.tsf-countdown-intro { align-self: stretch; display: flex; flex-direction: column; justify-content: center; padding-right: 34px; border-right: 1px solid rgba(18,18,18,.2); }
.tsf-countdown .tsf-label { margin-bottom: 12px; color: var(--red); }
.tsf-countdown h2 { margin: 0; font-family: var(--font-display); font-size: clamp(36px, 3.25vw, 53px); font-weight: 500; letter-spacing: -2.5px; line-height: .82; }
.tsf-countdown h2 em { color: var(--red); font-style: italic; }
.tsf-countdown-main { min-width: 0; }
.tsf-countdown-date { margin: 0 0 16px; color: #4a433d; font-family: "Poppins", sans-serif; font-size: 10px; font-weight: 600; letter-spacing: .11em; text-transform: uppercase; }
.tsf-countdown-date span { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 23px; margin-right: 9px; background: var(--red); color: #fff; font-size: 11px; letter-spacing: 0; }
.tsf-countdown-numbers { display: grid; grid-template-columns: repeat(4, 1fr); }
.tsf-countdown-numbers > div { min-width: 0; padding: 0 20px; border-right: 1px solid rgba(18,18,18,.17); }
.tsf-countdown-numbers > div:first-child { padding-left: 0; }
.tsf-countdown-numbers > div:last-child { border-right: 0; }
.tsf-countdown-numbers strong { display: block; color: var(--red); font-family: var(--font-display); font-size: clamp(38px, 4.2vw, 65px); font-weight: 500; letter-spacing: -2.6px; line-height: .85; }
.tsf-countdown-numbers span { display: block; margin-top: 9px; color: #5a534c; font-family: "Poppins", sans-serif; font-size: 9px; font-weight: 600; letter-spacing: .13em; text-transform: uppercase; }
.tsf-countdown-action { align-self: stretch; display: flex; flex-direction: column; justify-content: center; padding-left: 32px; border-left: 1px solid rgba(18,18,18,.2); }
.tsf-countdown-action p { margin: 0 0 22px; color: #534c45; font-size: 13px; line-height: 1.55; }
.tsf-countdown-action .tsf-text-link { align-self: flex-start; border-bottom-color: var(--red); color: var(--ink); }
@media (max-width: 991px) {
  .tsf-countdown-shell { grid-template-columns: .72fr 1.28fr; gap: 28px; }
  .tsf-countdown-action { grid-column: 2; align-self: auto; display: block; padding: 18px 0 0; border-top: 1px solid rgba(18,18,18,.2); border-left: 0; }
  .tsf-countdown-action p { display: inline; margin: 0 16px 0 0; }
  .tsf-countdown-action .tsf-text-link { display: inline-block; }
}
@media (max-width: 767px) {
  .tsf-countdown { padding: 24px 0; }
  .tsf-countdown-shell { display: block; min-height: 0; padding: 27px 24px; }
  .tsf-countdown-intro { display: block; padding: 0 0 23px; border-right: 0; border-bottom: 1px solid rgba(18,18,18,.2); }
  .tsf-countdown h2 { font-size: 44px; }
  .tsf-countdown-main { padding-top: 23px; }
  .tsf-countdown-numbers > div { padding: 0 9px; }
  .tsf-countdown-numbers strong { font-size: 38px; letter-spacing: -1.8px; }
  .tsf-countdown-numbers span { font-size: 7px; letter-spacing: .08em; }
  .tsf-countdown-action { margin-top: 25px; }
  .tsf-countdown-action p { display: block; margin: 0 0 16px; }
}

/* About page: trust is built through restraint, clarity and room for real voices. */
.tsf-about-page { background: #f7f2e9; }
.tsf-about-header { position: relative; color: var(--ink); background: #f7f2e9; }
.tsf-about-header .tsf-topbar { border-bottom-color: rgba(18,18,18,.2); }
.tsf-about-header .tsf-topbar > span { color: var(--ink); }
.tsf-about-header .tsf-nav { color: var(--ink); }
.tsf-about-header .tsf-nav a:hover, .tsf-about-header .tsf-nav a[aria-current="page"] { color: var(--red); }
.tsf-about-header .tsf-nav .tsf-nav-cta { border-color: var(--ink); }
.tsf-about-header .tsf-nav .tsf-nav-cta:hover { border-color: var(--red); background: var(--red); color: #fff; }
.tsf-about-hero { position: relative; overflow: hidden; padding: 105px 0 100px; background: linear-gradient(125deg, #f7f2e9 0%, #eee2d4 64%, #ddc9bc 100%); }
.tsf-about-hero:after { position: absolute; content: ""; right: -10vw; bottom: -17vw; width: 48vw; height: 48vw; border: 1px solid rgba(198,25,46,.26); border-radius: 50%; box-shadow: 0 0 0 38px rgba(198,25,46,.04), 0 0 0 76px rgba(198,25,46,.025); }
.tsf-about-hero .container-fluid { position: relative; z-index: 1; }
.tsf-about-hero .tsf-label { color: var(--red); }
.tsf-about-hero-grid { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(230px, .5fr); align-items: end; gap: 60px; }
.tsf-about-hero h1, .tsf-about-story h2, .tsf-about-section-head h2, .tsf-about-testimonials h2, .tsf-about-contact h2 { margin: 0; font-family: var(--font-display); font-weight: 500; letter-spacing: -4px; line-height: .92; }
.tsf-about-hero h1 { font-size: clamp(55px, 7vw, 106px); max-width: 800px; }
.tsf-about-hero h1 em, .tsf-about-story h2 em, .tsf-about-section-head h2 em, .tsf-about-testimonials h2 em, .tsf-about-contact h2 em { color: var(--red); font-style: italic; }
.tsf-about-hero-grid > p { max-width: 290px; margin: 0 0 9px; color: #514941; font-size: 16px; line-height: 1.68; }
.tsf-about-story { padding: 122px 0; background: #fffdf8; }
.tsf-about-story-grid { display: flex; align-items: center; }
.tsf-about-portrait { position: relative; margin: 0; min-height: 495px; overflow: hidden; background: #242c28; }
.tsf-about-portrait:after { position: absolute; content: ""; inset: 16px; border: 1px solid rgba(255,255,255,.55); pointer-events: none; }
.tsf-about-portrait img { width: 100%; height: 495px; object-fit: cover; filter: saturate(.82) contrast(.96); }
.tsf-about-portrait figcaption { position: absolute; z-index: 1; right: 0; bottom: 0; max-width: 245px; margin: 0; padding: 13px 17px; background: var(--red); color: #fff; font-family: "Poppins", sans-serif; font-size: 9px; font-weight: 500; letter-spacing: .04em; line-height: 1.45; }
.tsf-about-story-copy { padding-left: 7.2%; }
.tsf-about-story h2 { font-size: clamp(42px, 4.3vw, 68px); }
.tsf-about-story-copy > p:not(.tsf-label) { max-width: 500px; margin: 25px 0 0; font-size: 16px; line-height: 1.78; }
.tsf-about-story-copy .tsf-text-link { margin-top: 34px; border-bottom-color: var(--red); }
.tsf-about-principles { padding: 110px 0; background: #e8ddd0; }
.tsf-about-section-head { max-width: 790px; margin-bottom: 62px; }
.tsf-about-section-head .tsf-label { color: var(--red); }
.tsf-about-section-head h2 { font-size: clamp(43px, 5vw, 75px); }
.tsf-about-principle { min-height: 230px; padding-right: 6%; border-top: 1px solid rgba(18,18,18,.25); }
.tsf-about-principle > span { display: block; margin-top: 19px; color: var(--red); font-family: "Poppins", sans-serif; font-size: 10px; font-weight: 600; letter-spacing: .15em; }
.tsf-about-principle h3 { margin: 43px 0 14px; font-family: var(--font-display); font-size: 30px; font-weight: 500; letter-spacing: -1px; }
.tsf-about-principle p { max-width: 290px; margin: 0; color: #5a5149; font-size: 14px; line-height: 1.65; }
.tsf-about-testimonials { padding: 112px 0; background: #253b33; color: #fff; }
.tsf-about-testimonials-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(300px, .72fr); gap: 90px; align-items: end; }
.tsf-about-testimonials .tsf-label { color: #efc6ce; }
.tsf-about-testimonials h2 { font-size: clamp(43px, 5vw, 73px); }
.tsf-testimonial-empty { position: relative; min-height: 247px; padding: 28px 32px; border: 1px solid rgba(255,255,255,.38); background: linear-gradient(135deg, rgba(255,255,255,.08), transparent); }
.tsf-testimonial-empty > span { color: #efc6ce; font-family: "Poppins", sans-serif; font-size: 9px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.tsf-testimonial-empty p { position: relative; z-index: 1; max-width: 335px; margin: 51px 0 0; color: rgba(255,255,255,.87); font-size: 16px; line-height: 1.68; }
.tsf-testimonial-empty i { position: absolute; right: 23px; bottom: -38px; color: rgba(198,25,46,.65); font-family: var(--font-display); font-size: 180px; font-style: normal; line-height: 1; }
.tsf-about-contact { padding: 105px 0; background: var(--red); color: #fff; }
.tsf-about-contact .tsf-label { color: rgba(255,255,255,.72); }
.tsf-about-contact h2 { margin-bottom: 35px; font-size: clamp(50px, 6vw, 88px); }
.tsf-about-contact h2 em { color: #fff; }
.tsf-about-contact .tsf-button:hover { border-color: #fff; background: #fff; color: var(--red); }
@media (max-width: 991px) {
  .tsf-about-hero-grid, .tsf-about-testimonials-grid { grid-template-columns: 1fr; gap: 28px; }
  .tsf-about-story-grid { display: block; }
  .tsf-about-story-copy { padding: 48px 15px 0; }
  .tsf-about-principle { margin-bottom: 32px; }
}
@media (max-width: 767px) {
  .tsf-about-header .tsf-menu-button span { background: var(--ink); }
  .tsf-about-header .tsf-nav { color: #fff; }
  .tsf-about-header .tsf-nav .tsf-nav-cta { border-color: #fff; }
  .tsf-about-hero { padding: 70px 0 74px; }
  .tsf-about-hero h1 { font-size: 55px; letter-spacing: -3px; }
  .tsf-about-story, .tsf-about-principles, .tsf-about-testimonials, .tsf-about-contact { padding: 78px 0; }
  .tsf-about-portrait, .tsf-about-portrait img { min-height: 390px; height: 390px; }
  .tsf-about-story-copy { padding-left: 0; padding-right: 0; }
  .tsf-about-story h2, .tsf-about-section-head h2, .tsf-about-testimonials h2 { letter-spacing: -2.8px; }
  .tsf-about-testimonials-grid { gap: 45px; }
  .tsf-testimonial-empty { padding: 25px; }
}

/* Final territory palette override: preserve the northern green, with enough light for clear reading. */
.tsf-territory { background: #4d7166; color: #fffaf2; }
.tsf-territory:before, .tsf-territory:after { background: linear-gradient(90deg, transparent, rgba(255,250,242,.42) 12%, rgba(255,250,242,.42) 88%, transparent); }
.tsf-territory .tsf-label { color: #ffd6dc; }
.tsf-territory-copy h2 { color: #fffaf2; }
.tsf-territory-copy h2 em { color: var(--red); }
.tsf-territory-copy > p:not(.tsf-label) { color: rgba(255,250,242,.87); }
.tsf-route-intro { border-left-color: var(--red); color: rgba(255,250,242,.84); }
.tsf-route-intro b { color: #fffaf2; }
.tsf-place-list span { border-bottom-color: rgba(255,250,242,.28); color: #fffaf2; }
.tsf-place-list span small { color: rgba(255,250,242,.67); }
.tsf-map-caption { color: #fffaf2; border-bottom-color: var(--red); }
.tsf-map-origin { background: #fffaf2; color: var(--red); }
.tsf-territory .tsf-button { border-color: #fffaf2; color: #fffaf2; }
.tsf-territory .tsf-button:hover { border-color: #fffaf2; background: #fffaf2; color: #4d7166; }

/* Chupinazo: gentle contrast on the red editorial emphasis, without a visible panel. */
.tsf-slide-chupinazo .tsf-slide-content h1 em {
  position: relative;
  z-index: 0;
  display: inline-block;
  margin: 0 -.06em;
  padding: 0 .06em .03em;
  color: var(--red);
  text-shadow: 0 2px 2px rgba(255, 248, 238, .3), 0 6px 17px rgba(42, 7, 13, .62), 0 0 1px rgba(42, 7, 13, .8);
}
.tsf-slide-chupinazo .tsf-slide-content h1 em::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: .13em -.1em .1em;
  border-radius: 3px;
  background: linear-gradient(90deg, rgba(255, 244, 228, .12), rgba(53, 7, 14, .2) 50%, rgba(255, 244, 228, .1));
  filter: blur(9px);
}
/* Calendar window: a measured editorial opening that keeps every day present at the edges. */
@media (min-width: 768px) {
  .tsf-calendar-showcase {
    isolation: isolate;
    background: #24201d;
  }
  .tsf-calendar-scene {
    transition: flex 1.55s cubic-bezier(.22,.68,.2,1), opacity 1.1s ease, padding 1.55s cubic-bezier(.22,.68,.2,1), transform 1.55s cubic-bezier(.22,.68,.2,1), filter 1.1s ease;
  }
  .tsf-calendar-showcase.is-focused:not(.is-open) .tsf-calendar-scene,
  .tsf-calendar-showcase.is-focused:not(.is-open) .tsf-calendar-scene.is-selected {
    flex: 1 1 0;
    opacity: 1;
    padding: 25px 18px;
    pointer-events: auto;
    transform: none;
  }
  .tsf-calendar-showcase.is-open .tsf-calendar-scene:not(.is-selected) {
    flex: 1 1 0;
    min-width: 38px;
    opacity: .68;
    padding: 24px 8px;
    pointer-events: auto;
    filter: saturate(.72) brightness(.83);
  }
  .tsf-calendar-showcase.is-open .tsf-calendar-scene.is-before { transform: translateX(-12px); }
  .tsf-calendar-showcase.is-open .tsf-calendar-scene.is-after { transform: translateX(12px); }
  .tsf-calendar-showcase.is-open .tsf-calendar-scene:not(.is-selected) strong,
  .tsf-calendar-showcase.is-open .tsf-calendar-scene:not(.is-selected) .tsf-scene-detail {
    max-height: 0;
    opacity: 0;
    transform: translateY(8px);
  }
  .tsf-calendar-showcase.is-open .tsf-calendar-scene:not(.is-selected) .tsf-date {
    margin: 0;
    opacity: .95;
    white-space: nowrap;
    writing-mode: vertical-rl;
    transform: rotate(180deg);
  }
  .tsf-calendar-showcase.is-open .tsf-calendar-scene.is-selected {
    flex: 10 1 0;
    min-width: 0;
    padding: 34px 49% 34px 40px;
    background-color: #f7f5f0;
    background-position: left center;
    background-repeat: no-repeat;
    background-size: 51% 100%;
    filter: saturate(1.04);
    transform: none;
  }
  .tsf-calendar-showcase.is-open .tsf-calendar-scene.is-selected:before {
    inset: 0 auto 0 0;
    width: 51%;
    background: linear-gradient(90deg, rgba(0,0,0,.68), rgba(0,0,0,.12));
  }
  .tsf-calendar-showcase.is-open .tsf-calendar-scene.is-selected .tsf-scene-panel {
    box-sizing: border-box;
    width: 49%;
    padding: 43px 38px;
    opacity: 1;
    visibility: visible;
    transform: translateX(0);
    transition: opacity .65s ease .38s, transform .85s cubic-bezier(.22,.68,.2,1) .38s;
  }
  .tsf-calendar-showcase.is-open .tsf-calendar-scene.is-selected .tsf-scene-detail {
    max-width: 46%;
    opacity: 1;
    transform: translateY(0);
  }
}

/* Editorial bridge from San Fermín to the wider northern territory. */
.tsf-marquee-territory {
  position: relative;
  z-index: 1;
  padding: 18px 0 17px;
  overflow: hidden;
  color: #231d1b;
  background: #eee4d6;
  border: 0;
  box-shadow: inset 0 3px 0 var(--red), inset 0 -3px 0 var(--red);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .18em;
  line-height: 1;
  text-transform: uppercase;
  white-space: nowrap;
}
.tsf-marquee-territory::before,
.tsf-marquee-territory::after {
  position: absolute;
  z-index: 2;
  top: 3px;
  bottom: 3px;
  width: clamp(28px, 6vw, 108px);
  content: "";
  pointer-events: none;
}
.tsf-marquee-territory::before { left: 0; background: linear-gradient(90deg, #eee4d6 20%, rgba(238,228,214,0)); }
.tsf-marquee-territory::after { right: 0; background: linear-gradient(270deg, #eee4d6 20%, rgba(238,228,214,0)); }
.tsf-marquee-territory .tsf-marquee-track {
  display: flex;
  align-items: center;
  width: max-content;
  padding-left: 0;
  animation: tsf-territory-scroll 64s linear infinite;
  will-change: transform;
}
.tsf-marquee-territory span { display: inline-block; }
.tsf-marquee-territory i {
  display: inline-block;
  width: 5px;
  height: 5px;
  flex: 0 0 auto;
  margin: 0 27px;
  border-radius: 50%;
  background: var(--red);
}
.tsf-marquee-territory:hover .tsf-marquee-track,
.tsf-marquee-territory:focus-within .tsf-marquee-track { animation-play-state: paused; }
@keyframes tsf-territory-scroll {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}
@media (max-width: 767px) {
  .tsf-marquee-territory { padding: 15px 0 14px; font-size: 9px; letter-spacing: .14em; }
  .tsf-marquee-territory .tsf-marquee-track { animation-duration: 43s; }
  .tsf-marquee-territory i { width: 4px; height: 4px; margin: 0 18px; }
}
@media (prefers-reduced-motion: reduce) {
  .tsf-marquee-territory .tsf-marquee-track { animation: none; }
}

/* Match the FAQ header with a full-width red closing rule. */
.tsf-faq { box-shadow: inset 0 -4px 0 var(--red); }

/* Compact closing chapter: the sister projects sit lightly between the enquiry and footer. */
.tsf-other-projects {
  padding: 70px 0 74px;
}
.tsf-other-projects:before { top: 22px; }
.tsf-other-projects-heading {
  gap: 38px;
  margin-bottom: 31px;
}
.tsf-other-projects-heading h2 { font-size: clamp(38px, 4.1vw, 59px); line-height: .92; }
.tsf-other-projects-heading > p { max-width: 360px; font-size: 15px; line-height: 1.6; }
.tsf-other-project { min-height: 255px; padding: 20px 24px 22px; }
.tsf-other-project:before { height: 54%; }
.tsf-other-project-logo { min-height: 76px; margin: 3px 0 12px; }
.tsf-other-project-logo img { max-height: 74px; max-width: 148px; }
.tsf-other-project-venecia .tsf-other-project-logo img { max-height: 68px; }
.tsf-other-project-copy { padding-top: 12px; }
.tsf-other-project-copy strong { font-size: 10px; margin-bottom: 4px; }
.tsf-other-project-copy small { font-size: 13px; line-height: 1.38; }
.tsf-other-project-arrow { right: 23px; bottom: 21px; font-size: 20px; }
@media (max-width: 991px) {
  .tsf-other-projects { padding: 60px 0 64px; }
  .tsf-other-project { min-height: 235px; }
}
@media (max-width: 767px) {
  .tsf-other-projects { padding: 54px 0 48px; }
  .tsf-other-projects-heading { gap: 15px; margin-bottom: 27px; }
  .tsf-other-projects-heading h2 { font-size: 40px; }
  .tsf-other-project { min-height: 220px; }
}

/* Offset red rules link the two paths without introducing a separate visual band. */
.tsf-worlds {
  position: relative;
  overflow: hidden;
}
.tsf-worlds::before,
.tsf-worlds::after {
  position: absolute;
  z-index: 4;
  height: 5px;
  content: "";
  pointer-events: none;
  background: var(--red);
}
.tsf-worlds::before {
  top: 0;
  left: 0;
  width: 70%;
}
.tsf-worlds::after {
  right: 0;
  bottom: 0;
  width: 70%;
}
@media (max-width: 767px) {
  .tsf-worlds::before { width: 78%; }
  .tsf-worlds::after { width: 78%; }
}

/* Keep the territory connected to the following chapter: no pale gap underneath. */
.tsf-territory { margin-bottom: 0; }
@media (max-width: 767px) { .tsf-territory { margin-bottom: 0; } }

/* The header CTA always resolves to San Fermín red, never the inherited camel link hover. */
.tsf-nav .tsf-nav-cta:hover { border-color: var(--red); background: rgba(198,25,46,.10); color: var(--red); }

/* Alternative hero scenes keep the same visual weight without creating additional page H1 headings. */
.tsf-slide-title {
  margin: 0;
  font-family: var(--font-display);
  font-size: clamp(48px, 6.2vw, 94px);
  font-weight: 400;
  letter-spacing: -5px;
  line-height: .97;
  text-shadow: 0 2px 3px rgba(34, 8, 13, .28), 0 8px 24px rgba(34, 8, 13, .38);
}
.tsf-slide-title em { color: var(--red); font-weight: 400; text-shadow: 0 2px 12px rgba(34, 8, 13, .48); }
.tsf-slide-chupinazo .tsf-slide-title em {
  position: relative;
  z-index: 0;
  display: inline-block;
  margin: 0 -.06em;
  padding: 0 .06em .03em;
  text-shadow: 0 2px 2px rgba(255, 248, 238, .3), 0 6px 17px rgba(42, 7, 13, .62), 0 0 1px rgba(42, 7, 13, .8);
}
.tsf-slide-chupinazo .tsf-slide-title em::before {
  position: absolute;
  z-index: -1;
  inset: .13em -.1em .1em;
  border-radius: 3px;
  content: '';
  background: linear-gradient(90deg, rgba(255, 244, 228, .12), rgba(53, 7, 14, .2) 50%, rgba(255, 244, 228, .1));
  filter: blur(9px);
}
@media (max-width: 767px) {
  .tsf-slide-title { font-size: 51px; letter-spacing: -3.2px; }
}

/* Restore full hero-title scale after alternative slides moved from H1 to editorial paragraphs. */
.tsf-slide-content > .tsf-slide-title {
  margin: 0;
  font-size: clamp(48px, 6.2vw, 94px);
  font-weight: 400;
  letter-spacing: -5px;
  line-height: .97;
}
@media (max-width: 767px) {
  .tsf-slide-content > .tsf-slide-title { font-size: 51px; letter-spacing: -3.2px; }
}
/* Lighter editorial territory panel with a regional map rather than a generic icon. */
.tsf-territory {
  background: radial-gradient(circle at 16% 24%, rgba(255,255,255,.14), transparent 30%), linear-gradient(135deg, #78958a 0%, #638479 55%, #53756b 100%);
}
.tsf-territory:before,
.tsf-territory:after { background: linear-gradient(90deg, transparent, rgba(255,250,242,.62) 12%, rgba(255,250,242,.62) 88%, transparent); }
.tsf-map-art {
  background: linear-gradient(145deg, rgba(255,255,255,.08), rgba(255,255,255,0));
  border: 1px solid rgba(255,250,242,.2);
  border-radius: 48% 52% 45% 55% / 52% 40% 60% 48%;
  min-height: 368px;
}
.tsf-euskadi-silhouette { filter: drop-shadow(16px 22px 20px rgba(45,72,64,.26)); transform: none; }
.tsf-map-regions path { stroke: rgba(255,244,237,.78); stroke-linejoin: round; stroke-width: 2; }
.tsf-region-iparralde { fill: url(#tsf-iparralde); }
.tsf-region-euskadi { fill: url(#tsf-euskadi); }
.tsf-region-navarra { fill: url(#tsf-navarra); }
.tsf-map-borders { fill: none; stroke: rgba(255,246,240,.8); stroke-linecap: round; stroke-width: 1.5; }
.tsf-map-contour { opacity: .46; stroke: rgba(255,245,238,.72); stroke-dasharray: 2 8; stroke-width: 1.3; }
.tsf-route-lines path { stroke: rgba(255,244,237,.88); stroke-dasharray: 2 7; stroke-width: 1.5; }
.tsf-map-points circle { fill: #fff8ee; stroke: #bf1730; stroke-width: 4; }
.tsf-map-points .tsf-map-origin-dot { fill: #bf1730; stroke: #fff8ee; stroke-width: 5; }
.tsf-map-labels text { fill: #fffaf2; font-size: 9px; letter-spacing: 1px; text-shadow: 0 1px 2px rgba(67,33,33,.22); }
.tsf-map-labels .tsf-map-origin-label { font-size: 10px; }
.tsf-map-labels .tsf-map-region-label { fill: rgba(255,250,242,.7); font-size: 7px; font-weight: 700; letter-spacing: 1.45px; }
.tsf-map-caption { border-bottom-color: #e52a43; color: #fffaf2; }
.tsf-map-origin { box-shadow: 0 8px 16px rgba(53,80,72,.2); }
.tsf-territory .tsf-label { color: #ffe0c8; }
.tsf-territory-copy h2 { text-shadow: 0 1px 0 rgba(38,67,59,.16); }
.tsf-territory-copy h2 em { color: #ff4058; }
.tsf-territory-copy > p:not(.tsf-label) { color: rgba(255,250,242,.96); }
.tsf-route-intro { color: rgba(255,250,242,.91); }
.tsf-place-list span { border-color: rgba(255,250,242,.34); color: #fffaf2; }
.tsf-place-list small { color: rgba(255,232,213,.86); }
@media (max-width: 767px) {
  .tsf-map-art { border-radius: 44% 56% 48% 52% / 46% 42% 58% 54%; min-height: 285px; }
}
/* Compact the invitation panel so the message leads and the balcony view remains an accent. */
.tsf-invitation {
  grid-template-columns: minmax(0, 1.42fr) minmax(320px, .58fr);
  min-height: 448px;
}
.tsf-invitation-copy {
  padding: 46px 5.5vw 46px max(6vw, calc((100vw - 1240px) / 2));
}
.tsf-invitation-copy:before { height: 52px; }
.tsf-invitation-copy-inner { max-width: 700px; }
.tsf-invitation h2 {
  font-size: clamp(38px, 3.25vw, 54px);
  letter-spacing: -2.8px;
}
.tsf-invitation-copy-inner > p:not(.tsf-label):not(.tsf-invitation-signature) {
  font-size: 14px;
  line-height: 1.58;
  margin: 18px 0 11px;
  max-width: 610px;
}
.tsf-invitation-copy-inner .tsf-invitation-detail {
  font-size: 13px;
  line-height: 1.54;
  margin-top: 7px;
}
.tsf-invitation-points { margin: 15px 0 15px; }
.tsf-invitation-signature { font-size: 14px; margin-bottom: 18px; }
.tsf-invitation-button { padding: 12px 16px; }
.tsf-invitation-image {
  min-height: 448px;
  margin: 22px 28px 22px 0;
}
.tsf-invitation-image img { object-position: 50% 39%; }
.tsf-invitation-image figcaption { bottom: 21px; left: 24px; }
@media (max-width: 767px) {
  .tsf-invitation { display: block; min-height: 0; }
  .tsf-invitation-copy { padding: 62px 28px 54px; }
  .tsf-invitation-image { min-height: 290px; margin: 0 24px 24px; }
  .tsf-invitation-image img { height: 290px; }
}
/* Final density pass: reduce vertical footprint without sacrificing the editorial hierarchy. */
.tsf-invitation { min-height: 422px; }
.tsf-invitation-copy { padding-top: 34px; padding-bottom: 34px; }
.tsf-invitation-copy:before { height: 42px; }
.tsf-invitation h2 { font-size: clamp(36px, 3.05vw, 50px); }
.tsf-invitation-copy-inner > p:not(.tsf-label):not(.tsf-invitation-signature) {
  font-size: 13px;
  line-height: 1.52;
  margin: 14px 0 8px;
}
.tsf-invitation-copy-inner .tsf-invitation-detail { font-size: 12.5px; line-height: 1.48; margin-top: 5px; }
.tsf-invitation-points { margin: 12px 0; }
.tsf-invitation-signature { font-size: 13px; line-height: 1.35; margin-bottom: 14px; }
.tsf-invitation-image { min-height: 422px; margin: 16px 24px 16px 0; }
.tsf-invitation-image figcaption { bottom: 16px; }
@media (max-width: 767px) {
  .tsf-invitation-copy { padding: 56px 28px 48px; }
  .tsf-invitation-image { min-height: 270px; margin: 0 20px 20px; }
  .tsf-invitation-image img { height: 270px; }
}
/* Override the template's generic section padding: this panel is self-contained. */
.tsf-invitation { padding: 0; }
.tsf-invitation-image { min-height: 392px; margin: 14px 24px 14px 0; }
@media (max-width: 767px) {
  .tsf-invitation { padding: 0; }
  .tsf-invitation-image { min-height: 270px; margin: 0 20px 20px; }
}
/* A fixed editorial frame prevents the vertical source image from expanding the grid. */
.tsf-invitation-image { height: 392px; min-height: 0; }
.tsf-invitation-image img { height: 100%; }
@media (max-width: 767px) {
  .tsf-invitation-image { height: 270px; min-height: 0; }
}
/* The two experience cards are a single edge-to-edge chapter, with no template spacing. */
.tsf-worlds {
  padding: 0;
  margin: 0;
}
.tsf-worlds::before,
.tsf-worlds::after {
  height: 5px;
  left: 0;
  right: 0;
  width: auto;
}
.tsf-worlds::before { top: 0; }
.tsf-worlds::after { bottom: 0; }
@media (max-width: 767px) {
  .tsf-worlds::before,
  .tsf-worlds::after { left: 0; right: 0; width: auto; }
}
/* The editorial destination strip is the direct threshold to the territory chapter. */
.tsf-marquee-territory {
  margin: 0;
}

.tsf-territory {
  margin: 0;
}

/* Remove the former floating marker now that there is no interstitial space. */
.tsf-territory-layout::before {
  display: none;
}

@media (max-width: 767px) {
  .tsf-territory {
    margin: 0;
  }
}
/* A small documentary image grounds the practical FAQ introduction in the ritual itself. */
.tsf-faq-photo {
  margin: 32px 0 0;
  max-width: 286px;
  overflow: hidden;
  position: relative;
}

.tsf-faq-photo::after {
  border: 1px solid rgba(198,25,46,.75);
  content: "";
  inset: 11px;
  pointer-events: none;
  position: absolute;
}

.tsf-faq-photo img {
  display: block;
  height: 295px;
  object-fit: cover;
  object-position: center 53%;
  transition: transform .8s cubic-bezier(.2,.65,.25,1);
  width: 100%;
}

.tsf-faq-photo:hover img { transform: scale(1.045); }

.tsf-faq-photo figcaption {
  background: var(--red);
  bottom: 0;
  color: #fff;
  font-family: var(--font-ui);
  font-size: 8px;
  font-weight: 700;
  letter-spacing: .13em;
  margin: 0;
  padding: 10px 12px;
  position: absolute;
  right: 0;
  text-transform: uppercase;
}

@media (max-width: 767px) {
  .tsf-faq-photo { margin-top: 27px; max-width: 310px; }
  .tsf-faq-photo img { height: 270px; }
}
/* The two path cards are sized by their photography, never by empty section space. */
section.tsf-worlds {
  height: clamp(460px, 43vw, 550px);
  min-height: 0;
  padding: 0 !important;
}

.tsf-world {
  background-position: center;
  background-size: auto 100%;
  height: 100%;
  min-height: 0;
  padding: 36px clamp(34px, 5.6vw, 104px);
  transition: background-size 1.45s cubic-bezier(.18,.72,.2,1), color .55s ease;
}

.tsf-world:hover { background-size: auto 107%; }

.tsf-world > div { max-width: 430px; }
.tsf-world h2 { font-size: clamp(52px, 5.3vw, 82px); margin-bottom: 24px; }
.tsf-world-summary { margin-bottom: 19px; max-width: 335px; }
.tsf-world-cta { max-width: 320px; }

@media (max-width: 767px) {
  section.tsf-worlds { display: block; height: auto; }
  .tsf-world { height: 400px; padding: 30px 11%; }
  .tsf-world h2 { font-size: 57px; }
}
/* Territory map: routes reveal once, destinations then invite calm exploration. */
.tsf-map-art {
  overflow: visible;
}

.tsf-map-interactive {
  aspect-ratio: 660 / 430;
  max-width: 530px;
  position: relative;
  width: 100%;
}

.tsf-map-interactive .tsf-euskadi-silhouette {
  display: block;
  height: 100%;
  max-width: none;
  width: 100%;
}

.tsf-map-route {
  opacity: 0;
  stroke: rgba(255,244,237,.9);
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
  stroke-linecap: round;
  stroke-width: 1.75;
}

.tsf-map-interactive.is-routes-ready .tsf-map-route {
  animation: tsf-route-draw 1.65s cubic-bezier(.22,.65,.22,1) forwards;
}

.tsf-map-interactive.is-routes-ready .tsf-map-route-roncesvalles { animation-delay: .32s; }
.tsf-map-interactive.is-routes-ready .tsf-map-route-donosti { animation-delay: .64s; }

@keyframes tsf-route-draw {
  0% { opacity: 0; stroke-dashoffset: 1; }
  18% { opacity: .9; }
  100% { opacity: .78; stroke-dashoffset: 0; }
}

.tsf-map-destination {
  background: transparent;
  border: 0;
  cursor: pointer;
  height: 42px;
  padding: 0;
  position: absolute;
  transform: translate(-50%, -50%);
  width: 42px;
  z-index: 3;
}

.tsf-map-destination::before {
  background: #fff8ee;
  border: 3px solid #bf1730;
  border-radius: 50%;
  box-shadow: 0 0 0 0 rgba(255,247,237,.5);
  content: "";
  height: 12px;
  left: 50%;
  position: absolute;
  top: 50%;
  transform: translate(-50%, -50%);
  transition: background .35s ease, box-shadow .45s ease, height .35s ease, width .35s ease;
  width: 12px;
}

.tsf-map-destination:hover::before,
.tsf-map-destination:focus-visible::before,
.tsf-map-destination.is-active::before {
  background: #bf1730;
  box-shadow: 0 0 0 8px rgba(255,247,237,.15), 0 0 0 14px rgba(198,25,46,.11);
  height: 16px;
  width: 16px;
}

.tsf-map-destination:focus-visible { outline: 1px solid #fff8ee; outline-offset: 2px; }
.tsf-map-destination-pamplona { left: 50.45%; top: 60.2%; }
.tsf-map-destination-bilbao { left: 27.9%; top: 37%; }
.tsf-map-destination-roncesvalles { left: 62.3%; top: 44.65%; }
.tsf-map-destination-donosti { left: 77.4%; top: 42.8%; }
.tsf-map-destination-pamplona::before { background: #bf1730; border-color: #fff8ee; height: 17px; width: 17px; }

.tsf-map-interactive.is-active-bilbao .tsf-map-route:not(.tsf-map-route-bilbao),
.tsf-map-interactive.is-active-roncesvalles .tsf-map-route:not(.tsf-map-route-roncesvalles),
.tsf-map-interactive.is-active-donosti .tsf-map-route:not(.tsf-map-route-donosti) { opacity: .18; }

.tsf-map-interactive.is-active-bilbao .tsf-map-route-bilbao,
.tsf-map-interactive.is-active-roncesvalles .tsf-map-route-roncesvalles,
.tsf-map-interactive.is-active-donosti .tsf-map-route-donosti { opacity: 1; stroke: #fff8ee; stroke-width: 3; }

.tsf-map-card {
  background: rgba(255,248,238,.96);
  border-left: 3px solid var(--red);
  box-shadow: 0 15px 30px rgba(42,71,63,.17);
  color: var(--ink);
  margin: 0;
  max-width: 195px;
  opacity: 0;
  padding: 14px 16px 15px;
  pointer-events: none;
  position: absolute;
  right: 2px;
  top: 16px;
  transform: translateY(10px);
  transition: opacity .35s ease, transform .55s cubic-bezier(.2,.7,.2,1), visibility .35s ease;
  visibility: hidden;
  z-index: 5;
}

.tsf-map-art.has-active-place .tsf-map-card { opacity: 1; transform: translateY(0); visibility: visible; }
.tsf-map-card-kicker { color: var(--red); display: block; font-family: var(--font-ui); font-size: 8px; font-weight: 700; letter-spacing: .12em; margin-bottom: 7px; text-transform: uppercase; }
.tsf-map-card strong { display: block; font-family: var(--font-display); font-size: 27px; font-weight: 500; letter-spacing: -.8px; line-height: .9; }
.tsf-map-card p { color: #5e5750; font-family: var(--font-ui); font-size: 11px; line-height: 1.48; margin: 9px 0 0; }

@media (max-width: 767px) {
  .tsf-map-interactive { max-width: 410px; }
  .tsf-map-card { max-width: 172px; padding: 12px 13px; right: 0; top: 4px; }
  .tsf-map-card strong { font-size: 24px; }
  .tsf-map-card p { font-size: 10px; }
}

@media (prefers-reduced-motion: reduce) {
  .tsf-map-route,
  .tsf-map-interactive.is-routes-ready .tsf-map-route { animation: none; opacity: .78; stroke-dashoffset: 0; }
  .tsf-map-destination::before,
  .tsf-map-card { transition: none; }
}
/* Each hero image receives an individual crop and a quiet tonal treatment. */
.tsf-slide-encierro { background-position: 53% 48%; }
.tsf-slide-chupinazo { background-position: 50% 45%; }
.tsf-slide-navarra { background-position: 56% 50%; }
.tsf-slide-gigantes .tsf-slide-photo { object-position: 51% 46%; }

.tsf-slide-encierro .tsf-slide-shade {
  background:
    linear-gradient(90deg, rgba(18,10,9,.46) 0%, rgba(18,10,9,.16) 36%, rgba(18,10,9,.1) 67%, rgba(18,10,9,.32) 100%),
    radial-gradient(ellipse 56% 48% at 50% 53%, rgba(25,10,9,.31), rgba(25,10,9,0) 72%);
}

.tsf-slide-chupinazo .tsf-slide-shade {
  background:
    linear-gradient(90deg, rgba(255,247,237,.54) 0%, rgba(255,247,237,.18) 26%, rgba(97,11,25,.06) 53%, rgba(75,8,19,.27) 100%),
    radial-gradient(ellipse 55% 46% at 50% 54%, rgba(52,8,16,.36), rgba(52,8,16,0) 70%),
    linear-gradient(0deg, rgba(68,8,17,.32), rgba(68,8,17,0) 48%);
}

.tsf-slide-gigantes .tsf-slide-shade {
  background:
    linear-gradient(90deg, rgba(255,246,236,.43) 0%, rgba(255,246,236,.08) 23%, rgba(52,6,14,.06) 58%, rgba(57,5,13,.28) 100%),
    radial-gradient(ellipse 60% 50% at 50% 53%, rgba(54,7,14,.48), rgba(54,7,14,0) 72%),
    linear-gradient(0deg, rgba(45,6,12,.42), rgba(45,6,12,0) 48%);
}

.tsf-slide-navarra .tsf-slide-shade {
  background:
    linear-gradient(90deg, rgba(250,245,234,.48) 0%, rgba(250,245,234,.12) 23%, rgba(11,20,15,.12) 58%, rgba(7,14,10,.47) 100%),
    radial-gradient(ellipse 57% 48% at 50% 53%, rgba(4,12,8,.38), rgba(4,12,8,0) 74%),
    linear-gradient(0deg, rgba(3,10,7,.46), rgba(3,10,7,0) 55%);
}

/* A soft local veil gives the editorial message its own air without hiding photography. */
.tsf-slide-content::after {
  background: radial-gradient(ellipse at center, rgba(15,8,8,.34) 0%, rgba(15,8,8,.15) 42%, rgba(15,8,8,0) 72%);
  content: "";
  filter: blur(15px);
  inset: -38px -62px;
  pointer-events: none;
  position: absolute;
  z-index: -1;
}

.tsf-slide-chupinazo .tsf-slide-content::after,
.tsf-slide-gigantes .tsf-slide-content::after { background: radial-gradient(ellipse at center, rgba(60,7,17,.42) 0%, rgba(60,7,17,.16) 47%, rgba(60,7,17,0) 75%); }
.tsf-slide-content > p:not(.tsf-slide-title) { text-shadow: 0 2px 12px rgba(21,7,10,.65); }
.tsf-slide-content h1, .tsf-slide-content .tsf-slide-title { text-shadow: 0 2px 4px rgba(21,7,10,.4), 0 11px 28px rgba(21,7,10,.38); }
.tsf-slide-content h1 em, .tsf-slide-content .tsf-slide-title em { text-shadow: 0 2px 11px rgba(65,4,14,.7); }

/* The header adapts to the photograph through a low-contrast light field, not a visible panel. */
.tsf-header { isolation: isolate; }
.tsf-header::before {
  content: "";
  inset: 0;
  opacity: .72;
  pointer-events: none;
  position: absolute;
  transition: background .75s ease, opacity .75s ease;
  z-index: 0;
}
.tsf-header > * { position: relative; z-index: 1; }
.tsf-header[data-hero-scene="encierro"]::before { background: linear-gradient(90deg, rgba(255,248,238,.78), rgba(255,248,238,.18) 28%, rgba(30,10,11,.14) 66%, rgba(30,10,11,.2)); }
.tsf-header[data-hero-scene="chupinazo"]::before { background: linear-gradient(90deg, rgba(255,249,241,.82), rgba(255,249,241,.24) 29%, rgba(98,8,23,.12) 66%, rgba(98,8,23,.21)); }
.tsf-header[data-hero-scene="gigantes"]::before { background: linear-gradient(90deg, rgba(255,249,241,.78), rgba(255,249,241,.2) 28%, rgba(68,8,17,.11) 65%, rgba(68,8,17,.22)); }
.tsf-header[data-hero-scene="navarra"]::before { background: linear-gradient(90deg, rgba(255,249,240,.8), rgba(255,249,240,.18) 30%, rgba(6,17,11,.14) 67%, rgba(6,17,11,.28)); }
.tsf-header .tsf-brand { isolation: isolate; position: relative; }
.tsf-header .tsf-brand img { position: relative; z-index: 1; }
.tsf-header .tsf-brand::before { background: radial-gradient(ellipse, rgba(255,249,240,.8), rgba(255,249,240,0) 70%); content: ""; filter: blur(9px); inset: -15px -20px; pointer-events: none; position: absolute; z-index: 0; }
.tsf-header .tsf-nav { background-color: rgba(35,20,19,.08); box-shadow: 0 8px 25px rgba(31,8,12,.1), inset 0 1px 0 rgba(255,255,255,.2); }

@media (max-width: 767px) {
  .tsf-slide-encierro { background-position: 58% 50%; }
  .tsf-slide-chupinazo { background-position: 52% 50%; }
  .tsf-slide-navarra { background-position: 64% 50%; }
  .tsf-slide-gigantes .tsf-slide-photo { object-position: 55% 50%; }
  .tsf-slide-content::after { inset: -28px -30px; }
  .tsf-header::before { opacity: .84; }
}
/* Override the legacy first-slide veil with the individual encierro treatment. */
.tsf-hero .tsf-slide-encierro .tsf-slide-shade {
  background:
    linear-gradient(90deg, rgba(18,10,9,.46) 0%, rgba(18,10,9,.16) 36%, rgba(18,10,9,.1) 67%, rgba(18,10,9,.32) 100%),
    radial-gradient(ellipse 56% 48% at 50% 53%, rgba(25,10,9,.31), rgba(25,10,9,0) 72%);
}
/* One restrained reveal language gives each editorial chapter a calmer rhythm. */
.tsf-motion-ready .tsf-reveal {
  opacity: 0;
  transform: translateY(30px);
  transition:
    opacity .9s cubic-bezier(.2,.65,.24,1) var(--tsf-reveal-delay, 0ms),
    transform 1.05s cubic-bezier(.2,.72,.2,1) var(--tsf-reveal-delay, 0ms);
  will-change: opacity, transform;
}

.tsf-motion-ready .tsf-reveal.is-revealed {
  opacity: 1;
  transform: translateY(0);
}

.tsf-motion-ready .tsf-invitation-image.tsf-reveal,
.tsf-motion-ready .tsf-intro .col-md-4.tsf-reveal {
  transform: translateY(22px) scale(.985);
}

.tsf-motion-ready .tsf-invitation-image.tsf-reveal.is-revealed,
.tsf-motion-ready .tsf-intro .col-md-4.tsf-reveal.is-revealed {
  transform: translateY(0) scale(1);
}

.tsf-motion-ready .tsf-world.tsf-reveal {
  transform: translateY(18px) scale(.992);
}

.tsf-motion-ready .tsf-world.tsf-reveal.is-revealed { transform: translateY(0) scale(1); }

@media (max-width: 767px) {
  .tsf-motion-ready .tsf-reveal { transform: translateY(18px); }
  .tsf-motion-ready .tsf-invitation-image.tsf-reveal,
  .tsf-motion-ready .tsf-intro .col-md-4.tsf-reveal,
  .tsf-motion-ready .tsf-world.tsf-reveal { transform: translateY(14px) scale(.992); }
}

@media (prefers-reduced-motion: reduce) {
  .tsf-motion-ready .tsf-reveal,
  .tsf-motion-ready .tsf-reveal.is-revealed {
    opacity: 1;
    transform: none;
    transition: none;
  }
}
/* A shorter two-path chapter keeps the home rhythm light without crowding the copy. */
section.tsf-worlds {
  height: clamp(420px, 37vw, 470px);
}

.tsf-world { padding-bottom: 29px; padding-top: 29px; }
.tsf-world h2 { margin-bottom: 17px; }
.tsf-world-summary { margin-bottom: 14px; }
.tsf-world-cta { padding-top: 10px; }

@media (max-width: 767px) {
  .tsf-world { height: 370px; padding-bottom: 27px; padding-top: 27px; }
  .tsf-world h2 { font-size: 53px; }
}
/* Calendar: image-led opening first, editorial panel second. */
@media (min-width: 768px) {
  .tsf-calendar-showcase.is-focused:not(.is-open) .tsf-calendar-scene:not(.is-selected) {
    flex: .62 1 0;
    min-width: 38px;
    opacity: .78;
    padding: 24px 8px;
    filter: saturate(.76) brightness(.86);
  }

  .tsf-calendar-showcase.is-focused:not(.is-open) .tsf-calendar-scene.is-before {
    transform: translateX(-12px);
  }

  .tsf-calendar-showcase.is-focused:not(.is-open) .tsf-calendar-scene.is-after {
    transform: translateX(12px);
  }

  .tsf-calendar-showcase.is-focused:not(.is-open) .tsf-calendar-scene.is-selected {
    flex: 7.2 1 0;
    min-width: 0;
    padding: 34px 40px;
    background-color: transparent;
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    filter: saturate(1.04);
  }

  .tsf-calendar-showcase.is-focused:not(.is-open) .tsf-calendar-scene.is-selected:before {
    inset: 0;
    width: auto;
    background: linear-gradient(90deg, rgba(0, 0, 0, .7), rgba(0, 0, 0, .14));
  }

  .tsf-calendar-showcase.is-focused:not(.is-open) .tsf-calendar-scene.is-selected .tsf-scene-panel {
    width: 0;
    max-width: 0;
    padding: 0;
    opacity: 0;
    visibility: hidden;
    background: transparent;
    transform: translateX(20px);
  }

  .tsf-calendar-showcase.is-open .tsf-calendar-scene.is-selected .tsf-scene-panel {
    opacity: 0;
    visibility: hidden;
    transform: translateX(20px);
    transition: opacity .46s ease, transform .7s cubic-bezier(.22,.68,.2,1);
  }

  .tsf-calendar-showcase.is-open.is-panel-ready .tsf-calendar-scene.is-selected .tsf-scene-panel {
    opacity: 1;
    visibility: visible;
    transform: translateX(0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .tsf-calendar-showcase.is-focused .tsf-calendar-scene,
  .tsf-calendar-showcase.is-open .tsf-calendar-scene,
  .tsf-calendar-showcase.is-open .tsf-scene-panel {
    transition-duration: .01ms;
  }
}
/* Mobile navigation becomes a quiet editorial panel rather than a collapsed desktop menu. */
.tsf-mobile-nav-kicker { display: none; }

@media (max-width: 767px) {
  body.tsf-menu-open { overflow: hidden; }

  .tsf-header .tsf-mainbar { position: relative; z-index: 31; }
  .tsf-header .tsf-brand,
  .tsf-header .tsf-menu-button { position: relative; z-index: 32; }

  .tsf-header .tsf-nav {
    align-items: stretch;
    background:
      linear-gradient(90deg, rgba(198, 25, 46, .1) 1px, transparent 1px) 0 0 / 76px 100%,
      linear-gradient(155deg, #fbf7ef, #efe3d4);
    border: 0;
    box-shadow: none;
    color: var(--ink);
    display: flex;
    flex-direction: column;
    gap: 0;
    inset: 0;
    min-height: 100vh;
    opacity: 0;
    overflow-y: auto;
    padding: 122px 28px 38px;
    pointer-events: none;
    position: fixed;
    text-shadow: none;
    transform: translateY(-12px);
    transition: opacity .42s ease, transform .58s cubic-bezier(.22,.68,.2,1), visibility .42s ease;
    visibility: hidden;
    width: 100%;
  }

  .tsf-header .tsf-nav.is-open {
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
    visibility: visible;
  }

  .tsf-mobile-nav-kicker {
    align-items: center;
    color: var(--red);
    display: flex;
    font-family: var(--font-ui);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .16em;
    margin: 0 0 27px;
    text-transform: uppercase;
  }

  .tsf-mobile-nav-kicker::before {
    background: var(--red);
    content: "";
    height: 7px;
    margin-right: 11px;
    width: 7px;
  }

  .tsf-header .tsf-nav > a {
    align-items: baseline;
    border-top: 1px solid rgba(18, 18, 18, .18);
    color: var(--ink);
    display: flex;
    font-family: var(--font-display);
    font-size: clamp(37px, 11vw, 53px);
    font-weight: 500;
    justify-content: space-between;
    letter-spacing: -2.4px;
    line-height: 1;
    padding: 18px 0 20px;
    text-transform: none;
  }

  .tsf-header .tsf-nav > a::after {
    color: var(--red);
    content: "â†’";
    font-family: var(--font-ui);
    font-size: 17px;
    font-weight: 400;
    letter-spacing: 0;
  }

  .tsf-header .tsf-nav > a:hover,
  .tsf-header .tsf-nav > a:focus-visible { color: var(--red); }

  .tsf-header .tsf-nav > a:focus-visible,
  .tsf-menu-button:focus-visible {
    outline: 2px solid var(--red);
    outline-offset: 5px;
  }

  .tsf-header .tsf-nav .tsf-nav-cta {
    background: var(--red);
    border: 1px solid var(--red);
    color: #fff;
    font-family: var(--font-ui);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .12em;
    line-height: 1;
    margin-top: auto;
    padding: 19px 18px;
    text-transform: uppercase;
  }

  .tsf-header .tsf-nav .tsf-nav-cta::after { color: #fff; }
  .tsf-header .tsf-nav .tsf-nav-indicator { display: none; }

  .tsf-menu-button {
    align-items: center;
    display: flex;
    flex-direction: column;
    justify-content: center;
  }

  .tsf-menu-button span {
    background: var(--ink);
    margin: 4px 0;
    transform-origin: center;
    transition: transform .35s ease, background .3s ease;
  }

  .tsf-menu-button[aria-expanded="true"] span { background: var(--ink); }
  .tsf-menu-button[aria-expanded="true"] span:first-child { transform: translateY(4.5px) rotate(45deg); }
  .tsf-menu-button[aria-expanded="true"] span:last-child { transform: translateY(-4.5px) rotate(-45deg); }
}
/* Keyboard users get the same clear hierarchy as pointer users. */
.tsf-skip-link {
  background: var(--ink);
  color: #fff;
  font-family: var(--font-ui);
  font-size: 12px;
  font-weight: 700;
  left: 16px;
  letter-spacing: .05em;
  padding: 13px 17px;
  position: fixed;
  text-transform: uppercase;
  top: 14px;
  transform: translateY(-180%);
  transition: transform .25s ease;
  z-index: 100;
}

.tsf-skip-link:focus { color: #fff; transform: translateY(0); }

:where(a, button, input, select, textarea, summary):focus-visible {
  outline: 3px solid var(--red);
  outline-offset: 4px;
}

main:focus { outline: 0; }

/* The previous gold was too pale on paper backgrounds for small editorial labels. */
.tsf-countdown .tsf-label,
.tsf-intro .tsf-label,
.tsf-moments .tsf-label,
.tsf-calendar-lab .tsf-label,
.tsf-journal .tsf-label,
.tsf-faq .tsf-label,
.tsf-other-projects .tsf-label,
.tsf-about-page .tsf-label {
  color: #82531c;
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
  }
}
/* Reusable archive and article system for the future WordPress Diario. */
.tsf-diary-page { background: #f7f1e7; color: var(--ink); }
.tsf-diary-header { color: var(--ink); position: relative; }
.tsf-diary-header::before { background: rgba(247, 241, 231, .88); opacity: 1; }
.tsf-diary-header .tsf-topbar { border-color: rgba(18, 18, 18, .16); }
.tsf-diary-header .tsf-nav { color: var(--ink); text-shadow: none; }
.tsf-diary-header .tsf-nav .tsf-nav-cta { border-color: var(--ink); }
.tsf-diary-header .tsf-nav .tsf-nav-cta:hover { background: var(--red); border-color: var(--red); color: #fff; }
.tsf-diary-header .tsf-brand::before { background: radial-gradient(ellipse, rgba(255,249,240,.9), rgba(255,249,240,0) 70%); }

.tsf-diary-hero { background: #e7d8c5; overflow: hidden; padding: 112px 0 86px; position: relative; }
.tsf-diary-hero::after { background: linear-gradient(90deg, rgba(198,25,46,.16) 1px, transparent 1px); background-size: 96px 100%; content: ""; inset: 0; pointer-events: none; position: absolute; }
.tsf-diary-hero .container-fluid { position: relative; z-index: 1; }
.tsf-diary-hero h1 { font-family: var(--font-display); font-size: clamp(54px, 7.5vw, 105px); font-weight: 500; letter-spacing: -.07em; line-height: .88; margin: 0; max-width: 850px; }
.tsf-diary-hero p:not(.tsf-label) { font-size: 17px; line-height: 1.75; margin: 30px 0 0 34%; max-width: 470px; }

.tsf-diary-taxonomy { background: #f7f1e7; border-bottom: 1px solid rgba(18,18,18,.16); border-top: 4px solid var(--red); padding: 0; }
.tsf-diary-taxonomy ul { display: flex; flex-wrap: wrap; list-style: none; margin: 0; padding: 0; }
.tsf-diary-taxonomy a { border-right: 1px solid rgba(18,18,18,.16); display: block; font-size: 10px; font-weight: 700; letter-spacing: .11em; padding: 17px 22px; text-transform: uppercase; transition: background .25s ease, color .25s ease; }
.tsf-diary-taxonomy a:hover, .tsf-diary-taxonomy a:focus-visible, .tsf-diary-taxonomy a[aria-current="page"] { background: var(--red); color: #fff; }

.tsf-diary-archive { padding: 105px 0 122px; }
.tsf-diary-feature { border-bottom: 1px solid rgba(18,18,18,.18); display: grid; gap: clamp(30px, 6vw, 105px); grid-template-columns: minmax(250px, .86fr) minmax(280px, 1.14fr); padding-bottom: 84px; }
.tsf-diary-feature figure { margin: 0; min-height: 420px; overflow: hidden; position: relative; }
.tsf-diary-feature img { height: 100%; object-fit: cover; transition: transform 1s cubic-bezier(.22,.68,.2,1); width: 100%; }
.tsf-diary-feature:hover img { transform: scale(1.045); }
.tsf-diary-feature-copy { align-self: center; max-width: 620px; }
.tsf-diary-meta { color: var(--red); font-size: 10px; font-weight: 700; letter-spacing: .15em; text-transform: uppercase; }
.tsf-diary-feature h2, .tsf-diary-card h2, .tsf-article-header h1, .tsf-article-body h2 { font-family: var(--font-display); font-weight: 500; }
.tsf-diary-feature h2 { font-size: clamp(44px, 4.6vw, 68px); letter-spacing: -.065em; line-height: .92; margin: 20px 0 24px; }
.tsf-diary-feature p:not(.tsf-diary-meta), .tsf-diary-card p:not(.tsf-diary-meta) { color: #4e4842; font-size: 16px; line-height: 1.72; }
.tsf-diary-card-grid { display: grid; gap: 36px; grid-template-columns: repeat(3, 1fr); margin-top: 82px; }
.tsf-diary-card { border-top: 1px solid rgba(18,18,18,.2); display: flex; flex-direction: column; min-height: 330px; padding-top: 21px; }
.tsf-diary-card h2 { font-size: 31px; letter-spacing: -.045em; line-height: 1.02; margin: 22px 0 22px; }
.tsf-diary-card .tsf-text-link, .tsf-diary-feature .tsf-text-link { margin-top: auto; }

.tsf-article-header { background: #e7d8c5; border-top: 4px solid var(--red); padding: 105px 0 70px; }
.tsf-article-header .tsf-article-kicker { color: var(--red); font-size: 10px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; }
.tsf-article-header h1 { font-size: clamp(52px, 7.1vw, 98px); letter-spacing: -.075em; line-height: .9; margin: 23px 0 28px; max-width: 1030px; }
.tsf-article-header .tsf-article-lede { font-size: 19px; line-height: 1.65; margin: 0 0 0 25%; max-width: 610px; }
.tsf-article-hero { margin: 0; max-height: 670px; overflow: hidden; }
.tsf-article-hero img { display: block; height: min(54vw, 670px); object-fit: cover; width: 100%; }
.tsf-article-hero figcaption { color: #6b625a; font-size: 11px; letter-spacing: .05em; margin: 12px 5.6vw 0; }
.tsf-article-layout { display: grid; gap: clamp(35px, 8vw, 140px); grid-template-columns: 180px minmax(0, 720px); margin: 0 auto; max-width: 1120px; padding: 88px 28px 104px; }
.tsf-article-aside { align-self: start; border-top: 2px solid var(--red); color: #6b625a; font-size: 11px; line-height: 1.6; padding-top: 14px; position: sticky; text-transform: uppercase; top: 25px; }
.tsf-article-body { font-size: 18px; line-height: 1.82; }
.tsf-article-body p { margin: 0 0 24px; }
.tsf-article-body h2 { font-size: clamp(34px, 3.7vw, 49px); letter-spacing: -.055em; line-height: .98; margin: 58px 0 22px; }
.tsf-article-note { border-left: 3px solid var(--red); color: #4c443d; font-size: 16px; line-height: 1.65; margin: 38px 0; padding: 5px 0 5px 24px; }
.tsf-article-cta { background: #20463c; color: #fff; padding: 70px 0; }
.tsf-article-cta h2 { font-family: var(--font-display); font-size: clamp(42px, 5vw, 68px); font-weight: 500; letter-spacing: -.065em; line-height: .9; margin: 0 0 22px; }
.tsf-article-cta p { font-size: 16px; line-height: 1.7; max-width: 510px; }
.tsf-article-cta .tsf-button { border-color: #fff; color: #fff; margin-top: 12px; }
.tsf-article-cta .tsf-button:hover { background: #fff; color: var(--red); }

@media (max-width: 767px) {
  .tsf-diary-hero { padding: 100px 0 58px; }
  .tsf-diary-hero p:not(.tsf-label) { margin-left: 0; }
  .tsf-diary-taxonomy ul { flex-wrap: nowrap; overflow-x: auto; }
  .tsf-diary-taxonomy a { white-space: nowrap; }
  .tsf-diary-archive { padding: 70px 0 80px; }
  .tsf-diary-feature { display: block; padding-bottom: 58px; }
  .tsf-diary-feature figure { min-height: 320px; }
  .tsf-diary-feature-copy { margin-top: 31px; }
  .tsf-diary-card-grid { gap: 48px; grid-template-columns: 1fr; margin-top: 58px; }
  .tsf-diary-card { min-height: 0; }
  .tsf-article-header { padding: 96px 0 55px; }
  .tsf-article-header .tsf-article-lede { margin-left: 0; }
  .tsf-article-hero img { height: 90vw; }
  .tsf-article-layout { display: block; padding: 64px 28px 75px; }
  .tsf-article-aside { margin-bottom: 34px; position: static; }
  .tsf-article-body { font-size: 17px; }
}
/* The first stage reaches the final proportions before the editorial panel exists. */
@media (min-width: 768px) {
  .tsf-calendar-showcase.is-focused:not(.is-open) .tsf-calendar-scene:not(.is-selected) {
    flex: 1 1 0;
    opacity: .68;
  }

  .tsf-calendar-showcase.is-focused:not(.is-open) .tsf-calendar-scene.is-selected {
    flex: 10 1 0;
  }
}
/* Keep each calendar photograph proportional when the editorial panel opens. */
@media (min-width: 768px) {
  .tsf-calendar-showcase.is-open .tsf-calendar-scene.is-selected {
    background-position: center center;
    background-size: cover;
  }
}
/* A shorter two-path chapter with a restrained, image-led hover. */
section.tsf-worlds {
  height: clamp(390px, 32vw, 420px);
}

.tsf-world {
  background-size: auto 100%;
  padding-bottom: 25px;
  padding-top: 25px;
  transition: background-size 1.8s cubic-bezier(.22,.68,.2,1), color .85s ease;
}

.tsf-world h2,
.tsf-world p,
.tsf-world .tsf-world-number,
.tsf-world .tsf-arrow,
.tsf-world .tsf-arrow b,
.tsf-world::before {
  transition: color .85s ease, background .85s ease, transform .85s ease;
}

.tsf-world h2 { font-size: clamp(48px, 4.75vw, 72px); }
.tsf-world-summary { font-size: 13px; line-height: 1.48; }

.tsf-world:hover { background-size: auto 103%; }
.tsf-world:hover::before { background: linear-gradient(0deg, rgba(0,0,0,.75), rgba(0,0,0,.08)); }

@media (max-width: 767px) {
  .tsf-world { height: 350px; padding-bottom: 24px; padding-top: 24px; }
  .tsf-world h2 { font-size: 49px; }
}
/* Each territory card now appears beside the destination being explored. */
.tsf-map-card {
  left: auto;
  right: 2px;
  top: 16px;
  transition: left .56s cubic-bezier(.22,.65,.2,1), right .56s cubic-bezier(.22,.65,.2,1), top .56s cubic-bezier(.22,.65,.2,1), bottom .56s cubic-bezier(.22,.65,.2,1), opacity .3s ease, transform .56s cubic-bezier(.22,.65,.2,1), visibility .3s ease;
}

/* Bilbao: its card opens above the western side of the map. */
.tsf-map-interactive.is-active-bilbao + .tsf-map-card {
  left: 2%;
  right: auto;
  top: 5%;
}

/* Roncesvalles: enough room above the northern route without hiding the point. */
.tsf-map-interactive.is-active-roncesvalles + .tsf-map-card {
  left: 55%;
  right: auto;
  top: 2%;
}

/* Donosti: the card follows the eastern edge of the map. */
.tsf-map-interactive.is-active-donosti + .tsf-map-card {
  left: auto;
  right: 0;
  top: 41%;
}

/* Pamplona: the origin card rests just to the lower-right of its central point. */
.tsf-map-interactive.is-active-pamplona + .tsf-map-card {
  left: 55%;
  right: auto;
  top: 53%;
}

@media (max-width: 767px) {
  .tsf-map-interactive.is-active-bilbao + .tsf-map-card,
  .tsf-map-interactive.is-active-roncesvalles + .tsf-map-card,
  .tsf-map-interactive.is-active-donosti + .tsf-map-card,
  .tsf-map-interactive.is-active-pamplona + .tsf-map-card {
    left: auto;
    right: 0;
    top: 4px;
  }
}
/* The moment selector is a useful guide first, and a contact path second. */
.tsf-moment-list .tsf-moment {
  display: block;
  overflow: hidden;
  padding: 0;
}

.tsf-moment > summary {
  align-items: center;
  cursor: pointer;
  display: grid;
  gap: 22px;
  grid-template-columns: 45px minmax(210px, 1.2fr) 110px minmax(220px, 1fr) 30px;
  list-style: none;
  padding: 26px 0;
  transition: background .35s ease, color .35s ease, padding .35s ease;
}

.tsf-moment > summary::-webkit-details-marker { display: none; }
.tsf-moment > summary:hover,
.tsf-moment[open] > summary { color: var(--red); padding-left: 13px; }
.tsf-moment > summary i { color: var(--red); font-family: var(--font-ui); font-size: 23px; font-style: normal; font-weight: 300; line-height: 1; text-align: right; transition: transform .4s ease; }
.tsf-moment[open] > summary i { transform: rotate(45deg); }

.tsf-moment-detail {
  align-items: end;
  border-top: 1px solid rgba(18,18,18,.1);
  display: grid;
  gap: 30px;
  grid-template-columns: minmax(0, 1fr) auto;
  max-height: 0;
  opacity: 0;
  overflow: hidden;
  padding: 0 45px 0 80px;
  transition: max-height .7s cubic-bezier(.22,.61,.2,1), opacity .38s ease, padding .65s cubic-bezier(.22,.61,.2,1);
}

.tsf-moment[open] .tsf-moment-detail { max-height: 400px; opacity: 1; padding-bottom: 28px; padding-top: 24px; }
.tsf-moment-detail > div { max-width: 720px; }
.tsf-moment-detail p { color: #5d5851; font-family: var(--font-ui); font-size: 13px; line-height: 1.6; margin: 0 0 10px; }
.tsf-moment-detail p:last-child { margin-bottom: 0; }
.tsf-moment-detail p b { color: var(--ink); font-family: var(--font-ui); font-size: inherit; font-weight: 700; }
.tsf-moment-cta { align-items: center; border: 1px solid var(--red); color: var(--red); display: inline-flex; font-family: var(--font-ui); font-size: 9px; font-weight: 700; gap: 24px; justify-content: space-between; letter-spacing: 1.15px; min-width: 212px; padding: 15px 16px; text-transform: uppercase; transition: background .3s ease, color .3s ease; }
.tsf-moment-cta:hover, .tsf-moment-cta:focus-visible { background: var(--red); color: #fff; text-decoration: none; }
.tsf-moment-cta span { font-size: 17px; line-height: .5; }

@media (max-width: 767px) {
  .tsf-moment > summary { align-items: start; gap: 10px; grid-template-columns: 25px minmax(0, 1fr) 24px; padding: 22px 0; }
  .tsf-moment > summary small,
  .tsf-moment > summary em { grid-column: 2 / 3; }
  .tsf-moment > summary i { grid-column: 3; grid-row: 1; }
  .tsf-moment[open] > summary { padding-left: 7px; }
  .tsf-moment-detail { display: block; padding-left: 32px; padding-right: 4px; }
  .tsf-moment[open] .tsf-moment-detail { max-height: 650px; padding-bottom: 25px; padding-top: 20px; }
  .tsf-moment-detail p { font-size: 12px; }
  .tsf-moment-cta { margin-top: 20px; min-width: 0; width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  .tsf-moment > summary,
  .tsf-moment > summary i,
  .tsf-moment-detail,
  .tsf-moment-cta { transition: none; }
}
/* Diario local: image-led cards ready to become WordPress post previews. */
.tsf-journal-grid { display: flex; flex-wrap: wrap; }
.tsf-journal-grid article {
  background: rgba(255,250,243,.78);
  border: 1px solid rgba(37,31,27,.15);
  border-top: 3px solid var(--red);
  display: flex;
  flex-direction: column;
  margin-bottom: 28px;
  overflow: hidden;
  padding: 0;
  transition: border-color .45s ease, box-shadow .55s ease, transform .55s cubic-bezier(.22,.61,.2,1);
}

.tsf-journal-grid article:hover { border-color: rgba(198,25,46,.65); box-shadow: 0 16px 28px rgba(73,45,35,.13); transform: translateY(-5px); }
.tsf-journal-image { display: block; height: 220px; overflow: hidden; position: relative; }
.tsf-journal-image:after { background: linear-gradient(180deg, rgba(16,14,12,.03), rgba(16,14,12,.2)); content: ""; inset: 0; position: absolute; transition: background .7s ease; }
.tsf-journal-image img { display: block; height: 100%; object-fit: cover; transform: scale(1.001); transition: transform 1.15s cubic-bezier(.22,.61,.2,1); width: 100%; }
.tsf-journal-grid article:hover .tsf-journal-image img { transform: scale(1.055); }
.tsf-journal-grid article:hover .tsf-journal-image:after { background: linear-gradient(180deg, rgba(16,14,12,.01), rgba(198,25,46,.14)); }

.tsf-journal-card-copy { display: flex; flex: 1; flex-direction: column; padding: 19px 20px 22px; }
.tsf-journal-grid article .tsf-journal-card-copy > p { color: var(--red); font-family: var(--font-ui); font-size: 9px; font-weight: 700; letter-spacing: 1.15px; line-height: 1.4; margin: 0; }
.tsf-journal-card-copy > p span { color: #80766d; float: right; font-size: 8px; letter-spacing: .8px; }
.tsf-journal-grid article h3 { font-size: 25px; line-height: 1.08; margin: 18px 0 27px; max-width: none; }
.tsf-journal-grid article .tsf-journal-card-copy > a { align-items: center; border-top: 1px solid rgba(18,18,18,.15); color: var(--ink); display: flex; font-family: var(--font-ui); font-size: 9px; font-weight: 700; justify-content: space-between; letter-spacing: 1px; margin-top: auto; padding-top: 14px; text-transform: uppercase; }
.tsf-journal-grid article .tsf-journal-card-copy > a span { color: var(--red); font-size: 17px; line-height: .6; margin-left: 8px; transition: transform .35s ease; }
.tsf-journal-grid article:hover .tsf-journal-card-copy > a { color: var(--red); text-decoration: none; }
.tsf-journal-grid article:hover .tsf-journal-card-copy > a span { transform: translateX(5px); }

@media (max-width: 767px) {
  .tsf-journal-grid article { margin-bottom: 20px; }
  .tsf-journal-image { height: 205px; }
  .tsf-journal-grid article h3 { font-size: 24px; margin-bottom: 24px; }
}

@media (prefers-reduced-motion: reduce) {
  .tsf-journal-grid article,
  .tsf-journal-image:after,
  .tsf-journal-image img,
  .tsf-journal-grid article .tsf-journal-card-copy > a span { transition: none; }
}
/* Diario local: image-led cards ready to become WordPress post previews. */
.tsf-journal-grid { display: flex; flex-wrap: wrap; }
.tsf-journal-grid article {
  background: rgba(255,250,243,.78);
  border: 1px solid rgba(37,31,27,.15);
  border-top: 3px solid var(--red);
  display: flex;
  flex-direction: column;
  margin-bottom: 28px;
  overflow: hidden;
  padding: 0;
  transition: border-color .45s ease, box-shadow .55s ease, transform .55s cubic-bezier(.22,.61,.2,1);
}

.tsf-journal-grid article:hover { border-color: rgba(198,25,46,.65); box-shadow: 0 16px 28px rgba(73,45,35,.13); transform: translateY(-5px); }
.tsf-journal-image { display: block; height: 220px; overflow: hidden; position: relative; }
.tsf-journal-image:after { background: linear-gradient(180deg, rgba(16,14,12,.03), rgba(16,14,12,.2)); content: ""; inset: 0; position: absolute; transition: background .7s ease; }
.tsf-journal-image img { display: block; height: 100%; object-fit: cover; transform: scale(1.001); transition: transform 1.15s cubic-bezier(.22,.61,.2,1); width: 100%; }
.tsf-journal-grid article:hover .tsf-journal-image img { transform: scale(1.055); }
.tsf-journal-grid article:hover .tsf-journal-image:after { background: linear-gradient(180deg, rgba(16,14,12,.01), rgba(198,25,46,.14)); }

.tsf-journal-card-copy { display: flex; flex: 1; flex-direction: column; padding: 19px 20px 22px; }
.tsf-journal-grid article .tsf-journal-card-copy > p { color: var(--red); font-family: var(--font-ui); font-size: 9px; font-weight: 700; letter-spacing: 1.15px; line-height: 1.4; margin: 0; }
.tsf-journal-card-copy > p span { color: #80766d; float: right; font-size: 8px; letter-spacing: .8px; }
.tsf-journal-grid article h3 { font-size: 25px; line-height: 1.08; margin: 18px 0 27px; max-width: none; }
.tsf-journal-grid article .tsf-journal-card-copy > a { align-items: center; border-top: 1px solid rgba(18,18,18,.15); color: var(--ink); display: flex; font-family: var(--font-ui); font-size: 9px; font-weight: 700; justify-content: space-between; letter-spacing: 1px; margin-top: auto; padding-top: 14px; text-transform: uppercase; }
.tsf-journal-grid article .tsf-journal-card-copy > a span { color: var(--red); font-size: 17px; line-height: .6; margin-left: 8px; transition: transform .35s ease; }
.tsf-journal-grid article:hover .tsf-journal-card-copy > a { color: var(--red); text-decoration: none; }
.tsf-journal-grid article:hover .tsf-journal-card-copy > a span { transform: translateX(5px); }

@media (min-width: 768px) {
  .tsf-journal-grid { gap: 24px; margin-left: 0; margin-right: 0; }
  .tsf-journal-grid article { width: calc((100% - 48px) / 3); }
}

@media (max-width: 767px) {
  .tsf-journal-grid { margin-left: 0; margin-right: 0; }
  .tsf-journal-grid article { margin-bottom: 20px; }
  .tsf-journal-image { height: 205px; }
  .tsf-journal-grid article h3 { font-size: 24px; margin-bottom: 24px; }
}

@media (prefers-reduced-motion: reduce) {
  .tsf-journal-grid article,
  .tsf-journal-image:after,
  .tsf-journal-image img,
  .tsf-journal-grid article .tsf-journal-card-copy > a span { transition: none; }
}
/* Interest selector: six visual starting points, one calm editorial explanation. */
.tsf-interest-selector { background: #e6d7cd; padding: 118px 0 124px; position: relative; }
.tsf-interest-selector:before { background: var(--red); content: ""; height: 4px; left: 0; position: absolute; top: 0; width: 100%; }
.tsf-interest-heading { align-items: end; display: flex; justify-content: space-between; margin-bottom: 55px; }
.tsf-interest-heading h2 { font-size: clamp(40px, 4.35vw, 64px); line-height: .98; margin: 0; }
.tsf-interest-heading > p { font-family: var(--font-ui); font-size: 14px; line-height: 1.7; margin: 0 0 4px; max-width: 310px; }
.tsf-interest-grid { display: grid; gap: 17px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.tsf-interest-card { appearance: none; background: var(--ink); border: 1px solid transparent; color: #fff; cursor: pointer; height: 270px; overflow: hidden; padding: 0; position: relative; text-align: left; transition: border-color .5s ease, box-shadow .55s ease, transform .55s cubic-bezier(.22,.61,.2,1); }
.tsf-interest-card:hover, .tsf-interest-card:focus-visible, .tsf-interest-card.is-active { border-color: var(--red); box-shadow: 0 15px 28px rgba(79,49,39,.16); outline: 0; transform: translateY(-4px); }
.tsf-interest-card:focus-visible { box-shadow: 0 0 0 3px #fff8ee, 0 0 0 5px var(--red); }
.tsf-interest-image, .tsf-interest-image:after { inset: 0; position: absolute; }
.tsf-interest-image { display: block; overflow: hidden; }
.tsf-interest-image:after { background: linear-gradient(180deg, rgba(12,10,9,.05) 25%, rgba(12,10,9,.84) 100%); content: ""; transition: background .65s ease; }
.tsf-interest-image img { display: block; height: 100%; object-fit: cover; transform: scale(1.001); transition: transform 1.1s cubic-bezier(.22,.61,.2,1); width: 100%; }
.tsf-interest-card:hover .tsf-interest-image img, .tsf-interest-card:focus-visible .tsf-interest-image img, .tsf-interest-card.is-active .tsf-interest-image img { transform: scale(1.055); }
.tsf-interest-card.is-active .tsf-interest-image:after { background: linear-gradient(180deg, rgba(99,13,26,.18), rgba(99,13,26,.9) 100%); }
.tsf-interest-copy { bottom: 0; display: block; left: 0; padding: 19px 20px 20px; position: absolute; right: 0; z-index: 1; }
.tsf-interest-copy > span:first-child { color: #fff; display: block; font-family: var(--font-ui); font-size: 9px; font-weight: 700; letter-spacing: 1.2px; margin-bottom: 18px; }
.tsf-interest-copy strong { display: block; font-family: var(--font-display); font-size: 29px; font-weight: 500; letter-spacing: -1.1px; line-height: .93; }
.tsf-interest-copy strong em { color: #f6d7cc; font-weight: 500; }
.tsf-interest-copy small { display: block; font-family: var(--font-ui); font-size: 11px; line-height: 1.4; margin-top: 11px; max-width: 230px; }
.tsf-interest-copy b { align-items: center; border: 1px solid rgba(255,255,255,.74); border-radius: 50%; display: flex; font-family: var(--font-ui); font-size: 19px; font-weight: 400; height: 28px; justify-content: center; line-height: 1; position: absolute; right: 18px; top: 18px; transition: background .35s ease, border-color .35s ease, color .35s ease, transform .35s ease; width: 28px; }
.tsf-interest-card:hover .tsf-interest-copy b, .tsf-interest-card.is-active .tsf-interest-copy b { background: var(--red); border-color: var(--red); transform: rotate(45deg); }

.tsf-interest-panel { align-items: center; background: #fffaf2; border-left: 4px solid var(--red); display: grid; gap: 28px; grid-template-columns: 62px minmax(0, 1fr) auto; margin-top: 22px; opacity: 0; padding: 29px 33px; transform: translateY(14px); transition: opacity .42s ease, transform .65s cubic-bezier(.22,.61,.2,1); }
.tsf-interest-panel.is-open { opacity: 1; transform: translateY(0); }
.tsf-interest-panel-index { color: var(--red); font-family: var(--font-display); font-size: 39px; line-height: 1; }
.tsf-interest-panel-main .tsf-label { margin-bottom: 9px; }
.tsf-interest-panel h3 { font-family: var(--font-display); font-size: 32px; font-weight: 500; letter-spacing: -1.1px; line-height: 1; margin: 0 0 22px; }
.tsf-interest-panel-details { display: grid; gap: 22px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.tsf-interest-panel-details > div { border-top: 1px solid rgba(18,18,18,.16); padding-top: 10px; }
.tsf-interest-panel-details span { color: var(--red); display: block; font-family: var(--font-ui); font-size: 8px; font-weight: 700; letter-spacing: 1px; margin-bottom: 7px; text-transform: uppercase; }
.tsf-interest-panel-details p { color: #5f584f; font-family: var(--font-ui); font-size: 11px; line-height: 1.55; margin: 0; }
.tsf-interest-panel-cta { align-items: center; border: 1px solid var(--red); color: var(--red); display: inline-flex; font-family: var(--font-ui); font-size: 9px; font-weight: 700; gap: 19px; justify-content: space-between; letter-spacing: 1px; min-width: 205px; padding: 15px 16px; text-transform: uppercase; transition: background .3s ease, color .3s ease; }
.tsf-interest-panel-cta:hover, .tsf-interest-panel-cta:focus-visible { background: var(--red); color: #fff; text-decoration: none; }
.tsf-interest-panel-cta span { font-size: 17px; line-height: .5; }

@media (max-width: 767px) {
  .tsf-interest-selector { padding: 77px 0 82px; }
  .tsf-interest-heading { align-items: flex-start; display: block; margin-bottom: 36px; }
  .tsf-interest-heading h2 { font-size: 43px; letter-spacing: -2.8px; }
  .tsf-interest-heading > p { margin-top: 23px; }
  .tsf-interest-grid { gap: 12px; grid-template-columns: 1fr; }
  .tsf-interest-card { height: 230px; }
  .tsf-interest-copy strong { font-size: 28px; }
  .tsf-interest-panel { display: block; padding: 24px 21px; }
  .tsf-interest-panel-index { font-size: 31px; margin-bottom: 16px; }
  .tsf-interest-panel h3 { font-size: 29px; margin-bottom: 20px; }
  .tsf-interest-panel-details { display: block; }
  .tsf-interest-panel-details > div { margin-top: 15px; }
  .tsf-interest-panel-cta { margin-top: 23px; width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  .tsf-interest-card, .tsf-interest-image:after, .tsf-interest-image img, .tsf-interest-copy b, .tsf-interest-panel, .tsf-interest-panel-cta { transition: none; }
}
/* A quiet, transparent process before the enquiry form. */
.tsf-process { background: #e7ddd1; overflow: hidden; padding: 104px 0 96px; position: relative; }
.tsf-process:before { background: linear-gradient(90deg, transparent, rgba(198,25,46,.23) 12%, rgba(198,25,46,.23) 88%, transparent); content: ""; height: 1px; left: 5vw; position: absolute; right: 5vw; top: 22px; }
.tsf-process-heading { align-items: end; display: flex; justify-content: space-between; margin-bottom: 65px; }
.tsf-process-heading h2 { font-size: clamp(40px, 4.25vw, 62px); line-height: .98; margin: 0; }
.tsf-process-heading > p { font-family: var(--font-ui); font-size: 14px; line-height: 1.7; margin: 0 0 3px; max-width: 315px; }
.tsf-process-track { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); position: relative; }
.tsf-process-track:before, .tsf-process-track:after { content: ""; height: 2px; left: 0; position: absolute; top: 9px; }
.tsf-process-track:before { background: rgba(18,18,18,.17); right: 0; }
.tsf-process-track:after { background: var(--red); right: 0; transform: scaleX(0); transform-origin: left center; transition: transform 1.65s cubic-bezier(.22,.61,.2,1) .18s; }
.tsf-process.is-revealed .tsf-process-track:after { transform: scaleX(1); }
.tsf-process-step { padding: 0 11% 0 0; position: relative; }
.tsf-process-step:not(:first-child) { padding-left: 10%; }
.tsf-process-step span { align-items: center; background: #e7ddd1; border: 2px solid var(--red); border-radius: 50%; color: var(--red); display: flex; font-family: var(--font-ui); font-size: 9px; font-weight: 700; height: 20px; justify-content: center; letter-spacing: .5px; position: relative; width: 20px; z-index: 1; }
.tsf-process-step h3 { font-family: var(--font-display); font-size: 30px; font-weight: 500; letter-spacing: -1px; line-height: 1; margin: 26px 0 13px; }
.tsf-process-step p { color: #5d554d; font-family: var(--font-ui); font-size: 13px; line-height: 1.62; margin: 0; max-width: 270px; }
.tsf-process-cta { align-items: center; border-bottom: 1px solid var(--ink); color: var(--ink); display: inline-flex; font-family: var(--font-ui); font-size: 10px; font-weight: 700; gap: 28px; letter-spacing: 1.1px; margin-top: 55px; padding-bottom: 10px; text-transform: uppercase; transition: border-color .3s ease, color .3s ease; }
.tsf-process-cta span { color: var(--red); font-size: 18px; line-height: .5; transition: transform .3s ease; }
.tsf-process-cta:hover, .tsf-process-cta:focus-visible { border-color: var(--red); color: var(--red); text-decoration: none; }
.tsf-process-cta:hover span, .tsf-process-cta:focus-visible span { transform: translateX(5px); }

@media (max-width: 767px) {
  .tsf-process { padding: 76px 0 72px; }
  .tsf-process:before { top: 14px; }
  .tsf-process-heading { align-items: flex-start; display: block; margin-bottom: 45px; }
  .tsf-process-heading h2 { font-size: 43px; letter-spacing: -2.8px; }
  .tsf-process-heading > p { margin-top: 23px; }
  .tsf-process-track { display: block; padding-left: 33px; }
  .tsf-process-track:before, .tsf-process-track:after { bottom: 0; height: auto; left: 9px; right: auto; top: 0; width: 2px; }
  .tsf-process-track:after { transform: scaleY(0); transform-origin: top center; }
  .tsf-process.is-revealed .tsf-process-track:after { transform: scaleY(1); }
  .tsf-process-step, .tsf-process-step:not(:first-child) { padding: 0 0 34px; }
  .tsf-process-step:last-child { padding-bottom: 0; }
  .tsf-process-step span { left: -34px; position: absolute; top: 0; }
  .tsf-process-step h3 { font-size: 28px; margin: 0 0 10px; }
  .tsf-process-cta { margin-top: 36px; }
}

@media (prefers-reduced-motion: reduce) {
  .tsf-process-track:after, .tsf-process-cta, .tsf-process-cta span { transition: none; }
  .tsf-process-track:after { transform: scaleX(1); }
  .tsf-process.is-revealed .tsf-process-track:after { transform: scaleX(1); }
}

@media (max-width: 767px) and (prefers-reduced-motion: reduce) {
  .tsf-process-track:after,
  .tsf-process.is-revealed .tsf-process-track:after { transform: scaleY(1); }
}
/* Approved content architecture: editorial dropdowns in the primary navigation. */
.tsf-nav {
  align-items: center;
  gap: clamp(7px, .9vw, 16px);
}

.tsf-nav > .tsf-nav-home,
.tsf-nav > .tsf-nav-dropdown > .tsf-nav-dropdown-trigger > a,
.tsf-nav > a:not(.tsf-nav-cta) {
  color: inherit;
  display: inline-flex;
  white-space: nowrap;
}

.tsf-nav-dropdown { position: relative; }
.tsf-nav-dropdown-trigger { align-items: center; display: flex; }
.tsf-nav-dropdown-trigger > a { padding-bottom: 12px; }
.tsf-nav-dropdown-trigger button {
  align-items: center;
  background: transparent;
  border: 0;
  color: inherit;
  cursor: pointer;
  display: inline-flex;
  font: inherit;
  height: 24px;
  justify-content: center;
  margin: -5px -4px 7px 1px;
  padding: 0;
  width: 18px;
}
.tsf-nav-dropdown-trigger button span { font-family: var(--font-ui); font-size: 15px; font-weight: 400; transition: transform .3s ease; }
.tsf-nav-dropdown:hover .tsf-nav-dropdown-trigger button span,
.tsf-nav-dropdown:focus-within .tsf-nav-dropdown-trigger button span,
.tsf-nav-dropdown.is-open .tsf-nav-dropdown-trigger button span { transform: rotate(45deg); }
.tsf-nav-dropdown-trigger a:hover,
.tsf-nav-dropdown-trigger a:focus-visible,
.tsf-nav-dropdown-trigger button:hover,
.tsf-nav-dropdown-trigger button:focus-visible { color: var(--red); }

.tsf-nav-submenu {
  background: rgba(250,247,239,.98);
  border: 1px solid rgba(198,25,46,.25);
  box-shadow: 0 18px 38px rgba(37,13,15,.18);
  display: grid;
  left: -18px;
  min-width: 248px;
  opacity: 0;
  padding: 10px 14px 14px;
  pointer-events: none;
  position: absolute;
  top: calc(100% + 10px);
  transform: translateY(-7px);
  transition: opacity .25s ease, transform .34s cubic-bezier(.2,.7,.2,1), visibility .25s ease;
  visibility: hidden;
  z-index: 40;
}
.tsf-nav-dropdown:hover .tsf-nav-submenu,
.tsf-nav-dropdown:focus-within .tsf-nav-submenu,
.tsf-nav-dropdown.is-open .tsf-nav-submenu { opacity: 1; pointer-events: auto; transform: translateY(0); visibility: visible; }
.tsf-nav-submenu a {
  border-bottom: 1px solid rgba(23,19,17,.12);
  color: var(--ink);
  font-family: var(--font-ui);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .01em;
  line-height: 1.25;
  padding: 10px 2px;
  text-transform: none;
  transition: color .22s ease, padding-left .28s ease;
}
.tsf-nav-submenu a:hover,
.tsf-nav-submenu a:focus-visible { color: var(--red); padding-left: 6px; }
.tsf-nav-submenu .tsf-nav-submenu-all {
  align-items: center;
  color: var(--red);
  display: flex;
  font-size: 9px;
  justify-content: space-between;
  letter-spacing: .12em;
  padding-top: 6px;
  text-transform: uppercase;
}
.tsf-nav-submenu .tsf-nav-submenu-all span { font-size: 15px; line-height: .5; }
.tsf-nav-submenu a:last-child { border-bottom: 0; }
.tsf-nav-dropdown-trigger button:focus-visible,
.tsf-nav-submenu a:focus-visible { outline: 2px solid var(--red); outline-offset: 3px; }

@media (min-width: 768px) and (max-width: 1240px) {
  .tsf-nav { font-size: 13px; }
  .tsf-nav > .tsf-nav-home { display: none; }
  .tsf-nav .tsf-nav-cta { padding-left: 10px; padding-right: 10px; }
}

@media (max-width: 767px) {
  .tsf-header .tsf-nav { gap: 0; }
  .tsf-header .tsf-nav > .tsf-nav-home,
  .tsf-header .tsf-nav > .tsf-nav-dropdown,
  .tsf-header .tsf-nav > a:not(.tsf-nav-cta) { border-top: 1px solid rgba(18,18,18,.18); }
  .tsf-header .tsf-nav > .tsf-nav-dropdown { width: 100%; }
  .tsf-header .tsf-nav > .tsf-nav-dropdown > .tsf-nav-dropdown-trigger { justify-content: space-between; }
  .tsf-header .tsf-nav > .tsf-nav-dropdown > .tsf-nav-dropdown-trigger > a,
  .tsf-header .tsf-nav > .tsf-nav-home {
    border: 0;
    color: var(--ink);
    font-family: var(--font-display);
    font-size: clamp(34px, 10.2vw, 49px);
    font-weight: 500;
    letter-spacing: -2.3px;
    line-height: 1;
    padding: 18px 0 20px;
  }
  .tsf-header .tsf-nav > .tsf-nav-home { display: flex; justify-content: space-between; }
  .tsf-header .tsf-nav > .tsf-nav-home::after { color: var(--red); content: "â†’"; font-family: var(--font-ui); font-size: 17px; letter-spacing: 0; }
  .tsf-header .tsf-nav-dropdown-trigger button { color: var(--red); height: 62px; margin: 0; width: 48px; }
  .tsf-header .tsf-nav-dropdown-trigger button span { font-size: 28px; }
  .tsf-header .tsf-nav-submenu {
    background: transparent;
    border: 0;
    box-shadow: none;
    display: grid;
    left: auto;
    max-height: 0;
    min-width: 0;
    opacity: 1;
    overflow: hidden;
    padding: 0 0 0 15px;
    pointer-events: none;
    position: static;
    transform: none;
    transition: max-height .52s cubic-bezier(.2,.7,.2,1), padding .42s ease;
    visibility: visible;
  }
  .tsf-header .tsf-nav-dropdown.is-open .tsf-nav-submenu { max-height: 390px; padding: 0 0 17px 15px; pointer-events: auto; }
  .tsf-header .tsf-nav-submenu a { font-size: 13px; padding: 11px 2px; }
  .tsf-header .tsf-nav-submenu .tsf-nav-submenu-all { font-size: 10px; }
  .tsf-header .tsf-nav > .tsf-nav-dropdown + .tsf-nav-dropdown,
  .tsf-header .tsf-nav > .tsf-nav-dropdown + a { margin-top: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .tsf-nav-dropdown-trigger button span,
  .tsf-nav-submenu,
  .tsf-nav-submenu a { transition: none; }
}
/* Refine the primary taxonomy: fewer controls, quieter chevrons and more editorial spacing. */
.tsf-nav {
  gap: clamp(18px, 1.65vw, 30px);
}

.tsf-nav-dropdown-trigger > a {
  padding-right: 4px;
}

.tsf-nav-dropdown-trigger button {
  height: 20px;
  margin: -3px 0 8px 1px;
  width: 13px;
}

.tsf-nav-dropdown-trigger button span {
  font-size: 0;
  height: 7px;
  position: relative;
  transform: none !important;
  width: 7px;
}

.tsf-nav-dropdown-trigger button span::before {
  border-bottom: 1.5px solid currentColor;
  border-right: 1.5px solid currentColor;
  content: "";
  height: 6px;
  left: 0;
  position: absolute;
  top: -1px;
  transform: rotate(45deg);
  transition: transform .3s ease, top .3s ease;
  width: 6px;
}

.tsf-nav-dropdown:hover .tsf-nav-dropdown-trigger button span::before,
.tsf-nav-dropdown:focus-within .tsf-nav-dropdown-trigger button span::before,
.tsf-nav-dropdown.is-open .tsf-nav-dropdown-trigger button span::before {
  top: 2px;
  transform: rotate(225deg);
}

.tsf-nav-submenu {
  left: -22px;
  padding: 13px 18px 17px;
}

@media (min-width: 768px) and (max-width: 1430px) {
  .tsf-nav { gap: clamp(11px, .95vw, 17px); }
  .tsf-nav > .tsf-nav-dropdown > .tsf-nav-dropdown-trigger > a,
  .tsf-nav > a:not(.tsf-nav-cta) { font-size: 14px; }
}

@media (max-width: 767px) {
  .tsf-header .tsf-nav { gap: 0; }
  .tsf-header .tsf-nav-dropdown-trigger button { height: 62px; margin: 0; width: 48px; }
  .tsf-header .tsf-nav-dropdown-trigger button span { height: 12px; width: 12px; }
  .tsf-header .tsf-nav-dropdown-trigger button span::before { border-width: 2px; height: 10px; top: -1px; width: 10px; }
  .tsf-header .tsf-nav-dropdown.is-open .tsf-nav-dropdown-trigger button span::before { top: 4px; }
}
/* Keep the slide metadata clear of the expanded header navigation. */
@media (min-width: 768px) {
  .tsf-slide-content { transform: translateY(58px); }
}

@media (max-width: 767px) {
  .tsf-slide-content { transform: translateY(18px); }
}
/* Use a true three-column grid so Bootstrap column padding cannot force the third story to wrap. */
@media (min-width: 768px) {
  .tsf-journal-grid {
    display: grid;
    gap: 24px;
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .tsf-journal-grid > article.col-md-4 {
    box-sizing: border-box;
    float: none;
    margin: 0;
    padding-left: 0;
    padding-right: 0;
    width: auto;
  }
}
/* Editorial footer: a calm, complete index of the approved site architecture. */
.tsf-footer { padding: 82px 0 24px; }
.tsf-footer-grid {
  display: grid;
  gap: clamp(28px, 3vw, 54px);
  grid-template-columns: minmax(210px, 1.35fr) repeat(4, minmax(135px, 1fr));
}
.tsf-footer-intro { padding-right: clamp(0px, 2vw, 24px); }
.tsf-footer-brand { display: inline-flex; margin-bottom: 23px; }
.tsf-footer-intro > p {
  color: rgba(255,255,255,.7);
  font-size: 13px;
  line-height: 1.65;
  margin: 0 0 25px;
  max-width: 250px;
}
.tsf-footer-consult {
  align-items: center;
  border-bottom: 1px solid rgba(255,255,255,.36);
  color: #fff;
  display: inline-flex;
  font-family: var(--font-ui);
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .1em;
  padding-bottom: 9px;
  text-transform: uppercase;
}
.tsf-footer-consult span { color: var(--red); font-size: 18px; line-height: .4; margin-left: 13px; transition: transform .3s ease; }
.tsf-footer-consult:hover { color: var(--red); }
.tsf-footer-consult:hover span { transform: translateX(4px); }
.tsf-footer-nav { border-left: 1px solid rgba(255,255,255,.14); padding-left: 19px; }
.tsf-footer-nav h2 {
  color: var(--gold);
  font-family: var(--font-ui);
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .12em;
  line-height: 1.2;
  margin: 2px 0 17px;
  text-transform: uppercase;
}
.tsf-footer-nav a {
  color: rgba(255,255,255,.72);
  font-family: var(--font-ui);
  font-size: 11px;
  line-height: 1.35;
  margin-bottom: 10px;
  transition: color .22s ease, transform .25s ease;
}
.tsf-footer-nav a:hover,
.tsf-footer-nav a:focus-visible { color: #fff; transform: translateX(4px); }
.tsf-footer-bottom { align-items: center; gap: 18px; margin-top: 58px; }
.tsf-footer-bottom span:nth-child(2) { margin-left: auto; }

@media (max-width: 1100px) and (min-width: 768px) {
  .tsf-footer-grid { grid-template-columns: minmax(210px, 1.3fr) repeat(2, minmax(150px, 1fr)); }
  .tsf-footer-intro { grid-row: span 2; }
}

@media (max-width: 767px) {
  .tsf-footer { padding: 58px 0 23px; }
  .tsf-footer-grid { gap: 30px 18px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .tsf-footer-intro { grid-column: 1 / -1; padding-bottom: 10px; }
  .tsf-footer-intro > p { max-width: 305px; }
  .tsf-footer-nav { padding-left: 12px; }
  .tsf-footer-nav h2 { font-size: 8px; margin-bottom: 14px; }
  .tsf-footer-nav a { font-size: 10px; margin-bottom: 10px; }
  .tsf-footer-bottom { align-items: flex-start; display: flex; flex-direction: column; gap: 6px; margin-top: 43px; }
  .tsf-footer-bottom span:nth-child(2) { margin-left: 0; }
}
/* Do not reserve an empty editorial panel before an interest has been selected. */
.tsf-interest-selector { padding-bottom: 88px; }
.tsf-interest-panel:not(.is-open) {
  border-left-width: 0;
  margin-top: 0;
  max-height: 0;
  overflow: hidden;
  padding-bottom: 0;
  padding-top: 0;
  pointer-events: none;
}
.tsf-interest-panel.is-open {
  border-left-width: 4px;
  max-height: 540px;
  overflow: hidden;
}

@media (max-width: 767px) {
  .tsf-interest-selector { padding-bottom: 62px; }
  .tsf-interest-panel.is-open { max-height: 980px; }
}
/* A more restrained editorial entry for the interest selector. */
.tsf-interest-heading { align-items: center; margin-bottom: 43px; }
.tsf-interest-heading h2 {
  font-size: clamp(42px, 3.55vw, 58px);
  letter-spacing: -2.8px;
  line-height: 1.02;
  max-width: 760px;
}
.tsf-interest-heading h2 em { display: inline-block; margin-top: 5px; }
.tsf-interest-heading > p { margin-bottom: 0; max-width: 295px; }

@media (max-width: 767px) {
  .tsf-interest-heading { margin-bottom: 34px; }
  .tsf-interest-heading h2 { font-size: clamp(38px, 11vw, 49px); letter-spacing: -2.4px; }
}
/* Restore a measured rhythm to the invitation without returning to the oversized version. */
.tsf-invitation { min-height: 458px; }
.tsf-invitation-copy { padding-bottom: 45px; padding-top: 45px; }
.tsf-invitation-copy:before { height: 54px; }
.tsf-invitation h2 { font-size: clamp(38px, 3.25vw, 53px); }
.tsf-invitation-copy-inner > p:not(.tsf-label):not(.tsf-invitation-signature) {
  line-height: 1.6;
  margin: 20px 0 12px;
}
.tsf-invitation-copy-inner .tsf-invitation-detail { line-height: 1.55; margin-top: 8px; }
.tsf-invitation-points { margin: 17px 0; }
.tsf-invitation-signature { margin-bottom: 19px; }
.tsf-invitation-image { height: 426px; margin-bottom: 16px; margin-top: 16px; }

@media (max-width: 767px) {
  .tsf-invitation-copy { padding-bottom: 58px; padding-top: 62px; }
  .tsf-invitation-image { height: 300px; }
}
/* Clean, continuous two-path chapter: no background gaps or exposed card canvas. */
section.tsf-worlds {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 !important;
  margin: 0;
  overflow: hidden;
  background: #111510;
}

.tsf-world {
  background-color: #111510;
  background-position: center center;
  background-repeat: no-repeat;
  background-size: cover;
  box-sizing: border-box;
  margin: 0 !important;
  min-width: 0;
  transition: background-size 1.35s cubic-bezier(.22, .61, .2, 1);
}

.tsf-world + .tsf-world {
  border-left: 0;
}

.tsf-world:hover {
  background-size: 103%;
}

.tsf-world:hover::before {
  background: linear-gradient(90deg, rgba(0, 0, 0, .68), rgba(0, 0, 0, .18));
}

section.tsf-worlds::before,
section.tsf-worlds::after {
  left: 0;
  right: 0;
  width: auto;
}

@media (max-width: 767px) {
  section.tsf-worlds {
    display: block;
  }

  .tsf-world:hover {
    background-size: cover;
  }
}
/* A small personal image grounds the manifesto without turning it into an about-page hero. */
.tsf-proof {
  padding: clamp(88px, 8vw, 118px) 0;
}

.tsf-proof-photo {
  margin: 30px 0 0;
  max-width: 215px;
  overflow: hidden;
  position: relative;
}

.tsf-proof-photo::after {
  border: 1px solid rgba(198, 25, 46, .75);
  content: "";
  inset: 10px;
  pointer-events: none;
  position: absolute;
}

.tsf-proof-photo img {
  display: block;
  height: 278px;
  object-fit: cover;
  object-position: 50% 38%;
  transition: transform 1s cubic-bezier(.22, .61, .2, 1);
  width: 100%;
}

.tsf-proof:hover .tsf-proof-photo img {
  transform: scale(1.035);
}

.tsf-proof-photo figcaption {
  background: var(--red);
  bottom: 0;
  color: #fff;
  font-family: var(--font-ui);
  font-size: 8px;
  font-weight: 700;
  letter-spacing: 1.15px;
  margin: 0;
  padding: 9px 11px;
  position: absolute;
  right: 0;
  text-transform: uppercase;
  z-index: 1;
}

@media (max-width: 767px) {
  .tsf-proof-photo {
    margin-top: 22px;
    max-width: 190px;
  }

  .tsf-proof-photo img { height: 246px; }
}
/* Preserve the hover path from a category to its floating submenu. */
@media (min-width: 768px) {
  .tsf-nav-dropdown::after {
    bottom: -15px;
    content: "";
    left: -24px;
    position: absolute;
    right: -24px;
    top: 100%;
    z-index: 39;
  }

  .tsf-nav-submenu {
    top: calc(100% + 5px);
    transition-delay: .12s;
  }

  .tsf-nav-dropdown:hover .tsf-nav-submenu,
  .tsf-nav-dropdown:focus-within .tsf-nav-submenu,
  .tsf-nav-dropdown.is-open .tsf-nav-submenu {
    transition-delay: 0s;
  }
}
/* A lighter charcoal footer keeps the closing area calm instead of black-heavy. */
.tsf-footer {
  background: linear-gradient(135deg, #444a47 0%, #393f3d 100%);
}

.tsf-footer-nav { border-left-color: rgba(255,255,255,.2); }
.tsf-footer-bottom { border-top-color: rgba(255,255,255,.25); }
.tsf-footer-intro > p { color: rgba(255,255,255,.78); }
.tsf-footer-nav a { color: rgba(255,255,255,.8); }
/* A quiet visual cue supports the contact introduction without competing with the form. */
.tsf-contact-image {
  margin: 29px 0 0;
  max-width: 205px;
  overflow: hidden;
  position: relative;
}

.tsf-contact-image::after {
  border: 1px solid rgba(255,255,255,.45);
  content: "";
  inset: 9px;
  pointer-events: none;
  position: absolute;
}

.tsf-contact-image img {
  display: block;
  height: 188px;
  object-fit: cover;
  object-position: center 58%;
  transition: transform 1.1s cubic-bezier(.22, .61, .2, 1);
  width: 100%;
}

.tsf-contact-image:hover img { transform: scale(1.035); }

.tsf-contact-image figcaption {
  background: rgba(18,18,18,.74);
  bottom: 0;
  color: #fff;
  font-family: var(--font-ui);
  font-size: 8px;
  font-weight: 700;
  letter-spacing: .95px;
  line-height: 1.35;
  margin: 0;
  padding: 8px 10px;
  position: absolute;
  text-transform: uppercase;
  z-index: 1;
}

@media (max-width: 767px) {
  .tsf-contact-image { margin-top: 24px; max-width: 180px; }
  .tsf-contact-image img { height: 165px; }
}
/* A deliberate chapter break connects the experience selector with the calendar. */
.tsf-interest-selector {
  padding-bottom: 58px;
}

.tsf-calendar-lab {
  border-top: 4px solid var(--red);
  padding-top: 86px;
  position: relative;
}

.tsf-calendar-lab::before {
  background: rgba(18,18,18,.22);
  content: "";
  height: 1px;
  left: 5.6vw;
  position: absolute;
  right: 5.6vw;
  top: 34px;
}

.tsf-calendar-lab::after {
  background: var(--red);
  content: "";
  height: 9px;
  left: 50%;
  position: absolute;
  top: 30px;
  transform: translateX(-50%);
  width: 9px;
}

@media (max-width: 767px) {
  .tsf-interest-selector { padding-bottom: 46px; }
  .tsf-calendar-lab { padding-top: 72px; }
  .tsf-calendar-lab::before { left: 26px; right: 26px; }
}
/* The home journal is a true three-card editorial row, independent from template columns. */
@media (min-width: 768px) {
  .tsf-journal-grid {
    display: grid !important;
    gap: 24px;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin-left: 0;
    margin-right: 0;
  }

  .tsf-journal-grid article {
    box-sizing: border-box;
    margin: 0;
    max-width: none;
    padding-left: 0;
    padding-right: 0;
    width: auto !important;
  }

  .tsf-journal .tsf-section-top h2 { white-space: nowrap; }
}

@media (max-width: 767px) {
  .tsf-journal .tsf-section-top h2 { white-space: normal; }
}
/* Blog archive: editorial template adapted to the TuSanfermin visual system. */
.tsf-diary-page {
  background: #f7f1e7;
}

.tsf-diary-header {
  color: #fff;
  left: 0;
  position: absolute;
  right: 0;
  top: 0;
  z-index: 20;
}

.tsf-diary-header::before {
  background: rgba(21, 27, 25, .74);
  opacity: 1;
}

.tsf-diary-header .tsf-topbar { border-color: rgba(255, 255, 255, .24); }
.tsf-diary-header .tsf-topbar a,
.tsf-diary-header .tsf-nav { color: #fff; }
.tsf-diary-header .tsf-nav .tsf-nav-cta { border-color: rgba(255, 255, 255, .78); }
.tsf-diary-header .tsf-brand {
  background: rgba(249, 246, 239, .94);
  display: inline-flex;
  padding: 9px 12px;
}

.tsf-diary-template-hero {
  background-color: #283a35;
  background-image: linear-gradient(90deg, rgba(19, 28, 26, .88) 0%, rgba(24, 37, 33, .62) 47%, rgba(120, 19, 30, .40) 100%), url('../images/san-fermin-panuelos-rojos-pamplona.jpg');
  background-position: center;
  background-size: cover;
  color: #fff;
  min-height: 510px;
  padding: 242px 0 110px;
}

.tsf-diary-template-hero .tsf-label { color: #f7e8ce; }
.tsf-diary-template-hero h1 {
  color: #fff;
  font-size: clamp(3.8rem, 6.1vw, 6.85rem);
  line-height: .82;
  margin: 18px 0 26px;
  max-width: 760px;
}
.tsf-diary-template-hero h1 em { color: #efc3b7; }
.tsf-diary-template-hero > div > p:last-child {
  font-size: 1.08rem;
  line-height: 1.65;
  margin: 0;
  max-width: 555px;
}

.tsf-diary-taxonomy {
  background: #f9f6ef;
  border-bottom: 1px solid rgba(23, 26, 24, .14);
  border-top: 3px solid var(--red);
  padding: 0;
}
.tsf-diary-taxonomy ul { align-items: stretch; display: flex; flex-wrap: wrap; list-style: none; margin: 0; padding: 0; }
.tsf-diary-taxonomy li { margin: 0; }
.tsf-diary-taxonomy a {
  color: var(--ink);
  display: block;
  font-size: .71rem;
  font-weight: 700;
  letter-spacing: .12em;
  padding: 23px 25px 20px;
  position: relative;
  text-decoration: none;
  text-transform: uppercase;
}
.tsf-diary-taxonomy a::after { background: var(--red); bottom: 0; content: ''; height: 3px; left: 25px; position: absolute; right: 25px; transform: scaleX(0); transition: transform .3s ease; }
.tsf-diary-taxonomy a:hover,
.tsf-diary-taxonomy a[aria-current='page'] { color: var(--red); }
.tsf-diary-taxonomy a:hover::after,
.tsf-diary-taxonomy a[aria-current='page']::after { transform: scaleX(1); }

.tsf-diary-template-archive { background: #f7f1e7; padding: clamp(70px, 9vw, 132px) 0; }
.tsf-diary-template-layout { display: grid; gap: clamp(44px, 7vw, 120px); grid-template-columns: minmax(0, 1.55fr) minmax(250px, .55fr); }
.tsf-diary-post-list { display: grid; gap: 56px; }
.tsf-diary-post { background: #fcfaf5; border-top: 3px solid var(--red); box-shadow: 0 16px 34px rgba(34, 27, 21, .08); overflow: hidden; }
.tsf-diary-post-image { background: #283a35; display: block; overflow: hidden; }
.tsf-diary-post-image img { aspect-ratio: 16 / 8.4; display: block; object-fit: cover; transition: transform .75s cubic-bezier(.2,.7,.2,1); width: 100%; }
.tsf-diary-post:hover .tsf-diary-post-image img { transform: scale(1.035); }
.tsf-diary-post-copy { padding: 30px clamp(26px, 4vw, 50px) 34px; }
.tsf-diary-meta { color: var(--red); display: flex; font-size: .68rem; font-weight: 700; justify-content: space-between; letter-spacing: .13em; margin: 0 0 20px; text-transform: uppercase; }
.tsf-diary-meta span { color: #867f76; font-size: .62rem; }
.tsf-diary-post h2 { color: var(--ink); font-size: clamp(2rem, 3vw, 3.2rem); line-height: .96; margin: 0 0 19px; max-width: 830px; }
.tsf-diary-post-copy > p:not(.tsf-diary-meta) { color: #635f5a; font-size: 1rem; line-height: 1.65; margin: 0 0 27px; max-width: 720px; }
.tsf-diary-post .tsf-text-link { color: var(--ink); }
.tsf-diary-post .tsf-text-link:hover { color: var(--red); }

.tsf-diary-sidebar { align-content: start; display: grid; gap: 38px; }
.tsf-diary-search label,
.tsf-diary-sidebar-section .tsf-label { color: var(--ink); display: block; margin: 0 0 13px; }
.tsf-diary-search > div { border: 1px solid rgba(23, 26, 24, .22); display: flex; }
.tsf-diary-search input { background: transparent; border: 0; color: var(--ink); min-width: 0; padding: 15px 14px; width: 100%; }
.tsf-diary-search button { background: var(--red); border: 0; color: #fff; font-size: 1.2rem; padding: 0 17px; }
.tsf-diary-sidebar-section { border-top: 1px solid rgba(23, 26, 24, .2); padding-top: 25px; }
.tsf-diary-sidebar-section > a { border-bottom: 1px solid rgba(23, 26, 24, .14); color: var(--ink); display: flex; font-family: var(--serif); font-size: 1.28rem; justify-content: space-between; line-height: 1.05; padding: 15px 0; text-decoration: none; }
.tsf-diary-sidebar-section > a span { color: var(--red); font-family: var(--sans); font-size: 1rem; }
.tsf-diary-sidebar-section > a:hover { color: var(--red); }
.tsf-diary-tags { display: flex; flex-wrap: wrap; gap: 8px; }
.tsf-diary-tags a { border: 1px solid rgba(23, 26, 24, .18); color: var(--ink); font-size: .72rem; letter-spacing: .06em; padding: 8px 10px; text-decoration: none; }
.tsf-diary-tags a:hover { background: var(--red); border-color: var(--red); color: #fff; }
.tsf-diary-sidebar-callout { background: #dfe5d9; border-left: 3px solid var(--red); padding: 24px; }
.tsf-diary-sidebar-callout p { font-family: var(--serif); font-size: 1.42rem; line-height: 1.02; margin: 0 0 22px; }
.tsf-diary-sidebar-callout .tsf-text-link { color: var(--ink); }

.tsf-diary-pagination { align-items: center; display: flex; gap: 8px; margin-top: 6px; }
.tsf-diary-pagination a,
.tsf-diary-pagination span { border: 1px solid rgba(23, 26, 24, .24); color: var(--ink); display: grid; font-size: .76rem; height: 38px; place-items: center; text-decoration: none; width: 38px; }
.tsf-diary-pagination span,
.tsf-diary-pagination a:hover { background: var(--red); border-color: var(--red); color: #fff; }

@media (max-width: 900px) {
  .tsf-diary-template-layout { grid-template-columns: 1fr; }
  .tsf-diary-sidebar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .tsf-diary-search, .tsf-diary-sidebar-callout { grid-column: 1 / -1; }
}

@media (max-width: 767px) {
  .tsf-diary-header { position: absolute; }
  .tsf-diary-template-hero { min-height: 480px; padding: 214px 0 74px; }
  .tsf-diary-template-hero h1 { font-size: clamp(3.35rem, 16vw, 5rem); }
  .tsf-diary-taxonomy a { padding: 16px 14px; }
  .tsf-diary-taxonomy a::after { left: 14px; right: 14px; }
  .tsf-diary-template-layout { gap: 52px; }
  .tsf-diary-post-list { gap: 36px; }
  .tsf-diary-post-copy { padding: 23px 20px 27px; }
  .tsf-diary-meta { align-items: flex-start; flex-direction: column; gap: 5px; }
  .tsf-diary-sidebar { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  .tsf-diary-post-image img { transition: none; }
}
/* Keep sidebar typography aligned with the existing editorial display face. */
.tsf-diary-sidebar-section > a,
.tsf-diary-sidebar-callout p {
  font-family: "Cormorant Garamond", Georgia, serif;
}
/* Reusable editorial article template for the TuSanfermin Blog. */
.tsf-article-header {
  align-items: end;
  background-color: #283a35;
  background-image: linear-gradient(90deg, rgba(17, 26, 24, .92), rgba(18, 28, 25, .58) 55%, rgba(137, 20, 36, .42));
  background-position: center;
  background-size: cover;
  color: #fff;
  display: flex;
  min-height: 560px;
  padding: 224px 0 82px;
  position: relative;
}

body:has(.tsf-article-hero img[src*='encierro-san-fermin']) .tsf-article-header { background-image: linear-gradient(90deg, rgba(16, 20, 18, .91), rgba(21, 26, 23, .58) 53%, rgba(126, 19, 34, .36)), url('../images/diario-encierrillo-encierro-pamplona.webp'); }
body:has(.tsf-article-hero img[src*='hero-gigantes']) .tsf-article-header { background-image: linear-gradient(90deg, rgba(16, 20, 18, .9), rgba(25, 31, 27, .52) 55%, rgba(126, 19, 34, .34)), url('../images/diario-gigantes-cabezudos-pamplona.webp'); }
body:has(.tsf-article-hero img[src*='hero-navarra']) .tsf-article-header { background-image: linear-gradient(90deg, rgba(16, 30, 27, .92), rgba(28, 57, 47, .55) 55%, rgba(135, 27, 34, .3)), url('../images/diario-camino-santiago-navarra.webp'); }

.tsf-article-header .container-fluid { position: relative; z-index: 1; }
.tsf-article-kicker { color: #f5dfbc; font-size: .7rem; font-weight: 700; letter-spacing: .15em; margin: 0 0 19px; text-transform: uppercase; }
.tsf-article-kicker::before { background: var(--red); content: ''; display: inline-block; height: 8px; margin-right: 10px; width: 8px; }
.tsf-article-header h1 { color: #fff; font-family: var(--font-display); font-size: clamp(3.65rem, 6.4vw, 6.9rem); font-weight: 400; letter-spacing: -.075em; line-height: .83; margin: 0; max-width: 950px; }
.tsf-article-header h1 em { color: #f1b9ad; }
.tsf-article-lede { font-size: 1.13rem; line-height: 1.65; margin: 28px 0 0; max-width: 650px; }

.tsf-article-hero { background: #ebe5da; margin: 0; padding: clamp(42px, 7vw, 100px) 5.6vw 0; }
.tsf-article-hero img { display: block; height: min(55vw, 620px); margin: 0 auto; max-width: 1230px; object-fit: cover; width: 100%; }
.tsf-article-hero figcaption { color: #69645c; font-size: .69rem; letter-spacing: .1em; margin: 12px auto 0; max-width: 1230px; text-transform: uppercase; }

.tsf-article-layout { background: #f7f1e7; display: grid; gap: clamp(42px, 8vw, 140px); grid-template-columns: minmax(190px, .44fr) minmax(0, 1.25fr); padding: clamp(62px, 9vw, 128px) max(5.6vw, calc((100vw - 1230px) / 2)); }
.tsf-article-aside { border-top: 2px solid var(--red); color: #635f5a; font-size: .72rem; font-weight: 700; letter-spacing: .1em; line-height: 2.05; padding-top: 17px; position: sticky; text-transform: uppercase; top: 30px; }
.tsf-article-aside::after { border-top: 1px solid rgba(18,18,18,.18); content: 'Guia editorial \A Lectura con contexto \A Blog TuSanfermin'; display: block; margin-top: 24px; padding-top: 18px; white-space: pre-line; }
.tsf-article-body { max-width: 760px; }
.tsf-article-body > p { color: #34312d; font-size: 1.08rem; line-height: 1.86; margin: 0 0 26px; }
.tsf-article-body > p:first-child { color: var(--ink); font-family: var(--font-display); font-size: clamp(1.7rem, 2.6vw, 2.35rem); line-height: 1.15; margin-bottom: 42px; }
.tsf-article-body h2 { color: var(--ink); font-family: var(--font-display); font-size: clamp(2.2rem, 3.7vw, 3.75rem); font-weight: 400; letter-spacing: -.06em; line-height: .9; margin: 58px 0 22px; }
.tsf-article-note { background: #dfe5d9; border-left: 3px solid var(--red); color: #444b45; font-size: .98rem; line-height: 1.68; margin: 42px 0; padding: 24px 27px; }

.tsf-article-cta { background: #e2cfc4; border-bottom: 3px solid var(--red); border-top: 3px solid var(--red); padding: clamp(66px, 9vw, 120px) 0; }
.tsf-article-cta > div { display: grid; gap: 25px 10vw; grid-template-columns: minmax(0, 1.15fr) minmax(250px, .55fr); }
.tsf-article-cta h2 { font-family: var(--font-display); font-size: clamp(3rem, 5vw, 5.8rem); font-weight: 400; letter-spacing: -.07em; line-height: .85; margin: 0; }
.tsf-article-cta > div > p { align-self: end; font-size: 1rem; line-height: 1.7; margin: 0; max-width: 410px; }
.tsf-article-cta .tsf-button { grid-column: 2; justify-self: start; }
.tsf-article-cta .tsf-button:hover { background: var(--red); border-color: var(--red); color: #fff; }

@media (max-width: 767px) {
  .tsf-article-header { min-height: 510px; padding: 190px 0 60px; }
  .tsf-article-header h1 { font-size: clamp(3.25rem, 16vw, 5rem); }
  .tsf-article-hero { padding: 32px 26px 0; }
  .tsf-article-hero img { height: 59vw; }
  .tsf-article-layout { display: block; padding: 62px 26px 74px; }
  .tsf-article-aside { margin-bottom: 38px; position: static; }
  .tsf-article-body > p { font-size: 1rem; line-height: 1.76; }
  .tsf-article-cta > div { display: block; }
  .tsf-article-cta > div > p { margin: 26px 0; }
}

@media (prefers-reduced-motion: reduce) { .tsf-article-header { background-attachment: scroll; } }
/* Final layout lock: three Blog previews always share one desktop row. */
@media (min-width: 768px) {
  .tsf-journal .tsf-journal-grid.row {
    display: grid !important;
    grid-auto-flow: row;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin: 0 !important;
    width: 100%;
  }

  .tsf-journal .tsf-journal-grid.row > article.col-md-4 {
    grid-row: 1;
    margin: 0 !important;
    min-width: 0;
    padding: 0 !important;
    width: auto !important;
  }

  .tsf-journal .tsf-journal-grid.row > article:nth-child(1) { grid-column: 1; }
  .tsf-journal .tsf-journal-grid.row > article:nth-child(2) { grid-column: 2; }
  .tsf-journal .tsf-journal-grid.row > article:nth-child(3) { grid-column: 3; }
}
