/* ============================================================
   DISENO 2 - inspirado en Robinhood.com (2026-08-26)
   Home page redesign - self-contained stylesheet
   ============================================================ */
:root{
  --d2-black:#050505;
  --d2-navy:#091e42;
  --d2-navy-2:#0d264f;
  --d2-accent:#D9A62B;
  --d2-accent-dim:#B9860B;
  --d2-white:#ffffff;
  --d2-muted:rgba(255,255,255,.66);
  --d2-muted-2:rgba(255,255,255,.45);
  --d2-border:rgba(255,255,255,.14);
  --d2-font-head:'Fraunces',Georgia,serif;
  --d2-font-body:'Manrope',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
}
body.d2{margin:0;background:var(--d2-black);color:var(--d2-white);font-family:var(--d2-font-body);-webkit-font-smoothing:antialiased;overflow-x:hidden;}
body.d2 *{box-sizing:border-box;}
body.d2 html,body.d2{scroll-behavior:smooth;}
body.d2 a{text-decoration:none;color:inherit;}
body.d2 img{max-width:100%;display:block;}
body.d2 section{position:relative;padding:96px 0;}
@media(max-width:768px){body.d2 section{padding:64px 0;}}
.d2-container{max-width:1240px;margin:0 auto;padding:0 32px;}
@media(max-width:768px){.d2-container{padding:0 20px;}}

/* ---------- NAV ---------- */
.d2-nav{position:fixed;top:0;left:0;right:0;z-index:999;background:rgba(5,5,5,.72);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--d2-border);}
.d2-nav-inner{display:flex;align-items:center;justify-content:space-between;padding:16px 32px;max-width:1240px;margin:0 auto;}
@media(max-width:768px){.d2-nav-inner{padding:14px 20px;}}
.d2-logo img{height:34px;width:auto;}
.d2-nav-links{display:flex;align-items:center;gap:34px;list-style:none;margin:0;padding:0;}
.d2-nav-links a{font-size:15px;font-weight:600;color:var(--d2-muted);transition:color .2s;}
.d2-nav-links a:hover{color:var(--d2-white);}
.d2-nav-links a.active,.d2-mobile-menu a.active{color:var(--d2-accent);}
.d2-nav-right{display:flex;align-items:center;gap:18px;}
.d2-nav-phone{font-size:14px;font-weight:600;color:var(--d2-muted);display:flex;align-items:center;gap:8px;}
.d2-nav-phone i{color:var(--d2-accent);}
@media(max-width:1080px){.d2-nav-phone{display:none;}}
@media(max-width:992px){.d2-nav-links{display:none;}}
.d2-burger{display:none;flex-direction:column;justify-content:center;gap:5px;background:none;border:0;cursor:pointer;padding:6px;width:36px;height:36px;}
.d2-burger span{width:24px;height:2px;background:var(--d2-white);display:block;transition:transform .25s ease,opacity .2s ease;}
@media(max-width:992px){.d2-burger{display:flex;}}
.d2-burger.is-active span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.d2-burger.is-active span:nth-child(2){opacity:0;}
.d2-burger.is-active span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}
.d2-mobile-menu{display:none;position:fixed;top:74px;left:0;right:0;bottom:0;background:var(--d2-black);z-index:900;flex-direction:column;padding:20px 20px 28px;overflow-y:auto;}
.d2-mobile-menu.is-open{display:flex;}
.d2-mobile-menu a{font-family:var(--d2-font-head);font-size:32px;font-weight:600;color:var(--d2-white);padding:16px 0;border-bottom:1px solid var(--d2-border);}

