:root{
  --radius-lg:18px; --radius-md:14px; --radius-sm:10px;
}
:root[data-theme="dark"], html:not([data-theme]){
  --bg:#0e0f12; --card:#1a1c20; --border:#2a2d33;
  --text-primary:#f2f3f5; --text-secondary:#a3a8b0; --text-tertiary:#787d86;
  --accent:#5b8dff; --accent-soft:#1c2740;
  --now-bg:#123322; --now-border:#1f5c3a; --now-text:#4fd382; --now-glow:79,211,130;
  --next-bg:#3a2e10; --next-border:#6b5219; --next-text:#e8b64a;
  --chip-bg:#232529; --danger:#ff6b6b;
  --shadow: 0 1px 2px rgba(0,0,0,0.25), 0 4px 12px rgba(0,0,0,0.28);
}
:root[data-theme="light"]{
  --bg:#f4f5f7; --card:#ffffff; --border:#e6e7eb;
  --text-primary:#14161a; --text-secondary:#6b7078; --text-tertiary:#9a9ea6;
  --accent:#2f6bff; --accent-soft:#eaf0ff;
  --now-bg:#eafbf0; --now-border:#bdeccd; --now-text:#1e8f4e; --now-glow:30,143,78;
  --next-bg:#fff7e6; --next-border:#f3dfab; --next-text:#b07a12;
  --chip-bg:#f1f2f5; --danger:#d9403f;
  --shadow: 0 1px 2px rgba(20,22,26,0.04), 0 4px 10px rgba(20,22,26,0.04);
}
html{ background:#0e0f12; }
*{ box-sizing:border-box; }
body{
  margin:0; padding:0; background:var(--bg); color:var(--text-primary);
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  -webkit-font-smoothing:antialiased; overflow-x:hidden;
  padding-top:env(safe-area-inset-top); padding-bottom:env(safe-area-inset-bottom);
  padding-left:env(safe-area-inset-left); padding-right:env(safe-area-inset-right);
}
a{ color:var(--accent); text-decoration:none; }
.wrap{ max-width:720px; margin:0 auto; padding:0 16px; }
.wrap-narrow{ max-width:480px; margin:0 auto; padding:0 16px; }

/* ---------- top bar ---------- */
.topbar{
  display:flex; align-items:center; justify-content:space-between;
  padding:14px 16px; border-bottom:1px solid var(--border);
}
.topbar .brand{ font-weight:700; font-size:17px; letter-spacing:-0.01em; }
.topbar .brand span{ color:var(--accent); }
.topbar nav{ display:flex; gap:14px; align-items:center; font-size:14px; }
.topbar nav a{ color:var(--text-secondary); }
.topbar nav a.primary{ color:var(--accent); font-weight:600; }

.theme-toggle{
  width:40px; height:24px; border-radius:999px; background:var(--chip-bg);
  border:1px solid var(--border); position:relative; cursor:pointer; padding:0;
}
.theme-toggle .thumb{
  position:absolute; top:2px; left:2px; width:18px; height:18px; border-radius:50%;
  background:var(--card); display:flex; align-items:center; justify-content:center;
  font-size:10px; transition:transform 0.2s ease; box-shadow:0 1px 2px rgba(0,0,0,0.25);
}
:root[data-theme="light"] .theme-toggle .thumb{ transform:translateX(16px); }

/* ---------- buttons / forms ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:6px;
  background:var(--accent); color:#fff; border:none; border-radius:var(--radius-sm);
  padding:11px 18px; font-size:14.5px; font-weight:600; cursor:pointer;
  text-decoration:none; -webkit-tap-highlight-color:transparent;
}
.btn.secondary{ background:var(--chip-bg); color:var(--text-primary); border:1px solid var(--border); }
.btn.danger{ background:transparent; color:var(--danger); border:1px solid var(--danger); }
.btn.small{ padding:7px 12px; font-size:13px; }
.btn-row{ display:flex; gap:10px; flex-wrap:wrap; }

label{ display:block; font-size:13px; font-weight:600; color:var(--text-secondary); margin:14px 0 6px; }
input[type=text], input[type=password], input[type=time], input[type=file], textarea, select{
  width:100%; background:var(--card); color:var(--text-primary); border:1px solid var(--border);
  border-radius:var(--radius-sm); padding:10px 12px; font-size:14.5px; font-family:inherit;
}
input:focus, textarea:focus, select:focus{ outline:none; border-color:var(--accent); }

.card{
  background:var(--card); border:1px solid var(--border); border-radius:var(--radius-lg);
  box-shadow:var(--shadow); padding:16px;
}
.alert{
  border-radius:var(--radius-sm); padding:10px 14px; font-size:13.5px; margin:14px 0;
}
.alert.error{ background:rgba(217,64,63,0.12); color:var(--danger); border:1px solid rgba(217,64,63,0.35); }
.alert.ok{ background:var(--now-bg); color:var(--now-text); border:1px solid var(--now-border); }

/* ---------- dashboard list ---------- */
.sched-list{ display:flex; flex-direction:column; gap:10px; margin-top:16px; }
.sched-row{
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  background:var(--card); border:1px solid var(--border); border-radius:var(--radius-md);
  padding:13px 14px;
}
.sched-row .title{ font-weight:700; font-size:15px; }
.sched-row .meta{ font-size:12.5px; color:var(--text-tertiary); margin-top:2px; }
.sched-row .actions{ display:flex; gap:8px; }

/* ---------- constructor ---------- */
.day-tabs{ display:flex; gap:6px; overflow-x:auto; padding:4px 0 12px; }
.day-tab{
  flex:0 0 auto; border:1px solid var(--border); background:var(--card); color:var(--text-secondary);
  border-radius:999px; padding:7px 13px; font-size:13.5px; font-weight:600; cursor:pointer;
}
.day-tab.active{ background:var(--accent); border-color:var(--accent); color:#fff; }

.lesson-row{
  background:var(--card); border:1px solid var(--border); border-radius:var(--radius-md);
  padding:12px; margin-bottom:10px; position:relative;
}
.lesson-row .grid{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.lesson-row .remove-btn{
  position:absolute; top:10px; right:10px; background:none; border:none; color:var(--text-tertiary);
  font-size:18px; cursor:pointer; line-height:1; padding:2px 6px;
}
.add-lesson-btn{
  width:100%; border:1px dashed var(--border); background:transparent; color:var(--accent);
  border-radius:var(--radius-md); padding:12px; font-size:14px; font-weight:600; cursor:pointer;
}
.self-study-toggle{ display:flex; align-items:center; gap:8px; font-size:13px; color:var(--text-secondary); margin-top:8px; }
.self-study-toggle input{ width:auto; }

/* ---------- public schedule view (mobile cards) ---------- */
.app{ max-width:680px; margin:0 auto; min-height:100vh; display:flex; flex-direction:column; }
header.top{ padding:14px 16px 10px; }
.group-row{ display:flex; align-items:baseline; justify-content:space-between; gap:8px; }
.group-name{ font-size:20px; font-weight:700; letter-spacing:-0.01em; }
.group-meta{ font-size:13px; color:var(--text-secondary); margin-top:2px; }
.week-badge{
  display:inline-flex; align-items:center; gap:4px; font-size:11.5px; font-weight:700;
  letter-spacing:0.03em; background:var(--accent-soft); color:var(--accent);
  padding:3px 9px; border-radius:999px; margin-top:8px;
}
.day-switcher-wrap{ padding:6px 0 10px; position:sticky; top:0; background:var(--bg); z-index:5; }
.day-switcher{ display:flex; gap:6px; overflow-x:auto; padding:2px 16px 4px; scroll-snap-type:x proximity; -webkit-overflow-scrolling:touch; scrollbar-width:none; }
.day-switcher::-webkit-scrollbar{ display:none; }
.day-btn{
  flex:0 0 auto; scroll-snap-align:center; border:1px solid var(--border); background:var(--card);
  color:var(--text-secondary); border-radius:999px; padding:8px 14px; font-size:14px; font-weight:600;
  -webkit-tap-highlight-color:transparent; touch-action:manipulation;
  transition:background .18s ease,color .18s ease,border-color .18s ease,transform .12s ease;
}
.day-btn.active{ background:var(--accent); border-color:var(--accent); color:#fff; }
.day-btn:active{ transform:scale(0.96); }
.day-btn.is-today:not(.active){ border-color:var(--accent); color:var(--accent); }

main.sched-main{ flex:1; padding:4px 16px 28px; }
.day-panel{ display:none; animation:fadeSlide .28s ease; flex-direction:column; gap:10px; }
.day-panel.active{ display:flex; }
@keyframes fadeSlide{ from{opacity:0; transform:translateY(6px);} to{opacity:1; transform:translateY(0);} }

.lesson-card{ background:var(--card); border:1px solid var(--border); border-radius:var(--radius-lg); box-shadow:var(--shadow); padding:14px 14px 12px; position:relative; }
.lesson-top{ display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; gap:8px; }
.lesson-time{ font-size:15px; font-weight:700; font-variant-numeric:tabular-nums; }
.lesson-time .arrow{ color:var(--text-tertiary); font-weight:500; margin:0 2px; }
.lesson-number{ font-size:11px; font-weight:700; color:var(--text-tertiary); background:var(--chip-bg); padding:3px 8px; border-radius:999px; letter-spacing:.03em; white-space:nowrap; }

.status-row{ display:flex; gap:6px; margin-bottom:6px; }
.badge{ font-size:11px; font-weight:700; padding:3px 8px; border-radius:999px; letter-spacing:.03em; }
.badge.now{ background:var(--now-bg); color:var(--now-text); border:1px solid var(--now-border); position:relative; padding-left:20px; }
.badge.now::before{ content:""; position:absolute; left:8px; top:50%; transform:translateY(-50%); width:6px; height:6px; border-radius:50%; background:var(--now-text); animation:dotPulse 1.6s ease-in-out infinite; }
.badge.next{ background:var(--next-bg); color:var(--next-text); border:1px solid var(--next-border); }

.lesson-card.is-now{ border-color:var(--now-border); box-shadow:0 1px 2px rgba(20,22,26,.04), 0 0 0 3px rgba(var(--now-glow),.07); animation:cardGlow 2.6s ease-in-out infinite; }
@keyframes dotPulse{ 0%,100%{ box-shadow:0 0 0 0 rgba(var(--now-glow),.45); opacity:1;} 50%{ box-shadow:0 0 0 5px rgba(var(--now-glow),0); opacity:.85;} }
@keyframes cardGlow{ 0%,100%{ box-shadow:0 1px 2px rgba(20,22,26,.04), 0 0 0 3px rgba(var(--now-glow),.07);} 50%{ box-shadow:0 1px 2px rgba(20,22,26,.04), 0 0 0 5px rgba(var(--now-glow),.13);} }
@media (prefers-reduced-motion:reduce){ .badge.now::before{animation:none;} .lesson-card.is-now{animation:none;} .live-dot{animation:none;} }

.subject{ font-size:17px; font-weight:700; line-height:1.32; margin-bottom:10px; word-wrap:break-word; }
.lesson-bottom{ display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.teacher{ font-size:13.5px; color:var(--text-secondary); font-weight:500; flex:1; min-width:0; line-height:1.4; }
.room-chip{ flex:0 0 auto; font-size:12px; font-weight:700; color:var(--accent); background:var(--accent-soft); padding:5px 10px; border-radius:var(--radius-sm); white-space:nowrap; text-align:right; max-width:40%; line-height:1.35; }

.break-divider{ display:flex; align-items:center; gap:10px; padding:2px 4px; margin:-2px 0; }
.break-divider .line{ flex:1; height:1px; background:var(--border); }
.break-divider .label{ font-size:11.5px; font-weight:600; color:var(--text-tertiary); white-space:nowrap; display:flex; align-items:center; gap:6px; }
.break-divider.lunch .label{ color:var(--next-text); }
.break-divider .label .dur{ color:var(--text-tertiary); font-weight:500; opacity:.8; }
.break-divider.active .line{ background:var(--accent); opacity:.35; }
.break-divider.active .label{ color:var(--accent); }
.break-divider.active.lunch .label{ color:var(--next-text); }
.live-dot{ display:inline-block; width:6px; height:6px; border-radius:50%; background:currentColor; margin-right:2px; vertical-align:middle; animation:livePulse 1.6s ease-in-out infinite; }
@keyframes livePulse{ 0%,100%{opacity:1; transform:scale(1);} 50%{opacity:.4; transform:scale(.75);} }

.day-end-note{ text-align:center; font-size:13px; color:var(--text-tertiary); padding:14px 0 4px; font-weight:500; }
.empty-state{ text-align:center; padding:48px 20px 20px; color:var(--text-secondary); }
.empty-state .emoji{ font-size:34px; margin-bottom:10px; opacity:.7; }
.empty-state .title{ font-size:17px; font-weight:700; margin-bottom:6px; }
.empty-state .desc{ font-size:13.5px; color:var(--text-tertiary); }

.footer-credit{ text-align:center; font-size:12px; color:var(--text-tertiary); padding:10px 0 24px; }

@media (min-width:480px){ .subject{font-size:18px;} .group-name{font-size:21px;} }

/* ---------- import mapping table ---------- */
.map-table-wrap{ overflow-x:auto; border:1px solid var(--border); border-radius:var(--radius-md); margin:14px 0; }
.map-table{ border-collapse:collapse; font-size:12.5px; min-width:100%; }
.map-table th, .map-table td{ border:1px solid var(--border); padding:6px 8px; white-space:pre-line; vertical-align:top; }
.map-table th{ background:var(--chip-bg); position:sticky; top:0; }
.map-table td.col-selected{ background:var(--accent-soft); }
.col-picker{ display:flex; flex-wrap:wrap; gap:8px; margin:10px 0; }
.col-picker label{ display:flex; align-items:center; gap:6px; font-weight:500; font-size:13px; margin:0; background:var(--chip-bg); padding:6px 10px; border-radius:999px; }
.col-picker input{ width:auto; }

/* ---------- Excel-like import editor ---------- */
.import-page h1{font-size:24px;margin:0 0 4px;}
.import-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px;}
.import-heading p{margin:0;color:var(--text-secondary);font-size:13.5px;line-height:1.45;}
.import-step{font-size:12px;font-weight:700;color:var(--text-secondary);background:var(--chip-bg);border:1px solid var(--border);padding:7px 10px;border-radius:999px;white-space:nowrap;}
.import-upload-card{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:center;padding:18px;border:1px solid var(--border);background:var(--card-bg);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);}
.import-upload-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;letter-spacing:.3px;background:var(--accent-soft);color:var(--accent);}
.import-upload-card strong{font-size:16px;}
.import-upload-card p{margin:4px 0 0;color:var(--text-secondary);font-size:13px;line-height:1.45;}
.import-upload-form{grid-column:1 / -1;display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:4px;}
.import-upload-form input[type=file]{position:absolute;left:-9999px;width:1px;height:1px;opacity:0;}
.import-help-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:12px 0 0;}
.import-help-grid>div{padding:11px 12px;border:1px solid var(--border);background:var(--chip-bg);border-radius:var(--radius-md);font-size:12.5px;color:var(--text-secondary);}
.import-help-grid b{color:var(--text-primary);margin-right:4px;}
.import-meta-card{display:grid;grid-template-columns:minmax(220px,360px) 1fr;gap:14px;padding:14px;border:1px solid var(--border);background:var(--card-bg);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);}
.import-meta-main label{display:block;margin:0 0 6px;font-size:12px;font-weight:700;color:var(--text-secondary);}
.import-meta-main input{margin:0;}
.import-meta-note{align-self:end;padding:10px 12px;background:var(--chip-bg);border-radius:var(--radius-md);font-size:12.5px;color:var(--text-secondary);line-height:1.45;}
.role-mini{display:inline-block;padding:2px 6px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:11px;font-weight:700;}
.excel-toolbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;margin:12px 0 8px;border:1px solid var(--border);background:color-mix(in srgb,var(--card-bg) 94%, transparent);backdrop-filter:blur(10px);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);}
.toolbar-group{display:flex;align-items:center;gap:5px;flex-wrap:wrap;}
.toolbar-label{font-size:11px;font-weight:700;color:var(--text-tertiary);margin-right:2px;}
.toolbar-divider{width:1px;height:24px;background:var(--border);}
.map-tool,.pair-tool{appearance:none;border:1px solid var(--border);background:var(--chip-bg);color:var(--text-primary);border-radius:7px;padding:6px 9px;font-size:11.5px;font-weight:650;cursor:pointer;}
.map-tool:hover,.pair-tool:hover{border-color:var(--accent);}
.map-tool.active,.pair-tool.active{background:var(--accent-soft);color:var(--accent);border-color:var(--accent);}
.pair-tool{min-width:30px;text-align:center;padding-inline:7px;}
.pair-tool.clear{font-size:15px;line-height:15px;}
.toolbar-status{flex:1 1 220px;min-width:200px;font-size:11.5px;color:var(--text-secondary);text-align:right;}
.import-legend{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 8px;padding:0 2px;font-size:11px;color:var(--text-secondary);}
.import-legend span{display:flex;align-items:center;gap:5px;}
.legend-dot{width:8px;height:8px;border-radius:50%;display:inline-block;background:var(--border);}
.legend-dot.day{background:#7c3aed}.legend-dot.time{background:#2563eb}.legend-dot.subject{background:#059669}.legend-dot.teacher{background:#d97706}.legend-dot.room{background:#dc2626}.legend-dot.pair{background:#0891b2}
.excel-sheet-wrap{overflow:auto;max-height:68vh;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--card-bg);box-shadow:var(--shadow-sm);}
.excel-sheet{border-collapse:separate;border-spacing:0;min-width:max-content;font-size:12px;}
.excel-sheet th,.excel-sheet td{border-right:1px solid var(--border);border-bottom:1px solid var(--border);}
.excel-sheet thead th{position:sticky;top:0;z-index:8;background:var(--chip-bg);height:42px;min-width:110px;padding:5px 8px;text-align:left;}
.excel-sheet .corner-cell{position:sticky;left:0;z-index:12;min-width:48px;width:48px;text-align:center;}
.excel-sheet .sheet-col-head{cursor:default;user-select:none;}
.excel-sheet .sheet-col-head .col-head-top{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:4px;}
.column-role-select{display:block;width:100%;min-width:96px;border:1px solid var(--border);border-radius:6px;background:var(--card-bg);color:var(--text-primary);font-size:10.5px;font-weight:650;padding:5px 22px 5px 7px;cursor:pointer;}
.column-role-select:focus{outline:2px solid color-mix(in srgb,var(--accent) 35%, transparent);outline-offset:1px;}
.toolbar-hint{font-size:11px;color:var(--text-tertiary);}
.excel-sheet .sheet-col-head:hover{background:var(--accent-soft);}
.col-letter{display:block;font-size:10px;color:var(--text-tertiary);font-weight:800;}
.col-role{display:block;font-size:10px;color:var(--accent);font-weight:800;line-height:12px;min-height:12px;}
.excel-sheet tbody th.sheet-row-head{position:sticky;left:0;z-index:6;background:var(--chip-bg);min-width:48px;width:48px;padding:6px 5px;text-align:center;font-size:10px;color:var(--text-tertiary);font-weight:700;user-select:none;cursor:pointer;}
.excel-sheet tbody tr.pair-marked .sheet-row-head{background:var(--accent-soft);color:var(--accent);}
.excel-sheet td{min-width:110px;max-width:260px;padding:7px 8px;vertical-align:top;white-space:pre-wrap;word-break:break-word;line-height:1.35;cursor:crosshair;}
.excel-sheet td:hover{background:color-mix(in srgb,var(--accent-soft) 40%, transparent);}
.pair-badge{display:block;margin-top:2px;font-size:9px;color:var(--accent);font-weight:800;}
.excel-sheet .role-day{box-shadow:inset 0 -2px 0 #7c3aed;background:color-mix(in srgb,#7c3aed 8%, var(--card-bg));}
.excel-sheet .role-time{box-shadow:inset 0 -2px 0 #2563eb;background:color-mix(in srgb,#2563eb 8%, var(--card-bg));}
.excel-sheet .role-subject{box-shadow:inset 0 -2px 0 #059669;background:color-mix(in srgb,#059669 8%, var(--card-bg));}
.excel-sheet .role-teacher{box-shadow:inset 0 -2px 0 #d97706;background:color-mix(in srgb,#d97706 8%, var(--card-bg));}
.excel-sheet .role-room{box-shadow:inset 0 -2px 0 #dc2626;background:color-mix(in srgb,#dc2626 8%, var(--card-bg));}
.excel-sheet .role-pair_col{box-shadow:inset 0 -2px 0 #0891b2;background:color-mix(in srgb,#0891b2 8%, var(--card-bg));}
.excel-sheet tbody tr.pair-marked td:first-of-type{box-shadow:inset 3px 0 0 var(--accent);}
.excel-sheet thead th:last-child,.excel-sheet tbody td:last-child{border-right:0;}
.import-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding-top:12px;}
.import-summary{font-size:12px;color:var(--text-secondary);}
@media (max-width:760px){
  .import-upload-card{grid-template-columns:1fr;}
  .import-upload-form{grid-column:auto;}
  .import-help-grid{grid-template-columns:1fr 1fr;}
  .import-meta-card{grid-template-columns:1fr;}
  .toolbar-status{text-align:left;flex-basis:100%;}
  .excel-sheet-wrap{max-height:62vh;}
}
@media (max-width:480px){
  .import-help-grid{grid-template-columns:1fr;}
  .import-upload-form .btn{flex:1 1 auto;}
}

/* ---------- специализированный импорт расписаний ---------- */
.import-detected-card{display:grid;grid-template-columns:1.2fr 1fr;gap:12px;padding:15px;border:1px solid var(--border);background:var(--card-bg);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);margin-bottom:12px;}
.detected-main{display:flex;flex-direction:column;gap:5px;}
.detected-main strong{font-size:15px;}
.detected-main p{margin:0;color:var(--text-secondary);font-size:12.5px;line-height:1.45;}
.detected-badge{display:inline-flex;align-self:flex-start;padding:4px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:10px;font-weight:800;}
.detected-note{align-self:center;padding:10px 12px;border-radius:var(--radius-md);background:var(--chip-bg);color:var(--text-secondary);font-size:12px;line-height:1.45;}
.group-picker-card{padding:15px;border:1px solid var(--border);background:var(--card-bg);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);margin-bottom:12px;}
.group-picker-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px;}
.group-picker-head h2{font-size:16px;margin:0 0 3px;}
.group-picker-head p{margin:0;color:var(--text-secondary);font-size:12px;line-height:1.4;}
.group-count{white-space:nowrap;padding:5px 8px;border-radius:999px;background:var(--chip-bg);border:1px solid var(--border);font-size:10px;font-weight:800;color:var(--text-secondary);}
.group-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;}
.group-option{position:relative;min-height:70px;text-align:left;border:1px solid var(--border);background:var(--chip-bg);color:var(--text-primary);border-radius:10px;padding:10px 11px;cursor:pointer;display:flex;flex-direction:column;justify-content:space-between;gap:7px;transition:.15s ease;}
.group-option:hover{border-color:var(--accent);transform:translateY(-1px);}
.group-option.active{background:var(--accent-soft);border-color:var(--accent);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 18%, transparent);}
.group-check{position:absolute;top:8px;right:8px;width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:900;background:transparent;color:transparent;border:1px solid var(--border);}
.group-option.active .group-check{background:var(--accent);border-color:var(--accent);color:#fff;}
.group-name{padding-right:24px;font-size:12.5px;font-weight:800;line-height:1.25;}
.group-cols{font-size:10px;color:var(--text-tertiary);font-weight:700;}
.excel-sheet.specialized .selected-group-col{background:color-mix(in srgb,var(--accent) 14%, var(--card-bg)) !important;box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--accent) 55%, transparent);}
.excel-sheet.specialized thead .selected-group-col{position:sticky;}
@media (max-width:900px){
  .group-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
  .import-detected-card{grid-template-columns:1fr;}
}
@media (max-width:650px){
  .group-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .group-option{min-height:66px;}
}
@media (max-width:420px){
  .group-grid{grid-template-columns:1fr 1fr;gap:6px;}
  .group-name{font-size:11.5px;}
}

