/* ============================================================
   TANDLÆGE TOMAS BJERRE ApS — Design System
   Palette: teal #0F6E6E + mint-white #EAF6F3 + warm white accent
   Fonts: Manrope (headings) + Inter (body)
   ============================================================ */

:root{
  --color-primary:#0F6E6E;
  --color-primary-dark:#0A5252;
  --color-primary-light:#3E9490;
  --color-mint:#EAF6F3;
  --color-mint-deep:#D9EEE9;
  --color-warm-white:#FFFCF7;
  --color-white:#FFFFFF;
  --color-text:#123333;
  --color-text-muted:#4E6B69;
  --color-border:#CFE7E2;
  --color-success:#1E8E5A;
  --color-error:#B3261E;
  --color-focus:#0F6E6E;

  --font-heading:'Manrope', sans-serif;
  --font-body:'Inter', sans-serif;

  --radius-sm:8px;
  --radius-md:14px;
  --radius-lg:24px;

  --shadow-sm:0 2px 8px rgba(15,110,110,0.08);
  --shadow-md:0 8px 24px rgba(15,110,110,0.12);
  --shadow-lg:0 16px 48px rgba(15,110,110,0.16);

  --space-1:4px;--space-2:8px;--space-3:16px;--space-4:24px;--space-5:32px;--space-6:48px;--space-7:64px;--space-8:96px;

  --container-max:1180px;
}

*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  font-family:var(--font-body);
  color:var(--color-text);
  background:var(--color-warm-white);
  font-size:16px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block;}
a{color:var(--color-primary);text-decoration:none;}
a:hover{text-decoration:underline;}
h1,h2,h3,h4{font-family:var(--font-heading);color:var(--color-text);line-height:1.2;margin:0 0 var(--space-3);font-weight:700;}
h1{font-size:clamp(2.1rem,4vw,3.4rem);font-weight:800;}
h2{font-size:clamp(1.7rem,3vw,2.4rem);}
h3{font-size:1.25rem;}
p{margin:0 0 var(--space-3);color:var(--color-text-muted);}
.container{max-width:var(--container-max);margin:0 auto;padding:0 var(--space-4);}
section{padding:var(--space-8) 0;}
.section-mint{background:var(--color-mint);}
.eyebrow{
  display:inline-block;font-family:var(--font-heading);font-weight:700;font-size:.8rem;
  letter-spacing:.08em;text-transform:uppercase;color:var(--color-primary);
  background:var(--color-mint-deep);padding:6px 14px;border-radius:999px;margin-bottom:var(--space-3);
}
.section-head{max-width:680px;margin:0 auto var(--space-6);text-align:center;}
.section-head p{font-size:1.05rem;}