/* ---------- BUTTONS ---------- */
.d2-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:16px 30px;border-radius:40px;font-weight:700;font-size:15px;font-family:var(--d2-font-body);border:2px solid transparent;background:transparent;cursor:pointer;transition:transform .2s,background .2s,color .2s,border-color .2s;white-space:nowrap;}
.d2-btn:hover{transform:translateY(-2px);}
.d2-btn-accent{background:var(--d2-accent);color:var(--d2-navy);}
body.d2 a.d2-btn-accent{color:var(--d2-navy);}
.d2-btn-accent:hover{background:var(--d2-white);}
.d2-btn-outline{border-color:rgba(255,255,255,.35);color:var(--d2-white);}
.d2-btn-outline:hover{border-color:var(--d2-white);}
.d2-btn-outline-dark{border-color:rgba(9,30,66,.5);color:var(--d2-navy);}
.d2-btn-outline-dark:hover{border-color:var(--d2-navy);background:rgba(9,30,66,.10);}
.d2-btn.d2-card-btn{padding:9px 20px;font-size:13px;}
.d2-btn-book{display:inline-flex;align-items:center;gap:14px;background:linear-gradient(90deg,#E8A33D,#D97706);border-radius:14px;padding:14px 16px;box-shadow:0 4px 14px rgba(0,0,0,.3);transition:transform .15s ease,box-shadow .15s ease;text-decoration:none;cursor:pointer;}
.d2-btn-book:hover{transform:translateY(-2px) scale(1.01);box-shadow:0 8px 20px rgba(0,0,0,.4);}
.d2-btn-book:active{transform:scale(.98);}
.d2-btn-book-icon{width:42px;height:42px;border-radius:12px;background:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.d2-btn-book-icon svg{width:32px;height:32px;display:block;}
.d2-btn-book-label{display:flex;flex-direction:column;text-align:left;}
.d2-btn-book-label .main{font-family:var(--d2-font-body);font-weight:600;font-size:16px;line-height:1.2;color:#fff;}
.d2-btn-book-label .sub{font-size:12px;color:#d1d5db;margin-top:2px;}
.d2-btn-book-compact{padding:8px 18px 8px 8px;gap:10px;border-radius:40px;}
.d2-btn-book-compact .d2-btn-book-icon{width:30px;height:30px;border-radius:8px;}
.d2-btn-book-compact .d2-btn-book-icon svg{width:22px;height:22px;}
.d2-btn-book-compact .d2-btn-book-label .main{font-size:14px;}
.d2-btn-book-compact .d2-btn-book-label .sub{display:none;}

/* ---------- HERO ---------- */
.d2-hero{position:relative;overflow:hidden;padding:0;}
.d2-hero-bg{position:absolute;inset:0;z-index:0;}
.d2-hero-bg-img{width:100%;height:100%;object-fit:cover;object-position:center 30%;display:block;}
.d2-hero-overlay{position:absolute;inset:0;background:linear-gradient(90deg,rgba(5,5,5,.90) 0%,rgba(5,5,5,.68) 42%,rgba(5,5,5,.30) 70%,rgba(5,5,5,.15) 100%);}
.d2-hero-content{position:relative;z-index:1;}
/* Desktop-only hero slideshow: mobile keeps the single static banner.jpg. */
.d2-hero-bg-desktop{display:none;}
@media(min-width:993px){
  .d2-hero-bg-mobile{display:none;}
  .d2-hero-bg-desktop{display:block;}
}
.d2-hero-slide{position:absolute;inset:0;opacity:0;transition:opacity 1.2s ease;}
.d2-hero-slide.is-active{opacity:1;z-index:1;}
.d2-hero-dots{position:absolute;left:50%;bottom:40px;transform:translateX(-50%);z-index:2;display:flex;gap:12px;}
.d2-hero-dot{position:relative;width:10px;height:10px;padding:0;border:none;border-radius:50%;background:rgba(255,255,255,.4);cursor:pointer;transition:background .25s ease,transform .25s ease;}
/* Invisible pseudo-element enlarges the tappable area (~34x34px) without
   changing the dot's own visible size/appearance -- the 10px dot alone is a
   hard target to hit accurately with a finger. */
.d2-hero-dot::after{content:'';position:absolute;inset:-12px;}
.d2-hero-dot:hover{background:rgba(255,255,255,.7);}
.d2-hero-dot.is-active{background:var(--d2-accent);transform:scale(1.2);}
.d2-hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center;}
@media(max-width:992px){.d2-hero-grid{grid-template-columns:1fr;gap:48px;}}
.d2-eyebrow{display:inline-flex;align-items:center;gap:8px;color:var(--d2-accent);font-weight:700;font-size:13px;letter-spacing:.14em;text-transform:uppercase;margin-bottom:22px;}
.d2-eyebrow::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--d2-accent);}
.d2-h1{font-family:var(--d2-font-head);font-weight:600;line-height:.98;letter-spacing:-.01em;font-size:clamp(40px,6.4vw,84px);margin:0 0 26px;}
.d2-h1 em{font-style:italic;color:var(--d2-accent);}
.d2-hero-sub{font-size:clamp(16px,2vw,19px);color:var(--d2-muted);max-width:520px;line-height:1.6;margin:0 0 38px;}
.d2-hero-ctas{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:40px;}
.d2-hero-tags{display:flex;flex-wrap:wrap;gap:10px 26px;}
.d2-hero-tag{font-size:13px;color:var(--d2-muted-2);font-weight:600;}
.d2-hero-tag b{color:var(--d2-white);font-weight:700;}
.d2-hero-media{position:relative;}
.d2-hero-media-frame{border-radius:28px;overflow:hidden;border:1px solid var(--d2-border);aspect-ratio:4/5;}
.d2-hero-media-frame img{width:100%;height:100%;object-fit:cover;}
.d2-hero-card{position:absolute;left:-24px;bottom:34px;background:var(--d2-white);color:var(--d2-navy);border-radius:18px;padding:18px 22px;max-width:250px;box-shadow:0 24px 48px rgba(0,0,0,.45);}
@media(max-width:560px){.d2-hero-card{left:8px;bottom:-18px;padding:14px 18px;max-width:210px;}}
.d2-hero-card .stars{color:var(--d2-accent);font-size:14px;margin-bottom:6px;letter-spacing:2px;}
.d2-hero-card p{margin:0;font-size:13px;font-weight:700;line-height:1.35;}

/* ---------- MARQUEE ---------- */
.d2-marquee{background:var(--d2-accent);color:var(--d2-navy);padding:20px 0;overflow:hidden;white-space:nowrap;}
.d2-marquee-track{display:inline-flex;animation:d2-marquee 26s linear infinite;}
.d2-marquee-track span{font-family:var(--d2-font-head);font-weight:600;font-size:clamp(18px,2.6vw,28px);padding:0 28px;display:inline-flex;align-items:center;gap:28px;}
@keyframes d2-marquee{from{transform:translateX(0);}to{transform:translateX(-50%);}}

/* ---------- SECTION HEADS ---------- */
.d2-eyebrow-alt{color:var(--d2-accent);font-weight:700;font-size:13px;letter-spacing:.14em;text-transform:uppercase;margin-bottom:14px;display:block;}
.d2-h2{font-family:var(--d2-font-head);font-weight:600;font-size:clamp(30px,4.6vw,52px);line-height:1.05;margin:0 0 18px;letter-spacing:-.01em;}
.d2-section-sub{color:var(--d2-muted);font-size:17px;max-width:560px;line-height:1.6;margin:0 0 52px;}

/* ---------- SERVICES ---------- */
.d2-services{background:var(--d2-black);text-align:center;}
body.d2 .d2-services{padding:135px 0 28px;}
@media(max-width:768px){body.d2 .d2-services{padding:72px 0 24px;}}
.d2-services-title-mobile-break{display:none;}
@media(max-width:768px){.d2-services-title-mobile-break{display:block;}}
.d2-services .d2-section-sub{margin-left:auto;margin-right:auto;}
.d2-services-carousel{position:relative;margin:0 -32px;}
.d2-services-grid{display:flex;gap:20px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;padding:10px 32px 20px;scrollbar-width:none;}
.d2-services-grid::-webkit-scrollbar{display:none;}
.d2-carousel-arrow{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:48px;border-radius:50%;background:rgba(5,5,5,.7);border:1px solid rgba(255,255,255,.15);color:var(--d2-white);display:flex;align-items:center;justify-content:center;font-size:16px;cursor:pointer;z-index:5;transition:background .2s ease,border-color .2s ease,opacity .2s ease,transform .2s ease;}
.d2-carousel-arrow:hover{background:var(--d2-accent);color:var(--d2-navy);border-color:var(--d2-accent);transform:translateY(-50%) scale(1.06);}
.d2-carousel-arrow-left{left:-64px;}
.d2-carousel-arrow-right{right:-64px;}
@media(min-width:1600px){.d2-carousel-arrow-left{left:-128px;}.d2-carousel-arrow-right{right:-128px;}}
.d2-carousel-arrow[disabled]{opacity:0;pointer-events:none;}
.d2-service-card{scroll-snap-align:start;flex:0 0 auto;width:300px;height:auto;aspect-ratio:4/5;position:relative;overflow:hidden;border-radius:22px;border:1px solid var(--d2-border);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px;text-align:center;transition:transform .3s ease,border-color .3s ease,background-color .3s ease;background-color:rgba(255,255,255,.03);-webkit-tap-highlight-color:transparent;}
.d2-service-card:hover{transform:translateY(-6px);border-color:var(--d2-accent);background-color:rgba(255,255,255,.06);}
.d2-service-card-media{width:92px;height:92px;border-radius:50%;overflow:hidden;margin:0 auto 20px;border:1px solid rgba(217,166,43,.4);box-shadow:0 0 0 6px rgba(255,255,255,.03);flex:0 0 auto;}
.d2-service-card-icon-line{display:flex;align-items:center;justify-content:center;margin-bottom:16px;}
.d2-service-card-icon-line svg{height:96px;width:auto;color:var(--d2-white);opacity:.92;transition:color .3s ease,transform .3s ease;}
.d2-service-card:hover .d2-service-card-icon-line svg{color:var(--d2-accent);transform:translateY(-4px);}
.d2-service-card-icon-img{position:relative;z-index:2;display:flex;align-items:center;justify-content:center;margin-bottom:16px;}
.d2-service-card-icon-img img{height:102px;width:auto;object-fit:contain;filter:drop-shadow(0 8px 16px rgba(0,0,0,.55));transition:transform .35s ease,filter .35s ease;}
.d2-service-card:hover .d2-service-card-icon-img img{transform:translateY(-5px) scale(1.045);filter:drop-shadow(0 12px 22px rgba(217,166,43,.4)) drop-shadow(0 6px 14px rgba(0,0,0,.5));}
.d2-service-card-media img{width:100%;height:100%;object-fit:cover;filter:grayscale(1) brightness(.8) contrast(1.15) sepia(.22) saturate(1.3);transition:filter .35s ease,transform .45s ease;}
.d2-service-card:hover .d2-service-card-media img{filter:grayscale(.35) brightness(.92) contrast(1.1) sepia(.12) saturate(1.2);transform:scale(1.1);}
.d2-service-card:hover .d2-service-card-media{border-color:var(--d2-accent);}
/* Reverted 2026-09-29: real-device test showed the OPPOSITE of the original
   theory -- Fillings (the only card that kept position:relative;z-index:2 on
   its body) was the ONLY card that did NOT split apart under iOS's long-press
   link-preview snapshot. Restored universally; do not remove again without
   re-testing on a real iPhone first. */
.d2-service-card-body{position:relative;z-index:2;-webkit-tap-highlight-color:transparent;}
.d2-service-card h3{font-family:var(--d2-font-head);font-size:25px;font-weight:600;line-height:1.22;color:var(--d2-white);margin:0 0 12px;min-height:2.44em;display:flex;align-items:center;justify-content:center;text-align:center;}
.d2-service-card-desc{font-size:14px;line-height:1.55;color:var(--d2-muted);margin:0 0 16px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;}
.d2-services-cta{text-align:center;margin-top:44px;margin-bottom:90px;}
.d2-card-link{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--d2-accent);}
.d2-service-card:hover .d2-card-link{color:var(--d2-white);}
.d2-card-link i{font-size:11px;transition:transform .25s ease;}
.d2-service-card:hover .d2-card-link i{transform:translateX(3px);}

/* ---------- TARJETAS DE SERVICIO CON FOTO DE FONDO (estilo Bitwarden) ---------- */
.d2-service-card-photo-base{
  align-items:flex-start;
  justify-content:flex-end;
  text-align:left;
  padding:32px 30px;
  background-size:cover;
}
.d2-service-card-photo-base h3{
  justify-content:flex-start;
  text-align:left;
  min-height:0;
}
.d2-service-card-photo-base .d2-service-card-desc{text-align:left;}

/* Shared photo-card background: a real <img> (not CSS background-image) inside
   an absolutely-positioned span, same pattern as .d2-card-split-bg below. Using
   a real element instead of a CSS background fixed iOS's long-press link-preview
   splitting the text block away from the photo on the Services index cards. */
.d2-card-photo-bg{position:absolute;inset:0;overflow:hidden;z-index:0;}
.d2-card-photo-bg img{width:100%;height:100%;object-fit:cover;object-position:center;display:block;}
.d2-card-photo-bg::after{
  content:'';position:absolute;inset:0;
  background-image:linear-gradient(180deg,rgba(5,5,5,.35) 0%,rgba(5,5,5,.25) 30%,rgba(5,5,5,.72) 65%,rgba(5,5,5,.95) 100%);
  transition:background-image .3s ease;
}
.d2-service-card:hover .d2-card-photo-bg::after{
  background-image:linear-gradient(180deg,rgba(5,5,5,.28) 0%,rgba(5,5,5,.18) 30%,rgba(5,5,5,.66) 65%,rgba(5,5,5,.93) 100%);
}
/* Darker variant for the busier/brighter source photos (same pairing the old
   per-service rules used -- see git history if the exact split matters). */
.d2-card-photo-bg-dark::after{
  background-image:linear-gradient(180deg,rgba(5,5,5,.55) 0%,rgba(5,5,5,.45) 30%,rgba(5,5,5,.80) 65%,rgba(5,5,5,.97) 100%);
}
.d2-service-card:hover .d2-card-photo-bg-dark::after{
  background-image:linear-gradient(180deg,rgba(5,5,5,.48) 0%,rgba(5,5,5,.38) 30%,rgba(5,5,5,.74) 65%,rgba(5,5,5,.95) 100%);
}

/* Fillings: la foto original es un antes/despues lado a lado (izquierda/derecha).
   En la tarjeta (siempre vertical) se apilan las dos mitades como imagenes reales
   (no background stretch, que las achataba) con object-fit:cover: la de la derecha
   (despues) arriba y la de la izquierda (antes) abajo. */
.d2-card-split-bg{position:absolute;inset:0;overflow:hidden;z-index:0;}
.d2-card-split-bg img{width:100%;height:50%;object-fit:cover;object-position:center;display:block;}
.d2-card-split-bg::after{
  content:'';position:absolute;inset:0;
  background-image:linear-gradient(180deg,rgba(5,5,5,.35) 0%,rgba(5,5,5,.25) 30%,rgba(5,5,5,.72) 65%,rgba(5,5,5,.95) 100%);
}
.d2-service-card:hover .d2-card-split-bg::after{
  background-image:linear-gradient(180deg,rgba(5,5,5,.28) 0%,rgba(5,5,5,.18) 30%,rgba(5,5,5,.66) 65%,rgba(5,5,5,.93) 100%);
}

/* Per-service .d2-photo-* background rules removed 2026-09-29 -- replaced by
   the shared .d2-card-photo-bg / .d2-card-photo-bg-dark system above, now
   applied via a real <img> in each card's markup instead of a CSS background. */

@media(max-width:768px){
.d2-services-carousel{margin:0 -20px;}
.d2-carousel-arrow{display:none;}
.d2-services-grid{padding:10px 20px 18px;gap:14px;}
.d2-service-card{width:74vw;height:auto;padding:18px;}
.d2-service-card h3{font-size:22px;}
.d2-services .d2-h2,.d2-services .d2-section-sub{text-align:left;}
.d2-services .d2-section-sub{margin-left:0;margin-right:0;}
}

/* ---------- SPLIT ---------- */
.d2-split{background:linear-gradient(180deg,var(--d2-navy),var(--d2-navy-2));}
.d2-split-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:64px;align-items:center;}
@media(max-width:992px){.d2-split-grid{grid-template-columns:1fr;gap:40px;}}
.d2-split-media{border-radius:24px;overflow:hidden;border:1px solid var(--d2-border);}
.d2-split-media img{width:100%;object-fit:cover;}

