:root{--primary:#173b6c;--primary-dark:#102b52;--primary-soft:#eaf1fb;--success:#16a34a;--danger:#dc2626;--sidebar-width:260px;--border:#e5eaf1;--text:#1f2937;--muted:#64748b;--surface:#fff;--bg:#f3f6fa}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Tahoma,Arial,sans-serif;background:var(--bg);color:var(--text)}a{color:var(--primary)}button,input,select,textarea{font:inherit}.app-shell{min-height:100vh}.sidebar{position:fixed;right:0;top:0;bottom:0;width:var(--sidebar-width);background:var(--surface);border-left:1px solid var(--border);z-index:30;display:flex;flex-direction:column;box-shadow:-4px 0 22px #0f172a0a}.brand{padding:21px 18px;display:flex;align-items:center;gap:11px;border-bottom:1px solid var(--border)}.brand-mark{width:42px;height:42px;border-radius:12px;background:var(--primary);color:#fff;display:grid;place-items:center;font-weight:700;font-size:22px}.brand strong{display:block;color:var(--primary);font-size:15px}.brand small,.user-panel small{display:block;color:var(--muted);margin-top:4px}.user-panel{padding:17px 18px;display:flex;gap:11px;align-items:center;border-bottom:1px solid var(--border)}.avatar{width:42px;height:42px;border-radius:50%;background:var(--primary-soft);color:var(--primary);display:grid;place-items:center;font-weight:700;font-size:18px}.side-nav{padding:14px 10px;display:flex;flex-direction:column;gap:5px}.side-nav a{display:flex;align-items:center;gap:11px;text-decoration:none;color:#334155;padding:12px 13px;border-radius:9px;font-weight:700;font-size:14px}.side-nav a span{width:22px;text-align:center;font-size:18px}.side-nav a:hover{background:var(--primary-soft);color:var(--primary)}.side-nav a.active{background:var(--primary);color:#fff}.theme-box{margin-top:auto;padding:15px 18px;border-top:1px solid var(--border)}.theme-box label{font-size:13px;margin:0 0 8px}.theme-row{display:flex;gap:8px}.theme-row input[type=color]{height:38px;padding:3px;cursor:pointer}.icon-button{width:42px;padding:0}.logout-link{margin:0 10px 14px;padding:12px 13px;text-decoration:none;color:var(--danger);font-weight:700;border-radius:9px}.logout-link:hover{background:#fef2f2}.workspace{margin-right:var(--sidebar-width);min-height:100vh}.topbar{height:78px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:20}.topbar h2{font-size:18px;margin:0;color:var(--primary)}.topbar p{font-size:12px;color:var(--muted);margin:5px 0 0}.top-actions{display:flex;align-items:center;gap:14px}.top-actions a{font-size:22px;text-decoration:none}.welcome{font-size:13px;color:var(--muted)}.menu-button{display:none;width:42px;height:42px;padding:0}.content-area{max-width:1500px;margin:0 auto;padding:24px}.card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:20px;box-shadow:0 4px 18px #0f172a08;margin-bottom:18px}.narrow{max-width:520px;margin-inline:auto}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px}.stat{background:var(--surface);border:1px solid var(--border);border-right:5px solid var(--primary);padding:18px;border-radius:12px}.stat b{font-size:30px;display:block;color:var(--primary);margin-top:6px}h1,h2,h3{color:var(--primary)}h1{font-size:23px;margin-top:0}.section-title{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.section-title h1{margin-bottom:5px}.section-title p{color:var(--muted);margin-top:0}.btn,button,.button{background:var(--primary);color:#fff;border:0;border-radius:8px;padding:11px 16px;cursor:pointer;text-decoration:none;display:inline-block;font-weight:bold}.btn:hover,button:hover,.button:hover{background:var(--primary-dark)}input,select,textarea{width:100%;padding:11px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent)}label{display:block;margin:10px 0 5px;font-weight:bold}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px}.check{display:flex;align-items:end}.check input{width:auto;margin-left:7px}table{width:100%;border-collapse:collapse;background:#fff}th,td{padding:12px 10px;border-bottom:1px solid var(--border);text-align:right;white-space:nowrap}th{background:#f8fafc;color:#475569;font-size:13px}tbody tr:hover{background:#fbfdff}.alert{padding:12px 14px;background:#dcfce7;border:1px solid #86efac;border-radius:9px;margin-bottom:14px}.alert.error{background:#fee2e2;border-color:#fca5a5}.login-wrap{min-height:95vh;display:grid;place-items:center;padding:20px}.login{max-width:450px;width:100%}.login h1{text-align:center}footer{text-align:center;color:var(--muted);padding:25px}.table-wrap{overflow:auto}.search-row{display:flex;gap:10px;align-items:end;margin-bottom:15px}.search-row input{flex:1}.inline{display:inline}.button.secondary{background:#64748b}.button.secondary:hover{background:#475569}.toggle-form{vertical-align:middle}.switch{position:relative;width:49px;height:25px;padding:0;border-radius:999px;background:#9ca3af;display:inline-block;vertical-align:middle;box-shadow:none}.switch span{position:absolute;top:3px;right:3px;width:19px;height:19px;border-radius:50%;background:#fff;transition:.2s;box-shadow:0 1px 3px #0004}.switch.on{background:var(--success)}.switch.on span{right:27px}.switch.off{background:#9ca3af}.switch:hover{filter:brightness(.96);background:inherit}.status-badge{display:inline-block;padding:4px 9px;border-radius:999px;font-size:12px;font-weight:bold}.status-badge.active{background:#dcfce7;color:#166534}.status-badge.frozen{background:#fee2e2;color:#991b1b}.actions{display:flex;align-items:center;gap:12px}.table-link{font-weight:700;text-decoration:none}.sidebar-overlay{display:none}
@media(max-width:900px){.sidebar{transform:translateX(105%);transition:.25s}.sidebar.open{transform:translateX(0)}.workspace{margin-right:0}.menu-button{display:inline-grid;place-items:center}.sidebar-overlay{position:fixed;inset:0;background:#0f172a66;z-index:25}.sidebar-overlay.show{display:block}.welcome{display:none}.content-area{padding:16px}.topbar{padding:0 14px}.form-grid{grid-template-columns:1fr 1fr}}
@media(max-width:650px){table{display:block;overflow:auto}.form-grid{grid-template-columns:1fr}.search-row{flex-wrap:wrap}.search-row input{flex-basis:100%}.topbar h2{font-size:16px}.content-area{padding:12px}.card{padding:15px}.theme-box{padding-bottom:10px}}

/* V16.4 Login identity and university context */
.brand-logo{width:46px;height:46px;flex:0 0 46px}.sidebar-university{display:block;margin-top:6px;color:var(--primary);font-size:12px;font-weight:700;line-height:1.5}.dashboard-welcome{display:flex;align-items:center;justify-content:space-between;gap:20px;background:linear-gradient(135deg,var(--surface),var(--primary-soft))}.dashboard-welcome img{width:96px;height:96px}.dashboard-welcome .eyebrow{display:inline-block;color:var(--primary);font-weight:700;font-size:12px;margin-bottom:7px}.dashboard-welcome h1{margin-bottom:8px}.dashboard-welcome p{margin:0;color:var(--muted)}.university-heading strong{color:var(--primary);font-size:17px}
.login-page{background:#eef4fb;overflow-x:hidden}.login-screen{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(390px,.75fr);direction:ltr}.login-visual{position:relative;display:flex;align-items:center;justify-content:center;padding:56px;overflow:hidden;background:linear-gradient(135deg,var(--primary-dark),var(--primary) 58%,#2d6fbb);color:#fff}.login-visual:before,.login-visual:after{content:"";position:absolute;border-radius:50%;background:#fff1}.login-visual:before{width:430px;height:430px;left:-180px;top:-170px}.login-visual:after{width:360px;height:360px;right:-150px;bottom:-160px}.login-visual-inner{position:relative;z-index:1;max-width:850px;width:100%;direction:rtl}.login-brand{display:flex;align-items:center;gap:20px}.login-brand>img{width:100px;height:100px;filter:drop-shadow(0 12px 24px #0003)}.login-brand h1{margin:0;color:#fff;font-size:clamp(28px,3.2vw,48px);line-height:1.35}.login-brand p{max-width:650px;margin:10px 0 0;color:#e7f0ff;font-size:17px;line-height:1.9}.login-illustration{display:block;width:min(760px,94%);margin:22px auto 0;filter:drop-shadow(0 22px 34px #071b3460)}.login-features{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:2px}.login-features span{background:#ffffff18;border:1px solid #ffffff30;padding:9px 16px;border-radius:999px;font-size:13px}.login-panel{display:flex;align-items:center;justify-content:center;padding:40px;background:#f8fafc;direction:rtl}.login-card{width:100%;max-width:470px;background:#fff;border:1px solid var(--border);border-radius:22px;padding:38px;box-shadow:0 24px 70px #0f172a16}.login-card-logo{display:none;text-align:center}.login-card-logo img{width:82px;height:82px}.login-card h2{font-size:26px;margin:0 0 8px;text-align:center}.login-subtitle{text-align:center;color:var(--muted);margin:0 0 25px}.login-card label{font-size:14px;margin-top:16px}.input-icon{display:flex;align-items:stretch;border:1px solid #cbd5e1;border-radius:10px;background:#fff;overflow:hidden;transition:.2s}.input-icon:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent)}.input-icon span{width:48px;display:grid;place-items:center;background:#f8fafc;color:var(--primary);border-left:1px solid #e2e8f0;font-size:19px}.input-icon input{border:0;border-radius:0;box-shadow:none!important;padding:13px}.login-button{width:100%;margin-top:24px;padding:14px;font-size:16px}.login-note{text-align:center;margin-top:24px;color:var(--muted);font-size:12px;padding-top:18px;border-top:1px solid var(--border)}
@media(max-width:1050px){.login-screen{grid-template-columns:1fr 440px}.login-visual{padding:40px 26px}.login-brand h1{font-size:31px}.login-brand p{font-size:15px}.login-brand>img{width:82px;height:82px}}
@media(max-width:820px){.login-screen{display:block}.login-visual{min-height:260px;padding:30px 22px}.login-brand{justify-content:center;text-align:center;flex-direction:column;gap:7px}.login-brand>img{width:76px;height:76px}.login-brand h1{font-size:25px}.login-brand p{font-size:14px;line-height:1.7}.login-illustration{display:none}.login-features{margin-top:18px}.login-panel{padding:22px;margin-top:-12px;position:relative;z-index:3}.login-card{max-width:560px}.login-card-logo{display:none}}
@media(max-width:520px){.login-visual{min-height:235px}.login-brand p{display:none}.login-features span:nth-child(n+3){display:none}.login-panel{padding:14px}.login-card{padding:25px 19px;border-radius:18px}.login-card h2{font-size:22px}.dashboard-welcome img{width:68px;height:68px}}

/* V17 Phase 2 fixed academic identity */
:root{--primary:#173b6c;--primary-dark:#0d294d;--primary-soft:#edf3fb;--gold:#d6a84a}
.theme-box{display:none!important}.nav-caption{padding:16px 13px 6px;color:#94a3b8;font-size:11px;font-weight:700}.brand-logo{object-fit:contain}.logo-preview{width:110px;height:110px;border:1px solid var(--border);border-radius:14px;display:grid;place-items:center;background:#f8fafc;margin:8px 0 12px}.logo-preview img{max-width:92px;max-height:92px}.help-text{display:block;color:var(--muted);margin:8px 0 15px}.login-visual{background:linear-gradient(145deg,#0c2547,#173b6c 58%,#245b98)}.login-visual-inner{max-width:760px}.login-brand{justify-content:center;text-align:center;flex-direction:column}.login-brand>img{width:150px;height:150px}.login-brand p{max-width:690px}.login-feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:34px}.login-feature-grid div{min-height:112px;border:1px solid #ffffff30;background:#ffffff0d;border-radius:14px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:10px}.login-feature-grid b{font-size:30px;color:#f2c76f}.login-feature-grid span{font-size:14px;font-weight:700}.login-motto{text-align:center;margin:30px 0 0;color:#e6eef9;font-size:15px}.login-card{border-top:4px solid var(--gold)}.login-button{background:linear-gradient(90deg,var(--primary-dark),var(--primary))}.stat{border-right-color:var(--gold)}
@media(max-width:820px){.login-feature-grid{grid-template-columns:repeat(3,1fr);margin-top:18px}.login-feature-grid div{min-height:80px}.login-feature-grid b{font-size:23px}.login-feature-grid span{font-size:11px}.login-motto{display:none}}
@media(max-width:520px){.login-feature-grid{grid-template-columns:repeat(2,1fr)}.login-feature-grid div:nth-child(n+5){display:none}}
/* 1.0 Alpha 3: compact login and phase 3 */
.login-screen{min-height:100dvh;max-height:100dvh;overflow:hidden;grid-template-columns:minmax(0,1.05fr) minmax(360px,.75fr)}
.login-visual{padding:28px 42px}.login-visual-inner{max-width:680px}.login-brand>img{width:105px;height:105px}.login-brand h1{font-size:clamp(27px,2.5vw,42px)}.login-brand p{font-size:15px;line-height:1.65}.login-feature-grid{margin-top:22px;gap:10px}.login-feature-grid div{min-height:86px}.login-feature-grid b{font-size:24px}.login-motto{margin-top:18px}.login-panel{padding:26px}.login-card{max-width:420px;padding:28px}.login-card h2{font-size:23px}.login-card-logo{display:block}.login-card-logo img{width:72px;height:72px}.login-note{margin-top:16px;padding-top:14px}
.public-form-page{background:linear-gradient(135deg,#eef4fb,#fff);min-height:100vh;padding:30px}.public-form-card{max-width:900px;margin:auto;background:#fff;border-radius:20px;padding:28px;border:1px solid var(--border);box-shadow:0 20px 60px #173b6c1a}.public-form-card>img{width:90px;height:90px;display:block;margin:auto}.public-form-card h1,.public-form-card>p{text-align:center}.span-2{grid-column:span 2}.academic-profile-form{display:grid;grid-template-columns:160px repeat(4,auto) 120px minmax(160px,1fr) auto;align-items:center;gap:8px}.academic-profile-form label{margin:0;font-size:12px;white-space:nowrap}.academic-profile-form label input{width:auto}.academic-profile-form select,.academic-profile-form input{padding:7px;font-size:12px}.academic-profile-form button{padding:8px 12px}
@media(max-height:760px) and (min-width:821px){.login-brand>img{width:82px;height:82px}.login-feature-grid div{min-height:70px}.login-motto{display:none}.login-card{padding:22px}.login-card-logo img{width:58px;height:58px}.login-card label{margin-top:10px}.login-button{margin-top:16px}}
@media(max-width:820px){.login-screen{max-height:none;overflow:auto}.span-2{grid-column:auto}.academic-profile-form{grid-template-columns:1fr 1fr}}

.public-form-wide{max-width:1100px;margin:24px auto;padding:0 16px}.public-notice{background:#fff7e2;border:1px solid #e4bd57;color:#6f4d00;padding:12px 16px;border-radius:10px;margin-bottom:12px}.public-form-card.wide{max-width:none}.form-section{background:#fff;border:1px solid #dfe6ea;border-radius:14px;padding:18px;margin:14px 0;box-shadow:0 8px 24px rgba(17,49,84,.06)}.form-section h2{font-size:18px;color:#173b6c;margin:0 0 14px}.copy-field{display:flex;gap:6px;min-width:360px}.copy-field input{min-width:280px}.copy-field button{white-space:nowrap}.qr-dialog{border:0;border-radius:18px;padding:24px;text-align:center;box-shadow:0 24px 80px rgba(0,0,0,.25)}.qr-dialog::backdrop{background:rgba(8,28,55,.65)}.qr-dialog img{width:180px;height:180px}.dialog-close{position:absolute;left:12px;top:8px;border:0;background:transparent;color:#173b6c;font-size:28px}.button.small{padding:7px 10px;font-size:12px}.button.danger{background:#b42318;color:#fff}.actions{flex-wrap:wrap}@media(max-width:700px){.copy-field{min-width:250px}.copy-field input{min-width:160px}.public-form-wide{padding:0 8px}.form-section{padding:12px}}
