/* ===== Family School Web – стилі ===== */
:root{
  --bg:#0f1420;--panel:#161d2e;--panel2:#1d2640;--text:#e8ecf3;--muted:#8a94a8;
  --line:#24304a;--accent:#4c8df6;--ok:#2fbf71;--warn:#e6a23c;--err:#e5484d;
  --radius:14px;--shadow:0 8px 24px rgba(0,0,0,.5);
  --safe-top:env(safe-area-inset-top,0px);
  --safe-bottom:env(safe-area-inset-bottom,0px);
  --safe-left:env(safe-area-inset-left,0px);
  --safe-right:env(safe-area-inset-right,0px);
}
[hidden]{display:none !important}

*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--bg);color:var(--text);font-family:'Inter',system-ui,sans-serif;font-size:15px;-webkit-tap-highlight-color:transparent}
.app{max-width:1280px;margin:0 auto;padding:0 max(12px,var(--safe-right)) calc(26px + var(--safe-bottom)) max(12px,var(--safe-left));display:flex;flex-direction:column;gap:14px}

.topbar{position:sticky;top:var(--safe-top);z-index:40;display:flex;align-items:center;flex-wrap:wrap;gap:10px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px;margin-top:var(--safe-top)}
.topbar__left{display:flex;align-items:center;gap:8px}
.topbar__title{font-size:17px;font-weight:700;margin:0;letter-spacing:.2px}
.topbar__right{display:flex;align-items:center;gap:10px;margin-left:auto}
.topbar__children{display:flex;flex-wrap:wrap;align-items:center;gap:6px;flex:0 1 auto;min-width:0}
.topbar__tools{display:flex;flex-wrap:wrap;align-items:center;gap:6px;flex:0 1 auto}
.topbar__children:empty,.topbar__tools:empty{display:none}
.topbar__children .child-tab{padding:5px 10px;font-size:13px}
.topbar__tools .tool-btn{padding:5px 10px;font-size:12px}
.icon-btn{width:38px;height:38px;border-radius:10px;background:transparent;border:1px solid var(--line);color:var(--text);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.icon-btn:hover{background:var(--panel2)}

.sync-indicator{width:12px;height:12px;border-radius:50%;background:var(--muted);cursor:help}
.sync-indicator.sync-ok{background:var(--ok);box-shadow:0 0 0 3px rgba(47,191,113,.25)}
.sync-indicator.sync-off{background:var(--muted)}
.sync-indicator.sync-err{background:var(--err);box-shadow:0 0 0 3px rgba(229,72,77,.25)}
.sync-indicator.sync-busy{background:var(--warn)}
.sync-indicator.sync-local{background:var(--accent);box-shadow:0 0 0 3px rgba(76,141,246,.25);animation:pulse-local 1.6s ease-in-out infinite}
.sync-indicator.sync-readonly{background:var(--muted);border:1px solid var(--line)}
@keyframes pulse-local{
  0%,100%{box-shadow:0 0 0 3px rgba(76,141,246,.25)}
  50%{box-shadow:0 0 0 6px rgba(76,141,246,.15)}
}

.child-tabs{display:flex;flex-wrap:wrap;gap:8px}
.child-tab{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border-radius:20px;border:1px solid var(--line);background:transparent;color:var(--text);cursor:pointer;font-weight:600}
.child-tab.active{background:var(--panel2);border-color:var(--accent)}
.child-tab .dot{width:10px;height:10px;border-radius:50%;background:currentColor}
.child-tab .x{font-size:13px;color:var(--muted);margin-left:2px;line-height:1}
.child-tab .x:hover{color:var(--err)}

.toolbar{display:none}
.tool-btn{border:1px solid var(--line);background:transparent;color:var(--accent);border-radius:10px;padding:6px 10px;cursor:pointer;font-size:13px}
.tool-btn:disabled{opacity:.4;cursor:not-allowed}

.readonly-banner{display:none}

.sched-table-wrapper{overflow-x:auto;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:10px}
.sched-table{width:100%;min-width:860px;border-collapse:separate;border-spacing:5px}
.sched-table th{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:8px 6px;text-align:center;font-size:12px;font-weight:700;color:var(--text);letter-spacing:.3px}
.sched-table th.time-col-header{width:110px;text-align:center;color:var(--muted);text-transform:uppercase;font-size:11px}
.sched-table th.weekend-th{color:var(--warn);opacity:.85}
.sched-table td{vertical-align:stretch;padding:0}
.sched-table td.time-cell{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:8px;text-align:center;font-size:12px;color:var(--text);font-weight:600;line-height:1.3;white-space:nowrap}
.sched-table td.time-cell .slot-num{font-weight:700;margin-right:4px}
.sched-table td.time-cell .slot-hours{color:var(--muted);font-size:11px;display:block}

/* ===== Секції розкладу: Пн–Пт та окрема таблиця вихідних ===== */
.sched-sections{display:flex;flex-direction:column;gap:10px}
.sched-section__title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin:0 2px -2px}
.sched-section__title--weekend{color:var(--warn);opacity:.9;margin-top:4px}
/* Таблиця вихідних вужча: 2 дні й 2 рядки гуртків замість 5 днів × 10 рядків */
.sched-table.sched-table--weekend{min-width:320px;max-width:560px}
.sched-table-wrapper--weekend{background:rgba(230,162,60,0.04);border-color:rgba(230,162,60,0.22)}