/* Technology section reuses the Financing split layout but keeps its original flat navy
   background (not the gradient). The photo is shown at its original, uncropped proportions
   per Jose's explicit request, instead of being forced into Financing's taller frame. */
#technology.d2-split{background:var(--d2-navy);}

/* About (Open for You / Walk-ins Welcome) matches Technology's flat-background treatment,
   but in black per Jose's request instead of navy. */
#about.d2-split{background:var(--d2-black);}
.d2-feature-list{list-style:none;margin:32px 0 40px;padding:0;display:grid;gap:16px;}
.d2-feature-list li{display:flex;align-items:flex-start;gap:14px;font-size:15.5px;color:var(--d2-muted);line-height:1.5;}
.d2-feature-list i{color:var(--d2-accent);margin-top:3px;}

/* ---------- FINANCING: INSURANCE & PAYMENT LOGO CAROUSELS ---------- */
.d2-logo-block{margin-top:96px;text-align:center;}
.d2-logo-block-head{max-width:620px;margin:0 auto 40px;}
.d2-logo-block-head .d2-h2{font-size:clamp(24px,3.4vw,36px);margin-bottom:14px;}
.d2-logo-block-head .d2-section-sub{margin:0 auto;max-width:560px;}
.d2-logo-carousel{overflow:hidden;position:relative;margin:0 calc(-1 * var(--d2-gutter,32px));-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 64px,#000 calc(100% - 64px),transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 64px,#000 calc(100% - 64px),transparent 100%);}
.d2-logo-track{display:flex;align-items:stretch;gap:20px;width:max-content;padding:8px 32px;animation:d2-logo-scroll-2 32s linear infinite;}
.d2-logo-track:hover{animation-play-state:paused;}

.d2-logo-chip{flex:0 0 auto;width:172px;height:172px;display:flex;align-items:center;justify-content:center;border-radius:20px;border:1px solid transparent;background-color:var(--d2-white);box-shadow:0 12px 28px rgba(0,0,0,.35);padding:12px;transition:transform .3s ease,border-color .3s ease,box-shadow .3s ease;}
.d2-logo-chip:hover{transform:translateY(-6px);border-color:var(--d2-accent);box-shadow:0 16px 34px rgba(0,0,0,.45);}
.d2-logo-chip img{width:100%;height:100%;object-fit:contain;object-position:center;}

.d2-payment-row{display:flex;flex-wrap:wrap;align-items:stretch;justify-content:center;gap:20px;}
.d2-payment-card{position:relative;overflow:hidden;flex:0 0 auto;width:172px;height:210px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;border-radius:20px;border:1px solid rgba(0,0,0,.08);padding:22px 16px;text-decoration:none;transition:transform .3s ease,border-color .3s ease;-webkit-tap-highlight-color:transparent;}
.d2-payment-card:hover{transform:translateY(-6px);border-color:var(--d2-accent);}
.d2-payment-card-fill{position:absolute;inset:0;z-index:0;background-color:var(--d2-white);}
.d2-payment-card-logo{position:relative;z-index:2;display:flex;align-items:center;justify-content:center;height:84px;width:100%;}
.d2-payment-card-logo img{width:100%;height:100%;object-fit:contain;object-position:center;}
.d2-payment-card-body{position:relative;z-index:2;-webkit-tap-highlight-color:transparent;}
.d2-payment-card .d2-card-btn{background:var(--d2-accent);color:var(--d2-navy);transform:none;}
.d2-payment-card .d2-card-btn:hover,.d2-payment-card .d2-card-btn:active,.d2-payment-card .d2-card-btn:focus{background:var(--d2-accent);color:var(--d2-navy);transform:none;}

@keyframes d2-logo-scroll-2{from{transform:translateX(0);}to{transform:translateX(-50%);}}
@media(max-width:768px){
  .d2-logo-block{margin-top:64px;}
  .d2-logo-carousel{margin:0 -20px;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 32px,#000 calc(100% - 32px),transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 32px,#000 calc(100% - 32px),transparent 100%);}
  .d2-logo-track{padding:8px 20px;gap:14px;}
  .d2-logo-chip{width:136px;height:136px;padding:10px;border-radius:16px;}
  .d2-payment-card{width:150px;height:190px;padding:18px 14px;border-radius:16px;}
  .d2-payment-card-logo{height:70px;}
}

/* ---------- CENTERED SECTIONS: FINANCING / REVIEWS (2026-08-27) ---------- */
.d2-financing{background:var(--d2-navy);text-align:center;}
.d2-financing .d2-h2{max-width:720px;margin-left:auto;margin-right:auto;}
.d2-financing .d2-section-sub{margin-left:auto;margin-right:auto;max-width:640px;}
.d2-financing .d2-feature-list{max-width:480px;margin:32px auto 0;text-align:left;}
.d2-stars{color:var(--d2-accent);font-size:18px;letter-spacing:6px;margin-bottom:20px;}

/* ---------- RESULTS ---------- */
.d2-results{background:var(--d2-accent);color:var(--d2-navy);}
.d2-results .d2-eyebrow-alt,.d2-results .d2-h2{color:var(--d2-navy);}
.d2-results-grid{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center;}
@media(max-width:900px){.d2-results-grid{grid-template-columns:1fr;gap:36px;}}
.d2-results-media{background:var(--d2-navy);border-radius:24px;padding:14px;}
.d2-results-media img{border-radius:14px;width:100%;}
.d2-results-caption{font-size:13px;font-weight:700;margin-top:14px;opacity:.75;text-align:center;}

/* ---------- TESTIMONIAL ---------- */
.d2-testimonial{background:var(--d2-black);text-align:center;}
.d2-quote{font-family:var(--d2-font-head);font-style:italic;font-weight:500;font-size:clamp(22px,3.4vw,38px);line-height:1.35;max-width:880px;margin:0 auto 28px;}
.d2-quote-by{color:var(--d2-muted);font-weight:700;font-size:15px;}
.d2-quote-by span{color:var(--d2-accent);}

/* ---------- GOOGLE REVIEWS ---------- */
.d2-google-reviews{background:var(--d2-black);padding:90px 0;flex-direction:column;justify-content:center;}
.d2-google-reviews-head{text-align:center;max-width:640px;margin:0 auto 44px;}
.d2-google-reviews-head .d2-h2{margin-bottom:18px;}
.d2-google-badge{display:inline-flex;align-items:center;gap:10px;background:rgba(255,255,255,.05);border:1px solid var(--d2-border);border-radius:40px;padding:10px 22px;}
.d2-google-badge img{width:18px;height:18px;display:block;}
.d2-google-badge-score{font-family:var(--d2-font-head);font-weight:700;font-size:17px;color:var(--d2-white);}
.d2-google-badge-stars{color:var(--d2-accent);font-size:12px;letter-spacing:2px;}
.d2-google-badge-count{color:var(--d2-muted);font-size:13px;}
.d2-review-carousel{position:relative;margin:0 -32px;}
.d2-review-grid{display:flex;gap:20px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;padding:10px 32px 20px;scrollbar-width:none;}
.d2-review-grid::-webkit-scrollbar{display:none;}
.d2-review-card{scroll-snap-align:start;flex:0 0 auto;width:300px;border-radius:22px;border:1px solid var(--d2-border);background-color:rgba(255,255,255,.03);padding:28px;transition:transform .3s ease,border-color .3s ease,background-color .3s ease;-webkit-tap-highlight-color:transparent;}
.d2-review-card:hover{transform:translateY(-6px);border-color:var(--d2-accent);background-color:rgba(255,255,255,.06);}
.d2-review-card-top{display:flex;align-items:center;gap:12px;margin-bottom:16px;}
.d2-review-avatar{flex:0 0 auto;width:44px;height:44px;border-radius:50%;background:var(--d2-accent);color:var(--d2-navy);display:flex;align-items:center;justify-content:center;font-weight:700;font-family:var(--d2-font-head);font-size:17px;}
.d2-review-name{font-weight:700;font-size:15px;color:var(--d2-white);margin:0 0 2px;}
.d2-review-stars{color:var(--d2-accent);font-size:11px;letter-spacing:2px;}
.d2-review-google-icon{margin-left:auto;width:18px;height:18px;flex:0 0 auto;}
.d2-review-text{color:var(--d2-muted);font-size:14.5px;line-height:1.6;margin:0;}
.d2-google-reviews-cta{text-align:center;margin-top:44px;}
@media(max-width:768px){
  .d2-google-reviews{padding:64px 0;}
  .d2-review-carousel{margin:0 -20px;}
  .d2-review-grid{padding:10px 20px 18px;gap:14px;}
  .d2-review-card{width:74vw;padding:22px;}
}

/* ---------- CLOSING CTA ---------- */
.d2-closing{background:var(--d2-navy);text-align:center;padding-top:110px;}
.d2-closing-word{font-family:var(--d2-font-head);font-weight:700;font-size:clamp(38px,9vw,132px);line-height:.94;letter-spacing:-.02em;margin:0 0 40px;}
.d2-closing-word em{font-style:italic;color:var(--d2-accent);}
.d2-closing-info{display:flex;flex-wrap:wrap;justify-content:center;gap:10px 34px;color:var(--d2-muted);font-size:14.5px;font-weight:600;margin-bottom:40px;}
.d2-closing-info i{color:var(--d2-accent);margin-right:8px;}

/* ---------- FOOTER ---------- */
.d2-footer{background:var(--d2-black);border-top:1px solid var(--d2-border);padding:24px 0;text-align:center;}
.d2-footer-inner{display:block;}
.d2-footer-copy{margin:0;font-size:13px;color:var(--d2-muted-2);}
.d2-footer-links{margin:6px 0 0;font-size:13px;color:var(--d2-muted-2);white-space:nowrap;}
.d2-footer-links a{color:var(--d2-muted);text-decoration:underline;transition:color .2s;}
.d2-footer-links a:hover{color:var(--d2-accent);}
.d2-footer-sep{color:var(--d2-muted-2);opacity:.5;margin:0 6px;}

/* ---------- REVEAL ANIM ---------- */
.d2-reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s ease;}
.d2-reveal.is-visible{opacity:1;transform:translateY(0);}

/* ---------- FULL-SCREEN SECTIONS (2026-08-26 round 2) ---------- */
.d2-hero,.d2-services,.d2-financing,.d2-split,.d2-testimonial,.d2-google-reviews,.d2-closing{
  min-height:100vh;
  min-height:100lvh;
  display:flex;
  align-items:center;
}
.d2-hero{min-height:calc(100lvh + env(safe-area-inset-bottom,0px));}
.d2-hero>.d2-container,.d2-services>.d2-container,.d2-financing>.d2-container,.d2-split>.d2-container,.d2-testimonial>.d2-container,.d2-google-reviews>.d2-container,.d2-closing>.d2-container{width:100%;}
.d2-closing{padding-top:0;flex-direction:column;justify-content:center;}
@media(max-width:992px){
  .d2-hero-overlay{background:linear-gradient(180deg,rgba(5,5,5,.98) 0%,rgba(5,5,5,.97) 40%,rgba(5,5,5,.96) 100%);}
  /* Bright spots in individual photos (white teeth model, light-blue bib, etc.)
     can still wash out text even under a dark overlay -- a fixed halo keeps the
     text readable no matter what's directly behind it at that point. */
  .d2-hero-content h1,.d2-hero-content .d2-hero-sub{text-shadow:0 2px 4px rgba(0,0,0,.9),0 4px 18px rgba(0,0,0,.75);}
}
@media(max-width:768px){.d2-marquee{display:none;}}
.d2-marquee{display:none !important;}

/* ---------- LEGAL / CONTENT PAGES (2026-08-27) ---------- */
body.d2 .d2-page-header{background:var(--d2-navy);text-align:center;padding:170px 0 20px;}
.d2-page-header .d2-h2{margin:0 0 20px;}
.d2-page-header .d2-section-sub{margin:0 auto 20px;text-align:center;}
.d2-breadcrumb{display:flex;justify-content:center;align-items:center;gap:8px;font-size:13px;color:var(--d2-muted-2);text-transform:uppercase;letter-spacing:.08em;}
.d2-breadcrumb a{color:var(--d2-muted);text-decoration:none;transition:color .2s;}
.d2-breadcrumb a:hover{color:var(--d2-accent);}
.d2-breadcrumb .current{color:var(--d2-white);}

/* ---------- SERVICES PAGE (grid, non-carousel) (2026-09-01) ---------- */
body.d2 .d2-page-header-black{background:var(--d2-black);}
body.d2 .d2-legal.d2-legal-black{background:var(--d2-black);}
body.d2 .d2-services-page{background:var(--d2-black);padding:56px 0 110px;}
.d2-services-page-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;max-width:1600px;margin:0 auto;padding:0 32px;}
/* .d2-service-card already carries aspect-ratio:4/5 (same ratio used by the Home
   services carousel) -- only the width needs overriding here, from the carousel's
   fixed 300px/74vw down to 100% of the grid column. Max-width above grew from
   1240px to 1600px so 4 cards still fit per row at this taller proportion. */
