/* Строгая палитра в стиле СевГУ. Светлая + тёмная темы. Минимум скруглений. */
:root {
  --navy: #1f3a5f;
  --navy-dark: #162944;
  --steel: #2f5b8f;
  --bg: #eef0f3;
  --card: #ffffff;
  --line: #d4d9e1;
  --tx: #232a35;
  --muted: #68727f;
  --hl: #fff4d6;
  --hl-line: #b89a25;
  --sg: #e8eef5;
  --sg1-bg: #e3ebf5; --sg1-line: #9db4d0; --sg1-tx: #274e7d;
  --sg2-bg: #e2efe9; --sg2-line: #9dc2b2; --sg2-tx: #2c5f50;
  --input: #ffffff;
  --r: 3px;
  --r-s: 2px;
}
html[data-theme="dark"] {
  --navy: #101c30;
  --navy-dark: #0b141f;
  --steel: #4d7cb5;
  --bg: #0f141b;
  --card: #182030;
  --line: #2a3547;
  --tx: #dbe3ee;
  --muted: #8d99ac;
  --hl: #2e2a10;
  --hl-line: #8a7520;
  --sg: #22344d;
  --sg1-bg: #22344d; --sg1-line: #3d5a85; --sg1-tx: #a9c4e8;
  --sg2-bg: #1d332c; --sg2-line: #3a6a5c; --sg2-tx: #a4cfc0;
  --input: #101823;
}
* { box-sizing: border-box; }
body {
  margin: 0; background: var(--bg); color: var(--tx);
  font: 15px/1.45 "Segoe UI", Roboto, Arial, sans-serif;
}
.wrap { max-width: 1080px; margin: 0 auto; padding: 0 12px; }

