/* John H. Cho, DDS — demo redesign.
   Teal sampled from the clinic's own operatory photo (TV screen, dominant
   bucket #105050 / dark-teal average #115553): primary #0F4F4E.
   Logo file + exact CSS palette could NOT be read — live site bot-blocks
   curl, Wayback 429 — so the header uses a text wordmark, flagged in the
   deliverable. Square corners throughout. Radius: 0. No shadows.
   Type scale (5 sizes only): 44 / 30 / 20 / 16 / 14.
   Spacing scale: 4 / 8 / 16 / 24 / 32 / 48 / 64. */
:root{
  --teal:#0F4F4E; --teal-dark:#0A3837; --teal-pale:#E6F0EE;
  --sand:#F7F3EC; --grey:#F2F2F2;
  --ink:#1E2A28; --white:#ffffff; --gold:#C99A2B;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:'Public Sans',system-ui,-apple-system,'Segoe UI',sans-serif;color:var(--ink);line-height:1.6;background:var(--white)}
h1,h2,h3{font-family:'Source Serif 4',Georgia,serif;color:var(--teal);line-height:1.15}
h1{font-size:44px;letter-spacing:-0.01em}
h2{font-size:30px;margin-bottom:16px}
h3{font-size:20px}
a{color:var(--teal);text-decoration:none}
a:hover{text-decoration:underline}
img{max-width:100%;display:block}
.wrap{max-width:1140px;margin:0 auto;padding:0 24px}
section[id]{scroll-margin-top:90px}
.stars{color:var(--gold);font-size:20px;letter-spacing:2px}

/* top bar: teal, plain sentence-case contact line */
.topbar{background:var(--teal);color:#fff;font-size:14px;font-weight:600}
.topbar .wrap{display:flex;justify-content:space-between;gap:16px;padding-top:8px;padding-bottom:8px;flex-wrap:wrap}
.topbar a{color:#fff}

/* header: white, text wordmark */
.site-header{background:var(--white);position:sticky;top:0;z-index:50}
.site-header .wrap{display:flex;align-items:center;gap:24px;padding-top:14px;padding-bottom:14px}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none}
.brand:hover{text-decoration:none}
.brand-mark{display:flex;align-items:center;justify-content:center;width:52px;height:52px;background:var(--teal);color:#fff;font-family:'Source Serif 4',Georgia,serif;font-size:20px;font-weight:700;flex:none}
.brand-name{font-family:'Source Serif 4',Georgia,serif;font-size:20px;font-weight:700;color:var(--teal);line-height:1.1}
.brand-name span{display:block;font-family:'Public Sans',sans-serif;font-size:14px;font-weight:600;color:var(--ink)}
.main-nav{display:flex;gap:24px;margin-left:auto}
.main-nav a{color:var(--ink);font-weight:700;font-size:16px}
.main-nav a:hover{color:var(--teal);text-decoration:none}
.btn{display:inline-block;background:var(--teal);color:#fff;font-weight:700;font-size:16px;padding:16px 24px;border:0;cursor:pointer;text-decoration:none}
.btn:hover{background:var(--teal-dark);text-decoration:none}
.btn.ghost{background:transparent;color:var(--teal);border:2px solid var(--teal)}
.btn.ghost:hover{background:var(--teal);color:#fff}
.btn.light{background:#fff;color:var(--teal)}
.btn.light:hover{background:var(--teal-pale)}
.mobile-menu{display:none}

/* hero: photo left, copy right — reversed from the Alfonso/Soni demos */
.hero{padding:64px 0;background:var(--white)}
.hero-grid{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center}
.hero-photo img{width:100%;height:auto}
.hero h1{margin-bottom:16px}
.hero .lede{font-size:20px;line-height:1.5;margin-bottom:24px;max-width:520px}
.rating-line{display:flex;align-items:center;gap:8px;font-weight:700;color:var(--teal);margin-bottom:24px;flex-wrap:wrap}
.hero-cta{display:flex;gap:16px;flex-wrap:wrap}
.hero-note{margin-top:16px;font-size:14px}

/* booking band: pale teal, horizontal form */
.book-band{background:var(--teal-pale);padding:48px 0}
.book-band .wrap{display:grid;grid-template-columns:.9fr 1.1fr;gap:48px;align-items:start}
.book-intro h2{margin-bottom:8px}
.book-intro p{font-size:16px}
#appt-form{display:grid;grid-template-columns:1fr 1fr;gap:16px}
#appt-form label{font-size:14px;font-weight:800;color:var(--teal)}
#appt-form input{width:100%;padding:14px;border:1px solid #b9d2cd;font:inherit;font-size:16px;background:#fff;margin-top:4px}
#appt-form input:focus{outline:2px solid var(--teal);border-color:var(--teal)}
#appt-form .btn{grid-column:1 / -1}
.book-fine{grid-column:1 / -1;font-size:14px;margin-top:8px}
.book-fine a{font-weight:700}

/* sections */
.section{padding:64px 0}
.section.sand{background:var(--sand)}
.section.teal{background:var(--teal);color:#fff}
.section.teal h2,.section.teal h3{color:#fff}
.section .sub{max-width:640px;margin-bottom:32px}

/* services: numbered text rows, two columns, no icons, no cards */
.svc-head{margin-bottom:32px}
.svc-list{display:grid;grid-template-columns:1fr 1fr;gap:24px 48px;margin-bottom:48px}
.svc-row{display:flex;gap:16px;align-items:flex-start}
.svc-row .num{font-family:'Source Serif 4',Georgia,serif;font-size:20px;font-weight:700;color:var(--gold);flex:none;line-height:1.3}
.svc-row h3{margin-bottom:4px}
.svc-row p{font-size:16px}
.photo-wide img{width:100%;height:auto}
.photo-wide figcaption{font-size:14px;margin-top:16px}

/* smile virtual: three numbered steps as plain text columns */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:32px;margin-bottom:32px}
.step-num{font-family:'Source Serif 4',Georgia,serif;font-size:44px;font-weight:700;color:var(--gold);line-height:1;margin-bottom:8px}
.step h3{margin-bottom:8px}
.step p{font-size:16px}

/* doctor: teal section, monogram panel as a flat tone step */
.doctor-grid{display:grid;grid-template-columns:.7fr 1.3fr;gap:48px;align-items:center}
.doctor-mark{background:var(--teal-dark);padding:32px}
.doctor-mark .mono{font-family:'Source Serif 4',Georgia,serif;font-size:64px;font-weight:700;color:#fff;line-height:1}
.mark-note{font-size:14px;color:#fff;margin-top:16px}
.doctor-copy .cred{font-weight:700;font-size:16px;margin-bottom:16px;color:#fff}
.doctor-copy p{margin-bottom:16px}
.doctor-copy ul{list-style:none}
.doctor-copy li{padding-left:24px;position:relative;margin-bottom:8px}
.doctor-copy li::before{content:"✓";position:absolute;left:0;color:var(--gold);font-weight:800}

/* reviews: aggregate left, stacked quotes right */
.rev-layout{display:grid;grid-template-columns:.7fr 1.3fr;gap:48px;align-items:start}
.rev-agg .agg-num{font-family:'Source Serif 4',Georgia,serif;font-size:64px;font-weight:700;color:var(--teal);line-height:1}
.rev-agg p{margin-bottom:8px}
.rev-list .quote{margin-bottom:32px}
.rev-list .quote:last-child{margin-bottom:0}
.quote blockquote{font-size:20px;line-height:1.5;margin-bottom:8px}
.quote .who{font-weight:700;color:var(--teal)}
.quote .who span{display:block;font-size:14px;font-weight:400;color:var(--ink)}

/* visit */
.visit-grid{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:start}
.visit-info h2{margin-bottom:24px}
.vrow{display:flex;gap:24px;margin-bottom:24px}
.vrow .k{font-weight:800;color:var(--teal);width:120px;flex:none}
.vrow .v{flex:1}
.hours-table{border-collapse:collapse;width:100%}
.hours-table td{padding:4px 0;font-size:16px}
.hours-table td:last-child{text-align:right;font-weight:700;color:var(--teal)}
.map-frame{width:100%;height:420px;border:0}

/* footer */
.site-footer{background:var(--teal-dark);color:#fff;padding:48px 0 0}
.site-footer .wrap{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:32px;padding-bottom:32px}
.site-footer h4{color:#fff;margin-bottom:16px;font-size:16px}
.site-footer p{font-size:16px;margin-bottom:8px}
.site-footer a{color:#fff}
.site-footer a:hover{color:var(--gold)}
.fbrand{font-family:'Source Serif 4',Georgia,serif;font-size:20px;font-weight:700;color:#fff}
.legal{border-top:1px solid rgba(255,255,255,.25);padding:16px 0;font-size:14px}
.legal .wrap{padding-bottom:0}

@media(max-width:900px){
  h1{font-size:32px}
  h2{font-size:28px}
  .hero-grid,.book-band .wrap,.svc-list,.doctor-grid,.rev-layout,.visit-grid{grid-template-columns:1fr}
  .steps{grid-template-columns:1fr}
  .site-footer .wrap{grid-template-columns:1fr}
  .hero{padding:40px 0}
  .section{padding:48px 0}
  .main-nav{display:none}
  .site-header .btn{display:none}
  .mobile-menu{display:block;position:relative;margin-left:auto}
  .mobile-menu summary{list-style:none;cursor:pointer;color:var(--teal);font-weight:700;font-size:15px;padding:10px 14px;border:1px solid #b9d2cd}
  .mobile-menu summary::-webkit-details-marker{display:none}
  .mobile-menu .mobile-links{position:absolute;right:0;top:calc(100% + 10px);background:#fff;border:1px solid #b9d2cd;padding:8px;min-width:200px}
  .mobile-menu .mobile-links a{display:block;color:var(--teal);font-weight:700;font-size:15px;padding:10px 12px;text-decoration:none}
  .mobile-menu .mobile-links a:hover{background:var(--teal-pale)}
  #appt-form{grid-template-columns:1fr}
  .map-frame{height:300px}
}
