/* TechDental v10 polish layer.
   One type system, one phone-number style, mobile fixes.
   Loaded after styles.css, v4.css and spatial.css. Rules are scoped with
   ".spatial-site:not(#_)" so they win over the older, more specific selectors
   without !important. */

@font-face{font-family:'Manrope';font-style:normal;font-weight:200 800;font-display:swap;src:url(/manrope.woff2) format('woff2')}
@font-face{font-family:'DM Sans';font-style:normal;font-weight:100 1000;font-display:swap;src:url(/dm-sans.woff2) format('woff2')}

:root{
  --f-display:'Manrope',ui-sans-serif,system-ui,-apple-system,'Segoe UI',Arial,sans-serif;
  --f-body:'DM Sans',ui-sans-serif,system-ui,-apple-system,'Segoe UI',Arial,sans-serif;
  /* Type scale: phone value -> desktop value */
  --t-hero:clamp(46px,6.4vw,90px);
  --t-h1:clamp(38px,4.4vw,60px);
  --t-h2-xl:clamp(36px,4.8vw,68px);
  --t-h2:clamp(30px,3vw,44px);
  --t-h3:clamp(20px,1.6vw,24px);
  --t-row:clamp(20px,1.8vw,26px);
  --t-lead:clamp(16px,1.25vw,18px);
  --t-body:16px;
  --t-small:13px;
  --t-label:12px;
  --t-button:15px;
  --t-phone:16px;
}

html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
a,button,summary{-webkit-tap-highlight-color:transparent}
img{max-width:100%;height:auto}