/* Buttons */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  font-family:var(--font-heading);font-weight:700;font-size:1rem;
  padding:14px 28px;border-radius:999px;border:2px solid transparent;
  cursor:pointer;transition:transform .15s ease, box-shadow .15s ease, background .2s ease;
  min-height:48px;
}
.btn-primary{background:var(--color-primary);color:#fff;box-shadow:var(--shadow-sm);}
.btn-primary:hover{background:var(--color-primary-dark);transform:translateY(-2px);box-shadow:var(--shadow-md);text-decoration:none;}
.btn-outline{background:transparent;border-color:var(--color-primary);color:var(--color-primary);}
.btn-outline:hover{background:var(--color-mint-deep);text-decoration:none;}
.btn:disabled{opacity:.6;cursor:not-allowed;transform:none;}
.btn:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,button:focus-visible,textarea:focus-visible{
  outline:3px solid var(--color-focus);outline-offset:2px;
}

/* Header */
.site-header{
  position:sticky;top:0;z-index:100;background:rgba(255,252,247,0.92);backdrop-filter:blur(8px);
  border-bottom:1px solid var(--color-border);
}
.header-inner{display:flex;align-items:center;justify-content:space-between;padding:14px 0;}
.brand{display:flex;align-items:center;gap:10px;font-family:var(--font-heading);font-weight:800;font-size:1.15rem;color:var(--color-text);}
.brand img{width:38px;height:38px;}
.brand span{display:block;}
.brand small{display:block;font-family:var(--font-body);font-weight:500;font-size:.7rem;color:var(--color-text-muted);}
.main-nav ul{display:flex;gap:var(--space-4);list-style:none;margin:0;padding:0;}
.main-nav a{color:var(--color-text);font-weight:600;font-size:.95rem;white-space:nowrap;}
.main-nav a:hover{color:var(--color-primary);text-decoration:none;}
.header-cta{display:flex;align-items:center;gap:var(--space-3);}
.nav-toggle{display:none;background:none;border:none;cursor:pointer;padding:8px;}
.nav-toggle span{display:block;width:24px;height:2px;background:var(--color-text);margin:5px 0;}

/* Hero split */
.hero{padding:var(--space-8) 0;background:linear-gradient(180deg,var(--color-mint) 0%, var(--color-warm-white) 100%);}
.hero-inner{display:grid;grid-template-columns:1.1fr 1fr;gap:var(--space-7);align-items:center;}
.hero-text h1{margin-bottom:var(--space-3);}
.hero-lead{font-size:1.15rem;color:var(--color-text-muted);max-width:520px;}
.hero-actions{display:flex;gap:var(--space-3);margin-top:var(--space-5);flex-wrap:wrap;}
.hero-trust{display:flex;gap:var(--space-5);margin-top:var(--space-6);flex-wrap:wrap;}
.hero-trust-item{display:flex;flex-direction:column;}
.hero-trust-item strong{font-family:var(--font-heading);font-size:1.4rem;color:var(--color-primary);}
.hero-trust-item span{font-size:.85rem;color:var(--color-text-muted);}
.hero-visual{position:relative;}
.hero-visual img{width:100%;height:auto;display:block;border-radius:var(--radius-lg);object-fit:cover;aspect-ratio:4/3;}

/* Om + Kontakt combined section */
.about-contact{display:grid;grid-template-columns:1.1fr .9fr;gap:var(--space-7);align-items:start;}
.about-text .doctor-row{display:flex;gap:var(--space-4);align-items:center;margin:var(--space-4) 0;padding:var(--space-3);background:var(--color-mint);border-radius:var(--radius-md);}
.doctor-photo{width:72px;height:72px;border-radius:50%;flex-shrink:0;background:var(--color-primary);display:flex;align-items:center;justify-content:center;color:#fff;font-family:var(--font-heading);font-weight:800;font-size:1.3rem;}
.contact-card{background:var(--color-white);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden;border:1px solid var(--color-border);}
.contact-card .map-embed{width:100%;height:220px;border:0;display:block;}
.contact-list{list-style:none;margin:0;padding:var(--space-4);display:grid;gap:var(--space-3);}
.contact-list li{display:flex;gap:12px;align-items:flex-start;}
.contact-list .ic{width:38px;height:38px;flex-shrink:0;border-radius:10px;background:var(--color-mint);display:flex;align-items:center;justify-content:center;color:var(--color-primary);}
.contact-list strong{display:block;font-size:.85rem;color:var(--color-text-muted);font-weight:600;}
.contact-list span, .contact-list a{font-weight:600;color:var(--color-text);}
.hours-table{width:100%;border-collapse:collapse;font-size:.9rem;margin-top:var(--space-2);}
.hours-table td{padding:4px 0;color:var(--color-text-muted);}
.hours-table td:last-child{text-align:right;font-weight:600;color:var(--color-text);}

/* Ydelser cards */
.services-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4);}
.service-card{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4);box-shadow:var(--shadow-sm);transition:transform .2s ease, box-shadow .2s ease;}
.service-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md);}
.service-icon{width:48px;height:48px;border-radius:12px;background:var(--color-mint);display:flex;align-items:center;justify-content:center;color:var(--color-primary);margin-bottom:var(--space-3);}

/* Why us */
.why-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-4);}
.why-item{display:flex;gap:var(--space-3);padding:var(--space-4);background:var(--color-white);border-radius:var(--radius-md);border:1px solid var(--color-border);}
.why-item .num{font-family:var(--font-heading);font-weight:800;color:var(--color-primary-light);font-size:1.6rem;}

/* Booking widget */
.booking{background:var(--color-white);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);border:1px solid var(--color-border);padding:var(--space-6);max-width:760px;margin:0 auto;}
.progress-bar{display:flex;gap:8px;margin-bottom:var(--space-5);}
.progress-step{flex:1;height:6px;border-radius:4px;background:var(--color-mint-deep);}
.progress-step.active{background:var(--color-primary);}
.step-label{font-size:.85rem;color:var(--color-text-muted);margin-bottom:var(--space-4);font-weight:600;}
.form-step{display:none;}
.form-step.active{display:block;animation:fadeIn .3s ease;}
@keyframes fadeIn{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:translateY(0);}}
.visit-type-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3);}
.visit-card{position:relative;}
.visit-card input{position:absolute;opacity:0;}
.visit-card label{
  display:block;padding:var(--space-4);border:2px solid var(--color-border);border-radius:var(--radius-md);
  cursor:pointer;transition:all .15s ease;background:var(--color-mint);
}
.visit-card label strong{display:block;font-family:var(--font-heading);margin-bottom:4px;}
.visit-card label span{font-size:.85rem;color:var(--color-text-muted);}
.visit-card input:checked + label{border-color:var(--color-primary);background:var(--color-mint-deep);box-shadow:0 0 0 3px rgba(15,110,110,.15);}
.visit-card input:focus-visible + label{outline:3px solid var(--color-focus);outline-offset:2px;}

