: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}nav a.is-active{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:7px}
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-actions{grid-column:1/-1;display:grid;gap:6px;padding-top:6px;border-top:1px solid var(--line)}.appointment-quick-popover :is(.appointment-quick-series,.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-popover .appointment-quick-series[hidden]{display:none}.appointment-quick-popover form.is-special :is(select,.appointment-quick-toggle,[data-quick-payment-method]){display:none}
.appointment-quick-popover form.is-special [data-quick-status][hidden]{display:none}.appointment-quick-popover form.is-special:has([data-quick-status][hidden]) .appointment-quick-popover-actions{padding-top:0;border-top:0}
.appointment-quick-popover form.is-group :is(.appointment-quick-toggle,[data-quick-payment-method]){display:none}
.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}
/* Kompaktowy podgląd komentarzy spod ikony na dymku — te same wielkości czcionek co w szybkim
   menu wizyty, a dymki własnych komentarzy mają minimalne wcięcie, aby nie poszerzać popovera. */
.appointment-comments-quick-popover{position:fixed;z-index:2000;width:min(300px,calc(100vw - 24px));max-height:min(70vh,420px);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);display:flex;flex-direction:column;gap:6px}
.appointment-comments-quick-popover[hidden]{display:none}
.appointment-comments-quick-list{display:flex;flex-direction:column;gap:5px;overflow-y:auto;max-height:min(46vh,260px)}
.appointment-comments-quick-list[aria-busy="true"]{opacity:.6}
.appointment-comments-quick-empty{margin:0;color:var(--muted);font-size:11px;text-align:center}
.appointment-comments-quick-popover .comment-bubble{flex-direction:column;flex-wrap:nowrap;align-items:flex-start;width:fit-content;max-width:90%;padding:5px 7px;margin:0;font-size:11px}
.appointment-comments-quick-popover .comment-meta,.appointment-comments-quick-popover .comment-body{flex:none}
.appointment-comments-quick-popover .comment-meta{font-size:10px}
.appointment-comments-quick-popover .comment-body{margin:2px 0 0;font-size:11px}
.appointment-comments-quick-popover .comment-bubble.comment-authored-by-current-user{margin-left:auto;border-left:none;border-right:3px solid var(--accent)}
.appointment-comments-quick-actions{display:flex;align-self:flex-end;gap:6px}
.appointment-comments-quick-actions .appointment-comments-quick-reply-toggle,.appointment-comments-quick-actions .appointment-comments-quick-details-link{margin:0;padding:2px 6px;font-size:10px;line-height:1.2}
.appointment-comments-quick-reply-toggle[hidden],.appointment-comments-quick-details-link[hidden]{display:none}
#appointment-comments-quick-form{display:grid;gap:6px;margin:0}
#appointment-comments-quick-form[hidden]{display:none}
#appointment-comments-quick-form textarea{min-height:50px;padding:5px 7px;border-radius:7px;font-size:12px;resize:vertical}
#appointment-comments-quick-form select{width:100%;min-width:0;height:29px;padding:3px 6px;border-radius:7px;font-size:11px}
#appointment-comments-quick-form button{padding:5px 7px;font-size:12px}
#appointment-comments-quick-form.is-saving{pointer-events:none;opacity:.7}
.appointment-comments-quick-save-state{margin:0;color:var(--muted);font-size:10px;text-align:center}
.appointment-comments-quick-save-state:empty{display:none}
.comment-icon{cursor:pointer}
.appointment .notification-badge{cursor:pointer}
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;line-height:1}
.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)}
.session-expiry-banner{position:fixed;z-index:999;left:50%;box-sizing:border-box;width:max-content;max-width:calc(100vw - 32px);padding:10px 15px;border:1px solid var(--status-payment-required);border-radius:9px;background:color-mix(in srgb,var(--status-payment-required) 14%,var(--surface));color:var(--ink);box-shadow:0 8px 22px var(--shadow-floating);font-size:13px;text-align:center;transform:translateX(-50%)}.session-expiry-banner[hidden]{display:none}.session-expiry-banner strong{color:var(--status-payment-required);font-variant-numeric:tabular-nums}
.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):not(.appointment-comments-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,.patient-picker #group-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}
.appointment-booking-dialog .patient-search-control-wrap{position:relative;min-width:0}.appointment-booking-dialog .patient-search-control{display:flex;width:100%;min-width:0}.appointment-booking-dialog .patient-search-control>input{flex:1 1 auto;width:0;min-width:0;border-top-right-radius:0;border-bottom-right-radius:0}.appointment-booking-dialog .patient-attendance-toggle,.appointment-booking-dialog .appointment-group-mode-toggle{display:inline-flex;flex:0 0 40px;align-items:center;justify-content:center;box-sizing:border-box;width:40px;height:auto;min-height:39px;margin:0;padding:0;border-color:var(--line-input);border-left:0;border-radius:0;background:var(--surface);color:var(--accent);cursor:pointer}.appointment-booking-dialog .patient-attendance-toggle{border-top-right-radius:10px;border-bottom-right-radius:10px}.appointment-booking-dialog .appointment-group-mode-toggle{margin-left:8px;border-left:1px solid var(--line-input);border-radius:10px}.appointment-booking-dialog #booking-group-patient-picker .patient-search-control>input{border-top-right-radius:10px;border-bottom-right-radius:10px}.appointment-booking-dialog .patient-attendance-toggle .mdi-icon,.appointment-booking-dialog .appointment-group-mode-toggle .mdi-icon{width:20px;height:20px}.appointment-booking-dialog .patient-attendance-toggle:hover,.appointment-booking-dialog .appointment-group-mode-toggle:hover{background:var(--surface-control-hover)}.appointment-booking-dialog .patient-attendance-toggle.is-absent{border-color:var(--status-error);background:var(--status-error);color:var(--text-inverse)}.appointment-booking-dialog .appointment-group-mode-toggle.is-active{border-color:var(--accent);background:var(--accent);color:var(--text-inverse)}.appointment-booking-dialog .patient-attendance-toggle:focus-visible,.appointment-booking-dialog .appointment-group-mode-toggle:focus-visible{position:relative;z-index:1;outline:2px solid var(--focus-ring);outline-offset:2px}.appointment-booking-dialog .patient-search-caption{display:block}.appointment-booking-dialog .patient-results{font-size:13px}
.patient-attendance-note{color:var(--status-error)}.patient-short-actions{display:flex;align-items:stretch;gap:8px}.patient-short-actions .button{display:inline-flex;align-items:center;box-sizing:border-box;height:39px;min-height:39px;padding-top:0;padding-bottom:0;line-height:1}.appointment-detail-attendance-toggle{display:inline-grid;place-items:center;box-sizing:border-box;width:39px;height:39px;min-width:39px;min-height:39px;margin:0;padding:0;border:1px solid var(--accent);border-radius:10px;background:var(--surface);color:var(--accent);cursor:pointer}.appointment-detail-attendance-toggle:hover:not(:disabled){background:var(--surface-control-hover)}.appointment-detail-attendance-toggle.is-absent{border-color:var(--status-error);background:var(--status-error);color:var(--text-inverse)}.appointment-detail-attendance-toggle.is-absent:hover:not(:disabled){background:var(--status-error)}.appointment-detail-attendance-toggle .mdi-icon{width:20px;height:20px}.appointment-detail-attendance-toggle:disabled{cursor:not-allowed;opacity:.55}
.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}
.patient-result-add{position:sticky;z-index:1;bottom:0;border-top:1px solid var(--accent);border-bottom:0;background:color-mix(in srgb,var(--accent) 10%,var(--surface));color:var(--accent);font-weight:750}.patient-result-add:hover,.patient-result-add:focus,.patient-result-add.is-keyboard-selected{background:color-mix(in srgb,var(--accent) 18%,var(--surface))}
.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,body.rooms-focus-mode .rooms-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,body.rooms-focus-mode .rooms-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,body.rooms-focus-mode .rooms-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,body.rooms-focus-mode .rooms-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,body.rooms-focus-mode .rooms-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,body.rooms-focus-mode .rooms-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,body.rooms-focus-mode .rooms-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,body.rooms-focus-mode .rooms-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-header-icons{display:flex;align-items:center;gap:6px;margin-left:auto}
.day-rooms-link,.day-view-link{display:inline-grid;place-items:center;width:24px;height:24px;border:1px solid var(--line-today);border-radius:6px;color:var(--accent);transition:background-color .15s ease,box-shadow .15s ease}
.day-rooms-link{margin-left:auto}
.day-rooms-link:hover,.day-view-link:hover{background:var(--surface-day-link-hover);box-shadow:0 0 0 1px var(--line-focus)}
.day-rooms-link .mdi-icon,.day-view-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}
.week-grid .appointment.short-appointment{min-height:var(--week-short-appointment-height,86px)!important}
.week-grid .appointment.appointment-group .shift{min-height:22px}
.week-grid .appointment.special-appointment .shift{position:absolute;left:0;bottom:5px;width:max-content;margin: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-patient .appointment-patient-absent-icon{display:inline-block;width:13px;height:13px;margin-right:3px;vertical-align:-2px;fill:currentColor}
.appointment-group-badge{display:inline-flex;align-items:center;gap:4px;max-width:100%;padding:1px 6px;border:1px solid currentColor;border-radius:999px;background:transparent;color:inherit;font-size:11px;font-weight:750;line-height:1.25;vertical-align:middle;white-space:nowrap}.appointment-group-badge .mdi-icon{flex:0 0 13px;width:13px;height:13px}.compact-day-appointment .appointment-group-badge-label,.month-appointment .appointment-group-badge-label{display:none}.month-appointment .appointment-group-badge{gap:3px;padding:0 4px;font-size:10px}.month-appointment .appointment-group-badge .mdi-icon{flex-basis:11px;width:11px;height:11px}
.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:disabled{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{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 22px}.appointment-view-links{display:inline-flex;flex-wrap:wrap;align-items:stretch;gap:5px}.appointment-navigation a.button{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;height:39px;min-height:39px;padding:0 10px;border:1px solid var(--accent);background:var(--paper);color:var(--accent);line-height:1}.appointment-navigation a.button:hover,.appointment-navigation a.button:focus-visible{border-color:var(--accent);background:var(--surface-control-hover);color:var(--accent)}.appointment-navigation a.appointment-return-button{background:var(--accent);color:var(--text-inverse)}.appointment-navigation a.appointment-return-button:hover,.appointment-navigation a.appointment-return-button:focus-visible{background:var(--accent-read);color:var(--text-inverse)}.appointment-view-link{gap:6px}.appointment-view-link .mdi-icon{width:18px;height:18px;flex:none}
.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);align-content:start;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-service-field{display:grid;align-self:end;gap:5px;min-width:0;color:var(--muted);font-size:13px;font-weight:650}.appointment-service-field>label{display:block;min-width:0}.appointment-service-variant-control{display:flex;min-width:0}.appointment-service-variant-control select{flex:1 1 auto;width:100%;min-width:0}.appointment-service-variant-control.has-price-variants select{border-top-right-radius:0;border-bottom-right-radius:0}.appointment-service-variant-control .appointment-price-variant-toggle{display:grid;place-items:center;box-sizing:border-box;flex:0 0 39px;width:39px;height:auto;padding:0;border:1px solid var(--accent);border-left:0;border-radius:0 10px 10px 0;background:var(--surface);color:var(--accent)}.appointment-price-variant-toggle[hidden]{display:none}.appointment-price-variant-toggle:hover:not(:disabled),.appointment-price-variant-toggle:focus-visible{background:var(--surface-control-hover);color:var(--accent);outline:none}.appointment-price-variant-toggle.is-active{background:var(--accent);color:var(--text-inverse)}.appointment-price-variant-toggle.is-active:hover:not(:disabled){background:var(--accent-read);color:var(--text-inverse)}.appointment-price-variant-toggle .mdi-icon{width:20px;height:20px}.appointment-price-variant-summary{min-width:0;overflow:hidden;color:var(--accent);font-size:11px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.appointment-price-variant-summary[hidden]{display:none}.appointment-price-variant-dialog{box-sizing:border-box;width:min(430px,calc(100vw - 32px))}.appointment-price-variant-dialog>h2{box-sizing:border-box;padding-right:38px}.appointment-price-variant-dialog>p{color:var(--muted);font-weight:650}.appointment-price-variant-options{display:grid;gap:7px}.appointment-price-variant-option{display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%;min-height:39px;padding:8px 10px;border:1px solid var(--line-input);background:var(--surface);color:var(--ink);text-align:left}.appointment-price-variant-option:hover:not(:disabled){border-color:var(--accent);background:var(--surface-control-hover);color:var(--accent)}.appointment-price-variant-option.is-selected{border-color:var(--accent);background:var(--accent);color:var(--text-inverse)}.appointment-price-variant-option:disabled{background:var(--surface-disabled);color:var(--muted);opacity:.75}.appointment-price-variant-option span{min-width:0;overflow-wrap:anywhere}.appointment-price-variant-option strong{flex:none;white-space:nowrap}
.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-actions{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:8px;width:min(100%,var(--appointment-secondary-field-width));margin-top:14px}.appointment-series-show-button{box-sizing:border-box;width:100%;margin:0;text-align:center}
.appointment-series-dialog.appointment-series-summary-dialog{box-sizing:border-box;width:min(1180px,calc(100vw - 24px));max-height:90dvh;padding:20px;overflow:hidden}.appointment-series-summary-dialog[open]{display:flex;flex-direction:column}.appointment-series-summary-dialog>h2{flex:none;padding-right:38px}.appointment-series-summary-content{min-height:0;overflow:auto;overscroll-behavior:contain;padding-right:3px}.appointment-series-summary-lead{display:flex;flex-wrap:wrap;gap:5px;margin:-5px 0 16px!important;color:var(--muted);font-size:13px}.appointment-series-summary-lead strong{color:var(--ink)}.appointment-series-summary-section{margin-top:18px}.appointment-series-summary-section:first-of-type{margin-top:0}.appointment-series-summary-section h3,.appointment-series-summary-alerts h3{margin:0 0 9px;font-size:14px}.appointment-series-summary-cards{display:grid;grid-template-columns:repeat(5,minmax(130px,1fr));gap:8px}.appointment-series-summary-cards article{display:grid;align-content:center;gap:5px;min-height:75px;padding:11px;border:1px solid var(--line);border-radius:9px;background:var(--surface-hover-strong)}.appointment-series-summary-cards article span{color:var(--muted);font-size:11px;font-weight:700;line-height:1.25}.appointment-series-summary-cards article strong{font-size:18px;line-height:1.15}.appointment-series-summary-cards article.is-positive{border-color:color-mix(in srgb,var(--status-confirmed-border) 48%,var(--line));background:color-mix(in srgb,var(--status-confirmed-border) 9%,var(--surface))}.appointment-series-summary-cards article.is-positive strong{color:var(--status-confirmed-border)}.appointment-series-summary-cards article.is-warning{border-color:color-mix(in srgb,var(--status-payment-required) 55%,var(--line));background:color-mix(in srgb,var(--status-payment-required) 10%,var(--surface))}.appointment-series-summary-cards article.is-warning strong{color:var(--status-payment-required)}.appointment-series-summary-split{display:flex;flex-wrap:wrap;gap:8px 24px;margin-top:8px;color:var(--muted);font-size:12px}.appointment-series-summary-split strong{color:var(--ink)}.appointment-series-summary-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.appointment-series-summary-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;margin:0;border:1px solid var(--line);border-radius:9px;overflow:hidden}.appointment-series-summary-stats>div{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:38px;padding:7px 10px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.appointment-series-summary-stats>div:nth-child(2n){border-right:0}.appointment-series-summary-stats>div:nth-last-child(-n+2){border-bottom:0}.appointment-series-summary-stats dt{color:var(--muted);font-size:12px}.appointment-series-summary-stats dd{margin:0;font-weight:800;white-space:nowrap}.appointment-series-summary-attendance-overview{display:flex;flex-wrap:wrap;gap:8px 22px;margin-bottom:9px;color:var(--muted);font-size:12px}.appointment-series-summary-attendance-overview strong{color:var(--ink);font-size:14px}.appointment-series-summary-table-scroll{overflow:auto;border:1px solid var(--line);border-radius:9px}.appointment-series-summary-table{width:100%;min-width:900px;border-collapse:collapse}.appointment-series-summary-table th,.appointment-series-summary-table td{padding:8px 10px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);font-size:12px;text-align:right;white-space:nowrap}.appointment-series-summary-table thead th{background:var(--surface-hover-strong);color:var(--muted);font-size:11px}.appointment-series-summary-table th:first-child{text-align:left}.appointment-series-summary-table tr>*:last-child{border-right:0}.appointment-series-summary-table tbody tr:last-child>*{border-bottom:0}.appointment-series-summary-table td.is-warning{color:var(--status-payment-required);font-weight:800}.appointment-series-summary-alerts{margin-top:16px;padding:11px 13px;border:1px solid color-mix(in srgb,var(--status-payment-required) 55%,var(--line));border-radius:9px;background:color-mix(in srgb,var(--status-payment-required) 9%,var(--surface))}.appointment-series-summary-alerts ul{display:grid;gap:4px;margin:0;padding-left:19px;font-size:12px}.appointment-series-summary-note{margin:14px 0 0!important;color:var(--muted);font-size:11px;line-height:1.4}@media(max-width:850px){.appointment-series-summary-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.appointment-series-summary-columns{grid-template-columns:1fr}}@media(max-width:520px){.appointment-series-dialog.appointment-series-summary-dialog{width:calc(100vw - 12px);max-height:calc(100dvh - 12px);padding:14px}.appointment-series-summary-cards{grid-template-columns:1fr 1fr}.appointment-series-summary-cards article{min-height:66px}.appointment-series-summary-cards article strong{font-size:15px}.appointment-series-summary-stats{grid-template-columns:1fr}.appointment-series-summary-stats>div{border-right:0}.appointment-series-summary-stats>div:nth-last-child(-n+2){border-bottom:1px solid var(--line)}.appointment-series-summary-stats>div:last-child{border-bottom:0}}
.appointment-series-dialog.appointment-series-list-dialog{box-sizing:border-box;width:min(640px,calc(100vw - 32px));max-height:min(86dvh,760px);overflow:hidden}.appointment-series-list-dialog[open]{display:flex;flex-direction:column}.appointment-series-list-dialog>h2,.appointment-series-list-dialog>p,.appointment-series-list-dialog>.appointment-series-dialog-actions{flex:none}.appointment-series-list-dialog h2{padding-right:30px}.appointment-series-list-dialog .appointment-series-patient{font-weight:700}.appointment-series-list-dialog .appointment-series-list-count{color:var(--muted)}.appointment-series-list{flex:0 1 auto;min-height:0;margin:0 0 16px;padding:0;overflow-y:auto;overscroll-behavior:contain;list-style:none}.appointment-series-list li{display:grid;grid-template-columns:30px minmax(155px,1fr) minmax(0,1.2fr);gap:10px;align-items:start;padding:9px 5px;border-bottom:1px solid var(--line)}.appointment-series-list-number{color:var(--muted);font-weight:700}.appointment-series-list-date{font-weight:700}.appointment-series-list-specialist{overflow-wrap:anywhere}@media(max-width:480px){.appointment-series-list li{grid-template-columns:25px minmax(0,1fr);gap:4px 8px}.appointment-series-list-specialist{grid-column:2}}
.appointment-series-dialog.appointment-group-series-map-dialog{width:min(1480px,calc(100vw - 24px));height:auto;max-height:min(88dvh,820px);padding:20px}.appointment-group-series-map-summary{display:flex;flex:none;flex-wrap:wrap;gap:8px 20px;margin:-7px 0 10px;color:var(--muted);font-size:13px}.appointment-group-series-map-summary strong{color:var(--ink)}.appointment-group-series-map-legend{display:flex;flex:none;flex-wrap:wrap;gap:7px 14px;margin:0 0 12px;color:var(--muted);font-size:12px}.appointment-group-series-map-legend>span{display:flex;align-items:center;gap:5px}.appointment-group-series-map-legend i{display:inline-grid;grid-template-columns:auto auto;place-items:center;gap:3px;min-width:31px;padding:2px 5px;border:1px solid var(--line);border-radius:5px;font-style:normal;font-weight:800}.appointment-group-series-map-legend .is-attending,.appointment-group-series-map-state.is-attending{border-color:var(--status-confirmed-border);background:color-mix(in srgb,var(--status-confirmed-border) 22%,var(--surface));color:var(--status-confirmed-border)}.appointment-group-series-map-legend .is-absent,.appointment-group-series-map-state.is-absent{border-color:var(--status-error);background:color-mix(in srgb,var(--status-error) 18%,var(--surface));color:var(--status-error)}.appointment-group-series-map-legend .is-paid,.appointment-group-series-map-state.is-paid{border-color:var(--status-confirmed-border);background:var(--status-confirmed-border);color:var(--text-inverse)}.appointment-group-series-map-legend .is-unpaid,.appointment-group-series-map-state.is-unpaid{border-color:var(--line-input);background:var(--surface);color:var(--muted)}.appointment-group-series-map-legend .is-exception{display:inline-block;width:10px;min-width:10px;height:10px;padding:0;border:0;border-radius:50%;background:var(--status-payment-required)}.appointment-group-series-map-scroll{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;border:1px solid var(--line);border-radius:9px;background:var(--surface)}.appointment-group-series-map{width:max-content;min-width:100%;border-collapse:separate;border-spacing:0;background:var(--surface)}.appointment-group-series-map th,.appointment-group-series-map td{box-sizing:border-box;border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.appointment-group-series-map thead th{position:sticky;z-index:3;top:0;height:67px;padding:0;background:var(--surface-hover-strong)}.appointment-group-series-map .appointment-group-series-map-corner{z-index:5;left:0;width:220px;min-width:220px;padding:10px 12px;text-align:left}.appointment-group-series-map-date{width:66px;min-width:66px;text-align:center}.appointment-group-series-map-date>a{position:relative;display:flex;height:100%;align-items:center;justify-content:center;flex-direction:column;gap:2px;padding:5px;color:var(--ink);text-decoration:none}.appointment-group-series-map-date>a:hover{background:var(--surface-control-hover);color:var(--accent)}.appointment-group-series-map-date span{font-size:13px;font-weight:800}.appointment-group-series-map-date small{color:var(--muted);font-size:10px}.appointment-group-series-map-date b{position:absolute;top:3px;right:4px;display:grid;place-items:center;width:14px;height:14px;border-radius:50%;background:var(--status-payment-required);color:var(--text-inverse);font-size:10px;line-height:1}.appointment-group-series-map-participant{position:sticky;z-index:2;left:0;width:220px;min-width:220px;max-width:220px;padding:9px 12px;background:var(--surface-hover-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.appointment-group-series-map-participant a{color:inherit;text-decoration:none}.appointment-group-series-map-participant a:hover{color:var(--accent);text-decoration:underline}.appointment-group-series-map-cell{position:relative;width:66px;min-width:66px;height:58px;padding:4px;background:var(--surface)}.appointment-group-series-map-state{display:grid;grid-template-columns:12px 1fr;align-items:center;gap:2px;height:22px;padding:0 4px;border:1px solid var(--line);border-radius:4px;font-size:12px;font-weight:800;line-height:1}.appointment-group-series-map-state+.appointment-group-series-map-state{margin-top:4px}.appointment-group-series-map-state b{font-size:9px}.appointment-group-series-map-cell.is-current,.appointment-group-series-map-date.is-current{box-shadow:inset 2px 0 var(--accent),inset -2px 0 var(--accent)}.appointment-group-series-map-date.is-current{background:color-mix(in srgb,var(--accent) 17%,var(--surface-hover-strong))}.appointment-group-series-map-cell.is-series-exception::after{content:'';position:absolute;top:2px;right:2px;width:6px;height:6px;border-radius:50%;background:var(--status-payment-required)}.appointment-group-series-map :is(.appointment-group-series-map-cell,.appointment-group-series-map-date).is-cancelled{background:var(--surface-disabled-soft);opacity:.55}.appointment-group-series-map-cell.is-missing{color:var(--muted);font-size:18px;text-align:center}.appointment-group-series-map-help{flex:none;margin:9px 0 0!important;color:var(--muted);font-size:11px}.appointment-group-series-map tbody tr:last-child th,.appointment-group-series-map tbody tr:last-child td{border-bottom:0}.appointment-group-series-map tr>*:last-child{border-right:0}@media(max-width:700px){.appointment-series-dialog.appointment-group-series-map-dialog{width:calc(100vw - 12px);height:auto;max-width:none;max-height:calc(100dvh - 12px);padding:14px}.appointment-group-series-map .appointment-group-series-map-corner,.appointment-group-series-map-participant{width:155px;min-width:155px;max-width:155px}.appointment-group-series-map-legend{gap:5px 9px}}
.appointment-series-dialog.appointment-group-series-map-dialog[open]{height:fit-content;max-height:90dvh}
.appointment-group-series-map-dialog .appointment-group-series-map-scroll{flex-grow:0;max-height:none}
.appointment-group-series-map{min-width:0}
.appointment-group-series-map-date,.appointment-group-series-map-cell{width:53px;min-width:53px}
.appointment-group-series-map-date.is-alternate-month:not(.is-current):not(.is-cancelled){background:color-mix(in srgb,var(--ink) 8%,var(--surface-hover-strong))}.appointment-group-series-map-cell.is-alternate-month:not(.is-cancelled){background:color-mix(in srgb,var(--ink) 6%,var(--surface))}
.appointment-group-series-map-legend .is-appointment-scheduled,.appointment-group-series-map-state.is-appointment-scheduled{border-color:var(--status-scheduled-border);background:var(--surface-scheduled);color:var(--status-scheduled-border)}.appointment-group-series-map-legend .is-appointment-confirmed,.appointment-group-series-map-state.is-appointment-confirmed{border-color:var(--status-confirmed-border);background:var(--surface-confirmed);color:var(--status-confirmed-border)}.appointment-group-series-map-legend .is-appointment-cancelled,.appointment-group-series-map-state.is-appointment-cancelled{border-color:var(--status-cancelled-border);background:var(--surface-cancelled);color:var(--status-cancelled-border)}.appointment-group-series-map-state.is-not-applicable{border-color:var(--line-disabled);background:var(--surface-disabled);color:var(--icon-disabled)}
.appointment-group-series-payment-toggle{box-sizing:border-box;width:100%;font-family:inherit;cursor:pointer}.appointment-group-series-payment-toggle:hover:not(:disabled){filter:brightness(.96);box-shadow:0 0 0 1px var(--accent)}.appointment-group-series-payment-toggle:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}.appointment-group-series-payment-toggle:disabled{cursor:not-allowed;opacity:.58}.appointment-group-series-payment-toggle.is-modified{box-shadow:0 0 0 2px var(--accent)}.appointment-group-series-map-actions{flex:none;justify-content:flex-end;margin-top:12px}.appointment-group-series-map-actions button{width:auto;min-width:96px}
.appointment-group-series-map-dialog [data-group-series-map-content]{display:flex;flex:1 1 auto;flex-direction:column;min-height:0}
@media(max-width:700px){.appointment-series-dialog.appointment-group-series-map-dialog[open]{max-height:90dvh}.appointment-group-series-map-dialog .appointment-group-series-map-scroll{max-height:none}}
.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)}
.appointment-series-preview-list li.has-warning{border-radius:5px;background:var(--surface-scheduled)}.appointment-series-preview-date{display:block}.appointment-series-preview-reason,.appointment-series-preview-warning{display:block;margin-top:2px;padding-left:12px;font-size:12px;line-height:1.35}.appointment-series-preview-warning{color:var(--status-payment-required)}
.appointment-series-preview-toggle{display:flex;align-items:center;gap:8px;cursor:pointer}.appointment-series-preview-toggle input{width:17px;height:17px;flex:none;margin:0;padding:0;border-radius:4px;accent-color:var(--accent)}.appointment-series-preview-list li.is-skipped{background:var(--surface-disabled-soft);color:var(--muted)}.appointment-series-preview-list li.is-skipped .appointment-series-preview-date{text-decoration:line-through}.appointment-series-preview-list li.is-skipped .appointment-series-preview-reason,.appointment-series-preview-list li.is-skipped .appointment-series-preview-warning{color:var(--muted)}.appointment-series-preview-count{font-weight:700}
.appointment-series-preview-toggle.is-fixed{cursor:default}
.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}
.session-timeout-settings{display:grid;gap:10px}.session-timeout-settings>div{display:grid;grid-template-columns:1fr;gap:8px;width:min(420px,100%)}.session-timeout-settings label{display:grid;grid-template-columns:minmax(150px,1fr) 76px auto;align-items:center;gap:8px}.session-timeout-settings input{box-sizing:border-box;width:76px;min-width:0}.session-timeout-settings label>span{color:var(--muted);font-size:12px}
.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-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: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)}
.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{display:grid;place-items:center;flex:0 0 39px;width:39px;height:39px;padding:0;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}.assignment-filters-reset .mdi-icon,.assignment-filters-bulk-price .mdi-icon{width:21px;height:21px}
.assignment-copy-open-button{display:grid;place-items:center;flex:0 0 39px;width:39px;height:39px;padding:0;border-color:var(--accent);background:var(--surface);color:var(--accent)}.assignment-copy-open-button:hover,.assignment-copy-open-button:focus-visible{background:var(--surface-control-hover);color:var(--accent);outline:none}.assignment-copy-open-button .mdi-icon{width:21px;height:21px}.assignment-copy-dialog{box-sizing:border-box;width:min(540px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow-y:auto}.assignment-copy-form{display:grid;gap:12px}.assignment-copy-form>label select{width:100%}.assignment-copy-targets{min-width:0;margin:0;padding:10px;border:1px solid var(--line);border-radius:8px}.assignment-copy-targets legend{padding:0 5px;color:var(--muted);font-size:13px;font-weight:700}.assignment-copy-target-list{display:grid;gap:12px;max-height:min(42dvh,360px);overflow-y:auto}.assignment-copy-target-group{display:grid;gap:5px}.assignment-copy-target-group>strong{font-size:12px;color:var(--muted)}.assignment-copy-target-group .check{display:flex;align-items:center;gap:8px;margin:0;color:var(--ink);font-weight:500;cursor:pointer}.assignment-copy-target-group .check:has(input:disabled){opacity:.5;cursor:not-allowed}.assignment-copy-note{margin:0;color:var(--muted);font-size:12px}.assignment-copy-error{margin:0;color:var(--status-error);font-size:12px}.assignment-copy-error[hidden]{display: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 .assignment-price-variants-button,.assignments-table .table-action{display:inline-flex;vertical-align:middle;margin:0 3px 0 0}.assignments-table .assignment-price-button,.assignments-table .assignment-price-variants-button,.assignments-table .table-action button{padding:4px 6px;font-size:11px;line-height:1.2}.assignment-price-variants-dialog{box-sizing:border-box;width:min(720px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow-y:auto}.assignment-price-variants-context{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;margin:0 0 12px;color:var(--muted)}.assignment-price-variants-context strong{color:var(--ink)}.assignment-price-variant-add-form{display:grid;grid-template-columns:minmax(180px,1fr) 150px auto;align-items:end;gap:8px;padding:9px;border:1px solid var(--line-card);border-radius:9px;background:var(--surface)}.assignment-price-variant-add-form label,.assignment-price-variant-edit-form>label:not(.check){display:grid;gap:2px;margin:0;font-size:12px;line-height:1.2}.assignment-price-variant-add-form input,.assignment-price-variant-edit-form input:not([type="checkbox"]){box-sizing:border-box;width:100%;height:39px;min-height:39px}.assignment-price-variant-add-form button,.assignment-price-variant-edit-form button,.assignment-price-variant-remove-form button{box-sizing:border-box;height:39px;min-height:39px;padding:7px 10px}.assignment-price-variant-list{display:grid;gap:6px;margin-top:10px}.assignment-price-variant-empty{margin:0;padding:11px;border:1px dashed var(--line);border-radius:8px;color:var(--muted);text-align:center}.assignment-price-variant-item{display:flex;align-items:end;gap:7px;padding:7px;border:1px solid var(--line-card);border-radius:8px;background:var(--surface)}.assignment-price-variant-item.is-inactive{opacity:.68}.assignment-price-variant-edit-form{display:grid;grid-template-columns:minmax(160px,1fr) 130px auto auto;align-items:end;gap:7px;min-width:0;flex:1}.assignment-price-variant-edit-form .check{align-self:end;box-sizing:border-box;height:39px;margin:0;white-space:nowrap}.assignment-price-variant-remove-form{display:flex;margin:0}
.assignment-price-variant-edit-form{margin:0}
@media(max-width:760px){.assignment-price-variant-add-form,.assignment-price-variant-edit-form{grid-template-columns:1fr}.assignment-price-variant-item{align-items:stretch;flex-direction:column}.assignment-price-variant-edit-form .check{align-self:start}.assignment-price-variant-remove-form button{width:100%}}
.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}
.admin-patients-sort-button{display:inline-flex;align-items:center;gap:5px;width:100%;min-height:25px;padding:2px 0;border:0;border-radius:3px;background:transparent;color:inherit;font-size:inherit;font-weight:inherit;text-align:left;cursor:pointer}.admin-patients-sort-button:hover{background:transparent;color:var(--accent)}.admin-patients-sort-button:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.admin-patients-sort-indicator{flex:none;color:var(--accent);font-size:13px;line-height:1}
.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}
/* Dymki komentarzy wizyty naśladują układ konwersacji (jak w iMessage/Signal): węższe niż
   kontener, a wiadomości bieżącego użytkownika przesunięte w prawo. Komentarze pacjenta
   (.notes .comment-bubble) korzystają z tych samych klas bazowych i zostają bez zmian. */
.appointment-comments .comment-bubble{flex-direction:column;flex-wrap:nowrap;align-items:flex-start;width:fit-content;max-width:min(640px,78%)}
.appointment-comments .comment-meta,.appointment-comments .comment-body{flex:none}
.appointment-comments .comment-bubble.comment-authored-by-current-user{margin-left:auto;border-left:none;border-right:4px solid var(--accent)}
/* Ta sama siatka 2:1 z pionową linią co w sekcjach Pacjent i Edycja wizyty: komentarze zajmują
   węższą, lewą kolumnę, dzięki czemu dymki konwersacji nie rozjeżdżają się na całą szerokość karty. */
.appointment-comments{display:grid;grid-template-columns:minmax(0,772px) minmax(250px,1fr);gap:24px}
.appointment-comments-primary{min-width:0}
.appointment-comments-divider{min-width:0;border-left:1px solid var(--line)}
@media(max-width:1050px){.appointment-comments{grid-template-columns:minmax(0,1fr) minmax(250px,.8fr)}}
@media(max-width:700px){.appointment-comments{grid-template-columns:1fr}.appointment-comments-divider{display:none}}
.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}
/* Ta sama siatka 2:1 z pionową linią co w sekcjach Pacjent i Edycja wizyty: komentarze do pacjenta
   po lewej, wizyty po prawej. W źródle wizyty są pierwsze, więc kolejność wizualna jest zamieniana
   przez order — komentarze zachowują swój dotychczasowy wygląd (.notes ma już własną kartę). */
