:root{
  /* Brand palette sampled from `assets_images/logo.png` */
  --dv-ink:#0b222a;
  --dv-ink-2:#113646;
  --dv-muted:#4f6a76;
  --dv-white:#ffffff;
  --dv-bg:#f5fbff;
  --dv-bg-2:#e9f6ff;
  --dv-accent:#3591b0;
  --dv-accent-2:#74b6d4;
  --dv-accent-hover:#2b7e9a;
  --dv-accent-2-hover:#74b6d4;
  --dv-danger:#dc3545;
  --dv-radius:18px;
  --dv-shadow:0 18px 50px rgba(9,35,49,.18);
  --dv-shadow-soft:0 12px 30px rgba(9,35,49,.12);
  --dv-border:1px solid rgba(255,255,255,.28);

  /* Theme-controlled backgrounds */
  --dv-body-bg:
    radial-gradient(1200px 700px at 20% 10%, rgba(116,182,212,.18), transparent 60%),
    radial-gradient(900px 600px at 90% 20%, rgba(53,145,176,.14), transparent 55%),
    linear-gradient(180deg, var(--dv-bg), var(--dv-bg-2));
  --dv-topbar-bg: rgba(245,251,255,.72);
  --dv-topbar-border: 1px solid rgba(53,145,176,.10);

  --dv-hero-bg-image: url("../../../assets_images/style.jpg");
  --dv-hero-bg-filter: saturate(1.1);
  --dv-hero-overlay-bg:
    radial-gradient(980px 560px at 18% 8%, rgba(255,255,255,.92), rgba(255,255,255,.58) 58%, rgba(245,251,255,.16) 100%),
    linear-gradient(180deg, rgba(245,251,255,.28), rgba(245,251,255,.92));

  --dv-section-alt-bg:
    radial-gradient(1100px 600px at 10% 10%, rgba(53,145,176,.10), transparent 55%),
    radial-gradient(1000px 600px at 90% 40%, rgba(116,182,212,.14), transparent 55%),
    linear-gradient(180deg, rgba(255,255,255,.65), rgba(255,255,255,.35));
}

html{scroll-behavior:smooth}
body{
  background: var(--dv-body-bg);
  color:var(--dv-ink);
}
.dv-page{min-height:100vh}

.dv-topbar{
  position:sticky; top:0; z-index:50;
  backdrop-filter:saturate(1.2) blur(10px);
  background: var(--dv-topbar-bg);
  border-bottom: var(--dv-topbar-border);
}
.dv-brand{
  font-weight:800;
  letter-spacing:.2px;
}
.dv-brand-empty{width:1px; padding:0; margin:0}
.dv-logo-brand{height:30px;width:auto;object-fit:contain}
.dv-logo-sm{width:28px;height:28px;object-fit:contain}
.dv-logo{height:26px;object-fit:contain}
.navbar .nav-link{color:rgba(11,36,48,.78)}
.navbar .nav-link:hover{color:rgba(11,36,48,1)}

.dv-theme-switch{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  align-items:center;
  justify-content:flex-end;
}
.dv-theme-switch .btn.active{
  border-color: rgba(11,36,48,.22) !important;
  box-shadow: 0 0 0 .25rem rgba(53,145,176,.16), var(--dv-shadow-soft);
}

.btn-dv-primary{
  color:#fff !important;
  background-color:var(--dv-accent);
  background-image:linear-gradient(135deg,var(--dv-accent),var(--dv-accent-2));
  border:0;
  box-shadow:0 12px 25px rgba(30,160,216,.25);
}
.btn-dv-primary:hover,
.btn-dv-primary:focus{
  color:#fff !important;
  background-color:var(--dv-accent-hover);
  background-image:linear-gradient(135deg,var(--dv-accent-hover),var(--dv-accent-2-hover));
}
.btn-dv-primary:focus{
  box-shadow:0 0 0 .25rem rgba(30,160,216,.28), 0 12px 25px rgba(30,160,216,.25);
}
.btn-dv-ghost{
  --bs-btn-color:var(--dv-ink);
  --bs-btn-bg:rgba(255,255,255,.65);
  --bs-btn-border-color:rgba(11,36,48,.12);
  --bs-btn-hover-color:var(--dv-ink);
  --bs-btn-hover-bg:rgba(255,255,255,.9);
  --bs-btn-hover-border-color:rgba(11,36,48,.16);
  border:1px solid rgba(11,36,48,.12);
  box-shadow:var(--dv-shadow-soft);
}

