/* DOT Global Forum theme */
:root{--primary:#263238;--secondary:#37474F;--accent:#78909C;--light:#ECEFF1;--cta:#00ACC1;--white:#fff;--off-white:#ECEFF1;--gray-100:#e8edf5;--gray-200:#d0d8e4;--gray-400:#7a8699;--gray-600:#4a5568;--gray-800:#1a2332;--success:#1a7f4e;--info:#2e6da4;--font-sans:"Rubik",system-ui,sans-serif;--font-display:"Spectral",Georgia,serif;--container:72rem;--header-h:4.5rem;--radius:8px;--shadow:0 4px 14px rgba(0,0,0,.1);--ease:.2s ease}
*,*::before,*::after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:var(--font-sans);font-size:1.0625rem;line-height:1.7;color:var(--gray-800);background:var(--white);-webkit-font-smoothing:antialiased}
img,svg{display:block;max-width:100%;height:auto}h1,h2,h3,h4{font-family:var(--font-display);font-weight:600;line-height:1.15;color:var(--primary);margin-top:0}
h1{font-size:clamp(2rem,4.5vw,3rem)}h2{font-size:clamp(1.5rem,3vw,2.1rem)}p{margin:0 0 1rem}a{color:var(--secondary)}a:hover{color:var(--cta)}
.container{width:min(100% - 2rem,var(--container));margin-inline:auto}.section{padding:4rem 0}.section-alt{background:var(--off-white)}.section-dark{background:var(--primary);color:var(--white)}.section-dark h2,.section-dark h3{color:var(--white)}.section-dark p{color:rgba(255,255,255,.88)}
.section-header{max-width:42rem;margin-bottom:2.5rem}.section-header.centered{margin-inline:auto;text-align:center}.section-label{display:inline-block;font-size:.72rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--cta);margin-bottom:.65rem}
.skip-link{position:absolute;left:-9999px;top:0;z-index:10000;background:var(--cta);color:var(--primary);padding:.5rem 1rem;font-weight:600}.skip-link:focus{left:1rem;top:1rem}
.site-header{position:sticky;top:0;z-index:1000;background:var(--white);border-bottom:1px solid var(--gray-200)}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:var(--header-h)}
.logo{display:flex;align-items:center;gap:.75rem;text-decoration:none;color:var(--primary)}.logo-text{display:flex;flex-direction:column;line-height:1.2}.logo-text strong{font-family:var(--font-display);font-size:1.15rem}.logo-text small{font-size:.62rem;color:var(--gray-600);font-weight:600;letter-spacing:.12em;text-transform:uppercase}
.nav-toggle{display:none;flex-direction:column;gap:5px;width:2.5rem;height:2.5rem;padding:0;border:0;background:transparent;cursor:pointer}.nav-toggle span{display:block;width:1.5rem;height:2px;background:var(--primary)}
.site-subnav{background:var(--off-white);border-top:1px solid var(--gray-200);border-bottom:1px solid var(--gray-200)}.subnav-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap}.subnav-list a{display:block;padding:.85rem .65rem;text-decoration:none;color:var(--gray-800);font-weight:500;font-size:13px;border-bottom:2px solid transparent;white-space:nowrap}.subnav-list a:hover,.subnav-list a.active{color:var(--primary);background:rgba(0,0,0,.04);border-bottom-color:var(--cta)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.65rem 1.25rem;border-radius:var(--radius);font-weight:600;text-decoration:none;border:2px solid transparent;cursor:pointer;transition:all var(--ease)}
.btn-primary{background:var(--primary);color:var(--white)}.btn-primary:hover{background:var(--secondary);color:var(--white)}.btn-cta{background:var(--cta);color:var(--white)}.btn-cta:hover{filter:brightness(.92);color:var(--white)}.btn-outline{background:transparent;border-color:var(--primary);color:var(--primary)}.btn-outline:hover{background:var(--primary);color:var(--white)}.btn-outline-light{background:transparent;border-color:rgba(255,255,255,.6);color:#fff}.btn-partner{background:var(--secondary);color:var(--white);font-size:.9rem}.btn-lg{padding:.85rem 1.5rem}.btn-xl{padding:1rem 1.75rem}.btn-group{display:flex;flex-wrap:wrap;gap:1rem;align-items:center}
.breadcrumbs{background:var(--off-white);border-bottom:1px solid var(--gray-200);font-size:.875rem}.breadcrumbs ol{list-style:none;margin:0;padding:.75rem 0;display:flex;flex-wrap:wrap;gap:.35rem}.breadcrumbs li:not(:last-child)::after{content:"/";margin-left:.35rem;color:var(--gray-400)}
.hero{background:linear-gradient(135deg,var(--primary),var(--secondary));color:var(--white);padding:4rem 0 5rem}.hero h1,.hero h2{color:var(--white)}.hero-lead{font-size:1.12rem;max-width:40rem;color:rgba(255,255,255,.92)}.hero-inner{display:grid;grid-template-columns:1.2fr 1fr;gap:2.5rem;align-items:center}.hero-badges{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.badge{font-size:.75rem;font-weight:600;padding:.35rem .65rem;border-radius:999px;background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.3)}
.hero-card{background:var(--white);color:var(--gray-800);border-radius:12px;padding:1.75rem;box-shadow:var(--shadow)}.hero-card h2{color:var(--primary);font-size:1.3rem}
.page-hero{background:linear-gradient(120deg,var(--primary),var(--secondary));color:var(--white);padding:3rem 0}.page-hero h1{color:var(--white)}.page-hero .lead{font-size:1.1rem;max-width:42rem;color:rgba(255,255,255,.92)}
.feature-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.5rem}.feature-card{background:var(--white);border:1px solid var(--gray-200);border-radius:var(--radius);padding:1.5rem;box-shadow:0 2px 8px rgba(0,0,0,.05)}.feature-icon{font-size:1.75rem;margin-bottom:.75rem}
.stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1rem;text-align:center}.stat-item{background:var(--white);border-radius:var(--radius);padding:1.25rem;border:1px solid var(--gray-200)}.stat-number{display:block;font-family:var(--font-display);font-size:2rem;font-weight:600;color:var(--cta)}.stat-label{font-size:.875rem;color:var(--gray-600)}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:2.5rem;align-items:start}.compare-table{width:100%;border-collapse:collapse;background:var(--white);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.compare-table thead{background:var(--primary);color:var(--white)}.compare-table th,.compare-table td{padding:.85rem 1rem;text-align:left;border-bottom:1px solid var(--gray-200)}
.partner-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.25rem}.partner-card{background:var(--white);border:1px solid var(--gray-200);border-radius:var(--radius);padding:1.25rem;display:flex;flex-direction:column;gap:.5rem}.partner-tag{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--cta)}.partner-card .btn{margin-top:auto;align-self:flex-start}
.permit-strip{background:var(--primary);color:var(--white);padding:.75rem 0;overflow-x:auto}.permit-strip-inner{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.permit-strip-label{font-weight:700;font-size:.85rem;margin-right:.5rem}.permit-chip{display:inline-block;padding:.35rem .65rem;border-radius:999px;background:rgba(255,255,255,.15);color:var(--white);text-decoration:none;font-size:.78rem;white-space:nowrap}.permit-chip:hover{background:var(--cta)}
.testimonial-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.5rem}.testimonial-card{margin:0;padding:1.5rem;background:var(--white);border:1px solid var(--gray-200);border-radius:var(--radius)}.testimonial-quote{font-style:italic}
.faq-list{max-width:48rem;margin-inline:auto;display:flex;flex-direction:column;gap:.75rem}.faq-item{border:1px solid var(--gray-200);border-radius:var(--radius);background:var(--white);overflow:hidden}.faq-question{width:100%;text-align:left;border:0;background:var(--off-white);padding:1rem 1.25rem;font:inherit;font-weight:600;color:var(--primary);cursor:pointer;display:flex;justify-content:space-between}.faq-question::after{content:"+";color:var(--cta);font-size:1.25rem}.faq-item.open .faq-question::after{content:"−"}.faq-answer{max-height:0;overflow:hidden;transition:max-height .25s ease}.faq-item.open .faq-answer{max-height:30rem}.faq-answer p{padding:0 1.25rem 1rem;margin:0;color:var(--gray-600)}
.cta-block{background:var(--secondary);color:var(--white);text-align:center;padding:4rem 0}.cta-block h2{color:var(--white)}.cta-banner{background:linear-gradient(90deg,var(--cta),var(--accent));padding:2.5rem 0}.cta-banner-inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1.5rem}.cta-banner-text h2{color:var(--primary)}
.checklist{list-style:none;padding:0}.checklist li{position:relative;padding-left:1.75rem;margin-bottom:.65rem}.checklist li::before{content:"✓";position:absolute;left:0;color:var(--cta);font-weight:700}
.process-steps{list-style:none;padding:0;margin:0;display:grid;gap:1rem}.process-steps li{padding:1.25rem 1.25rem 1.25rem 3.5rem;position:relative;background:var(--white);border:1px solid var(--gray-200);border-radius:var(--radius)}.process-steps li::before{content:counter(step);counter-increment:step;position:absolute;left:1rem;top:1.1rem;width:1.75rem;height:1.75rem;border-radius:50%;background:var(--primary);color:var(--white);font-weight:700;font-size:.85rem;display:flex;align-items:center;justify-content:center}.process-steps{counter-reset:step}
.alert{padding:1rem 1.25rem;border-radius:var(--radius);margin-bottom:1rem;border-left:4px solid var(--info);background:rgba(46,109,164,.08)}.contact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.5rem}.contact-card{background:var(--white);border:1px solid var(--gray-200);border-radius:var(--radius);padding:1.5rem}
.site-footer{background:var(--primary);color:rgba(255,255,255,.85);padding:3rem 0 0}.footer-grid{display:grid;grid-template-columns:1.5fr repeat(3,1fr);gap:2rem;padding-bottom:2rem}.footer-links h3{color:var(--white);font-size:1rem}.footer-links ul{list-style:none;padding:0;margin:0}.footer-links a{color:rgba(255,255,255,.8);text-decoration:none;font-size:.9rem}.footer-links a:hover{color:var(--accent)}.footer-bottom{border-top:1px solid rgba(255,255,255,.12);padding:1rem 0 1.5rem;display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem;font-size:.85rem}.back-to-top{color:var(--accent);text-decoration:none;font-weight:600}