/* ---------- обновлённая тема и мобильный вид расписания ---------- */
:root{
  --card-bg:var(--card);
  --shadow-sm:var(--shadow);
}
html{ background:var(--bg); transition:background-color .2s ease; }
body{ transition:background-color .2s ease,color .2s ease; }

.theme-select-wrap{
  display:flex; align-items:center; gap:6px; flex:0 0 auto;
  margin:0; padding:5px 8px 5px 9px;
  border:1px solid var(--border); border-radius:999px;
  background:var(--chip-bg); color:var(--text-secondary);
  box-shadow:0 1px 2px rgba(0,0,0,.06);
}
.theme-icon{font-size:13px; line-height:1; opacity:.9;}
.theme-select{
  width:auto !important; min-width:74px; margin:0; padding:0 14px 0 0 !important;
  border:0 !important; outline:0 !important; background:transparent !important;
  color:var(--text-primary) !important; font-size:11.5px !important; font-weight:700 !important;
  appearance:none; -webkit-appearance:none;
  background-image:linear-gradient(45deg,transparent 50%,var(--text-tertiary) 50%),linear-gradient(135deg,var(--text-tertiary) 50%,transparent 50%) !important;
  background-position:calc(100% - 7px) 50%, calc(100% - 3px) 50% !important;
  background-size:4px 4px,4px 4px !important; background-repeat:no-repeat !important;
}
.theme-select option{ background:var(--card); color:var(--text-primary); }