/* ---------- Typography ---------- */
.spatial-site:not(#_) :is(h1,h2,h3,h4){font-family:var(--f-display);text-wrap:balance}
.spatial-site:not(#_) :is(p,li){text-wrap:pretty}
.spatial-site:not(#_) :is(strong,b){font-weight:600}

/* Page titles */
.spatial-site:not(#_) h1{font-size:var(--t-h1);font-weight:500;line-height:1.04;letter-spacing:-.035em}
.spatial-site:not(#_) .hero h1,
.spatial-site:not(#_) .intro-content :is(h1,h2){font-size:var(--t-hero);font-weight:500;line-height:1;letter-spacing:-.045em}

/* Section headings */
.spatial-site:not(#_) h2{font-size:var(--t-h2);font-weight:500;line-height:1.1;letter-spacing:-.03em}
.spatial-site:not(#_) :is(.new-title,.contact-banner) h2{font-size:var(--t-h2-xl);line-height:1.02;letter-spacing:-.04em}
.spatial-site:not(#_) .legal h2{font-size:clamp(22px,2vw,26px);letter-spacing:-.02em;line-height:1.2}

/* Sub-headings and list titles */
.spatial-site:not(#_) h3{font-size:var(--t-h3);font-weight:600;line-height:1.25;letter-spacing:-.015em}
.spatial-site:not(#_) .service-row :is(h2,h3){font-size:var(--t-row);font-weight:600;line-height:1.2;letter-spacing:-.02em}
.spatial-site:not(#_) .service-body aside h3{font-size:clamp(24px,2vw,28px)}

/* Body text */
.spatial-site:not(#_) :is(.hero-copy>p,.service-summary,.request-intro>p:not(.eyebrow),.intro-copy>p:not(.eyebrow)){font-size:var(--t-lead);line-height:1.65}
.spatial-site:not(#_) :is(.service-body p,.legal p,.approach-list p,.plan-list p,.faq-list p,.section-heading>p){font-size:var(--t-body);line-height:1.7}

/* Small uppercase labels: one size everywhere */
.spatial-site:not(#_) .eyebrow.eyebrow,
.spatial-site:not(#_) .request-panel legend,
.spatial-site:not(#_) .request-expect>span{font-family:var(--f-body);font-size:var(--t-label);font-weight:600;line-height:1.6;letter-spacing:.14em;text-transform:uppercase}
.spatial-site:not(#_) .service-row .eyebrow.eyebrow{font-size:11px}

/* Buttons and text links */
.spatial-site:not(#_) :is(.button,.intro-enter){font-family:var(--f-body);font-size:var(--t-button);font-weight:600;letter-spacing:0}
.spatial-site:not(#_) .quiet-link{font-size:15px}

/* ---------- Phone numbers: one style everywhere ---------- */
.spatial-site:not(#_) a[href^="tel:"]{font-family:var(--f-body);font-size:var(--t-phone);font-weight:600;letter-spacing:0;font-variant-numeric:tabular-nums;white-space:nowrap}
.spatial-site:not(#_) a[href^="tel:"] *{font:inherit;letter-spacing:inherit}
.spatial-site:not(#_) p a[href^="tel:"]{font-size:inherit}
.spatial-site:not(#_) .quiet-link[href^="tel:"]{white-space:normal}
.spatial-site:not(#_) :is(.hero-phones,.banner-phones,.phone-pair){display:flex;flex-wrap:wrap;gap:8px 28px}
.spatial-site:not(#_) .phone-pair{margin-top:18px}
.spatial-site:not(#_) .aside-phone{display:block;margin-top:12px}
.spatial-site:not(#_) .aside-phone+.aside-phone{margin-top:6px}

/* ---------- Lists without numbers ---------- */
.spatial-site:not(#_) .service-row{grid-template-columns:minmax(0,1.4fr) minmax(0,.85fr) 48px}
@media(max-width:900px){.spatial-site:not(#_) .service-row{grid-template-columns:minmax(0,1.4fr) minmax(0,.7fr) 44px}}
@media(max-width:820px){.spatial-site:not(#_) .service-row{grid-template-columns:minmax(0,1fr) 44px}}
@media(max-width:600px){.spatial-site:not(#_) .service-row{grid-template-columns:minmax(0,1fr) 40px}}

/* ---------- Fixes ---------- */
.spatial-site:not(#_) .hours-list{margin:8px 0 14px;display:grid;gap:0;max-width:520px}
.spatial-site:not(#_) .hours-list>div{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid #d0dddd}
.spatial-site:not(#_) .hours-list dt{font-weight:600}
.spatial-site:not(#_) .hours-list dd{margin:0;text-align:right;color:var(--muted,#47636d);font-variant-numeric:tabular-nums}
.spatial-site:not(#_) .footer-address{display:block;font-size:14px;line-height:1.5;opacity:.85}
.spatial-site:not(#_) footer a[href^="mailto:"]{font-size:15px;font-weight:600}
.spatial-site:not(#_) .banner-phones{justify-content:flex-start}
.spatial-site:not(#_) .footer-bottom>div{display:flex;align-items:center;flex-wrap:wrap;gap:8px 20px}
.spatial-site:not(#_) .footer-bottom button{font:inherit;line-height:inherit;padding:0;margin:0}
.intro-dialog:focus{outline:none}
/* Old sticky offset (top:150px) leaked into the stacked layout. */
.request-intro{top:auto}

@media(max-width:900px){
  .scene-hero .label-connect{left:4%}
  .scene-hero .label-protect{right:4%}
  .scene-hero .label-simplify{left:10%}
}

/* Phones and tablets: bottom call/chat bar instead of floating pills. */
@media(max-width:820px){
  .contact-ribbon{display:none}
  body:not(.route-intro){padding-bottom:calc(72px + env(safe-area-inset-bottom,0px))}
  .floating-tools{
    left:0;right:0;bottom:0;
    display:grid;grid-template-columns:1fr 1fr;gap:8px;
    padding:10px 14px calc(10px + env(safe-area-inset-bottom,0px));
    background:#031a24;border-top:1px solid #9af4df2e;
    filter:none;box-shadow:0 -10px 30px #00121a40;
  }
  .spatial-site:not(#_) :is(.floating-call,.chat-launcher){width:100%;min-height:48px;font-size:16px;padding:10px 12px;box-shadow:none;gap:8px}
  .floating-call{background:#e6f9f0;border-color:#e6f9f0}
  .floating-call>span:first-child{display:none}
  .chat-launcher{background:#0d3c45;border-color:#2b6670}
  .spatial-site:not(#_) :is(.floating-call,.chat-launcher){white-space:nowrap;padding-inline:8px}
  .chat-panel{bottom:calc(80px + env(safe-area-inset-bottom,0px));max-height:calc(100dvh - 100px)}
  .spatial-site:not(#_) h1{letter-spacing:-.03em}
  .spatial-site:not(#_) .hero h1,.spatial-site:not(#_) .intro-content :is(h1,h2){letter-spacing:-.035em}
  .spatial-site:not(#_) h2{letter-spacing:-.025em}
}
@media(max-width:400px){
  .chat-launcher .chat-icon{display:none}
}
@media(max-width:600px){
  .request-layout{padding-top:28px}
  /* Intro slogan: always exactly two lines on phones. */
  .spatial-site:not(#_) .intro-content :is(h1,h2){font-size:min(10.4vw,46px);white-space:nowrap}
  .spatial-site:not(#_) .intro-content :is(h1,h2) br{display:block}
}

/* ---------- Request form: consistent on iPhone (Safari) and Android ---------- */
.spatial-site:not(#_) .request-panel fieldset{min-width:0;max-width:100%}
.spatial-site:not(#_) .request-panel :is(input:not([type=radio]):not([type=checkbox]),select,textarea){
  -webkit-appearance:none;appearance:none;width:100%;max-width:100%;min-width:0;min-height:52px;
  font-family:var(--f-body);font-size:16px;line-height:1.4;color:#12343c;background-color:#fff;
  border:1px solid #bed0cc;border-radius:10px;padding:13px 14px;box-shadow:none}
.spatial-site:not(#_) .request-panel textarea{min-height:130px}
.spatial-site:not(#_) .request-panel :is(input,select,textarea):focus{border-color:#087578;outline:2px solid #08757833;outline-offset:1px}
.spatial-site:not(#_) .request-panel select{
  padding-right:44px;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 1l6 6 6-6' fill='none' stroke='%2312343c' stroke-width='2'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 16px center;background-size:14px 9px}
/* Date field: iOS shows an empty, centered, short box without these rules. */
.spatial-site:not(#_) .request-panel input[type=date]{display:block;text-align:left;line-height:24px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%2312343c' stroke-width='2'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M3 10h18M8 3v4M16 3v4'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;background-size:18px;padding-right:44px}
.spatial-site:not(#_) .request-panel input[type=date]::-webkit-date-and-time-value{text-align:left;margin:0;min-height:24px}
.spatial-site:not(#_) .request-panel input[type=date]::-webkit-datetime-edit{padding:0}
.spatial-site:not(#_) .request-panel input[type=date]::-webkit-calendar-picker-indicator{opacity:0;width:44px;height:100%;position:absolute;right:0;top:0;cursor:pointer}
.spatial-site:not(#_) .request-panel label:has(input[type=date]){position:relative}
.spatial-site:not(#_) .request-panel input[type=date]{position:relative}
/* Option cards (Free visit / Service request) */
.spatial-site:not(#_) .type-options>label{align-items:flex-start;gap:12px;padding:16px;min-height:0}
.spatial-site:not(#_) .type-options input[type=radio]{width:20px;height:20px;margin:2px 0 0;flex-shrink:0;accent-color:#087578}
.spatial-site:not(#_) .type-options strong{font-size:16px;line-height:1.3}
.spatial-site:not(#_) .type-options small{font-size:14px;line-height:1.45;margin-top:4px}
.spatial-site:not(#_) .consent{gap:12px;font-size:14px;line-height:1.55}
.spatial-site:not(#_) .consent input{width:22px;height:22px;margin-top:1px}
.spatial-site:not(#_) .request-panel small{font-size:13px;line-height:1.5}

/* ---------- Mobile reading comfort: no cramped words or lines ---------- */
@media(max-width:820px){
  .spatial-site:not(#_) h1{letter-spacing:-.015em;line-height:1.1;word-spacing:.04em}
  .spatial-site:not(#_) .hero h1,.spatial-site:not(#_) .intro-content :is(h1,h2){letter-spacing:-.02em;line-height:1.06;word-spacing:.05em}
  .spatial-site:not(#_) h2{letter-spacing:-.01em;line-height:1.16;word-spacing:.03em}
  .spatial-site:not(#_) :is(.new-title,.contact-banner) h2{letter-spacing:-.015em;line-height:1.08}
  .spatial-site:not(#_) h3{letter-spacing:0;line-height:1.3}
  .spatial-site:not(#_) :is(p,li,dd,dt,label,small){letter-spacing:0;word-spacing:normal}
  .spatial-site:not(#_) :is(main p,main li){line-height:1.65}
  .spatial-site:not(#_) .eyebrow.eyebrow{letter-spacing:.1em;line-height:1.6}
  .spatial-site:not(#_) .hero-topline{gap:12px}
}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important}
}