.d2-services-page-grid .d2-service-card{width:100%;}
@media(max-width:1180px){.d2-services-page-grid{grid-template-columns:repeat(3,1fr);}}
@media(max-width:860px){.d2-services-page-grid{grid-template-columns:repeat(2,1fr);gap:16px;padding:0 20px;}}
@media(max-width:520px){.d2-services-page-grid{grid-template-columns:1fr;}}

body.d2 .d2-legal{background:var(--d2-navy);padding:24px 0 120px;}
.d2-legal-wrap{max-width:820px;margin:0 auto;}
.d2-legal-meta{color:var(--d2-muted-2);font-size:14px;font-style:italic;margin:0 0 28px;}
body.d2 .d2-legal-intro p{color:var(--d2-muted);font-size:17px;line-height:1.75;margin:0 0 40px;}
.d2-legal-intro strong{color:var(--d2-white);}

.d2-legal-toc{background:var(--d2-navy-2);border:1px solid var(--d2-border);border-radius:20px;padding:28px 32px;margin:36px 0 56px;}
.d2-legal-toc .d2-eyebrow-alt{margin-bottom:16px;}
.d2-legal-toc ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:10px 28px;counter-reset:toc;}
.d2-legal-toc li{counter-increment:toc;}
.d2-legal-toc a{display:flex;gap:10px;color:var(--d2-muted);font-size:14.5px;text-decoration:none;line-height:1.4;transition:color .2s;}
.d2-legal-toc a::before{content:counter(toc)".";color:var(--d2-accent);font-weight:700;flex:0 0 auto;}
.d2-legal-toc a:hover{color:var(--d2-white);}

