/* ==========================================================================
   Advanced Dental Laboratory (ADL) · Prototype design system
   Single shared stylesheet. Class names map 1:1 to Webflow classes.
   ========================================================================== */

/* ---------- Fonts (self-hosted, SIL OFL) ---------- */
@font-face{font-family:"Cormorant Garamond";src:url("../fonts/cormorant-garamond.woff2") format("woff2");font-weight:300 700;font-style:normal;font-display:swap}
@font-face{font-family:"Cormorant Garamond";src:url("../fonts/cormorant-garamond-italic.woff2") format("woff2");font-weight:300 700;font-style:italic;font-display:swap}
@font-face{font-family:"Inter";src:url("../fonts/inter.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap}

/* ---------- Tokens ---------- */
:root{
  --porcelain:#F7F4EF;   /* page background */
  --bone:#EDE7DD;        /* alt section */
  --white:#FFFFFF;
  --ink:#141414;         /* text / dark sections */
  --graphite:#2B2B2B;
  --stone:#566269;       /* slate muted text, harmonised with logo grey (5.8:1 on porcelain) */
  --slate:#727E84;       /* official logo grey, decorative / large text only */
  --brand-red:#F7080E;   /* official logo red: decorative accents only (rules, dots) */
  --line:rgba(20,20,20,.14);
  --line-dark:rgba(247,244,239,.18);
  --muted-dark:#B9C0C4;  /* slate-tinted muted text on ink (10:1) */
  --accent:#B0070C;      /* logo red, deepened for AA text contrast (6.6:1) */
  --accent-light:#F28B8E;/* logo red, lifted for use on ink (8:1) */
  --focus:#1F5FBF;

  --serif:"Cormorant Garamond","Iowan Old Style","Palatino Linotype",Georgia,serif;
  --sans:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;

  --step--1:clamp(.82rem,.8rem + .1vw,.88rem);
  --step-0:clamp(1rem,.97rem + .15vw,1.0625rem);
  --step-1:clamp(1.2rem,1.1rem + .4vw,1.4rem);
  --step-2:clamp(1.5rem,1.3rem + .9vw,2.1rem);
  --step-3:clamp(2rem,1.6rem + 1.8vw,3.1rem);
  --step-4:clamp(2.5rem,1.8rem + 3.2vw,4.6rem);

  --space-xs:.5rem;--space-s:1rem;--space-m:1.5rem;--space-l:2.5rem;--space-xl:clamp(3.5rem,2.5rem + 5vw,7.5rem);
  --container:1240px;--gutter:clamp(1.25rem,.8rem + 2.5vw,3rem);
  --radius:2px;--header-h:72px;
  --ease:cubic-bezier(.2,.7,.2,1);
}

/* ---------- Reset / base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 1rem)}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}
body{margin:0;background:var(--porcelain);color:var(--ink);font-family:var(--sans);font-size:var(--step-0);line-height:1.65;font-feature-settings:"ss01","cv11";-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration-thickness:1px;text-underline-offset:.2em}
a:hover{color:var(--accent)}
:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:2px}
.section--dark :focus-visible,.site-footer :focus-visible,.cta-band :focus-visible{outline-color:#9CC3FF}
h1,h2,h3,h4{font-family:var(--serif);font-weight:500;line-height:1.08;letter-spacing:-.01em;margin:0 0 var(--space-s)}
h1{font-size:var(--step-4)}h2{font-size:var(--step-3)}h3{font-size:var(--step-2)}h4{font-size:var(--step-1)}
p{margin:0 0 var(--space-s)}
ul,ol{margin:0 0 var(--space-s);padding-left:1.2em}
em,.italic{font-style:italic}
.skip-link{position:absolute;left:1rem;top:-100px;z-index:200;background:var(--ink);color:var(--porcelain);padding:.75rem 1rem;text-decoration:none}
.skip-link:focus{top:1rem;color:var(--porcelain)}
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ---------- Placeholder marker (must stay visible until confirmed) ---------- */
.confirm{background:#FFE27A;color:#141414;font-family:var(--sans);font-size:.78em;font-weight:600;font-style:normal;letter-spacing:0;padding:.08em .4em;border-radius:2px;white-space:normal;text-transform:none;line-height:1.5;box-decoration-break:clone;-webkit-box-decoration-break:clone}

/* ---------- Layout ---------- */
.container{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:var(--gutter)}
.container--narrow{max-width:820px}
.section{padding-block:var(--space-xl)}
.section--tight{padding-block:calc(var(--space-xl) * .6)}
.section--bone{background:var(--bone)}
.section--white{background:var(--white)}
.section--dark{background:var(--ink);color:var(--porcelain)}
.section--dark a:hover{color:var(--accent-light)}
.section--dark .eyebrow,.section--dark .muted{color:var(--muted-dark)}
.grid{display:grid;gap:var(--space-l)}
@media (min-width:768px){.grid--2{grid-template-columns:repeat(2,1fr)}.grid--3{grid-template-columns:repeat(2,1fr)}.grid--4{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1024px){.grid--3{grid-template-columns:repeat(3,1fr)}.grid--4{grid-template-columns:repeat(4,1fr)}}
.split{display:grid;gap:var(--space-l);align-items:center}
@media (min-width:900px){.split{grid-template-columns:1fr 1fr;gap:clamp(2.5rem,5vw,6rem)}.split--wide-text{grid-template-columns:1.15fr .85fr}.split--reverse > :first-child{order:2}}
.stack > * + *{margin-top:var(--space-s)}

/* ---------- Type helpers ---------- */
.eyebrow{display:inline-flex;align-items:center;gap:.75rem;font-family:var(--sans);font-size:.75rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--stone);margin-bottom:var(--space-s)}
.eyebrow::before{content:"";width:2rem;height:1px;background:currentColor}
.eyebrow--plain::before{display:none}
.lede{font-size:var(--step-1);line-height:1.55;color:var(--graphite);max-width:40ch}
.section--dark .lede{color:var(--porcelain)}
.muted{color:var(--stone)}
.small{font-size:var(--step--1)}
.display-italic{font-style:italic;color:var(--accent)}
.section--dark .display-italic{color:var(--accent-light)}
.section-head{max-width:760px;margin-bottom:var(--space-l)}
.section-head--center{margin-inline:auto;text-align:center}
.section-head--center .eyebrow{justify-content:center}
.index-num{font-family:var(--serif);font-style:italic;font-size:var(--step-1);color:var(--accent)}
.section--dark .index-num{color:var(--accent-light)}
.rule{border:0;border-top:1px solid var(--line);margin:var(--space-l) 0}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;min-height:48px;padding:.8rem 1.6rem;border:1px solid var(--ink);border-radius:999px;background:var(--ink);color:var(--porcelain);font-family:var(--sans);font-size:.9rem;font-weight:500;letter-spacing:.04em;text-decoration:none;cursor:pointer;transition:background .3s var(--ease),color .3s var(--ease),border-color .3s var(--ease)}
.btn:hover{background:var(--accent);border-color:var(--accent);color:var(--white)}
.btn--ghost{background:transparent;color:var(--ink)}
.btn--ghost:hover{background:var(--ink);color:var(--porcelain);border-color:var(--ink)}
.btn--light{background:var(--porcelain);color:var(--ink);border-color:var(--porcelain)}
.btn--light:hover{background:var(--accent-light);border-color:var(--accent-light);color:var(--ink)}
.btn--ghost-light{background:transparent;color:var(--porcelain);border-color:rgba(247,244,239,.6)}
.btn--ghost-light:hover{background:var(--porcelain);color:var(--ink)}
.btn-row{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:var(--space-m)}
.link-arrow{display:inline-flex;align-items:center;gap:.5rem;font-size:.9rem;font-weight:500;letter-spacing:.03em;text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:.15rem}
.link-arrow::after{content:"→";transition:transform .3s var(--ease)}
.link-arrow:hover::after{transform:translateX(4px)}

/* ---------- Header / nav ---------- */
.site-header{position:sticky;top:0;z-index:100;background:rgba(247,244,239,.92);backdrop-filter:saturate(140%) blur(10px);-webkit-backdrop-filter:saturate(140%) blur(10px);border-bottom:1px solid var(--line)}
.site-header__inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;height:var(--header-h)}
.brand{display:inline-flex;align-items:center;text-decoration:none}
.brand img{width:150px;height:auto}
@media (min-width:1024px){.brand img{width:178px}}
.nav-desktop{display:none}
.nav-desktop ul{display:flex;gap:2rem;list-style:none;margin:0;padding:0}
.nav-desktop a{font-size:.85rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;text-decoration:none;padding:.5rem 0;border-bottom:1px solid transparent}
.nav-desktop a:hover,.nav-desktop a[aria-current="page"]{border-bottom-color:currentColor;color:var(--ink)}
.header-actions{display:flex;align-items:center;gap:.5rem}
.header-actions .btn{min-height:40px;padding:.5rem 1.1rem;font-size:.8rem}
.header-phone{display:none;font-size:.85rem;font-weight:500;text-decoration:none;margin-right:.75rem;letter-spacing:.02em}
.menu-toggle{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid var(--line);border-radius:999px;background:transparent;cursor:pointer;color:var(--ink)}
.menu-toggle__bars{position:relative;width:18px;height:1.5px;background:currentColor}
.menu-toggle__bars::before,.menu-toggle__bars::after{content:"";position:absolute;left:0;width:18px;height:1.5px;background:currentColor;transition:transform .3s var(--ease)}
.menu-toggle__bars::before{top:-6px}.menu-toggle__bars::after{top:6px}
@media (min-width:1024px){.nav-desktop{display:block}.menu-toggle{display:none}.header-phone{display:inline}}
@media (max-width:420px){.header-actions .btn{display:none}}

/* Mobile overlay menu */
.nav-mobile{position:fixed;inset:0;z-index:150;background:var(--ink);color:var(--porcelain);display:flex;flex-direction:column;padding:1.25rem var(--gutter) 2rem;transform:translateY(-100%);visibility:hidden;transition:transform .45s var(--ease),visibility 0s linear .45s;overflow-y:auto}
.nav-mobile.is-open{transform:none;visibility:visible;transition:transform .45s var(--ease)}
.nav-mobile__top{display:flex;justify-content:space-between;align-items:center;height:calc(var(--header-h) - 1.25rem)}
.nav-mobile__top img{width:150px}
.nav-mobile__close{width:44px;height:44px;border-radius:999px;border:1px solid var(--line-dark);background:transparent;color:var(--porcelain);font-size:1.5rem;line-height:1;cursor:pointer}
.nav-mobile ul{list-style:none;margin:2rem 0;padding:0}
.nav-mobile li{border-bottom:1px solid var(--line-dark)}
.nav-mobile ul a{display:flex;justify-content:space-between;align-items:baseline;padding:1rem 0;font-family:var(--serif);font-size:2rem;text-decoration:none}
.nav-mobile ul a span{font-family:var(--sans);font-size:.75rem;letter-spacing:.15em;color:var(--muted-dark)}
.nav-mobile__meta{margin-top:auto;font-size:.9rem;color:var(--muted-dark)}
.nav-mobile__meta a{color:var(--porcelain)}
body.menu-open{overflow:hidden}

/* Mobile action bar */
.action-bar{position:fixed;left:0;right:0;bottom:0;z-index:90;display:grid;grid-template-columns:repeat(3,1fr);background:var(--ink);border-top:1px solid var(--line-dark);padding-bottom:env(safe-area-inset-bottom)}
.action-bar a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.15rem;min-height:58px;color:var(--porcelain);text-decoration:none;font-size:.72rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase}
.action-bar a + a{border-left:1px solid var(--line-dark)}
.action-bar a:hover{color:var(--accent-light)}
.action-bar svg{width:18px;height:18px}
body{padding-bottom:58px}
@media (min-width:1024px){.action-bar{display:none}body{padding-bottom:0}}

/* ---------- Breadcrumb ---------- */
.breadcrumb{font-size:.78rem;letter-spacing:.06em;color:var(--stone);padding-top:var(--space-m)}
.breadcrumb ol{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none;margin:0;padding:0}
.breadcrumb li+li::before{content:"/";margin-right:.4rem;color:var(--line)}
.breadcrumb a{text-decoration:none}
.breadcrumb a:hover{text-decoration:underline}

/* ---------- Hero ---------- */
.hero{padding-block:clamp(2rem,1rem + 4vw,5rem) var(--space-xl)}
.hero__grid{display:grid;gap:var(--space-l);align-items:end}
@media (min-width:900px){.hero__grid{grid-template-columns:1.05fr .95fr;gap:clamp(2.5rem,5vw,5rem);align-items:center}}
.hero h1{margin-bottom:var(--space-m)}
.hero h1 em{font-style:italic;color:var(--accent)}
.hero__media{position:relative}
.hero__media img{width:100%;aspect-ratio:4/5;object-fit:cover}
@media (min-width:900px){.hero__media img{aspect-ratio:4/5}}
.hero__caption{position:absolute;left:0;bottom:0;background:var(--porcelain);padding:.6rem 1rem .6rem 0;font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:var(--stone)}
.hero__facts{display:grid;grid-template-columns:repeat(3,auto);justify-content:start;gap:1.25rem 2rem;margin-top:var(--space-l);padding-top:var(--space-m);border-top:1px solid var(--line)}
.hero__facts dt{font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--stone)}
.hero__facts dd{margin:0;font-family:var(--serif);font-size:1.45rem;line-height:1.2}
@media (max-width:520px){.hero__facts{grid-template-columns:1fr 1fr}}
.page-hero{padding-block:clamp(1.5rem,1rem + 3vw,4rem) clamp(2.5rem,2rem + 3vw,5rem);border-bottom:1px solid var(--line)}
.page-hero h1{max-width:18ch}
.page-hero .lede{max-width:52ch}

