:root{--bg:#060b14;--bg2:#0b1220;--panel:rgba(15,23,42,.82);--panel2:rgba(30,41,59,.72);--text:#e5eefc;--muted:#94a3b8;--line:rgba(148,163,184,.18);--accent:#00e676;--accent2:#38bdf8;--warn:#f59e0b;--danger:#fb7185;--shadow:0 24px 80px rgba(0,0,0,.45);--radius:22px}*{box-sizing:border-box}body.studio-body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text);min-height:100vh;--surface:var(--panel);--surface-2:var(--panel2);--surface-3:rgba(2,6,23,.52);--border:var(--line);--border-2:rgba(148,163,184,.3);--text-2:var(--muted);--text-3:#475569;--accent-dim:rgba(0,230,118,.08)}.studio-bg{position:fixed;inset:0;background:radial-gradient(circle at 20% 10%,rgba(0,230,118,.16),transparent 26%),radial-gradient(circle at 80% 0%,rgba(56,189,248,.15),transparent 28%),linear-gradient(180deg,#06101d 0%,#060b14 58%,#030712 100%);z-index:-2}.studio-bg:after{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:42px 42px;mask-image:linear-gradient(to bottom,#000,transparent 82%)}.studio-header{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 28px;border-bottom:1px solid var(--line);background:rgba(6,11,20,.74);backdrop-filter:blur(18px)}.studio-brand{display:flex;align-items:center;gap:12px;color:var(--text);text-decoration:none;font-weight:850;font-size:20px}.studio-brand span span{color:var(--accent)}.brand-mark{display:grid;place-items:center;width:36px;height:36px;border-radius:12px;background:linear-gradient(135deg,var(--accent),var(--accent2));color:#02110a;box-shadow:0 0 30px rgba(0,230,118,.32)}.studio-nav{display:flex;gap:6px;align-items:center}.studio-nav a{color:var(--muted);text-decoration:none;padding:9px 12px;border-radius:12px;font-size:14px;font-weight:650}.studio-nav a:hover,.studio-nav a.active{color:var(--text);background:rgba(148,163,184,.12)}.studio-actions,.export-actions,.inline-actions{display:flex;align-items:center;gap:10px}.studio-shell{width:min(1500px,calc(100% - 36px));margin:0 auto;padding:26px 0 50px}.studio-hero{border:1px solid var(--line);background:linear-gradient(135deg,rgba(15,23,42,.94),rgba(15,23,42,.6));border-radius:30px;padding:34px;box-shadow:var(--shadow);display:grid;grid-template-columns:1fr 330px;gap:28px;align-items:center;overflow:hidden;position:relative}.studio-hero:before{content:"";position:absolute;right:-80px;top:-90px;width:280px;height:280px;background:radial-gradient(circle,rgba(0,230,118,.24),transparent 68%)}.studio-hero.compact{padding:26px 30px}.eyebrow{color:var(--accent);font-size:12px;text-transform:uppercase;letter-spacing:.16em;font-weight:800;margin-bottom:10px}.studio-hero h1{font-size:clamp(34px,4vw,58px);line-height:.98;margin:0 0 12px;letter-spacing:-.045em}.studio-hero p{margin:0;color:var(--muted);line-height:1.65;max-width:850px}.hero-pills{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}.hero-pills span{border:1px solid var(--line);background:rgba(148,163,184,.08);border-radius:999px;padding:8px 11px;color:#cbd5e1;font-size:12px;font-weight:750}.hero-score-card{border:1px solid var(--line);background:rgba(2,6,23,.52);border-radius:24px;padding:20px;display:flex;align-items:center;gap:16px}.score-ring{width:100px;height:100px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--accent) 0deg,rgba(148,163,184,.16) 0);border:1px solid var(--line);box-shadow:inset 0 0 0 12px rgba(2,6,23,.8)}.score-ring span{font-weight:900;color:var(--accent)}.hero-score-card strong{display:block;margin-bottom:6px}.hero-score-card small{color:var(--muted);line-height:1.45}.metric{padding:16px 22px;border:1px solid var(--line);border-radius:20px;background:rgba(15,23,42,.55);text-align:center;min-width:110px}.metric strong{font-size:36px;color:var(--accent)}.metric small{display:block;color:var(--muted)}.studio-layout{display:grid;grid-template-columns:290px 1fr;gap:22px;margin-top:22px}.studio-sidebar{position:sticky;top:82px;align-self:start;border:1px solid var(--line);background:rgba(15,23,42,.72);backdrop-filter:blur(16px);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}.side-title{font-size:12px;text-transform:uppercase;letter-spacing:.13em;color:var(--muted);font-weight:850;margin:4px 8px 14px}.step-link{width:100%;border:0;background:transparent;color:var(--muted);display:flex;align-items:center;gap:12px;padding:12px;border-radius:14px;font-weight:750;cursor:pointer;text-align:left}.step-link span{display:grid;place-items:center;width:30px;height:30px;border-radius:10px;background:rgba(148,163,184,.1);color:#cbd5e1}.step-link.active,.step-link:hover{background:linear-gradient(90deg,rgba(0,230,118,.15),rgba(56,189,248,.08));color:var(--text)}.step-link.active span{background:var(--accent);color:#031208}.sidebar-card{margin-top:18px;border:1px solid var(--line);background:rgba(2,6,23,.38);padding:16px;border-radius:18px}.sidebar-card p{color:var(--muted);font-size:13px;line-height:1.5;margin:8px 0 0}.studio-panel{min-width:0}.step-panel{display:none;border:1px solid var(--line);background:rgba(15,23,42,.78);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow)}.step-panel.active{display:block;animation:fadeUp .24s ease}@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}.panel-head.small{margin:0 0 16px}.panel-head h2{margin:0 0 5px;font-size:24px;letter-spacing:-.02em}.panel-head p{margin:0;color:var(--muted);font-size:14px}.panel-badge{border:1px solid rgba(0,230,118,.35);color:var(--accent);background:rgba(0,230,118,.08);border-radius:999px;padding:7px 10px;font-size:12px;font-weight:850}.form-grid{display:grid;gap:14px}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid.one{grid-template-columns:1fr}label{display:flex;flex-direction:column;gap:8px;color:#cbd5e1;font-size:13px;font-weight:760}input,select,textarea{width:100%;border:1px solid var(--line);background:rgba(2,6,23,.46);border-radius:14px;color:var(--text);padding:13px 14px;outline:none;font:inherit}textarea{resize:vertical;line-height:1.5}input:focus,select:focus,textarea:focus{border-color:rgba(0,230,118,.65);box-shadow:0 0 0 4px rgba(0,230,118,.08)}.choice-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:18px}.choice-grid label{cursor:pointer}.choice-grid input{display:none}.choice-grid span{border:1px solid var(--line);border-radius:18px;background:rgba(2,6,23,.42);padding:18px;display:block;font-size:15px}.choice-grid input:checked+span{border-color:rgba(0,230,118,.7);background:linear-gradient(135deg,rgba(0,230,118,.18),rgba(56,189,248,.09));box-shadow:0 0 30px rgba(0,230,118,.08)}button{font:inherit}.primary-btn,.primary-mini,.ghost-btn{border:1px solid transparent;border-radius:13px;padding:12px 16px;font-weight:850;cursor:pointer}.primary-btn,.primary-mini{background:linear-gradient(135deg,var(--accent),#7cffb0);color:#04120a}.primary-mini{padding:9px 12px;font-size:13px}.ghost-btn{background:rgba(148,163,184,.08);border-color:var(--line);color:var(--text)}.ghost-btn:hover{background:rgba(148,163,184,.14)}.full{width:100%}.table-card{border:1px solid var(--line);border-radius:18px;overflow:auto;background:rgba(2,6,23,.3)}.studio-table{width:100%;border-collapse:collapse;min-width:840px}.studio-table th{background:rgba(148,163,184,.09);color:#cbd5e1;text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.08em;padding:12px}.studio-table td{border-top:1px solid var(--line);padding:10px}.studio-table td input,.studio-table td select{padding:10px;border-radius:10px}.row-del{background:rgba(251,113,133,.12);color:#fecdd3;border:1px solid rgba(251,113,133,.28);border-radius:10px;padding:8px 10px;cursor:pointer}.bottom-nav{display:flex;justify-content:space-between;margin-top:18px}.doc-preview{background:#f8fafc;color:#0f172a;border-radius:18px;padding:34px;box-shadow:0 30px 90px rgba(0,0,0,.36);min-height:700px}.doc-preview h1{font-size:34px;margin:0 0 8px;color:#0f172a}.doc-preview h2{margin-top:30px;padding-bottom:8px;border-bottom:2px solid #e2e8f0;color:#0f172a}.doc-preview h3{color:#1e293b}.doc-preview p,.doc-preview li{line-height:1.65;color:#334155}.doc-preview table{width:100%;border-collapse:collapse;margin:12px 0 20px}.doc-preview th,.doc-preview td{border:1px solid #cbd5e1;padding:8px;text-align:left}.doc-preview th{background:#e2e8f0}.doc-cover{border:1px solid #cbd5e1;border-radius:18px;padding:30px;margin-bottom:20px;background:linear-gradient(135deg,#fff,#e0f2fe)}.doc-meta{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:18px}.doc-meta div{background:#fff;border:1px solid #dbe3ef;border-radius:12px;padding:10px}.doc-meta span{display:block;font-size:11px;color:#64748b;text-transform:uppercase}.topology-workspace{display:grid;grid-template-columns:410px 1fr;gap:22px;margin-top:22px}.topology-left,.topology-canvas-card{border:1px solid var(--line);background:rgba(15,23,42,.78);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}.mode-tabs{display:grid;grid-template-columns:1fr 1fr;background:rgba(2,6,23,.48);border:1px solid var(--line);border-radius:15px;padding:5px;margin-bottom:14px}.mode-tab{border:0;background:transparent;color:var(--muted);padding:10px;border-radius:11px;font-weight:850;cursor:pointer}.mode-tab.active{background:var(--accent);color:#031208}.topo-mode{display:none}.topo-mode.active{display:block}.topology-list-card{margin-top:16px;border:1px solid var(--line);border-radius:18px;background:rgba(2,6,23,.34);padding:14px}.topology-list-card h3{margin:0 0 10px}.links-list{display:flex;flex-direction:column;gap:8px;max-height:260px;overflow:auto}.links-list.empty{color:var(--muted);font-size:13px}.link-chip{border:1px solid var(--line);border-radius:13px;padding:10px;background:rgba(148,163,184,.07);font-size:12px}.canvas-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.canvas-toolbar small{display:block;color:var(--muted);font-weight:500;margin-top:3px}.legend{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:12px;color:var(--muted);font-size:12px}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px}.legend .core{background:#00e676}.legend .dist{background:#38bdf8}.legend .access{background:#a78bfa}.legend .wan{background:#fb7185}#topologySvg{width:100%;height:620px;border:1px solid var(--line);border-radius:20px;background:radial-gradient(circle at 50% 0%,rgba(56,189,248,.09),transparent 40%),rgba(2,6,23,.44)}.topo-link{stroke:rgba(203,213,225,.55);stroke-width:2}.topo-link.trunk{stroke:#00e676;stroke-width:3}.topo-link.wan{stroke:#fb7185;stroke-dasharray:8 6;stroke-width:3}.topo-node rect{rx:18;stroke:rgba(255,255,255,.28);stroke-width:1.5;filter:drop-shadow(0 12px 20px rgba(0,0,0,.45))}.topo-node text{fill:#fff;font-weight:850;font-size:13px}.topo-node .role{fill:rgba(255,255,255,.72);font-weight:600;font-size:10px}.topo-label{fill:#94a3b8;font-size:10px}@media(max-width:1100px){.studio-hero,.studio-layout,.topology-workspace{grid-template-columns:1fr}.studio-sidebar{position:relative;top:auto}.studio-nav{display:none}.choice-grid,.form-grid.two{grid-template-columns:1fr}.doc-meta{grid-template-columns:1fr 1fr}}@media(max-width:700px){.studio-shell{width:calc(100% - 18px)}.studio-header{padding:12px}.studio-hero{padding:20px}.panel-head,.canvas-toolbar{flex-direction:column;align-items:flex-start}.doc-preview{padding:18px}.studio-actions{display:none}}
.tpl-quick-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:18px;padding:14px 16px;background:rgba(0,230,118,.06);border:1px solid rgba(0,230,118,.22);border-radius:16px}.tpl-quick-label{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--accent);white-space:nowrap;margin-right:4px}.tpl-pick{padding:7px 14px;border-radius:10px;border:1px solid rgba(0,230,118,.35);background:rgba(0,230,118,.08);color:#a7f3d0;font-size:13px;font-weight:750;cursor:pointer;transition:all .15s}.tpl-pick:hover,.tpl-pick.active{background:rgba(0,230,118,.22);border-color:var(--accent);color:#fff;transform:translateY(-1px)}.raci-legend{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:14px;font-size:12px;color:var(--muted)}.raci-badge{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:6px;font-weight:900;font-size:11px;flex-shrink:0}.raci-badge.r{background:rgba(0,230,118,.2);color:#6ee7b7;border:1px solid rgba(0,230,118,.4)}.raci-badge.a{background:rgba(56,189,248,.2);color:#7dd3fc;border:1px solid rgba(56,189,248,.4)}.raci-badge.c{background:rgba(245,158,11,.2);color:#fcd34d;border:1px solid rgba(245,158,11,.4)}.raci-badge.i{background:rgba(167,139,250,.2);color:#c4b5fd;border:1px solid rgba(167,139,250,.4)}.doc-toc{border:1px solid #dbe3ef;background:#f1f5f9;border-radius:12px;padding:18px 22px;margin-bottom:28px}.doc-toc strong{font-size:15px;color:#0f172a}.doc-toc ol{margin:12px 0 0;padding-left:20px;line-height:2}.doc-toc a{color:#0284c7;text-decoration:none;font-size:14px}.doc-toc a:hover{text-decoration:underline}@media print{.studio-header,.studio-sidebar,.bottom-nav,.export-actions,.studio-hero,.step-panel:not(.active){display:none!important}.studio-layout{display:block}.studio-panel{border:none;padding:0}.doc-preview{box-shadow:none;border-radius:0;min-height:auto;padding:20px}.doc-cover{break-after:page}}
body.light{--bg:#edf3f8;--bg2:#fff;--panel:rgba(255,255,255,.9);--panel2:#fff;--text:#0f172a;--muted:#64748b;--line:rgba(15,23,42,.13);--shadow:0 20px 60px rgba(15,23,42,.12);--surface:rgba(255,255,255,.9);--surface-2:#f1f5f9;--surface-3:#e2e8f0;--border:rgba(15,23,42,.13);--border-2:rgba(15,23,42,.22);--text-2:#64748b;--text-3:#94a3b8;--accent-dim:rgba(0,230,118,.12)}body.light .studio-bg{background:radial-gradient(circle at 20% 10%,rgba(0,230,118,.2),transparent 26%),linear-gradient(180deg,#f8fafc,#e2e8f0)}body.light input,body.light select,body.light textarea{background:#fff;color:#0f172a}body.light .doc-preview{background:#fff}
/* ============================================================
   Topologie Pro v4 — Device detail panel & format selector
   ============================================================ */
.device-detail-panel{display:none;position:fixed;right:24px;top:80px;width:320px;background:rgba(15,23,42,.96);border:1px solid rgba(0,230,118,.35);border-radius:20px;padding:20px;z-index:100;backdrop-filter:blur(16px);box-shadow:0 24px 80px rgba(0,0,0,.6)}
.device-detail-panel.active{display:block;animation:fadeUp .2s ease}
.device-detail-close{float:right;background:none;border:none;color:#94a3b8;font-size:18px;cursor:pointer;line-height:1}
.device-detail-title{font-size:16px;font-weight:800;margin:0 0 4px;color:#e5eefc}
.device-detail-role{font-size:12px;color:#94a3b8;text-transform:uppercase;letter-spacing:.1em;margin-bottom:14px}
.device-iface-row{border-top:1px solid rgba(148,163,184,.12);padding:8px 0;font-size:12px}
.device-iface-port{font-weight:700;color:#e5eefc}
.device-iface-remote{color:#94a3b8}
.format-selector{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:10px 12px;margin-bottom:10px;background:rgba(0,230,118,.05);border:1px solid rgba(0,230,118,.18);border-radius:13px}
.format-label{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:#6ee7b7;white-space:nowrap}
.fmt-opt{display:flex;align-items:center;gap:5px;font-size:12px;font-weight:700;color:#94a3b8;cursor:pointer;padding:4px 8px;border-radius:8px;border:1px solid transparent;transition:all .15s}
.fmt-opt:hover{color:#e5eefc;background:rgba(148,163,184,.1)}
.fmt-opt input[type=radio]{accent-color:#00e676;width:13px;height:13px}
.fmt-opt:has(input:checked){color:#e5eefc;background:rgba(0,230,118,.12);border-color:rgba(0,230,118,.35)}
/* ============================================================
   NOC Runbook v1
   ============================================================ */
/* Escalade badges */
.esc-badge{display:inline-grid;place-items:center;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:900;letter-spacing:.06em;vertical-align:middle}
.esc-l1{background:rgba(148,163,184,.18);color:#e2e8f0;border:1px solid rgba(148,163,184,.35)}
.esc-l2{background:rgba(245,158,11,.18);color:#fcd34d;border:1px solid rgba(245,158,11,.38)}
.esc-l3{background:rgba(251,113,133,.18);color:#fecdd3;border:1px solid rgba(251,113,133,.38)}
/* Breadcrumb */
.rb-breadcrumb{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-bottom:18px;min-height:22px}
.rb-bc-root{font-weight:800;color:var(--accent)}
.rb-bc-sep{color:var(--muted);opacity:.5}
.rb-bc-step{background:rgba(148,163,184,.1);border:1px solid var(--line);border-radius:8px;padding:3px 8px;color:var(--text)}
/* Node card */
.rb-node-card{border:1px solid var(--line);background:rgba(15,23,42,.85);border-radius:22px;padding:28px;box-shadow:var(--shadow);animation:fadeUp .2s ease}
.rb-node-header{display:flex;flex-direction:column;gap:10px;margin-bottom:18px}
/* Severity chip */
.rb-severity-chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:800;padding:6px 12px;border-radius:999px;width:fit-content}
.rb-sev-crit{background:rgba(251,113,133,.16);color:#fecdd3;border:1px solid rgba(251,113,133,.38)}
.rb-sev-warn{background:rgba(245,158,11,.16);color:#fcd34d;border:1px solid rgba(245,158,11,.38)}
.rb-sev-info{background:rgba(148,163,184,.12);color:#cbd5e1;border:1px solid var(--line)}
/* Symptoms */
.rb-symptoms{background:rgba(251,113,133,.08);border:1px solid rgba(251,113,133,.22);border-radius:16px;padding:16px;margin-bottom:18px}
.rb-symptoms strong{font-size:13px;color:#fecdd3}
.rb-symptoms ul{margin:10px 0 0;padding-left:20px;color:#fca5a5;font-size:13px;line-height:1.7}
/* Commands */
.rb-commands-box{border:1px solid var(--line);border-radius:16px;overflow:hidden}
.rb-cmd-header{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;background:rgba(148,163,184,.07);border-bottom:1px solid var(--line);font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.rb-commands-list{padding:12px 14px;display:flex;flex-direction:column;gap:6px;max-height:320px;overflow:auto}
.rb-cmd{font-size:13px;border-radius:8px;padding:7px 10px;font-family:ui-monospace,monospace}
.rb-cmd-cli{background:rgba(0,230,118,.08);color:#a7f3d0;border:1px solid rgba(0,230,118,.2);cursor:text;user-select:all}
.rb-cmd-note{background:transparent;color:var(--muted);border:none;padding-left:0;font-style:italic;font-size:12px}
/* Context note */
.rb-context{background:rgba(56,189,248,.08);border:1px solid rgba(56,189,248,.22);border-radius:12px;padding:12px 16px;font-size:13px;color:#7dd3fc;line-height:1.55}
/* Answer buttons */
.rb-answers{display:flex;flex-direction:column;gap:10px;margin-top:20px}
.rb-answer-btn{width:100%;border:1px solid var(--line);background:rgba(148,163,184,.06);border-radius:14px;padding:14px 18px;text-align:left;color:var(--text);font-size:14px;font-weight:650;cursor:pointer;transition:all .15s;line-height:1.45}
.rb-answer-btn:hover{background:rgba(0,230,118,.1);border-color:rgba(0,230,118,.4);color:#a7f3d0;transform:translateX(4px)}
/* Resolution */
.rb-resolution{margin-top:20px;border:1px solid rgba(0,230,118,.3);background:rgba(0,230,118,.06);border-radius:18px;padding:22px;animation:fadeUp .2s ease}
.rb-resolution-level{font-size:13px;font-weight:800;margin-bottom:8px;color:var(--muted)}
.rb-resolution-title{font-size:20px;font-weight:800;color:var(--text);margin-bottom:14px;line-height:1.3}
.rb-resolution-steps{display:none}
.rb-resolution-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px;padding-top:18px;border-top:1px solid rgba(0,230,118,.2)}
/* History */
.rb-history{border:1px solid var(--line);border-radius:18px;padding:16px;background:rgba(2,6,23,.3)}
.rb-history-title{font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-weight:800;margin-bottom:12px}
.rb-hist-item{display:flex;align-items:flex-start;gap:10px;padding:8px 0;border-top:1px solid var(--line)}
.rb-hist-item:first-child{border-top:none}
.rb-hist-num{display:grid;place-items:center;min-width:26px;height:26px;border-radius:8px;background:rgba(148,163,184,.1);font-size:11px;font-weight:900;color:var(--muted);flex-shrink:0;margin-top:2px}
.rb-hist-q{font-size:12px;color:var(--muted);line-height:1.4}
.rb-hist-a{font-size:13px;color:var(--text);font-weight:700;margin-top:3px}
/* Print */
@media print{.rb-answers,.rb-resolution-actions,.studio-sidebar,.studio-header,.studio-hero,.rb-breadcrumb,.rb-context{display:none!important}.rb-node-card{border:none;padding:0;box-shadow:none}.rb-history{border:none}.rb-commands-list{max-height:none;overflow:visible}.rb-cmd-cli{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0}}
/* WiFi Design Assistant */
.wifi-channel-grid{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0}
.wifi-ch{display:flex;flex-direction:column;align-items:center;justify-content:center;width:48px;height:48px;border-radius:12px;font-size:12px;font-weight:800;border:1px solid transparent;cursor:default}
.wifi-ch.recommended{background:rgba(0,230,118,.18);color:#6ee7b7;border-color:rgba(0,230,118,.4)}
.wifi-ch.overlap{background:rgba(251,113,133,.12);color:#fca5a5;border-color:rgba(251,113,133,.3)}
.wifi-ch.dfs{background:rgba(245,158,11,.12);color:#fcd34d;border-color:rgba(245,158,11,.3)}
.wifi-ch.nodfs{background:rgba(56,189,248,.12);color:#7dd3fc;border-color:rgba(56,189,248,.3)}
.wifi-ch-label{font-size:9px;font-weight:700;margin-top:2px;opacity:.75}
.wifi-channel-section{margin-bottom:20px}
.wifi-channel-section h3{font-size:14px;font-weight:800;margin:0 0 8px;color:var(--text)}
.wifi-channel-legend{display:flex;gap:12px;flex-wrap:wrap;font-size:11px;color:var(--muted);margin-bottom:10px}
.wifi-channel-legend span{display:flex;align-items:center;gap:5px}
.wifi-channel-legend i{width:10px;height:10px;border-radius:4px;display:inline-block;flex-shrink:0}
.capacity-result-card{border:1px solid var(--line);border-radius:18px;padding:20px;background:rgba(2,6,23,.4);margin-top:16px}
.capacity-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:14px 0}
.cap-metric{text-align:center;padding:14px;border:1px solid var(--line);border-radius:14px;background:rgba(15,23,42,.5)}
.cap-metric strong{display:block;font-size:24px;color:var(--accent);font-weight:900}
.cap-metric small{color:var(--muted);font-size:12px}
.cap-metric.warn strong{color:var(--warn)}
.cap-metric.danger strong{color:var(--danger)}
.wifi-config-preview{background:rgba(2,6,23,.8);border:1px solid var(--line);border-radius:16px;padding:18px;font-family:ui-monospace,monospace;font-size:12px;line-height:1.55;color:#a7f3d0;overflow:auto;max-height:500px;white-space:pre;margin-top:14px}
.audit-import-tabs{display:flex;gap:8px;margin-bottom:0}
.audit-tab{background:transparent;border:1px solid var(--line);border-radius:10px 10px 0 0;border-bottom:none;color:var(--muted);padding:9px 16px;font-size:13px;font-weight:750;cursor:pointer;position:relative;bottom:-1px}
.audit-tab.active{background:rgba(0,230,118,.12);border-color:rgba(0,230,118,.4);color:var(--text)}
.ssid-security-ent{color:#fcd34d}
.ssid-security-psk{color:#7dd3fc}
.ssid-security-open{color:#fca5a5}
.wifi-check-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:14px 0}
.wifi-check-item{display:flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid var(--line);border-radius:12px;background:rgba(15,23,42,.4);font-size:13px;color:var(--text);cursor:pointer}
.wifi-check-item input[type=checkbox]{accent-color:var(--accent);width:15px;height:15px;flex-shrink:0}
/* ============================================================
   Firewall Matrix Builder v1
   ============================================================ */
.fw-tpl-btn{width:100%;border:1px solid var(--line);background:rgba(148,163,184,.06);border-radius:10px;padding:8px 12px;color:var(--muted);font-size:13px;font-weight:700;cursor:pointer;text-align:left;transition:all .15s}
.fw-tpl-btn:hover{background:rgba(0,230,118,.1);border-color:rgba(0,230,118,.35);color:var(--text)}
.fw-legend-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:middle}
.fw-matrix-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-bottom:14px;align-items:center}
.fw-matrix-pill{display:inline-block;padding:4px 10px;border-radius:8px;font-size:11px;font-weight:800}
.fw-matrix-pill.allow{background:rgba(0,230,118,.15);color:#6ee7b7;border:1px solid rgba(0,230,118,.3)}
.fw-matrix-pill.restrict{background:rgba(245,158,11,.15);color:#fcd34d;border:1px solid rgba(245,158,11,.3)}
.fw-matrix-pill.deny{background:rgba(251,113,133,.15);color:#fca5a5;border:1px solid rgba(251,113,133,.3)}
.fw-matrix-pill.notset{background:rgba(148,163,184,.1);color:var(--muted);border:1px solid var(--line)}
.fw-matrix-wrapper{overflow:auto}
.fw-matrix-scroll{overflow:auto}
.fw-matrix-table{border-collapse:separate;border-spacing:4px;min-width:max-content}
.fw-matrix-table th,.fw-matrix-table td{text-align:center}
.fw-matrix-origin{background:rgba(2,6,23,.4);border-radius:8px;padding:10px 14px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);min-width:130px}
.fw-zone-head{background:rgba(15,23,42,.7);border:1px solid var(--line);border-radius:10px;padding:10px 8px;min-width:80px;font-size:12px;font-weight:800;color:var(--text)}
.fw-zone-row-header{background:rgba(15,23,42,.7);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:12px;font-weight:800;color:var(--text);text-align:left;white-space:nowrap}
.fw-matrix-cell{border-radius:10px;padding:10px 8px;font-size:18px;cursor:pointer;transition:all .15s;position:relative;width:76px;height:56px;border:1px solid transparent}
.fw-matrix-cell:hover:not(.fw-cell-self){transform:scale(1.08);box-shadow:0 4px 16px rgba(0,0,0,.3)}
.fw-cell-allow{background:rgba(0,230,118,.14);border-color:rgba(0,230,118,.4);color:#6ee7b7}
.fw-cell-restrict{background:rgba(245,158,11,.14);border-color:rgba(245,158,11,.4);color:#fcd34d}
.fw-cell-deny{background:rgba(251,113,133,.14);border-color:rgba(251,113,133,.4);color:#fca5a5}
.fw-cell-notset{background:rgba(148,163,184,.06);border-color:var(--line);color:var(--muted);opacity:.7}
.fw-cell-self{background:rgba(2,6,23,.3);color:var(--muted);opacity:.3;cursor:default}
.fw-cell-count{position:absolute;top:3px;right:5px;font-size:9px;font-weight:900;color:var(--muted)}
/* Risk items */
.fw-risk-item{border-radius:14px;padding:16px;margin-bottom:12px;border:1px solid transparent}
.fw-risk-critical{background:rgba(251,113,133,.08);border-color:rgba(251,113,133,.3)}
.fw-risk-high{background:rgba(245,158,11,.07);border-color:rgba(245,158,11,.28)}
.fw-risk-medium{background:rgba(148,163,184,.06);border-color:var(--line)}
.fw-risk-info{background:rgba(56,189,248,.05);border-color:rgba(56,189,248,.2)}
.fw-risk-header{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.fw-risk-badge{padding:3px 8px;border-radius:999px;font-size:10px;font-weight:900;letter-spacing:.06em;flex-shrink:0}
.fw-rb-critical{background:rgba(251,113,133,.25);color:#fecdd3;border:1px solid rgba(251,113,133,.45)}
.fw-rb-high{background:rgba(245,158,11,.22);color:#fde68a;border:1px solid rgba(245,158,11,.4)}
.fw-rb-medium{background:rgba(148,163,184,.15);color:#cbd5e1;border:1px solid var(--line)}
.fw-rb-info{background:rgba(56,189,248,.15);color:#7dd3fc;border:1px solid rgba(56,189,248,.3)}
.fw-risk-detail{color:var(--muted);font-size:13px;margin:0 0 8px;line-height:1.5}
.fw-risk-fix{font-size:12px;color:#a7f3d0;background:rgba(0,230,118,.07);border-radius:8px;padding:8px 12px}
@media print{.studio-sidebar,.studio-header,.studio-hero,.bottom-nav,.export-actions,.fw-matrix-legend,.audit-import-tabs{display:none!important}.fw-risk-critical{background:#fff1f2}.fw-risk-high{background:#fffbeb}.fw-risk-medium{background:#f8fafc}}

/* ── MOP / CAB Builder ─────────────────────────────────────── */
.mop-tpl-btn{width:100%;border:1px solid var(--line);background:rgba(148,163,184,.06);border-radius:10px;padding:8px 12px;color:var(--muted);font-size:13px;font-weight:700;cursor:pointer;text-align:left;transition:all .15s}
.mop-tpl-btn:hover{background:rgba(232,121,249,.1);border-color:rgba(232,121,249,.35);color:var(--text)}
.mop-phase-badge{display:inline-block;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:800;letter-spacing:.05em;white-space:nowrap}
.mop-phase-prep{background:rgba(59,130,246,.18);color:#93c5fd;border:1px solid rgba(59,130,246,.35)}
.mop-phase-exec{background:rgba(245,158,11,.18);color:#fcd34d;border:1px solid rgba(245,158,11,.35)}
.mop-phase-verif{background:rgba(16,185,129,.18);color:#6ee7b7;border:1px solid rgba(16,185,129,.35)}
.mop-phase-rollback{background:rgba(239,68,68,.18);color:#fca5a5;border:1px solid rgba(239,68,68,.35)}
.mop-check-item{display:flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:rgba(15,23,42,.35);margin-bottom:6px}
.mop-check-item input[type=checkbox]{accent-color:var(--accent);width:16px;height:16px;flex-shrink:0;cursor:pointer}
.mop-check-item.done-item{opacity:.55;text-decoration:line-through}
.mop-check-card{border:1px solid var(--line);border-radius:16px;padding:16px 18px;background:rgba(15,23,42,.3);margin-bottom:16px}
.mop-check-card h3{font-size:14px;font-weight:800;margin:0 0 12px;color:var(--text)}
.mop-risk-result{border-radius:16px;padding:20px 24px;border:1px solid transparent;margin-top:16px}
.mop-risk-faible{background:rgba(0,230,118,.07);border-color:rgba(0,230,118,.3)}
.mop-risk-modere{background:rgba(245,158,11,.07);border-color:rgba(245,158,11,.3)}
.mop-risk-eleve{background:rgba(251,113,133,.07);border-color:rgba(251,113,133,.3)}
.mop-risk-critique{background:rgba(239,68,68,.1);border-color:rgba(239,68,68,.4)}
.mop-timeline-wrap{overflow-x:auto;padding-bottom:8px}
.mop-timeline-bar{display:flex;gap:2px;height:52px;border-radius:12px;overflow:hidden;min-width:600px;margin-top:12px}
.mop-tl-seg{display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:800;color:#fff;cursor:default;transition:opacity .15s;flex-shrink:0;overflow:hidden;white-space:nowrap;padding:0 6px}
.mop-tl-seg:hover{opacity:.85}
.mop-tl-markers{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-top:4px;min-width:600px}
.mop-tl-legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:14px;font-size:12px;color:var(--muted)}
.mop-tl-legend span{display:flex;align-items:center;gap:6px}
.mop-tl-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.mop-tl-warn{color:#fb7185;font-size:12px;margin-top:8px;font-weight:700}
@media print{.studio-sidebar,.studio-header,.studio-hero,.bottom-nav,.export-actions,.audit-import-tabs,.mop-check-item button,.mop-timeline-wrap button{display:none!important}.mop-check-card{border:1px solid #e2e8f0}.mop-risk-result{border:1px solid #e2e8f0}}

/* ── Flux Applicatifs ──────────────────────────────────────── */
.app-tpl-btn{width:100%;border:1px solid var(--line);background:rgba(148,163,184,.06);border-radius:10px;padding:8px 12px;color:var(--muted);font-size:13px;font-weight:700;cursor:pointer;text-align:left;transition:all .15s}
.app-tpl-btn:hover{background:rgba(6,182,212,.1);border-color:rgba(6,182,212,.35);color:var(--text)}
.app-tier-lane{border-left:4px solid;border-radius:0 14px 14px 0;padding:12px 16px;margin-bottom:10px;min-height:80px}
.app-tier-label{font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.08em;margin-bottom:10px;opacity:.85}
.app-tier-comps{display:flex;flex-wrap:wrap;gap:10px}
.app-comp-card{border-radius:12px;padding:10px 14px;border:1.5px solid;cursor:pointer;transition:all .15s;min-width:130px;max-width:200px;position:relative}
.app-comp-card:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.25)}
.app-comp-name{font-size:12px;font-weight:800;line-height:1.3;margin-bottom:3px;color:var(--text)}
.app-comp-tech{font-size:10px;color:var(--muted);margin-bottom:2px}
.app-comp-host{font-size:10px;color:var(--muted);font-family:ui-monospace,monospace}
.app-comp-crit{position:absolute;top:6px;right:8px;width:7px;height:7px;border-radius:50%}
.app-flow-finding{border-radius:14px;padding:16px;margin-bottom:12px;border:1px solid transparent}
.app-find-critical{background:rgba(239,68,68,.08);border-color:rgba(239,68,68,.3)}
.app-find-high{background:rgba(245,158,11,.07);border-color:rgba(245,158,11,.28)}
.app-find-medium{background:rgba(148,163,184,.06);border-color:var(--line)}
.app-find-low{background:rgba(56,189,248,.05);border-color:rgba(56,189,248,.2)}
.app-find-header{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.app-find-badge{padding:3px 9px;border-radius:999px;font-size:10px;font-weight:900;letter-spacing:.06em}
.app-find-critical .app-find-badge{background:rgba(239,68,68,.25);color:#fca5a5;border:1px solid rgba(239,68,68,.4)}
.app-find-high .app-find-badge{background:rgba(245,158,11,.22);color:#fde68a;border:1px solid rgba(245,158,11,.4)}
.app-find-medium .app-find-badge{background:rgba(148,163,184,.15);color:#cbd5e1;border:1px solid var(--line)}
.app-find-low .app-find-badge{background:rgba(56,189,248,.15);color:#7dd3fc;border:1px solid rgba(56,189,248,.3)}
.app-find-fix{font-size:12px;color:#a7f3d0;background:rgba(0,230,118,.07);border-radius:8px;padding:8px 12px;margin-top:8px}
.app-find-detail{color:var(--muted);font-size:13px;margin:0 0 6px;line-height:1.5}
.app-tier-legend-item{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--muted);padding:3px 0}
.app-tier-legend-dot{width:9px;height:9px;border-radius:3px;flex-shrink:0}
@media print{.studio-sidebar,.studio-header,.studio-hero,.bottom-nav,.export-actions,.audit-import-tabs{display:none!important}}

/* ── Config Analyzer ───────────────────────────────────────── */
.sev-filter{padding:7px 14px;border-radius:999px;border:1px solid var(--line);background:rgba(148,163,184,.08);color:var(--muted);font-size:12px;font-weight:700;cursor:pointer;transition:all .15s}
.sev-filter:hover{border-color:var(--accent);color:var(--text)}
.sev-filter.active{background:var(--accent);color:#000;border-color:var(--accent)}
.cfg-finding{border-radius:14px;padding:18px;margin-bottom:14px;border:1px solid transparent}
.cfg-find-critical{background:rgba(239,68,68,.08);border-color:rgba(239,68,68,.3)}
.cfg-find-high{background:rgba(245,158,11,.07);border-color:rgba(245,158,11,.28)}
.cfg-find-medium{background:rgba(251,191,36,.06);border-color:rgba(251,191,36,.25)}
.cfg-find-low{background:rgba(96,165,250,.06);border-color:rgba(96,165,250,.25)}
.cfg-find-header{display:flex;align-items:center;gap:10px;margin-bottom:8px;flex-wrap:wrap}
.cfg-find-badge{padding:3px 9px;border-radius:999px;font-size:10px;font-weight:900;letter-spacing:.06em;flex-shrink:0}
.cfg-find-critical .cfg-find-badge{background:rgba(239,68,68,.25);color:#fca5a5;border:1px solid rgba(239,68,68,.4)}
.cfg-find-high .cfg-find-badge{background:rgba(245,158,11,.22);color:#fde68a;border:1px solid rgba(245,158,11,.4)}
.cfg-find-medium .cfg-find-badge{background:rgba(251,191,36,.18);color:#fbbf24;border:1px solid rgba(251,191,36,.35)}
.cfg-find-low .cfg-find-badge{background:rgba(96,165,250,.15);color:#93c5fd;border:1px solid rgba(96,165,250,.3)}
.cfg-find-title{font-size:14px;font-weight:800;margin-bottom:6px;color:var(--text)}
.cfg-find-detail{font-size:13px;color:var(--muted);margin:0 0 10px;line-height:1.55}
.cfg-find-fix-block{background:rgba(2,6,23,.6);border-radius:10px;padding:12px;margin-bottom:8px}
.cfg-find-fix-label{font-size:11px;font-weight:800;color:#6ee7b7;margin-bottom:6px;text-transform:uppercase;letter-spacing:.05em}
.cfg-find-fix-code{font-family:ui-monospace,monospace;font-size:11.5px;color:#a7f3d0;white-space:pre-wrap;margin:0;line-height:1.55}
.cfg-find-ref{font-size:11px;color:var(--muted);margin-top:6px;font-style:italic}
.cfg-copy-btn{margin-top:6px!important}

/* ── Workspace / Dashboard Layout (ws-*) ────────────────────── */
body.ws-body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif;background:#060b14;color:#e5eefc;min-height:100vh;display:flex;--text:var(--text-ws,#e5eefc);--text-2:var(--text2-ws,#8b9bb8);--text-3:var(--text3-ws,#5a6a8a);--surface:rgba(15,23,42,.9);--surface-2:rgba(24,34,56,.92);--surface-3:rgba(5,10,22,.5);--border:rgba(148,163,184,.14);--border-2:rgba(148,163,184,.28);--accent:#00e676;--accent-dim:rgba(0,230,118,.12)}
body.ws-body.light{background:#edf3f8;color:#0f172a;--text:var(--text-ws,#0f172a);--text-2:var(--text2-ws,#475569);--text-3:var(--text3-ws,#94a3b8);--surface:rgba(255,255,255,.95);--surface-2:#f1f5f9;--surface-3:#e2e8f0;--border:rgba(15,23,42,.12);--border-2:rgba(15,23,42,.24)}
/* Sidebar nav */
.ws-nav{width:220px;flex-shrink:0;height:100vh;position:sticky;top:0;background:rgba(6,11,20,.96);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;transition:width .2s;z-index:10}
.ws-nav.collapsed{width:52px}
.ws-nav-logo{display:flex;align-items:center;justify-content:space-between;padding:16px 14px 12px;border-bottom:1px solid var(--border);flex-shrink:0}
.ws-logo-link{display:flex;align-items:center;gap:9px;text-decoration:none;color:var(--text);font-size:17px;font-weight:850;white-space:nowrap;overflow:hidden}
.ws-logo-link em{font-style:normal;color:var(--accent)}
.brand-mark{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,#00e676,#38bdf8);color:#02110a;font-size:14px;font-weight:900;flex-shrink:0}
.ws-logo-text{overflow:hidden;white-space:nowrap;transition:opacity .2s}
.ws-nav.collapsed .ws-logo-text{opacity:0;pointer-events:none}
.ws-nav-toggle{background:none;border:1px solid var(--border);border-radius:6px;color:var(--text-2);width:22px;height:22px;cursor:pointer;font-size:13px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:transform .2s}
.ws-nav.collapsed .ws-nav-toggle{transform:rotate(180deg)}
.ws-nav-section{padding:8px 8px 4px;flex-shrink:0}
.ws-nav-section-label{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.12em;color:var(--text-3);padding:6px 8px 4px;white-space:nowrap;overflow:hidden}
.ws-nav.collapsed .ws-nav-section-label{opacity:0;height:0;padding:0;margin:0;overflow:hidden}
.ws-nav-item{display:flex;align-items:center;gap:10px;padding:8px 8px;border-radius:9px;text-decoration:none;color:var(--text-2);font-size:13px;font-weight:600;cursor:pointer;background:none;border:none;width:100%;text-align:left;white-space:nowrap;overflow:hidden;transition:all .15s}
.ws-nav-item:hover,.ws-nav-item.active{background:rgba(0,230,118,.1);color:var(--text)}
.ws-nav-item.active{color:var(--accent)}
.ws-nav-icon{font-size:16px;flex-shrink:0;width:20px;text-align:center}
.ws-nav-label{overflow:hidden;white-space:nowrap;transition:opacity .2s}
.ws-nav.collapsed .ws-nav-label{opacity:0;pointer-events:none;width:0}
.ws-nav-footer{margin-top:auto;padding:8px;border-top:1px solid var(--border)}
/* Workspace area */
.ws-workspace{flex:1;min-width:0;display:flex;flex-direction:column;height:100vh;overflow:hidden}
/* Topbar */
.ws-topbar{display:flex;align-items:center;justify-content:space-between;padding:0 24px;height:48px;border-bottom:1px solid var(--border);background:rgba(6,11,20,.72);backdrop-filter:blur(12px);flex-shrink:0}
.ws-breadcrumb{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-2)}
.ws-breadcrumb a{color:var(--text-2);text-decoration:none}
.ws-breadcrumb a:hover{color:var(--text)}
.ws-breadcrumb-sep{opacity:.4}
.ws-topbar-end{display:flex;align-items:center;gap:10px}
@media(max-width:768px){.ws-nav{position:fixed;z-index:100;height:100vh}.ws-workspace{margin-left:0}.ws-nav:not(.collapsed){width:220px}}
@media print{.studio-sidebar,.studio-header,.studio-hero,.bottom-nav,.export-actions,.sev-filter,#severityFilters,#categoryFilter{display:none!important}.cfg-finding{border:1px solid #e2e8f0;break-inside:avoid}}

/* === FOOTER (studio pages) === */
.footer{background:rgba(6,11,20,.85);border-top:1px solid var(--line);padding:40px 24px;text-align:center}
.footer-inner{display:flex;flex-direction:column;align-items:center;gap:14px}
.footer-img-logo{height:80px;width:auto;object-fit:contain;opacity:.85}
.footer-desc{color:var(--muted);font-size:13px}
.footer-links{display:flex;gap:20px;flex-wrap:wrap;justify-content:center}
.footer-links a{color:var(--muted);font-size:13px;transition:color .15s}
.footer-links a:hover{color:var(--accent)}
.footer-copy{color:rgba(100,116,139,.4);font-size:12px}
.footer-social{display:flex;gap:10px;align-items:center;justify-content:center}
.social-btn{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:9px;background:rgba(255,255,255,.04);border:1px solid var(--line);color:var(--muted);transition:all .15s}
.social-btn:hover{border-color:var(--accent);color:var(--accent);background:rgba(0,230,118,.08);transform:translateY(-2px)}
.social-btn svg{width:16px;height:16px;fill:currentColor}
