*{box-sizing:border-box} :root{--purple:#5644f4;--nav:#201c49;--text:#10233c;--muted:#8b9bb3;--line:#e0e7f0;--bg:#f1f5f9;--green:#08a77b;--red:#ed4f5b}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}a{color:var(--purple);text-decoration:none}a:hover{text-decoration:underline}button:focus-visible,a:focus-visible{outline:3px solid #b3aaff;outline-offset:3px}svg.ico{width:19px;height:19px;vertical-align:middle;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}h1{font-size:23px;line-height:1.3;margin:0 0 4px;letter-spacing:-.45px}h2{font-size:16px;margin:0}h3{font-size:14px;margin:0 0 10px}p{margin:5px 0 15px}small,.muted{color:var(--muted);font-size:12px}.loading{min-height:100vh;display:grid;place-items:center}.sidebar{position:fixed;inset:0 auto 0 0;width:235px;background:var(--nav);color:#a4a5c7;display:flex;flex-direction:column;z-index:30}.brand{height:76px;border-bottom:1px solid #ffffff10;display:flex;align-items:center;gap:10px;padding:18px;color:white}.brand-icon{background:#7860f6;width:37px;height:37px;border-radius:11px;display:grid;place-items:center}.brand strong{display:block;font-size:15px}.brand small{color:#9490c5;font-size:11px}.sidebar nav{padding:12px 0;overflow:auto;flex:1}.nav-item{display:flex;align-items:center;gap:12px;padding:12px 18px;color:#a6a7c5;font-weight:600;font-size:13px;border-left:3px solid transparent}.nav-item:hover{background:#ffffff08;text-decoration:none;color:white}.nav-item.active{color:#c7c7ff;background:#322c68;border-left-color:#8274ff}.count{margin-left:auto;border-radius:12px;background:#ffffff23;padding:0 6px;font-size:10px}.profile{display:flex;align-items:center;gap:10px;padding:17px 13px;border-top:1px solid #ffffff10;font-size:12px;color:#fff}.avatar{border-radius:50%;background:#7761f4;color:white;width:34px;height:34px;display:grid;place-items:center;font-weight:700}.profile .icon-btn{margin-left:auto;color:#b4b1d1;background:#ffffff0e;border:0}.shell{margin-left:235px}.topbar{height:60px;background:white;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:16px;padding:0 24px;color:#536279;position:sticky;top:0;z-index:20;box-shadow:0 1px 3px #14203906}.topbar .spacer{flex:1}.breadcrumb{font-weight:600;font-size:13px}.content{padding:24px;max-width:2100px;margin:auto}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:20px}.page-head p{color:var(--muted);margin:0;font-size:13px}.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.btn{border:1px solid var(--line);background:white;color:#465b75;border-radius:9px;padding:8px 12px;display:inline-flex;gap:7px;align-items:center;justify-content:center;font-size:12px;font-weight:600;white-space:nowrap;text-decoration:none}.btn:hover{border-color:#bdb5ff;background:#faf9ff;text-decoration:none}.btn.primary{background:var(--purple);color:white;border-color:var(--purple);box-shadow:0 2px 3px #4436c128}.btn.danger{background:#fff3f4;color:var(--red);border-color:#ffd9dd}.btn.sm{padding:5px 9px;font-size:11px}.btn:disabled{opacity:.5;cursor:not-allowed}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:29px;height:29px;border:1px solid var(--line);border-radius:7px;background:white;color:#516780}.icon-btn .ico{width:15px;height:15px}.icon-btn:hover{color:var(--purple);background:#f6f4ff}.icon-btn.danger{color:var(--red)}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:14px;margin-bottom:18px}.stat{background:white;border:1px solid var(--line);border-radius:14px;box-shadow:0 2px 3px #172b4d06;padding:20px 16px;display:flex;gap:14px;align-items:center;min-width:0}.stat .tile{height:46px;min-width:46px;border-radius:12px;background:#ece8ff;color:var(--purple);display:grid;place-items:center}.stat:nth-child(4n+2) .tile{background:#fff0d7;color:#e38a0a}.stat:nth-child(4n+3) .tile{background:#d9faec;color:#06a174}.stat:nth-child(4n+4) .tile{background:#e0edff;color:#2865f5}.stat strong{font-size:24px;line-height:1.3;display:block;letter-spacing:-.5px;overflow-wrap:anywhere}.stat span{font-size:12px;color:#61738d}.stats.compact{grid-template-columns:repeat(9,minmax(100px,1fr))}.stats.compact .stat{padding:20px 13px;gap:10px}.stats.compact .tile{min-width:38px;height:40px}.stats.compact strong{font-size:24px}.panel{background:white;border:1px solid var(--line);border-radius:14px;box-shadow:0 2px 3px #172b4d06;margin-bottom:16px;overflow:hidden}.panel-title{padding:15px 18px;border-bottom:1px solid #edf1f7;display:flex;align-items:center;justify-content:space-between;gap:8px}.panel-title h2{font-size:14px}.panel-title h2 .ico{color:var(--purple);margin-right:5px}.panel-body{padding:18px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid2 .panel{margin:0}.dashboard-grid{margin-bottom:16px}.dashboard-grid .panel{min-height:270px}.filters{padding:16px;display:flex;align-items:end;gap:10px;flex-wrap:wrap}.field{display:flex;flex-direction:column;gap:5px;min-width:0}.field>span,label.field>span{font-size:11px;font-weight:650;color:#50617a}.field.grow{flex:1;min-width:200px}.field input,.field select,.field textarea,.search{border:1px solid #dce4f0;border-radius:8px;background:white;padding:8px 10px;color:var(--text);outline:none;min-width:0;width:100%}.field input:focus,.field textarea:focus,.field select:focus,.search:focus{border-color:#8e80ff;box-shadow:0 0 0 3px #6556ed12}.field textarea{resize:vertical;min-height:85px}.filters .field:not(.grow){min-width:135px;max-width:180px}.search{background:#f5f7fb;min-width:200px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:12px;white-space:nowrap}th{background:#f1f5f9;color:#566981;font-size:10px;text-transform:uppercase;letter-spacing:.15px;padding:12px 14px;font-weight:700;border-bottom:1px solid var(--line)}td{padding:17px 14px;border-bottom:1px solid #edf1f7}tr:last-child td{border-bottom:0}tbody tr:hover{background:#fafbff}td strong{font-weight:650}td small{display:block;margin-top:2px;font-size:11px}td .actions{flex-wrap:nowrap}.sort{border:0;padding:0;background:transparent;color:inherit;font-size:inherit;text-transform:inherit;cursor:pointer}.badge{display:inline-block;font-size:11px;line-height:20px;padding:1px 8px;border:1px solid #c9c0ff;border-radius:20px;background:#f6f3ff;color:#7654f5;white-space:nowrap}.badge.green{color:#00a175;background:#effdf6;border-color:#9ae8c8}.badge.blue{color:#3373f9;background:#f1f7ff;border-color:#b9d0ff}.badge.amber{color:#e68a00;background:#fffaf0;border-color:#ffd687}.badge.red{color:#eb495b;background:#fff3f5;border-color:#ffbec8}.badge.gray{color:#8090a5;background:#f5f7fa;border-color:#dce3ec}.chip{background:#e4e7ff;color:#463cc2;padding:3px 7px;border-radius:4px;font-weight:700;font-size:10px}.tabs{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:12px 0 20px;border-bottom:1px solid var(--line)}.tab{border:0;border-bottom:2px solid transparent;padding:12px 16px;background:transparent;color:#596b83;font-size:13px;font-weight:650;cursor:pointer}.tab.active{color:var(--purple);border-bottom-color:var(--purple)}.tab b{font-size:10px;background:#edeafa;border-radius:12px;padding:1px 5px;margin-left:5px}.segmented{display:inline-flex;border:1px solid var(--line);border-radius:12px;padding:3px;background:#f0f4f9;gap:3px;margin-bottom:15px}.segmented .tab{padding:6px 15px;border:0;border-radius:9px;font-size:12px}.segmented .tab.active{background:white;box-shadow:0 1px 3px #1420390c}.status-strip{padding:6px;display:flex;gap:6px;overflow:auto}.status-strip .tab{font-size:11px;border:0;padding:8px 11px;border-radius:8px;white-space:nowrap}.status-strip .tab.active{background:#4237ad;color:white}.status-strip .tab.active b{background:#ffffff33}.table-meta,.pagination{padding:10px 16px;display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:11px;border-bottom:1px solid #edf1f7;gap:10px}.pagination{border-top:1px solid #edf1f7;border-bottom:0}.progress{height:5px;border-radius:5px;background:#e1e7f0;overflow:hidden;min-width:85px;margin:5px 0}.progress i{height:100%;display:block;background:#3266f5;border-radius:5px}.money{font-variant-numeric:tabular-nums;font-weight:650}.green-text{color:#00a982}.red-text{color:#f34455}.empty{text-align:center;padding:48px 20px;color:var(--muted)}.empty>.ico{height:44px;width:44px;color:#cbd3de;display:block;margin:0 auto 15px}.empty p{margin-bottom:12px}.name-btn{border:0;background:none;color:var(--purple);font:inherit;font-weight:650;padding:0;text-align:left}.chart{display:flex;align-items:end;gap:24px;height:190px;border-bottom:1px solid var(--line);padding:15px 20px 0;background:repeating-linear-gradient(to top,transparent 0,transparent 39px,#edf1f7 40px)}.chart-col{flex:1;height:100%;display:flex;flex-direction:column;justify-content:end;align-items:center;gap:5px}.chart-bar{width:80%;background:#6861ef;border-radius:6px 6px 0 0;min-height:2px}.chart-col:nth-child(2n) .chart-bar{background:#099ab0}.chart-col:nth-child(3n) .chart-bar{background:#07986e}.chart-labels{display:flex;gap:24px;padding:10px 20px;font-size:11px;color:#78899c;text-align:center}.chart-labels span{flex:1}.exam-card{padding:17px 20px;display:flex;gap:16px;align-items:center;border-left:4px solid #5745f5;margin:14px 0}.exam-card .info{flex:1;min-width:0}.exam-card h3{font-size:14px;margin:0 0 8px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}.exam-card p{margin:0;color:#8b9ab0;font-size:12px}.exam-card .total{background:#f2f5f9;padding:8px 16px;border-radius:10px;text-align:center}.exam-card .total strong{display:block;font-size:20px}.note{padding:13px 16px;border:1px solid #e3defc;background:#f6f4ff;color:#615c86;border-radius:10px;font-size:12px;margin-bottom:16px}.notice-warning{border-color:#f6dfad;background:#fffbf0;color:#876327}.settings-box{max-width:980px;margin:20px auto}.setting-row{padding:12px;background:#f1f5f9;border-radius:10px;margin-bottom:8px;display:flex;justify-content:space-between;align-items:center}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-grid .full{grid-column:1/-1}.form-actions{padding-top:20px;display:flex;justify-content:flex-end;gap:8px}.form-error{padding:12px;background:#fff0f2;color:#c93d50;border-radius:8px;margin-top:12px;font-size:12px}.form-error:empty{display:none}.help{font-size:11px;color:var(--muted);margin-top:4px}.mobile-only{display:none}dialog{border:0;border-radius:16px;max-width:min(900px,calc(100vw - 32px));width:740px;max-height:90vh;padding:0;color:var(--text);box-shadow:0 25px 100px #1012294d}dialog.wide{width:1120px;max-width:calc(100vw - 32px)}dialog::backdrop{background:#16153577;backdrop-filter:blur(2px)}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:18px 22px;border-bottom:1px solid var(--line);position:sticky;top:0;background:white;z-index:2}.modal-body{padding:22px}.detail-head{display:flex;align-items:center;gap:15px;margin-bottom:20px}.detail-head .avatar{height:52px;width:52px;font-size:22px}.detail-head h2{font-size:20px}.detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:24px}.detail-grid label{display:block;color:var(--muted);font-size:11px}.detail-grid span{display:block;overflow-wrap:anywhere}.section-heading{margin:24px 0 10px;padding-bottom:8px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(ellipse at 20% 20%,#ece8ff,transparent 55%),var(--bg)}.login-card{width:430px;max-width:100%;padding:35px;border:1px solid var(--line);background:white;border-radius:20px;box-shadow:0 20px 80px #3826740d}.login-card .brand-icon{width:52px;height:52px;margin-bottom:24px}.login-card .field{margin-top:18px}.login-card .btn{width:100%;margin-top:24px;padding:12px}.login-card p{color:var(--muted);font-size:13px}.login-footer{font-size:11px;text-align:center;color:var(--muted);margin-top:22px}#toast{position:fixed;bottom:24px;right:24px;padding:13px 20px;border-radius:10px;z-index:100;background:#143e35;color:white;box-shadow:0 8px 30px #15203830;transform:translateY(130px);opacity:0;transition:.2s;max-width:400px}#toast.show{transform:translateY(0);opacity:1}#toast.error{background:#8c293c}.receipt{text-align:center;padding:15px 20px}.receipt h1{margin:28px 0 5px;font-size:26px}.receipt table{text-align:left;white-space:normal;margin:25px 0}.receipt td{border:0;font-size:14px;padding:10px}.receipt .signatures{display:flex;justify-content:space-around;margin:45px 0 70px}.receipt small{display:block}input[type=checkbox]{accent-color:var(--purple);width:15px;height:15px}.row-muted{opacity:.6}.bulk{display:flex;gap:10px;padding:12px 16px;align-items:center;background:#f5f3ff}.truncate{max-width:300px;white-space:normal;overflow-wrap:anywhere}.license-editor{display:grid;grid-template-columns:80px 100px repeat(4,1fr) 30px;gap:8px;align-items:end;margin-bottom:12px}.legend{font-size:11px;color:var(--muted);margin-bottom:12px}.no-wrap{white-space:nowrap}
@media(min-width:1700px){.stats.compact .stat{padding:23px 16px}.stats.compact .tile{min-width:44px;height:44px}td{padding:19px 16px}}
@media(max-width:1500px){.stats.compact{grid-template-columns:repeat(5,1fr)}.stats.compact .stat{padding:14px}.content{padding:20px}.sidebar{width:220px}.shell{margin-left:220px}.stat strong{font-size:21px}}
@media(max-width:1000px){.sidebar{width:200px}.shell{margin-left:200px}.grid2{grid-template-columns:1fr}.stats.compact{grid-template-columns:repeat(3,1fr)}.stats{grid-template-columns:repeat(2,1fr)}.detail-grid{grid-template-columns:1fr 1fr}.license-editor{grid-template-columns:repeat(3,1fr);border-bottom:1px solid var(--line);padding-bottom:15px}.exam-card{flex-wrap:wrap}}
@media(max-width:700px){.sidebar{transform:translateX(-100%);transition:.2s;width:235px;box-shadow:10px 0 50px #15132822}.sidebar.open{transform:translateX(0)}.shell{margin-left:0}.topbar{padding:0 15px}.content{padding:16px 12px}.stats.compact{grid-template-columns:repeat(2,1fr)}.stat{padding:13px 10px;gap:8px}.stat strong{font-size:20px}.page-head{flex-wrap:wrap}.page-head .actions{width:100%}.form-grid,.detail-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.modal-body{padding:16px}.mobile-only{display:initial}.filters .field:not(.grow){flex:1;max-width:none}.filters .grow{width:100%}.tab{padding:10px;font-size:12px}.breadcrumb{font-size:12px}.stats .tile{min-width:35px;width:35px;height:38px}.exam-card .actions{width:100%}h1{font-size:21px}dialog{max-height:95vh;width:calc(100vw - 20px);max-width:calc(100vw - 20px)}.profile{padding-bottom:25px}.chart{gap:8px}.chart-labels{gap:8px}.license-editor{grid-template-columns:repeat(2,1fr)}}
@media print{body{background:white;font-size:11px}.sidebar,.topbar,.page-head .actions,.filters,.pagination,.no-print,.actions,.btn,.icon-btn,#toast,.status-strip,.segmented{display:none!important}.shell{margin:0}.content{padding:0}.panel{box-shadow:none;border:1px solid #ddd;break-inside:avoid}.table-wrap{overflow:visible}table{font-size:10px;white-space:normal}th,td{padding:8px}.stats{display:flex;flex-wrap:wrap}.stat{flex:1;box-shadow:none}.stat strong{font-size:16px}body:has(dialog[open]) #app{display:none}dialog[open]{position:static;display:block;max-width:none;max-height:none;width:100%;box-shadow:none;margin:0;padding:0;overflow:visible}dialog::backdrop{display:none}.modal-head{position:static}.modal-head button{display:none}.receipt{padding:0}.receipt table td{font-size:13px}.grid2{display:block}.grid2 .panel{margin-bottom:15px}input[type=checkbox]{display:none}}