.patient-secondary{display:grid;grid-template-columns:minmax(0,772px) minmax(250px,1fr);gap:24px;margin-bottom:22px}
.patient-secondary .notes{order:1;margin:0;padding:0;border:0;border-radius:0;background:none}
.patient-secondary .patient-appointments{order:2;min-width:0;margin-top:0;padding-left:24px;border-left:1px solid var(--line)}
@media(max-width:1050px){.patient-secondary{grid-template-columns:minmax(0,1fr) minmax(250px,.8fr)}}
@media(max-width:700px){.patient-secondary{grid-template-columns:1fr}.patient-secondary .patient-appointments{padding:12px 0 0;border-left:0;border-top:1px solid var(--line)}}
.patient-appointments h2{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.patient-appointments h2 small{font-size:12px;color:var(--muted)}
.patient-upcoming-actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-left:auto}
.patient-upcoming-actions .patient-upcoming-print-button{width:auto;font-size:15px}
.patient-upcoming-horizon-form{margin:0}
.patient-upcoming-horizon-form select{width:auto;min-width:0;font-size:15px}
.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}
.month-category-filter>.schedule-clear-filters{display:grid;place-items:center;flex:0 0 36px;width:36px;padding:0}.schedule-clear-filters .mdi-icon{display:block;width:20px;height:20px}
.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),body.rooms-view:not(.rooms-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),body.rooms-view:not(.rooms-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),body.rooms-view:not(.rooms-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),body.rooms-view:not(.rooms-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),body.rooms-view:not(.rooms-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),body.rooms-view:not(.rooms-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),body.rooms-view:not(.rooms-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),body.rooms-view:not(.rooms-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),body.rooms-view:not(.rooms-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{display:grid;place-items:center;box-sizing:border-box;flex:0 0 26px;width:26px;height:26px;min-height:26px;padding:0;border-radius:7px;line-height:1}
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-primary>form{display:grid;gap:10px;margin-top:14px}
.appointment-comments-primary>form[hidden]{display:none}
.appointment-comments .notify-recipient-field{justify-self:start;width:auto}
.appointment-comments .notify-recipient-field select{width:auto}
.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-heading>button{flex:none;width:auto}.admin-section-search{max-width:320px}
.admin-specialist-role-groups{display:grid;gap:10px}.admin-specialist-role-group{padding:11px;border:1px solid var(--line);border-radius:9px;background:var(--surface-subtle)}.admin-specialist-role-group>summary{cursor:pointer;color:var(--ink);font-weight:750}.admin-specialist-role-group[open]>summary{margin-bottom:11px}.admin-specialist-role-group>.records:empty{display:none}
.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. */
.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-grid{display:grid;grid-template-columns:repeat(var(--room-count,1),minmax(240px,1fr));gap:6px;align-items:start;min-width:0;overflow-x:auto;margin:-2px -2px 0;padding:2px 2px 14px}
.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{min-width:0;padding:10px;overflow:hidden}
.room-timeline{position:relative;height:var(--room-timeline-height,0)}
.room-gap,.room-visit{position:absolute;top:var(--room-block-top,0);left:0;right:0;box-sizing:border-box;min-width:0;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{left:var(--room-visit-offset,0);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}
.session-timeout-settings>div{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-search[hidden]{display:none}.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}
.appointment-group-mode-toggle.is-active:hover{background:var(--accent-read)}
.booking-group-participants{grid-column:1/-1;display:grid;min-width:0;min-height:59px;align-content:start;gap:5px}.booking-group-participants[hidden]{display:none}.booking-group-participants-label{color:var(--muted);font-size:13px;font-weight:650}.group-patient-chip-list{display:flex;min-height:36px;align-content:flex-start;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}
.group-patient-chip{display:inline-flex;align-items:center;gap:5px;padding:4px 6px 4px 10px;border:1px solid var(--accent);border-radius:999px;background:var(--surface);color:var(--accent);font-size:12px;font-weight:650}
.group-patient-chip button{display:inline-grid;place-items:center;width:18px;height:18px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--accent);font-size:14px;line-height:1;cursor:pointer}.group-patient-chip>button:last-of-type{padding-bottom:2px}
.group-patient-chip button:hover{background:var(--surface-control-hover)}
.group-patient-chip .group-patient-price-variant-toggle{box-sizing:border-box;width:18px;height:18px;border:0;border-radius:50%;background:transparent}.group-patient-chip .group-patient-price-variant-toggle[hidden]{display:none}.group-patient-chip .group-patient-price-variant-toggle.is-active{background:var(--accent);color:var(--text-inverse)}.group-patient-chip .group-patient-price-variant-toggle.is-active:hover{background:var(--accent-read)}.group-patient-chip .group-patient-price-variant-toggle .mdi-icon{width:14px;height:14px}
.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-booking-dialog .booking-payment-flags[hidden],.appointment-booking-dialog .appointment-payment-method[hidden]{display:none}
.appointment-booking-dialog .booking-payment-flags .appointment-paid-button:has(input:checked){background:var(--payment-paid)!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)}
.appointment-participant-list{display:grid;gap:8px;margin:8px 0 0;padding:0;list-style:none}
.appointment-group-heading{display:flex;align-items:center;gap:5px}.appointment-group-add-participant-button{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:auto;height:39px;min-height:39px;margin-top:10px;line-height:1}.appointment-group-total{margin-left:auto;color:var(--muted);font-size:13px;font-weight:650}.appointment-group-total strong{color:var(--ink);font-weight:750}.appointment-group-series-participant-notice{display:flex;align-items:center;gap:10px;margin:10px 0 0;color:var(--muted);font-size:13px}.appointment-group-series-participant-notice .button{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:auto;height:39px;min-height:39px;line-height:1}.appointment-group-participant-dialog{box-sizing:border-box;width:min(520px,calc(100vw - 32px))}.appointment-group-participant-dialog>h2{padding-right:34px}.appointment-group-participant-dialog .patient-search{display:grid;gap:5px;color:var(--muted);font-size:13px;font-weight:650}.appointment-group-participant-dialog .patient-search input{width:100%;font-size:13px}.appointment-group-participant-dialog .patient-search-hint{margin:8px 0 0}.appointment-group-participant-selection{margin-top:14px;padding:10px;border:1px solid var(--line-card);border-radius:7px;background:var(--surface-control-hover);color:var(--muted);font-size:13px}.appointment-group-participant-selection strong{color:var(--ink)}.appointment-group-participant-remove-dialog{box-sizing:border-box;width:min(480px,calc(100vw - 32px))}.appointment-group-participant-remove-dialog>h2{padding-right:34px}.appointment-group-participant-remove-note{color:var(--muted);font-size:13px}.appointment-group-participant-remove-form{margin:0}
.appointment-group-participant-form{display:grid;gap:12px}.appointment-group-participant-options{display:grid;grid-template-columns:minmax(0,1fr) 36px minmax(112px,max-content);gap:10px;align-items:end}.appointment-group-participant-options:has(.appointment-participant-price-variant-toggle[hidden]){grid-template-columns:minmax(0,1fr) minmax(112px,max-content)}.appointment-group-participant-options>label:not(.appointment-participant-paid-toggle){display:grid;gap:5px;min-width:0;color:var(--muted);font-size:13px;font-weight:650}.appointment-group-participant-options select{width:100%;min-width:0;height:36px}.appointment-group-participant-options .appointment-participant-price-variant-toggle{align-self:end}.appointment-group-participant-options .appointment-participant-paid-toggle{align-self:end}.appointment-group-participant-form .appointment-series-dialog-actions{margin-top:2px}@media(max-width:520px){.appointment-group-participant-options{grid-template-columns:minmax(0,1fr) 36px}.appointment-group-participant-options:has(.appointment-participant-price-variant-toggle[hidden]){grid-template-columns:minmax(0,1fr)}.appointment-group-participant-options .appointment-participant-paid-toggle{grid-column:1/-1;justify-self:start}}
.appointment-participant{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line-card);border-radius:7px;background:var(--surface)}
.appointment-group-edit-locked{filter:grayscale(.25);opacity:.42;pointer-events:none;cursor:not-allowed;transition:filter .14s ease,opacity .14s ease}.appointment-group-edit-locked *{cursor:not-allowed!important}.appointment-participant.appointment-group-edit-active{border-color:var(--accent)}
.appointment-participant-attendance{box-sizing:border-box;flex:0 0 17px;width:17px!important;height:17px;margin:0;padding:0;accent-color:var(--accent);cursor:pointer}.appointment-participant-attendance:disabled{cursor:not-allowed}.appointment-participant-name{display:flex;flex:1 1 160px;align-items:center;gap:6px;min-width:0;font-weight:650}.appointment-participant-name-link{min-width:0;color:inherit;text-decoration:none}.appointment-participant-name-link:hover,.appointment-participant-name-link:focus-visible{color:var(--accent);text-decoration:underline;text-underline-offset:2px;outline:none}.appointment-participant:has(.appointment-participant-attendance:not(:checked)) .appointment-participant-name-text{color:var(--muted);text-decoration:line-through;opacity:.72}
.appointment-participant-price{flex:0 0 auto;color:inherit;font-size:13px;font-weight:700;white-space:nowrap}.appointment-participant:has(.appointment-participant-attendance:not(:checked)) .appointment-participant-price{opacity:.55;text-decoration:line-through}.appointment-participant-payment-method{box-sizing:border-box;flex:0 0 140px;width:140px;min-width:120px;height:36px;padding-top:5px;padding-bottom:5px;font-size:13px}.appointment-participant-price-variant-toggle,.appointment-participant-remove-button{display:inline-grid;place-items:center;box-sizing:border-box;flex:0 0 36px;width:36px;height:36px;padding:0;border-radius:10px;text-decoration:none}.appointment-participant-price-variant-toggle{border:1px solid var(--accent);background:var(--surface);color:var(--accent)}.appointment-participant-remove-button{border:1px solid var(--status-error);background:var(--surface);color:var(--status-error)}.appointment-participant-price-variant-toggle:hover:not(:disabled),.appointment-participant-price-variant-toggle:focus-visible{background:var(--surface-control-hover);color:var(--accent)}.appointment-participant-remove-button:hover,.appointment-participant-remove-button:focus-visible{border-color:var(--status-error);background:var(--surface-control-hover);color:var(--status-error)}.appointment-participant-price-variant-toggle[hidden]{display:none}.appointment-participant-price-variant-toggle.is-active{background:var(--accent);color:var(--text-inverse)}.appointment-participant-price-variant-toggle.is-active:hover:not(:disabled){background:var(--accent-read);color:var(--text-inverse)}.appointment-participant-price-variant-toggle .mdi-icon,.appointment-participant-remove-button .mdi-icon{width:20px;height:20px}
.appointment-participant-paid-toggle{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;flex:0 0 auto;gap:5px;min-width:100px;height:36px;margin:0;padding:6px 10px;border:1px solid var(--accent);border-radius:10px;background:var(--surface);color:var(--accent);font-size:13px;font-weight:700;line-height:1.2;cursor:pointer;white-space:nowrap}.appointment-participant-paid-toggle::before{content:'✕';font-size:11px;font-weight:800;line-height:1}.appointment-participant-paid-toggle:hover{background:var(--surface-control-hover)}.appointment-participant-paid-toggle:has(input:checked),.appointment-participant-paid-toggle:has(input:checked):hover{border-color:var(--payment-paid);background:var(--payment-paid);color:var(--text-inverse)}.appointment-participant-paid-toggle:has(input:checked)::before{content:'✓'}.appointment-participant-paid-toggle input{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.appointment-participant-paid-toggle:has(input:focus-visible){outline:2px solid var(--focus-ring);outline-offset:2px}.appointment-participant-paid-toggle:has(input:disabled){border-color:var(--line-disabled);background:var(--surface-disabled);color:var(--icon-disabled);cursor:not-allowed;opacity:.7}
.appointment-participant-payment-group {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 0;
}
.appointment-participant-payment-group:has(.appointment-participant-price-variant-toggle:not([hidden]))
  .appointment-participant-price-variant-toggle {
  border-radius: 10px 0 0 10px;
  border-right: 0;
}
.appointment-participant-payment-group:has(.appointment-participant-price-variant-toggle:not([hidden]))
  .appointment-participant-paid-toggle {
  border-radius: 0 10px 10px 0;
}
@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:grid;place-items:center;box-sizing:border-box;flex:0 0 26px;width:26px;height:26px;min-height:26px;padding:0;border-radius:7px;line-height:1}
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-filter .schedule-clear-filters{display:grid;place-items:center;flex:0 0 26px;width:26px;padding:0}
:is(body.month-focus-mode .month-toolbar,body.week-focus-mode .week-toolbar,body.day-focus-mode .day-toolbar) .schedule-clear-filters .mdi-icon{width:16px;height:16px}
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,body.rooms-focus-mode .rooms-schedule-controls,body.rooms-focus-mode .booking{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),body.rooms-view:not(.rooms-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),body.rooms-view:not(.rooms-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),body.rooms-view:not(.rooms-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,body.rooms-focus-mode .rooms-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,body.rooms-focus-mode .rooms-toolbar>.schedule-focus-actions+div:last-child{margin-left:16px}
}
.appointment-series-list li.is-series-exception{margin:3px 0;padding:8px 7px;border:1px solid var(--status-scheduled-border);border-left:4px solid var(--status-payment-required);border-radius:6px;background:var(--surface-scheduled)}.appointment-series-list-specialist:has(.appointment-series-exception-badge){display:grid;gap:4px}.appointment-series-exception-badge{justify-self:start;padding:2px 6px;border:1px solid var(--status-payment-required);border-radius:5px;background:color-mix(in srgb,var(--status-payment-required) 18%,var(--surface));color:var(--ink);font-size:11px;font-weight:750;line-height:1.25}
@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}}