.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);margin-bottom:var(--space-3);}
.form-field{margin-bottom:var(--space-3);}
.form-field label{display:block;font-weight:600;font-size:.9rem;margin-bottom:6px;}
.form-field input,.form-field select,.form-field textarea{
  width:100%;padding:12px 14px;border:1.5px solid var(--color-border);border-radius:var(--radius-sm);
  font-family:var(--font-body);font-size:1rem;background:var(--color-warm-white);color:var(--color-text);
  min-height:48px;
}
.form-field input:focus,.form-field select:focus,.form-field textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(15,110,110,.15);}
.form-field.has-error input,.form-field.has-error select{border-color:var(--color-error);}
.field-error{color:var(--color-error);font-size:.82rem;margin-top:4px;display:none;font-weight:600;}
.form-field.has-error .field-error{display:block;}
.form-nav{display:flex;justify-content:space-between;margin-top:var(--space-5);gap:var(--space-3);}
.form-disclaimer{font-size:.82rem;color:var(--color-text-muted);margin-top:var(--space-4);}
.consent-row{display:flex;gap:10px;align-items:flex-start;margin:var(--space-3) 0;}
.consent-row input{margin-top:4px;}
.consent-row label{font-size:.88rem;color:var(--color-text-muted);}

.btn-spinner{display:none;width:18px;height:18px;border:2.5px solid rgba(255,255,255,.5);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;}
.btn.loading .btn-spinner{display:inline-block;}
.btn.loading .btn-text{opacity:.7;}
@keyframes spin{to{transform:rotate(360deg);}}

.form-success{display:none;text-align:center;padding:var(--space-6) 0;}
.form-success.active{display:block;}
.form-success .check-icon{width:64px;height:64px;border-radius:50%;background:var(--color-mint);color:var(--color-success);display:flex;align-items:center;justify-content:center;margin:0 auto var(--space-4);}

/* FAQ */
.faq-list{max-width:820px;margin:0 auto;}
.faq-item{border-bottom:1px solid var(--color-border);}
.faq-question{
  width:100%;text-align:left;background:none;border:none;padding:var(--space-4) 0;
  display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);
  font-family:var(--font-heading);font-weight:700;font-size:1.05rem;color:var(--color-text);cursor:pointer;
}
.faq-question .plus{flex-shrink:0;font-size:1.4rem;color:var(--color-primary);transition:transform .2s ease;}
.faq-item.open .plus{transform:rotate(45deg);}
.faq-answer{max-height:0;overflow:hidden;transition:max-height .3s ease;}
.faq-item.open .faq-answer{max-height:400px;}
.faq-answer p{padding-bottom:var(--space-4);}

/* Disclaimer box */
.disclaimer-box{background:var(--color-mint);border-left:4px solid var(--color-primary);border-radius:var(--radius-sm);padding:var(--space-4);font-size:.92rem;color:var(--color-text-muted);}