header.top{
  position:relative; padding:14px 16px 12px;
}
.group-row{ align-items:center; }
.group-name{ font-size:21px; line-height:1.18; max-width:calc(100vw - 150px); }
.group-meta{ font-size:12.5px; }
.week-badge{ margin-top:9px; padding:5px 10px; font-size:10.5px; }

.day-switcher-wrap{
  padding:7px 0 9px;
  border-top:1px solid color-mix(in srgb,var(--border) 70%, transparent);
  border-bottom:1px solid color-mix(in srgb,var(--border) 70%, transparent);
  backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px);
  background:color-mix(in srgb,var(--bg) 88%, transparent);
}
.day-switcher{ gap:7px; padding:3px 16px 4px; }
.day-btn{
  min-width:52px; padding:8px 13px; border-radius:13px;
  font-size:13px; font-weight:700; box-shadow:0 1px 1px rgba(0,0,0,.03);
}
.day-btn.is-today:not(.active){ box-shadow:inset 0 0 0 1px var(--accent); }

main.sched-main{ padding:12px 14px 30px; }
.day-panel{ gap:9px; }
.lesson-card{
  overflow:hidden; padding:14px 14px 13px;
  border-radius:17px;
  background:linear-gradient(180deg, color-mix(in srgb,var(--card) 97%, var(--accent-soft)), var(--card));
  box-shadow:0 2px 4px rgba(0,0,0,.04),0 8px 22px rgba(0,0,0,.045);
}
.lesson-card::before{
  content:""; position:absolute; left:0; top:12px; bottom:12px; width:3px;
  border-radius:0 4px 4px 0; background:color-mix(in srgb,var(--accent) 75%, transparent);
  opacity:.45;
}
.lesson-top{ margin-bottom:10px; }
.lesson-time{ font-size:15.5px; letter-spacing:-.01em; }
.lesson-number{
  padding:5px 8px; font-size:10px; background:var(--chip-bg);
  border:1px solid var(--border); color:var(--text-secondary);
}
.subject{ font-size:18px; line-height:1.25; margin-bottom:8px; letter-spacing:-.015em; }
.teacher{ font-size:13px; }
.room-chip{ padding:6px 10px; min-width:42px; font-size:11.5px; border-radius:9px; text-align:center; }

