@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@500;600;700;800&family=IBM+Plex+Mono:wght@400;500;600&display=swap');
:root{--ink:#213b39;--muted:#70827d;--paper:#f5f7f2;--surface:#fffefa;--line:#dce6dc;--pine:#176c59;--pine-dark:#124e43;--lime:#d9ed89;--coral:#c4513d;--gold:#b47a20;--sky:#e8f2ec;--shadow:0 14px 36px rgba(32,67,57,.08);font-family:'DM Sans',sans-serif;color:var(--ink);background:var(--paper)}
*{box-sizing:border-box}body{margin:0;min-height:100dvh;background:var(--paper)}button,input,select,textarea{font:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #a9cd68;outline-offset:2px}
.shell{max-width:1480px;margin:auto;min-height:100dvh}.topbar{height:70px;position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(16px,4vw,52px);background:#fffefaed;border-bottom:1px solid var(--line);backdrop-filter:blur(12px)}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;font:800 18px Manrope,sans-serif;letter-spacing:-.06em}.mark{width:35px;height:35px;display:grid;place-items:center;border-radius:12px;background:var(--pine);color:var(--lime);font:600 12px 'IBM Plex Mono',monospace;letter-spacing:-.06em}.brand em{font-style:normal;color:var(--pine)}.top-tools{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:13px}.top-tools a{font-weight:700;color:var(--pine);text-decoration:none}.actor{border-radius:99px;padding:8px 12px;background:var(--sky);color:var(--pine-dark);font-weight:700}
.main{padding:clamp(22px,4vw,48px);}.eyebrow{font:600 10px 'IBM Plex Mono',monospace;letter-spacing:.13em;text-transform:uppercase;color:var(--muted)}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:24px}.page-head h1{font:800 clamp(29px,4vw,44px)/1.05 Manrope,sans-serif;letter-spacing:-.06em;margin:8px 0}.page-head p{margin:0;color:var(--muted);font-size:14px}.head-actions,.toolbar,.button-row{display:flex;gap:9px;align-items:center;flex-wrap:wrap}
.button{min-height:44px;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:12px;padding:0 15px;font-size:13px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:7px;text-decoration:none}.button:hover{border-color:#99b8a4;background:#f5faf4}.button.primary{background:var(--pine);color:#fff;border-color:var(--pine)}.button.primary:hover{background:var(--pine-dark)}.button.danger{background:#fff2eb;border-color:#f0c4b6;color:#a53f2b}.button.small{min-height:38px;padding:0 11px;font-size:12px}.button:disabled{opacity:.55;cursor:not-allowed}
.toolbar{padding:12px;background:#edf2e9;border-radius:15px;margin-bottom:20px}.toolbar label{font:600 10px 'IBM Plex Mono',monospace;color:#657a71;text-transform:uppercase;letter-spacing:.07em}.toolbar input,.toolbar select{min-height:42px;padding:8px 10px;border:1px solid #d7e1d7;border-radius:10px;background:#fff;color:var(--ink)}.date-label{font-weight:700!important;font:700 14px Manrope,sans-serif!important;text-transform:none!important;letter-spacing:0!important;color:var(--ink)!important;min-width:185px;text-align:center}
.summary{display:flex;gap:10px;margin:0 0 20px}.summary-item{padding:12px 16px;background:var(--surface);border:1px solid var(--line);border-radius:13px;min-width:120px}.summary-item strong{display:block;font:800 22px Manrope,sans-serif;letter-spacing:-.05em}.summary-item span{font:600 9px 'IBM Plex Mono',monospace;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.layout{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:18px;align-items:start}.panel{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:20px;margin-bottom:16px;box-shadow:0 5px 17px rgba(32,67,57,.025)}.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:0 0 14px}.panel-heading h2,.panel h2{font:700 18px Manrope,sans-serif;letter-spacing:-.04em;margin:0}.muted{font-size:12px;color:var(--muted);line-height:1.5}
.appointment{display:grid;grid-template-columns:80px minmax(0,1fr) auto;gap:15px;align-items:start;padding:15px 0;border-top:1px solid #e9eee7}.appointment:first-of-type{border-top:0}.appt-time{font:700 13px 'IBM Plex Mono',monospace;color:var(--pine);padding-top:3px}.appt-name{font:700 16px Manrope,sans-serif;letter-spacing:-.03em}.appt-meta{margin-top:4px;color:var(--muted);font-size:12px;line-height:1.5}.appt-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.status{display:inline-block;margin-left:6px;border-radius:99px;padding:4px 8px;background:#edf2e9;color:#52715f;font:600 9px 'IBM Plex Mono',monospace;text-transform:uppercase}.status.cancelled{background:#fff0eb;color:#a53f2b}.empty{padding:33px 16px;text-align:center;background:#f0f5ee;border-radius:14px;color:var(--muted);font-size:13px}.empty strong{display:block;font:700 16px Manrope,sans-serif;color:var(--ink);margin-bottom:5px}
.appt-date{display:block;font:600 9px 'IBM Plex Mono',monospace;color:var(--muted);margin:0 0 5px;white-space:nowrap}.phase-view{min-width:0}.phase-heading{font:700 13px Manrope,sans-serif;text-transform:capitalize;margin-bottom:8px}.photo-meta{min-height:32px;padding:8px 2px;color:var(--muted);font-size:11px;line-height:1.4}.history-select{margin-top:3px}.history-select select{min-width:0}
.field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.field{display:flex;flex-direction:column;gap:5px;min-width:0}.field.wide{grid-column:1/-1}.field label{font:600 9px 'IBM Plex Mono',monospace;letter-spacing:.07em;text-transform:uppercase;color:#657a71}.field input,.field select,.field textarea{width:100%;min-height:43px;padding:9px 11px;background:#fff;border:1px solid #d7e1d7;border-radius:10px;color:var(--ink);outline:none}.field textarea{min-height:74px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{border-color:#76a58b;box-shadow:0 0 0 3px #dff0e5}.hint{font-size:11px;color:var(--muted);line-height:1.45}.form-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}.quote{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-radius:12px;background:#edf5ef;margin-top:11px}.quote strong{font:700 18px Manrope,sans-serif;color:var(--pine)}.rule-head,.rule-row{display:grid;grid-template-columns:1fr 1fr 105px 36px;gap:7px;align-items:center}.rule-head{font:600 9px 'IBM Plex Mono',monospace;color:var(--muted);text-transform:uppercase;margin:14px 0 6px}.rule-row{margin:6px 0}.rule-row input{min-width:0;width:100%;height:39px;border:1px solid #d7e1d7;border-radius:9px;padding:7px 9px;background:#fff;color:var(--ink)}.icon-button{height:38px;width:36px;border-radius:9px;border:1px solid #ecd1c7;background:#fff2eb;color:#a53f2b;font-weight:700}
.error{min-height:18px;margin-top:8px;color:#a53f2b;font-size:12px;line-height:1.45}.notice{padding:12px 14px;background:#e7f4e7;color:#286445;border:1px solid #c6dfc7;border-radius:12px;margin-bottom:16px;font-size:13px}.notice.error{background:#fff0eb;color:#963d2d;border-color:#edc0b4}.notice[hidden]{display:none}.service-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 0;border-top:1px solid #e9eee7}.service-item:first-child{border-top:0}.service-item strong{font-size:13px}.service-item small{display:block;color:var(--muted);font-size:11px;margin-top:3px}
.photo-panel{margin-top:18px}.photo-pair{display:grid;grid-template-columns:1fr 1fr;gap:9px}.photo-slot{min-height:150px;border-radius:13px;background:#f0f4ed;overflow:hidden;display:grid;place-items:center;position:relative;border:1px dashed #c8d8c9}.photo-slot img{width:100%;height:100%;max-height:240px;object-fit:cover}.photo-slot span{font:600 9px 'IBM Plex Mono',monospace;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.photo-controls{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.photo-controls label{display:block;text-align:center}.photo-controls input{position:absolute;width:1px;height:1px;opacity:0}.photo-controls .button{width:100%}
.scrim{position:fixed;inset:0;z-index:20;background:#172b25a6;display:grid;place-items:center;padding:14px}.dialog{width:min(680px,100%);max-height:92dvh;overflow:auto;background:var(--surface);border-radius:20px;padding:23px;box-shadow:0 30px 90px #142c2466}.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:18px}.dialog-head h2{font:800 22px Manrope,sans-serif;letter-spacing:-.05em;margin:0}.close{width:40px;height:40px;background:#edf2eb;border:0;border-radius:11px;color:#50685c;font-size:21px}.loading-shell{max-width:1100px;margin:50px auto;padding:24px}.skeleton-line,.skeleton-card{background:linear-gradient(90deg,#e9efe8 25%,#f5f7f2 45%,#e9efe8 65%);background-size:200% 100%;animation:shimmer 1.2s infinite;border-radius:14px}.skeleton-line{height:26px;width:34%;margin-bottom:20px}.skeleton-card{height:280px}@keyframes shimmer{50%{opacity:.55}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:900px){.layout{grid-template-columns:1fr}.side-column{display:grid;grid-template-columns:1fr 1fr;gap:14px}.side-column .panel{margin-bottom:0}}
@media(max-width:680px){.topbar{height:62px}.brand{font-size:16px}.top-tools{gap:7px}.actor{display:none}.main{padding:20px 14px 35px}.page-head{align-items:flex-start;flex-direction:column}.head-actions{width:100%}.head-actions .button{flex:1}.toolbar{align-items:stretch}.toolbar>*{flex:1}.date-label{flex:2}.appointment{grid-template-columns:58px minmax(0,1fr);gap:10px}.appt-actions{grid-column:2;justify-content:flex-start}.side-column{grid-template-columns:1fr}.field-grid{grid-template-columns:1fr}.field.wide{grid-column:auto}.rule-head,.rule-row{grid-template-columns:1fr 1fr 78px 34px;gap:4px}.panel{padding:16px}.photo-slot{min-height:120px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

/* Grooming runs standalone, so keep its readability improvements local and layout-neutral. */
body{font-weight:500}
.field input,.field select,.field textarea{font-weight:500}
:root{--muted:#53675f}
.page-head p,.muted,.appt-meta,.empty,.hint,.photo-meta,.service-item small,.top-tools{font-weight:500}
.page-head p,.appt-meta,.muted,.hint,.photo-meta,.service-item small,.top-tools{color:#53675f}
.eyebrow,.toolbar label,.field label,.summary-item span,.rule-head,.status,.appt-date,.photo-slot span{font-size:11px;font-weight:700;letter-spacing:.055em}
.eyebrow,.toolbar label,.field label,.rule-head,.status,.appt-date,.photo-slot span{color:#425b52}
.toolbar label,.field label{font-family:'DM Sans',sans-serif}
.page-head p,.appt-meta{line-height:1.55}
.muted,.hint,.photo-meta,.service-item small{font-size:13px;line-height:1.5}
.empty{font-size:14px;line-height:1.5}
.button,.top-tools a,.actor{font-weight:700}
.button.small{font-size:13px}
.panel-heading h2,.panel h2,.phase-heading,.appt-name,.service-item strong{font-weight:700}
