/* ============================================================
   PapaSmoke CRM — Material Design 3 theme
   Tokens + components. Theme/accent switch via
   <html data-theme="light|dark" data-accent="violet|teal|blue|green|crimson">
   ============================================================ */

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  font-family: Roboto, system-ui, sans-serif;
  color: var(--on-surface);
  background: var(--surface);
  -webkit-font-smoothing: antialiased;
}

/* Material Symbols icon font */
.msr {
  font-family: 'Material Symbols Rounded';
  font-weight: normal; font-style: normal; line-height: 1;
  letter-spacing: normal; text-transform: none; display: inline-block;
  white-space: nowrap; word-wrap: normal; direction: ltr;
  -webkit-font-smoothing: antialiased;
  font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
}
.msr.fill { font-variation-settings: 'FILL' 1, 'wght' 400, 'GRAD' 0, 'opsz' 24; }

/* ---------- neutral tokens (per theme) ---------- */
:root, [data-theme="light"] {
  --secondary:#5D5D72; --on-secondary:#FFFFFF; --secondary-container:#E2E0F9; --on-secondary-container:#191A2C;
  --surface:#FBF8FD; --surface-container-low:#F5F2FA; --surface-container:#EFEDF4; --surface-container-high:#E9E7EF; --surface-container-highest:#E3E1E9;
  --on-surface:#1B1B1F; --on-surface-variant:#46464F; --outline:#777680; --outline-variant:#C7C6D0;
  --success:#3B6939; --error:#BA1A1A; --on-error:#FFFFFF;
}
[data-theme="dark"] {
  --secondary:#C6C4DD; --on-secondary:#2F2F42; --secondary-container:#454559; --on-secondary-container:#E2E0F9;
  --surface:#131316; --surface-container-low:#1B1B1F; --surface-container:#1F1F23; --surface-container-high:#2A2A2E; --surface-container-highest:#353438;
  --on-surface:#E4E1E6; --on-surface-variant:#C7C6D0; --outline:#90909A; --outline-variant:#46464F;
  --success:#A1D39A; --error:#FFB4AB; --on-error:#690005;
}

/* ---------- accent tokens (primary + tertiary, per theme) ---------- */
[data-accent="violet"], [data-theme="light"][data-accent="violet"] {
  --primary:#6750A4; --on-primary:#FFFFFF; --primary-container:#EADDFF; --on-primary-container:#21005D;
  --tertiary:#7D5260; --on-tertiary:#FFFFFF; --tertiary-container:#FFD8E4; --on-tertiary-container:#31111D;
}
[data-theme="dark"][data-accent="violet"] {
  --primary:#D0BCFF; --on-primary:#381E72; --primary-container:#4F378B; --on-primary-container:#EADDFF;
  --tertiary:#EFB8C8; --on-tertiary:#492532; --tertiary-container:#633B48; --on-tertiary-container:#FFD8E4;
}
[data-theme="light"][data-accent="teal"] {
  --primary:#006A6A; --on-primary:#FFFFFF; --primary-container:#6FF7F6; --on-primary-container:#002020;
  --tertiary:#4A6363; --on-tertiary:#FFFFFF; --tertiary-container:#CCE8E7; --on-tertiary-container:#051F1F;
}
[data-theme="dark"][data-accent="teal"] {
  --primary:#4DDADA; --on-primary:#003737; --primary-container:#004F4F; --on-primary-container:#6FF7F6;
  --tertiary:#B0CCCB; --on-tertiary:#1B3534; --tertiary-container:#324B4B; --on-tertiary-container:#CCE8E7;
}
[data-theme="light"][data-accent="blue"] {
  --primary:#415F91; --on-primary:#FFFFFF; --primary-container:#D6E3FF; --on-primary-container:#001B3E;
  --tertiary:#565F71; --on-tertiary:#FFFFFF; --tertiary-container:#DAE2F9; --on-tertiary-container:#131C2B;
}
[data-theme="dark"][data-accent="blue"] {
  --primary:#AAC7FF; --on-primary:#0A305F; --primary-container:#284777; --on-primary-container:#D6E3FF;
  --tertiary:#BEC6DC; --on-tertiary:#283141; --tertiary-container:#3E4759; --on-tertiary-container:#DAE2F9;
}
[data-theme="light"][data-accent="green"] {
  --primary:#3B6939; --on-primary:#FFFFFF; --primary-container:#BCF0B4; --on-primary-container:#00210B;
  --tertiary:#386568; --on-tertiary:#FFFFFF; --tertiary-container:#BCEBEF; --on-tertiary-container:#001F22;
}
[data-theme="dark"][data-accent="green"] {
  --primary:#A1D39A; --on-primary:#0A390F; --primary-container:#235024; --on-primary-container:#BCF0B4;
  --tertiary:#A0CFD2; --on-tertiary:#003739; --tertiary-container:#1F4D50; --on-tertiary-container:#BCEBEF;
}
[data-theme="light"][data-accent="crimson"] {
  --primary:#BB1614; --on-primary:#FFFFFF; --primary-container:#FFDAD5; --on-primary-container:#410001;
  --tertiary:#775654; --on-tertiary:#FFFFFF; --tertiary-container:#FFDAD5; --on-tertiary-container:#2C1512;
}
[data-theme="dark"][data-accent="crimson"] {
  --primary:#FFB4AB; --on-primary:#690004; --primary-container:#930009; --on-primary-container:#FFDAD5;
  --tertiary:#E7BDB8; --on-tertiary:#442927; --tertiary-container:#5D3F3C; --on-tertiary-container:#FFDAD5;
}

