:root{--ink:#17212d;--muted:#627384;--canvas:#f4f7f9;--surface:#ffffff;--surface-alt:#edf2f5;--line:#d5e0e7;--navy:#123048;--blue:#1476b8;--blue-dark:#0d5d92;--teal:#16806f;--teal-soft:#dff3ee;--amber:#a86a00;--amber-soft:#fff1d7;--red:#b53e49;--red-soft:#fae3e6;--shadow:0 12px 32px rgba(25,50,70,.08)}*{box-sizing:border-box}body{margin:0;background:var(--canvas);color:var(--ink);font:14px/1.5 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}button,input,select{font:inherit}button{border:1px solid var(--blue);border-radius:6px;background:var(--blue);color:#fff;cursor:pointer;font-weight:650;letter-spacing:.01em;padding:8px 12px;transition:background .16s,border-color .16s,box-shadow .16s}button:hover{background:var(--blue-dark);border-color:var(--blue-dark)}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgba(20,118,184,.25);outline-offset:2px}button.quiet{background:transparent;border-color:var(--line);color:var(--ink)}button.quiet:hover{border-color:var(--blue);color:var(--blue)}button.danger{background:#fff;border-color:#dc9ba2;color:var(--red)}button.danger:hover{background:var(--red-soft);border-color:var(--red)}button[disabled]{cursor:not-allowed;opacity:.55}h1,h2,h3,p{margin:0}h1{font-size:22px;letter-spacing:-.02em}h2{font-size:20px;letter-spacing:-.02em}h3{font-size:14px}.eyebrow{color:var(--blue);font-size:10px;font-weight:800;letter-spacing:.13em}.hint,.page-heading p{color:var(--muted);font-size:13px}.app-shell[hidden],.auth-shell[hidden],[data-admin-only][hidden],[data-user-readonly][hidden]{display:none!important}

/* Authentication deliberately has no research content until a session exists. */
.auth-shell{align-items:center;background:#e8f0f4;display:flex;justify-content:center;min-height:100vh;padding:24px}.auth-card{background:var(--surface);border:1px solid var(--line);border-top:4px solid var(--blue);box-shadow:var(--shadow);max-width:455px;padding:34px;width:100%}.brand-mark{align-items:center;background:var(--navy);color:#fff;display:inline-flex;font-size:12px;font-weight:800;height:32px;justify-content:center;letter-spacing:.04em;width:32px}.auth-card .brand-mark{margin-bottom:18px}.auth-card h1{font-size:28px;margin:3px 0 7px}.auth-lead{color:var(--muted);font-size:14px;max-width:370px}.auth-tabs{border-bottom:1px solid var(--line);display:flex;gap:14px;margin:26px 0 18px}.auth-tabs button{background:transparent;border:0;border-bottom:2px solid transparent;border-radius:0;color:var(--muted);padding:8px 2px}.auth-tabs button.active{border-color:var(--blue);color:var(--blue)}.auth-form{display:grid;gap:13px}.auth-form label,.limit-form label{color:var(--ink);display:grid;font-size:12px;font-weight:700;gap:5px}.auth-form input,.limit-form input,form input,form select{background:#fff;border:1px solid #b8c8d3;border-radius:5px;color:var(--ink);min-height:38px;padding:8px}.auth-form button{margin-top:4px}.form-message{background:var(--amber-soft);color:#755000;display:none;font-size:13px;margin-top:16px;padding:8px 10px}.form-message.visible{display:block}.form-message.error{background:var(--red-soft);color:#8a2431}.setup-note{background:var(--teal-soft);border-left:3px solid var(--teal);color:#155e54;font-size:13px;padding:9px 11px}

/* App shell */
.app-shell{display:grid;grid-template-columns:238px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--navy);color:#dae8f1;display:flex;flex-direction:column;padding:20px 14px;position:sticky;top:0;height:100vh}.side-brand{align-items:center;display:flex;gap:10px;margin:0 6px 25px}.side-brand .brand-mark{background:#fff;color:var(--navy)}.side-brand strong{display:block;font-size:15px}.side-brand span{color:#a6bdcc;display:block;font-size:11px}.sidebar nav{display:grid;gap:3px}.sidebar nav button{background:transparent;border:0;border-left:3px solid transparent;border-radius:0;color:#c8dbe6;display:flex;font-size:13px;font-weight:600;gap:10px;padding:10px 9px;text-align:left}.sidebar nav button span{color:#91b6ce;width:15px}.sidebar nav button:hover{background:#1b415d;color:#fff}.sidebar nav button.active{background:#204b69;border-left-color:#76c4ee;color:#fff}.sidebar nav button.active span{color:#fff}.sidebar-note{border-top:1px solid #31566f;color:#a6bdcc;font-size:11px;margin:22px 6px 0;padding-top:16px}.console{min-width:0}.topbar{align-items:center;background:var(--surface);border-bottom:1px solid var(--line);display:flex;justify-content:space-between;min-height:76px;padding:14px 32px}.topbar h1{font-size:21px;margin-top:1px}.session-info{align-items:center;display:flex;gap:10px}.identity{color:var(--muted);font-size:12px;max-width:210px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.role-badge,.badge,.read-only-note{border-radius:999px;font-size:10px;font-weight:800;letter-spacing:.08em;padding:5px 8px}.role-badge{background:var(--teal-soft);color:#17665b}.badge.running{background:var(--teal-soft);color:#17665b}.badge.paused{background:var(--amber-soft);color:#805100}.badge.stopped,.badge.error{background:var(--red-soft);color:#952d39}.read-only-note{background:#e5edf3;color:#516a7d}main{max-width:1600px;padding:28px 32px}.page{display:none}.page.active{display:block}.page-heading{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:18px}.page-heading h2{margin-bottom:3px}

/* Research panels */
.layout-world{display:grid;gap:18px;grid-template-columns:minmax(0,1fr) 285px}.world-panel,.controls,article,.detail,table{background:var(--surface);border:1px solid var(--line);box-shadow:0 2px 8px rgba(25,50,70,.035)}.world-panel{overflow:hidden}.world-panel canvas{background:#0f2434;display:block;height:auto;touch-action:none;width:100%}.legend{align-items:center;color:var(--muted);display:flex;font-size:12px;gap:7px;padding:9px 12px}.legend span{margin-left:auto}.legend i{border-radius:50%;display:inline-block;height:9px;width:9px}.legend .organism{background:#4fb2e4}.legend .resource{background:#46a88f}.controls{display:flex;flex-direction:column;gap:11px;padding:15px}.controls h2{font-size:14px}.controls>div[data-admin-only]{display:flex;flex-direction:column;gap:10px}.control-divider{border-top:1px solid var(--line);margin:1px 0}.controls label{align-items:center;color:var(--muted);display:flex;font-size:12px;gap:7px;justify-content:space-between}.controls label input[type=checkbox]{margin-right:auto}.controls select{max-width:160px}.button-row{display:flex;flex-wrap:wrap;gap:7px}.button-row button{font-size:12px}.inspector{color:#395061;font:11px/1.55 ui-monospace,SFMono-Regular,Consolas,monospace;max-height:290px;overflow:auto;white-space:pre-wrap}.event-overlay{border-left:3px solid var(--blue);color:var(--muted);font-size:12px;margin-top:14px;padding:5px 9px}.metrics{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));margin:0 0 18px}.metric{background:var(--surface);border:1px solid var(--line);border-top:3px solid #a9cfdf;box-shadow:0 2px 8px rgba(25,50,70,.035);padding:13px}.metric b{color:var(--navy);display:block;font-size:23px;letter-spacing:-.03em}.metric span{color:var(--muted);font-size:11px;font-weight:700;text-transform:uppercase}.charts{display:grid;gap:14px;grid-template-columns:repeat(2,minmax(0,1fr))}.charts article,article,.detail{padding:15px}.charts svg{background:#f8fafb;border:1px solid #e6edf1;height:190px;margin-top:9px;width:100%}.line{fill:none;stroke:var(--blue);stroke-width:2}.line.green{stroke:var(--teal)}.line.amber{stroke:var(--amber)}.grid{stroke:#dbe6eb;stroke-width:1}table{border-collapse:collapse;margin-top:0;width:100%}th,td{border-bottom:1px solid #e5edf1;padding:10px;text-align:left;vertical-align:top}th{background:#f5f8fa;color:#627384;font-size:10px;letter-spacing:.07em;text-transform:uppercase}tr:last-child td{border-bottom:0}tr[data-id]{cursor:pointer}tr[data-id]:hover{background:#f1f7fa}.detail{margin-top:15px}.timeline-event{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--blue);box-shadow:0 2px 8px rgba(25,50,70,.035);margin:8px 0;padding:10px 12px}.timeline-event.warning{border-left-color:var(--amber)}.timeline-event.critical{border-left-color:var(--red)}.timeline-event small{color:var(--muted)}form{align-items:end;display:flex;flex-wrap:wrap;gap:8px;margin:0 0 15px}.limit-form{background:var(--surface-alt);border:1px solid var(--line);padding:12px}.empty{color:var(--muted);padding:18px}

.auth-tabs[hidden],.auth-form[hidden]{display:none!important}
@media(max-width:980px){.app-shell{grid-template-columns:1fr}.sidebar{height:auto;padding:12px 16px;position:static}.side-brand{margin:0 4px 12px}.sidebar nav{display:flex;overflow:auto}.sidebar nav button{flex:0 0 auto}.sidebar-note{display:none}.topbar{padding:14px 20px}main{padding:22px 20px}.layout-world{grid-template-columns:1fr}.controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.controls .inspector{grid-column:span 2}.controls .control-divider{display:none}}
@media(max-width:640px){.auth-card{padding:25px 22px}.topbar{align-items:flex-start;gap:12px}.session-info{flex-wrap:wrap;justify-content:flex-end}.identity{display:none}main{padding:18px 14px}.page-heading{gap:9px;flex-direction:column}.charts{grid-template-columns:1fr}.controls{display:flex}.controls .inspector{grid-column:auto}.legend span{display:none}.world-panel canvas{min-height:280px;object-fit:contain}.sidebar nav button{font-size:12px;padding:8px}.topbar h1{font-size:18px}.role-badge{display:none}th,td{padding:8px;white-space:nowrap}.page{overflow:auto}}
