:root{--bg:#f3f7f6;--card:#fff;--ink:#13231f;--muted:#70817c;--green:#087d61;--green2:#13a77c;--teal:#075f68;--navy:#173b42;--line:#dce8e4;--danger:#b42318;--warn:#a86600;--soft:#edf7f3;--shadow:0 16px 45px rgba(16,67,55,.08)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:"Segoe UI",Tahoma,Arial,sans-serif;background:radial-gradient(circle at 90% 0,#dff3ec 0,transparent 28%),linear-gradient(180deg,#edf6f3 0,#f8fbfa 260px);color:var(--ink);direction:rtl}.wrap{max-width:1500px;margin:auto;padding:22px}.top{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:18px}.top-actions,.brand,.section-title,.phase-top,.report-buttons{display:flex;align-items:center;gap:10px}.brand{gap:12px}.logo{width:48px;height:48px;border-radius:16px;background:linear-gradient(135deg,var(--green2),var(--teal));display:grid;place-items:center;color:#fff;font-weight:900;font-size:22px;box-shadow:0 10px 25px rgba(8,125,97,.22)}h1,h2,h3{margin:0}h1{font-size:clamp(25px,4vw,44px);line-height:1.25}.sub,.muted{color:var(--muted)}.sub{font-size:13px;margin-top:5px}.nav{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 20px}.nav a,.btn{border:1px solid var(--line);background:#fff;padding:10px 13px;border-radius:12px;color:var(--ink);text-decoration:none;font-weight:750;font-size:14px;cursor:pointer;transition:.2s}.nav a:hover,.btn:hover{transform:translateY(-1px);box-shadow:0 7px 18px rgba(18,80,65,.08)}.nav a.active,.btn.primary{background:linear-gradient(135deg,var(--green),var(--teal));color:#fff;border-color:transparent}.btn.danger{background:#fff2f1;color:var(--danger);border-color:#f1c8c4}.btn.small{padding:7px 10px;font-size:12px}.btn.wide{width:100%}.role-chip{padding:7px 10px;border-radius:999px;background:#e6f4ef;color:var(--green);font-weight:800;font-size:12px}.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:14px}.card{background:rgba(255,255,255,.96);border:1px solid var(--line);border-radius:22px;padding:18px;box-shadow:var(--shadow)}.span12{grid-column:span 12}.span8{grid-column:span 8}.span7{grid-column:span 7}.span6{grid-column:span 6}.span5{grid-column:span 5}.span4{grid-column:span 4}.kpi-grid{margin-bottom:14px}.kpi{grid-column:span 3;display:flex;gap:14px;align-items:center}.kpi .num{font-size:31px;font-weight:900;margin:4px 0}.kpi .hint{color:var(--muted);font-size:12px}.kpi-icon{width:48px;height:48px;border-radius:15px;background:var(--soft);display:grid;place-items:center;color:var(--green);font-weight:900}.hero-panel{background:linear-gradient(130deg,#0a765e,#15515d 62%,#173a43);color:#fff;border-radius:28px;padding:28px;margin-bottom:14px;display:grid;grid-template-columns:1fr auto;gap:22px;align-items:center;overflow:hidden;position:relative;box-shadow:0 22px 55px rgba(8,90,72,.18)}.hero-panel:before{content:"";position:absolute;width:280px;height:280px;border:1px solid rgba(255,255,255,.12);border-radius:50%;left:-80px;top:-120px}.hero-panel p{color:#d8ebe6;max-width:750px;line-height:1.8}.eyebrow{font-size:12px;font-weight:900;letter-spacing:.04em;color:#a8e5d2;margin-bottom:8px}.phase-orb{width:150px;height:150px;border-radius:50%;background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.18);display:grid;place-items:center;text-align:center;backdrop-filter:blur(9px)}.phase-orb b{font-size:19px;display:block}.phase-orb small{color:#d8ebe6}.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:end;margin-bottom:14px}.field{display:flex;flex-direction:column;gap:6px;min-width:150px;margin-bottom:12px}.field.grow,.grow{flex:1}.field label,.form-label{font-size:12px;color:var(--muted);font-weight:800}input,select,textarea{border:1px solid var(--line);border-radius:11px;padding:10px 11px;background:#fff;color:var(--ink);font:inherit}input:focus,select:focus,textarea:focus{outline:2px solid #a9ded0;border-color:var(--green)}hr{border:0;border-top:1px solid var(--line);width:100%}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:16px}table{width:100%;border-collapse:collapse;background:#fff;min-width:780px}th,td{padding:11px;border-bottom:1px solid #edf2f0;text-align:right;font-size:13px;vertical-align:middle}th{background:#f0f7f5;color:#36594f;position:sticky;top:0;z-index:1}tbody tr:hover{background:#fbfdfc}.badge,.status-badge,.chip{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:11px;font-weight:850;background:#eaf6f1;color:#0d775b}.badge.warn{background:#fff4df;color:#9a5b00}.badge.danger{background:#feeceb;color:#a1261d}.chip{background:#eef5f3;color:#365e54}.chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.bar{height:8px;background:#edf2f0;border-radius:999px;overflow:hidden}.bar>i{display:block;height:100%;background:linear-gradient(90deg,var(--green),#30b98f);border-radius:999px}.delta.pos{color:var(--green);font-weight:900}.delta.neg{color:var(--danger);font-weight:900}.flash{padding:12px 14px;border-radius:12px;margin-bottom:12px;border:1px solid}.flash.ok{background:#ebf8f2;border-color:#bee9d8}.flash.err{background:#fff0ef;border-color:#f5c5c0}.entry td select{min-width:58px;padding:7px}.entry .v0{background:#fff1f0}.entry .v1{background:#fff8e8}.entry .v2{background:#ecf9f3}.login{max-width:470px;margin:7vh auto}.login-card{padding:30px}.login-card form{display:grid;gap:6px}.login-bg{background:radial-gradient(circle at 20% 10%,#d8f0e7 0,transparent 33%),linear-gradient(150deg,#f6fbf9,#eaf5f1)}.login-hero{margin:20px 0;background:linear-gradient(135deg,#eff8f5,#f8fbfa);border:1px solid var(--line);padding:14px;border-radius:16px;display:flex;align-items:center;gap:12px}.login-hero span{font-size:30px;font-weight:900;color:var(--green)}.login-hero small{color:var(--muted)}.note{background:#f7fbfa;border:1px dashed #bad8cf;padding:13px;border-radius:13px;color:#48655d;font-size:13px;line-height:1.8}.metric{display:flex;justify-content:space-between;gap:10px;margin:9px 0}.sticky-actions{position:sticky;bottom:10px;display:flex;justify-content:flex-start;gap:8px;padding:12px;background:rgba(245,248,247,.9);backdrop-filter:blur(8px);border-radius:15px}.section-title{justify-content:space-between;margin-bottom:14px}.score-pill{display:inline-block;min-width:40px;text-align:center;padding:5px 8px;border-radius:9px;background:#eef5f3;font-weight:850}.footer{padding:26px 0;text-align:center;color:var(--muted);font-size:12px}.status-dot{width:9px;height:9px;border-radius:50%;display:inline-block;margin-left:5px;background:#bbb}.status-dot.ok{background:#14a271}.status-dot.wait{background:#e9a132}.phase-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px}.phase-card{padding:16px;border:1px solid var(--line);border-radius:18px;display:flex;justify-content:space-between;gap:15px}.phase-card div{display:grid;gap:5px}.phase-card small{color:var(--muted)}.phase-card.open{border-color:#9cd7c5;background:#f2fbf7}.phase-card.closed{background:#fafbfb}.phase-card.open .status-badge,.phase-admin.is-open .status-badge{background:#dff5ec;color:#08785d}.phase-card.closed .status-badge{background:#f1f1f1;color:#666}.phase-admin{position:relative;overflow:hidden}.phase-admin.is-open:after{content:"";position:absolute;width:120px;height:120px;border-radius:50%;background:#dff5ec;left:-50px;top:-50px;opacity:.6}.phase-top{justify-content:space-between;margin-bottom:16px}.phase-code{width:54px;height:54px;border-radius:17px;background:var(--soft);display:grid;place-items:center;color:var(--green);font-weight:900;font-size:22px}.phase-dates{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}.phase-dates span{background:#f6f9f8;border-radius:10px;padding:7px 9px;font-size:11px;color:var(--muted)}.phase-actions{margin-top:12px}.locked-banner{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:#fff7e8;border:1px solid #f0d6a1;color:#7e5400;padding:12px 14px;border-radius:14px;margin-bottom:14px}.segmented{display:flex;background:#eef5f3;padding:4px;border-radius:12px}.segmented a{padding:7px 14px;border-radius:9px;text-decoration:none;color:var(--muted);font-weight:850}.segmented a.active{background:#fff;color:var(--green);box-shadow:0 3px 10px rgba(0,0,0,.06)}.status-inline{display:inline-block;padding:3px 8px;border-radius:999px;font-weight:800}.status-inline.on{background:#e0f5ed;color:#08785d}.status-inline.off{background:#f1f1f1;color:#777}.name-link{color:var(--ink);text-decoration:none;font-weight:750}.name-link:hover{color:var(--green)}.back-link{display:inline-block;color:var(--green);text-decoration:none;margin-bottom:10px;font-weight:800}.student-head{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:14px}.score-summary{display:flex;gap:10px}.score-summary>div{min-width:85px;padding:12px;text-align:center;background:#f4f8f7;border-radius:15px}.score-summary small{display:block;color:var(--muted);margin-bottom:5px}.score-summary b{font-size:19px}.timeline-item{display:flex;gap:12px;margin:18px 0}.timeline-item small{display:block;color:var(--muted);margin-top:4px}.timeline-dot{width:14px;height:14px;border-radius:50%;background:#d8dfdd;margin-top:4px;box-shadow:0 0 0 5px #f3f6f5}.timeline-dot.done{background:var(--green);box-shadow:0 0 0 5px #e2f3ed}.research-chart{width:100%;display:block}.ranking{display:grid;gap:10px;margin-top:12px}.rank-row{display:grid;grid-template-columns:34px 1fr auto;gap:10px;align-items:center;padding:10px;border-bottom:1px solid #edf2f0}.rank-row small{display:block;color:var(--muted);margin-top:3px}.rank-num{width:30px;height:30px;border-radius:10px;background:#eef5f3;display:grid;place-items:center;font-weight:900;color:var(--green)}.footnote{font-size:11px;color:var(--muted);margin-top:10px}.report-buttons{flex-wrap:wrap}.class-checks{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:8px 0 16px}.class-checks label{cursor:pointer}.class-checks input{display:none}.class-checks span{display:block;border:1px solid var(--line);border-radius:11px;padding:10px;text-align:center;font-size:13px;font-weight:750}.class-checks input:checked+span{background:#e8f6f1;border-color:#9fd8c7;color:var(--green)}.supervisor-list{display:grid;gap:8px}.supervisor-row{display:flex;gap:11px;align-items:center;text-decoration:none;color:var(--ink);padding:12px;border:1px solid var(--line);border-radius:15px}.supervisor-row:hover{background:#fbfdfc}.supervisor-row small{display:block;color:var(--muted);margin-top:3px}.avatar{width:42px;height:42px;border-radius:13px;background:linear-gradient(135deg,#e2f4ed,#dcecef);display:grid;place-items:center;color:var(--green);font-weight:900}.hidden-box{display:none;margin-bottom:12px}.empty{text-align:center;color:var(--muted);padding:28px!important}.report-actions{display:flex;gap:8px;justify-content:flex-start;margin-bottom:12px}.report-cover{text-align:center;padding:52px 24px;margin-bottom:14px}.report-cover .eyebrow{color:var(--green)}.report-cover p{color:var(--muted)}.report-meta{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:18px}.report-meta span{background:#f2f7f5;padding:8px 12px;border-radius:10px;font-size:12px}.print-page{background:#fff}.print-page .card{margin-bottom:14px}.print-table table{min-width:0}
@media(max-width:1000px){.kpi{grid-column:span 6}.span8,.span7,.span6,.span5,.span4{grid-column:span 12}.hero-panel{grid-template-columns:1fr}.phase-orb{display:none}.student-head{align-items:flex-start;flex-direction:column}}
@media(max-width:650px){.wrap{padding:12px}.kpi{grid-column:span 12}.top{align-items:flex-start}.top-actions{align-items:flex-end;flex-direction:column}.nav{overflow:auto;flex-wrap:nowrap;padding-bottom:4px}.nav a{white-space:nowrap}.card{border-radius:17px;padding:14px}.hero-panel{border-radius:20px;padding:20px}.phase-cards{grid-template-columns:1fr}.score-summary{width:100%;overflow:auto}.score-summary>div{min-width:80px}.section-title{align-items:flex-start;flex-direction:column}.class-checks{grid-template-columns:1fr}.report-buttons{width:100%}}

/* ===== Nuqati UI 2.1 — modern visual patch ===== */
:root{
  --accent:#087d61;--accent2:#15b887;--accent3:#075f68;--accent-rgb:8,125,97;
  --surface:rgba(255,255,255,.78);--surface-strong:#fff;--surface-soft:rgba(247,251,250,.82);
  --glass-border:rgba(255,255,255,.72);--hairline:rgba(23,59,66,.10);
  --shadow-sm:0 8px 24px rgba(16,56,48,.06);--shadow-lg:0 24px 70px rgba(16,56,48,.12);
}
body.theme-emerald{--accent:#087d61;--accent2:#17b989;--accent3:#075f68;--accent-rgb:8,125,97;--green:#087d61;--green2:#17b989;--teal:#075f68}
body.theme-ocean{--accent:#0878c9;--accent2:#18b7d7;--accent3:#145a86;--accent-rgb:8,120,201;--green:#0878c9;--green2:#18b7d7;--teal:#145a86}
body.theme-indigo{--accent:#6657d9;--accent2:#9b6ee9;--accent3:#3e4c8b;--accent-rgb:102,87,217;--green:#6657d9;--green2:#9b6ee9;--teal:#3e4c8b}
body.theme-graphite{--accent:#334155;--accent2:#64748b;--accent3:#0f766e;--accent-rgb:51,65,85;--green:#334155;--green2:#64748b;--teal:#0f766e}
body{min-height:100vh;background:
 radial-gradient(circle at 88% -10%,rgba(var(--accent-rgb),.16),transparent 28%),
 radial-gradient(circle at 0 38%,rgba(var(--accent-rgb),.07),transparent 26%),
 linear-gradient(180deg,#f7faf9 0,#f2f7f6 45%,#f8faf9 100%);overflow-x:hidden}
.ambient{position:fixed;z-index:-1;pointer-events:none;filter:blur(4px);opacity:.55;border-radius:999px}
.ambient-a{width:420px;height:420px;right:-220px;top:18vh;background:radial-gradient(circle,rgba(var(--accent-rgb),.16),rgba(var(--accent-rgb),0) 70%)}
.ambient-b{width:520px;height:520px;left:-270px;bottom:-180px;background:radial-gradient(circle,rgba(var(--accent-rgb),.10),rgba(var(--accent-rgb),0) 70%)}
.wrap{max-width:1540px;padding:24px 28px 34px;position:relative}
.top{position:sticky;top:14px;z-index:40;margin-bottom:12px;padding:12px 14px;background:rgba(255,255,255,.78);border:1px solid rgba(255,255,255,.92);box-shadow:0 12px 38px rgba(23,59,66,.08);backdrop-filter:blur(22px) saturate(150%);-webkit-backdrop-filter:blur(22px) saturate(150%);border-radius:22px}
.top .brand h2{font-size:20px;letter-spacing:-.02em}.top-eyebrow{color:var(--accent);font-size:10px;margin-bottom:2px}.top-actions{margin-inline-start:auto}
.logo{width:50px;height:50px;border-radius:16px;background:linear-gradient(145deg,var(--accent2),var(--accent3));box-shadow:0 12px 30px rgba(var(--accent-rgb),.24);overflow:hidden;flex:0 0 auto}
.logo-image{background:#fff;border:1px solid var(--hairline);padding:4px}.logo-image img{width:100%;height:100%;object-fit:contain;border-radius:12px;display:block}.logo-fallback{display:grid;place-items:center}
.role-chip{display:inline-flex;align-items:center;gap:7px;background:rgba(var(--accent-rgb),.09);color:var(--accent);border:1px solid rgba(var(--accent-rgb),.13);padding:8px 11px}.online-dot{width:7px;height:7px;border-radius:50%;background:var(--accent2);box-shadow:0 0 0 4px rgba(var(--accent-rgb),.10)}
.nav{position:sticky;top:89px;z-index:35;margin:0 0 20px;padding:6px;background:rgba(247,251,250,.82);border:1px solid rgba(255,255,255,.85);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-radius:18px;box-shadow:var(--shadow-sm);width:max-content;max-width:100%;overflow:auto;flex-wrap:nowrap}
.nav a{white-space:nowrap;border:0;background:transparent;border-radius:13px;padding:10px 14px;color:#53645f}.nav a:hover{background:#fff;box-shadow:none;transform:none}.nav a.active{background:#fff;color:var(--accent);box-shadow:0 8px 20px rgba(var(--accent-rgb),.10);position:relative}.nav a.active:after{content:"";position:absolute;right:14px;left:14px;bottom:3px;height:2px;border-radius:99px;background:linear-gradient(90deg,var(--accent),var(--accent2))}
.btn{border-color:rgba(23,59,66,.11);background:rgba(255,255,255,.9);border-radius:13px;box-shadow:0 3px 10px rgba(23,59,66,.03);padding:10px 14px}.btn:hover{border-color:rgba(var(--accent-rgb),.22);box-shadow:0 10px 24px rgba(var(--accent-rgb),.10);transform:translateY(-1px)}.btn.primary{background:linear-gradient(135deg,var(--accent),var(--accent3));box-shadow:0 12px 26px rgba(var(--accent-rgb),.20)}.btn.primary:hover{box-shadow:0 15px 32px rgba(var(--accent-rgb),.28)}.btn.ghost{background:rgba(var(--accent-rgb),.06);color:var(--accent);border-color:rgba(var(--accent-rgb),.10)}.logout-btn{background:rgba(255,255,255,.72)}
.card{background:var(--surface);border:1px solid rgba(255,255,255,.92);box-shadow:0 14px 46px rgba(23,59,66,.075);backdrop-filter:blur(15px) saturate(125%);-webkit-backdrop-filter:blur(15px) saturate(125%);border-radius:24px;padding:20px}.card:hover{border-color:rgba(var(--accent-rgb),.10)}
.hero-panel{background:linear-gradient(135deg,var(--accent3) 0,var(--accent) 48%,var(--accent2) 145%);border-radius:30px;padding:32px;box-shadow:0 28px 70px rgba(var(--accent-rgb),.24);isolation:isolate}.hero-panel:before{width:360px;height:360px;left:-90px;top:-170px;border-color:rgba(255,255,255,.15)}.hero-panel:after{content:"";position:absolute;inset:auto -80px -150px auto;width:320px;height:320px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.13),transparent 68%);z-index:-1}.hero-panel h1{max-width:980px;font-size:clamp(27px,3.3vw,47px);letter-spacing:-.035em}.hero-panel p{font-size:14px}.phase-orb{width:164px;height:164px;border-color:rgba(255,255,255,.24);box-shadow:inset 0 1px 0 rgba(255,255,255,.22),0 18px 35px rgba(0,0,0,.08)}
.kpi{position:relative;overflow:hidden}.kpi:after{content:"";position:absolute;width:90px;height:90px;border-radius:50%;left:-28px;bottom:-40px;background:rgba(var(--accent-rgb),.05)}.kpi-icon{width:52px;height:52px;border-radius:17px;background:linear-gradient(145deg,rgba(var(--accent-rgb),.13),rgba(var(--accent-rgb),.05));color:var(--accent);border:1px solid rgba(var(--accent-rgb),.08)}.kpi .num{letter-spacing:-.04em}.bar{height:7px;background:rgba(23,59,66,.07)}.bar>i{background:linear-gradient(90deg,var(--accent),var(--accent2))}
input,select,textarea{border-color:rgba(23,59,66,.12);border-radius:13px;background:rgba(255,255,255,.86);min-height:42px;transition:border-color .18s,box-shadow .18s,background .18s}input:hover,select:hover,textarea:hover{border-color:rgba(var(--accent-rgb),.22)}input:focus,select:focus,textarea:focus{outline:0;border-color:rgba(var(--accent-rgb),.50);box-shadow:0 0 0 4px rgba(var(--accent-rgb),.10);background:#fff}.field label,.form-label{color:#5e716b}.input-help{font-size:11px;color:var(--muted);line-height:1.6;margin-top:3px}
.table-wrap{border-color:rgba(23,59,66,.09);border-radius:18px;background:rgba(255,255,255,.55)}table{background:transparent}th{background:rgba(var(--accent-rgb),.055);color:#3e5a52;backdrop-filter:blur(8px)}th,td{padding:12px 13px;border-bottom-color:rgba(23,59,66,.065)}tbody tr{transition:background .16s}tbody tr:hover{background:rgba(var(--accent-rgb),.035)}
.badge,.status-badge,.chip{background:rgba(var(--accent-rgb),.08);color:var(--accent);border:1px solid rgba(var(--accent-rgb),.08)}.phase-card{border-color:rgba(23,59,66,.09);background:rgba(255,255,255,.55)}.phase-card.open{border-color:rgba(var(--accent-rgb),.25);background:rgba(var(--accent-rgb),.055)}.phase-code{background:rgba(var(--accent-rgb),.09);color:var(--accent)}
.section-title h3{font-size:18px;letter-spacing:-.015em}.section-title.compact{margin-top:4px}.settings-eyebrow{color:var(--accent)}
.login{max-width:500px;margin:8vh auto}.login-card{padding:34px;background:rgba(255,255,255,.82);border:1px solid rgba(255,255,255,.95);box-shadow:0 30px 90px rgba(23,59,66,.14);backdrop-filter:blur(24px)}.login-bg{background:radial-gradient(circle at 80% 0,rgba(var(--accent-rgb),.18),transparent 32%),linear-gradient(145deg,#f8fbfa,#edf5f3)}.login-hero{border-color:rgba(var(--accent-rgb),.10);background:linear-gradient(135deg,rgba(var(--accent-rgb),.08),rgba(255,255,255,.68));padding:16px 18px}.login-hero span{color:var(--accent)}
.row-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.student-title-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.score-summary>div{background:rgba(var(--accent-rgb),.055);border:1px solid rgba(var(--accent-rgb),.07)}.score-pill{background:rgba(var(--accent-rgb),.075);color:var(--accent)}.name-link:hover,.back-link{color:var(--accent)}
/* Settings + identity */
.settings-grid{align-items:start}.settings-separator{margin:8px 0 20px;border-color:rgba(23,59,66,.08)}.identity-panel{display:flex;gap:16px;align-items:center;padding:15px;border:1px solid rgba(var(--accent-rgb),.11);background:rgba(var(--accent-rgb),.035);border-radius:19px;margin-bottom:18px}.logo-preview{width:94px;height:94px;flex:0 0 94px;display:grid;place-items:center}.preview-logo{width:82px;height:82px;border-radius:22px}.remove-logo{display:flex;gap:8px;align-items:center;font-size:12px;color:#6e6154;cursor:pointer}.remove-logo input{min-height:auto}.theme-options{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.theme-option{cursor:pointer}.theme-option input{position:absolute;opacity:0;pointer-events:none}.theme-card{display:grid;gap:4px;padding:13px 12px;border:1px solid rgba(23,59,66,.09);border-radius:16px;background:rgba(255,255,255,.65);transition:.18s}.theme-card i{width:34px;height:7px;border-radius:999px;margin-bottom:6px}.theme-card b{font-size:13px}.theme-card small{font-size:10px;color:var(--muted)}.theme-swatch-emerald i{background:linear-gradient(90deg,#087d61,#17b989)}.theme-swatch-ocean i{background:linear-gradient(90deg,#0878c9,#18b7d7)}.theme-swatch-indigo i{background:linear-gradient(90deg,#6657d9,#9b6ee9)}.theme-swatch-graphite i{background:linear-gradient(90deg,#334155,#0f766e)}.theme-option input:checked+.theme-card{border-color:rgba(var(--accent-rgb),.38);box-shadow:0 0 0 3px rgba(var(--accent-rgb),.09),0 12px 30px rgba(var(--accent-rgb),.09);background:#fff}.settings-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:20px}.admin-feature-card{background:linear-gradient(160deg,rgba(var(--accent-rgb),.07),rgba(255,255,255,.84) 45%);position:sticky;top:154px}.admin-feature-card>p{line-height:1.8}.admin-capabilities{display:grid;gap:10px;margin-top:18px}.admin-capabilities>div{display:grid;grid-template-columns:36px 1fr;column-gap:10px;padding:12px;border-radius:16px;background:rgba(255,255,255,.68);border:1px solid rgba(23,59,66,.065)}.admin-capabilities span{grid-row:1/3;width:34px;height:34px;border-radius:11px;background:rgba(var(--accent-rgb),.09);color:var(--accent);display:grid;place-items:center;font-weight:900;font-size:11px}.admin-capabilities b{font-size:13px}.admin-capabilities small{font-size:11px;color:var(--muted);line-height:1.6;margin-top:2px}
/* Admin modal */
.modal{position:fixed;inset:0;z-index:100;display:none;place-items:center;padding:18px}.modal.show{display:grid}.modal-backdrop{position:absolute;inset:0;background:rgba(12,28,25,.42);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.modal-card{position:relative;z-index:2;width:min(460px,100%);background:rgba(255,255,255,.95);border:1px solid rgba(255,255,255,.95);border-radius:26px;padding:26px;box-shadow:0 32px 100px rgba(0,0,0,.20);animation:modalIn .2s ease-out}.modal-card h3{margin:8px 0 6px}.modal-card p{font-size:13px;line-height:1.7;margin:0 0 17px}.modal-close{position:absolute;left:15px;top:13px;width:34px;height:34px;border:0;border-radius:12px;background:#f3f6f5;color:#5a6864;font-size:22px;cursor:pointer}.modal-icon{width:46px;height:46px;border-radius:15px;background:linear-gradient(135deg,rgba(var(--accent-rgb),.14),rgba(var(--accent-rgb),.06));color:var(--accent);display:grid;place-items:center;font-weight:900}.modal-open{overflow:hidden}@keyframes modalIn{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}
/* Progressive reveal */
.ui-reveal{animation:uiReveal .38s ease both;animation-delay:var(--reveal-delay,0ms)}@keyframes uiReveal{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
.flash{box-shadow:var(--shadow-sm);backdrop-filter:blur(10px)}.footer{opacity:.8}.note{background:rgba(var(--accent-rgb),.035);border-color:rgba(var(--accent-rgb),.20);color:#4f635d}.rank-num{background:rgba(var(--accent-rgb),.08);color:var(--accent)}
@media(max-width:1000px){.top{top:8px}.nav{top:82px}.admin-feature-card{position:static}.theme-options{grid-template-columns:repeat(2,1fr)}}
@media(max-width:650px){.wrap{padding:10px 10px 24px}.top{border-radius:18px;padding:10px;top:6px}.top .brand .sub{max-width:210px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.top .logo{width:44px;height:44px;border-radius:14px}.top-actions .role-chip{display:none}.logout-btn{padding:9px 10px}.nav{top:72px;margin-bottom:14px;border-radius:15px}.nav a{padding:9px 12px}.card{border-radius:20px}.hero-panel{padding:24px 19px}.identity-panel{align-items:flex-start}.logo-preview{width:74px;height:74px;flex-basis:74px}.preview-logo{width:68px;height:68px}.theme-options{grid-template-columns:1fr 1fr}.row-actions{min-width:145px}.modal-card{border-radius:22px;padding:22px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.ui-reveal,.modal-card{animation:none!important}.btn{transition:none!important}}
.report-logo{display:flex;justify-content:center;margin-bottom:14px}.report-logo-box{width:72px;height:72px;border-radius:20px}

/* ============================================================
   NUQATI AURORA UI 3.0 — Full visual overhaul
   Pure presentation layer. No database or PHP logic changes.
   ============================================================ */
:root{
  --ui-radius-xs:10px;
  --ui-radius-sm:14px;
  --ui-radius-md:18px;
  --ui-radius-lg:24px;
  --ui-radius-xl:32px;
  --ui-blur:20px;
  --ui-bg:#f4f7f9;
  --ui-bg-2:#edf3f6;
  --ui-surface:rgba(255,255,255,.82);
  --ui-surface-strong:rgba(255,255,255,.95);
  --ui-surface-soft:rgba(255,255,255,.58);
  --ui-ink:#12211e;
  --ui-muted:#6d7d79;
  --ui-line:rgba(16,45,38,.09);
  --ui-line-strong:rgba(16,45,38,.15);
  --ui-shadow-xs:0 4px 14px rgba(26,53,47,.055);
  --ui-shadow-sm:0 10px 28px rgba(26,53,47,.075);
  --ui-shadow-md:0 20px 55px rgba(26,53,47,.10);
  --ui-shadow-lg:0 34px 90px rgba(17,43,37,.15);
  --ui-ease:cubic-bezier(.2,.8,.2,1);
}

html{background:var(--ui-bg);}
body{
  min-height:100vh;
  color:var(--ui-ink);
  background:
    radial-gradient(900px 500px at 92% -8%,rgba(var(--accent-rgb),.18),transparent 62%),
    radial-gradient(780px 520px at -12% 42%,rgba(var(--accent-rgb),.08),transparent 65%),
    linear-gradient(180deg,#f8fbfc 0%,var(--ui-bg) 48%,#f7f9fa 100%);
  background-attachment:fixed;
  overflow-x:hidden;
}
body:before{
  content:"";
  position:fixed;
  inset:0;
  pointer-events:none;
  z-index:-3;
  opacity:.42;
  background-image:
    linear-gradient(rgba(255,255,255,.52) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.52) 1px,transparent 1px);
  background-size:48px 48px;
  mask-image:linear-gradient(to bottom,rgba(0,0,0,.32),transparent 70%);
}
body:after{
  content:"";
  position:fixed;
  width:520px;height:520px;
  left:-210px;top:12vh;
  border-radius:50%;
  pointer-events:none;z-index:-2;
  background:radial-gradient(circle,rgba(var(--accent-rgb),.11),transparent 68%);
  filter:blur(10px);
}
.ambient{opacity:.75;filter:blur(6px)}

.wrap{max-width:1540px;padding:18px 26px 34px;}

/* app header */
.top{
  position:sticky;top:12px;z-index:60;
  margin:0 0 12px;
  padding:12px 14px;
  border:1px solid rgba(255,255,255,.88);
  background:rgba(249,252,252,.78);
  box-shadow:var(--ui-shadow-sm);
  border-radius:22px;
  backdrop-filter:blur(24px) saturate(145%);
  -webkit-backdrop-filter:blur(24px) saturate(145%);
}
.top:before{
  content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:linear-gradient(120deg,rgba(255,255,255,.62),transparent 42%,rgba(var(--accent-rgb),.035));
}
.brand{position:relative;z-index:1;min-width:0}
.brand>div:last-child{min-width:0}
.top .brand h2{font-size:18px;font-weight:900;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:680px}
.top .brand .sub{margin-top:3px;font-size:11.5px}
.top-eyebrow{font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.logo{
  width:48px;height:48px;border-radius:15px;
  box-shadow:0 11px 28px rgba(var(--accent-rgb),.22),inset 0 1px rgba(255,255,255,.28);
  border:1px solid rgba(255,255,255,.24)
}
.logo-image img{width:100%;height:100%;object-fit:contain;background:#fff;border-radius:inherit;padding:4px}
.top-actions{position:relative;z-index:1}
.role-chip{background:rgba(var(--accent-rgb),.075);border-color:rgba(var(--accent-rgb),.12);padding:8px 12px;box-shadow:inset 0 1px rgba(255,255,255,.55)}
.online-dot{animation:uiPulse 2.2s ease-in-out infinite}
@keyframes uiPulse{0%,100%{box-shadow:0 0 0 4px rgba(var(--accent-rgb),.09)}50%{box-shadow:0 0 0 7px rgba(var(--accent-rgb),.025)}}

/* modern nav bar */
.nav{
  position:sticky;top:88px;z-index:55;
  display:flex;flex-wrap:nowrap;overflow:auto hidden;
  gap:5px;margin:0 0 18px;padding:6px;
  border:1px solid rgba(255,255,255,.82);
  border-radius:18px;
  background:rgba(244,248,248,.73);
  box-shadow:var(--ui-shadow-xs);
  backdrop-filter:blur(18px) saturate(130%);
  scrollbar-width:none;
}
.nav::-webkit-scrollbar{display:none}
.nav a{
  display:inline-flex;align-items:center;gap:8px;flex:0 0 auto;
  min-height:42px;padding:9px 13px;
  border-radius:12px;color:#596a66;font-size:13px;font-weight:820;
  transition:all .22s var(--ui-ease);
}
.nav a:hover{background:rgba(255,255,255,.72);color:var(--accent);transform:translateY(-1px)}
.nav a.active{
  color:#fff!important;
  background:linear-gradient(135deg,var(--accent3),var(--accent) 58%,var(--accent2));
  box-shadow:0 10px 24px rgba(var(--accent-rgb),.22),inset 0 1px rgba(255,255,255,.18);
}
.nav a.active:after{display:none}
.nav-icon{width:18px;height:18px;display:inline-grid;place-items:center;opacity:.82;flex:0 0 auto}
.nav-icon svg{width:18px;height:18px;display:block}
.nav a.active .nav-icon{opacity:1}

/* buttons */
.btn{
  min-height:40px;display:inline-flex;align-items:center;justify-content:center;gap:7px;
  border:1px solid var(--ui-line);
  background:var(--ui-surface-strong);
  color:var(--ui-ink);
  border-radius:12px;padding:9px 14px;
  box-shadow:0 2px 7px rgba(20,50,43,.025);
  font-weight:820;transition:all .2s var(--ui-ease);
}
.btn:hover{transform:translateY(-1px);border-color:rgba(var(--accent-rgb),.24);box-shadow:0 10px 24px rgba(var(--accent-rgb),.10)}
.btn:active{transform:translateY(0) scale(.985)}
.btn.primary{border:0;background:linear-gradient(135deg,var(--accent3),var(--accent));box-shadow:0 11px 24px rgba(var(--accent-rgb),.23)}
.btn.primary:hover{box-shadow:0 15px 32px rgba(var(--accent-rgb),.29)}
.btn.danger{background:#fff6f5;border-color:rgba(180,35,24,.15)}
.btn.small{min-height:34px;border-radius:10px;padding:7px 10px}
.logout-btn{background:rgba(255,255,255,.73)}

/* universal cards / bento */
.grid{gap:16px}
.card{
  position:relative;
  background:linear-gradient(145deg,rgba(255,255,255,.94),rgba(255,255,255,.72));
  border:1px solid rgba(255,255,255,.91);
  border-radius:24px;padding:20px;
  box-shadow:var(--ui-shadow-sm);
  backdrop-filter:blur(18px) saturate(125%);
  -webkit-backdrop-filter:blur(18px) saturate(125%);
  transition:transform .24s var(--ui-ease),box-shadow .24s var(--ui-ease),border-color .24s;
  overflow:hidden;
}
.card:before{
  content:"";position:absolute;inset:0;pointer-events:none;
  border-radius:inherit;
  background:linear-gradient(135deg,rgba(255,255,255,.52),transparent 34%,rgba(var(--accent-rgb),.018));
}
.card>*{position:relative;z-index:1}
.card:hover{border-color:rgba(var(--accent-rgb),.12);box-shadow:var(--ui-shadow-md)}
.section-title{margin-bottom:16px}.section-title h3{font-size:18px;font-weight:900;letter-spacing:-.02em}.section-title .sub{font-size:11.5px}

/* hero */
.hero-panel{
  min-height:230px;padding:34px 36px;
  border-radius:32px;
  background:
    radial-gradient(500px 260px at 18% 22%,rgba(255,255,255,.14),transparent 68%),
    linear-gradient(120deg,var(--accent3) 0%,var(--accent) 52%,var(--accent2) 135%);
  box-shadow:0 28px 72px rgba(var(--accent-rgb),.25);
  border:1px solid rgba(255,255,255,.12);
  isolation:isolate;
}
.hero-panel:before{width:450px;height:450px;left:-110px;top:-250px;border:1px solid rgba(255,255,255,.15)}
.hero-panel:after{content:"";position:absolute;inset:auto -55px -110px auto;width:300px;height:300px;border-radius:50%;background:linear-gradient(145deg,rgba(255,255,255,.10),rgba(255,255,255,.01));border:1px solid rgba(255,255,255,.10);z-index:-1;transform:rotate(18deg)}
.hero-panel h1{font-size:clamp(27px,3.25vw,48px);font-weight:950;letter-spacing:-.045em;line-height:1.22;max-width:980px}
.hero-panel p{font-size:14px;line-height:1.9;max-width:820px;color:rgba(255,255,255,.78)}
.hero-panel .eyebrow{display:inline-flex;padding:6px 10px;border-radius:999px;background:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(255,255,255,.10)}
.phase-orb{
  width:170px;height:170px;
  background:linear-gradient(145deg,rgba(255,255,255,.15),rgba(255,255,255,.07));
  border:1px solid rgba(255,255,255,.24);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.24),0 22px 45px rgba(0,0,0,.12);
  backdrop-filter:blur(18px);
}
.phase-orb b{font-size:20px}

/* KPIs */
.kpi{min-height:138px;align-items:center;padding:19px 20px}
.kpi:after{width:120px;height:120px;left:-42px;bottom:-58px;background:radial-gradient(circle,rgba(var(--accent-rgb),.10),transparent 70%)}
.kpi-icon{
  width:56px;height:56px;border-radius:18px;
  background:linear-gradient(145deg,rgba(var(--accent-rgb),.13),rgba(var(--accent-rgb),.045));
  color:var(--accent);border:1px solid rgba(var(--accent-rgb),.10);
  box-shadow:inset 0 1px rgba(255,255,255,.65)
}
.kpi .num{font-size:34px;font-weight:950;letter-spacing:-.05em;line-height:1.15}
.kpi .muted{font-size:11.5px;font-weight:720}
.kpi .hint{font-size:10.5px}
.bar{height:7px;background:rgba(28,58,50,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.04)}
.bar>i{background:linear-gradient(90deg,var(--accent3),var(--accent2));box-shadow:0 0 12px rgba(var(--accent-rgb),.16)}

/* forms */
.field{gap:7px;margin-bottom:14px}.field label,.form-label{font-size:11.5px;font-weight:820;color:#5c6d68}
input,select,textarea{
  min-height:44px;border:1px solid var(--ui-line-strong);border-radius:12px;
  background:rgba(255,255,255,.90);color:var(--ui-ink);padding:10px 12px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.55);
  transition:border-color .17s,box-shadow .17s,background .17s,transform .17s;
}
input:hover,select:hover,textarea:hover{border-color:rgba(var(--accent-rgb),.26)}
input:focus,select:focus,textarea:focus{outline:0;border-color:rgba(var(--accent-rgb),.48);box-shadow:0 0 0 4px rgba(var(--accent-rgb),.09),0 7px 22px rgba(var(--accent-rgb),.06);background:#fff}
input[type="checkbox"],input[type="radio"]{min-height:auto;accent-color:var(--accent)}
.toolbar{padding:12px;border-radius:18px;background:rgba(255,255,255,.48);border:1px solid var(--ui-line);align-items:end}
.segmented{background:rgba(var(--accent-rgb),.055);padding:4px;border:1px solid rgba(var(--accent-rgb),.07);border-radius:13px}
.segmented a{border-radius:9px}
.segmented a.active{color:var(--accent);box-shadow:0 5px 16px rgba(var(--accent-rgb),.09)}

/* tables */
.table-wrap{
  border:1px solid var(--ui-line);border-radius:18px;
  background:rgba(255,255,255,.58);
  box-shadow:inset 0 1px rgba(255,255,255,.6);
}
table{background:transparent}
th,td{padding:12px 13px;border-bottom-color:rgba(18,50,42,.065);font-size:12.6px}
th{
  background:rgba(245,249,249,.94);color:#455a54;font-size:11.5px;font-weight:900;
  backdrop-filter:blur(14px);box-shadow:inset 0 -1px rgba(18,50,42,.05)
}
tbody tr{transition:background .16s ease,box-shadow .16s ease}
tbody tr:hover{background:rgba(var(--accent-rgb),.035)}
tbody tr:last-child td{border-bottom:0}
.entry td select{border-radius:10px;min-height:37px}
.entry .v0{background:#fff5f4;border-color:rgba(180,35,24,.10)}
.entry .v1{background:#fffaef;border-color:rgba(168,102,0,.10)}
.entry .v2{background:#f0faf6;border-color:rgba(var(--accent-rgb),.12)}

/* tags / status */
.badge,.status-badge,.chip,.score-pill,.status-inline{
  border:1px solid rgba(var(--accent-rgb),.09);
  background:rgba(var(--accent-rgb),.075);color:var(--accent);
  box-shadow:inset 0 1px rgba(255,255,255,.55)
}
.badge{padding:6px 10px}.chip{padding:6px 9px}
.badge.warn{background:#fff8e8;border-color:#f4d9a7;color:#976100}
.badge.danger{background:#fff0ef;border-color:#f1c6c1;color:#a72c22}
.flash{border-radius:14px;padding:13px 15px;box-shadow:var(--ui-shadow-xs)}
.flash.ok{background:rgba(235,248,242,.92)}.flash.err{background:rgba(255,240,239,.94)}

/* phase cards */
.phase-cards{gap:13px}.phase-card{padding:17px;border-radius:18px;background:rgba(255,255,255,.54);border:1px solid var(--ui-line)}
.phase-card.open{background:linear-gradient(145deg,rgba(var(--accent-rgb),.075),rgba(255,255,255,.72));border-color:rgba(var(--accent-rgb),.22);box-shadow:0 10px 26px rgba(var(--accent-rgb),.07)}
.phase-card.closed{background:rgba(250,251,251,.72)}
.phase-admin{border-radius:24px}.phase-code{border-radius:16px;background:rgba(var(--accent-rgb),.08)}
.phase-dates span{background:rgba(255,255,255,.72);border:1px solid var(--ui-line)}
.locked-banner{border-radius:16px;background:#fff9ed;border-color:#efd7aa}

/* student profile / analytics */
.student-head{padding:4px 0 8px}.student-title-row h2{font-size:24px;font-weight:950;letter-spacing:-.03em}
.score-summary>div{background:linear-gradient(145deg,rgba(var(--accent-rgb),.07),rgba(255,255,255,.72));border-radius:16px;border:1px solid rgba(var(--accent-rgb),.08);box-shadow:inset 0 1px rgba(255,255,255,.6)}
.score-summary b{font-size:20px}
.timeline-item{position:relative;margin:20px 0}.timeline-dot{width:13px;height:13px;box-shadow:0 0 0 5px rgba(30,50,45,.05)}.timeline-dot.done{box-shadow:0 0 0 5px rgba(var(--accent-rgb),.09)}
.ranking{gap:7px}.rank-row{border-bottom-color:rgba(18,50,42,.06);border-radius:12px;padding:10px 11px}.rank-row:hover{background:rgba(var(--accent-rgb),.035)}
.rank-num{border-radius:10px;background:linear-gradient(145deg,rgba(var(--accent-rgb),.12),rgba(var(--accent-rgb),.05));border:1px solid rgba(var(--accent-rgb),.08)}
.research-chart{filter:drop-shadow(0 8px 18px rgba(18,55,45,.045))}

/* settings */
.identity-panel{border-radius:20px;padding:17px;background:linear-gradient(145deg,rgba(var(--accent-rgb),.055),rgba(255,255,255,.68));border-color:rgba(var(--accent-rgb),.10)}
.logo-preview{border-radius:22px;background:rgba(255,255,255,.58);border:1px solid var(--ui-line);box-shadow:inset 0 1px rgba(255,255,255,.8)}
.theme-options{gap:11px}.theme-card{min-height:95px;border-radius:17px;padding:14px;background:linear-gradient(145deg,rgba(255,255,255,.88),rgba(255,255,255,.60));border:1px solid var(--ui-line);box-shadow:var(--ui-shadow-xs)}
.theme-card i{height:8px;width:42px}.theme-option input:checked+.theme-card{transform:translateY(-2px);box-shadow:0 0 0 3px rgba(var(--accent-rgb),.07),var(--ui-shadow-sm)}
.admin-feature-card{background:linear-gradient(150deg,rgba(var(--accent-rgb),.085),rgba(255,255,255,.82) 46%)}
.admin-capabilities>div{border-radius:15px;background:rgba(255,255,255,.70)}

/* supervisors */
.supervisor-list{display:grid;gap:8px}.supervisor-row{border-radius:15px!important;transition:.18s var(--ui-ease)}.supervisor-row:hover{transform:translateX(-2px);background:rgba(var(--accent-rgb),.04)!important}
.avatar{box-shadow:inset 0 1px rgba(255,255,255,.5)}

/* login page */
.login-bg{background:
  radial-gradient(700px 440px at 78% -8%,rgba(var(--accent-rgb),.20),transparent 62%),
  radial-gradient(600px 420px at -8% 95%,rgba(var(--accent-rgb),.08),transparent 65%),
  linear-gradient(145deg,#f7fbfb,#eef4f5 55%,#f8fafb)}
.login{max-width:510px;margin:7vh auto}
.login-card{padding:34px;border-radius:30px;background:rgba(255,255,255,.76);border:1px solid rgba(255,255,255,.92);box-shadow:0 35px 100px rgba(19,48,42,.16);backdrop-filter:blur(28px) saturate(145%)}
.login-card .logo{width:58px;height:58px;border-radius:18px;margin-bottom:12px}
.login-hero{border-radius:18px;background:linear-gradient(135deg,rgba(var(--accent-rgb),.09),rgba(255,255,255,.57));border-color:rgba(var(--accent-rgb),.09)}
.login-hero span{font-size:34px}

/* modal */
.modal-backdrop{background:rgba(8,22,19,.46);backdrop-filter:blur(12px)}
.modal-card{border-radius:26px;background:rgba(255,255,255,.94);box-shadow:0 38px 120px rgba(0,0,0,.24);border:1px solid rgba(255,255,255,.95)}
.modal-close{border-radius:11px;background:#f0f4f3}.modal-icon{border-radius:14px}

/* user controls injected by app.js */
.ui-mode-toggle{
  width:40px;height:40px;min-height:40px;padding:0;border-radius:12px;
  display:grid;place-items:center;cursor:pointer;
  border:1px solid var(--ui-line);background:rgba(255,255,255,.76);color:var(--ui-ink);
  box-shadow:var(--ui-shadow-xs);transition:.2s var(--ui-ease)
}
.ui-mode-toggle:hover{transform:translateY(-1px);border-color:rgba(var(--accent-rgb),.24);color:var(--accent)}
.ui-mode-toggle svg{width:18px;height:18px}
.ui-mode-toggle.login-mode{position:fixed;left:18px;top:18px;z-index:90;background:rgba(255,255,255,.82);backdrop-filter:blur(18px)}
.ui-scroll-top{
  position:fixed;left:20px;bottom:20px;z-index:70;width:44px;height:44px;border:0;border-radius:14px;
  display:grid;place-items:center;background:linear-gradient(135deg,var(--accent3),var(--accent));color:#fff;
  box-shadow:0 14px 32px rgba(var(--accent-rgb),.26);cursor:pointer;opacity:0;pointer-events:none;transform:translateY(10px);
  transition:.22s var(--ui-ease)
}
.ui-scroll-top.show{opacity:1;pointer-events:auto;transform:none}.ui-scroll-top svg{width:18px;height:18px}

/* dark mode */
body.ui-dark{
  --ui-bg:#0d1515;--ui-bg-2:#101b1a;--ui-surface:rgba(20,31,30,.82);--ui-surface-strong:rgba(23,35,34,.95);--ui-surface-soft:rgba(23,35,34,.60);
  --ui-ink:#edf5f2;--ui-muted:#91a29d;--ui-line:rgba(255,255,255,.075);--ui-line-strong:rgba(255,255,255,.12);
  --ink:#edf5f2;--muted:#91a29d;--line:rgba(255,255,255,.09);--card:#14201f;--soft:rgba(var(--accent-rgb),.10);
  color:var(--ui-ink);
  background:
    radial-gradient(900px 520px at 90% -10%,rgba(var(--accent-rgb),.18),transparent 62%),
    radial-gradient(700px 500px at -10% 45%,rgba(var(--accent-rgb),.09),transparent 65%),
    linear-gradient(180deg,#0a1111 0%,#0d1716 48%,#0a1111 100%);
}
body.ui-dark:before{opacity:.08;background-image:linear-gradient(rgba(255,255,255,.10) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.10) 1px,transparent 1px)}
body.ui-dark .top,body.ui-dark .nav{background:rgba(13,22,21,.72);border-color:rgba(255,255,255,.075);box-shadow:0 15px 40px rgba(0,0,0,.20)}
body.ui-dark .nav a{color:#9fb0ab}body.ui-dark .nav a:hover{background:rgba(255,255,255,.055);color:#fff}
body.ui-dark .card{background:linear-gradient(145deg,rgba(22,34,33,.93),rgba(16,27,26,.82));border-color:rgba(255,255,255,.065);box-shadow:0 18px 55px rgba(0,0,0,.18)}
body.ui-dark .card:before{background:linear-gradient(135deg,rgba(255,255,255,.035),transparent 35%,rgba(var(--accent-rgb),.025))}
body.ui-dark .sub,body.ui-dark .muted,body.ui-dark .footnote{color:var(--ui-muted)}
body.ui-dark input,body.ui-dark select,body.ui-dark textarea{background:rgba(13,24,23,.84);border-color:rgba(255,255,255,.09);color:#edf5f2}
body.ui-dark input:focus,body.ui-dark select:focus,body.ui-dark textarea:focus{background:#101d1b;border-color:rgba(var(--accent-rgb),.48)}
body.ui-dark option{background:#13201e;color:#edf5f2}
body.ui-dark .toolbar{background:rgba(255,255,255,.025);border-color:rgba(255,255,255,.06)}
body.ui-dark .table-wrap{background:rgba(15,25,24,.62);border-color:rgba(255,255,255,.065)}
body.ui-dark th{background:rgba(18,31,29,.96);color:#b9c8c4;border-bottom-color:rgba(255,255,255,.07)}
body.ui-dark td{border-bottom-color:rgba(255,255,255,.055)}body.ui-dark tbody tr:hover{background:rgba(var(--accent-rgb),.06)}
body.ui-dark .btn{background:rgba(25,38,36,.92);border-color:rgba(255,255,255,.08);color:#e9f1ef}body.ui-dark .btn.primary{background:linear-gradient(135deg,var(--accent3),var(--accent))}
body.ui-dark .logout-btn,body.ui-dark .ui-mode-toggle{background:rgba(25,38,36,.78);color:#e9f1ef}
body.ui-dark .phase-card,body.ui-dark .score-summary>div,body.ui-dark .admin-capabilities>div,body.ui-dark .identity-panel{background:rgba(255,255,255,.028);border-color:rgba(255,255,255,.07)}
body.ui-dark .phase-card.open{background:rgba(var(--accent-rgb),.085);border-color:rgba(var(--accent-rgb),.21)}
body.ui-dark .theme-card{background:rgba(255,255,255,.035);border-color:rgba(255,255,255,.07)}
body.ui-dark .theme-option input:checked+.theme-card{background:rgba(255,255,255,.075)}
body.ui-dark .modal-card{background:rgba(18,29,28,.97);border-color:rgba(255,255,255,.08);color:#edf5f2}body.ui-dark .modal-close{background:#1b2a28;color:#d8e4e1}
body.ui-dark .login-card{background:rgba(16,26,25,.80);border-color:rgba(255,255,255,.08);box-shadow:0 35px 100px rgba(0,0,0,.34)}
body.ui-dark.login-bg{background:radial-gradient(700px 440px at 78% -8%,rgba(var(--accent-rgb),.20),transparent 62%),linear-gradient(145deg,#0a1211,#101b1a 55%,#0b1312)}
body.ui-dark .login-hero{background:rgba(var(--accent-rgb),.055);border-color:rgba(var(--accent-rgb),.12)}
body.ui-dark .note{background:rgba(var(--accent-rgb),.045);color:#aebeba}
body.ui-dark .entry .v0{background:rgba(180,35,24,.13)}body.ui-dark .entry .v1{background:rgba(168,102,0,.13)}body.ui-dark .entry .v2{background:rgba(var(--accent-rgb),.12)}
body.ui-dark .score-pill,body.ui-dark .badge,body.ui-dark .chip,body.ui-dark .status-badge{box-shadow:none}
body.ui-dark .footer{color:#7d8d89}

/* page entrance */
body.ui-ready .top,body.ui-ready .nav{animation:uiDrop .38s var(--ui-ease) both}
body.ui-ready .nav{animation-delay:.04s}
@keyframes uiDrop{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
.ui-reveal{animation-duration:.44s;animation-timing-function:var(--ui-ease)}

/* print must remain clean */
@media print{
  body,body.ui-dark{background:#fff!important;color:#111!important}
  body:before,body:after,.ambient,.ui-mode-toggle,.ui-scroll-top{display:none!important}
  .card{background:#fff!important;color:#111!important;border:1px solid #ddd!important;box-shadow:none!important;backdrop-filter:none!important}
  .card:before{display:none!important}
  th{background:#f5f5f5!important;color:#222!important}
  td{color:#222!important}
}

/* responsive */
@media(max-width:1100px){
  .wrap{padding:14px 16px 28px}.top{top:8px}.nav{top:82px}.hero-panel{min-height:210px;padding:28px}.kpi{grid-column:span 6}.admin-feature-card{position:static}
}
@media(max-width:760px){
  body{background-attachment:scroll}.wrap{padding:9px 9px 88px}.top{top:6px;border-radius:17px;padding:9px 10px}.top .brand h2{font-size:15px;max-width:52vw}.top .brand .sub{font-size:10px;max-width:52vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.top-eyebrow{font-size:8px}.top .logo{width:42px;height:42px;border-radius:13px}.top-actions{gap:6px}.top-actions .role-chip{display:none}.logout-btn{font-size:11px;padding:8px 9px;min-height:36px}.ui-mode-toggle{width:36px;height:36px;min-height:36px;border-radius:10px}
  .nav{top:67px;margin-bottom:12px;border-radius:15px;padding:5px;gap:3px}.nav a{padding:8px 10px;min-height:38px;font-size:11.5px}.nav-icon,.nav-icon svg{width:16px;height:16px}
  .grid{gap:10px}.card{border-radius:18px;padding:15px}.hero-panel{grid-template-columns:1fr;min-height:auto;padding:23px 18px;border-radius:22px}.hero-panel h1{font-size:27px}.hero-panel p{font-size:12.5px}.phase-orb{width:100%;height:auto;min-height:74px;border-radius:16px}.phase-orb div{display:flex;justify-content:space-between;align-items:center;width:100%;padding:0 18px}.phase-orb b{font-size:16px}
  .kpi{grid-column:span 6;min-height:122px;padding:15px}.kpi-icon{width:46px;height:46px;border-radius:14px}.kpi .num{font-size:28px}.span8,.span7,.span6,.span5,.span4{grid-column:span 12}.phase-cards{grid-template-columns:1fr}.student-head{align-items:flex-start;flex-direction:column}.score-summary{width:100%;display:grid;grid-template-columns:repeat(3,1fr)}.score-summary>div{min-width:0;padding:10px}.toolbar{padding:9px}.field{min-width:130px}.theme-options{grid-template-columns:1fr 1fr}.identity-panel{align-items:flex-start}.table-wrap{border-radius:14px}.ui-scroll-top{left:12px;bottom:16px;width:42px;height:42px}
}
@media(max-width:480px){
  .wrap{padding:7px 7px 90px}.top{gap:7px}.brand{gap:8px}.top .brand h2{max-width:48vw}.top .brand .sub{display:none}.logout-btn{font-size:0;width:36px;padding:0}.logout-btn:before{content:"↪";font-size:18px}.nav a{padding:8px 9px}.nav a span:not(.nav-icon){display:none}.kpi{grid-column:span 12}.hero-panel h1{font-size:24px}.score-summary{grid-template-columns:1fr 1fr}.theme-options{grid-template-columns:1fr}.identity-panel{flex-direction:column}.logo-preview{width:78px;height:78px}.section-title{align-items:flex-start;gap:10px}.section-title>.btn{flex:0 0 auto}
}
@media(prefers-reduced-motion:reduce){
  .online-dot{animation:none}.top,.nav,.ui-reveal{animation:none!important}.card,.btn,.nav a,.ui-scroll-top{transition:none!important}
}

/* ============================================================
   NUQATI FLUID COMPATIBILITY LAYER 4.0
   Responsive / no-crop / cross-browser safety layer
   ============================================================ */
:root{
  --safe-top:env(safe-area-inset-top,0px);
  --safe-right:env(safe-area-inset-right,0px);
  --safe-bottom:env(safe-area-inset-bottom,0px);
  --safe-left:env(safe-area-inset-left,0px);
}
html{
  width:100%;
  max-width:100%;
  min-height:100%;
  overflow-x:auto;
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
  scroll-padding-top:150px;
}
body{
  width:100%;
  max-width:100%;
  min-height:100vh;
  min-height:100dvh;
  overflow-x:auto!important;
  overflow-y:auto;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  -webkit-tap-highlight-color:transparent;
}
img,svg,video,canvas{max-width:100%;height:auto}
img{display:block}
button,input,select,textarea{max-width:100%}
button,.btn,.nav a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.wrap,.grid,.card,.hero-panel,.top,.nav,.toolbar,.section-title,.student-head,.identity-panel,.phase-card,.phase-admin,.admin-feature-card,.settings-grid{min-width:0;max-width:100%}
.grid>*{min-width:0}
.card,.hero-panel{contain:layout paint;contain:layout paint style}
.card{overflow:visible}
.card:before{overflow:hidden}

/* Never let content silently disappear outside a card */
.card p,.card small,.card b,.card strong,.card label,.card .sub,.card .muted,.student-head,.section-title{
  overflow-wrap:anywhere;
  word-break:normal;
}

/* Header and navigation remain usable on all viewport sizes */
.top{
  width:100%;
  padding-top:max(12px,var(--safe-top));
  padding-right:max(14px,var(--safe-right));
  padding-left:max(14px,var(--safe-left));
}
.top-actions{min-width:0;flex:0 0 auto}
.brand{min-width:0;flex:1 1 auto}
.nav{
  max-width:100%;
  overflow-x:auto;
  overflow-y:hidden;
  overscroll-behavior-x:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:none;
}
.nav::-webkit-scrollbar{display:none}
.nav a{flex:0 0 auto;white-space:nowrap}

/* Forms */
.toolbar>.field,.toolbar>form,.toolbar>.grow{min-width:0}
.field{max-width:100%}
.field input,.field select,.field textarea{width:100%}
input,select,textarea{min-height:44px}
select{padding-inline-end:34px}

/* Tables: never clipped; scroll inside their own surface */
.table-wrap{
  width:100%;
  max-width:100%;
  overflow-x:auto!important;
  overflow-y:auto;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-gutter:stable both-edges;
}
.table-wrap table{width:100%;min-width:760px;max-width:none}
th,td{white-space:normal;overflow-wrap:anywhere}
th{position:sticky;top:0}
.entry th,.entry td{text-align:center}
.entry th:first-child,.entry td:first-child{text-align:right}

/* Charts */
.research-chart{display:block;width:100%!important;max-width:100%!important;height:auto!important;min-height:250px}

/* Modal supports short landscape screens */
.modal{overflow-y:auto;overscroll-behavior:contain;padding:max(12px,var(--safe-top)) max(12px,var(--safe-right)) max(12px,var(--safe-bottom)) max(12px,var(--safe-left))}
.modal-card{max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px);overflow-y:auto}
.modal-open{overflow:hidden!important}

/* Buttons/actions wrap instead of cropping */
.report-buttons,.settings-actions,.phase-actions,.sticky-actions,.score-summary,.top-actions{flex-wrap:wrap}
.sticky-actions{max-width:100%;bottom:max(8px,var(--safe-bottom))}

/* Fallback for browsers without backdrop-filter */
@supports not ((backdrop-filter:blur(2px)) or (-webkit-backdrop-filter:blur(2px))){
  .top,.nav,.card,.login-card,.sticky-actions,.modal-card{background:rgba(255,255,255,.98)!important}
  body.ui-dark .top,body.ui-dark .nav,body.ui-dark .card,body.ui-dark .login-card,body.ui-dark .sticky-actions,body.ui-dark .modal-card{background:#14201f!important}
}

/* Fallback for browsers without CSS grid */
@supports not (display:grid){
  .grid,.kpi-grid,.phase-cards,.score-summary,.theme-options,.class-checks,.admin-capabilities{display:flex;flex-wrap:wrap}
  .grid>*{width:100%}
  .kpi-grid>.kpi{width:calc(50% - 8px)}
}

/* Medium screens/tablets */
@media (max-width:1024px){
  .wrap{width:100%;padding-right:16px;padding-left:16px}
  .top{align-items:flex-start}
  .hero-panel{grid-template-columns:minmax(0,1fr) minmax(120px,170px)}
  .toolbar>.field{flex:1 1 180px}
  .settings-grid>.span7,.settings-grid>.span5{grid-column:span 12}
  .admin-feature-card{position:static!important}
}

/* Phone / narrow tablet */
@media (max-width:760px){
  html{scroll-padding-top:120px}
  body{font-size:14px}
  .wrap{
    width:100%;
    padding-top:8px;
    padding-right:max(8px,var(--safe-right));
    padding-bottom:max(84px,calc(72px + var(--safe-bottom)));
    padding-left:max(8px,var(--safe-left));
  }
  .top{position:sticky;top:0;align-items:center;gap:8px}
  .top .brand h2{max-width:none;white-space:normal;line-height:1.25}
  .top .brand .sub{max-width:58vw}
  .nav{position:sticky;top:68px;padding:5px;margin-inline:0}
  .nav a{min-height:42px;padding:9px 11px}
  .grid{grid-template-columns:1fr!important;gap:10px}
  .grid>[class*="span"],.span12,.span8,.span7,.span6,.span5,.span4,.kpi{grid-column:1!important;width:100%}
  .kpi{min-height:auto}
  .kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .kpi-grid>.kpi{grid-column:auto!important}
  .hero-panel{grid-template-columns:1fr!important;padding:20px 16px}
  .phase-orb{width:100%;height:auto;min-height:72px}
  .toolbar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:end}
  .toolbar>.field,.toolbar>.btn,.toolbar>button,.toolbar>a{min-width:0;width:100%}
  .field{min-width:0!important;width:100%}
  .student-head{display:grid;grid-template-columns:1fr;gap:12px}
  .score-summary{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}
  .score-summary>div{min-width:0!important}
  .section-title{align-items:flex-start;flex-wrap:wrap}
  .phase-card{flex-direction:column}
  .identity-panel{display:grid;grid-template-columns:auto minmax(0,1fr)}
  .theme-options{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .class-checks{grid-template-columns:repeat(2,minmax(0,1fr))}
  .report-buttons>*{flex:1 1 140px;text-align:center}
  .table-wrap{margin-inline:0;border-radius:14px}
  .table-wrap table{min-width:680px}
  .ui-scroll-top{bottom:max(14px,var(--safe-bottom))}
}

/* Very small phones */
@media (max-width:480px){
  .top{padding:8px;gap:6px}
  .top .brand{gap:7px}
  .top .brand h2{font-size:14px;line-height:1.2}
  .top .brand .sub{display:none}
  .top .logo{width:40px;height:40px;flex:0 0 40px}
  .nav{top:58px}
  .nav a span:not(.nav-icon){display:inline!important}
  .nav a{font-size:11px;padding:8px 9px}
  .kpi-grid{grid-template-columns:1fr!important}
  .hero-panel h1{font-size:clamp(22px,8vw,28px)}
  .toolbar{grid-template-columns:1fr}
  .score-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
  .theme-options,.class-checks{grid-template-columns:1fr!important}
  .identity-panel{grid-template-columns:1fr}
  .logo-preview{margin-inline:auto}
  .btn{max-width:100%}
  .modal-card{width:100%;padding:20px 16px;border-radius:20px}
  .table-wrap table{min-width:640px}
}

/* Landscape phones: preserve content height and navigation access */
@media (max-height:520px) and (orientation:landscape){
  .top{position:relative;top:auto}
  .nav{position:relative;top:auto}
  .hero-panel{min-height:0}
  .phase-orb{min-height:58px}
  .modal{align-items:flex-start}
}

/* Accessibility and motion */
:focus-visible{outline:3px solid rgba(var(--accent-rgb),.28);outline-offset:2px}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
}

/* Print remains stable and uncropped */
@media print{
  html,body{overflow:visible!important;width:auto!important;max-width:none!important}
  .wrap{max-width:none!important;width:100%!important;padding:0!important}
  .table-wrap{overflow:visible!important;border:0!important}
  .table-wrap table{min-width:0!important;width:100%!important;font-size:10px}
  th,td{font-size:10px!important;padding:6px!important}
  .top,.nav,.ui-scroll-top,.ui-mode-toggle{display:none!important}
}