/* Footer */
.site-footer{background:var(--color-primary-dark);color:#DDEDEA;padding:var(--space-7) 0 var(--space-5);}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:var(--space-5);}
.footer-grid h4{color:#fff;font-size:.95rem;margin-bottom:var(--space-3);}
.footer-grid ul{list-style:none;margin:0;padding:0;display:grid;gap:8px;}
.footer-grid a{color:#CDE6E1;font-size:.92rem;}
.footer-grid a:hover{color:#fff;}
.footer-brand p{color:#B9D8D3;font-size:.9rem;}
.footer-bottom{border-top:1px solid rgba(255,255,255,.15);margin-top:var(--space-6);padding-top:var(--space-4);display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;font-size:.85rem;color:#AFD1CC;}

/* Cookie banner */
.cookie-banner{
  position:fixed;bottom:0;left:0;right:0;background:var(--color-white);border-top:1px solid var(--color-border);
  box-shadow:0 -8px 24px rgba(0,0,0,.08);z-index:999;padding:var(--space-4);display:none;
}
.cookie-banner.visible{display:block;}
.cookie-inner{max-width:var(--container-max);margin:0 auto;display:flex;gap:var(--space-4);align-items:center;flex-wrap:wrap;justify-content:space-between;}
.cookie-text{flex:1;min-width:260px;font-size:.9rem;color:var(--color-text-muted);}
.cookie-actions{display:flex;gap:10px;flex-wrap:wrap;}
.cookie-settings-panel{display:none;max-width:var(--container-max);margin:var(--space-4) auto 0;background:var(--color-mint);border-radius:var(--radius-md);padding:var(--space-4);}
.cookie-settings-panel.visible{display:block;}
.cookie-category{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--color-border);}
.cookie-category:last-child{border-bottom:none;}
.cookie-category strong{display:block;}
.cookie-category p{margin:0;font-size:.85rem;}

/* Legal pages */
.legal-page{padding:var(--space-7) 0;}
.legal-page .container{max-width:820px;}
.legal-page h2{margin-top:var(--space-6);}
.legal-page ul{color:var(--color-text-muted);}
.legal-updated{color:var(--color-text-muted);font-size:.9rem;margin-bottom:var(--space-5);}

/* Thank you */
.thankyou-hero{text-align:center;padding:var(--space-8) 0;}
.thankyou-hero .check-icon{width:88px;height:88px;margin:0 auto var(--space-4);border-radius:50%;background:var(--color-mint);color:var(--color-primary);display:flex;align-items:center;justify-content:center;}
.next-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4);max-width:900px;margin:var(--space-6) auto 0;}
.next-step{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4);text-align:left;}
.next-step .num{font-family:var(--font-heading);font-weight:800;color:var(--color-primary);font-size:1.3rem;}

/* Responsive */
@media (max-width:900px){
  .hero-inner,.about-contact{grid-template-columns:1fr;}
  .hero-visual{order:-1;}
  .services-grid{grid-template-columns:repeat(2,1fr);}
  .why-grid{grid-template-columns:1fr;}
  .footer-grid{grid-template-columns:1fr 1fr;}
  .next-steps{grid-template-columns:1fr;}
}
@media (max-width:920px){
  .main-nav{display:none;position:absolute;top:100%;left:0;right:0;background:var(--color-warm-white);border-bottom:1px solid var(--color-border);padding:var(--space-4);}
  .main-nav.open{display:block;}
  .main-nav ul{flex-direction:column;gap:var(--space-3);}
  .nav-toggle{display:block;}
  .header-cta .btn-outline{display:none;}
  .services-grid{grid-template-columns:1fr;}
  .form-row,.visit-type-grid{grid-template-columns:1fr;}
  .footer-grid{grid-template-columns:1fr;}
  .hero-trust{gap:var(--space-4);}
  .booking{padding:var(--space-4);}
}

@media (prefers-reduced-motion:reduce){
  *{animation-duration:0.01ms !important;transition-duration:0.01ms !important;}
}

/* Responsive safety net — long unbreakable strings (email/phone) must not force horizontal overflow */
a[href^="mailto:"], a[href^="tel:"] { overflow-wrap: anywhere; }
body { overflow-wrap: break-word;  overflow-x: hidden; }

/* Codex containment patch: preserves the site's original max-width tokens. */
.brand-mark {
  width: 48px;
  height: 48px;
  object-fit: contain;
  flex: 0 0 48px;
}

:where(main, section, article, footer, header, nav, form, dl, div) {
  min-width: 0;
}

:where(img, video, iframe, svg) {
  max-width: 100%;
}

.skip,
.skip-link {
  position: absolute;
  left: 0;
  top: 0;
  transform: translateY(-140%);
}

.skip:focus,
.skip-link:focus {
  transform: translateY(0);
}

a[href^="mailto:"],
a[href^="tel:"],
dd,
.value,
.contact-tile,
.footer-col,
.verified-company-facts {
  overflow-wrap: anywhere;
}

.legal-content,
.legal-page,
.disclaimer-content,
.privacy-content,
.terms-content,
.cookie-content,
.section,
.hero,
.thankyou-hero {
  min-width: 0;
  overflow-wrap: anywhere;
}

table {
  width: 100%;
  min-width: 0 !important;
  table-layout: fixed;
}

th,
td {
  overflow-wrap: anywhere;
}

.table-wrap,
.legal-table-wrap {
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

@media (max-width: 1040px) {
  header nav:not(.mobile-open),
  header .main-nav:not(.mobile-open) {
    display: none;
  }
}

@media (max-width: 480px) {
  header {
    padding-left: 12px;
    padding-right: 12px;
  }

  .container {
    padding-left: 16px;
    padding-right: 16px;
  }

  .btn,
  button,
  #navToggle,
  #nav-toggle,
  .nav-toggle {
    max-width: calc(100vw - 24px);
    white-space: normal;
    right: 12px !important;
    overflow: hidden;
  }

  #navToggle span,
  #nav-toggle span,
  .nav-toggle span {
    max-width: 24px;
  }

  .contact-card-overlay,
  .hero-badge,
  .floating-card,
  .testimonial-card {
    position: static !important;
    transform: none !important;
    width: 100% !important;
    max-width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
}

/* OVERFLOW SAFETY — email token repair (real email longer than {{COMPANY_EMAIL}} placeholder) */
.email-token, .value, dd, .fact-list dd, .contact-tile span, .contact-tile a { overflow-wrap: anywhere; word-break: break-word; }

li, .hero-figure li, .contact-tile, .fact-list dd { min-width: 0; }