.break-divider{ gap:8px; padding:3px 2px; margin:0; }
.break-divider .line{ opacity:.7; }
.break-divider .label{
  padding:4px 8px; border-radius:999px; border:1px solid var(--border);
  background:var(--chip-bg); font-size:10.5px; line-height:1.2;
}
.break-divider.lunch .label{ background:var(--next-bg); border-color:var(--next-border); }

.day-end-note{
  margin-top:4px; padding:13px 14px; border:1px dashed var(--border);
  border-radius:14px; background:var(--chip-bg);
}

@media (max-width:480px){
  .app{ max-width:none; }
  header.top{ padding:12px 12px 10px; }
  .group-row{ gap:10px; }
  .group-name{ font-size:20px; max-width:calc(100vw - 136px); }
  .theme-select-wrap{ padding:5px 7px; }
  .theme-select{ min-width:68px; font-size:11px !important; }
  main.sched-main{ padding:10px 10px 26px; }
  .day-switcher{ padding-left:10px; padding-right:10px; }
  .day-btn{ min-width:49px; padding:8px 12px; }
  .lesson-card{ padding:13px 13px 12px; border-radius:16px; }
  .lesson-card::before{ top:11px; bottom:11px; }
  .lesson-top{ align-items:flex-start; }
  .lesson-time{ font-size:15px; }
  .lesson-number{ font-size:9.5px; padding:4px 7px; }
  .subject{ font-size:17px; }
  .lesson-bottom{ align-items:center; }
  .break-divider .label{ font-size:10px; max-width:calc(100vw - 70px); overflow:hidden; text-overflow:ellipsis; }
}

