:root{--bg:#0d1117;--side:#10151c;--card:#151b24;--line:#1f2733;--line2:#2a3442;--text:#e6eaf0;--mut:#98a3b3;--dim:#8b96a6;--acc:#f08a24;--ok:#4ade80;--warn:#fbbf24;--bad:#f87171}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font:14px/1.45 Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
button,input{font:inherit;color:inherit}
button:focus-visible,input:focus-visible,a:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
.mono{font-family:ui-monospace,"JetBrains Mono",Menlo,Consolas,monospace}
.shell{display:flex;flex-wrap:wrap;min-height:100vh}
.side{flex:0 0 248px;background:var(--side);border-right:1px solid var(--line);padding:20px 14px;display:flex;flex-direction:column;gap:20px}
.brand{display:flex;align-items:center;gap:10px;padding:0 8px;font-weight:700;font-size:15px}
.logo{width:30px;height:30px;border-radius:8px;background:var(--acc);display:flex;align-items:center;justify-content:center}
.label{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);padding:0 10px}
.nav{display:flex;align-items:center;gap:10px;width:100%;height:40px;padding:0 10px;border-radius:10px;border:1px solid transparent;background:transparent;color:#b4bfcd;cursor:pointer;text-align:left}
.nav:hover{background:#171d26}
.nav.on{background:#1b2330;color:#fff;border-color:var(--acc)}
.dot{width:8px;height:8px;border-radius:50%;flex:0 0 8px;background:var(--dim)}
.dot.ok{background:var(--ok)}.dot.warn{background:var(--warn)}.dot.bad{background:var(--bad)}
.main{flex:999 1 560px;min-width:0;padding:0 32px 40px;display:flex;flex-direction:column;gap:22px}
.top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:18px 0;border-bottom:1px solid var(--line)}
h1{margin:0;font-size:28px;letter-spacing:-.02em}h2{margin:0;font-size:16px}
.sub{color:var(--mut);margin:4px 0 0}
.row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.btn{height:40px;padding:0 16px;border-radius:10px;border:1px solid var(--line2);background:var(--card);cursor:pointer;font-weight:500}
.btn:hover{background:#1b2330}
.btn.primary{background:var(--acc);border-color:var(--acc);color:#1a1206;font-weight:600}
.btn.danger{border-color:#5b2a2a;color:var(--bad)}
.btn.sm{height:32px;padding:0 12px;font-size:13px}
.btn:disabled{opacity:.5;cursor:not-allowed}
.pill{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600;border:1px solid var(--line2)}
.pill.ok{background:#12261c;color:var(--ok);border-color:#1d4a31}
.pill.warn{background:#2a2110;color:var(--warn);border-color:#4a3a14}
.pill.bad{background:#2a1414;color:var(--bad);border-color:#5b2a2a}
.grid{display:grid;gap:16px}
.g4{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.g3{grid-template-columns:repeat(auto-fit,minmax(290px,1fr))}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px}
.pad{padding:18px}
.kpi .v{font-size:28px;font-weight:700;letter-spacing:-.02em}
.kpi .s{color:var(--dim);font-size:13px}
.bar{height:6px;border-radius:999px;background:#222b38;overflow:hidden;margin-top:8px}
.bar i{display:block;height:100%;border-radius:999px;background:var(--acc)}
.bar i.warn{background:var(--warn)}.bar i.bad{background:var(--bad)}
.head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid var(--line)}
table{width:100%;border-collapse:collapse;min-width:640px}
th{text-align:left;color:var(--dim);font-size:12px;text-transform:uppercase;letter-spacing:.06em;padding:12px 8px;font-weight:600}
td{padding:11px 8px;border-top:1px solid var(--line);color:var(--mut)}
th:first-child,td:first-child{padding-left:18px}th:last-child,td:last-child{padding-right:18px}
tr.item{cursor:pointer}tr.item:hover{background:#171d26}
td.name{color:var(--text);font-weight:600}
.scroll{overflow-x:auto}
.tag{font-size:11px;color:var(--dim);background:#1b2330;border-radius:6px;padding:2px 6px}
.chip{height:32px;padding:0 12px;border-radius:8px;border:1px solid var(--line2);background:transparent;color:#c3ccd8;cursor:pointer;font-size:13px;font-weight:500}
.chip.on{background:var(--acc);border-color:var(--acc);color:#1a1206}
input.f,select.f{height:44px;width:100%;background:var(--bg);border:1px solid var(--line2);border-radius:10px;padding:0 12px}
label.l{display:flex;flex-direction:column;gap:6px;font-weight:500}
.form{display:flex;flex-direction:column;gap:14px}
.err{color:var(--bad);min-height:20px;margin:0}.okmsg{color:var(--ok);min-height:20px;margin:0}
.ostile{display:inline-flex;align-items:center;justify-content:center;border-radius:14px;color:#fff;font-weight:700;flex:0 0 auto}
.ostile.lg{width:60px;height:60px;font-size:26px}.ostile.sm{width:28px;height:28px;border-radius:8px;font-size:13px}
.ostile.ubuntu{background:#e95420}.ostile.debian{background:#a80030}.ostile.windows{background:#0b6bcb}.ostile.linux{background:#3b4658}
dl.kv{margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px 20px}
dl.kv dt{font-size:12px;color:var(--dim)}dl.kv dd{margin:2px 0 0;font-size:13px;overflow-wrap:anywhere}
ul.plain{list-style:none;margin:0;padding:6px 0}
ul.plain li{display:flex;gap:12px;padding:11px 18px;align-items:flex-start}
.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}
.login .card{width:100%;max-width:380px;padding:28px}
.toast{position:fixed;right:16px;bottom:16px;background:var(--card);border:1px solid var(--line2);border-radius:12px;padding:12px 16px;max-width:360px}
@media (max-width:640px){.main{padding:0 16px 32px}.side{flex-basis:100%;border-right:0;border-bottom:1px solid var(--line)}}
.gcols{display:grid;grid-template-columns:minmax(0,3fr) minmax(340px,2fr);gap:16px;align-items:start}
.gmain,.gside{display:flex;flex-direction:column;gap:16px;min-width:0}
.console{overflow:hidden;display:flex;flex-direction:column}
.conhead{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 14px;background:var(--side);border-bottom:1px solid var(--line)}
.conhead h2{font-size:13px;font-weight:500;color:var(--mut);margin-right:auto;white-space:nowrap}
.conbtns{display:flex;flex-wrap:wrap;gap:6px}
.conwrap{position:relative;background:var(--bg)}
.conbody{height:420px;position:relative;overflow:hidden;background:var(--bg)}
.conbody .xterm{height:100%;padding:8px}
.conbody .xterm-viewport{background-color:var(--bg)!important;scrollbar-color:#2a3442 var(--bg);scrollbar-width:thin}
.conbody{color-scheme:dark}
.conover{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:18px;text-align:center;background:rgba(13,17,23,.92)}
.conover[hidden]{display:none}
.conover p{margin:0}
.console:fullscreen{border-radius:0;background:var(--bg)}
.console:fullscreen .conwrap{flex:1}
.console:fullscreen .conbody{height:100%}
@media (max-width:1099px){.gcols{display:flex;flex-direction:column;align-items:stretch}.gmain,.gside{display:contents}.gos{order:1}.gusage{order:2}.gcon{order:3}.gcfg{order:4}.conbody{height:min(420px,60vh)}}

/* ---- assistant de déploiement Windows ---- */
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
select.f{appearance:auto;color:var(--text)}
textarea.f{width:100%;background:var(--bg);border:1px solid var(--line2);border-radius:10px;padding:10px 12px;resize:vertical}
textarea,select{font:inherit;color:inherit}
select:focus-visible,textarea:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
[aria-invalid="true"]{border-color:var(--bad)!important}
.ferr{color:var(--bad);font-size:12px;min-height:0;display:block}.ferr:empty{display:none}
.dp-wiz,.dp-live{display:flex;flex-direction:column;gap:16px;min-width:0}
.dp-live{gap:16px}
.dp-steps{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.dp-steps li{display:flex;align-items:center;gap:8px;padding:6px 12px 6px 6px;border:1px solid var(--line2);border-radius:999px;color:var(--mut);font-weight:500}
.dp-steps li.on{border-color:var(--acc);color:var(--text);background:#1b2330}
.dp-steps li.past{color:var(--ok)}
.dp-n{width:24px;height:24px;border-radius:50%;background:var(--line2);display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--text)}
.dp-steps li.on .dp-n{background:var(--acc);color:#1a1206}
.dp-form{display:flex;flex-direction:column;gap:18px;min-width:0}
.dp-fs{border:1px solid var(--line);border-radius:14px;margin:0;padding:14px 16px 16px;display:flex;flex-direction:column;gap:12px;min-width:0}
.dp-fs>legend{padding:0 8px;font-weight:600;color:var(--text)}
.dp-adv>summary{cursor:pointer;font-weight:600;padding:2px 0}
.dp-adv[open]>summary{margin-bottom:10px}
.dp-grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}
.dp-grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}
.dp-cn{margin:0}.dp-hint{display:block;font-size:12px;margin-top:2px}
.dp-warn{margin:0;padding:10px 12px;border:1px solid #4a3a14;background:#2a2110;color:var(--warn);border-radius:10px;font-size:13px}
.dp-info{margin:0;padding:10px 12px;border:1px solid var(--line2);background:#121923;color:var(--mut);border-radius:10px;font-size:13px}
.dp-radios{gap:18px}
.dp-radio,.dp-check{display:flex;align-items:flex-start;gap:10px;cursor:pointer}
.dp-radio input,.dp-check input,.dp-app input{width:18px;height:18px;margin:2px 0 0;accent-color:var(--acc);flex:0 0 18px}
.dp-apps{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.dp-app{display:flex;gap:10px;padding:12px;border:1px solid var(--line2);border-radius:12px;cursor:pointer;background:var(--bg)}
.dp-app.on{border-color:var(--acc);background:#1b2330}
.dp-app:focus-within{outline:2px solid var(--acc);outline-offset:2px}
.dp-id{display:block;font-size:11px;color:var(--dim);margin-top:2px}
.dp-nav{justify-content:space-between;gap:10px}.dp-sp{flex:1}
.dp-kv dd{overflow-wrap:anywhere}
.dp-head{justify-content:space-between;align-items:flex-start}
.dp-cols{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:16px;align-items:start}
.dp-phases{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.dp-ph{display:flex;align-items:flex-start;gap:12px;padding:8px 6px;border-radius:10px;color:var(--mut)}
.dp-ph.running{background:#1b2330;color:var(--text)}.dp-ph.ok{color:var(--text)}.dp-ph.error{color:var(--bad)}.dp-ph.warn{color:var(--warn)}
.dp-gl{width:22px;height:22px;border-radius:50%;border:1px solid var(--line2);display:inline-flex;align-items:center;justify-content:center;font-size:12px;flex:0 0 22px;font-weight:700}
.dp-ph.ok .dp-gl,.dp-gl.dp-ok{background:#12261c;color:var(--ok);border-color:#1d4a31}
.dp-ph.running .dp-gl,.dp-gl.dp-running{color:#1a1206;background:var(--acc);border-color:var(--acc);animation:dp-pulse 1.4s ease-in-out infinite}
.dp-ph.error .dp-gl,.dp-gl.dp-error{background:#2a1414;color:var(--bad);border-color:#5b2a2a}
.dp-ph.warn .dp-gl{background:#2a2110;color:var(--warn);border-color:#4a3a14}
.dp-pl{flex:1;min-width:0}.dp-pt{font-size:12px;white-space:nowrap}
.dp-log{max-height:320px;overflow:auto;padding:12px 16px;font-size:12px;line-height:1.6;background:var(--bg);border-radius:0 0 16px 16px}
.dp-log div{overflow-wrap:anywhere}
.dp-cred{border-color:var(--acc);display:flex;flex-direction:column;gap:12px}
.dp-pw{font-size:15px;letter-spacing:.04em;overflow-wrap:anywhere}
.dp-res,.dp-errbox,.dp-warnbox{display:flex;flex-direction:column;gap:12px}
.dp-errbox{border-color:#5b2a2a}.dp-errbox p{margin:0;color:var(--bad)}
.dp-warnbox ul{margin:0;padding-left:20px}
.dp-script{min-height:140px}
.ct-table input.f{height:36px;min-width:130px}
.ct-table td{vertical-align:middle}
@keyframes dp-pulse{50%{opacity:.55}}
@media (prefers-reduced-motion:reduce){.dp-ph.running .dp-gl,.dp-gl.dp-running{animation:none}}
@media (max-width:760px){.dp-cols{grid-template-columns:minmax(0,1fr)}.dp-steps li span:last-child{font-size:12px}.dp-head{flex-direction:column}.dp-nav .btn{flex:1 1 auto}}
