:root{
  --bg: #f6fbff;
  --bg-alt: #eaf4ff;
  --surface: #ffffff;
  --surface-alt: #f0f7ff;
  --text: #0f172a;
  --muted: #526072;
  --border: #d7e5f3;
  --accent: #c1121f;
  --accent-dark: #8a0d14;
  --accent-soft: #fde9ec;
  --blue: #2f6ea8;
  --blue-dark: #1e4d79;
  --blue-soft: #dbeeff;
  --radius: 1.25rem;
}

body{ color: var(--text); background: var(--bg); }
html,
body{
  max-width: 100%;
  overflow-x: hidden;
}
a{ color: var(--accent); }
a:hover{ color: var(--accent-dark); }

.rounded-2xl{ border-radius: var(--radius) !important; }
.shadow-soft{ box-shadow: 0 10px 30px rgba(0,0,0,.08); }
.object-cover{ object-fit: cover; }
.object-contain{ object-fit: contain; background-color: var(--surface); }

.text-secondary{ color: var(--muted) !important; }
.bg-light{ background-color: var(--bg-alt) !important; }
.bg-white{ background-color: var(--surface) !important; }
.border{ border-color: var(--border) !important; }
.border-bottom{ border-color: var(--border) !important; }
.border-top{ border-color: var(--border) !important; }
.text-bg-light{
  background-color: var(--blue-soft) !important;
  color: var(--blue-dark) !important;
  border: 1px solid var(--border) !important;
}

.btn-primary{
  background-color: var(--accent) !important;
  border-color: var(--accent) !important;
}
.btn-primary:hover,
.btn-primary:focus{
  background-color: var(--accent-dark) !important;
  border-color: var(--accent-dark) !important;
}

.btn-outline-secondary{
  color: var(--blue) !important;
  border-color: var(--blue) !important;
}
.btn-outline-secondary:hover,
.btn-outline-secondary:focus{
  background-color: var(--blue) !important;
  border-color: var(--blue) !important;
  color: #ffffff !important;
}

.nav-link{ color: var(--blue-dark); }
.nav-link:hover,
.nav-link:focus{ color: var(--accent); }
.navbar .container{
  padding-top: .2rem;
  padding-bottom: .2rem;
}
.site-navbar{
  background-color: rgba(255,255,255,.95);
  transition: background-color .2s ease, box-shadow .2s ease, border-color .2s ease;
  backdrop-filter: blur(8px);
}
.site-navbar.is-scrolled{
  background-color: rgba(255,255,255,.6);
  box-shadow: none;
  border-color: rgba(215,229,243,.6) !important;
}
.site-navbar .navbar-brand img{
  width: 58px;
  height: 58px;
}
@media (min-width: 992px){
  .site-navbar{
    min-height: 80px;
  }
  .site-navbar .container{
    padding-top: .1rem;
    padding-bottom: .1rem;
  }
}
@media (max-width: 991.98px){
  .site-navbar{
    background-color: rgba(255,255,255,.35);
  }
  .site-navbar.is-scrolled{
    background-color: rgba(255,255,255,.2);
  }
  .site-navbar .container{
    background-color: transparent;
  }
  .site-navbar .navbar-brand img{
    width: 50px;
    height: 50px;
  }
  .site-navbar .navbar-collapse{
    margin-top: .5rem;
    padding: 2.25rem 1rem .75rem;
    border-radius: calc(var(--radius) - .35rem);
    background-color: rgba(255,255,255,.98);
    box-shadow: 0 12px 24px rgba(15,23,42,.12);
  }
}
.page-sticky{
  --nav-height: 80px;
}
.page-sticky .site-navbar{
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1030;
}
.page-sticky{
  padding-top: var(--nav-height);
}
@media (max-width: 991.98px){
  .page-sticky{
    --nav-height: 64px;
  }
}
@media (max-width: 991.98px){
  .navbar .container{
    position: relative;
    padding-right: 3rem;
  }
  .navbar-brand{
    align-items: center;
  }
  .navbar-brand span{
    font-size: .9rem;
  }
  .navbar-toggler{
    position: absolute;
    top: .6rem;
    right: .75rem;
    transform: none;
    z-index: 1040;
  }
}

.text-accent{ color: var(--accent) !important; }
.bg-accent-soft{ background-color: var(--accent-soft) !important; }
.border-accent{ border-color: rgba(193,18,31,.45) !important; }
.footer-credit{ font-size: .8rem; }
.footer-credit .heart{ color: var(--accent); }

#ibanText{
  font-size: clamp(1.1rem, 3.4vw, 1.6rem);
  line-height: 1.35;
  letter-spacing: .02em;
  overflow-wrap: anywhere;
}

