:root{--bg:#f7fcf8;--surface:#fff;--surface2:#f1faf5;--blue:#148c5d;--blue2:#4dc88d;--blue-soft:#e5f6ec;--cyan:#42c997;--text:#173328;--muted:#70877c;--line:#d8ebe0;--line2:#ebf5ef;--green:#148c5d;--green-soft:#e7f7ee;--yellow:#d9a127;--yellow-soft:#fff6df;--red:#df5e64;--red-soft:#fff0f1;--shadow:0 12px 35px rgba(31,105,74,.08);--shadow2:0 4px 16px rgba(31,105,74,.065);--sidebar:250px;--radius:18px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:linear-gradient(180deg,#fbfefc 0,#f5fbf7 65%,#f9fdfa 100%);color:var(--text);font-family:Inter,"Segoe UI",Arial,sans-serif;font-size:13px;line-height:1.45;min-height:100vh}a{text-decoration:none;color:inherit}button,input,select,textarea{font:inherit}button{cursor:pointer}.ambient{position:fixed;pointer-events:none;z-index:-1;border-radius:50%;filter:blur(80px);opacity:.35}.a1{width:420px;height:420px;background:#cdeedb;right:-130px;top:-150px}.a2{width:330px;height:330px;background:#e2f5e9;left:22%;bottom:-180px}
[hidden]{display:none!important}
.sidebar{position:fixed;z-index:30;inset:0 auto 0 0;width:var(--sidebar);background:rgba(255,255,255,.97);border-right:1px solid var(--line);padding:16px 12px;display:flex;flex-direction:column;box-shadow:6px 0 28px rgba(34,110,175,.05);transition:.22s ease}.brand{height:56px;display:flex;align-items:center;gap:11px;padding:0 8px 12px;border-bottom:1px solid var(--line2)}.brand-mark,.login-logo{width:38px;height:38px;border-radius:12px;background:linear-gradient(135deg,var(--blue),#55b7ff);color:#fff;display:grid;place-items:center;font-weight:800;font-size:17px;box-shadow:0 8px 22px rgba(22,119,255,.22)}.brand b{display:block;font-size:14px;letter-spacing:.5px}.brand span{display:block;color:var(--muted);font-size:10px;margin-top:1px}.nav{display:flex;flex-direction:column;gap:4px;margin-top:14px;overflow:auto;padding-right:2px}.nav .nav-label{font-size:9px;color:#8ea0b5;font-weight:800;letter-spacing:1px;padding:11px 10px 5px;text-transform:uppercase}.nav a{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:11px;color:#54708f;font-weight:650;transition:.16s}.nav a i{font-style:normal;width:22px;height:22px;border-radius:7px;background:#f1f7fd;display:grid;place-items:center;color:#5b88b7;font-size:12px}.nav a:hover{background:#f3f9ff;color:var(--blue)}.nav a.active{background:linear-gradient(90deg,#e8f4ff,#f5fbff);color:#0e67db;box-shadow:inset 3px 0 0 var(--blue)}.nav a.active i{background:#dcebff;color:var(--blue)}.side-foot{margin-top:auto;padding-top:12px;border-top:1px solid var(--line2)}.user-mini{display:flex;gap:8px;align-items:center;padding:7px}.avatar{width:33px;height:33px;border-radius:10px;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center;font-weight:800}.avatar.soft{border-radius:50%}.user-mini b{display:block;font-size:11px;max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-mini span{font-size:9px;color:var(--muted)}
.app{margin-left:var(--sidebar);min-height:100vh}.topbar{height:66px;position:sticky;top:0;z-index:20;background:rgba(248,252,255,.9);backdrop-filter:blur(18px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 24px}.crumb span{display:block;font-size:9px;color:#7c91aa;text-transform:uppercase;letter-spacing:.65px;font-weight:700}.crumb b{font-size:13px}.top-actions{display:flex;align-items:center;gap:8px}.live-dot{padding:6px 10px;border:1px solid #cfe8df;background:#f4fff9;color:#278462;border-radius:999px;font-size:10px}.live-dot i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#27b47e;margin-right:5px}.icon-btn{border:1px solid var(--line);background:#fff;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;color:#55708c}.content{padding:22px 24px 42px;max-width:1680px;margin:auto}.content.narrow{max-width:1040px}.hero-line{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:2px 0 18px}.hero-line.compact{margin-bottom:14px}.hero-line h1{font-size:26px;line-height:1.15;margin:4px 0 5px;letter-spacing:-.7px}.hero-line p{margin:0;color:var(--muted);max-width:770px}.eyebrow{font-size:9px;letter-spacing:1.15px;text-transform:uppercase;color:#4e91d6;font-weight:800}.hero-actions{display:flex;gap:8px;flex-shrink:0}
.primary,.secondary,.ghost,.tiny-btn{border:0;border-radius:10px;padding:8px 12px;font-weight:700;transition:.16s;display:inline-flex;align-items:center;justify-content:center;gap:6px}.primary{background:linear-gradient(135deg,var(--blue),#45a8ff);color:#fff;box-shadow:0 6px 18px rgba(22,119,255,.18)}.primary:hover{transform:translateY(-1px);box-shadow:0 9px 23px rgba(22,119,255,.25)}.secondary{background:#fff;color:#286baf;border:1px solid #cfe4f8}.secondary:hover,.ghost:hover{background:#eff7ff}.ghost{background:#f7fbff;color:#54708f;border:1px solid var(--line)}.ghost.full{width:100%;margin-top:6px}.primary.xl{padding:11px 14px}.tiny-btn{padding:5px 8px;font-size:10px;background:#f4f9ff;border:1px solid var(--line);color:#4d6c8d}
.kpi-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin-bottom:14px}.kpi-grid.dense{grid-template-columns:repeat(6,minmax(0,1fr))}.kpi-grid.wide-kpi{grid-template-columns:repeat(6,minmax(0,1fr))}.kpi{background:linear-gradient(180deg,#fff,#fbfdff);border:1px solid var(--line);border-radius:15px;padding:13px 14px;min-height:105px;box-shadow:var(--shadow2);position:relative;overflow:hidden}.kpi:after{content:"";position:absolute;width:70px;height:70px;border-radius:50%;background:#eef7ff;right:-28px;top:-25px}.kpi span{display:block;color:#6b86a3;font-size:9px;font-weight:800;letter-spacing:.65px}.kpi strong{display:block;font-size:25px;line-height:1.1;margin:10px 0 7px;letter-spacing:-.6px}.kpi small{font-size:10px;color:var(--muted)}.mini-progress,.big-progress{height:5px;background:#eaf2fa;border-radius:999px;overflow:hidden}.mini-progress i,.big-progress i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--blue),#5cc7f5)}.big-progress{height:8px;margin:14px 0 8px}
.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:12px}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:12px}.span-2{grid-column:span 2}.panel{background:rgba(255,255,255,.98);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow2);margin-bottom:12px;min-width:0}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:13px}.panel-head h2{font-size:15px;margin:3px 0 0;letter-spacing:-.2px}.panel-head p{margin:4px 0 0;color:var(--muted)}.panel-head>a{color:var(--blue);font-size:10px;font-weight:700}.danger-panel{border-color:#f2d8dc;background:linear-gradient(180deg,#fff,#fffafa)}.badge{border-radius:999px;padding:4px 8px;background:#edf5fc;color:#5c7590;font-size:9px;font-weight:800}.badge.red{background:var(--red-soft);color:var(--red)}
.status-bars>div{display:grid;grid-template-columns:1fr auto;gap:5px;margin:12px 0}.status-bars span{display:flex;align-items:center;gap:6px}.status-bars em{grid-column:1/-1;height:5px;background:#edf3f9;border-radius:99px;overflow:hidden}.status-bars em i{display:block;height:100%;background:#5fb0ff}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;flex:0 0 auto}.dot.green{background:var(--green)}.dot.yellow{background:var(--yellow)}.dot.red{background:var(--red)}.legend{display:flex;flex-wrap:wrap;gap:10px;margin-top:13px}.legend span{font-size:10px;color:var(--muted);display:flex;align-items:center;gap:5px}.legend b{color:var(--text)}
.donut{--green:60;--yellow:25;width:165px;aspect-ratio:1;border-radius:50%;margin:8px auto;background:conic-gradient(var(--green) 0 calc(var(--green)*1%),var(--yellow) calc(var(--green)*1%) calc((var(--green) + var(--yellow))*1%),var(--red) 0);display:grid;place-items:center;position:relative}.donut:after{content:"";position:absolute;inset:20px;background:#fff;border-radius:50%}.donut>div{position:relative;z-index:1;text-align:center}.donut strong{display:block;font-size:25px}.donut span{font-size:9px;color:var(--muted)}
.overview-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.overview-grid.compact{grid-template-columns:repeat(2,1fr)}.overview-grid>div{background:#f6fbff;border:1px solid var(--line2);border-radius:12px;padding:12px}.overview-grid span{font-size:9px;color:var(--muted);display:block}.overview-grid b{font-size:20px;display:block;margin-top:5px}.bucket-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.bucket-grid.three{grid-template-columns:repeat(3,1fr)}.bucket-grid>div{background:#f4fbf8;border:1px solid #dff2e9;border-radius:12px;padding:14px;text-align:center}.bucket-grid>div:nth-child(2),.bucket-grid>div:nth-child(3){background:#fffaf0;border-color:#f7e8c3}.bucket-grid>div.risk{background:#fff4f4;border-color:#f3d9d9}.bucket-grid b{display:block;font-size:22px}.bucket-grid span{font-size:9px;color:var(--muted)}
.metric-list{display:flex;flex-direction:column}.metric-row{display:grid;grid-template-columns:minmax(170px,1fr) minmax(180px,1fr);gap:16px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line2)}.metric-row:last-child{border-bottom:0}.metric-row b{display:block;font-size:11px}.metric-row span{display:block;font-size:9px;color:var(--muted)}.metric-bars{display:flex;gap:8px;align-items:center}.metric-bars em{height:6px;background:#eaf3fb;border-radius:99px;overflow:hidden;flex:1}.metric-bars em i{height:100%;display:block;background:linear-gradient(90deg,#64b9ff,var(--blue));border-radius:99px}.metric-bars strong{font-size:10px;width:34px;text-align:right}.compare-list>div{display:grid;grid-template-columns:minmax(120px,180px) 1fr minmax(150px,auto);gap:10px;align-items:center;padding:9px 0;border-bottom:1px solid var(--line2)}.compare-list b{font-size:10px}.compare-list span{height:7px;background:#edf4fa;border-radius:99px;overflow:hidden}.compare-list span i{display:block;height:100%;background:linear-gradient(90deg,#79c4ff,var(--blue))}.compare-list em{font-style:normal;font-size:9px;color:var(--muted)}
.alert-list{display:flex;flex-direction:column}.alert-list>a{display:flex;align-items:center;gap:9px;padding:9px 2px;border-bottom:1px solid #f5e8e8}.alert-list>a:last-child{border-bottom:0}.alert-list>a div{flex:1;min-width:0}.alert-list b{display:block;font-size:10px}.alert-list span{font-size:9px;color:var(--muted);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.alert-list strong{color:#9ab0c5}.timeline>div{display:flex;align-items:center;gap:11px;padding:9px 0;border-bottom:1px solid var(--line2)}.timeline time{font-size:9px;color:#4c82b8;width:70px}.timeline p{margin:0;flex:1}.timeline b,.timeline span{display:block}.timeline b{font-size:10px}.timeline span{font-size:9px;color:var(--muted)}.priority{font-style:normal;border-radius:999px;padding:3px 7px;font-size:8px;text-transform:uppercase;background:#edf4fb;color:#66809b}.priority.high{background:#fff1df;color:#c47a12}.priority.critical{background:var(--red-soft);color:var(--red)}.priority.low{background:#eef9f5;color:#278661}
.table-wrap{overflow:auto;border-radius:12px;border:1px solid var(--line2)}table{width:100%;border-collapse:collapse;min-width:760px}th,td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line2);vertical-align:middle}th{background:#f5faff;color:#66809d;font-size:9px;text-transform:uppercase;letter-spacing:.45px;position:sticky;top:0}td{font-size:10px}td b{display:block;font-size:10px}td small{display:block;font-size:8.5px;color:var(--muted);margin-top:2px}.status{display:inline-flex;align-items:center;border-radius:999px;padding:3px 7px;font-size:8px;font-weight:800;text-transform:uppercase}.status.green{background:var(--green-soft);color:var(--green)}.status.yellow{background:var(--yellow-soft);color:#bc7911}.status.red{background:var(--red-soft);color:var(--red)}.chip{display:inline-flex;padding:3px 7px;background:#edf6ff;color:#3979b9;border-radius:7px;font-size:8px;font-weight:700}.table-link{color:var(--blue);font-size:9px;font-weight:700}.row-actions{display:flex;gap:4px}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.form-grid.one{grid-template-columns:1fr}.form-grid .wide,.wide{grid-column:1/-1}label{font-size:9px;color:#5f7895;font-weight:700;display:flex;flex-direction:column;gap:5px}input,select,textarea{width:100%;border:1px solid #cfdfef;background:#fbfdff;color:var(--text);border-radius:9px;padding:8px 10px;outline:none;transition:.15s;font-size:11px}input:focus,select:focus,textarea:focus{border-color:#75b6f6;box-shadow:0 0 0 3px #eaf5ff;background:#fff}textarea{min-height:82px;resize:vertical}.form-actions{display:flex;justify-content:flex-end;gap:8px}.check{flex-direction:row;align-items:center;background:#f7fbff;border:1px solid var(--line);padding:8px;border-radius:9px}.check input{width:auto}.filters{display:grid;grid-template-columns:1fr 180px auto;gap:8px;margin-bottom:12px}.wizard-panel{padding:20px}.steps{display:flex;align-items:center;justify-content:center;max-width:520px;margin:18px auto 25px}.steps span{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#edf4fb;color:#7590aa;font-size:10px;font-weight:800}.steps span.active{background:var(--blue);color:#fff}.steps i{height:2px;flex:1;background:#e3edf7}.wizard-step{display:none}.wizard-step.active{display:block}.wizard-step h3{font-size:15px;margin:0 0 14px}.wizard-actions{display:flex;justify-content:space-between;margin-top:16px}.role-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.role-card{display:block}.role-card input{position:absolute;opacity:0}.role-card span{border:1px solid var(--line);border-radius:12px;background:#fbfdff;padding:13px;display:block;cursor:pointer}.role-card input:checked+span{border-color:#72b7ff;background:#edf7ff;box-shadow:0 0 0 3px #eaf5ff}.role-card b,.role-card small{display:block}.role-card small{color:var(--muted);margin-top:3px}.secure-note{background:#eff8ff;border:1px solid #d4eaff;border-radius:10px;padding:10px;color:#4f7297;margin-top:11px}
.student-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.student-progress-card{display:flex;align-items:center;gap:10px;padding:11px;border:1px solid var(--line2);background:#fbfdff;border-radius:13px}.student-progress-card .grow{flex:1;min-width:0}.student-progress-card b{display:block}.student-progress-card span{display:block;font-size:9px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.triple-progress{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;margin-top:7px}.triple-progress i{height:4px;border-radius:99px;background:#57adff}.triple-progress i:nth-child(2){background:#48c7d9}.triple-progress i:nth-child(3){background:#6fc79f}.student-hero{display:flex;align-items:center;gap:22px}.progress-ring{--p:70;width:150px;aspect-ratio:1;border-radius:50%;background:conic-gradient(var(--blue) calc(var(--p)*1%),#e8f1fa 0);display:grid;place-items:center;position:relative;flex:0 0 auto}.progress-ring:after{content:"";position:absolute;inset:15px;background:#fff;border-radius:50%}.progress-ring>div{z-index:1;text-align:center}.progress-ring strong{display:block;font-size:26px}.progress-ring span{font-size:9px;color:var(--muted)}.student-main-info{flex:1}.student-main-info h2{font-size:18px;margin:5px 0}.student-main-info p{color:var(--muted)}.pill-row{display:flex;gap:6px;flex-wrap:wrap}.pill-row span{background:#f2f8ff;border:1px solid var(--line);padding:6px 8px;border-radius:999px;font-size:9px}.muted{color:var(--muted);font-size:10px}
.task-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.task-column{margin:0}.task-list{display:flex;flex-direction:column;gap:8px}.task-card{padding:10px;background:#fafdff;border:1px solid var(--line2);border-radius:12px}.task-card>b{display:block;font-size:10px;margin:7px 0 3px}.task-card p{font-size:9px;color:var(--muted);margin:0 0 6px}.task-card>span{font-size:8.5px;color:#7b91a9}.task-top{display:flex;justify-content:space-between;align-items:center}.task-top small{font-size:8px;color:var(--muted)}.task-actions{display:flex;gap:5px;margin-top:8px}.task-actions select{padding:5px 7px;font-size:9px}
.file-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.file-card{border:1px solid var(--line);border-radius:12px;background:#fbfdff;padding:11px;display:flex;gap:9px}.file-icon{width:35px;height:35px;border-radius:9px;background:#eaf5ff;color:var(--blue);display:grid;place-items:center}.file-card b,.file-card span,.file-card small{display:block}.file-card b{font-size:10px}.file-card span,.file-card small{font-size:8.5px;color:var(--muted)}.dropzone{border:1px dashed #9ec9f3;background:#f4faff;border-radius:12px;padding:17px;text-align:center;display:block}.dropzone input{margin-bottom:8px}.feature-list>div{display:flex;gap:10px;padding:9px 0}.feature-list i{width:28px;height:28px;border-radius:8px;background:#edf7ff;color:#4d92d9;display:grid;place-items:center;font-style:normal;font-size:9px}.feature-list p{margin:0}.feature-list b,.feature-list span{display:block}.feature-list span{font-size:9px;color:var(--muted)}
.login-shell{min-height:100vh;display:grid;grid-template-columns:1.1fr .9fr;gap:32px;align-items:center;padding:6vw;background:radial-gradient(circle at 20% 20%,#e4f4ff,transparent 35%),linear-gradient(135deg,#f8fcff,#eff8ff)}.login-info{max-width:700px}.login-info h1{font-size:52px;line-height:1.02;letter-spacing:-2px;margin:12px 0}.login-info h1 em{font-style:normal;color:var(--blue)}.login-info p{font-size:14px;color:var(--muted);max-width:610px}.secure-line{display:inline-flex;background:#fff;border:1px solid var(--line);border-radius:999px;padding:8px 11px;font-size:10px;color:#547895;box-shadow:var(--shadow2)}.secure-line span{color:var(--green);margin-right:6px}.login-card{width:min(440px,100%);justify-self:end;background:#fff;border:1px solid var(--line);border-radius:22px;padding:28px;box-shadow:0 24px 70px rgba(52,113,168,.14)}.login-card h2{font-size:20px;margin:13px 0 4px}.login-card>p{color:var(--muted);margin:0 0 18px}.login-card>small{display:block;color:#9aabba;margin-top:16px}.stack{display:flex;flex-direction:column;gap:11px}
.profile-head{display:flex;align-items:center;gap:15px}.profile-id h1{margin:0}.details{display:grid;grid-template-columns:150px 1fr;gap:7px 12px}.details dt{color:var(--muted)}.details dd{margin:0;font-weight:650}.mini-stats{display:flex;gap:8px;margin-left:auto}.empty{padding:18px;color:var(--muted);text-align:center}.modal{border:1px solid var(--line);border-radius:15px;padding:18px;box-shadow:0 25px 70px rgba(0,0,0,.18);max-width:400px}.modal::backdrop{background:rgba(32,55,79,.22)}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.error-page{min-height:100vh;display:grid;place-items:center;text-align:center;padding:30px}.error-page h1{font-size:56px;margin:0;color:var(--blue)}.error-page pre{text-align:left;max-width:900px;overflow:auto;background:#f5f9fd;border:1px solid var(--line);padding:12px;border-radius:10px;font-size:10px}.mobile-only,.bottom-nav{display:none}
@keyframes fadeUp{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}.panel,.kpi{animation:fadeUp .24s ease both}
@media(max-width:1400px){.kpi-grid,.kpi-grid.dense,.kpi-grid.wide-kpi{grid-template-columns:repeat(4,1fr)}.file-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:1100px){:root{--sidebar:225px}.kpi-grid,.kpi-grid.dense,.kpi-grid.wide-kpi{grid-template-columns:repeat(3,1fr)}.grid-3{grid-template-columns:1fr 1fr}.grid-3 .span-2{grid-column:span 1}.task-board{grid-template-columns:1fr}.student-cards{grid-template-columns:1fr}}
@media(max-width:820px){body{font-size:12px}.mobile-only{display:grid}.sidebar{transform:translateX(-105%);box-shadow:25px 0 60px rgba(30,95,150,.15)}.sidebar.open{transform:none}.app{margin-left:0}.topbar{height:58px;padding:0 12px}.content{padding:15px 11px 78px}.hero-line{align-items:flex-start;flex-direction:column}.hero-line h1{font-size:21px}.hero-actions{width:100%;flex-wrap:wrap}.hero-actions>*{flex:1}.kpi-grid,.kpi-grid.dense,.kpi-grid.wide-kpi{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.kpi{min-height:92px;padding:11px}.kpi strong{font-size:21px}.grid-2,.grid-3{grid-template-columns:1fr}.panel{padding:12px;border-radius:14px}.filters{grid-template-columns:1fr 120px}.filters button{grid-column:1/-1}.form-grid{grid-template-columns:1fr}.form-grid .wide,.wide{grid-column:auto}.role-grid{grid-template-columns:1fr}.metric-row{grid-template-columns:1fr;gap:5px}.compare-list>div{grid-template-columns:110px 1fr}.compare-list em{grid-column:1/-1}.student-hero{align-items:flex-start}.progress-ring{width:115px}.pill-row{gap:4px}.bottom-nav{position:fixed;display:grid;z-index:24;left:8px;right:8px;bottom:8px;height:56px;border-radius:16px;border:1px solid var(--line);background:rgba(255,255,255,.96);backdrop-filter:blur(18px);grid-template-columns:repeat(5,1fr);box-shadow:0 12px 35px rgba(40,103,160,.16)}.bottom-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;color:#6f88a3;font-size:13px}.bottom-nav span{font-size:8px}.file-grid{grid-template-columns:1fr}.login-shell{grid-template-columns:1fr;padding:18px}.login-info{display:none}.login-card{justify-self:center}.overview-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:480px){.kpi-grid,.kpi-grid.dense,.kpi-grid.wide-kpi{grid-template-columns:1fr 1fr}.kpi span{font-size:8px}.kpi strong{font-size:19px}.content{padding-left:8px;padding-right:8px}.panel{padding:10px}.topbar{padding:0 8px}.crumb span{max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.crumb b{font-size:11px}.hero-line h1{font-size:19px}.student-hero{flex-direction:column}.progress-ring{width:105px}.bucket-grid,.bucket-grid.three{grid-template-columns:repeat(2,1fr)}.login-card{padding:20px}.details{grid-template-columns:110px 1fr}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.flash{margin:0 0 12px;padding:9px 11px;border-radius:10px;border:1px solid var(--line);font-size:10px;font-weight:650;background:#f3f9ff;color:#3f6f9d}.flash.success{background:var(--green-soft);border-color:#d4eee4;color:#21805e}.flash.error{background:var(--red-soft);border-color:#f0d1d1;color:#b74040}

/* ========================================================================== */
/* MD — asosiy foydalanuvchi interfeysi */
/* ========================================================================== */
html{background:#f7fbff;color-scheme:light}.auth-page{background:#f7fbff!important}.ui-build{margin-left:auto;align-self:flex-start;padding:3px 5px;border:1px solid #d7eafd;border-radius:6px;background:#f1f8ff;color:#4b8ecb;font-size:8px;font-weight:800;letter-spacing:.06em}
.login-shell.light-auth-v21{position:relative;overflow:hidden;max-width:none;margin:0;padding:clamp(22px,5vw,76px);grid-template-columns:minmax(0,1.15fr) minmax(360px,.75fr);gap:clamp(28px,6vw,96px);background:linear-gradient(135deg,#ffffff 0%,#f4faff 48%,#e9f5ff 100%)}
.login-shell.light-auth-v21:before{content:"MD";position:absolute;right:-2vw;top:-9vw;font-size:clamp(180px,28vw,500px);font-weight:900;letter-spacing:-.08em;color:#dcedff;opacity:.36;line-height:1;pointer-events:none}.login-shell.light-auth-v21:after{content:"";position:absolute;width:360px;height:360px;border-radius:50%;background:radial-gradient(circle,#9cd4ff55 0,#9cd4ff00 68%);left:-110px;bottom:-110px;pointer-events:none}
.login-intro,.login-side{position:relative;z-index:1}.login-intro{display:flex;flex-direction:column;min-height:min(760px,86vh);justify-content:space-between;padding:4px 0}.login-brand-row{display:flex;align-items:center;gap:11px;color:#153b62}.university-mark{width:42px;height:42px;border-radius:13px;background:linear-gradient(145deg,#0d82e9,#56b9ff);display:grid;place-items:center;box-shadow:0 10px 28px #278cd52c}.university-mark span{color:#fff;font-size:19px;font-weight:900}.login-brand-row b{display:block;font-size:10px;letter-spacing:.1em}.login-brand-row small{display:block;margin-top:2px;color:#7890a9;font-size:9px}.version-badge{margin-left:auto;padding:5px 8px;border-radius:999px;background:#eaf5ff;border:1px solid #cfe7fb;color:#3485ca;font-size:8px;font-weight:900;letter-spacing:.08em}
.login-copy{max-width:780px;margin:30px 0}.login-copy .eyebrow{font-size:10px}.login-copy h1{font-size:clamp(42px,5vw,72px);line-height:.96;letter-spacing:-.055em;margin:12px 0 18px;color:#102f50}.login-copy h1 em{font-style:normal;color:#1185ee}.login-copy h1 span{font-weight:650;color:#3e78ad}.login-copy>p{font-size:14px;line-height:1.7;color:#607c97;max-width:680px;margin:0 0 26px}.login-feature-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;max-width:680px}.login-feature-grid>div{display:grid;grid-template-columns:34px 1fr;grid-template-rows:auto auto;gap:1px 9px;padding:13px 14px;border-radius:15px;background:#ffffffd9;border:1px solid #dcecfb;box-shadow:0 9px 28px rgba(41,108,163,.06)}.login-feature-grid i{grid-row:1/3;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:#edf7ff;color:#1677c8;font-style:normal;font-size:9px;font-weight:900}.login-feature-grid b{font-size:11px;color:#173d61}.login-feature-grid span{font-size:9px;color:#7c91a6}.light-auth-v21 .secure-line{margin:0;background:#f8fcff;border-color:#d8eafa;color:#5e7d99;box-shadow:none;font-size:9px}
.login-side{display:flex;align-items:center;justify-content:center}.light-login-card{width:min(455px,100%);justify-self:auto;border-radius:26px;padding:30px;background:#fff!important;border:1px solid #d5e8f9!important;box-shadow:0 28px 80px rgba(31,98,157,.15)!important;backdrop-filter:none!important}.login-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:25px}.light-login-card .login-logo{width:44px;height:44px;border-radius:14px;font-size:18px}.internal-chip{padding:5px 7px;border:1px solid #dbeafa;background:#f4f9fe;color:#7691aa;border-radius:7px;font-size:8px;font-weight:900;letter-spacing:.08em}.light-login-card .eyebrow{font-size:9px}.light-login-card h2{font-size:26px;color:#173858;margin:6px 0 5px;letter-spacing:-.02em}.light-login-card>p{font-size:11px;line-height:1.55;color:#768ba1;margin:0 0 20px}.login-form-v21{gap:13px}.login-form-v21 label>span{display:block;font-size:9px;letter-spacing:.08em;color:#6d8399;margin-bottom:5px;font-weight:850}.input-shell{display:flex;align-items:center;gap:8px;height:44px;border:1px solid #d6e6f5;border-radius:12px;background:#f9fcff;padding:0 12px;transition:.15s}.input-shell:focus-within{border-color:#75b8f3;background:#fff;box-shadow:0 0 0 4px #e8f4ff}.input-shell i{width:20px;text-align:center;color:#6098c6;font-style:normal;font-size:12px}.input-shell input{height:100%;padding:0;border:0!important;background:transparent!important;box-shadow:none!important;color:#173858!important}.input-shell input::placeholder{color:#9aabba}.login-submit{height:45px;margin-top:3px;background:linear-gradient(135deg,#1486ef,#65b9ff)!important;color:#fff!important;border-radius:12px!important;font-size:11px!important;box-shadow:0 10px 24px rgba(20,134,239,.22)!important}.login-security{display:flex;gap:9px;padding:11px 12px;margin-top:17px;border:1px solid #dceee8;border-radius:12px;background:#f5fcf9}.login-security>span{width:24px;height:24px;border-radius:8px;background:#dff7ed;color:#13865e;display:grid;place-items:center;font-weight:900}.login-security b{display:block;font-size:9px;color:#315e51}.login-security small{display:block!important;text-align:left!important;margin:2px 0 0!important;color:#76958b!important;font-size:8px!important}.light-login-card footer{margin-top:18px;padding-top:13px;border-top:1px solid #edf3f9;text-align:center;color:#91a4b7;font-size:8px}

/* Readability: micro UI remains compact but no longer microscopic. */
body{font-size:13.5px}.nav a{font-size:11.5px;padding:9px 10px}.nav .nav-label{font-size:9.5px}.brand span,.user-mini span{font-size:9.5px}.eyebrow{font-size:9.5px}.kpi span{font-size:9.5px}.kpi small{font-size:10.5px}.panel-head>a,.tiny-btn,.legend span{font-size:10.5px}th{font-size:9px}td{font-size:11px}td small{font-size:9px}input,select,textarea{font-size:11px}

/* Every role keeps the white/light-blue system, but its dashboard is visually distinct. */
.role-hero{padding:16px 18px;border:1px solid #d9eafb;border-radius:18px;box-shadow:0 8px 26px rgba(31,103,164,.055);overflow:hidden;position:relative}.role-hero:after{content:"";position:absolute;width:150px;height:150px;border-radius:50%;right:-58px;top:-78px;background:#ffffff8c}.role-hero-system{background:linear-gradient(110deg,#eef8ff,#ffffff)}.role-hero-management{background:linear-gradient(110deg,#eef6ff,#f7fbff)}.role-hero-magistracy{background:linear-gradient(110deg,#e8f7ff,#ffffff)}.role-hero-dean{background:linear-gradient(110deg,#f0f8ff,#ffffff)}.role-hero-department{background:linear-gradient(110deg,#eefcff,#ffffff)}.role-hero-supervisor{background:linear-gradient(110deg,#f1f7ff,#ffffff)}.role-hero-teacher{background:linear-gradient(110deg,#effaff,#ffffff)}.role-hero-student{background:linear-gradient(110deg,#edf8ff,#ffffff)}
.role-superadmin .sidebar,.role-tech .sidebar{border-right-color:#cfe5f7}.role-management .brand-mark{background:linear-gradient(135deg,#1a73d8,#72b5ff)}.role-magistracy .brand-mark{background:linear-gradient(135deg,#008fd1,#4dc7ff)}.role-dean .brand-mark{background:linear-gradient(135deg,#207bd1,#78b9f7)}.role-department .brand-mark{background:linear-gradient(135deg,#1399bd,#6bd6e8)}.role-supervisor .brand-mark{background:linear-gradient(135deg,#356fd6,#7eafff)}.role-teacher .brand-mark{background:linear-gradient(135deg,#1686ba,#76c8e7)}.role-student .brand-mark{background:linear-gradient(135deg,#197fce,#58b8ff)}

@media(max-width:980px){.login-shell.light-auth-v21{grid-template-columns:1fr;padding:26px}.login-intro{min-height:auto}.login-copy{margin:30px 0 18px}.login-side{justify-content:flex-start}.light-login-card{width:min(520px,100%)}.login-shell.light-auth-v21:before{font-size:260px;top:-60px}.login-feature-grid{max-width:100%}}
@media(max-width:700px){.login-brand-row b{font-size:9px}.version-badge{display:none}.login-copy h1{font-size:41px}.login-copy>p{font-size:12px}.login-feature-grid{grid-template-columns:1fr 1fr}.login-shell.light-auth-v21{padding:18px}.light-login-card{padding:22px}.role-hero{padding:13px 14px}}
@media(max-width:480px){.login-feature-grid{grid-template-columns:1fr}.login-copy{margin:24px 0 12px}.login-copy h1{font-size:34px}.university-mark{width:38px;height:38px}.light-login-card h2{font-size:22px}}
.role-pill{display:inline-flex;align-items:center;min-height:30px;padding:0 9px;border-radius:9px;border:1px solid #d7e8f8;background:#f2f8fe;color:#47789f;font-size:9px;font-weight:800;white-space:nowrap}.analytics-summary-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:12px}.analytics-summary-strip>div{border:1px solid var(--line);background:#fff;border-radius:13px;padding:12px;box-shadow:var(--shadow2)}.analytics-summary-strip span{display:block;color:var(--muted);font-size:9px}.analytics-summary-strip b{display:block;font-size:20px;margin-top:4px}.analytics-summary-strip small{font-size:9px;color:#7890a7}.analytics-danger b{color:#ca4545}.analytics-warn b{color:#c27c10}.analytics-ok b{color:#138b64}@media(max-width:820px){.role-pill{display:none}.analytics-summary-strip{grid-template-columns:repeat(2,1fr)}}

/* === v2.2 QUICK ENTRY === */
.academic-cascade{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.academic-cascade label{min-width:0}.section-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:13px}.section-title-row h2{font-size:15px;margin:3px 0 0}.quick-note{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 12px;padding:10px 12px;background:#eef8ff;border:1px solid #d7ebfb;border-radius:12px;color:#57738f;font-size:10px}.quick-note b{color:#244d70}.quick-note span{padding:4px 7px;background:#fff;border:1px solid #dcecf9;border-radius:8px}.quick-note kbd{font:inherit;font-weight:900;background:#e9f2fa;border:1px solid #cfdeeb;border-radius:4px;padding:1px 4px}.warning-box{border-color:#f1dfad;background:#fffdf6}.warning-box b{color:#785f1c}.warning-box p{margin:4px 0 0;color:#7f7355}.warning-box a{color:#197fcf;font-weight:800}.student-entry-form{padding-bottom:74px}.advanced-details{padding:0;overflow:hidden}.advanced-details summary{list-style:none;cursor:pointer;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fbfdff}.advanced-details summary::-webkit-details-marker{display:none}.advanced-details summary b{font-size:11px;color:#264a69}.advanced-details summary span{font-size:9px;color:#7890a6}.advanced-details[open] summary{border-bottom:1px solid var(--line)}.monitoring-entry-grid{padding:14px 16px}.sticky-savebar{position:sticky;bottom:10px;z-index:15;display:flex;justify-content:space-between;align-items:center;gap:15px;margin:15px 0 0;padding:11px 13px;border:1px solid #cfe5f7;background:rgba(255,255,255,.96);backdrop-filter:blur(12px);box-shadow:0 14px 40px rgba(32,97,151,.14);border-radius:14px}.sticky-savebar>div:first-child b,.sticky-savebar>div:first-child span{display:block}.sticky-savebar>div:first-child b{font-size:10px;color:#2c5373}.sticky-savebar>div:first-child span{font-size:8.5px;color:#7c93a8;margin-top:2px}.savebar-actions{display:flex;gap:7px;align-items:center}.duplicate-hint{height:14px;margin-top:5px;font-size:9px;font-weight:800}.duplicate-hint.bad{color:#c94f5c}.duplicate-hint.good{color:#168963}.paste-panel textarea{min-height:122px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:10px}.quick-entry-wrap{max-height:520px}.quick-entry-table{min-width:1020px}.quick-entry-table th{position:sticky;top:0;background:#f5faff;z-index:2}.quick-entry-table td{padding:4px}.quick-entry-table input{min-width:120px;padding:6px 7px;border-radius:7px;font-size:10px}.quick-entry-table td:nth-child(2) input{min-width:210px}.quick-entry-table td:nth-child(6) input{min-width:230px}.quick-entry-table .row-no{width:32px;text-align:center;color:#7991a9;font-size:9px}.icon-remove{width:27px;height:27px;border:1px solid #f1d7db;background:#fff7f8;color:#b84454;border-radius:7px;font-weight:900}.filters-advanced{grid-template-columns:minmax(210px,1.4fr) repeat(6,minmax(115px,.8fr)) auto auto;align-items:center;overflow-x:auto;padding-bottom:2px}.filter-export{white-space:nowrap;text-align:center}.bulk-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:10px;padding:9px 10px;border:1px solid #d6e9f8;background:#f7fbff;border-radius:12px}.bulk-toolbar>div{margin-right:auto}.bulk-toolbar b,.bulk-toolbar span{display:block}.bulk-toolbar b{font-size:10px;color:#2b5375}.bulk-toolbar span{font-size:8px;color:#8297aa}.bulk-toolbar select{width:auto;min-width:180px}.row-actions{display:flex;align-items:center;gap:6px;white-space:nowrap}.empty-state{padding:24px;text-align:center;color:#7a91a8}.structure-compact{font-size:9px}
@media(max-width:1200px){.academic-cascade{grid-template-columns:repeat(2,minmax(0,1fr))}.filters-advanced{grid-template-columns:repeat(4,minmax(150px,1fr))}.bulk-toolbar{flex-wrap:wrap}.bulk-toolbar>div{width:100%;margin-right:0}.bulk-toolbar select{flex:1}}
@media(max-width:820px){.academic-cascade{grid-template-columns:1fr 1fr}.sticky-savebar{bottom:70px;align-items:stretch;flex-direction:column}.savebar-actions{display:grid;grid-template-columns:1fr 1fr}.savebar-actions .ghost{grid-column:1/-1;text-align:center}.filters-advanced{grid-template-columns:1fr 1fr}.filters-advanced input{grid-column:1/-1}.filters-advanced button,.filter-export{grid-column:auto}.bulk-toolbar{align-items:stretch}.bulk-toolbar select,.bulk-toolbar button{width:100%}.section-title-row{align-items:flex-start}.quick-note{align-items:flex-start}}
@media(max-width:480px){.academic-cascade{grid-template-columns:1fr}.filters-advanced{grid-template-columns:1fr}.filters-advanced>*{grid-column:1!important}.sticky-savebar{padding:9px}.savebar-actions{grid-template-columns:1fr}.savebar-actions>*{grid-column:1!important}.advanced-details summary{align-items:flex-start;flex-direction:column}}

/* === v2.4 GOVERNANCE + DAY/NIGHT THEME === */
.theme-toggle{display:inline-flex;align-items:center;gap:6px;min-height:31px;padding:0 9px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--text);font-size:10px;font-weight:850;box-shadow:var(--shadow2);transition:.18s}.theme-toggle:hover{transform:translateY(-1px);border-color:#9dcaf1}.theme-icon{font-size:13px;line-height:1}.theme-label{white-space:nowrap}.auth-theme-toggle{position:fixed;right:18px;top:18px;z-index:30}
.field-help{display:block;margin-top:7px;color:var(--muted);font-size:10px}.span-all{grid-column:1/-1}.top-gap{margin-top:12px}.protected-value,.tiny-lock{display:inline-flex;align-items:center;gap:4px;padding:5px 7px;border-radius:8px;background:#f7f3ff;border:1px solid #e5d9fb;color:#6f56a0;font-size:9px;font-weight:850}.danger-btn{border-color:#efc8cd!important;color:#b83d4c!important;background:#fff8f9!important}.danger-btn.solid{background:#c84655!important;color:#fff!important;border:0!important;padding:10px 13px;border-radius:10px}.wide-modal{width:min(820px,92vw)}.profile-complete{min-width:104px;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:var(--surface);text-align:center}.profile-complete b{display:block;font-size:20px}.profile-complete span{display:block;font-size:9px;color:var(--muted)}.privacy-note{display:flex;align-items:flex-start;gap:10px;margin:12px 0;padding:12px 14px;border:1px solid #d8e8f7;border-radius:13px;background:#f6fbff;color:#4c6880}.privacy-note b{white-space:nowrap;color:#285273;font-size:10px}.privacy-note span{font-size:10.5px;line-height:1.5}.profile-mini,.access-tag{display:inline-flex;align-items:center;padding:5px 7px;border-radius:8px;border:1px solid var(--line);background:var(--surface2);font-size:9px;color:var(--muted);font-weight:800}.form-section-title{margin:5px 0 0;padding-top:11px;border-top:1px solid var(--line);font-size:12px;color:var(--text)}.student-self-form .form-section-title:first-child{border-top:0;padding-top:0}.check-line{display:flex;align-items:center;gap:8px;min-height:40px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:var(--surface2)}.check-line input{width:auto;min-height:auto}.danger-zone{display:flex;align-items:center;justify-content:space-between;gap:15px;border-color:#f0cbd1!important}.danger-zone>div b,.danger-zone>div span{display:block}.danger-zone>div b{font-size:11px;color:#a93d49}.danger-zone>div span{margin-top:3px;color:var(--muted);font-size:9px}
.control-search form{display:grid;grid-template-columns:auto minmax(240px,1fr) auto;gap:12px;align-items:end}.control-search form h2{margin:2px 0 0}.search-results{display:grid;gap:6px;margin-top:12px}.search-results>a{display:grid;grid-template-columns:auto minmax(160px,1fr) minmax(150px,.7fr);gap:9px;align-items:center;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface2)}.search-results>a:hover{border-color:#a8d0f2;background:var(--surface)}.search-results b{font-size:10.5px}.search-results small{color:var(--muted);font-size:9px}.quality-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.quality-grid a{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px;border:1px solid var(--line);border-radius:11px;background:var(--surface2)}.quality-grid span{font-size:9.5px;color:var(--muted)}.quality-grid b{font-size:17px}.control-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:10px}.control-links a{padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface2);font-size:9.5px;font-weight:800;color:#28628f}.compact-list{display:grid;gap:7px}.compact-list>a,.audit-mini{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 9px;border-bottom:1px solid var(--line2)}.compact-list>a:last-child,.audit-mini:last-child{border-bottom:0}.compact-list b,.audit-mini b{display:block;font-size:9.5px}.compact-list span,.audit-mini span{display:block;margin-top:2px;color:var(--muted);font-size:8.5px}.audit-mini time{font-size:8px;color:var(--muted);white-space:nowrap}

/* Keep typography compact, but never microscopic/invisible. */
body{font-size:13.5px}.content{color:var(--text)}h1,h2,h3,h4,b,strong,label,dt,dd,p,span,small,td,th,a,button,input,select,textarea{visibility:visible!important;opacity:1}.nav a{font-size:11.5px}.nav .nav-label,.eyebrow,.kpi span{font-size:9.5px}.kpi small,.panel-head>a,.tiny-btn,.legend span{font-size:10px}th{font-size:9.5px}td{font-size:11px}td small{font-size:9.5px}input,select,textarea{font-size:11px;line-height:1.35}input::placeholder,textarea::placeholder{opacity:1}

/* Dark theme: every text/surface/input has explicit contrast to avoid disappearing fonts. */
html[data-theme="dark"]{
  --bg:#081713;--surface:#0e251c;--surface2:#153126;--blue:#57d19a;--blue2:#82ddb1;--blue-soft:#173e2e;--cyan:#65dfae;--text:#effaf4;--muted:#adc9b9;--line:#2b5141;--line2:#1d3a2e;--green:#57d19a;--green-soft:#123e2f;--yellow:#f6c45e;--yellow-soft:#453719;--red:#ff7f8d;--red-soft:#48232a;--shadow:0 14px 36px rgba(0,0,0,.22);--shadow2:0 5px 18px rgba(0,0,0,.18)
}
html[data-theme="dark"] body{background:linear-gradient(180deg,#081713 0,#0a2119 60%,#0b1d17 100%);color:var(--text)}
html[data-theme="dark"] .ambient{opacity:.18}
html[data-theme="dark"] .sidebar,html[data-theme="dark"] .topbar,html[data-theme="dark"] .panel,html[data-theme="dark"] .kpi,html[data-theme="dark"] .analytics-summary-strip>div,html[data-theme="dark"] .login-card,html[data-theme="dark"] .light-login-card,html[data-theme="dark"] .profile-head,html[data-theme="dark"] .student-hero,html[data-theme="dark"] .role-hero,html[data-theme="dark"] .sticky-savebar,html[data-theme="dark"] dialog{background:var(--surface)!important;color:var(--text)!important;border-color:var(--line)!important;box-shadow:var(--shadow2)}
html[data-theme="dark"] .role-hero-system,html[data-theme="dark"] .role-hero-management,html[data-theme="dark"] .role-hero-magistracy,html[data-theme="dark"] .role-hero-dean,html[data-theme="dark"] .role-hero-department,html[data-theme="dark"] .role-hero-supervisor,html[data-theme="dark"] .role-hero-teacher,html[data-theme="dark"] .role-hero-student{background:linear-gradient(110deg,#10283f,#0e2033)!important}
html[data-theme="dark"] .login-shell.light-auth-v21{background:radial-gradient(circle at 15% 20%,#163a5c55,transparent 34%),linear-gradient(135deg,#071421,#0a1d30)!important;color:var(--text)}
html[data-theme="dark"] .login-intro,html[data-theme="dark"] .login-copy,html[data-theme="dark"] .login-copy h1,html[data-theme="dark"] .login-copy h1 span,html[data-theme="dark"] .login-copy p,html[data-theme="dark"] .login-brand-row b,html[data-theme="dark"] .login-brand-row small{color:var(--text)!important}
html[data-theme="dark"] .login-copy p,html[data-theme="dark"] .login-brand-row small,html[data-theme="dark"] .secure-line,html[data-theme="dark"] .login-card p,html[data-theme="dark"] .login-card footer{color:var(--muted)!important}
html[data-theme="dark"] .login-feature-grid>div,html[data-theme="dark"] .login-security,html[data-theme="dark"] .quick-note,html[data-theme="dark"] .privacy-note,html[data-theme="dark"] .quality-grid a,html[data-theme="dark"] .control-links a,html[data-theme="dark"] .search-results>a,html[data-theme="dark"] .overview-grid>div,html[data-theme="dark"] .metric-row,html[data-theme="dark"] .advanced-details summary,html[data-theme="dark"] .bulk-toolbar{background:var(--surface2)!important;border-color:var(--line)!important;color:var(--text)!important}
html[data-theme="dark"] input,html[data-theme="dark"] select,html[data-theme="dark"] textarea,html[data-theme="dark"] .input-shell,html[data-theme="dark"] .check-line{background:#091b2c!important;color:#f4f9ff!important;border-color:#35516b!important;box-shadow:none!important}
html[data-theme="dark"] input:focus,html[data-theme="dark"] select:focus,html[data-theme="dark"] textarea:focus,html[data-theme="dark"] .input-shell:focus-within{background:#0b2137!important;border-color:#6ab5f7!important;box-shadow:0 0 0 3px #1b4b734d!important}
html[data-theme="dark"] input::placeholder,html[data-theme="dark"] textarea::placeholder{color:#7f9ab4!important}
html[data-theme="dark"] select option{background:#0b1d30;color:#eef7ff}
html[data-theme="dark"] table{color:var(--text)}html[data-theme="dark"] thead th,html[data-theme="dark"] .quick-entry-table th{background:#10283f!important;color:#bfd4e8!important;border-color:var(--line)!important}html[data-theme="dark"] td{border-color:var(--line2)!important;color:#e8f3fc!important}html[data-theme="dark"] tr:hover td{background:#10263b!important}
html[data-theme="dark"] .nav a,html[data-theme="dark"] .nav-label,html[data-theme="dark"] .brand span,html[data-theme="dark"] .user-mini span,html[data-theme="dark"] .crumb span,html[data-theme="dark"] .muted,html[data-theme="dark"] small,html[data-theme="dark"] .kpi span,html[data-theme="dark"] .kpi small{color:var(--muted)!important}
html[data-theme="dark"] .nav a.active{background:#173958!important;color:#fff!important;border-color:#2c5c82!important}html[data-theme="dark"] .nav a:hover{background:#122d47!important;color:#fff!important}
html[data-theme="dark"] .ghost,html[data-theme="dark"] .tiny-btn,html[data-theme="dark"] .theme-toggle,html[data-theme="dark"] .role-pill,html[data-theme="dark"] .chip,html[data-theme="dark"] .profile-mini,html[data-theme="dark"] .access-tag{background:var(--surface2)!important;color:#d9eaff!important;border-color:var(--line)!important}
html[data-theme="dark"] .primary{color:#fff!important}html[data-theme="dark"] .secondary{background:#153552!important;color:#dff0ff!important;border-color:#31597a!important}
html[data-theme="dark"] .protected-value,html[data-theme="dark"] .tiny-lock{background:#2c2342!important;color:#d9c8ff!important;border-color:#51416c!important}
html[data-theme="dark"] .danger-btn{background:#3a2027!important;color:#ffb3bd!important;border-color:#6a3842!important}html[data-theme="dark"] .danger-btn.solid{background:#b94857!important;color:#fff!important}
html[data-theme="dark"] .status.green,html[data-theme="dark"] .badge.green{background:#123f34!important;color:#71e0b9!important;border-color:#205f4f!important}html[data-theme="dark"] .status.yellow,html[data-theme="dark"] .badge.yellow{background:#453719!important;color:#ffd879!important;border-color:#6f5724!important}html[data-theme="dark"] .status.red,html[data-theme="dark"] .badge.red{background:#48232a!important;color:#ff9aa5!important;border-color:#713841!important}
html[data-theme="dark"] .role-hero:after{background:#ffffff08}html[data-theme="dark"] .mini-progress,html[data-theme="dark"] .big-progress,html[data-theme="dark"] .metric-bars em{background:#18324a!important}
html[data-theme="dark"] .privacy-note b,html[data-theme="dark"] .control-links a,html[data-theme="dark"] .field-help{color:#9dccf2!important}
html[data-theme="dark"] code{background:#0a1a2a;color:#b9dcff;border-color:var(--line)}

@media(max-width:820px){.theme-label{display:none}.theme-toggle{min-width:34px;justify-content:center;padding:0}.privacy-note{flex-direction:column}.control-search form{grid-template-columns:1fr}.quality-grid,.control-links{grid-template-columns:1fr 1fr}.danger-zone{align-items:stretch;flex-direction:column}}
@media(max-width:480px){.quality-grid,.control-links{grid-template-columns:1fr}.search-results>a{grid-template-columns:auto 1fr}.search-results small{grid-column:2}.auth-theme-toggle{top:10px;right:10px}}

/* v2.4 readability hardening: compact UI without disappearing text. */
:root{--font-floor:10px}
body{font-size:14px}
.nav .nav-label,.eyebrow,.kpi span,.bucket-grid span,.overview-grid span,.metric-row span,.user-mini span,.crumb span,.audit-mini time{font-size:10px!important;line-height:1.35}
.nav a,.user-mini b,.metric-row b,.compare-list b,.compact-list b,.audit-mini b,.search-results b,.quality-grid span,.control-links a{font-size:11px!important}
small,.panel-head>a,.tiny-btn,.legend span,.profile-mini,.access-tag,.badge,.live-dot{font-size:10px!important}
th{font-size:10.5px!important;line-height:1.35}td{font-size:11.5px!important;line-height:1.4}td small{font-size:10px!important}
input,select,textarea,button{font-size:11.5px!important;min-height:36px}textarea{min-height:82px}.icon-btn{min-height:34px}
label{font-size:11px;color:var(--text);font-weight:700}label>span{font-size:10.5px}
input::placeholder,textarea::placeholder{color:#8a9db2;opacity:1}
html[data-theme="dark"] label,html[data-theme="dark"] dt,html[data-theme="dark"] dd,html[data-theme="dark"] p,html[data-theme="dark"] h1,html[data-theme="dark"] h2,html[data-theme="dark"] h3,html[data-theme="dark"] h4{color:var(--text)!important}
html[data-theme="dark"] input::placeholder,html[data-theme="dark"] textarea::placeholder{color:#8fa9c2!important}
@media(max-width:520px){body{font-size:13.5px}.nav a{font-size:11.5px!important}input,select,textarea,button{font-size:12px!important}}

.unit-card{border:1px solid var(--line);background:var(--surface2);border-radius:14px;padding:14px;display:grid;gap:10px}.unit-card>b{font-size:11px;color:var(--blue)}.unit-card .form-grid{margin:0}.master-builder .grid-2{align-items:start}html[data-theme="dark"] .unit-card{background:var(--surface2)!important;border-color:var(--line)!important}

/* v2.5 — student-first research submission workflow */
.notification-bell{width:36px;height:36px;border:1px solid var(--line);background:var(--surface);border-radius:11px;display:grid;place-items:center;position:relative;color:var(--blue);font-size:17px;box-shadow:var(--shadow2)}
.notification-bell b{position:absolute;right:-5px;top:-6px;min-width:18px;height:18px;padding:0 4px;border-radius:10px;background:var(--red);color:#fff;display:grid;place-items:center;font-size:9px;border:2px solid var(--surface)}
.submission-hero{background:linear-gradient(135deg,#edf7ff,#f8fcff 52%,#e7f7ff);border:1px solid #d7ebff}
.submission-hero:after{content:"⇢";font-size:100px;right:3%;top:50%;transform:translateY(-50%);color:#1685ff10}
.submission-kpis{grid-template-columns:repeat(7,minmax(115px,1fr))}
.submission-kpis .kpi.focus{background:linear-gradient(145deg,#eef7ff,#fff);border-color:#acd5ff;box-shadow:0 8px 28px rgba(22,119,255,.12)}
.submission-kpis .kpi.focus strong{color:var(--blue)}
.workflow-guide{overflow:hidden}
.workflow-strip{display:flex;align-items:center;gap:8px;overflow-x:auto;padding:4px 2px 8px;scrollbar-width:thin}
.workflow-strip.spacious{justify-content:space-between}
.workflow-person{min-width:128px;display:flex;align-items:center;gap:8px;padding:10px;border:1px solid var(--line);background:var(--surface2);border-radius:13px;position:relative}
.workflow-person i{font-style:normal;width:27px;height:27px;flex:0 0 27px;border-radius:9px;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center;font-weight:800}
.workflow-person b{font-size:11px;display:block}.workflow-person span{font-size:9.5px;color:var(--muted);position:absolute;left:45px;bottom:7px}.workflow-person.student{border-color:#9fe0c7;background:var(--green-soft)}
.workflow-arrow{color:#8ab3d7;font-size:18px;font-weight:800;flex:0 0 auto}
.filter-panel{padding:13px 16px}
.submission-filters{display:grid;grid-template-columns:2fr repeat(3,1fr) auto auto;gap:10px;align-items:end}
.submission-filters label{display:grid;gap:5px}.submission-filters input,.submission-filters select{width:100%}.filter-reset{min-height:36px;display:grid;place-items:center;padding:0 13px}
.submission-list{display:grid;gap:11px}
.submission-card{display:block;padding:15px 17px;transition:.18s ease;border-left:4px solid transparent}
.submission-card:hover{transform:translateY(-2px);border-color:#a8d4ff;box-shadow:0 15px 35px rgba(22,90,150,.12)}
.submission-card.urgent-card{border-left-color:var(--red)}
.submission-card-head,.submission-card-body,.submission-card-foot{display:flex;align-items:center;justify-content:space-between;gap:12px}
.submission-card-head>div,.hero-meta{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.submission-card-head time{font-size:9.5px;color:var(--muted)}
.application-no{font-size:10px;letter-spacing:.55px;font-weight:850;color:var(--blue);background:var(--blue-soft);padding:5px 8px;border-radius:8px;border:1px solid #d4eaff}
.status.orange{background:#fff0e4;color:#c26617;border-color:#ffd4ad}.status.muted{background:#f0f4f8;color:#6b7f99;border-color:#dbe5ef}
.submission-card-body{padding:12px 0 10px}.submission-card-body h2{font-size:15px;margin:3px 0}.submission-card-body p{margin:0;color:var(--muted);font-size:10.5px}
.current-stage{min-width:190px;border-left:1px solid var(--line);padding-left:16px}.current-stage span,.current-stage small{display:block;color:var(--muted);font-size:9.5px}.current-stage b{display:block;font-size:11.5px;margin:2px 0;color:var(--text)}
.mini-workflow{height:5px;display:grid;grid-template-columns:repeat(5,1fr);gap:4px;margin:0 0 11px}.mini-workflow i{border-radius:6px;background:#e7edf4}.mini-workflow i.pending,.mini-workflow i.active{background:var(--yellow)}.mini-workflow i.approved{background:var(--green)}.mini-workflow i.changes_requested{background:#f27d28}.mini-workflow i.rejected{background:var(--red)}
.submission-card-foot{padding-top:10px;border-top:1px solid var(--line2);justify-content:flex-start}.submission-card-foot span{font-size:9.5px;color:var(--muted)}.submission-card-foot span b{color:var(--text)}.submission-card-foot strong{margin-left:auto;color:var(--blue);font-size:10.5px}
.pagination{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:16px}.pagination a,.pagination span{padding:9px 13px;border:1px solid var(--line);background:var(--surface);border-radius:10px;font-size:10.5px}.pagination a{color:var(--blue);font-weight:750}
.empty-state.large{min-height:190px;display:flex;flex-direction:column;gap:9px;align-items:center;justify-content:center;text-align:center}.empty-state.large b{font-size:17px}.empty-state.large span{color:var(--muted);max-width:480px}.empty-state.large .primary,.empty-state.large .secondary{margin-top:6px}
.submission-create-layout,.submission-detail-grid{align-items:start}.submission-create-layout .span-2,.submission-detail-grid .span-2{grid-column:span 2}.submission-side,.detail-main{display:grid;gap:14px}
.submission-form textarea[name="abstract"]{min-height:150px}.submission-form .field-help{display:block;margin-top:5px;color:var(--muted);font-weight:500}
.dropzone small[data-file-summary]{display:block;margin-top:7px;color:var(--blue);font-weight:750}
.form-actions.split{display:flex;align-items:center;justify-content:space-between;gap:10px}.form-actions.split button{min-width:190px}
button:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.35)}
.identity-card{display:grid;gap:13px}.identity-card>.avatar.large{width:48px;height:48px;border-radius:15px;font-size:19px}.identity-card>div:nth-child(2) h2{margin:2px 0;font-size:15px}.identity-card>div:nth-child(2) p{margin:0;color:var(--muted);font-size:10px}
.identity-card dl{margin:0;display:grid;gap:0}.identity-card dl>div{padding:9px 0;border-top:1px solid var(--line2)}.identity-card dt{font-size:9px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);font-weight:800}.identity-card dd{margin:2px 0 0;font-size:11px;font-weight:700;word-break:break-word}
.inline-alert{border:1px solid var(--line);padding:10px;border-radius:11px;display:grid;gap:3px}.inline-alert.danger{background:var(--red-soft);border-color:#ffd0d0}.inline-alert b{font-size:10.5px}.inline-alert span{font-size:9.5px;color:var(--muted)}
.compact-rules ol{padding-left:19px;margin:10px 0 0;color:var(--muted)}.compact-rules li{padding:4px 0}
.submission-detail-hero{align-items:flex-start}.submission-detail-hero h1{max-width:850px;margin-top:9px}.submission-detail-hero p{margin-bottom:0}
.workflow-detail{overflow:hidden}.workflow-steps{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.workflow-step{min-width:0;padding:11px 8px;border-radius:13px;border:1px solid var(--line);background:var(--surface2);display:flex;gap:8px;align-items:flex-start;position:relative}.workflow-step:after{content:"";position:absolute;left:calc(100% + 1px);top:24px;width:8px;height:2px;background:var(--line)}.workflow-step:last-child:after{display:none}.workflow-step>span{width:27px;height:27px;flex:0 0 27px;border-radius:50%;display:grid;place-items:center;background:#e6edf4;color:#8092a6;font-weight:850}.workflow-step b,.workflow-step small,.workflow-step em{display:block}.workflow-step b{font-size:10px}.workflow-step small{font-size:9px;color:var(--muted);margin-top:2px}.workflow-step em{font-size:8.5px;color:var(--blue);font-style:normal;margin-top:4px}.workflow-step.done,.workflow-step.approved{background:var(--green-soft);border-color:#bdebd9}.workflow-step.done>span,.workflow-step.approved>span{background:var(--green);color:#fff}.workflow-step.pending,.workflow-step.current{background:var(--yellow-soft);border-color:#f2cf8d;box-shadow:0 0 0 2px #f7c85d20}.workflow-step.pending>span{background:var(--yellow);color:#fff}.workflow-step.changes_requested{background:#fff0e4;border-color:#ffcca2}.workflow-step.changes_requested>span{background:#ef7e2e;color:#fff}.workflow-step.rejected{background:var(--red-soft);border-color:#f6bfc3}.workflow-step.rejected>span{background:var(--red);color:#fff}
.submission-abstract{white-space:pre-wrap;font-size:12.5px;line-height:1.75;margin:4px 0 12px}.tag-row{display:flex;flex-wrap:wrap;gap:6px}.tag-row span{font-size:9.5px;padding:5px 8px;border-radius:8px;background:var(--blue-soft);color:var(--blue);border:1px solid #d2e8ff;font-weight:700}
.note-box{margin-top:14px;padding:12px;border-left:3px solid var(--blue);background:var(--surface2);border-radius:3px 11px 11px 3px}.note-box b{font-size:10px}.note-box p{margin:5px 0 0;white-space:pre-wrap;color:var(--muted)}
.external-source{display:flex;align-items:center;gap:10px;margin-top:14px;padding:12px;background:#f2f9ff;border:1px solid #cfe7ff;border-radius:12px;color:var(--blue)}.external-source i{width:31px;height:31px;display:grid;place-items:center;border-radius:9px;background:var(--blue);color:#fff;font-style:normal}.external-source b,.external-source span{display:block}.external-source span{font-size:9.5px;color:var(--muted);margin-top:2px;word-break:break-all}
.secure-tag{font-size:9px;background:var(--green-soft);color:var(--green);border:1px solid #bde9da;padding:5px 8px;border-radius:8px;font-weight:750}.attachment-list{display:grid;gap:8px}.attachment-row{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center}.attachment-row>a{display:flex;align-items:center;gap:10px;padding:11px;border:1px solid var(--line);background:var(--surface2);border-radius:12px;min-width:0}.attachment-row>a>i{font-style:normal;width:33px;height:33px;display:grid;place-items:center;border-radius:10px;background:var(--blue-soft);color:var(--blue);font-size:16px}.attachment-row>a>div{min-width:0}.attachment-row b,.attachment-row span,.attachment-row small{display:block}.attachment-row b{font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.attachment-row span,.attachment-row small{font-size:9px;color:var(--muted)}.attachment-row>a>strong{margin-left:auto;font-size:9.5px;color:var(--blue);white-space:nowrap}.attachment-row form button{min-height:34px}
.edit-submission{padding:0;overflow:hidden}.edit-submission summary{list-style:none;padding:16px 18px;display:flex;justify-content:space-between;align-items:center;cursor:pointer}.edit-submission summary::-webkit-details-marker{display:none}.edit-submission summary h2{margin:2px 0}.edit-submission summary>strong{font-size:9.5px;color:var(--blue)}.edit-submission[open] summary{border-bottom:1px solid var(--line)}.edit-submission>form{padding:17px}
.decision-panel{border:1px solid #a9d7c4;background:linear-gradient(145deg,#fbfffd,var(--green-soft))}.decision-form{display:grid;gap:12px}.decision-form label{display:grid;gap:6px}.decision-form textarea{min-height:115px}.decision-actions{display:grid;grid-template-columns:1fr 1.25fr 1fr;gap:8px}.decision-actions button{border:0;border-radius:10px;color:#fff;font-weight:800}.approve-btn{background:var(--green)}.changes-btn{background:#e88926}.reject-btn{background:var(--red)}
.history-timeline{display:grid;gap:0}.history-item{display:grid;grid-template-columns:18px 1fr;gap:9px;position:relative}.history-item>i{width:10px;height:10px;border-radius:50%;background:#9eb5ca;border:2px solid var(--surface);box-shadow:0 0 0 2px var(--line);margin:17px 0 0 3px;z-index:1}.history-item:after{content:"";position:absolute;left:7px;top:28px;bottom:-8px;width:2px;background:var(--line)}.history-item:last-child:after{display:none}.history-item.action-approved>i{background:var(--green)}.history-item.action-rejected>i{background:var(--red)}.history-item.action-changes_requested>i{background:#ef862d}.history-card{padding:11px 12px;margin:5px 0;border:1px solid var(--line);background:var(--surface2);border-radius:12px}.history-card>div{display:flex;align-items:center;justify-content:space-between;gap:8px}.history-card b{font-size:10.5px}.history-card time,.history-card span,.history-card small{font-size:9px;color:var(--muted)}.history-card span,.history-card small{display:block;margin-top:2px}.history-card p{white-space:pre-wrap;margin:8px 0 0;padding:9px;background:var(--surface);border-radius:9px;font-size:10.5px;line-height:1.55}
.comment-form{display:grid;grid-template-columns:1fr auto;gap:9px;align-items:end}.comment-form textarea{min-height:82px}.comment-form button{height:42px}
.admin-workflow{border-color:#d8c9f3;background:linear-gradient(145deg,var(--surface),#f8f3ff)}.admin-workflow form{display:grid;gap:9px}.admin-workflow label{display:grid;gap:5px}.admin-workflow p{color:var(--muted);font-size:10px}.admin-workflow .check-line{display:flex}
.notification-center{padding:8px}.notification-list{display:grid;gap:5px}.notification-item{margin:0}.notification-item>button{width:100%;border:0;background:transparent;text-align:left;padding:11px;border-radius:12px;display:grid;grid-template-columns:auto 1fr auto;gap:11px;align-items:center;color:var(--text)}.notification-item.unread>button{background:var(--blue-soft);box-shadow:inset 3px 0 0 var(--blue)}.notification-item.read>button{background:var(--surface2)}.notification-item>button>i{width:37px;height:37px;border-radius:11px;background:var(--surface);color:var(--blue);display:grid;place-items:center;font-style:normal;font-size:16px}.notification-item span,.notification-item b,.notification-item p,.notification-item small{display:block}.notification-item span{font-size:8.5px;color:var(--blue);font-weight:750;text-transform:uppercase}.notification-item b{font-size:11px;margin-top:2px}.notification-item p{font-size:10.5px;color:var(--muted);margin:3px 0}.notification-item small{font-size:9px;color:var(--muted)}.notification-item>button>strong{font-size:9.5px;color:var(--blue)}
.dashboard-submissions{margin-top:14px}.submission-dashboard-grid{display:grid;grid-template-columns:minmax(270px,.65fr) 1.35fr;gap:14px}.submission-dash-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px}.submission-dash-stats a{padding:12px;background:var(--surface2);border:1px solid var(--line);border-radius:12px}.submission-dash-stats a.attention{background:var(--yellow-soft);border-color:#efd392}.submission-dash-stats span,.submission-dash-stats b{display:block}.submission-dash-stats span{font-size:9px;color:var(--muted);text-transform:uppercase;font-weight:750}.submission-dash-stats b{font-size:20px;margin-top:2px}.submission-dash-list{display:grid;gap:5px}.submission-dash-list>a{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;background:var(--surface2);border:1px solid var(--line);border-radius:11px}.submission-dash-list span,.submission-dash-list b,.submission-dash-list small{display:block}.submission-dash-list span{font-size:8.5px;color:var(--blue);font-weight:700}.submission-dash-list b{font-size:10.5px;margin:2px 0}.submission-dash-list small{font-size:9px;color:var(--muted)}

html[data-theme="dark"] .submission-hero,html[data-theme="dark"] .decision-panel,html[data-theme="dark"] .admin-workflow{background:var(--surface)!important;border-color:var(--line)!important}
html[data-theme="dark"] .workflow-person,html[data-theme="dark"] .workflow-step,html[data-theme="dark"] .submission-dash-stats a,html[data-theme="dark"] .submission-dash-list>a,html[data-theme="dark"] .attachment-row>a,html[data-theme="dark"] .history-card,html[data-theme="dark"] .notification-item.read>button{background:var(--surface2)!important;border-color:var(--line)!important}
html[data-theme="dark"] .workflow-step.done,html[data-theme="dark"] .workflow-step.approved{background:#123c32!important}html[data-theme="dark"] .workflow-step.pending,html[data-theme="dark"] .workflow-step.current,html[data-theme="dark"] .submission-dash-stats a.attention{background:#3f3219!important}html[data-theme="dark"] .workflow-step.changes_requested{background:#402a1d!important}html[data-theme="dark"] .workflow-step.rejected{background:#43242a!important}
html[data-theme="dark"] .external-source,html[data-theme="dark"] .note-box,html[data-theme="dark"] .notification-item.unread>button{background:#102c45!important;border-color:#2f5878!important}html[data-theme="dark"] .history-card p{background:#091a2a!important}
html[data-theme="dark"] .application-no,html[data-theme="dark"] .tag-row span{background:#173957!important;border-color:#315d82!important;color:#9dceff!important}html[data-theme="dark"] .status.orange{background:#402b1e!important;color:#ffb16f!important;border-color:#6b4326!important}html[data-theme="dark"] .status.muted{background:#1b2b3b!important;color:#adc0d1!important;border-color:#34495d!important}

@media(max-width:1180px){.submission-kpis{grid-template-columns:repeat(4,1fr)}.submission-filters{grid-template-columns:2fr 1fr 1fr}.submission-filters button,.submission-filters .filter-reset{align-self:end}.workflow-steps{grid-template-columns:repeat(3,1fr)}.workflow-step:after{display:none}}
@media(max-width:900px){.submission-create-layout,.submission-detail-grid{grid-template-columns:1fr!important}.submission-create-layout .span-2,.submission-detail-grid .span-2{grid-column:auto}.submission-side{grid-template-columns:1fr 1fr}.submission-dashboard-grid{grid-template-columns:1fr}.submission-filters{grid-template-columns:1fr 1fr}.submission-filters label:first-child{grid-column:span 2}}
@media(max-width:680px){.submission-kpis{grid-template-columns:repeat(2,1fr)}.submission-card-body{align-items:flex-start;flex-direction:column}.current-stage{border-left:0;border-top:1px solid var(--line);padding:9px 0 0;width:100%}.submission-card-foot{flex-wrap:wrap}.submission-card-head{align-items:flex-start}.submission-card-head time{display:none}.submission-filters{grid-template-columns:1fr}.submission-filters label:first-child{grid-column:auto}.workflow-steps{grid-template-columns:1fr 1fr}.submission-side{grid-template-columns:1fr}.form-actions.split,.decision-actions{grid-template-columns:1fr;display:grid}.form-actions.split button{min-width:0;width:100%}.comment-form{grid-template-columns:1fr}.notification-item>button{grid-template-columns:auto 1fr}.notification-item>button>strong{display:none}.attachment-row{grid-template-columns:1fr}.attachment-row form button{width:100%}.submission-detail-hero .hero-actions{width:100%;align-items:stretch}.submission-detail-hero .hero-actions form,.submission-detail-hero .hero-actions button{width:100%}}
@media(max-width:430px){.submission-kpis{grid-template-columns:1fr 1fr}.workflow-steps{grid-template-columns:1fr}.submission-card{padding:13px}.submission-card-foot span{width:calc(50% - 8px)}.submission-card-foot strong{margin-left:0;width:100%;text-align:right}.submission-dash-stats{grid-template-columns:1fr 1fr}.workflow-person{min-width:118px}}

/* === v2.6 LIVE GROUP STATISTICS === */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.live-overview{position:relative;overflow:hidden;margin:0 0 18px;padding:22px;border:1px solid #c9e3fb;border-radius:22px;background:linear-gradient(135deg,#edf8ff 0%,#fff 58%,#f3faff 100%);box-shadow:0 18px 48px rgba(27,107,175,.12)}.live-overview:after{content:"";position:absolute;z-index:0;width:300px;height:300px;border-radius:50%;right:-120px;top:-170px;background:radial-gradient(circle,#85c9ff55,transparent 68%);pointer-events:none}.live-overview>*{position:relative;z-index:1}.live-overview-head,.group-page-title{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.live-overview-head h1,.group-page-title h1{margin:4px 0 5px;font-size:clamp(24px,2.3vw,35px);line-height:1.08;letter-spacing:-1px}.live-overview-head p,.group-page-title p{margin:0;color:var(--muted);font-size:11px}.live-state{display:inline-flex;align-items:center;gap:7px;flex:0 0 auto;padding:7px 10px;border-radius:999px;border:1px solid #bfe8d9;background:#f1fff9;color:#16805b;font-size:9.5px;font-weight:850}.live-state i{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px #29bd8820;animation:livePulse 1.8s ease infinite}.live-state.is-waiting{border-color:#efdca7;background:#fffaf0;color:#9a6b13}.live-state.is-waiting i{background:var(--yellow);box-shadow:none;animation:none}@keyframes livePulse{50%{box-shadow:0 0 0 7px #29bd8800}}
.headline-kpi-grid{display:grid;grid-template-columns:1.4fr repeat(3,1fr);gap:11px;margin:18px 0}.headline-kpi{min-height:128px;padding:16px;border:1px solid #d7e9f8;border-radius:17px;background:rgba(255,255,255,.9);box-shadow:0 8px 24px rgba(41,107,164,.075);overflow:hidden;position:relative}.headline-kpi:after{content:"";position:absolute;width:95px;height:95px;border-radius:50%;right:-35px;bottom:-50px;background:#e7f4ff}.headline-kpi>span,.headline-kpi>small{display:block;position:relative;z-index:1}.headline-kpi>span{color:#6282a0;font-size:9.5px;font-weight:900;letter-spacing:.8px}.headline-kpi>strong{display:block;position:relative;z-index:1;margin:10px 0 5px;font-size:42px;line-height:1;letter-spacing:-1.8px}.headline-kpi>small{color:var(--muted);font-size:9.5px}.headline-kpi.primary-stat{color:#fff;border-color:#197bea;background:linear-gradient(145deg,#087af0,#45aeff);box-shadow:0 13px 32px rgba(12,125,238,.24)}.headline-kpi.primary-stat:after{background:#ffffff20}.headline-kpi.primary-stat>span,.headline-kpi.primary-stat>small{color:#fff}.headline-kpi.primary-stat>strong{font-size:51px}
.group-overview-head{display:flex;align-items:end;justify-content:space-between;gap:14px;margin:2px 0 10px}.group-overview-head h2{margin:3px 0 0;font-size:15px}.compact-search{width:min(270px,100%)}.compact-search input{height:36px;background:var(--surface);border-radius:10px}.group-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.group-stat-card{display:block;min-width:0;padding:13px;border:1px solid #d9e9f7;border-radius:15px;background:rgba(255,255,255,.85);transition:.18s;box-shadow:0 3px 14px rgba(39,105,160,.055)}.group-stat-card:hover{transform:translateY(-2px);border-color:#8cc5f5;box-shadow:0 10px 24px rgba(39,105,160,.12)}.group-stat-card.has-risk{border-color:#f0d5d8}.group-stat-top{display:flex;align-items:center;justify-content:space-between}.group-icon{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;background:var(--blue-soft);color:var(--blue);font-size:10px;font-weight:900}.group-stat-card h3{margin:9px 0 3px;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.group-stat-card p{margin:0;color:var(--muted);font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.group-readiness{display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px;margin:10px 0 8px}.group-readiness>span{height:6px;border-radius:999px;background:#e5f0fa;overflow:hidden}.group-readiness i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#1991ee,#65c5ef)}.group-readiness b{font-size:9px;color:#357ab5}.group-stat-card>small{color:var(--blue);font-size:9px;font-weight:800}.simple-empty{padding:24px;border:1px dashed var(--line);border-radius:13px;color:var(--muted);text-align:center;font-size:10.5px}
.group-page-hero{margin-bottom:12px;padding:20px 21px;border:1px solid #cae2f8;border-radius:21px;background:linear-gradient(135deg,#eef8ff,#fff);box-shadow:var(--shadow)}.group-page-title{align-items:center}.group-page-title>div:nth-child(2){flex:1}.back-link{align-self:flex-start;color:var(--blue);font-size:10px;font-weight:800;white-space:nowrap}.group-kpis{margin-bottom:0}.group-insight-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:12px}.compact-insight{margin-bottom:12px}.traffic-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.traffic-summary>div{padding:13px;border-radius:12px;text-align:center;background:var(--surface2);border:1px solid var(--line)}.traffic-summary>div.green{background:var(--green-soft);border-color:#c3eadc}.traffic-summary>div.yellow{background:var(--yellow-soft);border-color:#f0dda9}.traffic-summary>div.red{background:var(--red-soft);border-color:#f2d1d5}.traffic-summary b,.traffic-summary span{display:block}.traffic-summary b{font-size:22px}.traffic-summary span{margin-top:2px;color:var(--muted);font-size:9px}.compact-progress-list{display:grid;gap:10px}.compact-progress-list>div{display:grid;grid-template-columns:110px 1fr 40px;gap:9px;align-items:center}.compact-progress-list span{font-size:9.5px;color:var(--muted)}.compact-progress-list i{height:7px;border-radius:99px;background:var(--surface2);overflow:hidden}.compact-progress-list i b{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--blue),var(--cyan))}.compact-progress-list strong{text-align:right;font-size:10px}.group-list-head{align-items:end}.group-student-list{display:grid;gap:7px}.group-student-row{display:grid;grid-template-columns:auto minmax(160px,1.2fr) minmax(135px,1fr) minmax(170px,1.2fr) 64px auto 20px;gap:11px;align-items:center;padding:11px;border:1px solid var(--line);border-radius:13px;background:var(--surface2);transition:.16s}.group-student-row:hover{border-color:#91c5ee;background:var(--surface);transform:translateX(2px)}.student-identity b,.student-identity span,.student-supervisor span,.student-supervisor b,.student-work span,.student-work b,.student-work small,.student-score span,.student-score b{display:block;min-width:0}.student-identity b{font-size:11px}.student-identity span,.student-supervisor span,.student-work span,.student-score span{font-size:8.5px;color:var(--muted)}.student-supervisor b,.student-work b,.student-score b{font-size:9.5px;margin-top:2px}.student-work small{max-width:240px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:8.5px;color:var(--muted)}.student-score{text-align:center}.student-score b{font-size:12px;color:var(--blue)}.row-arrow{color:#85a5c0}.group-students-panel{padding:17px}
html[data-theme="dark"] .live-overview,html[data-theme="dark"] .group-page-hero{background:linear-gradient(135deg,#102b44,#0e2033)!important;border-color:var(--line)!important}.headline-kpi,html[data-theme="dark"] .group-stat-card{background:var(--surface)!important;border-color:var(--line)!important}.headline-kpi.primary-stat{background:linear-gradient(145deg,#116fc8,#208edc)!important;border-color:#368fd6!important}.headline-kpi.primary-stat>span,.headline-kpi.primary-stat>small{color:#fff!important}.headline-kpi:after{background:#173957}.headline-kpi.primary-stat:after{background:#ffffff18}.group-stat-card,.group-student-row{color:var(--text)}html[data-theme="dark"] .group-student-row{background:var(--surface2)}html[data-theme="dark"] .group-student-row:hover{background:#17334d}.live-state.is-online{color:#137451}
@media(max-width:1350px){.group-stat-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.group-student-row{grid-template-columns:auto minmax(160px,1.2fr) minmax(135px,1fr) minmax(150px,1fr) 60px auto}.row-arrow{display:none}}
@media(max-width:1050px){.headline-kpi-grid{grid-template-columns:repeat(2,1fr)}.group-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.group-insight-grid{grid-template-columns:1fr}.group-student-row{grid-template-columns:auto 1fr auto auto}.student-supervisor,.student-work{grid-column:2/5}.student-work{padding-top:6px;border-top:1px solid var(--line2)}.student-work small{max-width:none}.student-score{grid-column:3}.group-student-row>.status{grid-column:4;grid-row:1}}
@media(max-width:680px){.live-overview,.group-page-hero{padding:14px;border-radius:17px}.live-overview-head,.group-page-title{flex-wrap:wrap}.live-overview-head>div:first-child{width:calc(100% - 78px)}.group-page-title>div:nth-child(2){order:3;flex-basis:100%}.headline-kpi-grid{gap:7px;margin:13px 0}.headline-kpi{min-height:104px;padding:12px}.headline-kpi>strong,.headline-kpi.primary-stat>strong{font-size:32px}.group-stat-grid{grid-template-columns:1fr 1fr;gap:7px}.group-stat-card{padding:11px}.group-overview-head,.group-list-head{align-items:stretch;flex-direction:column}.compact-search{width:100%}.compact-progress-list>div{grid-template-columns:92px 1fr 37px}.group-student-row{grid-template-columns:auto 1fr auto;padding:10px}.student-supervisor,.student-work{grid-column:2/4}.student-score{grid-column:3;grid-row:1}.group-student-row>.status{grid-column:2;grid-row:auto;justify-self:start}.traffic-summary>div{padding:10px 6px}.group-students-panel{padding:11px}}
@media(max-width:430px){.live-overview-head>div:first-child{width:100%}.live-overview-head .live-state{order:-1;margin-left:auto}.headline-kpi{min-height:96px}.headline-kpi>strong,.headline-kpi.primary-stat>strong{font-size:28px}.headline-kpi>small{font-size:8.5px}.group-stat-grid{grid-template-columns:1fr}.group-page-title .live-state{margin-left:auto}.student-supervisor{display:none}.student-work{grid-column:1/4;padding-left:43px}.compact-progress-list>div{grid-template-columns:80px 1fr 35px}}
.live-value-change{animation:liveValue .45s ease}@keyframes liveValue{50%{color:var(--blue);transform:translateY(-2px)}}

/* Student profile as a verified, social-style academic portfolio. */
.portfolio-layout{display:grid;grid-template-columns:minmax(230px,.42fr) minmax(0,1.58fr);gap:12px;align-items:start;margin-bottom:12px}.portfolio-summary{position:sticky;top:80px;padding:19px}.portfolio-summary h2{margin:4px 0 6px;font-size:18px}.portfolio-summary>p{margin:0;color:var(--muted);font-size:10.5px;line-height:1.6}.portfolio-count{display:flex;align-items:baseline;gap:7px;margin:18px 0 10px}.portfolio-count strong{font-size:45px;line-height:1;color:var(--blue);letter-spacing:-2px}.portfolio-count span{color:var(--muted);font-size:10px}.portfolio-mini-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.portfolio-mini-grid>div{padding:10px 6px;text-align:center;border:1px solid var(--line);border-radius:11px;background:var(--surface2)}.portfolio-mini-grid b,.portfolio-mini-grid span{display:block}.portfolio-mini-grid b{font-size:16px}.portfolio-mini-grid span{margin-top:2px;color:var(--muted);font-size:8px}.portfolio-link{width:100%;margin-top:13px}.verified-portfolio{padding:5px 8px;border:1px solid #bfe8d7;border-radius:999px;background:var(--green-soft);color:var(--green);font-size:8.5px;font-weight:850;white-space:nowrap}.activity-feed-panel{padding:17px}.activity-feed{display:grid;gap:10px}.activity-post{border:1px solid var(--line);border-radius:15px;background:var(--surface);box-shadow:0 4px 16px rgba(35,100,160,.055);overflow:hidden}.activity-post>header{display:flex;align-items:center;gap:9px;padding:12px 13px;border-bottom:1px solid var(--line2)}.activity-post>header>div:nth-child(2){flex:1;min-width:0}.activity-post>header b,.activity-post>header span{display:block}.activity-post>header b{font-size:10.5px}.activity-post>header>div:nth-child(2)>span{font-size:8.8px;color:var(--muted);margin-top:2px}.activity-post-body{padding:14px 15px}.activity-post-body h3{font-size:14px;line-height:1.35;margin:0 0 7px}.activity-post-body p{margin:0 0 10px;color:var(--muted);font-size:10.5px;line-height:1.65;white-space:pre-wrap}.activity-organization{display:block;color:#557895;font-size:9px}.activity-post>footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 13px;background:var(--surface2);border-top:1px solid var(--line2)}.activity-post>footer>div{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.activity-post>footer a{font-size:9px;color:var(--blue);font-weight:800}.post-chip{display:inline-flex;padding:4px 6px;border-radius:7px;background:var(--surface);border:1px solid var(--line);color:var(--muted);font-size:8px;font-weight:750}.portfolio-empty{padding:35px 15px;text-align:center;border:1px dashed var(--line);border-radius:14px;background:var(--surface2)}.portfolio-empty>span{display:grid;place-items:center;width:44px;height:44px;margin:0 auto 10px;border-radius:50%;background:var(--blue-soft);color:var(--blue);font-size:21px}.portfolio-empty b{display:block}.portfolio-empty p{max-width:470px;margin:5px auto 0;color:var(--muted);font-size:10px;line-height:1.55}html[data-theme="dark"] .activity-post{background:var(--surface)!important;border-color:var(--line)!important}html[data-theme="dark"] .activity-post>footer,html[data-theme="dark"] .portfolio-mini-grid>div,html[data-theme="dark"] .portfolio-empty{background:var(--surface2)!important;border-color:var(--line)!important}
@media(max-width:1000px){.portfolio-layout{grid-template-columns:1fr}.portfolio-summary{position:static}.portfolio-summary{display:grid;grid-template-columns:1.2fr auto;gap:8px 14px;align-items:center}.portfolio-summary>p{grid-column:1}.portfolio-count{grid-column:2;grid-row:1/3;margin:0}.portfolio-mini-grid,.portfolio-link{grid-column:1/-1}}
@media(max-width:600px){.portfolio-summary{display:block}.portfolio-count{margin:15px 0 10px}.portfolio-count strong{font-size:36px}.activity-feed-panel{padding:11px}.activity-post>header{align-items:flex-start;flex-wrap:wrap}.activity-post>header>.status{margin-left:42px}.activity-post-body{padding:12px}.activity-post>footer{align-items:flex-start;flex-direction:column}.verified-portfolio{display:none}}

/* v2.7 Magistracy Intelligence */
.intelligence-hero{padding:18px;border:1px solid #cfe4fa;border-radius:18px;background:linear-gradient(135deg,#fafdff,#edf7ff);box-shadow:var(--shadow2)}
.danger-kpi{border-color:#ffd2d2!important;background:linear-gradient(145deg,#fff,#fff5f5)!important}.risk-card-list{display:grid;gap:8px}.risk-card{display:grid;grid-template-columns:64px minmax(180px,.8fr) minmax(320px,1.7fr) auto;gap:12px;align-items:center;border:1px solid var(--line);border-radius:14px;padding:11px;background:var(--surface2)}.risk-score{width:58px;height:58px;border-radius:14px;display:grid;place-items:center;align-content:center}.risk-score strong{font-size:20px;line-height:1}.risk-score span{font-size:8px}.risk-score.red{background:var(--red-soft);color:var(--red)}.risk-score.yellow{background:var(--yellow-soft);color:var(--yellow)}.risk-score.green{background:var(--green-soft);color:var(--green)}.risk-person b,.risk-person span,.risk-person small{display:block}.risk-person span,.risk-person small{color:var(--muted);font-size:9px;margin-top:2px}.risk-reasons{display:flex;gap:5px;flex-wrap:wrap}.risk-reason{display:grid;grid-template-columns:auto auto;gap:2px 5px;align-items:center;padding:6px 7px;border:1px solid var(--line);border-radius:9px;background:var(--surface);font-size:8.5px}.risk-reason b{color:var(--red)}.risk-reason small{grid-column:1/-1;color:var(--muted)}.risk-reason.good{color:var(--green);border-color:#c7ebdc}.risk-actions{display:flex;align-items:center;gap:8px}.insight-note{display:flex;gap:10px;margin-top:12px;padding:13px 15px;border:1px solid var(--line);border-radius:14px;background:var(--blue-soft);color:#2b638f}.insight-note span{color:#527795}.student-pulse{display:grid;grid-template-columns:1.3fr repeat(3,1fr);gap:8px;margin:0 0 12px}.student-pulse>div{padding:12px 13px;border:1px solid var(--line);border-radius:13px;background:var(--surface)}.student-pulse span,.student-pulse b,.student-pulse small{display:block}.student-pulse span{font-size:8px;color:var(--muted);font-weight:800;letter-spacing:.7px}.student-pulse b{margin-top:3px;font-size:13px}.student-pulse small{margin-top:2px;color:var(--muted);font-size:8.5px}.milestone-selector{margin-bottom:10px}.milestone-selector form{max-width:650px}.milestone-selector label{display:grid;gap:5px}.milestone-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.milestone-card{padding:13px;border:1px solid var(--line);border-radius:15px;background:var(--surface);box-shadow:var(--shadow2)}.milestone-card.approved{border-color:#c5eadb}.milestone-card.delayed{border-color:#ffd1d1}.milestone-card>header{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center}.milestone-no{width:29px;height:29px;border-radius:9px;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center;font-weight:900}.milestone-card header b,.milestone-card header small{display:block}.milestone-card header b{font-size:10.5px}.milestone-card header small{font-size:8px;color:var(--muted);margin-top:2px}.milestone-card header>strong{font-size:14px}.mini-progress{height:5px;background:var(--line2);border-radius:99px;margin:10px 0;overflow:hidden}.mini-progress i{display:block;height:100%;background:linear-gradient(90deg,var(--blue),var(--cyan));border-radius:99px}.milestone-meta{display:flex;justify-content:space-between;gap:8px;font-size:8.5px;color:var(--muted)}.milestone-meta a{color:var(--blue);font-weight:800}.milestone-card>p{font-size:9px;color:var(--muted);line-height:1.55}.milestone-card details{margin-top:9px;border-top:1px solid var(--line2);padding-top:8px}.milestone-card summary{font-size:9px;color:var(--blue);font-weight:800;cursor:pointer}.milestone-form{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:8px}.milestone-form label{display:grid;gap:3px;font-size:8px;color:var(--muted)}.milestone-form .wide{grid-column:1/-1}.hemis-help{display:grid;gap:5px;padding:11px;border:1px dashed var(--line);border-radius:11px;background:var(--surface2)}.hemis-help code{display:block;white-space:normal;color:var(--blue);font-size:9px}.hemis-help small{color:var(--muted)}.feature-checks{display:grid;grid-template-columns:1fr 1fr;gap:8px}.feature-checks span{padding:10px;border:1px solid #cce9dd;border-radius:10px;background:var(--green-soft);color:#277a5f;font-size:9px;font-weight:700}.import-errors{display:grid;gap:4px;margin-top:10px}.import-errors span{padding:6px 8px;border-radius:8px;background:var(--yellow-soft);color:#936614;font-size:9px}
html[data-theme="dark"] .intelligence-hero{background:linear-gradient(135deg,#102a42,#102235);border-color:var(--line)}html[data-theme="dark"] .risk-card,html[data-theme="dark"] .milestone-card,html[data-theme="dark"] .student-pulse>div{background:var(--surface);border-color:var(--line)}html[data-theme="dark"] .risk-reason{background:var(--surface2)}
@media(max-width:1100px){.risk-card{grid-template-columns:60px 1fr auto}.risk-reasons{grid-column:2/4}.milestone-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.student-pulse{grid-template-columns:1fr 1fr}}
@media(max-width:680px){.risk-card{grid-template-columns:52px 1fr}.risk-reasons,.risk-actions{grid-column:1/-1}.risk-actions{justify-content:space-between}.milestone-grid{grid-template-columns:1fr}.student-pulse{grid-template-columns:1fr 1fr}.feature-checks{grid-template-columns:1fr}}

/* =============================================================
   v2.7.1 — Action KPI cards + lightweight live wave animations
   GPU-friendly: transform/opacity only; respects reduced motion.
   ============================================================= */
.is-action-card{cursor:pointer;isolation:isolate;transition:transform .22s ease,border-color .22s ease,box-shadow .22s ease!important;outline:none;will-change:transform}.is-action-card>*{position:relative;z-index:2}.is-action-card::before{content:"";position:absolute;z-index:1;pointer-events:none;width:150px;height:150px;left:-105px;bottom:-110px;border-radius:50%;background:radial-gradient(circle,rgba(55,166,255,.24) 0%,rgba(55,166,255,.10) 38%,rgba(55,166,255,0) 68%);transform:translate3d(0,0,0) scale(.82);opacity:.48;animation:actionCardWave 4.8s ease-in-out infinite}.is-action-card:nth-child(2)::before{animation-delay:-1.1s}.is-action-card:nth-child(3)::before{animation-delay:-2.2s}.is-action-card:nth-child(4)::before{animation-delay:-3.3s}.is-action-card:nth-child(5)::before{animation-delay:-.7s}.is-action-card:nth-child(6)::before{animation-delay:-1.8s}.is-action-card:hover,.is-action-card:focus-visible{transform:translateY(-4px) scale(1.012);border-color:#72bbf5!important;box-shadow:0 16px 36px rgba(21,126,221,.18),0 0 0 1px rgba(69,166,255,.08)!important}.is-action-card:active{transform:translateY(-1px) scale(.99)}.is-action-card:hover::before,.is-action-card:focus-visible::before{opacity:.9;animation-duration:2.4s}.card-open-cue{position:absolute!important;z-index:4!important;right:10px;top:10px;width:26px;height:26px;border-radius:9px;display:grid!important;place-items:center;background:rgba(22,119,255,.085);border:1px solid rgba(60,151,235,.17);color:var(--blue)!important;font-size:13px!important;font-weight:900!important;line-height:1;opacity:.68;transform:translateZ(0);transition:transform .2s ease,opacity .2s ease,background .2s ease!important}.is-action-card:hover .card-open-cue,.is-action-card:focus-visible .card-open-cue{opacity:1;transform:translate3d(2px,-1px,0);background:rgba(22,119,255,.15)}.headline-kpi.primary-stat .card-open-cue{color:#fff!important;background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.20)}
@keyframes actionCardWave{0%,100%{transform:translate3d(-3px,3px,0) scale(.78);opacity:.38}50%{transform:translate3d(38px,-30px,0) scale(1.38);opacity:.78}}

/* Live overview receives a quiet moving light layer. */
.live-overview::before{content:"";position:absolute;z-index:0;pointer-events:none;inset:-60% -20%;background:linear-gradient(110deg,transparent 39%,rgba(73,174,255,.07) 48%,rgba(73,174,255,.13) 50%,rgba(73,174,255,.07) 52%,transparent 61%);transform:translate3d(-42%,0,0);animation:liveOverviewSweep 8s ease-in-out infinite}.live-overview.live-sync-pulse{box-shadow:0 18px 48px rgba(27,107,175,.15),0 0 0 2px rgba(44,166,255,.08)}@keyframes liveOverviewSweep{0%,18%{transform:translate3d(-42%,0,0)}68%,100%{transform:translate3d(42%,0,0)}}

/* Top live cards: preserve their native decorative circle while adding the wave. */
.headline-kpi.is-action-card{padding-right:48px}.headline-kpi.is-action-card::before{width:190px;height:190px;left:-135px;bottom:-142px;background:radial-gradient(circle,rgba(55,166,255,.26),rgba(55,166,255,.08) 43%,transparent 69%)}.headline-kpi.primary-stat.is-action-card::before{background:radial-gradient(circle,rgba(255,255,255,.25),rgba(255,255,255,.08) 43%,transparent 69%)}

/* Standard role KPI cards. */
.kpi.is-action-card{padding-right:45px}.kpi.is-action-card strong{transition:transform .2s ease,color .2s ease}.kpi.is-action-card:hover strong{transform:translate3d(0,-1px,0)}

/* Small overview statistics can also act as compact navigation tiles. */
.overview-grid>div.mini-action-card{position:relative;overflow:hidden;cursor:pointer;outline:none;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease;padding-right:35px}.overview-grid>div.mini-action-card:hover,.overview-grid>div.mini-action-card:focus-visible{transform:translateY(-2px);border-color:#83c4f5;box-shadow:0 9px 22px rgba(34,124,201,.11)}.overview-grid>div.mini-action-card .card-open-cue{width:22px;height:22px;right:7px;top:7px;border-radius:7px;font-size:11px}

/* Group cards already had links; give them the same live personality. */
.group-stat-card{position:relative;overflow:hidden;isolation:isolate}.group-stat-card>*{position:relative;z-index:2}.group-stat-card::before{content:"";position:absolute;z-index:1;pointer-events:none;width:150px;height:150px;left:-115px;bottom:-115px;border-radius:50%;background:radial-gradient(circle,rgba(41,158,245,.23),rgba(41,158,245,.07) 43%,transparent 68%);animation:groupCardWave 5.6s ease-in-out infinite}.group-stat-card:nth-child(2)::before{animation-delay:-1.3s}.group-stat-card:nth-child(3)::before{animation-delay:-2.6s}.group-stat-card:nth-child(4)::before{animation-delay:-3.9s}.group-stat-card:hover::before{animation-duration:2.7s}.group-stat-card:hover{transform:translateY(-4px) scale(1.008);border-color:#72bbf5;box-shadow:0 15px 30px rgba(39,105,160,.15)}@keyframes groupCardWave{0%,100%{transform:translate3d(-4px,5px,0) scale(.75);opacity:.35}50%{transform:translate3d(42px,-28px,0) scale(1.38);opacity:.8}}.group-readiness i{background-size:200% 100%;animation:progressFlow 2.8s linear infinite;transition:width .55s cubic-bezier(.2,.8,.2,1)}@keyframes progressFlow{0%{background-position:0 0}100%{background-position:200% 0}}

/* Every live value update gets a short, visible confirmation without layout shift. */
.card-value-updated{animation:cardSyncHit .58s ease}.card-value-updated .card-open-cue{opacity:1;background:rgba(35,174,121,.14);color:var(--green)!important}@keyframes cardSyncHit{0%{box-shadow:inherit}45%{box-shadow:0 0 0 3px rgba(39,180,126,.13),0 15px 32px rgba(22,119,255,.16)}100%{box-shadow:inherit}}

/* Dark theme keeps animation subtle and readable. */
html[data-theme="dark"] .is-action-card::before,html[data-theme="dark"] .group-stat-card::before{opacity:.34}html[data-theme="dark"] .card-open-cue{background:rgba(77,163,255,.12);border-color:rgba(101,184,255,.17)}html[data-theme="dark"] .is-action-card:hover,html[data-theme="dark"] .is-action-card:focus-visible,html[data-theme="dark"] .group-stat-card:hover{border-color:#347fb9!important;box-shadow:0 16px 35px rgba(0,0,0,.24),0 0 0 1px rgba(63,158,232,.10)!important}

@media(max-width:680px){.is-action-card:hover,.is-action-card:focus-visible,.group-stat-card:hover{transform:translateY(-2px)}.card-open-cue{right:8px;top:8px}.headline-kpi.is-action-card{padding-right:40px}.kpi.is-action-card{padding-right:38px}}
@media(prefers-reduced-motion:reduce){.is-action-card::before,.group-stat-card::before,.live-overview::before,.group-readiness i,.live-state i{animation:none!important}.is-action-card,.group-stat-card,.overview-grid>div.mini-action-card{transition:none!important}}

/* =========================================================
   v2.8 — SOCIAL MOTION / ROLE AVATARS / LIGHTWEIGHT AURORA UI
   Stronger visual motion, but transform/opacity-first for low-end devices.
   ========================================================= */
.role-avatar{--av1:#1d8dff;--av2:#61c5ff;position:relative;display:inline-grid;place-items:center;flex:0 0 auto;border-radius:32%;overflow:hidden;background:linear-gradient(145deg,var(--av1),var(--av2));color:#fff;font-weight:900;box-shadow:0 6px 18px rgba(24,122,218,.18);isolation:isolate}.role-avatar::before{content:"";position:absolute;inset:-30%;background:conic-gradient(from 0deg,transparent 0 35%,rgba(255,255,255,.32) 42%,transparent 50% 100%);animation:avatarOrbit 7s linear infinite;z-index:0}.role-avatar::after{content:"";position:absolute;inset:2px;border:1px solid rgba(255,255,255,.30);border-radius:inherit;z-index:1;pointer-events:none}.role-avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:2}.role-avatar-glyph{position:relative;z-index:2;text-shadow:0 2px 8px rgba(0,0,0,.15)}.role-avatar-xs{width:30px;height:30px;font-size:11px;border-radius:9px}.role-avatar-sm{width:38px;height:38px;font-size:13px;border-radius:11px}.role-avatar-md{width:48px;height:48px;font-size:16px;border-radius:14px}.role-avatar-lg{width:60px;height:60px;font-size:20px;border-radius:17px}.role-avatar-xl{width:96px;height:96px;font-size:31px;border-radius:26px;box-shadow:0 14px 34px rgba(24,122,218,.24)}.role-avatar-superadmin{--av1:#087af0;--av2:#4bbdff}.role-avatar-tech{--av1:#5865f2;--av2:#42a5f5}.role-avatar-management{--av1:#6f54d9;--av2:#9e74ff}.role-avatar-magistracy{--av1:#0d91a8;--av2:#38c4c9}.role-avatar-dean{--av1:#3677d4;--av2:#55b8ff}.role-avatar-department{--av1:#2b78a8;--av2:#62c6dd}.role-avatar-supervisor{--av1:#208a72;--av2:#54c9a9}.role-avatar-teacher{--av1:#b46b13;--av2:#f0a942}.role-avatar-student{--av1:#1786df;--av2:#45b4ff}@keyframes avatarOrbit{to{transform:rotate(360deg)}}
.top-profile-link{display:grid;place-items:center;border-radius:10px;transition:transform .2s ease,box-shadow .2s ease}.top-profile-link:hover{transform:translateY(-2px) scale(1.05);box-shadow:0 8px 18px rgba(30,130,225,.18)}.user-mini-link{border-radius:12px;transition:background .2s ease,transform .2s ease}.user-mini-link:hover{background:var(--surface2);transform:translateY(-1px)}
.table-person{display:flex;align-items:center;gap:9px;min-width:190px}.table-person>div:last-child{min-width:0}.person-name:hover{color:var(--blue)}.profile-avatar-link{display:inline-flex;border-radius:18px;transition:transform .2s ease}.profile-avatar-link:hover{transform:translateY(-3px) scale(1.035)}

/* Percent becomes a tiny live indicator instead of plain text punctuation. */
.percent-token{position:relative;display:inline-grid;place-items:center;width:.88em;height:.88em;margin-left:.08em;vertical-align:.08em;border-radius:50%;font-size:.54em;font-weight:900;line-height:1;color:currentColor;isolation:isolate}.percent-token::before{content:"";position:absolute;inset:-18%;border-radius:50%;background:conic-gradient(from 0deg,currentColor 0 14%,transparent 14% 34%,currentColor 34% 46%,transparent 46% 68%,currentColor 68% 82%,transparent 82%);opacity:.45;animation:percentOrbit 2.9s linear infinite}.percent-token::after{content:"";position:absolute;inset:3%;border-radius:50%;background:currentColor;opacity:.08}.percent-token>span{position:relative;z-index:2;animation:percentTilt 1.9s ease-in-out infinite alternate}@keyframes percentOrbit{to{transform:rotate(360deg)}}@keyframes percentTilt{from{transform:rotate(-10deg) scale(.94)}to{transform:rotate(10deg) scale(1.06)}}

/* Strong but cheap constant motion layer. */
.kpi,.headline-kpi,.panel,.group-stat-card,.network-stat,.people-chip,.student-progress-card{isolation:isolate}.motion-panel,.kpi,.headline-kpi,.network-stat{position:relative;overflow:hidden}.motion-panel::before,.kpi::before,.headline-kpi::before,.network-stat::before{content:"";position:absolute;z-index:0;pointer-events:none;width:190px;height:190px;border-radius:50%;left:-135px;bottom:-145px;background:radial-gradient(circle,rgba(52,170,255,.18) 0%,rgba(52,170,255,.07) 43%,transparent 70%);animation:panelWave 5.4s ease-in-out infinite}.motion-panel::after,.kpi::after,.headline-kpi::after,.network-stat::after{content:"";position:absolute;z-index:0;pointer-events:none;inset:-60% -45%;background:linear-gradient(112deg,transparent 42%,rgba(255,255,255,.00) 46%,rgba(83,183,255,.10) 50%,rgba(255,255,255,.00) 54%,transparent 58%);transform:translate3d(-42%,0,0);animation:panelSweep 7.5s ease-in-out infinite}.motion-panel>* ,.kpi>* ,.headline-kpi>* ,.network-stat>*{position:relative;z-index:2}@keyframes panelWave{0%,100%{transform:translate3d(-7px,7px,0) scale(.74);opacity:.28}50%{transform:translate3d(80px,-46px,0) scale(1.55);opacity:.72}}@keyframes panelSweep{0%,22%{transform:translate3d(-45%,0,0)}68%,100%{transform:translate3d(45%,0,0)}}
.kpi:nth-child(2n)::before,.headline-kpi:nth-child(2n)::before,.network-stat:nth-child(2n)::before{animation-delay:-1.7s}.kpi:nth-child(3n)::before,.headline-kpi:nth-child(3n)::before,.network-stat:nth-child(3n)::before{animation-delay:-3.1s}.kpi:hover,.headline-kpi:hover,.network-stat:hover{transform:translateY(-5px) scale(1.012);box-shadow:0 18px 38px rgba(19,119,211,.17)!important;border-color:#73bdf7!important}.kpi,.headline-kpi,.network-stat{transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}
.mini-progress i,.big-progress i,.metric-bars i,.compare-list i,.triple-progress i{position:relative;overflow:hidden;background-size:220% 100%;animation:flowBar 2.2s linear infinite}.mini-progress i::after,.big-progress i::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0,rgba(255,255,255,.55) 48%,transparent 100%);transform:translateX(-120%);animation:barShine 2.1s ease-in-out infinite}@keyframes flowBar{to{background-position:220% 0}}@keyframes barShine{60%,100%{transform:translateX(140%)}}
.live-dot i,.live-state i{animation:liveDotPulse 1.6s ease-in-out infinite}@keyframes liveDotPulse{0%,100%{transform:scale(.78);opacity:.55;box-shadow:0 0 0 0 rgba(37,184,127,.3)}50%{transform:scale(1.25);opacity:1;box-shadow:0 0 0 5px rgba(37,184,127,0)}}

/* Network pulse — cross-role live community stats. */
.network-pulse{margin:0 0 14px;padding:15px}.network-pulse-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:11px}.network-pulse-head h2{margin:3px 0 2px;font-size:16px}.network-pulse-head p{margin:0;color:var(--muted);font-size:10px}.network-stat-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.network-stat{min-height:76px;padding:11px;border:1px solid var(--line);border-radius:13px;background:var(--surface2);display:grid;grid-template-columns:1fr auto;grid-template-rows:auto 1fr;align-items:center;gap:1px 8px}.network-stat span{font-size:8.5px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--muted)}.network-stat strong{font-size:23px;line-height:1.1}.network-stat small{font-size:9px;color:var(--muted);margin-left:-6px}.network-stat i{grid-column:2;grid-row:1/3;width:30px;height:30px;border-radius:10px;background:rgba(22,119,255,.10);color:var(--blue);display:grid;place-items:center;font-style:normal;font-weight:900;animation:networkIconFloat 2.7s ease-in-out infinite}.network-stat:nth-child(2) i{animation-delay:-.5s}.network-stat:nth-child(3) i{animation-delay:-1s}.network-stat:nth-child(4) i{animation-delay:-1.5s}.network-stat:nth-child(5) i{animation-delay:-2s}@keyframes networkIconFloat{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-5px) rotate(4deg)}}
.people-ribbon{display:flex;gap:7px;margin-top:10px;overflow:auto;padding:2px 1px 4px;scrollbar-width:thin}.people-chip{min-width:190px;max-width:220px;display:flex;align-items:center;gap:8px;padding:8px 9px;border:1px solid var(--line);border-radius:13px;background:var(--surface);transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.people-chip:hover{transform:translateY(-3px);border-color:#83c1f1;box-shadow:0 10px 24px rgba(32,115,190,.12)}.people-chip>span{min-width:0;flex:1}.people-chip b,.people-chip small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.people-chip b{font-size:10px}.people-chip small{font-size:8.5px;color:var(--muted)}.people-chip em{font-style:normal;color:var(--blue);font-weight:900;animation:arrowBreath 1.8s ease-in-out infinite}@keyframes arrowBreath{50%{transform:translateX(4px)}}

/* Public/internal profile. */
.public-profile-hero,.profile-editor-hero,.self-avatar-strip{display:flex;align-items:center;gap:16px;padding:18px;margin-bottom:12px}.public-profile-hero h1,.profile-editor-hero h1{margin:3px 0 5px;font-size:28px;line-height:1.08}.public-profile-hero p,.profile-editor-hero p,.self-avatar-strip p{margin:0;color:var(--muted)}.profile-aura-avatar,.profile-editor-avatar{position:relative}.profile-aura-avatar::before,.profile-editor-avatar::before{content:"";position:absolute;inset:-10px;border-radius:30px;border:1px dashed rgba(51,167,247,.35);animation:auraSpin 8s linear infinite}.profile-aura-avatar::after,.profile-editor-avatar::after{content:"";position:absolute;inset:-17px;border-radius:36px;border:1px solid rgba(51,167,247,.12);animation:auraSpin 12s linear infinite reverse}@keyframes auraSpin{to{transform:rotate(360deg)}}.profile-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}.profile-tags span{padding:5px 8px;border-radius:999px;background:var(--surface2);border:1px solid var(--line);font-size:9px;color:var(--muted)}.profile-visibility-note{display:flex;align-items:center;gap:10px;padding:10px 13px;margin-bottom:12px;border:1px solid var(--line);border-radius:13px;background:linear-gradient(90deg,var(--surface2),var(--surface))}.profile-visibility-note>span{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:var(--blue-soft);color:var(--blue);animation:networkIconFloat 2.8s ease-in-out infinite}.profile-visibility-note b,.profile-visibility-note p{display:block}.profile-visibility-note p{margin:1px 0 0;color:var(--muted);font-size:9.5px}.profile-kpis .textual-stat{font-size:15px;line-height:1.2;word-break:break-word}.profile-activity-feed{display:grid;gap:7px}.profile-activity-feed article{display:flex;align-items:center;gap:9px;padding:9px;border:1px solid var(--line2);border-radius:12px;background:var(--surface2);transition:transform .2s ease}.profile-activity-feed article:hover{transform:translateX(3px)}.profile-activity-feed article>i{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px rgba(28,169,120,.10);animation:liveDotPulse 1.8s ease-in-out infinite}.profile-activity-feed article>div{min-width:0;flex:1}.profile-activity-feed span,.profile-activity-feed b,.profile-activity-feed small{display:block}.profile-activity-feed span{font-size:8px;color:var(--blue);font-weight:800;text-transform:uppercase}.profile-activity-feed b{font-size:10.5px}.profile-activity-feed small{font-size:8.5px;color:var(--muted)}.compact-details{grid-template-columns:150px 1fr}.avatar-upload-form{display:grid;gap:10px}.avatar-dropzone{min-height:210px;border:1px dashed #8bc6f5;border-radius:16px;background:linear-gradient(145deg,var(--surface2),var(--surface));display:grid;place-items:center;text-align:center;padding:18px;cursor:pointer;position:relative;overflow:hidden}.avatar-dropzone input{position:absolute;inset:0;opacity:0;cursor:pointer}.avatar-dropzone span{font-size:13px;font-weight:800;color:var(--blue)}.avatar-dropzone small{display:block;color:var(--muted);font-size:9px;margin-top:4px}.avatar-dropzone img{position:absolute;inset:8px;width:calc(100% - 16px);height:calc(100% - 16px);object-fit:cover;border-radius:12px;z-index:2}.profile-settings-grid{align-items:start}.privacy-note.compact{margin:10px 0 0}.self-avatar-strip{margin-bottom:12px}

/* Low-end adaptive motion: keep visual life, reduce concurrent effects. */
html.lite-motion .motion-panel::after,html.lite-motion .kpi::after,html.lite-motion .headline-kpi::after,html.lite-motion .network-stat::after{display:none}html.lite-motion .motion-panel::before,html.lite-motion .kpi::before,html.lite-motion .headline-kpi::before,html.lite-motion .network-stat::before{animation-duration:8.5s;opacity:.45}html.lite-motion .percent-token::before{animation-duration:5s}html.lite-motion .role-avatar::before{animation-duration:12s}html.lite-motion .people-chip em,html.lite-motion .network-stat i{animation-duration:4.5s}
html.motion-paused *{animation-play-state:paused!important}

html[data-theme="dark"] .network-stat,html[data-theme="dark"] .people-chip,html[data-theme="dark"] .avatar-dropzone{background:var(--surface2)}html[data-theme="dark"] .motion-panel::after,html[data-theme="dark"] .kpi::after,html[data-theme="dark"] .headline-kpi::after{opacity:.5}

@media(max-width:1000px){.network-stat-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.people-chip{min-width:170px}.profile-settings-grid{grid-template-columns:1fr}.public-profile-hero,.profile-editor-hero{align-items:flex-start;flex-wrap:wrap}.public-profile-hero .hero-actions{width:100%;justify-content:flex-end}}
@media(max-width:680px){.network-pulse{padding:12px}.network-pulse-head{align-items:flex-start;flex-direction:column}.network-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.network-stat{min-height:67px;padding:9px}.network-stat:last-child{grid-column:span 2}.public-profile-hero,.profile-editor-hero,.self-avatar-strip{padding:13px;gap:12px}.role-avatar-xl{width:78px;height:78px}.public-profile-hero h1,.profile-editor-hero h1{font-size:22px}.public-profile-hero .hero-actions,.profile-editor-hero .secondary{width:100%}.profile-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.avatar-dropzone{min-height:180px}}
@media(prefers-reduced-motion:reduce){.role-avatar::before,.percent-token::before,.percent-token>span,.motion-panel::before,.motion-panel::after,.kpi::before,.kpi::after,.headline-kpi::before,.headline-kpi::after,.network-stat::before,.network-stat::after,.network-stat i,.people-chip em,.profile-aura-avatar::before,.profile-aura-avatar::after,.profile-editor-avatar::before,.profile-editor-avatar::after,.profile-activity-feed article>i{animation:none!important}}
.motion-offscreen::before,.motion-offscreen::after{animation-play-state:paused!important}.tap-pulse{animation:tapPulse .52s ease!important}@keyframes tapPulse{0%{box-shadow:0 0 0 0 rgba(44,166,255,.28)}55%{box-shadow:0 0 0 9px rgba(44,166,255,0)}100%{box-shadow:inherit}}
.bucket-grid>div,.overview-grid>div{position:relative;overflow:hidden;transition:transform .2s ease,border-color .2s ease}.bucket-grid>div::after,.overview-grid>div::after{content:"";position:absolute;width:55px;height:55px;border-radius:50%;right:-35px;bottom:-38px;background:rgba(50,164,245,.09);animation:microBubble 3.8s ease-in-out infinite}.bucket-grid>div:nth-child(2)::after,.overview-grid>div:nth-child(2)::after{animation-delay:-1.2s}.bucket-grid>div:nth-child(3)::after,.overview-grid>div:nth-child(3)::after{animation-delay:-2.4s}.bucket-grid>div:hover,.overview-grid>div:hover{transform:translateY(-3px)}@keyframes microBubble{50%{transform:translate(-12px,-10px) scale(1.55);opacity:.7}}
html.lite-motion .bucket-grid>div::after,html.lite-motion .overview-grid>div::after{animation-duration:6s;opacity:.55}@media(prefers-reduced-motion:reduce){.bucket-grid>div::after,.overview-grid>div::after{animation:none!important}}
.student-live-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}.student-live-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:2px;padding:8px 10px;border-radius:10px;background:rgba(42,151,237,.06);color:var(--muted);font-size:9.5px}.student-live-foot span{display:flex;align-items:center;gap:6px}.student-live-foot i{width:6px;height:6px;border-radius:50%;background:var(--green);animation:liveDotPulse 1.6s ease-in-out infinite}.student-live-foot a{color:var(--blue);font-weight:800}@media(max-width:680px){.student-live-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.student-live-foot{align-items:flex-start;flex-direction:column}}


/* =========================================================
   v2.8.1 — SVG PROGRESS RINGS / NO CARD-BACKGROUND MOTION
   User-requested correction: animate the percentage graphic itself,
   not the card background. Lightweight SVG + CSS only.
   ========================================================= */

/* Disable continuous decorative motion behind cards/panels. Static design remains. */
.is-action-card::before,.group-stat-card::before,.live-overview::before,
.motion-panel::before,.motion-panel::after,.kpi::before,.kpi::after,
.network-stat::before,.network-stat::after,.bucket-grid>div::after,.overview-grid>div::after{content:none!important;animation:none!important}

/* Restore the original static decorative corner circle on headline KPI cards. */
.headline-kpi::before{content:none!important}
.headline-kpi::after{content:""!important;position:absolute!important;inset:auto!important;width:95px!important;height:95px!important;border-radius:50%!important;right:-35px!important;bottom:-50px!important;background:#e7f4ff!important;transform:none!important;opacity:1!important;animation:none!important;pointer-events:none!important}
.headline-kpi.primary-stat::after{background:#ffffff20!important}
html[data-theme="dark"] .headline-kpi::after{background:#173957!important}
html[data-theme="dark"] .headline-kpi.primary-stat::after{background:#ffffff18!important}

/* No rotating percent punctuation anymore. */
.percent-token{display:none!important}

.svg-progress-ring{--ring-color:#1787eb;--ring-track:rgba(28,117,194,.13);position:relative;display:grid;place-items:center;flex:0 0 auto;aspect-ratio:1;color:var(--text);isolation:isolate;transform:translateZ(0)}
.svg-progress-ring.ring-xs{width:38px}.svg-progress-ring.ring-sm{width:48px}.svg-progress-ring.ring-md{width:64px}.svg-progress-ring.ring-lg{width:88px}.svg-progress-ring.ring-xl{width:108px}
.svg-progress-ring.ring-good{--ring-color:#22a879;--ring-track:rgba(34,168,121,.13)}
.svg-progress-ring.ring-blue{--ring-color:#1787eb;--ring-track:rgba(23,135,235,.13)}
.svg-progress-ring.ring-watch{--ring-color:#e3a429;--ring-track:rgba(227,164,41,.14)}
.svg-progress-ring.ring-risk{--ring-color:#e15762;--ring-track:rgba(225,87,98,.13)}
.svg-ring{width:100%;height:100%;overflow:visible;filter:drop-shadow(0 5px 10px rgba(25,119,204,.08))}
.svg-ring-track,.svg-ring-progress,.svg-ring-orbit{fill:none;transform-origin:22px 22px}
.svg-ring-track{stroke:var(--ring-track);stroke-width:4.6}
.svg-ring-progress{stroke:var(--ring-color);stroke-width:4.8;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100;transform:rotate(-90deg);transition:stroke-dashoffset .72s cubic-bezier(.2,.82,.2,1),stroke .25s ease}
.svg-ring-orbit{stroke:var(--ring-color);stroke-width:1.05;stroke-linecap:round;stroke-dasharray:2 12;opacity:.48;animation:svgRingOrbit 4.8s linear infinite}
.svg-ring-center{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:1px;line-height:1;pointer-events:none}
.svg-ring-number{font-size:clamp(13px,1.25em,27px);font-weight:950;letter-spacing:-.8px;color:var(--text)}
.svg-ring-center small{font-size:.43em;font-weight:900;color:var(--ring-color);transform:translateY(-.2em)}
.ring-lg .svg-ring-number{font-size:26px}.ring-xl .svg-ring-number{font-size:31px}.ring-md .svg-ring-number{font-size:20px}.ring-sm .svg-ring-number{font-size:15px}.ring-xs .svg-ring-number{font-size:11px}.ring-xs .svg-ring-center small{font-size:7px}
@keyframes svgRingOrbit{to{transform:rotate(360deg)}}
.ring-value-hit .svg-ring-center{animation:ringValueHit .48s ease}@keyframes ringValueHit{50%{transform:scale(1.09)}}
.ring-offscreen .svg-ring-orbit{animation-play-state:paused!important}

/* KPI cards use the SVG as the visual focal point. */
.headline-kpi.has-svg-ring{display:grid;grid-template-columns:minmax(0,1fr) 90px;grid-template-rows:auto 1fr auto;align-items:center;column-gap:10px;min-height:142px;padding-right:14px!important}
.headline-kpi.has-svg-ring>span{grid-column:1;grid-row:1}.headline-kpi.has-svg-ring>.svg-progress-ring{grid-column:2;grid-row:1/4;justify-self:end}.headline-kpi.has-svg-ring>small{grid-column:1;grid-row:3;align-self:end}.headline-kpi.has-svg-ring>.card-open-cue{display:none!important}
.headline-kpi.primary-stat.has-svg-ring{--ring-card-text:#fff}.headline-kpi.primary-stat.has-svg-ring .svg-progress-ring{--ring-color:#fff;--ring-track:rgba(255,255,255,.25)}.headline-kpi.primary-stat.has-svg-ring .svg-ring-number,.headline-kpi.primary-stat.has-svg-ring .svg-ring-center small{color:#fff}

.kpi.has-svg-ring{display:grid;grid-template-columns:minmax(0,1fr) 66px;grid-template-rows:auto 1fr auto;align-items:center;column-gap:8px;min-height:112px;padding-right:11px!important}.kpi.has-svg-ring>span{grid-column:1;grid-row:1}.kpi.has-svg-ring>.svg-progress-ring{grid-column:2;grid-row:1/4;justify-self:end}.kpi.has-svg-ring>small,.kpi.has-svg-ring>.mini-progress{grid-column:1;align-self:end}.kpi.has-svg-ring>.card-open-cue{display:none!important}

/* Compact visual locations get smaller SVG rings without changing table density. */
.student-pulse>div.has-svg-ring{display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px}.student-pulse>div.has-svg-ring>span,.student-pulse>div.has-svg-ring>small{grid-column:1}.student-pulse>div.has-svg-ring>.svg-progress-ring{grid-column:2;grid-row:1/3}
.milestone-card header.has-svg-ring{grid-template-columns:auto 1fr auto;align-items:center}.milestone-card header>.svg-progress-ring{margin-left:auto}
.overview-grid>div.has-svg-ring{display:grid;grid-template-columns:1fr auto;align-items:center;gap:6px}.overview-grid>div.has-svg-ring>span{grid-column:1}.overview-grid>div.has-svg-ring>.svg-progress-ring{grid-column:2;grid-row:1/3}
.metric-bars.has-svg-ring{grid-template-columns:1fr auto}.metric-bars>.svg-progress-ring{margin-left:5px}


/* Upgrade the older conic student readiness ring to the same SVG component. */
.progress-ring.svg-ring-host{width:150px!important;aspect-ratio:auto!important;border-radius:0!important;background:none!important;display:grid!important;place-items:center!important;overflow:visible!important}
.progress-ring.svg-ring-host::after{content:none!important}
.progress-ring.svg-ring-host>div{display:grid!important;place-items:center!important;gap:5px!important;text-align:center!important}
.progress-ring.svg-ring-host .svg-progress-ring{width:118px!important}
.progress-ring.svg-ring-host>div>span{font-size:9px;color:var(--muted);white-space:nowrap}
@media(max-width:820px){.progress-ring.svg-ring-host{width:118px!important}.progress-ring.svg-ring-host .svg-progress-ring{width:94px!important}}
@media(max-width:480px){.progress-ring.svg-ring-host{width:105px!important}.progress-ring.svg-ring-host .svg-progress-ring{width:84px!important}}

/* Keep hover interaction, but no constant background animation. */
.is-action-card:hover,.is-action-card:focus-visible,.headline-kpi:hover,.kpi:hover,.network-stat:hover,.group-stat-card:hover{transform:translateY(-3px) scale(1.006)}

/* Low-end mode: no continuous SVG orbit, progress arc still animates on data change. */
html.lite-rings .svg-ring-orbit,html.lite-motion .svg-ring-orbit{animation:none!important;opacity:.26}
html.motion-paused .svg-ring-orbit{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){.svg-ring-orbit{animation:none!important}.svg-ring-progress{transition:none!important}.ring-value-hit .svg-ring-center{animation:none!important}}
@media(max-width:680px){.headline-kpi.has-svg-ring{grid-template-columns:minmax(0,1fr) 66px;min-height:112px;padding:11px!important}.headline-kpi.has-svg-ring>.svg-progress-ring{width:64px}.kpi.has-svg-ring{grid-template-columns:minmax(0,1fr) 54px;min-height:92px}.kpi.has-svg-ring>.svg-progress-ring{width:52px}.ring-xl{width:86px!important}.ring-lg .svg-ring-number{font-size:20px}}

/* v2.8.2 SVG MOTION FIX ----------------------------------------------------
   Keep animation inside the SVG itself. No heavy card background loops.
   transform-box + center origin fixes Chromium/Edge SVG rotation reliability. */
.svg-ring-orbit-group{
  transform-origin:center;
  transform-box:view-box;
  animation:svgRingOrbitStrong 3.2s linear infinite;
  will-change:transform;
}
.svg-ring-orbit{
  animation:none!important;
  stroke-dasharray:2.2 8.5;
  stroke-width:1.2;
  opacity:.68;
}
.svg-ring-orbit-dot{
  fill:var(--ring-color);
  opacity:.92;
  filter:drop-shadow(0 0 2px var(--ring-color));
}
.svg-ring-progress{
  transform-origin:center;
  transform-box:view-box;
}
@keyframes svgRingOrbitStrong{to{transform:rotate(360deg)}}
/* Lite mode now slows SVG motion instead of disabling it. */
html.lite-rings .svg-ring-orbit-group,
html.lite-motion .svg-ring-orbit-group{animation-duration:7.5s!important}
html.lite-rings .svg-ring-orbit,
html.lite-motion .svg-ring-orbit{opacity:.38!important}
html.motion-paused .svg-ring-orbit-group,
.ring-offscreen .svg-ring-orbit-group{animation-play-state:paused!important}
/* Cancel the older rule that disabled the orbit in lite mode. */
html.lite-rings .svg-ring-orbit,html.lite-motion .svg-ring-orbit{animation:none!important}
@media(prefers-reduced-motion:reduce){
  .svg-ring-orbit-group{animation:none!important}
  .svg-ring-progress{transition:none!important}
}

/* v2.8.2 role-aware profile additions */
.profile-role-warning{display:flex;align-items:center;justify-content:space-between;gap:18px;border-color:#f0c86b;background:linear-gradient(120deg,#fffaf0,#fff)}
.profile-role-warning h2{margin:4px 0 5px;font-size:17px}.profile-role-warning p{color:var(--muted);max-width:860px}
.role-profile-heading{display:flex;align-items:end;justify-content:space-between;margin:2px 0 8px}.role-profile-heading h2{font-size:18px;margin-top:4px}
.role-aware-kpis .kpi{min-height:104px}.people-profile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.people-profile-grid .people-chip{min-width:0}
@media(max-width:720px){.profile-role-warning{align-items:flex-start;flex-direction:column}.people-profile-grid{grid-template-columns:1fr}.role-profile-grid{grid-template-columns:1fr}}


/* v2.9.1 PRESENTATION READY — premium green skin, layout-safe */
.brand-mark,.login-logo{background:linear-gradient(135deg,#118457,#58cf94)!important;box-shadow:0 8px 22px rgba(17,132,87,.22)!important}
.sidebar{background:rgba(255,255,255,.985);border-right-color:#d8ebe0;box-shadow:6px 0 26px rgba(32,105,74,.045)}
.topbar{background:rgba(250,254,251,.94);border-bottom-color:#dceee4}
.nav a:hover{background:#f0f9f4;color:#127b52}
.nav a.active{background:linear-gradient(90deg,#e9f7ef,#f8fcf9)!important;color:#11784f!important;box-shadow:inset 3px 0 0 #159461!important}
.nav a.active i{background:#dff3e7!important;color:#148c5d!important}
.primary{background:linear-gradient(135deg,#118457,#55c98f)!important;box-shadow:0 6px 18px rgba(17,132,87,.18)!important}
.primary:hover{box-shadow:0 9px 24px rgba(17,132,87,.23)!important}
.secondary{color:#176f4f;border-color:#cce6d7}.secondary:hover,.ghost:hover{background:#eff8f3}
.ghost{background:#f8fcf9;color:#59786a}
.icon-btn{color:#53796a}
.eyebrow,.panel-head>a{color:#19865d}
.kpi,.panel,.headline-kpi,.group-stat-card,.network-stat{border-color:#d9ece1}
.kpi:after,.headline-kpi:after{background:#e7f6ed!important}
.mini-progress i,.big-progress i,.metric-bars em i,.triple-progress i{background:linear-gradient(90deg,#14915f,#61d5a0)!important}
.live-dot{border-color:#c9e8d6;background:#f3fff7;color:#227d55}.live-dot i{background:#22a56f}
.status-bars em i{background:#47c68f}
.profile-mini,.access-tag,.badge{border-color:#d9ebe1}

/* Decorative grid lives behind content only: it never changes layout/positioning. */
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.36;background-image:linear-gradient(rgba(20,140,93,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(20,140,93,.045) 1px,transparent 1px);background-size:96px 96px;animation:mdGridDrift 13s ease-in-out infinite alternate}
@keyframes mdGridDrift{from{background-position:0 0,0 0}to{background-position:0 14px,14px 0}}

/* Explicit structural invariants to prevent presentation layout regression. */
.sidebar{position:fixed!important;inset:0 auto 0 0!important;width:var(--sidebar)!important}
.app{margin-left:var(--sidebar)!important;min-height:100vh!important}
.topbar{position:sticky!important;top:0!important}
.content{margin-left:auto!important;margin-right:auto!important}

html[data-theme="dark"] .nav a.active{background:#153f2e!important;color:#fff!important;border-color:#2e6a50!important}
html[data-theme="dark"] .nav a:hover{background:#133425!important;color:#fff!important}
html[data-theme="dark"] .primary{background:linear-gradient(135deg,#16885b,#43b980)!important}
html[data-theme="dark"] .role-hero-system,html[data-theme="dark"] .role-hero-management,html[data-theme="dark"] .role-hero-magistracy,html[data-theme="dark"] .role-hero-dean,html[data-theme="dark"] .role-hero-department,html[data-theme="dark"] .role-hero-supervisor,html[data-theme="dark"] .role-hero-teacher,html[data-theme="dark"] .role-hero-student{background:linear-gradient(110deg,#123528,#0e251c)!important}

@media(max-width:900px){body::before{background-size:72px 72px;opacity:.22}}
@media(prefers-reduced-motion:reduce){body::before{animation:none}}

/* v2.9.2 user guidance — compact contextual information icons */
.context-info{display:inline-grid;place-items:center;flex:0 0 auto;width:18px;height:18px;margin-left:6px;padding:0;border:1px solid #b9dfc9;border-radius:50%;background:#f1fbf5;color:#16885b;font:800 10px/1 Georgia,serif;vertical-align:middle;box-shadow:0 2px 7px rgba(24,126,84,.08);transition:transform .16s ease,background .16s ease,border-color .16s ease;cursor:help}
.context-info:hover,.context-info:focus-visible{transform:scale(1.08);background:#daf4e5;border-color:#78c99c;outline:none}.panel-head h2,.hero-line h1,.section-title-row h2,.role-profile-heading h2,.network-pulse-head h2,.profile-visibility-note b{display:flex;align-items:center;gap:2px}.kpi>span,.headline-kpi>span,.network-stat>span,.overview-grid>div>span,.student-pulse>div>span{display:flex!important;align-items:center;gap:2px}.kpi>span .context-info,.headline-kpi>span .context-info,.network-stat>span .context-info,.overview-grid>div>span .context-info,.student-pulse>div>span .context-info{width:15px;height:15px;font-size:8px;margin-left:3px}main.content form label{position:relative}main.content form label>.context-info{position:absolute;right:5px;top:0;z-index:3;width:16px;height:16px;font-size:8px}.context-help-popover{position:fixed;z-index:9999;padding:11px 12px;border:1px solid #bfe2cd;border-radius:12px;background:rgba(255,255,255,.985);color:#214737;box-shadow:0 15px 40px rgba(26,92,65,.18);font-size:11px;line-height:1.55;pointer-events:auto}.context-help-popover::before{content:"";position:absolute;top:-5px;left:50%;width:9px;height:9px;background:#fff;border-left:1px solid #bfe2cd;border-top:1px solid #bfe2cd;transform:translateX(-50%) rotate(45deg)}.context-help-popover.is-above{transform:translateY(-100%)}.context-help-popover.is-above::before{top:auto;bottom:-5px;transform:translateX(-50%) rotate(225deg)}html[data-theme="dark"] .context-info{background:#163d2d;color:#8ce4b3;border-color:#2e6a4d}html[data-theme="dark"] .context-help-popover{background:#102b21;color:#e9fff2;border-color:#326a50}html[data-theme="dark"] .context-help-popover::before{background:#102b21;border-color:#326a50}@media(max-width:680px){.context-help-popover{font-size:10.5px}.context-info{width:17px;height:17px}.hero-line h1 .context-info{transform:translateY(1px)}}
.login-feature-grid>div>b,.login-card h2,.login-form-v21 label>span{display:flex;align-items:center;gap:3px}.login-form-v21 label{position:relative}.login-form-v21 label>span>.context-info{width:15px;height:15px;font-size:8px;margin-left:4px}.login-feature-grid>div>b>.context-info{width:15px;height:15px;font-size:8px;margin-left:4px}

/* Extended user guidance for menus, tables and compact statistics */
table th{white-space:nowrap}table th>.context-info{width:14px;height:14px;font-size:7px;margin-left:4px;transform:translateY(-1px)}
.bucket-grid>div>span,.science-grid>div>span,.health-item span{display:flex;align-items:center;gap:2px}.bucket-grid .context-info,.science-grid .context-info,.health-item .context-info{width:14px;height:14px;font-size:7px;margin-left:3px}
details summary b{display:inline-flex;align-items:center;gap:2px}

/* MD v3.0 — PWA, offline status and operational modules */
.offline-state{display:inline-flex;align-items:center;gap:6px;min-height:30px;padding:0 9px;border:1px solid #cfe8d8;border-radius:999px;background:#f4fff8;color:#247d58;font-size:9px;font-weight:800;white-space:nowrap}.offline-state>i{width:7px;height:7px;border-radius:50%;background:#23a96f;box-shadow:0 0 0 0 rgba(35,169,111,.3);animation:liveDotPulse 1.8s ease-in-out infinite}.offline-state.is-offline{border-color:#ead7a4;background:#fffaf0;color:#9a7216}.offline-state.is-offline>i{background:#d7a329;animation:none}.pwa-install{color:#148c5d!important;background:#f1fbf5!important;border-color:#cae7d6!important}.brand-mark{font-size:11px!important;letter-spacing:-.3px}
.md-feature-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:12px}.md-feature{position:relative;min-height:185px;overflow:hidden}.md-feature>span{display:grid;place-items:center;width:33px;height:33px;border-radius:11px;background:var(--green-soft);color:var(--green);font-size:10px;font-weight:900}.md-feature h2{font-size:15px;margin:16px 0 7px}.md-feature p{margin:0;color:var(--muted);font-size:10.5px;line-height:1.65}.md-feature::after{content:"";position:absolute;width:90px;height:90px;right:-38px;bottom:-38px;border:1px solid rgba(20,140,93,.12);border-radius:50%}
.intervention-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.intervention-card>header{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;margin-bottom:12px}.intervention-card h2{font-size:16px;margin:7px 0 3px}.intervention-card header p{margin:0;color:var(--muted);font-size:9px}.intervention-card.is-resolved{border-color:#cce9d7;background:linear-gradient(180deg,#fff,#f7fcf9)}.intervention-flow{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}.intervention-flow>div{position:relative;padding:10px;border:1px solid var(--line2);border-radius:11px;background:var(--surface2);min-height:86px}.intervention-flow>div:not(:last-child)::after{content:"→";position:absolute;right:-8px;top:50%;z-index:2;width:16px;height:16px;display:grid;place-items:center;border-radius:50%;background:#fff;color:var(--green);border:1px solid var(--line);transform:translateY(-50%);font-size:9px}.intervention-flow span{display:block;font-size:7.5px;letter-spacing:.6px;color:var(--muted);font-weight:850}.intervention-flow b{display:block;margin-top:5px;font-size:9.5px;line-height:1.45}.compact-action-form{display:grid;grid-template-columns:150px 1fr auto;gap:7px;margin-top:10px}.compact-action-form input,.compact-action-form select{min-height:34px;border:1px solid var(--line);border-radius:9px;background:#fff;padding:6px 8px;color:var(--text)}
.graduation-head{display:flex;align-items:center;justify-content:space-between;gap:18px}.graduation-head h2{font-size:22px;margin:4px 0}.graduation-head p{margin:0;color:var(--muted)}.graduation-score{display:flex;align-items:flex-start;gap:2px;min-width:110px;justify-content:center}.graduation-score strong{font-size:44px;line-height:1;color:var(--green)}.graduation-score small{font-size:13px;color:var(--green);font-weight:900}.graduation-score span{align-self:flex-end;margin:0 0 4px 5px;color:var(--muted);font-size:9px}.graduation-check-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.graduation-check{margin-bottom:0}.graduation-check>header{display:flex;align-items:center;gap:10px}.graduation-check h2{font-size:13px;margin:0}.graduation-check header p{margin:2px 0 0;color:var(--muted);font-size:9px}.check-state{width:36px;height:36px;border-radius:12px;display:grid;place-items:center;background:#fff4df;color:#ae7e18;border:1px solid #efdfb5;font-size:16px;font-weight:900}.graduation-check.done .check-state{background:var(--green-soft);color:var(--green);border-color:#c8e7d5}.graduation-check.done{border-color:#cbe8d6}.check-note{font-size:10px;color:var(--muted);padding:8px 10px;background:var(--surface2);border-radius:9px}.graduation-form{display:grid;grid-template-columns:170px 1fr auto;gap:7px;margin-top:10px}.graduation-form input,.graduation-form select{min-height:34px;border:1px solid var(--line);border-radius:9px;background:#fff;padding:6px 8px;color:var(--text)}
.trend-table{display:grid;gap:6px}.trend-head,.trend-row{display:grid;grid-template-columns:90px repeat(4,minmax(110px,1fr)) 80px;gap:8px;align-items:center}.trend-head{padding:0 8px;color:var(--muted);font-size:8px;font-weight:850;text-transform:uppercase}.trend-row{padding:9px 8px;border:1px solid var(--line2);border-radius:11px;background:var(--surface2)}.trend-row>b{font-size:9px}.trend-row>div{height:25px;position:relative;background:#e7f3eb;border-radius:999px;overflow:hidden}.trend-row>div i{position:absolute;inset:0 auto 0 0;border-radius:999px;background:linear-gradient(90deg,#159260,#62d5a0)}.trend-row>div span{position:absolute;inset:0;display:grid;place-items:center;font-size:8px;font-weight:900;color:#173328}.trend-row>strong{text-align:center;color:var(--red)}.text-good{color:var(--green)!important}.text-danger{color:var(--red)!important}
html[data-theme="dark"] .offline-state{background:#15392a;border-color:#2d674d;color:#8ce5b4}html[data-theme="dark"] .offline-state.is-offline{background:#3d321b;border-color:#68582b;color:#f4d47b}html[data-theme="dark"] .intervention-flow>div,html[data-theme="dark"] .trend-row{background:var(--surface2)}html[data-theme="dark"] .compact-action-form input,html[data-theme="dark"] .compact-action-form select,html[data-theme="dark"] .graduation-form input,html[data-theme="dark"] .graduation-form select{background:#0b2137;color:#fff;border-color:var(--line)}html[data-theme="dark"] .intervention-flow>div:not(:last-child)::after{background:#102b21}html[data-theme="dark"] .trend-row>div{background:#18372a}html[data-theme="dark"] .trend-row>div span{color:#eafff1}
@media(max-width:1200px){.md-feature-grid{grid-template-columns:repeat(2,1fr)}.intervention-flow{grid-template-columns:1fr 1fr}.intervention-flow>div::after{display:none}.trend-head,.trend-row{grid-template-columns:80px repeat(2,1fr) 70px}.trend-head span:nth-child(4),.trend-head span:nth-child(5),.trend-row>div:nth-child(4),.trend-row>div:nth-child(5){display:none}}
@media(max-width:760px){.offline-state span{display:none}.offline-state{width:30px;padding:0;justify-content:center}.intervention-grid,.graduation-check-grid{grid-template-columns:1fr}.compact-action-form,.graduation-form{grid-template-columns:1fr}.md-feature-grid{grid-template-columns:1fr}.trend-head,.trend-row{grid-template-columns:62px 1fr 1fr}.trend-head span:nth-child(3),.trend-row>div:nth-child(3),.trend-head span:last-child,.trend-row>strong{display:none}}
.md-install-login{margin-top:12px;max-width:220px}.login-info .md-install-login{justify-self:start}
.md-command-strip{margin:0 0 14px}.md-command-head{display:flex;align-items:end;justify-content:space-between;gap:12px;margin:0 2px 9px}.md-command-head h2{font-size:15px;margin:3px 0 0}.md-command-head>a{font-size:9px;color:var(--green);font-weight:850}.md-command-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.md-command-grid .headline-kpi{min-height:112px}.md-command-grid .headline-kpi:nth-child(2){border-color:#efd8b3}.md-command-grid .headline-kpi:nth-child(3){border-color:#c9e7d5}.md-command-grid .headline-kpi:nth-child(4) strong{color:var(--green)}@media(max-width:900px){.md-command-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:540px){.md-command-grid{grid-template-columns:1fr}.md-command-head{align-items:flex-start;flex-direction:column}}


/* MD v3.5 — PREMIUM CALM MOTION & VISUAL SYSTEM
   Professional university UI: no distracting infinite motion. */
:root{
  --md-motion-fast:140ms;
  --md-motion:220ms;
  --md-motion-slow:320ms;
  --md-ease:cubic-bezier(.22,.8,.22,1);
  --md-shadow-sm:0 4px 14px rgba(28,70,51,.06);
  --md-shadow-md:0 10px 28px rgba(28,70,51,.09);
  --md-shadow-lg:0 18px 46px rgba(28,70,51,.12);
}

/* Stop all decorative infinite motion. */
body::before,
.svg-ring-orbit-group,
.svg-ring-orbit,
.offline-state>i,
.live-dot i,
.network-pulse::before,
.network-pulse::after{
  animation:none!important;
}

/* Keep status indicators elegant and static. */
.offline-state>i,
.live-dot i{
  box-shadow:0 0 0 4px rgba(35,169,111,.10)!important;
}
.svg-ring-orbit-group{transform:none!important}
.svg-ring-orbit{opacity:.22!important}
.svg-ring-orbit-dot{opacity:.55!important;filter:none!important}

/* Unified soft motion. */
a,button,.primary,.secondary,.ghost,.tiny-btn,.icon-btn,.theme-toggle,
.panel,.kpi,.headline-kpi,.group-stat-card,.network-stat,.role-card,
.md-feature,.intervention-card,.graduation-check,.people-chip,.notification-bell,
.input-shell,input,select,textarea,.nav a,.status,.chip,.badge{
  transition:
    transform var(--md-motion) var(--md-ease),
    box-shadow var(--md-motion) var(--md-ease),
    border-color var(--md-motion-fast) ease,
    background-color var(--md-motion-fast) ease,
    color var(--md-motion-fast) ease,
    opacity var(--md-motion-fast) ease!important;
}

/* Panels: cleaner glassless premium surface. */
.panel,.kpi,.headline-kpi,.group-stat-card,.network-stat,.md-feature,
.intervention-card,.graduation-check{
  box-shadow:var(--md-shadow-sm);
  border-color:#d8e9df!important;
}
.panel:hover{box-shadow:var(--md-shadow-md)}
.kpi:hover,.headline-kpi:hover,.group-stat-card:hover,.network-stat:hover,
.role-card:hover,.md-feature:hover{
  transform:translateY(-2px)!important;
  box-shadow:var(--md-shadow-md)!important;
}

/* Buttons feel responsive but never jump. */
.primary,.secondary,.ghost,.tiny-btn,.icon-btn,.theme-toggle{
  transform:translateZ(0);
}
.primary:hover,.secondary:hover,.ghost:hover,.tiny-btn:hover,.icon-btn:hover,.theme-toggle:hover{
  transform:translateY(-1px)!important;
}
.primary:active,.secondary:active,.ghost:active,.tiny-btn:active,.icon-btn:active,.theme-toggle:active{
  transform:translateY(0) scale(.985)!important;
  transition-duration:80ms!important;
}

/* Navigation: premium selection state, no sliding/spring motion. */
.nav a{border-radius:11px}
.nav a:hover{transform:none!important}
.nav a.active{
  box-shadow:inset 3px 0 0 #159461,0 4px 14px rgba(21,148,97,.06)!important;
}

/* Inputs: focus communicates state without scale/glow excess. */
input:focus,select:focus,textarea:focus,
.input-shell:focus-within{
  transform:none!important;
  border-color:#7fcaa5!important;
  box-shadow:0 0 0 3px rgba(32,153,101,.10)!important;
  outline:none!important;
}

/* Search popover and dialogs: restrained reveal. */
.top-search-results,.modal[open]{
  animation:mdSoftReveal var(--md-motion) var(--md-ease) both!important;
}
@keyframes mdSoftReveal{
  from{opacity:0;transform:translateY(5px)}
  to{opacity:1;transform:translateY(0)}
}

/* Flash messages and newly-rendered content. */
.flash,.quick-note,.warning-box{
  animation:mdSoftReveal var(--md-motion-slow) var(--md-ease) both;
}

/* Progress rings animate only when the value changes. */
.svg-ring-progress{
  transition:stroke-dashoffset .55s var(--md-ease),stroke .2s ease!important;
}
.ring-value-hit .svg-ring-center{animation:none!important}

/* Cards should never scale; scaling causes text shimmer on Windows/Chrome. */
.is-action-card:hover,.is-action-card:focus-visible,
.headline-kpi:hover,.kpi:hover,.network-stat:hover,.group-stat-card:hover{
  transform:translateY(-2px)!important;
}

/* Dashboard hierarchy and spacing polish. */
.content{scroll-behavior:smooth}
.hero-line,.panel-head{gap:18px}
.hero-line h1,.panel-head h2,.role-profile-heading h2{
  letter-spacing:-.02em;
}
.eyebrow{
  letter-spacing:.085em;
  font-weight:850;
}
.kpi strong,.headline-kpi strong{
  letter-spacing:-.035em;
}
.role-card{
  border:1px solid #dcebe3;
  background:linear-gradient(180deg,#fff,#fbfefc);
  box-shadow:0 4px 14px rgba(28,70,51,.045);
}
.role-card:hover{
  border-color:#b9dbc9!important;
  background:linear-gradient(180deg,#fff,#f6fbf8);
}

/* Login: calmer, more premium first impression. */
.login-card{
  box-shadow:0 24px 70px rgba(20,63,45,.13)!important;
  border-color:#d6e9df!important;
}
.login-feature-grid>div{
  transition:background-color var(--md-motion-fast) ease,border-color var(--md-motion-fast) ease!important;
}
.login-feature-grid>div:hover{
  transform:none!important;
  background:rgba(255,255,255,.72)!important;
}
.login-submit:hover{transform:translateY(-1px)!important}

/* Table polish. */
table tbody tr{
  transition:background-color var(--md-motion-fast) ease!important;
}
table tbody tr:hover{
  transform:none!important;
  background:#f7fbf9!important;
}
html[data-theme="dark"] table tbody tr:hover{background:#123326!important}

/* Dialog polish. */
dialog.modal{
  border:1px solid #d7e8df;
  box-shadow:var(--md-shadow-lg);
}
dialog.modal::backdrop{
  background:rgba(8,25,18,.34);
  backdrop-filter:blur(3px);
}

/* Dark mode shadows and surfaces. */
html[data-theme="dark"] .panel,
html[data-theme="dark"] .kpi,
html[data-theme="dark"] .headline-kpi,
html[data-theme="dark"] .group-stat-card,
html[data-theme="dark"] .network-stat,
html[data-theme="dark"] .role-card{
  box-shadow:0 7px 20px rgba(0,0,0,.18);
}
html[data-theme="dark"] .role-card{
  background:linear-gradient(180deg,#102b21,#0e261d);
  border-color:#28513e;
}

/* Mobile: almost no motion, maximum responsiveness. */
@media(max-width:760px){
  .panel:hover,.kpi:hover,.headline-kpi:hover,.group-stat-card:hover,
  .network-stat:hover,.role-card:hover,.md-feature:hover{
    transform:none!important;
    box-shadow:var(--md-shadow-sm)!important;
  }
  body::before{opacity:.15!important}
}

/* Respect OS accessibility preference. */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms!important;
    animation-iteration-count:1!important;
    transition-duration:.001ms!important;
    scroll-behavior:auto!important;
  }
}


/* MD v3.5.1 — LEGACY MOTION CLEANUP
   Disable every legacy infinite decorative animation left by earlier UI versions. */
.is-action-card::before,
.group-stat-card::before,
.live-overview::before,
.motion-panel::before,.motion-panel::after,
.kpi::before,.kpi::after,
.headline-kpi::before,.headline-kpi::after,
.network-stat::before,.network-stat::after,
.bucket-grid>div::after,.overview-grid>div::after{
  animation:none!important;
}

/* Keep decorative shapes static and subtle. */
.is-action-card::before,.group-stat-card::before,
.motion-panel::before,.kpi::before,.headline-kpi::before{
  opacity:.22!important;
  transform:none!important;
}
.live-overview::before,.motion-panel::after,.kpi::after,.headline-kpi::after{
  opacity:.10!important;
  transform:none!important;
}

.role-avatar::before,
.percent-token::before,
.percent-token>span,
.profile-aura-avatar::before,.profile-aura-avatar::after,
.profile-editor-avatar::before,.profile-editor-avatar::after,
.profile-activity-feed article>i,
.network-stat i,
.people-chip em,
.student-live-foot i,
.live-state i,
.group-readiness i,
.mini-progress i,.big-progress i,.metric-bars i,.compare-list i,.triple-progress i,
.mini-progress i::after,.big-progress i::after{
  animation:none!important;
}

/* Avatar: elegant static highlight instead of spinning conic beam. */
.role-avatar::before{
  background:linear-gradient(135deg,rgba(255,255,255,.26),transparent 52%)!important;
  inset:0!important;
  transform:none!important;
}
.profile-aura-avatar::before,.profile-editor-avatar::before{
  border-style:solid!important;
  opacity:.55;
}
.profile-aura-avatar::after,.profile-editor-avatar::after{opacity:.35}

/* Progress bars: solid premium gradient, no conveyor animation. */
.mini-progress i,.big-progress i,.metric-bars i,.compare-list i,.triple-progress i,.group-readiness i{
  background-size:100% 100%!important;
}
.mini-progress i::after,.big-progress i::after{content:none!important}

/* Live state uses color, not blinking. */
.live-state i,.student-live-foot i,.profile-activity-feed article>i{
  transform:none!important;
  opacity:1!important;
  box-shadow:0 0 0 4px rgba(35,169,111,.10)!important;
}

/* Tiny arrows/icons stay still until hover. */
.network-stat i,.people-chip em,.profile-visibility-note>span{
  transform:none!important;
}
.people-chip:hover em{transform:translateX(2px)!important}
.network-stat:hover i{transform:translateY(-1px)!important}

/* Remove background-grid movement completely. */
body::before{animation:none!important;background-position:0 0!important}

/* Page entrance: one short reveal only, never repeated. */
.panel,.kpi{
  animation:mdSoftReveal .20s var(--md-ease) both!important;
}
@media(max-width:760px){
  .panel,.kpi{animation:none!important}
}

/* Crisp premium surfaces */
.sidebar{
  box-shadow:8px 0 32px rgba(30,78,56,.055)!important;
}
.topbar{
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  box-shadow:0 1px 0 rgba(38,91,66,.05);
}
.content{padding-top:18px!important}
.panel{
  border-radius:16px!important;
  background:linear-gradient(180deg,rgba(255,255,255,.99),rgba(251,254,252,.99))!important;
}
.kpi,.headline-kpi,.group-stat-card,.network-stat,.role-card{
  border-radius:14px!important;
}
.primary{
  border:none!important;
  letter-spacing:.01em;
}
.primary:hover{
  filter:saturate(1.03);
}
.icon-btn,.tiny-btn{
  box-shadow:none!important;
}
.top-search{
  box-shadow:inset 0 1px 2px rgba(23,72,50,.035);
}

/* Mobile density and touch feel */
@media(max-width:680px){
  .content{padding-top:12px!important}
  .panel{border-radius:14px!important}
  .primary,.secondary,.ghost{min-height:40px}
  .tiny-btn,.icon-btn{min-height:34px}
}