@media(max-width:768px){.nav-toggle{display:flex}.btn-header{display:none}.site-subnav{display:none}.site-subnav.open{display:block}.subnav-list{flex-direction:column}.hero-inner,.two-col,.footer-grid{grid-template-columns:1fr}.cta-banner-inner{flex-direction:column}.compare-table{display:block;overflow-x:auto}}

/* Contrast fixes — readable text on all card/surface blocks */

/* Cards always use dark body text (fixes white-on-white in .section-dark) */
.testimonial-card,
.feature-card,
.stat-item,
.partner-card,
.contact-card,
.faq-item,
.alert,
.process-steps li,
.hero-card,
.compare-table tbody td {
  color: var(--gray-800);
}

.feature-card h3,
.partner-card h3,
.contact-card h3,
.stat-item .stat-number {
  color: var(--primary);
}

.feature-card p,
.partner-card p,
.contact-card p,
.stat-item .stat-label,
.testimonial-card .testimonial-quote {
  color: var(--gray-600);
}

.testimonial-card cite {
  color: var(--primary);
  font-style: normal;
  font-weight: 600;
}

.testimonial-card footer {
  color: var(--gray-600);
  font-size: 0.875rem;
  margin-top: 0.75rem;
}

/* Dark sections: keep headings light, cards stay light-surface + dark text */
.section-dark .section-header h2,
.section-dark .section-header h3,
.section-dark > .container > h2 {
  color: var(--white);
}