@media (prefers-reduced-motion:reduce){
  html,body{ transition:none; }
}

/* Автоматически определённое начало недели в импортере */
.detected-week-start {
  margin-top: 10px !important;
  color: var(--text-secondary);
}
.detected-week-start b {
  color: var(--text-primary);
}


/* ---------- snrg.maushed.ru / landing ---------- */
html[data-theme="dark"] { color-scheme: dark; }
html[data-theme="light"] { color-scheme: light; }
html, body { min-height: 100%; }

.landing-page {
  min-height:100vh;
  display:flex;
  background:var(--bg);
}
.landing-shell {
  width:min(1120px, 100%);
  margin:0 auto;
  min-height:100vh;
  padding:20px 24px 28px;
  display:flex;
  flex-direction:column;
}
.landing-top {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
}
.landing-brand {
  font-size:17px;
  font-weight:800;
  letter-spacing:-.02em;
}
.landing-brand span { color:var(--accent); }
.landing-login {
  color:var(--text-secondary);
  font-size:14px;
  font-weight:700;
  padding:9px 12px;
  border:1px solid var(--border);
  border-radius:999px;
  background:var(--card);
}
.landing-main {
  margin:auto 0;
  padding: clamp(44px, 11vh, 120px) 0;
}
.landing-main h1 {
  max-width:1100px;
  margin:0;
  font-size:clamp(42px, 7.3vw, 96px);
  line-height:.94;
  letter-spacing:-.055em;
  font-weight:900;
  text-transform:uppercase;
}
.landing-project {
  margin-top:28px;
  color:var(--text-tertiary);
  font-size:14px;
  font-weight:600;
}
.landing-project a { color:var(--text-primary); }

