:root{--bg: #0f172a;--panel: #1e293b;--panel-2: #273449;--text: #e2e8f0;--muted: #94a3b8;--border: #334155;--accent: #2563eb;--accent-hover: #1d4ed8;--ok: #16a34a;--incident: #dc2626;--uncertain: #ea9a16;--neutral: #64748b;--font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);background:var(--bg);color:var(--text);font-size:17px;-webkit-text-size-adjust:100%}h1,h2,h3{margin:0 0 .5rem}button{font-family:inherit;font-size:1rem;padding:.85rem 1.25rem;border-radius:10px;border:1px solid var(--border);background:var(--panel-2);color:var(--text);cursor:pointer;min-height:48px;transition:background .15s ease}button:hover{background:#33425c}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover{background:var(--accent-hover)}button.danger{background:var(--incident);border-color:var(--incident);color:#fff}button.big{font-size:1.25rem;padding:1.1rem 1.75rem;min-height:64px}input,select,textarea{font-family:inherit;font-size:1rem;padding:.7rem .85rem;border-radius:8px;border:1px solid var(--border);background:#0b1424;color:var(--text);width:100%;min-height:46px}label{display:block;font-size:.9rem;color:var(--muted);margin:.75rem 0 .3rem}a{color:#93c5fd}.app{display:flex;flex-direction:column;min-height:100%}.topbar{display:flex;align-items:center;gap:1rem;padding:.75rem 1.25rem;background:var(--panel);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}.topbar .brand{font-weight:700;font-size:1.1rem;margin-right:auto}.nav{display:flex;gap:.5rem;flex-wrap:wrap}.nav a{padding:.55rem .9rem;border-radius:8px;text-decoration:none;color:var(--text);background:var(--panel-2);border:1px solid var(--border)}.nav a.active{background:var(--accent);border-color:var(--accent);color:#fff}.content{padding:1.25rem;max-width:1200px;margin:0 auto;width:100%}.card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:1.1rem;margin-bottom:1rem}.grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.row{display:flex;gap:.75rem;flex-wrap:wrap;align-items:center}.spacer{flex:1}.badge{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .75rem;border-radius:999px;font-weight:600;font-size:.9rem;color:#fff}.badge.ok{background:var(--ok)}.badge.incidents,.badge.misplaced{background:var(--incident)}.badge.uncertain{background:var(--uncertain)}.badge.not_evaluable{background:var(--neutral)}.badge.disabled{background:#475569}.badge.in_progress{background:var(--accent)}.banner{padding:1.5rem;border-radius:14px;text-align:center;font-size:1.6rem;font-weight:800;margin-bottom:1.25rem}.banner.ok{background:#16a34a2e;color:#4ade80;border:2px solid var(--ok)}.banner.incidents{background:#dc26262e;color:#f87171;border:2px solid var(--incident)}.banner.not_evaluable{background:#64748b2e;color:#cbd5e1;border:2px solid var(--neutral)}.banner.in_progress{background:#2563eb2e;color:#93c5fd;border:2px solid var(--accent)}.error-text{color:#fca5a5}.muted{color:var(--muted)}.small{font-size:.85rem}.code-block{background:#0b1424;border:1px solid var(--border);border-radius:10px;padding:.75rem .9rem;margin:.4rem 0;overflow-x:auto;font-size:.85rem;line-height:1.5;white-space:pre;-webkit-user-select:all;user-select:all}.login-wrap{display:grid;place-items:center;min-height:100vh;padding:1rem}.login-card{width:min(420px,100%)}.spinner{width:26px;height:26px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.center-screen{display:grid;place-items:center;min-height:60vh;gap:1rem}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:.6rem .5rem;border-bottom:1px solid var(--border)}th{color:var(--muted);font-weight:600}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:grid;place-items:center;z-index:50;padding:1rem}.modal{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:1.25rem;width:min(560px,100%);max-height:90vh;overflow:auto}.img-frame{background:#0b1424;border:1px solid var(--border);border-radius:10px;overflow:hidden}.img-frame img{display:block;width:100%;height:auto}.editor-stage{background:#0b1424;border:1px solid var(--border);border-radius:10px;touch-action:none}
