.grades-page{--g-navy:#11324e;--g-blue:#2c6d9c;--g-sky:#eaf4fa;--g-edge:#dce7ef;--g-txt:#243d51;min-height:80vh;background:#f2f6f9;color:var(--g-txt)}.grades-page [hidden]{display:none!important}.grades-hero{background:linear-gradient(120deg,#f8fbfd,#e6f0f7);border-bottom:1px solid var(--g-edge);padding:48px 0 54px}.grades-hero .back-link{margin-bottom:36px}.grades-overline{font-size:12px;letter-spacing:.19em;font-weight:900;color:#517d9b;margin-bottom:12px}.grades-hero h1{font-weight:850;letter-spacing:-.06em;font-size:clamp(42px,6vw,75px);margin:0 0 16px;line-height:1.1}.grades-hero p:last-child{font-size:18px;line-height:1.7;color:#587386;max-width:850px;margin:0}.grades-content{padding:38px 0 85px}.grades-login{display:grid;grid-template-columns:80px 1fr;gap:17px 25px;max-width:750px;margin:25px auto 0;padding:clamp(22px,3.5vw,40px);border:1px solid var(--g-edge);border-radius:16px;background:#fff;box-shadow:0 25px 65px #10324e13}.grades-login-icon{border-radius:17px;width:76px;height:76px;background:#e3f0f7;color:#1e5c83;font-size:43px;display:grid;place-items:center}.grades-login-copy h2{font-size:28px;font-weight:850;letter-spacing:-.05em;margin:0 0 5px}.grades-login-copy p{color:#607687;line-height:1.65;font-size:14px;margin:0}.grades-login form{grid-column:1/-1;display:grid;gap:10px;margin-top:10px}.grades-login label,.grades-search-wrap label{font-weight:800;color:#31536a;font-size:14px}.grades-password-line,.grades-search-line{display:flex;gap:11px;flex-wrap:wrap}.grades-password-line input,.grades-search-line input{flex:1;min-width:190px;padding:16px 18px;min-height:55px;font:inherit;font-size:17px;color:#12344e;border:1px solid #c9dbe6;border-radius:9px;background:#fff}.grades-password-line input:focus,.grades-search-line input:focus,.grades-cell-input:focus,.grades-head-input:focus{outline:3px solid #a1cbe580;border-color:#2c75a5}.grades-primary,.grades-secondary{border:1px solid #174f74;border-radius:9px;font:inherit;font-weight:850;min-height:46px;padding:10px 17px;cursor:pointer;transition:transform .16s,background .16s;white-space:nowrap}.grades-primary{background:#143f61;color:#fff}.grades-secondary{background:#fff;color:#194d6f}.grades-primary:hover:not(:disabled),.grades-secondary:hover:not(:disabled){transform:translateY(-2px)}.grades-primary:disabled,.grades-secondary:disabled{opacity:.45;cursor:not-allowed}.grades-status{font-size:14px;color:#376e91;min-height:18px;line-height:1.6;margin:8px 0 0}.grades-status.is-error{color:#ac3340}.grades-toolbar{display:flex;justify-content:space-between;gap:25px;align-items:center;background:#fff;border:1px solid var(--g-edge);padding:26px;border-radius:14px;margin-bottom:17px}.grades-toolbar h2{font-size:clamp(27px,3vw,41px);letter-spacing:-.05em;margin:0 0 6px}.grades-toolbar .grades-overline{margin:0 0 5px}.grades-role{margin:0;color:#557486;font-size:14px;font-weight:700}.grades-toolbar-actions,.grades-admin-buttons{display:flex;gap:9px;flex-wrap:wrap}.grades-search-wrap{background:#fff;border-radius:13px;border:1px solid var(--g-edge);padding:24px;margin-bottom:16px}.grades-search-wrap label{display:block;margin:0 0 9px}.grades-search-wrap input{max-width:450px}.grades-tabs{display:flex;gap:9px;overflow-x:auto;padding-bottom:11px;scrollbar-width:thin;margin-bottom:7px}.grades-tab{padding:13px 15px;border:1px solid #cadae5;background:#fff;border-radius:9px;color:#38617c;font:inherit;font-size:13px;font-weight:850;white-space:nowrap;cursor:pointer;transition:background .16s,transform .16s}.grades-tab:hover{transform:translateY(-2px)}.grades-tab.active{background:#123c5c;border-color:#123c5c;color:#fff}.grades-tab.dirty:after{content:" ●";color:#e9a53b}.grades-sheet-banner{display:flex;justify-content:space-between;align-items:center;gap:20px;background:linear-gradient(130deg,#153954,#286790);color:#fff;padding:24px 29px;border-radius:14px 14px 0 0}.grades-sheet-banner .grades-overline{color:#b6d5e9;font-size:11px;margin:0 0 8px}.grades-sheet-banner h3{font-size:clamp(26px,3vw,39px);line-height:1.1;letter-spacing:-.055em;color:#fff;margin:0 0 8px}.grades-sheet-banner p:last-child{margin:0;font-size:15px;color:#d5e8f4}.grades-count{font-size:14px;color:#fff;font-weight:850;background:#ffffff21;padding:10px 13px;border-radius:9px;white-space:nowrap}.grades-admin-panel{display:flex;align-items:center;justify-content:space-between;gap:15px;background:#e8f3f8;border:1px solid #c9dce9;padding:17px 20px;margin:13px 0;border-radius:12px}.grades-admin-panel strong,.grades-admin-panel small{display:block}.grades-admin-panel strong{font-size:16px;margin-bottom:3px}.grades-admin-panel small{font-size:12px;color:#4c7088;line-height:1.45;max-width:500px}.grades-table-wrap{width:100%;overflow-x:auto;overflow-y:visible;border:1px solid #cbdce7;border-top:0;background:#fff;border-radius:0 0 14px 14px;box-shadow:0 18px 40px #2345640e;scrollbar-color:#8eafc3 #edf4f7}.grades-table{border-collapse:separate;border-spacing:0;table-layout:fixed;min-width:3300px;width:max-content;background:#fff}.grades-table th,.grades-table td{border-right:1px solid #d7e4ec;border-bottom:1px solid #e1e9ee;min-width:132px;max-width:270px;padding:13px 12px;font-size:14px;line-height:1.55;vertical-align:middle;overflow-wrap:anywhere}.grades-table thead th{background:#164d73;color:#fff;font-size:13px;font-weight:800;text-align:center;vertical-align:middle;height:63px}.grades-table thead tr.grades-head-extra th{background:#2c6e99;height:49px;font-size:12px}.grades-table thead tr.grades-head-extra th:empty:after{content:"—";opacity:.23}.grades-table tr.odd td{background:#fff}.grades-table tr.even td{background:#eff6fa}.grades-table tr:hover td{background:#e1f0fa}.grades-table tr.found td{background:#fff0bd!important;box-shadow:inset 0 2px #cc9133,inset 0 -2px #cc9133}.grades-table tr.found td:first-child{box-shadow:inset 4px 0 #ce841d,inset 0 2px #ce841d,inset 0 -2px #ce841d}.grades-table .pinned{position:sticky;left:0;z-index:2;min-width:140px;width:140px;max-width:140px;font-weight:900;box-shadow:3px 0 8px #12426310}.grades-table thead .pinned{z-index:3;background:#0c3452}.grades-table td.pinned{color:#155579}.grades-table td.empty-cell{color:#a2b3bd}.grades-cell-input,.grades-head-input{font:inherit;border:1px solid transparent;border-radius:5px;outline:none;width:100%;min-width:104px;padding:8px 9px;color:#123a57;background:#ffffffb8;font-weight:650}.grades-cell-input:hover,.grades-head-input:hover{border-color:#a9c8dc}.grades-head-input{background:#ffffffef;color:#153d5c;font-size:12px;text-align:center}.grades-row-actions{min-width:90px!important;width:90px!important;max-width:90px!important;text-align:center}.grades-remove{border:1px solid #efbec1;color:#a52f39;font-size:12px;font-weight:800;background:#fff;padding:8px;border-radius:7px;cursor:pointer}.grades-empty{background:#fff;padding:35px;border:1px solid #d8e6ed;border-radius:0 0 13px 13px;color:#496b82;font-size:17px;line-height:1.7}.grades-bottom-note{font-size:13px;color:#647c8f;line-height:1.6;margin:15px 0}.grades-bottom-note:before{content:"↔";margin-right:7px;font-size:17px;color:#2e729a}@media(max-width:800px){.grades-toolbar,.grades-admin-panel{align-items:flex-start;flex-direction:column}.grades-search-line input{max-width:unset}.grades-sheet-banner{flex-wrap:wrap}.grades-admin-buttons{width:100%}}@media(max-width:600px){.grades-hero{padding:33px 0}.grades-content{padding:22px 0 62px}.grades-login{grid-template-columns:1fr}.grades-login-icon{width:57px;height:57px}.grades-login form{grid-column:1}.grades-password-line input,.grades-password-line button{width:100%}.grades-search-line button{flex:1}.grades-search-wrap{padding:17px}.grades-sheet-banner{padding:20px}.grades-tab{font-size:12px}.grades-toolbar{padding:20px}}@media(prefers-reduced-motion:reduce){.grades-page *{transition:none!important;scroll-behavior:auto!important}}.grades-admin-meta{display:flex;gap:9px;flex-wrap:wrap}.grades-admin-meta label{font-size:11px;font-weight:800;color:#466d86;display:grid;gap:4px}.grades-admin-meta input{font:inherit;font-weight:600;font-size:13px;padding:9px 11px;border:1px solid #c5d9e6;border-radius:7px;background:#fff;min-width:112px}.grades-admin-meta label:first-child input{width:205px}
