/
s.homyakov
/
dev2harness
Обзор
Документация
Войти
/
s.homyakov
/
dev2harness
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
src/styles.css
1 572 строки
26 KB
Sergey Homyakov
Add miniproject, cheatsheet, course UI, GitVerse CI gate
06 авг 2026, 10:29
06 авг 2026, 10:29
e967fe6
Код
Авторство
О чём код?
:root { color-scheme: dark; --bg: #090a0f; --bg-2: #0f121c; --surface: #161923; --surface-2: #202434; --line: #2c3346; --text: #f4f1e8; --muted: #a7adbd; --soft: #747d92; --accent: #ff7a45; --accent-2: #f6b15d; --cyan: #66d9e8; --green: #65d88a; --yellow: #f4d35e; --pink: #e67ab3; --danger: #ff5f70; --shadow: 0 22px 80px rgb(0 0 0 / 45%); --mono: "SFMono-Regular", "Cascadia Code", "JetBrains Mono", Menlo, Consolas, monospace; --sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; } * { box-sizing: border-box; } html { background: var(--bg); } body { margin: 0; min-width: 320px; min-height: 100vh; background: radial-gradient(circle at 18% 0%, rgb(102 217 232 / 12%), transparent 28rem), radial-gradient(circle at 85% 8%, rgb(230 122 179 / 10%), transparent 24rem), linear-gradient(180deg, #0b0d13 0%, var(--bg) 55%, #080910 100%); color: var(--text); font-family: var(--sans); } button, input, textarea, select { font: inherit; } button { color: inherit; } button:disabled { cursor: not-allowed; opacity: 0.48; } .app-shell { min-height: 100vh; padding: 1rem; } .topbar { position: sticky; top: 1rem; z-index: 20; display: grid; grid-template-columns: minmax(14rem, 1fr) auto minmax(16rem, 1fr); align-items: center; gap: 1rem; max-width: 1180px; margin: 0 auto 1rem; padding: 0.7rem; border: 1px solid rgb(255 255 255 / 8%); border-radius: 8px; background: rgb(12 14 21 / 82%); box-shadow: 0 16px 50px rgb(0 0 0 / 25%); backdrop-filter: blur(18px); } .brand { display: inline-flex; align-items: center; gap: 0.75rem; min-width: 0; border: 0; background: transparent; text-align: left; cursor: pointer; } .brand strong, .brand small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .brand strong { font-family: var(--mono); font-size: 0.98rem; } .brand small { color: var(--muted); font-size: 0.72rem; } .brand-mark { display: grid; flex: 0 0 auto; width: 2.6rem; height: 2.6rem; place-items: center; border: 1px solid rgb(255 122 69 / 45%); border-radius: 8px; background: linear-gradient(135deg, rgb(255 122 69 / 22%), rgb(102 217 232 / 12%)); color: var(--accent-2); font-family: var(--mono); font-size: 0.9rem; font-weight: 800; } .main-nav { display: flex; align-items: center; justify-content: center; gap: 0.35rem; } .main-nav button, .ghost-button, .icon-button, .icon-text-button { border: 1px solid rgb(255 255 255 / 9%); border-radius: 8px; background: rgb(255 255 255 / 4%); color: var(--muted); cursor: pointer; transition: transform 160ms ease, border-color 160ms ease, background 160ms ease, color 160ms ease; } .main-nav button { min-height: 2.3rem; padding: 0 0.8rem; font-size: 0.86rem; } .main-nav button:hover, .main-nav button.active, .ghost-button:hover, .icon-button:hover, .icon-text-button:hover { border-color: rgb(255 122 69 / 55%); background: rgb(255 122 69 / 10%); color: var(--text); } .user-cluster { display: flex; align-items: center; justify-content: flex-end; gap: 0.6rem; min-width: 0; } .user-pill { max-width: 10rem; overflow: hidden; padding: 0.48rem 0.7rem; border: 1px solid rgb(255 255 255 / 8%); border-radius: 8px; color: var(--text); text-overflow: ellipsis; white-space: nowrap; } .mini-progress { width: 5rem; height: 0.42rem; overflow: hidden; border-radius: 999px; background: rgb(255 255 255 / 8%); } .mini-progress span, .progress-track span, .lesson-progress span { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--accent), var(--cyan)); } .primary-button, .ghost-button, .icon-text-button { min-height: 2.65rem; padding: 0 1rem; border-radius: 8px; font-weight: 750; } .primary-button { border: 0; background: linear-gradient(135deg, var(--accent), var(--accent-2)); color: #1b1010; cursor: pointer; box-shadow: 0 14px 36px rgb(255 122 69 / 22%); } .primary-button:hover { transform: translateY(-1px); } .compact { min-height: 2.1rem; padding: 0 0.72rem; font-size: 0.82rem; } .icon-button { display: grid; width: 2.4rem; height: 2.4rem; place-items: center; padding: 0; } .home-layout, .page-layout { max-width: 1180px; margin: 0 auto; } .hero-band { display: grid; grid-template-columns: minmax(0, 1.02fr) minmax(22rem, 0.98fr); gap: 1.2rem; min-height: calc(100vh - 7rem); align-items: center; padding: clamp(1rem, 3vw, 3rem) 0 2rem; } .hero-copy h1 { max-width: 12ch; margin: 0.4rem 0 1rem; font-family: var(--mono); font-size: clamp(2.4rem, 6vw, 5.8rem); line-height: 0.96; letter-spacing: 0; } .hero-copy p { max-width: 42rem; color: var(--muted); font-size: clamp(1rem, 1.4vw, 1.22rem); line-height: 1.65; } .eyeline { margin: 0 0 0.4rem; color: var(--accent-2); font-family: var(--mono); font-size: 0.74rem; font-weight: 800; letter-spacing: 0; text-transform: uppercase; } .hero-actions, .row-actions, .dialog-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem; } .hero-terminal { position: relative; min-height: 30rem; } .terminal-window { overflow: hidden; border: 1px solid rgb(255 255 255 / 9%); border-radius: 8px; background: linear-gradient(180deg, rgb(255 255 255 / 5%), transparent 2.8rem), #050608; box-shadow: var(--shadow); } .hero-terminal .terminal-window { min-height: 25rem; transform: rotate(1.2deg); } .traffic { display: flex; gap: 0.45rem; padding: 0.85rem; border-bottom: 1px solid rgb(255 255 255 / 8%); } .traffic span { width: 0.72rem; height: 0.72rem; border-radius: 50%; } .traffic span:nth-child(1) { background: var(--danger); } .traffic span:nth-child(2) { background: var(--yellow); } .traffic span:nth-child(3) { background: var(--green); } pre, code { font-family: var(--mono); } .terminal-window pre { margin: 0; padding: 1.2rem; color: #ccebd7; font-size: clamp(0.82rem, 1.7vw, 1.08rem); line-height: 1.65; white-space: pre-wrap; } .orbit-card { position: absolute; right: 1.2rem; bottom: 2.2rem; width: min(15rem, 58%); padding: 1rem; border: 1px solid rgb(102 217 232 / 35%); border-radius: 8px; background: rgb(14 20 30 / 82%); backdrop-filter: blur(12px); } .orbit-card strong { display: block; color: var(--cyan); font-family: var(--mono); font-size: 2rem; } .orbit-card span { color: var(--muted); } .dashboard-grid { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(20rem, 0.9fr); gap: 1rem; margin: 0 0 2rem; } .progress-panel, .coach-panel, .level-block, .step-card, .comments-panel, .feedback-composer, .feedback-item, .comment, .help-request { border: 1px solid rgb(255 255 255 / 8%); border-radius: 8px; background: rgb(18 21 31 / 78%); box-shadow: 0 14px 44px rgb(0 0 0 / 18%); } .progress-panel, .coach-panel { padding: 1.15rem; } .panel-head, .section-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; } .compact-head { margin-bottom: 0.75rem; } .panel-head h2, .section-head h1, .section-head h2, .coach-panel h2, .feed-column h2 { margin: 0; font-size: clamp(1.2rem, 2vw, 1.8rem); letter-spacing: 0; } .large-percent { color: var(--cyan); font-family: var(--mono); font-size: clamp(2rem, 5vw, 3.8rem); font-weight: 900; } .progress-track { height: 0.7rem; margin: 1rem 0; overflow: hidden; border-radius: 999px; background: rgb(255 255 255 / 8%); } .progress-track.thin { height: 0.28rem; margin: 0 1rem 0.5rem; } .stat-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.7rem; } .metric { min-width: 0; padding: 0.8rem; border-radius: 8px; background: rgb(255 255 255 / 4%); } .metric strong, .metric span { display: block; } .metric strong { font-family: var(--mono); font-size: 1.25rem; } .metric span, .muted { color: var(--muted); } textarea, input, select { width: 100%; border: 1px solid var(--line); border-radius: 8px; background: rgb(5 6 9 / 70%); color: var(--text); outline: none; } textarea { min-height: 7rem; padding: 0.85rem; resize: vertical; } input, select { min-height: 2.65rem; padding: 0 0.8rem; } label { display: grid; gap: 0.35rem; color: var(--muted); font-size: 0.88rem; } .coach-panel textarea { margin: 0.7rem 0; } .coach-result, .success-message { border: 1px solid rgb(101 216 138 / 30%); border-radius: 8px; background: rgb(101 216 138 / 10%); color: #d7ffe4; } .coach-result, .success-message, .form-message { padding: 0.75rem; } .form-message { border: 1px solid rgb(255 122 69 / 30%); border-radius: 8px; background: rgb(255 122 69 / 10%); color: #ffd8c8; } .course-section { padding: 1rem 0 4rem; } .segmented { display: inline-flex; align-items: center; gap: 0.25rem; padding: 0.25rem; border: 1px solid rgb(255 255 255 / 9%); border-radius: 8px; background: rgb(255 255 255 / 4%); } .segmented button { min-height: 2.1rem; border: 0; border-radius: 6px; background: transparent; color: var(--muted); cursor: pointer; } .segmented button.selected { background: rgb(255 122 69 / 18%); color: var(--text); } .segmented.small button { padding: 0 0.75rem; } .course-list { display: grid; gap: 0.8rem; margin-top: 1rem; } .course-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.8rem; margin-top: 1rem; } .level-block { overflow: hidden; } .level-summary { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 0.9rem; width: 100%; align-items: center; padding: 1rem; border: 0; background: transparent; text-align: left; cursor: pointer; } .level-index, .lesson-state { display: grid; place-items: center; border-radius: 8px; font-family: var(--mono); font-weight: 900; } .level-index { width: 3rem; height: 3rem; border: 1px solid; background: rgb(255 255 255 / 4%); } .level-summary strong, .level-summary small, .lesson-row strong, .lesson-row small { display: block; overflow: hidden; text-overflow: ellipsis; } .level-summary small, .lesson-row small { margin-top: 0.25rem; color: var(--muted); } .level-score { color: var(--accent-2); font-family: var(--mono); } .lesson-stack { display: grid; padding: 0.25rem 0.8rem 0.9rem; } .lesson-row { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 0.8rem; align-items: center; min-height: 4.2rem; padding: 0.6rem; border: 0; border-radius: 8px; background: transparent; text-align: left; cursor: pointer; } .lesson-row:hover { background: rgb(255 255 255 / 5%); } .lesson-row.done { color: #dcffe7; } .lesson-state { width: 2.15rem; height: 2.15rem; background: rgb(255 255 255 / 6%); color: var(--cyan); } .lesson-row.done .lesson-state { background: rgb(101 216 138 / 14%); color: var(--green); } .lesson-duration { color: var(--soft); font-size: 0.84rem; } .lesson-layout { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; width: min(100%, 760px); min-height: calc(100vh - 7rem); margin: 0 auto; border: 1px solid rgb(255 255 255 / 8%); border-radius: 8px; background: rgb(8 10 15 / 72%); box-shadow: var(--shadow); } .lesson-top, .lesson-footer { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 0.75rem; align-items: center; padding: 0.8rem; } .lesson-footer { grid-template-columns: auto auto; justify-content: space-between; border-top: 1px solid rgb(255 255 255 / 8%); } .lesson-progress { height: 0.55rem; overflow: hidden; border-radius: 999px; background: rgb(255 255 255 / 8%); } .step-counter { color: var(--muted); font-family: var(--mono); } .lesson-main { overflow: auto; padding: 0.4rem 1.1rem 1.2rem; } .lesson-meta { display: flex; justify-content: space-between; gap: 1rem; margin-bottom: 0.75rem; color: var(--muted); } .lesson-meta p { margin: 0; } .lesson-meta span { color: var(--accent-2); font-family: var(--mono); } .step-card, .terminal-step { padding: clamp(1rem, 3vw, 1.35rem); } .step-card h1, .terminal-step h1 { margin: 0.25rem 0 0.85rem; font-size: clamp(1.55rem, 5vw, 2.4rem); line-height: 1.08; letter-spacing: 0; } .lead, .step-card p, .terminal-step p { color: var(--muted); line-height: 1.6; } .step-title-row { display: flex; align-items: start; justify-content: space-between; gap: 1rem; } .callout { margin: 1rem 0; padding: 1rem; border: 1px solid rgb(102 217 232 / 20%); border-radius: 8px; background: rgb(102 217 232 / 8%); } .callout p { margin: 0.35rem 0 0; } .markdown-step { display: grid; gap: 1rem; } .markdown-content { display: grid; gap: 0.85rem; } .markdown-content h2, .markdown-content h3, .markdown-content h4 { margin: 0.8rem 0 0.15rem; color: var(--text); line-height: 1.2; letter-spacing: 0; } .markdown-content h2 { font-size: clamp(1.25rem, 3vw, 1.7rem); } .markdown-content h3 { font-size: 1.1rem; } .markdown-content h4 { font-size: 1rem; } .markdown-content p, .markdown-content li { color: var(--muted); line-height: 1.65; } .markdown-content p, .markdown-content ul, .markdown-content ol { margin: 0; } .markdown-content ul, .markdown-content ol { display: grid; gap: 0.45rem; padding-left: 1.35rem; } .markdown-content strong { color: var(--text); } .markdown-content code { padding: 0.1rem 0.28rem; border: 1px solid rgb(102 217 232 / 18%); border-radius: 6px; background: rgb(102 217 232 / 8%); color: #d9faff; font-size: 0.92em; } .markdown-code { overflow: auto; margin: 0; padding: 1rem; border: 1px solid rgb(255 255 255 / 8%); border-radius: 8px; background: #050608; color: #d7ffe4; line-height: 1.55; white-space: pre; } .markdown-code code { padding: 0; border: 0; background: transparent; color: inherit; } .markdown-table-wrap { overflow-x: auto; border: 1px solid rgb(255 255 255 / 8%); border-radius: 8px; } .markdown-table-wrap table { width: 100%; min-width: 30rem; border-collapse: collapse; } .markdown-table-wrap th, .markdown-table-wrap td { padding: 0.7rem; border-bottom: 1px solid rgb(255 255 255 / 8%); color: var(--muted); text-align: left; vertical-align: top; } .markdown-table-wrap th { background: rgb(255 255 255 / 4%); color: var(--text); } .markdown-table-wrap tr:last-child td { border-bottom: 0; } .point-list { display: grid; gap: 0.55rem; margin: 1rem 0; padding-left: 1.5rem; color: var(--text); } .terminal-and-files { display: grid; grid-template-columns: minmax(0, 1fr) minmax(12rem, 0.42fr); gap: 0.8rem; margin-top: 1rem; } .interactive-terminal { min-height: 20rem; } .terminal-log { min-height: 13rem; max-height: 22rem; overflow: auto; padding: 1rem; color: #dcffe5; font-family: var(--mono); font-size: 0.9rem; } .log-entry { margin-bottom: 0.85rem; } .log-entry p { margin: 0; color: var(--text); } .log-entry span, .terminal-input-row span { color: var(--green); } .log-entry pre { margin: 0.22rem 0 0; white-space: pre-wrap; } .terminal-input-row { display: flex; align-items: center; gap: 0.45rem; padding: 0.75rem 1rem 1rem; border-top: 1px solid rgb(255 255 255 / 8%); color: #dcffe5; font-family: var(--mono); font-size: 0.9rem; } .terminal-input-row input { min-width: 0; min-height: 2.2rem; border: 0; background: transparent; color: var(--text); font-family: var(--mono); } .terminal-submit { min-height: 2rem; padding: 0 0.65rem; border: 1px solid rgb(102 217 232 / 32%); border-radius: 6px; background: rgb(102 217 232 / 10%); color: var(--cyan); cursor: pointer; font-family: var(--mono); font-weight: 800; } .file-panel { min-width: 0; padding: 0.85rem; border: 1px solid rgb(255 255 255 / 8%); border-radius: 8px; background: rgb(255 255 255 / 4%); } .file-snapshot { display: grid; gap: 0.4rem; color: var(--muted); font-family: var(--mono); font-size: 0.82rem; } .file-snapshot p { margin: 0 0 0.2rem; color: var(--accent-2); overflow-wrap: anywhere; } .file-snapshot span { overflow: hidden; padding: 0.3rem 0.45rem; border-radius: 6px; background: rgb(0 0 0 / 18%); text-overflow: ellipsis; white-space: nowrap; } .option-list, .lesson-stack, .feedback-board, .comment-list { display: grid; gap: 0.6rem; } .option-list button { min-height: 3.3rem; padding: 0.8rem 1rem; border: 1px solid var(--line); border-radius: 8px; background: rgb(255 255 255 / 4%); color: var(--text); text-align: left; cursor: pointer; } .option-list button.correct { border-color: rgb(101 216 138 / 60%); background: rgb(101 216 138 / 12%); } .option-list button.wrong { border-color: rgb(255 95 112 / 60%); background: rgb(255 95 112 / 12%); } .file-tree-layout { display: grid; grid-template-columns: minmax(12rem, 0.75fr) minmax(0, 1fr); gap: 0.8rem; } .tree-list { display: grid; gap: 0.35rem; padding: 0.6rem; border: 1px solid var(--line); border-radius: 8px; background: #090b10; } .tree-list button { display: flex; align-items: center; gap: 0.55rem; min-width: 0; min-height: 2.2rem; border: 0; border-radius: 6px; background: transparent; color: var(--text); text-align: left; cursor: pointer; } .tree-list button.selected { background: rgb(255 122 69 / 15%); } .tree-list span { color: var(--cyan); font-family: var(--mono); font-size: 0.72rem; } .tree-detail { padding: 1rem; border: 1px solid rgb(102 217 232 / 18%); border-radius: 8px; background: rgb(102 217 232 / 7%); } .tree-detail strong { font-family: var(--mono); } .tree-detail small { color: var(--accent-2); } .match-grid { display: grid; gap: 0.75rem; } .match-grid label { grid-template-columns: minmax(8rem, 0.5fr) minmax(0, 1fr); align-items: center; } .match-grid code { color: var(--cyan); } .inline-help-form { display: flex; min-width: 0; gap: 0.45rem; } .comments-panel { position: fixed; right: 1rem; bottom: 1rem; z-index: 25; width: min(28rem, calc(100vw - 2rem)); max-height: min(42rem, calc(100vh - 2rem)); overflow: auto; padding: 1rem; } .comment-form { display: grid; gap: 0.6rem; } .comment, .help-request, .feedback-item { padding: 0.85rem; } .comment div, .feedback-item div { display: flex; align-items: center; justify-content: space-between; gap: 0.8rem; } .comment small, .help-request span { color: var(--muted); } .vote-button { min-height: 2rem; border: 1px solid rgb(102 217 232 / 30%); border-radius: 6px; background: rgb(102 217 232 / 9%); color: var(--cyan); cursor: pointer; } .help-panel { position: fixed; top: 7rem; right: 0; z-index: 22; pointer-events: none; } .help-tab { position: absolute; top: 12rem; right: 0.5rem; display: grid; gap: 0.25rem; width: 3rem; min-height: 5.5rem; place-items: center; border: 1px solid rgb(255 122 69 / 45%); border-radius: 8px; background: rgb(15 18 28 / 92%); color: var(--text); cursor: pointer; pointer-events: auto; writing-mode: vertical-rl; } .help-tab span { display: grid; width: 1.4rem; height: 1.4rem; place-items: center; border-radius: 50%; background: var(--accent); color: #1b1010; font-weight: 900; } .help-content { width: min(28rem, calc(100vw - 5rem)); min-height: 28rem; max-height: calc(100vh - 8rem); overflow: auto; padding: 1rem; border: 1px solid rgb(255 255 255 / 9%); border-right: 0; border-radius: 8px 0 0 8px; background: rgb(10 12 18 / 96%); box-shadow: var(--shadow); pointer-events: auto; } .help-request { margin-bottom: 0.65rem; } .help-request strong, .help-request span { display: block; } .help-request p, .comment p, .feedback-item p { color: var(--muted); line-height: 1.55; } .page-layout { padding: 2rem 0 4rem; } .community-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; margin-top: 1rem; } .feed-column { display: grid; gap: 0.7rem; align-content: start; } .wide { width: 100%; } .feedback-composer { display: grid; grid-template-columns: 12rem minmax(0, 1fr) auto; gap: 0.75rem; align-items: start; margin: 1rem 0; padding: 1rem; } .feedback-composer textarea { min-height: 4rem; } .feedback-board { grid-template-columns: repeat(3, minmax(0, 1fr)); } .status { padding: 0.18rem 0.45rem; border-radius: 999px; background: rgb(255 255 255 / 8%); color: var(--muted); font-family: var(--mono); font-size: 0.72rem; } .status.new { color: var(--cyan); } .status.planned { color: var(--yellow); } .modal-backdrop { position: fixed; inset: 0; z-index: 50; display: grid; place-items: center; padding: 1rem; background: rgb(0 0 0 / 72%); backdrop-filter: blur(8px); } .auth-dialog { width: min(32rem, 100%); max-height: min(48rem, calc(100vh - 2rem)); overflow: auto; padding: 1rem; border: 1px solid rgb(255 255 255 / 10%); border-radius: 8px; background: #11141d; box-shadow: var(--shadow); } .dialog-head { display: flex; align-items: start; justify-content: space-between; gap: 1rem; margin-bottom: 0.8rem; } .dialog-head h2 { margin: 0; } .auth-dialog label, .auth-dialog .segmented { margin-bottom: 0.75rem; } .import-export { margin-top: 0.8rem; color: var(--muted); } .import-export summary { cursor: pointer; } .import-export textarea { margin: 0.7rem 0; min-height: 6rem; } /* Маршруты курса (треки) */ .route-section { margin: 0 0 2rem; } .route-strip { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 1rem; } .route-chip { display: grid; gap: 0.3rem; min-width: 13rem; flex: 1 1 12rem; padding: 0.9rem 1rem; border: 1px solid rgb(255 255 255 / 9%); border-radius: 8px; background: rgb(18 21 31 / 78%); text-align: left; cursor: pointer; transition: border-color 160ms ease, background 160ms ease, transform 160ms ease; } .route-chip:hover { border-color: rgb(255 122 69 / 55%); background: rgb(255 122 69 / 10%); transform: translateY(-1px); } .route-chip.selected { border-color: rgb(255 122 69 / 70%); background: rgb(255 122 69 / 14%); box-shadow: 0 10px 30px rgb(255 122 69 / 12%); } .route-chip strong { font-size: 1rem; } .route-chip small { color: var(--muted); font-family: var(--mono); font-size: 0.82rem; } .route-note { margin: 0.8rem 0 0; color: var(--muted); font-size: 0.9rem; line-height: 1.5; } /* Подсветка уроков выбранного маршрута */ .lesson-row.in-route { border: 1px solid rgb(255 122 69 / 32%); background: rgb(255 122 69 / 7%); } .lesson-row.in-route .lesson-state { background: rgb(255 122 69 / 14%); color: var(--accent-2); } .lesson-row.dimmed { opacity: 0.42; } /* Страница справочных материалов (глоссарий / шпаргалка) */ .reference-card { margin-top: 1rem; padding: clamp(1rem, 3vw, 1.5rem); border: 1px solid rgb(255 255 255 / 8%); border-radius: 8px; background: rgb(18 21 31 / 78%); box-shadow: 0 14px 44px rgb(0 0 0 / 18%); } /* Самооценка по рубрике в финальном уроке */ .rubric-checks { display: grid; gap: 0.6rem; margin: 1.2rem 0 0.4rem; } .rubric-check { display: flex; align-items: center; gap: 0.8rem; padding: 0.85rem 1rem; border: 1px solid rgb(255 255 255 / 9%); border-radius: 8px; background: rgb(255 255 255 / 4%); cursor: pointer; transition: border-color 160ms ease, background 160ms ease; } .rubric-check:hover { border-color: rgb(102 217 232 / 40%); } .rubric-check.done { border-color: rgb(101 216 138 / 40%); background: rgb(101 216 138 / 8%); } .rubric-check input { accent-color: var(--green); width: 1.1rem; height: 1.1rem; flex: 0 0 auto; cursor: pointer; } .rubric-check strong, .rubric-check small { display: block; } .rubric-check small { margin-top: 0.2rem; color: var(--muted); font-size: 0.84rem; } .rubric-check.done small { color: var(--green); } .rubric-result { margin-top: 0.6rem; color: var(--accent-2); font-family: var(--mono); font-weight: 700; } @media (max-width: 900px) { .topbar { position: static; grid-template-columns: 1fr; } .main-nav, .user-cluster { justify-content: start; overflow-x: auto; } .hero-band, .dashboard-grid, .course-grid, .community-grid, .terminal-and-files, .file-tree-layout, .feedback-board { grid-template-columns: 1fr; } .hero-band { min-height: auto; } .hero-copy h1 { max-width: 14ch; } .hero-terminal { min-height: auto; } .lesson-layout { min-height: calc(100vh - 2rem); } .lesson-footer { grid-template-columns: 1fr 1fr; } .inline-help-form { grid-column: 1 / -1; } .feedback-composer { grid-template-columns: 1fr; } } @media (max-width: 560px) { .app-shell { padding: 0.6rem; } .hero-copy h1 { font-size: 2.35rem; } .stat-row { grid-template-columns: 1fr; } .section-head, .panel-head { align-items: start; flex-direction: column; } .level-summary, .lesson-row { grid-template-columns: auto minmax(0, 1fr); } .level-score, .lesson-duration { grid-column: 2; } .terminal-input-row { align-items: start; flex-direction: column; } .match-grid label { grid-template-columns: 1fr; } .comments-panel { left: 0.6rem; right: 0.6rem; bottom: 0.6rem; width: auto; } .help-panel { top: auto; right: 0.8rem; bottom: 0.8rem; } .help-tab { position: fixed; top: auto; right: 0.8rem; bottom: 0.8rem; display: flex; width: auto; min-height: 2.55rem; padding: 0 0.7rem; writing-mode: horizontal-tb; } .help-content { position: fixed; right: 0.8rem; bottom: 3.8rem; width: calc(100vw - 4rem); min-height: 18rem; max-height: 60vh; } }