:root{--navy:#061b39;--navy2:#0b315b;--blue:#0878f8;--line:#dfe9f7;--text:#0c2042;--muted:#647693;--bg:#eef5ff;--white:#fff;--green:#07a969;--amber:#c98700}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 system-ui,-apple-system,Segoe UI,Arial,sans-serif}
a{color:inherit;text-decoration:none}a:focus-visible{outline:3px solid #66b7ff;outline-offset:3px}
.shell{display:flex;min-height:100vh}
.sidebar{width:255px;flex:0 0 255px;padding:28px 16px 22px;color:#fff;background:linear-gradient(165deg,#03172f,#0a2b50 77%,#041a35);display:flex;flex-direction:column;gap:31px}
.brand{display:flex;align-items:center;gap:11px;padding:0 8px}
.brand-title{font-weight:850;font-size:27px;line-height:1.1;letter-spacing:-.5px;white-space:nowrap}.brand-title strong{color:#3ea9ff}
.brand-subtitle{font-size:10.5px;color:#c5d9ef;margin-top:6px;white-space:nowrap}
.bars{display:flex;gap:4px;align-items:flex-end;height:34px}.bars i{display:block;width:7px;background:#23db94;border-radius:3px 3px 0 0}.bars i:first-child{height:14px}.bars i:nth-child(2){height:23px}.bars i:nth-child(3){height:33px}
.sidebar nav{display:grid;gap:4px}.nav-item{display:flex;align-items:center;gap:14px;border-radius:11px;padding:12px 14px;color:#dceafd;font-weight:620}.nav-item:hover:not(.disabled){background:#173b65}.nav-item.current{background:var(--blue);box-shadow:0 6px 20px #00183255;color:#fff}.nav-item span:first-child{font-size:19px;line-height:1;width:22px;text-align:center}.nav-item.disabled{opacity:.52;cursor:not-allowed}.nav-heading{color:#8ca7c5;font-size:11px;text-transform:uppercase;font-weight:750;letter-spacing:1px;margin:26px 13px 1px}.sidebar-note{margin-top:auto;border:1px solid #355779;border-radius:13px;background:#ffffff0b;color:#c9d9ec;padding:14px;font-size:12px}.sidebar-note strong{color:#fff;line-height:2}
.main{flex:1;min-width:0;max-width:1500px;padding:22px 31px 35px;margin:0 auto;width:100%}
.topbar{display:flex;justify-content:space-between;align-items:center;color:#8493a9;font-weight:800;letter-spacing:.5px;font-size:11px;padding:3px 3px 20px}.topright{display:flex;align-items:center;gap:8px;font-weight:650;letter-spacing:0}.status-dot{height:8px;width:8px;display:inline-block;border-radius:50%;background:#f4aa28;box-shadow:0 0 0 4px #fff2d9}
.hero{display:flex;justify-content:space-between;gap:12px;min-height:223px;padding:31px 34px;border:1px solid #d7e9ff;background:linear-gradient(110deg,#e6f2ff 0,#e4f0ff 65%,#cfe5ff 100%);border-radius:20px;box-shadow:0 8px 28px #275c970a;overflow:hidden}.eyebrow{display:inline-block;font-weight:800;color:#1474ca;font-size:11px;letter-spacing:1.6px;margin-bottom:13px}.hero h1{font-size:clamp(25px,2.7vw,39px);line-height:1.2;letter-spacing:-1.4px;margin:0 0 12px;font-weight:850;color:#072551}.hero p{color:#4b6585;margin:0;max-width:610px;line-height:1.6;font-size:14px}.domain{display:inline-block;margin-top:22px;padding:8px 14px;border-radius:99px;background:#fff;color:#0d6bd5;border:1px solid #d3e5fb;font-weight:800;font-size:12px}.hero-symbol{position:relative;flex:0 0 160px;display:grid;place-items:center}.hero-symbol span{display:grid;place-items:center;width:140px;height:140px;border:10px solid #d8ecff;box-shadow:inset 0 0 0 1px #8dbcf4,0 12px 25px #1f5bad22;border-radius:38px;background:#fff;color:#0676fa;font-size:86px;font-weight:900}.spark{position:absolute;border-radius:50%;background:#1bc78c}.spark.one{width:18px;height:18px;top:12px;right:7px}.spark.two{width:10px;height:10px;bottom:12px;left:3px;background:#62abff}
.summary{margin-top:19px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}.metric{background:#fff;border:1px solid var(--line);border-radius:17px;padding:19px 18px 18px;min-width:0;box-shadow:0 5px 20px #1d5da10a;position:relative;overflow:hidden}.metric::before{content:'';position:absolute;top:0;left:0;right:0;height:4px;background:var(--blue)}.metric:nth-child(2)::before{background:#21c98c}.metric:nth-child(3)::before{background:#ecb45b}.metric:nth-child(4)::before{background:#8baaff}.metric-label{font-size:12px;color:#687e99;font-weight:750}.metric-main{font-size:27px;font-weight:850;letter-spacing:-.8px;margin:9px 0 5px}.metric-sub{font-size:11px;color:#798ba4}
.content-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:17px;margin-top:18px}.panel{background:#fff;border:1px solid #dce7f6;border-radius:18px;padding:25px 23px;box-shadow:0 5px 22px #1d5da108}.panel-heading{display:flex;align-items:center;gap:12px;margin-bottom:18px}.panel-heading h2{margin:0;font-size:18px;letter-spacing:-.3px}.panel-heading p{margin:3px 0 0;color:#7589a1;font-size:12px}.panel-icon{background:#e5f9ef;color:#049c63;display:grid;place-items:center;flex:0 0 42px;height:42px;border-radius:11px;font-size:22px;font-weight:800}.panel-icon.blue{background:#e9f3ff;color:#1678e9}.checkrow{display:flex;align-items:center;gap:11px;padding:12px 2px;border-bottom:1px solid #edf2f8;color:#3f5673}.checkrow:last-child{border-bottom:0}.check{display:grid;place-items:center;flex:0 0 22px;height:22px;border-radius:50%;font-weight:800;font-size:13px}.ok{background:#e2f8ee;color:#04a062}.pending{background:#fff4dc;color:#aa7716}.milestones{counter-reset:steps;list-style:none;padding:0;margin:0}.milestones li{counter-increment:steps;display:flex;align-items:center;gap:11px;color:#3b5578;padding:10px 0}.milestones li::before{content:counter(steps);display:grid;place-items:center;flex:0 0 26px;height:26px;border-radius:9px;background:#e8f3ff;color:#126cdb;font-weight:850}
.privacy{display:flex;align-items:flex-start;gap:14px;border:1px solid #d5e8fa;background:#f6fbff;border-radius:15px;padding:18px 20px;margin-top:19px}.privacy-icon{font-size:23px;line-height:1}.privacy strong{color:#235378}.privacy p{color:#70849e;margin:4px 0 0;font-size:12px;line-height:1.6}footer{color:#8a9bb0;margin-top:22px;font-size:12px}
@media(max-width:1120px){.summary{grid-template-columns:repeat(2,minmax(0,1fr))}.content-grid{grid-template-columns:1fr}.hero-symbol{flex-basis:120px}.hero-symbol span{width:112px;height:112px;font-size:68px}}
@media(max-width:720px){.shell{display:block}.sidebar{width:auto;gap:10px;padding:14px}.brand-title{font-size:21px}.brand-subtitle{font-size:10px}.sidebar nav{display:flex;overflow-x:auto;gap:6px;margin-top:8px}.nav-item{white-space:nowrap;font-size:12px;padding:9px 11px}.nav-heading,.nav-item.disabled,.sidebar-note{display:none}.main{padding:15px}.topbar{padding:7px 2px 13px}.hero{padding:22px;min-height:0}.hero-symbol{display:none}.hero h1{font-size:27px}.summary{gap:9px}.metric{padding:15px}.metric-main{font-size:23px}.metric-sub{font-size:10px}.panel{padding:19px}.content-grid{gap:12px}}
@media(max-width:390px){.hero h1{font-size:24px}.summary{grid-template-columns:1fr 1fr}.metric-main{font-size:20px}.metric-label{font-size:11px}}
/* EduStat 7 v0.2 — secure admin sign-in and read-only MySQL dashboard */
.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(135deg,#e8f4ff,#f6f9ff)}
.auth-card{background:white;border:1px solid #dce7f5;border-radius:24px;box-shadow:0 20px 55px #0f366118;padding:36px;width:min(100%,440px)}
.auth-brand{font-size:27px;color:#061b39;font-weight:850}.auth-brand strong{color:#0878f8}
.auth-kicker{color:#3988cf;font-size:11px;letter-spacing:1.5px;font-weight:800;margin-top:12px}
.auth-card h1{font-size:28px;color:#08264d;margin:13px 0 8px}.auth-card p{font-size:13px;color:#67829e;margin:0 0 20px}
.auth-card label{display:block;font-weight:700;margin:14px 0 7px;color:#1b385b}.auth-card input:not([type=hidden]){display:block;width:100%;padding:13px 12px;border:1px solid #cadced;border-radius:11px;font:inherit}
.auth-card button{display:block;width:100%;border:0;border-radius:10px;padding:14px;background:#0878f8;color:#fff;font-weight:800;cursor:pointer;margin-top:21px}
.auth-card button:hover{background:#0066dc}.auth-return{display:inline-block;margin-top:19px;color:#277acb}
.auth-error{padding:13px 15px;border:1px solid #ffcfcd;border-radius:12px;background:#fff2f2;color:#ad2f2b;font-size:13px;margin:16px 0}
.logout-btn{border:1px solid #ccdff2;background:white;color:#125a9d;padding:7px 14px;border-radius:10px;cursor:pointer;font:inherit;font-weight:700}
.data-panel{margin-top:18px}.table-scroll{overflow:auto}.data-table{width:100%;border-collapse:collapse;white-space:nowrap}.data-table th,.data-table td{padding:12px 10px;text-align:left;border-bottom:1px solid #e5eff8}.data-table th{background:#eef6ff;color:#1e5b96;font-size:12px}.data-foot{font-size:12px;color:#637c97;margin:16px 0 0}.server-alert{margin-top:18px}
/* EduStat 7 v0.3 — multi-page, strictly read-only private STAGING dashboard */
.admin-hero{min-height:188px;padding:26px 31px}.admin-hero h1{font-size:clamp(23px,2.5vw,32px)}.admin-hero .domain{margin-top:15px}
.sidebar .nav-heading{margin:12px 12px 3px}.sidebar nav{gap:2px}
.sidebar .nav-item{padding:10px 12px;font-size:13px}
.sidebar .sidebar-note{margin-top:auto}
.secondary-table{margin-top:24px}.secondary-table h3{font-size:16px;margin:0 0 10px}
.filter-bar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;background:#f5f9ff;border:1px solid #deebf9;border-radius:12px;padding:12px;margin:8px 0 17px}
.filter-bar label{font-weight:750;color:#325a81}.filter-bar select{flex:1 1 180px;min-width:0;max-width:340px;border:1px solid #c9dff5;border-radius:9px;background:#fff;color:#12385e;padding:10px;font:inherit}
.filter-bar button{border:0;border-radius:10px;background:#0878f8;color:#fff;padding:10px 17px;font:inherit;font-weight:800;cursor:pointer}
.filter-bar button:focus-visible,.logout-btn:focus-visible{outline:3px solid #8bbfff;outline-offset:2px}
.empty-row{color:#647693;text-align:center!important;padding:25px 10px!important}.data-table td{vertical-align:top;white-space:normal;min-width:65px;max-width:280px;overflow-wrap:anywhere}
.data-panel{margin-bottom:4px}.data-table th{white-space:nowrap}.data-table th:first-child,.data-table td:first-child{font-weight:650}
@media(max-width:720px){.sidebar .nav-heading{display:none}.sidebar nav{overflow-x:auto;display:flex;flex-wrap:nowrap;align-items:center}.sidebar .nav-item{padding:8px 11px;font-size:12px}.admin-hero{padding:21px}.filter-bar{gap:8px}.filter-bar select{flex:1 1 130px}.data-panel{padding:16px}}
