:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:#172a3b;background:#f4f6f7}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}a{color:#155d77}header{background:#152b3b;color:#fff;padding:20px max(26px,calc((100vw - 1190px)/2));display:flex;align-items:center;justify-content:space-between;gap:20px}.brand{font-weight:800;font-size:20px;letter-spacing:-.04em}.brand span{color:#80d4c9}header button{border:1px solid #8298a3;background:transparent;color:#fff;padding:9px 14px;border-radius:7px}main{max-width:1190px;margin:auto;padding:36px 26px 90px}.hero{display:grid;grid-template-columns:1.2fr .8fr;gap:45px;align-items:center;padding:35px 0 43px;border-bottom:1px solid #d9e0e3}.hero h1{font-size:clamp(38px,5vw,69px);letter-spacing:-.065em;line-height:1.04;margin:0 0 20px;max-width:650px}.hero p{font-size:17px;color:#536573;line-height:1.65;max-width:580px;margin:0}.diagram{height:250px;border-radius:15px;background:#203a4b;position:relative;overflow:hidden}.diagram:before{content:"";position:absolute;width:370px;height:370px;border:1px solid #60838c;border-radius:50%;left:50%;top:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 45px #203a4b,0 0 0 46px #486873,0 0 0 94px #203a4b,0 0 0 95px #486873}.diagram:after{content:"↗";position:absolute;color:#9ee0d7;font-size:110px;left:43%;top:17%;font-weight:200}.diagram small{position:absolute;color:#b1c9cf;bottom:20px;left:24px;letter-spacing:.2em;text-transform:uppercase}.section-title{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin:39px 0 20px}.section-title h2{font-size:24px;letter-spacing:-.04em;margin:0}.section-title p{color:#6b7b85;margin:0}.grade-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.grade{background:#fff;border:1px solid #d6e0e3;border-radius:12px;padding:23px;text-align:left;min-height:155px;display:flex;flex-direction:column;justify-content:space-between;transition:transform .15s,border-color .15s}.grade:hover,.grade.active{border-color:#308d90;transform:translateY(-2px)}.grade strong{font-size:53px;letter-spacing:-.08em;line-height:1}.grade span{color:#617480;font-size:13px}.course-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:11px}.course{background:#fff;border:1px solid #d6e0e3;text-align:left;padding:17px 18px;border-radius:9px;min-height:74px;color:#253b4a;font-weight:650}.course.active{background:#d9efec;border-color:#4d9e9e}.workspace{margin-top:35px;background:#fff;border:1px solid #d9e1e3;border-radius:14px;padding:28px}.workspace h2{margin:0;font-size:27px;letter-spacing:-.04em}.muted{color:#6a7c87}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:23px}.primary{border:0;background:#176e77;color:white;padding:11px 17px;border-radius:8px;font-weight:650}.secondary{border:1px solid #cbd7da;background:#fff;color:#284657;padding:9px 13px;border-radius:7px}.danger{border:0;background:transparent;color:#a83737;padding:8px}.resource{border:1px solid #dce4e6;border-radius:9px;margin:12px 0;overflow:hidden}.resource summary{padding:16px 18px;cursor:pointer;display:flex;align-items:center;gap:14px;list-style:none}.resource summary::-webkit-details-marker{display:none}.resource summary:after{content:"⌄";margin-left:auto;color:#78909a}.resource[open] summary:after{content:"⌃"}.file-icon{background:#e2f1ef;color:#176e77;padding:8px;border-radius:7px;font-size:12px;font-weight:800}.resource-title{font-weight:700}.resource-meta{font-size:12px;color:#788892;margin-top:3px}.resource-body{border-top:1px solid #e4eaec;padding:17px 18px 22px}.resource object{display:block;width:100%;height:500px;border:1px solid #dce4e6;border-radius:6px;background:#f7f8f8}.resource video{display:block;width:100%;max-height:560px;background:#172633;border-radius:6px}.resource-link{display:inline-block;margin-top:12px;font-size:14px}.discussion{border-top:1px solid #e3e9eb;margin-top:25px;padding-top:19px}.discussion h3{font-size:17px;margin:0 0 14px}.comment{border-left:3px solid #b9d9d8;padding:6px 0 8px 14px;margin:14px 0}.comment.reply{margin-left:24px;border-color:#d6e2e5}.comment small{color:#647c87}.comment p{white-space:pre-wrap;overflow-wrap:anywhere;margin:7px 0}.comment-actions{display:flex;gap:9px;align-items:center}.comment-actions button{border:0;background:transparent;color:#176e77;padding:3px 0}.comment-actions a{font-size:13px}.comment-form{margin-top:17px;display:flex;flex-direction:column;align-items:flex-start;gap:9px}.comment-form textarea{width:100%;min-height:75px}.comment-form input[type=file]{font-size:13px}input,textarea{border:1px solid #cbd8dd;border-radius:7px;padding:10px 12px;background:#fff;color:#20394a}input:focus,textarea:focus,button:focus-visible{outline:2px solid #3a9c9d;outline-offset:2px}.empty{padding:38px 20px;border:1px dashed #cbd8dd;text-align:center;color:#687f89;border-radius:9px}.auth-wrap{min-height:calc(100vh - 65px);display:grid;place-items:center;padding:30px}.auth{background:#fff;border:1px solid #d9e1e3;border-radius:13px;max-width:440px;width:100%;padding:31px;box-shadow:0 16px 50px #1c354008}.auth h1{margin:0 0 8px;letter-spacing:-.05em}.auth p{color:#647884;line-height:1.5}.auth form,.upload-form{display:grid;gap:13px}.auth label,.upload-form label{display:grid;gap:6px;font-size:13px;font-weight:650}.auth input,.upload-form input{width:100%}.notice{color:#a33131;min-height:20px}.modal-backdrop{position:fixed;inset:0;background:#142c3ab8;display:grid;place-items:center;padding:20px;z-index:10}.modal{background:#fff;border-radius:12px;width:min(500px,100%);padding:25px}.modal h2{margin:0 0 18px}.modal-head{display:flex;justify-content:space-between}.modal-head button{border:0;background:transparent;font-size:24px}.small{font-size:13px}.status{position:fixed;bottom:18px;right:18px;background:#183b44;color:#fff;padding:12px 16px;border-radius:8px;max-width:350px;z-index:20}@media(max-width:760px){header{padding:17px 20px}main{padding:25px 18px 70px}.hero{grid-template-columns:1fr;gap:25px}.diagram{height:160px}.grade-grid{grid-template-columns:repeat(2,1fr)}.grade{min-height:120px}.grade strong{font-size:43px}.section-title{align-items:start;flex-direction:column}.workspace{padding:17px}.toolbar{align-items:start;flex-direction:column}.resource object{height:360px}}@media(max-width:430px){.course-grid{grid-template-columns:1fr 1fr}.course{font-size:13px;padding:13px}.grade{padding:16px}}
:root{--course-border:#d6e0e3}
.course-card{background:#fff;border:1px solid var(--course-border);border-radius:9px;min-height:74px;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}
.course-card.active{background:#d9efec;border-color:#4d9e9e}
.course-select{border:0;background:transparent;text-align:left;padding:17px 18px;color:#253b4a;font-weight:650;min-height:70px;width:100%}
.course-actions{display:flex;gap:5px;padding:0 12px 10px}
.course-actions button{border:0;background:transparent;color:#176e77;font-size:12px;padding:3px 6px}
.course-actions .danger{color:#a83737}
.course-empty{margin-top:30px}
.resource-actions{display:flex;gap:10px;align-items:center;margin-top:13px}
.resource iframe{display:block;width:100%;height:500px;border:1px solid #dce4e6;border-radius:6px;background:#f7f8f8}
.pdf-pages{display:grid;gap:16px;justify-items:center;background:#e9edf1;padding:20px;border-radius:8px;max-height:680px;overflow:auto}
.pdf-pages img{display:block;width:min(100%,900px);height:auto;box-shadow:0 7px 25px #17374a24;background:#fff}
.upload-form select{width:100%;border:1px solid #cbd8dd;border-radius:7px;padding:10px 12px;background:#fff;color:#20394a}
/* Classroom polish */
body{background:#f3f6f8;color:#172b3e}
header{background:#0b1530;padding-top:21px;padding-bottom:21px;border-bottom:1px solid #ffffff1a}
.brand{letter-spacing:.015em;font-size:17px}
.brand span{color:#a9a5ff}
main{padding-top:43px}
.hero{border:0;border-radius:24px;background:linear-gradient(125deg,#112e48 0%,#1b3953 55%,#243b60 100%);padding:54px 58px;color:#fff;box-shadow:0 24px 60px #173b5119}
.hero h1{font-size:clamp(39px,5vw,68px)}
.hero p{color:#cee1e8}
.diagram{background:radial-gradient(circle at 50% 50%,#395a76,#122e4a 66%);border:1px solid #ffffff2e}
.diagram:before{box-shadow:0 0 0 45px #1d3c57,0 0 0 46px #7596ad,0 0 0 94px #1d3c57,0 0 0 95px #7596ad}
.diagram:after{color:#ddd2ff}
.section-title{margin-top:45px}
.section-title h2{font-size:27px}
.section-title p{margin-left:auto}
.section-title .secondary{white-space:nowrap}
.grade-card{background:#fff;border:1px solid #d7e1e7;border-radius:15px;min-height:157px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:0 8px 22px #233e4a08;transition:transform .15s,border-color .15s,box-shadow .15s;overflow:hidden}
.grade-card:hover,.grade-card.active{border-color:#6d84c6;box-shadow:0 14px 28px #233e4a15;transform:translateY(-2px)}
.grade-select{border:0;background:none;width:100%;min-height:134px;padding:22px;text-align:left;display:flex;flex-direction:column;justify-content:space-between;color:#17374a}
.grade-select strong{font-size:52px;letter-spacing:-.08em;line-height:1;overflow-wrap:anywhere}
.grade-select span{font-size:12px;color:#5c7281;font-weight:700;letter-spacing:.1em}
.grade-actions{display:flex;gap:7px;padding:0 15px 13px}
.grade-actions button{border:0;background:transparent;color:#176e77;font-size:12px;padding:3px 7px}
.grade-actions .danger{color:#a83737}
.course-card{border-radius:12px;box-shadow:0 5px 15px #233e4a07}
.course-card.active{background:#e4edf7;border-color:#7894cb}
.course-select{color:#1c3b50}
.workspace{border-radius:18px;box-shadow:0 12px 40px #233e4a0a}
.primary{background:#4334b8}
.primary:hover{background:#33269a}
.secondary:hover{border-color:#7b83b4;background:#f7f7fd}
.resource{border-radius:12px}
.auth-wrap{min-height:calc(100vh - 67px);position:relative;overflow:hidden;display:block;padding:0;background:radial-gradient(circle at 20% 30%,#26306a,#0a102b 56%,#070b1b)}
.web-threads-container{position:absolute;inset:0;overflow:hidden;pointer-events:none;opacity:.83}
.web-threads-container canvas{display:block;width:100%;height:100%}
.auth-layout{position:relative;z-index:1;min-height:calc(100vh - 67px);max-width:1210px;margin:auto;padding:44px 32px;display:grid;grid-template-columns:1fr 445px;align-items:center;gap:90px}
.auth-intro{color:#fff;max-width:575px;text-shadow:0 2px 20px #070b1b80}
.auth-eyebrow{letter-spacing:.22em;font-size:12px;font-weight:800;color:#bcb9ff;margin-bottom:22px}
.auth-intro h2{font-size:clamp(45px,5.5vw,76px);line-height:1.03;letter-spacing:-.065em;margin:0 0 24px}
.auth-intro p{font-size:18px;line-height:1.6;color:#e2dcff;max-width:460px;margin:0}
.auth{max-width:none;padding:38px 38px 27px;background:#fffffff0;backdrop-filter:blur(18px);border:1px solid #ffffffbd;border-radius:20px;box-shadow:0 30px 90px #03071f75}
.auth-mark{color:#5144b8;font-size:11px;font-weight:800;letter-spacing:.19em;margin-bottom:25px}
.auth h1{font-size:32px;margin-bottom:11px}
.auth p{margin:0 0 25px}
.auth label{font-size:14px}
.auth input{padding:13px 14px;border-color:#cbd0e0;background:#fff}
.auth .primary{padding:13px 16px;margin-top:4px}
.auth-foot{font-size:12px;color:#667689;text-align:center;border-top:1px solid #dfe2ea;margin-top:25px;padding-top:20px}
@media(max-width:850px){.auth-layout{grid-template-columns:1fr;gap:28px;max-width:550px;padding:55px 22px}.auth-intro h2{font-size:45px}.auth-intro p{font-size:16px}.hero{padding:37px 31px;gap:23px}.section-title{flex-wrap:wrap}.section-title p{margin-left:0}}
@media(max-width:500px){.auth-layout{padding:38px 18px}.auth-intro h2{font-size:39px}.auth{padding:28px 22px 22px}.hero{padding:30px 24px}.grade-select{padding:17px;min-height:112px}.grade-select strong{font-size:43px}.grade-card{min-height:130px}.section-title .secondary{width:100%}}
.auth-wrap{background:#030510}
.hyperspeed-container{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:1}
.hyperspeed-container canvas{display:block;width:100%;height:100%}
.hyperspeed-fallback{position:absolute;inset:0;overflow:hidden;background:#000;pointer-events:none}
.hyperspeed-fallback video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.hyperspeed-active .hyperspeed-fallback{visibility:hidden}
.auth-layout{isolation:isolate}
.auth-intro{text-shadow:0 3px 24px #000}
.auth-intro p{color:#d5e6ed}
.auth-eyebrow{color:#77d8e2}
.auth{background:#fffffff2}
.auth-mark{color:#116c80}
.auth .primary{background:#116e83;width:100%}
.auth .primary:hover{background:#0b5768}
.guest-divider{text-align:center;position:relative;color:#71808d;font-size:13px;margin:18px 0 15px}
.guest-divider:before,.guest-divider:after{content:"";position:absolute;top:50%;width:44%;border-top:1px solid #d8dfe7}
.guest-divider:before{left:0}.guest-divider:after{right:0}
.guest-entry{width:100%;padding:12px 15px;border:1px solid #8aa5b1;background:#f4f9fa;color:#15596a;border-radius:8px;font-weight:700}
.guest-entry:hover{background:#e9f3f5}
.role-guide{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:22px 0 0}
.role-guide>div{display:flex;flex-direction:column;gap:5px;padding:16px 18px;border:1px solid #dce5e9;border-radius:12px;background:#fff}
.role-guide strong{font-size:14px;color:#173c51}
.role-guide span{font-size:12px;line-height:1.45;color:#627887}
.readonly-note{background:#eef5f7;border:1px solid #d7e5e9;border-radius:8px;color:#506d7a;font-size:13px;padding:12px 14px;margin-top:18px}
.site-footer{display:flex;justify-content:center;align-items:center;gap:6px;min-height:66px;border-top:1px solid #dce5e9;color:#8b9aa4;background:#f3f6f8;font-size:12px;letter-spacing:.06em}
.site-footer strong{color:#637783;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.auth-wrap+.site-footer{background:#030510;border-color:#ffffff1a;color:#8ca4b5}
.auth-wrap+.site-footer strong{color:#b1dce4}
@media(max-width:760px){.role-guide{grid-template-columns:1fr}.role-guide>div{padding:12px 15px}}
