*{box-sizing:border-box;margin:0;padding:0}:root{--bg:#ede9f4;--card:#ede9f4;--accent:#7b52ab;--accent-end:#a67dd4;--accent-dim:#f3eeff;--text:#1a1320;--text-dim:#4a3860;--text-muted:#9a88b0;--border:#7b52ab26;--sidebar:#e2dbf0;--sidebar-active-bg:#d5cbe8;--shadow-raised:8px 8px 16px #6446912e, -4px -4px 12px #ffffffd9;--shadow-raised-sm:4px 4px 8px #64469126, -2px -2px 6px #fffc;--shadow-inset:inset 4px 4px 8px #64469126, inset -2px -2px 6px #ffffffbf;--shadow-inset-sm:inset 2px 2px 5px #6446911f, inset -1px -1px 4px #ffffffb3}html,body{height:100%}body{background:var(--bg);color:var(--text);font-family:Plus Jakarta Sans,sans-serif;font-size:14px;line-height:1.5}.material-symbols-outlined{font-variation-settings:"FILL" 0, "wght" 400, "GRAD" 0, "opsz" 24;-webkit-user-select:none;user-select:none;font-family:Material Symbols Outlined;font-size:20px;line-height:1}.material-symbols-outlined.filled{font-variation-settings:"FILL" 1, "wght" 400, "GRAD" 0, "opsz" 24}.card{background:var(--card);box-shadow:var(--shadow-raised);border-radius:16px;padding:20px}.card-sm{background:var(--card);box-shadow:var(--shadow-raised-sm);border-radius:12px;padding:14px 16px}input,select,textarea{background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow-inset-sm);color:var(--text);border-radius:10px;outline:none;width:100%;padding:10px 14px;font-family:inherit;font-size:14px;transition:border-color .2s}input:focus,select:focus,textarea:focus{border-color:var(--accent)}.btn{cursor:pointer;border:none;border-radius:10px;align-items:center;gap:6px;padding:10px 20px;font-family:inherit;font-size:14px;font-weight:600;transition:transform .15s,box-shadow .15s;display:inline-flex}.btn:active{transform:scale(.97)}.btn-primary{background:linear-gradient(135deg, var(--accent), var(--accent-end));color:#fff;box-shadow:4px 4px 10px #7b52ab59,-2px -2px 6px #ffffffb3}.btn-primary:hover{box-shadow:5px 5px 14px #7b52ab73,-2px -2px 6px #ffffffb3}.btn-ghost{background:var(--card);box-shadow:var(--shadow-raised-sm);color:var(--text-dim)}.btn-ghost:hover{box-shadow:var(--shadow-raised)}.btn-danger{color:#b91c1c;box-shadow:var(--shadow-raised-sm);background:#fee2e2}.app-layout{height:100vh;display:flex;overflow:hidden}.sidebar{background:var(--sidebar);z-index:10;flex-direction:column;flex-shrink:0;width:220px;padding:24px 16px;display:flex;overflow-y:auto;box-shadow:4px 0 12px #6446911a}.main-content{flex:1;padding:32px;overflow-y:auto}.nav-link{color:var(--text-dim);cursor:pointer;border-radius:10px;align-items:center;gap:10px;padding:9px 12px;font-size:13px;font-weight:500;text-decoration:none;transition:background .15s,color .15s;display:flex}.nav-link:hover{background:var(--sidebar-active-bg)}.nav-link.active{background:var(--sidebar-active-bg);border-right:3px solid var(--accent);color:var(--accent);font-weight:600}.stat-tile{background:var(--card);box-shadow:var(--shadow-raised-sm);border-top:3px solid var(--accent);border-radius:14px;padding:16px 20px}.stat-tile.green{border-top-color:#16a34a}.stat-tile.amber{border-top-color:#d97706}.stat-tile.red{border-top-color:#dc2626}.stat-tile.blue{border-top-color:#2563eb}.stat-number{font-family:Fraunces,serif;font-size:32px;font-weight:600;line-height:1}.stat-label{color:var(--text-muted);letter-spacing:.05em;text-transform:uppercase;margin-top:4px;font-size:11px;font-weight:500}.badge{border-radius:6px;padding:3px 8px;font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:500}.badge-purple{background:var(--accent-dim);color:var(--accent)}.badge-green{color:#15803d;background:#dcfce7}.badge-amber{color:#92400e;background:#fef3c7}.badge-red{color:#b91c1c;background:#fee2e2}.badge-blue{color:#1d4ed8;background:#dbeafe}.badge-gray{color:#6b7280;background:#f3f4f6}.data-table{border-collapse:collapse;width:100%}.data-table th{color:var(--text-muted);letter-spacing:.06em;text-align:left;text-transform:uppercase;padding:0 16px 10px;font-size:11px;font-weight:600}.data-table td{border-top:1px solid var(--border);vertical-align:middle;padding:12px 16px}.data-table tr:hover td{background:#7b52ab0a}.page-header{justify-content:space-between;align-items:flex-start;margin-bottom:28px;display:flex}.page-title{color:var(--text);font-family:Fraunces,serif;font-size:26px;font-weight:600}.page-subtitle{color:var(--text-muted);margin-top:2px;font-size:13px}.grid-4{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.grid-3{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}.grid-2{grid-template-columns:repeat(2,1fr);gap:20px;display:grid}.disc-bar-wrap{flex-direction:column;gap:8px;display:flex}.disc-bar-row{align-items:center;gap:10px;display:flex}.disc-bar-label{width:20px;font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:600}.disc-bar-track{background:var(--border);border-radius:4px;flex:1;height:8px;overflow:hidden}.disc-bar-fill{border-radius:4px;height:100%;transition:width .5s}.disc-bar-score{color:var(--text-muted);width:30px;font-size:12px}.progress-track{background:var(--border);border-radius:6px;height:8px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--accent), var(--accent-end));border-radius:6px;height:100%;transition:width .4s}.test-wrap{background:var(--bg);flex-direction:column;align-items:center;min-height:100vh;padding:40px 16px;display:flex}.test-card{background:var(--card);box-shadow:var(--shadow-raised);border-radius:20px;width:100%;max-width:640px;padding:36px 40px}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background:#00000059;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-box{background:var(--card);border-radius:20px;width:500px;max-width:95vw;max-height:90vh;padding:28px;overflow-y:auto;box-shadow:0 20px 60px #00000040}.divider{background:var(--border);height:1px;margin:16px 0}.text-mono{font-family:IBM Plex Mono,monospace}.text-accent{color:var(--accent)}.flex{display:flex}.flex-center{align-items:center;display:flex}.justify-between{justify-content:space-between}.gap-8{gap:8px}.mt-4{margin-top:16px}.mt-2{margin-top:8px}.mb-4{margin-bottom:16px}.loading{color:var(--text-muted);text-align:center;padding:40px;font-size:13px}