.topbar { background: var(--navy); color: #fff; border-bottom: 2px solid var(--hl-line); }
.topbar-in { display: flex; justify-content: space-between; align-items: center; padding: 10px 12px; gap: 8px; flex-wrap: wrap; }
.brand { display: flex; align-items: center; gap: 10px; }
.brand-logo { display: block; height: 40px; width: auto; }
.brand-tx { display: flex; flex-direction: column; }
.brand-t1 { font-weight: 700; font-size: 17px; }
.brand-t2 { font-size: 12px; opacity: .8; }
.top-actions { display: flex; gap: 8px; flex-wrap: wrap; }

.btn {
  background: var(--steel); color: #fff; border: 1px solid var(--steel);
  border-radius: var(--r); padding: 7px 14px; font-size: 14px; cursor: pointer;
}
.btn:hover { background: var(--navy-dark); border-color: var(--navy-dark); }
.btn.ghost { background: transparent; border-color: #8fa6c2; }
.btn.ghost:hover { background: var(--navy-dark); border-color: var(--navy-dark); }
.btn.sq { padding: 7px 11px; font-size: 16px; line-height: 1; }
.btn:disabled { opacity: .5; cursor: default; }
.btn.invisible { visibility: hidden; }

main.wrap { padding-top: 14px; padding-bottom: 30px; }
.card-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }
.card-title { font-weight: 700; font-size: 16px; }
.icon-btn {
  background: transparent; border: 1px solid var(--line); border-radius: var(--r);
  padding: 6px 8px; cursor: pointer; color: var(--tx); display: inline-flex; align-items: center;
}
.icon-btn:hover { border-color: var(--steel); color: var(--steel); }
.icon-btn svg { display: block; }
.mrow { margin-bottom: 14px; }
.mrow:last-child { margin-bottom: 0; }
.mrow .lbl { display: block; margin-bottom: 6px; }
.card { background: var(--card); border: 1px solid var(--line); border-radius: var(--r); padding: 12px 14px; }
.controls { margin-bottom: 14px; }
.ctl-row { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 10px; align-items: flex-end; }
.ctl-row:last-child { margin-bottom: 0; }
.sect { border-top: 1px solid var(--line); padding-top: 10px; margin-top: 10px; }
.sect-t { font-size: 11px; text-transform: uppercase; letter-spacing: .07em; color: var(--muted); margin-bottom: 8px; }
.sect .ctl-row { margin-bottom: 0; }
.ctl { display: flex; flex-direction: column; gap: 4px; min-width: 170px; }
.ctl.grow { flex: 1; min-width: 220px; }
.ctl label, .lbl { font-size: 12px; color: var(--muted); }
select {
  border: 1px solid var(--line); border-radius: var(--r); padding: 7px 8px;
  font-size: 14px; background: var(--input); color: var(--tx); max-width: 100%;
}
.dropdown { position: relative; }
.dd-btn {
  width: 100%; border: 1px solid var(--line); border-radius: var(--r); padding: 7px 8px;
  font-size: 14px; background: var(--input); color: var(--tx); cursor: pointer;
  display: flex; justify-content: space-between; align-items: center; gap: 8px; text-align: left;
}
.dd-btn::after { content: "▾"; color: var(--muted); }
.dd-btn:disabled { opacity: .6; cursor: default; }
.dd-panel {
  position: absolute; top: calc(100% + 4px); left: 0; right: 0; background: var(--card);
  border: 1px solid var(--line); border-radius: var(--r); max-height: 220px; overflow-y: auto;
  z-index: 40; padding: 6px;
}
.dd-panel.hidden { display: none; }
.dd-opt { display: flex; align-items: center; gap: 8px; padding: 6px 8px; font-size: 14px; cursor: pointer; border-radius: var(--r-s); }
.dd-opt:hover { background: var(--bg); }
#schedule { transition: opacity .18s ease; }
#schedule.switching { opacity: 0; }
.week-nav { display: flex; gap: 6px; }
.week-nav select { flex: 1; }
.chk { display: inline-flex; align-items: center; gap: 6px; font-size: 13.5px; color: var(--tx); margin-right: 12px; cursor: pointer; }
.checks { flex-direction: row; flex-wrap: wrap; align-items: center; }
.seg { display: inline-flex; }
.seg button {
  border: 1px solid var(--line); background: var(--bg); padding: 7px 10px;
  font-size: 13px; cursor: pointer; color: var(--tx);
}
.seg button:first-child { border-radius: var(--r) 0 0 var(--r); }
.seg button:last-child { border-radius: 0 var(--r) var(--r) 0; }
.seg button.on { background: var(--navy); border-color: var(--navy); color: #fff; }
html[data-theme="dark"] .seg button.on { border-color: var(--steel); }
.status { margin: 4px 0 0; font-size: 12.5px; color: var(--muted); font-style: italic; }
.status .err { color: #c05555; font-style: normal; }

.day { background: var(--card); border: 1px solid var(--line); border-radius: var(--r); margin-bottom: 12px; overflow: hidden; }
.day.today { border-color: var(--hl-line); }
.day-head {
  background: var(--navy); color: #fff; padding: 8px 14px;
  display: flex; justify-content: space-between; align-items: baseline;
}
.day-head b { font-size: 16px; }
.day-head span { font-size: 13px; opacity: .85; }
.day.today .day-head { background: #5c4d12; }
html[data-theme="dark"] .day.today .day-head { background: #4a3f0e; }
.tbl-wrap { overflow-x: auto; }
table.tbl { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 14px; table-layout: fixed; }
.tbl th, .tbl td { border-top: 1px solid var(--line); padding: 7px 10px; vertical-align: top; text-align: left; overflow-wrap: anywhere; }
.tbl th + th, .tbl td + td { border-left: 1px solid var(--line); }
.tbl thead th { background: var(--bg); color: var(--muted); font-size: 12px; font-weight: 600; border-top: 0; }
.tbl thead th:nth-child(1), .tbl td.num { width: 36px; text-align: center; color: var(--muted); }
.tbl thead th:nth-child(2), .tbl td.time { width: 96px; text-align: center; white-space: nowrap; }
.tbl thead th:nth-child(4), .tbl td.room { width: 108px; }
.tbl thead th:nth-child(5), .tbl td.type { width: 64px; text-align: center; }
.tbl.hide-num th:nth-child(1), .tbl.hide-num td.num,
.tbl.hide-time th:nth-child(2), .tbl.hide-time td.time,
.tbl.hide-room th:nth-child(4), .tbl.hide-room td.room,
.tbl.hide-type th:nth-child(5), .tbl.hide-type td.type { display: none; }

.opt { padding: 3px 0; }
.opt + .opt { border-top: 1px dashed var(--line); }
.opt .subj { font-weight: 600; }
.opt .teach { color: var(--muted); font-size: 13px; }
.opt span.sgb {
  display: inline-block; font-size: 11px; font-weight: 600; color: var(--muted);
  border: 1px solid var(--line); border-radius: var(--r-s); padding: 0 5px;
  margin: 0 6px 0 0; background: transparent; white-space: nowrap; vertical-align: baseline;
}
.opt.labeled { display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: 8px; align-items: start; }
.opt.labeled > .sidelabels { display: flex; flex-direction: column; gap: 4px; align-items: flex-start; }
.opt.labeled > .bod { min-width: 0; }
.tag {
  display: inline-block; font-size: 11px; color: var(--muted);
  border: 1px solid var(--line); border-radius: var(--r-s); padding: 0 5px; margin: 2px 4px 0 0; white-space: nowrap;
}
.opt.mine { background: var(--hl); margin: 0 -6px; padding: 3px 6px; border-radius: var(--r-s); }
.empty { color: var(--muted); opacity: .6; }
.room-link { background: none; border: 0; padding: 0; color: var(--steel); cursor: pointer; font: inherit; text-align: left; text-decoration: underline dotted; }
.room-link:hover { color: var(--tx); }
.foot { padding-bottom: 26px; }
.foot-card {
  background: var(--card); border: 1px solid var(--line); border-radius: var(--r);
  padding: 10px 14px; display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
}
.foot-t { font-weight: 700; font-size: 14px; }
.foot-links { display: inline-flex; gap: 8px; flex-wrap: wrap; flex: 1; }
.foot-v { color: var(--muted); font-size: 12px; }
.btn.sm { padding: 4px 10px; font-size: 13px; text-decoration: none; display: inline-block; }

.modal { position: fixed; inset: 0; background: rgba(10,15,22,.6); display: flex; align-items: center; justify-content: center; z-index: 50; padding: 12px; }
.modal.hidden { display: none; }
.modal-box { background: var(--card); color: var(--tx); border: 1px solid var(--line); border-radius: var(--r); padding: 14px 16px; min-width: 300px; max-width: 560px; width: 100%; }
.modal-box p { margin: 6px 0; }
.modal-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }

@media (max-width: 640px) {
  body { font-size: 14px; }
  table.tbl { font-size: 13px; min-width: 620px; }
  .week-nav { flex-wrap: wrap; }
  .week-nav select { flex: 1 1 170px; min-width: 0; }
  #btn-now { flex: 1 1 auto; }
  .topbar-in { padding: 8px 10px; }
}