.d2-legal-section{scroll-margin-top:96px;}
.d2-legal-section+.d2-legal-section,.d2-legal-intro+.d2-legal-section{border-top:1px solid var(--d2-border);margin-top:40px;padding-top:40px;}
.d2-legal h4{font-family:var(--d2-font-head);font-weight:600;color:var(--d2-accent);font-size:23px;margin:0 0 16px;letter-spacing:-.01em;}
.d2-legal h5{color:var(--d2-white);font-weight:700;font-size:16.5px;margin:26px 0 8px;}
.d2-legal p{color:var(--d2-muted);font-size:16px;line-height:1.8;margin:0 0 14px;}
.d2-legal ul{margin:6px 0 18px 22px;padding:0;}
.d2-legal li{color:var(--d2-muted);font-size:16px;line-height:1.75;margin-bottom:6px;}
.d2-legal strong{color:var(--d2-white);}

.d2-legal-contact{margin-top:8px;}
.d2-legal-contact p{margin-bottom:6px;font-size:15.5px;}

.d2-legal-back{display:block;text-align:center;margin-top:64px;color:var(--d2-muted);font-size:13px;text-decoration:none;letter-spacing:.1em;text-transform:uppercase;font-weight:700;transition:color .2s;}
.d2-legal-back:hover{color:var(--d2-accent);}