.dv-hero{
  position:relative;
  padding:86px 0 54px;
  overflow:hidden;
}
.dv-hero-course{padding-bottom:42px}
.dv-hero-bg{
  position:absolute; inset:-1px;
  background-image: var(--dv-hero-bg-image);
  background-size:cover;
  background-position:center;
  filter: var(--dv-hero-bg-filter);
}
.dv-hero-overlay{
  position:absolute; inset:0;
  background: var(--dv-hero-overlay-bg);
}
.dv-hero-content{position:relative; z-index:2}
.dv-h1{
  font-weight:900;
  letter-spacing:-.7px;
  line-height:1.02;
  font-size:clamp(2.05rem, 1.35rem + 2.35vw, 3.2rem);
  text-shadow:0 1px 0 rgba(255,255,255,.65);
}

.dv-h1-title{
    color: var(--dv-accent);
}
.dv-h1-accent{
    display: block;
    color: var(--dv-accent-hover);
    text-shadow: 0px 1px 7px rgba(255, 255, 255, .75), 0px 6px 5px rgb(11 36 48 / 20%);
}
.dv-h2{
  font-weight:900;
  letter-spacing:-.4px;
  font-size:clamp(1.5rem, 1.05rem + 1.1vw, 2.1rem);
}
.dv-lead{
  color:rgba(17,54,70,.86);
  font-size:1.1rem;
}
.dv-text{color:rgba(17,54,70,.86); font-size:1.03rem}
.dv-price-inline{
  display:inline-block;
  padding:.12rem .55rem;
  border-radius:999px;
  background:rgba(255,255,255,.65);
  border:1px solid rgba(11,36,48,.08);
  box-shadow:var(--dv-shadow-soft);
}

.dv-pill{
  display:inline-flex; align-items:center; gap:.55rem;
  padding:.5rem .75rem;
  border-radius:999px;
  background:rgba(255,255,255,.58);
  border:1px solid rgba(11,36,48,.10);
  box-shadow:0 10px 25px rgba(9,35,49,.10);
  color:rgba(11,36,48,.80);
}
.dv-dot{
  width:10px; height:10px; border-radius:999px;
  background:linear-gradient(135deg,var(--dv-accent),var(--dv-accent-2));
  box-shadow:0 0 0 4px rgba(79,212,217,.18);
}

.dv-hero-card{
  border-radius:var(--dv-radius);
  background:rgba(255,255,255,.60);
  border:var(--dv-border);
  box-shadow:var(--dv-shadow);
  padding:18px;
}
.dv-hero-card-title{font-weight:900; color:rgba(11,36,48,.88)}
.dv-mini-course{
  padding:12px;
  border-radius:14px;
  background:rgba(255,255,255,.62);
  border:1px solid rgba(11,36,48,.08);
  box-shadow:0 10px 18px rgba(9,35,49,.08);
  margin-bottom:10px;
}
.dv-mini-title{font-weight:800; line-height:1.15}
.dv-mini-meta{color:rgba(90,115,128,.95); font-size:.92rem}
.dv-mini-desc{color:rgba(17,54,70,.86); font-size:.95rem; line-height:1.25}
.dv-mini-price{font-weight:900; color:rgba(11,36,48,.88)}

.dv-stats{display:flex; gap:12px; flex-wrap:wrap}
.dv-stat{
  min-width:160px;
  padding:12px 14px;
  border-radius:16px;
  background:rgba(255,255,255,.55);
  border:1px solid rgba(11,36,48,.08);
  box-shadow:0 12px 20px rgba(9,35,49,.10);
}
.dv-stat-num{font-weight:900; font-size:1.1rem}
.dv-stat-label{color:rgba(90,115,128,.95); font-size:.9rem}

.dv-section{padding:64px 0}
.dv-section-alt{
  background: var(--dv-section-alt-bg);
  border-top:1px solid rgba(11,36,48,.06);
  border-bottom:1px solid rgba(11,36,48,.06);
}

.dv-card, .dv-course{
  border-radius:var(--dv-radius);
  background:rgba(255,255,255,.72);
  border:1px solid rgba(11,36,48,.08);
  box-shadow:var(--dv-shadow-soft);
  padding:18px;
  transition:transform .18s ease, box-shadow .18s ease;
}
.dv-card:hover, .dv-course:hover{transform:translateY(-3px); box-shadow:var(--dv-shadow)}
.dv-card-title, .dv-course-title{font-weight:900; letter-spacing:-.2px}
.dv-card-text{color:rgba(90,115,128,.98)}
.dv-course-meta{color:rgba(90,115,128,.95); font-size:.92rem}
.dv-course-desc{color:rgba(17,54,70,.86); min-height:3.4em}
.dv-course-price{font-weight:900; font-size:1.15rem}

