:root{--blue:#155ab7;--navy:#103b77;--navy2:#0c2f61;--ink:#17243a;--muted:#68778b;--line:#e3e9f2;--bg:#f3f6fb;--white:#fff;--green:#138a5b;--red:#c83939;--amber:#b97708;--shadow:0 12px 36px rgba(25,65,120,.09)}*{box-sizing:border-box}html{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}body{margin:0;min-height:100vh}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}img{max-width:100%}.muted{color:var(--muted)}.eyebrow{font-size:.7rem;font-weight:800;letter-spacing:.2em;color:#a9c9f5}.brand-mark{display:grid;place-items:center;width:58px;height:58px;border-radius:17px;background:#fff;color:var(--blue);font-weight:900;font-size:1.2rem;box-shadow:var(--shadow)}.brand-mark.small{width:42px;height:42px;border-radius:12px;font-size:.95rem}.auth-page{background:linear-gradient(145deg,#0c3268,#1e70ce);display:grid;place-items:center;padding:24px}.auth-shell,.install-shell{width:min(980px,100%);display:grid;grid-template-columns:1.05fr .95fr;background:#fff;border-radius:28px;overflow:hidden;box-shadow:0 30px 80px rgba(4,23,51,.28)}.install-shell{width:min(1100px,100%)}.auth-visual,.install-intro{padding:64px;background:radial-gradient(circle at 80% 10%,rgba(78,145,230,.45),transparent 35%),linear-gradient(150deg,var(--navy2),#17549d);color:#fff}.auth-visual h1,.install-intro h1{font-size:2.65rem;line-height:1.05;margin:24px 0 16px}.auth-visual>p:not(.eyebrow),.install-intro>p:not(.eyebrow){line-height:1.75;color:#d4e6ff}.security-note{margin-top:42px;padding:15px;border-radius:14px;background:rgba(255,255,255,.1);font-size:.82rem}.install-intro ul{line-height:2;color:#d4e6ff;padding-left:20px}.auth-card{padding:60px 52px;background:#fff}.install-card{padding:42px}.auth-card h2{font-size:1.8rem;margin:0 0 8px}.auth-footer{text-align:center;color:#9aa5b3;font-size:.72rem;margin-top:32px}.stack-form,.form-grid{display:grid;gap:17px;margin-top:28px}.form-grid.two-col{grid-template-columns:1fr 1fr}.span-2{grid-column:1/-1}.stack-form label,.form-grid label,.field{font-size:.78rem;font-weight:700;color:#506075}.stack-form input,.stack-form select,.form-grid input,.field input,.field select,.field textarea,.filter-form input,.filter-form select{display:block;width:100%;margin-top:7px;padding:12px 13px;border:1px solid #d9e1ec;border-radius:11px;background:#fff;color:var(--ink);outline:none;transition:.18s}.stack-form input:focus,.stack-form select:focus,.form-grid input:focus,.field input:focus,.field select:focus,.field textarea:focus,.filter-form input:focus,.filter-form select:focus{border-color:#2e72cc;box-shadow:0 0 0 3px rgba(46,114,204,.12)}.field textarea{min-height:92px;resize:vertical}.section-label{padding-top:5px;border-top:1px solid var(--line);font-size:.72rem;font-weight:900;letter-spacing:.13em;color:var(--blue)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:0;border-radius:11px;padding:11px 16px;font-weight:750;font-size:.83rem;transition:.18s}.btn:hover{transform:translateY(-1px)}.btn-primary{background:var(--blue);color:#fff;box-shadow:0 8px 18px rgba(21,90,183,.2)}.btn-light{background:#fff;border:1px solid var(--line);color:#506075}.btn-soft{background:#eaf2fc;color:#1459ae}.btn-danger{background:#c83e3e;color:#fff}.btn-sm{padding:8px 11px;font-size:.74rem}.alert{padding:13px 15px;border-radius:12px;margin:14px 0;font-size:.84rem;font-weight:600}.alert-success{background:#e9f8f1;color:#0c754d;border:1px solid #c7ecdc}.alert-error{background:#fff0f0;color:#ad2d2d;border:1px solid #f1cece}.alert-info{background:#eef5ff;color:#17539b;border:1px solid #d7e7fd}.sidebar{position:fixed;z-index:40;inset:0 auto 0 0;width:260px;display:flex;flex-direction:column;background:linear-gradient(180deg,var(--navy),var(--navy2));color:#fff}.sidebar-brand{height:78px;display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid rgba(255,255,255,.1)}.sidebar-brand strong,.sidebar-brand span{display:block}.sidebar-brand span{font-size:.7rem;color:#afc9ec;margin-top:3px}.sidebar-nav{flex:1;padding:20px 14px;overflow-y:auto}.sidebar-nav a{display:flex;align-items:center;gap:12px;padding:11px 13px;margin-bottom:4px;border-radius:11px;font-size:.83rem;color:#d6e6fa}.sidebar-nav a:hover{background:rgba(255,255,255,.09)}.sidebar-nav a.active{background:#fff;color:#144d94;font-weight:750;box-shadow:0 7px 20px rgba(0,0,0,.12)}.sidebar-nav a span{font-size:1rem}.sidebar-nav p{margin:23px 12px 9px;color:#88addd;font-size:.62rem;font-weight:850;letter-spacing:.16em}.sidebar-user{margin:14px;padding:11px;display:flex;align-items:center;gap:10px;border-radius:12px;background:rgba(255,255,255,.09)}.sidebar-user>div:nth-child(2){min-width:0;flex:1}.sidebar-user strong,.sidebar-user span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-user strong{font-size:.75rem}.sidebar-user span{font-size:.64rem;color:#b5cdeb}.avatar{flex:none;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:#d7e8ff;color:#14539e;font-weight:850;font-size:.72rem}.avatar.outline{background:#fff;border:1px solid #bed5f3}.app-shell{min-height:100vh;margin-left:260px}.topbar{height:70px;position:sticky;top:0;z-index:20;display:flex;align-items:center;padding:0 26px;background:rgba(255,255,255,.96);border-bottom:1px solid var(--line);backdrop-filter:blur(9px)}.topbar h1{margin:0;font-size:1rem}.topbar>div>span{display:block;margin-top:3px;font-size:.67rem;color:#8591a1}.topbar-user{margin-left:auto;display:flex;align-items:center;gap:9px}.topbar-user strong,.topbar-user span{display:block}.topbar-user strong{font-size:.72rem}.topbar-user span{font-size:.64rem;color:#7e8998}.content{width:min(1460px,100%);margin:0 auto;padding:26px}.app-footer{padding:22px;text-align:center;color:#8b97a8;font-size:.7rem}.icon-btn{border:0;background:transparent;padding:7px;font-size:1.2rem;color:inherit}.mobile-only{display:none}.nav-overlay{display:none}.card{background:#fff;border:1px solid var(--line);border-radius:17px;box-shadow:var(--shadow)}.hero{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:25px;border-radius:20px;background:linear-gradient(120deg,#114888,#2375d1);color:#fff}.hero h2{margin:5px 0;font-size:1.45rem}.hero p{margin:0;color:#d9eaff;font-size:.82rem}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin:18px 0}.stat-card{padding:18px;display:flex;justify-content:space-between;align-items:flex-start}.stat-card span{font-size:.76rem;color:#718095}.stat-card strong{display:block;font-size:1.85rem;margin:7px 0 2px}.stat-card small{color:#9aa6b5}.stat-icon{display:grid;place-items:center;width:43px;height:43px;border-radius:13px;background:#eaf3ff;color:#1763bd;font-size:1.15rem}.dashboard-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:17px}.panel{padding:20px}.panel-head,.page-actions{display:flex;align-items:center;justify-content:space-between;gap:15px}.panel-head h3,.page-actions h2{margin:0;font-size:.95rem}.panel-head p,.page-actions p{margin:4px 0 0;color:#8894a3;font-size:.7rem}.bars{margin-top:23px;display:grid;gap:14px}.bar-row{display:grid;grid-template-columns:80px 1fr 35px;align-items:center;gap:10px;font-size:.72rem;font-weight:650}.bar{height:9px;border-radius:20px;background:#edf1f6;overflow:hidden}.bar i{display:block;height:100%;border-radius:20px;background:linear-gradient(90deg,#1663ba,#4a92e5)}.gender-wrap{display:flex;align-items:center;justify-content:center;gap:25px;padding:25px 0 12px}.donut{width:132px;height:132px;border-radius:50%;display:grid;place-items:center}.donut:after{content:"";width:94px;height:94px;border-radius:50%;background:#fff}.donut-label{position:absolute;text-align:center;font-size:.7rem}.donut-label strong{display:block;font-size:1.4rem}.legend{display:grid;gap:13px;font-size:.72rem}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:7px}.dot.blue{background:#2a76d0}.dot.pink{background:#d34eb4}.recent-list{margin-top:16px;border-top:1px solid var(--line)}.recent-item{display:flex;align-items:center;gap:11px;padding:12px 0;border-bottom:1px solid var(--line)}.recent-item strong,.recent-item span{display:block}.recent-item span{font-size:.7rem;color:#7d8999}.recent-item>div:nth-child(2){flex:1}.badge{display:inline-flex;padding:5px 9px;border-radius:20px;font-size:.64rem;font-weight:800;text-transform:capitalize}.badge.aktif{background:#e8f8f0;color:#0e7d53}.badge.lulus{background:#eaf3ff;color:#135ba9}.badge.pindah{background:#fff5df;color:#a86b00}.page-actions{margin-bottom:17px}.action-group{display:flex;gap:8px;flex-wrap:wrap}.filter-card{padding:14px;margin-bottom:17px}.filter-form{display:grid;grid-template-columns:minmax(220px,1fr) 160px 145px 145px auto;gap:10px}.filter-form input,.filter-form select{margin:0;padding:10px 11px;font-size:.78rem}.table-card{overflow:hidden}.table-wrap{overflow:auto}.data-table{width:100%;border-collapse:collapse;min-width:900px}.data-table th{padding:13px 15px;background:#f8fafc;border-bottom:1px solid var(--line);font-size:.65rem;letter-spacing:.08em;text-transform:uppercase;color:#647286;text-align:left}.data-table td{padding:12px 15px;border-bottom:1px solid #edf1f6;font-size:.76rem;vertical-align:middle}.data-table tbody tr:hover{background:#f6f9fd}.student-cell{display:flex;align-items:center;gap:10px}.student-cell strong,.student-cell span{display:block}.student-cell span{color:#8692a2;font-size:.68rem}.row-actions{display:flex;justify-content:flex-end;gap:5px}.action-icon{display:grid;place-items:center;width:31px;height:31px;border-radius:8px;background:#edf4fd;color:#155eb6}.action-icon.warn{background:#fff7e7;color:#b57908}.action-icon.danger{background:#fff0f0;color:#bb3636}.pagination{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;font-size:.72rem;color:#748195}.pagination div{display:flex;gap:5px}.pagination a,.pagination span.current{display:grid;place-items:center;min-width:31px;height:31px;border:1px solid var(--line);border-radius:8px;background:#fff}.pagination span.current{background:var(--blue);color:#fff;border-color:var(--blue)}.empty-state{padding:55px 20px;text-align:center}.empty-state .empty-icon{margin:auto;display:grid;place-items:center;width:56px;height:56px;border-radius:15px;background:#edf5ff;color:#1763b9;font-size:1.45rem}.empty-state h3{margin:14px 0 5px}.empty-state p{color:#8491a2;font-size:.78rem}.form-card{overflow:hidden}.form-heading{padding:20px;background:linear-gradient(90deg,#eaf3ff,#fff);display:flex;align-items:center;gap:13px;border-bottom:1px solid var(--line)}.form-heading h2{margin:0;font-size:1rem}.form-heading p{margin:4px 0 0;color:#748195;font-size:.7rem}.form-tabs{display:flex;overflow:auto;border-bottom:1px solid var(--line);padding:0 15px}.form-tabs button{border:0;border-bottom:2px solid transparent;background:transparent;padding:14px 16px;font-size:.72rem;font-weight:750;color:#7b8797;white-space:nowrap}.form-tabs button.active{color:var(--blue);border-bottom-color:var(--blue)}.form-body{padding:24px}.form-section+ .form-section{margin-top:26px}.form-section h3{font-size:.8rem;margin:0 0 15px;padding-left:10px;border-left:4px solid var(--blue)}.field-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.field.span-2{grid-column:span 2}.field.span-4{grid-column:1/-1}.form-footer{display:flex;justify-content:space-between;gap:12px;padding:15px 20px;background:#f8fafc;border-top:1px solid var(--line)}.detail-hero{display:flex;align-items:center;gap:18px;padding:24px;color:#fff;background:linear-gradient(120deg,#104484,#2476d3);border-radius:17px}.detail-hero .avatar{width:72px;height:72px;font-size:1.2rem}.detail-hero h2{margin:0 0 5px}.detail-hero p{margin:0;color:#d5e7ff}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:17px}.detail-card{padding:20px}.detail-card h3{margin:0 0 17px;padding-bottom:11px;border-bottom:1px solid var(--line);font-size:.82rem}.info-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.info-grid small,.info-grid strong{display:block}.info-grid small{font-size:.61rem;letter-spacing:.07em;text-transform:uppercase;color:#8491a1}.info-grid strong{font-size:.76rem;margin-top:4px}.upload-box{display:grid;place-items:center;text-align:center;min-height:190px;padding:25px;border:2px dashed #b9d3f4;border-radius:15px;background:#f5f9ff}.upload-box input{max-width:100%}.upload-box strong{margin:10px 0 5px}.upload-box span{font-size:.72rem;color:#7e8c9e}.two-panel{display:grid;grid-template-columns:1fr 1fr;gap:17px}.user-list{display:grid;gap:10px}.user-row{display:flex;align-items:center;gap:11px;padding:13px;border:1px solid var(--line);border-radius:12px}.user-row>div:nth-child(2){flex:1}.user-row strong,.user-row span{display:block}.user-row span{font-size:.68rem;color:#8090a1}.print-only{display:none}@media(max-width:1100px){.stats-grid{grid-template-columns:repeat(2,1fr)}.field-grid{grid-template-columns:repeat(2,1fr)}.field.span-4{grid-column:1/-1}.filter-form{grid-template-columns:1fr 1fr 1fr}.filter-form .search-field{grid-column:1/-1}.dashboard-grid{grid-template-columns:1fr}}@media(max-width:780px){.mobile-only{display:block}.sidebar{transform:translateX(-100%);transition:.22s}.nav-open .sidebar{transform:translateX(0)}.nav-open .nav-overlay{display:block;position:fixed;z-index:35;inset:0;background:rgba(6,19,38,.45)}.app-shell{margin-left:0}.topbar{padding:0 15px}.topbar-user>div:last-child{display:none}.content{padding:16px}.auth-shell,.install-shell{grid-template-columns:1fr}.auth-visual,.install-intro{padding:38px}.auth-card,.install-card{padding:32px 24px}.form-grid.two-col,.field-grid,.two-panel,.detail-grid,.info-grid{grid-template-columns:1fr}.span-2,.field.span-2,.field.span-4{grid-column:auto}.stats-grid{grid-template-columns:1fr 1fr}.hero,.page-actions{align-items:flex-start;flex-direction:column}.filter-form{grid-template-columns:1fr}.filter-form .search-field{grid-column:auto}.form-footer{flex-direction:column-reverse}.form-footer .action-group{display:grid;grid-template-columns:1fr 1fr}.gender-wrap{gap:15px}}@media(max-width:480px){.stats-grid{grid-template-columns:1fr}.auth-visual h1,.install-intro h1{font-size:2rem}.topbar>div>span{display:none}.hero h2{font-size:1.15rem}.action-group{width:100%}.action-group .btn{flex:1}.pagination{align-items:flex-start;gap:10px;flex-direction:column}}@media print{.sidebar,.topbar,.app-footer,.no-print,.nav-overlay{display:none!important}.app-shell{margin:0}.content{padding:0}.card{box-shadow:none}.print-only{display:block}body{background:#fff}}
