:root{color-scheme:light;--navy:#0f2748;--dark:#152a46;--accent:#087da7;--mint:#14866c;--bg:#f2f6fb;--muted:#60758b;--line:#dfe8f2;--danger:#b94146;--white:#fff;--shadow:0 14px 36px rgba(14,39,73,.07);font-family:Inter,Arial,"Segoe UI",sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--dark);min-width:320px}button,input,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.55;cursor:wait}a{color:#126ca0}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(24px,4vw,34px);letter-spacing:-.7px}h2{font-size:20px;margin-bottom:14px}h3{font-size:16px}p{line-height:1.55}small,.muted{color:var(--muted)}.boot{min-height:100vh;display:flex;gap:16px;align-items:center;justify-content:center}.spinner{width:24px;height:24px;border:3px solid #c7dbe9;border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.topbar{background:linear-gradient(105deg,#0f2748,#163f65);color:white;padding:19px max(18px,calc((100vw - 1220px)/2));display:flex;align-items:center;justify-content:space-between;gap:14px}.brand{display:flex;gap:13px;align-items:center}.brandmark{width:46px;height:46px;flex:0 0 46px;background:#fff;border-radius:14px;display:grid;place-items:center;color:#0f547e;font-weight:1000;font-size:21px}.brand b{display:block;font-size:17px;letter-spacing:.5px}.brand span{display:block;font-size:11px;opacity:.77;margin-top:2px;letter-spacing:.3px}.userbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.userbar .who{font-size:12px;text-align:right;line-height:1.5;max-width:240px}.pill{border:1px solid #d9e5f0;background:#eff7ff;color:#1e638c;border-radius:50px;padding:6px 10px;font-size:12px;font-weight:700;display:inline-flex;align-items:center;gap:5px}.pill.good{background:#e7f8ef;color:#16704e;border-color:#caeeda}.pill.warn{background:#fff5e8;color:#945d10;border-color:#f6dfb5}.pill.bad{background:#fff0f0;color:#a7333d;border-color:#f3d2d4}.pill.grey{background:#eef2f7;color:#5f6e7e;border-color:#dce3eb}.btn{border:0;background:#0d7299;color:white;padding:11px 16px;border-radius:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:filter .15s}.btn:hover{filter:brightness(.94)}.btn.secondary{background:#eaf3fa;color:#155e85}.btn.white{background:white;color:#173b5c}.btn.ghost{background:transparent;border:1px solid #ccdbe8;color:#215274}.btn.danger{background:#b9474b}.btn.sm{padding:8px 12px;font-size:12px;border-radius:9px}.btn.block{width:100%}.nav{background:white;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}.nav-inner{max-width:1220px;margin:auto;display:flex;gap:6px;padding:8px 16px;overflow:auto}.nav button{border:0;background:transparent;color:#50667f;font-weight:700;padding:11px 16px;border-radius:10px;white-space:nowrap}.nav button.active{background:#e6f4fb;color:#096e98}.wrap{max-width:1220px;margin:0 auto;padding:27px 18px 70px}.hero{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:20px}.hero h1{margin-bottom:5px}.section-title{display:flex;align-items:center;justify-content:space-between;gap:15px;flex-wrap:wrap;margin-bottom:15px}.section-title h2{margin:0}.card{background:white;border:1px solid #e7ecf4;border-radius:17px;box-shadow:var(--shadow);padding:20px}.card.soft{box-shadow:none}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:20px 0 26px}.stat{padding:20px;border:1px solid #e5ebf4;background:white;border-radius:16px;display:flex;flex-direction:column;gap:11px}.stat .label{font-size:13px;color:#637a92;font-weight:600}.stat strong{font-size:clamp(25px,3.5vw,36px);line-height:1}.stat .hint{font-size:11px;color:#7b8ea0}.stat.teal{border-bottom:4px solid #17a788}.stat.blue{border-bottom:4px solid #167da9}.stat.amber{border-bottom:4px solid #eeb052}.stat.red{border-bottom:4px solid #da6769}.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:16px}.field{display:flex;flex-direction:column;gap:7px;min-width:0}.field label{font-size:12px;color:#455b71;font-weight:750}.input{padding:11px 12px;border-radius:10px;background:#fff;border:1px solid #cad8e6;outline:none;color:#203d59;min-width:0;width:100%}.input:focus{border-color:#0d8fb9;box-shadow:0 0 0 3px #cdebf7}.toolbar .input{min-width:155px}.class-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.class-card{padding:17px 18px;background:#fff;border:1px solid #e2eaf4;border-radius:15px;box-shadow:0 8px 23px rgba(23,48,75,.045)}.class-card .head{display:flex;align-items:center;justify-content:space-between;gap:9px;margin-bottom:14px}.class-name{font-weight:850;font-size:18px}.class-line{font-size:14px;margin:8px 0}.absence{background:#f6f9fc;border-radius:9px;padding:10px 11px;font-size:13px;min-height:42px;line-height:1.6;margin-top:12px;overflow-wrap:anywhere}.absence b{font-weight:700}.p{color:#0b7e61}.kp{color:#b54149}.empty{color:#8091a3}.class-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:14px;font-size:11px;color:#708399}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px}.formgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.formactions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:15px}.divider{height:1px;background:#e3eaf2;margin:22px 0}.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse;font-size:13px;min-width:610px}.table th{color:#61748c;text-transform:uppercase;font-size:11px;letter-spacing:.4px;text-align:left;background:#f4f7fb;padding:12px}.table td{border-top:1px solid #eaf0f6;padding:12px;vertical-align:middle}.table tbody tr:hover{background:#f9fbfe}.info{background:#eaf6ff;border:1px solid #c9e6f8;border-radius:12px;padding:13px 14px;color:#225979;font-size:13px;line-height:1.6}.info.warning{background:#fff7e9;border-color:#f3ddb2;color:#875d20}.info.success{background:#e9f9f0;border-color:#c9ead9;color:#166b4c}.authpage{min-height:100vh;display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,480px)}.authart{background:linear-gradient(145deg,#0f2748,#0e5b7e);color:#fff;display:flex;align-items:center;padding:clamp(24px,6vw,90px)}.authart .copy{max-width:560px}.authart h1{font-size:clamp(32px,5vw,56px);line-height:1.1}.authart p{font-size:17px;opacity:.78}.authaside{display:flex;align-items:center;justify-content:center;padding:24px;background:#f5f9fd}.authbox{width:100%;max-width:385px}.authbox h2{font-size:27px}.authbox form{display:grid;gap:14px}.authbox .input{padding:14px}.authlinks{display:flex;justify-content:space-between;gap:12px;align-items:center;margin:24px 0 19px}.linkbutton{border:0;background:transparent;color:#0c739c;font-weight:750;cursor:pointer;padding:4px}.abs-row{display:grid;grid-template-columns:minmax(0,2fr) minmax(100px,1fr) auto;gap:10px;margin:11px 0;align-items:center}.abs-row .btn{height:43px}.report-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:16px}.mini-stat{background:#f1f7fb;border-radius:12px;padding:15px;text-align:center}.mini-stat strong{display:block;font-size:26px;color:#1c4663}.mini-stat small{font-size:12px}.top-note{margin:0 0 24px;color:#73879a}.tag{font-size:10px;border-radius:5px;background:#eff2f9;color:#406582;padding:4px 6px;font-weight:800}.statusdot{display:inline-block;width:8px;height:8px;background:#13b88a;border-radius:50%;margin-right:4px}.statusdot.offline{background:#d68726}.toast{position:fixed;bottom:22px;right:22px;z-index:30;background:#163d55;color:white;padding:13px 17px;border-radius:12px;box-shadow:0 12px 35px #122c4940;max-width:min(450px,calc(100vw - 40px));display:none;line-height:1.5}.toast.visible{display:block}.toast.error{background:#a02c35}.toast.good{background:#13735c}.invite-code{font-size:17px;letter-spacing:1px;font-family:ui-monospace,monospace;word-break:break-all;background:#f2f8fd;padding:13px 15px;border-radius:10px;border:1px dashed #bad5e7;margin:12px 0}.footer{font-size:12px;color:#8090a2;padding:15px 0;margin-top:30px}.mono{font-family:ui-monospace,Consolas,monospace}.nowrap{white-space:nowrap}.alignright{text-align:right}.hide{display:none!important}@media(max-width:950px){.class-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.authpage{grid-template-columns:1fr}.authart{padding:30px}.authart h1{font-size:35px}.authart p{font-size:14px}.authaside{padding:28px 18px}}@media(max-width:640px){.topbar{padding:14px 16px;align-items:flex-start}.brand b{font-size:15px}.brand span{max-width:180px;line-height:1.5}.userbar .who{display:none}.wrap{padding:20px 13px 65px}.hero{display:block}.hero .toolbar{margin-top:15px}.class-grid,.grid2,.formgrid{grid-template-columns:1fr}.stats{gap:9px}.stat{padding:14px}.stat strong{font-size:26px}.stat .label{font-size:12px}.toolbar{align-items:stretch}.toolbar .field{flex:1;min-width:120px}.toolbar .input{min-width:0}.abs-row{grid-template-columns:minmax(0,1fr) 87px auto;gap:6px}.abs-row .btn{padding:7px 9px}.report-summary{gap:7px}.mini-stat{padding:10px}.mini-stat strong{font-size:20px}.authart{padding:20px}.authart h1{font-size:29px}.authart p{display:none}.authbox h2{font-size:24px}}

/* ================= SĨ SỐ EDU v2 – giao diện giáo vụ  ================= */
:root{--navy:#0b2850;--dark:#142f4d;--accent:#1a70e5;--bg:#f4f7fb;--muted:#62758b;--line:#e1e8f2;--shadow:0 10px 30px rgba(26,55,93,.055)}
body{background:var(--bg)}
.topbar{background:#fff;color:#153150;border-bottom:1px solid #e4ebf5;padding-top:14px;padding-bottom:14px}
.brandmark{background:linear-gradient(135deg,#2478e4,#0b376d);color:#fff;border-radius:13px}
.brand b{color:#112e50}.brand span{color:#62738d;opacity:1}
.nav{border-bottom:1px solid #e3ebf4;box-shadow:0 4px 12px rgba(9,40,80,.02)}
.nav button.active{background:#e9f2ff;color:#175bbc}
.nav button:hover{color:#175bbc;background:#f2f7ff}
.topbar .userbar .btn.white{background:#edf4ff;color:#1a539e}
.wrap{max-width:1410px}
.btn{background:linear-gradient(135deg,#286dce,#1b5bb7);box-shadow:0 6px 14px rgba(22,87,168,.10)}
.btn.secondary{background:#eaf2fd;color:#1556a8;box-shadow:none}
.btn.ghost{box-shadow:none}
.card,.class-card,.stat{border-color:#e5ecf6}
.card{border-radius:22px}
.hero{margin-bottom:19px}
.hero h1{font-size:clamp(26px,3vw,33px);letter-spacing:-.8px}
.stats{margin:16px 0 23px}
.stat{border-radius:20px;padding:20px 22px;box-shadow:var(--shadow);border:1px solid #e6ecf6;min-height:129px}
.stat strong{font-size:clamp(30px,3vw,42px);letter-spacing:-1px}
.stat .label{font-size:13px;font-weight:800;letter-spacing:.2px}
.stat.teal{background:linear-gradient(115deg,#f1fff8,#fff);border-left:5px solid #18a677;border-bottom:0}
.stat.blue{background:linear-gradient(115deg,#edf5ff,#fff);border-left:5px solid #367ee1;border-bottom:0}
.stat.amber{background:linear-gradient(115deg,#fff9e9,#fff);border-left:5px solid #edae30;border-bottom:0}
.stat.red{background:linear-gradient(115deg,#fff0f0,#fff);border-left:5px solid #de6870;border-bottom:0}
.dashboard-banner{border-radius:23px;background:linear-gradient(110deg,#0d2d59,#165b9f 75%,#167cba);color:#fff;padding:25px 28px;display:flex;gap:20px;align-items:center;justify-content:space-between;overflow:hidden;position:relative;box-shadow:0 14px 29px rgba(14,62,130,.15)}
.dashboard-banner:after{content:'◎';position:absolute;font-size:220px;opacity:.055;right:24%;top:-85px;pointer-events:none}
.dashboard-banner h1{font-size:clamp(26px,3vw,36px);margin:9px 0 7px;color:#fff}
.dashboard-banner p{margin:0;color:#d8ebff}
.dashboard-banner .pill{background:#ffffff25;border-color:#ffffff42;color:#fff}
.dashboard-banner .banner-cta{border-radius:14px;background:#fff;color:#1250a0;padding:13px 18px;font-weight:800;text-decoration:none;white-space:nowrap;display:inline-flex;gap:9px;align-items:center;z-index:1}
.dashboard-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-top:20px}
.dashboard-progress{display:flex;align-items:center;gap:15px;flex:1;min-width:200px;background:white;padding:14px 17px;border-radius:15px;border:1px solid #e4ebf4}
.dashboard-progress-track{width:100%;height:11px;background:#e8eef7;border-radius:999px;overflow:hidden}
.dashboard-progress-fill{height:100%;background:linear-gradient(90deg,#16ae82,#42d1a9);border-radius:999px;transition:width .3s}
.dashboard-warning{padding:15px 20px;background:#fffaf0;border:1px solid #f4e1bb;border-radius:16px;margin:17px 0;color:#7c541d;line-height:1.65}
.dashboard-warning strong{color:#76501a}
.dashboard-warning .alert-sub{display:block;color:#977144;font-size:12px}
.class-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.class-card{border-radius:20px;padding:19px 20px;box-shadow:var(--shadow);position:relative}
.class-card[data-status="missing"]{border-left:5px solid #efad45;background:linear-gradient(120deg,#fffefb,#fff)}
.class-card[data-status="done"]{border-left:5px solid #1fbc86}
.class-name{font-size:21px;color:#16385f}
.class-card .absence{background:#f6f9fd;border:1px solid #ebeff5;min-height:72px;padding:12px}
.class-card .head{margin-bottom:11px}.class-foot{margin-top:13px}
.class-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.class-metric{background:#f4f7fb;border-radius:10px;padding:10px 9px;display:flex;flex-direction:column;gap:5px}
.class-metric span{color:#71839a;font-size:11px;font-weight:800}
.class-metric strong{font-size:22px;color:#1c3f62;font-variant-numeric:tabular-nums}
.class-metric.absent strong{color:#c84756}
.class-card .absence{font-size:13px;line-height:1.65}
.class-card .abs-header{font-size:11px;color:#637a90;font-weight:800;display:block;margin-bottom:4px;text-transform:uppercase;letter-spacing:.3px}
.tv-entry-link{color:inherit;text-decoration:none}
@media(max-width:1050px){.dashboard-banner{align-items:flex-start}.class-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:670px){.dashboard-banner{display:block;padding:22px}.dashboard-banner .banner-cta{margin-top:19px}.class-grid{grid-template-columns:1fr}.dashboard-bar{align-items:stretch}.dashboard-progress{flex-basis:100%}}


/* ================= MÀN HÌNH TIVI V3: BẢNG TOÀN BỘ LỚP ================= */
body.tv-mode{background:#eef4fb;color:#102e55;min-width:320px;overflow:hidden}
body.tv-mode #app,body.tv-mode #tv-demo{height:100dvh;min-height:0}
.tv-shell{box-sizing:border-box;width:100%;height:100%;min-height:0;display:flex;flex-direction:column;padding:12px 18px;gap:11px;background:radial-gradient(circle at 85% 5%,#dceeff,transparent 35%),#f1f6fc}
.tv-banner{background:linear-gradient(110deg,#072653,#09529a 69%,#167eb3);color:white;border-radius:16px;padding:13px 21px;display:grid;grid-template-columns:minmax(170px,1.1fr) minmax(300px,3fr) minmax(170px,1fr);align-items:center;gap:14px;box-shadow:0 9px 25px #12426a24;flex:none}
.tv-school{display:flex;align-items:center;gap:13px;font-size:14px;font-weight:850;line-height:1.45}.tv-school-logo{width:51px;height:51px;display:grid;place-items:center;flex:none;background:#ffffff20;border:1px solid #ffffff60;border-radius:13px}
.tv-heading{text-align:center}.tv-heading .tv-kicker{font-size:12px;letter-spacing:1.5px;color:#a7e2ff;font-weight:800}.tv-heading h1{font-size:clamp(23px,2vw,36px);margin:4px 0;font-weight:950;letter-spacing:.2px;color:white}.tv-heading p{margin:0;font-size:14px;color:#dceeff}
.tv-datetime{text-align:right;display:flex;flex-direction:column;gap:4px}.tv-clock{font-size:clamp(24px,2.6vw,44px);font-weight:900;color:#ffe394;font-variant-numeric:tabular-nums;line-height:1.15}.tv-connection{font-size:13px;color:#e3f6ff;font-weight:800}.tv-dot{display:inline-block;width:9px;height:9px;background:#22dc8b;border-radius:50%;box-shadow:0 0 0 4px #35df9030;margin-right:8px}.tv-dot.offline{background:#ffab52;box-shadow:none}
.tv-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;flex:none}.tv-summary-card{display:flex;align-items:center;gap:14px;border-radius:14px;background:#e6f0ff;border:1px solid #cde2fd;color:#1855aa;padding:13px 17px;min-height:88px}.tv-summary-icon{display:grid;place-items:center;flex:0 0 48px;width:48px;height:48px;border-radius:13px;background:#ffffffae;font-size:31px;font-weight:950}.tv-summary-card small{display:block;font-size:clamp(11px,.86vw,15px);font-weight:850;white-space:nowrap}.tv-summary-card strong{display:block;font-size:clamp(27px,2.5vw,42px);line-height:1.18;font-weight:950;margin-top:3px}.tv-summary-card em{font-style:normal;font-size:clamp(11px,.78vw,15px);font-weight:800;margin-left:6px}.tv-summary-card.green{background:#e6f8ed;border-color:#c6ebd6;color:#12744a}.tv-summary-card.gold{background:#fff2dd;border-color:#f2dbaa;color:#9f5b13}.tv-summary-card.violet{background:#f1eafa;border-color:#e2d7f6;color:#7149b7}
.tv-board{min-height:0;flex:1;display:flex;flex-direction:column;border-radius:16px;background:white;border:1px solid #dbe6f3;overflow:hidden;box-shadow:0 9px 28px #183c690b}.tv-board-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 16px;background:#f9fcff;flex:none}.tv-board-head h2{font-size:clamp(18px,1.28vw,25px);margin:0 0 3px;color:#0a3564;font-weight:950}.tv-board-head p{font-size:13px;color:#688198;margin:0;line-height:1.35}.tv-count{display:inline-block;color:#166ca7;background:#e7f2ff;border-radius:7px;padding:3px 8px;font-size:13px;margin-left:8px;vertical-align:middle}.tv-progress{height:12px;width:min(260px,24vw);background:#e1eaf4;border-radius:99px;overflow:hidden;flex:none}.tv-progress span{display:block;height:100%;background:linear-gradient(90deg,#00a78c,#27d4a4);border-radius:inherit;transition:width .3s}
.tv-table-scroll{flex:1;min-height:0;overflow:auto;scrollbar-gutter:stable;overscroll-behavior:contain}.tv-table-scroll:focus-visible{outline:3px solid #2f83db;outline-offset:-3px}.tv-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;color:#213b59;font-size:clamp(14px,1vw,19px)}.tv-table col.col-stt{width:5%}.tv-table col.col-class{width:8%}.tv-table col.col-small{width:8%}.tv-table col.col-tiny{width:5%}.tv-table col.col-status{width:15%}.tv-table col.col-detail{width:auto}
.tv-table thead th{position:sticky;top:0;z-index:2;text-align:left;background:#0e4075;color:white;font-size:clamp(12px,.85vw,16px);letter-spacing:.15px;font-weight:850;padding:12px 12px;border-right:1px solid #ffffff1c;white-space:nowrap}.tv-table thead th:nth-child(n+3):nth-child(-n+7){text-align:center}.tv-table tbody td{padding:10px 12px;vertical-align:middle;border-bottom:1px solid #e5ebf3;line-height:1.35;overflow-wrap:anywhere}.tv-table tbody tr:nth-child(even){background:#f6faff}.tv-table tbody tr.tv-unsubmitted{background:#fff8ee}.tv-table tbody tr.tv-unsubmitted:nth-child(even){background:#fff4e6}.tv-table tbody tr:hover{background:#e9f3ff}.tv-table .tv-number{color:#72869b;font-size:.9em;font-weight:700}.tv-table .tv-class-label{color:#073768;font-size:clamp(17px,1.18vw,23px);font-weight:950;white-space:nowrap}.tv-table .tv-num{text-align:center;font-weight:800;font-variant-numeric:tabular-nums}.tv-table .tv-absent{color:#cc4757;font-weight:950}.tv-status{display:inline-block;padding:6px 9px;border-radius:99px;font-size:clamp(12px,.83vw,16px);font-weight:900;white-space:nowrap}.tv-status.done{background:#dff8e9;color:#0b794e}.tv-status.pending{background:#ffead0;color:#a54d12}.tv-detail{font-size:clamp(13px,.89vw,17px);color:#52708c}.tv-p{color:#11835e}.tv-kp{color:#bf3745}.tv-empty{text-align:center;padding:55px 18px!important;color:#647e95}.tv-board-note{padding:8px 15px;background:#f2f7fd;color:#546e88;font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:space-between;gap:9px;flex-wrap:wrap;flex:none}.tv-board-note b{color:#b46a1b}
.tv-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;background:#0b3266;color:#e4f2ff;border-radius:13px;padding:8px 13px;flex:none}.tv-legend{font-size:13px;font-weight:750}.tv-legend b{color:#ffe48e}.tv-legend span{color:#c3e0f8}.tv-controls{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.tv-controls button,.tv-controls a{padding:8px 10px;border:1px solid #ffffff44;border-radius:8px;background:#ffffff17;color:#fff;text-decoration:none;font-size:12px;font-weight:800;cursor:pointer;white-space:nowrap}.tv-controls button:hover,.tv-controls a:hover{background:#ffffff36}.tv-controls button:focus-visible,.tv-controls a:focus-visible{outline:3px solid #64c7ff;outline-offset:2px}.tv-demo-watermark{position:fixed;right:9px;top:4px;background:#fff3d2;color:#80521a;padding:4px 7px;border-radius:6px;font-size:10px;font-weight:900}.tv-sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:1250px){.tv-banner{grid-template-columns:1fr 2fr 1fr}.tv-summary-card{padding:12px;gap:9px}.tv-table{font-size:14px}.tv-table thead th,.tv-table tbody td{padding:10px 7px}.tv-status{font-size:12px}.tv-school{font-size:12px}}
@media(max-width:900px){body.tv-mode{overflow:auto}body.tv-mode #app,body.tv-mode #tv-demo{height:auto;min-height:100dvh}.tv-shell{height:auto;min-height:100dvh;padding:9px;gap:9px}.tv-banner{display:flex;flex-wrap:wrap;justify-content:center;text-align:center;padding:13px}.tv-school{justify-content:center}.tv-datetime{text-align:center}.tv-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.tv-summary-card{min-height:85px}.tv-summary-card strong{font-size:28px}.tv-summary-card em{font-size:10px;display:block;margin:2px 0}.tv-summary-icon{width:34px;height:34px;flex-basis:34px;font-size:24px}.tv-board{flex:initial;min-height:460px}.tv-table-scroll{height:62vh;flex:initial}.tv-table{min-width:840px}.tv-board-head{display:block}.tv-board-head p{font-size:12px}.tv-progress{margin-top:8px;width:100%}.tv-footer{flex-wrap:wrap}.tv-legend{width:100%}.tv-controls{justify-content:flex-start}}
@media(max-width:500px){.tv-heading h1{font-size:22px}.tv-school-logo{width:38px;height:38px}.tv-datetime{width:100%}.tv-clock{font-size:32px}.tv-summary-card small{font-size:10px}.tv-summary-card{padding:9px;min-height:77px}.tv-board-note{font-size:12px}.tv-banner{gap:7px}}
@media(prefers-reduced-motion:reduce){.tv-progress span{transition:none}}

.nav-tv-link{margin-left:auto;display:inline-flex;align-items:center;padding:10px 15px;color:#155aac;text-decoration:none;border-radius:10px;font-weight:850;white-space:nowrap;background:#eaf4ff}.nav-tv-link:hover{background:#dbeafe}.nav-inner{min-height:58px;align-items:center}.nav-tv-link:focus-visible,.tv-controls button:focus-visible{outline:3px solid #1d81ef;outline-offset:3px}