.dv-glass{
  border-radius:var(--dv-radius);
  background:rgba(255,255,255,.62);
  border:var(--dv-border);
  box-shadow:var(--dv-shadow);
  padding:18px;
}
.dv-glass-lg{padding:22px}
.dv-glass-title{font-weight:900}
.dv-glass-note{color:rgba(90,115,128,.95); font-size:.95rem}
.dv-chip{font-weight:900}
.dv-chip-sub{color:rgba(90,115,128,.95); font-size:.92rem}

.dv-checks{display:grid; gap:10px}
.dv-check{
  padding:10px 12px;
  border-radius:14px;
  background:rgba(255,255,255,.62);
  border:1px solid rgba(11,36,48,.08);
  box-shadow:0 10px 18px rgba(9,35,49,.06);
}

.dv-accordion .accordion-item{
  border-radius:16px;
  overflow:hidden;
  border:1px solid rgba(11,36,48,.10);
  background:rgba(255,255,255,.7);
  box-shadow:var(--dv-shadow-soft);
  margin-bottom:10px;
}
.dv-accordion .accordion-button{font-weight:800}
.dv-accordion .accordion-button:not(.collapsed){background:rgba(79,212,217,.14)}

.dv-contact{display:grid; gap:12px}
.dv-contact-item{
  padding:14px 16px;
  border-radius:16px;
  background:rgba(255,255,255,.72);
  border:1px solid rgba(11,36,48,.08);
  box-shadow:var(--dv-shadow-soft);
}
.dv-contact-label{color:rgba(90,115,128,.95); font-size:.9rem}
.dv-contact-value{font-weight:900}

.dv-footer{padding:16px 0; border-top:1px solid rgba(11,36,48,.06)}

.dv-empty{
  border-radius:var(--dv-radius);
  padding:18px;
  background:rgba(255,255,255,.75);
  border:1px dashed rgba(11,36,48,.18);
}
.dv-empty-title{font-weight:900}
.dv-empty-text{color:rgba(90,115,128,.95)}

.dv-unavailable{
  border-radius:var(--dv-radius);
  padding:24px;
  background:rgba(255,255,255,.82);
  border:1px solid rgba(11,36,48,.10);
  box-shadow:var(--dv-shadow);
}
.dv-unavailable-title{font-weight:900; font-size:1.6rem}
.dv-unavailable-text{color:rgba(90,115,128,.98)}

/* Teachers */
.dv-teacher{
  border-radius:var(--dv-radius);
  background:rgba(255,255,255,.72);
  border:1px solid rgba(11,36,48,.08);
  box-shadow:var(--dv-shadow-soft);
  padding:16px;
}
.dv-teacher-top{position:relative}
.dv-teacher-img{
  width:100%;
  aspect-ratio:3 / 4;
  height:auto;
  object-fit:cover;
  border-radius:16px;
  border:1px solid rgba(11,36,48,.08);
  background:rgba(17,54,70,.06);
}
.dv-img-fallback{
  display:block;
}
.dv-teacher-placeholder{
  background:
    radial-gradient(600px 260px at 20% 10%, rgba(79,212,217,.20), transparent 55%),
    radial-gradient(480px 240px at 90% 30%, rgba(30,160,216,.18), transparent 55%),
    linear-gradient(180deg, rgba(255,255,255,.85), rgba(255,255,255,.55));
}
.dv-teacher-badge{
  position:absolute; left:12px; bottom:12px;
  padding:.35rem .6rem;
  border-radius:999px;
  background:rgba(255,255,255,.70);
  border:1px solid rgba(11,36,48,.10);
  font-weight:800;
  font-size:.92rem;
}
.dv-teacher-name{font-weight:900}