/* ---------- scrollbar ---------- */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-thumb { background: var(--outline-variant); border-radius: 8px; border: 2px solid transparent; background-clip: content-box; }

/* ============================================================
   Layout shell
   ============================================================ */
.app { display: flex; height: 100vh; width: 100%; overflow: hidden; position: relative; }

.rail {
  width: 264px; flex: none; display: flex; flex-direction: column;
  background: var(--surface-container-low); border-right: 1px solid var(--outline-variant);
  z-index: 40;
}
.rail-brand { display: flex; align-items: center; gap: 12px; padding: 22px 22px 18px; }
.rail-logo {
  width: 44px; height: 44px; border-radius: 14px; background: var(--primary); color: var(--on-primary);
  display: grid; place-items: center; font-size: 26px;
  box-shadow: 0 2px 8px color-mix(in srgb, var(--primary) 45%, transparent);
}
.rail-title { font: 700 18px/1.1 'Roboto Flex', Roboto; letter-spacing: -.01em; color: var(--on-surface); }
.rail-sub { font: 500 11px/1.3 Roboto; color: var(--on-surface-variant); letter-spacing: .06em; text-transform: uppercase; }

.nav { display: flex; flex-direction: column; gap: 4px; padding: 6px 12px; flex: 1; overflow-y: auto; }
.navitem {
  display: flex; align-items: center; gap: 14px; width: 100%; border: none; cursor: pointer;
  text-align: left; padding: 11px 16px; border-radius: 16px; text-decoration: none;
  background: transparent; color: var(--on-surface-variant); font: 500 14px Roboto; letter-spacing: .01em;
  transition: background .18s ease, color .18s ease;
}
.navitem:hover { background: color-mix(in srgb, var(--on-surface) 8%, transparent); }
.navitem.active { background: var(--primary-container); color: var(--on-primary-container); }
.nav-badge { margin-left: auto; font: 600 11px Roboto; background: var(--primary); color: var(--on-primary); border-radius: 10px; padding: 1px 7px; }

.rail-foot { margin: 8px 12px; padding: 10px 8px; border-top: 1px solid var(--outline-variant); display: flex; align-items: center; gap: 11px; }
.avatar {
  width: 38px; height: 38px; border-radius: 50%; flex: none;
  background: var(--tertiary-container); color: var(--on-tertiary-container);
  display: grid; place-items: center; font: 600 15px Roboto; text-decoration: none;
}
.rail-foot-name { font: 600 13px Roboto; color: var(--on-surface); }
.rail-foot-role { font: 400 11px Roboto; color: var(--on-surface-variant); }

