
:root{--navy:#102552;--navy2:#091a3c;--gold:#d6a916;--gold2:#f0cc55;--bg:#f3f6fb;--card:#fff;--text:#182039;--muted:#64708a;--line:#dfe5ef;--success:#168b5b;--warning:#cc8a00;--danger:#c43d45;--shadow:0 10px 28px rgba(16,37,82,.09);--radius:18px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;background:var(--bg);color:var(--text)}button,input,select,textarea{font:inherit}button{cursor:pointer}.hidden{display:none!important}.muted{color:var(--muted)}.small{font-size:.83rem}.nowrap{white-space:nowrap}
.login-screen{min-height:100vh;display:grid;grid-template-columns:1.15fr .85fr;background:linear-gradient(135deg,var(--navy2),var(--navy));position:relative;overflow:hidden}.login-screen:before,.login-screen:after{content:"";position:absolute;border-radius:50%;border:1px solid rgba(255,255,255,.08)}.login-screen:before{width:520px;height:520px;left:-180px;bottom:-230px}.login-screen:after{width:430px;height:430px;right:-150px;top:-180px}.login-hero{display:flex;align-items:center;justify-content:center;padding:48px;color:white;position:relative;z-index:1}.hero-inner{max-width:660px}.hero-logos{display:flex;gap:16px;align-items:center;margin-bottom:28px}.hero-logos img{height:58px;width:58px;object-fit:contain;background:white;border-radius:15px;padding:6px}.hero-logos img:first-child{width:86px}.login-hero h1{font-size:clamp(2.4rem,6vw,5.2rem);line-height:.95;margin:0 0 18px;letter-spacing:.02em}.login-hero h1 span{color:var(--gold2)}.login-hero p{max-width:600px;color:#d7deed;font-size:1.08rem;line-height:1.65}.feature-pills{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}.feature-pills span{padding:9px 13px;border:1px solid rgba(255,255,255,.18);border-radius:999px;background:rgba(255,255,255,.06);font-size:.88rem}.login-panel{display:flex;align-items:center;justify-content:center;padding:32px;position:relative;z-index:2}.login-card{width:min(430px,100%);background:white;border-radius:28px;padding:32px;box-shadow:0 30px 80px rgba(0,0,0,.24)}.login-logo{width:118px;height:118px;display:block;margin:-6px auto 10px;object-fit:contain}.login-card h2{text-align:center;margin:0;font-size:1.65rem}.login-card>p{text-align:center;margin:8px 0 25px}.field{display:flex;flex-direction:column;gap:7px;margin-bottom:16px}.field label{font-size:.88rem;font-weight:700;color:#33405b}.field input,.field select,.field textarea,.control{border:1px solid var(--line);background:white;border-radius:12px;padding:12px 13px;outline:none;transition:.18s}.field input:focus,.field select:focus,.field textarea:focus,.control:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(214,169,22,.14)}.btn{border:0;border-radius:12px;padding:11px 16px;font-weight:750;display:inline-flex;gap:8px;align-items:center;justify-content:center}.btn-primary{background:linear-gradient(135deg,var(--navy),#1f4386);color:white}.btn-gold{background:linear-gradient(135deg,var(--gold),var(--gold2));color:#16203a}.btn-light{background:#eef2f8;color:var(--navy)}.btn-danger{background:#fee9eb;color:#9f2530}.btn-success{background:#e5f6ef;color:#08724a}.btn-block{width:100%}.demo-box{margin-top:18px;border:1px dashed #ccd5e5;background:#f7f9fd;border-radius:13px;padding:12px;font-size:.82rem;line-height:1.55}.demo-box code{font-weight:800;color:var(--navy)}
.app-shell{min-height:100vh;display:grid;grid-template-columns:264px 1fr}.sidebar{background:linear-gradient(180deg,var(--navy2),var(--navy));color:white;position:fixed;inset:0 auto 0 0;width:264px;padding:22px 15px;z-index:30;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:11px;padding:4px 8px 24px}.brand img{width:50px;height:50px;border-radius:12px;object-fit:contain;background:white}.brand strong{font-size:1.18rem;letter-spacing:.05em}.brand small{display:block;color:#bfc9dd;margin-top:2px}.nav{display:flex;flex-direction:column;gap:6px}.nav button{width:100%;border:0;background:transparent;color:#cbd4e7;padding:12px 13px;border-radius:11px;text-align:left;font-weight:650;display:flex;align-items:center;gap:12px}.nav button:hover,.nav button.active{background:rgba(255,255,255,.11);color:white}.nav .ico{width:24px;text-align:center;font-size:1.1rem}.sidebar-footer{margin-top:auto;border-top:1px solid rgba(255,255,255,.12);padding:16px 8px 0}.sidebar-footer .user-mini{display:flex;align-items:center;gap:10px}.avatar{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--gold);color:var(--navy2);font-weight:900}.app-main{grid-column:2;min-width:0}.topbar{height:76px;background:rgba(255,255,255,.94);backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:space-between;padding:0 28px;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}.topbar-left{display:flex;align-items:center;gap:14px}.menu-btn{display:none;border:0;background:#eef2f8;color:var(--navy);border-radius:10px;padding:9px}.topbar h2{margin:0;font-size:1.25rem}.period-box{display:flex;gap:8px;align-items:center}.period-box input{border:1px solid var(--line);border-radius:10px;padding:9px;background:white}.content{padding:25px 28px 95px;max-width:1500px;margin:auto}.view{display:none}.view.active{display:block}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px}.page-head h1{font-size:1.75rem;margin:0 0 6px}.page-head p{margin:0;color:var(--muted)}
.grid-kpi{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:20px}.kpi{background:var(--card);border:1px solid #e7ebf3;border-radius:var(--radius);padding:19px;box-shadow:var(--shadow);position:relative;overflow:hidden}.kpi:after{content:"";position:absolute;width:88px;height:88px;border-radius:50%;right:-32px;top:-30px;background:rgba(214,169,22,.09)}.kpi-top{display:flex;justify-content:space-between;align-items:center}.kpi .icon{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:#edf2fb;font-size:1.25rem}.kpi .num{font-size:2rem;font-weight:850;margin:15px 0 4px}.kpi .label{color:var(--muted);font-size:.9rem}.dashboard-grid{display:grid;grid-template-columns:1.55fr .85fr;gap:18px}.card{background:var(--card);border:1px solid #e7ebf3;border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.card-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.card-title h3{margin:0;font-size:1.05rem}.progress-summary{display:grid;grid-template-columns:175px 1fr;gap:24px;align-items:center}.donut{width:150px;height:150px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--gold) 0%,#e6ebf3 0);position:relative;margin:auto}.donut:before{content:"";width:112px;height:112px;background:white;border-radius:50%;position:absolute}.donut-inner{position:relative;text-align:center}.donut-inner strong{font-size:1.65rem;display:block}.legend-row{display:flex;justify-content:space-between;border-bottom:1px solid #edf0f5;padding:11px 0}.legend-row:last-child{border:0}.activity-mini{display:grid;grid-template-columns:1fr auto;gap:10px;padding:10px 0;border-bottom:1px solid #edf0f5}.activity-mini:last-child{border:0}.badge{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:5px 9px;font-size:.77rem;font-weight:800}.badge-success{background:#e6f6ef;color:#08734b}.badge-warning{background:#fff2d6;color:#966100}.badge-danger{background:#fee9eb;color:#a22631}.badge-info{background:#e9effc;color:#224f9c}.badge-muted{background:#edf0f5;color:#677288}.alert{border-radius:14px;padding:14px 15px;margin-bottom:18px;display:flex;gap:11px;align-items:flex-start}.alert-warning{background:#fff8e6;border:1px solid #f1dda0;color:#6d5410}.alert-info{background:#edf4ff;border:1px solid #cadcf6;color:#224675}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:end;background:white;border:1px solid #e7ebf3;border-radius:var(--radius);padding:15px;margin-bottom:15px;box-shadow:var(--shadow)}.toolbar .field{margin:0;min-width:155px;flex:1}.toolbar .field.search-field{flex:2;min-width:240px;position:relative}.suggestions{position:absolute;left:0;right:0;top:100%;background:white;border:1px solid var(--line);box-shadow:0 16px 36px rgba(16,37,82,.16);border-radius:12px;z-index:50;max-height:280px;overflow:auto;margin-top:5px}.suggestion{padding:10px 12px;border-bottom:1px solid #edf0f5;cursor:pointer}.suggestion:hover{background:#f6f8fc}.suggestion strong{display:block}.suggestion small{color:var(--muted)}
.table-wrap{background:white;border:1px solid #e7ebf3;border-radius:var(--radius);box-shadow:var(--shadow);overflow:auto}.table-wrap table{width:100%;border-collapse:collapse;min-width:850px}.table-wrap th{background:#f5f7fb;text-align:left;color:#536078;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;padding:12px;border-bottom:1px solid var(--line);position:sticky;top:0}.table-wrap td{padding:12px;border-bottom:1px solid #edf0f5;font-size:.9rem}.table-wrap tr:hover td{background:#fafbfe}.table-wrap tr:last-child td{border-bottom:0}.name-cell strong{display:block;color:#17203a}.name-cell small{color:var(--muted)}.checkbox{width:19px;height:19px;accent-color:var(--navy)}.action-row{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:14px 0}.selection-info{font-weight:700;color:var(--navy)}.attendance-bottom{position:sticky;bottom:12px;background:rgba(16,37,82,.96);color:white;border-radius:16px;padding:13px 16px;display:flex;align-items:center;justify-content:space-between;gap:15px;box-shadow:0 15px 40px rgba(9,26,60,.25);z-index:10}.attendance-bottom strong{color:var(--gold2)}
.activity-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.activity-card{border:1px solid var(--line);border-radius:15px;padding:15px;display:flex;align-items:center;gap:12px;background:white}.activity-card .big-icon{width:46px;height:46px;border-radius:13px;background:#f0f3f9;display:grid;place-items:center;font-size:1.35rem}.activity-card strong{display:block}.activity-card small{color:var(--muted)}
.split-grid{display:grid;grid-template-columns:340px 1fr;gap:18px}.group-list{display:flex;flex-direction:column;gap:8px}.group-item{border:1px solid var(--line);border-radius:12px;background:white;padding:12px;display:flex;justify-content:space-between;align-items:center}.group-item.active{border-color:var(--gold);background:#fffaf0}.group-item button{border:0;background:transparent;text-align:left;flex:1}.group-item small{color:var(--muted)}
.modal-backdrop{position:fixed;inset:0;background:rgba(5,13,31,.58);z-index:100;display:grid;place-items:center;padding:20px}.modal{background:white;border-radius:22px;width:min(620px,100%);max-height:90vh;overflow:auto;padding:22px;box-shadow:0 30px 90px rgba(0,0,0,.3)}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.modal-head h3{margin:0}.close-btn{border:0;background:#eef2f8;border-radius:10px;width:36px;height:36px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid .field{margin:0}.form-grid .full{grid-column:1/-1}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}
.sync-drop{border:2px dashed #cbd4e3;border-radius:18px;padding:30px;text-align:center;background:#fafbfe}.sync-drop input{max-width:100%}.sync-results{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:16px 0}.sync-result{padding:14px;border-radius:13px;background:#f4f6fa;text-align:center}.sync-result strong{font-size:1.5rem;display:block;color:var(--navy)}.pagination{display:flex;justify-content:space-between;align-items:center;padding:14px}.page-buttons{display:flex;gap:6px}.page-buttons button{border:1px solid var(--line);background:white;border-radius:8px;padding:7px 10px}.page-buttons button.active{background:var(--navy);color:white;border-color:var(--navy)}
.mobile-nav{display:none}.toast{position:fixed;right:22px;bottom:22px;z-index:200;background:#15254a;color:white;padding:13px 16px;border-radius:12px;box-shadow:0 15px 40px rgba(0,0,0,.24);transform:translateY(120px);opacity:0;transition:.25s;max-width:340px}.toast.show{transform:translateY(0);opacity:1}.toast.success{border-left:5px solid #35c989}.toast.error{border-left:5px solid #f15b64}
@media(max-width:1050px){.grid-kpi{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.activity-grid{grid-template-columns:repeat(2,1fr)}.split-grid{grid-template-columns:1fr}.group-list{display:grid;grid-template-columns:repeat(2,1fr)}}
@media(max-width:820px){.login-screen{grid-template-columns:1fr}.login-hero{display:none}.login-panel{min-height:100vh}.app-shell{display:block}.sidebar{transform:translateX(-100%);transition:.25s}.sidebar.open{transform:translateX(0)}.app-main{grid-column:auto}.menu-btn{display:inline-flex}.topbar{padding:0 15px;height:68px}.topbar h2{font-size:1.05rem}.content{padding:18px 14px 92px}.page-head{flex-direction:column}.mobile-nav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;bottom:0;left:0;right:0;z-index:25;background:white;border-top:1px solid var(--line);padding:7px 4px max(7px,env(safe-area-inset-bottom));box-shadow:0 -8px 24px rgba(16,37,82,.08)}.mobile-nav button{border:0;background:transparent;color:#69758b;font-size:.68rem;padding:4px;display:flex;flex-direction:column;align-items:center;gap:2px}.mobile-nav button .mi{font-size:1.2rem}.mobile-nav button.active{color:var(--navy);font-weight:800}.progress-summary{grid-template-columns:1fr}.activity-grid{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.sync-results{grid-template-columns:repeat(2,1fr)}.period-box span{display:none}.attendance-bottom{bottom:70px;flex-direction:column;align-items:stretch}.attendance-bottom .btn{width:100%}.group-list{grid-template-columns:1fr}}
@media(max-width:560px){.grid-kpi{grid-template-columns:1fr 1fr;gap:10px}.kpi{padding:14px}.kpi .num{font-size:1.55rem}.toolbar{display:grid;grid-template-columns:1fr}.toolbar .field,.toolbar .field.search-field{min-width:0}.page-head h1{font-size:1.45rem}.sync-results{grid-template-columns:1fr 1fr}.login-card{padding:25px 20px}.topbar .user-name{display:none}}
