:root{--navy:#10233f;--navy-2:#17365f;--blue:#2563eb;--cyan:#0891b2;--gold:#d89c20;--bg:#f4f7fb;--card:#fff;--text:#172033;--muted:#667085;--line:#e4e9f1;--green:#14804a;--red:#c73333;--orange:#b65a12;--radius:16px;--shadow:0 10px 30px rgba(16,35,63,.08)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Arial,sans-serif;color:var(--text);background:var(--bg);font-size:15px;line-height:1.55}a{color:var(--blue);text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}h1,h2,h3{line-height:1.2;color:var(--navy);margin-top:0}h1{font-size:clamp(1.7rem,3vw,2.4rem);letter-spacing:-.035em}h2{font-size:1.2rem}p{margin-top:.4rem;color:#46536a}.sidebar{position:fixed;inset:0 auto 0 0;width:248px;background:linear-gradient(165deg,#10233f,#0a182d);color:#fff;padding:22px 16px;display:flex;flex-direction:column;z-index:50;overflow-y:auto}.brand{display:flex;align-items:center;gap:11px;color:inherit;font-weight:800;font-size:1.05rem}.brand-mark{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:12px;background:linear-gradient(135deg,var(--gold),#f8c85b);color:#10233f;font-size:1.2rem;box-shadow:0 7px 18px rgba(216,156,32,.28)}.sidebar nav{display:grid;gap:4px;margin-top:28px}.sidebar nav a{color:#cdd8e8;padding:10px 12px;border-radius:10px;font-weight:600}.sidebar nav a:hover,.sidebar nav a.active{background:rgba(255,255,255,.11);color:#fff}.sidebar-help{margin-top:auto;border-top:1px solid rgba(255,255,255,.12);padding:18px 8px 0;display:grid;gap:3px;color:#cdd8e8;font-size:.79rem}.sidebar-help strong{color:#fff}.app-shell{min-height:100vh;margin-left:248px;display:flex;flex-direction:column}.topbar{height:70px;background:rgba(255,255,255,.92);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:flex-end;padding:0 clamp(18px,4vw,46px);position:sticky;top:0;z-index:40}.topbar-user{display:flex;align-items:center;gap:15px}.topbar-user div{display:grid;text-align:right}.topbar-user small{color:var(--muted)}.menu-button{display:none;background:none;border:0;font-size:1.5rem}.link-button{border:1px solid var(--line);background:#fff;border-radius:9px;padding:7px 11px;color:var(--navy)}.content{width:min(1500px,100%);margin:0 auto;padding:32px clamp(18px,4vw,46px);flex:1}.footer{padding:20px 45px;text-align:center;color:var(--muted);font-size:.82rem}.page-title{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:24px}.page-title h1{margin-bottom:4px}.page-title p{margin:0;color:var(--muted)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow);margin-bottom:22px}.card h2{margin-bottom:17px}.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:16px}.card-head h2{margin-bottom:0}.card-head>span,.card-head>small{color:var(--muted)}.grid{display:grid;gap:22px}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.form-layout{grid-template-columns:minmax(0,2fr) minmax(260px,1fr)}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:22px}.stats.mini{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:18px}.stat-card{background:linear-gradient(145deg,#fff,#f9fbff);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);display:grid;gap:5px;color:var(--text)}.stat-card span{color:var(--muted);font-weight:650}.stat-card strong{font-size:1.9rem;line-height:1.2;color:var(--navy)}.stat-card small{color:var(--blue)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 18px}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.span-2{grid-column:span 2}.span-3{grid-column:span 3}label{display:grid;gap:6px;font-weight:650;color:#344054;margin-bottom:14px}label small{font-weight:400;color:var(--muted)}input,select,textarea{width:100%;border:1px solid #ccd5e1;background:#fff;color:var(--text);border-radius:10px;padding:10px 12px;outline:none;transition:.15s}input:focus,select:focus,textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(37,99,235,.12)}textarea{resize:vertical}.button{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid #ced7e4;background:#fff;color:var(--navy);border-radius:10px;padding:9px 14px;font-weight:700;line-height:1.2}.button:hover{transform:translateY(-1px);box-shadow:0 5px 15px rgba(16,35,63,.1)}.button.primary{background:var(--blue);border-color:var(--blue);color:#fff}.button.success{background:var(--green);border-color:var(--green);color:#fff}.button.danger{background:var(--red);border-color:var(--red);color:#fff}.button.small{padding:6px 9px;font-size:.82rem}.button.large{padding:13px 20px;font-size:1rem}.button.wide{width:100%}.button-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.button-row form,td form,.topbar form{margin:0;display:inline-flex;gap:5px;align-items:center}.alert{border-radius:12px;padding:12px 15px;margin-bottom:18px;border:1px solid}.alert-success{background:#eaf8f0;border-color:#b8e4c9;color:#11643a}.alert-error{background:#fff0f0;border-color:#f1bcbc;color:#942323}.alert-info{background:#eef5ff;border-color:#c7ddff;color:#174f9d}.alert-warning{background:#fff7e5;border-color:#f4d48a;color:#7f4a08}.compact-alert{margin-top:12px}.badge{display:inline-block;border-radius:99px;background:#edf1f6;color:#4b5870;padding:4px 8px;font-size:.72rem;font-weight:800;white-space:nowrap}.badge-active,.badge-live,.badge-present,.badge-paid,.badge-published,.badge-success{background:#e4f7ec;color:#117243}.badge-scheduled,.badge-pending,.badge-partial,.badge-ready,.badge-planned{background:#fff5d7;color:#8a5900}.badge-blocked,.badge-cancelled,.badge-absent,.badge-failed,.badge-overdue{background:#ffe7e7;color:#a72c2c}.badge-ended,.badge-completed,.badge-inactive,.badge-archived,.badge-draft,.badge-excused{background:#edf1f6;color:#566276}.badge-late,.badge-unlisted{background:#ffeddc;color:#9a4a09}.list{display:grid}.list-item{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 0;border-bottom:1px solid var(--line);color:var(--text)}.list-item:last-child{border-bottom:0}.list-item div,.align-right{display:grid;gap:3px}.align-right{text-align:right;justify-items:end}.list-item small,td small{display:block;color:var(--muted);font-weight:400}.notice{border-bottom:1px solid var(--line);padding:13px 0}.notice:last-child{border-bottom:0}.notice p{margin:.35rem 0}.empty{border:1px dashed #c6d0de;border-radius:12px;padding:28px;text-align:center;color:var(--muted);background:#fafcff}.table-wrap{overflow:auto;width:100%}table{width:100%;border-collapse:collapse;min-width:760px}th{text-align:left;color:#5d6980;font-size:.76rem;text-transform:uppercase;letter-spacing:.04em;background:#f8fafc}th,td{padding:12px;border-bottom:1px solid var(--line);vertical-align:top}td strong{color:var(--navy)}td form{white-space:nowrap}.compact{width:auto;min-width:85px;padding:6px 8px;font-size:.82rem}.truncate{max-width:230px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}details summary{cursor:pointer;list-style:none}details summary::-webkit-details-marker{display:none}.popover{position:absolute;right:20px;z-index:20;width:280px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px;box-shadow:0 18px 50px rgba(16,35,63,.18)}.wide-popover{position:relative;right:auto;width:100%;margin-top:14px;box-shadow:none;background:#f9fbfd}.note-card{background:linear-gradient(145deg,#10233f,#1c416d);color:#fff}.note-card h2,.note-card h3,.note-card p,.note-card li{color:#fff}.note-card li{margin:.65rem 0}.check-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.check{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;padding:10px;margin:0;background:#fff}.check input{width:auto}.course-grid,.resource-grid,.notice-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.course-card,.resource-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow);display:flex;flex-direction:column}.course-card p,.resource-card p{flex:1}.eyebrow{display:inline-block;color:var(--blue);font-size:.72rem;font-weight:850;letter-spacing:.07em;text-transform:uppercase;margin-bottom:7px}.course-card dl{display:grid;gap:8px}.course-card dl div,.profile-list div{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding:7px 0}.course-card dt,.profile-list dt{color:var(--muted)}.course-card dd,.profile-list dd{margin:0;font-weight:650;text-align:right}.card-meta{display:flex;align-items:center;flex-wrap:wrap;gap:10px;color:var(--muted);font-size:.8rem;margin:12px 0}.lesson-text{margin-top:12px;padding:14px;background:#f7f9fc;border-radius:10px;max-height:400px;overflow:auto}.submission-status{background:#f0f7ff;border-left:4px solid var(--blue);padding:12px;margin:14px 0;display:grid;gap:4px}.question-preview{border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:12px;display:grid;gap:7px}.question-preview>span{padding:6px 10px;background:#f8fafc;border-radius:8px}.question-preview>span.correct{background:#e6f7ed;color:#12683e}.quiz-sheet{max-width:900px;margin-inline:auto}.timer{position:sticky;top:83px;float:right;background:var(--navy);color:#fff;border-radius:10px;padding:9px 13px;font-weight:800;z-index:10}.quiz-question{border:1px solid var(--line);border-radius:13px;padding:18px;margin:20px 0}.quiz-question legend{font-weight:750;padding:0 8px}.quiz-question legend small{font-weight:500;color:var(--muted)}.answer-option{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:10px;padding:11px;margin:8px 0}.answer-option input{width:auto}.score{font-weight:750;color:var(--green)}.classroom{min-height:520px}.classroom-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.waiting{min-height:430px;display:grid;place-items:center;align-content:center;text-align:center;gap:7px}.waiting>span{font-size:3.5rem;color:var(--blue)}.waiting p{max-width:650px}.feature-strip{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.feature-strip span{background:#eef5ff;color:#174f9d;border-radius:99px;padding:6px 11px;font-weight:700}.video-frame{position:relative;padding-top:56.25%;margin-top:18px;background:#000;border-radius:12px;overflow:hidden}.video-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.progress{width:180px;max-width:100%;height:8px;background:#e7edf4;border-radius:99px;overflow:hidden}.progress span{display:block;height:100%;background:linear-gradient(90deg,var(--cyan),var(--blue))}.profile-list{margin:0}.settings-card{max-width:950px}.settings-card hr{border:0;border-top:1px solid var(--line);margin:24px 0}.public-page{background:#0e2039}.login-wrap{min-height:100vh;display:grid;grid-template-columns:1.2fr .8fr}.login-visual{position:relative;display:flex;align-items:flex-end;padding:8vw;background:radial-gradient(circle at 25% 20%,rgba(37,99,235,.52),transparent 36%),radial-gradient(circle at 70% 65%,rgba(8,145,178,.35),transparent 32%),linear-gradient(145deg,#0b172a,#122b4b);overflow:hidden}.login-visual:after{content:"";position:absolute;width:420px;height:420px;border:1px solid rgba(255,255,255,.13);border-radius:50%;top:10%;right:-12%;box-shadow:0 0 0 60px rgba(255,255,255,.025),0 0 0 120px rgba(255,255,255,.018)}.login-copy{position:relative;z-index:1;max-width:650px}.login-copy h1{font-size:clamp(2.8rem,6vw,5.5rem);color:#fff;margin:.3rem 0 1rem}.login-copy p{font-size:1.1rem;color:#c9d8ec}.login-copy .eyebrow{color:#f7c65b}.login-panel{background:#f5f7fb;display:grid;place-items:center;padding:30px}.login-card{width:min(430px,100%);background:#fff;border-radius:22px;padding:38px;box-shadow:0 25px 65px rgba(0,0,0,.2)}.login-brand{color:var(--navy);margin-bottom:32px}.login-card h2{font-size:1.7rem;margin-bottom:5px}.login-card>p{margin-bottom:25px}.login-card>small{display:block;color:var(--muted);text-align:center;margin-top:20px}.install-body{background:linear-gradient(145deg,#0b172a,#17365f);min-height:100vh}.install-wrap{min-height:100vh;padding:35px;display:grid;place-items:center}.install-card{width:min(900px,100%);background:#fff;border-radius:22px;padding:36px;box-shadow:0 24px 80px rgba(0,0,0,.28)}.install-card>.brand-mark{margin-bottom:18px}.install-card .muted{color:var(--muted)}.requirements{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0}.requirements .badge.ok{background:#e4f7ec;color:#117243}.requirements .badge.bad{background:#ffe7e7;color:#a72c2c}.install-form h2{grid-column:span 2;border-bottom:1px solid var(--line);padding-bottom:9px;margin:18px 0 2px}.install-form .full{grid-column:span 2}.btn{display:inline-flex;border:1px solid var(--line);border-radius:10px;padding:11px 15px;font-weight:750}.btn.primary{background:var(--blue);color:#fff;border-color:var(--blue)}
.password-field{position:relative;width:100%}.password-field input{padding-right:66px}.password-toggle{position:absolute;right:7px;top:50%;transform:translateY(-50%);border:0;background:#eef4ff;color:#174f9d;border-radius:7px;padding:5px 9px;font-size:.76rem;font-weight:800}.password-toggle:hover{background:#dce9ff}.password-toggle:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
@media (max-width:1100px){.stats{grid-template-columns:repeat(2,1fr)}.course-grid,.resource-grid,.notice-grid{grid-template-columns:repeat(2,1fr)}.form-grid.three{grid-template-columns:repeat(2,1fr)}.span-3{grid-column:span 2}.login-wrap{grid-template-columns:1fr 1fr}}
@media (max-width:820px){.sidebar{transform:translateX(-105%);transition:.2s}.sidebar.open{transform:translateX(0);box-shadow:20px 0 50px rgba(0,0,0,.22)}.app-shell{margin-left:0}.menu-button{display:block;margin-right:auto}.grid.two,.grid.form-layout{grid-template-columns:1fr}.topbar{padding-inline:18px}.content{padding:24px 16px}.login-wrap{grid-template-columns:1fr}.login-visual{min-height:36vh;padding:35px}.login-copy h1{font-size:2.7rem}.login-panel{padding:20px}.check-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:580px){body{font-size:14px}.stats,.stats.mini,.course-grid,.resource-grid,.notice-grid,.form-grid,.form-grid.three{grid-template-columns:1fr}.span-2,.span-3,.install-form h2,.install-form .full{grid-column:span 1}.card{padding:16px;border-radius:13px}.content{padding-inline:12px}.topbar-user div{display:none}.page-title{align-items:flex-start}.classroom-head{align-items:flex-start;flex-direction:column}.login-visual{min-height:300px}.login-card{padding:26px}.install-wrap{padding:12px}.install-card{padding:22px}.popover{position:fixed;inset:auto 12px 12px;width:auto}.timer{top:75px}.check-grid{grid-template-columns:1fr}}
@media print{.sidebar,.topbar,.footer,.button,form{display:none!important}.app-shell{margin:0}.content{padding:0}.card{box-shadow:none;break-inside:avoid}}