/* ---------- Pillars / cards ---------- */
.pillar{display:flex;flex-direction:column;gap:var(--space-s);text-decoration:none;color:inherit}
.pillar__img{overflow:hidden;background:var(--bone)}
.pillar__img img{width:100%;aspect-ratio:4/5;object-fit:cover;transition:transform 1.2s var(--ease)}
.pillar:hover .pillar__img img{transform:scale(1.04)}
.pillar:hover{color:inherit}
.pillar h3{margin:0}
.pillar p{color:var(--stone);margin:0}
.card{background:var(--white);border:1px solid var(--line);padding:clamp(1.5rem,1rem + 1.5vw,2.25rem);display:flex;flex-direction:column;gap:.75rem}
.section--bone .card{background:var(--porcelain)}
.card h3{font-size:var(--step-2);margin:0}
.card p{margin:0;color:var(--graphite)}
.card .link-arrow{margin-top:auto;align-self:flex-start}
.card--dark{background:var(--graphite);border-color:var(--line-dark);color:var(--porcelain)}
.card--dark p{color:var(--muted-dark)}

/* Spec card: material / package */
.spec{border-top:1px solid var(--ink);padding-top:var(--space-m)}
.spec__tag{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);font-weight:600}
.spec h3{margin:.4rem 0 .75rem}
.spec dl{display:grid;grid-template-columns:1fr;gap:0;margin:var(--space-m) 0 0;border-top:1px solid var(--line)}
.spec dl > div{display:grid;grid-template-columns:9.5rem 1fr;gap:1rem;padding:.75rem 0;border-bottom:1px solid var(--line)}
.spec dt{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--stone);padding-top:.2rem}
.spec dd{margin:0}
@media (max-width:480px){.spec dl > div{grid-template-columns:1fr;gap:.2rem}}

/* Material list (home) */
.materials{list-style:none;margin:0;padding:0;border-top:1px solid var(--line-dark)}
.materials li{display:grid;grid-template-columns:3rem 1fr;gap:1rem;padding:1.25rem 0;border-bottom:1px solid var(--line-dark);align-items:baseline}
@media (min-width:768px){.materials li{grid-template-columns:4rem 1.1fr 1.4fr}}
.materials h3{font-size:var(--step-2);margin:0}
.materials p{margin:0;color:var(--muted-dark);grid-column:2}
@media (min-width:768px){.materials p{grid-column:auto}}

/* Feature list with checks */
.ticks{list-style:none;padding:0;margin:0;display:grid;gap:.1rem}
.ticks li{position:relative;padding:.8rem 0 .8rem 2rem;border-bottom:1px solid var(--line)}
.ticks li::before{content:"";position:absolute;left:0;top:1.35rem;width:.9rem;height:1px;background:var(--accent)}
.section--dark .ticks li{border-color:var(--line-dark)}
.section--dark .ticks li::before{background:var(--accent-light)}

/* Chips */
.chips{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;margin:0;padding:0}
.chips li{border:1px solid var(--line);border-radius:999px;padding:.45rem 1rem;font-size:.85rem;background:var(--white)}
.section--dark .chips li{background:transparent;border-color:var(--line-dark)}

/* Steps */
.steps{counter-reset:step;list-style:none;margin:0;padding:0;display:grid;gap:var(--space-l)}
@media (min-width:900px){.steps{grid-template-columns:repeat(3,1fr)}}
.steps li{counter-increment:step;border-top:1px solid var(--ink);padding-top:var(--space-m)}
.steps li::before{content:"0" counter(step);display:block;font-family:var(--serif);font-style:italic;font-size:var(--step-2);color:var(--accent);margin-bottom:.5rem}
.steps h3{font-size:var(--step-1);font-family:var(--sans);font-weight:600;letter-spacing:0}

/* Gallery */
.gallery{display:grid;gap:.75rem;grid-template-columns:repeat(2,1fr)}
@media (min-width:900px){.gallery{grid-template-columns:repeat(4,1fr);gap:1rem}.gallery figure:first-child{grid-column:span 2;grid-row:span 2}}
.gallery figure{margin:0;position:relative;overflow:hidden;background:var(--bone)}
.gallery img{width:100%;height:100%;aspect-ratio:1;object-fit:cover;transition:transform 1.2s var(--ease)}
.gallery figure:hover img{transform:scale(1.04)}
.gallery figcaption{font-size:.75rem;letter-spacing:.06em;color:var(--stone);padding:.5rem 0 0}

/* Figure */
.figure{margin:0}
.figure img{width:100%;object-fit:cover}
.figure figcaption{font-size:.78rem;color:var(--stone);margin-top:.6rem;letter-spacing:.03em}
.ratio-4x5 img{aspect-ratio:4/5}.ratio-1 img{aspect-ratio:1}.ratio-3x2 img{aspect-ratio:3/2}

/* Quote / pull */
.pull{font-family:var(--serif);font-size:var(--step-3);line-height:1.15;font-weight:400;margin:0;max-width:22ch}
.pull em{color:var(--accent)}
.section--dark .pull em{color:var(--accent-light)}

/* People */
.person{display:grid;gap:1.5rem;align-items:start}
.person img{width:100%;height:auto;aspect-ratio:4/5;object-fit:cover}
.person h3{font-size:var(--step-2);margin-bottom:.2rem}
.person .role{font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:.75rem}


/* Table */
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border-top:1px solid var(--ink)}
table{width:100%;border-collapse:collapse;font-size:.95rem;min-width:560px}
th,td{text-align:left;padding:1rem .75rem 1rem 0;border-bottom:1px solid var(--line);vertical-align:top}
th{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--stone);font-weight:600}
td:first-child{font-family:var(--serif);font-size:1.25rem;white-space:nowrap}

/* FAQ */
.faq{border-top:1px solid var(--ink)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:1.5rem;align-items:flex-start;padding:1.25rem 0;font-family:var(--serif);font-size:var(--step-1);line-height:1.3}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-family:var(--sans);font-weight:300;font-size:1.5rem;line-height:1;transition:transform .3s var(--ease);flex:none}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq .faq__a{padding:0 0 1.5rem;max-width:68ch;color:var(--graphite)}
.section--dark .faq{border-color:var(--porcelain)}
.section--dark .faq details{border-color:var(--line-dark)}
.section--dark .faq .faq__a{color:var(--muted-dark)}

/* CTA band */
.cta-band{background:var(--ink);color:var(--porcelain);padding-block:var(--space-xl)}
.cta-band h2{max-width:18ch}
.cta-band__grid{display:grid;gap:var(--space-l)}
@media (min-width:900px){.cta-band__grid{grid-template-columns:1.3fr 1fr;align-items:end}}
.cta-band .contact-lines{font-size:.95rem;color:var(--muted-dark)}
.cta-band .contact-lines a{color:var(--porcelain)}

/* Logos / press */
.press{display:grid;grid-template-columns:110px 1fr;gap:1.5rem;align-items:center}
.press img{width:110px;box-shadow:0 20px 40px -20px rgba(0,0,0,.35)}
@media (min-width:768px){.press{grid-template-columns:150px 1fr}.press img{width:150px}}

