:root{--navy:#173b72;--navy-dark:#102b52;--blue:#2563eb;--blue-soft:#eef4ff;--ink:#172033;--muted:#738096;--bg:#f5f7fb;--surface:#fff;--line:#e5eaf1;--green:#18865b;--green-soft:#eaf8f1;--red:#c63d4f;--red-soft:#fff0f2;--amber:#a66a00;--amber-soft:#fff6df;--shadow:0 8px 28px rgba(22,42,72,.055);--radius:14px}*{box-sizing:border-box}html{font-size:14px}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}a{text-decoration:none;color:var(--blue)}button,input,select,textarea{font:inherit}.app-shell{display:grid;grid-template-columns:250px minmax(0,1fr);min-height:100vh}.sidebar{background:linear-gradient(180deg,var(--navy-dark),var(--navy));color:#fff;position:sticky;top:0;height:100vh;padding:20px 14px;display:flex;flex-direction:column}.brand{display:flex;gap:11px;align-items:center;padding:3px 10px 24px}.brand-mark{width:40px;height:40px;border-radius:12px;background:#fff;color:var(--navy);display:grid;place-items:center;font-weight:900;font-size:18px}.brand strong{display:block;font-size:15px;letter-spacing:.02em}.brand small{display:block;color:#b9c9e3;font-size:10px;margin-top:3px}.sidebar-nav{overflow:auto;padding-right:2px}.nav-section{color:#8fa8ca;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.13em;padding:17px 11px 7px}.nav-link{display:flex;align-items:center;gap:11px;color:#dce7f7;padding:10px 11px;border-radius:10px;margin:2px 0;font-size:13px;font-weight:600}.nav-link:hover,.nav-link.active{background:rgba(255,255,255,.12);color:#fff}.nav-icon{width:19px;text-align:center;font-size:13px}.sidebar-foot{margin-top:auto;padding:12px 11px;color:#c9d7ea;font-size:11px;display:flex;align-items:center;gap:8px}.status-dot{width:7px;height:7px;background:#42d392;border-radius:50%}.app-main{min-width:0}.topbar{height:68px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 30px;gap:18px;position:sticky;top:0;z-index:10}.top-search{height:40px;display:flex;align-items:center;gap:9px;background:#f6f8fb;border:1px solid #edf0f5;border-radius:10px;width:min(500px,55vw);padding:0 12px;color:#98a2b1}.top-search input{border:0;outline:0;background:transparent;width:100%;color:var(--ink)}.top-user{margin-left:auto;display:flex;align-items:center;gap:10px}.notif{font-size:8px;color:var(--blue);padding-right:5px}.avatar{width:38px;height:38px;border-radius:50%;background:#e7effb;color:var(--navy);display:grid;place-items:center;font-weight:800}.top-user-copy strong,.top-user-copy span{display:block}.top-user-copy strong{font-size:12px}.top-user-copy span{font-size:10px;color:var(--muted);margin-top:2px}.mobile-menu{display:none;border:0;background:transparent;font-size:20px}.content{padding:30px 34px 42px;max-width:1600px}.page-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:22px}.eyebrow{font-size:10px;color:var(--blue);font-weight:800;text-transform:uppercase;letter-spacing:.12em;margin-bottom:5px}.page-head h1{margin:0;font-size:27px;line-height:1.15;letter-spacing:-.025em}.page-head p{margin:7px 0 0;color:var(--muted);font-size:13px}.hero{background:linear-gradient(135deg,#fff,#f2f6fd);border:1px solid var(--line);border-radius:16px;padding:24px;margin-bottom:18px}.hero h2{margin:0;font-size:23px}.hero p{margin:7px 0 0;color:var(--muted)}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.main-side{grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr)}.panel,.form-card,.stat-card,.quick-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.panel{padding:20px}.panel + .panel{margin-top:14px}.form-card{padding:24px}.form-card form{width:100%}.panel-title{font-size:15px;font-weight:800;margin:0}.panel-subtitle{font-size:12px;color:var(--muted);margin-top:4px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.stat-card{padding:18px}.stat-icon{width:38px;height:38px;border-radius:11px;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center;font-weight:800}.stat-label{font-size:11px;color:var(--muted);margin-top:12px}.stat-value{font-size:24px;font-weight:850;margin:3px 0}.stat-note{font-size:11px;color:var(--green)}.quick-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.quick-card{padding:16px;color:var(--ink);transition:.15s}.quick-card:hover{transform:translateY(-1px);border-color:#c6d6ed}.quick-card b{display:block;margin-bottom:5px}.quick-card span{font-size:11px;color:var(--muted);line-height:1.5}.section-head,.toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}.toolbar > div{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.section-head{margin:26px 0 12px}.section-head h2{font-size:16px;margin:0}.muted{color:var(--muted)}.tiny{font-size:11px}.badge,.chip{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:6px 11px;font-size:11px;font-weight:750;background:#f1f4f8;color:#5d6879}.chip a{color:inherit}.chip.info a{color:inherit}.success{background:var(--green-soft);color:var(--green)}.warning{background:var(--amber-soft);color:var(--amber)}.danger{background:var(--red-soft);color:var(--red)}.info{background:var(--blue-soft);color:var(--blue)}.flash{display:flex;gap:9px;align-items:center;border-radius:11px;padding:12px 14px;margin-bottom:16px;font-size:13px}.flash-success{background:var(--green-soft);color:#166c4a;border:1px solid #ccebdc}.flash-danger{background:var(--red-soft);color:#9f3040;border:1px solid #f2ccd3}.form-section{padding:0 0 8px;margin:2px 0 16px;border-bottom:1px solid var(--line)}.form-section strong{font-size:13px}.form-section span{display:block;color:var(--muted);font-size:11px;margin-top:3px}.form-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px}.span-12{grid-column:span 12}.span-8{grid-column:span 8}.span-6{grid-column:span 6}.span-4{grid-column:span 4}.span-3{grid-column:span 3}.form-grid > .field{grid-column:span 4}.form-grid > .field.span-12{grid-column:span 12}.form-grid > .field.span-8{grid-column:span 8}.form-grid > .field.span-6{grid-column:span 6}.form-grid > .field.span-4{grid-column:span 4}.form-grid > .field.span-3{grid-column:span 3}.field{min-width:0}.field label{display:block;font-size:12px;font-weight:750;margin:0 0 7px;color:#263247}.field small{display:block;color:var(--muted);font-size:10px;margin-top:5px;line-height:1.4}.input{display:block;width:100%;min-height:42px;border:1px solid #dce3ec;background:#fff;border-radius:9px;padding:9px 11px;outline:0;color:var(--ink)}textarea.input{min-height:92px;resize:vertical}.input:focus{border-color:#86a9df;box-shadow:0 0 0 3px rgba(37,99,235,.08)}.check-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.check-item{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:9px;padding:9px 10px;font-size:11px;background:#fbfcfe}.check-item input{accent-color:var(--blue)}.form-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}.btn{display:inline-flex;white-space:nowrap;align-items:center;justify-content:center;gap:7px;min-height:38px;padding:8px 13px;border:1px solid transparent;border-radius:9px;font-size:12px;font-weight:750;cursor:pointer}.btn-primary{background:var(--blue);color:#fff}.btn-primary:hover{background:#1d55d0}.btn-light{background:#fff;border-color:var(--line);color:var(--ink)}.btn-danger{background:#fff;border-color:#efc5cc;color:var(--red)}.btn-success{background:var(--green);color:#fff}.btn-block{width:100%}.table-wrap{overflow:auto}.data-table{width:100%;border-collapse:separate;border-spacing:0;min-width:650px}.data-table th{text-align:left;background:#fafbfd;color:#7b8697;font-size:10px;text-transform:uppercase;letter-spacing:.06em;padding:11px 12px;border-bottom:1px solid var(--line);white-space:nowrap}.data-table td{padding:12px;border-bottom:1px solid var(--line);font-size:12px;vertical-align:middle}.data-table tbody tr:hover{background:#fcfdff}.data-table tr:last-child td{border-bottom:0}.user-cell{display:flex;align-items:center;gap:9px}.avatar-sm{width:32px;height:32px;border-radius:9px;background:#edf3fb;color:var(--navy);display:grid;place-items:center;font-weight:800}.empty{text-align:center;padding:40px 15px;color:var(--muted);font-size:12px}.list{display:flex;flex-direction:column}.list-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 0;border-bottom:1px solid var(--line)}.list-row:last-child{border-bottom:0}.wallet-card{background:linear-gradient(135deg,#173b72,#2b65ad);color:#fff;border-radius:16px;padding:24px;box-shadow:0 12px 28px rgba(23,59,114,.18)}.wallet-label{font-size:11px;opacity:.75}.money{font-size:31px;font-weight:900;letter-spacing:-.03em;margin:5px 0 10px}.wallet-meta{font-size:11px;opacity:.78}.wallet-actions{display:flex;gap:8px;margin-top:17px}.wallet-actions .btn{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.2);color:#fff}.table-search{width:220px}.note{padding:12px 14px;border:1px solid #dce8f7;background:#f5f9ff;color:#4c617c;border-radius:10px;font-size:12px;line-height:1.5}.demo-box{background:#fbfcfe;border:1px dashed #ccd6e5;border-radius:12px;padding:14px}.demo-box code{background:#eef2f7;padding:3px 6px;border-radius:5px}.login-page{min-height:100vh;display:grid;grid-template-columns:1fr 460px}.login-brand{background:linear-gradient(145deg,#102b52,#204f8f);color:#fff;padding:70px;display:flex;flex-direction:column;justify-content:center}.login-brand h1{font-size:42px;max-width:600px;line-height:1.05;margin:20px 0 12px}.login-brand p{max-width:520px;color:#cbd9ec;line-height:1.7}.login-points{margin-top:26px;display:grid;gap:10px;color:#dce8f8;font-size:13px}.login-form-wrap{display:grid;place-items:center;padding:35px;background:#fff}.login-card{width:min(380px,100%)}.login-card .brand{padding:0 0 28px}.login-card h2{font-size:25px;margin:0 0 6px}.login-card p{color:var(--muted);margin:0 0 24px;font-size:13px}.login-demo{margin-top:16px;padding:12px;border-radius:10px;background:#f7f9fc;color:var(--muted);font-size:10px;line-height:1.6}.rfid-box{text-align:center;padding:20px;border:1px solid var(--line);border-radius:12px;background:#fafcff}.rfid-icon{width:60px;height:60px;border-radius:18px;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center;font-size:26px;margin:0 auto 10px}.large-input{font-size:18px;text-align:center;letter-spacing:.05em}.money-input{font-size:22px;font-weight:800}.mobile-only{display:none}@media(max-width:1100px){.form-grid > .field.span-8,.form-grid > .field.span-6,.form-grid > .field.span-4,.form-grid > .field.span-3{grid-column:span 6}.stats,.quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:1fr 1fr}.main-side{grid-template-columns:1fr}.login-page{grid-template-columns:1fr 420px}}@media(max-width:800px){.form-grid > .field,.form-grid > .field.span-12,.form-grid > .field.span-8,.form-grid > .field.span-6,.form-grid > .field.span-4,.form-grid > .field.span-3{grid-column:span 12}.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;left:-270px;width:250px;z-index:30;transition:.2s}.sidebar-open .sidebar{left:0}.sidebar-open:after{content:"";position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:20}.mobile-menu{display:block}.topbar{padding:0 16px}.top-search{width:auto;flex:1}.top-user-copy{display:none}.content{padding:22px 16px}.page-head h1{font-size:23px}.form-grid{gap:11px}.span-8,.span-6,.span-4,.span-3{grid-column:span 12}.check-grid{grid-template-columns:1fr 1fr}.login-page{display:block}.login-brand{display:none}.login-form-wrap{min-height:100vh}.grid-2,.grid-3{grid-template-columns:1fr}}@media(max-width:480px){.stats,.quick-grid{grid-template-columns:1fr}.check-grid{grid-template-columns:1fr}.top-search{display:none}.content{padding:18px 12px}.form-card,.panel{padding:16px}.form-actions{flex-direction:column}.form-actions .btn{width:100%}}
/* V5 consistency fixes */
.form-card{overflow:hidden}.form-section{margin-bottom:20px}.form-grid + .form-actions{margin-top:20px}.form-actions .btn{min-width:110px}.toolbar .chip{margin:0}.data-table th:first-child,.data-table td:first-child{padding-left:16px}.data-table th:last-child,.data-table td:last-child{padding-right:16px}.data-table td .btn{min-height:32px;padding:6px 10px}.check-item{cursor:pointer;min-height:40px}.check-item:hover{border-color:#b9cae3;background:#f7faff}.table-wrap{border:1px solid var(--line);border-radius:11px}.table-wrap .data-table{border:0}.table-wrap .data-table th:first-child{border-top-left-radius:10px}.table-wrap .data-table th:last-child{border-top-right-radius:10px}.input::placeholder{color:#a2acba}.input[type="file"]{padding:8px;background:#fbfcfe}.form-section strong{color:#1b2a42}.page-head{min-height:54px}.page-head > div{min-width:0}.quick-grid a{display:block}.empty{border-top:1px solid var(--line)}

/* =========================================================
   LOGIN V6 — clean split layout, independent from app UI
   ========================================================= */
.login-body{background:#f5f8fc;min-height:100vh}
.login-page-v6{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(440px,.85fr);overflow:hidden}
.login-hero{position:relative;overflow:hidden;background:linear-gradient(145deg,#0d2b55 0%,#17477f 52%,#2d6db2 100%);color:#fff}
.login-hero:before{content:"";position:absolute;width:650px;height:650px;border-radius:50%;right:-260px;bottom:-310px;background:rgba(255,255,255,.08)}
.login-hero:after{content:"";position:absolute;width:420px;height:420px;border-radius:50%;left:-230px;bottom:-180px;background:rgba(255,255,255,.05)}
.login-hero-inner{position:relative;z-index:1;min-height:100vh;padding:34px clamp(34px,6vw,84px) 38px;display:flex;flex-direction:column}
.login-brand-top{display:flex;align-items:center;gap:13px;position:relative}
.login-brand-top strong,.mobile-brand strong{display:block;font-size:18px;letter-spacing:.01em}
.login-brand-top span,.mobile-brand span{display:block;margin-top:3px;font-size:11px;letter-spacing:.06em;color:#c9daf0}
.school-mark{width:50px;height:50px;border-radius:15px;background:#fff;color:#173b72;display:grid;place-items:center;font-weight:900;font-size:23px;box-shadow:0 8px 25px rgba(0,0,0,.12);flex:0 0 auto}
.school-mark.small{width:42px;height:42px;border-radius:12px;font-size:18px}
.hero-motto{margin-left:auto;font-size:12px;color:#d9e6f6;align-self:flex-start;padding-top:8px;white-space:nowrap}
.hero-copy{margin:auto 0;max-width:730px;padding:35px 0 20px}
.hero-kicker{font-size:10px;letter-spacing:.16em;font-weight:800;color:#b9d4f2}
.hero-copy h1{font-size:clamp(38px,4.7vw,64px);line-height:1.02;letter-spacing:-.045em;margin:16px 0 19px;color:#fff}
.hero-copy h1 em{font-style:normal;color:#d9ebff}
.hero-copy>p{max-width:670px;color:#d1e0f2;font-size:16px;line-height:1.7;margin:0}
.feature-row{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-top:38px;max-width:680px}
.feature-item{padding:12px 10px;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.07);border-radius:13px;backdrop-filter:blur(6px)}
.feature-icon{width:37px;height:37px;border-radius:11px;background:rgba(255,255,255,.15);display:grid;place-items:center;margin-bottom:10px;font-size:17px}
.feature-item b{display:block;font-size:12px}.feature-item span{display:block;color:#b9cce2;font-size:10px;margin-top:3px}
.hero-bottom{max-width:700px;padding-top:16px}
.quote-mark{font-family:Georgia,serif;font-size:50px;line-height:.7;color:#a9d0f7}
.hero-bottom p{max-width:470px;font-size:15px;line-height:1.65;font-style:italic;color:#e4eef9;margin:7px 0 7px}
.hero-bottom>span{font-size:11px;color:#c1d4e9}
.hero-pills{display:flex;gap:8px;margin-top:22px}
.hero-pills span{padding:9px 14px;border:1px solid rgba(255,255,255,.2);border-radius:999px;background:rgba(255,255,255,.08);font-size:10px;color:#e5eef8}
.login-panel{background:#f6f8fb;display:grid;place-items:center;padding:36px 44px}
.login-card-v6{width:min(100%,500px);background:#fff;border:1px solid #e3e9f1;border-radius:22px;padding:34px;box-shadow:0 18px 55px rgba(23,59,114,.09)}
.mobile-brand{display:none}
.login-heading h2{font-size:30px;line-height:1.1;margin:0;color:#102b52;letter-spacing:-.03em}.login-heading h2 span{font-size:25px}.login-heading p{color:#728198;line-height:1.55;font-size:13px;margin:9px 0 25px}
.login-alert{display:flex;gap:10px;align-items:center;padding:11px 13px;border-radius:10px;background:#fff0f2;color:#a33342;border:1px solid #f2ccd3;font-size:12px;margin-bottom:17px}.login-alert b{width:21px;height:21px;border-radius:50%;display:grid;place-items:center;background:#d94d5f;color:#fff}
.login-form-v6{display:grid;gap:16px}.login-field label{display:block;font-size:12px;font-weight:800;color:#25334a;margin-bottom:7px}.login-input-wrap{height:48px;border:1px solid #dce3ec;border-radius:11px;display:flex;align-items:center;background:#fff;transition:.15s}.login-input-wrap:focus-within{border-color:#6f9ee4;box-shadow:0 0 0 4px rgba(37,99,235,.08)}
.input-icon{width:43px;text-align:center;color:#8192ab;font-size:16px}.login-input-wrap input{height:100%;flex:1;min-width:0;border:0;outline:0;background:transparent;color:#172033;font-size:13px}.login-input-wrap input::placeholder{color:#a2acba}.password-toggle{border:0;background:transparent;color:#8192ab;cursor:pointer;padding:0 14px;height:100%}
.login-options{display:flex;justify-content:space-between;align-items:center;margin-top:-3px;font-size:11px;color:#78869a}.login-options label{display:flex;align-items:center;gap:6px}.login-options input{accent-color:#2563eb}.login-options a{color:#2563eb;font-weight:700}
.login-submit{height:48px;border:0;border-radius:11px;background:linear-gradient(135deg,#2878ed,#1d5fd0);color:#fff;font-size:14px;font-weight:800;cursor:pointer;box-shadow:0 8px 18px rgba(37,99,235,.2);transition:.15s}.login-submit:hover{transform:translateY(-1px);box-shadow:0 10px 22px rgba(37,99,235,.25)}.login-submit span{font-size:19px;margin-left:7px;vertical-align:-1px}
.role-divider{display:flex;align-items:center;gap:10px;color:#9aa5b5;font-size:10px;margin:24px 0 12px}.role-divider:before,.role-divider:after{content:"";height:1px;background:#e6eaf0;flex:1}.role-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.role-card{min-height:68px;border:1px solid #e4e9f0;border-radius:11px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;font-size:10px;color:#25334a}.role-card b{font-size:18px}.role-admin{background:#eef5ff;color:#2563eb}.role-guru{background:#edf9f4;color:#1b9b6b}.role-siswa{background:#f3f0ff;color:#7354df}.role-ortu{background:#fff0f4;color:#dc4969}.role-koperasi{background:#fff6e8;color:#d68116}
.security-note{display:flex;align-items:center;gap:10px;margin-top:18px;padding:11px 12px;border-radius:11px;background:#f4f8fd}.security-note>span{width:28px;height:28px;border-radius:8px;background:#dcecff;color:#2563eb;display:grid;place-items:center;font-weight:900}.security-note b{display:block;font-size:11px;color:#24334b}.security-note small{display:block;color:#7b899c;font-size:10px;margin-top:2px}.login-footer{text-align:center;color:#8793a4;font-size:9px;margin-top:17px}.demo-credentials{margin-top:12px;padding:9px 11px;border:1px dashed #dbe2eb;border-radius:9px;color:#8490a0;font-size:9px;line-height:1.5;display:grid;gap:2px}.demo-credentials b{color:#647286}
@media(max-width:1050px){.login-page-v6{grid-template-columns:1fr 460px}.login-hero-inner{padding-left:45px;padding-right:35px}.hero-copy h1{font-size:43px}.feature-row{grid-template-columns:repeat(2,1fr)}}
@media(max-width:800px){.login-page-v6{display:block}.login-hero{display:none}.login-panel{min-height:100vh;padding:24px 15px}.login-card-v6{max-width:520px;padding:28px 22px;border-radius:18px}.mobile-brand{display:flex;align-items:center;gap:10px;margin-bottom:30px}.mobile-brand span{color:#8491a4;letter-spacing:0}.login-heading h2{font-size:27px}.role-grid{grid-template-columns:repeat(5,1fr)}}
@media(max-width:480px){.login-panel{padding:12px}.login-card-v6{padding:23px 17px}.role-grid{gap:5px}.role-card{min-height:62px}.role-card b{font-size:16px}.login-options{font-size:10px}}

/* ===== V7 UI FOUNDATION ===== */
:root{--v7-blue:#1769e0;--v7-navy:#102f5d;--v7-text:#17243a;--v7-muted:#728198;--v7-border:#e2e8f0;--v7-bg:#f5f8fc}
body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.login-body{margin:0;background:#fff;color:var(--v7-text)}
.login-v7{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(430px,.85fr)}
.login-left{background:linear-gradient(145deg,#eaf3ff 0%,#f7fbff 54%,#dcecff 100%);position:relative;overflow:hidden}
.login-left:after{content:"";position:absolute;width:760px;height:760px;border-radius:50%;right:-430px;bottom:-390px;background:rgba(23,105,224,.10)}
.login-left-inner{min-height:100vh;padding:34px clamp(30px,5vw,78px) 42px;display:flex;flex-direction:column;position:relative;z-index:1}
.school-brand{display:flex;align-items:center;gap:12px}.school-logo{width:48px;height:48px;border-radius:14px;background:var(--v7-navy);color:#fff;display:grid;place-items:center;font-size:21px;font-weight:900;box-shadow:0 8px 20px rgba(16,47,93,.16)}.school-brand strong,.mobile-school-brand strong{display:block;color:var(--v7-navy);font-size:17px;letter-spacing:.01em}.school-brand span,.mobile-school-brand span{display:block;color:#627796;font-size:11px;margin-top:3px}.school-motto{margin-left:auto;color:#526a8d;font-size:11px;font-weight:700}
.login-hero-copy{margin:auto 0}.login-kicker,.mini-label{font-size:10px;font-weight:850;letter-spacing:.14em;color:var(--v7-blue)}.login-hero-copy h1{font-size:clamp(42px,4.3vw,66px);line-height:1.04;letter-spacing:-.045em;margin:14px 0 17px;color:var(--v7-navy)}.login-hero-copy h1 span{color:#1c65c8}.login-hero-copy>p{max-width:720px;color:#536b8c;font-size:16px;line-height:1.65;margin:0}
.login-features{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:12px;margin-top:32px;max-width:730px}.login-features div{display:grid;gap:4px}.login-features i{font-style:normal;width:48px;height:48px;border-radius:14px;background:rgba(255,255,255,.72);border:1px solid rgba(255,255,255,.8);display:grid;place-items:center;color:var(--v7-blue);font-size:20px;margin-bottom:5px}.login-features b{font-size:12px;color:var(--v7-navy)}.login-features span{font-size:10px;color:#6d819e}.login-quote{max-width:440px;padding-left:20px;border-left:3px solid #73a7ed;color:#526b8e}.login-quote b{font-size:42px;line-height:.6;color:#73a7ed}.login-quote p{font-size:14px;line-height:1.65;margin:4px 0 5px;font-style:italic}.login-quote span{font-size:10px;font-weight:700}
.login-right{background:#f8fafc;display:grid;place-items:center;padding:34px}.login-card-v7{width:min(100%,500px);background:#fff;border:1px solid var(--v7-border);border-radius:24px;padding:34px 36px;box-shadow:0 22px 60px rgba(16,47,93,.10)}.mobile-school-brand{display:none}.login-title h2{font-size:30px;letter-spacing:-.035em;margin:8px 0 8px;color:var(--v7-navy)}.login-title h2 span{font-size:25px}.login-title p{margin:0 0 25px;color:var(--v7-muted);font-size:13px;line-height:1.55}.login-form{display:grid;gap:17px}.login-form>label{display:grid;gap:7px;font-size:12px;font-weight:800;color:#253650}.login-input,.password-box{height:48px;width:100%;border:1px solid #d9e1eb;border-radius:11px;background:#fff;box-sizing:border-box}.login-input{padding:0 13px;outline:none;color:var(--v7-text);font-size:13px}.login-input:focus,.password-box:focus-within{border-color:#75a3e5;box-shadow:0 0 0 4px rgba(23,105,224,.08)}.login-input::placeholder{color:#a2adbd}.password-box{display:flex;overflow:hidden}.password-box .login-input{border:0;box-shadow:none;height:100%;min-width:0}.password-box button{width:46px;border:0;background:#fff;color:#8494aa;cursor:pointer}.login-row{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:#78879b;margin-top:-4px}.login-row a{color:var(--v7-blue);font-weight:750}.remember{display:flex;align-items:center;gap:6px}.remember input{accent-color:var(--v7-blue)}.login-button{height:49px;border:0;border-radius:11px;background:linear-gradient(135deg,#2178ed,#155ed0);color:#fff;font-size:14px;font-weight:800;cursor:pointer;box-shadow:0 9px 20px rgba(23,105,224,.20)}.login-button span{font-size:19px;margin-left:7px}.login-divider{display:flex;align-items:center;gap:12px;color:#9aa7b8;font-size:9px;font-weight:800;letter-spacing:.08em;margin:25px 0 12px}.login-divider:before,.login-divider:after{content:"";height:1px;background:#e6ebf1;flex:1}.role-grid-v7{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.role-grid-v7 div{height:68px;border:1px solid #e3e9f0;border-radius:11px;display:grid;place-items:center;align-content:center;gap:5px;background:#fbfcfe}.role-grid-v7 b{font-size:17px;color:#286bd0}.role-grid-v7 span{font-size:10px;font-weight:750;color:#33435b}.secure-box{display:flex;gap:10px;align-items:center;margin-top:17px;padding:11px 12px;border-radius:11px;background:#f3f7fc}.secure-box>b{width:28px;height:28px;border-radius:8px;background:#dcecff;color:#1769e0;display:grid;place-items:center}.secure-box strong,.secure-box span{display:block}.secure-box strong{font-size:10px}.secure-box span{font-size:9px;color:#7d8ca0;margin-top:2px}.demo-box-v7{margin-top:11px;padding:9px 11px;border:1px dashed #d7e0ea;border-radius:9px;display:grid;gap:2px;color:#8390a1;font-size:8px;line-height:1.45}.demo-box-v7 strong{font-size:9px;color:#63748b}.login-card-v7 footer{text-align:center;color:#9aa5b4;font-size:9px;margin-top:15px}.login-error{display:flex;align-items:center;gap:9px;background:#fff1f3;border:1px solid #f2cbd2;color:#a23242;padding:10px 12px;border-radius:10px;font-size:11px;margin-bottom:16px}.login-error b{width:21px;height:21px;border-radius:50%;background:#d84d5e;color:#fff;display:grid;place-items:center}
/* global form cleanup */
.form-card,.panel{overflow:hidden}.form-grid{align-items:start}.field .input{width:100%}.form-actions{background:#fbfcfe;margin-left:-24px;margin-right:-24px;margin-bottom:-24px;padding:16px 24px}.form-card .field label{line-height:1.3}.check-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.data-table th,.data-table td{padding-left:14px;padding-right:14px}.quick-card{min-height:108px}.section-head{align-items:flex-end}
@media(max-width:1100px){.login-v7{grid-template-columns:1fr 440px}.login-hero-copy h1{font-size:46px}.login-features{grid-template-columns:repeat(2,1fr)}}
@media(max-width:820px){.login-v7{display:block}.login-left{display:none}.login-right{min-height:100vh;padding:18px}.login-card-v7{max-width:520px;padding:28px 24px}.mobile-school-brand{display:flex;align-items:center;gap:10px;margin-bottom:28px}.mobile-school-brand .school-logo{width:40px;height:40px;font-size:18px}.login-title h2{font-size:27px}.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;left:-270px;top:0;bottom:0;width:250px;z-index:50}.sidebar-open .sidebar{left:0}.mobile-menu{display:block}.topbar{padding:0 16px}.content{padding:20px 16px}}
@media(max-width:560px){.login-right{padding:10px}.login-card-v7{padding:23px 17px;border-radius:18px}.role-grid-v7{gap:5px}.role-grid-v7 div{height:61px}.role-grid-v7 b{font-size:15px}.form-card,.panel{padding:16px}.form-actions{margin-left:-16px;margin-right:-16px;margin-bottom:-16px;padding:14px 16px}.stats,.quick-grid{grid-template-columns:1fr}.grid-2,.grid-3{grid-template-columns:1fr}.top-search{display:none}}
/* ===== STUDENT UX ===== */
.student-welcome{display:flex;justify-content:space-between;gap:20px;align-items:center;background:linear-gradient(135deg,#edf5ff,#fff);border:1px solid #dce8f7;border-radius:18px;padding:22px 24px;margin-bottom:18px}.student-welcome h2{margin:3px 0 4px;color:var(--v7-navy);font-size:23px;letter-spacing:-.02em}.student-welcome p{margin:0;color:var(--v7-muted);font-size:12px}.student-mini-stats{display:flex;gap:8px}.student-mini-stats span{padding:10px 13px;border:1px solid var(--v7-border);background:#fff;border-radius:10px;font-size:10px;color:var(--v7-muted)}.student-mini-stats b{display:block;font-size:17px;color:var(--v7-navy)}.student-tabs{display:flex;gap:5px;border-bottom:1px solid var(--v7-border);margin-bottom:20px}.student-tabs a{padding:10px 14px;color:#748299;font-size:12px;font-weight:750;border-bottom:2px solid transparent}.student-tabs a.active,.student-tabs a:hover{color:var(--v7-blue);border-bottom-color:var(--v7-blue)}.student-section{margin-bottom:28px}.student-material-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.student-material{background:#fff;border:1px solid var(--v7-border);border-radius:14px;padding:18px;box-shadow:0 6px 22px rgba(23,59,114,.045)}.material-top{display:flex;justify-content:space-between;align-items:center;gap:8px}.student-material h3,.assignment-card h3{font-size:15px;margin:14px 0 7px;color:var(--v7-navy)}.student-material p,.assignment-card p{font-size:11px;color:var(--v7-muted);line-height:1.6;min-height:36px}.student-material .btn{margin-top:8px}.student-assignment-list{display:grid;gap:12px}.assignment-card{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(300px,.95fr);gap:22px;background:#fff;border:1px solid var(--v7-border);border-radius:15px;padding:19px}.assignment-meta{display:flex;gap:10px;align-items:center;flex-wrap:wrap;color:#7c899c;font-size:10px}.assignment-meta b{color:#33445d}.assignment-action{border-left:1px solid var(--v7-border);padding-left:22px}.assignment-action label{display:grid;gap:7px;font-size:11px;font-weight:800;color:#2b3c55}.assignment-action textarea{min-height:105px}.mini-card{display:grid;gap:6px}.mini-card b{font-size:13px}.mini-card span{font-size:10px;color:var(--v7-muted)}.mini-card a{font-size:10px;font-weight:800;margin-top:5px}@media(max-width:900px){.student-material-grid{grid-template-columns:1fr 1fr}.assignment-card{grid-template-columns:1fr}.assignment-action{border-left:0;border-top:1px solid var(--v7-border);padding-left:0;padding-top:18px}}@media(max-width:560px){.student-welcome{display:block}.student-mini-stats{margin-top:15px}.student-material-grid{grid-template-columns:1fr}.student-tabs{overflow:auto}.student-tabs a{white-space:nowrap}.assignment-card{padding:15px}.student-welcome{padding:17px}.student-mini-stats span{flex:1}}
/* ===== V8 TEACHER WORKSPACE ===== */
.teacher-hero{display:flex;justify-content:space-between;align-items:center;gap:24px;background:linear-gradient(135deg,#102b52 0%,#1c5597 100%);color:#fff;border-radius:18px;padding:24px 26px;margin-bottom:18px;box-shadow:0 14px 35px rgba(16,43,82,.16)}
.teacher-hero h2{margin:3px 0 7px;font-size:25px;letter-spacing:-.03em}.teacher-hero p{margin:0;color:#d8e6f8;font-size:12px;line-height:1.55}.teacher-hero .btn{background:#fff;color:#173b72;border:0}.teacher-hero-mark{width:62px;height:62px;border-radius:17px;background:rgba(255,255,255,.12);display:grid;place-items:center;font-size:28px;border:1px solid rgba(255,255,255,.16)}
.teacher-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:20px}.teacher-stat{background:#fff;border:1px solid var(--line);border-radius:14px;padding:17px;display:flex;gap:12px;align-items:center}.teacher-stat .icon{width:42px;height:42px;border-radius:12px;background:#eef4ff;color:#2563eb;display:grid;place-items:center;font-weight:900}.teacher-stat strong{display:block;font-size:21px;line-height:1.1}.teacher-stat span{display:block;color:var(--muted);font-size:10px;margin-top:4px}
.teacher-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.teacher-action{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;color:var(--ink);min-height:118px;transition:.15s}.teacher-action:hover{border-color:#b9cdea;transform:translateY(-1px);box-shadow:var(--shadow)}.teacher-action .action-icon{width:36px;height:36px;border-radius:10px;background:#f0f5ff;color:var(--blue);display:grid;place-items:center;margin-bottom:12px}.teacher-action b{display:block;font-size:13px}.teacher-action span{display:block;color:var(--muted);font-size:10px;line-height:1.5;margin-top:4px}
.teacher-section{margin:24px 0 11px;display:flex;justify-content:space-between;align-items:end}.teacher-section h2{margin:0;font-size:16px}.teacher-section p{margin:3px 0 0;color:var(--muted);font-size:11px}.teacher-config-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.config-list{display:grid;gap:8px;margin-top:13px}.config-item{display:flex;justify-content:space-between;align-items:center;gap:10px;border:1px solid var(--line);border-radius:10px;padding:11px 12px;background:#fbfcfe;font-size:11px}.config-empty{padding:18px;border:1px dashed #cfd8e5;border-radius:10px;color:var(--muted);font-size:11px;text-align:center}
.teacher-form-head{display:flex;justify-content:space-between;gap:15px;align-items:flex-start;margin-bottom:17px}.teacher-form-head h2{margin:0;font-size:17px}.teacher-form-head p{margin:4px 0 0;color:var(--muted);font-size:11px}.teacher-switch{display:flex;gap:5px;background:#f3f6fa;padding:4px;border-radius:10px}.teacher-switch a{padding:8px 11px;border-radius:7px;font-size:11px;font-weight:800;color:#718096}.teacher-switch a.active{background:#fff;color:var(--blue);box-shadow:0 1px 4px rgba(20,40,70,.08)}
.teacher-form-card{background:#fff;border:1px solid var(--line);border-radius:15px;padding:20px;box-shadow:var(--shadow)}.teacher-form-card .form-grid{gap:15px}.teacher-form-card .form-actions{margin:18px -20px -20px;padding:14px 20px}.teacher-help{padding:10px 12px;background:#f6f9fd;border:1px solid #e0e8f3;border-radius:9px;color:#667892;font-size:10px;line-height:1.5}.teacher-list-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:22px 0 10px}.teacher-list-head h2{margin:0;font-size:15px}.teacher-table-card{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}.teacher-table-card .table-wrap{padding:0}.teacher-table-card .data-table th{background:#f8fafc}.teacher-table-card .data-table td{padding-top:13px;padding-bottom:13px}.teacher-table-card .input{min-height:36px}
.assessment-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:15px}.assessment-tab{display:flex;align-items:center;gap:9px;padding:12px 13px;background:#fff;border:1px solid var(--line);border-radius:11px;color:#6c7a90;font-size:11px;font-weight:800}.assessment-tab.active{border-color:#bcd1f1;background:#f1f6ff;color:var(--blue)}.assessment-tab i{width:28px;height:28px;border-radius:8px;background:#eef4ff;display:grid;place-items:center;font-style:normal}.assessment-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:15px}.assessment-side{background:#f8fafc;border:1px solid var(--line);border-radius:13px;padding:16px}.assessment-side h3{margin:0;font-size:13px}.assessment-side p{font-size:10px;color:var(--muted);line-height:1.55}.assessment-side ul{margin:12px 0 0;padding-left:17px;color:#65748a;font-size:10px;line-height:1.8}
.grade-toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;padding:13px 15px;border-bottom:1px solid var(--line);background:#fbfcfe}.grade-toolbar strong{font-size:13px}.grade-toolbar span{font-size:10px;color:var(--muted)}.grade-form{display:grid;grid-template-columns:78px minmax(170px,1fr) minmax(210px,1fr) auto;gap:8px;align-items:center}.grade-form .input{min-height:36px}.submission-name{display:flex;align-items:center;gap:9px}.submission-name b{font-size:11px}.submission-name span{font-size:9px;color:var(--muted);display:block;margin-top:2px}.submission-title b{font-size:11px}.submission-title span{display:block;font-size:9px;color:var(--muted);margin-top:2px}
.setup-columns{display:grid;grid-template-columns:1fr 1fr;gap:15px}.setup-box{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px}.setup-box h2{margin:0;font-size:15px}.setup-box p{margin:4px 0 14px;color:var(--muted);font-size:10px}.choice-list{display:grid;gap:7px;max-height:390px;overflow:auto}.choice{display:flex;align-items:center;gap:9px;padding:10px 11px;border:1px solid var(--line);border-radius:9px;background:#fbfcfe;font-size:11px}.choice:has(input:checked){border-color:#a9c6f1;background:#f3f7ff}.choice input{accent-color:var(--blue)}.setup-actions{margin-top:15px;display:flex;justify-content:flex-end}
@media(max-width:1050px){.teacher-stat-grid,.teacher-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.assessment-layout{grid-template-columns:1fr}.setup-columns{grid-template-columns:1fr}}
@media(max-width:720px){.teacher-hero{align-items:flex-start}.teacher-hero-mark{display:none}.teacher-config-grid{grid-template-columns:1fr}.assessment-tabs{grid-template-columns:repeat(2,1fr)}.grade-form{grid-template-columns:70px 1fr}.grade-form .feedback{grid-column:1/-1}.grade-form .save{grid-column:1/-1}}
@media(max-width:560px){.teacher-stat-grid,.teacher-actions{grid-template-columns:1fr}.teacher-hero{padding:19px}.teacher-hero h2{font-size:21px}.teacher-form-card{padding:15px}.teacher-form-card .form-actions{margin:16px -15px -15px;padding:13px 15px}.teacher-form-head{display:block}.teacher-switch{margin-top:12px;width:max-content}.assessment-tabs{grid-template-columns:1fr 1fr}.assessment-tab{padding:10px 9px}.assessment-tab span{font-size:10px}.setup-box{padding:14px}}

/* =========================================================
   V9 VISUAL RESET — clean, spacious, consistent UI
   ========================================================= */
:root{
  --navy:#12335f;
  --navy-dark:#0b2344;
  --blue:#1769e0;
  --blue-soft:#eef5ff;
  --ink:#17263d;
  --muted:#718096;
  --bg:#f4f7fb;
  --surface:#ffffff;
  --line:#e5eaf1;
  --green:#15835a;
  --green-soft:#eaf8f1;
  --red:#c53d50;
  --red-soft:#fff0f2;
  --amber:#9a6500;
  --amber-soft:#fff7df;
  --shadow:0 8px 26px rgba(18,51,95,.055);
  --radius:16px;
}
html{font-size:15px}
body{background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;line-height:1.45}
*{box-sizing:border-box}
button,input,select,textarea{font:inherit}

/* APP SHELL */
.app-shell{grid-template-columns:244px minmax(0,1fr);min-height:100vh}
.sidebar{padding:20px 13px;background:linear-gradient(180deg,#0b2344 0%,#12335f 100%);border-right:1px solid rgba(255,255,255,.06)}
.brand{padding:4px 10px 22px;gap:11px}
.brand-mark{width:40px;height:40px;border-radius:11px;background:#fff;color:#12335f;box-shadow:0 5px 16px rgba(0,0,0,.10)}
.brand strong{font-size:14px}.brand small{font-size:10px;color:#b9c9df}
.nav-section{padding:17px 11px 7px;color:#8da6c8;font-size:9px}
.nav-link{min-height:40px;padding:9px 11px;border-radius:10px;font-size:12px;color:#d9e4f2}
.nav-link:hover,.nav-link.active{background:rgba(255,255,255,.11);color:#fff}
.sidebar-foot{font-size:10px}
.topbar{height:70px;padding:0 30px;background:rgba(255,255,255,.97);border-bottom:1px solid var(--line)}
.top-search{width:min(440px,52vw);height:40px;border-radius:11px;background:#f7f9fc;border-color:#edf1f6}
.top-user-copy strong{font-size:12px}.top-user-copy span{font-size:10px}
.content{width:100%;max-width:1420px;padding:30px 36px 48px;margin:0 auto}
.page-head{margin-bottom:24px;align-items:flex-start}
.eyebrow{font-size:9px;letter-spacing:.13em;margin-bottom:6px}
.page-head h1{font-size:28px;font-weight:800;letter-spacing:-.03em}
.page-head p{font-size:12px;margin-top:6px}

/* CARDS / GRIDS */
.panel,.form-card,.stat-card,.quick-card{border-color:var(--line);border-radius:15px;box-shadow:var(--shadow)}
.panel{padding:20px}.form-card{padding:24px}.stat-card{padding:19px}.quick-card{padding:17px}
.stats{gap:14px}.stat-icon{width:40px;height:40px;border-radius:11px}.stat-label{font-size:10px;margin-top:11px}.stat-value{font-size:25px}.stat-note{font-size:10px}
.quick-grid{gap:13px}.quick-card b{font-size:12px}.quick-card span{font-size:10px}
.hero{padding:25px;border-radius:16px}.hero h2{font-size:22px}.hero p{font-size:12px}
.section-head{margin:25px 0 12px}.section-head h2{font-size:15px}

/* FORMS */
.form-card,.teacher-form-card{background:#fff}
.form-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:16px}
.form-grid>.field{grid-column:span 4}
.form-grid>.field.span-12{grid-column:1/-1}
.form-grid>.field.span-8{grid-column:span 8}
.form-grid>.field.span-6{grid-column:span 6}
.form-grid>.field.span-4{grid-column:span 4}
.form-grid>.field.span-3{grid-column:span 3}
.field label{font-size:11px;margin-bottom:7px;color:#26364e}
.field small{font-size:9px;margin-top:5px}
.input{min-height:43px;padding:9px 12px;border-radius:10px;border-color:#d9e1eb;font-size:12px}
textarea.input{min-height:100px;line-height:1.5}
.input:focus{border-color:#79a5e4;box-shadow:0 0 0 3px rgba(23,105,224,.08)}
.check-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
.check-item{min-height:42px;padding:9px 11px;border-radius:10px;font-size:10px}
.form-actions{margin-top:21px;padding-top:17px}
.btn{min-height:39px;padding:8px 14px;border-radius:9px;font-size:11px}

/* TABLES */
.data-table{min-width:720px}
.data-table th{padding:12px 13px;font-size:9px}
.data-table td{padding:13px;font-size:11px}
.table-wrap{border-radius:12px}

/* TEACHER */
.teacher-hero{padding:27px 29px;border-radius:17px;margin-bottom:18px}
.teacher-hero h2{font-size:25px}.teacher-hero p{font-size:12px}
.teacher-stat-grid{gap:13px;margin-bottom:22px}
.teacher-stat{padding:18px;border-radius:14px}.teacher-stat .icon{width:40px;height:40px}
.teacher-stat strong{font-size:22px}.teacher-stat span{font-size:10px}
.teacher-actions{gap:13px}.teacher-action{min-height:128px;padding:17px;border-radius:14px}
.teacher-action .action-icon{width:37px;height:37px;margin-bottom:12px}
.teacher-action b{font-size:12px}.teacher-action span{font-size:10px}
.teacher-section{margin:26px 0 12px}.teacher-section h2{font-size:15px}.teacher-section p{font-size:10px}
.teacher-config-grid{gap:13px}.config-item{padding:11px 12px;font-size:10px}
.teacher-form-head{margin-bottom:16px}.teacher-form-head h2{font-size:16px}.teacher-form-head p{font-size:10px}
.teacher-switch{padding:4px;border-radius:10px}.teacher-switch a{font-size:10px;padding:8px 11px}
.teacher-form-card{padding:22px;border-radius:15px}.teacher-form-card .form-actions{margin:19px -22px -22px;padding:14px 22px}
.teacher-table-card{border-radius:14px}

/* ASSESSMENT */
.assessment-tabs{gap:9px;margin-bottom:16px}.assessment-tab{padding:12px 13px;border-radius:11px;font-size:10px}
.assessment-layout{gap:15px}.assessment-side{padding:17px;border-radius:13px}

/* STUDENT */
.student-welcome{padding:22px 24px;border-radius:16px}
.student-welcome h2{font-size:22px}.student-welcome p{font-size:11px}
.student-material-grid{gap:13px}.student-material{padding:17px;border-radius:14px}
.student-material h3,.assignment-card h3{font-size:14px}
.student-material p,.assignment-card p{font-size:10px}
.assignment-card{padding:18px;border-radius:14px;gap:20px}
.assignment-action{padding-left:20px}

/* LOGIN — intentional full redesign */
.login-body{min-height:100vh;background:#f6f9fd;color:#17263d}
.login-v7{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.12fr) minmax(430px,.88fr);background:#fff}
.login-left{display:block;position:relative;overflow:hidden;background:linear-gradient(145deg,#edf5ff 0%,#f8fbff 52%,#dcecff 100%)}
.login-left:before{content:"";position:absolute;width:620px;height:620px;border-radius:50%;left:-330px;bottom:-280px;background:rgba(23,105,224,.08)}
.login-left:after{content:"";position:absolute;width:520px;height:520px;border-radius:50%;right:-300px;top:-270px;background:rgba(255,255,255,.75)}
.login-left-inner{min-height:100vh;padding:32px clamp(34px,5vw,76px) 38px;display:flex;flex-direction:column;position:relative;z-index:1}
.school-brand{display:flex;align-items:center;gap:12px;position:relative;z-index:2}
.school-logo{width:48px;height:48px;border-radius:13px;background:#12335f;color:#fff;display:grid;place-items:center;font-size:20px;font-weight:900;box-shadow:0 7px 18px rgba(18,51,95,.16)}
.school-brand strong{font-size:17px;color:#12335f}.school-brand span{font-size:10px;color:#657b99;margin-top:2px}
.school-motto{margin-left:auto;color:#506987;font-size:10px;font-weight:750;white-space:nowrap}
.login-hero-copy{margin:auto 0 32px;max-width:760px}
.login-kicker,.mini-label{font-size:9px;letter-spacing:.14em;font-weight:850;color:#1769e0}
.login-hero-copy h1{font-size:clamp(42px,4.4vw,62px);line-height:1.04;letter-spacing:-.05em;margin:13px 0 17px;color:#102f5d}
.login-hero-copy h1 span{color:#1769e0}
.login-hero-copy>p{max-width:690px;margin:0;color:#526b8c;font-size:15px;line-height:1.65}
.login-features{display:grid;grid-template-columns:repeat(4,minmax(110px,1fr));gap:13px;margin-top:30px;max-width:730px}
.login-features div{display:grid;gap:4px}.login-features i{width:45px;height:45px;border-radius:13px;background:rgba(255,255,255,.78);border:1px solid rgba(255,255,255,.95);display:grid;place-items:center;color:#1769e0;font-size:18px;margin-bottom:4px;font-style:normal;box-shadow:0 5px 14px rgba(40,85,140,.05)}
.login-features b{font-size:11px;color:#12335f}.login-features span{font-size:9px;color:#71849d}
.login-quote{max-width:480px;padding-left:18px;border-left:3px solid #79a8e7;color:#506a8b}.login-quote b{font-size:38px;color:#79a8e7;line-height:.6}.login-quote p{font-size:13px;line-height:1.65;margin:4px 0 4px;font-style:italic}.login-quote span{font-size:9px;font-weight:750}
.login-right{min-height:100vh;background:#f8fafc;display:grid;place-items:center;padding:32px}
.login-card-v7{width:min(100%,500px);padding:34px 35px;background:#fff;border:1px solid #e3e9f1;border-radius:20px;box-shadow:0 18px 50px rgba(18,51,95,.09)}
.mobile-school-brand{display:none}.login-title h2{font-size:28px;line-height:1.15;letter-spacing:-.035em;margin:7px 0 8px;color:#102f5d}.login-title h2 span{font-size:23px}.login-title p{font-size:12px;line-height:1.55;margin:0 0 23px;color:#718096}
.login-form{display:grid;gap:15px}.login-form>label{display:grid;gap:7px;font-size:11px;font-weight:800;color:#253650}
.login-input,.password-box{width:100%;height:47px;border:1px solid #d9e2ec;border-radius:10px;background:#fff}.login-input{padding:0 12px;color:#17263d;font-size:12px;outline:none}.login-input:focus,.password-box:focus-within{border-color:#75a3e5;box-shadow:0 0 0 3px rgba(23,105,224,.08)}.login-input::placeholder{color:#a0acbb}.password-box{display:flex;overflow:hidden}.password-box .login-input{border:0;box-shadow:none;height:100%;min-width:0}.password-box button{width:45px;border:0;background:#fff;color:#8392a7;cursor:pointer}
.login-row{font-size:10px}.login-row a{font-weight:750;color:#1769e0}.remember{display:flex;align-items:center;gap:6px}.remember input{accent-color:#1769e0}
.login-button{height:48px;border:0;border-radius:10px;background:#1769e0;color:#fff;font-size:13px;font-weight:800;cursor:pointer;box-shadow:0 8px 18px rgba(23,105,224,.18)}.login-button:hover{background:#105ac5}.login-button span{font-size:17px}
.login-divider{margin:22px 0 12px;font-size:8px;letter-spacing:.1em}.role-grid-v7{grid-template-columns:repeat(5,1fr);gap:7px}.role-grid-v7 div{height:64px;border-radius:10px;background:#fbfcfe;border:1px solid #e3e9f0}.role-grid-v7 b{font-size:16px;color:#1769e0}.role-grid-v7 span{font-size:9px;color:#33435b}
.secure-box{margin-top:15px;padding:10px 11px;border-radius:10px;background:#f4f8fd}.secure-box>b{width:27px;height:27px}.secure-box strong{font-size:9px}.secure-box span{font-size:8px}
.demo-box-v7{margin-top:9px;padding:8px 10px;font-size:7px}.demo-box-v7 strong{font-size:8px}.login-card-v7 footer{font-size:8px;margin-top:13px}.login-error{font-size:10px;padding:9px 11px;margin-bottom:14px}

/* RESPONSIVE */
@media(max-width:1100px){
  .content{padding:26px 26px 40px}
  .login-v7{grid-template-columns:1fr 430px}
  .login-left-inner{padding-left:42px;padding-right:42px}
  .login-hero-copy h1{font-size:44px}
  .login-features{grid-template-columns:repeat(2,1fr)}
  .teacher-stat-grid,.teacher-actions{grid-template-columns:repeat(2,minmax(0,1fr))}
  .assessment-layout{grid-template-columns:1fr}
}
@media(max-width:820px){
  .app-shell{grid-template-columns:1fr}
  .sidebar{position:fixed;left:-270px;top:0;bottom:0;width:250px;height:100vh;z-index:30;transition:left .2s ease}
  body.sidebar-open .sidebar{left:0}
  body.sidebar-open:after{content:"";position:fixed;inset:0;background:rgba(10,28,52,.35);z-index:20}
  .mobile-menu{display:block;color:#12335f;font-size:21px;padding:3px 5px}
  .topbar{padding:0 18px}.content{padding:22px 18px 36px}
  .top-search{display:none}
  .login-v7{display:block;background:#f6f9fd}
  .login-left{display:none}
  .login-right{min-height:100vh;padding:22px 16px}
  .login-card-v7{max-width:500px;padding:28px 25px;border-radius:18px}
  .mobile-school-brand{display:flex;align-items:center;gap:10px;margin-bottom:24px}.mobile-school-brand .school-logo{width:40px;height:40px;font-size:17px}.mobile-school-brand strong{font-size:14px}.mobile-school-brand span{font-size:9px}
}
@media(max-width:600px){
  .page-head h1{font-size:24px}.page-head p{font-size:11px}
  .stats,.quick-grid,.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}
  .form-grid{grid-template-columns:1fr}
  .form-grid>.field,.form-grid>.field.span-3,.form-grid>.field.span-4,.form-grid>.field.span-6,.form-grid>.field.span-8,.form-grid>.field.span-12{grid-column:1/-1}
  .check-grid{grid-template-columns:1fr}
  .teacher-stat-grid,.teacher-actions,.teacher-config-grid{grid-template-columns:1fr}
  .teacher-form-card{padding:17px}.teacher-form-card .form-actions{margin:17px -17px -17px;padding:13px 17px}
  .teacher-form-head{display:block}.teacher-switch{margin-top:11px;width:max-content}
  .assessment-tabs{grid-template-columns:1fr 1fr}.assessment-tab{padding:10px 9px}
  .grade-form{grid-template-columns:1fr}.grade-form .feedback,.grade-form .save{grid-column:auto}
  .student-welcome{display:block;padding:18px}.student-mini-stats{margin-top:13px}.student-material-grid{grid-template-columns:1fr}.assignment-card{grid-template-columns:1fr;padding:15px}.assignment-action{border-left:0;border-top:1px solid var(--line);padding:17px 0 0}
  .login-card-v7{padding:23px 18px}.role-grid-v7{grid-template-columns:repeat(3,1fr)}.login-title h2{font-size:25px}.login-divider{margin-top:21px}
}