.iconbtn {
  border: none; cursor: pointer; width: 44px; height: 44px; border-radius: 50%;
  display: grid; place-items: center; background: var(--surface-container-high); color: var(--on-surface);
  position: relative; transition: background .18s ease, transform .12s ease;
}
.iconbtn.sm { width: 36px; height: 36px; border-radius: 10px; background: transparent; color: var(--on-surface-variant); }
.iconbtn:hover { background: color-mix(in srgb, var(--on-surface) 10%, transparent); }
.iconbtn:active { transform: scale(.96); }
.iconbtn .dot-badge { position: absolute; top: 9px; right: 10px; width: 8px; height: 8px; border-radius: 50%; background: var(--error); border: 2px solid var(--surface-container-high); }

/* main column */
.main { flex: 1; min-width: 0; display: flex; flex-direction: column; background: var(--surface); }
.topbar {
  height: 72px; flex: none; display: flex; align-items: center; gap: 16px; padding: 0 28px;
  background: var(--surface); border-bottom: 1px solid var(--outline-variant);
  position: sticky; top: 0; z-index: 20;
}
.page-h1 { font: 700 22px/1.1 'Roboto Flex', Roboto; color: var(--on-surface); letter-spacing: -.015em; }
.page-sub { font: 400 12px Roboto; color: var(--on-surface-variant); margin-top: 2px; }
.spacer { flex: 1; }
.hamburger { display: none; }

.search {
  display: flex; align-items: center; background: var(--surface-container-high); border-radius: 24px;
  padding: 0 14px; height: 44px; gap: 8px; width: 280px; color: var(--on-surface-variant);
}
.search input { border: none; outline: none; background: transparent; flex: 1; font: 400 14px Roboto; color: var(--on-surface); }

.accent-wrap { position: relative; }
.accent-btn {
  display: flex; align-items: center; gap: 8px; height: 44px; padding: 0 12px; cursor: pointer;
  border: 1px solid var(--outline-variant); border-radius: 22px; background: var(--surface-container-high);
  color: var(--on-surface); font: 500 13px Roboto;
}
.accent-btn .dot { width: 18px; height: 18px; border-radius: 50%; box-shadow: 0 0 0 1px var(--outline-variant); }
.accent-menu {
  position: absolute; top: 52px; right: 0; z-index: 50; width: 200px; background: var(--surface-container-high);
  border: 1px solid var(--outline-variant); border-radius: 16px; padding: 6px; box-shadow: 0 8px 28px rgba(0,0,0,.22);
}
.accent-menu[hidden] { display: none; }
.accent-menu-title { font: 600 11px Roboto; letter-spacing: .06em; text-transform: uppercase; color: var(--on-surface-variant); padding: 8px 12px 4px; }
.accent-opt {
  display: flex; align-items: center; gap: 12px; width: 100%; border: none; cursor: pointer; text-align: left;
  padding: 10px 14px; border-radius: 12px; font: 500 14px Roboto; background: transparent; color: var(--on-surface);
}
.accent-opt:hover { background: color-mix(in srgb, var(--on-surface) 8%, transparent); }
.accent-opt.active { background: var(--primary-container); color: var(--on-primary-container); }
.accent-opt .dot { width: 18px; height: 18px; border-radius: 50%; flex: none; box-shadow: 0 0 0 1px var(--outline-variant); }

.scroll { flex: 1; overflow: auto; padding: 28px; }
.container { max-width: 1180px; margin: 0 auto; }
.screen { display: flex; flex-direction: column; gap: 20px; }
@keyframes fadeUp { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }

/* ============================================================
   Components
   ============================================================ */
.card { background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 24px; padding: 22px; }
.card.tight { padding: 8px 8px 12px; }
.card-hover { transition: box-shadow .2s ease, transform .2s ease; }
.card-hover:hover { box-shadow: 0 2px 6px rgba(0,0,0,.16), 0 8px 24px rgba(0,0,0,.10); }
.section-title { display: flex; align-items: center; gap: 8px; font: 600 15px 'Roboto Flex', Roboto; color: var(--on-surface); margin-bottom: 18px; }
.section-title .msr { font-size: 20px; }

