:root{--navy:#071b31;--ink:#10243a;--muted:#8090a2;--line:#dce6ed;--bg:#f3f7fa;--blue:#117ccc;--pink:#ca4169;--gold:#b77b08}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:"Segoe UI",Arial,sans-serif;display:grid;grid-template-columns:235px 1fr;min-height:100vh}aside{position:fixed;width:235px;height:100vh;background:var(--navy);color:#fff;padding:25px 17px;display:flex;flex-direction:column;overflow-y:auto}.tools{margin-top:24px;padding-top:18px;border-top:1px solid #16324f}.tools h4{margin:0 8px 11px;font-size:9px;letter-spacing:1.4px;color:#5d84a3;font-weight:800;text-transform:uppercase}.tools a{display:block;text-decoration:none;color:#c3d3e2;background:#0f2c48;border:1px solid #163a5c;border-radius:10px;padding:12px 13px;margin-bottom:9px;transition:background .15s}.tools a:last-child{margin-bottom:0}.tools a:hover{background:#153a5e}.tools a b{display:block;font-size:12px;color:#fff;margin-bottom:4px}.tools a small{display:block;font-size:10px;color:#8aa4bd;line-height:1.4}.quicklinks{display:flex;flex-direction:column;gap:9px;margin-top:18px}.btnwrap{position:relative}.btnlink{display:block;text-align:center;text-decoration:none;background:#1b8be0;color:#fff;font-weight:800;font-size:12px;letter-spacing:.3px;padding:13px 30px 13px 13px;border-radius:10px;transition:background .15s;position:relative}.btnlink:hover{background:#2196e8}.infobtn{position:absolute;top:8px;right:8px;width:18px;height:18px;background:rgba(255,255,255,.28);border-radius:50%;display:grid;place-items:center;font-size:10px;font-style:italic;font-family:Georgia,serif;color:#fff}.accesscard{position:fixed;width:280px;background:#0f2c48;border:1px solid #1f4468;border-radius:14px;padding:20px;opacity:0;pointer-events:none;transform:translateY(-4px);transition:.15s;box-shadow:0 20px 40px rgba(0,0,0,.35);z-index:9999}.accesscard.show{opacity:1;transform:translateY(0);pointer-events:auto}.accesscard small{display:block;font-size:9px;letter-spacing:1.5px;color:#5d84a3;font-weight:800;margin-bottom:10px}.accesscard a{display:block;color:#4fc3f7;font-size:13px;text-decoration:none;margin-bottom:10px;word-break:break-all}.accesscard p{margin:6px 0;color:#c3d3e2;font-size:12px}.brand{display:flex;gap:11px;align-items:center;margin:0 8px 29px}.brand>b{background:#1b8be0;border-radius:10px;padding:10px;font-size:20px}.brand strong,.brand small{display:block}.brand small{color:#88a2ba;font-size:10px}.brand nav{display:grid;gap:6px}.brand+nav button{border:0;background:transparent;color:#92a8be;text-align:left;border-radius:9px;padding:14px;font-weight:700}.brand+nav button.on{background:#16466f;color:#fff;border-left:3px solid #31a5f1}.term{margin-top:auto;background:#102f4d;border:1px solid #1b4668;border-radius:10px;padding:15px;font-size:11px}.term i{display:inline-block;width:8px;height:8px;background:#26c999;border-radius:50%;margin-right:7px}.term small{display:block;color:#89a3bb;margin:5px 0 0 18px}main{grid-column:2}header{height:64px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 32px;color:#7b8b9c;font-size:12px;position:sticky;top:0;z-index:5}header time{margin-left:auto}#menu{display:none}.wrap{padding:35px 38px;max-width:1500px;margin:auto}.page{display:none}.page.on{display:block}.title small{font-size:9px;letter-spacing:1.7px;color:#698199;font-weight:800}.title h1{font-size:30px;margin:8px 0 5px}.title p{margin:0 0 25px;color:#7d8d9e;font-size:13px}.hero{display:grid;grid-template-columns:1.35fr 1fr;gap:14px}.now,.nextday,.strip,.card,.month,.timeline,.agenda{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 8px 25px rgba(25,48,70,.06)}.now{padding:28px;background:linear-gradient(135deg,#09243e,#125b8d);color:#fff}.kicker{font-size:9px;letter-spacing:1.3px;color:#80a9c6;font-weight:800}.now h2{font-size:24px;margin:15px 0 5px}.now p{color:#b5cede}.bigtime{font-size:21px;font-weight:800;margin:25px 0 12px}.chip{background:#176d9e;padding:6px 9px;border-radius:5px;font-size:9px}.nextday{padding:28px}.nextday h3{font-size:15px;margin:14px 0 5px}.nextday p{font-size:11px;color:#8293a5}.datecards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:15px 0}.datecard{border:1px solid var(--line);background:#fff;border-radius:13px;padding:20px;text-align:left;color:var(--ink)}.datecard>small{font-size:9px;letter-spacing:1.1px;color:#7e91a4;font-weight:800}.datebody{display:flex;align-items:center;gap:15px;margin-top:17px}.datebox{width:57px;height:58px;display:grid;place-content:center;text-align:center;background:#fff5d9;color:var(--gold);border-radius:10px}.datebox b{font-size:21px}.datebox em{font-size:9px;font-style:normal;margin-top:4px}.datecard.exam .datebox{background:#fff0f5;color:var(--pink)}.datecard.end .datebox{background:#eaf4ff;color:var(--blue)}.datetext b,.datetext small{display:block}.datetext b{font-size:13px}.datetext small{color:#8797a7;margin-top:5px}.agenda{padding:22px}.agenda h2{font-size:17px}.lessonrow{display:grid;grid-template-columns:80px 1fr auto;padding:15px;border:1px solid var(--line);border-left:4px solid var(--c);border-radius:9px;margin-top:9px;align-items:center}.lessonrow time{color:var(--blue);font-weight:800}.lessonrow b{font-size:12px}.lessonrow small{display:block;color:#8795a3;margin-top:3px}.grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.day{background:#fff;border:1px solid var(--line);border-radius:11px;padding:13px}.day.today{border:2px solid #248bd2}.day h3{font-size:12px;margin:0 0 12px}.lesson{border:1px solid var(--line);border-left:4px solid var(--c);border-radius:8px;padding:11px;margin:8px 0;min-height:85px}.lesson time{font-size:9px;color:#708396}.lesson b{display:block;font-size:10px;margin:8px 0}.lesson small{font-size:9px;color:#8292a3}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.card{padding:19px;border-top:4px solid var(--c)}.card h3{font-size:13px}.card p{font-size:10px;color:#77899b}.assess{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.assess .card{display:grid;grid-template-columns:100px 1fr auto;align-items:center;border-top:1px solid var(--line);border-left:4px solid #d75c83}.status{font-size:8px;background:#edf3f5;padding:6px;border-radius:5px}.months{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.month{padding:16px}.month h3{text-transform:capitalize}.monthgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;text-align:center}.monthgrid span,.monthgrid button{aspect-ratio:1;border:0;border-radius:5px;display:grid;place-items:center;background:transparent;font-size:9px}.monthgrid .dow{aspect-ratio:auto;color:#8997a6}.monthgrid .event{background:#fff1b9}.monthgrid .exam{background:#f8bfd1}.monthgrid .sat{background:#cdeaca}.monthgrid .today{outline:2px solid var(--blue)}.countdowns{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:15px}.countdowns .card b{font-size:17px;color:var(--blue);display:block;margin:8px 0}.timeline{padding:22px}.eventrow{display:grid;grid-template-columns:100px 20px 1fr;align-items:center;padding:8px;opacity:.95}.eventrow.past{opacity:.45}.eventrow time{text-align:right;padding-right:12px;font-size:10px}.dot{width:10px;height:10px;border-radius:50%;background:#318fc7}.eventrow.exam .dot{background:#db6388}.eventrow.holiday .dot{background:#e0aa2f}.eventrow.saturday .dot{background:#60a65e}.eventrow div:last-child{border-left:1px solid var(--line);padding:10px 15px}.eventrow b{font-size:12px}.eventrow small{display:block;color:#8090a0;margin-top:4px}#modal{display:none;position:fixed;inset:0;background:#061525aa;place-items:center;z-index:20}#modal.on{display:grid}#modal article{background:#fff;border-radius:15px;padding:27px;width:min(480px,90%);position:relative}#close{position:absolute;right:12px;top:12px;border:0;border-radius:50%;font-size:20px}@media(max-width:900px){.grid{grid-template-columns:repeat(2,1fr)}.months{grid-template-columns:repeat(2,1fr)}}@media(max-width:650px){body{display:block}aside{transform:translateX(-100%);z-index:10;transition:.2s}aside.open{transform:none}main{display:block}header{padding:0 16px}#menu{display:block;margin-right:12px}.wrap{padding:25px 15px}.hero,.cards,.assess,.months,.countdowns{grid-template-columns:1fr}.datecards{display:flex;overflow:auto}.datecard{min-width:86%}.grid{grid-template-columns:1fr}.lessonrow{grid-template-columns:65px 1fr}.lessonrow>span:last-child{display:none}}
.todayclasses{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.todayclass{position:relative;overflow:hidden;min-height:270px;padding:30px;border:1px solid #cfdde7;border-radius:15px;background:linear-gradient(145deg,#fff,#f5f9fc);box-shadow:0 10px 28px rgba(23,48,72,.08)}.todayclass:before{content:"";position:absolute;inset:0 auto 0 0;width:6px;background:var(--class)}.todayclass.upnext,.todayclass.active{background:linear-gradient(135deg,#09243e,#125b8d);border-color:#125b8d;color:#fff;box-shadow:0 16px 35px rgba(9,53,87,.2)}.todayclass .kicker{color:#66839a}.todayclass.upnext .kicker,.todayclass.active .kicker{color:#82c4ed}.todayclass h2{font-size:24px;line-height:1.25;margin:18px 0 7px}.todayclass p{font-size:15px;color:#778da1}.todayclass.upnext p,.todayclass.active p{color:#bdd5e6}.todayclass .bigtime{margin:32px 0 16px}.classstate{display:inline-block;padding:7px 10px;border-radius:6px;background:#e9f3fa;color:#1778b7;font-size:10px;font-weight:800}.todayclass.upnext .classstate,.todayclass.active .classstate{background:#1674a8;color:#fff}.tomorrowbar{background:#fff;border:1px solid var(--line);border-radius:16px;padding:24px 26px;margin-top:16px;box-shadow:0 10px 28px rgba(23,48,72,.07)}.tomorrowmeta{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin-bottom:18px}.tomorrowmeta small{font-size:10px;letter-spacing:1.5px;color:#6f89a1;font-weight:800}.tomorrowmeta b{font-size:20px;color:var(--ink);font-weight:800}.tomorrowlist{display:flex;flex-wrap:wrap;gap:12px}.tomorrowitem{display:flex;align-items:center;gap:14px;background:#f4f9fc;border:1px solid var(--line);border-left:5px solid var(--c);border-radius:12px;padding:14px 18px;flex:1 1 260px}.tomorrowitem:first-child{background:linear-gradient(135deg,#09243e,#125b8d);border-left-color:transparent;color:#fff;box-shadow:0 12px 26px rgba(9,53,87,.22)}.tomorrowbadge{flex:0 0 auto;font-size:11px;font-weight:800;background:#e3edf4;color:#4c6a83;border-radius:8px;padding:6px 9px}.tomorrowitem:first-child .tomorrowbadge{background:#1c78ae;color:#fff}.tomorrowinfo{display:flex;flex-direction:column;gap:4px}.tomorrowitem time{font-weight:800;font-size:14px;color:var(--blue)}.tomorrowitem:first-child time{color:#8fd1ff}.tomorrowitem b{font-size:14px;font-weight:700}.tomorrowitem.empty{color:#8090a2;font-size:13px;background:transparent;border-left-color:var(--line)}@media(max-width:650px){.todayclasses{grid-template-columns:1fr}.todayclass{min-height:245px;padding:24px}.todayclass h2{font-size:21px}.tomorrowbar{padding:19px}.tomorrowitem{flex:1 1 100%}}.todayheading{position:relative;overflow:hidden;display:flex;flex-direction:column;margin-bottom:25px;background:#0c1622;border-radius:16px;padding:18px 28px 22px;box-shadow:0 16px 32px rgba(9,20,35,.3)}.todayheading:before{content:"";position:absolute;inset:0;background-image:linear-gradient(#ffffff0a 1px,transparent 1px),linear-gradient(90deg,#ffffff0a 1px,transparent 1px);background-size:24px 24px}.headtop{display:grid;grid-template-columns:auto 1fr auto;column-gap:22px;align-items:center;z-index:1;position:relative}.headtop .title{grid-column:1;grid-row:1}.headtop .title small{font-size:9px;letter-spacing:1.8px;color:#4f7a94;font-weight:800;font-family:monospace}.headtop .title h1{margin:3px 0 4px;color:#EC175B;font-size:28px}.headtop .title p{margin:0;color:#a9cfe2;font-size:15px;font-weight:600;line-height:1.35}.headtop .title p.weekday{margin:0}.headtop .title p.fulldate{margin:0;color:#7fa9c2}.weekstrip{grid-column:2;grid-row:1}.right{grid-column:3;grid-row:1/3;display:flex;flex-direction:column;align-items:flex-end;justify-content:center;height:100%;gap:8px;flex:0 0 auto;z-index:1}.clockrow{grid-column:2;grid-row:2;margin-top:-2px;text-align:center}.clockrow .time{font-size:30px;font-weight:800;color:#2ee6d6;letter-spacing:2px;font-family:monospace;text-shadow:0 0 14px #2ee6d688}.weekstrip{display:flex;gap:6px;flex:1;justify-content:center;z-index:1}.wsday{width:40px;height:50px;border-radius:9px;background:#0f2230;border:1px solid #1c3a4d;display:grid;place-content:center;text-align:center;color:#6fa0b8;font-size:9px;font-weight:700;font-family:monospace}.wsday b{display:block;font-size:14px;color:#cfe6f0}.wsday.today{background:transparent;border:none;padding:2px;display:flex;flex-direction:column;align-items:center;gap:3px}.gaugewrap{width:40px;height:40px;display:grid;place-items:center}.gauge{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;padding:4px}.gauge b{width:100%;height:100%;background:#0f2230;border-radius:50%;display:grid;place-content:center;color:#2ee6d6;font-size:13px;font-weight:800;font-family:monospace}.miniplane{width:14px;height:14px;color:#2ee6d6}.miniplane svg{width:100%;height:100%;transform:rotate(90deg)}.todaypulse{display:flex;align-items:center;gap:7px;background:#0f2230;border:1px solid #2ee6d655;color:#2ee6d6;padding:9px 14px;border-radius:20px;font-size:10px;letter-spacing:.6px;font-weight:800;font-family:monospace;z-index:1;flex:0 0 auto;cursor:default}.todaypulse i{width:8px;height:8px;background:#2ee6d6;border-radius:50%;box-shadow:0 0 0 5px #2ee6d633}.pulsewrap{position:relative}.scalepanel{position:fixed;background:#0c1622;border:1px solid #1c3a4d;border-radius:18px;padding:18px;box-shadow:0 24px 55px rgba(0,0,0,.5),0 0 0 1px rgba(46,230,214,.06);font-family:monospace;opacity:0;pointer-events:none;transform:translateY(-10px) scale(.97);transition:opacity .22s cubic-bezier(.2,.8,.2,1),transform .22s cubic-bezier(.2,.8,.2,1);z-index:9999;overflow:hidden}.scalepanel.show{opacity:1;pointer-events:auto;transform:translateY(0) scale(1)}.scalepanel:before{content:"";position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(#ffffff08 1px,transparent 1px),linear-gradient(90deg,#ffffff08 1px,transparent 1px);background-size:20px 20px}.scalepanel h4{position:relative;font-size:10px;letter-spacing:1.3px;color:#2ee6d6;font-weight:800;margin-bottom:14px;display:flex;align-items:center}.scalepanel .trail{position:relative;max-height:400px;overflow-y:auto;padding-left:22px;padding-right:2px}.scalepanel .trail::-webkit-scrollbar{width:4px}.scalepanel .trail::-webkit-scrollbar-thumb{background:#1c3a4d;border-radius:4px}.scalepanel .trail:before{content:"";position:absolute;left:5px;top:22px;bottom:22px;width:2px;background:linear-gradient(#2ee6d6,#5a8bff,#a25aff,#EC175B)}.scalepanel .step{position:relative;display:flex;align-items:center;gap:11px;padding:8px 6px;border-radius:10px;transition:background .15s}.scalepanel .step:hover{background:#0f2c48}.scalepanel .step:before{content:"";position:absolute;left:-17px;top:50%;transform:translateY(-50%);width:9px;height:9px;border-radius:50%;background:#1c3a4d;border:2px solid #33587a;transition:.15s}.scalepanel .step:hover:before{border-color:#2ee6d6;box-shadow:0 0 8px #2ee6d6}.scalepanel .step.now:before{background:#2ee6d6;border-color:#2ee6d6;box-shadow:0 0 8px #2ee6d6}.scalepanel .step.end:before{background:#EC175B;border-color:#EC175B;box-shadow:0 0 8px #EC175B}.stepimg{width:38px;height:38px;border-radius:9px;object-fit:cover;flex:0 0 auto;border:1px solid #1c3a4d;transition:transform .15s}.scalepanel .step:hover .stepimg{transform:scale(1.08)}.steptext{display:flex;flex-direction:column;gap:2px;min-width:0}.steptext small{font-size:7.5px;letter-spacing:.8px;color:#5f8aa3;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.steptext b{font-size:12.5px;color:#a9cfe2;font-weight:700;transition:color .15s}.scalepanel .step:hover .steptext b,.scalepanel .step.now .steptext b{color:#fff}.scalepanel .step.now .steptext b{color:#2ee6d6}.scalepanel .step.end .steptext b{color:#EC175B}.barshead{margin-top:28px;z-index:1;position:relative}.barshead .colhead b{font-size:16px;letter-spacing:1.2px;color:#2ee6d6;font-weight:800;font-family:monospace}.barshead .colhead small{display:block;font-size:11px;letter-spacing:.6px;color:#8fb8cf;font-weight:700;margin-top:3px}.bars{margin-top:10px;display:flex;flex-direction:column;gap:10px;z-index:1;position:relative}.bar{display:flex;align-items:center;gap:13px;background:#0f2230;border:1px solid #1c3a4d;border-radius:10px;padding:11px 13px}.days{flex:0 0 auto;text-align:center;min-width:44px}.days b{display:block;font-size:19px;font-weight:800;line-height:1;font-family:monospace}.days span{font-size:7px;letter-spacing:.7px;color:#6fa0b8;font-weight:700}.days.urgent b{color:#ff5f7e}.days.soon b{color:#f5a623}.days.ok b{color:#2ee6d6}.bar .mid{flex:1}.bar .mid .lbl{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px}.bar .mid .lbl b{color:#fff;font-size:11px;font-weight:800}.track{position:relative;height:7px;background:#0c1622;border:1px solid #1c3a4d;border-radius:4px;overflow:visible;margin:11px 0}.fill{height:100%;background:linear-gradient(90deg,#117ccc,#23bd78);border-radius:5px 0 0 5px}.fill.soon{background:linear-gradient(90deg,#b8770f,#f5a623)}.fill.urgent{background:linear-gradient(90deg,#c0193f,#ff5f7e)}.plane{position:absolute;top:50%;transform:translate(-50%,-50%);width:21px;height:21px;color:#fff;filter:drop-shadow(0 2px 5px rgba(0,0,0,.5)) drop-shadow(0 0 8px #23bd78cc)}.plane svg{width:100%;height:100%;transform:rotate(90deg)}.pill{background:#0f2c1e;border:1px solid #23bd7855;color:#3ddb8f;font-size:9px;font-weight:800;font-family:monospace;padding:5px 10px;border-radius:16px;flex:0 0 auto;white-space:nowrap}@media(max-width:650px){.todayheading{padding:16px}.headtop{flex-wrap:wrap;gap:14px}.headtop .title h1{font-size:26px}.headtop .title small{font-size:8px}.headtop .title p{font-size:14px}.weekstrip{width:100%;order:3;justify-content:space-between}.wsday{width:13%;height:48px}.todaypulse{display:none}.bar{flex-wrap:wrap;gap:10px}.bar .mid{flex:1 1 100%;order:3}.days{order:1}.pill{order:2;margin-left:auto}}