.hero-grad{
  background:
    radial-gradient(1200px circle at 12% 10%, rgba(193,18,31,.14), transparent 45%),
    radial-gradient(900px circle at 88% 18%, rgba(47,110,168,.14), transparent 42%),
    linear-gradient(#ffffff, #f3f9ff);
}

.hero-full{
  position: relative;
  min-height: 100vh;
  overflow: hidden;
}
.hero-carousel{
  position: absolute;
  inset: 0;
}
.hero-carousel .carousel-inner,
.hero-carousel .carousel-item,
.hero-slide{
  height: 100vh;
}
.hero-slide{
  background-size: cover;
  background-position: center;
}
.hero-overlay{
  position: relative;
  z-index: 2;
  min-height: 100vh;
  display: flex;
  align-items: center;
  pointer-events: none;
  background: linear-gradient(90deg, rgba(255,255,255,.92) 0%, rgba(255,255,255,.72) 45%, rgba(255,255,255,.2) 100%);
}
.hero-overlay .container{
  pointer-events: auto;
  padding-top: 3rem;
  padding-bottom: 3rem;
}
@media (max-width: 991.98px){
  .hero-overlay{
    background: linear-gradient(180deg, rgba(255,255,255,.92) 0%, rgba(255,255,255,.7) 60%, rgba(255,255,255,.2) 100%);
  }
  .hero-overlay .btn-primary.btn-lg{
    background-color: rgba(193,18,31,.18) !important;
    border-color: rgba(193,18,31,.35) !important;
    color: var(--accent-dark) !important;
  }
}

.hero-carousel .carousel-control-prev-icon,
.hero-carousel .carousel-control-next-icon{
  opacity: .2;
}
.hero-carousel .carousel-control-prev:hover .carousel-control-prev-icon,
.hero-carousel .carousel-control-next:hover .carousel-control-next-icon{
  opacity: .4;
}
.hero-carousel .carousel-indicators [data-bs-target]{
  opacity: .2;
}
.hero-carousel .carousel-indicators .active{
  opacity: .45;
}
.hero-alert{
  max-width: 360px;
  width: 100%;
  background-color: rgba(253,233,236,.72) !important;
  border-color: rgba(193,18,31,.3) !important;
}

.carousel-item img{ height: 420px; }
@media (max-width: 991.98px){
  .carousel-item img{ height: 260px; }
}

.icon-btn svg{ width: 18px; height: 18px; }

.badge-accent{
  background: var(--accent-soft);
  color: var(--accent-dark);
  border: 1px solid rgba(193,18,31,.25);
}

.partner-grid{
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
}
.partner-item{
  flex: 1 1 180px;
}
.partner-tile{
  background: #ffffff;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1.35rem;
  height: 150px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.partner-link{
  background: transparent;
  border: 0;
  padding: 0;
  width: 100%;
  display: block;
}
.partner-tile img{
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  filter: grayscale(100%) brightness(0.55);
}
.partner-tile .partner-logo-full{
  filter: none;
  background: #ffffff;
  transform: none;
}
.partner-logo-zoom{
  transform: scale(1.08);
  transform-origin: center;
}
.partner-logo-gray{
  filter: grayscale(100%);
}

.photo-frame{
  max-width: 380px;
  margin-left: auto;
  margin-right: auto;
}

.cookie-banner{
  position: fixed;
  bottom: 1rem;
  right: 1rem;
  left: 1rem;
  z-index: 1100;
  width: min(960px, calc(100% - 2rem));
  margin: 0 auto;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: 0 12px 30px rgba(0,0,0,.12);
}
.cookie-banner .badge{
  background: var(--accent-soft);
  color: var(--accent-dark);
  border: 1px solid rgba(193,18,31,.2);
}
.cookie-options{
  background: var(--surface-alt);
  border-radius: calc(var(--radius) - .35rem);
}
.cookie-options .form-check{
  padding: .35rem .75rem;
  margin-bottom: .15rem;
}
@media (max-width: 575.98px){
  .cookie-banner{
    left: .5rem;
    right: .5rem;
    width: calc(100% - 1rem);
  }
}

.prose{
  line-height: 1.75;
  font-size: 1.02rem;
}

.preloader{
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #ffffff;
  perspective: 900px;
  transition: opacity .4s ease, visibility .4s ease;
}
.preloader img{
  width: min(26vw, 140px);
  height: auto;
  animation: preloader-spin 1.4s linear infinite;
}
.page-content{
  opacity: 1;
  transition: opacity .4s ease;
}
body.is-loading .page-content{
  opacity: 0;
}
body.is-loaded .preloader{
  opacity: 0;
  visibility: hidden;
}

@keyframes preloader-spin{
  from{ transform: rotateY(0deg); }
  to{ transform: rotateY(360deg); }
}

.reveal{
  opacity: 0;
  transform: translateX(0);
  transition: opacity .6s ease, transform .6s ease;
  will-change: opacity, transform;
}
.reveal-left{ transform: translateX(-48px); }
.reveal-right{ transform: translateX(48px); }
.reveal.is-visible{
  opacity: 1;
  transform: translateX(0);
}
@media (prefers-reduced-motion: reduce){
  .reveal,
  .reveal-left,
  .reveal-right{
    transition: none;
    transform: none;
    opacity: 1;
  }
}