/* pills / segmented tabs */
.pillbar { display: inline-flex; align-self: flex-start; background: var(--surface-container-high); border-radius: 22px; padding: 4px; flex-wrap: wrap; }
.pill {
  border: none; cursor: pointer; padding: 8px 18px; border-radius: 18px; font: 600 13px Roboto;
  background: transparent; color: var(--on-surface-variant); text-decoration: none; display: inline-flex; align-items: center;
  transition: background .18s ease, color .18s ease, transform .12s ease;
}
.pill:active { transform: scale(.97); }
.pill.active { background: var(--primary); color: var(--on-primary); box-shadow: 0 1px 3px rgba(0,0,0,.2); }

/* buttons */
.btn {
  border: none; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  height: 44px; padding: 0 20px; border-radius: 22px; font: 600 14px Roboto; text-decoration: none;
  transition: box-shadow .18s ease, transform .12s ease, background .18s ease;
}
.btn:active { transform: scale(.97); }
.btn .msr { font-size: 20px; }
.btn-primary { background: var(--primary); color: var(--on-primary); box-shadow: 0 1px 3px rgba(0,0,0,.2), 0 3px 8px color-mix(in srgb, var(--primary) 30%, transparent); }
.btn-tonal { background: var(--primary-container); color: var(--on-primary-container); }
.btn-secondary { background: var(--secondary-container); color: var(--on-secondary-container); }
.btn-danger { background: var(--error); color: var(--on-error); }
.btn-text { background: transparent; color: var(--primary); }
.btn-outline { background: transparent; color: var(--on-surface); border: 1px solid var(--outline); }
.btn-sm { height: 40px; padding: 0 16px; border-radius: 20px; font-size: 13px; }

