:root { --ink:#17242d; --muted:#66747a; --paper:#fff; --ground:#f5f7f5; --line:#dce4df; --green:#176f5d; --green-dark:#115143; --lime:#dcecc9; --soft:#edf4ed; --gold:#c58a31; --radius:16px; --shadow:0 18px 48px rgba(23,36,45,.08); }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; color:var(--ink); background:var(--ground); font:15px/1.55 "Manrope",Arial,sans-serif; }
button,input,select,textarea { font:inherit; }
button { cursor:pointer; }
a { color:inherit; text-decoration:none; }
.site-header { height:76px; padding:0 max(22px,calc((100% - 1180px)/2)); display:flex; align-items:center; justify-content:space-between; gap:28px; background:rgba(255,255,255,.92); border-bottom:1px solid var(--line); position:sticky; top:0; z-index:10; backdrop-filter:blur(14px); }
.brand { display:flex; align-items:center; gap:10px; }
.brand-mark { display:grid; place-items:center; width:39px; height:39px; border-radius:12px; background:var(--green); color:#fff; font:800 13px/1 "Source Serif 4",serif; letter-spacing:.04em; }
.brand strong,.brand small { display:block; }.brand strong { font-size:.87rem; }.brand small { color:var(--muted); font-size:.69rem; }
nav { display:flex; align-items:center; gap:26px; color:#526068; font-size:.82rem; font-weight:700; } nav a:not(.button):hover,.text-link:hover { color:var(--green); }
.button { min-height:42px; padding:0 18px; border:1px solid var(--green); border-radius:9px; color:#fff; background:var(--green); display:inline-flex; align-items:center; justify-content:center; font-weight:800; transition:.18s ease; }.button:hover { background:var(--green-dark); border-color:var(--green-dark); transform:translateY(-1px); }.button--small { min-height:36px; padding:0 14px; }.button--outline { color:var(--green); background:#fff; border-color:#bcd3ca; box-shadow:none; }.button--outline:hover { color:#fff; }.button--wide { width:100%; }
.hero,.section { width:min(1180px,calc(100% - 44px)); margin:auto; }.hero { padding:91px 0 82px; min-height:570px; display:grid; grid-template-columns:minmax(0,1.2fr) minmax(310px,.8fr); align-items:center; gap:90px; }.eyebrow { margin:0 0 12px; color:var(--green); font-size:.69rem; font-weight:800; text-transform:uppercase; letter-spacing:.14em; } h1,h2,h3,h4,p { margin-top:0; } h1,h2 { font-family:"Source Serif 4",Georgia,serif; letter-spacing:-.035em; } h1 { max-width:700px; margin-bottom:18px; font-size:clamp(2.55rem,5vw,4.4rem); line-height:1.02; } h1 em { color:var(--green); font-style:normal; } h2 { max-width:690px; margin-bottom:15px; font-size:clamp(2rem,3.4vw,3rem); line-height:1.07; } h3 { font-size:1.08rem; } .lead { max-width:650px; color:var(--muted); font-size:1.02rem; }.hero-actions { margin-top:31px; display:flex; align-items:center; flex-wrap:wrap; gap:23px; }.text-link { color:var(--green); font-weight:800; }.text-link span { margin-left:5px; }
.hero-card { padding:28px; background:var(--ink); color:#f8fbf9; border-radius:var(--radius); box-shadow:var(--shadow); }.hero-card__label { color:#b8c9bf; font-size:.72rem; font-weight:700; text-transform:uppercase; letter-spacing:.12em; }.hero-stat { padding:16px 0 24px; display:flex; align-items:center; gap:15px; border-bottom:1px solid rgba(255,255,255,.16); }.hero-stat strong { color:#d9eca9; font:700 3.4rem/1 "Source Serif 4",serif; }.hero-stat span { color:#d5dfd9; font-size:.82rem; }.hero-card__row { padding:17px 0; display:flex; justify-content:space-between; border-bottom:1px solid rgba(255,255,255,.12); font-size:.88rem; }.hero-card__row b { color:#d9eca9; }.hero-card__note { margin:19px 0 0; color:#b8c9bf; font-size:.76rem; }
.section { padding:81px 0; }.section--soft { width:100%; max-width:none; padding-left:max(22px,calc((100% - 1180px)/2)); padding-right:max(22px,calc((100% - 1180px)/2)); background:var(--soft); }.advantages { margin-top:37px; display:grid; grid-template-columns:repeat(3,1fr); border-top:1px solid var(--line); }.advantages article { padding:27px 30px 7px 0; border-right:1px solid var(--line); }.advantages article+article { padding-left:30px; }.advantages article:last-child { border:0; }.advantages p { color:var(--muted); font-size:.87rem; }.number { margin-bottom:24px; display:block; color:var(--gold); font-weight:800; font-size:.77rem; }.steps { margin:36px 0 0; padding:0; list-style:none; display:grid; grid-template-columns:repeat(3,1fr); gap:42px; }.steps li { display:flex; align-items:flex-start; gap:14px; }.steps b { color:var(--green); font-size:.8rem; }.steps span { color:var(--muted); font-size:.85rem; }.steps strong { display:block; margin-bottom:4px; color:var(--ink); font-size:.93rem; }
.account-section { padding-bottom:100px; display:grid; grid-template-columns:.78fr 1fr; align-items:start; gap:100px; }.account-intro { padding-top:23px; }.account-intro>p:not(.eyebrow) { color:var(--muted); }.form-note { color:var(--muted); font-size:.77rem; }.auth-card,.journal-card { background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); }.auth-card { overflow:hidden; }.auth-tabs,.dashboard-tabs,.journal-tabs { display:flex; gap:4px; }.auth-tabs { padding:7px; border-bottom:1px solid var(--line); background:#fafcfb; }.auth-tab,.dashboard-tab,.journal-tab { border:0; background:transparent; color:var(--muted); font-weight:800; }.auth-tab { flex:1; padding:11px; border-radius:8px; }.auth-tab.is-active { color:var(--green); background:#e7f1e9; }.auth-form { padding:26px; }.auth-form label,.context-card label { display:block; margin-bottom:15px; color:#49575d; font-size:.78rem; font-weight:800; }.auth-form input,.auth-form textarea,.context-card input,.context-card select { width:100%; margin-top:6px; padding:10px 11px; color:var(--ink); border:1px solid #ced9d3; border-radius:8px; outline:none; background:#fff; font-size:.88rem; }.auth-form input:focus,.auth-form textarea:focus,.context-card input:focus,.context-card select:focus { border-color:var(--green); box-shadow:0 0 0 3px rgba(23,111,93,.1); }.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:13px; }.form-message { min-height:21px; margin:13px 0 0; color:var(--green); font-size:.8rem; font-weight:700; }.form-message.error { color:#ad3434; }.is-hidden { display:none !important; }
.dashboard { width:min(1180px,calc(100% - 44px)); margin:38px auto 74px; }.dashboard-header { margin-bottom:28px; display:flex; justify-content:space-between; align-items:flex-start; gap:20px; }.dashboard-header h2 { margin-bottom:5px; }.dashboard-header p:not(.eyebrow) { margin:0; color:var(--muted); }.dashboard-tabs { padding-bottom:13px; border-bottom:1px solid var(--line); }.dashboard-tab { padding:11px 17px; border-radius:8px; }.dashboard-tab.is-active { color:#fff; background:var(--green); }.dashboard-panel { padding-top:31px; }.section-heading { margin-bottom:24px; display:flex; align-items:end; justify-content:space-between; gap:30px; }.section-heading h3 { margin:0; font:700 2rem/1.1 "Source Serif 4",Georgia,serif; }.section-heading>p { max-width:365px; margin:0; color:var(--muted); font-size:.83rem; }.context-card { padding:18px; display:grid; grid-template-columns:1.25fr .65fr auto auto; align-items:end; gap:12px; background:var(--soft); border:1px solid #d7e5d9; border-radius:12px; }.context-card label { margin:0; }.copy-note { margin:9px 0 23px; color:var(--muted); font-size:.75rem; }.journal-tabs { overflow:auto; margin-bottom:18px; border-bottom:1px solid var(--line); }.journal-tab { padding:11px 14px; white-space:nowrap; border-bottom:2px solid transparent; }.journal-tab.is-active { color:var(--green); border-color:var(--green); }.journal-card { overflow:hidden; }.journal-card__header { padding:19px 21px; display:flex; align-items:center; justify-content:space-between; gap:18px; border-bottom:1px solid var(--line); }.journal-card__header h4 { margin:0; font-size:1rem; }.table-wrap { overflow-x:auto; } table { width:100%; border-collapse:collapse; min-width:660px; font-size:.82rem; } th,td { padding:11px 12px; text-align:left; border-bottom:1px solid var(--line); vertical-align:top; } th { color:#526159; background:#f7faf7; font-size:.69rem; letter-spacing:.04em; text-transform:uppercase; } td[contenteditable="true"] { outline:none; } td[contenteditable="true"]:focus { background:#f2f8f3; box-shadow:inset 0 0 0 2px rgba(23,111,93,.25); }.score { width:68px; padding:6px; border:1px solid #ced9d3; border-radius:6px; }.hours-total { color:var(--green); font-weight:800; }
.modal { position:fixed; inset:0; z-index:30; display:grid; place-items:center; padding:14px; background:rgba(16,32,38,.59); }.modal__content { position:relative; width:min(100%,510px); max-height:calc(100vh - 28px); overflow-y:auto; padding:28px; background:#fff; border-radius:17px; box-shadow:0 22px 70px rgba(0,0,0,.24); }.modal__close { position:absolute; top:10px; right:12px; width:32px; height:32px; border:0; border-radius:50%; color:var(--muted); background:#f1f5f1; font-size:1.35rem; }.credentials { padding:12px 0; }.credentials div,.payment-line { padding:12px 0; display:flex; justify-content:space-between; gap:20px; border-bottom:1px solid var(--line); }.credentials dt { color:var(--muted); }.credentials dd { margin:0; color:var(--green); font-weight:800; }.payment-line { margin:22px 0; font-size:.85rem; }.payment-line strong { text-align:right; color:var(--green); }.copy-template-form { display:grid; gap:10px; margin-top:16px; }.copy-template-form label { display:grid; gap:4px; color:var(--muted); font-size:.76rem; font-weight:800; }.copy-template-form input,.copy-template-form select { width:100%; min-height:36px; padding:6px 9px; border:1px solid var(--line); border-radius:7px; color:var(--ink); background:#fff; font:inherit; }.copy-template-source-year,.copy-template-note { margin:0; font-size:.74rem; }.copy-template-source-year { padding:7px 9px; border-radius:7px; color:var(--green-dark); background:var(--soft); }.copy-template-note { color:var(--muted); }.copy-template-form .button { position:sticky; bottom:0; margin-top:2px; box-shadow:0 -8px 14px #fff; } footer { padding:25px max(22px,calc((100% - 1180px)/2)); display:flex; justify-content:space-between; gap:18px; color:#7a8782; border-top:1px solid var(--line); background:#fff; font-size:.73rem; }
@media (max-width:800px) { .site-header { height:auto; min-height:68px; }.site-header nav a:not(.button) { display:none; }.hero { padding:62px 0; grid-template-columns:1fr; gap:38px; min-height:0; }.advantages,.steps,.account-section { grid-template-columns:1fr; gap:20px; }.advantages { border:0; }.advantages article,.advantages article+article { padding:22px 0; border:0; border-bottom:1px solid var(--line); }.account-section { padding-bottom:66px; }.context-card { grid-template-columns:1fr 1fr; }.context-card .button { width:100%; }.section-heading { align-items:start; flex-direction:column; gap:9px; }.form-grid { grid-template-columns:1fr; gap:0; }.dashboard-header { flex-direction:column; }.dashboard-header .button { width:100%; } }
@media (max-width:520px) { .site-header,.hero,.section,.dashboard { width:calc(100% - 30px); }.site-header { width:100%; padding:0 15px; }.brand small { display:none; }.hero { padding:48px 0; }.section { padding:55px 0; }.section--soft { width:100%; padding-left:15px; padding-right:15px; }.context-card { grid-template-columns:1fr; }.journal-card__header { align-items:stretch; flex-direction:column; }.journal-card__header .button { width:100%; } footer { flex-direction:column; padding:22px 15px; } }

.text-button { display:block; margin:15px auto 0; padding:0; border:0; color:var(--green); background:transparent; font-size:.79rem; font-weight:800; text-decoration:underline; text-underline-offset:3px; }
.journal-description { margin:4px 0 0; color:var(--muted); font-size:.74rem; }
.journal-tools { display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:7px; }
.backup-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:8px; }.backup-actions label { cursor:pointer; }
.hours-section { display:grid; gap:12px; }
.hours-card__header h4 span,.hours-semester-mark { color:var(--muted); font-size:.75rem; font-weight:700; }
.hours-controls { display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:7px; }.hours-controls label { color:var(--muted); font-size:.7rem; font-weight:800; }.hours-controls input { width:94px; margin-left:4px; padding:6px; border:1px solid var(--line); border-radius:6px; color:var(--ink); background:#fff; font:inherit; }
.hours-table { min-width:720px; }.hours-table th:nth-child(1),.hours-table td:nth-child(1) { width:52px; min-width:52px; text-align:center; }.hours-table th:nth-child(3),.hours-table th:nth-child(5),.hours-table td:nth-child(3),.hours-table td:nth-child(5) { width:150px; min-width:130px; text-align:center; }.hours-table th:nth-child(4),.hours-table td:nth-child(4) { width:270px; min-width:270px; text-align:center; }
.hours-practice-select,.hours-ksr-select { width:auto; min-width:64px; margin-left:6px; padding:3px 6px; border:1px solid var(--line); border-radius:5px; background:#fff; font-size:.76rem; }.hours-total-row td { color:var(--green-dark); background:var(--soft); font-weight:900; }
.button--compact { min-height:33px; padding:0 10px; font-size:.72rem; }
.tool-label { color:var(--muted); font-size:.68rem; font-weight:800; }
.tool-label select,.tool-label input { max-width:88px; margin-left:4px; padding:6px; border:1px solid var(--line); border-radius:6px; color:var(--ink); background:#fff; font:inherit; }
.journal-subsection + .journal-subsection { border-top:8px solid var(--soft); }
.table-title { padding:16px 20px 9px; display:flex; align-items:baseline; justify-content:space-between; gap:15px; }
.table-title h5 { margin:0; color:var(--green); font-size:.88rem; }
.table-title span { color:var(--muted); font-size:.7rem; }
.complex-table th { min-width:95px; text-align:center; }
.attendance-table-wrap { max-height:70vh; overflow:auto; }
.attendance-table thead th { position:sticky; top:0; z-index:2; box-shadow:0 1px 0 var(--line); }
.complex-table th span { display:block; margin-top:4px; font-weight:600; letter-spacing:0; text-transform:none; }
.complex-table th span[contenteditable="true"] { padding:3px; border-radius:4px; background:#edf4ed; }
.complex-table td { min-width:68px; text-align:center; }
.complex-table td:nth-child(2) { min-width:210px; text-align:left; }
.absence-cell { color:#b06b24; font-weight:800; }
.context-card { grid-template-columns:minmax(180px,1fr) minmax(120px,.55fr) minmax(160px,.8fr) minmax(300px,1.5fr); }
.group-actions { grid-column:1 / -1; display:grid; grid-template-columns:repeat(auto-fit,minmax(145px,1fr)); gap:7px; align-items:center; }
.group-actions .button { min-height:36px; padding:0 10px; font-size:.72rem; }
.journal-card__header { align-items:flex-start; }
.subsection-header { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; padding:16px 18px 10px; }
.subsection-header h5 { margin:0 0 3px; color:var(--green); font-size:.92rem; }
.subsection-header p { margin:0; color:var(--muted); font-size:.7rem; }
.subsection-actions,.column-mini { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:4px; }
.quick-icon { width:29px; height:29px; min-width:29px; padding:0; border:1px solid #bcd3ca; border-radius:6px; color:var(--green); background:#fff; font-size:.72rem; font-weight:900; cursor:pointer; }
.quick-icon:hover { color:#fff; background:var(--green); border-color:var(--green); }
.selection { display:inline-grid; place-items:center; margin-right:4px; }.selection input { position:absolute; opacity:0; }.selection span { display:grid !important; place-items:center; width:15px; height:15px; margin:0 !important; border:1px solid #afc7bb; border-radius:3px; color:transparent; background:#fff; font-size:.58rem !important; }.selection input:checked + span { color:#fff; background:var(--green); border-color:var(--green); }
.lesson-meta { display:grid; gap:3px; min-width:110px; text-align:left; }.lesson-meta b { color:var(--green); }.lesson-meta span[contenteditable="true"],.subheaders span[contenteditable="true"] { display:block; padding:3px; border-radius:4px; background:#edf4ed; font-weight:600; letter-spacing:0; text-transform:none; }.subheaders { display:grid; grid-template-columns:repeat(auto-fit,minmax(60px,1fr)); gap:3px; margin-top:6px; }.practice-value { padding:4px !important; }.practice-value span { display:block; min-width:65px; min-height:25px; padding:4px; border-bottom:1px solid var(--line); }.practice-value span:last-child { border-bottom:0; }
.journal-mark.is-absence,.practice-value span.is-absence { color:#991b1b; background:#fee2e2; box-shadow:inset 0 0 0 1px #fca5a5; font-weight:800; }
.practice-journal-card { overflow:hidden; }
.practice-journal-scroll { position:relative; max-height:calc(100vh - 180px); overflow:auto; }
.practice-journal-scroll-top { position:sticky; top:0; z-index:10; height:16px; overflow-x:auto; overflow-y:hidden; background:#fff; }
.practice-journal-scroll-top > div { height:1px; }
.practice-journal-table { min-width:max-content; }
.practice-journal-table thead { position:sticky; top:16px; z-index:5; }
.practice-journal-table thead th { position:relative; z-index:1; }
.practice-journal-table .practice-base-header--number,.practice-journal-table .practice-base-cell--number { position:sticky; left:0; z-index:6; background:#f7faf7; }
.practice-journal-table .practice-base-cell--number { z-index:4; background:#fff; }
.practice-journal-table .practice-base-header--name,.practice-journal-table .practice-base-cell--name { position:sticky; left:var(--practice-number-width); z-index:6; background:#f7faf7; box-shadow:3px 0 5px rgba(23,36,45,.12); }
.practice-journal-table .practice-base-cell--name { z-index:4; background:#fff; }
.practice-lesson-meta { display:grid; gap:4px; text-align:left; }
.practice-lesson-meta b { color:var(--green); }
.practice-lesson-meta label { display:grid; gap:1px; }
.practice-lesson-meta small { color:var(--muted); font-size:.62rem; text-transform:none; }
.practice-lesson-meta span[contenteditable="true"] { min-height:23px; padding:3px; border-radius:4px; background:#edf4ed; font-weight:600; letter-spacing:0; text-transform:none; }
.practice-subheader-row,.practice-subcells { display:grid; gap:4px; margin-top:6px; }
.practice-subheader-cell { position:relative; }
.practice-subheader-cell > span { display:block; min-height:23px; padding:3px 8px 3px 4px; border-radius:4px; background:#edf4ed; font-weight:600; letter-spacing:0; text-transform:none; }
.practice-subcells { margin:0; }
.practice-subcells > span { min-width:0; border-radius:5px; border-bottom:0; background:#edf4ed; text-align:center; }
.practice-subcell-wrap { position:relative; min-width:0; min-height:var(--practice-row-height,24px); }
.practice-subcells > [data-practice-grade] { min-height:var(--practice-row-height,24px); padding:2px 4px; border-radius:6px; background:rgba(237,244,237,.7); color:var(--ink); }
.practice-subcell-wrap.has-retake > [data-practice-grade] { border:1px solid var(--green); box-shadow:inset 0 0 0 1px rgba(23,111,93,.18); }
.practice-retake-input { position:absolute; top:-6px; right:-5px; z-index:2; min-width:16px; min-height:16px; padding:0 3px; border:1px solid var(--green); border-radius:4px; background:#fff; color:var(--green-dark); font-size:.68rem; font-weight:800; line-height:14px; text-align:center; outline:none; }
.practice-retake-input:focus { box-shadow:0 0 0 2px rgba(23,111,93,.18); }
.practice-subcells > span.is-absence { color:#991b1b; background:#fee2e2; box-shadow:inset 0 0 0 1px #fca5a5; font-weight:800; }
.practice-lesson-cell,.practice-base-cell,.practice-header { position:relative; }
.practice-resize-handle { position:absolute; z-index:8; padding:0; border:0; opacity:0; background:rgba(23,111,93,.2); cursor:col-resize; }
.practice-resize-handle--column,.practice-resize-handle--subcolumn { top:0; right:-4px; width:8px; height:100%; }
.practice-resize-handle--row { right:0; bottom:-5px; left:0; width:100%; height:9px; cursor:row-resize; }
.practice-header:hover > .practice-resize-handle--column,.practice-lesson-cell:hover > .practice-resize-handle--column,.practice-base-cell:hover > .practice-resize-handle--column,.practice-subheader-cell:hover > .practice-resize-handle--subcolumn,.practice-base-cell:hover > .practice-resize-handle--row { opacity:1; }
.practice-average-dialog { width:min(560px,calc(100% - 32px)); border:0; border-radius:12px; padding:22px; box-shadow:var(--shadow); }
.practice-average-dialog::backdrop { background:rgba(16,32,38,.45); }
.practice-average-dialog h3 { margin:0 0 8px; }
.practice-average-dialog p { color:var(--muted); font-size:.82rem; }
.practice-average-dialog table { min-width:0; margin:14px 0; }
.dialog-actions { display:flex; justify-content:flex-end; gap:8px; }
.dialog-actions button:not(.button) { min-height:42px; padding:0 16px; border:1px solid #bcd3ca; border-radius:9px; color:var(--green); background:#fff; font-weight:800; }

/* Практический журнал: перенесённая структура блока кафедрального сайта. */
.electronic-journal-table { min-width:1200px; }
.electronic-journal-table th { text-align:center; white-space:nowrap; }
.electronic-journal-table td { min-width:70px; padding:6px; text-align:center; }
.electronic-journal-header { min-width:46px; min-height:24px; outline:0; white-space:pre-line; }
.electronic-journal-header:focus,.electronic-journal-input:focus { border-radius:6px; background:#fff; box-shadow:inset 0 -2px 0 var(--green); }
.electronic-journal-header--fixed { font-weight:800; }
.practice-lesson-meta { gap:5px; padding:0 12px; }
.journal-lesson-number { display:inline-grid; place-items:center; justify-self:center; min-width:22px; height:18px; padding:0 6px; border-radius:999px; background:rgba(23,111,93,.12); color:var(--green-dark); font-size:.72rem; font-weight:900; }
.practice-lesson-meta__field { display:grid; grid-template-columns:38px minmax(0,1fr); align-items:center; gap:5px; text-align:left; }
.practice-lesson-meta__label { color:var(--muted); font-size:.68rem; font-weight:800; text-transform:uppercase; }
.electronic-journal-header--lesson-field { min-height:20px; padding:2px 5px; border:1px solid rgba(23,111,93,.16); border-radius:6px; background:rgba(255,255,255,.65); font-size:.72rem; font-weight:700; white-space:normal; }
.electronic-journal-header--lesson-field:empty::before { content:attr(data-placeholder); color:rgba(102,116,122,.65); font-weight:600; }
.electronic-journal-header--sub { min-width:64px; padding:2px 14px 2px 4px; border-radius:6px; background:rgba(255,255,255,.65); font-size:.72rem; }
.electronic-journal-input { min-height:24px; outline:0; }.electronic-journal-input--name { text-align:left; }
.journal-selection-check { display:inline-flex; align-items:center; justify-content:center; padding:3px; border:1px solid rgba(23,111,93,.35); border-radius:4px; background:rgba(255,255,255,.92); cursor:pointer; line-height:1; }.journal-selection-check input { width:10px; height:10px; margin:0; accent-color:var(--green); cursor:pointer; }.journal-selection-check:has(input:checked) { border-color:var(--green); background:rgba(23,111,93,.14); }
.science-table-card__header { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; padding:16px 18px 10px; }.science-table-card__controls { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:4px; }
.practice-journal-scroll { max-height:calc(100vh - 120px); }
.practice-journal-scroll-top { background:#f8fcfd; }.practice-journal-scroll-top__track { height:1px; }
.practice-journal-table { min-width:1200px; }
.practice-journal-table th,.practice-lesson-cell,.practice-base-cell,.practice-subheader-cell { position:relative; }
.practice-journal-table th[data-practice-base-header="number"],.practice-journal-table td[data-practice-base-column="number"] { position:sticky; left:0; z-index:3; min-width:var(--practice-number-column-width); background:#fff; }
.practice-journal-table th[data-practice-base-header="number"] { top:16px; z-index:6; background:var(--soft); }
.practice-journal-table th[data-practice-base-header="studentName"],.practice-journal-table td[data-practice-base-column="studentName"] { position:sticky; left:var(--practice-number-column-width); z-index:3; box-shadow:3px 0 5px rgba(23,36,45,.12); background:#fff; }
.practice-journal-table th[data-practice-base-header="studentName"] { top:16px; z-index:6; background:var(--soft); }
.practice-subcells { grid-template-columns:repeat(5,minmax(36px,1fr)); gap:4px; }.practice-subcells .electronic-journal-input { min-height:var(--practice-row-height,24px); padding:2px 4px; border-radius:6px; background:rgba(237,244,237,.7); color:var(--ink); }.practice-subcells .electronic-journal-input.is-absence { background:#ffe4e6; color:#991b1b; }.practice-subcell-wrap.has-retake .practice-grade-value { border:1px solid var(--green); box-shadow:inset 0 0 0 1px rgba(23,111,93,.18); }
.practice-subheader-cell--empty { min-height:18px; }.practice-subheader-cell--empty .practice-resize-handle--subcolumn { height:100%; }
.practice-subtitle-clear { position:absolute; top:-8px; right:6px; z-index:3; width:14px; height:14px; padding:0; border:1px solid rgba(153,27,27,.25); border-radius:50%; background:#fff; color:#991b1b; font-size:.65rem; line-height:12px; cursor:pointer; }.practice-subtitle-clear:hover { background:#ffe4e6; }
.practice-subtitle-restore { width:14px; height:14px; min-height:14px; padding:0; border:1px solid rgba(23,111,93,.28); border-radius:50%; background:#fff; color:var(--green-dark); font-size:.65rem; line-height:12px; cursor:pointer; }.practice-subtitle-restore:hover { background:rgba(23,111,93,.12); }
.practice-column-actions { display:flex; justify-content:center; gap:4px; margin-top:6px; }.practice-column-actions .quick-action-button { width:14px; min-width:14px; height:14px; min-height:14px; padding:0; border-radius:3px; font-size:.58rem; line-height:1; box-shadow:none; }
.rating-section { overflow:hidden; }.rating-table { min-width:980px; }.rating-table th { min-width:94px; text-align:center; }.rating-table td { min-width:94px; text-align:center; }.rating-header-cell,.rating-row-cell { display:flex; align-items:center; gap:6px; }.rating-header-cell { flex-direction:column; justify-content:center; }.rating-row-cell { justify-content:flex-start; min-height:25px; }.rating-row-cell [contenteditable="true"] { width:100%; min-height:24px; outline:0; }.rating-row-cell [contenteditable="true"]:focus,.rating-header-cell [contenteditable="true"]:focus { border-radius:6px; background:#fff; box-shadow:inset 0 -2px 0 var(--green); }.rating-bonus-input { width:100%; min-width:72px; padding:4px 6px; border:1px solid rgba(23,111,93,.35); border-radius:6px; background:#fff; font:inherit; }.rating-selection-check { display:inline-flex; align-items:center; justify-content:center; padding:3px; border:1px solid rgba(23,111,93,.35); border-radius:6px; background:rgba(255,255,255,.92); line-height:1; cursor:pointer; }.rating-selection-check input { width:12px; height:12px; margin:0; accent-color:var(--green); cursor:pointer; }.rating-selection-check:has(input:checked) { border-color:var(--green); background:rgba(23,111,93,.14); }
.tool-label--static,.hours-academic-year { color:var(--muted); font-size:.72rem; font-weight:800; }.tool-label--static b { color:var(--ink); }.participants-section { display:grid; gap:16px; }.participant-year-card { overflow:hidden; border:1px solid var(--line); border-radius:var(--radius); background:#fff; box-shadow:var(--shadow); }.participant-year-card__header { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; padding:18px 20px 14px; border-bottom:1px solid var(--line); background:linear-gradient(135deg,#f8fcf8,#eff7f1); }.participant-year-card__header h4 { margin:0 0 3px; color:var(--green-dark); font-size:1rem; }.participant-year-card__header p { margin:0; color:var(--muted); font-size:.78rem; }.participant-year-period { display:inline-flex; align-items:center; min-height:28px; padding:0 9px; border-radius:999px; color:var(--green-dark); background:#dcecc9; font-size:.71rem; font-weight:800; white-space:nowrap; }.participant-lists { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0; }.participant-list { min-width:0; padding:16px; }.participant-list + .participant-list { border-left:1px solid var(--line); }.participant-list h5 { display:flex; align-items:center; justify-content:space-between; margin:0 0 10px; color:var(--green-dark); font-size:.82rem; }.participant-list h5 span { display:inline-grid; place-items:center; min-width:23px; height:23px; border-radius:50%; background:var(--soft); color:var(--green-dark); font-size:.7rem; }.participants-table { min-width:650px; }.participants-table th,.participants-table td { font-size:.72rem; }.participants-table td:last-child { white-space:nowrap; }
.journal-table.is-read-only { opacity:.82; }.journal-table.is-read-only [contenteditable="false"] { cursor:default; }
@media (max-width:980px) { .context-card { grid-template-columns:1fr 1fr; }.subsection-header,.participant-year-card__header { flex-direction:column; }.subsection-actions { justify-content:flex-start; }.participant-lists { grid-template-columns:1fr; }.participant-list + .participant-list { border-top:1px solid var(--line); border-left:0; } }