.section-dark .section-header p {
  color: rgba(255, 255, 255, 0.88);
}

.section-dark .section-label {
  color: var(--cta);
}

.section-dark .testimonial-card,
.section-dark .feature-card,
.section-dark .stat-item,
.section-dark .partner-card,
.section-dark .info-block,
.section-dark .compare-table {
  background: var(--white);
  color: var(--gray-800);
  border-color: var(--gray-200);
}

.section-dark .testimonial-card .testimonial-quote,
.section-dark .feature-card p,
.section-dark .partner-card p {
  color: var(--gray-600);
}

.section-dark .feature-card h3,
.section-dark .partner-card h3,
.section-dark .testimonial-card cite {
  color: var(--primary);
}

.section-dark .stat-number {
  color: var(--secondary);
}

/* CTA banner — ensure paragraph readable on gradient */
.cta-banner-text p {
  color: var(--gray-800);
  margin: 0;
}

.cta-block p {
  color: rgba(255, 255, 255, 0.92);
}

/* CTA & action buttons — white text on solid brand color */
.btn-cta,
.btn-cta:hover {
  background: var(--secondary);
  color: #fff !important;
  font-weight: 600;
  border: none;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.14);
}

.btn-cta:hover {
  background: var(--primary);
  filter: none;
  transform: translateY(-1px);
}