body.rooms-view:not(.rooms-focus-mode){height:100vh;height:100dvh;overflow:hidden}
body.rooms-view:not(.rooms-focus-mode) main{display:flex;flex-direction:column;height:calc(100vh - 62px);height:calc(100dvh - 62px);padding-top:15px;padding-bottom:8px;overflow:hidden}
body.rooms-view:not(.rooms-focus-mode) .rooms-normal-sticky-controls{position:relative;z-index:30;flex:0 0 auto;padding-bottom:8px;background:var(--paper)}
body.rooms-view:not(.rooms-focus-mode) .rooms-schedule-controls{margin-bottom:0}
body.rooms-view:not(.rooms-focus-mode) .rooms-grid{flex:1 1 auto;min-height:0;margin:0;padding:3px 2px 8px;overflow:auto;overscroll-behavior:contain}
body.rooms-focus-mode{height:100vh;height:100dvh;overflow:hidden}
body.rooms-focus-mode main{display:flex;flex-direction:column;box-sizing:border-box;width:100%;max-width:none;height:calc(100vh - var(--rooms-focus-header-height,62px));height:calc(100dvh - var(--rooms-focus-header-height,62px));margin:0;padding:6px 0 8px;overflow:hidden}
body.rooms-focus-mode .rooms-toolbar{position:relative;display:flex;flex:0 0 auto;align-items:center;gap:4px;min-height:26px;margin:0 8px 6px}
body.rooms-focus-mode .rooms-toolbar h1,body.rooms-focus-mode .rooms-toolbar .schedule-week-range{display:none}
body.rooms-focus-mode .rooms-toolbar>div:first-child{display:flex;align-items:center;gap:4px;min-width:max-content}
body.rooms-focus-mode .rooms-toolbar>div:last-child{display:flex;flex-wrap:nowrap;align-items:center;gap:4px;min-width:0;margin-left:auto}
body.rooms-focus-mode .rooms-toolbar>div.schedule-focus-navigation{display:flex}
body.rooms-focus-mode .rooms-toolbar .schedule-view-switch{grid-template-columns:repeat(3,minmax(62px,1fr));height:26px;margin-right:4px;border-radius:7px}
body.rooms-focus-mode .rooms-toolbar .schedule-view-switch>a,body.rooms-focus-mode .rooms-toolbar .schedule-view-switch>span{height:100%;min-height:0;padding:3px 6px;font-size:11px}
body.rooms-focus-mode .rooms-toolbar .schedule-period-button{width:92px;height:26px;min-height:26px;padding:3px 7px;border-radius:7px;font-size:11px}
body.rooms-focus-mode .rooms-toolbar .schedule-period-previous,body.rooms-focus-mode .rooms-toolbar .schedule-period-next{width:26px;padding:3px}
body.rooms-focus-mode .rooms-toolbar .schedule-period-button-label{display:none}
body.rooms-focus-mode .rooms-toolbar .schedule-period-jump,body.rooms-focus-mode .rooms-toolbar .schedule-period-jump input[type="date"]{width:135px;height:26px;min-height:26px;font-size:11px}
body.rooms-focus-mode .rooms-toolbar .schedule-period-jump input[type="date"]{padding:2px 7px;border-radius:7px}
body.rooms-focus-mode .rooms-grid{flex:1 1 auto;min-height:0;margin:0;padding:5px 8px 8px;overflow:auto;overscroll-behavior:contain}
body.rooms-view .rooms-schedule-controls{justify-content:flex-end}

