:root{--bg:#06080E;--surf:#0D1220;--surf2:#141726;--brd:#1E2438;--acc:#C9A84C;--red:#B22234;--grn:#2ECC71;--muted:#5A6480;--txt:#E8E4D8;--blue:#60A5FA}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--bg);color:var(--txt);font-family:'Courier New',monospace;font-size:13px;min-height:100vh}

.iocnav{position:sticky;top:0;z-index:100;background:rgba(6,8,14,.96);border-bottom:1px solid var(--brd);padding:0 20px;display:flex;align-items:center;height:50px;gap:24px}
.iocnav-brand{font-size:15px;font-weight:700;color:var(--acc);text-decoration:none;letter-spacing:-.3px}
.iocnav-brand span{color:var(--txt);font-weight:400}
.iocnav-links{display:flex;gap:4px;margin-left:auto}
.iocnav-links a{color:var(--muted);text-decoration:none;font-size:12px;padding:5px 10px;border-radius:5px;transition:all .13s}
.iocnav-links a:hover,.iocnav-links a.act{color:var(--txt);background:var(--surf2)}
.iocnav-links a.act{color:var(--acc)}

.ioc-wrap{display:grid;grid-template-columns:220px 1fr;grid-template-rows:1fr;min-height:calc(100vh - 50px);gap:0}
.ioc-left{border-right:1px solid var(--brd);padding:20px;display:flex;flex-direction:column;gap:14px;background:var(--surf)}
.ioc-right{padding:20px;overflow-y:auto}

.ioc-section{font-size:9px;letter-spacing:2.5px;color:var(--acc);font-weight:700;margin-bottom:8px}
.ioc-canvas-wrap{background:var(--surf2);border:1px solid var(--brd);border-radius:6px;padding:10px;text-align:center}
.ioc-canvas-wrap canvas{max-width:100%;border-radius:3px;display:block;margin:0 auto}

.ioc-input{width:100%;padding:8px 12px;background:var(--surf2);border:1px solid var(--brd);color:var(--txt);font-size:14px;border-radius:5px;font-family:'Courier New',monospace;outline:none;transition:border-color .15s}
.ioc-input:focus{border-color:var(--acc)}
.ioc-input-big{font-size:32px;font-weight:700;text-align:center;padding:10px;text-transform:uppercase;color:var(--acc);max-width:100%;height:60px}

.ioc-btn{width:100%;padding:9px;background:var(--acc);color:#000;border:none;border-radius:5px;font-size:12px;font-weight:700;cursor:pointer;font-family:'Courier New',monospace;letter-spacing:1px;transition:opacity .15s}
.ioc-btn:hover{opacity:.88}
.ioc-btn:disabled{opacity:.4;cursor:default}
.ioc-btn-outline{background:transparent;color:var(--acc);border:1px solid var(--acc)}
.ioc-btn-outline:hover{background:rgba(201,168,76,.1)}
.ioc-btn-red{background:var(--red);color:var(--txt)}
.ioc-btn-grn{background:rgba(46,204,113,.15);color:var(--grn);border:1px solid rgba(46,204,113,.3)}
.ioc-btn-grn:hover{background:rgba(46,204,113,.25)}

.ioc-drop{border:1.5px dashed var(--brd);border-radius:6px;padding:28px 16px;text-align:center;cursor:pointer;transition:border-color .15s;background:var(--surf2)}
.ioc-drop:hover,.ioc-drop.drag{border-color:var(--acc)}
.ioc-drop p{font-size:11px;color:var(--muted);margin-top:6px}
.ioc-drop-icon{font-size:28px;color:var(--muted)}

.result-panel{background:var(--surf);border:1px solid var(--brd);border-radius:6px;padding:16px;margin-bottom:14px}
.result-panel.ok{border-color:rgba(46,204,113,.35)}
.result-panel.err{border-color:rgba(178,34,52,.4)}
.result-panel.warn{border-color:rgba(240,192,64,.3)}

.rp-head{font-size:10px;letter-spacing:2px;color:var(--muted);margin-bottom:10px;font-weight:700}
.rp-char{font-size:64px;font-weight:700;color:var(--acc);line-height:1;text-align:center;padding:10px 0}
.rp-status{font-size:18px;font-weight:700;text-align:center;margin-bottom:10px}
.rp-status.ok{color:var(--grn)}
.rp-status.err{color:var(--red)}

.kv-table{width:100%;border-collapse:collapse;font-size:11px;margin-bottom:10px}
.kv-table td{padding:4px 0;border-bottom:1px solid var(--brd);vertical-align:top}
.kv-table td:first-child{color:var(--muted);width:100px;padding-right:10px}
.kv-table td:last-child{color:var(--txt);font-family:'Courier New',monospace;word-break:break-all}
.kv-table tr:last-child td{border-bottom:none}

.log-panel{background:var(--surf);border:1px solid var(--brd);border-radius:6px;overflow:hidden}
.log-head{padding:8px 14px;border-bottom:1px solid var(--brd);font-size:9px;letter-spacing:2px;color:var(--acc);font-weight:700;display:flex;justify-content:space-between;align-items:center}
.log-clear{font-size:10px;color:var(--muted);cursor:pointer;font-weight:400;letter-spacing:0;padding:2px 6px;border-radius:3px;background:transparent;border:1px solid var(--brd);font-family:'Courier New',monospace}
.log-clear:hover{border-color:var(--muted)}
.log-body{max-height:220px;overflow-y:auto;padding:4px 0}
.log-line{padding:3px 14px;font-size:10px;border-bottom:1px solid rgba(30,36,56,.5);color:var(--muted);line-height:1.5}
.log-line .lt{color:var(--muted);font-size:9px;margin-right:6px}
.log-line.l-ok{color:var(--grn)}
.log-line.l-err{color:var(--red)}
.log-line.l-warn{color:var(--acc)}
.log-line.l-info{color:var(--blue)}

.bit-display{font-family:'Courier New',monospace;font-size:11px;background:var(--surf2);border:1px solid var(--brd);border-radius:4px;padding:10px 12px;line-height:1.8;word-break:break-all;color:var(--blue)}

.tag{font-size:9px;font-weight:700;letter-spacing:1.5px;padding:2px 7px;border-radius:2px;display:inline-block}
.tag-ok{background:rgba(46,204,113,.14);color:var(--grn);border:1px solid rgba(46,204,113,.28)}
.tag-err{background:rgba(178,34,52,.14);color:var(--red);border:1px solid rgba(178,34,52,.28)}
.tag-acc{background:rgba(201,168,76,.1);color:var(--acc);border:1px solid rgba(201,168,76,.25)}

@media(max-width:640px){
  .ioc-wrap{grid-template-columns:1fr}
  .ioc-left{border-right:none;border-bottom:1px solid var(--brd)}
}