/* KPI cards */
.kpi-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.kpi-head { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
.kpi-icon { width: 40px; height: 40px; border-radius: 12px; display: grid; place-items: center; }
.kpi-icon .msr { font-size: 22px; }
.kpi-label { font: 500 13px Roboto; color: var(--on-surface-variant); }
.kpi-value { font: 700 32px/1 'Roboto Flex', Roboto; letter-spacing: -.02em; }
.kpi-delta { display: flex; align-items: center; gap: 4px; margin-top: 10px; font: 600 12px Roboto; color: var(--success); }
.kpi-delta .msr { font-size: 16px; }

/* progress bars */
.bar-row { margin-bottom: 14px; }
.bar-row:last-child { margin-bottom: 0; }
.bar-label { display: flex; justify-content: space-between; font: 500 13px Roboto; color: var(--on-surface); margin-bottom: 6px; }
.bar-label .muted { color: var(--on-surface-variant); }
.bartrack { height: 8px; border-radius: 6px; background: var(--surface-container-highest); overflow: hidden; }
.barfill { height: 100%; border-radius: 6px; background: var(--primary); transition: width .6s cubic-bezier(.2,.8,.2,1); }
.barfill.tertiary { background: var(--tertiary); }

/* tables */
.dc-table { width: 100%; border-collapse: collapse; }
.dc-table th {
  font: 600 11px Roboto; letter-spacing: .06em; text-transform: uppercase; color: var(--on-surface-variant);
  padding: 0 8px 10px; text-align: left;
}
.dc-table td { padding: 13px 8px; font: 500 13px Roboto; color: var(--on-surface); }
.dc-table tbody tr { border-top: 1px solid var(--outline-variant); }
.dc-table .num { text-align: right; }
.dc-table .muted { color: var(--on-surface-variant); font-weight: 400; }
.dc-table .pos { color: var(--success); font-weight: 600; }
.dc-table tfoot td { border-top: 1px solid var(--outline-variant); font-weight: 700; }

/* list rows (clients) */
.listcard { background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 24px; overflow: hidden; }
.listrow { display: flex; align-items: center; gap: 16px; padding: 16px 20px; border-bottom: 1px solid var(--outline-variant); transition: background .18s ease; }
.listrow:last-child { border-bottom: none; }
.listrow:hover { background: color-mix(in srgb, var(--on-surface) 5%, transparent); }
.listrow.dim { opacity: .55; }
.listrow-av { width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center; font: 600 17px Roboto; flex: none; }
.listrow-main { flex: 1; min-width: 0; }
.listrow-name { font: 600 15px Roboto; color: var(--on-surface); }
.listrow-sub { font: 400 13px Roboto; color: var(--on-surface-variant); margin-top: 1px; }
.chip { font: 600 12px Roboto; padding: 5px 12px; border-radius: 12px; white-space: nowrap; }
.chip-success { background: color-mix(in srgb, var(--success) 18%, transparent); color: var(--success); }
.chip-tertiary { background: var(--tertiary-container); color: var(--on-tertiary-container); }
.chip-muted { background: var(--surface-container-highest); color: var(--on-surface-variant); }
.chip-primary { background: var(--primary-container); color: var(--on-primary-container); }

/* Полоса режима офлайн. Персонал должен видеть, что данные могли устареть,
   иначе решит, что на экране актуальная смена. Текст без иконок:
   иконочный шрифт грузится с CDN и офлайн может быть недоступен. */
.offline-bar { position: sticky; top: 0; z-index: 200; padding: 9px 16px; text-align: center;
  font: 600 13px Roboto; background: var(--surface-container-highest); color: var(--on-surface-variant);
  border-bottom: 1px solid var(--outline-variant); }
.offline-bar[hidden] { display: none; }

/* banner */
.banner { display: flex; align-items: center; gap: 14px; border-radius: 18px; padding: 14px 20px; }
.banner.success { background: color-mix(in srgb, var(--success) 14%, var(--surface)); border: 1px solid color-mix(in srgb, var(--success) 35%, transparent); }
.banner .msr { font-size: 22px; }
.banner-text { font: 600 14px Roboto; color: var(--on-surface); }

/* stat tiles (salary) */
.stat-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.stat { background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 20px; padding: 18px; }
.stat-label { font: 500 12px Roboto; color: var(--on-surface-variant); margin-bottom: 8px; }
.stat-value { font: 700 24px/1 'Roboto Flex', Roboto; letter-spacing: -.02em; color: var(--on-surface); }

/* item rows (salary positions) */
.itemrow { display: flex; align-items: center; gap: 16px; padding: 12px 16px; border-top: 1px solid var(--outline-variant); flex-wrap: wrap; }
.itemrow-main { flex: 1; min-width: 140px; }
.itemrow-name { font: 600 14px Roboto; color: var(--on-surface); }
.itemrow-price { font: 400 12px Roboto; color: var(--on-surface-variant); margin-top: 2px; }
.itemrow-share { text-align: right; min-width: 110px; }
.itemrow-share .lbl { font: 400 11px Roboto; color: var(--on-surface-variant); }
.itemrow-share .val { font: 600 14px Roboto; color: var(--tertiary); }
.itemrow-total { text-align: right; min-width: 90px; font: 700 16px 'Roboto Flex', Roboto; color: var(--on-surface); }
.qty { display: flex; align-items: center; gap: 6px; }
.qty-btn {
  cursor: pointer; width: 38px; height: 38px; border-radius: 50%; font: 500 20px Roboto;
  display: grid; place-items: center; transition: transform .12s ease;
}
.qty-btn:active { transform: scale(.95); }
.qty-dec { border: 1px solid var(--outline); background: transparent; color: var(--on-surface); }
.qty-inc { border: none; background: var(--primary-container); color: var(--on-primary-container); }
.qty-num { width: 46px; text-align: center; font: 600 16px 'Roboto Flex', Roboto; color: var(--on-surface); }
.qty-input { width: 64px; text-align: center; }

/* catalog grid */
.catalog-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.product-card { background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 24px; padding: 20px; display: flex; flex-direction: column; gap: 14px; }
.product-thumb { height: 120px; border-radius: 16px; display: grid; place-items: center; background: var(--primary-container); color: var(--on-primary-container); }
.product-thumb .msr { font-size: 48px; }
.product-name { font: 600 16px 'Roboto Flex', Roboto; color: var(--on-surface); }
.product-cat { font: 400 13px Roboto; color: var(--on-surface-variant); margin-top: 2px; }
.product-foot { display: flex; align-items: center; justify-content: space-between; margin-top: auto; }
.product-price { font: 700 20px 'Roboto Flex', Roboto; color: var(--primary); }

/* forms */
.field { display: flex; flex-direction: column; gap: 6px; font: 500 12px Roboto; color: var(--on-surface-variant); }
.input, .select, .textarea, input.input, select.select, textarea.textarea {
  height: 48px; border: 1px solid var(--outline); background: var(--surface); border-radius: 12px;
  padding: 0 14px; font: 400 14px Roboto; color: var(--on-surface); outline: none; width: 100%;
}
.textarea { min-height: 96px; padding: 12px 14px; resize: vertical; }
.input:focus, .select:focus, .textarea:focus { border-color: var(--primary); box-shadow: 0 0 0 2px color-mix(in srgb, var(--primary) 25%, transparent); }

/* modal */
.modal-overlay {
  position: fixed; inset: 0; z-index: 60; background: color-mix(in srgb, #000 50%, transparent);
  display: grid; place-items: center; animation: fadeUp .2s ease; padding: 16px;
}
.modal-overlay[hidden] { display: none; }
.modal { width: 440px; max-width: 100%; max-height: calc(100vh - 32px); overflow-y: auto; background: var(--surface-container-high); border-radius: 28px; padding: 26px; box-shadow: 0 8px 40px rgba(0,0,0,.4); }
.modal-title { font: 700 20px 'Roboto Flex', Roboto; color: var(--on-surface); margin-bottom: 20px; }
.modal-body { display: flex; flex-direction: column; gap: 16px; }
.modal-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 26px; }

/* calendar */
.cal { background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 24px; overflow: hidden; }
.cal-head { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); background: var(--surface-container-high); }
.cal-head div { text-align: center; font: 600 11px Roboto; letter-spacing: .06em; text-transform: uppercase; color: var(--on-surface-variant); padding: 12px 0; }
.cal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.cal-cell { min-height: 104px; padding: 8px; overflow: hidden; border-right: 1px solid var(--outline-variant); border-bottom: 1px solid var(--outline-variant); }
.cal-cell.blank { background: color-mix(in srgb, var(--on-surface) 3%, transparent); }
.cal-cell.today { background: color-mix(in srgb, var(--primary) 8%, transparent); }
.cal-num { font: 600 12px Roboto; margin-bottom: 5px; color: var(--on-surface-variant); }
.cal-cell.today .cal-num { width: 24px; height: 24px; border-radius: 50%; background: var(--primary); color: var(--on-primary); display: grid; place-items: center; }
.cal-entry { font: 600 11px Roboto; padding: 3px 7px; border-radius: 8px; margin-bottom: 3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; max-width: 100%; }
.cal-entry .entry-name { min-width: 0; }
/* Статусы смены: план — нейтральный, идёт — акцентный, отработана — успех.
   Красный не используется: завершённая смена не является ошибкой.
   В зелёном акценте --primary совпадает с --success, поэтому статусы
   различаются ещё и маркером (● / ✓) в шаблоне, а не только цветом. */
