:root{--text-primary:#18302b;--text-muted:#5d716b;--text-subtle:#66746e;--text-blocked:#6d7b74;--text-inverse:#fff;--text-error:#7b1919;--text-slot:#737373;--text-empty:#9aa8a1;--text-unavailable:#89958f;--text-sunday-error:#9b1c1c;--icon-muted:#6e7d76;--icon-disabled:#aebbb5;--canvas:#f5f7f5;--surface:#fff;--surface-subtle:#f7faf8;--surface-soft:#fbfdfb;--surface-hover:#f1faf4;--surface-hover-strong:#edf5f0;--surface-control-hover:#e6f3eb;--surface-day-link-hover:#edf8f0;--surface-room-hover:#f4fbf6;--surface-disabled:#edf1ef;--surface-disabled-soft:#f1f4f2;--surface-unavailable:#f0f2f1;--surface-blocked:#f5f7f6;--surface-lock-notice:#f4f6f5;--surface-special:#edf0ef;--surface-confirmed:#e7f7ed;--surface-scheduled:#fff7df;--surface-cancelled:#e8f1ff;--surface-conflict:#ffe2e2;--surface-error-soft:#fff0f0;--surface-notification:#f2faf5;--surface-notification-opened:#fff1f1;--surface-danger:#ffe0df;--surface-mint:#dff2e6;--surface-auth-start:#d9eee4;--surface-auth-end:#f8fbf8;--line:#d9e1dc;--line-input:#c6d2cb;--line-card:#dce5e0;--line-room:#d8e5dc;--line-unavailable:#d9dfdc;--line-disabled:#d7dfda;--line-availability:#d8d8d8;--line-room-gap:#cccccc;--line-popover:#d7e4db;--line-control-hover:#c8e3d2;--line-today:#cde8d7;--line-focus:#9bc6aa;--line-month:#8fa79a;--line-availability-disabled:#d8e0db;--accent:#087c5c;--accent-read:#078461;--header-bg:#103d34;--header-text:#dcebe4;--toast-bg:#125b46;--status-confirmed-border:#2f855a;--status-cancelled-border:#2b6cb0;--status-scheduled-border:#d69e2e;--status-special-border:#7b8983;--status-conflict-border:#c53030;--status-sunday-border:#d14343;--status-error:#b42318;--status-payment-required:#d97706;--status-notification:#e5484d;--status-notification-target:#4c9b73;--focus-ring:#71b998;--availability-text:#8a8a8a;--shadow-auth:#0a342420;--shadow-floating:#18302b22;--shadow-toast:#18302b45;--shadow-popover:rgba(22,53,39,.18);--ink:var(--text-primary);--muted:var(--text-muted);--paper:var(--canvas);--card:var(--surface);--mint:var(--surface-mint);--danger:var(--surface-danger)}
.theme-dark{color-scheme:dark;--text-primary:#e8eaed;--text-muted:#b7c1bc;--text-subtle:#a8b2ad;--text-blocked:#b3bcb7;--text-inverse:#fff;--text-error:#ffb4ab;--text-slot:#b8b8b8;--text-empty:#9da9a2;--text-unavailable:#aab4ae;--text-sunday-error:#ffb4ab;--icon-muted:#b0bbb5;--icon-disabled:#78837d;--canvas:#151617;--surface:#202124;--surface-subtle:#252729;--surface-soft:#1c1e20;--surface-hover:#27332c;--surface-hover-strong:#29322f;--surface-control-hover:#2a3c34;--surface-day-link-hover:#293b33;--surface-room-hover:#293b33;--surface-disabled:#2b2e30;--surface-disabled-soft:#2c3032;--surface-unavailable:#262829;--surface-blocked:#2b2e30;--surface-lock-notice:#2a2d2f;--surface-special:#313637;--surface-confirmed:#173b2b;--surface-scheduled:#453718;--surface-cancelled:#263950;--surface-conflict:#512b2d;--surface-error-soft:#472628;--surface-notification:#183b2b;--surface-notification-opened:#4a292b;--surface-danger:#49282a;--surface-mint:#1a382b;--surface-auth-start:#151617;--surface-auth-end:#1d2021;--line:#3d4440;--line-input:#58615d;--line-card:#424945;--line-room:#45534a;--line-unavailable:#454b48;--line-disabled:#4b514e;--line-availability:#565656;--line-room-gap:#585858;--line-popover:#4c5e54;--line-control-hover:#4e7563;--line-today:#4a8068;--line-focus:#65cb9c;--line-month:#64736b;--line-availability-disabled:#4b5550;--accent:#35a878;--accent-read:#4ec996;--header-bg:#123c31;--header-text:#d5ddd8;--toast-bg:#1c6a50;--status-confirmed-border:#47b77d;--status-cancelled-border:#74a9df;--status-scheduled-border:#e0ad47;--status-special-border:#9ba9a2;--status-conflict-border:#ef6b70;--status-sunday-border:#ef6b70;--status-error:#cf5157;--status-payment-required:#d97706;--status-notification:#f05b63;--status-notification-target:#61b98b;--focus-ring:#65cb9c;--availability-text:#aaaaaa;--shadow-auth:#00000066;--shadow-floating:#00000055;--shadow-toast:#00000066;--shadow-popover:rgba(0,0,0,.5)}
.theme-dark{--ink:#e8eaed;--muted:#b7c1bc;--paper:#151617;--card:#202124;--mint:#1a382b;--danger:#49282a}
:root{--surface-today:#f5faf6;--surface-slot-hover:#f1faf4;--payment-paid:#087c5c;--payment-unpaid:#7b8983}
.theme-dark{--surface-today:#27322d;--surface-slot-hover:#27332c;--payment-paid:#35a878}
.accent-blue{--accent:#3f78a9;--accent-read:#32638d;--header-bg:#244d70;--line-focus:#abc9de;--line-today:#cfe0eb;--line-control-hover:#cfe0eb;--surface-today:#f5f8fa;--surface-slot-hover:#eef6fa;--surface-control-hover:#eef6fa;--surface-day-link-hover:#eef6fa;--surface-room-hover:#f2f8fb;--surface-auth-start:#dbeaf5;--surface-auth-end:#f8fafc}
.accent-violet{--accent:#7657a6;--accent-read:#62458d;--header-bg:#4a375f;--line-focus:#cbbce0;--line-today:#e1d9ec;--line-control-hover:#e1d9ec;--surface-today:#faf8fb;--surface-slot-hover:#f7f4fa;--surface-control-hover:#f7f4fa;--surface-day-link-hover:#f7f4fa;--surface-room-hover:#faf8fc;--surface-auth-start:#eee7f5;--surface-auth-end:#fbf9fc}
.accent-slate{--accent:#4e6f7c;--accent-read:#3d5c68;--header-bg:#2d4b55;--line-focus:#acc6cd;--line-today:#d0e0e3;--line-control-hover:#d0e0e3;--surface-today:#f5f8f8;--surface-slot-hover:#f0f7f8;--surface-control-hover:#f0f7f8;--surface-day-link-hover:#f0f7f8;--surface-room-hover:#f4fafb;--surface-auth-start:#e4eef1;--surface-auth-end:#f8fafb}
.theme-dark.accent-blue{--accent:#4b7ea3;--accent-read:#315d7d;--header-bg:#264b66;--line-focus:#accfe2;--line-today:#4c748c;--line-control-hover:#5b839a;--surface-today:#283137;--surface-slot-hover:#223944;--surface-control-hover:#223944;--surface-day-link-hover:#223944;--surface-room-hover:#223944}
.theme-dark.accent-violet{--accent:#765995;--accent-read:#5c4278;--header-bg:#40334d;--line-focus:#d1c1df;--line-today:#725b81;--line-control-hover:#806a8e;--surface-today:#302d35;--surface-slot-hover:#342c3d;--surface-control-hover:#342c3d;--surface-day-link-hover:#342c3d;--surface-room-hover:#342c3d}
.theme-dark.accent-slate{--accent:#527985;--accent-read:#3d5c68;--header-bg:#2c4850;--line-focus:#b8d1d7;--line-today:#4e7077;--line-control-hover:#5d8087;--surface-today:#293234;--surface-slot-hover:#293d41;--surface-control-hover:#293d41;--surface-day-link-hover:#293d41;--surface-room-hover:#293d41}
.theme-dark{--return-highlight:#c9e6d7}
.theme-dark.accent-blue{--return-highlight:#c4ddea}
.theme-dark.accent-violet{--return-highlight:#dfd3ec}
.theme-dark.accent-slate{--return-highlight:#cbdde0}
:root{--surface-upcoming:#e7f7ed;--line-upcoming:#2f855a}
.theme-dark{--surface-upcoming:#173b2b;--line-upcoming:#47b77d}
.accent-blue{--surface-upcoming:#e6f1f8;--line-upcoming:#3f78a9;--surface-notification:#eef6fa;--status-notification-target:#3f78a9}
.accent-violet{--surface-upcoming:#f3eef8;--line-upcoming:#7657a6;--surface-notification:#f7f4fa;--status-notification-target:#7657a6}
.accent-slate{--surface-upcoming:#eaf2f4;--line-upcoming:#4e6f7c;--surface-notification:#f0f7f8;--status-notification-target:#4e6f7c}
.theme-dark.accent-blue{--surface-upcoming:#1d3441;--line-upcoming:#4b7ea3;--surface-notification:#1d3441;--status-notification-target:#4b7ea3}
.theme-dark.accent-violet{--surface-upcoming:#30293a;--line-upcoming:#765995;--surface-notification:#30293a;--status-notification-target:#765995}
.theme-dark.accent-slate{--surface-upcoming:#25383c;--line-upcoming:#527985;--surface-notification:#25383c;--status-notification-target:#527985}
:root{--surface-month-sheet:#f7f7f8;--surface-month-header:#eeeeef;--surface-month-label:#f5f5f6;--surface-month-time:#fbfbfc;--line-month-sheet:#d5d6d8;--line-month-day:#989b9f}
.theme-dark{--surface-month-sheet:#202123;--surface-month-header:#292a2c;--surface-month-label:#252628;--surface-month-time:#1e1f21;--line-month-sheet:#414346;--line-month-day:#74777b}
:root{--patient-blocked-badge:#74797d}
.theme-dark{--patient-blocked-badge:#686d71}
/* Bazowe szarości interfejsu pozostają neutralne niezależnie od koloru wiodącego. */
:root{--text-primary:#24272a;--text-muted:#656a6d;--text-subtle:#6b7074;--text-blocked:#74797d;--icon-muted:#707579;--icon-disabled:#adb2b5;--canvas:#f5f6f6;--surface-subtle:#f8f9f9;--surface-soft:#fcfcfc;--surface-hover:#f3f4f4;--surface-hover-strong:#eef0f0;--surface-disabled:#eef0f0;--surface-disabled-soft:#f2f3f3;--surface-unavailable:#f1f2f2;--surface-blocked:#f5f6f6;--surface-lock-notice:#f4f5f5;--surface-special:#eef0f0;--line:#d9dddf;--line-input:#c8cdcf;--line-card:#dde1e2;--line-room:#d9dddf;--line-unavailable:#daddde;--line-disabled:#d8dcde;--line-availability-disabled:#dadddc;--line-popover:#d4d9db;--availability-text:#85898c;--shadow-floating:#24272a22;--shadow-popover:rgba(31,35,38,.18)}
.theme-dark{--text-primary:#e8eaed;--text-muted:#b8bcc0;--text-subtle:#aaafb3;--text-blocked:#b3b8bc;--icon-muted:#b2b7bb;--icon-disabled:#7d8286;--canvas:#151617;--surface-subtle:#252729;--surface-soft:#1c1e20;--surface-hover:#292b2d;--surface-hover-strong:#2c2e30;--surface-disabled:#2b2e30;--surface-disabled-soft:#2d3032;--surface-unavailable:#282a2c;--surface-blocked:#2b2e30;--surface-lock-notice:#2b2d2f;--surface-special:#313436;--line:#414346;--line-input:#5a5d61;--line-card:#45474a;--line-room:#46494c;--line-unavailable:#494c4f;--line-disabled:#4d5053;--line-availability-disabled:#505357;--line-popover:#53565a;--availability-text:#adafb2;--shadow-floating:#00000055;--shadow-popover:rgba(0,0,0,.5)}
*{box-sizing:border-box}
body{--return-highlight:var(--accent);margin:0;background:var(--paper);color:var(--ink);font:15px/1.45 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
header{position:sticky;top:0;z-index:1000;min-height:62px;padding:0 4vw;background:var(--header-bg);color:var(--text-inverse);display:flex;align-items:center;gap:30px}
body.maintenance-mode>header{background:var(--status-error)}
.header-maintenance-link{position:absolute;top:50%;left:50%;z-index:2;padding:5px 8px;border-radius:5px;color:var(--text-inverse);font-size:14px;font-weight:750;line-height:1;transform:translate(-50%,-50%)}.header-maintenance-link:hover,.header-maintenance-link:focus-visible{background:color-mix(in srgb,var(--text-inverse) 14%,transparent);color:var(--text-inverse);outline:2px solid var(--text-inverse);outline-offset:1px}
header a{color:var(--text-inverse);text-decoration:none}
.brand{font-size:20px;font-weight:750}
nav{display:flex;gap:22px;flex:1}
header form{margin:0}
.header-view-controls{display:flex;align-items:center;gap:4px}
header .theme-toggle{display:grid;place-items:center;width:32px;height:32px;padding:0;border:1px solid var(--line-unavailable);border-radius:6px;background:transparent;color:var(--header-text);cursor:pointer;transition:color .15s ease,border-color .15s ease,background-color .15s ease}
header .theme-toggle:hover,header .theme-toggle:focus-visible{border-color:var(--accent);background:var(--surface-control-hover);color:var(--accent);outline:none}
header .theme-toggle .mdi-icon{width:17px;height:17px}
.schedule-focus-icon{display:block;width:17px;height:17px;background:currentColor;mask:center/contain no-repeat;-webkit-mask:center/contain no-repeat}.schedule-focus-icon[hidden]{display:none}.schedule-focus-icon-expand{mask-image:url('/arrow-expand.svg');-webkit-mask-image:url('/arrow-expand.svg')}.schedule-focus-icon-collapse{mask-image:url('/arrow-collapse.svg');-webkit-mask-image:url('/arrow-collapse.svg')}
.theme-dark header .theme-toggle{border-color:var(--header-text)}
.theme-dark header .theme-toggle:hover,.theme-dark header .theme-toggle:focus-visible{border-color:var(--text-inverse);background:var(--text-inverse);color:var(--header-bg)}
.logged-in-user{margin-left:auto;color:var(--text-inverse);font:inherit;font-weight:700}
.header-notification-badge{display:inline-grid;place-items:center;min-width:24px;height:24px;padding:0 6px;border:0;border-radius:999px;background:var(--status-notification);color:var(--text-inverse);font-size:13px;font-weight:750;line-height:1;cursor:pointer}.logged-in-user+.header-notification-badge{margin-left:-22px}.header-notification-badge:hover,.header-notification-badge:focus-visible{outline:2px solid var(--text-inverse);outline-offset:2px}
.header-notification-popover{position:fixed;top:70px;right:16px;z-index:2000;width:min(370px,calc(100vw - 32px));max-height:min(70vh,550px);overflow:auto;padding:10px;border:1px solid var(--line-popover);border-radius:10px;background:var(--surface);box-shadow:0 10px 24px var(--shadow-popover);color:var(--muted);font-size:12px}.header-notification-list{display:grid;gap:7px}.header-notification-item{display:grid;gap:2px;padding:7px 9px;border:1px solid var(--line-card);border-left:4px solid var(--status-conflict-border);border-radius:7px;background:var(--surface-notification-opened);color:var(--ink);text-decoration:none}.header-notification-item.past{border-left-color:var(--status-special-border);background:var(--surface-special)}.header-notification-item.self{border-left-color:var(--accent);background:var(--surface-notification)}.header-notification-item:hover,.header-notification-item:focus-visible{border-color:var(--accent);outline:none}.header-notification-item span{color:var(--muted);font-size:11px}.header-notification-item strong{font-size:13px}.header-notification-item .header-notification-preview{overflow:hidden;color:var(--ink);font-size:12px;font-weight:400;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}
.appointment-quick-popover{position:fixed;z-index:2000;width:min(250px,calc(100vw - 24px));padding:8px;border:1px solid var(--line-popover);border-radius:10px;background:color-mix(in srgb,var(--surface) 90%,transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:0 10px 24px var(--shadow-popover);color:var(--ink)}.appointment-quick-popover[hidden]{display:none}.appointment-quick-popover form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:0}.appointment-quick-toggle{grid-column:1/-1;display:block;min-width:0;margin:0;color:var(--accent);font-size:11px;font-weight:700;cursor:pointer}.appointment-quick-toggle[hidden]{display:none}.appointment-quick-toggle input{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.appointment-quick-toggle span{display:flex;align-items:center;justify-content:center;min-height:30px;padding:5px 7px;border:1px solid var(--accent);border-radius:7px;background:var(--surface);text-align:center}.appointment-quick-toggle:hover span{background:var(--surface-control-hover)}.appointment-quick-toggle input:checked+span{background:var(--accent);color:var(--text-inverse)}.appointment-quick-toggle input:focus-visible+span{outline:2px solid var(--focus-ring);outline-offset:1px}.appointment-quick-toggle input:disabled+span{border-color:var(--line-disabled);background:var(--surface-disabled);color:var(--icon-disabled);cursor:not-allowed}.appointment-quick-field{grid-column:1/-1;display:grid;gap:3px;min-width:0;margin:0;font-size:10px}.appointment-quick-field select{width:100%;min-width:0;height:31px;padding:4px 7px;border-radius:7px;font-size:12px}.appointment-quick-popover .appointment-quick-details{grid-column:1/-1;display:flex;align-items:center;justify-content:center;min-height:30px;padding:5px 7px;border-radius:7px;font-size:11px;line-height:1.2}.appointment-quick-save-state{grid-column:1/-1;color:var(--muted);font-size:10px;text-align:center}.appointment-quick-save-state:empty{display:none}.appointment-quick-popover.is-saving form{pointer-events:none}
main{max-width:1880px;margin:auto;padding:26px 4vw 48px}
h1{margin:0;font-size:28px}
h2{font-size:17px;margin:0 0 12px}
p{margin:6px 0}
.auth{min-height:100vh;display:grid;place-items:center;background:linear-gradient(140deg,var(--surface-auth-start),var(--surface-auth-end))}
.auth-card{width:min(430px,92vw);padding:32px;background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:0 18px 55px var(--shadow-auth)}
.auth-card form,article form{display:grid;gap:14px;margin-top:20px}
label{display:grid;gap:5px;color:var(--muted);font-size:13px;font-weight:650}
input,select,textarea,button,.button{font:inherit;border:1px solid var(--line-input);border-radius:10px;padding:9px 10px;background:var(--surface);color:var(--ink)}
input:disabled,select:disabled,button:disabled{background:var(--surface-disabled)!important;border-color:var(--line-disabled)!important;color:var(--status-special-border)!important;cursor:not-allowed!important;opacity:1}
.appointment-booking-dialog label.booking-field-error,.new-patient-dialog label.booking-field-error{color:var(--status-error)}
.appointment-booking-dialog input.booking-field-error,.appointment-booking-dialog select.booking-field-error,.appointment-booking-dialog .appointment-additional-fees-toggle.booking-field-error,.new-patient-dialog input.booking-field-error{border-color:var(--status-error)!important;box-shadow:0 0 0 1px var(--status-error)}
.required-field-marker{color:var(--status-error)}
textarea{min-height:90px;resize:vertical}
button,.button{background:var(--accent);border-color:var(--accent);color:var(--text-inverse);cursor:pointer;font-weight:700;text-decoration:none;display:inline-block}
.secondary{background:var(--accent);color:var(--text-inverse);border-color:var(--accent)}
.danger{background:var(--status-error);border-color:var(--status-error)}
.delete-form{margin-top:10px}
.appointment .delete-form{grid-column:1/-1;margin-top:0}
.appointment .delete-form .danger{padding:5px 7px;font-size:12px;font-weight:700}
.link{background:transparent;border:0;padding:0;font-weight:500}
.flash{padding:12px 14px;border-radius:8px;margin:0 0 18px;background:var(--mint)}
.flash.error{background:var(--danger);color:var(--text-error)}
.toast{position:fixed;z-index:1000;top:20px;right:20px;max-width:min(420px,calc(100vw - 40px));padding:13px 16px;border-radius:9px;background:var(--toast-bg);color:var(--text-inverse);box-shadow:0 10px 28px var(--shadow-toast);transition:opacity .25s ease,transform .25s ease}
.toast.toast-position-bottom-right{top:auto;bottom:20px}
.toast.error{background:var(--status-error)}
.toast.is-hidden{opacity:0;transform:translateY(-10px)}
.toast.toast-position-bottom-right.is-hidden{transform:translateY(10px)}
@keyframes modal-submit-error-shake{0%,100%{transform:translateX(0)}20%,60%{transform:translateX(-9px)}40%,80%{transform:translateX(9px)}}
.appointment-booking-dialog.has-submit-error,.new-patient-dialog.has-submit-error{animation:modal-submit-error-shake .34s ease-in-out}
@media(prefers-reduced-motion:reduce){.appointment-booking-dialog.has-submit-error,.new-patient-dialog.has-submit-error{animation:none}}
.toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:20px}
.toolbar>div:last-child{display:flex;gap:8px;flex-wrap:wrap}
.schedule-navigation{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.toolbar>div.schedule-focus-navigation{display:none}.schedule-controls-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 8px}.schedule-controls-row>.month-category-filter{flex:1 1 auto;width:auto;margin:0}.schedule-controls-row>.schedule-normal-navigation{flex:0 0 auto;justify-content:flex-end}.week-schedule-controls{justify-content:space-between}.week-view .toolbar>div:only-child{display:block}
.schedule-period-button{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:112px;height:39px;min-height:39px;line-height:1;white-space:nowrap}.schedule-period-jump{display:flex;align-items:center;width:160px;margin:0}.schedule-period-jump select,.schedule-period-jump input[type="date"]{box-sizing:border-box;width:160px;min-width:0;height:39px;min-height:39px}
.schedule-normal-navigation .schedule-period-previous,.schedule-normal-navigation .schedule-period-next{width:36px;padding-right:0;padding-left:0}.schedule-normal-navigation .schedule-period-previous .schedule-period-button-label,.schedule-normal-navigation .schedule-period-next .schedule-period-button-label{display:none}
.booking,section.admin-grid>article,.notes,main>section:not(.day):not(.appointment-quick-popover){background:var(--card);border:1px solid var(--line);border-radius:11px;padding:18px;margin-bottom:22px}
.booking-form{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr));gap:12px;align-items:end}
.booking-form .wide{grid-column:span 2}
.appointment-additional-fees{display:flex;flex-wrap:wrap;gap:8px 14px;min-width:0;margin:0;padding:8px 10px;border:1px solid var(--line-input);border-radius:10px}.appointment-additional-fees legend{padding:0 4px;color:var(--muted);font-size:13px;font-weight:650}.appointment-additional-fees .check{display:flex;align-items:center;gap:6px;font-size:13px}
.booking-form .service-select{grid-column:span 2;min-width:0}
.booking-form .service-select select{width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.booking-form button{height:39px}
.company-hours-form{display:grid;grid-template-columns:repeat(3,minmax(190px,1fr));gap:12px;align-items:end}
.company-hours-form label span{display:flex;align-items:center;gap:6px}.company-hours-form input{min-width:0}.company-hours-form button{height:39px}
.patient-search{position:relative;min-width:0}
#patient-search{width:100%}
.patient-picker #patient-search{font-size:13px}
.patient-picker,.patients-search-bar{display:flex;gap:8px;align-items:end}
.patient-picker .patient-search,.patients-search-bar .patient-search{flex:1}
.patient-picker>button{padding:8px 12px;font-size:20px;line-height:1}
.patients-search-bar{max-width:680px}
.patients-search-bar button{white-space:nowrap}
.patient-search-hint{color:var(--muted);font-size:12px}
.patient-results{position:absolute;z-index:20;top:100%;left:0;right:0;max-height:220px;overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:7px;box-shadow:0 10px 22px var(--shadow-floating)}
.patient-picker .patient-results{right:auto;width:520px;max-width:calc(100vw - 32px)}
.patient-results:empty{display:none}
.patient-result{display:block;width:100%;padding:8px 10px;text-align:left;background:var(--surface);color:var(--ink);border:0;border-bottom:1px solid var(--line);border-radius:0;font-weight:500}
.patient-result:hover{background:var(--surface-hover-strong)}
.patient-result:focus,.patient-result.is-keyboard-selected{background:var(--surface-hover-strong);outline:2px solid var(--accent);outline-offset:-2px}
.patient-result.is-blocked{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--text-blocked);background:var(--surface-blocked)}
.patient-result-status{flex:0 0 auto;padding:2px 5px;border-radius:999px;background:var(--patient-blocked-badge);color:var(--text-inverse);font-size:10px;font-weight:700}
.week-specialists{display:grid;gap:16px}.specialist-week{display:grid;grid-template-columns:36px minmax(0,1fr);align-items:stretch;gap:6px;min-width:0}.specialist-week[hidden]{display:none}.specialist-week-button{display:flex;box-sizing:border-box;width:36px;min-width:36px;min-height:260px;align-items:center;justify-content:center;margin:0 0 14px;padding:0;overflow:hidden;border:1px solid var(--line);border-radius:8px;background:var(--surface-month-header);color:var(--ink);font-size:13px;line-height:1;cursor:pointer}.specialist-week-button>span{display:block;white-space:nowrap;transform:rotate(-90deg)}.specialist-week-button:hover,.specialist-week-button:focus-visible{border-color:var(--accent);background:var(--surface-control-hover);color:var(--accent)}.specialist-week.is-week-filter-selected>.specialist-week-button{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 22%,var(--surface-month-header));color:var(--accent)}.specialist-week.is-selected>.specialist-week-button{border-color:var(--accent);background:var(--accent);color:var(--text-inverse)}.specialist-week.is-selected>.specialist-week-button:hover,.specialist-week.is-selected>.specialist-week-button:focus-visible{background:var(--accent-read);color:var(--text-inverse)}.week-grid{display:grid;grid-template-columns:repeat(var(--week-day-count,6),minmax(210px,1fr));gap:6px;min-width:0;overflow-x:auto;margin:-2px -2px 0;padding:2px 2px 14px}
body.week-scroll-restore-pending .week-specialists{visibility:hidden;pointer-events:none}
.booking-specialist-bar{display:grid;grid-template-columns:minmax(240px,360px) minmax(0,1fr) auto;gap:12px 18px;align-items:center;margin:0;padding:0}
.booking-specialist-select{margin:0}.booking-specialist-select select{width:100%}
.booking-specialist-meta{color:var(--muted);font-size:12px;line-height:1.4}
.booking-specialist-meta strong{color:var(--ink)}
.appointment-booking-actions{display:flex;flex-wrap:wrap;gap:8px}.booking-specialist-actions{align-items:stretch;justify-self:end;flex-wrap:nowrap}.booking-specialist-actions>.appointment-booking-open-button,.booking-specialist-actions>.availability-search-open-button,.booking-specialist-actions>.time-off-action-split{height:39px;min-height:39px}.booking-specialist-actions>.appointment-booking-open-button,.booking-specialist-actions>.availability-search-open-button,.booking-specialist-actions>.time-off-action-split>.time-off-open-button{display:flex;align-items:center;justify-content:center;line-height:1}.booking-specialist-actions>.time-off-action-split{margin-left:0}.booking-specialist-actions>.time-off-action-split>.time-off-open-button,.booking-specialist-actions>.time-off-action-split>.time-off-action-toggle{height:100%}.appointment-booking-open-button{font-size:17px;font-weight:750}.schedule-outline-button{border:1px solid var(--accent);background:var(--surface);color:var(--accent);white-space:nowrap}.schedule-outline-button:hover{background:var(--surface-control-hover);color:var(--accent)}.time-off-action-split{display:inline-flex;align-items:stretch}.booking-specialist-bar .time-off-action-split{position:relative;top:auto;right:auto;justify-self:end}.time-off-action-split .time-off-open-button{border-radius:10px 0 0 10px}.time-off-action-toggle{display:grid;place-items:center;box-sizing:border-box;flex:0 0 24px;width:24px;padding:0;border-left:1px solid color-mix(in srgb,var(--accent) 42%,transparent);border-radius:0 10px 10px 0}.time-off-action-toggle .mdi-icon{width:16px;height:16px}.time-off-action-menu{position:absolute;z-index:8;top:calc(100% + 5px);right:0;padding:5px;border:1px solid var(--line);border-radius:10px;background:var(--surface);box-shadow:0 5px 14px var(--shadow-floating)}.time-off-action-menu .time-off-manage-open-button{height:auto;padding:8px 10px}.time-off-action-menu .schedule-outline-button:hover{background:var(--surface-control-hover)}
.schedule-focus-actions{display:none}
:is(body.month-focus-mode .month-toolbar,body.day-focus-mode .day-toolbar,body.week-focus-mode .week-toolbar) .schedule-focus-actions{position:absolute;z-index:20;left:50%;display:flex;align-items:stretch;justify-content:center;gap:4px;margin:0;transform:translateX(-50%)}
:is(body.month-focus-mode .month-toolbar,body.day-focus-mode .day-toolbar,body.week-focus-mode .week-toolbar) .schedule-focus-actions button{box-sizing:border-box;height:26px;min-height:26px;padding:3px 7px;border-radius:7px;font-size:11px;line-height:1;white-space:nowrap}
:is(body.month-focus-mode .month-toolbar,body.day-focus-mode .day-toolbar,body.week-focus-mode .week-toolbar) .schedule-focus-actions .appointment-booking-open-button{background:var(--accent);color:var(--text-inverse);font-weight:750}
:is(body.month-focus-mode .month-toolbar,body.day-focus-mode .day-toolbar,body.week-focus-mode .week-toolbar) .schedule-focus-actions .time-off-action-split{position:relative}
:is(body.month-focus-mode .month-toolbar,body.day-focus-mode .day-toolbar,body.week-focus-mode .week-toolbar) .schedule-focus-actions .time-off-open-button{border-radius:7px 0 0 7px}
:is(body.month-focus-mode .month-toolbar,body.day-focus-mode .day-toolbar,body.week-focus-mode .week-toolbar) .schedule-focus-actions .time-off-action-toggle{width:22px;padding:0;border-radius:0 7px 7px 0}
:is(body.month-focus-mode .month-toolbar,body.day-focus-mode .day-toolbar,body.week-focus-mode .week-toolbar) .schedule-focus-actions .time-off-action-menu{top:calc(100% + 4px)}
:is(body.month-focus-mode .month-toolbar,body.day-focus-mode .day-toolbar,body.week-focus-mode .week-toolbar) .schedule-focus-actions .time-off-manage-open-button{height:26px;padding:3px 7px}
.specialist-separator{margin:0 12px;color:var(--availability-text)}
.specialist-meta span{white-space:normal}
.day{background:var(--surface);border:1px solid var(--line);border-radius:11px;padding:10px;min-height:260px}
.day.today{background:var(--surface);border-color:var(--line-today)}
.day.unavailable-day{background:var(--surface-unavailable);border-color:var(--line-unavailable)}
.day.today{position:relative;z-index:1;box-shadow:0 0 0 2px var(--accent)}
.day.time-off-vacation-day{background:repeating-linear-gradient(135deg,var(--surface-disabled-soft) 0 8px,var(--surface) 8px 16px)}
.time-off-day-label{margin-left:auto;padding:3px 6px;border:1px solid var(--line-disabled);border-radius:5px;background:var(--surface-disabled-soft);color:var(--text-unavailable)!important;font-size:10px!important;font-weight:750;line-height:1}
.day.unavailable-day h2{color:var(--text-unavailable)}
.availability-slots{display:grid;gap:5px;margin:5px 0}
.availability-slot{height:24px;display:flex;align-items:center;padding:0 4px;margin:0;border:1px dashed var(--line-availability);border-radius:4px;color:var(--availability-text);font-size:10px;line-height:1}
.time-off-block{height:24px;display:flex;align-items:center;padding:0 4px;border:1px dashed var(--line-disabled);border-radius:4px;background:repeating-linear-gradient(135deg,var(--surface-disabled-soft) 0 8px,var(--surface) 8px 16px);color:var(--text-unavailable);font-size:10px;font-weight:650;line-height:1;cursor:default}
.availability-slots .appointment{margin-bottom:0}
.availability-slot.booking-slot{cursor:pointer;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease}
.availability-slot.booking-slot:hover,.availability-slot.booking-slot:focus-visible{background:var(--surface-slot-hover);border-color:var(--line-focus);box-shadow:0 0 0 1px var(--line-today);outline:none}
body:has(#appointment-booking-dialog[open]) .availability-slot.booking-slot.booking-slot-selected{background:var(--surface-slot-hover);border-color:var(--accent);box-shadow:0 0 0 2px var(--accent);outline:none}
.availability-slot.outside-specialist-slot{background:var(--surface-disabled-soft);border-color:var(--line-disabled);color:var(--text-unavailable)}
.appointment.appointment-time-off-conflict time{color:var(--status-error)}
.day.sunday-error{background:var(--surface-error-soft);border-color:var(--status-sunday-border)}
.day.sunday-error h2{color:var(--text-sunday-error)}
.day h2{display:flex;align-items:center;gap:6px;border-bottom:1px solid var(--line);padding:0 2px 8px;text-transform:capitalize}
.day h2 small{color:var(--muted);font-size:12px}
.day-rooms-link{display:inline-grid;place-items:center;width:24px;height:24px;margin-left:auto;border:1px solid var(--line-today);border-radius:6px;color:var(--accent);transition:background-color .15s ease,box-shadow .15s ease}
.day-rooms-link:hover{background:var(--surface-day-link-hover);box-shadow:0 0 0 1px var(--line-focus)}
.day-rooms-link .mdi-icon{width:16px;height:16px}
.appointment{position:relative;display:grid;grid-template-columns:62px 1fr;gap:3px 6px;padding:5px 6px;margin-bottom:5px;border:1px solid var(--line-card);border-radius:7px}
.appointment-clickable{cursor:pointer;transition:box-shadow .15s ease,background-color .15s ease}
.appointment-clickable:hover{box-shadow:0 0 0 1px var(--line-focus)}
.appointment-clickable:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.appointment-return-flashed::after{content:"";position:absolute;z-index:5;inset:0;border-radius:inherit;background:var(--accent);pointer-events:none;opacity:0;animation:appointment-return-flash .38s ease-in-out}
.theme-dark .appointment-return-flashed::after{background:#fff}
.appointment-patient-linked{animation:appointment-patient-linked-pulse 1.8s ease-in-out infinite}
@keyframes appointment-return-flash{0%,100%{opacity:0}20%,65%{opacity:.82}42%,84%{opacity:0}}
@keyframes appointment-patient-linked-pulse{0%,100%{box-shadow:0 0 0 0 transparent}50%{box-shadow:0 0 0 3px var(--return-highlight)}}
.appointment.appointment-in-progress time{display:flex;align-self:stretch;flex-direction:column;align-items:flex-start;justify-content:flex-start;box-sizing:border-box;padding:4px;border-radius:4px;background:var(--status-error);color:var(--text-inverse)!important;line-height:1.25;text-decoration:none}
.appointment.appointment-in-progress time::after{content:'● trwa';display:block;margin-top:3px;color:var(--text-inverse);font-size:9px;font-weight:750;line-height:1.1;text-decoration:none}
.appointment.long-appointment{min-height:112px}
.appointment.long-appointment small::after{content:"\00a0\A\00a0\A\00a0";display:block;white-space:pre}
.appointment.short-appointment{min-height:0!important;align-content:start}.appointment.short-appointment .service-details::after{content:none!important;display:none!important}.appointment.short-appointment .shift{margin-top:0}
.appointment time{font-weight:750;font-size:12px}
.appointment a{font-size:12px;font-weight:650;color:var(--accent);text-decoration:none}
.appointment-patient{display:inline-block;max-width:calc(100% - 20px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;font-size:12px;font-weight:650;color:var(--ink)}
.appointment strong{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:650}
.appointment strong+br{display:none}
.appointment-edit.is-disabled select:disabled,.appointment-edit.is-disabled input:disabled,.appointment-edit.is-disabled button:disabled{cursor:not-allowed}
.appointment-edit.is-disabled select:disabled{opacity:1;color:var(--ink);background:var(--surface-disabled-soft)}
.appointment-edit.is-disabled input:disabled,.appointment-edit.is-disabled button:disabled{opacity:.55}
.appointment-edit.is-readonly select{opacity:.55;cursor:not-allowed}
.appointment>div{min-width:0}
.appointment small{font-size:11px;color:var(--muted)}
.service-details{display:grid;grid-template-columns:minmax(0,1fr);gap:1px;margin-top:1px}
.service-details .service-name{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.service-details .service-duration,.service-details .service-price{display:block}
.week-grid .appointment .service-details{grid-template-columns:minmax(0,max-content) max-content minmax(0,1fr);column-gap:4px;align-items:baseline}.week-grid .appointment .service-duration:not(:first-child)::before{content:'·\00a0'}.week-grid .appointment .appointment-room,.week-grid .appointment .service-price{grid-column:1/-1}
.appointment .service-price{width:max-content;padding:1px 5px;border-radius:4px;background:var(--payment-unpaid);color:var(--text-inverse);font-weight:750}
.appointment.is-paid .service-price{width:max-content;padding:1px 5px;border-radius:4px;background:var(--payment-paid);color:var(--text-inverse);font-weight:750}
.appointment.is-paid .service-price::before{content:'✓ ';font-size:10px;font-weight:800}.appointment.is-paid .service-price.has-payment-method-icon::before{content:none}.appointment.is-paid .service-price .mdi-icon{display:inline-block;width:11px;height:11px;margin-right:3px;vertical-align:-1px}
.appointment.payment-required .service-price{width:max-content;padding:1px 5px;border-radius:4px;background:var(--status-payment-required);color:var(--text-inverse);font-weight:750}
.appointment.payment-required .service-price::before{content:'';display:inline-block;width:11px;height:11px;margin-right:3px;background:currentColor;vertical-align:-1px;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M13 14h-2v-4h2m0 8h-2v-2h2M1 21h22L12 2 1 21z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M13 14h-2v-4h2m0 8h-2v-2h2M1 21h22L12 2 1 21z'/%3E%3C/svg%3E") center/contain no-repeat}
.appointment.payment-overdue .service-price{width:max-content;padding:1px 5px;border-radius:4px;background:var(--status-error);color:var(--text-inverse);font-weight:750}
.appointment.payment-overdue .service-price::before{content:'✕ ';font-size:10px;font-weight:800}
.appointment-paid-toggle{align-self:end;margin-bottom:9px}
.appointment-edit .appointment-payment-options{display:contents}
.appointment-edit .appointment-payment-flags{grid-column:1;display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.appointment-edit .appointment-payment-flags .appointment-paid-toggle,.appointment-edit .appointment-payment-flags .payment-required-toggle{width:auto}
.appointment-edit .appointment-payment-options .appointment-paid-toggle,.appointment-edit .appointment-payment-options .payment-required-toggle{margin-bottom:0}
.appointment-edit .appointment-paid-button{display:inline-flex;align-items:center;box-sizing:border-box;min-height:39px;margin:0;padding:9px 10px;border:1px solid var(--accent);border-radius:10px;background:var(--surface);color:var(--accent);cursor:pointer;font-weight:700}.appointment-edit .appointment-paid-button:hover{background:var(--surface-control-hover)}.appointment-edit .appointment-paid-button:has(input:checked){background:var(--accent);color:var(--text-inverse)}.appointment-edit .appointment-paid-button:has(input:checked):hover{background:var(--accent-read)}.appointment-edit .appointment-paid-button input{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.appointment-edit .appointment-paid-button:has(input:focus-visible){outline:2px solid var(--focus-ring);outline-offset:2px}.appointment-edit .appointment-paid-button:has(input:disabled){cursor:not-allowed;opacity:.55}
.appointment-edit .appointment-additional-fees-toggle{min-height:39px;padding:8px 10px;border:1px solid var(--accent);border-radius:10px;background:var(--surface);color:var(--accent);font-weight:700}.appointment-edit .appointment-additional-fees-toggle:hover:not(:disabled){background:var(--surface-control-hover)}.appointment-edit .appointment-additional-fees-toggle.has-selected{background:var(--accent);color:var(--text-inverse)}.appointment-edit .appointment-additional-fees-toggle.has-selected:hover:not(:disabled){background:var(--accent-read)}.appointment-additional-fees-dialog{width:min(520px,calc(100vw - 32px));min-width:min(460px,calc(100vw - 32px))}.appointment-additional-fees-dialog>h2{padding-right:34px}.appointment-additional-fees-dialog .appointment-additional-fees{display:grid;gap:8px;width:100%;margin:0;padding:0;border:0;border-radius:0}.appointment-additional-fees-dialog .appointment-additional-fees .check{margin:0}.appointment-custom-additional-fee{display:grid;grid-template-columns:minmax(0,1fr) 145px;gap:10px;margin-top:4px;padding-top:12px;border-top:1px solid var(--line)}.appointment-custom-additional-fee label{display:grid;min-width:0;gap:5px;color:var(--muted);font-size:13px;font-weight:700}.appointment-custom-additional-fee input{box-sizing:border-box;width:100%;min-width:0}.appointment-custom-additional-fee input.custom-additional-fee-over-limit{border-color:var(--danger)!important;box-shadow:0 0 0 1px var(--danger)}
.appointment-custom-additional-fee input.custom-additional-fee-over-limit{border-color:var(--status-error)!important;background:var(--surface-error-soft);color:var(--status-error);box-shadow:0 0 0 1px var(--status-error)}
.appointment-edit .appointment-payment-method{grid-column:2;display:grid;gap:5px;margin:0;min-width:0;font-size:13px;font-weight:650}.appointment-edit .appointment-payment-method select{width:100%;min-width:0}
.appointment-edit .booking-form>.appointment-save-button{justify-self:start;width:auto}
.patient-edit-controls{display:contents}
.appointment-navigation{margin-bottom:22px}
.appointment-edit-headings{display:grid;grid-template-columns:minmax(0,772px) minmax(250px,1fr);gap:24px}.appointment-edit-headings h2{margin:0;padding-bottom:12px}.appointment-edit-headings h2+ h2{border-left:1px solid var(--line);padding-left:24px}.appointment-edit .appointment-save-actions{grid-column:1/-1;display:flex;gap:10px;align-items:center}.appointment-edit .appointment-save-actions button{width:auto}.appointment-action-separator{align-self:stretch;width:1px;min-height:39px;margin:0 8px;background:var(--line)}.appointment-delete-form{display:none}.appointment-edit-form{grid-template-columns:minmax(0,772px) minmax(250px,1fr);column-gap:24px;max-width:1120px;align-items:stretch}.appointment-edit-primary{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:12px;min-width:0}.appointment-edit-primary>label{min-width:0}.appointment-edit-primary select{width:100%;min-width:0}.appointment-edit .appointment-service-price-changed{color:var(--status-error)}.appointment-additional-fees .is-inactive{color:var(--muted)}
.appointment-series-fields{--appointment-secondary-field-width:304px;min-width:0;padding-left:24px;border-left:1px solid var(--line)}.appointment-series-fields fieldset{display:block;width:100%;min-width:0;margin:0;padding:0;border:0}.appointment-series-fields fieldset:disabled{opacity:1}.appointment-series-fields label{display:grid;width:min(100%,var(--appointment-secondary-field-width));gap:5px;min-width:0;color:var(--muted);font-size:13px;font-weight:650}.appointment-series-fields label+label{margin-top:12px}.appointment-series-fields input,.appointment-series-fields select{width:100%;min-width:0}.appointment-series-position{width:min(100%,var(--appointment-secondary-field-width));margin:12px 0 0;color:var(--muted);font-size:13px;font-weight:650}.appointment-series-position+.appointment-series-scope{margin-top:12px}.appointment-series-delete-scope{width:min(100%,304px)}
.appointment-series-dialog{width:fit-content;max-width:calc(100vw - 32px);margin:auto;padding:22px;border:1px solid var(--line-popover);border-radius:11px;background:var(--surface);color:var(--ink);box-shadow:0 14px 34px var(--shadow-popover)}.appointment-series-dialog::backdrop{background:color-mix(in srgb,var(--header-bg) 21%,transparent)}.appointment-series-dialog h2{margin:0 0 16px;font-size:19px}.appointment-series-dialog p{margin:0 0 16px}.appointment-series-dialog-actions{display:flex;flex-wrap:wrap;gap:10px}.appointment-series-dialog-actions button{width:auto}.appointment-series-dialog-actions button[hidden]{display:none}.appointment-series-preview-list{max-height:min(46vh,360px);margin:0 0 16px;padding:0;overflow:auto;list-style:none}.appointment-series-preview-list li{padding:4px 6px;color:var(--muted)}.appointment-series-preview-list li.has-conflict{border-radius:5px;background:var(--surface-error-soft);color:var(--status-error)}
.availability-search-dialog{width:min(440px,calc(100vw - 32px))}.appointment-booking-dialog{width:min(816px,calc(100vw - 32px))}.availability-search-form{display:grid;gap:12px}.availability-search-form label{min-width:0}#availability-search-form>label{width:100%;max-width:100%}#availability-search-form select,#availability-search-form input{width:100%;min-width:0;max-width:100%}.availability-results-list{display:grid;gap:7px;min-width:320px;max-height:min(60vh,520px);margin:0;padding:0;overflow-y:auto;list-style:none}.availability-results-list li{padding:0}.availability-results-list .availability-result-new-day{margin-top:2px;padding-top:9px;border-top:1px solid var(--line)}.availability-result{display:grid;width:100%;gap:3px;padding:8px 10px;text-align:left}.availability-result-main{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:14px;font-weight:700}.availability-result-room{display:inline-flex;align-items:center;padding:1px 6px;border:1px solid currentColor;border-radius:999px;font-size:11px;line-height:1.35;white-space:nowrap}.availability-result-hint{font-size:12px;font-weight:650;opacity:.78}
.availability-search-mode-switch{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:hidden;border:1px solid var(--accent);border-radius:10px}.availability-search-mode-switch button{min-width:0;border:0;border-right:1px solid var(--accent);border-radius:0;background:var(--surface);color:var(--accent);white-space:nowrap}.availability-search-mode-switch button:last-child{border-right:0}.availability-search-mode-switch button:hover{background:var(--surface-control-hover)}.availability-search-mode-switch button.is-active{background:var(--accent);color:var(--text-inverse)}.availability-search-mode-switch button.is-active:hover{background:var(--accent-read)}.availability-results-list .availability-result-info{cursor:default;border:1px solid var(--accent);border-radius:10px;background:var(--surface);color:var(--accent)}.availability-results-list .availability-result-info:hover{background:var(--surface)}.availability-results-list .availability-result-info .availability-result-hint{color:inherit}
#availability-search-form>*{order:10}#availability-search-form .availability-search-mode-switch{order:0}#availability-search-form [data-availability-field][hidden]{display:none!important}#availability-search-form [data-availability-field="specialist"]{order:1}#availability-search-form [data-availability-field="specialist-service"],#availability-search-form [data-availability-field="service"]{order:2}#availability-search-form[data-availability-mode="service"] [data-availability-field="service"]{order:1}#availability-search-form[data-availability-mode="service"] [data-availability-field="specialist"]{order:2}#availability-search-form [data-availability-field="preferred-room"]{order:3}#availability-search-form[data-availability-mode="room"] [data-availability-field="preferred-room"]{display:none!important}#availability-search-form [data-availability-field="room"]{order:1}#availability-search-form [data-availability-field="duration"]{order:2}#availability-search-form .appointment-series-dialog-actions{order:11}.availability-results-list .availability-result-info:has(.availability-result-hint){background:var(--accent);color:var(--text-inverse)}
.time-off-form .time-off-vacation-fields{display:grid;gap:12px}.time-off-form .time-off-hours-fields,.time-off-form .time-off-recurrence-fields{display:none;gap:12px}.time-off-form:has(#time-off-type option[value="time_off"]:checked) .time-off-vacation-fields{display:none}.time-off-form:has(#time-off-type option[value="time_off"]:checked) .time-off-hours-fields{display:grid}.time-off-form:has(#time-off-type option[value="time_off"]:checked):has(#time-off-recurrence option[value="weekly"]:checked) .time-off-recurrence-fields{display:grid}
.time-off-manage-dialog{width:min(520px,calc(100vw - 32px))}.time-off-management-list{display:grid;gap:8px;max-height:min(55vh,460px);overflow:auto}.time-off-management-list details{position:relative;padding:9px;border:1px solid var(--line);border-radius:7px}.time-off-management-list summary{cursor:pointer;font-weight:700}.time-off-management-list .availability-search-form{margin-top:12px}.time-off-management-list .time-off-edit-form{padding-bottom:49px}.time-off-management-list .time-off-edit-form .appointment-series-dialog-actions,.time-off-management-list .time-off-delete-form{position:absolute;bottom:9px;margin:0}.time-off-management-list .time-off-edit-form .appointment-series-dialog-actions{left:9px}.time-off-management-list .time-off-delete-form{left:145px}.time-off-delete-form button{width:auto}
.appointment-edit .appointment-price-save-split{position:relative;display:inline-flex;align-items:stretch}.appointment-edit .appointment-price-save-split .appointment-save-button{border-radius:10px}.appointment-edit .appointment-price-save-split.is-price-update-available .appointment-save-button{border-radius:10px 0 0 10px}.appointment-edit .appointment-price-save-toggle{display:none;place-items:center;width:38px;padding:0;border-left:1px solid color-mix(in srgb,var(--text-inverse) 36%,transparent);border-radius:0 10px 10px 0;background:var(--accent);color:var(--text-inverse)}.appointment-edit .appointment-price-save-split.is-price-update-available .appointment-price-save-toggle{display:grid}.appointment-edit .appointment-price-save-toggle:hover{background:var(--accent-read)}.appointment-edit .appointment-price-save-toggle .mdi-icon{width:18px;height:18px}.appointment-edit .appointment-price-save-menu{position:absolute;z-index:5;top:calc(100% + 5px);left:0;min-width:max-content;padding:5px;border:1px solid var(--line);border-radius:7px;background:var(--surface);box-shadow:0 5px 14px var(--shadow-floating)}.appointment-edit .appointment-price-save-menu button{height:auto;padding:8px 10px;background:transparent;color:var(--accent);white-space:nowrap}.appointment-edit .appointment-price-save-menu button:hover{background:var(--surface-control-hover)}
.settings>details>summary{cursor:pointer;font-size:17px;font-weight:750}
.settings>details[open]>summary{margin-bottom:8px}
.settings>details>p{margin:0 0 12px;color:var(--muted);font-size:12px}
.settings>details form{display:grid;gap:10px;justify-items:start}
.settings>details .check{margin:0}
.patient-extra-fields{width:100%;margin:4px 0 2px;padding:12px;border:1px solid var(--line);border-radius:8px;display:grid;gap:10px}
.patient-extra-fields legend{padding:0 4px;font-weight:700;color:var(--ink)}
.accent-color-settings{width:100%;margin:4px 0 2px;padding:12px;border:1px solid var(--line);border-radius:8px}.accent-color-settings legend{padding:0 4px;font-weight:700;color:var(--ink)}.accent-color-settings p{margin:0 0 10px;color:var(--muted);font-size:12px}.accent-choice-list{display:flex;flex-wrap:wrap;gap:8px}.accent-choice{display:flex;grid-template-columns:none;align-items:center;gap:6px;padding:6px 8px;border:1px solid var(--line);border-radius:7px;background:var(--surface);font-size:12px;cursor:pointer}.accent-choice input{margin:0;accent-color:var(--accent)}.accent-swatch{width:12px;height:12px;border-radius:50%;box-shadow:inset 0 0 0 1px #0002}.accent-swatch-green{background:#087c5c}.accent-swatch-blue{background:#3f78a9}.accent-swatch-violet{background:#7657a6}.accent-swatch-slate{background:#4e6f7c}
.maintenance-settings{scroll-margin-top:74px}.maintenance-mode-settings{display:grid;gap:10px;justify-items:start}.maintenance-mode-settings p{margin:0}
.settings-description{margin:0;color:var(--muted);font-size:12px}
.schedule-options-separator{width:100%;height:0;margin:8px 0;border:0;border-top:1px solid var(--line)}
.schedule-options-separator+.settings-description{display:block;margin:0 0 10px}
.patient-extra-field-row{width:100%;display:grid;grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) auto auto;gap:10px;align-items:end}
.patient-extra-field-row .check{height:39px;white-space:nowrap}
.appointment.scheduled{background:var(--surface-scheduled);border-left:4px solid var(--status-scheduled-border);padding-left:6px}
.appointment.confirmed{background:var(--surface-confirmed);border-left:4px solid var(--status-confirmed-border);padding-left:6px}
.appointment.cancelled,.appointment.cancelled_by_patient,.appointment.cancelled_by_specialist{background:var(--surface-cancelled);border-left:4px solid var(--status-cancelled-border);padding-left:6px}
.appointment.cancelled time,.appointment.cancelled .appointment-patient,.appointment.cancelled_by_patient time,.appointment.cancelled_by_patient .appointment-patient,.appointment.cancelled_by_specialist time,.appointment.cancelled_by_specialist .appointment-patient{text-decoration:line-through}
.appointment.special-appointment{background:var(--surface-special)!important;border-left:4px solid var(--status-special-border)!important}
.appointment.sunday-error{background:var(--surface-conflict);border-left:4px solid var(--status-conflict-border)}
.appointment.conflict{background:var(--surface-conflict)!important;border-left:4px solid var(--status-conflict-border)!important}
.appointment.conflict time{color:var(--status-error)}
.appointment.outside-hours time{color:var(--status-error)}
.week-appointment-stack{position:relative;display:grid;grid-template-columns:minmax(0,1fr);margin-bottom:5px;isolation:isolate}.availability-slots>.week-appointment-stack{margin-bottom:0}.week-appointment-stack>.appointment{position:relative;left:var(--week-item-left,0);z-index:100;grid-area:1/1;width:calc(100% - var(--week-item-left,0));margin-bottom:0;align-self:start}.week-appointment-stack>.appointment.cancelled{z-index:calc(2 + var(--week-item-layer,0))}.week-appointment-stack>.appointment:hover,.week-appointment-stack>.appointment:focus-within{z-index:201}.week-appointment-stack>.appointment.cancelled:hover,.week-appointment-stack>.appointment.cancelled:focus-within{z-index:202}.week-appointment-stack>.appointment.cancelled.covered-payment-required{border-left-color:var(--status-payment-required);background:repeating-linear-gradient(135deg,var(--status-payment-required) 0 4px,color-mix(in srgb,var(--status-payment-required) 38%,var(--surface-cancelled)) 4px 8px) left/12px 100% no-repeat,var(--surface-cancelled)}.week-appointment-stack>.appointment.cancelled.covered-payment-required:hover,.week-appointment-stack>.appointment.cancelled.covered-payment-required:focus-within{border-left-color:var(--status-cancelled-border);background:var(--surface-cancelled)}
.appointment-lock{display:inline-grid;place-items:center;width:14px;height:14px;margin-left:4px;color:var(--icon-muted);vertical-align:middle}.appointment-lock.is-open{color:var(--accent)}
.appointment.appointment-locked .appointment-lock{color:var(--accent)}
.appointment-lock .mdi-icon{width:13px;height:13px}
.appointment>time .appointment-lock{position:absolute;right:7px;bottom:6px;margin:0}.appointment-series-icon{position:absolute;right:7px;bottom:6px;display:inline-grid;place-items:center;width:14px;height:14px;color:var(--icon-muted)}.appointment-series-icon .mdi-icon{width:13px;height:13px}.appointment.has-series-icon.has-appointment-lock .appointment-series-icon{right:27px}
.appointment-lock-notice{display:flex;align-items:center;gap:6px;margin:10px 0;padding:8px 10px;border:1px solid var(--line-unavailable);border-radius:7px;background:var(--surface-lock-notice);color:var(--text-subtle);font-size:12px}
.appointment-details{grid-column:1/-1;margin-top:2px;font-size:12px}
.appointment-details summary{cursor:pointer;color:var(--accent);font-weight:700}
.status-form{display:grid;gap:5px;margin-top:7px}
.status-form button{padding:5px 7px;font-size:12px}
.shift{grid-column:1;display:flex;align-items:center;gap:4px;position:relative}
.mdi-icon{display:block;width:14px;height:14px;fill:currentColor}
.comment-icon{display:inline-grid;place-items:center;flex:0 0 18px;width:18px;height:18px;min-width:18px;min-height:18px;padding:0;margin-left:3px;border-radius:50%;background:var(--accent);color:var(--text-inverse);line-height:0;overflow:hidden;vertical-align:middle}
.comment-icon .mdi-icon{width:12px;height:12px}
.notification-badge{display:inline-grid;place-items:center;flex:0 0 18px;min-width:18px;height:18px;min-height:18px;padding:0 4px;margin-left:3px;border-radius:999px;background:var(--status-notification);color:var(--text-inverse);font-size:11px;font-weight:750;line-height:1;vertical-align:middle}
.move-button,.calendar-button{padding:3px;background:transparent;border-color:transparent;color:var(--accent)}
.move-button:hover:not(:disabled),.calendar-button:hover{background:var(--surface-control-hover);border-color:var(--line-control-hover)}
.move-button:disabled{padding:3px;background:transparent!important;border-color:transparent!important;color:var(--icon-disabled)!important;opacity:1}
.calendar-button:disabled{padding:3px;background:transparent!important;border-color:transparent!important;color:var(--icon-disabled)!important;opacity:1;cursor:not-allowed}
.shift-picker{width:190px;padding:5px;font-size:12px}
.native-shift-picker{position:absolute;width:1px;height:1px;padding:0;opacity:0;pointer-events:none}
.shift-popover{position:fixed;z-index:1000;display:flex;align-items:end;gap:8px;padding:10px;border:1px solid var(--line-popover);border-radius:10px;background:var(--surface);box-shadow:0 10px 24px var(--shadow-popover)}
.shift-popover label{display:grid;gap:4px;margin:0;font-size:11px;color:var(--muted)}
.shift-popover input{width:140px;padding:6px 7px;font-size:13px}
.shift-popover button{padding:7px 10px}
.slot{display:flex;gap:5px;margin-top:12px}
.slot select{min-width:0;flex:1;padding:5px;font-size:11px}
.slot button{padding:5px 7px;font-size:11px}
.admin-grid{display:grid;grid-template-columns:repeat(3,minmax(230px,1fr));gap:18px;padding:0!important;border:0!important;background:transparent!important}
.admin-grid>article,.admin-grid>article>form,.admin-grid>article>form>label{min-width:0}.admin-grid>article>form select,.admin-grid>article>form input,.admin-grid>article>form textarea{width:100%;min-width:0;max-width:100%}
.admin-create-section details>summary{cursor:pointer;color:var(--ink);font-size:17px;font-weight:750}.admin-create-section details[open]>summary{margin-bottom:16px}
.admin-collapsible-section>summary{cursor:pointer;color:var(--ink);font-size:17px;font-weight:750}.admin-collapsible-section[open]>summary{margin-bottom:16px}
.admin-create-section .admin-grid>article,.admin-assignments-section{scroll-margin-top:16px}
table{border-collapse:collapse;width:100%;background:var(--surface)}
th,td{padding:9px 11px;border:1px solid var(--line);text-align:left}
th{background:var(--surface-hover-strong)}
.assignment-filters{display:flex;flex-wrap:wrap;align-items:end;gap:10px;margin:0 0 12px}.assignment-filters label{min-width:180px}.assignment-filters .check{min-width:auto;margin-bottom:8px}.assignment-filters-reset,.assignment-filters-bulk-price{width:auto;height:39px;padding:9px 10px;margin-bottom:0;border-color:var(--accent);background:var(--surface);color:var(--accent)}.assignment-filters-reset:hover,.assignment-filters-reset:focus-visible,.assignment-filters-bulk-price:hover,.assignment-filters-bulk-price:focus-visible{background:var(--surface-control-hover);color:var(--accent);outline:none}
.assignments-table{font-size:12px}.assignments-table th,.assignments-table td{padding:5px 7px}.assignments-table td:last-child{white-space:nowrap}.assignments-table .assignment-price-button,.assignments-table .table-action{display:inline-flex;vertical-align:middle;margin:0 3px 0 0}.assignments-table .assignment-price-button,.assignments-table .table-action button{padding:4px 6px;font-size:11px;line-height:1.2}
.admin-assignments-section>details>summary,.admin-patients-section>details>summary{cursor:pointer;font-size:17px;font-weight:750}.admin-assignments-section>details[open]>summary,.admin-patients-section>details[open]>summary{margin-bottom:12px}.admin-patients-section .hint{margin:0 0 12px;color:var(--muted);font-size:12px}.admin-patients-table-wrap{overflow-x:auto}.admin-patients-table-wrap table{min-width:1120px}.admin-patients-pagination{display:flex;align-items:center;gap:8px;margin-top:12px}.admin-patients-pagination span{min-width:74px;color:var(--muted);font-size:12px;text-align:center}.admin-patients-pagination button{padding:6px 9px;font-size:12px}.admin-patients-table-wrap .patient-blocked-status{margin-left:0}
.comment-bubble{display:flex;flex-wrap:wrap;align-items:center;padding:8px 10px;margin:8px 0;border:1px solid var(--line-card);border-left:4px solid var(--status-special-border);border-radius:7px;background:var(--surface)}
.comment-meta{display:block;flex:0 0 100%;color:var(--muted);font-size:11px}
.comment-body{flex:0 0 100%;margin:4px 0 0;font-size:12px;font-weight:400;color:var(--ink)}
.comment-bubble details{margin-top:8px}
.comment-bubble summary{cursor:pointer;color:var(--accent);font-size:12px;font-weight:700}
.comment-bubble.notification-for-current-user{background:var(--surface-special);border-left-color:var(--status-special-border)}
.comment-bubble.comment-authored-by-current-user{background:var(--surface-notification);border-left-color:var(--accent)}
.comment-bubble.notification-for-current-user.notification-opened{background:var(--surface-notification-opened);border-left-color:var(--status-conflict-border);color:var(--ink)}.comment-bubble.notification-for-current-user.notification-opened .comment-meta,.comment-bubble.notification-for-current-user.notification-opened .comment-body,.comment-bubble.notification-for-current-user.notification-opened small{color:var(--muted)}.comment-bubble.notification-for-current-user.notification-opened .comment-body{color:var(--ink)}
.notification-ack{display:inline-flex;gap:5px;margin:5px 0 0 auto}.notification-ack button{padding:2px 6px;font-size:10px;line-height:1.2}
.comment-delete-form{display:inline-flex;margin:5px 0 0 auto}.comment-delete-form+.notification-ack{margin-left:5px}.comment-delete-form button{padding:2px 6px;font-size:10px;line-height:1.2}
.notification-delivery-status{display:inline;margin-left:1px;font-size:11px;font-weight:700;line-height:1;vertical-align:baseline}.notification-delivery-status.is-read{background:transparent;color:inherit}
.notes small,.appointment-comments small{color:var(--muted)}
.patient-note-form{display:grid;gap:10px;margin-top:14px}.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}.patient-note-actions{display:flex;align-items:center;gap:10px;margin-top:10px}.patient-note-actions form{margin:0}
.patient-appointments{margin-top:18px}
.patient-appointments h2{margin-bottom:8px}
.patient-management form{margin:0}
.patient-management{display:grid;gap:10px;justify-items:start}
.patient-management h2,.patient-management p{margin:0}
.patient-management-notice{display:flex;align-items:center;gap:6px;color:var(--text-subtle);font-size:12px}
.past-patient-appointments{margin-bottom:16px}
.past-patient-appointments>summary{cursor:pointer;color:var(--muted);font-weight:700}
.past-patient-appointments[open]>summary{margin-bottom:8px}
.patient-comments-preview{margin-top:14px}
.patient-comments-preview>summary{cursor:pointer;color:var(--muted);font-weight:700}
.patient-comments-preview[open]>summary{margin-bottom:8px}
.patient-appointment-list{display:grid;gap:7px}
.patient-visit-card{display:grid;gap:2px;min-width:0;padding:8px 10px;border:1px solid var(--line-room);border-left:4px solid var(--line-upcoming);border-radius:7px;background:var(--surface-upcoming);color:var(--ink);text-decoration:none}
.patient-visit-card.upcoming{transition:box-shadow .15s ease,background-color .15s ease}
.patient-visit-card.upcoming.scheduled{background:var(--surface-scheduled);border-left-color:var(--status-scheduled-border)}
.patient-visit-card.upcoming.confirmed{background:var(--surface-confirmed);border-left-color:var(--status-confirmed-border)}
.patient-visit-card.upcoming.cancelled,.patient-visit-card.upcoming.cancelled_by_patient,.patient-visit-card.upcoming.cancelled_by_specialist{background:var(--surface-cancelled);border-left-color:var(--status-cancelled-border)}
.patient-visit-card.upcoming:hover{background:var(--surface-room-hover);box-shadow:0 0 0 1px var(--line-focus)}
.patient-visit-card.past{border-left-color:var(--status-special-border);background:var(--surface-special)}
.patient-visit-card time{font-size:12px;font-weight:750}
.patient-visit-specialist,.patient-visit-service{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.patient-visit-specialist{font-size:12px;font-weight:650}
.patient-visit-service{font-size:11px;color:var(--muted)}
.month-toolbar{margin-bottom:20px}
.schedule-view-switch{display:inline-grid;grid-template-columns:repeat(3,minmax(72px,1fr));height:39px;overflow:hidden;margin-right:18px;vertical-align:middle;border:1px solid var(--accent);border-radius:10px}.schedule-view-switch>a,.schedule-view-switch>span{display:flex;align-items:center;justify-content:center;box-sizing:border-box;height:100%;min-height:0;padding:9px 10px;border-right:1px solid var(--accent);background:var(--surface);color:var(--accent);font-weight:700;line-height:1;text-decoration:none;white-space:nowrap}.schedule-view-switch>:last-child{border-right:0}.schedule-view-switch>a:hover{background:var(--surface-control-hover)}.schedule-view-switch>.is-active{background:var(--accent);color:var(--text-inverse)}.schedule-view-switch>.is-disabled{border-right-color:var(--line-disabled);background:var(--surface-disabled);color:var(--icon-disabled);cursor:not-allowed}
.month-category-filter{display:flex;align-items:end;gap:8px;margin:0 0 12px}.month-category-filter label{width:min(160px,100%)}.month-category-filter .month-focus-toggle{margin-left:auto}.month-focus-category-filter{display:none}
body.month-view:not(.month-focus-mode) .month-category-filter select,body.day-view:not(.day-focus-mode) .day-category-filter select,body.week-view .week-category-filter select,body.month-view:not(.month-focus-mode) .month-category-filter>button,body.day-view:not(.day-focus-mode) .day-category-filter>button,body.week-view .week-category-filter>button{box-sizing:border-box;height:36px;min-height:36px}body.month-view:not(.month-focus-mode) .month-category-filter>button,body.day-view:not(.day-focus-mode) .day-category-filter>button,body.week-view .week-category-filter>button{display:inline-flex;align-items:center;justify-content:center;padding-top:0;padding-bottom:0;line-height:1}
.month-category-filter>select,.month-category-filter .schedule-specialist-search-wrap{box-sizing:border-box;width:min(160px,100%)}.month-category-filter .schedule-specialist-search-wrap,.month-category-filter .schedule-specialist-search{height:36px;min-height:36px}
.schedule-specialist-search-wrap{position:relative;display:block;flex:0 0 auto;width:min(160px,100%)}.schedule-specialist-search-wrap .schedule-specialist-search{box-sizing:border-box;width:100%;padding-right:28px}.schedule-specialist-search::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}.schedule-specialist-search-clear{position:absolute;top:50%;right:6px;display:block;width:18px;height:18px;min-height:0;padding:0;border:0;border-radius:50%;background:transparent;color:var(--text-muted);font-size:0;line-height:0;transform:translateY(-50%)}.schedule-specialist-search-clear::before,.schedule-specialist-search-clear::after{content:"";position:absolute;top:50%;left:50%;width:9px;height:2px;border-radius:999px;background:currentColor;transform:translate(-50%,-50%) rotate(45deg)}.schedule-specialist-search-clear::after{transform:translate(-50%,-50%) rotate(-45deg)}.schedule-specialist-search-clear[hidden]{display:none}.schedule-specialist-search-clear:hover,.schedule-specialist-search-clear:focus-visible{background:var(--surface-control-hover);color:var(--accent);outline:none}
:is(body.week-view,body.month-view:not(.month-focus-mode),body.day-view:not(.day-focus-mode)) #appointment-booking .booking-specialist-select select,
:is(body.week-view,body.month-view:not(.month-focus-mode),body.day-view:not(.day-focus-mode)) #appointment-booking .booking-specialist-actions>.appointment-booking-open-button,
:is(body.week-view,body.month-view:not(.month-focus-mode),body.day-view:not(.day-focus-mode)) #appointment-booking .booking-specialist-actions>.availability-search-open-button,
:is(body.week-view,body.month-view:not(.month-focus-mode),body.day-view:not(.day-focus-mode)) #appointment-booking .booking-specialist-actions>.time-off-action-split,
:is(body.week-view,body.month-view:not(.month-focus-mode),body.day-view:not(.day-focus-mode)) .schedule-normal-navigation .schedule-view-switch,
:is(body.week-view,body.month-view:not(.month-focus-mode),body.day-view:not(.day-focus-mode)) .schedule-normal-navigation .schedule-period-button,
:is(body.week-view,body.month-view:not(.month-focus-mode),body.day-view:not(.day-focus-mode)) .schedule-normal-navigation .schedule-period-jump,
:is(body.week-view,body.month-view:not(.month-focus-mode),body.day-view:not(.day-focus-mode)) .schedule-normal-navigation .schedule-period-jump select,
:is(body.week-view,body.month-view:not(.month-focus-mode),body.day-view:not(.day-focus-mode)) .schedule-normal-navigation .schedule-period-jump input[type="date"]{box-sizing:border-box;height:36px;min-height:36px}
.month-sheet-wrap{--schedule-table-header-height:32px;max-height:calc(100vh - 24px);overflow:auto;border:1px solid var(--line-month-sheet);border-radius:11px;background:var(--surface-month-sheet)}
.month-sheet{width:max-content;min-width:0;border-collapse:separate;border-spacing:0;background:var(--surface-month-sheet);font-size:12px}
.month-sheet th,.month-sheet td{padding:4px 6px;border:0;border-right:1px solid color-mix(in srgb,var(--line-month-sheet) 35%,var(--surface-month-sheet));border-bottom:1px solid color-mix(in srgb,var(--line-month-sheet) 35%,var(--surface-month-sheet));vertical-align:top}
.month-sheet tbody td{padding:0 3px}
.month-sheet thead th{box-sizing:border-box;position:sticky;top:0;z-index:2;height:var(--schedule-table-header-height);padding:4px 10px;background:var(--surface-month-header);min-width:138px;font-size:13px;text-align:left}
.month-sheet th[data-month-specialist-id],.month-sheet tbody td:nth-child(n+3){box-sizing:border-box;width:335px;min-width:335px;max-width:335px}
.month-sheet thead th:first-child,.month-sheet .month-day-label{box-sizing:border-box;width:108px;min-width:108px;max-width:108px}.month-sheet thead th:nth-child(2),.month-sheet .month-time{box-sizing:border-box;width:96px;min-width:96px;max-width:96px}
.month-sheet thead th:first-child{left:0;z-index:4}
.month-sheet thead th:nth-child(2){left:108px;z-index:4}
.month-sheet .month-day-label{position:sticky;left:0;z-index:1;background:var(--surface-month-label);font-weight:750;white-space:nowrap;vertical-align:top}
.month-day-link{position:absolute;inset:0;display:flex;align-items:flex-start;box-sizing:border-box;padding:4px 6px;background:transparent;color:inherit;text-decoration:none;transition:background-color .15s ease,color .15s ease}.month-day-link:hover,.month-day-link:focus-visible{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);outline:2px solid var(--accent);outline-offset:-2px}
.month-sheet .month-time{position:sticky;left:108px;z-index:1;background:var(--surface-month-time);color:var(--muted);font-weight:700;white-space:nowrap}
.month-sheet th.month-selected-specialist{background:color-mix(in srgb,var(--accent) 18%,var(--surface-month-header));color:var(--ink)}.month-sheet td.month-selected-specialist{background:color-mix(in srgb,var(--accent) 7%,var(--surface-month-sheet))}
.month-sheet td.month-unavailable-cell{background:color-mix(in srgb,var(--surface-unavailable) 90%,var(--line-month-day));color:var(--text-unavailable)}
.month-sheet td.month-vacation-cell{background:repeating-linear-gradient(135deg,var(--surface-disabled-soft) 0 8px,var(--surface) 8px 16px)}
.month-sheet td.month-selected-specialist.month-unavailable-cell{background:color-mix(in srgb,var(--accent) 7%,color-mix(in srgb,var(--surface-unavailable) 90%,var(--line-month-day)))}
.month-sheet td.month-selected-specialist.month-vacation-cell{background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--accent) 7%,var(--surface-disabled-soft)) 0 8px,color-mix(in srgb,var(--accent) 7%,var(--surface)) 8px 16px)}
.month-sheet .month-time-off-label{display:inline-block;margin:0}
.month-sheet .month-availability-slot{width:100%;margin:2px 0}
.month-sheet .month-time-off-block{box-sizing:border-box;width:100%;margin:2px 0}
.month-sheet tr.month-day-start>th,.month-sheet tr.month-day-start>td{border-top:0}
.month-sheet tr.month-day-end>th,.month-sheet tr.month-day-end>td{border-bottom:1px solid var(--line-month-day)}
.month-sheet tbody tr.month-day-start>td{padding-top:2px}
.month-sheet tbody tr.month-day-end>td{padding-bottom:2px}
.month-sheet .month-day-label{border-left:2px solid var(--line-month-day);border-bottom:1px solid var(--line-month-day)}
.month-sheet tr.month-today.month-day-start>th,.month-sheet tr.month-today.month-day-start>td{border-top:3px solid var(--accent)}
.month-sheet tr.month-today.month-day-end>th,.month-sheet tr.month-today.month-day-end>td{border-bottom:3px solid var(--accent)}
.month-sheet tr.month-today>td:last-child{border-right:3px solid var(--accent)}
.month-sheet .month-day-label.month-today{border-color:var(--accent);border-width:3px}
.month-sheet .month-empty{color:var(--text-empty);font-size:11px}
.month-sheet th[data-month-specialist-id]{padding:0;font-size:13px;text-align:left}.month-sheet .month-specialist{display:block;max-width:100%;padding:4px 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.month-appointment{position:relative;display:flex;align-items:center;box-sizing:border-box;width:328px;max-width:328px;overflow:hidden;white-space:nowrap;padding:0 3px 0 5px;margin:1px 0;border:1px solid var(--line-card);border-left:3px solid var(--status-scheduled-border);border-radius:4px;background:var(--surface-scheduled);color:var(--ink);font-weight:400;transition:box-shadow .15s ease,background-color .15s ease}
.month-appointment-link{display:flex;align-self:stretch;align-items:center;flex:1 1 auto;min-width:0;padding:0;color:inherit;text-decoration:none}
.month-appointment-label{display:block;width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.month-notification-badge{box-sizing:border-box;flex:0 0 14px;width:14px;min-width:14px;height:14px;min-height:14px;padding:0;margin:0 2px;border-radius:50%}
.month-appointment-shift{display:grid;flex:0 0 24px;place-items:center;margin:0}
.month-calendar-button{box-sizing:border-box;width:22px;height:22px;min-height:0;padding:3px;line-height:0}
.month-appointment-patient{font-weight:700}
.month-appointment.cancelled.payment-required .month-appointment-status-label,.month-appointment.appointment-in-progress .month-appointment-status-label{display:inline;padding:0 3px;border-radius:3px;color:var(--text-inverse);line-height:1}
.month-appointment.cancelled.payment-required .month-appointment-status-label{background:var(--status-payment-required)}
.month-appointment.appointment-in-progress .month-appointment-status-label{background:var(--status-error)}
.month-appointment.cancelled.payment-required.appointment-in-progress .month-appointment-status-label{background:var(--status-error)}
.month-appointment.confirmed{background:var(--surface-confirmed);border-left-color:var(--status-confirmed-border)}
.month-appointment.cancelled,.month-appointment.cancelled_by_patient,.month-appointment.cancelled_by_specialist{background:var(--surface-cancelled);border-left-color:var(--status-cancelled-border)}
.month-appointment.cancelled .month-appointment-link,.month-appointment.cancelled_by_patient .month-appointment-link,.month-appointment.cancelled_by_specialist .month-appointment-link{text-decoration:line-through}
.month-appointment.cancelled.covered-payment-required{border-left-color:var(--status-payment-required);background:repeating-linear-gradient(135deg,var(--status-payment-required) 0 4px,color-mix(in srgb,var(--status-payment-required) 38%,var(--surface-cancelled)) 4px 8px) left/12px 100% no-repeat,var(--surface-cancelled)}.month-appointment.cancelled.covered-payment-required:hover,.month-appointment.cancelled.covered-payment-required:focus-within{border-left-color:var(--status-cancelled-border);background:var(--surface-cancelled)}
.month-appointment.special{background:var(--surface-special);border-left-color:var(--status-special-border)}
.month-appointment.outside-hours,.appointment-outside-hours-warning{color:var(--status-error)}
.month-timeline-sheet tbody tr.month-timeline-day>td{position:relative;padding-top:0;padding-bottom:0}
.month-timeline-time{padding:0!important;vertical-align:top!important}
.month-time-axis{position:relative;width:100%;min-height:28px;background:repeating-linear-gradient(to bottom,color-mix(in srgb,var(--line-month-sheet) 35%,var(--surface-month-time)) 0 1px,transparent 1px 28px)}
.month-time-axis-label{position:absolute;z-index:1;left:0;display:flex;width:100%;height:28px;align-items:center;justify-content:center;padding:0 2px;line-height:1;white-space:nowrap}
.month-timeline{position:relative;width:328px;min-width:328px;min-height:28px;isolation:isolate}
.month-timeline-grid{position:absolute;z-index:0;inset:0;background:repeating-linear-gradient(to bottom,color-mix(in srgb,var(--line-month-sheet) 35%,transparent) 0 1px,transparent 1px 28px);pointer-events:none}
.month-sheet .month-timeline-slot{position:absolute;z-index:1;top:var(--month-item-top);left:0;width:100%;height:var(--month-item-height);min-height:0;margin:0;overflow:hidden}
.month-sheet .month-timeline-slot.is-compact{padding:0}.month-sheet .month-timeline-slot.is-compact span{display:none}
.month-timeline .month-timeline-time-off{position:absolute;z-index:1;top:var(--month-item-top);left:0;width:100%;height:var(--month-item-height);min-height:0;margin:0;overflow:hidden}.month-timeline .month-timeline-time-off.is-compact{padding:0}.month-timeline .month-timeline-time-off.is-compact span{display:none}
.month-timeline .month-timeline-appointment{position:absolute;z-index:100;top:var(--month-item-top);left:var(--month-item-left);width:calc(100% - var(--month-item-left));max-width:none;height:var(--month-item-height);min-height:0;margin:0}.month-timeline .month-timeline-appointment.cancelled{z-index:calc(2 + var(--month-item-layer,0))}
.month-timeline .month-timeline-appointment:hover{z-index:201;box-shadow:0 0 0 1px var(--line-focus)}
.month-timeline .month-timeline-appointment:focus-within{z-index:201}.month-timeline .month-timeline-appointment.cancelled:hover,.month-timeline .month-timeline-appointment.cancelled:focus-within{z-index:202}
.month-timeline-appointment.is-compact .month-appointment-link{padding:0 2px;font-size:9px;line-height:1}
.month-timeline-appointment.is-compact .month-notification-badge{flex-basis:9px;width:9px;min-width:9px;height:9px;min-height:9px;margin:0 1px}.month-timeline-appointment.is-compact .month-appointment-shift{flex-basis:14px}.month-timeline-appointment.is-compact .month-calendar-button{width:12px;height:12px;padding:1px}.month-timeline-appointment.is-compact .month-calendar-button .mdi-icon{width:9px;height:9px}
.month-timeline-state-label{position:absolute;z-index:1;top:5px;left:5px}
body.month-view{height:100vh;height:100dvh;overflow:hidden}
body.month-view main{display:flex;flex-direction:column;height:calc(100vh - var(--month-focus-header-height,62px));height:calc(100dvh - var(--month-focus-header-height,62px));margin:0 auto;padding-bottom:8px;overflow:hidden}
body.month-view .month-sheet-wrap{flex:1 1 auto;min-height:0;max-height:none}
body.month-focus-mode main{width:100%;max-width:none;margin:0;padding:6px 0 8px}
body.month-focus-mode .booking,body.month-focus-mode .month-category-filter{display:none}
body.month-focus-mode .month-toolbar{position:relative;display:flex;flex:0 0 auto;align-items:center;gap:4px;min-height:26px;margin:0 8px 6px}
body.month-focus-mode .month-toolbar h1{display:none}
body.month-focus-mode .month-toolbar>div:first-child{display:flex;align-items:center;gap:4px;min-width:max-content}
body.month-focus-mode .month-toolbar>div:last-child{display:flex;flex-wrap:nowrap;align-items:center;gap:4px;min-width:0;margin-left:auto}
body.month-focus-mode .month-toolbar>div.schedule-focus-navigation{display:flex}
body.month-focus-mode .month-toolbar .schedule-week-range{display:none}
body.month-focus-mode .month-toolbar .month-focus-category-filter{display:flex;gap:4px;width:auto;height:26px;margin:0}
body.month-focus-mode .month-toolbar .month-focus-category-filter select,body.month-focus-mode .month-toolbar .month-focus-category-filter .schedule-specialist-search-wrap{box-sizing:border-box;width:150px;height:26px;min-height:26px}body.month-focus-mode .month-toolbar .month-focus-category-filter select{padding:2px 24px 2px 7px;border-radius:7px;font-size:11px}body.month-focus-mode .month-toolbar .month-focus-category-filter input[type="search"]{width:100%;height:26px;min-height:26px;padding:2px 26px 2px 7px;border-radius:7px;font-size:11px}
body.month-focus-mode .month-toolbar .month-focus-clear-filters{box-sizing:border-box;width:96px;height:26px;min-height:26px;padding:3px 6px;border-radius:7px;font-size:11px;line-height:1;white-space:nowrap}
body.month-focus-mode .month-toolbar .schedule-view-switch{grid-template-columns:repeat(3,minmax(62px,1fr));height:26px;margin-right:4px;border-radius:7px}
body.month-focus-mode .month-toolbar .schedule-view-switch>a,body.month-focus-mode .month-toolbar .schedule-view-switch>span{height:100%;min-height:0;padding:3px 6px;font-size:11px}
body.month-focus-mode .month-toolbar .schedule-period-button{width:92px;height:26px;min-height:26px;padding:3px 7px;border-radius:7px;font-size:11px}body.month-focus-mode .month-toolbar .schedule-period-previous,body.month-focus-mode .month-toolbar .schedule-period-next{width:26px;padding:3px}body.month-focus-mode .month-toolbar .schedule-period-button-label{display:none}
body.month-focus-mode .month-toolbar .schedule-period-jump,body.month-focus-mode .month-toolbar .schedule-period-jump select{width:135px;height:26px;min-height:26px;font-size:11px}
body.month-focus-mode .month-toolbar .schedule-period-jump select{padding:2px 24px 2px 7px;border-radius:7px}
body.month-focus-mode .month-sheet-wrap{width:100%;border-right:0;border-bottom:0;border-left:0;border-radius:0}
body.month-view .month-sheet thead th[data-month-specialist-id]{cursor:pointer;transition:background-color .15s ease,color .15s ease}
body.month-view .month-sheet thead th[data-month-specialist-id]:hover,body.month-view .month-sheet thead th[data-month-specialist-id]:focus-visible{background:color-mix(in srgb,var(--accent) 24%,var(--surface-month-header));color:var(--ink);outline:2px solid var(--accent);outline-offset:-2px}
.appointment-quick-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:22px}
.appointment-quick-actions>section{margin:0!important;padding:18px;background:var(--card);border:1px solid var(--line);border-radius:11px}
.appointment-quick-actions .booking-form{grid-template-columns:1fr}
.appointment-comments details{margin-top:8px}
.appointment-comments summary{cursor:pointer;color:var(--accent);font-weight:700}
.appointment-comments>form{display:grid;gap:10px;margin-top:14px}
.appointment-comments>form[hidden]{display:none}
.patient-short .patient-meta{font-size:12px;color:var(--muted)}
.patient-short .patient-short-name{font-size:28px;font-weight:700;line-height:1.2}
.patient-blocked-status{display:inline-block;margin-left:7px;padding:2px 6px;border-radius:999px;background:var(--patient-blocked-badge);color:var(--text-inverse);font-size:11px;font-weight:700;line-height:1.2;vertical-align:middle}
.records{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.records details{border:1px solid var(--line);border-radius:8px;padding:10px;background:var(--surface-soft)}
.records summary{cursor:pointer;font-weight:700}
.admin-section-heading{display:flex;align-items:center;gap:16px;margin-bottom:16px}.admin-section-heading h2{margin:0}.admin-section-search{max-width:320px}
.hidden-specialists{margin-top:16px}.hidden-specialists>summary{cursor:pointer;font-weight:700;color:var(--muted);margin-bottom:10px}.hidden-specialists[open]>summary{margin-bottom:12px}
.inline-form{display:grid;gap:9px;margin-top:12px}
.category-notice{display:block;margin:10px 0;color:var(--muted);font-size:12px}
.check{display:flex;align-items:center;gap:7px}
.check input{width:auto}
.availability-editor{display:grid;gap:7px;margin:4px 0;border:1px solid var(--line);border-radius:8px;padding:10px}
.availability-editor legend{padding:0 4px;color:var(--ink);font-weight:700}
.availability-row{display:grid;grid-template-columns:52px 1fr 12px 1fr;gap:6px;align-items:center}
.availability-row .check{font-size:12px}
.availability-time{min-width:0;padding:6px}
.availability-time.is-disabled{background:var(--surface-disabled);color:var(--availability-text);border-color:var(--line-availability-disabled);pointer-events:none}
/* Dzienny widok gabinetów: wolne przedziały i zajęte rezerwacje tworzą czytelną oś czasu w każdej kolumnie. */
.rooms-toolbar{margin-bottom:18px}
.room-view-date,.schedule-week-range{display:inline-block;padding:2px 6px;border-radius:4px;background:var(--patient-blocked-badge);color:var(--text-inverse);font-weight:750}
.room-view-date.is-today,.schedule-week-range.is-current{background:var(--accent)}
.rooms-toolbar>div:last-child{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.rooms-date-form{display:inline-flex;gap:6px;margin:0}
.rooms-date-form input{padding:7px 8px}
.rooms-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;align-items:start}
.room-day{min-height:260px;padding:0!important;overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:11px}
.room-day.unavailable-room-day{background:var(--surface-unavailable);border-color:var(--line-unavailable)}
.room-day.unavailable-room-day>h2{color:var(--text-unavailable)}
.room-day.unavailable-room-day .room-day-track{filter:grayscale(1);opacity:.58}
.room-day>h2{position:relative;display:flex;flex-direction:column;gap:2px;margin:0;padding:12px 44px 12px 14px;border-bottom:1px solid var(--line);font-size:17px}
.room-day>h2 small{font-size:12px;color:var(--muted);font-weight:500}
.room-schedule-link{position:absolute;right:12px;top:12px;display:grid;place-items:center;width:24px;height:24px;border:1px solid var(--line-today);border-radius:6px;color:var(--accent)}
.room-schedule-link:hover{background:var(--surface-day-link-hover);box-shadow:0 0 0 1px var(--line-focus)}
.room-schedule-link .mdi-icon{width:16px;height:16px}
.room-day-track{display:grid;min-width:0;gap:7px;padding:10px;overflow:hidden}
.room-gap,.room-visit{box-sizing:border-box;width:100%;min-width:0;max-width:100%;height:var(--room-block-height,62px)}
.room-gap{display:flex;align-items:center;padding:7px 9px;border:1px dashed var(--line-room-gap);border-radius:7px;background:var(--surface);color:var(--text-slot);font-size:12px}
.room-gap[data-booking-start]{cursor:pointer;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease}
.room-gap[data-booking-start]:hover,.room-gap[data-booking-start]:focus-visible{background:var(--surface-slot-hover);border-color:var(--line-focus);box-shadow:0 0 0 1px var(--line-today);outline:none}
.room-visit{height:max(var(--room-block-height,62px),54px);position:relative;display:flex;align-items:flex-start;overflow:hidden;padding:7px 9px 29px;border:1px solid var(--line-room);border-left:4px solid var(--accent);border-radius:7px;color:var(--ink);text-decoration:none;background:var(--surface);transition:box-shadow .15s ease,background-color .15s ease}
.room-visit-return-flashed::after{content:"";position:absolute;z-index:5;inset:0;border-radius:inherit;background:var(--accent);pointer-events:none;opacity:0;animation:appointment-return-flash .38s ease-in-out}
.theme-dark .room-visit-return-flashed::after{background:#fff}
.room-visit:hover{box-shadow:0 0 0 1px var(--line-focus);background:var(--surface-room-hover)}
.room-visit strong{display:flex;width:100%;min-width:0;font-size:12px;color:var(--ink)}
.room-visit-time{flex:0 0 auto;font-weight:750}
.room-visit.room-visit-in-progress .room-visit-time{box-sizing:border-box;padding:2px 4px;border-radius:4px;background:var(--status-error);color:var(--text-inverse)!important;line-height:1.25}
.room-visit .room-visit-specialist{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);font-size:12px;font-weight:650}
.room-visit.outside-hours .room-visit-time{color:var(--status-error)}
.room-visit .appointment-lock{position:absolute;right:7px;bottom:6px;margin:0}
.room-calendar-button{position:absolute;z-index:1;left:58px;bottom:4px;padding:2px;background:transparent;border-color:transparent;color:var(--accent)}
.room-calendar-button:hover{background:var(--surface-control-hover);border-color:var(--line-control-hover)}
.room-move-button{position:absolute;z-index:1;bottom:4px;padding:2px;background:transparent;border-color:transparent;color:var(--accent)}
.room-move-up{left:7px}.room-move-down{left:32px}
.room-move-button:hover:not(:disabled){background:var(--surface-control-hover);border-color:var(--line-control-hover)}
.room-move-button:disabled{background:transparent!important;border-color:transparent!important;color:var(--icon-disabled)!important;opacity:1}
.room-visit.scheduled{background:var(--surface-scheduled);border-left-color:var(--status-scheduled-border)}
.room-visit.confirmed{background:var(--surface-confirmed);border-left-color:var(--status-confirmed-border)}
.room-visit.conflict{background:var(--surface-conflict);border-left-color:var(--status-conflict-border)}
.room-visit.conflict .room-visit-time{color:var(--status-error)}
@media(max-width:900px){.week-grid{grid-template-columns:repeat(var(--week-day-count,6),minmax(240px,1fr))}
.booking-form{grid-template-columns:repeat(2,1fr)}
.appointment-quick-actions{grid-template-columns:1fr}
.company-hours-form{grid-template-columns:repeat(2,1fr)}
.patient-extra-field-row{grid-template-columns:1fr}
.admin-grid{grid-template-columns:1fr}
.records{grid-template-columns:repeat(2,minmax(0,1fr))}
.toolbar{align-items:flex-start;flex-direction:column}
.booking-specialist-bar{grid-template-columns:1fr;gap:7px}
.booking-specialist-meta{padding-bottom:0}
}
@media(max-width:560px){header{padding:0 18px;gap:14px}
nav{gap:10px;font-size:13px}
main{padding:20px 16px}
.booking-form{grid-template-columns:1fr}
.company-hours-form{grid-template-columns:1fr}
.booking-form .wide{grid-column:auto}
.records{grid-template-columns:1fr}
.toolbar h1{font-size:24px}
}
@media(max-width:1050px){.appointment-edit-headings,.appointment-edit-form{grid-template-columns:minmax(0,1fr) minmax(250px,.8fr)}}
@media(max-width:700px){.appointment-edit-headings,.appointment-edit-form{grid-template-columns:1fr}.appointment-edit-headings h2+h2{border-top:1px solid var(--line);border-left:0;padding:12px 0}.appointment-series-fields{padding:12px 0 0;border-top:1px solid var(--line);border-left:0}.appointment-series-fields label{width:100%}}
@media(max-width:760px){.time-off-action-split{margin-left:auto}}
.schedule-period-previous,.schedule-period-next,.schedule-period-current:not(.is-current-period){border-color:var(--accent);background:var(--surface);color:var(--accent)}.schedule-period-previous:hover,.schedule-period-next:hover,.schedule-period-current:not(.is-current-period):hover{background:var(--surface-control-hover);color:var(--accent)}.schedule-period-current.is-current-period{border-color:var(--accent);background:var(--accent);color:var(--text-inverse)}
.time-off-edit-form:has(select[name="time_off_recurrence"] option[value="none"]:checked) select[name="time_off_recurrence"]{pointer-events:none;opacity:.52;cursor:not-allowed}
.appointment-series-preview-list li+li{margin-top:1px}
.appointment-edit-headings .appointment-series-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.appointment-series-navigation{display:inline-flex;gap:6px;flex:0 0 auto}.appointment-series-nav-button{display:inline-grid;place-items:center;box-sizing:border-box;width:32px;height:32px;padding:0;border:1px solid var(--accent);border-radius:10px;background:var(--surface);color:var(--accent);font-size:20px;font-weight:700;line-height:1;text-decoration:none}.appointment-series-nav-button:hover:not(:disabled){background:var(--surface-control-hover);color:var(--accent)}.appointment-series-nav-button:disabled{border-color:var(--line-disabled);color:var(--icon-disabled);cursor:not-allowed}
.availability-result:not(:has(.availability-result-hint)){border-color:var(--accent);background:var(--surface);color:var(--accent)}.availability-result:not(:has(.availability-result-hint)):hover{background:var(--surface-control-hover);color:var(--accent)}
.appointment-booking-dialog{width:min(816px,calc(100vw - 32px));box-sizing:border-box}.appointment-booking-dialog .appointment-booking-form{grid-template-columns:minmax(0,1fr)}.appointment-booking-dialog .patient-picker{display:block;width:100%;min-width:0}.appointment-booking-dialog .patient-search{display:grid;width:100%;gap:5px}.appointment-booking-dialog .patient-results{right:0;width:100%;max-width:none}.appointment-booking-primary{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:12px;align-items:end;min-width:0}.appointment-booking-primary>label{min-width:0}.appointment-booking-primary input,.appointment-booking-primary select{width:100%;min-width:0}.appointment-booking-dialog .appointment-payment-method{display:grid;gap:5px;margin:0;min-width:0;font-size:13px;font-weight:650}.appointment-booking-dialog .appointment-paid-toggle{align-self:end}.appointment-booking-dialog .appointment-paid-button{display:inline-flex;align-items:center;justify-self:start;box-sizing:border-box;min-height:39px;margin:0;padding:9px 10px;border:1px solid var(--accent);border-radius:10px;background:var(--surface);color:var(--accent);cursor:pointer;font-weight:700}.appointment-booking-dialog .appointment-paid-button:hover{background:var(--surface-control-hover)}.appointment-booking-dialog .appointment-paid-button:has(input:checked){background:var(--accent);color:var(--text-inverse)}.appointment-booking-dialog .appointment-paid-button:has(input:checked):hover{background:var(--accent-read)}.appointment-booking-dialog .appointment-paid-button input{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.appointment-booking-dialog .appointment-paid-button:has(input:focus-visible){outline:2px solid var(--focus-ring);outline-offset:2px}.appointment-booking-primary>.appointment-booking-comment,.appointment-booking-primary>.appointment-booking-submit{grid-column:1/-1}.appointment-booking-primary>.appointment-booking-submit{justify-self:start;width:auto}
.new-patient-dialog{width:min(620px,calc(100vw - 32px));box-sizing:border-box}.new-patient-dialog .booking-form{grid-template-columns:repeat(2,minmax(0,1fr))}.new-patient-dialog .booking-form>button{grid-column:1}
@media(max-width:560px){.appointment-booking-dialog .booking-form,.appointment-booking-primary,.new-patient-dialog .booking-form{grid-template-columns:1fr}.appointment-booking-primary>.appointment-booking-submit,.new-patient-dialog .booking-form>button{grid-column:auto}}
.appointment-series-dialog>h2{cursor:grab;user-select:none;touch-action:none}.appointment-series-dialog>h2:active,.appointment-series-dialog.modal-is-dragging>h2{cursor:grabbing}.appointment-series-dialog.modal-drag-positioned{position:fixed;margin:0}.modal-close-button{position:absolute;top:13px;right:13px;display:grid;place-items:center;width:28px;height:28px;padding:0;border:0;border-radius:6px;background:transparent;color:var(--muted)}.modal-close-button:hover{background:var(--surface-control-hover);color:var(--accent)}.modal-close-button .mdi-icon{width:19px;height:19px}
.appointment-series-preview-dialog{min-width:min(280px,calc(100vw - 32px))}
.appointment-edit .appointment-payment-flags{grid-column:1;align-self:end;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;width:100%;height:36px;min-height:36px;border:1px solid var(--accent);border-radius:10px;overflow:hidden}.appointment-edit .appointment-payment-flags .appointment-paid-button,.appointment-edit .appointment-payment-flags .appointment-additional-fees-toggle{display:grid!important;place-items:center;min-width:0;min-height:0!important;height:100%;margin:0!important;padding:6px 10px!important;border:0!important;border-right:1px solid var(--accent)!important;border-radius:0!important;background:var(--surface)!important;color:var(--accent)!important;font:inherit!important;font-size:15px!important;font-weight:700!important;line-height:1.2;text-align:center;white-space:nowrap}.appointment-edit .appointment-payment-flags .appointment-additional-fees-toggle{border-right:0!important}.appointment-edit .appointment-payment-flags .appointment-paid-button>input{display:none!important}.appointment-edit .appointment-payment-flags .appointment-paid-button:has(input:checked),.appointment-edit .appointment-payment-flags .appointment-additional-fees-toggle.has-selected{background:var(--accent)!important;color:var(--text-inverse)!important}.appointment-edit .appointment-payment-flags .appointment-paid-button:has(input:disabled),.appointment-edit .appointment-payment-flags .appointment-paid-button.is-unavailable{background:var(--surface-disabled)!important;color:var(--status-special-border)!important;cursor:not-allowed!important;opacity:1!important}
.appointment-booking-dialog .booking-payment-flags{align-self:end;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;width:100%;height:36px;min-height:36px;border:1px solid var(--accent);border-radius:10px;overflow:hidden}.appointment-booking-dialog .booking-payment-flags .appointment-paid-button,.appointment-booking-dialog .booking-payment-flags .appointment-additional-fees-toggle{display:grid!important;place-items:center;justify-self:stretch!important;width:100%!important;min-width:0;min-height:0!important;height:100%;margin:0!important;padding:6px 10px!important;border:0!important;border-right:1px solid var(--accent)!important;border-radius:0!important;background:var(--surface)!important;color:var(--accent)!important;font:inherit!important;font-size:15px!important;font-weight:700!important;line-height:1.2;text-align:center;white-space:nowrap}.appointment-booking-dialog .booking-payment-flags .appointment-additional-fees-toggle{border-right:0!important}.appointment-booking-dialog .booking-payment-flags .appointment-paid-button:has(input:checked),.appointment-booking-dialog .booking-payment-flags .appointment-additional-fees-toggle.has-selected{background:var(--accent)!important;color:var(--text-inverse)!important}
.appointment-edit .appointment-save-actions{margin-top:12px}
.appointment-edit .appointment-save-actions>.appointment-cancel-button,.appointment-edit .appointment-save-actions>.appointment-delete-button,.appointment-edit .appointment-price-save-split .appointment-save-button{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;height:39px;min-height:39px;line-height:1}.appointment-edit .appointment-price-save-toggle{box-sizing:border-box;height:39px;min-height:39px}
.service-price .appointment-additional-fee-icon{display:inline-block;width:11px;height:11px;margin-right:3px;vertical-align:-1px}
.patient-short{display:grid;grid-template-columns:minmax(0,772px) minmax(250px,1fr);gap:24px}.patient-short-primary{min-width:0}.patient-additional-information{min-width:0;padding-left:24px;border-left:1px solid var(--line)}.patient-additional-information h2{margin:0 0 12px}.patient-additional-information h3{margin:0 0 8px;color:var(--muted);font-size:13px}.appointment-cancelled-at{display:flex;align-items:baseline;justify-content:flex-start;gap:6px;margin:0 0 12px;color:var(--muted);font-size:13px}.appointment-cancelled-at h3,.appointment-cancelled-at p{margin:0}.patient-additional-fee-list{display:grid;gap:6px;margin:0;padding:0;list-style:none}.patient-additional-fee-list li{display:flex;align-items:baseline;justify-content:flex-start;gap:10px;color:var(--muted);font-size:13px}.patient-additional-fee-list li span{min-width:0}.patient-additional-fee-list li strong{flex:0 0 auto;color:var(--ink)}
@media(max-width:1050px){.patient-short{grid-template-columns:minmax(0,1fr) minmax(250px,.8fr)}}
@media(max-width:700px){.patient-short{grid-template-columns:1fr}.patient-additional-information{padding:12px 0 0;border-top:1px solid var(--line);border-left:0}}
header .header-help-button{padding:0;border:0;background:transparent;color:var(--text-inverse);font:inherit;cursor:pointer}header .header-help-button:hover,header .header-help-button:focus-visible{background:transparent;color:var(--text-inverse);outline:none}
.help-dialog{width:min(720px,calc(100vw - 32px));max-height:calc(100dvh - 82px);padding:22px;overflow:hidden}.help-dialog>h2{margin:0 0 14px;padding-right:34px}.help-dialog-content{max-height:calc(100dvh - 148px);padding-right:8px;overflow-y:auto;overscroll-behavior:contain}.help-intro{margin:0 0 14px;color:var(--muted);font-size:13px}.help-version{margin:0 0 14px;color:var(--muted);font-size:10px;text-align:right}.help-topic{padding:14px 0;border-top:1px solid var(--line)}.help-topic h3{margin:0 0 10px;font-size:15px}.help-legend-grid{display:grid;gap:8px}.help-legend-row{display:grid;grid-template-columns:minmax(190px,220px) minmax(0,1fr);gap:12px;align-items:center}.help-legend-row p{margin:0;color:var(--muted);font-size:13px}.help-appointment-demo{box-sizing:border-box;width:100%;min-height:0;margin:0}.help-appointment-demo .service-details{margin-top:1px}.help-day-grid{display:grid;grid-template-columns:minmax(190px,220px) minmax(0,1fr);gap:10px 12px;align-items:center}.help-day-grid>p{margin:0;color:var(--muted);font-size:13px}.help-day-demo{box-sizing:border-box;min-height:0;margin:0;padding:8px}.help-day-demo h2{margin:0}.help-slot-demo{display:grid;gap:5px}.help-icon-grid{display:grid;gap:8px}.help-icon-row{display:grid;grid-template-columns:28px minmax(0,1fr);gap:10px;align-items:center;color:var(--muted);font-size:13px}.help-icon-row:has(.help-payment-example){grid-template-columns:max-content minmax(0,1fr)}.help-icon-row>.mdi-icon,.help-icon-pair{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;color:var(--icon-muted)}.help-icon-row>.mdi-icon{width:20px;height:20px}.help-icon-pair{gap:0}.help-icon-pair .mdi-icon{width:15px;height:15px}.help-icon-row .comment-icon{margin:0}.help-icon-row .notification-badge{display:grid;place-items:center;box-sizing:border-box;flex:0 0 24px;width:24px;min-width:24px;height:24px;min-height:24px;margin:0;padding:0;border-radius:50%;line-height:1}.appointment-series-icon.help-inline-icon{position:static;width:20px;height:20px;color:var(--icon-muted)}.appointment-series-icon.help-inline-icon .mdi-icon{width:18px;height:18px}.appointment-lock.help-inline-icon{width:20px;height:20px;margin:0}.appointment-lock.help-inline-icon .mdi-icon{width:18px;height:18px}.appointment.help-payment-example{display:inline-flex;align-items:center;width:auto;height:auto;min-height:0;margin:0;padding:0;border:0;background:transparent}.help-payment-example .service-price{white-space:nowrap}.help-payment-example .appointment-additional-fee-icon{width:11px;height:11px;margin-right:3px}.help-rule-list{display:grid;gap:7px;margin:0;padding-left:20px;color:var(--muted);font-size:13px}
.help-root-sections{display:grid;gap:8px}.help-root-section,.help-markdown-topic{overflow:hidden;border:1px solid var(--line);border-radius:9px;background:var(--surface)}.help-root-section>summary,.help-markdown-topic>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;list-style:none;font-weight:700}.help-root-section>summary::-webkit-details-marker,.help-markdown-topic>summary::-webkit-details-marker{display:none}.help-root-section>summary::after,.help-markdown-topic>summary::after{content:'+';flex:0 0 auto;color:var(--accent);font-size:18px;font-weight:500;line-height:1}.help-root-section[open]>summary::after,.help-markdown-topic[open]>summary::after{content:'−'}.help-root-section>summary{padding:11px 13px;font-size:15px}.help-root-section[open]>summary{border-bottom:1px solid var(--line)}.help-root-section-content{padding:13px}.help-root-section-content>.help-intro:first-child{margin-top:0}.help-root-section-content>.help-topic:first-of-type{border-top:0;padding-top:0}.help-markdown-content{display:grid;gap:9px}.help-markdown-intro{color:var(--muted);font-size:13px}.help-markdown-intro>:first-child,.help-markdown-topic-content>:first-child{margin-top:0}.help-markdown-intro>:last-child,.help-markdown-topic-content>:last-child{margin-bottom:0}.help-markdown-topic>summary{padding:9px 11px;color:var(--ink);font-size:13px}.help-markdown-topic[open]>summary{border-bottom:1px solid var(--line)}.help-markdown-topic-content{padding:10px 11px;color:var(--muted);font-size:13px;line-height:1.5}.help-markdown-topic-content h4{margin:14px 0 6px;color:var(--ink);font-size:13px}.help-markdown-topic-content p{margin:0 0 8px}.help-markdown-topic-content ul,.help-markdown-topic-content ol{margin:0 0 8px;padding-left:20px}.help-markdown-topic-content li>ul,.help-markdown-topic-content li>ol{margin:3px 0 2px;padding-left:18px}.help-markdown-topic-content li+li{margin-top:3px}.help-markdown-topic-content blockquote{margin:8px 0;padding:7px 10px;border-left:3px solid var(--accent);background:var(--surface-control-hover)}.help-markdown-topic-content hr{margin:10px 0;border:0;border-top:1px solid var(--line)}.help-markdown-content code{padding:1px 4px;border-radius:4px;background:var(--surface-control-hover);font-size:.92em}.help-markdown-content a{color:var(--accent)}
.help-markdown-content h3,.help-markdown-content h4{line-height:1.35}.help-markdown-content h3{margin:14px 0 6px;color:color-mix(in srgb,var(--ink) 74%,var(--surface));font-size:12px;font-weight:700}.help-markdown-content h4{margin:11px 0 5px;color:color-mix(in srgb,var(--ink) 58%,var(--surface));font-size:11px;font-weight:650}
.help-markdown-content blockquote{margin:8px 0;padding:6px 9px;border-left:2px solid color-mix(in srgb,var(--accent) 42%,var(--line));background:color-mix(in srgb,var(--accent) 7%,var(--surface));color:var(--text-subtle);font-size:11px;font-weight:400;line-height:1.4}.help-markdown-content blockquote strong{font-weight:400}
.appointment-edit .appointment-payment-flags .appointment-additional-fees-toggle:disabled{background:var(--surface-disabled)!important;color:var(--status-special-border)!important;cursor:not-allowed!important;opacity:1!important}
.appointment-booking-dialog .booking-payment-flags .appointment-additional-fees-toggle:disabled{background:var(--surface-disabled)!important;color:var(--status-special-border)!important;cursor:not-allowed!important;opacity:1!important}
.appointment-booking-dialog .booking-payment-flags .appointment-paid-button:has(input:disabled){background:var(--surface-disabled)!important;color:var(--status-special-border)!important;cursor:not-allowed!important;opacity:1!important}
.logged-in-user{padding:3px 5px;border:0;border-radius:5px;background:transparent;cursor:pointer}.logged-in-user:hover,.logged-in-user:focus-visible{background:color-mix(in srgb,var(--text-inverse) 12%,transparent);color:var(--text-inverse);outline:2px solid var(--text-inverse);outline-offset:2px}.user-settings-dialog{position:fixed;width:min(360px,calc(100vw - 24px));margin:0;padding:22px;border:1px solid var(--line-popover);border-radius:11px;background:var(--surface);color:var(--ink);box-shadow:0 14px 34px var(--shadow-popover)}.user-settings-dialog::backdrop{background:color-mix(in srgb,var(--header-bg) 21%,transparent)}.user-settings-dialog h2{margin:0 34px 16px 0;font-size:19px}.user-settings-form{display:grid;gap:10px}.user-settings-form p{margin:0;color:var(--muted);font-size:13px}.user-settings-form fieldset{display:grid;gap:10px;margin:2px 0 0;padding:10px;border:1px solid var(--line);border-radius:7px}.user-settings-form fieldset legend{padding:0 4px;color:var(--muted);font-size:13px;font-weight:650}.user-settings-form button{justify-self:start;width:auto;margin-top:6px}
@media(max-width:560px){.help-legend-row,.help-day-grid{grid-template-columns:1fr}.help-appointment-demo,.help-day-demo,.help-slot-demo{max-width:260px}.help-dialog-content{padding-right:2px}}
/* Widok dnia korzysta z kolorów i dymków grafiku tygodniowego, a układ
   czasu i kolumn współdzieli z tabelą miesięczną. */
.day-category-filter{display:flex;align-items:end;width:100%;margin:0 0 12px}.day-category-filter .day-focus-toggle{margin-left:auto}.day-hide-non-working.is-active{background:var(--accent);color:var(--text-inverse)}.day-hide-non-working.is-active:hover{background:var(--accent-read);color:var(--text-inverse)}.day-focus-filter{display:none}
.day-sheet-wrap{--schedule-table-header-height:32px;width:100%;max-height:calc(100dvh - 150px);overflow:auto;border:1px solid var(--line-month-sheet);border-radius:11px;background:var(--surface-month-sheet);overscroll-behavior:contain}
.day-sheet{width:max-content;min-width:0;table-layout:fixed;border-collapse:separate;border-spacing:0;background:var(--surface-month-sheet)}
.day-sheet th,.day-sheet td{padding:0;border:0;border-right:1px solid var(--line-month-sheet);border-bottom:1px solid var(--line-month-sheet);vertical-align:top}
.day-sheet thead th{box-sizing:border-box;position:sticky;z-index:6;top:0;width:270px;min-width:270px;max-width:270px;height:var(--schedule-table-header-height);padding:0;background:var(--surface-month-header);color:var(--ink);font-weight:750;text-align:center}
.day-sheet thead th[data-day-specialist-id]{font-size:13px;text-align:left}.day-sheet thead th>a{display:flex;box-sizing:border-box;width:100%;height:calc(var(--schedule-table-header-height) - 1px);align-items:center;justify-content:flex-start;padding:0 10px 2px;color:inherit;text-align:left;text-decoration:none;transition:background-color .15s ease,color .15s ease}
.day-sheet thead th>a:hover,.day-sheet thead th>a:focus-visible{background:color-mix(in srgb,var(--accent) 24%,var(--surface-month-header));outline:2px solid var(--accent);outline-offset:-2px}
.day-sheet .day-time-heading{left:0;z-index:8;width:118px;min-width:118px;max-width:118px;padding:0 10px 2px;font-size:13px;text-align:left;vertical-align:middle}.day-sheet .day-time-cell{position:sticky;z-index:4;left:0;width:118px;min-width:118px;max-width:118px;background:var(--surface-month-time)}
.day-time-axis{position:relative;width:100%;background:repeating-linear-gradient(to bottom,color-mix(in srgb,var(--line-month-sheet) 58%,transparent) 0 1px,transparent 1px 60px)}
.day-time-label{position:absolute;top:var(--day-item-top);left:0;display:flex;width:100%;height:60px;align-items:center;justify-content:center;padding:0 4px;color:var(--muted);font-size:11px;font-weight:700;line-height:1;white-space:nowrap}
.day-timeline{position:relative;width:270px;min-width:270px;max-width:270px;isolation:isolate;background:var(--surface-month-sheet)}
.day-timeline-grid{position:absolute;z-index:0;inset:0;background:repeating-linear-gradient(to bottom,color-mix(in srgb,var(--line-month-sheet) 58%,transparent) 0 1px,transparent 1px 60px);pointer-events:none}
.day-sheet thead th.day-selected-specialist{background:color-mix(in srgb,var(--accent) 18%,var(--surface-month-header))}.day-sheet td.day-selected-specialist .day-timeline{background:color-mix(in srgb,var(--accent) 6%,var(--surface-month-sheet))}
.day-sheet td.day-unavailable-cell .day-timeline{background:color-mix(in srgb,var(--surface-unavailable) 90%,var(--line-month-day))}.day-sheet td.day-vacation-cell .day-timeline{background:repeating-linear-gradient(135deg,var(--surface-disabled-soft) 0 8px,var(--surface) 8px 16px)}
.day-state-label{position:absolute;z-index:1;top:8px;left:8px;color:var(--text-unavailable);font-size:11px;font-weight:700}.day-state-label.time-off-day-label{margin:0}
.day-free-slot{position:absolute;z-index:1;top:var(--day-item-top);left:3px;display:flex;width:calc(100% - 6px);height:var(--day-item-height);min-height:0;align-items:center;padding:0 5px;overflow:hidden;border:1px dashed var(--line-availability);border-radius:4px;background:transparent;color:var(--availability-text);font-size:10px;font-weight:400;line-height:1;text-align:left;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease}
.day-free-slot.outside-specialist-slot{background:var(--surface-disabled-soft);border-color:var(--line-disabled);color:var(--text-unavailable)}
.day-free-slot:hover,.day-free-slot:focus-visible{z-index:3;background:var(--surface-slot-hover);border-color:var(--line-focus);box-shadow:0 0 0 1px var(--line-today);color:var(--availability-text);outline:none}.day-free-slot span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.day-time-off-block{position:absolute;z-index:2;top:var(--day-item-top);left:3px;width:calc(100% - 6px);height:var(--day-item-height);min-height:0;margin:0;overflow:hidden}.day-time-off-block span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.day-appointment{position:absolute;z-index:100;top:var(--day-item-top);left:calc(3px + var(--day-item-left));width:calc(100% - 6px - var(--day-item-left));height:var(--day-item-height)!important;min-height:0!important;margin:0!important;padding-bottom:28px;overflow:hidden;align-content:start}
.day-appointment.long-appointment small::after{content:none;display:none}.day-appointment:hover,.day-appointment:focus-within{z-index:201}.day-appointment.appointment-clickable:hover{box-shadow:0 0 0 1px var(--line-focus)}
.day-appointment.cancelled{z-index:calc(2 + var(--day-item-layer,0))}.day-appointment.cancelled:hover,.day-appointment.cancelled:focus-within{z-index:202}
.day-appointment.cancelled.covered-payment-required{border-left-color:var(--status-payment-required);background:repeating-linear-gradient(135deg,var(--status-payment-required) 0 4px,color-mix(in srgb,var(--status-payment-required) 38%,var(--surface-cancelled)) 4px 8px) left/12px 100% no-repeat,var(--surface-cancelled)}.day-appointment.cancelled.covered-payment-required:hover,.day-appointment.cancelled.covered-payment-required:focus-within{border-left-color:var(--status-cancelled-border);background:var(--surface-cancelled)}
.day-appointment .service-details{grid-template-columns:minmax(0,max-content) max-content minmax(0,1fr);column-gap:4px;align-items:baseline}.day-appointment .service-duration,.day-appointment .appointment-room{white-space:nowrap}.day-appointment .service-duration:not(:first-child)::before{content:'·\00a0'}.day-appointment .appointment-room{grid-column:1/-1;min-width:0;overflow:hidden;text-overflow:ellipsis}.day-appointment .service-price{grid-column:1/-1}
.day-appointment.compact-day-appointment{grid-template-columns:90px minmax(0,1fr)}.day-appointment.compact-day-appointment>time{display:block;align-self:start;white-space:nowrap}.day-appointment.compact-day-appointment>div>br,.day-appointment.compact-day-appointment .service-details{display:none}.day-appointment.compact-day-appointment.appointment-in-progress>time::after{display:none}
.day-appointment .shift{position:absolute;z-index:2;left:2px;bottom:3px;width:max-content;margin:0;gap:2px}.day-appointment .move-button,.day-appointment .calendar-button{display:grid;place-items:center;box-sizing:border-box;flex:0 0 22px;width:22px;height:22px;min-height:22px;margin:0;padding:3px}
body.day-view{height:100vh;height:100dvh;overflow:hidden}
body.day-view main{display:flex;flex-direction:column;height:calc(100vh - var(--day-focus-header-height,62px));height:calc(100dvh - var(--day-focus-header-height,62px));margin:0 auto;padding-bottom:8px;overflow:hidden}
body.day-view .day-sheet-wrap{flex:1 1 auto;min-height:0;max-height:none}
body.week-focus-mode{height:100vh;height:100dvh;overflow:hidden}
body.week-focus-mode main{display:flex;flex-direction:column;box-sizing:border-box;width:100%;max-width:none;height:calc(100vh - var(--week-focus-header-height,62px));height:calc(100dvh - var(--week-focus-header-height,62px));margin:0;padding:6px 0 8px;overflow:hidden}
body.week-focus-mode .booking,body.week-focus-mode .week-schedule-controls{display:none}
body.week-focus-mode .week-toolbar{position:relative;display:flex;flex:0 0 auto;align-items:center;gap:4px;min-height:26px;margin:0 8px 6px}
body.week-focus-mode .week-toolbar>div:first-child{display:flex;align-items:center;gap:4px;min-width:max-content}
body.week-focus-mode .week-toolbar>div:last-child{display:flex;flex-wrap:nowrap;align-items:center;gap:4px;min-width:0;margin-left:auto}
body.week-focus-mode .week-toolbar>div.schedule-focus-navigation{display:flex}
body.week-focus-mode .week-toolbar .schedule-week-range{display:none}
body.week-focus-mode .week-toolbar .week-focus-filter{display:flex;gap:4px;width:auto;height:26px;margin:0}
body.week-focus-mode .week-toolbar .week-focus-filter select,body.week-focus-mode .week-toolbar .week-focus-filter .schedule-specialist-search-wrap{box-sizing:border-box;width:150px;height:26px;min-height:26px}body.week-focus-mode .week-toolbar .week-focus-filter select{padding:2px 24px 2px 7px;border-radius:7px;font-size:11px}body.week-focus-mode .week-toolbar .week-focus-filter input[type="search"]{width:100%;height:26px;min-height:26px;padding:2px 26px 2px 7px;border-radius:7px;font-size:11px}
body.week-focus-mode .week-toolbar .week-focus-filter .button{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:96px;height:26px;min-height:26px;padding:3px 6px;border-radius:7px;font-size:11px;line-height:1;white-space:nowrap}
body.week-focus-mode .week-toolbar .schedule-view-switch{grid-template-columns:repeat(3,minmax(62px,1fr));height:26px;margin-right:4px;border-radius:7px}
body.week-focus-mode .week-toolbar .schedule-view-switch>a,body.week-focus-mode .week-toolbar .schedule-view-switch>span{height:100%;min-height:0;padding:3px 6px;font-size:11px}
body.week-focus-mode .week-toolbar .schedule-period-button{width:92px;height:26px;min-height:26px;padding:3px 7px;border-radius:7px;font-size:11px}
body.week-focus-mode .week-toolbar .schedule-period-previous,body.week-focus-mode .week-toolbar .schedule-period-next{width:26px;padding:3px}
body.week-focus-mode .week-toolbar .schedule-period-button-label{display:none}
body.week-focus-mode .week-toolbar .schedule-period-jump,body.week-focus-mode .week-toolbar .schedule-period-jump select{width:135px;height:26px;min-height:26px;font-size:11px}
body.week-focus-mode .week-toolbar .schedule-period-jump select{padding:2px 24px 2px 7px;border-radius:7px}
body.week-focus-mode .week-specialists{flex:1 1 auto;min-height:0;margin:0;padding:3px 8px 8px;overflow-y:auto;overscroll-behavior:contain}
body.week-focus-mode .specialist-week{width:100%}
body.day-focus-mode{height:100vh;height:100dvh;overflow:hidden}
body.day-focus-mode main{display:flex;flex-direction:column;width:100%;max-width:none;height:calc(100vh - var(--day-focus-header-height,62px));height:calc(100dvh - var(--day-focus-header-height,62px));margin:0;padding:6px 0 8px;overflow:hidden}
body.day-focus-mode .booking,body.day-focus-mode .day-category-filter{display:none}
body.day-focus-mode .day-toolbar{position:relative;display:flex;flex:0 0 auto;align-items:center;flex-direction:row;gap:4px;min-height:26px;margin:0 8px 6px}
body.day-focus-mode .day-toolbar h1{display:none}
body.day-focus-mode .day-toolbar>div:first-child{display:flex;align-items:center;gap:4px;min-width:max-content}
body.day-focus-mode .day-toolbar>div:last-child{display:flex;flex-wrap:nowrap;align-items:center;gap:4px;min-width:0;margin-left:auto}
body.day-focus-mode .day-toolbar>div.schedule-focus-navigation{display:flex}
body.day-focus-mode .day-toolbar .schedule-week-range{display:none}
body.day-focus-mode .day-toolbar .day-focus-filter{display:flex;gap:4px;width:auto;height:26px;margin:0}
body.day-focus-mode .day-toolbar .day-focus-filter select,body.day-focus-mode .day-toolbar .day-focus-filter .schedule-specialist-search-wrap{box-sizing:border-box;width:150px;height:26px;min-height:26px}body.day-focus-mode .day-toolbar .day-focus-filter select{padding:2px 24px 2px 7px;border-radius:7px;font-size:11px}body.day-focus-mode .day-toolbar .day-focus-filter input[type="search"]{width:100%;height:26px;min-height:26px;padding:2px 26px 2px 7px;border-radius:7px;font-size:11px}
body.day-focus-mode .day-toolbar .day-focus-filter .button{display:flex;align-items:center;justify-content:center;box-sizing:border-box;height:26px;min-height:26px;padding:3px 6px;border-radius:7px;font-size:11px;line-height:1;white-space:nowrap}
body.day-focus-mode .day-toolbar .day-focus-hide-non-working.is-active{background:var(--accent);color:var(--text-inverse)}
body.day-focus-mode .day-toolbar .schedule-view-switch{grid-template-columns:repeat(3,minmax(62px,1fr));height:26px;margin-right:4px;border-radius:7px}
body.day-focus-mode .day-toolbar .schedule-view-switch>a,body.day-focus-mode .day-toolbar .schedule-view-switch>span{height:100%;min-height:0;padding:3px 6px;font-size:11px}
body.day-focus-mode .day-toolbar .schedule-period-button{width:92px;height:26px;min-height:26px;padding:3px 7px;border-radius:7px;font-size:11px}body.day-focus-mode .day-toolbar .schedule-period-previous,body.day-focus-mode .day-toolbar .schedule-period-next{width:26px;padding:3px}body.day-focus-mode .day-toolbar .schedule-period-button-label{display:none}
body.day-focus-mode .day-toolbar .schedule-period-jump,body.day-focus-mode .day-toolbar .schedule-period-jump input[type="date"]{width:135px;height:26px;min-height:26px;font-size:11px}
body.day-focus-mode .day-toolbar .schedule-period-jump input[type="date"]{padding:2px 7px;border-radius:7px}
body.day-focus-mode .day-sheet-wrap{flex:1 1 auto;width:100%;min-height:0;max-height:none;border-right:0;border-bottom:0;border-left:0;border-radius:0}
body.month-focus-mode .month-schedule-controls,body.day-focus-mode .day-schedule-controls,body.week-focus-mode .week-schedule-controls{display:none}
/* Zwykłe widoki grafiku mają bardziej zwarty rytm pionowy; tryb pełnoekranowy zachowuje własne odstępy. */
:is(body.week-view:not(.week-focus-mode),body.day-view:not(.day-focus-mode),body.month-view:not(.month-focus-mode)) main{padding-top:15px}
:is(body.week-view:not(.week-focus-mode),body.day-view:not(.day-focus-mode),body.month-view:not(.month-focus-mode)) .toolbar{display:none;margin:0}
:is(body.week-view:not(.week-focus-mode),body.day-view:not(.day-focus-mode),body.month-view:not(.month-focus-mode)) #appointment-booking{margin-bottom:8px}
body.week-view:not(.week-focus-mode){height:100vh;height:100dvh;overflow:hidden}
body.week-view:not(.week-focus-mode) main{display:flex;flex-direction:column;height:calc(100vh - 62px);height:calc(100dvh - 62px);padding-bottom:8px;overflow:hidden}
body.week-view:not(.week-focus-mode) .week-normal-sticky-controls{position:relative;z-index:30;flex:0 0 auto;padding-bottom:8px;background:var(--paper)}
body.week-view:not(.week-focus-mode) .week-schedule-controls{margin-bottom:0}
body.week-view:not(.week-focus-mode) .week-specialists{flex:1 1 auto;min-height:0;padding:3px 0 8px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}
@media(max-width:1720px){
body.month-focus-mode .month-toolbar>.schedule-focus-actions,body.day-focus-mode .day-toolbar>.schedule-focus-actions,body.week-focus-mode .week-toolbar>.schedule-focus-actions{position:relative;left:auto;margin-left:auto;transform:none}
body.month-focus-mode .month-toolbar>.schedule-focus-actions+div:last-child,body.day-focus-mode .day-toolbar>.schedule-focus-actions+div:last-child,body.week-focus-mode .week-toolbar>.schedule-focus-actions+div:last-child{margin-left:16px}
}
@media(max-width:760px){.day-toolbar{align-items:flex-start;flex-direction:column}.day-sheet thead th,.day-timeline{width:240px;min-width:240px;max-width:240px}.day-sheet .day-time-heading,.day-sheet .day-time-cell{width:104px;min-width:104px;max-width:104px}.day-time-label{font-size:10px}}