/* Materials */
.dv-block-title{font-weight:900; letter-spacing:-.2px}
.dv-banner{
  width:100%;
  border:none;
  border-radius:16px;
  overflow:hidden;
  background:rgba(255,255,255,.75);
  border:1px solid rgba(11,36,48,.10);
  box-shadow:var(--dv-shadow-soft);
  padding:0;
  text-align:left;
  transition:transform .18s ease, box-shadow .18s ease;
}
.dv-banner:hover{transform:translateY(-2px); box-shadow:var(--dv-shadow)}
.dv-banner-fallback{
  width:100%;
  height:150px;
  background:
    radial-gradient(520px 220px at 30% 10%, rgba(79,212,217,.22), transparent 55%),
    radial-gradient(520px 220px at 80% 30%, rgba(30,160,216,.18), transparent 55%),
    linear-gradient(180deg, rgba(255,255,255,.92), rgba(255,255,255,.62));
}
.dv-banner img{width:100%; height:150px; object-fit:cover; display:block}
.dv-banner-cap{
  display:block;
  padding:10px 12px;
  font-weight:800;
  font-size:.92rem;
  color:rgba(11,36,48,.86);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

/* Big banner rail (300x600 frames) */
.dv-banner-rail-wrap{
  border-radius:var(--dv-radius);
  background:rgba(255,255,255,.55);
  border:1px solid rgba(11,36,48,.08);
  box-shadow:var(--dv-shadow-soft);
  padding:14px;
}
.dv-banner-rail{
  --dv-banner-w: 300px;
  --dv-banner-h: 600px;
  display:flex;
  gap:14px;
  overflow-x:auto;
  padding:2px 2px 10px;
  scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch;
}
.dv-banner-rail::-webkit-scrollbar{height:10px}
.dv-banner-rail::-webkit-scrollbar-thumb{background:rgba(11,36,48,.18); border-radius:999px}
.dv-banner-card{
  flex:0 0 auto;
  width: min(var(--dv-banner-w), 78vw);
  border:0;
  background:transparent;
  padding:0;
  text-align:left;
  scroll-snap-align:start;
}
.dv-banner-frame{
  width:100%;
  height: min(var(--dv-banner-h), 72vh);
  border-radius:18px;
  overflow:hidden;
  background:rgba(255,255,255,.78);
  border:1px solid rgba(11,36,48,.10);
  box-shadow:var(--dv-shadow-soft);
  position:relative;
}
.dv-banner-frame .dv-banner-fallback{
  height:100%;
  border-radius:0;
}
.dv-banner-img{
  width:100%;
  height:100%;
  object-fit:contain;
  display:block;
  background:rgba(255,255,255,.92);
}
.dv-banner-meta{
  padding:10px 6px 0;
}
.dv-banner-title{
  font-weight:900;
  line-height:1.15;
  color:rgba(11,36,48,.90);
  word-break:break-word;
}
.dv-banner-sub{
  color:rgba(90,115,128,.95);
  font-size:.92rem;
}
.dv-rail-btn{white-space:nowrap}

.dv-modal-imgwrap-banner{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:10px;
}
.dv-modal-imgwrap-banner .dv-modal-img{
  max-height:80vh;
  width:auto;
  max-width:100%;
  height:auto;
}
.dv-carousel-caption{
  text-align:center;
}

.dv-modal .modal-header{border-bottom:1px solid rgba(11,36,48,.10)}
.dv-modal{border-radius:18px}
.dv-modal-imgwrap{
  background:rgba(17,54,70,.05);
  border-radius:16px;
  overflow:hidden;
  border:1px solid rgba(11,36,48,.08);
}
.dv-modal-fallback{
  width:100%;
  min-height:280px;
  background:
    radial-gradient(700px 320px at 30% 10%, rgba(79,212,217,.18), transparent 55%),
    radial-gradient(700px 320px at 80% 30%, rgba(30,160,216,.14), transparent 55%),
    linear-gradient(180deg, rgba(255,255,255,.92), rgba(255,255,255,.62));
}
.dv-modal-imgwrap img{width:100%; height:auto; display:block}

.dv-files .dv-file{background:rgba(255,255,255,.72); border:1px solid rgba(11,36,48,.10)}
.dv-file-title{font-weight:900}
.dv-file-meta{color:rgba(90,115,128,.95); font-size:.85rem}
.dv-note{
  padding:10px 12px;
  border-radius:14px;
  background:rgba(30,160,216,.08);
  border:1px solid rgba(30,160,216,.12);
  color:rgba(17,54,70,.90);
}

/* Sticky CTA */
.dv-sticky-cta{
  position:fixed; left:12px; right:12px; bottom:12px;
  display:none;
  z-index:60;
}
.dv-sticky-cta .btn{width:100%}
@media (max-width: 991.98px){
  .dv-sticky-cta{display:block}
  .dv-hero{padding-top:74px}
}

@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  .dv-card,.dv-course,.dv-banner{transition:none}
}