.cal-entry.plan { background: var(--surface-container-high); color: var(--on-surface-variant); }
.cal-entry.opened { background: var(--primary-container); color: var(--on-primary-container); }
.cal-entry.closed { background: color-mix(in srgb, var(--success) 22%, transparent); color: var(--success); }
.cal-nav { display: flex; align-items: center; gap: 8px; }
.cal-nav .title { font: 600 15px 'Roboto Flex', Roboto; color: var(--on-surface); min-width: 150px; text-align: center; }
.cal-arrow { border: none; background: var(--surface-container-high); cursor: pointer; width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; color: var(--on-surface); text-decoration: none; }

/* year-grid mini */
.year-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
.mini-month { background: var(--surface-container-low); border: 1px solid var(--outline-variant); border-radius: 18px; padding: 14px; }
.mini-title { font: 600 14px 'Roboto Flex', Roboto; text-align: center; color: var(--on-surface); margin-bottom: 8px; }
.mini-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 1px; }
.mini-grid .h { text-align: center; font: 600 10px Roboto; color: var(--on-surface-variant); opacity: .6; }
.mini-day { text-align: center; font: 500 11px Roboto; padding: 3px 0; border-radius: 6px; color: var(--on-surface-variant); }
.mini-day.today { background: var(--primary); color: var(--on-primary); font-weight: 700; }
.mini-day.has { background: color-mix(in srgb, var(--primary) 15%, transparent); color: var(--primary); font-weight: 600; }