.btn-partner,
.btn-partner:hover {
  background: var(--primary);
  color: #fff !important;
}

.btn-partner:hover {
  background: var(--secondary);
}

.btn-group {
  gap: 0.75rem;
  margin-top: 1.25rem;
}

.btn-group .btn-cta {
  margin: 0;
}

/* Permit strip chips stay white on dark strip */
.permit-strip,
.permit-strip .permit-chip {
  color: var(--white);
}

/* Compare table links in content */
.compare-table a {
  color: var(--secondary);
  font-weight: 600;
}

.compare-table a:hover {
  color: var(--primary);
}

/* FAQ answers */
.faq-answer p {
  color: var(--gray-600);
}

/* Page hero keeps light text; inner cards if any stay dark text */
.page-hero .feature-card,
.page-hero .stat-item {
  color: var(--gray-800);
}

.hero-card,
.hero-card p,
.hero-card li {
  color: var(--gray-800);
}

.hero-card h2 {
  color: var(--primary);
}

.section-alt .feature-card,
.section-alt .testimonial-card,
.section-alt .stat-item {
  background: var(--white);
}


/* Callback widget */
.callback-fab {
  position: fixed;
  bottom: 1.25rem;
  right: 1.25rem;
  z-index: 9998;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.8rem 1.15rem;
  min-height: 3rem;
  border-radius: 999px;
  border: 0;
  background: var(--secondary);
  color: #fff;
  font-family: var(--font-sans);
  font-size: 0.9rem;
  font-weight: 600;
  line-height: 1;
  white-space: nowrap;
  cursor: pointer;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.22);
  transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}

.callback-fab:hover {
  background: var(--primary);
  color: #fff;
  transform: translateY(-2px);
  box-shadow: 0 6px 24px rgba(0, 0, 0, 0.28);
}

.callback-fab-icon {
  font-size: 1.15rem;
  line-height: 1;
  flex-shrink: 0;
}

.callback-fab-label {
  white-space: nowrap;
  line-height: 1;
}

.callback-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.55);
  z-index: 9999;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.25s ease, visibility 0.25s;
}

