:root{
  --j-bg:#f5f9ff;--j-panel:#fff;--j-ink:#0f172a;--j-muted:#64748b;--j-line:#dbe5f1;
  --j-brand:#0ea5e9;--j-brand2:#2563eb;--j-soft:#eaf5ff;--j-good:#15803d;--j-warn:#b45309;--j-bad:#b91c1c;
  --j-radius:16px;--j-shadow:0 12px 34px rgba(15,23,42,.08)
}
html[data-theme="dark"]{--j-bg:#07111f;--j-panel:#0f172a;--j-ink:#e5edf7;--j-muted:#9caec2;--j-line:#243246;--j-soft:#12243a;--j-shadow:none}
*{box-sizing:border-box}.journal-wrap{max-width:1280px;margin:0 auto;padding:24px 20px 46px;color:var(--j-ink)}
body{margin:0;background:var(--j-bg);font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--j-ink)}
.narrow{max-width:900px}.journal-bar{background:linear-gradient(90deg,#0f172a,#172554);color:#fff;border-bottom:1px solid rgba(255,255,255,.08)}
.journal-bar-inner{max-width:1280px;margin:auto;padding:10px 20px;display:flex;gap:18px;align-items:center;justify-content:space-between;flex-wrap:wrap}.journal-brand{font-weight:900;color:#fff;text-decoration:none}.journal-nav{display:flex;flex-wrap:wrap;gap:6px}.journal-nav a{color:#dbeafe;text-decoration:none;padding:7px 10px;border-radius:999px;font-size:.9rem}.journal-nav a:hover{background:rgba(255,255,255,.12);color:#fff}
.panel{background:var(--j-panel);border:1px solid var(--j-line);border-radius:var(--j-radius);box-shadow:var(--j-shadow);padding:20px;margin:0 0 18px}.hero-panel{background:linear-gradient(135deg,var(--j-panel),var(--j-soft));display:flex;align-items:center;justify-content:space-between;gap:20px}.hero-panel h1{font-size:clamp(1.65rem,3vw,2.5rem);margin:.25rem 0}.hero-panel p{max-width:780px;color:var(--j-muted);font-size:1.03rem}.eyebrow{font-size:.78rem;font-weight:900;letter-spacing:.12em;color:var(--j-brand2)}
h1,h2,h3{line-height:1.2}h2{margin:.2rem 0 1rem}.muted{color:var(--j-muted)}.small{font-size:.86rem}.nowrap{white-space:nowrap}
.grid{display:grid;gap:16px}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}.stat{background:var(--j-panel);border:1px solid var(--j-line);border-radius:14px;padding:15px}.stat strong{display:block;font-size:1.7rem}.stat span{color:var(--j-muted);font-size:.9rem}
.subject-card{display:flex;flex-direction:column;gap:12px}.subject-card h3{margin:0}.subject-meta{display:flex;gap:8px;flex-wrap:wrap}.badge{display:inline-flex;align-items:center;gap:5px;border-radius:999px;background:var(--j-soft);padding:5px 9px;font-weight:700;font-size:.8rem}.badge.good{background:#dcfce7;color:#166534}.badge.warn{background:#fef3c7;color:#92400e}.badge.bad{background:#fee2e2;color:#991b1b}
.progress{height:9px;background:var(--j-line);border-radius:999px;overflow:hidden}.progress>i{display:block;height:100%;background:linear-gradient(90deg,var(--j-brand),var(--j-brand2));border-radius:inherit}
.btn{appearance:none;border:1px solid var(--j-line);background:var(--j-panel);color:var(--j-ink);padding:9px 13px;border-radius:10px;font-weight:800;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px}.btn:hover{border-color:var(--j-brand);transform:translateY(-1px)}.btn.primary{background:var(--j-brand2);border-color:var(--j-brand2);color:#fff}.btn.danger{background:#fff1f2;border-color:#fecdd3;color:#be123c}.btn.small{padding:6px 9px;font-size:.82rem}.form-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-grid .full{grid-column:1/-1}.form-grid label{display:flex;flex-direction:column;gap:6px;font-weight:700;font-size:.9rem}.form-grid input,.form-grid select,.form-grid textarea,.inline-input{width:100%;padding:10px 11px;border:1px solid var(--j-line);border-radius:9px;background:var(--j-panel);color:var(--j-ink);font:inherit}.form-grid textarea{min-height:100px;resize:vertical}.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.inline-input:focus{outline:2px solid rgba(14,165,233,.25);border-color:var(--j-brand)}
.alert{border-radius:12px;padding:12px 14px;margin:0 0 14px;border:1px solid}.alert-success{background:#ecfdf5;border-color:#bbf7d0;color:#166534}.alert-error{background:#fff1f2;border-color:#fecdd3;color:#9f1239}.alert-info{background:#eff6ff;border-color:#bfdbfe;color:#1e3a8a}.alert-warning{background:#fffbeb;border-color:#fde68a;color:#92400e}
.table-wrap{overflow:auto;border:1px solid var(--j-line);border-radius:12px;background:var(--j-panel)}table{width:100%;border-collapse:separate;border-spacing:0;min-width:720px}th,td{padding:9px 10px;border-bottom:1px solid var(--j-line);border-right:1px solid var(--j-line);vertical-align:top}th:last-child,td:last-child{border-right:0}tr:last-child td{border-bottom:0}th{position:sticky;top:0;background:var(--j-soft);font-size:.86rem;text-align:left;z-index:2}.journal-table th.student-col,.journal-table td.student-col{position:sticky;left:0;z-index:3;background:var(--j-panel);min-width:230px}.journal-table th.student-col{z-index:4;background:var(--j-soft)}.lesson-head{min-width:126px;text-align:center}.lesson-head b{display:block}.lesson-head small{display:block;color:var(--j-muted);margin-top:3px}.grade-cell{min-width:116px;padding:6px}.grade-box{display:grid;grid-template-columns:48px 1fr;gap:5px}.grade-box select,.grade-box input{width:100%;padding:6px 5px;border:1px solid var(--j-line);border-radius:7px;background:var(--j-panel);color:var(--j-ink)}.avg-cell{font-weight:900;text-align:center}
.schedule-table td.period{font-weight:900;white-space:nowrap}.schedule-item{display:block}.schedule-item b{display:block}.schedule-item small{color:var(--j-muted)}
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}.tab-link{padding:8px 13px;border-radius:999px;border:1px solid var(--j-line);text-decoration:none;color:var(--j-ink);font-weight:800;background:var(--j-panel)}.tab-link.active{background:var(--j-brand2);color:#fff;border-color:var(--j-brand2)}
.topic-list{display:grid;gap:9px}.topic{display:grid;grid-template-columns:70px 1fr auto;gap:12px;align-items:start;padding:12px;border:1px solid var(--j-line);border-radius:12px}.topic .num{font-weight:900;color:var(--j-brand2)}.topic h4{margin:0 0 4px}.topic p{margin:0;color:var(--j-muted);font-size:.9rem}.topic.done{border-left:5px solid #22c55e}.topic.current{border-left:5px solid var(--j-brand2)}
.material-list,.submission-list{display:grid;gap:9px}.material-row,.submission-row{display:flex;gap:12px;align-items:center;justify-content:space-between;padding:11px;border:1px solid var(--j-line);border-radius:11px}.material-row .meta,.submission-row .meta{min-width:0}.material-row strong,.submission-row strong{display:block;overflow:hidden;text-overflow:ellipsis}.file-icon{font-size:1.5rem}
.login-box{max-width:470px;margin:30px auto}.login-box .panel{padding:26px}.login-box h1{text-align:center;margin-top:0}.login-box .form-grid{grid-template-columns:1fr}
.kpi-row{display:flex;gap:8px;flex-wrap:wrap}.empty{padding:28px;text-align:center;color:var(--j-muted);border:1px dashed var(--j-line);border-radius:12px}.journal-footer{text-align:center;padding:26px 20px 35px;color:var(--j-muted)}
.sticky-actions{position:sticky;bottom:12px;margin-top:12px;padding:10px;border-radius:12px;background:color-mix(in srgb,var(--j-panel) 92%,transparent);backdrop-filter:blur(8px);border:1px solid var(--j-line);box-shadow:var(--j-shadow);display:flex;justify-content:flex-end;z-index:9}
.status-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px;background:#94a3b8}.status-dot.submitted{background:#f59e0b}.status-dot.graded,.status-dot.accepted{background:#22c55e}.status-dot.revision{background:#ef4444}
@media(max-width:900px){.stats,.grid.cols-4,.grid.cols-3{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols-2{grid-template-columns:1fr}.journal-bar-inner{align-items:flex-start}.journal-nav{width:100%;overflow:auto;flex-wrap:nowrap;padding-bottom:2px}.journal-nav a{white-space:nowrap}}
@media(max-width:620px){.journal-wrap{padding:16px 10px 35px}.panel{padding:14px}.stats{grid-template-columns:1fr 1fr}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.topic{grid-template-columns:55px 1fr}.topic>:last-child{grid-column:2}.material-row,.submission-row{align-items:flex-start;flex-direction:column}.hero-panel{padding:18px}.journal-bar-inner{padding:8px 10px}}

/* ===== v1.1: публічні дисципліни та компактне відображення годин ===== */
.section-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px}.section-heading h2{margin:.2rem 0 0}.public-subjects{overflow:hidden}.public-subject-card{min-height:150px}.public-hours{display:flex;flex-wrap:wrap;gap:7px;margin-top:auto}.public-hours span{display:inline-flex;align-items:baseline;gap:4px;padding:6px 9px;border-radius:9px;background:var(--j-soft);font-size:.82rem;color:var(--j-muted)}.public-hours b{font-size:1rem;color:var(--j-ink)}

/* ===== v1.1: читабельний журнал ===== */
.journal-panel-v2{padding:14px}.journal-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}.journal-legend{display:flex;gap:12px;flex-wrap:wrap;font-size:.82rem;color:var(--j-muted)}.journal-legend span{display:inline-flex;align-items:center;gap:5px}.mark-dot{width:9px;height:9px;border-radius:50%;display:inline-block;background:#cbd5e1}.mark-dot.absent{background:#ef4444}.mark-dot.graded{background:#22c55e}.mark-dot.retaken{background:#f59e0b}
.journal-scroll{max-height:72vh;overflow:auto;scrollbar-gutter:stable}.journal-table-v2{min-width:max-content}.journal-table-v2 th,.journal-table-v2 td{padding:0}.journal-table-v2 tbody tr:nth-child(even) td{background:color-mix(in srgb,var(--j-soft) 42%,var(--j-panel))}.journal-table-v2 tbody tr:hover td{background:color-mix(in srgb,var(--j-soft) 78%,var(--j-panel))}.journal-table-v2 th.student-col,.journal-table-v2 td.student-col{min-width:205px;max-width:205px;padding:9px 10px;box-shadow:5px 0 10px rgba(15,23,42,.05)}.journal-table-v2 td.student-col strong{font-size:.91rem}.journal-table-v2 .lesson-head{min-width:96px;width:96px;max-width:96px;text-align:center;padding:7px 5px}.journal-table-v2 .lesson-head b{font-size:.95rem}.journal-table-v2 .lesson-head small{font-size:.72rem;line-height:1.15}.lesson-title-short{display:-webkit-box!important;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:1.65em}.journal-table-v2 .grade-cell{min-width:76px;width:76px;height:58px;padding:4px}.grade-display{width:100%;height:100%;min-height:50px;border:1px solid transparent;border-radius:9px;background:transparent;color:var(--j-ink);font:inherit;font-weight:900;font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.15s ease}.grade-display:hover,.grade-display:focus-visible{border-color:var(--j-brand);background:var(--j-soft);outline:none;transform:scale(1.03)}.grade-display.mark-empty{color:#94a3b8;font-weight:600}.grade-display.mark-present{color:#15803d}.grade-display.mark-absent{color:#dc2626;background:color-mix(in srgb,#fee2e2 42%,transparent)}.grade-display.mark-graded{color:#166534;background:color-mix(in srgb,#dcfce7 48%,transparent)}.grade-display.mark-retaken{color:#b45309;background:color-mix(in srgb,#fef3c7 55%,transparent)}.cell-changed{box-shadow:inset 0 0 0 2px rgba(37,99,235,.18)}
.journal-table-v2 .avg-head,.journal-table-v2 .avg-cell{position:sticky;right:0;z-index:3;min-width:88px;width:88px;text-align:center;background:var(--j-panel);padding:8px 6px;box-shadow:-5px 0 10px rgba(15,23,42,.05)}.journal-table-v2 .avg-head{z-index:5;background:var(--j-soft)}.journal-table-v2 tbody tr:nth-child(even) .avg-cell{background:color-mix(in srgb,var(--j-soft) 42%,var(--j-panel))}.journal-table-v2 tbody tr:hover .avg-cell{background:color-mix(in srgb,var(--j-soft) 78%,var(--j-panel))}.journal-savebar{align-items:center;justify-content:space-between}.journal-savebar .dirty{color:var(--j-warn);font-weight:800}

/* ===== v1.1: редактор комірки ===== */
body.editor-open{overflow:hidden}.cell-editor-backdrop[hidden]{display:none!important}.cell-editor-backdrop{position:fixed;inset:0;z-index:9999;background:rgba(2,6,23,.52);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:18px}.cell-editor-card{width:min(520px,100%);background:var(--j-panel);color:var(--j-ink);border:1px solid var(--j-line);border-radius:18px;box-shadow:0 28px 80px rgba(2,6,23,.28);padding:20px}.cell-editor-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.cell-editor-head h3{margin:.2rem 0 0;font-size:1.35rem}.editor-close{border:0;background:var(--j-soft);color:var(--j-ink);width:36px;height:36px;border-radius:10px;font-size:1.5rem;line-height:1;cursor:pointer}.editor-context{display:flex;flex-direction:column;gap:3px;padding:12px 0 14px;border-bottom:1px solid var(--j-line);margin-bottom:14px}.editor-grid{grid-template-columns:1fr 1fr}.editor-check{flex-direction:row!important;align-items:center!important}.editor-check input{width:auto!important}.editor-preview{margin:14px 0;padding:11px 12px;border-radius:10px;background:var(--j-soft);text-align:center}.editor-preview strong{font-size:1.25rem;margin-left:5px}.editor-actions{margin-top:14px}.editor-spacer{flex:1}

@media(max-width:620px){.section-heading{align-items:flex-start}.journal-table-v2 th.student-col,.journal-table-v2 td.student-col{min-width:155px;max-width:155px}.journal-table-v2 td.student-col{padding:7px}.journal-table-v2 td.student-col strong{font-size:.84rem}.journal-table-v2 td.student-col .small{font-size:.72rem}.journal-table-v2 .lesson-head{min-width:82px;width:82px;max-width:82px}.journal-table-v2 .grade-cell{min-width:68px;width:68px}.editor-grid{grid-template-columns:1fr}.editor-check.full{grid-column:auto}.cell-editor-card{padding:15px}.journal-legend{display:none}}
