*{margin:0;padding:0;box-sizing:border-box}
:root{
  --blue:#1d4ed8;--blue2:#2563eb;--blue-pale:#eff6ff;--blue-light:#dbeafe;
  --green:#16a34a;--green-pale:#f0fdf4;--green-light:#dcfce7;
  --amber:#b45309;--amber-pale:#fffbeb;--amber-light:#fef3c7;
  --red:#dc2626;--red-pale:#fef2f2;
  --white:#fff;--off:#f8fafc;--gray:#64748b;--gray2:#94a3b8;--brd:#e2e8f0;
  --text:#1e293b;--text2:#334155;--text3:#475569;
  --shadow:0 2px 16px rgba(30,64,175,.09);--shadow-md:0 8px 32px rgba(30,64,175,.15);
  --r:14px;--r2:10px;
}
html{scroll-behavior:smooth}
body{font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;background:var(--off);color:var(--text);min-height:100vh}
a{text-decoration:none;color:inherit}
button{font-family:inherit;cursor:pointer}

/* ── lang switcher: shared "active" toggle class, applied by applyStaticTranslations() ── */
.lang-btn-active{background:var(--blue2);border-color:var(--blue2);color:#fff}

/* ── login ── */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;
  background:#0a1128 url('../img/login-bg.jpg') center/cover no-repeat}
.login-wrap.client-bg,.app-shell-wrap.client-bg{
  background:#efe9e2 url('../img/client-bg.jpg') center/cover no-repeat}
.login-wrap.partner-bg,.app-shell-wrap.partner-bg{
  background:#bcd4e6 url('../img/partner-bg.jpg') center/cover no-repeat}
.login-wrap.manager-bg,.app-shell-wrap.manager-bg{
  background:#0d1b2a url('../img/manager-bg.jpg') center/cover no-repeat}
.login-wrap.cleaner-bg,.app-shell-wrap.cleaner-bg{
  background:#dce8f0 url('../img/cleaner-bg.jpg') center/cover no-repeat}
.login-card{position:relative;background:var(--white);border-radius:var(--r);box-shadow:var(--shadow-md);
  padding:40px 36px;width:100%;max-width:380px}
.lang-menu-wrap{position:absolute;top:16px;right:16px}
.lang-trigger{background:var(--blue2);color:#fff;border:none;border-radius:20px;
  padding:6px 15px;font-size:11px;font-weight:700;letter-spacing:.4px}
.lang-trigger:hover{background:var(--blue)}
.lang-dropdown{position:absolute;top:calc(100% + 8px);right:0;background:var(--white);
  border:1px solid var(--brd);border-radius:var(--r2);box-shadow:var(--shadow-md);
  min-width:100px;padding:6px;display:none;z-index:30}
.lang-dropdown.show{display:block}
.lang-dropdown-item{display:block;width:100%;text-align:left;padding:7px 11px;
  border-radius:8px;font-size:12px;font-weight:700;letter-spacing:.3px;color:var(--text2);
  background:none;border:none}
.lang-dropdown-item:hover{background:var(--blue-pale);color:var(--blue2)}
.lang-dropdown-item.lang-btn-active{background:var(--blue-pale);color:var(--blue2)}
.login-logo{font-weight:800;font-size:20px;color:var(--blue);margin-bottom:4px}
.login-sub{color:var(--gray);font-size:13.5px;margin-bottom:28px}
.field{margin-bottom:16px}
.field label{display:block;font-size:12.5px;font-weight:600;color:var(--text3);margin-bottom:6px}
.field input{width:100%;padding:11px 14px;border:1.5px solid var(--brd);border-radius:var(--r2);
  font-size:14.5px;font-family:inherit;transition:.15s}
.field input:focus{outline:none;border-color:var(--blue2)}
.field input.input-err{border-color:var(--red)}
.field input.input-err:focus{border-color:var(--red)}
.btn-primary{width:100%;padding:12px;background:var(--blue2);color:#fff;border:none;
  border-radius:var(--r2);font-size:14.5px;font-weight:700;margin-top:8px;transition:.15s}
.btn-primary:hover{background:var(--blue)}
.btn-primary:disabled{opacity:.6;cursor:default}
.login-err{background:var(--red-pale);color:var(--red);font-size:13px;padding:10px 12px;
  border-radius:var(--r2);margin-bottom:16px;display:none}
.login-err.show{display:block}
.login-ok{background:var(--green-pale);color:var(--green);font-size:13px;padding:10px 12px;
  border-radius:var(--r2);margin-bottom:16px;display:none}
.login-ok.show{display:block}

/* ── client auth (Google + tabs) ── */
.btn-google{width:100%;display:flex;align-items:center;justify-content:center;gap:10px;
  padding:11px;background:var(--white);border:1.5px solid var(--brd);border-radius:var(--r2);
  font-size:14px;font-weight:700;color:var(--text2);margin-bottom:20px;transition:.15s}
.btn-google:hover{border-color:var(--gray2)}
.auth-divider{display:flex;align-items:center;gap:12px;margin-bottom:20px;color:var(--gray2);
  font-size:11px;font-weight:700;letter-spacing:.05em}
.auth-divider::before,.auth-divider::after{content:'';flex:1;height:1px;background:var(--brd)}
.auth-tabs{display:flex;border-bottom:1.5px solid var(--brd);margin-bottom:20px}
.auth-tab{flex:1;padding:10px 0;text-align:center;font-size:14px;font-weight:700;color:var(--gray);
  border:none;background:none;border-bottom:2px solid transparent;margin-bottom:-1.5px;transition:.15s}
.auth-tab.active{color:var(--blue2);border-bottom-color:var(--blue2)}
.password-field{position:relative}
.password-field input{padding-right:40px}
.password-toggle{position:absolute;right:6px;top:29px;background:none;border:none;
  color:var(--gray2);font-size:15px;padding:6px;line-height:1}
.forgot-link{display:block;text-align:right;font-size:12.5px;color:var(--blue2);font-weight:600;margin:-8px 0 16px}
.auth-back-link{display:inline-block;font-size:12.5px;color:var(--blue2);font-weight:600;margin-bottom:16px}
.auth-terms{font-size:11.5px;color:var(--gray);text-align:center;margin-top:18px;line-height:1.5}
.auth-terms a{color:var(--blue2);font-weight:600}
.auth-view{display:none}
.auth-view.active{display:block}

/* ── app shell wrap (sticky header + filling shell) ── */
.app-shell-wrap{display:flex;flex-direction:column;min-height:100vh;
  background:#0a1128 url('../img/login-bg.jpg') center/cover no-repeat}
.header-wrap{position:sticky;top:0;z-index:20}

/* ── announcement bar (site-style gradient strip) ── */
.topbar-admin{display:flex;align-items:center;justify-content:space-between;
  background:linear-gradient(90deg,#1a3a8f 0%,var(--blue2) 50%,#1e88d4 100%);
  padding:7px 20px}
.topbar-announce{flex:1;display:flex;align-items:center;justify-content:center;gap:10px}
.topbar-dot{width:6px;height:6px;border-radius:50%;background:#86efac;flex-shrink:0}
.topbar-txt{font-size:12.5px;font-weight:700;color:#fff;letter-spacing:.4px}
.topbar-langs{display:flex;gap:6px;flex-shrink:0}
.lb{background:transparent;border:1.5px solid rgba(255,255,255,.4);color:rgba(255,255,255,.85);
  padding:4px 13px;border-radius:20px;font-size:11px;font-weight:700;letter-spacing:.4px;transition:.15s}
.lb:hover{background:rgba(255,255,255,.15);border-color:#fff;color:#fff}
.lb.lang-btn-active{background:#fff;border-color:#fff;color:#1a3a8f}

/* ── main header (logo + brand + panel label + profile) ── */
.header-main{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;
  padding:12px 24px;background:var(--white);border-bottom:1px solid var(--brd);box-shadow:var(--shadow)}
.header-brand{display:flex;align-items:center;gap:12px}
.header-logo{height:44px;display:block}
.header-title{font-weight:800;font-size:19px;color:var(--blue2);line-height:1.2}
.header-subtitle{font-size:10.5px;font-weight:700;letter-spacing:.6px;color:var(--gray2)}
.header-panel-label{justify-self:center;font-size:12.5px;font-weight:700;color:var(--gray2);
  letter-spacing:.5px;text-transform:uppercase;white-space:nowrap}
.header-profile{justify-self:end;display:flex;align-items:center;gap:10px}
.header-profile-text{display:flex;flex-direction:column;line-height:1.25;max-width:180px}
.header-rating{font-size:11px;font-weight:700;color:var(--amber)}
.profile-menu-wrap{position:relative}
.profile-trigger{display:flex;align-items:center;gap:8px;background:none;border:none;
  padding:4px 6px;border-radius:8px;transition:.15s}
.profile-trigger:hover{background:var(--off)}
.profile-avatar{width:34px;height:34px;border-radius:50%;background:var(--blue2);color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;
  flex-shrink:0;overflow:hidden}
.profile-avatar img{width:100%;height:100%;object-fit:cover}
.profile-name{font-size:13.5px;font-weight:600;color:var(--text2);max-width:180px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.profile-burger{font-size:13px;color:var(--gray2);line-height:1}
.profile-dropdown{position:absolute;top:calc(100% + 8px);right:0;background:var(--white);
  border:1px solid var(--brd);border-radius:var(--r2);box-shadow:var(--shadow-md);
  min-width:210px;padding:6px;display:none;z-index:30}
.profile-dropdown.show{display:block}
.profile-dropdown-item{display:block;width:100%;text-align:left;padding:9px 12px;
  border-radius:8px;font-size:13.5px;font-weight:600;color:var(--text2);background:none;border:none}
.profile-dropdown-item:hover{background:var(--blue-pale);color:var(--blue2)}
.btn-logout-icon{width:32px;height:32px;border-radius:50%;border:1px solid var(--brd);
  background:none;color:var(--gray);font-size:15px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.btn-logout-icon:hover{border-color:var(--red);color:var(--red)}
.btn-logout{background:none;border:1.5px solid var(--brd);color:var(--gray);padding:9px 18px;
  border-radius:var(--r2);font-size:13.5px;font-weight:600;display:block}
.btn-logout:hover{border-color:var(--red);color:var(--red)}
.profile-dropdown-item.active{background:var(--blue-pale);color:var(--blue2)}
.profile-photo-row{display:flex;align-items:center;gap:14px}
.profile-photo-preview{width:56px;height:56px;border-radius:50%;background:var(--blue2);color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:20px;
  overflow:hidden;flex-shrink:0}
.profile-photo-preview img{width:100%;height:100%;object-fit:cover}
.avatar-sm{width:28px;height:28px;border-radius:50%;background:var(--blue2);color:#fff;
  display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;
  overflow:hidden;flex-shrink:0;vertical-align:middle;margin-right:8px}
.avatar-sm img{width:100%;height:100%;object-fit:cover}
.avatar-sm.clickable{cursor:pointer}

/* ── кадрирование фото (avatar-crop.js) ── */
.crop-viewport{width:260px;height:260px;margin:0 auto 16px;border-radius:50%;
  overflow:hidden;position:relative;background:#111;cursor:grab;touch-action:none}
.crop-viewport.dragging{cursor:grabbing}
.crop-viewport img{position:absolute;left:0;top:0;transform-origin:0 0;
  user-select:none;-webkit-user-drag:none;pointer-events:none}
.crop-zoom{width:100%;margin-bottom:16px}

.permissions-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px 16px;margin-top:6px}
.permission-item{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--text2);font-weight:500}
.permission-item input{width:16px;height:16px;flex-shrink:0}

/* ── shell ── */
.shell{display:flex;flex:1}
.side{width:220px;background:var(--white);border-right:1px solid var(--brd);flex-shrink:0;
  display:flex;flex-direction:column;padding:20px 0}
.side-nav a{display:flex;align-items:center;gap:10px;padding:11px 20px;font-size:14px;
  font-weight:600;color:var(--text3);border-left:3px solid transparent;transition:.15s}
.side-nav a:hover{background:var(--blue-pale);color:var(--blue)}
.side-nav a.active{background:var(--blue-pale);color:var(--blue);border-left-color:var(--blue2)}

.main{flex:1;padding:32px 40px;max-width:1160px}
.app-shell-wrap.client-bg .main,.app-shell-wrap.partner-bg .main,.app-shell-wrap.manager-bg .main,.app-shell-wrap.cleaner-bg .main{background:rgba(255,255,255,.94);margin:24px 24px 24px 0;
  border-radius:var(--r);box-shadow:var(--shadow-md)}
.main h1{font-size:24px;font-weight:800;margin-bottom:6px}
.main .lede{color:var(--gray);font-size:14px;margin-bottom:28px}

.panel{display:none}
.panel.active{display:block}

.field-hint{font-size:12px;color:var(--gray);margin-top:4px}

.repeat-source-list{display:flex;flex-direction:column;gap:8px;margin-top:6px;margin-bottom:20px}
.repeat-source-item{display:flex;align-items:center;gap:12px;padding:11px 14px;
  border:1.5px solid var(--brd);border-radius:var(--r2);cursor:pointer;transition:.15s}
.repeat-source-item:hover{border-color:var(--blue2)}
.repeat-source-item.selected{border-color:var(--blue2);background:var(--blue-pale)}
.repeat-source-item input{width:17px;height:17px;accent-color:var(--blue2);flex-shrink:0;margin:0}
.repeat-source-info{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13.5px}
.repeat-source-date{font-weight:700;color:var(--text)}
.repeat-source-service{color:var(--text3)}

.partner-code-card{display:flex;align-items:center;gap:20px;flex-wrap:wrap;
  background:var(--blue-pale);border:1.5px solid var(--blue-light);border-radius:var(--r);
  padding:24px 28px;margin-bottom:28px}
.partner-code-value{font-size:28px;font-weight:800;letter-spacing:1px;color:var(--blue2);
  font-family:'Courier New',monospace}
.partner-links-list{display:flex;flex-direction:column;gap:8px}
.partner-links-list a{color:var(--blue2);font-weight:600;font-size:14px}
.partner-links-list a:hover{text-decoration:underline}

/* ── section sub-heading ── */
.sub-h{font-size:15px;font-weight:700;color:var(--text2);margin:28px 0 12px}

/* ── settings tabs (переиспользуется и для вложенных вкладок Сотрудники) ── */
.settings-tabs,.staff-tabs{display:flex;gap:4px;border-bottom:1px solid var(--brd);margin:20px 0 24px}
.settings-tab,.staff-tab{background:none;border:none;padding:10px 16px;font-size:14px;font-weight:600;
  color:var(--gray);border-bottom:2px solid transparent;margin-bottom:-1px}
.settings-tab.active,.staff-tab.active{color:var(--blue2);border-bottom-color:var(--blue2)}
.settings-panel,.staff-panel{display:none}
.settings-panel.active,.staff-panel.active{display:block}

/* ── stats ── */
.stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:20px}
.stat-card{background:var(--white);border:1px solid var(--brd);border-radius:var(--r2);padding:14px 16px;box-shadow:var(--shadow)}
.stat-card .stat-num{font-size:22px;font-weight:800;color:var(--text)}
.stat-card .stat-label{font-size:12px;color:var(--gray);margin-top:2px}
.stat-card.revenue .stat-num{color:var(--green)}

/* ── search/sort ── */
.search-input{flex:1;padding:9px 14px;border:1.5px solid var(--brd);border-radius:var(--r2);font-size:13.5px;font-family:inherit}
.search-input:focus{outline:none;border-color:var(--blue2)}
.sort-select{padding:9px 12px;border:1.5px solid var(--brd);border-radius:var(--r2);font-size:13.5px;font-family:inherit;background:var(--white)}

/* ── toggle ── */
.toggle{position:relative;display:inline-block;width:36px;height:20px}
.toggle input{opacity:0;width:0;height:0}
.toggle-slider{position:absolute;cursor:pointer;inset:0;background:var(--brd);border-radius:20px;transition:.15s}
.toggle-slider::before{content:'';position:absolute;height:14px;width:14px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.15s}
.toggle input:checked+.toggle-slider{background:var(--green)}
.toggle input:checked+.toggle-slider::before{transform:translateX(16px)}
tr.inactive{opacity:.5}

/* ── toolbar ── */
.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;gap:12px;flex-wrap:wrap}
.filters{display:flex;gap:8px;flex-wrap:wrap}
.chip{font-size:12.5px;font-weight:600;padding:6px 13px;border-radius:20px;border:1px solid var(--brd);
  background:var(--white);color:var(--text3)}
.chip.active{background:var(--blue2);border-color:var(--blue2);color:#fff}
.btn-add{background:var(--green);color:#fff;border:none;padding:9px 16px;border-radius:var(--r2);
  font-size:13.5px;font-weight:700}
.btn-add:hover{background:#128a43}

/* ── table ── */
.tbl-wrap{background:var(--white);border:1px solid var(--brd);border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow)}
table{width:100%;border-collapse:collapse;font-size:13.5px}
thead th{text-align:left;padding:12px 16px;background:var(--off);color:var(--text3);
  font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;font-weight:700;border-bottom:1px solid var(--brd)}
tbody td{padding:13px 16px;border-bottom:1px solid var(--brd);vertical-align:middle}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover{background:var(--blue-pale)}
.empty-row td{text-align:center;color:var(--gray2);padding:40px 16px}

.status{display:inline-block;font-size:11.5px;font-weight:700;padding:4px 10px;border-radius:20px}
.status-new{background:var(--blue-light);color:var(--blue)}
.status-in_progress{background:var(--amber-light);color:var(--amber)}
.status-done{background:var(--green-light);color:var(--green)}
.status-cancelled{background:#f1f5f9;color:var(--gray)}
select.status-select{border:none;background:transparent;font:inherit;font-weight:700;cursor:pointer}

.price-input{width:90px;padding:6px 8px;border:1.5px solid var(--brd);border-radius:6px;font-size:13.5px;font-family:inherit}
.text-input{width:100%;padding:8px 10px;border:1.5px solid var(--brd);border-radius:6px;font-size:13.5px;font-family:inherit}
.btn-save{background:var(--blue-pale);color:var(--blue);border:1px solid var(--blue-light);
  padding:6px 12px;border-radius:6px;font-size:12.5px;font-weight:700}
.btn-save:hover{background:var(--blue-light)}
.btn-icon{background:none;border:none;color:var(--gray);font-size:16px;padding:4px}
.btn-icon:hover{color:var(--red)}

.photo-cell{white-space:nowrap}
.photo-btn{font-size:11.5px;color:var(--gray);border:1px solid var(--brd);border-radius:6px;
  padding:4px 8px;margin:2px;background:#fff}
.photo-btn:hover{color:var(--blue2);border-color:var(--blue-light)}
.photo-btn.photo-done{color:var(--green);border-color:var(--green);background:var(--green-pale)}
.photo-btn:disabled{opacity:.6;cursor:default}

/* ── кабинет клинера: смена ── */
.btn-secondary{padding:12px;background:var(--off);color:var(--text3);border:1px solid var(--brd);
  border-radius:var(--r2);font-size:14.5px;font-weight:700;transition:.15s}
.btn-secondary:hover{background:var(--blue-pale)}
.shift-job-card{background:var(--white);border:1px solid var(--brd);border-radius:var(--r);
  box-shadow:var(--shadow);padding:24px;max-width:480px}
.shift-job-time{font-size:13px;color:var(--gray);font-weight:700;text-transform:uppercase;letter-spacing:.03em}
.shift-job-client{font-size:19px;font-weight:700;margin-top:6px}
.shift-job-address{color:var(--text3);margin-top:4px}
.shift-job-notes{font-size:13.5px;color:var(--text3);margin-top:12px;background:var(--off);
  border-radius:var(--r2);padding:10px 12px}
.shift-timer{font-size:22px;font-weight:800;margin-top:20px;text-align:center}
.shift-actions-row{display:flex;gap:10px;margin-top:14px}
.shift-actions-row .btn-primary,.shift-actions-row .btn-secondary{flex:1;margin-top:0;width:auto}

.checklist-room{background:var(--white);border:1px solid var(--brd);border-radius:var(--r2);
  padding:16px 18px;margin-bottom:14px;max-width:480px}
.checklist-room h3{font-size:14.5px;margin-bottom:10px}
.checklist-item{display:flex;align-items:center;gap:10px;padding:6px 0;font-size:14px;cursor:pointer}
.checklist-item input{width:18px;height:18px;cursor:pointer}

.btn-sos{position:fixed;right:20px;bottom:20px;z-index:150;background:var(--red);color:#fff;
  border:none;border-radius:999px;padding:12px 20px;font-weight:800;font-size:14px;
  box-shadow:var(--shadow-md);cursor:pointer}
.btn-sos:hover{opacity:.9}
.kb-article{background:var(--white);border:1px solid var(--brd);border-radius:var(--r2);
  padding:16px 18px;margin-bottom:12px;max-width:560px}
.kb-article h3{font-size:15px;margin-bottom:8px;cursor:pointer}
.kb-article-body{font-size:13.5px;color:var(--text3);white-space:pre-wrap;display:none}
.kb-article.open .kb-article-body{display:block}

.star-rating{display:flex;gap:6px;font-size:32px;justify-content:center;margin:8px 0}
.star-btn{background:none;border:none;color:var(--brd);cursor:pointer;padding:0;line-height:1}
.star-btn.active{color:#f5b301}

/* ── modal ── */
.modal-bg{position:fixed;inset:0;background:rgba(15,23,42,.5);display:none;align-items:center;justify-content:center;z-index:200;padding:20px}
.modal-bg.show{display:flex}
.modal{background:#fff;border-radius:var(--r);padding:28px;width:100%;max-width:440px;box-shadow:var(--shadow-md);max-height:90vh;overflow-y:auto}
.modal h3{font-size:17px;margin-bottom:18px}
.modal .field input,.modal .field select,.modal .field textarea{width:100%;padding:10px 12px;border:1.5px solid var(--brd);border-radius:var(--r2);font-size:14px;font-family:inherit}
.modal .field textarea{resize:vertical}
.modal-actions{display:flex;gap:10px;margin-top:20px}
.btn-cancel{flex:1;padding:10px;background:var(--off);border:1px solid var(--brd);border-radius:var(--r2);font-weight:600;font-size:13.5px}
.modal-actions .btn-primary{flex:1;margin-top:0;width:auto}

.banner{background:var(--amber-pale);border:1px solid var(--amber-light);color:var(--amber);
  font-size:13.5px;padding:12px 16px;border-radius:var(--r2);margin-bottom:20px}
.banner a{text-decoration:underline;font-weight:600}

.schedule-nav{display:flex;align-items:center;justify-content:center;gap:16px;margin:10px 0;font-weight:700}
.schedule-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.schedule-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:6px;
  font-size:13px;cursor:pointer;background:var(--blue-pale);color:var(--blue2);border:1px solid var(--blue-light)}
.schedule-day:hover{opacity:.8}
.schedule-day.day-off{background:var(--off);color:var(--gray);border-color:var(--brd);text-decoration:line-through}
.schedule-day.empty{visibility:hidden;cursor:default}
.schedule-day.has-jobs{background:var(--blue-pale);color:var(--blue2);font-weight:700;flex-direction:column;gap:1px}
.schedule-day.today{box-shadow:inset 0 0 0 2px var(--blue2)}
.schedule-day-badges{font-size:10px;line-height:1}
.schedule-weekday{text-align:center;font-size:11px;color:var(--gray);font-weight:700;text-transform:uppercase}

/* ── кабинет клинера: компактный календарь с переключением День/Неделя/Месяц/Год ── */
.schedule-view-switch{margin:16px 0 4px}
#my-schedule-body{display:flex;flex-direction:column;align-items:center}
.schedule-grid-compact{max-width:560px;width:100%;gap:6px}
.schedule-grid-compact .schedule-day{font-size:15px;border-radius:7px}
.schedule-grid-compact .schedule-weekday{font-size:12px}

.schedule-week{display:flex;flex-direction:column;gap:8px;max-width:640px;width:100%}
.schedule-week-day{display:flex;align-items:center;gap:16px;padding:12px 16px;border:1px solid var(--brd);
  border-radius:var(--r2);background:var(--white);cursor:pointer}
.schedule-week-day:hover{background:var(--blue-pale)}
.schedule-week-day.day-off{background:var(--off);color:var(--gray)}
.schedule-week-day.today{border-color:var(--blue2)}
.schedule-week-day-head{width:76px;flex-shrink:0;font-size:14px;font-weight:700;text-transform:capitalize}
.schedule-week-day-head b{display:block;font-size:19px;font-weight:800}
.schedule-week-day-jobs{display:flex;flex-wrap:wrap;gap:8px;font-size:13.5px;color:var(--text3)}
.schedule-week-job{background:var(--blue-pale);color:var(--blue2);border-radius:6px;padding:3px 10px;font-weight:600}

.schedule-year-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;max-width:820px;width:100%}
.schedule-year-month{border:1px solid var(--brd);border-radius:var(--r2);padding:12px;cursor:pointer}
.schedule-year-month:hover{background:var(--blue-pale)}
.schedule-year-month-label{font-size:13.5px;font-weight:700;text-align:center;margin-bottom:8px;text-transform:capitalize}
.schedule-year-mini-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.schedule-year-day{font-size:10px;text-align:center;color:var(--gray);line-height:2}
.schedule-year-day.has-jobs{background:var(--blue-pale);color:var(--blue2);border-radius:3px;font-weight:700}
.schedule-year-day.empty{visibility:hidden}

@media(max-width:480px){
  .schedule-year-grid{grid-template-columns:repeat(2,1fr)}
}

@media(max-width:760px){
  .shell{flex-direction:column}
  .side{width:100%;flex-direction:row;overflow-x:auto;padding:12px}
  .side-nav{display:flex;gap:4px}
  .side-nav a{border-left:none;border-bottom:3px solid transparent;white-space:nowrap}
  .main{padding:24px 16px}
  .app-shell-wrap.client-bg .main,.app-shell-wrap.partner-bg .main,.app-shell-wrap.manager-bg .main,.app-shell-wrap.cleaner-bg .main{margin:16px}
  .topbar-admin{padding:6px 12px}
  .topbar-txt{display:none}
  .header-main{padding:10px 14px}
  .header-subtitle{display:none}
  .header-panel-label{display:none}
  .profile-name{display:none}
  /* кабинет клинера: вся навигация переезжает в выпадающее меню профиля —
     верхняя горизонтальная полоса вкладок обрезалась и не давала понять,
     что список можно прокрутить дальше вправо */
  .app-shell-wrap.cleaner-bg .side{display:none}
}
