:root{--bg:#fff;--ink:#18383c;--muted:#617477;--line:#dce8e7;--teal:#247c79;--teal-dark:#155e5c;--pale:#eff8f7;--shadow:0 16px 40px rgba(23,78,77,.06);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}img{max-width:100%}.container{width:min(1180px,calc(100% - 40px));margin:auto}.skip{position:absolute;top:-60px;left:10px;background:#fff;z-index:50;padding:10px}.skip:focus{top:10px}:focus-visible{outline:3px solid #50a9a3;outline-offset:3px}.header{position:sticky;top:0;background:#ffffffed;backdrop-filter:blur(16px);z-index:20;border-bottom:1px solid var(--line)}.header-inner{display:flex;align-items:center;gap:24px;min-height:82px}.brand{display:inline-flex;align-items:center;gap:11px;font-size:17px;font-weight:800;white-space:nowrap;letter-spacing:-.04em;line-height:1.05}.brand small{display:block;font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);font-weight:500;margin-top:5px}.mark{display:grid;place-items:center;border-radius:15px;width:38px;height:38px;background:#d8efed;color:#156864;font-size:25px}.desktop-nav{display:flex;gap:18px;margin:auto}.desktop-nav a{font-size:15px;color:#405b5e;white-space:nowrap}.desktop-nav a:hover,.desktop-nav a.selected{color:var(--teal);font-weight:700}.header-actions{display:flex;align-items:center;gap:12px}.phone{font-size:14px;white-space:nowrap;font-weight:700}.mobile-nav,.menu-toggle{display:none}.btn{min-height:44px;padding:11px 18px;border-radius:10px;border:1px solid transparent;display:inline-flex;align-items:center;justify-content:center;text-align:center;gap:8px;font-weight:700;font-size:13px;white-space:nowrap;transition:.18s}.btn:hover{transform:translateY(-1px)}.primary{background:var(--teal);color:#fff}.primary:hover{background:var(--teal-dark)}.secondary,.outline{background:#fff;border-color:#c6dcda;color:var(--teal-dark)}.ghost,.text{color:var(--teal-dark);background:transparent}.white{background:#fff;color:var(--teal-dark)}.hero{background:linear-gradient(115deg,#f5faf9 0%,#f1f8f7 55%,#e5f2f0 100%);overflow:hidden}.hero-grid{display:grid;grid-template-columns:1fr .9fr;align-items:center;min-height:560px;gap:60px;padding-top:64px;padding-bottom:64px}.eyebrow{text-transform:uppercase;letter-spacing:.15em;color:var(--teal);font-weight:800;font-size:11px}.hero h1{font-size:clamp(48px,6vw,82px);letter-spacing:-.07em;line-height:1.04;margin:22px 0}.hero h1 em{font-style:normal;color:var(--teal)}.hero p{font-size:17px;line-height:1.7;color:var(--muted);max-width:500px}.hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin:30px 0 52px}.hero-foot{display:flex;gap:24px;flex-wrap:wrap;color:#577073;font-size:12px}.section{padding-top:80px;padding-bottom:80px}.tinted{background:#f7fbfa}.section-title{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:28px}.section-title h2,.contact-band h2{font-size:clamp(28px,3vw,42px);letter-spacing:-.055em;margin:8px 0}.section-title .btn{flex:none}.features{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.features>div{border-top:1px solid var(--line);padding-top:24px}.features span{color:var(--teal);font-weight:800}.features h3{font-size:20px;margin-bottom:6px}.features p,.card p{color:var(--muted);line-height:1.6}.grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.card{border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:var(--shadow);padding:24px;min-width:0}.card h3{letter-spacing:-.025em;margin:12px 0}.service-card{display:flex;flex-direction:column;min-height:270px}.service-card .icon{display:grid;place-items:center;width:44px;height:44px;color:var(--teal);background:var(--pale);border-radius:12px;font-size:25px;margin-bottom:25px}.small{font-size:12px}.muted{color:var(--muted)}.card-bottom{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto;padding-top:20px;flex-wrap:wrap}.card-bottom strong{white-space:nowrap}.doctor-card{padding:0;overflow:hidden}.portrait{background:radial-gradient(circle at 70% 20%,#f5ffff,#d9efeb 65%,#bcdcd8);height:180px;display:grid;place-items:center;color:#75afa8;font-size:72px}.doctor-info{padding:22px}.doctor-info p{font-size:13px;min-height:62px}.doctor-info .card-bottom{justify-content:flex-start}.stars{color:#d39c4e;letter-spacing:3px}.review footer{color:var(--ink);font-weight:700}.contact-band{border-radius:25px;background:#1d716f;padding:45px;display:flex;justify-content:space-between;align-items:center;gap:20px;color:#fff}.contact-band .eyebrow{color:#b8e6e2}.contact-band p{color:#d9f1ef}.page-heading{background:#f3faf9;padding:62px 0}.page-heading h1{font-size:clamp(34px,4vw,56px);letter-spacing:-.06em;margin:12px 0}.page-heading p{color:var(--muted);max-width:620px;line-height:1.6}.filters{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin-bottom:24px}.filters .field{flex:1;min-width:145px;margin:0}.filters>.btn{flex:none;align-self:flex-end;margin:0;min-height:46px}.field{display:flex;flex-direction:column;gap:7px;font-size:13px;font-weight:700;color:#395457;margin-bottom:17px}.field input,.field select,.field textarea{border:1px solid #cbdeda;background:#fff;border-radius:10px;min-height:46px;padding:10px 12px;width:100%;min-width:0;color:var(--ink);font-weight:400}.field textarea{min-height:94px;resize:vertical}.form .btn{width:100%}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.form-panel{max-width:670px;margin:34px 0;padding:30px}.narrow{max-width:550px}.narrow .form-panel{margin:0}.detail-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:20px;align-items:start}.detail{line-height:1.75}.detail h2{letter-spacing:-.04em}.booking-aside{position:sticky;top:100px}.booking-aside .btn{width:100%}.profile-top{display:flex;gap:25px;align-items:center}.portrait.large{height:180px;width:150px;border-radius:14px;flex:none}.profile-top h1{letter-spacing:-.05em}.service-list{padding:0;list-style:none}.service-list li,.price-row{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding:16px 0}.price-group{margin-bottom:16px}.price-row strong{white-space:nowrap}.booking-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(260px,.8fr);gap:25px;align-items:start}.booking-form{padding:30px}.booking-step{border-bottom:1px solid var(--line);padding:12px 0 25px}.booking-step h2{font-size:21px;margin:8px 0 22px}.step-number{color:var(--teal);font-size:12px;letter-spacing:.1em;font-weight:800}.booking-side{position:sticky;top:100px}.divider{border-top:1px solid var(--line);margin:25px 0}.check{display:flex;align-items:start;gap:10px;color:var(--muted);font-size:13px;line-height:1.5}.check input{width:18px;height:18px;flex:none}.check a{color:var(--teal);text-decoration:underline}.booking-submit{display:flex;justify-content:space-between;align-items:center;gap:12px;padding-top:22px}.booking-submit p{font-size:13px;color:var(--muted)}.portal-nav{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:26px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:30px}.stat{display:flex;flex-direction:column;gap:15px}.stat strong{font-size:34px}.appointment{padding:19px}.appointment-top{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}.appointment h3{font-size:17px}.badge{display:inline-flex;border-radius:20px;padding:6px 9px;font-size:11px;background:#edf2f2;color:#485d61}.badge.confirmed,.badge.arrived{background:#e7f4f0;color:#176b5f}.badge.pending{background:#fff3dc;color:#8a641d}.badge.cancelled,.badge.noshow{background:#fceeed;color:#a24d48}.actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:15px}.mini{border:1px solid var(--line);background:#fff;color:var(--teal-dark);border-radius:8px;padding:7px 9px;font-size:12px}.mini.danger{color:#a24d48}.empty{padding:45px;color:var(--muted)}.map-note{display:grid;place-items:center;background:#f4f8f7;min-height:230px;text-align:center;color:var(--muted)}footer{background:#153a3d;color:#fff;padding:55px 0 30px}.footer-grid{display:grid;grid-template-columns:2fr repeat(3,1fr);gap:35px}footer p{color:#bbd1d0;line-height:1.9;font-size:13px}footer .brand{color:#fff}footer .mark{background:#2f6969;color:#d0efeb}details{border-top:1px solid var(--line);padding:16px 0}summary{cursor:pointer;color:var(--teal);font-weight:700}
@media(max-width:1200px){.desktop-nav{gap:12px}.desktop-nav a{font-size:13px}.phone,.desktop-profile{display:none}}@media(max-width:980px){.desktop-nav{display:none}.header-inner{min-height:70px}.header-actions{margin-left:auto}.menu-toggle{display:block;background:#fff;border:1px solid var(--line);border-radius:10px;min-height:44px;min-width:44px;color:var(--ink);font-size:20px}.mobile-nav:not([hidden]){display:grid;padding:16px max(20px,calc((100% - 1180px)/2));gap:2px;border-top:1px solid var(--line);max-height:calc(100dvh - 70px);overflow:auto}.mobile-nav a{padding:10px}.hero-grid{gap:20px}.grid-4{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(2,1fr)}.footer-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:680px){.container{width:min(100% - 32px,1180px)}.header-actions>.btn{font-size:11px;padding:9px 10px}.brand{font-size:13px}.brand small{font-size:8px}.mark{width:32px;height:32px;font-size:20px}.hero-grid{grid-template-columns:1fr;padding-top:48px;padding-bottom:20px;min-height:0}.hero h1{font-size:clamp(43px,12vw,67px)}.hero p{font-size:15px}.hero-actions{margin:23px 0}.section{padding-top:55px;padding-bottom:55px}.section-title{align-items:start}.section-title .btn{font-size:12px}.features,.grid-3,.grid-4,.stats{grid-template-columns:1fr}.features{gap:12px}.service-card{min-height:0}.doctor-card{display:grid;grid-template-columns:90px 1fr}.doctor-card .portrait{height:100%;min-height:180px;font-size:34px}.doctor-info{padding:15px}.doctor-info p{min-height:0}.doctor-info .btn{padding:8px;font-size:11px;min-height:36px}.contact-band{padding:28px;display:block}.contact-band .btn{margin-top:10px}.page-heading{padding:38px 0}.detail-grid,.booking-layout,.form-grid{grid-template-columns:1fr}.booking-aside,.booking-side{position:static}.profile-top{align-items:start}.portrait.large{width:80px;height:100px}.booking-form{padding:20px}.booking-submit{display:block}.booking-submit .btn{width:100%}.footer-grid{grid-template-columns:1fr 1fr;gap:20px}.footer-grid>div:first-child{grid-column:1/-1}.portal-nav{display:grid;grid-template-columns:repeat(2,1fr)}.portal-nav .btn{white-space:normal}.filters{display:grid;grid-template-columns:1fr}.price-row{font-size:13px}.stats{grid-template-columns:repeat(2,1fr)}.stat strong{font-size:27px}}@media(max-width:375px){.header-actions>.btn{font-size:0;padding:9px}.header-actions>.btn:after{content:'Запись';font-size:11px}.doctor-card{grid-template-columns:1fr}.doctor-card .portrait{height:130px}.footer-grid{grid-template-columns:1fr}.footer-grid>div:first-child{grid-column:auto}}@supports(padding:max(0px)){.mobile-nav{padding-bottom:max(16px,env(safe-area-inset-bottom))}footer{padding-bottom:max(30px,env(safe-area-inset-bottom))}}

.hero-photo{margin:0;position:relative}.hero-photo img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border-radius:26px;box-shadow:0 22px 65px #245c5a24}.hero-photo figcaption{position:absolute;bottom:12px;right:16px;background:#fffffff0;border-radius:8px;padding:5px 8px;color:#456366;font-size:10px}@media(max-width:680px){.hero-photo{max-height:255px;overflow:hidden;border-radius:18px}.hero-photo img{border-radius:18px;aspect-ratio:16/9;object-position:50% 35%}}
.calendar-grid.day .calendar-doctors{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}.calendar-column,.calendar-grid.week .calendar-day,.calendar-grid.month .calendar-day{background:#f8fbfa;border:1px solid var(--line);border-radius:15px;padding:12px;min-width:0}.calendar-column h3{font-size:14px;margin:5px 0 14px}.calendar-grid.week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.calendar-grid.month{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.calendar-grid.week .appointment,.calendar-grid.month .appointment{padding:10px;margin:5px 0;box-shadow:none}.calendar-grid.week .appointment h3,.calendar-grid.month .appointment h3{font-size:12px;overflow-wrap:anywhere}.calendar-grid.week .appointment p,.calendar-grid.month .appointment p{font-size:11px}@media(max-width:1100px){.calendar-grid.week,.calendar-grid.month{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:680px){.calendar-grid.week,.calendar-grid.month,.calendar-grid.day .calendar-doctors{grid-template-columns:1fr}.calendar-grid.week .appointment .actions,.calendar-grid.month .appointment .actions{display:flex}}

/* Clinic administration */
.admin-page{padding-top:34px;padding-bottom:90px}.admin-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:34px;align-items:start}.admin-nav{position:sticky;top:104px;display:flex;flex-direction:column;gap:4px;padding:16px;background:#f5faf9;border:1px solid var(--line);border-radius:18px}.admin-nav-title{padding:7px 11px 14px;color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.12em}.admin-nav a{display:block;padding:11px 13px;border-radius:10px;color:#426064;font-size:14px;font-weight:650}.admin-nav a:hover,.admin-nav a.active{background:#dcefeb;color:#155e5c}.admin-nav a.active{box-shadow:inset 3px 0 #247c79}.admin-nav .admin-site-link{margin-top:12px;border-top:1px solid var(--line);border-radius:0;padding-top:17px}.admin-main{min-width:0}.admin-page-head{border-bottom:1px solid var(--line);margin-bottom:26px;padding:4px 0 24px}.admin-page-head h1{font-size:clamp(29px,3vw,40px);letter-spacing:-.05em;margin:8px 0}.admin-page-head p{color:var(--muted);margin:0}.admin-toolbar,.admin-section-title{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin:0 0 20px}.admin-toolbar h2,.admin-section-title h2{margin:5px 0;font-size:23px;letter-spacing:-.035em}.admin-section-title{margin-top:36px}.admin-main .stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.admin-main .stat{padding:18px;gap:7px}.admin-main .stat strong{font-size:30px}.admin-main .grid-3{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.admin-main .form-panel{max-width:100%}.admin-filters{background:#f5faf9;padding:16px;border:1px solid var(--line);border-radius:15px}.admin-filters .field{margin-bottom:0}.admin-filters .btn{margin-bottom:1px}.admin-main .appointment .actions form{width:auto}.admin-main .appointment .actions form .btn{width:auto;min-height:35px;padding:6px 10px}.admin-main .card details[open]{margin-top:14px}.admin-main .card summary{list-style:none}.admin-main .card summary:after{content:' ›';font-size:18px}.admin-main .card details[open] summary:after{content:' ⌄'}
@media(max-width:1000px){.admin-layout{grid-template-columns:1fr;gap:18px}.admin-nav{position:static;flex-direction:row;overflow-x:auto;white-space:nowrap;padding:8px;scrollbar-width:thin}.admin-nav-title{display:none}.admin-nav a{flex:none}.admin-nav .admin-site-link{border:0;margin:0;padding:11px 13px}.admin-main .stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.admin-page{padding-top:15px}.admin-main .grid-3{grid-template-columns:1fr}.admin-toolbar{align-items:stretch}.admin-toolbar>.btn{width:100%}.admin-filters{display:grid;grid-template-columns:1fr 1fr}.admin-filters .field{grid-column:1/-1}.admin-filters .btn{white-space:normal}.admin-main .stat strong{font-size:26px}}
.admin-editor{margin:14px 0;padding:0 22px}.admin-editor summary{padding:18px 0;font-size:16px}.admin-editor[open]{padding-bottom:22px}.admin-editor .form{max-width:600px}.admin-editor .form+.form{margin-top:20px}.admin-editor h3{padding-top:12px}

/* Hourly appointment timetable */
.booking-grid-scroll{width:100%;overflow-x:auto;border:1px solid var(--line);border-radius:15px;background:#fff;min-height:90px}.booking-grid-scroll>p{padding:18px}.booking-grid{width:100%;border-collapse:separate;border-spacing:0;min-width:600px;text-align:center}.booking-grid th,.booking-grid td{padding:9px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-width:125px}.booking-grid thead th{background:#edf7f4;color:#245a58;font-size:13px;font-weight:750;padding:15px 8px}.booking-grid thead th:first-child{position:sticky;left:0;z-index:2;min-width:78px}.booking-grid tbody th{position:sticky;left:0;z-index:1;background:#f8fbfa;font-weight:750;min-width:78px}.booking-grid tr:last-child>*{border-bottom:0}.booking-grid tr>*:last-child{border-right:0}.slot-free{width:100%;border:1px solid #a9dbba;background:#e7f7eb;color:#14643b;border-radius:10px;padding:11px 7px;font-weight:750;white-space:nowrap;cursor:pointer}.slot-free:hover,.slot-free.selected{background:#1f8b51;border-color:#1f8b51;color:#fff}.slot-free:focus-visible{outline:3px solid #135a3b}.slot-busy,.slot-closed{font-size:12px;color:#8b6563;background:#faf1f0;padding:9px 11px;border-radius:8px;display:inline-block}.slot-closed{background:#f4f6f5;color:#859391}.grid-selection{background:#eaf7f1;border-radius:10px;padding:11px 14px;color:#24624a;font-weight:700;font-size:13px;margin:14px 0}.admin-booking{margin-top:32px;scroll-margin-top:100px}.admin-booking-contact{max-width:560px;margin-top:20px;border-top:1px solid var(--line);padding-top:16px}.admin-booking-contact .field{margin-top:8px}@media(max-width:680px){.booking-grid{min-width:520px}.booking-grid th,.booking-grid td{min-width:110px}.slot-free{font-size:11px}}

/* DarDent identity */
.brand-icon{display:block;width:42px;height:42px;object-fit:contain;flex:none;border-radius:50%;background:#fff}.hero-logo{margin:0;align-self:center;width:100%;background:#fff;border:1px solid #e3e9e7;border-radius:26px;overflow:hidden;box-shadow:0 22px 65px #245c5a1b}.hero-logo img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:contain}footer .brand-icon{width:38px;height:38px}@media(max-width:680px){.brand-icon{width:34px;height:34px}.hero-logo{max-width:520px;margin:auto;border-radius:18px}}

/* Homepage sections appear as they enter the viewport. Content is visible without JavaScript. */
@media(prefers-reduced-motion:no-preference){
  main > section.reveal-pending{opacity:0;transform:translateY(28px)}
  main > section:not(.hero){transition:opacity .65s ease,transform .65s cubic-bezier(.2,.7,.2,1)}
}

/* Doctor portraits keep a consistent 3:4 frame across public and staff pages. */
.portrait{position:relative;overflow:hidden;aspect-ratio:3/4;width:100%;height:auto;min-height:0;border-radius:12px;background:#e3f2ef;display:grid;place-items:center}
.portrait img{display:block;width:100%;height:100%;object-fit:cover;position:absolute;inset:0}
.portrait-placeholder{display:grid;place-items:center;width:100%;height:100%;font-size:clamp(44px,9vw,92px);color:#7eb4a9;background:radial-gradient(circle at 65% 25%,#fff,#e3f2ef 70%,#c2dfd9)}
.doctor-card .portrait{aspect-ratio:3/4;width:100%;height:auto;min-height:0;border-radius:0}
.portrait.large{width:180px;height:240px;aspect-ratio:3/4;flex:none}
.doctor-editor .portrait.large{width:120px;height:160px;margin-bottom:16px}
.doctor-profile{display:flex;gap:24px;align-items:flex-start}
.doctor-profile>div:last-child{flex:1;min-width:0}
.doctor-photo-upload{margin:14px 0;max-width:500px}
.doctor-photo-upload .field input[type=file]{width:100%;max-width:100%;font-size:13px}
.photo-crop-dialog{padding:0;border:0;border-radius:18px;max-width:min(94vw,460px);max-height:94vh;overflow:auto;box-shadow:0 30px 90px #071d3270}
.photo-crop-dialog::backdrop{background:#081e2ac9}
.photo-crop-content{padding:22px;display:grid;gap:14px;background:#fff;color:#183443}
.photo-crop-content h2,.photo-crop-content p{margin:0}
.photo-crop-content canvas{display:block;width:min(100%,300px);height:auto;aspect-ratio:3/4;margin:auto;border:2px solid #398d78;border-radius:8px;touch-action:none;cursor:grab}
.photo-crop-content canvas:active{cursor:grabbing}
.photo-crop-content label{display:grid;gap:7px}
.photo-crop-content input[type=range]{width:100%}
.photo-crop-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}
@media(max-width:680px){.doctor-card .portrait{width:90px;height:120px;min-height:0}.portrait.large{width:90px;height:120px}.doctor-profile{flex-direction:column}.photo-crop-content{padding:16px}}
@media(max-width:375px){.doctor-card .portrait{width:100%;height:auto;aspect-ratio:3/4}}

/* Longer descriptions in clinic management forms. */
.admin-main .field textarea{min-height:155px;resize:vertical;max-width:100%;line-height:1.5}

/* External and clinic reviews */
.reviews-page{display:grid;gap:26px}.reviews-section-heading h2{margin:4px 0 0}.reviews-grid{align-items:stretch}.review{min-width:0;overflow-wrap:anywhere}.review-author{font-weight:700;margin-top:10px}.reviews-form{margin:0;max-width:720px}.reviews-form textarea{min-height:145px;resize:vertical}
@media(max-width:680px){.reviews-grid{grid-template-columns:1fr}}

.clinic-settings{max-width:900px}.clinic-hours{margin:16px 0 28px}.clinic-hours h2{margin:0 0 8px}.clinic-hours-row{display:grid;grid-template-columns:48px minmax(125px,1fr) minmax(110px,1fr) minmax(110px,1fr);align-items:center;gap:12px;border-bottom:1px solid var(--line);padding:9px 0}.clinic-hours-row .field{margin:0}.clinic-hours-row strong{color:var(--teal-dark)}@media(max-width:680px){.clinic-hours-row{grid-template-columns:44px 1fr 1fr}.clinic-hours-row .field:first-of-type{grid-column:2 / -1}.clinic-hours-row strong{grid-row:1 / 3}}
.booking-date-card:disabled{opacity:.55;cursor:not-allowed;background:#f4f6f5}.booking-date-card:disabled:hover{border-color:#d7e6e8}

.booking-grid-doctors{min-width:0;text-align:left}.booking-grid-doctors tbody th{position:static;width:215px;min-width:160px;max-width:215px;padding:18px 14px;vertical-align:middle;white-space:normal;line-height:1.4}.booking-grid-doctors td{min-width:0;text-align:left;padding:13px;vertical-align:middle}.doctor-slots{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.booking-grid-doctors .slot-free{width:auto;min-width:75px;padding:10px 13px}.doctor-slots .muted{font-size:13px}
@media(max-width:680px){.booking-grid-doctors{min-width:0}.booking-grid-doctors tbody th{min-width:112px;width:35%;padding:12px 9px;font-size:12px}.booking-grid-doctors td{min-width:0;padding:10px}.booking-grid-doctors .slot-free{min-width:66px;padding:9px;font-size:12px}}

/* Booking date cards and compact doctor rows. */
.booking-dates{display:flex;gap:9px;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin;padding:3px 2px 12px;max-width:100%;-webkit-overflow-scrolling:touch}
.booking-date-card{appearance:none;flex:0 0 125px;width:125px;min-height:124px;border:1px solid #d7e6e8;border-radius:16px;background:#fbfefe;color:var(--ink);padding:17px 12px;text-align:left;display:flex;flex-direction:column;justify-content:center;gap:16px;white-space:nowrap;font:inherit;cursor:pointer}
.booking-date-card strong{font-size:16px;line-height:1.2}.booking-date-card span{font-size:14px;color:var(--muted);line-height:1.2}
.booking-date-card:hover{border-color:var(--teal);background:var(--pale)}.booking-date-card.selected{border:2px solid var(--teal);background:var(--pale);padding:16px 11px}.booking-date-card.selected strong{color:var(--teal-dark)}
.booking-grid-doctors{width:100%;table-layout:auto}.booking-grid-doctors tbody tr{display:table-row}.booking-grid-doctors tbody th{width:215px;min-width:180px;max-width:215px}.booking-grid-doctors tbody td{width:auto}.booking-grid-doctors .doctor-slots{min-height:44px}
@media(max-width:680px){.booking-date-card{flex-basis:118px;width:118px;min-height:112px}.booking-grid-doctors tbody th{width:38%;min-width:120px}.booking-grid-doctors tbody td{width:62%}}

/* Administrator calendar cells and action dialog */
.calendar-slots{width:100%;border-collapse:separate;border-spacing:3px;min-width:640px}.calendar-slots th,.calendar-slots td{padding:5px;text-align:center}.calendar-slots th:first-child{position:sticky;left:0;background:var(--bg);z-index:1}.calendar-cell{width:100%;min-height:38px;border:1px solid var(--line);border-radius:9px;cursor:pointer;font:inherit}.calendar-cell.free{background:#d9f5e8;color:#164e34}.calendar-cell.busy{background:#fce8df;color:#81371f}.calendar-cell.selected{outline:3px solid var(--teal);outline-offset:1px}.calendar-action-dialog{border:1px solid var(--line);border-radius:18px;padding:24px;max-width:min(480px,90vw);width:100%;color:var(--ink);background:var(--bg);box-shadow:0 24px 70px #0004}.calendar-action-dialog::backdrop{background:#10272a88}.calendar-action-dialog .form{display:none}.calendar-action-dialog #calendar-action-buttons{display:flex;gap:10px;margin:18px 0}
.calendar-action-dialog[open]{position:fixed;top:50%;left:50%;right:auto;bottom:auto;margin:0;z-index:30;transform:translate(-50%,-50%)}@media(max-width:640px){.calendar-action-dialog[open]{width:min(calc(100vw - 24px),480px);max-height:calc(100dvh - 24px);overflow:auto}}

.calendar-slots{min-width:0;border-spacing:0;width:100%}.calendar-slots tbody tr+tr>*{border-top:1px solid var(--line)}.calendar-slots tbody th{width:220px;min-width:170px;text-align:left;vertical-align:top;padding:14px 12px;background:var(--bg)}.calendar-slots tbody td{text-align:left;padding:10px}.calendar-doctor-slots{display:flex;flex-wrap:wrap;gap:8px}.calendar-doctor-slots .calendar-cell{width:auto;min-width:76px;padding:8px 12px;display:inline-flex;align-items:center;justify-content:center}.calendar-doctor-slots .calendar-cell.blocked{background:#ecefee;color:var(--muted);border-radius:9px}.calendar-slots tbody th:first-child{position:static}@media(max-width:640px){.calendar-slots tbody th{width:120px;min-width:120px}.calendar-doctor-slots .calendar-cell{min-width:68px;padding:7px}}

.admin-calendar-date-navigation{display:flex;align-items:stretch;gap:8px;max-width:100%;min-width:0}.admin-calendar-date-navigation .admin-calendar-dates{flex:1 1 auto;min-width:0;scroll-behavior:smooth}.admin-calendar-date-navigation>.btn{flex:0 0 42px;align-self:stretch;padding:0 10px;font-size:22px}.admin-calendar-date-navigation .booking-date-card{scroll-snap-align:start}.admin-calendar-date-navigation .booking-dates{scroll-snap-type:x proximity}

.booking-date-card{gap:6px;justify-content:center;padding:13px 11px}.booking-date-card.selected{padding:12px 10px}.booking-date-card .booking-date-weekday{font-size:13px;line-height:1.25}.booking-date-card .booking-date-available{font-size:13px;line-height:1.25;color:var(--teal-dark)}

.reschedule-dialog{width:min(900px,calc(100vw - 24px));max-width:900px;max-height:90vh;overflow:auto;border:1px solid var(--line);border-radius:20px;padding:24px;background:var(--bg);color:var(--ink);box-shadow:0 24px 70px #0004}.reschedule-dialog::backdrop{background:#10272a99}.reschedule-dialog-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.reschedule-dialog-head h2{margin:0}.reschedule-dialog .reschedule-dates{margin:16px 0}.reschedule-dialog .reschedule-grid{margin:12px 0;max-height:48vh;overflow:auto}.reschedule-dialog .reschedule-selection{margin:14px 0}.reschedule-dialog form{display:flex;justify-content:flex-end}@media(max-width:680px){.reschedule-dialog{padding:16px}.reschedule-dialog .reschedule-grid{max-height:40vh}}
.admin-tabs{display:flex;gap:8px;overflow-x:auto;white-space:nowrap;margin:0 0 22px;padding-bottom:9px;border-bottom:1px solid var(--line)}.admin-tabs a{padding:10px 14px;border-radius:10px;color:var(--muted);font-weight:700}.admin-tabs a.active{background:#dcefeb;color:#155e5c}.admin-doctor-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;margin-bottom:22px}.admin-doctor-list>a{display:flex;align-items:center;gap:12px;min-width:0}.admin-doctor-list img{width:54px;height:54px;object-fit:cover;border-radius:50%;flex:none}.admin-doctor-list .admin-doctor-info{display:grid;gap:4px;min-width:0;font-size:inherit;color:var(--ink)}.admin-doctor-list .admin-doctor-info strong{display:block;overflow-wrap:anywhere;font-size:15px;line-height:1.35}.admin-doctor-list .admin-doctor-info span{display:block;font-size:12px;line-height:1.35;color:var(--muted);overflow-wrap:anywhere}.admin-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.admin-row form{margin:0}.admin-table-scroll{max-width:100%;overflow-x:auto;border:1px solid var(--line);border-radius:14px}.admin-data-table{width:100%;min-width:650px;border-collapse:collapse}.admin-data-table th,.admin-data-table td{text-align:left;padding:12px;border-bottom:1px solid var(--line)}.admin-data-table th{background:#edf7f4}.admin-booking{margin:auto;max-height:calc(100vh - 24px)}.admin-booking .booking-dates{margin:14px 0}.admin-booking .booking-grid-scroll{max-height:42vh}.admin-main{min-width:0}.admin-main .grid-3{min-width:0}.admin-main .card{min-width:0;overflow-wrap:anywhere}@media(max-width:680px){.admin-booking{padding:16px}.admin-tabs{gap:2px}.admin-tabs a{padding:10px}}
.reschedule-dialog.admin-booking form{display:block}.admin-booking .booking-date-card{flex:none}.admin-row details{width:100%}

/* Shared appointment grid: public booking, administrator calendar and rescheduling. */
.booking-grid-doctors,
.calendar-slots { width:100%; min-width:0; border-collapse:separate; border-spacing:0; text-align:left }
.booking-grid-doctors tbody th,
.calendar-slots tbody th { position:static; width:215px; min-width:160px; max-width:215px; padding:18px 14px; vertical-align:middle; white-space:normal; line-height:1.4; text-align:left; background:#f8fbfa }
.booking-grid-doctors tbody td,
.calendar-slots tbody td { min-width:0; padding:13px; vertical-align:middle; text-align:left }
.doctor-slots,
.calendar-doctor-slots { display:flex; flex-wrap:wrap; align-items:center; gap:8px }
.booking-grid-doctors .slot-free,
.calendar-doctor-slots .calendar-cell { box-sizing:border-box; width:auto; min-width:75px; min-height:42px; padding:10px 13px; border-radius:10px; font-size:14px; font-weight:750; line-height:1.2; white-space:nowrap }
.calendar-doctor-slots .calendar-cell.free { border:1px solid #a9dbba; background:#e7f7eb; color:#14643b }
.calendar-doctor-slots .calendar-cell.free:hover,
.calendar-doctor-slots .calendar-cell.free.selected { border-color:#1f8b51; background:#1f8b51; color:#fff }
.calendar-doctor-slots .calendar-cell.busy { border:1px solid #e9c4b6; background:#faf1ed; color:#81371f }
.calendar-doctor-slots .calendar-cell.blocked { border:1px solid #d7e6e8; background:#f4f6f5; color:#576b6b }
.calendar-doctor-slots .calendar-cell:focus-visible { outline:3px solid #135a3b; outline-offset:2px }
.calendar-doctor-slots .calendar-cell.selected:not(.free) { outline:3px solid var(--teal); outline-offset:2px }
@media(max-width:680px) {
  .booking-grid-doctors tbody th,
  .calendar-slots tbody th { width:120px; min-width:120px; padding:12px 9px; font-size:12px }
  .booking-grid-doctors tbody td,
  .calendar-slots tbody td { padding:10px }
  .booking-grid-doctors .slot-free,
  .calendar-doctor-slots .calendar-cell { min-width:68px; min-height:38px; padding:9px; font-size:12px }
}

/* Home hero: calm, confident headline reveal. */
.hero-headline{position:relative}
.hero-headline .hero-type{display:inline-block;position:relative;white-space:nowrap;transform-origin:left center;opacity:0;filter:blur(7px);transform:translateY(17px) scale(.985)}
.hero-headline .hero-type-first{animation:hero-headline-reveal .74s cubic-bezier(.22,1,.36,1) .06s both}
.hero-headline .hero-type-second{font-size:.78em;letter-spacing:-.065em;animation:hero-headline-reveal .88s cubic-bezier(.22,1,.36,1) .2s both}
@keyframes hero-headline-reveal{to{opacity:1;filter:blur(0);transform:translateY(0) scale(1)}}
.hero-actions .hero-booking-button{position:relative;isolation:isolate;overflow:hidden;min-height:54px;padding:13px 17px 13px 23px;border:1px solid #177b73;border-radius:15px;background:linear-gradient(115deg,#146b66,#258d82 68%,#3c9f91);color:#fff;font-size:15px;font-weight:750;box-shadow:0 10px 24px rgba(18,101,94,.19);animation:hero-button-breathe 4.4s ease-in-out 1s infinite;transition:transform .22s ease,box-shadow .22s ease,background .22s ease}
.hero-actions .hero-booking-button::before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(110deg,transparent 27%,rgba(255,255,255,.2) 49%,transparent 71%);transform:translateX(-130%);transition:transform .65s ease}
.hero-actions .hero-booking-button:hover{transform:translateY(-3px);background:linear-gradient(115deg,#115b57,#1f8177 68%,#34998c);box-shadow:0 16px 32px rgba(18,101,94,.27)}
.hero-actions .hero-booking-button:hover::before{transform:translateX(130%)}
.hero-actions .hero-booking-button:active{transform:translateY(0) scale(.98);box-shadow:0 5px 12px rgba(18,101,94,.22)}
.hero-booking-arrow{display:grid;place-items:center;flex:none;width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,.18);font-size:19px;line-height:1;transition:transform .22s ease,background .22s ease}
.hero-booking-button:hover .hero-booking-arrow{transform:translate(2px,-2px);background:rgba(255,255,255,.27)}
@keyframes hero-button-breathe{50%{box-shadow:0 12px 28px rgba(18,101,94,.28)}}
@media(max-width:680px){.hero-headline .hero-type-second{font-size:.72em}.hero-actions .hero-booking-button{min-height:52px;font-size:14px}}
@media(prefers-reduced-motion:reduce){
  .hero-headline .hero-type{opacity:1;filter:none;transform:none;animation:none}
  .hero-actions .hero-booking-button{animation:none}
  .hero-actions .hero-booking-button::before,.hero-booking-arrow{transition:none}
}

.admin-calendar-current{margin:15px 0 10px;color:var(--teal-dark);font-size:15px;font-weight:750;text-transform:capitalize}

/* Keep all appointment actions aligned, including the form submit buttons. */
.admin-main .appointment .actions{align-items:center;gap:8px}
.admin-main .appointment .actions form{width:auto;margin:0;padding:0}
.admin-main .appointment .actions .btn,
.admin-main .appointment .actions form .btn{box-sizing:border-box;width:auto;min-height:44px;padding:11px 18px;line-height:20px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center}


/* Home page map. The iframe stays light until the visitor reaches this final section. */
.clinic-map-section{padding-top:0}
.clinic-map-card{display:grid;grid-template-columns:minmax(230px,.72fr) minmax(360px,1.28fr);overflow:hidden;border:1px solid #cce3df;border-radius:24px;background:linear-gradient(135deg,#edf8f6,#f8fcfb);box-shadow:0 18px 42px rgba(19,91,85,.09)}
.clinic-map-copy{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding:42px 38px}
.clinic-map-copy h2{margin:7px 0 10px;font-size:clamp(28px,3vw,42px)}
.clinic-map-copy p{max-width:24ch;margin:0 0 24px;color:var(--muted);line-height:1.55}
.map-open-link{display:inline-flex;align-items:center;gap:9px;padding:11px 0;border-bottom:1px solid currentColor;color:var(--teal-dark);font-weight:750;transition:gap .2s ease,color .2s ease}
.map-open-link:hover{gap:13px;color:#0e625d}
.map-open-link span{font-size:20px;line-height:1}
.clinic-map-preview{position:relative;display:block;min-height:295px;overflow:hidden;background:#dfecea;color:var(--ink);isolation:isolate}
.clinic-map-preview::before{content:'';position:absolute;inset:-28%;z-index:-2;background:linear-gradient(117deg,transparent 0 44%,#f8fbfa 44.3% 46.4%,transparent 46.7% 100%),linear-gradient(20deg,transparent 0 38%,#f7fbfa 38.3% 40.8%,transparent 41.1% 100%),linear-gradient(90deg,#dbeae7,#cbded9);transform:rotate(-4deg)}
.clinic-map-roads{position:absolute;inset:0;z-index:-1;opacity:.9;background:repeating-linear-gradient(31deg,transparent 0 71px,rgba(255,255,255,.72) 72px 76px,transparent 77px 138px),repeating-linear-gradient(119deg,transparent 0 93px,rgba(255,255,255,.58) 94px 97px,transparent 98px 173px)}
.clinic-map-pin{position:absolute;z-index:2;left:50%;top:48%;display:grid;place-items:center;width:52px;height:52px;border:4px solid #fff;border-radius:50%;background:var(--teal-dark);color:#fff;font-size:30px;line-height:1;box-shadow:0 9px 22px rgba(14,98,93,.34);transform:translate(-50%,-50%);transition:transform .25s ease,box-shadow .25s ease}
.clinic-map-preview:hover .clinic-map-pin{transform:translate(-50%,-58%) scale(1.08);box-shadow:0 14px 28px rgba(14,98,93,.42)}
.clinic-map-preview-label{position:absolute;left:22px;bottom:20px;display:grid;gap:3px;padding:11px 14px;border:1px solid #fff8;border-radius:13px;background:#fffffff0;box-shadow:0 8px 20px #275a5417}
.clinic-map-preview-label strong{font-size:15px}.clinic-map-preview-label small{font-size:12px;color:#476265}
@media(max-width:760px){.clinic-map-card{grid-template-columns:1fr}.clinic-map-copy{padding:30px 24px}.clinic-map-preview{min-height:240px}.clinic-map-copy p{max-width:none}}
@media(prefers-reduced-motion:reduce){.map-open-link{transition:none}}


/* Readable typography baseline */
body{font-size:16px;line-height:1.55}
.btn{font-size:15px}
.eyebrow{font-size:13px;letter-spacing:.12em}
.brand small{font-size:12px}
.hero-foot,.small{font-size:14px}
.field{font-size:15px}.field input,.field select,.field textarea{font-size:16px}
.check,.booking-submit p,footer p{font-size:14px}
.doctor-info p,.price-row{font-size:15px}
.badge,.mini,.step-number{font-size:13px}
.admin-nav-title{font-size:12px}
.booking-grid thead th,.grid-selection,.doctor-slots .muted{font-size:14px}
.slot-busy,.slot-closed,.slot-free{font-size:14px}
.booking-grid-doctors tbody th{font-size:14px}
.booking-grid-doctors .slot-free{font-size:14px}
.booking-date-card .booking-date-weekday,.booking-date-card .booking-date-available{font-size:14px}
.admin-doctor-list .admin-doctor-info span{font-size:14px}
.clinic-map-preview-label small{font-size:13px}
.calendar-grid.week .appointment h3,.calendar-grid.month .appointment h3{font-size:14px}
.calendar-grid.week .appointment p,.calendar-grid.month .appointment p{font-size:13px}
@media(max-width:680px){
  body{font-size:16px}
  .header-actions>.btn,.section-title .btn,.doctor-info .btn{font-size:14px}
  .brand{font-size:15px}.brand small{font-size:10px}
  .booking-grid-doctors tbody th{font-size:13px}
  .booking-grid-doctors .slot-free,.calendar-doctor-slots .calendar-cell{font-size:13px}
}


/* Keep the footer at the viewport bottom when a page has little content. */
html,body{min-height:100%}
body{min-height:100dvh;display:flex;flex-direction:column}
main{flex:1 0 auto}
footer{margin-top:auto}


/* Silver-white medical theme */
:root{--bg:#fbfcfd;--ink:#181b20;--muted:#606872;--line:#d7dce2;--teal:#2b3037;--teal-dark:#111419;--pale:#f0f2f4;--shadow:0 16px 40px rgba(18,24,31,.08);color-scheme:light}
.header{background:rgba(255,255,255,.93);border-color:#dce0e5}
.desktop-nav a{color:#4b535d}.desktop-nav a:hover,.desktop-nav a.selected{color:#050607}
.primary{background:#16191d;color:#fff}.primary:hover{background:#000}
.secondary,.outline{background:#fff;border-color:#c5cbd2;color:#1d2329}
.ghost,.text{color:#1d2329}.white{color:#171b20}
.hero{background:linear-gradient(118deg,#fff 0%,#f5f6f7 54%,#e7eaed 100%)}
.hero h1 em,.eyebrow,.features span,.step-number{color:#191d22}
.hero-foot{color:#5e6670}
.tinted{background:#f4f6f8}
.card{background:#fff;border-color:#d9dee3;box-shadow:0 14px 36px rgba(25,30,36,.055)}
.service-card .icon{color:#20252b;background:#eff1f3}
.portrait{background:radial-gradient(circle at 70% 20%,#fff,#e6e9ed 65%,#cbd1d7);color:#7c858e}
.contact-band{background:linear-gradient(135deg,#111419,#2d333a)}
.contact-band .eyebrow{color:#e0e3e6}.contact-band p{color:#d3d8dc}
.page-heading{background:#f3f5f7}
.field{color:#313941}.field input,.field select,.field textarea{border-color:#c8ced5;background:#fff}
.field input:focus,.field select:focus,.field textarea:focus{outline:3px solid #aeb5bd;outline-offset:1px;border-color:#5b636c}
footer{background:#121519;color:#fff}footer .brand{color:#fff}footer .mark{background:#343a41;color:#fff}footer p{color:#c3c9cf}
.admin-nav{background:#f4f5f6;border-color:#d8dde2}.admin-nav a{color:#3d454e}.admin-nav a:hover,.admin-nav a.active{background:#e4e7eb;color:#0e1115}.admin-nav a.active{box-shadow:inset 3px 0 #191d22}
.admin-tabs a.active{background:#e4e7eb;color:#111419}
.calendar-doctor-slots .calendar-cell.free:hover,.calendar-doctor-slots .calendar-cell.free.selected{border-color:#16191d;background:#16191d;color:#fff}
.hero-actions .hero-booking-button{border-color:#101216;background:linear-gradient(115deg,#111419,#2a3037 68%,#464e57);box-shadow:0 10px 24px rgba(14,18,22,.24)}
.hero-actions .hero-booking-button:hover{background:linear-gradient(115deg,#000,#1f252c 68%,#3d454e);box-shadow:0 16px 32px rgba(14,18,22,.32)}
.hero-actions .hero-booking-button:active{box-shadow:0 5px 12px rgba(14,18,22,.25)}
.hero-booking-arrow{background:rgba(255,255,255,.16)}.hero-booking-button:hover .hero-booking-arrow{background:rgba(255,255,255,.26)}
.clinic-map-card{border-color:#d5dade;background:linear-gradient(135deg,#f5f6f7,#fff)}
.clinic-map-preview{background:#e4e7ea}.clinic-map-pin{background:#171b20}.map-open-link{color:#1c2228}.map-open-link:hover{color:#000}


/* Dental clinic theme: white, aqua and soft medical blue */
:root{--bg:#f4fbfc;--ink:#173c46;--muted:#58757e;--line:#cfe4e8;--teal:#16889a;--teal-dark:#116c7a;--pale:#e7f5f7;--shadow:0 16px 42px rgba(32,117,132,.10);color-scheme:light}
body{background:radial-gradient(circle at 8% 10%,#e4f7f8 0,transparent 25%),radial-gradient(circle at 94% 45%,#eaf4fb 0,transparent 27%),#f4fbfc}
.header{background:rgba(255,255,255,.91);border-color:#d5e8eb}
.desktop-nav a{color:#44636c}.desktop-nav a:hover,.desktop-nav a.selected{color:#117586}
.primary{background:linear-gradient(135deg,#168b9d,#1fa7b5);color:#fff}.primary:hover{background:linear-gradient(135deg,#116f7d,#168e9d)}
.secondary,.outline{background:#fff;border-color:#bcdde2;color:#156b79}
.ghost,.text{color:#156b79}.white{color:#126c7b}
.hero{background:linear-gradient(120deg,#fff 0%,#effbfc 54%,#d9f2f5 100%)}
.hero h1 em,.eyebrow,.features span,.step-number{color:#13879a}
.hero-foot{color:#587780}
.tinted{background:linear-gradient(115deg,#eff9fa,#f7fcfd)}
.card{background:rgba(255,255,255,.96);border-color:#d4e6e9;box-shadow:0 14px 38px rgba(29,113,127,.075)}
.service-card .icon{color:#118497;background:#e5f5f7}
.portrait{background:radial-gradient(circle at 70% 20%,#fff,#dff3f4 65%,#b9e0e4);color:#63aeb7}
.contact-band{background:linear-gradient(135deg,#137688,#20a8b6)}
.contact-band .eyebrow{color:#d8fbff}.contact-band p{color:#e3fbfd}
.page-heading{background:linear-gradient(120deg,#f3fcfc,#e8f7fa)}
.field{color:#315b65}.field input,.field select,.field textarea{border-color:#c3dfe4;background:#fff}
.field input:focus,.field select:focus,.field textarea:focus{outline:3px solid #a7dbe2;outline-offset:1px;border-color:#2a9aaa}
footer{background:linear-gradient(135deg,#155a69,#0f7988);color:#fff}footer .brand{color:#fff}footer .mark{background:#55bdc7;color:#fff}footer p{color:#d0eff2}
.admin-nav{background:#eef9fa;border-color:#cfe4e8}.admin-nav a{color:#3a626b}.admin-nav a:hover,.admin-nav a.active{background:#d9f0f2;color:#126c7a}.admin-nav a.active{box-shadow:inset 3px 0 #168c9b}
.admin-tabs a.active{background:#d9f0f2;color:#126c7a}
.calendar-doctor-slots .calendar-cell.free:hover,.calendar-doctor-slots .calendar-cell.free.selected{border-color:#168b9a;background:#168b9a;color:#fff}
.hero-actions .hero-booking-button{border-color:#168494;background:linear-gradient(115deg,#147e8f,#1c9dac 68%,#4ab9c1);box-shadow:0 10px 24px rgba(22,132,148,.24)}
.hero-actions .hero-booking-button:hover{background:linear-gradient(115deg,#106d7b,#178c9c 68%,#3cadb7);box-shadow:0 16px 32px rgba(22,132,148,.30)}
.hero-actions .hero-booking-button:active{box-shadow:0 5px 12px rgba(22,132,148,.22)}
.hero-booking-arrow{background:rgba(255,255,255,.18)}.hero-booking-button:hover .hero-booking-arrow{background:rgba(255,255,255,.29)}
.clinic-map-card{border-color:#cce5e8;background:linear-gradient(135deg,#ecf9fa,#fff)}
.clinic-map-preview{background:#dceff2}.clinic-map-pin{background:#158797}.map-open-link{color:#116d7b}.map-open-link:hover{color:#0c5865}


.booking-phone{display:grid;gap:5px}
.booking-phone>span{font-size:14px;color:var(--muted)}
.booking-phone>a{width:max-content;font-size:19px;font-weight:800;letter-spacing:-.02em;color:var(--teal-dark)}
.booking-phone>small{display:block;margin-top:4px;font-size:14px;line-height:1.55;color:var(--muted)}


.contacts-map-preview{min-height:100%;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow)}
@media(max-width:760px){.contacts-map-preview{min-height:260px}}


.booking-notice{margin:18px 0;padding:14px 16px;border:1px solid #bfe3e8;border-radius:12px;background:#edf9fa;color:#27616b;line-height:1.55}


/* Staggered reveal for the home page approach and service cards. */
@media(prefers-reduced-motion:no-preference){
  main > section .features>div,
  main > section .grid-4>.service-card{transition:opacity .48s ease,transform .52s cubic-bezier(.2,.8,.2,1)}
  main > section.reveal-pending .features>div,
  main > section.reveal-pending .grid-4>.service-card{opacity:0;transform:translateY(22px)}
  main > section .features>div:nth-child(1),
  main > section .grid-4>.service-card:nth-child(1){transition-delay:.06s}
  main > section .features>div:nth-child(2),
  main > section .grid-4>.service-card:nth-child(2){transition-delay:.16s}
  main > section .features>div:nth-child(3),
  main > section .grid-4>.service-card:nth-child(3){transition-delay:.26s}
  main > section .features>div:nth-child(4),
  main > section .grid-4>.service-card:nth-child(4){transition-delay:.36s}
}

@media(prefers-reduced-motion:no-preference){
  main > section .features>div.reveal-item-pending,
  main > section .grid-4>.service-card.reveal-item-pending{opacity:0;transform:translateY(22px)}
}

@media(prefers-reduced-motion:no-preference){
  main > section .section-title h2{transition:opacity .52s ease .08s,transform .56s cubic-bezier(.2,.8,.2,1) .08s}
  main > section .section-title h2.reveal-item-pending{opacity:0;transform:translateY(18px)}
}

/* Keep later booking steps hidden until their prerequisites are selected. */
#booking-form [hidden]{display:none!important}

.ticket-layout{max-width:820px;margin:auto}
.appointment-ticket{background:var(--surface,#fff);border:1px solid var(--line);border-radius:24px;overflow:hidden;box-shadow:0 16px 48px rgba(20,65,65,.09)}
.ticket-top{display:flex;justify-content:space-between;gap:20px;background:var(--primary,#0f766e);color:#fff;padding:22px 30px;font-weight:700}
.ticket-status{margin:26px 30px 0;font-size:14px;font-weight:600}
.ticket-when{display:flex;flex-wrap:wrap;align-items:baseline;gap:12px 24px;padding:16px 30px 28px;border-bottom:2px dashed var(--line)}
.ticket-when strong{font-size:clamp(28px,6vw,42px);letter-spacing:-1px}
.ticket-when>span{font-size:28px;font-weight:600}
.ticket-when small{flex-basis:100%;color:var(--muted)}
.ticket-info{margin:0;padding:28px 30px;display:grid;grid-template-columns:1fr 1fr;gap:24px}
.ticket-info dt{font-size:13px;color:var(--muted);margin-bottom:6px}
.ticket-info dd{margin:0;font-weight:600;font-size:18px;overflow-wrap:anywhere}
.ticket-info dd small{display:block;font-weight:400;font-size:14px;margin-top:5px;color:var(--muted)}
.ticket-notice{margin:0;padding:20px 30px;background:rgba(15,118,110,.06);font-size:14px}
.ticket-actions{margin-top:24px;display:flex;flex-wrap:wrap;align-items:flex-start;gap:12px}
.ticket-change{flex:1 1 250px}
.ticket-change summary{cursor:pointer;list-style:none}
.ticket-change summary::-webkit-details-marker{display:none}
.ticket-change[open]{padding:16px;border:1px solid var(--line);border-radius:16px}
.ticket-change .form{margin-top:14px}
.ticket-cancel .btn.primary{background:#b42332}
@media(max-width:560px){.ticket-top,.ticket-when,.ticket-info,.ticket-notice{padding-left:20px;padding-right:20px}.ticket-status{margin-left:20px}.ticket-info{grid-template-columns:1fr}.ticket-actions{display:block}.ticket-change{margin-bottom:12px}}

.ticket-file-dialog{max-width:520px;width:calc(100% - 32px);border:1px solid var(--line);border-radius:20px;padding:28px;color:var(--text);background:var(--surface,#fff)}
.ticket-file-dialog::backdrop{background:rgba(0,0,0,.45)}
.ticket-file-actions{display:flex;flex-wrap:wrap;gap:10px}.ticket-file-actions [hidden]{display:none!important}

#booking-form{overflow:hidden}
#booking-form .booking-step{border-bottom:0}
.booking-calendar{max-width:560px;margin:auto}
.booking-calendar-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}
.booking-calendar-nav h3{margin:0;text-transform:capitalize;text-align:center}
.booking-calendar-nav button{padding:10px 16px}
.booking-calendar-week,.booking-calendar-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}
.booking-calendar-week{margin-bottom:10px;text-align:center;font-size:13px;color:var(--muted)}
.calendar-day{min-height:68px;padding:10px 3px;border-radius:12px;border:1px solid transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;cursor:pointer}
.calendar-day strong{font-size:20px}.calendar-day small{font-size:10px;white-space:nowrap}
.calendar-day.available{background:#dcfce7;color:#166534;border-color:#bbf7d0}
.calendar-day.available:hover,.calendar-day.available.selected{background:#16a34a;color:#fff;border-color:#15803d}
.calendar-day.unavailable{background:#f1f5f9;color:#94a3b8;cursor:default;opacity:1}
.calendar-day:focus-visible{outline:3px solid #0d9488;outline-offset:2px}
.calendar-legend{display:flex;flex-wrap:wrap;gap:16px;font-size:12px;margin-top:15px}
.calendar-legend span:first-child{color:#15803d}.calendar-legend span:last-child{color:#64748b}
.booking-time-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:12px;margin:20px 0}
.booking-time-tile{font-size:20px;padding:18px 12px;border-radius:12px;text-align:center}
#booking-back{align-self:flex-start}
@media(max-width:480px){.booking-calendar-week,.booking-calendar-days{gap:4px}.calendar-day{min-height:56px;border-radius:8px}.calendar-day strong{font-size:17px}.calendar-day small{font-size:8px}.booking-calendar-nav h3{font-size:17px}}

.document-toolbar{display:flex;flex-wrap:wrap;align-items:end;gap:8px;padding:14px;background:#f1f5f9;border:1px solid var(--line);border-radius:12px 12px 0 0}
.document-toolbar label{display:flex;flex-direction:column;gap:4px;font-size:12px}
.document-toolbar select,.document-toolbar button{padding:8px;border:1px solid #cbd5e1;border-radius:6px;background:white;color:#183c3a;font-size:13px}
.document-toolbar button{cursor:pointer;min-height:36px}
.document-toolbar input[type=color]{width:40px;height:36px;padding:3px;border:1px solid #cbd5e1}
.document-editor{min-height:420px;padding:24px;border:1px solid var(--line);border-top:0;border-radius:0 0 12px 12px;outline:none;background:white;color:#183c3a;overflow-wrap:anywhere}
.document-editor:focus{box-shadow:0 0 0 2px #0d9488}
.legal-document{line-height:1.7;overflow-wrap:anywhere}
.legal-document h1,.legal-document h2,.legal-document h3{line-height:1.3;margin:1em 0 .5em}
.legal-document ul,.legal-document ol{padding-left:28px}
.legal-document blockquote{border-left:3px solid #0d9488;padding-left:18px;margin:16px 0}
@media(max-width:600px){.document-editor{padding:16px}.document-toolbar{gap:6px}}

/* Stable button navigation: active and hover states keep identical text metrics. */
.header-inner{gap:18px}
.desktop-nav{gap:3px;padding:5px;border:1px solid #d7e9ec;border-radius:16px;background:#f0f8f9;box-shadow:inset 0 1px 0 #fff;flex-shrink:0}
.desktop-nav a,.desktop-nav a:hover,.desktop-nav a.selected{display:inline-flex;align-items:center;justify-content:center;padding:10px 11px;border-radius:11px;font-size:14px;font-weight:600;line-height:1.3;white-space:nowrap;transition:background-color .22s ease,color .22s ease,box-shadow .22s ease,transform .22s ease}
.desktop-nav a{color:#44636c}
.desktop-nav a:hover{background:#e0f0f2;color:#126c7a}
.desktop-nav a.selected{background:#fff;color:#126c7a;box-shadow:0 2px 8px #174e4d12,inset 0 0 0 1px #d2e7eb}
.desktop-nav a:active{transform:scale(.97)}
.mobile-nav a,.mobile-nav a:hover,.mobile-nav a.selected{font-weight:600;border-radius:11px;transition:background-color .22s ease,color .22s ease,transform .22s ease}
.mobile-nav a:hover{background:#e0f0f2;color:#126c7a}
.mobile-nav a.selected{background:#d9f0f2;color:#126c7a;box-shadow:inset 0 0 0 1px #c5e6eb}
.mobile-nav:not([hidden]){gap:6px;background:#f5fafb}
@media(min-width:981px) and (max-width:1200px){.header-inner{gap:12px}.desktop-nav{gap:2px;padding:4px}.desktop-nav a,.desktop-nav a:hover,.desktop-nav a.selected{font-size:13px;padding:9px 8px}}
@media(max-width:980px){.desktop-nav{display:none}}
@media(prefers-reduced-motion:reduce){.desktop-nav a,.mobile-nav a{transition:none}.desktop-nav a:active{transform:none}}

.service-image{aspect-ratio:4/3;width:100%;height:auto;margin-bottom:16px;border-radius:12px}
.service-image img{object-fit:cover}
.service-detail-image{aspect-ratio:4/3;max-width:640px;margin-bottom:24px}
.service-editor-image{max-width:240px;margin:16px 0}
.service-admin-grid{margin-top:24px}
.service-delete{margin-top:24px;border-top:1px solid var(--line);padding-top:20px}
.service-delete summary{color:#b42332;cursor:pointer}
.service-delete .btn.primary{background:#b42332}

.booking-progress{padding:20px;border:1px solid #d4eaed;border-radius:16px;background:linear-gradient(135deg,#f3fbfc,#fff);margin-bottom:12px}
.booking-progress-header{display:flex;justify-content:space-between;gap:12px;font-size:13px;font-weight:600;color:#267181;margin-bottom:12px}
.booking-progress-track{height:7px;border-radius:99px;background:#e0edef;overflow:hidden}
#booking-progress-fill{display:block;height:100%;width:0;border-radius:inherit;background:linear-gradient(90deg,#0f8296,#25b4bd);transition:width .35s ease}
.booking-progress-steps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;padding:0;margin:18px 0 0;list-style:none}
.booking-progress-steps li{display:flex;flex-direction:column;align-items:center;gap:7px;color:#7a949b;font-size:12px}
.booking-progress-steps li>span{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#eaf2f4;border:1px solid #d5e5e8;font-weight:700;transition:background .25s ease,color .25s ease,box-shadow .25s ease}
.booking-progress-steps small{font-size:12px}
.booking-progress-steps .complete{color:#15808d}
.booking-progress-steps .complete>span{background:#d9f1ec;color:#167a69;border-color:#c0e5dc}
.booking-progress-steps .current{color:#087c90;font-weight:700}
.booking-progress-steps .current>span{background:#128b9e;color:#fff;border-color:#128b9e;box-shadow:0 0 0 4px #128b9e18}
.portal-logout{margin-left:auto;display:inline-flex}
.portal-logout .btn{white-space:nowrap}
@media(max-width:480px){.booking-progress{padding:15px 10px}.booking-progress-steps{gap:3px}.booking-progress-steps small{font-size:10px}.portal-logout{margin-left:0}}
@media(prefers-reduced-motion:reduce){#booking-progress-fill,.booking-progress-steps li>span{transition:none}}

/* Compact staff cards need fixed portrait dimensions rather than 100% flex width. */
.admin-doctor-list .portrait{width:64px;height:86px;aspect-ratio:3/4;flex:0 0 64px;border-radius:10px}
.admin-doctor-list .portrait img{width:100%;height:100%;border-radius:0;object-fit:cover}
.admin-doctor-list .admin-doctor-info{flex:1;min-width:0}
.admin-doctor-list .admin-doctor-info strong{overflow-wrap:break-word;word-break:normal}
.portrait img[src="/images/nologo.png"]{object-fit:contain;padding:8px}
@media(max-width:480px){.admin-doctor-list{grid-template-columns:1fr}.admin-doctor-list .portrait{width:60px;height:80px;flex-basis:60px}}

.document-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px;margin:20px 0}
.document-card{display:flex;flex-direction:column;gap:14px;padding:24px;border:1px solid #d5e5e9;border-radius:16px;background:linear-gradient(145deg,#fff,#f1f9fb);transition:box-shadow .2s,transform .2s}
.document-card:hover{transform:translateY(-3px);box-shadow:0 10px 24px #183c3a12}
.document-card-icon{font-size:34px;color:#16899b}.document-card>span:last-child{font-size:13px;color:#16899b}
.document-modal-open{overflow:hidden}
.word-document-modal{width:min(1200px,calc(100vw - 24px));max-width:none;height:calc(100dvh - 32px);max-height:none;padding:0;border:1px solid #cad9df;border-radius:18px;background:#eef1f5;color:#183c3a;overflow:auto}
.word-document-modal::backdrop{background:#0d253d80;backdrop-filter:blur(4px)}
.word-modal-header{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:18px 24px;background:white;border-bottom:1px solid #d4dde5}
.word-modal-header h2{font-size:20px;margin:4px 0}.word-modal-header small{font-size:12px;color:#617477}
.word-document-modal>.form{display:block;margin:0}
.word-document-modal .document-toolbar{position:sticky;top:0;z-index:2;border:0;border-bottom:1px solid #cbd5e1;border-radius:0;background:#f8fafc;padding:14px 24px;box-shadow:0 3px 10px #00000008}
.word-document-modal .document-toolbar button{min-width:36px;transition:background .15s;border-color:#d9e0e7}
.word-document-modal .document-toolbar button:hover{background:#dceef8;border-color:#82b9d4}
.word-page-stage{padding:30px;overflow-x:auto;background:#e8ecf1}
.word-document-modal .document-editor{width:210mm;min-height:297mm;margin:0 auto;padding:20mm;background:white;color:#183c3a;border:0;border-radius:0;box-shadow:0 5px 24px #162b4620;font-family:Arial,sans-serif;font-size:16px;line-height:1.5}
.word-document-modal>.form>button[type=submit]{position:sticky;bottom:0;margin:0;width:100%;border-radius:0;padding:16px;z-index:3}
@media(max-width:900px){.word-page-stage{padding:16px}.word-document-modal .document-editor{width:100%;min-height:70vh;padding:24px}.word-modal-header{padding:12px 16px}.word-document-modal .document-toolbar{padding:10px}.word-document-modal{height:calc(100dvh - 16px)}}
@media(prefers-reduced-motion:reduce){.document-card{transition:none}.document-card:hover{transform:none}}

.admin-month-calendar{margin:0 0 24px;max-width:560px;padding:22px;border:1px solid #d5e8eb;border-radius:18px;background:linear-gradient(145deg,#fff,#f4fbfc)}
.admin-month-calendar .calendar-day.unavailable:not(:disabled){cursor:pointer}
.admin-month-calendar .calendar-day.unavailable:not(:disabled):hover{background:#e2e8f0;color:#475569}
.admin-month-calendar .calendar-day.selected{box-shadow:0 0 0 3px #168c9b55;outline:2px solid #168c9b;outline-offset:1px}
.admin-month-calendar .calendar-day:disabled{opacity:.5}
@media(max-width:480px){.admin-month-calendar{padding:14px 10px}}

.calendar-action-dialog{padding:0;background:#fff;border:1px solid #d0e4e9;border-radius:22px;box-shadow:0 24px 90px #16394740}
.calendar-modal-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:22px 24px;background:linear-gradient(120deg,#eef9fb,#fff);border-bottom:1px solid #deedf0}
.calendar-modal-header h3{margin:6px 0 0;font-size:22px}
.calendar-modal-x{display:grid;place-items:center;width:36px;height:36px;flex:none;border:1px solid #d6e7eb;border-radius:50%;background:#fff;color:#42646e;font-size:18px}
#calendar-action-summary{margin:18px 24px;font-size:14px;color:#526f78}
#calendar-action-details{margin:0 24px;display:grid;gap:8px;max-height:220px;overflow:auto}
.calendar-modal-slot{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 15px;background:#f3f9fa;border:1px solid #dfedf0;border-radius:12px;font-size:13px}
.calendar-modal-slot strong{max-width:60%}.calendar-modal-slot span{white-space:nowrap;color:#168294}
#calendar-action-feedback{margin:12px 24px;font-size:13px;color:#9c3b32}
.calendar-action-dialog #calendar-action-buttons{padding:0 24px;margin:20px 0 12px;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.calendar-action-dialog #calendar-action-buttons .btn{width:100%;transition:opacity .2s,transform .2s}
.calendar-action-dialog #calendar-action-buttons .btn:active{transform:scale(.98)}
#calendar-action-close{margin:0 24px 20px;border:1px solid #d7e5e9;width:calc(100% - 48px);border-radius:12px;background:#fff}
#calendar-local-status{padding:12px 16px;border-radius:12px;background:#e4f6ec;color:#176842}
@media(max-width:480px){.calendar-modal-slot{align-items:flex-start;flex-direction:column}.calendar-modal-slot strong{max-width:100%}}

/* Consistent appointment ticket controls and contact footer. */
.ticket-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:start;gap:12px}
.ticket-actions>.btn,.ticket-actions>.ticket-change>summary{width:100%;min-height:48px;margin:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:12px 10px}
.ticket-actions>.ticket-change{min-width:0;margin:0;padding:0;border:0;border-radius:0;background:transparent}
.ticket-actions>.ticket-change[open]{grid-column:span 2;padding:0 0 16px;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--surface,#fff)}
.ticket-change[open]>p,.ticket-change[open]>div,.ticket-change[open]>.form{margin-left:16px;margin-right:16px}
.ticket-actions>.ticket-cancel>summary{color:#b42332;background:#fff0f1;border:1px solid #e9b4ba}
.ticket-actions>.ticket-cancel>summary:hover{color:#fff;background:#b42332;border-color:#b42332}
.ticket-footer{background:rgba(15,118,110,.06);padding:22px 30px}
.ticket-footer .ticket-notice{padding:0;background:transparent}
.ticket-contacts{display:flex;flex-wrap:wrap;align-items:center;gap:8px 20px;margin-top:18px}
.ticket-contacts>span{flex-basis:100%;font-size:13px;color:var(--muted)}
.ticket-contacts a{font-weight:600;overflow-wrap:anywhere}
.ticket-wish{margin:18px 0 0;color:var(--primary,#0f766e);font-weight:600}
@media(max-width:700px){.ticket-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.ticket-footer{padding:20px}}
@media(max-width:380px){.ticket-actions{grid-template-columns:1fr}.ticket-actions>.ticket-change[open]{grid-column:span 1}}

.service-image,.service-editor-image{aspect-ratio:4/3;height:auto;width:100%;overflow:hidden}
.service-image img,.service-editor-image img{width:100%;height:100%;object-fit:cover}
.service-image img[src*="nologo"],.service-editor-image img[src*="nologo"]{object-fit:contain;padding:12px}
.service-edit-page{padding-top:28px;padding-bottom:48px}
.service-edit-heading{margin-bottom:18px}
.service-edit-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:22px;align-items:start}
.service-edit-main,.service-edit-media{padding:24px}
.service-edit-main h2,.service-edit-media h2{font-size:20px;margin:0 0 18px}
.service-edit-main .form h2{margin:22px 0 12px;font-size:17px}
.service-fields-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 18px}
.service-fields-grid .field{margin:0}
.service-fields-grid .field:first-child{grid-column:1/-1}
.service-doctor-options{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.service-doctor-options .check{border:1px solid var(--line);border-radius:10px;padding:10px;align-items:center;background:#f7fbfa}
.service-edit-main .field:has(textarea){margin-top:20px}
.service-edit-main textarea{min-height:130px}
.service-edit-main .form>button{margin-top:4px}
.service-edit-media .service-editor-image{max-width:none;margin:0 0 18px;border-radius:14px}
.service-edit-media .form+.form{margin-top:10px}
.service-edit-media input[type=file]{font-size:12px;padding:10px;white-space:normal}
.service-edit-media .service-delete{margin-top:22px}
.service-edit-media .service-delete summary,.service-edit-media .service-delete .btn{color:#b42332}
.service-edit-media .service-delete .btn{background:#fff0f1;border-color:#e9b4ba}
.photo-crop-dialog canvas{height:auto;max-width:100%}
@media(max-width:850px){.service-edit-layout{grid-template-columns:1fr}.service-edit-media{max-width:none}.service-edit-media .service-editor-image{max-width:400px}}
@media(max-width:560px){.service-fields-grid,.service-doctor-options{grid-template-columns:1fr}.service-edit-main,.service-edit-media{padding:18px}}
