@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700;800&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--deep:#082e28;--green:#087c61;--accent:#11b889;--mint:#e9f8f2;--muted:#6b837d;--line:#e2ece9;--canvas:#f3f7f6;--white:#fff;--shadow:0 12px 45px rgba(8,51,42,.07)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:#173b35;background:var(--canvas);font:14px/1.6 'DM Sans',system-ui,Segoe UI,sans-serif}a{color:#087c61;text-decoration:none}h1,h2,h3,b,strong{font-family:Manrope,'DM Sans',sans-serif}h1,h2,h3{letter-spacing:-.035em}h2{line-height:1.3}button,input,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}.brand-icon{width:42px;height:42px;background:linear-gradient(135deg,#19c795,#078163);display:grid;place-items:center;border-radius:13px;color:white;font-weight:900;font-size:22px;box-shadow:0 8px 18px #0c9b7544;flex:none}.wordmark,.side-brand{display:flex;align-items:center;gap:13px;font-size:18px;font-weight:800;color:#fff;letter-spacing:.025em}.wordmark small,.side-brand small{display:block;color:#a8d9ca;font-weight:500;letter-spacing:.16em;font-size:9px}.eyebrow{font-size:11px;font-weight:800;color:#07946e;letter-spacing:.15em}.muted{color:var(--muted)}
/* Public entry: login selection only */.landing-body{background:#071f1c;color:white;min-height:100vh}.landing-shell{min-height:100vh;background:radial-gradient(ellipse at 12% 22%,#15574b 0,transparent 43%),radial-gradient(ellipse at 92% 15%,#13463e 0,transparent 36%),#071f1c;display:flex;flex-direction:column}.landing-nav{width:min(1190px,calc(100% - 48px));margin:0 auto;display:flex;align-items:center;justify-content:space-between;padding:32px 0}.nav-badge{border:1px solid #376158;padding:9px 14px;border-radius:99px;color:#a4c9bf;font-size:10px;letter-spacing:.12em}.landing-main{width:min(1190px,calc(100% - 48px));margin:auto;display:grid;grid-template-columns:1.13fr .87fr;gap:90px;align-items:center;padding:75px 0 95px}.landing-copy h1{font-size:clamp(36px,4vw,58px);line-height:1.17;margin:20px 0 25px;color:white;max-width:720px}.landing-copy p{max-width:590px;color:#b4ccc5;font-size:16px}.mini-points{display:flex;gap:14px;flex-wrap:wrap;margin-top:37px}.mini-points span{color:#d0ece3;background:#ffffff0b;border:1px solid #39665d;border-radius:9px;padding:8px 10px;font-size:11px}.portal-chooser{background:white;color:#1d3f38;border-radius:25px;padding:35px;box-shadow:0 30px 90px #0004}.portal-chooser h2{font-size:27px;margin:8px 0}.portal-chooser>.muted{margin:0 0 28px}.portal-option{display:flex;align-items:center;gap:15px;border:1px solid var(--line);padding:17px;border-radius:15px;margin:12px 0;color:#164037;transition:transform .2s,border-color .2s,box-shadow .2s}.portal-option:hover{transform:translateY(-2px);border-color:#6dbda5;box-shadow:0 10px 30px #087c6118}.option-icon{width:53px;height:53px;border-radius:13px;display:grid;place-items:center;font-size:27px;flex:none}.option-icon.student{background:#e4f8ee;color:#008260}.option-icon.admin{background:#e7f0fa;color:#35689d}.portal-option strong{display:block;font-size:14px}.portal-option small{display:block;color:#729088;font-size:12px}.chevron{margin-left:auto;font-size:21px}.security-note{color:#77948d;font-size:11px;margin-top:23px}.landing-footer{width:min(1190px,calc(100% - 48px));margin:auto auto 0;padding:25px 0;display:flex;justify-content:space-between;color:#7da69c;font-size:11px;border-top:1px solid #30544a}
/* Login screens */.auth-screen{min-height:100vh;background:linear-gradient(135deg,#082e28 0%,#095849 48%,#073b34 100%);display:grid;place-items:center;padding:40px 20px}.auth-wrap{width:min(1000px,100%);display:grid;grid-template-columns:1fr 440px;align-items:center;gap:72px}.auth-info{color:#fff}.auth-info h1{font-size:clamp(32px,3.6vw,48px);line-height:1.2;margin:27px 0}.auth-info p{font-size:15px;color:#c0ded4}.auth-kicker{display:block;margin-top:65px;color:#64ddb0;letter-spacing:.18em;font-size:11px;font-weight:800}.feature-strip{margin-top:35px;display:flex;gap:12px;flex-wrap:wrap}.feature-strip span{border:1px solid #ffffff33;background:#ffffff09;padding:9px 13px;border-radius:10px;color:#d4f4e8}.auth-card{background:#fff;padding:38px 36px;border-radius:23px;box-shadow:0 25px 80px #031e1b55}.auth-card h2{font-size:27px;margin:8px 0 3px}.auth-card .muted{font-size:13px}.login-symbol{background:#e5f7f0;color:#077f5d;font-size:28px;border-radius:13px;width:54px;height:54px;display:grid;place-items:center;margin-bottom:20px}.auth-form{margin:23px 0 5px}.auth-form label{display:block;font-weight:700;font-size:12px;margin:15px 0 7px}.auth-form input{height:48px}.primary-btn{width:100%;margin-top:20px;padding:13px 18px;border:0;background:linear-gradient(110deg,#0d966c,#04644f);color:#fff;border-radius:10px;font-weight:700}.switch-link{display:block;text-align:center;margin-top:20px;font-size:12px}.auth-screen .notice{margin-bottom:15px}
/* Internal dashboards */.app-frame{display:flex;min-height:100vh}.sidebar{width:252px;background:linear-gradient(180deg,#0b3830,#082821);color:#d6f1e9;min-height:100vh;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;flex:none;padding:27px 16px}.side-brand{padding:0 12px 36px}.side-brand strong{font-size:18px;letter-spacing:.03em}.side-label{font-size:10px;letter-spacing:.16em;color:#78ab9e;margin:6px 15px 15px;font-weight:700}.side-nav{display:grid;gap:5px}.side-nav a{color:#c8e0d9;padding:12px 13px;border-radius:11px;font-weight:600}.side-nav a:hover,.side-nav a.active{background:#1c5b4b;color:white}.sidebar-bottom{margin-top:auto;padding:20px 12px 0;border-top:1px solid #356055;font-size:12px}.online-dot{display:inline-block;width:7px;height:7px;background:#40d69d;border-radius:50%;margin-right:8px}.outline-light{display:block;background:none;color:#c5f7e9;border:1px solid #598276;padding:8px 13px;border-radius:8px;margin-top:16px;width:100%}.app-main{flex:1;min-width:0}.topbar{height:89px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:15px 38px}.topbar small{font-size:10px;font-weight:800;color:#659287;letter-spacing:.16em}.topbar h2{font-size:19px;margin:1px 0}.top-avatar{background:#e6f6ef;border-radius:50%;width:40px;height:40px;display:grid;place-items:center;color:#007956;font-weight:800}.workspace{max-width:1400px;margin:0 auto;padding:30px 38px}.hero{background:linear-gradient(112deg,#0c5c4d,#0a9a71);color:#fff;border-radius:18px;padding:32px 36px;box-shadow:var(--shadow);position:relative;overflow:hidden}.hero:after{content:"";width:290px;height:290px;border:1px solid #ffffff25;border-radius:50%;position:absolute;right:-60px;top:-145px;box-shadow:0 0 0 55px #ffffff06,0 0 0 100px #ffffff04}.hero .eyebrow{color:#baf9da}.hero h1{font-size:clamp(23px,2.5vw,31px);margin:5px 0}.hero p{margin:5px 0}.stats,.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:17px;margin:22px 0}.metrics{grid-template-columns:repeat(4,1fr)}.stats>div,.metrics>div{background:white;padding:23px;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}.stats b,.metrics b{display:block;font-size:28px;line-height:1.3;color:#0c6f54}.stats span,.metrics span{display:block;color:#718f85;font-size:12px;margin-top:7px}.panel{background:#fff;padding:27px;border:1px solid var(--line);border-radius:17px;box-shadow:var(--shadow);margin:23px 0}.panel h1,.panel h2{margin:0 0 15px}.panel h2{font-size:19px}.panelhead{display:flex;justify-content:space-between;align-items:center;gap:12px}.scroll{overflow:auto}table{border-collapse:collapse;width:100%;text-align:left}td,th{padding:14px;border-bottom:1px solid var(--line)}th{font-size:11px;color:#728e84;background:#f6faf8;text-transform:uppercase;letter-spacing:.05em}td{font-size:13px}tbody tr:hover{background:#f7faf9}.btn,button:not(.link):not(.outline-light):not(.primary-btn){display:inline-block;background:#0b8263;color:#fff;padding:10px 17px;border:0;border-radius:9px;font-weight:700}.notice{padding:13px 17px;margin:12px 0;border-radius:10px;font-size:13px}.notice.success{background:#e3f9ef;color:#006344}.notice.error{background:#fdeae9;color:#ac3434}.cols,.grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.subpanel{padding:20px;background:#f8fbfa;border:1px solid var(--line);border-radius:13px}.subpanel h3{margin-top:0}form label{display:block;font-size:12px;font-weight:700;color:#355c50;margin:12px 0 6px}input:not([type=checkbox]),select{width:100%;padding:11px 12px;border:1px solid #cfe0d9;border-radius:9px;background:white;color:#1a473c;outline:none}input:focus,select:focus{border-color:#25a984;box-shadow:0 0 0 3px #12a5741b}.check{display:flex;gap:8px}.check input{width:auto}.tag{padding:6px 10px;background:#fff0cf;color:#86600f;font-size:11px;border-radius:8px}pre{white-space:pre-wrap;word-break:break-word;background:#0b3029;color:#dbfbee;padding:20px;border-radius:12px;overflow:auto}footer{color:#79958d;font-size:11px;text-align:center;padding:24px}.narrow{max-width:460px;margin:30px auto}
@media(max-width:980px){.landing-main{gap:30px}.sidebar{width:215px}.workspace{padding:25px}.topbar{padding:15px 25px}.auth-wrap{gap:28px}}@media(max-width:740px){.landing-nav{padding:20px 0}.nav-badge{display:none}.landing-main{grid-template-columns:1fr;padding:28px 0 50px}.landing-copy h1{font-size:35px}.landing-footer{display:block}.landing-footer span{display:block;margin-bottom:9px}.auth-wrap{display:block}.auth-info{display:none}.auth-card{padding:28px}.sidebar{width:100%;height:auto;min-height:unset;position:static;padding:15px}.side-brand{padding:0 5px 13px}.side-nav{display:flex;flex-wrap:wrap}.side-nav a{font-size:11px;padding:8px}.sidebar-bottom{display:none}.app-frame{display:block}.topbar{height:auto;padding:15px 20px}.workspace{padding:18px}.stats,.metrics,.cols,.grid{grid-template-columns:1fr 1fr}.panel{padding:18px}.hero{padding:25px}.portal-chooser{padding:24px}}@media(max-width:460px){.stats,.metrics,.cols,.grid{grid-template-columns:1fr}.topbar h2{font-size:15px}.portal-option{padding:12px}.option-icon{width:42px;height:42px}.landing-copy h1{font-size:31px}}
/* PATCH V4: mobile-phone login and group progress */
.v4-home{grid-template-columns:1.06fr .94fr;gap:54px}.v4-home .landing-copy h1{font-size:clamp(36px,3.6vw,58px)}
.phone-scene{display:flex;align-items:center;justify-content:center;padding:22px}.phone-device{position:relative;width:min(355px,100%);border:9px solid #193d36;border-radius:48px;padding:14px;background:#101e1c;box-shadow:0 38px 95px #0006,0 0 0 2px #5d8980;transform:rotate(-1.5deg)}.phone-device:after{content:'';position:absolute;right:-12px;top:135px;width:4px;height:60px;background:#8eaaa3;border-radius:0 4px 4px 0}.phone-speaker{position:absolute;z-index:2;width:92px;height:20px;border-radius:0 0 16px 16px;top:8px;left:50%;transform:translateX(-50%);background:#101e1c}.phone-screen{background:linear-gradient(180deg,#fff,#f4faf7);padding:42px 23px 24px;border-radius:30px;min-height:570px;color:#143e33}.phone-logo{display:grid;place-items:center;background:linear-gradient(135deg,#14be8f,#00755b);width:49px;height:49px;border-radius:15px;color:white;font-size:24px;font-weight:900;box-shadow:0 10px 20px #07976c34;margin-bottom:24px}.phone-screen h2{font-size:25px;margin:6px 0}.phone-screen .muted{font-size:12px;margin-bottom:20px}.phone-screen .auth-form{margin:0}.phone-screen input{height:45px}.phone-screen label{margin-top:13px}.phone-secure{font-size:11px;color:#78988e;text-align:center;margin-top:23px}.login-hint{font-size:12px!important;margin-top:32px!important;color:#8ac8b3!important}.v4-auth-screen{padding:25px}.v4-auth-layout{width:min(1060px,100%);display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:60px}.v4-auth-copy h1{font-size:clamp(32px,3.5vw,48px);color:white;line-height:1.2}.v4-auth-copy p{color:#c8e4da}.v4-auth-copy .eyebrow{display:block;margin-top:65px}.v4-auth-screen .notice{margin:8px 0}.admin-login-body{background:radial-gradient(circle at 15% 0%,#16664f,transparent 36%),#081e1b}.admin-login-page{min-height:100vh;display:grid;place-items:center;padding:24px}.admin-login-panel{background:#fff;border-radius:24px;box-shadow:0 25px 70px #0005;width:min(430px,100%);padding:38px}.admin-login-panel h1{font-size:27px;margin:5px 0}.admin-mark{display:grid;place-items:center;background:linear-gradient(135deg,#089c70,#045541);color:white;border-radius:15px;font-weight:900;font-size:24px;width:52px;height:52px;margin-bottom:22px}.v4-stats{grid-template-columns:repeat(4,minmax(0,1fr))}.status{padding:7px 11px;border-radius:99px;font-size:11px;font-weight:800;white-space:nowrap}.status.ok{background:#e2f8ed;color:#086e4b}.status.wait{background:#fff0da;color:#93591e}.soft-tag{color:#297d65;font-size:11px;background:#edf8f2;border-radius:99px;padding:6px 12px}
@media(max-width:900px){.v4-home,.v4-auth-layout{grid-template-columns:1fr;gap:18px}.v4-auth-copy{display:none}.v4-stats{grid-template-columns:1fr 1fr}.v4-home .landing-copy h1{font-size:37px}}@media(max-width:460px){.phone-scene{padding:8px}.phone-device{transform:none;border-width:7px}.v4-stats{grid-template-columns:1fr 1fr}}