/* ---------- Forms ---------- */
.form{display:grid;gap:1.25rem}
.form__row{display:grid;gap:1.25rem}
@media (min-width:768px){.form__row--2{grid-template-columns:1fr 1fr}.form__row--3{grid-template-columns:repeat(3,1fr)}}
.field{display:flex;flex-direction:column;gap:.4rem}
.field label,.field legend{font-size:.75rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--graphite)}
.field .req{color:var(--accent)}
.field input,.field select,.field textarea{width:100%;min-height:48px;padding:.75rem .9rem;border:1px solid #8B8F92;border-radius:var(--radius);background:var(--white);color:var(--ink);font:inherit;font-size:1rem}
.field textarea{min-height:130px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--focus);outline-offset:1px;border-color:var(--focus)}
.field .hint{font-size:.82rem;color:var(--stone)}
fieldset.field{border:0;padding:0;margin:0}
.choice{display:flex;gap:.65rem;align-items:flex-start;font-size:.95rem;padding:.35rem 0}
.choice input{width:20px;height:20px;min-height:0;margin:.15rem 0 0;accent-color:var(--ink);flex:none}
.dropzone{position:relative;border:1px dashed #6E7275;background:var(--white);padding:2rem 1.25rem;text-align:center;transition:background .2s,border-color .2s}
.dropzone.is-drag{background:var(--bone);border-color:var(--ink)}
.dropzone input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer;min-height:0}
.dropzone__title{font-family:var(--serif);font-size:var(--step-1);margin:0 0 .25rem}
.dropzone__list{list-style:none;margin:1rem 0 0;padding:0;text-align:left;font-size:.85rem}
.dropzone__list li{display:flex;justify-content:space-between;gap:1rem;border-top:1px solid var(--line);padding:.5rem 0}
.dropzone:focus-within{outline:2px solid var(--focus);outline-offset:2px}
.form-status{padding:1rem 1.25rem;border-left:3px solid var(--accent);background:var(--white);font-size:.95rem}
.form-status[hidden]{display:none}
.form-status--success{border-left-color:#2E7D4F}
.form-status--error{border-left-color:var(--accent);background:#FFF6F5}
.section--photo .form-status{background:#16110F;color:#E9E5DF}
.field [aria-invalid="true"]{border-color:var(--accent)}
.hp-field{position:absolute!important;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}
.form{position:relative}
.portal-soon{margin-top:var(--space-s)}
.integration-note{border:1px dashed var(--accent);padding:1rem 1.25rem;font-size:.85rem;background:#FFF8F2;color:var(--graphite)}
.integration-note strong{color:var(--accent)}
.option-card{border:1px solid var(--line);background:var(--white);padding:1.5rem;display:flex;flex-direction:column;gap:.6rem}
.option-card h3{font-size:var(--step-2);margin:0}

/* ---------- Contact / map ---------- */
.nap{font-style:normal;font-size:1.05rem;line-height:1.8}
.nap strong{font-family:var(--serif);font-size:1.5rem;font-weight:500;display:block;margin-bottom:.5rem}
.hours{display:grid;grid-template-columns:auto 1fr;gap:.3rem 1.5rem;margin:0}
.hours dt{color:var(--stone)}
.hours dd{margin:0}
.map{position:relative;background:var(--bone);aspect-ratio:4/3;border:1px solid var(--line)}
.map iframe{position:absolute;inset:0;width:100%;height:100%;border:0;filter:grayscale(1) contrast(1.05)}

/* ---------- Footer ---------- */
.site-footer{background:var(--ink);color:var(--porcelain);padding-block:var(--space-xl) var(--space-l);font-size:.92rem}
.site-footer a{text-decoration:none;color:var(--porcelain)}
.site-footer a:hover{color:var(--accent-light);text-decoration:underline}
.footer__grid{display:grid;gap:var(--space-l)}
@media (min-width:768px){.footer__grid{grid-template-columns:1.4fr 1fr 1fr}}
@media (min-width:1024px){.footer__grid{grid-template-columns:1.6fr 1fr 1fr 1fr}}
.footer__brand img{width:190px;margin-bottom:1.25rem}
.footer__brand p{color:var(--muted-dark);max-width:34ch}
.site-footer h2{font-family:var(--sans);font-size:.72rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--muted-dark);margin-bottom:1rem}
.site-footer ul{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}
.site-footer address{font-style:normal;line-height:1.8}
.footer__bottom{margin-top:var(--space-xl);padding-top:var(--space-m);border-top:1px solid var(--line-dark);display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;color:var(--muted-dark);font-size:.8rem}

/* ---------- Motion (progressive enhancement) ---------- */
.js .reveal{opacity:0;transform:translateY(18px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.js .reveal.is-visible{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.js .reveal{opacity:1;transform:none}}

/* ---------- Fixes / refinements ---------- */
.cta-band .display-italic,.cta-band em{color:var(--accent-light)}
.hero__facts dd,.index-num,.steps li::before,td:first-child,.nap,.pull{font-variant-numeric:lining-nums}
h1,h2,h3{font-variant-numeric:lining-nums}
.cta-band .eyebrow,.site-footer .eyebrow{color:var(--muted-dark)}

/* ==========================================================================
   v2 — brand lockup, editorial photography, gallery + lightbox, film
   ========================================================================== */
.brand img{width:188px;height:auto}
@media (min-width:1024px){.brand img{width:220px}}
.footer__brand img{width:170px}
.nav-mobile .brand img,.nav-mobile img{width:200px;height:auto}
picture{display:block}
picture img{display:block;width:100%;height:auto}
.eyebrow::before{background:var(--brand-red)}

/* Hero v2 (v6): text left, photo bleeding to the right edge. The inset lives INSIDE the photo column
   (.hero2__visual), so it can never cover the text column at any width. */
.hero2{position:relative;display:grid;gap:var(--space-l);padding-block:clamp(1.5rem,1rem + 3vw,4rem) var(--space-xl)}
.hero2__text h1{margin-bottom:var(--space-m)}
.hero2__text h1 em{font-style:italic;color:var(--accent)}
.hero2__visual{position:relative;min-width:0;margin-inline:var(--gutter)}
.hero2__media{margin:0;position:relative;overflow:hidden;border-radius:var(--radius-img);isolation:isolate}
.hero2__media img{aspect-ratio:4/5;object-fit:cover;object-position:50% 50%;max-height:78vh;width:100%}
/* vignette: darkened radial edge blending into the black hero (CSS, so the photo itself stays crisp) */
.hero2__media::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;border-radius:inherit;
  background:radial-gradient(ellipse 78% 74% at 54% 46%,rgba(0,0,0,0) 52%,rgba(0,0,0,.30) 78%,rgba(0,0,0,.62) 100%)}
.hero2__media figcaption{position:absolute;z-index:2;right:0;bottom:0;max-width:calc(100% - 1.5rem);background:var(--porcelain);padding:.6rem 1rem .5rem;font-size:.72rem;line-height:1.45;letter-spacing:.14em;text-transform:uppercase;color:var(--stone);border-top-left-radius:var(--radius-img)}
.hero2__inset{display:none;margin:0}
.hero__facts{display:flex!important;flex-wrap:wrap;gap:1.1rem 2rem}
.hero__facts>div{min-width:0;flex:0 1 auto}
.hero__facts dd{overflow-wrap:anywhere}
@media (min-width:900px){
  .hero2{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:0;padding-top:clamp(2rem,3vw,3.5rem)}
  .hero2__text{max-width:none;margin:0;padding-left:max(var(--gutter),calc((100vw - var(--container))/2 + var(--gutter)));padding-right:clamp(2rem,5vw,5rem);min-width:0}
  .hero2__visual{margin-inline:0}
  .hero2__media{border-radius:var(--radius-img) 0 0 var(--radius-img)}
  .hero2__media::after{background:radial-gradient(ellipse 85% 80% at 58% 46%,rgba(0,0,0,0) 50%,rgba(0,0,0,.28) 76%,rgba(0,0,0,.6) 100%),linear-gradient(90deg,rgba(0,0,0,.45),rgba(0,0,0,0) 16%)}
  .hero2__media img{max-height:none;height:min(86vh,820px);min-height:520px}
  .hero2__media figcaption{max-width:calc(100% - 2rem)}
}
@media (min-width:1100px){
  /* inset photo: bottom-left corner of the photo column, inside it; caption keeps the remaining width */
  .hero2__inset{display:block;position:absolute;z-index:3;width:clamp(130px,13vw,210px);left:clamp(1rem,2vw,2rem);bottom:clamp(1rem,2vw,2rem);border:8px solid var(--porcelain);box-shadow:0 30px 60px -30px rgba(20,20,20,.45)}
  .hero2__inset img{aspect-ratio:4/5;object-fit:cover}
  .hero2__media figcaption{max-width:calc(100% - clamp(130px,13vw,210px) - 16px - 2*clamp(1rem,2vw,2rem))}
}
/* Pillars: staggered middle card */
@media (min-width:768px){.pillar--offset{margin-top:clamp(2rem,5vw,5rem)}}
.section-head--row{display:flex;flex-wrap:wrap;gap:1rem 2rem;align-items:end;justify-content:space-between}
.section-head--row h2{margin-bottom:0}

/* Film */
.film{padding-block:var(--space-xl)}
.film__grid{display:grid;gap:var(--space-l);align-items:center}
@media (min-width:900px){.film__grid{grid-template-columns:5fr 6fr;gap:clamp(3rem,6vw,6rem)}}
.film__media{position:relative;max-width:520px}
.film__video{display:block;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;background:#222}
.film__toggle{position:absolute;right:.75rem;bottom:.75rem;min-height:40px;padding:.4rem 1rem;border-radius:999px;border:1px solid rgba(247,244,239,.6);background:rgba(20,20,20,.55);color:var(--porcelain);font:600 .72rem/1 var(--sans);letter-spacing:.12em;text-transform:uppercase;cursor:pointer;backdrop-filter:blur(6px)}
.film__toggle:hover{background:var(--porcelain);color:var(--ink)}
.film h2 em{color:var(--accent-light)}
.film .lede{color:var(--porcelain)}
.materials--compact{margin-top:var(--space-m)}

/* Editorial asymmetric block */
.editorial{display:grid;gap:var(--space-m)}
.editorial figure{margin:0}
.editorial figure img{aspect-ratio:4/5;object-fit:cover}
.editorial figcaption,.people-teaser figcaption{font-size:.75rem;letter-spacing:.06em;color:var(--stone);padding-top:.6rem}
.editorial__side{max-width:62%;margin-left:auto!important;margin-top:-22%!important;border:8px solid var(--porcelain);border-bottom:0}
@media (min-width:900px){
  .editorial{grid-template-columns:5fr 3fr 5fr;gap:clamp(1.5rem,3vw,3rem);align-items:end}
  .editorial__side{max-width:none;margin:0 0 6rem!important;border:0}
  .editorial__text{align-self:center}
}

/* People teaser */
.people-teaser{display:grid;gap:var(--space-m);grid-template-columns:1fr 1fr}
.people-teaser figure{margin:0}
.people-teaser img{aspect-ratio:4/5;object-fit:cover}
.people-teaser__text{grid-column:1/-1}
.people-teaser__img--low{margin-top:3rem!important}
@media (min-width:900px){.people-teaser{grid-template-columns:3fr 3fr 5fr;gap:clamp(1.5rem,3vw,3rem);align-items:start}.people-teaser__text{grid-column:auto;align-self:center;padding-left:clamp(0rem,2vw,2rem)}.people-teaser__img--low{margin-top:5rem!important}}

/* Gallery grid (1:1 thumbs) + captions */
.g-grid{list-style:none;margin:0;padding:0;display:grid;gap:.75rem;grid-template-columns:repeat(2,1fr)}
@media (min-width:768px){.g-grid{grid-template-columns:repeat(3,1fr);gap:1rem}}
@media (min-width:1100px){.g-grid{grid-template-columns:repeat(4,1fr)}}
.g-grid--home{grid-template-columns:repeat(2,1fr)}
.g-grid--home .g-item:first-child{grid-column:span 2}
@media (min-width:1100px){.g-grid--home{grid-template-columns:repeat(4,1fr)}.g-grid--home .g-item:first-child{grid-column:span 2;grid-row:span 2}}
.g-link{display:block;text-decoration:none;color:inherit}
.g-link picture{overflow:hidden;background:var(--bone)}
.g-link img{aspect-ratio:1;object-fit:cover;transition:transform 1.2s var(--ease)}
.g-link:hover img{transform:scale(1.04)}
.g-link:hover{color:inherit}
.g-cap{display:block;font-size:.78rem;letter-spacing:.04em;color:var(--stone);padding-top:.5rem}
.g-grid--home .g-item:first-child img{height:auto}
.section--dark .g-cap{color:var(--muted-dark)}
.section--dark .g-link picture{background:#222}

/* Work page */
.page-hero--slim{padding-bottom:var(--space-l)}
.work-nav ul{list-style:none;display:flex;flex-wrap:wrap;gap:.5rem;padding:0;margin:var(--space-m) 0 0}
.work-nav a{display:inline-flex;min-height:40px;align-items:center;padding:.45rem 1rem;border:1px solid var(--line);border-radius:999px;font-size:.85rem;text-decoration:none;color:var(--ink)}
.work-nav a:hover{border-color:var(--ink);color:var(--ink)}
.work-cat{padding-block:var(--space-l);border-top:1px solid var(--line);scroll-margin-top:calc(var(--header-h) + 1rem)}
.work-cat:first-child{border-top:0;padding-top:0}
.work-cat__head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:var(--space-m)}
.work-cat__head h2{font-size:var(--step-3);margin:0}
.cta-inline h2{font-size:var(--step-3)}

/* Lightbox */
.lightbox{padding:0;border:0;max-width:100vw;max-height:100vh;width:100vw;height:100vh;background:rgba(14,14,14,.94);color:var(--porcelain)}
.lightbox::backdrop{background:rgba(14,14,14,.94)}
.lightbox__inner{position:relative;display:grid;grid-template-rows:1fr auto;height:100%;padding:3.5rem 1rem 1rem}
.lightbox__fig{margin:0;display:flex;align-items:center;justify-content:center;min-height:0}
.lightbox__fig img{max-width:min(100%,1600px);max-height:calc(100vh - 8rem);width:auto;height:auto;object-fit:contain}
.lightbox__cap{text-align:center;font-size:.85rem;letter-spacing:.06em;color:var(--muted-dark);padding-top:.75rem}
.lightbox button{position:absolute;min-width:48px;min-height:48px;border-radius:999px;border:1px solid rgba(247,244,239,.4);background:transparent;color:var(--porcelain);font:400 1.4rem/1 var(--sans);cursor:pointer}
.lightbox button:hover{background:var(--porcelain);color:var(--ink)}
.lightbox__close{top:.75rem;right:.75rem}
.lightbox__prev{left:.75rem;top:50%;transform:translateY(-50%)}
.lightbox__next{right:.75rem;top:50%;transform:translateY(-50%)}

/* Client services */
.rdr{background:var(--white);border-top:3px solid var(--brand-red);padding:var(--space-l) var(--space-m)}
.rdr .eyebrow{margin-bottom:.5rem}
.btn--red{background:var(--accent);border-color:var(--accent);color:var(--white)}
.btn--red:hover{background:var(--ink);border-color:var(--ink);color:var(--white)}
.portal-frame{border:1px solid var(--line);background:var(--white)}
.portal-frame iframe{display:block;width:100%;height:min(80vh,760px);border:0;background:var(--white)}
.portal-frame__fallback{margin:0;padding:1rem 1.25rem;border-top:1px solid var(--line);font-size:.9rem;color:var(--stone)}
.steps--4{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}

/* About: talks timeline */
.edu-list{margin-top:var(--space-l);max-width:760px}
.timeline{list-style:none;margin:0 0 1rem;padding:0}
.timeline li{display:grid;grid-template-columns:4.5rem 1fr;gap:1rem;padding:.7rem 0;border-bottom:1px solid var(--line)}
.timeline span{font-family:var(--serif);font-style:italic;font-size:1.2rem;color:var(--accent);font-variant-numeric:lining-nums}

.figure figcaption{font-size:.75rem;letter-spacing:.06em;color:var(--stone);padding-top:.6rem}
@media (min-width:900px){.steps--4{grid-template-columns:repeat(4,1fr)}}
.person picture{max-width:440px}
.pillars{display:grid;gap:var(--space-l)}
@media (min-width:768px){.pillars{grid-template-columns:repeat(3,1fr);gap:clamp(1.25rem,2.5vw,2.5rem)}}

@media (min-width:1100px){.g-grid--three{grid-template-columns:repeat(3,1fr)}.g-grid--feature .g-item:first-child{grid-column:span 2;grid-row:span 2}}
@media (min-width:768px) and (max-width:1099px){.g-grid--feature{grid-template-columns:repeat(2,1fr)}.g-grid--feature .g-item:first-child{grid-column:span 2}}

/* ==========================================================================
   v3 — David's feedback: photo sections on black, lineage connector,
   craftsmanship film, Free Scanner Program, promo, client-services subpages
   ========================================================================== */
:root{--black:#000;--on-black-line:rgba(247,244,239,.16);--radius-photo:18px}

/* ---- Rule: every section containing photography sits on black ---- */
.section--photo,.section--photo.section--white,.section--photo.section--bone{background:var(--black);color:var(--porcelain)}
.section--photo h1,.section--photo h2,.section--photo h3{color:var(--porcelain)}
.section--photo p,.section--photo li,.section--photo dd{color:inherit}
.section--photo .lede{color:#E4E0D9}
.section--photo .eyebrow,.section--photo .muted,.section--photo .small.muted,.section--photo .hint{color:var(--muted-dark)}
.section--photo a{color:var(--porcelain)}
.section--photo a:hover{color:var(--accent-light)}
.section--photo h1 em,.section--photo .display-italic,.section--photo .pull em,.section--photo .index-num,.section--photo .spec__tag,
.section--photo .person .role,.section--photo .bio .role,.section--photo .timeline span,.section--photo .steps li::before,.section--photo .req{color:var(--accent-light)}
.section--photo :focus-visible{outline-color:#9CC3FF}
.section--photo .btn{background:var(--porcelain);border-color:var(--porcelain);color:var(--ink)}
.section--photo .btn:hover{background:var(--accent-light);border-color:var(--accent-light);color:var(--ink)}
.section--photo .btn--ghost{background:transparent;color:var(--porcelain);border-color:rgba(247,244,239,.6)}
.section--photo .btn--ghost:hover{background:var(--porcelain);color:var(--ink)}
.section--photo .btn--red{background:var(--accent);border-color:var(--accent);color:var(--white)}
.section--photo .card,.section--photo .option-card,.section--photo .rdr{background:#0E0E0E;border-color:var(--on-black-line);color:var(--porcelain)}
.section--photo .card p,.section--photo .option-card p{color:#D5D9DB}
.section--photo .spec,.section--photo .steps li,.section--photo .faq,.section--photo .table-wrap{border-color:rgba(247,244,239,.55)}
.section--photo .spec dl,.section--photo .spec dl>div,.section--photo th,.section--photo td,.section--photo .ticks li,.section--photo .timeline li,.section--photo .rule,.section--photo .work-cat{border-color:var(--on-black-line)}
.section--photo .spec dt,.section--photo th{color:var(--muted-dark)}
.section--photo .chips li{background:transparent;border-color:rgba(247,244,239,.28);color:var(--porcelain)}
.section--photo .figure figcaption,.section--photo .g-cap,.section--photo .editorial figcaption,.section--photo .people-teaser figcaption{color:var(--muted-dark)}
.section--photo .g-link picture,.section--photo .pillar__img{background:#151515}
.section--photo .pillar p{color:var(--muted-dark)}
.section--photo .work-nav a{border-color:rgba(247,244,239,.28);color:var(--porcelain)}
.section--photo .press img{box-shadow:0 20px 50px -20px rgba(255,255,255,.12)}
.section--photo .integration-note{background:#16110F;color:#E9E5DF}
.section--photo .hero__facts{border-color:var(--on-black-line)}
.section--photo .hero__facts dt{color:var(--muted-dark)}
.hero2.section--photo{background:var(--black)}
.hero2.section--photo .hero2__media figcaption{background:var(--black);color:var(--muted-dark)}
.hero2.section--photo .hero2__inset{border-color:var(--black);box-shadow:0 30px 60px -30px rgba(0,0,0,.9)}
.section--photo .editorial__side{border-color:var(--black)}
.section--photo .hero__media img,.section--photo .figure img,.section--photo .editorial figure img{border-radius:4px}
/* breadcrumb directly above a black hero joins the black band */
.breadcrumb--dark{background:var(--black);color:var(--muted-dark);box-shadow:0 0 0 100vmax var(--black);clip-path:inset(0 -100vmax);margin-bottom:-1px}
.breadcrumb--dark a{color:var(--porcelain)}
.breadcrumb--dark li+li::before{color:rgba(247,244,239,.35)}
.page-hero.section--photo{border-bottom-color:var(--black)}

/* ---- Promo: slim, typographic, premium ---- */
.promo{border-block:1px solid var(--line);background:var(--porcelain)}
.promo__inner{display:flex;flex-wrap:wrap;align-items:baseline;gap:.35rem 1.25rem;padding-block:.9rem}
.promo__label{margin:0;font-size:.68rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);display:inline-flex;align-items:center;gap:.6rem}
.promo__label::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--brand-red)}
.promo__text{margin:0;font-family:var(--serif);font-size:1.15rem;line-height:1.35;color:var(--ink)}
.promo__text strong{font-weight:600}
.promo__code{font-family:var(--sans);font-size:.8rem;letter-spacing:.08em;color:var(--stone);margin-left:.35rem;white-space:nowrap}
.promo__code b{display:inline-block;margin-left:.35rem;padding:.12rem .55rem;border:1px solid var(--ink);border-radius:999px;color:var(--ink);font-weight:600;letter-spacing:.14em}
.promo__link{margin-left:auto;font-size:.85rem;font-weight:500;text-decoration:none;border-bottom:1px solid currentColor;white-space:nowrap}
@media (max-width:640px){.promo__link{margin-left:0}}
.promo__terms{margin:0;flex-basis:100%;font-size:.75rem;color:var(--stone)}

/* ---- Rounded portraits + family-tree connector ---- */
.lineage{container-type:inline-size;width:100%}
.lineage__grid{--g:clamp(2.75rem,17cqw,8rem);--W:calc((100cqw - var(--g)) / 2);--off:calc(var(--W) * .5);display:grid;grid-template-columns:1fr var(--g) 1fr;align-items:start}
.lineage__person{margin:0}
.lineage__person picture{border-radius:var(--radius-photo);overflow:hidden;background:#151515;box-shadow:0 30px 60px -35px rgba(0,0,0,.8)}
.lineage__person img{aspect-ratio:4/5;object-fit:cover;width:100%}
.lineage__person--child{margin-top:var(--off)}
.lineage__person figcaption{padding-top:.75rem;display:grid;gap:.1rem}
.lineage__name{font-family:var(--serif);font-size:clamp(1rem,.9rem + .5vw,1.3rem);line-height:1.2}
.lineage__role{font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-dark)}
.lineage__link{position:relative;margin-top:calc(var(--W) * .625);height:var(--off)}
.lineage__a,.lineage__b{position:absolute;width:50%;height:50%;border:0 solid var(--lineage-c,rgba(247,244,239,.7))}
.lineage__a{left:0;top:0;border-top-width:1px;border-right-width:1px;border-top-right-radius:22px}
.lineage__b{left:calc(50% - 1px);top:calc(50% - 1px);border-left-width:1px;border-bottom-width:1px;border-bottom-left-radius:22px}
.lineage__link::before,.lineage__link::after{content:"";position:absolute;width:7px;height:7px;border-radius:50%;background:var(--brand-red);box-shadow:0 0 0 3px var(--black)}
.lineage__link::before{left:-4px;top:-3px}
.lineage__link::after{right:-4px;bottom:-4px}
.section:not(.section--photo) .lineage{--lineage-c:rgba(20,20,20,.35)}
.section:not(.section--photo) .lineage__link::before,.section:not(.section--photo) .lineage__link::after{box-shadow:0 0 0 3px var(--porcelain)}
.people2{display:grid;gap:var(--space-l);align-items:center}
@media (min-width:900px){.people2{grid-template-columns:1.05fr .95fr;gap:clamp(3rem,6vw,6rem)}}
.people3{display:grid;gap:var(--space-l)}
@media (min-width:900px){.people3{grid-template-columns:1fr 1fr;gap:clamp(3rem,6vw,6rem);align-items:start}}
.people3__bios{display:grid;gap:var(--space-l)}
.bio h3{font-size:var(--step-2);margin-bottom:.2rem}
.bio .role{font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:.75rem}
.bio + .bio{padding-top:var(--space-l);border-top:1px solid var(--on-black-line)}

/* ---- Origin story ---- */
.origin__grid{display:grid;gap:var(--space-l);align-items:center}
@media (min-width:900px){.origin__grid{grid-template-columns:1.1fr .9fr;gap:clamp(3rem,6vw,6rem)}}
.origin__photo{margin:0}
.origin__mat{padding:clamp(.6rem,1.4vw,1rem);background:#141210;border:1px solid rgba(247,244,239,.12);border-radius:6px;box-shadow:0 40px 80px -40px rgba(0,0,0,.9)}
.origin__mat picture{border-radius:3px;overflow:hidden}
.origin__mat img{aspect-ratio:3/2;object-fit:cover}
.origin__photo figcaption{font-family:var(--serif);font-style:italic;font-size:1rem;color:var(--muted-dark);padding-top:.8rem}
.origin__story p{font-size:1.05rem;line-height:1.75;color:#E4E0D9;max-width:56ch}
.origin__story p:first-child::first-letter{font-family:var(--serif);float:left;font-size:3.6em;line-height:.85;padding:.08em .12em 0 0;color:var(--accent-light)}
.milestones{list-style:none;margin:var(--space-xl) 0 0;padding:0;display:grid;gap:0;border-top:1px solid var(--on-black-line)}
.milestones li{display:grid;grid-template-columns:5.5rem 1fr;gap:1rem;padding:1rem 0;border-bottom:1px solid var(--on-black-line);align-items:baseline}
.milestones__yr{font-family:var(--serif);font-style:italic;font-size:1.6rem;color:var(--accent-light);font-variant-numeric:lining-nums}
.milestones__t{color:#D5D9DB}
@media (min-width:900px){.milestones{grid-template-columns:repeat(3,1fr);gap:2rem;border-top:0}.milestones li{grid-template-columns:1fr;border-bottom:0;border-top:1px solid rgba(247,244,239,.4);gap:.35rem}}

/* ---- Craftsmanship film: text + rounded tall frame ---- */
.film2__grid{display:grid;gap:var(--space-l);align-items:center}
@media (min-width:900px){.film2__grid{grid-template-columns:1.1fr .9fr;gap:clamp(3rem,7vw,7rem)}}
.film2__media{display:flex;justify-content:center}
.film2__frame{position:relative;width:min(100%,400px);border-radius:28px;overflow:hidden;background:#111;box-shadow:0 0 0 1px rgba(247,244,239,.08),0 50px 90px -40px rgba(0,0,0,.9)}
.film2__video{display:block;width:100%;height:auto;aspect-ratio:9/16;object-fit:cover;background:#111}
.film2__frame .film__toggle{right:1rem;bottom:1rem}
@media (max-width:899px){.film2__frame{width:min(78%,360px)}}
.craft{list-style:none;margin:var(--space-m) 0 0;padding:0;border-top:1px solid var(--on-black-line)}
.craft li{display:grid;grid-template-columns:3rem 1fr;gap:1rem;padding:1.1rem 0;border-bottom:1px solid var(--on-black-line);align-items:baseline}
.craft h3{font-family:var(--sans);font-size:1rem;font-weight:600;letter-spacing:0;margin:0 0 .2rem}
.craft p{margin:0;color:var(--muted-dark)}
.section:not(.section--photo) .craft,.section:not(.section--photo) .craft li{border-color:var(--line)}
.section:not(.section--photo) .craft p{color:var(--stone)}

/* ---- Free Scanner Program ---- */
.scanfeat__grid{display:grid;gap:var(--space-l);align-items:center}
@media (min-width:900px){.scanfeat__grid{grid-template-columns:1fr 1fr;gap:clamp(3rem,6vw,6rem)}}
.scanfeat__media{position:relative;max-width:560px;width:100%;margin-inline:auto;padding-bottom:4%}
.scanfeat__hero{margin:0 14% 0 0;border-radius:var(--radius-photo);overflow:hidden}
.scanfeat__hero img{aspect-ratio:4/5;object-fit:cover}
.scanfeat__wand{position:absolute;margin:0;filter:drop-shadow(0 30px 30px rgba(0,0,0,.6))}
.scanfeat__wand--a{right:-2%;bottom:0;width:38%}
.scanfeat__wand--b{right:34%;bottom:-2%;width:9.5%}
.scanpair{display:grid;gap:var(--space-m)}
.scanpair__hero{margin:0;border-radius:var(--radius-photo);overflow:hidden}
.scanpair__hero img{aspect-ratio:4/5;object-fit:cover}
.scanpair__row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-m);align-items:end}
.scanpair__wand{margin:0;padding:1.5rem;border:1px solid var(--on-black-line);border-radius:var(--radius-photo);background:radial-gradient(120% 80% at 50% 100%,#1b1b1b,#050505);display:flex;flex-direction:column;align-items:center;gap:.75rem;min-height:100%}
.scanpair__wand picture{width:78%}
.scanpair__wand--slim picture{width:20%}
.scanpair__wand figcaption{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted-dark)}
.scan-line{margin-top:var(--space-l);padding-top:var(--space-m);border-top:1px solid var(--line);max-width:72ch;font-size:.95rem}
.section--photo .scan-line{border-color:var(--on-black-line)}

/* ---- Events grid ---- */
.events{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-l) var(--space-m);grid-template-columns:1fr}
@media (min-width:700px){.events{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1100px){.events{grid-template-columns:repeat(4,1fr)}}
.ev__link picture{border-radius:10px;overflow:hidden}
.ev__link img{aspect-ratio:3/2}
.ev__year{margin:.9rem 0 .15rem;font-family:var(--serif);font-style:italic;font-size:1.25rem;color:var(--accent-light);font-variant-numeric:lining-nums}
.ev__title{font-family:var(--sans);font-size:.98rem;font-weight:600;letter-spacing:0;line-height:1.35;margin:0 0 .25rem}
.ev__desc{margin:0;font-size:.88rem;color:var(--muted-dark)}

/* ---- Membership text badges ---- */
.badges{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.6rem}
.badge{display:inline-flex;align-items:baseline;gap:.6rem;padding:.55rem 1rem;border:1px solid var(--ink);border-radius:999px;background:transparent}
.badge__abbr{font-family:var(--sans);font-size:.75rem;font-weight:700;letter-spacing:.16em}
.badge__name{font-family:var(--serif);font-size:1rem;color:var(--graphite)}
.section--photo .badge{border-color:rgba(247,244,239,.45)}
.section--photo .badge__name{color:#D5D9DB}

/* ---- Client services subpages ---- */
.cs-nav{margin-top:var(--space-m)}
.cs-nav a[aria-current="page"]{background:var(--ink);border-color:var(--ink);color:var(--porcelain)}
.steps--3{grid-template-columns:1fr}
@media (min-width:700px){.steps--3{grid-template-columns:repeat(3,1fr)}}
.dropzone.is-invalid{border-color:var(--accent);background:#FFF6F5}
.dropzone__list li.is-over span:last-child{color:var(--accent);font-weight:600}
.field--promo input{text-transform:uppercase;letter-spacing:.12em;max-width:16rem}
.footer__note{font-size:.78rem;letter-spacing:.06em;color:var(--muted-dark)}
@media (min-width:1024px){.footer__grid{grid-template-columns:1.5fr 1fr 1fr 1fr 1fr}}
.site-footer h2{color:var(--muted-dark)}
.section--photo + .section--photo{border-top:1px solid rgba(247,244,239,.07)}
.lineage__person--child figcaption{padding-left:.1rem}
.option-card .link-arrow{align-self:flex-start}
/* v3.1: Rx form links + preview, 4 milestones */
.btn__meta{font-weight:400;opacity:.75;margin-left:.3em}
.rx-thumb{display:inline-flex;flex-direction:column;gap:.5rem;margin-top:var(--space-m);text-decoration:none;color:inherit}
.rx-thumb img{width:200px;height:auto;border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.14);border:1px solid rgba(0,0,0,.08);transition:transform .2s}
.rx-thumb:hover img{transform:translateY(-2px)}
#origin .link-arrow + .link-arrow,.option-card .link-arrow + .link-arrow{margin-top:.25rem}
@media (min-width:900px){.milestones{grid-template-columns:repeat(4,1fr);gap:1.5rem}}
/* v3.2: Press & Honorable Mentions */
.mentions{display:grid;gap:clamp(1.25rem,2.5vw,2rem);grid-template-columns:1fr}
.mention{display:grid;gap:clamp(1.25rem,3vw,2.5rem);padding:clamp(1.25rem,3vw,2.5rem);border:1px solid rgba(247,244,239,.12);border-radius:22px;background:linear-gradient(160deg,#141414,#0b0b0b);align-items:center}
.mention__media--pair{display:grid;grid-template-columns:.62fr 1fr;gap:clamp(.75rem,2vw,1.25rem);align-items:end}
.doc-link{position:relative;display:block;border-radius:10px;overflow:hidden;box-shadow:0 24px 50px -24px rgba(0,0,0,.9),0 0 0 1px rgba(255,255,255,.06)}
.doc-link picture{display:block;background:none!important}
.doc-link img,.g-link.doc-link img{display:block;width:100%;height:auto;aspect-ratio:auto;object-fit:contain;transition:transform .5s cubic-bezier(.2,.7,.2,1)}
.doc-link:hover img,.doc-link:focus-visible img{transform:scale(1.025)}
.doc-link__zoom{position:absolute;left:.6rem;bottom:.6rem;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;background:rgba(0,0,0,.72);color:#F7F4EF;padding:.35rem .6rem;border-radius:999px;opacity:0;transform:translateY(4px);transition:.25s}
.doc-link:hover .doc-link__zoom,.doc-link:focus-visible .doc-link__zoom{opacity:1;transform:none}
@media (hover:none){.doc-link__zoom{opacity:1;transform:none}}
.mention__letter{max-width:340px;margin-inline:auto;transform:rotate(-1.2deg)}
.mention__kicker{font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-light);margin:0 0 .75rem}
.mention__title{font-family:var(--serif);font-weight:400;font-size:var(--step-2);line-height:1.2;margin:0 0 1.25rem;color:#F7F4EF}
.mention__title cite{font-style:italic}
.mention__quote{margin:0 0 1rem;padding-left:1.25rem;border-left:2px solid var(--accent-light)}
.mention__quote p{font-family:var(--serif);font-style:italic;font-size:var(--step-1);line-height:1.45;color:#EDE9E3;margin:0 0 .75rem}
.mention__quote--lg p{font-size:var(--step-3);line-height:1.2}
.mention__quote footer{font-size:.85rem;color:#C9CDD0}
.mention__quote footer span{font-style:italic}
.press-row{display:grid;gap:clamp(1.5rem,4vw,3rem);margin-top:clamp(2rem,5vw,4rem);padding-top:clamp(1.5rem,4vw,3rem);border-top:1px solid rgba(247,244,239,.1)}
@media (min-width:900px){
  .mention--feature{grid-template-columns:1.15fr 1fr}
  .mention--letter{grid-template-columns:1fr 1.15fr}
  .mention--letter .mention__media{order:2}
  .press-row{grid-template-columns:1fr 1fr;align-items:center}
}

/* ==========================================================================
   v4: services dropdown, testimonials, fee CTA, key facts, related links,
   area pages, team & equipment, footer areas
   ========================================================================== */
/* desktop services dropdown (hover + keyboard focus-within) */
.nav-desktop .has-sub{position:relative}
.nav-sub{position:absolute;left:-1.25rem;top:100%;padding-top:.6rem;opacity:0;visibility:hidden;transform:translateY(4px);transition:opacity .18s var(--ease),transform .18s var(--ease),visibility .18s}
.nav-desktop .has-sub:hover .nav-sub,.nav-desktop .has-sub:focus-within .nav-sub{opacity:1;visibility:visible;transform:none}
.nav-sub ul{display:grid!important;grid-template-columns:1fr 1fr;gap:0 1.5rem!important;min-width:30rem;background:var(--porcelain);border:1px solid var(--line);box-shadow:0 24px 48px -24px rgba(0,0,0,.25);padding:1rem 1.25rem!important}
.nav-sub a{display:block;text-transform:none!important;letter-spacing:0!important;font-size:.92rem!important;font-weight:450!important;padding:.55rem 0!important;border-bottom:1px solid var(--line)!important}
.nav-sub a:hover,.nav-sub a[aria-current="page"]{color:var(--accent)}
.nav-sub__all{grid-column:1/-1}
.nav-sub__all a{font-weight:600!important;border-bottom:0!important}
.nav-mobile .nav-mobile__sub{margin:-.25rem 0 1rem;padding:0 0 0 .25rem;columns:2;column-gap:1rem}
.nav-mobile .nav-mobile__sub a{font-family:var(--sans);font-size:.95rem;padding:.45rem 0;display:block;break-inside:avoid}

/* testimonials (Google reviews) */
.testi__track{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(260px,82%);gap:1rem;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:.75rem;scrollbar-width:thin}
@media (min-width:768px){.testi__track{grid-auto-columns:minmax(280px,44%)}}
@media (min-width:1100px){.testi__track{grid-auto-flow:row;grid-template-columns:repeat(3,1fr);overflow:visible}}
.testi__card{scroll-snap-align:start;margin:0;display:flex;flex-direction:column;gap:1rem;padding:clamp(1.25rem,1rem + 1vw,2rem);border:1px solid var(--line-dark);background:rgba(247,244,239,.04)}
.testi__card blockquote{margin:0;font-family:var(--serif);font-size:var(--step-1);line-height:1.35}
.testi__card blockquote p{margin:0}
.testi__stars{color:#E8B04A;letter-spacing:.12em;font-size:1rem}
.testi__stars--slot{opacity:.35}
.testi__card figcaption{margin-top:auto;display:flex;flex-direction:column;gap:.15rem;font-size:.85rem}
.testi__name{font-weight:600}
.testi__role,.testi__src{color:var(--muted-dark);font-size:.78rem;letter-spacing:.04em}
.testi__rating{margin:.5rem 0 0;color:var(--muted-dark)}
.testi--compact .testi__card blockquote{font-size:var(--step-0);font-family:var(--sans);line-height:1.6}
.testi__card--slot .confirm{font-family:var(--sans);font-size:.8rem}

/* fee schedule CTA */
.fee-cta{border-top:1px solid var(--line);background:var(--porcelain)}
.fee-cta__inner{display:grid;gap:1rem 2rem;align-items:center}
@media (min-width:900px){.fee-cta__inner{grid-template-columns:1fr auto}}
.fee-cta h2{font-size:var(--step-2);margin-bottom:.4rem}
.fee-cta p{margin:0}
.fee-cta .btn-row{margin-top:0}

/* key facts block (answer-engine friendly) */
.keyfacts{border:1px solid var(--line);background:var(--porcelain);padding:clamp(1.25rem,1rem + 1.5vw,2.25rem)}
.keyfacts__title{font-family:var(--sans);font-size:.75rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--stone);margin-bottom:1rem}
.keyfacts dl{margin:0;display:grid;gap:0}
.keyfacts dl > div{display:grid;grid-template-columns:1fr;gap:.2rem;padding:.8rem 0;border-top:1px solid var(--line)}
@media (min-width:700px){.keyfacts dl > div{grid-template-columns:12rem 1fr;gap:1.5rem}}
.keyfacts dt{font-weight:600;font-size:.9rem}
.keyfacts dd{margin:0;color:var(--graphite)}

/* related links */
.link-cloud{list-style:none;margin:1rem 0;padding:0;display:flex;flex-wrap:wrap;gap:.5rem}
.link-cloud a{display:inline-block;border:1px solid var(--line);border-radius:999px;padding:.5rem 1rem;font-size:.88rem;text-decoration:none;background:var(--white);min-height:44px;line-height:1.7}
.link-cloud a:hover{border-color:var(--accent)}
.related__grid{display:grid;gap:var(--space-l)}
@media (min-width:900px){.related__grid{grid-template-columns:1.2fr 1fr}}
.related h2{font-size:var(--step-2)}
.related__h3{font-size:var(--step-1)}
.steps__title{font-family:var(--sans);font-size:.75rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--stone);margin:var(--space-l) 0 var(--space-m)}
.grid--2{grid-template-columns:1fr}
@media (min-width:768px){.grid--2{grid-template-columns:repeat(2,1fr)}}

/* area pages */
.area-svcs{list-style:none;margin:0;padding:0;display:grid;gap:1px;background:var(--line);border:1px solid var(--line);grid-template-columns:1fr}
@media (min-width:700px){.area-svcs{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1100px){.area-svcs{grid-template-columns:repeat(3,1fr)}}
.area-svc{display:flex;flex-direction:column;gap:.35rem;height:100%;padding:1.4rem 1.5rem;background:var(--white);text-decoration:none}
.area-svc__n{font-family:var(--serif);font-size:var(--step-2);line-height:1.1}
.area-svc__d{color:var(--stone);font-size:.92rem}
.area-svc:hover .area-svc__n{color:var(--accent)}

/* team & equipment */
.team{list-style:none;margin:0 0 var(--space-l);padding:0;display:grid;gap:1rem;grid-template-columns:repeat(2,1fr)}
@media (min-width:900px){.team{grid-template-columns:repeat(4,1fr)}}
.team__photo{aspect-ratio:4/5;border:1px dashed var(--line-dark);border-radius:var(--radius-photo,18px);display:grid;place-items:center;color:var(--muted-dark);font-size:.75rem;letter-spacing:.18em;text-transform:uppercase;background:rgba(247,244,239,.03)}
.team__name{margin:.75rem 0 .1rem;font-weight:600}
.team__role{margin:0;font-size:.85rem;color:var(--muted-dark)}
.equip-wrap{display:grid;gap:var(--space-l);align-items:start}
@media (min-width:900px){.equip-wrap{grid-template-columns:.8fr 1.2fr}}
.equip__title{font-size:var(--step-2)}
.equip{list-style:none;margin:0;padding:0;display:grid;gap:0}
@media (min-width:700px){.equip{grid-template-columns:1fr 1fr;column-gap:2rem}}
.equip__item{border-top:1px solid var(--line-dark);padding:1rem 0}
.equip__item h3{font-family:var(--sans);font-size:1rem;font-weight:600;margin:0 0 .3rem}
.equip__item p{margin:0;font-size:.92rem;color:var(--muted-dark)}
.equip__item p + p{margin-top:.4rem}

/* footer areas row */
.footer__areas{margin-top:var(--space-l);padding-top:var(--space-m);border-top:1px solid var(--line-dark)}
.footer__areas ul{list-style:none;margin:0 0 .75rem;padding:0;display:flex;flex-wrap:wrap;gap:.25rem 1.25rem}
.footer__areas a{text-decoration:none;display:inline-block;padding:.35rem 0}
.footer__areas a:hover{text-decoration:underline}
.footer__areas p{font-size:.85rem;color:var(--muted-dark);margin:0}

/* dark/photo sections: related + keyfacts + link-cloud keep contrast */
.section--photo .link-cloud a,.section--dark .link-cloud a{background:transparent;border-color:var(--line-dark);color:var(--porcelain)}
.section--photo .keyfacts{background:transparent;border-color:var(--line-dark)}
.section--photo .keyfacts dd{color:var(--porcelain)}
.section--photo .area-svcs{background:var(--line-dark);border-color:var(--line-dark)}
.section--photo .area-svc{background:var(--black)}
/* v4.1: real Google reviews */
.testi__rating{display:flex;align-items:baseline;gap:.35rem;font-size:.95rem}
.testi__rating strong{font-family:var(--serif);font-size:1.6rem;font-weight:500;color:var(--porcelain)}
.testi__star{color:#E8B04A}
.testi__card blockquote p + p{margin-top:.6rem}
.testi--home .testi__card blockquote{font-size:var(--step-0);font-family:var(--sans);line-height:1.65}
.testi__more summary{cursor:pointer;font-size:.82rem;font-weight:500;letter-spacing:.03em;color:var(--accent-light);list-style:none;min-height:44px;display:flex;align-items:center}
.testi__more summary::-webkit-details-marker{display:none}
.testi__more summary::after{content:" +";white-space:pre}
.testi__more[open] summary::after{content:" \2212"}
.testi__full{font-size:.92rem;line-height:1.6;color:var(--porcelain);border-top:1px solid var(--line-dark);padding-top:.75rem}
.testi__full p{margin:0 0 .5rem}
@media (min-width:1100px){.testi__track--5{grid-template-columns:repeat(6,1fr)}.testi__track--5 .testi__card{grid-column:span 2}.testi__track--5 .testi__card:nth-child(4){grid-column:2 / span 2}}

/* ---- v5: Zerapure (signature zirconia) ---- */
.nav-badge{display:inline-block;margin-left:.45rem;padding:.1rem .45rem;border:1px solid var(--accent);border-radius:999px;font-family:var(--sans);font-size:.6rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);vertical-align:.15em;line-height:1.4}
.nav-mobile .nav-badge{border-color:var(--accent-light);color:var(--accent-light)}
.zp-hero,.zp-band{background:var(--black)}
.zp-hero{border-bottom-color:var(--black)}
.zp-badge{display:inline-block;padding:.15rem .55rem;border:1px solid var(--accent-light);border-radius:999px;color:var(--accent-light);letter-spacing:.16em}
.zp-hero .hero__grid{align-items:center}
.zp-visual{display:block;width:100%;height:auto;max-width:560px;margin-inline:auto;overflow:visible}
.zp-visual--mini{max-width:120px;margin:0}
.zp-visual .zp-outline{fill:none;stroke:rgba(247,244,239,.75);stroke-width:1.2}
.zp-visual .zp-divide{stroke:rgba(20,20,20,.28);stroke-width:1;stroke-dasharray:3 4}
.zp-visual .zp-lead{stroke:rgba(247,244,239,.45);stroke-width:1}
.zp-visual .zp-y{font-family:var(--serif);font-size:22px;fill:var(--porcelain)}
.zp-visual .zp-l1{font-family:var(--sans);font-size:10px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;fill:var(--porcelain)}
.zp-visual .zp-l2{font-family:var(--sans);font-size:10px;fill:var(--muted-dark)}
.zp-callout:not(.section--dark) .zp-outline{stroke:var(--ink)}
.zp-callout .zp-divide{stroke:rgba(20,20,20,.25)}
.zp-quote{margin:var(--space-m) 0;padding-left:1rem;border-left:2px solid var(--accent-light);font-family:var(--serif);font-style:italic;font-size:var(--step-1,1.25rem);line-height:1.35}
.zp-quote span{display:block;margin-top:.35rem;font-family:var(--sans);font-style:normal;font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-dark)}
.zp-layers{list-style:none;padding:0;margin:var(--space-m) 0;display:grid;gap:0}
.zp-layers li{display:grid;grid-template-columns:9.5rem 1fr;gap:1rem;padding:.9rem 0;border-bottom:1px solid var(--line-dark)}
.zp-layers li p{margin:0;color:var(--muted-dark)}
.zp-layers__y{font-size:.75rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--porcelain);padding-top:.15rem}
@media (max-width:520px){.zp-layers li{grid-template-columns:1fr;gap:.25rem}}
.zp-range{list-style:none;padding:0;margin:var(--space-l) 0 0;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1.25rem}
.zp-range h3{margin:.25rem 0 0;font-size:var(--step-1,1.25rem)}
.zp-range__line{height:2px;background:linear-gradient(90deg,#DCC6A3,#F4ECDF 50%,#FBF8F2);border-radius:2px;position:relative}
.zp-range__line::before,.zp-range__line::after{content:"";position:absolute;top:50%;width:10px;height:10px;border-radius:50%;background:var(--accent);transform:translateY(-50%)}
.zp-range__line::before{left:0}.zp-range__line::after{right:0}
@media (max-width:600px){.zp-range{grid-template-columns:1fr}.zp-range__line{height:40px;width:2px;margin-left:.5rem;background:linear-gradient(180deg,#DCC6A3,#FBF8F2)}.zp-range__line::before{left:50%;top:0;transform:translate(-50%,0)}.zp-range__line::after{left:50%;right:auto;top:auto;bottom:0;transform:translate(-50%,0)}}
.zp-preps{list-style:none;padding:0;margin:0 0 var(--space-s);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}
.zp-prep{display:flex;align-items:center;gap:.9rem;padding:.8rem 1.1rem;border:1px solid var(--line);border-radius:999px;background:var(--white);font-weight:500}
.zp-prep__icon{width:28px;height:36px;flex:none}
.zp-prep__icon path{fill:none;stroke:var(--accent);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.zp-opp{border-top:1px solid var(--ink);padding-top:var(--space-m)}
.zp-opp h3{font-size:var(--step-1,1.25rem)}
.zp-cta__inner,.zp-band__grid{display:grid;gap:var(--space-l);align-items:center}
@media (min-width:900px){.zp-cta__inner{grid-template-columns:1.3fr 1fr}.zp-band__grid{grid-template-columns:1fr 1.1fr}}
.zp-band__visual .zp-visual{max-width:460px}
.zp-callout{border-block:1px solid var(--line)}
.zp-callout__inner{display:grid;grid-template-columns:auto 1fr;gap:var(--space-m);align-items:center;max-width:56rem}
.zp-callout h2{font-size:var(--step-2,1.6rem);margin-bottom:.4rem}
.zp-callout p{margin:0 0 .6rem;max-width:60ch}
@media (max-width:560px){.zp-callout__inner{grid-template-columns:1fr}.zp-visual--mini{max-width:84px}}

/* ---- v5: rounded photos site-wide (design token) ----
   Every content photo (anything served from assets/photos/) gets --radius-img; the <picture> clips it,
   so hover-zooms stay inside the rounded frame. Left square on purpose: logos, icons, badges, scanner
   cut-outs (assets/img/scanners/) and the home hero photo where it bleeds off the right edge (desktop).
   The lineage headshots keep their own --radius-photo (unchanged). */
:root{--radius-img:12px}
@media (min-width:768px){:root{--radius-img:16px}}
main picture:has(> img[src*="assets/photos/"]){display:block;overflow:hidden;border-radius:var(--radius-img);isolation:isolate}
main img[src*="assets/photos/"]{border-radius:var(--radius-img)}
.section--photo .hero__media img,.section--photo .figure img,.section--photo .editorial figure img{border-radius:var(--radius-img)}
.g-link{border-radius:var(--radius-img)}
.ev__link picture,.doc-link,.rx-thumb img{border-radius:var(--radius-img)}
.origin__mat{border-radius:var(--radius-img)}
.origin__mat picture,.origin__mat img{border-radius:calc(var(--radius-img) - 8px)}
.scanfeat__hero,.scanpair__hero{border-radius:var(--radius-img)}
.editorial__side{border-radius:calc(var(--radius-img) + 6px) calc(var(--radius-img) + 6px) 0 0}
.hero2__inset,.hero2__inset picture,.hero2__inset img{border-radius:var(--radius-img)}
.hero2__inset{overflow:hidden}
.film__video{border-radius:var(--radius-img)}
.film2__frame{border-radius:var(--radius-img)}

/* lineage headshots: unchanged */
.lineage__person picture{border-radius:var(--radius-photo)}
.lineage__person img{border-radius:0}
/* Zerapure visual sits on a rounded black panel */
.zp-hero__visual,.zp-gradient__visual,.zp-band__visual{border-radius:var(--radius-img);overflow:hidden;padding:clamp(1.25rem,3vw,2.5rem);background:radial-gradient(120% 90% at 30% 20%,#1a1815,#050505 70%);border:1px solid var(--on-black-line)}
.zp-callout .zp-visual--mini{border-radius:var(--radius-img);background:radial-gradient(120% 90% at 30% 20%,#1a1815,#050505 70%);padding:.6rem}
.zp-callout .zp-visual--mini .zp-outline{stroke:rgba(247,244,239,.75)}

/* ---------- v5 Resources (blog) ---------- */
.res-grid{display:grid;gap:clamp(1rem,.6rem + 1.5vw,1.75rem);grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr))}
.res-card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius-img);transition:border-color .3s var(--ease),transform .3s var(--ease),box-shadow .3s var(--ease)}
.section--white .res-card{background:var(--porcelain)}
.res-card:hover{border-color:rgba(20,20,20,.35);transform:translateY(-2px);box-shadow:0 14px 34px -22px rgba(20,20,20,.45)}
.res-card__link{display:flex;flex-direction:column;height:100%;padding:clamp(1.4rem,1.1rem + 1vw,2rem);text-decoration:none;color:inherit;position:relative}
.res-card__link::before{content:"";position:absolute;left:clamp(1.4rem,1.1rem + 1vw,2rem);top:-1px;width:2.25rem;height:2px;background:var(--brand-red)!important}
.res-card__meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem;font-size:.72rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--stone);margin:0 0 1rem}
.res-card__cat{color:var(--accent)}
.res-card__title{font-size:var(--step-2);line-height:1.12;margin:0 0 .75rem}
.res-card__sum{color:var(--graphite);font-size:.95rem;line-height:1.6;margin:0 0 1.5rem}
.res-card__more{margin-top:auto;font-size:.88rem;font-weight:500;letter-spacing:.03em;border-bottom:1px solid currentColor;align-self:flex-start;padding-bottom:.1rem}
.res-card:hover .res-card__more{color:var(--accent)}
.res-grid--hub .res-card:first-child{grid-column:1/-1}
@media (min-width:900px){.res-grid--hub .res-card:first-child .res-card__title{font-size:var(--step-3);max-width:24ch}.res-grid--hub .res-card:first-child .res-card__sum{max-width:62ch;font-size:1.02rem}}
.res-count{margin:0 0 1.25rem}
.res-strip .section-head{margin-bottom:var(--space-l)}

.art-hero{position:relative;overflow:hidden;padding-block:clamp(2rem,1.4rem + 3vw,4.5rem) clamp(2.75rem,2rem + 3.5vw,5.5rem)}
.art-hero::after{content:"";position:absolute;inset:auto -10% -55% auto;width:min(60vw,640px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(242,139,142,.10),rgba(242,139,142,0) 62%);pointer-events:none}
.art-hero__inner{position:relative;z-index:1;max-width:980px}
.art-hero h1{font-size:clamp(2.2rem,1.6rem + 2.8vw,4rem);max-width:22ch;margin-bottom:1.25rem}
.art-hero .lede{max-width:56ch}
.art-byline{display:flex;flex-wrap:wrap;gap:.6rem;font-size:.9rem;color:var(--muted-dark);margin:0}
.art-wrap{background:var(--porcelain)}
.art-layout{display:flex;justify-content:center}
.art{width:100%;max-width:72ch;font-size:clamp(1.02rem,.98rem + .2vw,1.1rem);line-height:1.72}
.art p,.art li{color:var(--graphite)}
.art-body h2{font-size:clamp(1.65rem,1.4rem + 1.1vw,2.3rem);margin:2.8em 0 .6em;scroll-margin-top:calc(var(--header-h) + 1rem)}
.art-body h3{font-size:clamp(1.3rem,1.2rem + .5vw,1.6rem);margin:1.9em 0 .5em;scroll-margin-top:calc(var(--header-h) + 1rem)}
.art-body ul,.art-body ol{padding-left:1.25rem}
.art-body li{margin:.45em 0}
.art-body li::marker{color:var(--accent)}
.art a:not(.btn):not(.link-arrow){color:var(--ink);text-decoration-color:var(--accent);text-underline-offset:.18em;text-decoration-thickness:1px}
.art a:not(.btn):not(.link-arrow):hover{color:var(--accent)}
.art-answer{background:var(--ink);color:var(--porcelain);border-radius:var(--radius-img);padding:clamp(1.4rem,1rem + 1.5vw,2.2rem);margin:0 0 2rem;position:relative}
.art-answer::before{content:"";position:absolute;left:clamp(1.4rem,1rem + 1.5vw,2.2rem);top:0;width:2.5rem;height:2px;background:var(--brand-red)}
.art-answer__tag,.art-callout__tag,.art-toc__title{font-size:.72rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;margin:0 0 .75rem}
.art-answer__tag{color:var(--muted-dark)}
.art-answer p{color:var(--porcelain);margin:0;font-size:1.06em;line-height:1.65}
.art-answer strong{color:var(--white)}
.art-toc{border-top:1px solid var(--ink);border-bottom:1px solid var(--line);padding:1.1rem 0 1.2rem;margin:0 0 1.5rem}
.art-toc__title{color:var(--stone)}
.art-toc ol{margin:0;padding-left:1.4rem;columns:2 260px;column-gap:2rem;font-size:.93rem;line-height:1.5}
.art-toc li{margin:.25rem 0;break-inside:avoid}
.art-toc a{text-decoration:none!important}
.table-wrap{overflow-x:auto;margin:1.75rem 0;border:1px solid var(--line);border-radius:var(--radius-img);background:var(--white)}
.table-wrap:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.art-table{width:100%;min-width:640px;border-collapse:collapse;font-size:.9rem;line-height:1.5}
.art-table th,.art-table td{text-align:left;vertical-align:top;padding:.8rem .95rem;border-bottom:1px solid var(--line)}
.art-table thead th{background:var(--ink);color:var(--porcelain);font-weight:600;font-size:.8rem;letter-spacing:.04em}
.art-table tbody tr:nth-child(even){background:rgba(237,231,221,.45)}
.art-table tbody tr:last-child td{border-bottom:0}
.art-table tbody th{color:var(--ink);min-width:9rem;font-weight:400}.art-table tbody th strong{font-weight:600}
.checklist{list-style:none;padding:0!important;margin:1rem 0 1.5rem;background:var(--white);border:1px solid var(--line);border-radius:var(--radius-img);padding:.5rem 1.25rem!important}
.checklist li{display:flex;gap:.85rem;align-items:flex-start;padding:.7rem 0;margin:0;border-bottom:1px solid var(--line)}
.checklist li:last-child{border-bottom:0}
.checklist .check{flex:none;width:1.1rem;height:1.1rem;margin-top:.3em;border:1.5px solid var(--ink);border-radius:4px;position:relative}
.checklist .check::after{content:"";position:absolute;left:.3rem;top:.08rem;width:.3rem;height:.58rem;border:solid var(--accent);border-width:0 2px 2px 0;transform:rotate(45deg)}
.art-callout{margin:2rem 0;padding:clamp(1.25rem,1rem + 1vw,1.75rem);border:1px solid var(--ink);border-left:3px solid var(--brand-red);border-radius:var(--radius-img);background:var(--white)}
.art-callout__tag{color:var(--accent)}
.art-callout p{margin:0 0 1rem}
.art-callout strong{font-family:var(--serif);font-size:1.25em;font-weight:600;color:var(--ink)}
.art-faq{margin-top:3.5rem}
.art-faq h2{font-size:clamp(1.65rem,1.4rem + 1.1vw,2.3rem);scroll-margin-top:calc(var(--header-h) + 1rem)}
.art-faq .faq summary{font-size:clamp(1.12rem,1.05rem + .35vw,1.3rem)}
.art-cta{margin:3rem 0 1.5rem;padding:clamp(1.4rem,1rem + 1.5vw,2.2rem);background:var(--bone);border-radius:var(--radius-img)}
.art-cta p{margin:0}
.art-cta strong{font-family:var(--serif);font-size:1.3em;font-weight:600;color:var(--ink);display:block;margin-bottom:.35rem}
.art-note{margin-top:1.5rem}
.art-endcta__inner{display:grid;gap:var(--space-l);align-items:end}
.art-endcta h2{max-width:20ch}
.art-endcta .lede{max-width:52ch}
.art-endcta .lede a{color:inherit}
@media (min-width:900px){.art-endcta__inner{grid-template-columns:1.4fr 1fr}.art-endcta .btn-row{justify-content:flex-end}}
@media print{.site-header,.site-footer,.cta-band,.action-bar,.art-toc,.art-endcta{display:none}.art-answer{background:none;color:#000;border:1px solid #000}}
/* v5: six top-level nav items (Resources added): keep labels on one line */
.nav-desktop a,.header-actions .btn,.header-phone{white-space:nowrap}
@media (min-width:1024px){.nav-desktop ul{gap:clamp(1rem,.2rem + 1.5vw,2rem)}}
@media (min-width:1024px) and (max-width:1279px){.header-phone{display:none}.nav-desktop a{letter-spacing:.04em;font-size:.8rem}}
@media (min-width:900px){.res-grid--hub{grid-template-columns:repeat(2,1fr)}}

/* v6: Boris -> David connector: no red dots, subtle dotted neutral line */
.lineage__link::before,.lineage__link::after{content:none!important;display:none!important}
.lineage__a,.lineage__b{border-style:dotted;border-color:var(--lineage-c,rgba(247,244,239,.42))}
.lineage__a{border-top-width:2px;border-right-width:2px}
.lineage__b{left:calc(50% - 2px);top:calc(50% - 2px);border-left-width:2px;border-bottom-width:2px}
.section:not(.section--photo) .lineage{--lineage-c:rgba(20,20,20,.28)}

/* v6: Free Scanner Program terms */
.sp-terms{display:grid;gap:clamp(1rem,.6rem + 1.5vw,1.5rem);grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr))}
.sp-term{background:var(--white);border:1px solid var(--line);border-radius:var(--radius-img);padding:clamp(1.25rem,1rem + 1vw,1.75rem);position:relative}
.sp-term::before{content:"";position:absolute;left:clamp(1.25rem,1rem + 1vw,1.75rem);top:-1px;width:2.25rem;height:2px;background:var(--brand-red)}
.sp-term__k{font-size:.72rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--stone);margin:0 0 .6rem}
.sp-term__v{font-family:var(--serif);font-size:var(--step-2);line-height:1.15;margin:0;color:var(--ink)}
.sp-min{margin-top:clamp(1.5rem,1rem + 2vw,2.5rem);display:grid;gap:1rem}
.sp-min__head h3{margin:0 0 .25rem}
.sp-min .table-wrap{margin:0}
.sp-min__table{min-width:0!important;font-size:1rem}
.sp-min__table tbody th{font-family:var(--serif);font-size:1.2rem;font-weight:500}
.sp-min__table td{font-variant-numeric:lining-nums tabular-nums;font-size:1.05rem;color:var(--ink);white-space:nowrap}
@media (min-width:900px){.sp-min{grid-template-columns:1fr 2fr;align-items:start}}
.sp-already{margin-top:clamp(1.5rem,1rem + 2vw,2.5rem)}

/* v6: mobile editorial: keep the main caption clear of the overlapping side photo */
@media (max-width:899.98px){.editorial__main figcaption{max-width:calc(38% - .75rem)}}
.hero2__media figcaption{text-wrap:balance}
.sp-min__table tbody th{text-transform:none!important;letter-spacing:0!important;color:var(--ink)}
/* Veneer timeline (Oct 2026) */
.vtl{margin:1.5rem 0 0;display:grid;gap:.85rem}
.vtl__legend{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.4rem 1.25rem;font-size:.9rem;font-weight:600}
.vtl__legend li{display:flex;align-items:center;gap:.5rem}
.vtl__key{width:.9rem;height:.9rem;border-radius:3px;display:inline-block}
.vtl__key--wax,.vtl__seg--wax{background:var(--accent);color:#fff}
.vtl__key--fin,.vtl__seg--fin{background:var(--ink);color:var(--porcelain)}
.vtl__row{display:grid;gap:.35rem}
.vtl__units{margin:0;font-size:.78rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--stone)}
.vtl__bar{display:flex;gap:3px;border-radius:8px;overflow:hidden}
.vtl__seg{flex-basis:0;min-width:6.2rem;padding:.6rem .7rem;font-size:.85rem;line-height:1.2;white-space:nowrap}
.vtl__seg b{font-size:1.05rem;font-variant-numeric:lining-nums}
.vtl figcaption{font-size:.85rem;color:var(--stone)}
.vtl__list{list-style:none;margin:0;padding:0;display:grid;gap:.7rem}
.vtl__list li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.3rem .75rem;align-items:center}
.vtl__name{font-weight:600;font-size:.95rem}
.vtl__days{font-size:.85rem;white-space:nowrap;text-align:right}
.vtl__days b{font-size:1.05rem;font-variant-numeric:lining-nums}
.vtl__track{grid-column:1/-1;height:.7rem;border-radius:99px;background:var(--line);overflow:hidden}
.vtl__fill{display:block;height:100%;border-radius:99px;background:var(--accent)}
.vtl__list li:nth-child(even) .vtl__fill{background:var(--ink)}
.mp{display:grid;gap:1.5rem;margin-top:var(--space-l);padding-top:var(--space-m);border-top:1px solid var(--line-dark)}
@media (min-width:700px){.mp{grid-template-columns:1fr 1fr;column-gap:2rem}}
.mp__title{font-family:var(--sans);font-size:1rem;font-weight:600;margin:0 0 .75rem}
/* ---------- Prep guides (Oct 2026) ---------- */
.prep-guide{--pg-ink:var(--ink);--pg-muted:var(--stone);--pg-tooth:#E6DCCD;--pg-tooth-line:#8C8173;--pg-zone:rgba(176,7,12,.14);--pg-zone-solid:rgba(176,7,12,.22);--pg-zone-line:var(--accent);--pg-panel:var(--white);--pg-panel-line:var(--line);--pg-ok:#1E6B45;--pg-ok-bg:rgba(30,107,69,.1);--pg-warn:#7A5300;--pg-warn-bg:rgba(170,120,0,.12);--pg-no:var(--accent);--pg-no-bg:rgba(176,7,12,.08)}
.section--dark.prep-guide,.section--dark .prep-guide{--pg-ink:var(--porcelain);--pg-muted:var(--muted-dark);--pg-tooth:#4B4741;--pg-tooth-line:#A39A8E;--pg-zone:rgba(242,139,142,.2);--pg-zone-solid:rgba(242,139,142,.32);--pg-zone-line:var(--accent-light);--pg-panel:#1D1D1D;--pg-panel-line:var(--line-dark);--pg-ok:#8FD9B1;--pg-ok-bg:rgba(143,217,177,.12);--pg-warn:#F0C46A;--pg-warn-bg:rgba(240,196,106,.12);--pg-no:var(--accent-light);--pg-no-bg:rgba(242,139,142,.12)}
.prep-guide .lede{max-width:60ch}
.pg-svg{display:block;width:100%;height:auto;color:var(--pg-ink);font-family:var(--sans);overflow:visible}
.pg-svg text{fill:currentColor}
.pg-lh{font-size:12.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;fill:var(--pg-muted)!important}
.pg-lv{font-size:16px;font-weight:700}
.pg-ln{font-size:13.5px;fill:var(--pg-muted)!important}
.pg-tooth{fill:var(--pg-tooth);stroke:var(--pg-tooth-line);stroke-width:1.5;stroke-linejoin:round}
.pg-zone{fill:var(--pg-zone);stroke:var(--pg-zone-line);stroke-width:2;stroke-dasharray:6 4;stroke-linejoin:round}
.pg-zone--solid{fill:var(--pg-zone-solid);stroke-dasharray:none;stroke-width:1.6}
.pg-zone--line{fill:none}
.pg-band1{fill:var(--pg-zone-line);opacity:.18}.pg-band2{fill:var(--pg-zone-line);opacity:.32}.pg-band3{fill:var(--pg-zone-line);opacity:.48}
.pg-third{stroke:var(--pg-muted);stroke-width:1;stroke-dasharray:2 3;fill:none}
.pg-gum{fill:none;stroke:var(--pg-muted);stroke-width:1.4;stroke-linecap:round;opacity:.7}
.pg-dim{stroke:var(--pg-zone-line);stroke-width:2;fill:none;stroke-linecap:round}
.pg-lead{stroke:var(--pg-muted);stroke-width:1;fill:none}
.pg-dot{fill:var(--pg-zone-line)}
.pg-ring{fill:none;stroke:var(--pg-zone-line);stroke-width:1.6}
.pg-tick{fill:none;stroke:var(--pg-ok);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.pg-cross{fill:none;stroke:var(--pg-no);stroke-width:3;stroke-linecap:round}
.pg-figs{display:grid;gap:1rem;grid-template-columns:1fr}
@media (min-width:700px){.pg-figs--2{grid-template-columns:1fr 1fr}.pg-figs--3{grid-template-columns:1fr 1fr}}
@media (min-width:1024px){.pg-figs--3{grid-template-columns:repeat(3,1fr)}.pg-figs--1{grid-template-columns:minmax(0,560px)}}
.pg-fig{margin:0;padding:1.1rem 1rem .9rem;background:var(--pg-panel);border:1px solid var(--pg-panel-line);border-radius:var(--radius-img)}
.pg-fig figcaption{margin-top:.6rem;font-size:.85rem;font-weight:600;color:var(--pg-ink)}
.pg-fig figcaption span{font-weight:400;color:var(--pg-muted)}
.pg-tablewrap{margin:1.5rem 0 0;background:var(--pg-panel);border:1px solid var(--pg-panel-line);border-radius:var(--radius-img);overflow:hidden}
.pg-table{width:100%;min-width:0;border-collapse:collapse;font-size:.95rem;line-height:1.5;color:var(--pg-ink)}
.pg-table th,.pg-table td{padding:.75rem .95rem;border-bottom:1px solid var(--pg-panel-line);text-align:left;vertical-align:top}
.pg-table thead th{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--pg-muted);font-weight:600}
.pg-table tbody th{font-weight:600;color:var(--pg-ink);width:28%}
.pg-table tbody tr:last-child th,.pg-table tbody tr:last-child td{border-bottom:0}
@media (max-width:639.98px){
  .pg-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .pg-table tr{display:block;padding:.8rem .95rem;border-bottom:1px solid var(--pg-panel-line)}
  .pg-table tbody tr:last-child{border-bottom:0}
  .pg-table th,.pg-table td{display:block;padding:0;border:0;width:auto}
  .pg-table tbody th{margin-bottom:.3rem}
  .pg-table td+td{margin-top:.25rem}
  .pg-table td[data-l]::before{content:attr(data-l) ": ";font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--pg-muted);font-weight:600}
  .pg-table td[colspan]::before{content:none}
}
.pg-sub{font-family:var(--serif);font-size:var(--step-1);font-weight:500;margin:2.25rem 0 1rem;color:var(--pg-ink)}
.pg-margins,.pg-dds{list-style:none;margin:0;padding:0;display:grid;gap:.75rem;grid-template-columns:repeat(2,minmax(0,1fr))}
@media (min-width:900px){.pg-margins{grid-template-columns:repeat(4,minmax(0,1fr))}.pg-dds{grid-template-columns:repeat(6,minmax(0,1fr))}}
.pg-margin,.pg-dd{padding:.9rem;background:var(--pg-panel);border:1px solid var(--pg-panel-line);border-radius:var(--radius-img);color:var(--pg-ink)}
.pg-svg--mini{max-width:150px;margin:0 auto .5rem}
.pg-margin__name{font-weight:600;margin:0 0 .35rem;font-size:.95rem}
.pg-margin__note{font-size:.85rem;color:var(--pg-muted);margin:.4rem 0 0;line-height:1.45}
.pg-st{display:inline-block;margin:0;padding:.2rem .6rem;border-radius:999px;font-size:.75rem;font-weight:600;letter-spacing:.02em}
.pg-st--ok{color:var(--pg-ok);background:var(--pg-ok-bg)}.pg-st--warn{color:var(--pg-warn);background:var(--pg-warn-bg)}.pg-st--no{color:var(--pg-no);background:var(--pg-no-bg)}
.pg-dd p{margin:0;font-size:.88rem;line-height:1.4}
.pg-dd--do{box-shadow:inset 0 3px 0 var(--pg-ok)}.pg-dd--dont{box-shadow:inset 0 3px 0 var(--pg-no)}
.pg-dd--do strong{color:var(--pg-ok)}.pg-dd--dont strong{color:var(--pg-no)}
.pg-notes{margin-top:.5rem}
.pg-notes ul{margin:0;padding-left:1.1rem;display:grid;gap:.45rem;max-width:80ch}
.pg-notes li{font-size:.95rem;line-height:1.55}
.pg-muted{color:var(--pg-muted)}
.pg-foot{margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--pg-panel-line)}
.pg-disclaimer{font-size:.95rem;font-weight:600;margin:0;max-width:70ch;padding-left:.9rem;border-left:3px solid var(--pg-zone-line)}
.pg-foot .small{margin-top:.75rem}
.pg-cards{display:grid;gap:1.25rem;margin:1.5rem 0;grid-template-columns:1fr}
@media (min-width:800px){.pg-cards{grid-template-columns:1fr 1fr}}
.pg-card{display:grid;gap:1rem;padding:1.25rem;background:var(--pg-panel);border:1px solid var(--pg-panel-line);border-radius:var(--radius-img)}
@media (min-width:480px){.pg-card{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:center}}
.pg-card__title{font-family:var(--serif);font-size:var(--step-1);margin:0 0 .5rem}
.pg-card__list{margin:0;padding-left:1.1rem;font-size:.92rem;line-height:1.5}
.pg-card .btn-row{margin-top:1rem}
.prep-links .ticks a{font-weight:600}
.pg-table tbody th{text-transform:none;letter-spacing:0;font-size:.95rem}
.pg-fig .pg-svg{max-width:440px;margin-inline:auto}
@media (max-width:639.98px){.pg-table tbody th{width:auto}}

/* ==== v7 zerapure media (generated from src/zerapure_media.css) ==== */
/* Home hero: Zerapure milling b-roll.
   v8 (Oct 23 2026, "too zoomed in and too large"): 4:3 wide framing, no push-in, inside the layout, 4 rounded corners.
   v9 (Oct 23 2026, David: "too small, keep it proportional to the site"): on desktop the video fills the hero's right
   column up to the content container's right edge (same edge as the nav's Send a Case button), i.e. ~572px at 1440,
   ~474px at 1024. It is vertically centred on the headline + lede rows (the text column is a subgrid, the visual
   spans the h1 and lede rows). Below 900px it is full content width at 4:3 under the text. The veneer inset is 24%
   of the video width and straddles its bottom-left corner (30% outside, 40% below), clear of the disc label and of
   the lede. The caption hangs under the video, right-aligned to its right edge. */
.hero2__visual{width:auto;margin-inline:var(--gutter);justify-self:stretch}
.hero2__media.hero2__media--video{overflow:visible;border-radius:0;background:none;isolation:auto}
.hero2__media video,.hero2__media .hero2__poster img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;object-position:50% 50%;max-height:none;min-height:0;background:#0b0b0b;border-radius:var(--radius-img)}
.hero2__media .hero2__poster{display:none;border-radius:var(--radius-img);overflow:hidden}
.hero2__media--video::after{inset:0 0 auto 0;aspect-ratio:4/3;border-radius:var(--radius-img);
  background:radial-gradient(ellipse 80% 78% at 50% 48%,rgba(0,0,0,0) 58%,rgba(0,0,0,.22) 82%,rgba(0,0,0,.42) 100%)}
.hero2 .hero2__media--video figcaption,.hero2.section--photo .hero2__media--video figcaption{position:static;max-width:none;background:none;border-radius:0;padding:.8rem 0 0;font-size:.62rem;letter-spacing:.16em;text-align:right;color:var(--muted-dark,var(--stone))}
@media (min-width:600px) and (max-width:899px){.hero2__visual{margin-top:var(--space-s)}}
@media (min-width:900px){
  .hero2{grid-template-rows:repeat(5,auto)}
  .hero2__text{grid-column:1;grid-row:1 / span 5;display:grid;grid-template-rows:subgrid;align-content:start}
  .hero2__visual{grid-column:2;grid-row:2 / span 2;align-self:center;width:auto;justify-self:stretch;
    margin-inline:0 max(var(--gutter),calc((100vw - var(--container))/2 + var(--gutter)))}
  .hero2__media.hero2__media--video{border-radius:0}
  .hero2__media--video::after{background:radial-gradient(ellipse 80% 78% at 50% 48%,rgba(0,0,0,0) 58%,rgba(0,0,0,.22) 82%,rgba(0,0,0,.42) 100%)}
  .hero2__media video,.hero2__media .hero2__poster img{height:auto;min-height:0;max-height:none;object-position:50% 50%}
  /* caption hangs below the video (out of flow) so the centred box is the video itself */
  .hero2 .hero2__media--video figcaption,.hero2.section--photo .hero2__media--video figcaption{position:absolute;left:auto;right:0;top:100%;bottom:auto;max-width:none;font-size:.66rem;padding:.8rem 0 0;white-space:nowrap}
  .hero2__visual .hero2__inset{display:block;position:absolute;z-index:3;width:24%;left:0;bottom:0;top:auto;transform:translate(-30%,40%);border-width:clamp(6px,.5vw,8px)}
  .hero2__visual .hero2__inset img{aspect-ratio:4/5;object-fit:cover}
}
@media (prefers-reduced-motion:reduce){.hero2__media video{display:none}.hero2__media .hero2__poster{display:block}}

/* Zerapure box (black 3D render): whole box, contained, with breathing room at every width */
.zp-box{margin:0 auto;width:100%;max-width:520px;padding:0;background:#0b0b0b;border-radius:var(--radius-img);overflow:hidden;isolation:isolate;box-shadow:0 0 0 1px var(--on-black-line)}
.zp-box picture{display:block;border-radius:var(--radius-img);overflow:hidden}
.zp-box img{display:block;width:100%;height:auto;aspect-ratio:1/1;object-fit:contain;object-position:50% 50%;background:#0b0b0b;border-radius:var(--radius-img)}
.zp-hero .zp-box{max-width:500px}
.zp-band .zp-box{max-width:460px}
@media (max-width:899px){.zp-band .zp-box,.zp-hero .zp-box{max-width:420px}}
/* ==== /v7 zerapure media ==== */

/* ==== v8 radius fixes (generated from src/radius_fixes.css) ==== */
/* Site rule: every photo/video has rounded corners (--radius-img: 12px mobile, 16px >=768px).
   Three disciplines (home): .pillar__img clipped (overflow:hidden) but had NO radius and a #151515 / bone
   background, so its square corners showed behind each rounded <picture>. On the middle photo (milled abutments,
   whose source has a dark baked-in vignette) the square #151515 corners merged with the dark photo edge, so that
   card read as square. Wrapper now carries the radius too; the photo's vignette is lifted in src/photos.py. */
.pillar__img{border-radius:var(--radius-img);overflow:hidden;isolation:isolate}
.pillar__img picture,.pillar__img img{border-radius:var(--radius-img)}
/* Press: NY Smiles cover (now a link to the feature PDF) keeps rounded corners; the two links sit side by side */
.press__cover{display:block;border-radius:var(--radius-img);overflow:hidden;isolation:isolate;line-height:0}
.press__cover img,.press img{border-radius:var(--radius-img)}
.press__links{display:flex;flex-wrap:wrap;gap:.6rem 1.75rem;margin:0}
/* ==== /v8 radius fixes ==== */

/* ==== v8 related links (generated from src/related_links.css) ==== */
/* v8 internal links: "Related reading" (articles) and "From our Resources" (service pages). Subtle, editorial. */
.rl{border-top:1px solid var(--line);padding-top:1.25rem;margin:2.5rem 0 1.5rem;max-width:46rem}
.rl__eyebrow{font-size:.72rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin:0 0 .85rem}
.rl__list{list-style:none;padding:0!important;margin:0;display:grid;gap:.9rem}
.rl__list li{margin:0;padding-left:1.1rem;position:relative}
.rl__list li::before{content:"";position:absolute;left:0;top:.72em;width:.5rem;height:1px;background:var(--brand-red)}
.rl__list a{font-family:var(--serif);font-size:1.12rem;line-height:1.3;color:inherit;text-decoration:none;border-bottom:1px solid rgba(20,20,20,.25);transition:border-color .25s var(--ease)}
.rl__list a:hover{border-bottom-color:currentColor}
.rl__why{display:block;font-size:.88rem;line-height:1.5;color:var(--stone);margin-top:.2rem}
.rl-band{padding-block:clamp(1.25rem,1rem + 1vw,2rem)}
.rl-band .rl{margin:0 auto 0 0}
@media (min-width:900px){.rl--page .rl__list{grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:1rem 2.5rem}.rl--page{max-width:none}}
.section--dark .rl,.section--photo .rl{border-top-color:var(--line-dark)}
.section--dark .rl__list a,.section--photo .rl__list a{border-bottom-color:rgba(247,244,239,.3)}
.section--dark .rl__why,.section--photo .rl__why{color:var(--muted-dark)}
/* ==== /v8 related links ==== */

/* ==== v8 image sizing (generated from src/image_sizing.css) ==== */
/* v8 (Oct 23 2026, David: "all the photos in general are oversized"). Editorial images support the text, they don't
   overwhelm it. Rules (see screenshots/v8/image-audit.md):
   - side-by-side feature photos (4:5): <= 460px wide (~40% of the 1144px content width) and <= 62vh tall on desktop
   - card/grid images: one aspect per grid (pillars 4:3, galleries 1:1), uniform tiles, no blown-up "feature" tile
   - headshots <= 200px wide; press/doc thumbnails stay small; product shots (Zerapure box) contain, <= 400px
   - mobile/tablet (<900px): full content width, height capped at 55vh (object-fit: cover crops, focal point centre)
   - every photo keeps --radius-img */
:root{--feat-w:min(100%,460px,62vh * .8);--feat-w-sv:min(100%,460px,62svh * .8)}

/* side-by-side feature photos (page heroes, split figures, scanner heroes, about) */
@media (min-width:900px){
  .hero__media,.figure.ratio-4x5,.scanpair__hero{width:var(--feat-w);margin-inline:auto}
  .hero__media{margin-inline:auto 0}   /* page heroes: aligned to the container's right edge */
  .scanfeat__hero{width:var(--feat-w);margin:0 auto}
  .figure.ratio-3x2{width:min(100%,560px);margin-inline:auto}
  .equip__fig{width:min(100%,380px,56vh * .8);margin-inline:auto}
}
@supports (height:1svh){@media (min-width:900px){.hero__media,.figure.ratio-4x5,.scanpair__hero,.scanfeat__hero{width:var(--feat-w-sv)}}}

/* home: Three disciplines -> 4:3 cards at a modest height */
.pillar__img img{aspect-ratio:4/3;object-position:50% 50%}

/* home: lab film (9:16 video) no taller than ~62vh on desktop, 55vh on mobile */
.film2__frame{width:min(100%,400px,62vh * 9 / 16)}
@media (max-width:899px){.film2__frame{width:min(78%,360px,55vh * 9 / 16)}}

/* galleries: uniform square tiles, the oversized 2x2 / full-width "feature" tile removed */
.g-grid--home .g-item:first-child,.g-grid--feature .g-item:first-child{grid-column:auto;grid-row:auto}
@media (min-width:768px){.g-grid--home{grid-template-columns:repeat(5,1fr);gap:1rem}}
@media (max-width:767px){.g-grid--home .g-item:first-child{grid-column:span 2}.g-grid--home .g-item:first-child img{aspect-ratio:3/2}}
@media (min-width:768px) and (max-width:1099px){.g-grid--feature{grid-template-columns:repeat(3,1fr)}}

/* headshots stay small */
.lineage__person{max-width:200px}
@media (max-width:899px){.lineage__person{max-width:min(100%,220px)}}

/* product shot: whole box visible, never over-zoomed */
.zp-hero .zp-box,.zp-band .zp-box{max-width:min(100%,400px)}
@media (max-width:899px){.zp-band .zp-box,.zp-hero .zp-box{max-width:min(100%,360px)}}

/* press / documents */
.mention__letter{max-width:300px}

/* mobile & tablet: full content width, height capped so the text stays close */
@media (max-width:899px){
  .hero__media img,.figure.ratio-4x5 img,.editorial__main img,.scanfeat__hero img,.scanpair__hero img,.equip__fig img,.pillar__img img,.figure.ratio-3x2 img{max-height:55vh;width:100%;object-fit:cover}
  @supports (height:1svh){.hero__media img,.figure.ratio-4x5 img,.editorial__main img,.scanfeat__hero img,.scanpair__hero img,.equip__fig img,.pillar__img img,.figure.ratio-3x2 img{max-height:55svh}}
  .scanfeat__hero{margin-right:0}
}
/* ==== /v8 image sizing ==== */

/* ==== v10 lineage connector (generated from src/lineage.css) ==== */
/* v10 (Oct 23 2026, David: "the dotted lines between Boris & David are severed"). The v8 headshot cap (200px) made
   the photos narrower than their 1fr grid columns, so the old two-span CSS connector (sized from the column width)
   no longer met Boris's photo and its two halves were offset at the elbows. Now:
   - the grid columns ARE the photo width: --W = min(200px | 220px <900, 100cqw / 2.6), gap --g = .6W;
   - the connector is ONE inline SVG path (dotted, round caps, rounded elbows, non-scaling stroke) in a box exactly
     --g wide and .5W tall, placed from Boris's mid-height (.625W) to David's mid-height (.5W lower). The box aspect
     is constant (6:5), so the elbows stay round and the path touches both photo edges at every width. No red dot. */
.lineage__grid{--W:min(200px,calc(100cqw / 2.6));--g:calc(var(--W) * .6);--off:calc(var(--W) * .5);
  grid-template-columns:var(--W) var(--g) var(--W);justify-content:start}
@media (max-width:899px){.lineage__grid{--W:min(220px,calc(100cqw / 2.6))}}
.lineage__person,.lineage__person--parent,.lineage__person--child{max-width:none;width:var(--W)}
.lineage__person--child{margin-top:var(--off)}
.lineage__link{position:relative;margin-top:calc(var(--W) * .625);height:var(--off);width:var(--g);
  color:var(--lineage-c,rgba(247,244,239,.42))}
.lineage__link::before,.lineage__link::after{content:none!important;display:none!important}
.lineage__a,.lineage__b{display:none!important}
.lineage__svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;display:block}
.lineage__svg path{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:0 6px;vector-effect:non-scaling-stroke}
/* ==== /v10 lineage connector ==== */