/* ===== Шапка розкладу: заголовок, дні, «сьогодні» та стан «зараз» — в один рядок ===== */
.sched-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0 0 10px}
.sched-head h3.sched-head__title{margin:0;font-size:15px;font-weight:700;color:var(--text);text-transform:none;letter-spacing:.2px}
.sched-head__week{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--muted)}
.sched-head__hint{font-size:11px;color:var(--muted);opacity:.85}

/* Бейдж «Сьогодні»: реальна дата + поточний час пристрою */
.today-badge{display:inline-flex;align-items:baseline;gap:7px;padding:3px 10px;border-radius:20px;border:1px solid var(--line);background:var(--panel2);font-size:12px;color:var(--text);white-space:nowrap}
.today-badge .tb-day{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--accent)}
.today-badge .tb-clock{font-weight:700;font-variant-numeric:tabular-nums}

/* Плашка стану: «Зараз: …» / «Далі: …» / завершено */
.now-status{display:inline-flex;align-items:center;padding:3px 10px;border-radius:20px;border:1px solid var(--line);background:transparent;font-size:12px;font-weight:600;color:var(--muted);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.now-status:empty{display:none}
.now-status.is-now{border-color:rgba(255,255,255,.85);background:rgba(255,255,255,.14);color:#fff;box-shadow:0 0 12px rgba(255,255,255,.28)}
.now-status.is-next{border-color:rgba(255,255,255,.4);color:var(--text)}

/* ===== «Сьогодні»: білий муар на клітинці актуального дня тижня ===== */
@keyframes moire-sweep{
  from{background-position:0% 50%}
  to{background-position:200% 50%}
}
.sched-table th.today-th{
  color:#0f1420;
  background-color:rgba(255,255,255,.9);
  border-color:rgba(255,255,255,.95);
  background-image:linear-gradient(110deg,rgba(255,255,255,.32) 0%,#fff 18%,rgba(255,255,255,.5) 36%,#fff 54%,rgba(255,255,255,.32) 72%,#fff 90%,rgba(255,255,255,.32) 100%);
  background-size:200% 100%;
  animation:moire-sweep 5.5s linear infinite;
  text-shadow:0 1px 0 rgba(255,255,255,.75);
  box-shadow:0 0 14px rgba(255,255,255,.45),inset 0 0 10px rgba(255,255,255,.6);
}
.sched-table th.today-th.weekend-th{color:#0f1420;opacity:1}
.th-today{display:none;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;margin-top:2px;opacity:.8}
.sched-table th.today-th .th-today{display:block}
/* Стовпець сьогоднішнього дня — легкий білий фон */
.sched-table td.today-col{background:rgba(255,255,255,.045);border-radius:8px}

/* ===== Актуальний урок: підсвітка клітинки з часом і самої картки уроку ===== */
@keyframes now-pulse{
  0%,100%{box-shadow:0 0 0 2px rgba(255,255,255,.95),0 0 12px rgba(255,255,255,.4)}
  50%{box-shadow:0 0 0 3px #fff,0 0 22px rgba(255,255,255,.75)}
}
.lesson-card.is-now{outline:2px solid #fff;outline-offset:-2px;animation:now-pulse 2.6s ease-in-out infinite;z-index:2}
.lesson-card.is-next{outline:2px dashed rgba(255,255,255,.6);outline-offset:-2px}
.sched-table td.time-cell.time-cell--now{border-color:#fff;background:rgba(255,255,255,.14);color:#fff;box-shadow:0 0 12px rgba(255,255,255,.3)}
.sched-table td.time-cell.time-cell--now .slot-num{color:#fff}
.sched-table td.time-cell.time-cell--now .slot-hours{color:rgba(255,255,255,.85)}
.sched-table td.time-cell.time-cell--now .slot-kind{color:rgba(255,255,255,.7)}
.sched-table td.time-cell.time-cell--next{border-color:rgba(255,255,255,.45);background:rgba(255,255,255,.06)}
.now-flag{align-self:flex-start;margin-bottom:4px;padding:1px 6px;border-radius:8px;background:rgba(0,0,0,.65);color:#fff;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;pointer-events:none}

/* Поважаємо системне налаштування «менше руху» */
@media (prefers-reduced-motion:reduce){
  .sched-table th.today-th{animation:none}
  .lesson-card.is-now{animation:none}
}

/* ===== Lesson card ===== */
.lesson-card{display:flex;flex-direction:column;justify-content:center;min-height:56px;height:100%;width:100%;padding:7px 10px;border-radius:8px;border:1px solid rgba(0,0,0,0.15);cursor:grab;user-select:none;text-align:left;position:relative;transition:transform .12s ease,box-shadow .12s ease,opacity .15s ease}
.lesson-card:hover{filter:brightness(1.06);box-shadow:0 3px 10px rgba(0,0,0,0.25)}
.lesson-card:active{cursor:grabbing}
.lesson-card.dragging{opacity:0.35;cursor:grabbing;transform:scale(0.97)}
.lesson-card.readonly{cursor:default}
.lesson-subject{font-size:13px;font-weight:700;line-height:1.2;color:#111;margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;padding-right:34px}
.lesson-teacher{font-size:11px;font-weight:600;line-height:1.15;color:#222;opacity:.85;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:34px}

/* Кабінет-бейдж у правому верхньому куті */
.room-badge{position:absolute;top:4px;right:4px;min-width:22px;height:22px;padding:0 7px;border-radius:11px;background:rgba(0,0,0,0.55);color:#fff;font-size:11px;font-weight:700;letter-spacing:.2px;display:inline-flex;align-items:center;justify-content:center;line-height:1;box-shadow:0 1px 3px rgba(0,0,0,0.3);pointer-events:none;max-width:70%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Час на картці гуртка (тонкий рядок зверху) */
.time-badge{font-size:10px;font-weight:700;color:#111;opacity:.7;line-height:1;margin-bottom:3px;letter-spacing:.3px;text-transform:none;padding-right:34px}

/* Пусті клітинки */
.lesson-empty{display:flex;align-items:center;justify-content:center;min-height:56px;height:100%;width:100%;border-radius:8px;border:1px dashed var(--line);background:transparent;color:var(--muted);cursor:pointer;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;transition:background .15s ease,border-color .15s ease}
.lesson-empty:hover{background:var(--panel2);border-color:var(--accent);color:var(--text)}
.lesson-empty.readonly{cursor:default;opacity:.5}
.lesson-empty.readonly:hover{background:transparent;border-color:var(--line);color:var(--muted)}

/* Заблоковані клітинки (уроки у Сб/Нд) */
.cell-blocked{display:flex;align-items:center;justify-content:center;min-height:56px;height:100%;width:100%;border-radius:8px;background:rgba(255,255,255,0.02);border:1px solid rgba(255,255,255,0.04);color:var(--muted);font-size:18px;opacity:.35;cursor:not-allowed;user-select:none}

.cell-slot{height:100%;min-height:56px;border-radius:8px;position:relative}
.cell-slot.drag-over{outline:2px dashed var(--accent);outline-offset:-2px;background:rgba(76,141,246,0.15);border-radius:8px}

.color-palette{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.color-swatch{width:28px;height:28px;border-radius:7px;border:2px solid transparent;cursor:pointer;transition:transform .12s ease}
.color-swatch:hover{transform:scale(1.15)}
.color-swatch.active{border-color:#fff;box-shadow:0 0 0 2px var(--accent)}
.custom-color-row{display:flex;align-items:center;gap:8px}
.custom-color-row input[type="color"]{width:36px;height:30px;padding:0;border:1px solid var(--line);border-radius:6px;background:none;cursor:pointer}

.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px}
.card h3{margin:0 0 10px;font-size:14px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}
.item-form{display:flex;flex-direction:column;gap:8px}
.item-form input{border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:9px;padding:8px 10px;font-size:16px}
.item-form input::placeholder{color:var(--muted)}

.btn{border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:10px;padding:8px 14px;cursor:pointer;font-weight:600}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn.primary{background:var(--accent);color:#fff;border-color:transparent}
.btn.primary.pending{background:var(--warn);animation:pulse-btn 1.4s ease-in-out infinite}
@keyframes pulse-btn{
  0%,100%{filter:brightness(1)}
  50%{filter:brightness(1.15)}
}
.btn.danger{background:transparent;color:var(--err);border-color:var(--err)}
.btn.ghost{background:transparent;color:var(--text)}
.row{display:flex;gap:10px;flex-wrap:wrap}
.btn-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px}
.field{display:flex;flex-direction:column;gap:5px;margin-bottom:10px}
.field label{font-size:12px;color:var(--muted)}
.field input{border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:9px;padding:9px 11px;font-size:16px}
.field input[type="time"]{max-width:130px}
.muted{color:var(--muted);font-size:13px}
.small{font-size:11px}
.status{font-size:13px;margin-top:8px}
.status.ok{color:var(--ok)}
.status.err{color:var(--err)}
h2{font-size:18px;margin:0 0 12px;font-weight:700}

.footer-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}

.scrim{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:50}
.sidebar{position:fixed;top:0;left:0;bottom:0;width:280px;max-width:85%;background:var(--panel);z-index:60;transform:translateX(-100%);transition:transform .22s ease;overflow:auto;padding-top:var(--safe-top);padding-bottom:var(--safe-bottom);padding-left:var(--safe-left)}
.sidebar.open{transform:none}
.sidebar__close{position:absolute;top:12px;right:12px}
.sidebar__nav{display:flex;flex-direction:column;gap:4px;padding:60px 14px 22px}
.side-link{padding:11px 14px;border-radius:10px;border:1px solid var(--line);background:transparent;color:var(--text);cursor:pointer;text-align:left;font-size:15px}
.side-link:hover{background:var(--panel2)}

.modal{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:70;display:flex;align-items:center;justify-content:center;padding:max(16px,var(--safe-top)) max(16px,var(--safe-right)) max(16px,var(--safe-bottom)) max(16px,var(--safe-left));overscroll-behavior:contain}
.modal__card{width:min(480px,92vw);background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;max-height:90vh;overflow:auto}
.modal__card--wide{width:min(580px,96vw)}
.modal__card code{background:var(--panel2);border:1px solid var(--line);border-radius:5px;padding:1px 6px;font-size:13px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}

.empty{background:var(--panel);border:1px dashed var(--line);border-radius:var(--radius);padding:26px;color:var(--muted);text-align:center}

.list{display:flex;flex-direction:column;gap:8px}
.list-item{display:flex;align-items:center;gap:10px;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:9px 12px}
.list-item .bar{width:4px;align-self:stretch;background:currentColor;border-radius:2px}
.list-item .txt{flex:1}
.list-item .meta{color:var(--muted);font-size:12px}
.add-btn{width:100%;padding:9px;border:1px dashed var(--line);background:transparent;color:var(--accent);border-radius:10px;cursor:pointer;margin-top:6px}

.slots-subtitle{font-size:13px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);margin:14px 0 8px}
.slots-list{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}
.slot-row{display:flex;align-items:center;gap:8px;background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:6px 10px}
.slot-row-num{font-weight:700;font-size:12px;color:var(--muted);width:24px;text-align:center}
.slot-row input[type="time"]{background:var(--panel);border:1px solid var(--line);color:var(--text);border-radius:6px;padding:5px 8px;font-size:13px;font-family:inherit}
.slot-dash{color:var(--muted);font-weight:600}

/* ===== Гуртки (рядки 8-9) ===== */
.sched-table tr.extra-row td{padding-top:2px}
.sched-table tr.extra-row .time-cell{background:rgba(230,162,60,0.08);border-color:rgba(230,162,60,0.25)}
.sched-table tr.extra-row .time-cell .slot-num{color:var(--warn);font-size:14px}
.sched-table tr.extra-row .time-cell .slot-kind{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.3px;color:var(--warn);font-weight:700;margin:1px 0}
.sched-table td.time-cell .slot-kind{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.3px;color:var(--muted);font-weight:600;margin:1px 0}
.sched-table tr.extra-row .lesson-empty.extra-add{border-color:rgba(230,162,60,0.3);color:rgba(230,162,60,0.85);background:rgba(230,162,60,0.03)}
.sched-table tr.extra-row .lesson-empty.extra-add:hover{background:rgba(230,162,60,0.12);border-color:var(--warn);color:#fff}
.sched-table tr.extra-row .lesson-card.extra-card{border:1.5px solid rgba(230,162,60,0.5);box-shadow:0 3px 8px rgba(230,162,60,0.15)}

/* Тост про статус збереження */
.toast{position:fixed;bottom:16px;left:50%;transform:translateX(-50%);background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px 16px;box-shadow:var(--shadow);z-index:80;font-size:14px;display:flex;align-items:center;gap:10px;max-width:90vw}
.toast.toast-ok{border-color:var(--ok);color:var(--ok)}
.toast.toast-err{border-color:var(--err);color:var(--err)}
.toast.toast-info{border-color:var(--accent);color:var(--text)}

/* ===== Планшет / десктоп ===== */
@media (min-width:860px){
  .app{padding:0 max(24px,var(--safe-right)) calc(30px + var(--safe-bottom)) max(24px,var(--safe-left))}
}

/* ===== Мобільний адаптив (<860px) ===== */
@media (max-width:859px){
  .app{gap:10px;padding:0 max(8px,var(--safe-right)) calc(20px + var(--safe-bottom)) max(8px,var(--safe-left))}

  /* Топбар компактніший */
  .topbar{padding:8px 10px;gap:6px;border-radius:10px}
  .topbar__title{font-size:15px}
  .icon-btn{width:36px;height:36px;font-size:18px}

  /* Ім'я дитини повністю переноситься на новий рядок якщо треба */
  .topbar__children{order:3;width:100%;justify-content:flex-start;gap:5px;margin-top:2px}
  .topbar__tools{order:4;width:100%;justify-content:flex-start}
  .topbar__children:empty,.topbar__tools:empty{margin-top:0}
  .topbar__children .child-tab{padding:5px 9px;font-size:12px;border-radius:16px}
  .topbar__children .child-tab .dot{width:8px;height:8px}
  .topbar__tools .tool-btn{padding:5px 9px;font-size:12px}

  /* Таблиця розкладу — компактніша, скрол свайпом */
  .sched-table-wrapper{padding:6px;border-radius:10px;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity}
  .sched-table{min-width:720px;border-spacing:3px}
  .sched-table th{padding:6px 3px;font-size:11px}
  .sched-table th.time-col-header{width:80px;font-size:10px}
  .sched-table td.time-cell{padding:5px 4px;font-size:11px}
  .sched-table td.time-cell .slot-hours{font-size:10px}
  .sched-table td.time-cell .slot-kind{font-size:9px}

  /* Таблиця вихідних — тримається в межах екрана, без горизонтального скролу */
  .sched-table.sched-table--weekend{min-width:300px;max-width:100%}

  /* Шапка розкладу — компактніша, в один рядок */
  .sched-head{gap:5px 8px;margin-bottom:8px}
  .sched-head h3.sched-head__title{font-size:14px}
  .sched-head__hint{display:none}
  .today-badge,.now-status{font-size:11px;padding:2px 8px}
  .th-today{font-size:8px}

  /* Картки уроків — компактніше */
  .lesson-card,.lesson-empty,.cell-blocked{min-height:48px}
  .lesson-subject{font-size:12px;padding-right:28px}
  .lesson-teacher{font-size:10px;padding-right:28px}
  .time-badge{font-size:9px;padding-right:28px}
  .room-badge{min-width:20px;height:20px;font-size:10px;top:3px;right:3px}
  .lesson-empty{font-size:10px}

  /* Модалки — займають майже весь екран */
  .modal__card{padding:14px;border-radius:12px;width:min(480px,100%)}
  .modal__card--wide{width:min(580px,100%)}
  h2{font-size:16px;margin-bottom:10px}

  /* Кнопки — більший таргет для пальця (мінімум 40px) */
  .btn{padding:10px 14px;font-size:14px;min-height:40px}
  .side-link{padding:12px 14px;min-height:44px}
  .add-btn{min-height:44px}

  /* Картки списків домашки/контрольних */
  .card{padding:12px;border-radius:12px}
  .card h3{font-size:12px}
  .list-item{padding:10px 12px}
  .list-item .txt{font-size:13px}
  .list-item .meta{font-size:11px}

  /* Футер — вертикально стек */
  .footer-actions{flex-direction:column;align-items:stretch;gap:8px}
  .footer-actions .btn{width:100%}

  /* Toast + clipboard-hint — по всьому екрану знизу */
  .toast,.update-toast{left:8px;right:8px;transform:none;max-width:none;bottom:calc(8px + var(--safe-bottom))}
  .clipboard-hint{left:8px;right:8px;bottom:calc(8px + var(--safe-bottom));max-width:none}

  /* Дзвінки — компактніше */
  .slots-list{gap:5px}
  .slot-row{padding:5px 8px;flex-wrap:wrap}
  .slot-row input[type="time"]{font-size:14px}
}

/* ===== Дуже вузькі екрани (<420px) ===== */
@media (max-width:420px){
  .topbar__title{font-size:14px}
  .sched-table{min-width:640px}
  .lesson-subject{font-size:11px}
  .lesson-teacher{font-size:9px}
}

/* ===== PWA standalone-режим (запуск як застосунок, без адресного рядка) ===== */
@media (display-mode:standalone){
  /* Забороняємо виділення тексту, щоб застосунок відчувався як нативний */
  .topbar,.child-tab,.tool-btn,.icon-btn,.btn,.side-link{-webkit-user-select:none;user-select:none}
}

/* ===== Landscape на телефоні (низький екран) ===== */
@media (max-height:500px) and (orientation:landscape){
  .modal__card{max-height:95vh}
  .topbar{position:relative}
}

/* ===== Копіювання карток ===== */

/* Картка, що зараз у буфері (marching ants) */
.lesson-card.in-clipboard{
  outline:2px dashed #fff;
  outline-offset:-4px;
  animation:marching-ants 0.8s linear infinite;
  position:relative;
}
.lesson-card.in-clipboard::after{
  content:"📋";
  position:absolute;
  bottom:2px;
  right:4px;
  font-size:11px;
  opacity:.7;
  pointer-events:none;
}
@keyframes marching-ants{
  0%{outline-color:rgba(255,255,255,0.9)}
  50%{outline-color:rgba(255,255,255,0.35)}
  100%{outline-color:rgba(255,255,255,0.9)}
}

/* Індикатор "готово вставити" — коли є копія в буфері,
   порожні клітинки трохи підсвічуються */
.has-clipboard .lesson-empty:not(.readonly){
  border-color:rgba(76,141,246,0.4);
  color:rgba(76,141,246,0.7);
}
.has-clipboard .lesson-empty:not(.readonly):hover{
  border-color:var(--accent);
  color:var(--accent);
  background:rgba(76,141,246,0.08);
}

/* Курсор при Ctrl+drag (браузер сам малює "+", але додамо стан) */
.lesson-card.copy-drag{
  opacity:0.55;
  transform:scale(0.98);
}

/* Кнопка "Вставити" у модалці — акцентніше, коли є що вставляти */
#btn-paste-cell:not([hidden]){
  color:var(--accent);
  border-color:rgba(76,141,246,0.4);
}
#btn-paste-cell:not([hidden]):hover{
  background:rgba(76,141,246,0.1);
}

/* Плашка-підказка про буфер (внизу екрана) */
.clipboard-hint{
  position:fixed;
  bottom:16px;
  right:16px;
  background:var(--panel);
  border:1px solid var(--accent);
  border-radius:10px;
  padding:8px 12px;
  font-size:12px;
  color:var(--text);
  box-shadow:var(--shadow);
  z-index:60;
  display:flex;
  align-items:center;
  gap:8px;
  max-width:90vw;
}
.clipboard-hint b{color:var(--accent);font-weight:700}
.clipboard-hint .cb-clear{
  background:transparent;
  border:none;
  color:var(--muted);
  cursor:pointer;
  font-size:14px;
  padding:0 2px;
  line-height:1;
}
.clipboard-hint .cb-clear:hover{color:var(--err)}

/* ===== PWA update prompt ===== */
.update-toast{
  position:fixed;
  bottom:calc(16px + var(--safe-bottom));
  left:50%;
  transform:translateX(-50%);
  background:var(--panel);
  border:2px solid var(--accent);
  border-radius:12px;
  padding:10px 14px 10px 16px;
  box-shadow:var(--shadow);
  z-index:85;
  font-size:14px;
  display:flex;
  align-items:center;
  gap:12px;
  max-width:calc(100% - 16px);
  animation:toast-in 0.28s ease-out;
}
.update-toast .ut-text{color:var(--text)}
.update-toast .ut-text b{color:var(--accent);font-weight:700}
.update-toast .ut-btn{
  background:var(--accent);
  color:#fff;
  border:none;
  border-radius:8px;
  padding:6px 14px;
  cursor:pointer;
  font-weight:700;
  font-size:13px;
  white-space:nowrap;
}
.update-toast .ut-btn:hover{filter:brightness(1.1)}
.update-toast .ut-close{
  background:transparent;
  border:none;
  color:var(--muted);
  cursor:pointer;
  font-size:16px;
  padding:0 4px;
  line-height:1;
}
.update-toast .ut-close:hover{color:var(--err)}

@keyframes toast-in{
  from{opacity:0;transform:translate(-50%,20px)}
  to{opacity:1;transform:translate(-50%,0)}
}

/* ===== Друк ===== */
/* У друк потрапляє лише таблиця розкладу: білий фон і чорний текст
   замість темної теми; кольори предметів на картках зберігаються. */
@media print{
  @page{size:A4 landscape;margin:8mm}

  /* Світла тема замість темної */
  html,body{background:#fff !important;color:#111 !important;height:auto}
  .app{display:block;max-width:none;gap:0;padding:0}

  /* Ховаємо весь інтерфейс — лишаємо тільки картку розкладу */
  .topbar,.footer-actions,.sidebar,.scrim,.modal,.toast,.update-toast,.clipboard-hint,.card--list{display:none !important}

  /* Картка розкладу — без фону, рамок і заголовка-підказки */
  .card,.card--schedule,.sched-table-wrapper{background:#fff !important;border:none !important;border-radius:0 !important;box-shadow:none !important;padding:0 !important}
  .card--schedule>h3{display:none !important}
  /* Шапка розкладу в друці — лише заголовок і діапазон днів (без «сьогодні» й підсвіток) */
  .sched-head{display:block !important;margin:0 0 6px}
  .sched-head h3.sched-head__title{display:inline !important;color:#111 !important;text-transform:none !important}
  .sched-head__week{color:#555 !important;margin-left:6px}
  .today-badge,.now-status,.sched-head__hint,.now-flag,.th-today{display:none !important}
  .lesson-card.is-now,.lesson-card.is-next{outline:none !important;animation:none !important}
  .sched-table th.today-th{background-image:none !important;animation:none !important}
  .sched-table td.today-col{background:#fff !important}
  .sched-sections{gap:8px}
  .sched-section__title{color:#555 !important;margin:0 0 3px;page-break-after:avoid;break-after:avoid}
  .sched-section__title--weekend{color:#8a6200 !important;opacity:1}

  /* Таблиця: без скролу й мінімальної ширини; кольори друкуються як є.
     Легке ущільнення — щоб тиждень уміщався на один аркуш A4 (landscape) */
  .sched-table-wrapper{overflow:visible !important}
  .sched-table{min-width:0 !important;width:100% !important;border-spacing:2px}
  .sched-table--weekend{max-width:none !important}
  .sched-table th,.sched-table td,.sched-table .lesson-card,.sched-table .lesson-empty,.sched-table .room-badge{-webkit-print-color-adjust:exact !important;print-color-adjust:exact !important}

  /* Шапка, колонка часу та рамки — світлі, текст чорний */
  .sched-table th{padding:3px 5px;background:#eef2f7 !important;border:1px solid #9aa4b2 !important;color:#111 !important}
  .sched-table th.weekend-th{color:#8a6200 !important;opacity:1}
  .sched-table td.time-cell{padding:3px 6px;line-height:1.15;background:#f4f6fa !important;border:1px solid #9aa4b2 !important;color:#111 !important}
  .sched-table td.time-cell .slot-hours,.sched-table td.time-cell .slot-kind{color:#555 !important;font-size:10px}
  .sched-table tr.extra-row .time-cell{background:#fff7e8 !important;border-color:#dcb26a !important}
  .sched-table tr.extra-row .time-cell .slot-num,
  .sched-table tr.extra-row .time-cell .slot-kind{color:#8a6200 !important}
  .sched-table tr{page-break-inside:avoid;break-inside:avoid}

  /* Картки уроків: фон — колір предмета, текст чорний */
  .lesson-card{padding:5px 8px;min-height:40px;border:1px solid rgba(0,0,0,.35) !important;box-shadow:none !important;page-break-inside:avoid;break-inside:avoid}
  .lesson-subject,.lesson-teacher,.time-badge{color:#111 !important}
  .room-badge{background:#1b1b1b !important;color:#fff !important;box-shadow:none !important}
  .sched-table tr.extra-row .lesson-card.extra-card{border-color:#dcb26a !important;box-shadow:none !important}

  /* Порожні клітинки — без підказок «+ Додати урок» */
  .cell-slot{min-height:40px}
  .lesson-empty,.cell-blocked{background:#fff !important;border:1px dashed #d6dbe4 !important;color:transparent !important;min-height:40px;opacity:1 !important}
}