/* ===== Porcelain Overrides (variant-specific) ===== */
body.dv-project-porcelain{
  background:
    radial-gradient(1100px 700px at 15% 12%, rgba(138,216,230,.22), transparent 58%),
    radial-gradient(900px 600px at 85% 20%, rgba(47,143,176,.10), transparent 56%),
    repeating-linear-gradient(0deg, rgba(12,42,54,.040) 0px, rgba(12,42,54,.040) 1px, transparent 1px, transparent 22px),
    repeating-linear-gradient(90deg, rgba(12,42,54,.040) 0px, rgba(12,42,54,.040) 1px, transparent 1px, transparent 22px),
    linear-gradient(180deg, #f9feff, #edf9ff);
  color:#0c2a36;
}
body.dv-project-porcelain{
  --dv-ink:#0c2a36;
  --dv-ink-2:#113646;
  --dv-muted:#496671;
  --dv-accent:#2f8fb0;
  --dv-accent-2:#8ad8e6;
  --dv-accent-hover:#247a97;
  --dv-accent-2-hover:#76ccdc;
  --dv-radius:20px;
  --dv-shadow:0 22px 60px rgba(8,35,46,.14);
  --dv-shadow-soft:0 14px 34px rgba(8,35,46,.09);
  --dv-border:1px solid rgba(12,42,54,.10);

  --dv-topbar-bg: rgba(249,254,255,.92);
  --dv-topbar-border: 1px solid rgba(12,42,54,.08);

  --dv-hero-bg-image:
    radial-gradient(900px 520px at 20% 15%, rgba(138,216,230,.32), transparent 62%),
    radial-gradient(900px 520px at 88% 18%, rgba(47,143,176,.14), transparent 66%),
    linear-gradient(180deg, #ffffff, #effaff);
  --dv-hero-bg-filter: none;
  --dv-hero-overlay-bg:
    radial-gradient(980px 560px at 16% 10%, rgba(255,255,255,.72), rgba(255,255,255,.40) 58%, rgba(249,254,255,.08) 100%),
    linear-gradient(180deg, rgba(255,255,255,.10), rgba(249,254,255,.78));

  --dv-section-alt-bg:
    radial-gradient(1000px 600px at 12% 10%, rgba(138,216,230,.18), transparent 58%),
    radial-gradient(900px 600px at 88% 40%, rgba(47,143,176,.10), transparent 60%),
    linear-gradient(180deg, rgba(255,255,255,.74), rgba(255,255,255,.42));
}

body.dv-project-porcelain .btn-dv-primary{
  background-image:none;
  background-color:var(--dv-accent);
  box-shadow:0 12px 22px rgba(47,143,176,.20);
}
body.dv-project-porcelain .btn-dv-primary:hover,
body.dv-project-porcelain .btn-dv-primary:focus{
  background-image:none;
  background-color:var(--dv-accent-hover);
}

body.dv-project-porcelain .dv-h1{
  text-shadow:none;
}
body.dv-project-porcelain .dv-h1-title{color:rgba(12,42,54,.96)}
body.dv-project-porcelain .dv-h1-accent{color:var(--dv-accent); text-shadow:0 1px 0 rgba(255,255,255,.75)}

/* Animation: wipe + blur (distinct) */
html.aos-init body.dv-project-porcelain [data-aos]{
  opacity:0;
  transform:none !important;
  filter: blur(10px);
  clip-path: inset(0 0 100% 0);
  transition:
    opacity 900ms cubic-bezier(.2,.8,.2,1),
    clip-path 900ms cubic-bezier(.2,.8,.2,1),
    filter 900ms cubic-bezier(.2,.8,.2,1);
}
html.aos-init body.dv-project-porcelain [data-aos].aos-animate{
  opacity:1;
  filter:none;
  clip-path: inset(0 0 0 0);
}

/* Make porcelain VANTA very visible (overlay is lighter, canvas is stronger) */
body.dv-project-porcelain #heroVanta canvas,
body.dv-project-porcelain #pageVanta canvas{
  opacity:1;
  mix-blend-mode: normal !important;
  filter: saturate(1.05) contrast(1.10);
}
body.dv-project-porcelain #heroVanta,
body.dv-project-porcelain #pageVanta{
  /* Let the x-ray canvas be the main hero texture, keep a slight film tint underneath. */
  background-image:
    radial-gradient(900px 520px at 55% 35%, rgba(7,18,24,.10), transparent 62%),
    linear-gradient(180deg, #ffffff, #effaff) !important;
}
body.dv-project-porcelain .dv-hero-overlay{
  /* Do not wash out the x-ray effect. */
  opacity:.12;
}

/* Full-page VANTA surface for Porcelain */
body.dv-project-porcelain .dv-page-vanta{
  position:fixed;
  inset:0;
  z-index:0;
  pointer-events:none;
}
body.dv-project-porcelain header,
body.dv-project-porcelain main{
  position:relative;
  z-index:1;
}
body.dv-project-porcelain .dv-hero-bg{
  /* Keep the reference image as a faint layer, but let the scan read clearly. */
  opacity:.10;
}