.callback-overlay.open {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.callback-modal {
  position: fixed;
  left: 50%;
  bottom: 0;
  z-index: 10000;
  width: min(calc(100% - 2rem), 24rem);
  max-height: 90vh;
  overflow-y: auto;
  box-sizing: border-box;
  background: var(--white);
  border-radius: 14px 14px 0 0;
  box-shadow: 0 -12px 40px rgba(0, 0, 0, 0.22);
  transform: translate(-50%, 100%);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: transform 0.3s ease, opacity 0.3s, visibility 0.3s;
  padding: 1.5rem 1.5rem 1.75rem;
}

.callback-modal.open {
  transform: translate(-50%, 0);
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

@media (min-width: 640px) {
  .callback-modal {
    bottom: auto;
    top: 50%;
    border-radius: 14px;
    transform: translate(-50%, -50%) scale(0.96);
    max-height: 85vh;
  }
  .callback-modal.open {
    transform: translate(-50%, -50%) scale(1);
  }
}

body.modal-open {
  overflow: hidden;
}

.callback-modal h3 {
  margin: 0 2rem 0.35rem 0;
  color: var(--primary);
  font-size: 1.2rem;
}

.callback-intro {
  font-size: 0.9rem;
  color: var(--gray-600);
  margin: 0 0 1.1rem;
  line-height: 1.5;
}

.callback-hint {
  font-size: 0.78rem;
  color: var(--gray-400);
  margin: -0.15rem 0 0.85rem;
  line-height: 1.4;
}

.callback-form label {
  display: block;
  font-weight: 600;
  font-size: 0.875rem;
  margin-bottom: 0.3rem;
  color: var(--gray-800);
}

.callback-form .req {
  color: var(--secondary);
}

.callback-form .opt {
  font-weight: 400;
  color: var(--gray-400);
  font-size: 0.8rem;
}

.callback-form input,
.callback-form textarea {
  width: 100%;
  box-sizing: border-box;
  padding: 0.7rem 0.85rem;
  border: 1px solid var(--gray-200);
  border-radius: var(--radius);
  font: inherit;
  margin-bottom: 0.85rem;
  transition: border-color 0.2s;
  color: var(--gray-800);
  background: #fff;
}

.callback-form textarea {
  min-height: 5.5rem;
  resize: vertical;
}

.callback-form input:focus,
.callback-form textarea:focus {
  outline: none;
  border-color: var(--secondary);
  box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.06);
}

.callback-form .callback-submit {
  background: var(--secondary);
  color: #fff !important;
}

.callback-form .callback-submit:hover {
  background: var(--primary);
  color: #fff !important;
}

.callback-close {
  position: absolute;
  top: 0.65rem;
  right: 0.65rem;
  width: 2rem;
  height: 2rem;
  border: 0;
  border-radius: 50%;
  background: var(--off-white);
  font-size: 1.35rem;
  line-height: 1;
  cursor: pointer;
  color: var(--gray-600);
  display: flex;
  align-items: center;
  justify-content: center;
}

.callback-close:hover {
  background: var(--gray-200);
}

.callback-status {
  min-height: 1.35rem;
  margin-top: 0.65rem;
  font-size: 0.875rem;
  font-weight: 500;
  line-height: 1.4;
}

.callback-status--success {
  color: var(--success);
  padding: 0.65rem 0.85rem;
  background: rgba(26, 127, 78, 0.1);
  border-radius: var(--radius);
  border-left: 3px solid var(--success);
}

.callback-status--error {
  color: #c0392b;
  padding: 0.65rem 0.85rem;
  background: rgba(192, 57, 43, 0.08);
  border-radius: var(--radius);
  border-left: 3px solid #c0392b;
}

@media (max-width: 639px) {
  .callback-fab-label {
    display: none;
  }
  .callback-fab {
    width: 3.25rem;
    height: 3.25rem;
    padding: 0;
    border-radius: 50%;
  }
}
