:root{--paper:#f8fbfa;--white:#fff;--blue:#075c70;--blue-deep:#073642;--mint:#a9e5d1;--mint-pale:#e9f8f2;--ink:#132d32;--line:#bfd2d1;--red:#a43d3d;--serif:Georgia,"Times New Roman",serif;--sans:Inter,Arial,sans-serif;--utility:"Arial Narrow",Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);font-family:var(--sans);margin:0;line-height:1.5}button,input,textarea{font:inherit}button,a{touch-action:manipulation}.masthead{border-bottom:1px solid var(--line);background:var(--white);justify-content:space-between;align-items:center;height:98px;padding:0 clamp(22px,5vw,76px);display:flex}.brand{color:var(--ink);font-family:var(--utility);letter-spacing:.13em;align-items:center;gap:12px;font-size:12px;line-height:1.05;text-decoration:none;display:flex}.brand strong{font-size:17px}.brand-mark{border:2px solid var(--blue);width:44px;height:50px;font-family:var(--serif);color:var(--blue);border-radius:50% 50% 42% 42%;place-items:center;font-size:26px;display:grid}.hours{text-align:right;font-family:var(--utility);letter-spacing:.09em;font-size:12px}.hours span{color:var(--blue)}.hero{background:var(--white);border-bottom:1px solid var(--line);grid-template-columns:90px minmax(0,1fr) 250px;gap:clamp(20px,4vw,70px);min-height:570px;padding:72px clamp(22px,5vw,76px);display:grid}.tooth-chart{border:1px solid var(--line);grid-template-columns:repeat(2,1fr);align-content:start;display:grid}.tooth-chart span{aspect-ratio:1;border-right:1px solid var(--line);border-bottom:1px solid var(--line);font:11px var(--utility);color:var(--blue);place-items:center;display:grid}.tooth-chart span:nth-child(2n){border-right:0}.hero-copy{align-self:center;max-width:850px}.kicker{font:700 12px var(--utility);text-transform:uppercase;letter-spacing:.18em;color:var(--blue)}h1,h2{font-family:var(--serif);letter-spacing:-.04em;margin:.2em 0;font-weight:400}h1{font-size:clamp(48px,7.8vw,112px);line-height:.91}h1 em{color:var(--blue);font-weight:400}.hero-copy>p:last-child{max-width:550px;font-size:18px}.clinical-note{border-top:4px solid var(--mint);align-self:end;padding-top:16px}.clinical-note span{font:11px var(--utility);letter-spacing:.14em}.clinical-note p{font-family:var(--serif);font-size:18px}.booking{grid-template-columns:minmax(220px,360px) minmax(0,800px);gap:clamp(35px,8vw,120px);max-width:1500px;margin:auto;padding:90px clamp(22px,8vw,120px);display:grid}.booking-intro{height:max-content;position:sticky;top:30px}.booking h2,.confirmation h2{font-size:clamp(42px,5vw,72px);line-height:1}.booking-intro ol{border-top:1px solid var(--line);margin-top:48px;padding:0;list-style:none}.booking-intro li{border-bottom:1px solid var(--line);color:#687a7d;padding:14px 8px}.booking-intro li.done{color:var(--ink)}.booking-intro li.done:before{content:"✓";color:var(--blue);margin-right:10px}fieldset{border:0;border-top:1px solid var(--ink);margin:0;padding:24px 0 48px}legend{font:700 13px var(--utility);letter-spacing:.13em;text-transform:uppercase;padding:0 18px 0 0}.service-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.service{border:1px solid var(--line);cursor:pointer;background:var(--white);grid-template-columns:22px 1fr auto;gap:10px;padding:18px;transition:border-color .15s,background .15s;display:grid}.service:hover,.service.selected{border-color:var(--blue);background:var(--mint-pale)}.service input{accent-color:var(--blue)}.service strong,.service small{display:block}.service small{color:#627579;margin-top:5px}.service b{font:11px var(--utility);white-space:nowrap;color:var(--blue)}.field{gap:7px;margin:14px 0;font-size:13px;font-weight:700;display:grid}.field span{color:#687a7d;font-weight:400}.field input,.field textarea{border:1px solid var(--line);background:var(--white);width:100%;color:var(--ink);border-radius:0;padding:14px}.field input:focus,.field textarea:focus{outline:3px solid var(--mint);border-color:var(--blue)}.field-date .date-input-wrap{align-items:center;min-width:0;display:flex;position:relative}.field-date input[type=date]{cursor:pointer;padding-left:42px;transition:border-color .15s,background-color .15s}.field-date .date-icon{fill:none;width:18px;height:18px;stroke:var(--blue);stroke-width:1.4px;stroke-linecap:round;stroke-linejoin:round;pointer-events:none;position:absolute;left:13px}.field-date input[type=date]:hover{border-color:var(--blue)}.field-date input[type=date]:disabled{color:#9aa9ac;cursor:not-allowed;border-color:var(--line);background:#eef2f2}.field-date input[type=date]:disabled~.date-icon{stroke:#9aa9ac}.field-date .hint{color:#5c7073;margin:0;font-size:12px;font-weight:400}.two-col{grid-template-columns:1fr 1fr;gap:14px;display:grid}.field-label{margin:22px 0 8px;font-size:13px;font-weight:700;display:block}.slots{grid-template-columns:repeat(6,1fr);gap:7px;display:grid}.slots button{background:var(--white);border:1px solid var(--line);color:var(--blue);cursor:pointer;padding:10px 4px}.slots button:hover,.slots button.active{background:var(--blue);color:#fff;border-color:var(--blue)}.consent{align-items:start;gap:12px;margin:20px 0;font-size:13px;display:flex}.consent input{width:20px;height:20px;accent-color:var(--blue)}.submit{background:var(--blue);color:#fff;cursor:pointer;border:0;width:100%;padding:18px;font-weight:700}.submit:hover{background:var(--blue-deep)}.submit:disabled{opacity:.45;cursor:not-allowed}.error{color:var(--red);border-left:3px solid var(--red);padding:8px 14px}.empty,.privacy{color:#687a7d;font-size:12px}.privacy{text-align:center}.confirmation{border:1px solid var(--line);background:var(--white);text-align:center;max-width:820px;margin:80px auto;padding:70px}.confirmation strong{border:2px dashed var(--blue);font:700 24px var(--utility);letter-spacing:.12em;color:var(--blue);margin:24px auto;padding:20px;display:block}.confirmation button{border:1px solid var(--blue);color:var(--blue);background:#fff;padding:12px 24px}footer{background:var(--blue-deep);color:#fff;font:12px var(--utility);letter-spacing:.08em;justify-content:space-between;padding:30px clamp(22px,5vw,76px);display:flex}footer a{color:var(--mint)}:focus-visible{outline:3px solid var(--mint);outline-offset:3px}@media (max-width:850px){.hero{grid-template-columns:58px 1fr}.clinical-note{display:none}.booking{grid-template-columns:1fr;padding-top:60px}.booking-intro{position:static}.booking-intro ol{display:none}.slots{grid-template-columns:repeat(4,1fr)}}@media (max-width:560px){.masthead{height:82px}.hours{display:none}.hero{grid-template-columns:1fr;min-height:auto;padding-top:45px}.tooth-chart{order:2;grid-template-columns:repeat(8,1fr)}.tooth-chart span{font-size:9px}.hero-copy>p:last-child{font-size:16px}.service-grid,.two-col{grid-template-columns:1fr}.slots{grid-template-columns:repeat(3,1fr)}.booking{padding:55px 18px}.confirmation{margin:40px 18px;padding:40px 22px}footer{flex-direction:column;gap:12px}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}.admin-shell{background:#eef5f3;min-height:100vh}.admin-header{border-bottom:1px solid var(--line);height:90px;font:12px var(--utility);letter-spacing:.12em;text-transform:uppercase;background:#fff;justify-content:space-between;align-items:center;padding:0 clamp(20px,5vw,70px);display:flex}.login-card{border-top:5px solid var(--blue);background:#fff;width:min(500px,100% - 36px);margin:9vh auto;padding:clamp(28px,5vw,58px)}.login-card h1{font-size:55px}.admin-content{max-width:1400px;margin:auto;padding:60px clamp(18px,7vw,100px)}.admin-title{border-bottom:1px solid var(--ink);justify-content:space-between;align-items:end;margin-bottom:20px;display:flex}.admin-title h1{font-size:72px}.admin-title button,.appointment-actions button{border:1px solid var(--blue);color:var(--blue);cursor:pointer;background:#fff;padding:10px 16px}.appointment{border-bottom:1px solid var(--line);background:#fff;grid-template-columns:110px 1fr auto;gap:28px;padding:24px 12px;display:grid}.appointment time{color:var(--blue);font:14px var(--utility);text-transform:uppercase;flex-direction:column;display:flex}.appointment time strong{font:25px var(--serif)}.appointment h2{margin:5px 0;font-size:28px}.appointment p{margin:0}.appointment a{color:var(--blue)}.appointment small{color:#5c7073;margin-top:8px;display:block}.status{font:10px var(--utility);text-transform:uppercase;letter-spacing:.1em;background:#f2eee2;padding:4px 7px}.status.confirmed{background:var(--mint-pale);color:var(--blue)}.appointment-actions{align-items:center;gap:7px;display:flex}.appointment-actions .cancel{color:#a43d3d;border-color:#a43d3d}.empty-state{text-align:center;border:1px solid var(--line);background:#fff;padding:50px}@media (max-width:650px){.appointment{grid-template-columns:70px 1fr}.appointment-actions{grid-column:1/-1;justify-content:flex-end}.admin-title h1{font-size:50px}}