/* ---------- надёжный переключатель темы для iPhone/Safari ---------- */
.theme-picker {
  display:flex;
  gap:3px;
  padding:3px;
  border:1px solid var(--border);
  border-radius:13px;
  background:var(--chip-bg);
  flex:0 0 auto;
  -webkit-user-select:none;
  user-select:none;
}
.theme-choice {
  appearance:none;
  -webkit-appearance:none;
  border:0;
  background:transparent;
  color:var(--text-secondary);
  border-radius:10px;
  padding:7px 9px;
  min-height:30px;
  font:700 10.5px/1 -apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,sans-serif;
  white-space:nowrap;
  cursor:pointer;
  -webkit-tap-highlight-color:transparent;
  touch-action:manipulation;
}
.theme-choice.active {
  background:var(--card);
  color:var(--text-primary);
  box-shadow:0 1px 2px rgba(0,0,0,.10);
}
.theme-choice:active { transform:scale(.97); }

.week-info {
  display:flex;
  align-items:center;
  gap:7px;
  flex-wrap:wrap;
  margin-top:9px;
}
.week-info .week-badge { margin-top:0; }
.week-mode {
  color:var(--text-tertiary);
  font-size:10.5px;
  font-weight:600;
}

@media (max-width:520px){
  .landing-shell { padding:14px 16px 20px; }
  .landing-main { padding: 38px 0 70px; }
  .landing-main h1 { font-size: clamp(37px, 11vw, 66px); line-height:.92; }
  .landing-project { margin-top:22px; font-size:13px; }
}
@media (max-width:420px){
  .theme-picker { gap:2px; padding:2px; }
  .theme-choice { padding:6px 7px; font-size:9.5px; }
  .group-name { max-width:calc(100vw - 154px); }
}
