:root {
  --bg: #0A0A0F;
  --bg-card: #111118;
  --bg-input: #0d0d14;
  --text: #e4e6f0;
  --text-secondary: #8e92a8;
  --text-muted: #4a4e60;
  --red: #EF4444;
  --green: #10B981;
  --amber: #F59E0B;
  --blue: #3B82F6;
  --purple: #8B5CF6;
  --border: rgba(239,68,68,0.08);
  --border-strong: rgba(239,68,68,0.2);
  --shadow: 0 2px 8px rgba(0,0,0,0.5);
  --radius: 8px;
  --font: 'Inter',system-ui,sans-serif;
  --transition: 0.2s ease;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--font);background:var(--bg);color:var(--text);min-height:100vh;overflow:hidden}

/* Header */
.header{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;background:var(--bg-card);border-bottom:1px solid var(--border);height:38px}
.header-left,.header-center,.header-right{display:flex;align-items:center;gap:6px}
.logo{font-size:1rem}
.header h1{font-size:0.88rem;font-weight:700;color:var(--red)}

.btn,.btn-sm{padding:4px 8px;border:1px solid var(--border);border-radius:6px;background:transparent;color:var(--text-secondary);font-family:var(--font);font-size:0.7rem;font-weight:500;cursor:pointer;transition:all var(--transition);white-space:nowrap}
.btn:hover,.btn-sm:hover{border-color:var(--red);color:var(--red)}
.btn.primary{background:rgba(239,68,68,0.08);border-color:var(--red);color:var(--red)}
.btn.primary:hover{background:rgba(239,68,68,0.15)}
.btn-sm{font-size:0.65rem;padding:3px 6px}
.select{padding:4px 6px;border:1px solid var(--border);border-radius:6px;background:transparent;color:var(--text-secondary);font-family:var(--font);font-size:0.7rem;cursor:pointer}
.select:focus,.input:focus,.textarea:focus{outline:none;border-color:var(--red)}
.input,.textarea{padding:6px 8px;border:1px solid var(--border);border-radius:6px;background:var(--bg-input);color:var(--text);font-family:var(--font);font-size:0.78rem;width:100%}
.textarea{resize:vertical}
.text-muted{font-size:0.75rem;color:var(--text-muted)}

/* Layout */
.app-layout{display:flex;height:calc(100vh - 38px)}
.canvas-panel{flex:1;display:flex;flex-direction:column;min-width:0}
.experiment-panel{width:320px;border-left:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}

/* Canvas Toolbar */
.canvas-toolbar{display:flex;align-items:center;gap:4px;padding:4px 8px;border-bottom:1px solid var(--border);background:var(--bg-card);flex-wrap:wrap}
.canvas-toolbar .label{font-size:0.65rem;color:var(--text-muted);margin-right:2px}
.node-btn{width:28px;height:28px;border:1px solid var(--border);border-radius:6px;background:transparent;font-size:0.85rem;cursor:pointer;transition:all var(--transition);display:flex;align-items:center;justify-content:center}
.node-btn:hover{border-color:var(--green);background:rgba(16,185,129,0.05)}
.sep{width:1px;height:20px;background:var(--border);margin:0 4px}

canvas{flex:1;display:block;background:var(--bg)}

.resilience-bar{display:flex;align-items:center;gap:6px;padding:4px 8px;border-top:1px solid var(--border);background:var(--bg-card)}
.resilience-bar .label{font-size:0.65rem;color:var(--text-muted)}
.resilience-bar .score{font-size:0.85rem;font-weight:700;color:var(--green)}
.resilience-bar .score.low{color:var(--red)}
.resilience-bar .score.mid{color:var(--amber)}

/* Tabs */
.tabs{display:flex;border-bottom:1px solid var(--border)}
.tab{flex:1;padding:6px;border:none;background:transparent;color:var(--text-muted);font-family:var(--font);font-size:0.7rem;cursor:pointer;transition:all var(--transition);text-align:center}
.tab:hover{color:var(--red)}
.tab.active{color:var(--red);border-bottom:2px solid var(--red)}
.tab-content{display:none;padding:10px;overflow-y:auto;flex:1}
.tab-content.active{display:block}

/* Form */
.form-group{margin-bottom:8px}
.form-group label{display:block;font-size:0.68rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:3px}
.btn-group{display:flex;gap:4px;margin-top:10px}

/* Timeline */
.timeline{font-size:0.75rem}
.tl-entry{padding:6px 0;border-bottom:1px solid var(--border);display:flex;gap:8px}
.tl-time{font-family:monospace;color:var(--text-muted);font-size:0.65rem;min-width:50px}
.tl-event{flex:1}
.tl-event.fault{color:var(--red)}
.tl-event.recovery{color:var(--green)}
.tl-event.degraded{color:var(--amber)}

/* Library */
.exp-item{padding:8px;border:1px solid var(--border);border-radius:6px;margin-bottom:4px;cursor:pointer;transition:all var(--transition)}
.exp-item:hover{border-color:var(--red)}
.exp-item strong{font-size:0.78rem;color:var(--text)}
.exp-item .meta{font-size:0.65rem;color:var(--text-muted)}

@media(max-width:768px){
  .app-layout{flex-direction:column}
  .experiment-panel{width:100%;height:40vh;border-left:none;border-top:1px solid var(--border)}
  .canvas-panel{height:60vh}
}
