/* =====================================================================
   Тема «Cyberpunk 2077»
   Тёмная — Найт-Сити после дождя: фиолетово-чёрный, грани с градиентом голубой→маджента.
   Светлая — дневной бетон и печатный лист: чернильные контуры, жёсткие тени, жёлтый маркер.
   Общая форма: «осколки» со срезанными углами. Неоновый акцент: [data-neon].
   ===================================================================== */

:root[data-theme="cyberpunk"] {
  --mono: ui-monospace, "SF Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace;
  --r: 2px;
}

/* ---------- ТЁМНАЯ ---------- */
:root[data-theme="cyberpunk"][data-mode="dark"] {
  --bg: #07050f;
  --card: #120c24;
  --ink: #e9f2ff;
  --muted: #9b94c4;
  --line: rgba(0, 240, 255, .16);
  --fill: rgba(155, 148, 196, .15);
  --edge: linear-gradient(135deg, rgba(0, 240, 255, .75), rgba(255, 46, 151, .6));
  --face: linear-gradient(160deg, #1b1034 0%, #0e0920 100%);
  --nz: #fcee0a; --nz-ink: #0b0a10; --nz-fg: #fcee0a;
  --accent: var(--nz); --accent-ink: var(--nz-ink); --accent-fg: var(--nz-fg);
  --accent-soft: color-mix(in srgb, var(--nz) 15%, transparent);
  --good: #7cff4f; --warn: #ffb000; --bad: #ff2a5f;
  --c-lecture: #00e5ff; --c-practice: #ff2e97; --c-lab: #ff8a1f; --c-other: #9b94c4;
  --tc-mix: #fff; --tc-keep: 94%;
  --shadow: none;
  color-scheme: dark;
}
:root[data-theme="cyberpunk"][data-mode="dark"][data-neon="cyan"]    { --nz: #00f0ff; --nz-ink: #021418; --nz-fg: #00f0ff; }
:root[data-theme="cyberpunk"][data-mode="dark"][data-neon="magenta"] { --nz: #ff2e97; --nz-ink: #14040c; --nz-fg: #ff5cae; }
:root[data-theme="cyberpunk"][data-mode="dark"][data-neon="red"]     { --nz: #ff2a5f; --nz-ink: #12050a; --nz-fg: #ff5c82; }

/* ---------- СВЕТЛАЯ ---------- */
:root[data-theme="cyberpunk"][data-mode="light"] {
  --bg: #e8e5f2;
  --card: #fbfaff;
  --ink: #120f2b;
  --muted: #5b557f;
  --line: rgba(18, 15, 43, .2);
  --fill: rgba(18, 15, 43, .07);
  --edge: #120f2b;
  --face: #fbfaff;
  --nz: #fcee0a; --nz-ink: #120f2b; --nz-fg: #120f2b;
  --accent: var(--nz); --accent-ink: var(--nz-ink); --accent-fg: var(--nz-fg);
  --accent-soft: color-mix(in srgb, var(--nz) 38%, transparent);
  --good: #0a9d5a; --warn: #c76a00; --bad: #d4002f;
  --c-lecture: #009db8; --c-practice: #e0147f; --c-lab: #e46400; --c-other: #6b6590;
  --tc-mix: #000; --tc-keep: 82%;
  --shadow: none;
}
:root[data-theme="cyberpunk"][data-mode="light"][data-neon="cyan"]    { --nz: #00e5ff; --nz-ink: #07202a; --nz-fg: #00798a; }
:root[data-theme="cyberpunk"][data-mode="light"][data-neon="magenta"] { --nz: #ff2e97; --nz-ink: #12102a; --nz-fg: #c4006b; }
:root[data-theme="cyberpunk"][data-mode="light"][data-neon="red"]     { --nz: #ff2a4d; --nz-ink: #12102a; --nz-fg: #c70031; }

/* ---------- фон ---------- */
:root[data-theme="cyberpunk"] body::before {
  content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none;
}
:root[data-theme="cyberpunk"][data-mode="dark"] body::before {
  background:
    radial-gradient(90% 52% at 12% -8%, rgba(255, 46, 151, .30), transparent 62%),
    radial-gradient(70% 44% at 108% 2%, rgba(0, 240, 255, .20), transparent 60%),
    radial-gradient(120% 40% at 50% 114%, rgba(124, 60, 255, .24), transparent 62%),
    repeating-linear-gradient(0deg, rgba(0, 240, 255, .035) 0 1px, transparent 1px 30px),
    repeating-linear-gradient(90deg, rgba(0, 240, 255, .035) 0 1px, transparent 1px 30px);
}
:root[data-theme="cyberpunk"][data-mode="light"] body::before {
  background:
    radial-gradient(80% 44% at 0% -6%, rgba(252, 238, 10, .6), transparent 60%),
    radial-gradient(70% 40% at 104% 0%, rgba(0, 229, 255, .30), transparent 60%),
    repeating-linear-gradient(135deg, rgba(18, 15, 43, .05) 0 1px, transparent 1px 9px);
}

/* ---------- шапка ---------- */
:root[data-theme="cyberpunk"] .top {
  background: color-mix(in srgb, var(--bg) 78%, transparent);
  backdrop-filter: blur(14px) saturate(1.4); -webkit-backdrop-filter: blur(14px) saturate(1.4);
}
:root[data-theme="cyberpunk"] .week-title b {
  font-size: 25px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase;
}
:root[data-theme="cyberpunk"] .week-title small {
  font: 600 11.5px/1.3 var(--mono); letter-spacing: .05em; text-transform: uppercase; margin-top: 3px;
}
:root[data-theme="cyberpunk"] .large {
  font-size: 30px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase;
}
:root[data-theme="cyberpunk"] .large::after {
  content: ""; display: block; width: 72px; height: 4px; margin-top: 9px;
  background: linear-gradient(90deg, var(--accent) 0 62%, transparent 62% 70%, var(--accent) 70% 84%, transparent 84% 92%, var(--accent) 92%);
}
:root[data-theme="cyberpunk"] .dayhead h2 { font-size: 18px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; }
:root[data-theme="cyberpunk"] .dayhead span { font: 600 12.5px var(--mono); letter-spacing: .04em; text-transform: uppercase; }
:root[data-theme="cyberpunk"] .sect {
  display: flex; align-items: center; gap: 8px;
  font: 700 11.5px var(--mono); letter-spacing: .14em; text-transform: uppercase;
}
:root[data-theme="cyberpunk"] .sect::before { content: ""; width: 7px; height: 7px; background: var(--accent); flex: none; }
:root[data-theme="cyberpunk"] .sect.bad::before { background: var(--bad); }
:root[data-theme="cyberpunk"] .foot { font-size: 12.5px; }

/* ---------- срезанные углы: дни, кнопки-стрелки ---------- */
:root[data-theme="cyberpunk"] :is(.day, .round) {
  position: relative; border-radius: 0; box-shadow: none; background: var(--edge);
  clip-path: polygon(9px 0, 100% 0, 100% calc(100% - 9px), calc(100% - 9px) 100%, 0 100%, 0 9px);
}
:root[data-theme="cyberpunk"] :is(.day, .round)::before {
  content: ""; position: absolute; inset: 1.2px; z-index: 0; background: var(--face);
  clip-path: polygon(8.3px 0, 100% 0, 100% calc(100% - 8.3px), calc(100% - 8.3px) 100%, 0 100%, 0 8.3px);
}
:root[data-theme="cyberpunk"][data-mode="light"] :is(.day, .round)::before { inset: 1.5px; }
:root[data-theme="cyberpunk"] :is(.day, .round) > :not(i) { position: relative; z-index: 1; }
:root[data-theme="cyberpunk"] .day i { z-index: 1; border-radius: 0; width: 5px; height: 5px; margin-left: -2.5px; }
:root[data-theme="cyberpunk"] .day span { font: 600 10.5px var(--mono); letter-spacing: .06em; text-transform: uppercase; }
:root[data-theme="cyberpunk"] .day b { font: 700 17px var(--mono); }
:root[data-theme="cyberpunk"] .day.on { background: var(--accent); }
:root[data-theme="cyberpunk"] .day.on::before { background: var(--accent); }
:root[data-theme="cyberpunk"] .day.on span, :root[data-theme="cyberpunk"] .day.on b { color: var(--accent-ink); }
:root[data-theme="cyberpunk"] .day.today b { text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 3px; }
:root[data-theme="cyberpunk"] .round { color: var(--accent-fg); }

/* ---------- карточка пары: «осколок» ---------- */
:root[data-theme="cyberpunk"] .shard { margin-bottom: 13px; }
:root[data-theme="cyberpunk"] .lesson {
  margin: 0; border-radius: 0; box-shadow: none; padding: 15px 16px; gap: 14px;
  background: var(--edge);
  clip-path: polygon(0 0, calc(100% - 16px) 0, 100% 16px, 100% 100%, 16px 100%, 0 calc(100% - 16px));
}
:root[data-theme="cyberpunk"] .lesson::before {
  content: ""; position: absolute; inset: 1.5px; z-index: 0; background: var(--face); pointer-events: none;
  clip-path: polygon(0 0, calc(100% - 15.1px) 0, 100% 15.1px, 100% 100%, 15.1px 100%, 0 calc(100% - 15.1px));
}
:root[data-theme="cyberpunk"] .lesson > * { position: relative; z-index: 1; }
:root[data-theme="cyberpunk"] .lt { width: 52px; }
:root[data-theme="cyberpunk"] .lt b { font: 800 19px/1.1 var(--mono); letter-spacing: -.02em; }
:root[data-theme="cyberpunk"] .lt span { font: 500 12.5px var(--mono); }
:root[data-theme="cyberpunk"] .bar { width: 3px; border-radius: 0; background: var(--tc, var(--c-other)); }
:root[data-theme="cyberpunk"][data-mode="dark"] .bar { box-shadow: 0 0 10px 1px var(--tc, var(--c-other)); }
:root[data-theme="cyberpunk"][data-mode="light"] .bar { width: 5px; }
:root[data-theme="cyberpunk"] .lb h3 { font-size: 16.5px; font-weight: 700; letter-spacing: .01em; }
:root[data-theme="cyberpunk"] .meta { font-size: 13.5px; }

:root[data-theme="cyberpunk"] .chip {
  border-radius: 0; font: 700 11px/1 var(--mono); letter-spacing: .04em; text-transform: uppercase;
  padding: 5px 9px 5px 7px;
  clip-path: polygon(0 0, calc(100% - 6px) 0, 100% 6px, 100% 100%, 6px 100%, 0 calc(100% - 6px));
}
:root[data-theme="cyberpunk"] .chip.type { background: color-mix(in srgb, var(--tc, var(--c-other)) 17%, transparent); }
:root[data-theme="cyberpunk"][data-mode="light"] .chip.type { background: color-mix(in srgb, var(--tc, var(--c-other)) 18%, #fff); }
:root[data-theme="cyberpunk"] .note-line { border-radius: 0; border-left: 3px solid var(--warn); }

/* осколок: свечение (тёмная) / жёсткая тень (светлая) */
:root[data-theme="cyberpunk"][data-mode="dark"] .shard {
  filter: drop-shadow(0 0 12px rgba(0, 240, 255, .10)) drop-shadow(0 8px 14px rgba(0, 0, 0, .55));
}
:root[data-theme="cyberpunk"][data-mode="light"] .shard { filter: drop-shadow(4px 4px 0 var(--ink)); }
:root[data-theme="cyberpunk"] .shard:has(.lesson.past) { opacity: .5; }
:root[data-theme="cyberpunk"] .lesson.past { opacity: 1; }
:root[data-theme="cyberpunk"] .lesson.now { box-shadow: none; background: var(--accent); }
:root[data-theme="cyberpunk"] .lesson.now::before { background: var(--face); }

/* текущая пара: хроматическое смещение (тёмная) / цветная тень (светлая) */
:root[data-theme="cyberpunk"][data-mode="dark"] .shard:has(.lesson.now) {
  filter: drop-shadow(-2.5px 0 0 rgba(0, 240, 255, .85)) drop-shadow(2.5px 0 0 rgba(255, 46, 151, .85)) drop-shadow(0 0 16px color-mix(in srgb, var(--accent) 45%, transparent));
}
:root[data-theme="cyberpunk"][data-mode="light"] .shard:has(.lesson.now) { filter: drop-shadow(1.5px 1.5px 0 var(--ink)) drop-shadow(5px 5px 0 var(--accent)); }
:root[data-theme="cyberpunk"][data-mode="light"] .lesson.now { background: var(--edge); }
:root[data-theme="cyberpunk"][data-mode="light"] .lesson.now .lt b {
  background: var(--accent); color: var(--accent-ink); padding: 1px 4px; margin: -1px -4px 2px; display: inline-block;
}
:root[data-theme="cyberpunk"] .chip.live { clip-path: polygon(0 0, calc(100% - 6px) 0, 100% 6px, 100% 100%, 6px 100%, 0 calc(100% - 6px)); }
:root[data-theme="cyberpunk"] .chip.live::before { border-radius: 0; }

/* единственное самопроизвольное движение: редкая «помеха» на текущей паре */
@keyframes cp-glitch {
  0%, 91%, 100% { transform: none; }
  92% { transform: translate(-3px, 0) skewX(-3deg); }
  94% { transform: translate(3px, 0) skewX(2deg); }
  96% { transform: translate(-1px, 0); }
  98% { transform: translate(1px, 0); }
}
@media (prefers-reduced-motion: no-preference) {
  :root[data-theme="cyberpunk"][data-fx="on"] .shard:has(.lesson.now) { animation: cp-glitch 7s steps(1, end) infinite; }
}

/* ---------- кнопки ---------- */
:root[data-theme="cyberpunk"] .btn {
  border-radius: 0; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; font-size: 14px;
  clip-path: polygon(10px 0, 100% 0, 100% calc(100% - 10px), calc(100% - 10px) 100%, 0 100%, 0 10px);
}
:root[data-theme="cyberpunk"] .btn.ghost { background: transparent; box-shadow: inset 0 0 0 1.5px var(--accent-fg); color: var(--accent-fg); }
:root[data-theme="cyberpunk"] .pill {
  border-radius: 0; background: transparent; box-shadow: inset 0 0 0 1.5px var(--accent-fg); color: var(--accent-fg);
  font: 700 12.5px var(--mono); letter-spacing: .06em; text-transform: uppercase;
  clip-path: polygon(8px 0, 100% 0, 100% calc(100% - 8px), calc(100% - 8px) 100%, 0 100%, 0 8px);
}
:root[data-theme="cyberpunk"] .fab {
  border-radius: 0; background: var(--accent); box-shadow: none;
  clip-path: polygon(14px 0, 100% 0, 100% calc(100% - 14px), calc(100% - 14px) 100%, 0 100%, 0 14px);
}

/* ---------- списки настроек: рамка и «прицельные» уголки ---------- */
:root[data-theme="cyberpunk"] .list { position: relative; border-radius: 0; box-shadow: none; border: 1px solid transparent; }
:root[data-theme="cyberpunk"][data-mode="dark"] .list {
  background: linear-gradient(160deg, #1b1034, #0e0920) padding-box, var(--edge) border-box;
}
:root[data-theme="cyberpunk"][data-mode="light"] .list { border: 1.5px solid var(--ink); box-shadow: 4px 4px 0 var(--ink); }
:root[data-theme="cyberpunk"] .list::before, :root[data-theme="cyberpunk"] .list::after {
  content: ""; position: absolute; width: 14px; height: 14px; pointer-events: none; z-index: 2; border: 0 solid var(--accent);
}
:root[data-theme="cyberpunk"] .list::before { left: 0; top: 0; border-width: 3px 0 0 3px; }
:root[data-theme="cyberpunk"] .list::after { right: 0; bottom: 0; border-width: 0 3px 3px 0; }
:root[data-theme="cyberpunk"] .badge { border-radius: 0; clip-path: polygon(6px 0, 100% 0, 100% calc(100% - 6px), calc(100% - 6px) 100%, 0 100%, 0 6px); }
:root[data-theme="cyberpunk"] .profile b { text-transform: uppercase; letter-spacing: .04em; }
:root[data-theme="cyberpunk"] .val { font-family: var(--mono); font-size: 14.5px; }
:root[data-theme="cyberpunk"] .row input[type="date"], :root[data-theme="cyberpunk"] .row input[type="url"] { border-radius: 0; font-family: var(--mono); }
:root[data-theme="cyberpunk"] .soon { border-radius: 0; font-family: var(--mono); text-transform: uppercase; letter-spacing: .06em; }

/* переключатель режима и поля */
:root[data-theme="cyberpunk"] .seg { border-radius: 0; padding: 3px; gap: 3px; }
:root[data-theme="cyberpunk"] .seg button { border-radius: 0; font: 700 12px var(--mono); letter-spacing: .05em; text-transform: uppercase; }
:root[data-theme="cyberpunk"] .seg button.on { background: var(--accent); color: var(--accent-ink); box-shadow: none; }
:root[data-theme="cyberpunk"] .field input, :root[data-theme="cyberpunk"] .field textarea, :root[data-theme="cyberpunk"] .sheet textarea { border-radius: 0; }
:root[data-theme="cyberpunk"] .field input:focus, :root[data-theme="cyberpunk"] .field textarea:focus, :root[data-theme="cyberpunk"] .sheet textarea:focus {
  box-shadow: inset 0 -2px 0 var(--accent-fg);
}
:root[data-theme="cyberpunk"] .sw i { border-radius: 0; clip-path: polygon(24% 4%, 76% 4%, 100% 50%, 76% 96%, 24% 96%, 0 50%); box-shadow: none; }
:root[data-theme="cyberpunk"] .sw.on i { box-shadow: none; transform: scale(1.14); }
:root[data-theme="cyberpunk"] .sw.on { color: var(--ink); font-weight: 700; }
:root[data-theme="cyberpunk"] .neons { grid-template-columns: repeat(4, 1fr); }

/* ---------- задания ---------- */
:root[data-theme="cyberpunk"] .ck { border-radius: 3px; border-width: 1.8px; width: 23px; height: 23px; }
:root[data-theme="cyberpunk"] .hwrow .body small.bad { font-family: var(--mono); }
:root[data-theme="cyberpunk"] .empty b { text-transform: uppercase; letter-spacing: .05em; }
:root[data-theme="cyberpunk"][data-mode="dark"] .empty .ic { color: var(--accent); filter: drop-shadow(0 0 8px var(--accent)); }
:root[data-theme="cyberpunk"] .err { border-radius: 0; border-left: 3px solid var(--bad); }

/* ---------- нижняя панель ---------- */
:root[data-theme="cyberpunk"] .tabs { background: color-mix(in srgb, var(--bg) 86%, transparent); border-top: 0; }
:root[data-theme="cyberpunk"] .tabs::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 1px; }
:root[data-theme="cyberpunk"][data-mode="dark"] .tabs::before { background: linear-gradient(90deg, transparent, #00f0ff 30%, #ff2e97 70%, transparent); }
:root[data-theme="cyberpunk"][data-mode="light"] .tabs::before { height: 2px; background: var(--ink); }
:root[data-theme="cyberpunk"] .tabs button { font: 700 10.5px var(--mono); letter-spacing: .05em; text-transform: uppercase; }
:root[data-theme="cyberpunk"] .tabs button .ic svg { stroke-width: 1.6; }
:root[data-theme="cyberpunk"] .tabs button.on::before {
  content: ""; position: absolute; top: -6px; left: 50%; width: 28px; height: 3px; margin-left: -14px; background: var(--accent);
}
:root[data-theme="cyberpunk"][data-mode="dark"] .tabs button.on::before { box-shadow: 0 0 12px 1px var(--accent); }
:root[data-theme="cyberpunk"][data-mode="dark"] .tabs button.on .ic { filter: drop-shadow(0 0 5px var(--accent-fg)); }
:root[data-theme="cyberpunk"] .tabs i { border-radius: 0; }

/* ---------- шторка ---------- */
:root[data-theme="cyberpunk"] .sheet {
  border-radius: 0; background: var(--bg);
  clip-path: polygon(0 20px, 20px 0, calc(100% - 20px) 0, 100% 20px, 100% 100%, 0 100%);
}
:root[data-theme="cyberpunk"][data-mode="dark"] .sheet { background: #0d0819; }
:root[data-theme="cyberpunk"] .sheet::before {
  content: ""; display: block; height: 3px; margin: -10px -16px 12px;
  background: linear-gradient(90deg, var(--accent), #00f0ff 55%, #ff2e97);
}
:root[data-theme="cyberpunk"] .sheet .grab { display: none; }
:root[data-theme="cyberpunk"] .sheet h2 { text-transform: uppercase; letter-spacing: .03em; }
:root[data-theme="cyberpunk"] .sheet .sub { font-family: var(--mono); font-size: 13px; }
