:root{--bg: #0f1115;--surface: #171a21;--raised: #1e232c;--line: #2a3040;--line2: #39415466;--ink: #e9edf4;--ink2: #a8b2c3;--ink3: #6d7787;--vit: #e8c24a;--ea: #e0574f;--ec: #4f8fe0;--gold: #e8c24a;--ok: #57b26a;--warn: #e0a33f;--crit: #e0574f;--focus: #8ab4ff;--pending: #8a6ee0}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,Segoe UI,Roboto,Ubuntu,sans-serif;font-size:15px;line-height:1.45}code,.mono{font-family:ui-monospace,monospace;font-size:.92em;color:var(--ink2)}a{color:var(--focus);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{margin:0 0 8px;font-weight:650}h1{font-size:20px}h2{font-size:16px;color:var(--ink)}h3{font-size:14px;color:var(--ink2);text-transform:uppercase;letter-spacing:.04em}.shell{max-width:1080px;margin:0 auto;padding:16px}.topbar{display:flex;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid var(--line);background:var(--surface);position:sticky;top:0;z-index:10}.topbar .brand{font-weight:700;color:var(--gold);letter-spacing:.02em}.topbar .spacer{flex:1}.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin:12px 0}.card.raised{background:var(--raised)}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.chip{display:inline-block;padding:2px 10px;border-radius:999px;border:1px solid var(--line);background:var(--raised);color:var(--ink2);font-size:12px;white-space:nowrap}.chip.gold{color:var(--gold);border-color:var(--gold)}.chip.ok{color:var(--ok);border-color:var(--ok)}.chip.warn{color:var(--warn);border-color:var(--warn)}.chip.crit{color:var(--crit);border-color:var(--crit)}.chip.pending{color:var(--pending);border-color:var(--pending)}.note{color:var(--ink3);font-size:13px}.note.warn{color:var(--warn)}.note.crit{color:var(--crit)}button,.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line);border-radius:10px;background:var(--raised);color:var(--ink);padding:10px 14px;font:inherit;cursor:pointer;min-height:44px}button:hover{border-color:var(--ink3)}button:focus-visible,input:focus-visible{outline:2px solid var(--focus);outline-offset:1px}button.primary{background:var(--gold);border-color:var(--gold);color:#14161b;font-weight:650}button.ghost{background:transparent}button:disabled{opacity:.55;cursor:not-allowed}input{width:100%;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--bg);color:var(--ink);font:inherit;min-height:44px}table.list{width:100%;border-collapse:collapse}table.list th,table.list td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line2)}table.list th{color:var(--ink3);font-size:12px;text-transform:uppercase;letter-spacing:.04em}table.list td.num{text-align:right;font-family:ui-monospace,monospace}.center{min-height:70vh;display:grid;place-items:center}.stack{display:grid;gap:10px}.err{color:var(--crit);font-size:13px}.okmsg{color:var(--ok);font-size:13px}select{background:var(--raised, #1b1e26);color:inherit;border:1px solid var(--line2);border-radius:6px;padding:6px 8px;font:inherit}select:focus-visible{outline:2px solid var(--focus);outline-offset:1px}label.field{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--ink3)}label.field>input,label.field>select{color:var(--ink, inherit)}.grid-form{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.banner-ok{border:1px solid var(--ok);border-radius:8px;padding:8px 12px;color:var(--ok);font-size:14px}.btn-adjust{min-width:44px;min-height:44px;padding:0;border-radius:10px;font-size:18px;font-weight:700;line-height:1}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#0a0c109e;display:grid;place-items:center;padding:16px}.modal{width:min(440px,100%);max-height:90vh;overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px 16px}.shortcut-row button{min-width:56px}.projection{border:1px solid var(--line);border-radius:8px;padding:8px 12px;font-family:ui-monospace,monospace;font-size:14px}.banner-undo{border:1px solid var(--pending);border-radius:8px;padding:8px 12px;color:var(--ink2);font-size:13px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.jcard{border:1px solid var(--line2);border-radius:10px;padding:8px 12px;margin-top:8px;background:var(--raised)}.jcard .jtop{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;color:var(--ink3);font-size:12px}.jcard .jmid{margin-top:4px;font-size:14px}.jcard .jevt{margin-top:4px;color:var(--ink3);font-size:12px;font-family:ui-monospace,monospace}.topbar .who{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 600px){.topbar{flex-wrap:wrap;gap:8px 10px;padding:8px 12px}.topbar .spacer{display:none}.topbar>button{margin-left:auto}.topbar .who{flex-basis:100%;order:10;font-size:12px}}.chip.state{font-weight:700;letter-spacing:.02em}.banner-test{border:1px dashed var(--warn);border-radius:8px;padding:6px 12px;color:var(--warn);font-size:13px;margin:8px 0}details.section>summary{cursor:pointer;list-style:none;min-height:44px;display:flex;align-items:center;gap:4px}details.section>summary::-webkit-details-marker{display:none}details.section>summary:before{content:"▸";color:var(--ink3);margin-right:6px}details.section[open]>summary:before{content:"▾"}details.section>summary:focus-visible{outline:2px solid var(--focus);outline-offset:1px;border-radius:6px}a.btn{display:inline-flex;align-items:center;text-decoration:none}a.btn:hover{text-decoration:none;border-color:var(--ink3)}