/* Desktop only: give each service page's body text the same column width and
   centering as the Privacy/Terms/HIPAA pages (.d2-legal-wrap is 820px, margin
   auto there) instead of the narrower 620px/margin:0 set per-page for the
   sticky-hero layout, and justify the paragraphs like those pages. Higher
   specificity (html prefix) needed to beat the inline per-page <style> block,
   which loads later in the DOM. Mobile is intentionally left alone.*/
@media(min-width:769px){
  html body.d2 .d2-service-legal-wrap .d2-legal-wrap{max-width:820px;margin:0 auto;}
  .d2-service-legal-wrap .d2-legal-intro p{text-align:justify;}
  /* Hero (logo/title/intro paragraph) shares the same 820px column so its left
     edge lines up with the body text below; padding removed so the column's
     own edges match .d2-legal-wrap exactly (which has no padding of its own). */
  html body.d2 .d2-service-hero-text{max-width:820px;margin:0 auto;padding-left:0;padding-right:0;}
}

@media(max-width:768px){
  body.d2 .d2-page-header{padding:130px 0 16px;}
  .d2-footer-copy{font-size:10px;}
  .d2-footer-links{font-size:10px;margin-top:5px;}
  .d2-footer-sep{margin:0 3px;}
  body.d2 .d2-legal{padding:20px 0 90px;}
  .d2-legal-toc{padding:22px 20px;}
  .d2-legal-toc ol{grid-template-columns:1fr;}
  .d2-legal-section+.d2-legal-section,.d2-legal-intro+.d2-legal-section{margin-top:32px;padding-top:32px;}
  .d2-legal-contact{padding:0;}
}

/* burbuja del chat de Chatwoot (script cargado en _LayoutDesign2): el color
   se fija en Chatwoot (Settings > Inboxes) como un solo hex, pero el boton
   ".woot-widget-bubble" es un elemento normal de nuestra propia pagina (no
   vive dentro del iframe del chat), asi que si se puede pisar con el mismo
   degradado dorado que "Send Us a Message Right Here" (.d2-msg-submit) */