/* calendar layout helpers */
.cal-add-form { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; align-items: end; }
.cal-week { display: grid; grid-template-columns: repeat(7, 1fr); gap: 12px; }

/* messages / alerts */
.alerts { display: flex; flex-direction: column; gap: 10px; margin-bottom: 18px; }
.alert { display: flex; align-items: center; gap: 10px; padding: 12px 16px; border-radius: 14px; font: 500 13px Roboto; }
.alert .msr { font-size: 20px; }
.alert.success { background: color-mix(in srgb, var(--success) 16%, transparent); color: var(--success); }
.alert.error { background: color-mix(in srgb, var(--error) 16%, transparent); color: var(--error); }
.alert.info, .alert.warning { background: var(--secondary-container); color: var(--on-secondary-container); }

.empty { text-align: center; color: var(--on-surface-variant); font: 400 14px Roboto; padding: 24px; }
.divider-soft { height: 1px; background: var(--outline-variant); margin: 8px 0; }

/* utilities */
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.mt-auto { margin-top: auto; }

/* ============================================================
   Responsive — rail becomes off-canvas drawer
   ============================================================ */
@media (max-width: 960px) {
  .hamburger { display: grid; }
  .search { width: 180px; }
  .rail {
    position: fixed; inset: 0 auto 0 0; transform: translateX(-100%);
    transition: transform .25s ease; box-shadow: 0 8px 40px rgba(0,0,0,.4);
  }
  body.nav-open .rail { transform: none; }
  .nav-scrim { display: none; position: fixed; inset: 0; z-index: 35; background: rgba(0,0,0,.45); }
  body.nav-open .nav-scrim { display: block; }
  .kpi-grid { grid-template-columns: 1fr; }
  .grid-2 { grid-template-columns: 1fr; }
  .stat-grid { grid-template-columns: repeat(2, 1fr); }
  .catalog-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 600px) {
  .search { display: none; }
  .scroll { padding: 16px; }
  .topbar { padding: 0 16px; }
  .catalog-grid { grid-template-columns: 1fr; }
  .accent-btn span:not(.dot) { display: none; }

  /* ── Календарь ── */
  .cal-add-form { grid-template-columns: 1fr; }
  .cal-add-form .field[style*="span 2"] { grid-column: auto; }
  .cal-week { grid-template-columns: 1fr; }

  /* тулбар: пилюли / навигация / форма перехода в столбик на всю ширину */
  .cal-toolbar { justify-content: stretch; }
  .cal-toolbar > * { width: 100%; }
  .cal-toolbar .pillbar { justify-content: center; }
  .cal-toolbar .cal-nav { justify-content: center; }
  .cal-toolbar .cal-nav .title { min-width: 0; flex: 1; }
  .cal-toolbar form.row { justify-content: center; }

  /* сетка месяца компактнее */
  .cal-head div { padding: 8px 0; font-size: 9px; }
  .cal-cell { min-height: 62px; padding: 4px; }
  .cal-num { font-size: 11px; margin-bottom: 3px; }
  .cal-cell.today .cal-num { width: 20px; height: 20px; }
  .cal-entry { font-size: 9px; padding: 2px 4px; border-radius: 6px; }

  /* год — по 2 мини-месяца в ряд */
  .year-grid { grid-template-columns: 1fr 1fr; gap: 10px; }
}
@media (max-width: 380px) {
  .year-grid { grid-template-columns: 1fr; }
}
