@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--ink:#18241f;--muted:#75817b;--line:#e5ebe6;--paper:#f5f7f4;--green:#18764d;--pale:#e8f4ed;--orange:#e9a448}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px 'DM Sans',sans-serif}.topbar{height:76px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 max(calc((100% - 1160px)/2),24px)}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--ink);font:800 21px Manrope,sans-serif;letter-spacing:-1px}.brand-mark{display:grid;place-items:center;background:var(--green);color:white;border-radius:13px;width:38px;height:38px;font-size:21px}.brand-dot{color:var(--green)}.brand small{display:block;color:#8a958e;font:500 10px 'DM Sans';letter-spacing:.09em;text-transform:uppercase;margin-top:1px}.top-meta{font-size:12px;color:#65726a;display:flex;gap:9px;align-items:center}.live-dot{width:8px;height:8px;border-radius:99px;background:#4bb47b;box-shadow:0 0 0 4px #e6f5ec}.shell{max-width:1160px;margin:auto;padding:42px 24px 30px}.welcome{display:flex;align-items:center;justify-content:space-between;margin:0 0 26px}.eyebrow{font-size:10px;letter-spacing:.16em;font-weight:700;color:var(--green)}h1,h2,p{margin-top:0}.welcome h1,.page-intro h1{font:800 30px Manrope,sans-serif;letter-spacing:-1.2px;margin:8px 0 5px}.welcome p,.page-intro p{color:var(--muted);margin:0}.welcome-icon{width:70px;height:70px;border:1px solid #d7e9dc;border-radius:24px;display:grid;place-items:center;color:var(--green);font-size:35px;background:linear-gradient(140deg,#fafffb,#eaf5ee);transform:rotate(7deg)}.card{background:white;border:1px solid var(--line);border-radius:18px;box-shadow:0 8px 30px #16352108}.chooser{padding:22px 24px 23px;margin-bottom:20px}.section-kicker{font-size:10px;letter-spacing:.13em;font-weight:700;color:#718078;margin-bottom:17px}.section-kicker span{color:var(--green);margin-right:7px}.course-list{display:flex;flex-wrap:wrap;gap:8px}.course-button{border:1px solid var(--line);background:white;border-radius:10px;padding:9px 15px;color:#53615a;font:600 13px 'DM Sans';cursor:pointer;transition:.16s}.course-button:hover{border-color:#9fcdb0;color:var(--green);transform:translateY(-1px)}.course-button.active{background:var(--green);color:white;border-color:var(--green);box-shadow:0 4px 12px #18764d2b}.chooser-divider{height:1px;background:#eef1ee;margin:19px 0}.chooser-row{display:grid;grid-template-columns:1.2fr 1.2fr .8fr;gap:15px}.field label,.password-fields label{display:block;font-size:11px;font-weight:700;color:#69766f;margin-bottom:7px}.field select,.password-fields input,.password-fields select{width:100%;padding:11px 13px;border:1px solid #dfe6e0;border-radius:10px;background:#fbfcfb;color:var(--ink);font:500 13px 'DM Sans';outline:none}.field select:focus,.password-fields input:focus,.password-fields select:focus{border-color:#69aa82;box-shadow:0 0 0 3px #18764d14}.field select:disabled{color:#aab2ad;background:#f7f9f7}.journal-card{overflow:hidden}.journal-head{padding:21px 24px 15px;display:flex;justify-content:space-between;align-items:center}.journal-group{font-size:10px;font-weight:700;letter-spacing:.13em;color:var(--green);text-transform:uppercase;margin-bottom:5px}.journal-head h2{font:700 19px Manrope;margin:0 0 4px;letter-spacing:-.4px}.journal-sub{font-size:12px;color:var(--muted)}.journal-stats{display:flex;gap:24px;text-align:right}.journal-stats>div{display:grid;gap:3px}.journal-stats b{font:700 20px Manrope}.journal-stats span{font-size:10px;color:var(--muted)}.journal-stats .average b{color:var(--green)}.legend{display:flex;align-items:center;gap:17px;padding:0 24px 13px;color:#69766f;font-size:10px}.legend>span{display:flex;align-items:center;gap:6px}.legend i{font-style:normal;width:19px;height:19px;border-radius:6px;display:grid;place-items:center;font-weight:700}.legend-grade{background:#edf5ef;color:var(--green)}.legend-n{background:#fff2e8;color:#cf753c}.legend-b{background:#eaf0fb;color:#5477bb}.readonly-note{margin-left:auto;color:#89958e}.table-frame{overflow:auto;max-height:66vh;border-top:1px solid var(--line)}table{border-collapse:separate;border-spacing:0;min-width:100%;font-size:11px;white-space:nowrap}th,td{height:40px;min-width:35px;text-align:center;border-right:1px solid #edf0ed;border-bottom:1px solid #edf0ed;padding:0 7px}thead th{position:sticky;top:0;z-index:3;background:#f7f9f7;color:#64716a;font-weight:700;font-size:10px}th.name-col,td.name-col{position:sticky;left:0;text-align:left;min-width:195px;width:195px;padding:0 13px;background:#fff;z-index:2}thead th.name-col{z-index:4;background:#f7f9f7}th.summary-col,td.summary-col{min-width:54px;background:#f5f8f5;font-weight:700}th.att-col,td.att-col{min-width:40px}.student-name{font-weight:600;color:#34443a}.grade{display:inline-grid;place-items:center;width:25px;height:25px;border-radius:8px;font-weight:700}.g5{background:#e5f3e9;color:#18764d}.g4{background:#eef5e8;color:#54853a}.g3{background:#fff4df;color:#b47b1e}.g2{background:#fff0eb;color:#c16345}.absence-n{color:#d27d43;font-weight:700}.absence-b{color:#5d7fbd;font-weight:700}.total{color:#285d3f}.empty{color:#c6cec8}.table-foot{display:flex;justify-content:space-between;padding:13px 20px;color:#8a958e;font-size:10px}.save-state{color:var(--green)}footer{display:flex;justify-content:space-between;margin-top:25px;color:#9aa49e;font-size:10px}footer .muted{color:#a2aaa5;font-weight:400}.hidden{display:none!important}@media(max-width:650px){.topbar{padding:0 18px}.shell{padding:27px 14px}.welcome h1{font-size:25px}.welcome-icon{width:54px;height:54px}.chooser{padding:18px}.chooser-row{grid-template-columns:1fr 1fr}.month-wrap{grid-column:1/-1}.journal-head{padding:18px;align-items:flex-start}.journal-stats{gap:12px}.journal-stats b{font-size:17px}.legend{padding:0 18px 12px;gap:10px;flex-wrap:wrap}.readonly-note{margin-left:0}.table-foot{gap:12px;align-items:flex-start}.table-foot span:first-child{max-width:67%}th.name-col,td.name-col{min-width:150px;width:150px;padding:0 9px}footer{padding:0 4px}}
.subject-placeholder{align-self:end;min-height:38px;padding:0 2px 8px;color:#9aa49e;font-size:11px}.subject-picker{margin:20px auto 22px;max-width:1000px}.subject-picker .section-kicker{margin:0 0 11px 3px}.subject-cards{display:flex;justify-content:center;flex-wrap:wrap;gap:12px}.subject-card{position:relative;width:230px;min-height:103px;padding:15px 38px 14px 15px;border:1px solid #e2e9e3;border-radius:14px;background:#fff;text-align:left;color:#20342a;cursor:pointer;box-shadow:0 5px 18px #15342108;transition:transform .16s,border .16s,box-shadow .16s}.subject-card:hover{border-color:#9dc9aa;transform:translateY(-2px);box-shadow:0 9px 22px #15342112}.subject-card.active{border-color:#218256;box-shadow:0 0 0 3px #18764d12}.subject-icon{display:grid;place-items:center;width:27px;height:27px;background:#eaf4ed;color:#18764d;border-radius:8px;margin-bottom:10px}.subject-card strong{display:block;font:700 13px Manrope,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.subject-card small{display:block;margin-top:4px;color:#87938c;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.subject-arrow{position:absolute;right:14px;top:17px;color:#8ba296}.no-subjects{width:100%;padding:14px 17px;background:#fff;border:1px dashed #d8e2da;border-radius:12px;color:#87938c;font-size:12px}.teacher-tools{display:flex;align-items:center;justify-content:space-between;padding:13px 20px;border-top:1px solid #edf0ed;background:#fbfcfb;color:#89958e;font-size:10px}.edit-button{border:0;border-radius:9px;background:#1c7650;color:#fff;padding:10px 16px;font:700 11px 'DM Sans';cursor:pointer;box-shadow:0 4px 12px #18764d20}.edit-button:hover{background:#125f3e}.edit-button span{padding-left:9px}.editable-cell{cursor:pointer}.editable-cell:hover{background:#f0f8f2}.roster-name{width:calc(100% - 50px);border:1px solid #dfe6e0;border-radius:6px;padding:5px;font:600 10px 'DM Sans'}.roster-save,.roster-delete{border:0;background:none;color:#18764d;cursor:pointer;font-weight:700;padding:4px}.roster-delete{color:#c16345}.add-student-cell{text-align:left!important;background:#fff!important}.add-student-cell button{border:1px dashed #b9d3c0;color:#18764d;background:#f8fcf9;border-radius:7px;padding:7px 12px;cursor:pointer;font:600 10px 'DM Sans'}
.journal-open .welcome,.journal-open .chooser,.journal-open #subjectPicker,.journal-open footer{display:none!important}.journal-open .shell{padding-top:25px}.journal-open .top-meta{display:none}.top-actions{display:flex;align-items:center;gap:14px}.back-button{border:1px solid #dce7de;background:#fff;color:#18764d;border-radius:9px;padding:9px 13px;font:600 11px 'DM Sans';cursor:pointer;transition:.15s}.back-button:hover{background:#eaf4ed;border-color:#a7ceb3}.journal-open .journal-card{margin-top:4px}.journal-open .topbar{position:sticky;top:0;z-index:5}
.group-selection .section-kicker{margin-bottom:10px}.group-list{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.group-button{display:flex;align-items:center;gap:17px;border:1px solid var(--line);background:#fff;border-radius:10px;padding:9px 12px 9px 14px;color:#53615a;font:600 12px 'DM Sans';cursor:pointer;transition:.16s}.group-button span{color:#9aa69e}.group-button:hover{border-color:#9fcdb0;color:var(--green);transform:translateY(-1px)}.group-button.active{background:#e9f4ec;border-color:#b4d6bf;color:var(--green)}.journal-right{display:flex;align-items:center;gap:24px}.month-select-wrap{display:flex;align-items:center;gap:9px;position:relative;background:#f8faf8;border:1px solid #e4eae5;border-radius:10px;padding:0 12px;height:40px;color:#53665a}.month-icon{color:var(--green);font-size:17px}.month-select-wrap select{appearance:none;border:0;outline:0;background:transparent;padding:0 21px 0 0;color:#273b2f;font:700 12px Manrope;cursor:pointer;min-width:116px}.month-caret{pointer-events:none;position:absolute;right:10px;top:9px;color:#718078;font-size:16px}.month-select-wrap:focus-within{border-color:#8fbea0;box-shadow:0 0 0 3px #18764d12}.journal-open .journal-head{align-items:center}@media(max-width:650px){.journal-right{align-items:flex-end;flex-direction:column-reverse;gap:11px}.month-select-wrap{height:36px}.journal-open .top-actions{gap:0}.back-button{padding:8px 10px;font-size:10px}.group-button{padding:8px 10px;gap:9px}}

/* Soft charcoal dark mode; green remains the journal accent. */
:root[data-theme="dark"]{color-scheme:dark;--ink:#e4ece6;--muted:#a5b2a9;--line:#3a4940;--paper:#202925;--green:#43ad76;--pale:#2b3d32}
:root[data-theme="light"]{color-scheme:light}
[data-theme="dark"] body{background:#202925;color:var(--ink)}
[data-theme="dark"] .topbar,[data-theme="dark"] .card,[data-theme="dark"] .chooser,[data-theme="dark"] .journal-card{background:#29342e;color:var(--ink);border-color:var(--line)}
[data-theme="dark"] .topbar{background:#252f2a;border-color:var(--line)}
[data-theme="dark"] .top-meta,[data-theme="dark"] .section-kicker,[data-theme="dark"] .field label,[data-theme="dark"] .legend{color:#a8b5ac}
[data-theme="dark"] .brand small{color:#a1aea5}
[data-theme="dark"] .welcome-icon{background:linear-gradient(140deg,#2d3b32,#26352c);border-color:#405a48}
[data-theme="dark"] .course-button,[data-theme="dark"] .field select,[data-theme="dark"] .password-fields input,[data-theme="dark"] .password-fields select{background:#232e28;color:var(--ink);border-color:#43534a}
[data-theme="dark"] .chooser-divider{background:#3b4941}
[data-theme="dark"] .table-frame{border-color:var(--line)}
[data-theme="dark"] th,[data-theme="dark"] td{border-color:#39473f}
[data-theme="dark"] thead th,[data-theme="dark"] thead th.name-col{background:#303c35;color:#c0ccc3}
[data-theme="dark"] th.name-col,[data-theme="dark"] td.name-col{background:#29342e}
[data-theme="dark"] th.summary-col,[data-theme="dark"] td.summary-col{background:#303c35}
[data-theme="dark"] .student-name,[data-theme="dark"] .total{color:#c8dfcf}
[data-theme="dark"] .legend-grade{background:#304437;color:#83d09e}
[data-theme="dark"] .legend-n{background:#49372c;color:#e6a573}
[data-theme="dark"] .legend-b{background:#303c51;color:#9bb8ed}
[data-theme="dark"] .g5{background:#30483a;color:#8ed5a6}
[data-theme="dark"] .g4{background:#384536;color:#b0cf87}
[data-theme="dark"] .g3{background:#4a402d;color:#e6c176}
[data-theme="dark"] .g2{background:#4b3530;color:#e79a7d}
[data-theme="dark"] .live-dot{box-shadow:0 0 0 4px #2f4336}
.theme-toggle{flex:none;width:38px;height:38px;display:grid;place-items:center;border:1px solid var(--line);border-radius:12px;background:transparent;color:var(--green);font:700 23px/1 'DM Sans',sans-serif;cursor:pointer;transition:background .16s,border-color .16s,transform .16s}
.theme-toggle:hover{background:var(--pale);border-color:var(--green);transform:translateY(-1px)}
.top-actions{display:flex;align-items:center;gap:13px}
@media(max-width:650px){.top-actions{gap:8px}.theme-toggle{width:34px;height:34px}.top-meta{display:none!important}}

/* Journal widgets: no native dropdowns or browser prompts. */
.month-switcher{display:flex;align-items:center;gap:10px;background:#f8faf8;border:1px solid #e4eae5;border-radius:11px;height:42px;padding:0 7px;color:#53665a;white-space:nowrap}
.month-switcher strong{min-width:112px;text-align:center;color:#273b2f;font:700 12px Manrope,sans-serif}
.month-step{width:28px;height:28px;border:0;border-radius:8px;background:transparent;color:var(--green);font:700 22px/1 'DM Sans',sans-serif;cursor:pointer}
.month-step:hover{background:#eaf4ed}
[data-theme="dark"] .month-switcher{background:#303c35;border-color:#45554b;color:#c2d0c6}
[data-theme="dark"] .month-switcher strong{color:#e4ece6}
[data-theme="dark"] .month-step:hover{background:#3a4c40}
.teacher-tools{flex-wrap:wrap}
[data-theme="dark"] .teacher-tools{background:#252f2a;border-color:#3a4940;color:#bdc9c0}
.teacher-password-form{display:flex;align-items:center;gap:8px;flex-basis:100%;padding-top:10px}
.teacher-password-form label{color:#66756b;font-size:11px;font-weight:700}
.teacher-password-form input{width:min(250px,50vw);border:1px solid #dfe6e0;border-radius:9px;padding:10px 12px;background:#fff;color:#20342a;font:12px 'DM Sans';outline:none}
.teacher-password-form input:focus{border-color:#69aa82;box-shadow:0 0 0 3px #18764d14}
.login-cancel{border:0;background:transparent;color:#839087;padding:8px;cursor:pointer;font:600 11px 'DM Sans'}
.teacher-login-error{color:#d87868;font-size:11px}
[data-theme="dark"] .teacher-password-form label{color:#bdc9c0}
[data-theme="dark"] .teacher-password-form input{background:#202b25;color:#e4ece6;border-color:#46564c}
.grade-picker{position:absolute;z-index:12;left:50%;top:100%;transform:translateX(-50%);display:grid;grid-template-columns:repeat(4,30px);gap:4px;width:max-content;padding:7px;background:#fff;border:1px solid #dfe8e1;border-radius:11px;box-shadow:0 8px 24px #102a1b30}
.grade-pick{width:30px;height:30px;border:0;border-radius:8px;background:#eef5ef;color:#285d3f;font:700 12px 'DM Sans';cursor:pointer}
.grade-pick:hover{filter:brightness(.94)}
.grade-pick.pick-n{background:#fff0e5;color:#c77743}
.grade-pick.pick-b{background:#eaf0fb;color:#5879b8}
.grade-pick.pick-clear{background:#f0f1ef;color:#77827b}
[data-theme="dark"] .grade-picker{background:#26322b;border-color:#46554b;box-shadow:0 8px 24px #0008}
[data-theme="dark"] .grade-pick{background:#35483a;color:#9ed9b2}
[data-theme="dark"] .grade-pick.pick-n{background:#49372c;color:#e6a573}
[data-theme="dark"] .grade-pick.pick-b{background:#303c51;color:#9bb8ed}
[data-theme="dark"] .grade-pick.pick-clear{background:#3a433d;color:#c3cdc6}
.add-student-form{display:flex;gap:8px;align-items:center}
.add-student-form input{min-width:220px;max-width:380px;width:55%;border:1px solid #dfe6e0;border-radius:8px;padding:9px 11px;background:#fff;color:#25382c;font:12px 'DM Sans'}
.add-student-form button{border:1px solid #cbd9ce;border-radius:8px;padding:9px 12px;background:#f8fcf9;color:#18764d;font:600 11px 'DM Sans';cursor:pointer}
[data-theme="dark"] .add-student-form input{background:#202b25;color:#e4ece6;border-color:#46564c}
[data-theme="dark"] .add-student-form button{background:#2d3d32;color:#83d09e;border-color:#465b4c}

[data-theme="dark"] .course-button:not(.active){background:#fff;color:#53615a;border-color:#e5ebe6}

:root.theme-transition,:root.theme-transition *,:root.theme-transition *::before,:root.theme-transition *::after{transition:background-color .36s ease,color .36s ease,border-color .36s ease,box-shadow .36s ease!important}
@media(prefers-reduced-motion:reduce){:root.theme-transition,:root.theme-transition *,:root.theme-transition *::before,:root.theme-transition *::after{transition:none!important}}

.teacher-tools{color:#66756b}
.teacher-tools #editHint{font-size:11px}
.teacher-password-form .teacher-admin-link{flex-basis:100%;color:#728178;font-size:10px;text-decoration:underline}
[data-theme="dark"] .teacher-tools{color:#bdc9c0}
[data-theme="dark"] .teacher-password-form .teacher-admin-link{color:#a5c5ae}
[data-theme="dark"] .name-col[title], [data-theme="dark"] .editable-cell{cursor:pointer}

.editable-cell{position:relative;cursor:pointer}[data-theme="dark"] .editable-cell:hover{background:#34453a}[data-theme="dark"] td[title*="войти"]{cursor:pointer}

.grade-picker{position:fixed;left:0;top:0;z-index:10000;transform:none}