.woot-widget-bubble{background:linear-gradient(90deg,#E8A33D,#D97706) !important;}

/* clon visual de ".woot-widget-bubble" (ver _LayoutDesign2.cshtml) -- mismo
   tamano/posicion/color/icono, para que no se note el cambio cuando el SDK
   real de Chatwoot carga y toma su lugar tras el primer clic */
.d2-fake-bubble{position:fixed;bottom:20px;right:20px;width:64px;height:64px;border-radius:100px;border:none;cursor:pointer;background:linear-gradient(90deg,#E8A33D,#D97706);box-shadow:0 8px 24px rgba(0,0,0,.16);z-index:2147483000;display:flex;align-items:center;justify-content:center;transition:transform .15s ease;}
.d2-fake-bubble:hover{transform:scale(1.05);}

/* formulario propio que reemplaza la pantalla de pre-chat nativa de Chatwoot
   (ver _LayoutDesign2.cshtml) -- mismo estilo visual que "Send Us a Message
   Right Here" en Contact.cshtml (.d2-msg-form y relacionados), pero flotante
   en la esquina en vez de desplegarse dentro de la pagina, y sin campo de
   mensaje (el visitante escribe su primer mensaje ya dentro del chat real) */
.d2-chat-identify-overlay{display:none;position:fixed;bottom:20px;right:20px;z-index:2147483000;width:340px;max-width:calc(100vw - 40px);}
.d2-chat-identify-overlay.is-open{display:block;}
.d2-chat-identify-panel{background:#1F2937;border-radius:14px;box-shadow:0 8px 24px rgba(0,0,0,.35);overflow:hidden;}
.d2-chat-identify-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;background:linear-gradient(90deg,#E8A33D,#D97706);color:#1a1206;font-weight:600;}
.d2-chat-identify-close{background:none;border:none;font-size:22px;line-height:1;cursor:pointer;color:#1a1206;padding:0;}
.d2-chat-identify-form{padding:20px;text-align:left;}
.d2-chat-identify-row{margin-bottom:16px;}
.d2-chat-identify-row label{display:block;font-size:13px;color:var(--d2-muted);margin-bottom:6px;text-align:left;}
.d2-chat-identify-row input{width:100%;box-sizing:border-box;background:#111827;border:1px solid var(--d2-border);border-radius:10px;padding:11px 14px;color:#fff;font-size:15px;font-family:inherit;}
.d2-chat-identify-row input:focus{outline:none;border-color:var(--d2-accent);}
.d2-chat-identify-honeypot{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;}
.d2-chat-identify-submit{width:100%;background:linear-gradient(90deg,#E8A33D,#D97706);border:none;border-radius:12px;color:#111;font-weight:600;font-size:15px;padding:12px 22px;cursor:pointer;}
.d2-chat-identify-submit:disabled{opacity:.6;cursor:default;}
.d2-chat-identify-status{margin-top:14px;font-size:14px;}
.d2-chat-identify-status.ok{color:#4ade80;}
.d2-chat-identify-status.err{color:#ff8a8a;}
.d2-chat-identify-row.has-error input{border-color:#ff8a8a;}
.d2-chat-identify-field-error{display:none;font-size:12px;color:#ff8a8a;margin-top:6px;}
.d2-chat-identify-row.has-error .d2-chat-identify-field-error{display:block;}
.d2-chat-identify-either-error{display:none;font-size:12px;color:#ff8a8a;margin:-8px 0 16px;}
.d2-chat-identify-either-error.show{display:block;}

/* ===== Admin portal (Login / Dashboard / Staff / Advertisements / Admins) =====
   Reuses the same page-header + legal-section shell as About/Contact/Privacy, so
   admin pages don't introduce a second visual language. */
.d2-admin-alert{background:rgba(74,222,128,.12);border:1px solid rgba(74,222,128,.35);color:#4ade80;border-radius:12px;padding:14px 18px;font-size:14.5px;margin-bottom:28px;}
.d2-admin-alert.err{background:rgba(255,138,138,.12);border-color:rgba(255,138,138,.35);color:#ff8a8a;}

.d2-admin-login-box{max-width:420px;margin:0 auto;text-align:center;}
.d2-admin-login-box p{color:var(--d2-muted);font-size:15px;line-height:1.6;margin:0 0 32px;}
.d2-admin-login-buttons{display:flex;flex-direction:column;gap:14px;}
.d2-btn-provider{width:100%;background:var(--d2-navy-2);border:1px solid var(--d2-border);color:var(--d2-white);}
.d2-btn-provider:hover{border-color:var(--d2-accent);background:var(--d2-navy);}
.d2-btn-provider i{color:var(--d2-accent);font-size:17px;}

.d2-admin-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px;margin-top:8px;}
.d2-admin-card{display:block;background:var(--d2-navy-2);border:1px solid var(--d2-border);border-radius:16px;padding:26px 24px;text-decoration:none;transition:border-color .2s,transform .2s;}
.d2-admin-card:hover{border-color:var(--d2-accent);transform:translateY(-3px);}
.d2-admin-card i{color:var(--d2-accent);font-size:22px;margin-bottom:12px;display:block;}
.d2-admin-card h5{color:var(--d2-white);font-weight:700;font-size:16.5px;margin:0 0 6px;}
.d2-admin-card p{color:var(--d2-muted);font-size:13.5px;margin:0;line-height:1.5;}

.d2-admin-logout-row{margin-top:48px;text-align:center;}
.d2-btn-logout{border-color:rgba(255,138,138,.45);color:#ff8a8a;background:rgba(255,138,138,.08);}
.d2-btn-logout:hover{border-color:#ff8a8a;background:rgba(255,138,138,.16);}

.d2-admin-bar{display:flex;justify-content:flex-end;margin-bottom:24px;}

.d2-admin-table{width:100%;border-collapse:collapse;margin-bottom:8px;}
.d2-admin-table th{text-align:left;color:var(--d2-muted-2);font-size:12px;letter-spacing:.06em;text-transform:uppercase;font-weight:700;padding:0 14px 12px;border-bottom:1px solid var(--d2-border);}
.d2-admin-table td{padding:16px 14px;border-bottom:1px solid var(--d2-border);color:var(--d2-muted);font-size:14.5px;vertical-align:middle;}
.d2-admin-table td.name{color:var(--d2-white);font-weight:600;}
.d2-admin-table img{width:44px;height:44px;border-radius:8px;object-fit:cover;display:block;}
.d2-admin-table .d2-admin-empty{color:var(--d2-muted-2);padding:28px 14px;text-align:center;}
.d2-admin-table-actions{text-align:right;}
.d2-admin-table-actions a{color:var(--d2-accent);font-size:13px;font-weight:700;text-decoration:none;margin-right:16px;}
.d2-admin-table-actions a:hover{text-decoration:underline;}
.d2-admin-link-danger{color:#ff8a8a;font-size:13px;font-weight:700;background:none;border:none;cursor:pointer;font-family:inherit;}
.d2-admin-link-danger:hover{text-decoration:underline;}
.d2-admin-owner-badge{color:var(--d2-accent);font-size:12px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;cursor:help;}

.d2-admin-form{max-width:640px;}
.d2-admin-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 20px;}
@media(max-width:640px){.d2-admin-form-grid{grid-template-columns:1fr;}}
.d2-admin-form-grid .full{grid-column:1 / -1;}
.d2-admin-row{margin-bottom:0;}
.d2-admin-row label{display:block;font-size:13px;color:var(--d2-muted);margin-bottom:6px;}
.d2-admin-row input,.d2-admin-row textarea{width:100%;box-sizing:border-box;background:#111827;border:1px solid var(--d2-border);border-radius:10px;padding:11px 14px;color:#fff;font-size:15px;font-family:inherit;}
.d2-admin-row input:focus,.d2-admin-row textarea:focus{outline:none;border-color:var(--d2-accent);}
.d2-admin-row input[type=file]{padding:9px 14px;}
.d2-admin-row .field-error{display:block;font-size:12px;color:#ff8a8a;margin-top:6px;}
.d2-admin-actions{display:flex;gap:14px;margin-top:30px;}

/* ===== Switch reutilizable (accesibilidad + preferencias de cookies) ===== */
.d2-switch{position:relative;width:40px;height:22px;background:#111827;border:1px solid var(--d2-border);border-radius:20px;cursor:pointer;flex:0 0 auto;}
.d2-switch i{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--d2-white);transition:left .15s ease;}
.d2-switch.is-on{background:var(--d2-accent-dim);}
.d2-switch.is-on i{left:20px;}
.d2-switch.is-locked{cursor:default;opacity:.6;}

/* ===== Widget de accesibilidad ===== */
.d2-a11y-toggle{position:fixed;bottom:20px;left:20px;width:56px;height:56px;border-radius:100px;border:1px solid var(--d2-border);cursor:pointer;background:var(--d2-navy-2);box-shadow:0 8px 24px rgba(0,0,0,.35);z-index:2147483000;display:flex;align-items:center;justify-content:center;color:var(--d2-white);font-size:24px;transition:transform .15s ease,border-color .15s ease,bottom .2s ease;}
.d2-a11y-toggle:hover{transform:scale(1.05);border-color:var(--d2-accent);}
.d2-a11y-panel{position:fixed;bottom:84px;left:20px;width:270px;background:var(--d2-navy-2);border:1px solid var(--d2-border);border-radius:16px;padding:18px;box-shadow:0 24px 48px rgba(0,0,0,.45);z-index:2147483000;display:none;transition:bottom .2s ease;}
.d2-a11y-panel.is-open{display:block;}
.d2-a11y-panel h3{margin:0 0 14px;font-family:var(--d2-font-head);font-size:17px;color:var(--d2-white);}
.d2-a11y-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;}
.d2-a11y-row span{font-size:14px;color:var(--d2-muted);}
.d2-a11y-btn-group{display:flex;gap:6px;}
.d2-a11y-btn{background:#111827;border:1px solid var(--d2-border);color:var(--d2-white);border-radius:8px;width:30px;height:30px;cursor:pointer;font-size:14px;line-height:1;}
.d2-a11y-btn:hover{border-color:var(--d2-accent);}
.d2-a11y-reset{width:100%;background:transparent;border:1px solid var(--d2-border);color:var(--d2-muted);border-radius:8px;padding:8px;cursor:pointer;font-size:13px;margin-top:4px;}
.d2-a11y-reset:hover{border-color:var(--d2-accent);color:var(--d2-white);}

body.d2.d2-a11y-contrast{background:#000;color:#fff;}
body.d2.d2-a11y-contrast a{color:#ffe08a;}
body.d2.d2-a11y-contrast .d2-nav{background:#000;}
body.d2.d2-a11y-underline a{text-decoration:underline !important;}

/* ===== Aviso de cookies ===== */
.d2-cookie-banner{position:fixed;left:0;right:0;bottom:0;background:var(--d2-navy-2);border-top:1px solid var(--d2-border);z-index:2147483050;display:none;padding:18px 24px;}
.d2-cookie-banner.is-open{display:block;}
.d2-cookie-banner-inner{max-width:1240px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;}
.d2-cookie-banner-text h3{margin:0 0 4px;font-family:var(--d2-font-head);font-size:16px;color:var(--d2-white);}
.d2-cookie-banner-text p{margin:0;color:var(--d2-muted);font-size:13.5px;max-width:720px;}
.d2-cookie-banner-text a{color:var(--d2-accent);text-decoration:underline;}
.d2-cookie-banner-actions{display:flex;gap:10px;flex:0 0 auto;flex-wrap:wrap;}
.d2-cookie-btn{border-radius:30px;padding:10px 20px;font-size:13.5px;font-weight:600;cursor:pointer;border:1px solid var(--d2-border);background:transparent;color:var(--d2-white);white-space:nowrap;}
.d2-cookie-btn-accept{background:var(--d2-accent);color:var(--d2-navy);border-color:var(--d2-accent);}
.d2-cookie-btn-accept:hover{background:var(--d2-accent-dim);}
.d2-cookie-btn:hover{border-color:var(--d2-accent);}
@media(max-width:768px){.d2-cookie-banner{padding:16px;}.d2-cookie-banner-inner{flex-direction:column;align-items:stretch;gap:14px;}.d2-cookie-banner-actions{justify-content:flex-end;}}

body.d2-cookie-banner-open .d2-fake-bubble,
body.d2-cookie-banner-open .d2-a11y-toggle{bottom:calc(20px + var(--d2-cookie-banner-h,72px));}
body.d2-cookie-banner-open .d2-a11y-panel{bottom:calc(84px + var(--d2-cookie-banner-h,72px));}

/* Panel de preferencias detallado (categorias Essential/Analytics/Marketing) */
.d2-cookie-panel-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:2147483060;align-items:center;justify-content:center;padding:20px;}
.d2-cookie-panel-overlay.is-open{display:flex;}
.d2-cookie-panel{background:var(--d2-navy-2);border:1px solid var(--d2-border);border-radius:18px;max-width:460px;width:100%;padding:28px;box-shadow:0 24px 60px rgba(0,0,0,.5);}
.d2-cookie-panel h3{margin:0 0 8px;font-family:var(--d2-font-head);font-size:19px;color:var(--d2-white);}
.d2-cookie-panel>p{margin:0 0 20px;color:var(--d2-muted);font-size:13.5px;line-height:1.5;}
.d2-cookie-cat{border-top:1px solid var(--d2-border);padding:14px 0;}
.d2-cookie-cat-head{display:flex;align-items:center;justify-content:space-between;gap:14px;cursor:pointer;}
.d2-cookie-cat-head span{font-weight:600;color:var(--d2-white);font-size:14.5px;}
.d2-cookie-cat-desc{display:none;margin:10px 0 0;color:var(--d2-muted-2);font-size:12.5px;line-height:1.5;}
.d2-cookie-cat.is-expanded .d2-cookie-cat-desc{display:block;}
.d2-cookie-panel-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px;}
.d2-cookie-panel-actions .d2-cookie-btn{flex:1 1 auto;text-align:center;}
.d2-cookie-panel-close{position:absolute;top:16px;right:18px;background:none;border:none;color:var(--d2-muted);font-size:22px;cursor:pointer;line-height:1;}
.d2-cookie-panel{position:relative;}
