:root{--bg:#0e1117;--panel:#171c25;--panel2:#202735;--line:#343d4d;--ink:#f4f6fa;--muted:#a9b1bf;--accent:#4fd1c5;--gold:#eabf62;--danger:#ef6b78;--warning:#f4a950;--ok:#59d28f;--radius:16px;--shadow:0 18px 55px rgba(0,0,0,.3)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:radial-gradient(circle at 15% 0,#1b3042 0,transparent 34%),linear-gradient(135deg,#0d1015,#111827 55%,#0d1219);color:var(--ink);font:15px/1.5 system-ui,-apple-system,Segoe UI,sans-serif}a{color:inherit}button,input,select{font:inherit}.hidden{display:none!important}.brand-mark{display:grid;width:44px;height:44px;place-items:center;border:1px solid rgba(255,255,255,.25);border-radius:13px;background:linear-gradient(145deg,var(--accent),#2b7db1);color:#071015;font-weight:950;letter-spacing:-.08em}.eyebrow{margin:0;color:var(--accent);font-size:.72rem;font-weight:850;letter-spacing:.13em;text-transform:uppercase}.button{display:inline-flex;min-height:40px;align-items:center;justify-content:center;gap:7px;padding:8px 14px;border:1px solid transparent;border-radius:10px;cursor:pointer;font-weight:800;text-decoration:none}.button.primary{background:linear-gradient(135deg,var(--accent),#47a8d2);color:#061014}.button.secondary{border-color:#56859a;background:#263b4b;color:#eafaff}.button.ghost{border-color:var(--line);background:transparent;color:var(--ink)}.button.warning{background:var(--warning);color:#201000}.button.small{min-height:32px;padding:5px 9px;font-size:.77rem}.button:disabled{opacity:.45;cursor:not-allowed}.alert{max-width:1180px;margin:10px auto;padding:12px 15px;border:1px solid var(--line);border-radius:11px;background:var(--panel)}.alert.error{border-color:#9c3d48;background:#3a1b22}.alert.success{border-color:#2d7753;background:#15372a}.alert.warning{border-color:#8d6328;background:#382b17}.alert.secret{border-color:var(--gold);background:#3f3217;color:#fff7d2;font-weight:750}.form-stack{display:grid;gap:13px}.form-stack.compact{margin-top:10px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.form-grid .wide{grid-column:1/-1}label{display:grid;gap:5px;color:var(--muted);font-size:.78rem;font-weight:750}input,select{width:100%;min-height:42px;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:#0f141c;color:var(--ink)}input:focus,select:focus{outline:2px solid rgba(79,209,197,.45);border-color:var(--accent)}.check{display:flex;align-items:center;gap:8px;color:var(--ink);font-weight:650}.check input{width:18px;min-height:18px}.help{margin:0;color:var(--muted);font-size:.75rem}fieldset{display:grid;gap:12px;margin:0;padding:15px;border:1px solid var(--line);border-radius:12px}legend{padding:0 8px;color:var(--gold);font-weight:850}.install-page,.login-page,.bridge-page{min-height:100vh}.install-layout,.login-shell{display:grid;min-height:100vh;grid-template-columns:minmax(280px,1fr) minmax(390px,650px);gap:50px;align-items:center;padding:clamp(25px,6vw,90px)}.install-intro,.login-intro{max-width:760px}.install-intro h1,.login-intro h1,.bridge-card h1{margin:.5rem 0;font-size:clamp(2.3rem,5vw,5rem);line-height:1}.install-intro>p,.login-intro>p{color:#ccd4df;font-size:1.08rem}.requirements{display:flex;flex-wrap:wrap;gap:7px;margin-top:25px}.requirements span{padding:5px 9px;border:1px solid var(--line);border-radius:999px;background:rgba(0,0,0,.25);font-size:.72rem}.requirements .ok{border-color:#357d58;color:#9af0bd}.requirements .error{border-color:#9c3d48;color:#ffadb5}.install-card,.login-card,.bridge-card{padding:clamp(22px,4vw,42px);border:1px solid var(--line);border-radius:var(--radius);background:rgba(23,28,37,.94);box-shadow:var(--shadow);backdrop-filter:blur(15px)}.install-card h2,.login-card h2{margin:.3rem 0 1rem;font-size:1.7rem}.public-gallery-list{display:grid;gap:8px;margin-top:30px}.public-gallery-list h2{font-size:1rem}.public-gallery-list a{display:grid;padding:12px 14px;border:1px solid rgba(255,255,255,.18);border-radius:11px;background:rgba(0,0,0,.25);text-decoration:none}.public-gallery-list small{color:var(--muted)}.bridge-page{display:grid;place-items:center;padding:20px}.bridge-card{max-width:620px;text-align:center}.bridge-card .brand-mark{margin:auto}.hub-header{position:sticky;z-index:50;top:0;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:25px;padding:12px clamp(18px,4vw,60px);border-bottom:1px solid var(--line);background:rgba(14,17,23,.92);backdrop-filter:blur(18px)}.hub-brand{display:flex;align-items:center;gap:10px;text-decoration:none}.hub-brand>span:last-child,.hub-user>span{display:grid}.hub-brand small,.hub-user small{color:var(--muted);font-size:.68rem}.hub-header nav{display:flex;justify-content:center;gap:6px}.hub-header nav a{padding:7px 9px;border-radius:8px;text-decoration:none;color:var(--muted);font-weight:750}.hub-header nav a:hover{background:var(--panel2);color:var(--ink)}.hub-user{display:flex;align-items:center;gap:10px;text-align:right}.hub-main{display:grid;max-width:1320px;margin:auto;gap:20px;padding:25px 18px 80px}.hero-panel,.panel{border:1px solid var(--line);border-radius:var(--radius);background:rgba(23,28,37,.92);box-shadow:var(--shadow)}.hero-panel{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:clamp(20px,4vw,45px)}.hero-panel h1{margin:.25rem 0;font-size:clamp(2rem,4vw,4rem);line-height:1}.hero-panel p{max-width:760px;color:var(--muted)}.hero-actions,.panel-heading,.instance-actions,.option-row{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.metrics article{display:grid;padding:18px;border:1px solid var(--line);border-radius:13px;background:var(--panel)}.metrics strong{font-size:1.65rem}.metrics span{color:var(--muted);font-size:.74rem}.panel{padding:clamp(16px,3vw,28px);scroll-margin-top:85px}.panel-heading{justify-content:space-between;margin-bottom:18px}.panel-heading h2{margin:.2rem 0;font-size:1.7rem}.instance-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:12px}.instance-card{display:grid;gap:12px;padding:16px;border:1px solid var(--line);border-radius:13px;background:#111720}.instance-heading{display:flex;align-items:start;justify-content:space-between;gap:10px}.instance-heading h3{margin:.3rem 0 0;font-size:1.15rem}.instance-heading p{margin:0;color:var(--muted);font-size:.75rem}.status,.version-pill{display:inline-flex;padding:3px 8px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:.64rem;font-weight:850;text-transform:uppercase}.status.active,.status.completed{border-color:#307d55;background:#183d2c;color:#99efbb}.status.provisioning,.status.running,.status.update_pending{border-color:#946827;background:#3a2c17;color:#ffd68c}.status.error,.status.failed,.status.update_failed{border-color:#9c3d48;background:#3a1b22;color:#ffadb5}.instance-data{display:grid;grid-template-columns:repeat(2,1fr);gap:7px;margin:0}.instance-data div{padding:8px;border:1px solid #293241;border-radius:8px}.instance-data dt{color:var(--muted);font-size:.62rem;text-transform:uppercase}.instance-data dd{overflow:hidden;margin:2px 0 0;font-size:.78rem;text-overflow:ellipsis;white-space:nowrap}.instance-error{margin:0;padding:8px;border-left:3px solid var(--danger);background:#341a20;color:#ffc1c7;font-size:.72rem}.instance-card details{border-top:1px solid var(--line);padding-top:8px}.instance-card summary{cursor:pointer;color:var(--gold);font-size:.75rem;font-weight:800}.option-form{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:10px}.create-form{display:grid;gap:14px}.release-instructions{display:grid;gap:5px;padding:13px;border:1px solid var(--line);border-radius:11px;background:#10161e}.release-instructions code{overflow:auto;padding:7px;background:#070b10;color:#9ae8df}.release-instructions p{margin:0;color:var(--muted);font-size:.76rem}.release-upload{display:grid;grid-template-columns:1fr auto;align-items:end;gap:10px;margin:14px 0}.release-list,.job-list{display:grid;gap:7px}.release-list article,.job-list article{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:#111720}.release-list article.active{border-color:#3b8160}.release-list article>div,.job-list article>div{display:grid}.release-list small,.job-list small{color:var(--muted);font-size:.68rem}.job-list article{justify-content:flex-start}.job-list p{margin:3px 0 0;color:#ffb2ba;font-size:.7rem}.empty-state{padding:25px;border:1px dashed var(--line);border-radius:12px;color:var(--muted);text-align:center}@media(max-width:900px){.install-layout,.login-shell{grid-template-columns:1fr;align-content:start}.hub-header{grid-template-columns:1fr auto}.hub-header nav{display:none}.metrics{grid-template-columns:repeat(2,1fr)}.hero-panel{align-items:flex-start;flex-direction:column}}@media(max-width:600px){.form-grid,.metrics,.instance-data,.release-upload{grid-template-columns:1fr}.form-grid .wide{grid-column:1}.instance-grid{grid-template-columns:1fr}.hub-user>span{display:none}.hub-main{padding-inline:10px}.install-layout,.login-shell{padding:18px}.hero-panel{padding:20px}.panel{padding:14px}}

/* Hub 1.2.0 — import par jeton, sélection et progression. */
.instance-selection-toolbar{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  justify-content:flex-end;
  margin:0 0 14px;
}
.instance-select{
  display:flex;
  align-items:center;
  gap:7px;
  font-size:.78rem;
  margin-bottom:8px;
}
.token-import-panel{
  scroll-margin-top:90px;
}
.token-gallery-summary{
  display:grid;
  gap:4px;
  padding:12px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--paper);
}
.token-gallery-summary strong{font-size:1.05rem}
.slug-live-state{
  display:grid;
  align-content:end;
  gap:3px;
  padding:4px 0 8px;
}
.slug-live-state strong[data-state="ok"]{color:#18794e}
.slug-live-state strong[data-state="error"]{color:#b42318}
.slug-live-state strong[data-state="checking"]{color:var(--muted)}
.token-progress{
  margin-top:18px;
  padding:16px;
  border:1px solid var(--line);
  border-radius:16px;
  background:var(--paper);
}
.token-progress-head{
  display:flex;
  justify-content:space-between;
  gap:16px;
  align-items:flex-start;
}
.token-progress-head h3{margin:.2rem 0 0}
.token-progress-head>strong{font-size:1.4rem}
.token-progress-bar{
  height:12px;
  margin:12px 0;
  border-radius:999px;
  overflow:hidden;
  background:rgba(127,127,127,.18);
}
.token-progress-bar>span{
  display:block;
  height:100%;
  width:0;
  background:currentColor;
  transition:width .2s ease;
}
.token-progress-metrics{
  display:flex;
  gap:16px;
  flex-wrap:wrap;
  margin-bottom:12px;
  font-size:.78rem;
}
.token-progress-files{
  max-height:320px;
  overflow:auto;
  border:1px solid var(--line);
  border-radius:10px;
  background:#111;
  color:#f2f2f2;
  font:12px/1.45 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
.progress-file{
  display:grid;
  grid-template-columns:20px minmax(0,1fr) 90px 120px;
  gap:8px;
  align-items:center;
  padding:5px 8px;
  border-bottom:1px solid rgba(255,255,255,.08);
}
.progress-file.current{
  background:rgba(255,255,255,.08);
}
.progress-file code{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:inherit;
}
.progress-file small{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.progress-file-state{
  text-align:center;
  font-weight:700;
}
.settings-token-form{display:grid;gap:10px}
.hidden{display:none!important}
@media(max-width:760px){
  .progress-file{grid-template-columns:18px minmax(0,1fr) 70px}
  .progress-file small{grid-column:2 / -1}
}


/* Hub 1.2.6 — reprise des imports longs. */
.token-progress-actions{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
  margin:10px 0;
}
.token-progress-actions .help{margin:0}
