*{box-sizing:border-box;margin:0;padding:0}
body{background:#020617;font-family:Arial,'Liberation Sans',sans-serif;-webkit-font-smoothing:antialiased}
.app{display:flex;min-height:900px;width:1440px;color:#e2e8f0}
.side{width:256px;flex:0 0 256px;border-right:1px solid #1e293b;background:#0b1220;display:flex;flex-direction:column}
.brand{padding:20px;border-bottom:1px solid #1e293b;display:flex;align-items:center;gap:10px}
.brandY{height:32px;width:32px;border-radius:8px;background:#3DD68C;color:#020617;font-weight:800;display:flex;align-items:center;justify-content:center;font-size:16px}
.brand .bt{color:#fff;font-weight:600;font-size:15px;line-height:1}
.brand .bs{color:#64748b;font-size:10px;margin-top:3px}
.nav{padding:12px;display:flex;flex-direction:column;gap:4px}
.navitem{display:flex;align-items:center;gap:12px;border-radius:8px;padding:10px 12px}
.navitem.active{background:#1e293b;box-shadow:inset 2px 0 0 #3DD68C}
.navitem .nl{font-size:14px;color:#cbd5e1}
.navitem.active .nl{color:#fff}
.navitem .ns{font-size:11px;color:#64748b}
.side-foot{margin-top:auto;padding:16px;border-top:1px solid #1e293b;display:flex;flex-direction:column;gap:12px}
.cert{border-radius:8px;background:#141f33;padding:12px}
.cert .ct{display:flex;align-items:center;gap:8px;color:#cbd5e1;font-size:12px}
.cert .cs{margin-top:4px;color:#64748b;font-size:11px}
.posture{border-radius:8px;border:1px solid #1e293b;padding:12px;display:flex;flex-direction:column;gap:6px}
.posture .ph{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:#64748b;margin-bottom:2px}
.posture .pr{display:flex;align-items:center;gap:8px;font-size:11px;color:#94a3b8}
.main{flex:1 1 auto;display:flex;flex-direction:column;position:relative;min-width:0}
.topbar{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #1e293b;padding:16px 32px}
.tb-over{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:#64748b}
.tb-title{font-size:18px;font-weight:600;color:#fff;margin-top:2px}
.tb-meta{display:flex;align-items:center;gap:20px;font-size:12px;color:#94a3b8}
.meta{display:flex;align-items:center;gap:6px}
.content{padding:32px;display:flex;flex-direction:column}
.grid{display:grid;gap:16px}
.g3{grid-template-columns:repeat(3,1fr)}
.g4{grid-template-columns:repeat(4,1fr)}
.g2{grid-template-columns:repeat(2,1fr)}
.kpi{border:1px solid #1e293b;background:#0f172a;border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:8px}
.kpi-label{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#64748b}
.kpi-hint{font-size:11px;color:#64748b}
.row-end{display:flex;align-items:flex-end;gap:8px}
.big{font-size:30px;font-weight:600;color:#fff;line-height:1}
.mid{font-size:24px;font-weight:600;color:#fff;line-height:1}
.unit{color:#94a3b8;font-size:14px;margin-bottom:2px}
.green{color:#6FE0A6}
.trend{display:flex;align-items:center;gap:4px;font-size:12px;color:#6FE0A6}
.progress{height:8px;width:100%;border-radius:999px;background:#1e293b;overflow:hidden;margin-top:4px}
.progress>i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#2E8A5B,#3DD68C)}
.dialwrap{position:relative;width:92px;height:92px;flex:0 0 92px}
.dialwrap .ov{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.dialwrap .ov .p{font-size:20px;font-weight:600;color:#fff}
.dialwrap .ov .q{font-size:10px;color:#64748b}
.impact{margin-top:16px;border:1px solid #1e293b;background:#0d1526;border-radius:12px;padding:16px}
.impact-head{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.impact-head .t{font-size:14px;font-weight:600;color:#fff}
.impact-head .n{font-size:11px;color:#64748b}
.chips{margin-top:12px;display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.chips .cl{font-size:11px;color:#64748b;margin-right:4px}
.stat{display:flex;align-items:center;gap:8px;border:1px solid #1e293b;background:#0f172a;border-radius:8px;padding:6px 12px}
.stat .sl{font-size:11px;color:#64748b}
.stat .sv{font-size:12px;font-weight:600;color:#e2e8f0}
.tablewrap{margin-top:24px;border:1px solid #1e293b;border-radius:12px;overflow:hidden}
.tabletop{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:#0f172a;border-bottom:1px solid #1e293b}
.tabletop .t{font-size:14px;font-weight:600;color:#fff}
.tabletop .s{font-size:12px;color:#64748b}
table{width:100%;border-collapse:collapse;font-size:14px}
th{text-align:left;font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:#64748b;background:#0d1526;padding:10px 12px;font-weight:600}
td{padding:12px;border-top:1px solid #1e293b;color:#cbd5e1}
tr.selrow td{background:#172033}
.resin{display:inline-flex;align-items:center;justify-content:center;height:28px;min-width:54px;padding:0 8px;border-radius:6px;font-size:11px;font-weight:700;color:#020617;background:#8FC7A9}
.mono{font-family:'Courier New',monospace;font-size:12px;color:#94a3b8}
.rbar{display:flex;align-items:center;gap:8px}
.rbar .track{height:6px;flex:1;border-radius:999px;background:#1e293b;overflow:hidden}
.rbar .track>i{display:block;height:100%;border-radius:999px}
.rbar .pct{font-size:12px;color:#94a3b8;width:36px;text-align:right}
.badge{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:500}
.cbx{height:16px;width:16px;border-radius:3px;border:1.5px solid #475569;display:inline-flex;align-items:center;justify-content:center}
.cbx.on{background:#2E8A5B;border-color:#2E8A5B}
.drawer{position:absolute;left:0;right:0;bottom:0}
.drawer .inner{margin:16px;border-radius:12px;border:1px solid rgba(61,214,140,.30);background:rgba(15,23,42,.97);box-shadow:0 -10px 40px rgba(0,0,0,.5);padding:16px 20px;display:flex;align-items:center;justify-content:space-between}
.drawer .left{display:flex;align-items:center;gap:12px}
.iconbox{height:36px;width:36px;border-radius:8px;background:rgba(46,138,91,.15);display:flex;align-items:center;justify-content:center}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:8px;font-size:14px;font-weight:600;padding:10px 16px}
.btn.full{width:100%}
.btn-primary{background:#3DD68C;color:#020617;border:none}
.btn-outline{background:transparent;color:#cbd5e1;border:1px solid #334155;font-weight:500}
.btn-ghost{background:none;border:none;color:#94a3b8;padding:8px 12px;font-weight:500}
.readiness{margin-top:24px;border-radius:12px;border:1px solid rgba(61,214,140,.30);background:rgba(46,138,91,.06);padding:16px;display:flex;align-items:center;justify-content:space-between}
.readiness .l{display:flex;align-items:center;gap:12px}
.readiness .t{font-size:14px;color:#fff;font-weight:500}
.readiness .s{font-size:11px;color:#94a3b8;margin-top:2px}
.lifecycle{margin-top:24px;border-radius:12px;border:1px solid #1e293b;background:#0f172a;padding:24px}
.lifecycle .h{font-size:14px;font-weight:600;color:#fff;margin-bottom:20px}
.stepper{display:flex;align-items:flex-start}
.step{display:flex;flex-direction:column;align-items:center;gap:8px;min-width:92px}
.step .c{height:36px;width:36px;border-radius:999px;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600}
.step .c.done{background:#3DD68C;color:#020617}
.step .c.todo{background:#1e293b;color:#64748b}
.step .sl{font-size:11px;text-align:center;max-width:100px;line-height:1.2;color:#e2e8f0}
.stepline{height:2px;flex:1;margin-top:18px;border-radius:2px;background:#3DD68C}
.panes{margin-top:24px;display:grid;grid-template-columns:1fr 1fr;gap:16px}
.pane{border:1px solid #1e293b;border-radius:12px;overflow:hidden;display:flex;flex-direction:column}
.pane-head{display:flex;align-items:center;gap:8px;padding:12px 16px;background:#0f172a;border-bottom:1px solid #1e293b}
.pane-head .t{font-size:14px;font-weight:600;color:#fff}
.pane-head .n{font-size:11px;color:#64748b}
.pane-head .right{margin-left:auto;display:flex;align-items:center;gap:6px;font-size:11px;color:#94a3b8}
pre.dpp{font-family:'Courier New',monospace;font-size:12px;line-height:1.65;padding:16px;background:#080f1f;color:#64748b;overflow:auto;margin:0;white-space:pre}
pre.dpp .k{color:#6FE0A6}
pre.dpp .v{color:#94a3b8}
.files{padding:12px;display:flex;flex-direction:column;gap:8px;flex:1}
.file{display:flex;align-items:center;justify-content:space-between;border:1px solid #1e293b;background:#0f172a;border-radius:8px;padding:10px 12px}
.file .fn{font-size:14px;color:#e2e8f0}
.file .fm{font-size:11px;color:#64748b;font-family:'Courier New',monospace;margin-top:2px}
.file .rt{display:flex;align-items:center;gap:8px}
.cleanpill{display:inline-flex;align-items:center;border:1px solid #334155;border-radius:999px;padding:2px 8px;font-size:10px;font-weight:600;color:#94a3b8}
.vbadge{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:500;color:#6FE0A6;background:rgba(46,138,91,.15)}
.exportcol{padding:12px;border-top:1px solid #1e293b;display:flex;flex-direction:column;gap:8px}
.proofrow{display:flex;align-items:center;justify-content:space-between;border:1px solid #1e293b;background:#080f1f;border-radius:8px;padding:8px 12px}
.proofrow .l{display:flex;align-items:center;gap:8px;font-size:11px;color:#cbd5e1}
.proofrow .r{font-family:'Courier New',monospace;font-size:11px;color:#64748b}
.filenames{font-size:10px;color:#475569;font-family:'Courier New',monospace}
.playerrow{margin-top:24px;display:grid;grid-template-columns:3fr 2fr;gap:16px}
.player{border:1px solid #1e293b;border-radius:12px;background:#0f172a;padding:20px;display:flex;flex-direction:column}
.nowcard{border:1px solid #1e293b;border-radius:8px;background:#080f1f;padding:20px;margin-bottom:16px}
.nowcard .lbl{display:flex;align-items:center;gap:8px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#64748b;margin-bottom:12px}
.nowcard .top{display:flex;align-items:flex-start;justify-content:space-between}
.nowcard .stage{font-size:24px;font-weight:600;color:#fff}
.nowcard .loc{display:flex;align-items:center;gap:6px;color:#94a3b8;margin-top:4px;font-size:14px}
.nowcard .rt{text-align:right;font-size:12px;color:#94a3b8}
.nowcard .rt div{display:flex;align-items:center;gap:6px;justify-content:flex-end;margin-top:2px}
.nowcard .rt .h{color:#6FE0A6;font-family:'Courier New',monospace}
.scrub{padding:0 4px}
.ticks{position:relative;height:14px}
.ticks>i{position:absolute;top:0;height:12px;width:2px;border-radius:2px}
.rangebar{position:relative;height:6px;border-radius:999px;background:#1e293b}
.rangebar>.fill{position:absolute;left:0;top:0;height:6px;border-radius:999px;background:#3DD68C}
.rangebar>.knob{position:absolute;top:50%;height:16px;width:16px;border-radius:999px;background:#3DD68C;transform:translate(-50%,-50%);box-shadow:0 0 0 4px rgba(61,214,140,.2)}
.scrublabels{display:flex;justify-content:space-between;font-size:10px;color:#64748b;margin-top:8px}
.controls{display:flex;align-items:center;gap:12px;margin-top:20px}
.speed{margin-left:auto;display:flex;align-items:center;gap:4px;border:1px solid #1e293b;border-radius:8px;padding:4px}
.speed .sp{padding:6px 12px;border-radius:6px;font-size:12px;font-weight:500;color:#94a3b8}
.speed .sp.on{background:#3DD68C;color:#020617}
.prooffoot{margin-top:16px;display:flex;align-items:center;justify-content:space-between;border:1px solid #1e293b;background:#080f1f;border-radius:8px;padding:8px 12px;font-size:11px}
.prooffoot .l{display:flex;align-items:center;gap:8px;color:#cbd5e1}
.prooffoot .r{display:flex;align-items:center;gap:6px;color:#94a3b8}
.log{border:1px solid #1e293b;border-radius:12px;overflow:hidden;display:flex;flex-direction:column}
.log .h{padding:12px 16px;background:#0f172a;border-bottom:1px solid #1e293b;font-size:14px;font-weight:600;color:#fff}
.logbody{padding:12px;display:flex;flex-direction:column;gap:8px}
.logitem{border:1px solid #1e293b;background:rgba(15,23,42,.5);border-radius:8px;padding:10px 12px}
.logitem.live{border-color:rgba(61,214,140,.4);background:rgba(46,138,91,.08)}
.logitem .lt{display:flex;align-items:center;justify-content:space-between}
.logitem .st{display:flex;align-items:center;gap:8px;font-size:14px;color:#e2e8f0}
.dot{height:8px;width:8px;border-radius:999px}
.logitem .clk{font-size:11px;color:#64748b}
.logitem .loc{margin-top:4px;padding-left:16px;font-size:11px;color:#94a3b8;display:flex;align-items:center;gap:6px}
.logitem .opr{margin-top:2px;padding-left:16px;font-size:11px;display:flex;align-items:center;justify-content:space-between}
.logitem .opr .op{color:#64748b}
.logitem .opr .hh{font-family:'Courier New',monospace;color:#6FE0A6}