.room-gap-short{padding:0;border-radius:3px;font-size:0}
.room-visit-compact{align-items:center;padding:3px 9px}
.room-visit-compact .appointment-lock{top:50%;bottom:auto;transform:translateY(-50%)}
.room-visit-compact .room-move-button,.room-visit-compact .room-calendar-button{top:50%;bottom:auto;left:auto;transform:translateY(-50%);opacity:0;transition:opacity .15s ease}
.room-visit-compact .room-calendar-button{right:31px}.room-visit-compact .room-move-down{right:57px}.room-visit-compact .room-move-up{right:83px}
.room-visit-compact:hover .room-move-button,.room-visit-compact:hover .room-calendar-button,.room-visit-compact:focus-within .room-move-button,.room-visit-compact:focus-within .room-calendar-button{opacity:1}
.room-visit-tiny{padding-top:0;padding-bottom:0}
.room-visit-tiny strong,.room-visit-tiny .room-visit-specialist{font-size:11px;line-height:1}
.room-visit-tiny.room-visit-in-progress .room-visit-time{padding:0 3px;line-height:1.2}
.room-visit-tiny .room-move-button,.room-visit-tiny .room-calendar-button{display:none}
.appointment-edit .appointment-payment-flags .appointment-paid-toggle:has(input:checked),.appointment-edit .appointment-payment-flags .appointment-paid-toggle:has(input:checked):hover{background:var(--payment-paid)!important;color:var(--text-inverse)!important}
.appointment-quick-toggle[data-quick-paid] input:checked+span{border-color:var(--payment-paid);background:var(--payment-paid);color:var(--text-inverse)}
.appointment-edit .appointment-payment-flags .payment-required-toggle:has(input:checked),.appointment-edit .appointment-payment-flags .payment-required-toggle:has(input:checked):hover{background:var(--status-payment-required)!important;color:var(--text-inverse)!important}
.appointment-quick-toggle[data-quick-payment-required] input:checked+span{border-color:var(--status-payment-required);background:var(--status-payment-required);color:var(--text-inverse)}
.admin-create-dialog{box-sizing:border-box;width:min(460px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow-y:auto}
.admin-create-form{display:grid;gap:12px;margin:0}
.admin-create-form :is(select,input:not([type=checkbox]),textarea){box-sizing:border-box;width:100%;min-width:0;max-width:100%}
.admin-create-status{margin:0 0 12px;padding:8px 10px;border:1px solid var(--status-confirmed-border);border-radius:8px;background:var(--surface-confirmed);color:var(--ink);font-size:13px;font-weight:650}
.admin-create-status.error{border-color:var(--status-error);background:var(--surface-error-soft);color:var(--text-error)}
.admin-create-status[hidden]{display:none}
.time-off-manage-specialist{margin:0 0 12px}
.time-off-manage-specialist select{width:100%;min-width:0}
.time-off-manage-error{margin:0;color:var(--text-error);font-weight:650}
.time-off-manage-note{margin:0 0 12px;color:var(--muted);font-size:12px}
.appointment-lock-exclusive-group{display:grid;gap:6px;margin:8px 0;padding:10px 12px;border:1px solid var(--line-availability);border-radius:8px;background:var(--surface-subtle)}
.appointment-lock-exclusive-group .settings-description{margin:0 0 2px}
.appointment-series-summary-columns>.appointment-series-summary-section{margin-top:18px}
