:root{--orchid:#da4cf2;--coral:#ef4f7d;--brand-ink:#c92a5e;--ink:#1c1424;--muted:#6f6879;--line:#ece6f0;--bg:#f9f6fa;--brand-light:#feeef3;--danger:#dc2626;--success:#16a34a;--warn-bg:#fff7ed;--warn-border:#fdba74;--warn-ink:#c2410c;--radius:14px;color:var(--ink);background:var(--bg);font-family:Segoe UI,system-ui,-apple-system,sans-serif;line-height:1.45}*{box-sizing:border-box}body{background:var(--bg);min-height:100vh;margin:0}a{color:var(--brand-ink);text-decoration:none}button,input{font:inherit}#root{min-height:100vh}.brand-student{color:var(--ink);font-weight:800}.brand-ace{background:linear-gradient(90deg, var(--orchid), var(--coral));color:#0000;-webkit-background-clip:text;background-clip:text;font-weight:800}.shell{grid-template-columns:220px 1fr;min-height:100vh;display:grid}.sidebar{border-right:1px solid var(--line);background:#fff;flex-direction:column;gap:20px;padding:20px 16px;display:flex}.brand .brand-student,.brand .brand-ace{font-size:1.15rem}.brand-sub{color:var(--muted);margin-top:2px;font-size:.8rem;font-weight:600}.sidebar nav{flex-direction:column;flex:1;gap:4px;display:flex}.sidebar nav a{color:var(--ink);border-radius:10px;padding:10px 12px;font-weight:600}.sidebar nav a.active{background:var(--brand-light);color:var(--brand-ink)}.sidebar-foot{border-top:1px solid var(--line);flex-direction:column;gap:8px;padding-top:12px;display:flex}.who{flex-direction:column;gap:2px;font-size:.85rem;display:flex}.who span{color:var(--muted)}.linkish{color:var(--brand-ink);cursor:pointer;text-align:left;background:0 0;border:none;padding:0;font-weight:700}.main{max-width:1100px;padding:28px 32px 48px}@media (width<=800px){.shell{grid-template-columns:1fr}.sidebar{border-right:none;border-bottom:1px solid var(--line)}.sidebar nav{flex-flow:wrap}}.login-page{background:radial-gradient(ellipse at top left, #fbeeefe8, transparent 50%), radial-gradient(ellipse at bottom right, #feeef3, transparent 45%), var(--bg);place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{border:1px solid var(--line);background:#fff;border-radius:18px;flex-direction:column;gap:12px;width:min(400px,100%);padding:28px 24px;display:flex;box-shadow:0 12px 40px #1c14240f}.login-card h1{margin:0;font-size:1.6rem}.lede{color:var(--muted);margin:0 0 8px;font-weight:600}.login-card label{color:var(--muted);flex-direction:column;gap:6px;font-size:.85rem;font-weight:700;display:flex}.login-card input{border:1px solid var(--line);color:var(--ink);border-radius:10px;padding:10px 12px}.btn-primary{color:#fff;cursor:pointer;background:linear-gradient(90deg, var(--orchid), var(--coral));border:none;border-radius:999px;margin-top:8px;padding:12px 16px;font-weight:700}.btn-primary:disabled{opacity:.6;cursor:default}.error{color:var(--danger);margin:0;font-size:.9rem;font-weight:600}.hint{color:var(--muted);text-align:center;margin:4px 0 0;font-size:.75rem}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.page-header h1{margin:0;font-size:1.55rem}.page-sub{color:var(--muted);max-width:52rem;margin:6px 0 0}.page-actions{flex-wrap:wrap;gap:8px;display:flex}.btn-primary,.btn-ghost,.btn-danger{cursor:pointer;border:none;border-radius:999px;padding:10px 16px;font-weight:700}.btn-primary{color:#fff;background:linear-gradient(90deg, var(--orchid), var(--coral))}.btn-primary:disabled,.btn-ghost:disabled,.btn-danger:disabled{opacity:.6;cursor:default}.btn-ghost{border:1px solid var(--line);color:var(--ink);background:#fff}.btn-danger{color:#fff;background:var(--danger)}.banner{border-radius:12px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;padding:12px 14px;font-weight:600;display:flex}.banner-error{color:var(--danger);background:#fef2f2;border:1px solid #fecaca}.banner-success{color:var(--success);background:#f0fdf4;border:1px solid #bbf7d0}.banner-info{color:#1d4ed8;background:#eff6ff;border:1px solid #bfdbfe}.banner-dismiss{cursor:pointer;color:inherit;background:0 0;border:none;font-weight:700}.empty{text-align:center;border:1px dashed var(--line);border-radius:var(--radius);color:var(--muted);background:#fff;padding:36px 20px}.empty strong{color:var(--ink);margin-bottom:6px;display:block}.empty p{margin:0}.muted{color:var(--muted)}.small{font-size:.85rem}.stack{flex-direction:column;gap:24px;display:flex}.section-label{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 10px;font-size:.8rem}.ticket-list{flex-direction:column;gap:10px;display:flex}.ticket-row{text-align:left;border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;background:#fff;justify-content:space-between;align-items:center;gap:16px;width:100%;padding:14px 16px;display:flex}.ticket-row:hover{border-color:#e9c4f0}.ticket-high{background:var(--warn-bg);border-color:var(--warn-border)}.ticket-row-main{min-width:0}.ticket-row-top{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:4px;display:flex}.ref{font-size:.85rem;font-weight:800}.ticket-title{display:block}.ticket-meta{color:var(--muted);margin-top:4px;font-size:.85rem}.open-hint{color:var(--brand-ink);white-space:nowrap;font-weight:700}.pill{text-transform:uppercase;letter-spacing:.03em;border-radius:999px;align-items:center;padding:2px 8px;font-size:.72rem;font-weight:800;display:inline-flex}.pill-warn{color:var(--warn-ink);background:#ffedd5}.pill-paused{background:var(--warn-bg);color:var(--warn-ink);border:1px solid var(--warn-border)}.pause-banner{background:var(--warn-bg);border:1px solid var(--warn-border);border-radius:var(--radius);color:var(--warn-ink);margin-bottom:16px;padding:14px 16px}.pause-banner p{margin:6px 0 0;font-weight:500}.detail-grid{grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px;display:grid}@media (width<=800px){.detail-grid{grid-template-columns:1fr}}.panel{border:1px solid var(--line);border-radius:var(--radius);background:#fff;margin-bottom:14px;padding:16px 18px}.panel h2{margin:0 0 12px;font-size:1rem}.kv{grid-template-columns:110px 1fr;gap:8px 12px;margin:0;display:grid}.kv dt{color:var(--muted);font-size:.85rem;font-weight:700}.kv dd{margin:0}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.92rem}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:10px 8px}th{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;font-size:.78rem}.row-reporter{background:var(--warn-bg)}.outcome-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}@media (width<=800px){.outcome-grid{grid-template-columns:1fr}}.outcome{text-align:left;border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:12px;flex-direction:column;gap:6px;padding:14px;display:flex}.outcome strong{color:var(--ink)}.outcome span{color:var(--muted);font-size:.88rem}.outcome:hover{border-color:#e9c4f0}.outcome.danger{background:snow;border-color:#fecaca}.outcome.danger:hover{border-color:#f87171}.msg-list{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.msg-list li{border-bottom:1px solid var(--line);padding-bottom:12px}.msg-list li:last-child{border-bottom:none;padding-bottom:0}.msg-head{justify-content:space-between;gap:12px;margin-bottom:4px;display:flex}.msg-list p{white-space:pre-wrap;margin:0}.flag-card{border:1px solid var(--line);border-radius:var(--radius);background:#fff;flex-direction:column;gap:8px;padding:14px 16px;display:flex}.flag-detail{background:var(--bg);white-space:pre-wrap;color:var(--ink);border-radius:10px;margin:0;padding:10px 12px;font-family:inherit;font-size:.85rem}.flag-actions{flex-wrap:wrap;gap:8px;margin-top:4px;display:flex}.uni-from{word-break:break-all;font-size:1.05rem;display:block}.inst-input{border:1px solid var(--line);width:100%;font:inherit;box-sizing:border-box;border-radius:10px;margin:6px 0 12px;padding:10px 12px;display:block}.analytics-grid{flex-direction:column;gap:14px;display:flex}.stat-row{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;display:grid}.stat{background:var(--bg);border-radius:12px;padding:12px}.stat-warn{background:var(--warn-bg);border:1px solid var(--warn-border)}.stat-value{font-size:1.5rem;font-weight:800}.stat-label{color:var(--muted);margin-top:2px;font-size:.8rem;font-weight:600}.modal-backdrop{z-index:50;background:#1c142473;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:16px;width:min(440px,100%);padding:20px;box-shadow:0 20px 50px #1c142433}.modal h2{margin:0 0 8px;font-size:1.15rem}.modal-body{color:var(--muted);margin:0 0 18px}.modal-actions{justify-content:flex-end;gap:8px;display:flex}
