:root{--ink: #050505;--muted: #68645b;--line: #ded9ca;--paper: #fffef9;--page: #f7f5ec;--soft: #f0ecdc;--accent: #fdd302;--accent-soft: #fff7bf;--danger: #7a251d;--danger-soft: #f4dfd8;color:var(--ink);background:var(--page);font-family:Arial,Helvetica,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:var(--page)}button,input,select,a{font:inherit}button{min-height:44px;border:1px solid var(--ink);border-radius:6px;background:var(--ink);color:var(--paper);cursor:pointer;font-size:15px;font-weight:700;padding:11px 16px;transition:background .12s ease,border-color .12s ease,opacity .12s ease,transform .12s ease}button:hover:not(:disabled){background:#1d1d1b;transform:translateY(-1px)}button:disabled{cursor:not-allowed;opacity:.45}button.primary{background:var(--ink)}button.secondary{background:var(--paper);color:var(--ink)}button.secondary:hover:not(:disabled){background:var(--accent-soft)}button.full{margin-top:16px;width:100%}input,select{width:100%;height:46px;border:1px solid #bfb8a9;border-radius:6px;background:var(--paper);color:var(--ink);margin-top:8px;padding:10px 12px}input:focus,select:focus{border-color:var(--ink);box-shadow:0 0 0 3px #fdd30240;outline:0}label{display:block;color:var(--ink);font-size:14px;font-weight:700;margin-top:16px}.shell{display:flex;flex-direction:column;margin:0 auto;max-width:1080px;min-height:100vh;padding:28px 22px 44px}.shell.mode-failure{--accent: #b91c1c;--accent-soft: #f7dede;--danger: #7f1d1d;--danger-soft: #f6dada;--line: #e1caca;--soft: #f3e8e8}.topbar{align-items:center;border-bottom:1px solid var(--line);display:flex;gap:24px;justify-content:space-between;margin-bottom:26px;padding-bottom:18px}.brand{display:inline-flex;line-height:0;min-width:0;text-decoration:none}.brand img{display:block;height:auto;width:168px}.mode-switch{align-items:center;border:1px solid var(--line);border-radius:999px;background:var(--soft);display:inline-flex;height:30px;min-height:30px;padding:3px;width:56px}.mode-switch span{background:var(--ink);border-radius:999px;display:block;height:22px;transition:transform .15s ease;width:22px}.mode-switch:hover:not(:disabled){background:var(--accent-soft);transform:none}.mode-switch.on span{background:var(--accent);transform:translate(26px)}.mode-switch:disabled{cursor:default}.footer-links{align-items:center;display:flex;gap:16px;justify-content:center;margin-top:auto;padding-top:34px}.footer-links a{color:var(--muted);font-size:12px;font-weight:600;opacity:.72;padding:6px 4px;text-decoration:none}.footer-links a:hover{color:var(--ink);opacity:1}.footer-links a.active{color:var(--ink);opacity:1;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px}h2,h3{letter-spacing:0;margin:0}h2{font-size:22px;font-weight:800}h3{font-size:16px;font-weight:800}.notice{border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);font-weight:700;margin-bottom:18px;padding:12px 14px}.notice.error{border-color:#d7a69e;background:var(--danger-soft);color:var(--danger)}.notice.success{border-color:var(--ink);background:var(--accent-soft);color:var(--ink)}.single{display:grid;gap:20px;grid-template-columns:minmax(0,1fr) minmax(320px,.52fr)}.integrity-layout{margin-top:20px}.config-layout{grid-template-columns:minmax(360px,520px) minmax(280px,1fr)}.config-page{display:grid;gap:20px;grid-template-columns:minmax(420px,1fr) minmax(280px,.75fr)}.config-stack{display:grid;gap:20px}.audit-layout{display:block}.admin-layout{display:grid;gap:20px;grid-template-columns:minmax(0,1fr)}.admin-count{grid-column:1 / -1}.admin-node-panel .audit-section{margin-top:0}.panel{border:1px solid var(--line);border-radius:8px;background:var(--paper);padding:22px}.page-action{display:flex;justify-content:flex-end;margin:-8px 0 14px}.back-link{border:1px solid var(--line);border-radius:6px;color:var(--ink);font-size:13px;font-weight:700;padding:9px 12px;text-decoration:none}.back-link:hover{background:var(--soft)}.panel-title{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.election-card{border:1px solid var(--line);border-radius:6px;background:var(--soft);padding:12px 13px}.election-card strong{display:block;font-size:15px}.candidates{display:grid;gap:10px;margin:18px 0}.candidate{align-items:center;border:1px solid var(--line);border-radius:8px;cursor:pointer;display:flex;gap:14px;margin:0;min-height:70px;padding:12px;transition:background .12s ease,border-color .12s ease,box-shadow .12s ease}.candidate:hover{border-color:#bfb8a9}.candidate.selected{border-color:var(--ink);background:var(--accent-soft);box-shadow:inset 5px 0 0 var(--accent)}.candidate input{display:none}.candidate-number{align-items:center;border:1px solid var(--ink);border-radius:6px;color:var(--ink);display:inline-flex;font-size:20px;font-weight:800;height:46px;justify-content:center;min-width:54px}.candidate.selected .candidate-number{background:var(--accent)}.candidate strong{display:block}.panel>button.primary{margin-top:18px;width:100%}.form-actions{display:grid;gap:10px;grid-template-columns:.8fr 1.2fr;margin-top:18px}.vote-actions{display:grid;gap:10px;grid-template-columns:.75fr 1.25fr;margin-top:18px}.form-actions .primary,.form-actions .secondary,.vote-actions .primary,.vote-actions .secondary{margin:0;width:100%}.integrity-actions{display:flex;justify-content:flex-end;margin-top:18px}.integrity-actions .primary{min-width:180px}.lock-row{align-items:center;border-top:1px solid var(--line);display:grid;gap:12px;grid-template-columns:minmax(0,1fr) 190px;margin-top:18px;padding-top:18px}.lock-row span{color:var(--muted);font-size:14px;font-weight:800}.lock-row .primary{margin:0;width:100%}.option-title{margin-top:18px}.option-title strong{display:block;font-size:14px}.option-list{display:grid;gap:10px;margin-top:10px}.option-row{display:grid;gap:10px;grid-template-columns:92px minmax(0,1fr) 104px}.option-row input{margin-top:0}.option-row button{min-height:46px;padding-left:10px;padding-right:10px}.attack-box h3{margin-bottom:14px}.attack-controls{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.attack-result{border:1px solid var(--line);border-radius:8px;background:var(--soft);padding:14px}.attack-result.accepted{border-color:var(--danger);box-shadow:inset 5px 0 0 var(--danger)}.attack-result.blocked{border-color:var(--ink);box-shadow:inset 5px 0 0 var(--accent)}.attack-result p{color:var(--muted);line-height:1.4;margin:0}.node-command{margin-top:10px}.node-command-line{align-items:center;background:var(--ink);border-radius:8px;display:grid;gap:10px;grid-template-columns:auto minmax(0,1fr) 92px;padding:10px}.node-command-line span{color:var(--accent);font-family:Consolas,Courier New,monospace;font-weight:800}.node-command-line input{background:transparent;border:0;color:#fff;font-family:Consolas,Courier New,monospace;margin:0;min-height:36px;outline:none;padding:0}.node-command-line input::placeholder{color:#ffffff7a}.node-command-line button{background:#fff;color:var(--ink);min-height:36px;padding:0 12px}.node-command-output{border:1px solid var(--line);border-radius:8px;color:var(--muted);line-height:1.4;margin-top:10px;padding:12px 14px}.node-command-output pre{font-family:Consolas,Courier New,monospace;font-size:13px;line-height:1.45;margin:8px 0 0;max-height:260px;overflow:auto;white-space:pre-wrap;word-break:break-word}.node-command-meta{color:var(--muted);font-family:Consolas,Courier New,monospace;font-size:12px;font-weight:800;text-transform:uppercase}.node-command-output.accepted{border-color:var(--danger);box-shadow:inset 5px 0 0 var(--danger)}.node-command-output.blocked,.node-command-output.ok{box-shadow:inset 5px 0 0 var(--accent)}.attack-result small{color:var(--muted);display:block;margin-top:10px;overflow-wrap:anywhere}.attack-result-grid{display:grid;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:12px}.attack-result-grid div{border:1px solid var(--line);border-radius:6px;background:var(--paper);padding:10px}.attack-result-grid span{color:var(--muted);display:block;font-size:11px;font-weight:800;margin-bottom:5px;text-transform:uppercase}.attack-result-grid b{font-size:22px}.empty-box{border:1px dashed var(--line);border-radius:8px;min-height:94px}.receipt-card{border:1px solid var(--line);border-radius:8px;background:var(--soft);padding:14px}.receipt-head{align-items:center;border-bottom:1px solid var(--line);display:flex;gap:9px;padding-bottom:11px}.status-dot{border:1px solid var(--ink);border-radius:999px;display:inline-block;height:10px;width:10px}.status-dot.ok{background:var(--accent)}.receipt-grid{display:grid;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:12px}.receipt-grid div,.receipt-grid span,.metric span,.key-box span{color:var(--muted);display:block;font-size:11px;font-weight:800;letter-spacing:0;margin-bottom:5px;text-transform:uppercase}.receipt-grid strong,.key-box strong{overflow-wrap:anywhere}.integrity-result{margin-top:18px}.integrity-result p{color:var(--muted);line-height:1.45;margin:12px 0 0}.integrity-notice{margin-top:12px}strong.selectable{user-select:all;-webkit-user-select:all;cursor:pointer}strong.selectable:hover{opacity:.8}.key-box{border:1px solid var(--line);border-radius:8px;background:var(--soft);margin-top:16px;padding:12px}.voter-list{display:grid;gap:10px}.voter-list:empty:before{content:"";display:block;min-height:52px;border:1px dashed var(--line);border-radius:8px}.voter-item{align-items:center;border:1px solid var(--line);border-radius:8px;display:flex;gap:12px;justify-content:space-between;padding:12px}.voter-item span,.voter-item strong{overflow-wrap:anywhere}.voter-item strong{border:1px solid var(--ink);border-radius:6px;min-width:64px;padding:6px 8px;text-align:center}.metrics{display:grid;gap:12px;grid-template-columns:repeat(4,minmax(0,1fr))}.metric{border:1px solid var(--line);border-radius:8px;background:var(--soft);padding:14px}.metric strong{color:var(--ink);display:block;font-size:24px;line-height:1.1}.metric.ok{border-color:var(--ink);box-shadow:inset 5px 0 0 var(--accent)}.metric.warn{border-style:dashed}.audit-section{margin-top:22px}.audit-section h3{margin-bottom:12px}.result-list{border:1px solid var(--line);border-radius:8px;overflow:hidden}.result-row{align-items:center;border-bottom:1px solid var(--line);display:grid;gap:14px;grid-template-columns:160px minmax(0,1fr) 42px;padding:12px}.result-row:last-child{border-bottom:0}.result-row span{color:var(--muted);display:block;font-size:12px;margin-top:3px}.result-row b{text-align:right}.bar{background:var(--soft);border:1px solid var(--line);border-radius:999px;height:16px;overflow:hidden}.bar i{background:var(--accent);display:block;height:100%}.consensus-actions{display:grid;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:18px}.node-audit-grid{display:grid;gap:14px;grid-template-columns:repeat(3,minmax(0,1fr))}.node-audit-card,.majority-box{border:1px solid var(--line);border-radius:8px;background:var(--paper);padding:14px}.node-audit-card.online{box-shadow:inset 5px 0 0 var(--accent)}.node-audit-card.compromised{border-color:#d7a69e;background:var(--danger-soft);box-shadow:inset 5px 0 0 var(--danger)}.node-audit-card.offline{border-style:dashed;opacity:.76}.node-audit-card.starting{border-style:dashed;box-shadow:inset 5px 0 0 var(--soft)}.node-audit-head{align-items:center;display:flex;gap:10px;justify-content:space-between;margin-bottom:12px}.node-audit-head span{border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:11px;font-weight:800;padding:5px 8px;text-transform:uppercase}.node-audit-head span.ok{border-color:var(--ink);color:var(--ink)}.node-audit-head span.danger{border-color:var(--danger);color:var(--danger)}.node-note{color:var(--muted);font-size:13px;line-height:1.45;margin:12px 0 0}.node-error{color:var(--muted);font-size:13px;line-height:1.35;min-height:74px;overflow-wrap:anywhere;padding:12px}.node-audit-card .result-list,.majority-box .result-list{border-radius:6px}.node-audit-card .result-row,.majority-box .result-row{gap:10px;grid-template-columns:minmax(92px,1fr) minmax(70px,1fr) 28px;padding:9px}.node-audit-card .result-row strong,.majority-box .result-row strong{font-size:13px}.node-audit-card .result-row span,.majority-box .result-row span{font-size:11px}.node-audit-card .bar,.majority-box .bar{height:12px}.majority-box{margin-top:14px}.majority-box.ok{box-shadow:inset 5px 0 0 var(--accent)}.majority-box.danger{border-color:#d7a69e;background:var(--danger-soft);box-shadow:inset 5px 0 0 var(--danger)}@media(max-width:920px){.topbar{align-items:flex-start;flex-direction:column;gap:16px}nav{flex-wrap:wrap}.single,.config-layout,.config-page,.admin-layout,.consensus-actions,.node-audit-grid,.metrics{display:block}.panel,.metric,.node-audit-card{margin-bottom:14px}.result-row{grid-template-columns:1fr}}@media(max-width:560px){.shell{padding:20px 14px 32px}.brand img{width:146px}.panel{padding:18px}.form-actions,.vote-actions,.attack-controls,.option-row,.receipt-grid{grid-template-columns:1fr}}
