
:root{--bg:#040910;--panel:#09131e;--line:rgba(139,172,198,.18);--cyan:#20e4d8;--green:#80ed4d;--red:#ff5b62;--gold:#ffd166;--purple:#a86dff;--text:#eef7fb;--muted:#91a5b7}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,system-ui,sans-serif}button,select,input{font:inherit}.app{min-height:100vh;padding:10px;background:radial-gradient(circle at 50% -10%,rgba(32,228,216,.09),transparent 35%),linear-gradient(#050b12,#02060b)}
.top{display:grid;grid-template-columns:210px minmax(0,1fr);gap:10px;margin-bottom:10px}.logo,.res,.nav,.content,.panel,.card,.metric{border:1px solid var(--line);background:linear-gradient(180deg,rgba(14,28,42,.98),rgba(5,13,21,.98));box-shadow:0 18px 50px rgba(0,0,0,.24)}.logo{border-radius:13px;padding:12px;display:flex;gap:10px;align-items:center}.logo img{width:48px;height:48px}.logo strong{font-size:22px}.logo strong span{color:var(--cyan)}.logo small{display:block;color:var(--muted)}
.strip{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(105px,1fr);gap:6px;overflow-x:auto}.res{border-radius:12px;padding:10px;color:white;text-align:left}.res small,.res em{display:block;color:var(--muted);font-size:10px;font-style:normal}.res strong{display:block;font-size:16px;margin:3px 0}.money strong{color:var(--green)}.fil-icon{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#12303a;color:var(--cyan);font-size:9px;font-weight:900;margin-right:5px}
.layout{display:grid;grid-template-columns:190px minmax(0,1fr);gap:10px}.nav{border-radius:14px;padding:10px;display:flex;flex-direction:column;gap:6px;min-height:calc(100vh - 96px)}.nav button{border:0;border-radius:10px;padding:13px 11px;background:transparent;color:#dbe8ef;text-align:left;font-weight:800;cursor:pointer}.nav button.active,.nav button:hover{background:linear-gradient(90deg,rgba(32,228,216,.85),rgba(32,228,216,.18));color:white}.bill{margin-top:auto;border:1px solid var(--line);border-radius:12px;padding:14px;text-align:center;display:grid;gap:5px;background:#07111a}.bill small,.bill span,.bill em{color:var(--muted);font-style:normal}.bill strong{font-size:24px}
.content{border-radius:14px;padding:12px;min-width:0}.head{display:flex;justify-content:space-between;align-items:center;gap:14px;margin:0 3px 10px}.head h1{font-size:21px;margin:0}.head p{margin:4px 0;color:var(--muted)}.xp{min-width:220px}.xp div{height:8px;background:#1b2a36;border-radius:99px;overflow:hidden;margin:6px 0}.xp i{display:block;height:100%;background:linear-gradient(90deg,var(--cyan),var(--purple))}
.workshop{position:relative;min-height:680px;border:1px solid var(--line);border-radius:15px;overflow:hidden;background-size:cover;background-position:center;box-shadow:inset 0 -80px 130px rgba(0,0,0,.28)}.workshop-title{position:absolute;top:15px;left:17px;z-index:8;background:rgba(3,9,14,.78);padding:10px 12px;border-radius:10px}.workshop-title b,.workshop-title span{display:block}.workshop-title span{color:var(--muted);font-size:12px}
.station,.empty{position:absolute;border:0;background:transparent;color:white;cursor:pointer}.station{width:230px}.s1{left:12%;top:35%}.s2{left:40%;top:30%}.s3{right:8%;top:35%}.s4{left:23%;bottom:5%}.s5{left:48%;bottom:5%}.s6{right:7%;bottom:5%}.s7{left:7%;bottom:4%}.station img{width:100%;height:220px;object-fit:contain;filter:drop-shadow(0 22px 22px rgba(0,0,0,.48))}.station.selected img{filter:drop-shadow(0 0 18px rgba(32,228,216,.65)) drop-shadow(0 22px 22px rgba(0,0,0,.48))}
.tag{position:absolute;left:4px;top:-8px;z-index:7;min-width:185px;background:rgba(4,11,17,.95);border:1px solid var(--line);border-radius:10px;padding:9px;text-align:left}.tag b,.tag span,.tag small{display:block}.tag span,.tag small{color:var(--muted);font-size:11px}.tag>div{height:6px;background:#22313d;border-radius:99px;overflow:hidden;margin:6px 0}.tag i{display:block;height:100%;background:var(--green)}
.empty{width:175px;height:130px;border:2px dashed rgba(255,188,55,.55);border-radius:18px;display:grid;place-items:center;color:#ffd475;background:rgba(7,10,12,.3)}.empty b{font-size:36px}.empty span{max-width:110px}.e1{left:42%;bottom:5%}.e2{right:6%;bottom:5%}.e3{left:7%;bottom:5%}
.actions{display:flex;gap:8px;flex-wrap:wrap;padding:10px;margin-top:10px;border:1px solid var(--line);border-radius:12px;background:#08131d}.actions button,.panel button,.card button,.modal button{border:0;border-radius:9px;padding:10px 13px;background:#1a2a37;color:white;font-weight:800;cursor:pointer}.actions .primary{margin-left:auto;background:linear-gradient(180deg,#22ddd3,#0f8e89);color:#031816}.danger{background:linear-gradient(180deg,#ff676d,#a7282d)!important}.lower{display:grid;grid-template-columns:1fr 1.5fr;gap:10px;margin-top:10px}.panel{border-radius:12px;padding:14px}.panel h2{font-size:14px;margin:0 0 10px}.panel p{color:var(--muted)}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:12px}.card{border-radius:14px;padding:16px;position:relative}.card h2{font-size:17px;margin:3px 0 8px}.card p{color:var(--muted)}.card select{width:100%;padding:10px;border:1px solid var(--line);border-radius:9px;background:#07111a;color:white}.card>button{width:100%;margin-top:10px;background:linear-gradient(180deg,#1fc65e,#137d3c)}.card.urgent{border-color:rgba(255,91,98,.65);box-shadow:0 0 28px rgba(255,91,98,.18)}.urgent-badge{position:absolute;right:12px;top:12px;background:var(--red);color:white;padding:5px 8px;border-radius:999px;font-size:11px;font-weight:900}.locked{opacity:.45}.printer-shop img{width:100%;height:220px;object-fit:contain}.buy{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.supplier{border-top:3px solid var(--cyan)}.supplier.wanhao{border-top-color:#ff4f58}.stock-out{color:#ff6970;font-weight:900}.promo{color:var(--gold);font-weight:900}.price-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.price-grid button{width:100%}
.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}.metric{border-radius:13px;padding:18px}.metric small,.metric b{display:block}.metric small{color:var(--muted)}.metric b{font-size:23px;margin-top:6px}.energy-shop{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:12px;margin-top:12px}.outage{border-color:rgba(255,91,98,.7)!important;box-shadow:0 0 35px rgba(255,91,98,.24)!important}.success{border-color:rgba(128,237,77,.7)!important}
.overlay{position:fixed;inset:0;background:rgba(0,0,0,.78);display:grid;place-items:center;padding:20px;z-index:50;backdrop-filter:blur(5px)}.modal{width:min(950px,100%);max-height:88vh;overflow:auto;border:1px solid var(--line);border-radius:16px;background:#0a1420;padding:22px}.upgrade-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px}.upgrade-grid article{border:1px solid var(--line);border-radius:12px;padding:14px;background:#0e1a26}.upgrade-grid p{color:var(--muted);min-height:55px}.finale{text-align:center}.finale h1{font-size:42px;color:var(--gold)}.finale .trophy{font-size:84px}
@media(max-width:900px){.top{grid-template-columns:1fr}.layout{grid-template-columns:1fr}.nav{min-height:auto;flex-direction:row;overflow-x:auto}.nav button{min-width:max-content}.workshop{min-height:840px}.s1{left:6%;top:24%}.s2{left:48%;top:42%}.s3{left:6%;top:65%}.lower{grid-template-columns:1fr}}
@media(max-width:620px){.app{padding:6px}.head{align-items:flex-start;flex-direction:column}.xp{width:100%}.workshop{min-height:1020px}.station{width:185px}.station img{height:190px}.s1{left:3%;top:17%}.s2{left:3%;top:40%}.s3{left:3%;top:63%}.s4{left:3%;bottom:3%}.actions .primary{margin-left:0;width:100%}.buy,.price-grid{grid-template-columns:1fr}}

.finance-global{gap:7px}.finance-global strong{color:var(--green)}.finance-global span{font-size:12px}
.confirm-modal{max-width:560px}.confirm-modal p{color:var(--muted);line-height:1.55}.confirm-cost{font-size:20px;margin:18px 0;padding:14px;border:1px solid var(--line);border-radius:10px;background:#07111a}.confirm-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.confirm-actions button{padding:13px}.primary-confirm{background:linear-gradient(180deg,#22ddd3,#0f8e89)!important;color:#031816!important}

.dev-nav{margin-top:8px!important;background:linear-gradient(90deg,#7b4cff,#3f2c8c)!important;color:white!important;border:1px solid rgba(168,109,255,.55)!important}
.dev-modal{width:min(1100px,96vw)}.dev-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin:16px 0}.dev-grid section{border:1px solid var(--line);border-radius:12px;padding:14px;background:#0d1a27}.dev-grid section h3{margin:0 0 10px;color:var(--cyan)}.dev-grid button,.file-btn{display:block;width:100%;margin:7px 0;padding:10px;border:0;border-radius:8px;background:#1a2a37;color:white;font-weight:800;text-align:center;cursor:pointer}.file-btn input{display:none}

.station{transition:transform .22s ease,filter .22s ease}.station:hover{transform:translateY(-10px) scale(1.035);z-index:20}.station:hover img{filter:drop-shadow(0 0 24px rgba(32,228,216,.72)) drop-shadow(0 28px 24px rgba(0,0,0,.58))}
.empty{transform:translate(-5%,-8%);transition:transform .22s ease,box-shadow .22s ease,background .22s ease}.empty:hover{transform:translate(-5%,-12%) scale(1.055);box-shadow:0 0 30px rgba(255,193,83,.32);background:rgba(255,190,70,.10)}
button{transition:transform .16s ease,box-shadow .16s ease,filter .16s ease}button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 0 20px rgba(32,228,216,.22);filter:brightness(1.12)}button:active:not(:disabled){transform:translateY(0) scale(.98)}
.promo-wrap{display:block;margin-top:5px}.promo{display:inline-block;margin-left:0;padding:3px 7px;border-radius:999px;background:rgba(255,209,102,.12)}
.energy-bar{height:8px;margin-top:10px;background:#1d2b36;border-radius:99px;overflow:hidden}.energy-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--cyan),var(--green))}
.event-modal{text-align:center;max-width:560px}.event-icon{width:70px;height:70px;border-radius:50%;display:grid;place-items:center;margin:0 auto 14px;font-size:38px;font-weight:900;background:#162430}.event-modal.warning .event-icon{color:#ffd166;box-shadow:0 0 28px rgba(255,209,102,.28)}.event-modal.error .event-icon{color:#ff5b62;box-shadow:0 0 28px rgba(255,91,98,.28)}.event-modal.success .event-icon{color:#80ed4d;box-shadow:0 0 28px rgba(128,237,77,.28)}

.local-preview{width:min(980px,96vw)}.local-preview img{width:100%;max-height:480px;object-fit:cover;border-radius:14px;border:1px solid var(--line);box-shadow:0 20px 45px rgba(0,0,0,.38)}.preview-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:16px 0}.preview-stats div{padding:14px;border:1px solid var(--line);border-radius:10px;background:#0d1a27}.preview-stats small,.preview-stats b{display:block}.preview-stats small{color:var(--muted)}.preview-stats b{margin-top:5px;font-size:18px}
@media(max-width:700px){.preview-stats{grid-template-columns:1fr 1fr}}

.auth-screen{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(circle at 50% 10%,rgba(32,228,216,.13),transparent 35%),#040910}.auth-card{width:min(440px,100%);padding:30px;border:1px solid var(--line);border-radius:20px;background:linear-gradient(180deg,#0d1b28,#071019);box-shadow:0 30px 80px rgba(0,0,0,.5)}.auth-card>img{display:block;width:86px;height:86px;margin:0 auto 10px}.auth-brand{text-align:center;font-size:28px;font-weight:900;margin-bottom:22px}.auth-brand span{color:var(--cyan)}.auth-card h1{font-size:22px}.auth-card input,.account-modal input{display:block;width:100%;padding:13px;margin:10px 0;border:1px solid var(--line);border-radius:9px;background:#07111a;color:white}.auth-card button{width:100%;padding:13px;border:0;border-radius:9px;background:linear-gradient(180deg,#22ddd3,#0f8e89);font-weight:900;color:#031816}.auth-card a{display:block;margin-top:14px;color:var(--cyan);cursor:pointer;text-align:center}.auth-card #authError{color:#ff7278;text-align:center}
.account-mini{border:1px solid var(--line);border-radius:10px;padding:10px;margin-top:auto;background:#07111a}.account-mini b,.account-mini span{display:block}.account-mini span{color:var(--muted);font-size:11px}.account-mini button{padding:7px!important;margin-top:7px;width:100%}
.client-brand{display:flex;align-items:center;gap:10px}.client-brand img{width:118px;height:40px;object-fit:contain}.supplier-logo{width:100%;height:62px;object-fit:contain;margin-bottom:7px}
.printer-visual{position:relative}.printer-visual>img{display:block}.animated-head,.animated-piece,.machine-led{display:none;position:absolute;pointer-events:none}.printer-visual.printing .animated-head{display:block;width:28px;height:20px;border-radius:5px;background:#e9f3f5;left:46%;top:34%;box-shadow:0 0 12px var(--cyan);animation:printHead 1.25s ease-in-out infinite alternate}.printer-visual.printing .animated-piece{display:block;left:43%;bottom:20%;width:42px;height:calc(8px + var(--print-progress)*.25);max-height:68px;background:linear-gradient(#20e4d8,#0d7e78);border-radius:5px 5px 2px 2px;box-shadow:0 0 16px rgba(32,228,216,.65)}.printer-visual.printing .machine-led{display:block;width:10px;height:10px;border-radius:50%;right:25%;top:62%;background:#80ed4d;box-shadow:0 0 14px #80ed4d;animation:ledPulse .8s infinite alternate}@keyframes printHead{from{transform:translateX(-38px)}to{transform:translateX(38px)}}@keyframes ledPulse{from{opacity:.45}to{opacity:1}}
.pickup-bar{height:12px;background:#1b2a36;border-radius:99px;overflow:hidden;margin:12px 0}.pickup-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--cyan),var(--green))}
.admin-tools{display:grid;gap:12px}.admin-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px}.admin-user header{display:flex;justify-content:space-between}.admin-user small{display:block;color:var(--muted)}.role{padding:4px 7px;border-radius:999px;background:#1c3040}.admin-actions{display:flex;gap:8px}.admin-actions button{width:50%}
.account-modal{max-width:520px}.account-modal button{width:100%;margin-top:10px}

.global-announcement{margin-bottom:10px;padding:12px 16px;border:1px solid rgba(255,209,102,.45);border-radius:12px;background:linear-gradient(90deg,rgba(255,209,102,.16),rgba(255,209,102,.04));color:#ffe39a;font-weight:800}.admin-shell{display:grid;gap:12px}.admin-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}.admin-toolbar{display:flex;justify-content:space-between;gap:18px;align-items:center}.toolbar-actions{display:flex;gap:8px;flex-wrap:wrap}.admin-table-wrap{padding:0;overflow:hidden}.table-head{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:14px}.table-head input{min-width:280px;padding:10px;border:1px solid var(--line);border-radius:8px;background:#07111a;color:white}.table-scroll{overflow:auto}.admin-table{width:100%;border-collapse:collapse;min-width:1180px}.admin-table th,.admin-table td{padding:9px;border-top:1px solid rgba(255,255,255,.06);text-align:left}.admin-table th{position:sticky;top:0;background:#0e1a26;z-index:2;color:#bcd0dc;font-size:12px}.admin-table input,.admin-table select{width:100%;min-width:82px;padding:8px;border:1px solid var(--line);border-radius:7px;background:#07111a;color:white}.row-actions{display:flex;gap:5px}.row-actions button{padding:8px 9px;white-space:nowrap}.admin-user-modal{width:min(950px,96vw)}.user-detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:9px}.user-detail-grid>div{padding:12px;border:1px solid var(--line);border-radius:9px;background:#0d1a27}.user-detail-grid small,.user-detail-grid b{display:block}.admin-user-modal pre{max-height:220px;overflow:auto;padding:12px;border:1px solid var(--line);border-radius:9px;background:#050b10;color:#9fe7df}.audit-list{display:grid;gap:6px;max-height:240px;overflow:auto}.audit-list>div{display:grid;grid-template-columns:1fr auto;gap:5px;padding:9px;border:1px solid var(--line);border-radius:8px}.audit-list small{grid-column:1/-1;color:var(--muted)}.danger-zone{display:flex;gap:8px;margin:14px 0}.audit-modal{width:min(1100px,96vw)}.printer-visual.printing .animated-head{top:35%;left:46%;width:30px;height:25px;background:linear-gradient(#e9f3f5,#7b8b94);border:2px solid #d9e8ec}.printer-visual.printing.bedslinger .animated-head{animation:bedHead 1.3s ease-in-out infinite alternate}.printer-visual.printing.corexy .animated-head{animation:coreHead 1.15s ease-in-out infinite alternate}.printer-visual.printing.bedslinger img{animation:bedMotion 1.8s ease-in-out infinite alternate}@keyframes bedHead{from{transform:translateX(-42px)}to{transform:translateX(42px)}}@keyframes coreHead{0%{transform:translate(-40px,-5px)}50%{transform:translate(10px,7px)}100%{transform:translate(42px,-7px)}}@keyframes bedMotion{from{transform:translateY(-1px)}to{transform:translateY(3px)}}@media(max-width:800px){.admin-toolbar{flex-direction:column;align-items:stretch}.table-head{flex-direction:column;align-items:stretch}.table-head input{min-width:0;width:100%}}

.security-warning{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:10px;padding:11px 14px;border:1px solid rgba(255,91,98,.5);border-radius:11px;background:rgba(255,91,98,.12);color:#ffb4b7;font-weight:800}.security-warning button{border:0;border-radius:8px;padding:7px 10px;background:#ff646b;color:white;font-weight:900;cursor:pointer}
.account-role{display:inline-block;margin-top:7px;padding:4px 8px;border-radius:999px;background:#162a38;color:var(--cyan);font-size:12px}.admin-protected{padding:10px;border:1px solid rgba(255,209,102,.28);border-radius:8px;background:rgba(255,209,102,.07);color:#ffd98b!important}
.pickup-bar{position:relative}.pickup-bar i{min-width:0;transition:width .8s linear;box-shadow:0 0 16px rgba(32,228,216,.35)}

/* V6.2.3 — atelier responsive par capacité */
.workshop .station{width:220px;transform:translate(-2%,-5%)}
.workshop.slots-6 .station{width:190px}
.workshop.slots-8 .station{width:165px}
.workshop.slots-10 .station{width:145px}
.workshop.slots-8 .station img,.workshop.slots-10 .station img{height:170px}
.workshop.slots-8 .tag,.workshop.slots-10 .tag{min-width:145px;max-width:170px;padding:7px}
.workshop.slots-10 .tag b{font-size:12px}
.workshop.slots-10 .tag span,.workshop.slots-10 .tag small{font-size:9px}
.workshop.slots-8 .empty,.workshop.slots-10 .empty{width:145px;height:112px;font-size:13px}
.workshop.slots-10 .empty{width:125px;height:104px}
.workshop .empty{transform:translate(-2%,-5%)}
.workshop .station:hover{transform:translate(-2%,-9%) scale(1.025)}
.workshop .empty:hover{transform:translate(-2%,-8%) scale(1.035)}

/* Une seule tête, dans une zone de déplacement limitée */
.printer-visual{overflow:visible}
.printer-visual .animated-head{z-index:4}
.printer-visual.printing .animated-head{
 left:50%;
 top:34%;
 width:25px;
 height:21px;
 transform-origin:center;
}
.printer-visual.printing.bedslinger .animated-head{
 animation:forgeBedHead 1.35s ease-in-out infinite alternate;
}
.printer-visual.printing.corexy .animated-head{
 animation:forgeCoreHead 1.05s ease-in-out infinite alternate;
}
@keyframes forgeBedHead{
 from{transform:translateX(-32px)}
 to{transform:translateX(32px)}
}
@keyframes forgeCoreHead{
 from{transform:translateX(-27px)}
 to{transform:translateX(27px)}
}
/* Neutralise les anciennes animations en V éventuellement présentes */
@keyframes coreHead{
 from{transform:translateX(-27px)}
 to{transform:translateX(27px)}
}
.printer-visual.printing.corexy img{animation:none!important}

/* Déchets */
#wastePickupProgress{width:0;transition:width 1s linear}
.pickup-bar{overflow:hidden}

/* V6.2.4 — la fiche ne masque plus le mécanisme */
.workshop .station{
  display:flex;
  flex-direction:column;
  align-items:center;
  height:auto;
  min-height:250px;
}
.workshop .station .tag{
  position:relative;
  inset:auto;
  order:0;
  width:100%;
  min-width:0;
  max-width:220px;
  margin:0 auto 4px;
  z-index:8;
}
.workshop .station .printer-visual{
  order:1;
  width:100%;
  position:relative;
}
.workshop .station .printer-visual>img{
  width:100%;
  object-fit:contain;
}
.workshop.slots-6 .station .tag{max-width:180px}
.workshop.slots-8 .station .tag{max-width:155px}
.workshop.slots-10 .station .tag{max-width:135px}

/* Laisse davantage d'espace entre les deux rangées */
.workshop.slots-6 .station,
.workshop.slots-8 .station,
.workshop.slots-10 .station{
  transform:translate(-1%,-8%);
}
.workshop.slots-6 .station:hover,
.workshop.slots-8 .station:hover,
.workshop.slots-10 .station:hover{
  transform:translate(-1%,-11%) scale(1.02);
}

/* Tête visible et contenue dans la zone utile de la machine */
.printer-visual.printing .animated-head{
  z-index:12;
  top:42%;
  left:50%;
  width:23px;
  height:19px;
  border-radius:5px;
  background:linear-gradient(#edf6f8,#83949d);
  border:1px solid #d9e8ec;
  box-shadow:0 0 11px rgba(32,228,216,.9);
}
.printer-visual.printing.bedslinger .animated-head{
  animation:forgeHeadBed624 1.35s ease-in-out infinite alternate!important;
}
.printer-visual.printing.corexy .animated-head{
  animation:forgeHeadCore624 1.05s ease-in-out infinite alternate!important;
}
@keyframes forgeHeadBed624{
  from{transform:translateX(-25px)}
  to{transform:translateX(25px)}
}
@keyframes forgeHeadCore624{
  from{transform:translateX(-21px)}
  to{transform:translateX(21px)}
}
/* Neutralise les anciennes animations diagonales */
@keyframes coreHead{
  from{transform:translateX(-21px)}
  to{transform:translateX(21px)}
}
.printer-visual.printing.corexy img{animation:none!important}

/* La progression du travail reste dans la fiche, au-dessus de la machine */
.tag.active-job>div{
  position:relative;
  z-index:15;
}

/* Emplacements vides plus compacts dans les grands locaux */
.workshop.slots-6 .empty{width:165px;height:110px}
.workshop.slots-8 .empty{width:140px;height:100px}
.workshop.slots-10 .empty{width:115px;height:94px;font-size:11px}

/* Barre déchets fiable */
#wastePickupProgress{
  display:block;
  width:0;
  transition:width 1s linear;
}

/* V6.2.5 — scène atelier peaufinée */

/* La carte d'état est attachée visuellement à la machine sans masquer la tête. */
.workshop .station{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-start;
  min-height:0;
}
.workshop .station .tag{
  order:0;
  position:relative;
  margin:0 auto -11px;
  padding:8px 10px;
  line-height:1.15;
  box-shadow:0 10px 22px rgba(0,0,0,.34);
}
.workshop .station .printer-visual{
  order:1;
  margin-top:0;
}
.workshop .station .tag b{margin-bottom:3px}
.workshop .station .tag>div{margin:5px 0 4px}

/* Gabarits plus réguliers selon la taille du local. */
.workshop.slots-6 .station{width:182px}
.workshop.slots-8 .station{width:154px}
.workshop.slots-10 .station{width:132px}
.workshop.slots-6 .station .tag{max-width:182px}
.workshop.slots-8 .station .tag{max-width:154px}
.workshop.slots-10 .station .tag{max-width:132px}
.workshop.slots-6 .printer-visual>img{height:190px}
.workshop.slots-8 .printer-visual>img{height:166px}
.workshop.slots-10 .printer-visual>img{height:145px}

/* Les zones d'achat sont placées dans la rangée basse et ne remontent plus sous les machines. */
.workshop.slots-6 .empty,
.workshop.slots-8 .empty,
.workshop.slots-10 .empty{
  transform:translate(0,-2%);
}
.workshop.slots-6 .empty:hover,
.workshop.slots-8 .empty:hover,
.workshop.slots-10 .empty:hover{
  transform:translate(0,-6%) scale(1.035);
}
.workshop.slots-6 .empty{width:170px;height:104px}
.workshop.slots-8 .empty{width:142px;height:94px}
.workshop.slots-10 .empty{width:118px;height:86px}

/* Tête d'impression : centre corrigé, plus de gros vide à gauche. */
.printer-visual.printing .animated-head{
  left:46%;
  top:40%;
  width:23px;
  height:19px;
  z-index:14;
}
.printer-visual.printing.bedslinger .animated-head{
  animation:forgeHeadBed625 1.32s ease-in-out infinite alternate!important;
}
.printer-visual.printing.corexy .animated-head{
  animation:forgeHeadCore625 1.02s ease-in-out infinite alternate!important;
}
@keyframes forgeHeadBed625{
  from{transform:translateX(-28px)}
  to{transform:translateX(35px)}
}
@keyframes forgeHeadCore625{
  from{transform:translateX(-34px)}
  to{transform:translateX(25px)}
}
@keyframes coreHead{
  from{transform:translateX(-34px)}
  to{transform:translateX(25px)}
}

/* Plateau animé distinctement de la tête. */
.animated-bed{
  display:none;
  position:absolute;
  left:31%;
  bottom:23%;
  width:38%;
  height:9px;
  border-radius:5px;
  background:linear-gradient(180deg,#a7b6bd,#61727b);
  box-shadow:0 4px 8px rgba(0,0,0,.45);
  z-index:9;
  pointer-events:none;
}
.printer-visual.printing .animated-bed{display:block}
.printer-visual.printing.bedslinger .animated-bed{
  animation:forgeBedTravel625 1.55s ease-in-out infinite alternate;
}
.printer-visual.printing.corexy .animated-bed{
  animation:forgeCoreBed625 3.8s linear infinite alternate;
}
@keyframes forgeBedTravel625{
  from{transform:translateY(-5px) scaleX(.94)}
  to{transform:translateY(6px) scaleX(1.04)}
}
@keyframes forgeCoreBed625{
  from{transform:translateY(0)}
  to{transform:translateY(5px)}
}

/* Désactive les anciens mouvements appliqués à l'image complète. */
.printer-visual.printing img{
  animation:none!important;
}

/* Pièce synchronisée au plateau. */
.printer-visual.printing .animated-piece{
  z-index:10;
  bottom:27%;
}

.admin-tabs{display:flex;gap:8px;flex-wrap:wrap}.admin-tabs button{border:1px solid var(--line);border-radius:9px;padding:10px 14px;background:#122230;color:white;font-weight:800;cursor:pointer}.admin-tabs button.active{background:linear-gradient(180deg,#22ddd3,#0f8e89);color:#031816}
.mail-status{display:inline-block;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:900}.mail-status.sent{background:rgba(128,237,77,.14);color:#a7f47d}.mail-status.failed{background:rgba(255,91,98,.14);color:#ff8388}.mail-status.pending{background:rgba(255,209,102,.14);color:#ffdf91}.ua-cell{max-width:320px;white-space:normal;font-size:11px;color:var(--muted)}
.cf-turnstile{display:flex;justify-content:center;margin:14px 0}.admin-table td:nth-last-child(2){min-width:155px}

.captcha-block{margin:14px 0;padding:10px;border:1px solid rgba(32,228,216,.25);border-radius:10px;background:rgba(32,228,216,.05)}.captcha-block small{display:block;margin-bottom:7px;color:#9ddfd9;text-align:center}.captcha-disabled,.captcha-error{margin:12px 0;padding:9px;border-radius:8px;text-align:center;font-size:12px}.captcha-disabled{background:rgba(255,209,102,.08);color:#ffd98b}.captcha-error{background:rgba(255,91,98,.1);color:#ff9da1}

/* =========================================================
   V6.4 — grille logique des emplacements
   Chaque machine réserve réellement 1 ou 2 cellules.
   ========================================================= */
.workshop{
  min-height:720px;
}
.workshop-grid{
  position:absolute;
  left:3%;
  right:3%;
  top:25%;
  bottom:3%;
  z-index:4;
  display:grid;
  gap:14px 18px;
  align-items:end;
  justify-items:stretch;
  grid-auto-flow:row;
}
.workshop.slots-2 .workshop-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:1fr}
.workshop.slots-3 .workshop-grid{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:1fr}
.workshop.slots-4 .workshop-grid{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:1fr}
.workshop.slots-6 .workshop-grid{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}
.workshop.slots-8 .workshop-grid{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}
.workshop.slots-10 .workshop-grid{grid-template-columns:repeat(5,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}

/* Annule définitivement les anciennes coordonnées absolues. */
.workshop-grid .station,
.workshop-grid .empty{
  position:relative!important;
  inset:auto!important;
  left:auto!important;
  right:auto!important;
  top:auto!important;
  bottom:auto!important;
  width:100%!important;
  height:100%;
  min-width:0;
  transform:none!important;
  margin:0;
}
.workshop-grid .station{
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  align-items:center;
  overflow:visible;
  padding:0;
}
.workshop-grid .station:hover{
  transform:translateY(-5px) scale(1.015)!important;
  z-index:20;
}
.workshop-grid .station.span-2{
  max-width:none;
}
.workshop-grid .station .tag{
  position:relative!important;
  inset:auto!important;
  width:min(100%,220px);
  max-width:100%;
  min-width:0;
  margin:0 auto -8px;
  padding:7px 9px;
  order:0;
  z-index:20;
}
.workshop-grid .station.span-2 .tag{
  width:min(70%,260px);
}
.workshop-grid .printer-visual{
  position:relative;
  width:100%;
  min-height:0;
  order:1;
  display:flex;
  justify-content:center;
  align-items:flex-end;
}
.workshop-grid .printer-visual>img{
  width:100%;
  height:clamp(125px,19vw,215px);
  object-fit:contain;
  display:block;
}
.workshop-grid .station.span-2 .printer-visual>img{
  width:min(78%,380px);
  height:clamp(155px,23vw,250px);
}
.workshop.slots-8 .printer-visual>img{height:clamp(118px,15vw,178px)}
.workshop.slots-10 .printer-visual>img{height:clamp(105px,13vw,158px)}
.workshop.slots-8 .station.span-2 .printer-visual>img,
.workshop.slots-10 .station.span-2 .printer-visual>img{
  height:clamp(135px,17vw,195px);
}

/* Les cases libres utilisent exactement les cellules restantes. */
.workshop-grid .grid-empty{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  border:2px dashed rgba(255,188,55,.52);
  border-radius:16px;
  color:#ffd475;
  background:rgba(5,10,14,.38);
  min-height:115px;
  max-height:165px;
  align-self:end;
}
.workshop-grid .grid-empty:hover{
  transform:translateY(-4px) scale(1.02)!important;
}
.workshop-grid .grid-empty b{font-size:30px}
.workshop-grid .grid-empty span{font-size:12px;max-width:110px}

/* Animation contenue à l'intérieur de chaque asset. */
.workshop-grid .printer-visual.printing .animated-head{
  left:50%;
  top:40%;
  width:22px;
  height:18px;
  z-index:14;
}
.workshop-grid .printer-visual.printing.bedslinger .animated-head{
  animation:forgeHeadBed64 1.3s ease-in-out infinite alternate!important;
}
.workshop-grid .printer-visual.printing.corexy .animated-head{
  animation:forgeHeadCore64 1.0s ease-in-out infinite alternate!important;
}
@keyframes forgeHeadBed64{
  from{transform:translateX(-31px)}
  to{transform:translateX(31px)}
}
@keyframes forgeHeadCore64{
  from{transform:translateX(-27px)}
  to{transform:translateX(27px)}
}
@keyframes coreHead{
  from{transform:translateX(-27px)}
  to{transform:translateX(27px)}
}
.workshop-grid .animated-bed{
  left:33%;
  width:34%;
  bottom:22%;
}
.workshop-grid .printer-visual.printing.bedslinger .animated-bed{
  animation:forgeBed64 1.55s ease-in-out infinite alternate!important;
}
.workshop-grid .printer-visual.printing.corexy .animated-bed{
  animation:forgeCoreBed64 4s linear infinite alternate!important;
}
@keyframes forgeBed64{
  from{transform:translateY(-5px) scaleX(.94)}
  to{transform:translateY(6px) scaleX(1.04)}
}
@keyframes forgeCoreBed64{
  from{transform:translateY(0)}
  to{transform:translateY(4px)}
}
.workshop-grid .printer-visual.printing img{animation:none!important}

@media(max-width:900px){
  .workshop{min-height:850px}
  .workshop-grid{top:20%;left:2%;right:2%;gap:10px}
}
@media(max-width:650px){
  .workshop{min-height:1100px}
  .workshop-grid{
    position:absolute;
    grid-template-columns:1fr 1fr!important;
    grid-auto-rows:minmax(190px,1fr);
    grid-template-rows:none!important;
    overflow-y:auto;
    align-items:end;
    padding-bottom:10px;
  }
  .workshop-grid .station.span-2{grid-column:span 2!important}
  .workshop-grid .printer-visual>img{height:155px}
  .workshop-grid .station.span-2 .printer-visual>img{height:190px}
}

/* V6.5 — progression sous machine */
.workshop-grid .station{
  display:grid;
  grid-template-rows:auto 1fr auto;
  align-items:end;
}
.workshop-grid .station .tag{
  margin-bottom:-7px;
}
.workshop-grid .machine-progress{
  width:min(90%,240px);
  height:14px;
  margin:-2px auto 4px;
  border-radius:999px;
  background:#182733;
  overflow:hidden;
  position:relative;
  z-index:21;
  box-shadow:0 3px 12px rgba(0,0,0,.35);
}
.workshop-grid .machine-progress i{
  display:block;
  height:100%;
  background:linear-gradient(90deg,#28e0d4,#7df04c);
  transition:width 1s linear;
}
.workshop-grid .machine-progress span{
  position:absolute;
  inset:0;
  display:grid;
  place-items:center;
  font-size:9px;
  font-weight:900;
  color:#031816;
}

/* CoreXY : tête en haut, plateau lentement descendant */
.workshop-grid .printer-visual.printing.corexy .animated-head{
  top:25%!important;
  left:50%!important;
  animation:forgeCoreXY65 1.1s ease-in-out infinite alternate!important;
}
@keyframes forgeCoreXY65{
  from{transform:translateX(-29px)}
  to{transform:translateX(29px)}
}
.workshop-grid .printer-visual.printing.corexy .animated-bed{
  bottom:20%!important;
  animation:forgeCoreBed65 5s linear infinite alternate!important;
}
@keyframes forgeCoreBed65{
  from{transform:translateY(-1px)}
  to{transform:translateY(6px)}
}
.workshop-grid .printer-visual.printing.corexy .animated-piece{
  bottom:24%!important;
}

/* Commandes bloquées : codes visuels séparés */
button.blocked{cursor:pointer!important;opacity:1!important}
button.blocked.level{background:#5d3ba5!important}
button.blocked.busy{background:#9a6614!important}
button.blocked.stock{background:#176b9d!important}
button.blocked.reliability{background:#8c3f81!important}
button.blocked.waste{background:#9a3f45!important}
button.blocked.printer{background:#495868!important}

/* TikTok */
.social-link{
  display:block;
  margin:8px 0;
  padding:11px 12px;
  border:1px solid var(--line);
  border-radius:9px;
  background:#0d1823;
  color:white;
  text-decoration:none;
  font-weight:800;
}
.social-link:hover{
  border-color:#ff4f9a;
  box-shadow:0 0 18px rgba(255,79,154,.2);
}

/* Notifications */
.notifications-stack{
  position:fixed;
  top:18px;
  right:18px;
  z-index:9999;
  display:grid;
  gap:8px;
  width:min(340px,calc(100vw - 36px));
}
.toast{
  padding:12px 14px;
  border:1px solid var(--line);
  border-radius:12px;
  background:#08131d;
  box-shadow:0 18px 38px rgba(0,0,0,.42);
  animation:toastIn .25s ease-out;
}
.toast b,.toast span{display:block}
.toast span{margin-top:3px;color:var(--muted)}
.toast.success{border-color:rgba(128,237,77,.45)}
.toast.achievement{border-color:rgba(255,209,102,.55);background:linear-gradient(180deg,#211807,#0c1218)}
@keyframes toastIn{
  from{opacity:0;transform:translateY(-8px)}
  to{opacity:1;transform:none}
}

/* =========================================================
   V6.5.1 — Captcha et atelier
   ========================================================= */

/* Progression placée entre la fiche et l'image de la machine. */
.workshop-grid .station{
  grid-template-rows:auto auto 1fr!important;
}
.workshop-grid .machine-progress{
  order:1;
  width:min(88%,230px);
  height:13px;
  margin:3px auto -2px;
  z-index:25;
}
.workshop-grid .printer-visual{
  order:2;
}

/* Supprime tout plateau synthétique des anciennes versions. */
.workshop-grid .animated-bed,
.animated-bed{
  display:none!important;
  animation:none!important;
}

/* La pièce reste dans l'enceinte, sans faux plateau supplémentaire. */
.workshop-grid .printer-visual.printing.corexy .animated-piece{
  bottom:20%!important;
}
.workshop-grid .printer-visual.printing.bedslinger .animated-piece{
  bottom:22%!important;
}

/* Turnstile dispose toujours d'une zone visible avant rendu. */
.cf-turnstile{
  min-height:65px;
  display:flex;
  align-items:center;
  justify-content:center;
}

/* =========================================================
   V6.5.2 — Turnstile fiable et atelier compact
   ========================================================= */

.auth-submit:disabled{
  opacity:.48;
  cursor:not-allowed;
  filter:saturate(.45);
}
.captcha-status{
  margin-bottom:8px;
  text-align:center;
  font-size:12px;
  color:#9fb5c3;
}
.captcha-status.ok{color:#9cf47a}
.captcha-status.error{color:#ff8b91}

/* La grille n'étire plus les imprimantes sur toute la hauteur. */
.workshop-grid{
  align-items:center!important;
  justify-items:center!important;
  grid-auto-rows:minmax(240px,1fr)!important;
}
.workshop-grid .station{
  width:min(100%,260px)!important;
  height:auto!important;
  min-height:0!important;
  display:flex!important;
  flex-direction:column!important;
  justify-content:flex-start!important;
  align-items:center!important;
  align-self:center!important;
  overflow:visible!important;
}
.workshop-grid .station.span-2{
  width:min(100%,360px)!important;
}
.workshop-grid .machine-head{
  width:min(100%,240px);
  position:relative;
  z-index:30;
  margin:0 auto 2px;
}
.workshop-grid .station.span-2 .machine-head{
  width:min(82%,280px);
}
.workshop-grid .station .tag{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  padding:7px 9px!important;
}
.workshop-grid .machine-progress{
  width:94%!important;
  height:12px!important;
  margin:-1px auto 1px!important;
  position:relative!important;
  z-index:31!important;
}
.workshop-grid .printer-visual{
  width:100%!important;
  height:auto!important;
  min-height:0!important;
  display:flex!important;
  justify-content:center!important;
  align-items:flex-start!important;
  margin:0!important;
}
.workshop-grid .printer-visual>img{
  width:100%!important;
  max-width:240px!important;
  height:190px!important;
  object-fit:contain!important;
}
.workshop-grid .station.span-2 .printer-visual>img{
  max-width:330px!important;
  height:230px!important;
}

/* Les Ender/A1 gardent la tête en haut du portique. */
.workshop-grid .printer-visual.printing.bedslinger .animated-head{
  top:24%!important;
  left:50%!important;
  animation:forgeBedHead652 1.25s ease-in-out infinite alternate!important;
}
@keyframes forgeBedHead652{
  from{transform:translateX(-31px)}
  to{transform:translateX(31px)}
}

/* CoreXY : tête également dans la zone haute. */
.workshop-grid .printer-visual.printing.corexy .animated-head{
  top:23%!important;
  left:50%!important;
  animation:forgeCoreHead652 1.05s ease-in-out infinite alternate!important;
}
@keyframes forgeCoreHead652{
  from{transform:translateX(-27px)}
  to{transform:translateX(27px)}
}

/* La pièce démarre sur le plateau dessiné et grandit avec la progression. */
.workshop-grid .printer-visual.printing.bedslinger .animated-piece{
  bottom:21%!important;
  max-height:58px!important;
}
.workshop-grid .printer-visual.printing.corexy .animated-piece{
  bottom:19%!important;
  max-height:62px!important;
}

/* Cases libres compactes et centrées dans leur cellule. */
.workshop-grid .grid-empty{
  width:min(100%,220px)!important;
  height:130px!important;
  min-height:0!important;
  align-self:center!important;
}

/* Grand atelier : rendu régulier en 3 x 2. */
.workshop.slots-6 .workshop-grid{
  top:24%!important;
  bottom:4%!important;
}
.workshop.slots-6 .station{
  width:min(100%,240px)!important;
}
.workshop.slots-6 .station.span-2{
  width:min(100%,330px)!important;
}

@media(max-width:900px){
  .workshop-grid{grid-auto-rows:minmax(220px,1fr)!important}
  .workshop-grid .printer-visual>img{height:165px!important}
  .workshop-grid .station.span-2 .printer-visual>img{height:205px!important}
}

/* V6.5.3 — état Turnstile stable */
.captcha-status{
  min-height:18px;
}
.captcha-status:not(.ok):not(.error){
  color:#9ccbd0;
}

/* V6.5.4 — placement adaptatif par rangées */
.workshop-rows{
  position:absolute;
  left:3%; right:3%; top:23%; bottom:3%;
  z-index:4;
  display:flex;
  flex-direction:column;
  justify-content:space-evenly;
  gap:12px;
}
.workshop-row{
  display:flex;
  justify-content:center;
  align-items:flex-end;
  gap:clamp(12px,2vw,28px);
  min-height:0;
  flex:1 1 0;
}
.workshop-rows .station,
.workshop-rows .empty{
  position:relative!important;
  inset:auto!important;
  transform:none!important;
  margin:0!important;
  height:auto!important;
  min-height:0!important;
  flex:0 1 auto;
}
.workshop-rows .unit-1{width:min(24vw,250px)!important;max-width:250px!important}
.workshop-rows .unit-2{width:min(42vw,370px)!important;max-width:370px!important}
.workshop-rows .adaptive-station{
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:flex-start!important;
  overflow:visible!important;
  padding:0!important;
}
.workshop-rows .adaptive-station:hover{transform:translateY(-5px) scale(1.015)!important;z-index:20}
.workshop-rows .machine-head{width:min(100%,245px)!important;margin:0 auto 2px!important;z-index:30}
.workshop-rows .unit-2 .machine-head{width:min(78%,285px)!important}
.workshop-rows .tag{width:100%!important;max-width:none!important;min-width:0!important;margin:0!important;padding:7px 9px!important}
.workshop-rows .machine-progress{width:94%!important;height:12px!important;margin:-1px auto 1px!important;z-index:31!important}
.workshop-rows .printer-visual{width:100%!important;height:auto!important;display:flex!important;justify-content:center!important;align-items:flex-start!important;margin:0!important}
.workshop-rows .unit-1 .printer-visual>img{width:100%!important;max-width:235px!important;height:185px!important;object-fit:contain!important}
.workshop-rows .unit-2 .printer-visual>img{width:100%!important;max-width:340px!important;height:235px!important;object-fit:contain!important}
.workshop-rows .adaptive-empty{
  display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;
  width:min(22vw,220px)!important;max-width:220px!important;height:125px!important;align-self:center!important;
  border:2px dashed rgba(255,188,55,.52)!important;border-radius:16px!important;background:rgba(5,10,14,.38)!important;
}
.workshop-rows .adaptive-empty:hover{transform:translateY(-4px) scale(1.02)!important}
.workshop.slots-2 .workshop-rows,.workshop.slots-3 .workshop-rows,.workshop.slots-4 .workshop-rows{top:27%!important;justify-content:center!important}
.workshop.slots-2 .workshop-row,.workshop.slots-3 .workshop-row,.workshop.slots-4 .workshop-row{flex:0 1 auto}
.workshop.slots-6 .workshop-rows,.workshop.slots-8 .workshop-rows,.workshop.slots-10 .workshop-rows{top:22%!important;bottom:3%!important}
.workshop-rows .printer-visual.printing.bedslinger .animated-head{top:24%!important;left:50%!important;animation:forgeBedHead654 1.25s ease-in-out infinite alternate!important}
@keyframes forgeBedHead654{from{transform:translateX(-30px)}to{transform:translateX(30px)}}
.workshop-rows .printer-visual.printing.corexy .animated-head{top:23%!important;left:50%!important;animation:forgeCoreHead654 1.05s ease-in-out infinite alternate!important}
@keyframes forgeCoreHead654{from{transform:translateX(-27px)}to{transform:translateX(27px)}}
@media(max-width:1050px){
  .workshop-rows .unit-1{width:min(26vw,220px)!important}
  .workshop-rows .unit-2{width:min(45vw,320px)!important}
  .workshop-rows .unit-1 .printer-visual>img{height:165px!important}
  .workshop-rows .unit-2 .printer-visual>img{height:205px!important}
}
@media(max-width:760px){
  .workshop{min-height:980px!important}
  .workshop-rows{top:18%!important;bottom:2%!important;overflow-y:auto!important;justify-content:flex-start!important}
  .workshop-row{flex-wrap:wrap;flex:0 0 auto}
  .workshop-rows .unit-1,.workshop-rows .unit-2{width:min(88vw,330px)!important;max-width:330px!important}
}

/* =========================================================
   V6.6 — placement manuel des imprimantes
   ========================================================= */
.workshop-rows{
  position:absolute!important;
  inset:0!important;
  display:block!important;
}
.manual-workshop-stage{
  position:absolute;
  inset:0;
  z-index:5;
  overflow:hidden;
  touch-action:none;
}
.manual-workshop-stage.move-mode{
  cursor:crosshair;
  background-image:
    linear-gradient(rgba(32,228,216,.06) 1px,transparent 1px),
    linear-gradient(90deg,rgba(32,228,216,.06) 1px,transparent 1px);
  background-size:4% 4%;
}
.manual-station,
.manual-empty{
  position:absolute!important;
  transform:translate(0,-50%)!important;
  margin:0!important;
  z-index:8;
}
.manual-station{
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:flex-start!important;
  height:auto!important;
  min-height:0!important;
  padding:0!important;
  width:230px!important;
  max-width:230px!important;
  overflow:visible!important;
  user-select:none;
}
.manual-station.unit-2{
  width:330px!important;
  max-width:330px!important;
}
.manual-station.move-enabled{
  cursor:grab;
  outline:2px dashed rgba(32,228,216,.6);
  outline-offset:5px;
}
.manual-station.move-enabled:active{
  cursor:grabbing;
  z-index:50;
}
.manual-station.mobile-moving{
  outline-color:#ffd166;
  filter:drop-shadow(0 0 18px rgba(255,209,102,.55));
}
.manual-station .machine-head{
  width:100%!important;
  margin:0 auto 1px!important;
}
.manual-station.unit-2 .machine-head{
  width:82%!important;
}
.manual-station .tag{
  width:100%!important;
  margin:0!important;
}
.manual-station .machine-progress{
  width:94%!important;
  margin:-1px auto 1px!important;
}
.manual-station .printer-visual{
  width:100%!important;
  height:auto!important;
  display:flex!important;
  justify-content:center!important;
  align-items:flex-start!important;
}
.manual-station.unit-1 .printer-visual>img{
  width:230px!important;
  height:180px!important;
  object-fit:contain!important;
}
.manual-station.unit-2 .printer-visual>img{
  width:330px!important;
  height:230px!important;
  object-fit:contain!important;
}
.manual-empty{
  width:200px!important;
  height:120px!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  border:2px dashed rgba(255,188,55,.52)!important;
  border-radius:16px!important;
  background:rgba(5,10,14,.42)!important;
}
.move-active{
  background:linear-gradient(180deg,#ffd166,#d5961f)!important;
  color:#231600!important;
}
@media(max-width:900px){
  .manual-station{width:190px!important;max-width:190px!important}
  .manual-station.unit-2{width:270px!important;max-width:270px!important}
  .manual-station.unit-1 .printer-visual>img{width:190px!important;height:150px!important}
  .manual-station.unit-2 .printer-visual>img{width:270px!important;height:195px!important}
  .manual-empty{width:165px!important;height:105px!important}
}
@media(max-width:650px){
  .workshop{min-height:920px!important}
  .manual-workshop-stage{overflow:auto}
  .manual-station{width:165px!important;max-width:165px!important}
  .manual-station.unit-2{width:230px!important;max-width:230px!important}
  .manual-station.unit-1 .printer-visual>img{width:165px!important;height:135px!important}
  .manual-station.unit-2 .printer-visual>img{width:230px!important;height:175px!important}
  .manual-empty{width:145px!important;height:95px!important}
}

/* =========================================================
   V6.6.1 — correction du placement manuel
   ========================================================= */

/* Les coordonnées représentent maintenant le coin supérieur gauche. */
.manual-station,
.manual-empty{
  transform:none!important;
}

/* La zone utile commence sous le titre du local. */
.manual-workshop-stage{
  top:0;
  padding-top:0;
}

/* En déplacement souris, aucun clic mobile parasite. */
@media(pointer:fine){
  .manual-station.move-enabled{
    touch-action:none;
  }
}

/* Les grosses machines gardent assez de marge sous elles. */
.manual-station.unit-2{
  transform-origin:top left!important;
}

/* Indication plus claire du mode tactile. */
.manual-station.mobile-moving::after{
  content:"Touchez une zone vide";
  position:absolute;
  left:50%;
  bottom:-24px;
  transform:translateX(-50%);
  white-space:nowrap;
  padding:4px 8px;
  border-radius:999px;
  background:#ffd166;
  color:#241700;
  font-size:10px;
  font-weight:900;
}

/* =========================================================
   V7 — atelier proportionnel et déterministe
   ========================================================= */

/* Neutralise les anciens moteurs de placement. */
.manual-workshop-stage,
.workshop-row{
  display:none!important;
}

.workshop-rows{
  position:absolute!important;
  inset:0!important;
  display:block!important;
}

.proportional-workshop-grid{
  position:absolute;
  left:3%;
  right:3%;
  top:22%;
  bottom:3%;
  z-index:6;
  display:grid;
  grid-template-columns:repeat(var(--workshop-columns),minmax(0,1fr));
  grid-template-rows:repeat(var(--workshop-rows),minmax(0,1fr));
  gap:clamp(8px,1.5vw,22px);
  align-items:center;
  justify-items:center;
}

.proportional-workshop-grid .proportional-station,
.proportional-workshop-grid .proportional-empty{
  position:relative!important;
  inset:auto!important;
  transform:none!important;
  width:100%!important;
  height:100%!important;
  min-width:0!important;
  min-height:0!important;
  margin:0!important;
}

.proportional-workshop-grid .proportional-station{
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  padding:0!important;
  overflow:visible!important;
}

.proportional-workshop-grid .proportional-station:hover{
  transform:translateY(-4px) scale(1.015)!important;
  z-index:20;
}

.proportional-workshop-grid .machine-head{
  width:clamp(110px,88%,250px)!important;
  margin:0 auto 2px!important;
  flex:0 0 auto;
  z-index:30;
}

.proportional-workshop-grid .tag{
  width:100%!important;
  max-width:none!important;
  min-width:0!important;
  margin:0!important;
  padding:clamp(4px,.6vw,8px)!important;
  border-radius:clamp(7px,.8vw,12px)!important;
}

.proportional-workshop-grid .tag b{
  font-size:clamp(10px,1.15vw,20px)!important;
  line-height:1.08!important;
}

.proportional-workshop-grid .tag span,
.proportional-workshop-grid .tag small{
  font-size:clamp(8px,.82vw,14px)!important;
  line-height:1.15!important;
}

.proportional-workshop-grid .machine-progress{
  width:94%!important;
  height:clamp(7px,.72vw,12px)!important;
  margin:-1px auto 1px!important;
  z-index:31!important;
}

.proportional-workshop-grid .machine-progress span{
  font-size:clamp(6px,.6vw,9px)!important;
}

.proportional-workshop-grid .printer-visual{
  width:100%!important;
  height:auto!important;
  min-height:0!important;
  flex:1 1 auto;
  display:flex!important;
  justify-content:center!important;
  align-items:center!important;
  margin:0!important;
  position:relative!important;
}

.proportional-workshop-grid .printer-visual>img{
  width:100%!important;
  max-width:clamp(105px,88%,300px)!important;
  height:100%!important;
  max-height:clamp(105px,23vh,235px)!important;
  object-fit:contain!important;
}

/* 6, 8 et 10 places : tout réduit ensemble. */
.workshop.slots-6 .proportional-workshop-grid .machine-head{
  width:clamp(105px,84%,220px)!important;
}
.workshop.slots-8 .proportional-workshop-grid .machine-head{
  width:clamp(95px,82%,190px)!important;
}
.workshop.slots-10 .proportional-workshop-grid .machine-head{
  width:clamp(88px,80%,165px)!important;
}

.workshop.slots-8 .proportional-workshop-grid .printer-visual>img{
  max-height:clamp(95px,19vh,185px)!important;
}
.workshop.slots-10 .proportional-workshop-grid .printer-visual>img{
  max-height:clamp(85px,17vh,160px)!important;
}

.workshop.slots-8 .proportional-workshop-grid .tag b{
  font-size:clamp(9px,1vw,15px)!important;
}
.workshop.slots-10 .proportional-workshop-grid .tag b{
  font-size:clamp(8px,.9vw,13px)!important;
}

.workshop.slots-8 .proportional-workshop-grid .tag span,
.workshop.slots-8 .proportional-workshop-grid .tag small,
.workshop.slots-10 .proportional-workshop-grid .tag span,
.workshop.slots-10 .proportional-workshop-grid .tag small{
  font-size:clamp(7px,.68vw,11px)!important;
}

/* Emplacements libres proportionnels aux cellules. */
.proportional-workshop-grid .proportional-empty{
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  width:84%!important;
  height:58%!important;
  max-height:145px!important;
  align-self:center!important;
  border:2px dashed rgba(255,188,55,.52)!important;
  border-radius:clamp(10px,1vw,16px)!important;
  background:rgba(5,10,14,.38)!important;
}

.proportional-workshop-grid .proportional-empty b{
  font-size:clamp(18px,2.3vw,32px)!important;
}

.proportional-workshop-grid .proportional-empty span{
  font-size:clamp(8px,.85vw,13px)!important;
  max-width:110px;
}

/* Animations elles aussi proportionnelles. */
.proportional-workshop-grid .printer-visual.printing .animated-head{
  width:clamp(12px,1.5vw,22px)!important;
  height:clamp(10px,1.2vw,18px)!important;
}

.proportional-workshop-grid .printer-visual.printing.bedslinger .animated-head{
  top:24%!important;
  left:50%!important;
  animation:forgeBedHeadV7 1.25s ease-in-out infinite alternate!important;
}

.proportional-workshop-grid .printer-visual.printing.corexy .animated-head{
  top:23%!important;
  left:50%!important;
  animation:forgeCoreHeadV7 1.05s ease-in-out infinite alternate!important;
}

@keyframes forgeBedHeadV7{
  from{transform:translateX(clamp(-30px,-2.4vw,-14px))}
  to{transform:translateX(clamp(14px,2.4vw,30px))}
}

@keyframes forgeCoreHeadV7{
  from{transform:translateX(clamp(-27px,-2vw,-12px))}
  to{transform:translateX(clamp(12px,2vw,27px))}
}

@media(max-width:760px){
  .workshop{
    min-height:980px!important;
  }
  .proportional-workshop-grid{
    left:2%;
    right:2%;
    top:18%;
    bottom:2%;
    gap:8px;
  }
  .workshop.slots-8 .proportional-workshop-grid,
  .workshop.slots-10 .proportional-workshop-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    grid-template-rows:none!important;
    grid-auto-rows:minmax(180px,1fr);
    overflow-y:auto;
  }
}

/* =========================================================
   V7.0.1 — alignement de tête par modèle
   ========================================================= */

/* Valeurs par défaut : tête centrée sur la zone utile. */
.proportional-workshop-grid .printer-visual.printing .animated-head{
  --head-center-x:50%;
  --head-top:24%;
  --head-travel:28px;
  left:var(--head-center-x)!important;
  top:var(--head-top)!important;
}

/* Bambu Lab A1 : le portique utile est légèrement décalé à gauche
   dans l'illustration, donc la tête doit suivre cette zone. */
.proportional-workshop-grid .printer-visual.model-a1.printing .animated-head{
  --head-center-x:46.5%;
  --head-top:25%;
  --head-travel:23px;
  animation:forgeHeadModel701 1.15s ease-in-out infinite alternate!important;
}

/* A1 Mini */
.proportional-workshop-grid .printer-visual.model-a1-mini.printing .animated-head{
  --head-center-x:47%;
  --head-top:25%;
  --head-travel:21px;
  animation:forgeHeadModel701 1.15s ease-in-out infinite alternate!important;
}

/* Ender 3 : légère correction verticale du rail. */
.proportional-workshop-grid .printer-visual.model-ender3-v3-se.printing .animated-head,
.proportional-workshop-grid .printer-visual.model-ender3-v3-ke.printing .animated-head{
  --head-center-x:50%;
  --head-top:23%;
  --head-travel:27px;
  animation:forgeHeadModel701 1.25s ease-in-out infinite alternate!important;
}

/* CoreXY fermées : zone de déplacement plus haute et plus étroite. */
.proportional-workshop-grid .printer-visual.model-x1c.printing .animated-head,
.proportional-workshop-grid .printer-visual.model-p1s.printing .animated-head,
.proportional-workshop-grid .printer-visual.model-k1-max.printing .animated-head,
.proportional-workshop-grid .printer-visual.model-core-one.printing .animated-head{
  --head-center-x:50%;
  --head-top:19%;
  --head-travel:22px;
  animation:forgeHeadModel701 1.0s ease-in-out infinite alternate!important;
}

@keyframes forgeHeadModel701{
  from{transform:translateX(calc(var(--head-travel) * -1))}
  to{transform:translateX(var(--head-travel))}
}

/* V7.1 — energy and bounded print-head motion */
.animated-piece,.printer-visual .animated-piece{display:none!important;opacity:0!important;width:0!important;height:0!important;animation:none!important}
.proportional-workshop-grid .printer-visual.printing .animated-head{margin-left:-11px!important;transform-origin:center center!important}
.proportional-workshop-grid .printer-visual.model-ender3-v3-se.printing .animated-head,
.proportional-workshop-grid .printer-visual.model-ender3-v3-ke.printing .animated-head{left:50%!important;top:22.5%!important;animation:headRailEnder71 1.25s ease-in-out infinite alternate!important}
@keyframes headRailEnder71{from{transform:translateX(-24px)}to{transform:translateX(24px)}}
.proportional-workshop-grid .printer-visual.model-a1.printing .animated-head{left:46%!important;top:23.5%!important;animation:headRailA171 1.15s ease-in-out infinite alternate!important}
@keyframes headRailA171{from{transform:translateX(-17px)}to{transform:translateX(17px)}}
.proportional-workshop-grid .printer-visual.model-a1-mini.printing .animated-head{left:47%!important;top:24%!important;animation:headRailA1Mini71 1.15s ease-in-out infinite alternate!important}
@keyframes headRailA1Mini71{from{transform:translateX(-15px)}to{transform:translateX(15px)}}
.proportional-workshop-grid .printer-visual.model-x1c.printing .animated-head,
.proportional-workshop-grid .printer-visual.model-p1s.printing .animated-head{left:50%!important;top:18.5%!important;animation:headRailBambuCore71 1s ease-in-out infinite alternate!important}
@keyframes headRailBambuCore71{from{transform:translateX(-16px)}to{transform:translateX(16px)}}
.proportional-workshop-grid .printer-visual.model-k1-max.printing .animated-head{left:50%!important;top:18%!important;animation:headRailK171 1s ease-in-out infinite alternate!important}
@keyframes headRailK171{from{transform:translateX(-18px)}to{transform:translateX(18px)}}
.proportional-workshop-grid .printer-visual.model-core-one.printing .animated-head{left:50%!important;top:19%!important;animation:headRailCoreOne71 1s ease-in-out infinite alternate!important}
@keyframes headRailCoreOne71{from{transform:translateX(-17px)}to{transform:translateX(17px)}}
.printer-visual .machine-led{bottom:10%!important;width:9px!important;height:9px!important;border-radius:50%!important}

/* V7.1.1 — A1 alignée et commandes explicites */
.proportional-workshop-grid .printer-visual.model-a1.printing .animated-head{
  left:50%!important;
  top:23.5%!important;
  margin-left:-11px!important;
  animation:headRailA1711 1.15s ease-in-out infinite alternate!important;
}
@keyframes headRailA1711{from{transform:translateX(-15px)}to{transform:translateX(15px)}}
.proportional-workshop-grid .printer-visual.model-a1-mini.printing .animated-head{
  left:49%!important;
  top:24%!important;
  margin-left:-11px!important;
  animation:headRailA1Mini711 1.15s ease-in-out infinite alternate!important;
}
@keyframes headRailA1Mini711{from{transform:translateX(-14px)}to{transform:translateX(14px)}}
button.blocked.power{background:#6e4c24!important}
button.blocked{pointer-events:auto!important}

/* =========================================================
   V7.1.3 — fenêtres fiables et progression premium
   ========================================================= */
.announcement-modal,
.maintenance-modal{
  width:min(620px,94vw);
}
.announcement-modal label{
  display:block;
  margin:13px 0;
  color:#c8d7df;
  font-weight:800;
}
.announcement-modal textarea,
.announcement-modal input{
  display:block;
  width:100%;
  margin-top:7px;
  padding:12px;
  border:1px solid var(--line);
  border-radius:9px;
  background:#07111a;
  color:white;
  font:inherit;
}
.announcement-modal textarea{
  min-height:130px;
  resize:vertical;
}
.announcement-preview{
  margin:14px 0;
  padding:12px;
  border:1px solid rgba(255,209,102,.38);
  border-radius:10px;
  background:rgba(255,209,102,.07);
}
.announcement-preview small{
  display:block;
  margin-bottom:7px;
  color:#ffd98b;
}
.form-error{
  min-height:20px;
  color:#ff8388!important;
  font-weight:800;
}
.maintenance-summary{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
  margin:16px 0;
}
.maintenance-summary>div{
  padding:12px;
  border:1px solid var(--line);
  border-radius:10px;
  background:#0c1924;
}
.maintenance-summary small,
.maintenance-summary b{
  display:block;
}
.maintenance-summary small{
  color:var(--muted);
}
.maintenance-summary b{
  margin-top:5px;
  font-size:18px;
}
.maintenance-result{
  display:flex;
  justify-content:space-between;
  gap:15px;
  padding:12px;
  border:1px solid rgba(128,237,77,.35);
  border-radius:10px;
  background:rgba(128,237,77,.07);
}

/* Barre complète, visible, avec contour et pourcentage intégré. */
.proportional-workshop-grid .machine-progress{
  position:relative!important;
  width:96%!important;
  height:18px!important;
  margin:4px auto 5px!important;
  border:1px solid rgba(79,236,224,.55)!important;
  border-radius:999px!important;
  overflow:hidden!important;
  background:
    linear-gradient(180deg,rgba(255,255,255,.07),rgba(0,0,0,.16)),
    #12232e!important;
  box-shadow:
    inset 0 1px 3px rgba(0,0,0,.5),
    0 0 12px rgba(32,228,216,.16)!important;
}
.proportional-workshop-grid .machine-progress i{
  display:block!important;
  position:absolute!important;
  inset:0 auto 0 0!important;
  height:100%!important;
  min-width:2px;
  border-radius:999px!important;
  background:
    linear-gradient(90deg,#16bdb7 0%,#28e0d4 48%,#8bf052 100%)!important;
  box-shadow:0 0 14px rgba(40,224,212,.65)!important;
  transition:width 1s linear!important;
}
.proportional-workshop-grid .machine-progress span{
  position:absolute!important;
  inset:0!important;
  display:grid!important;
  place-items:center!important;
  z-index:4!important;
  color:#f5ffff!important;
  font-size:10px!important;
  font-weight:1000!important;
  line-height:1!important;
  text-shadow:0 1px 3px #001!important;
  pointer-events:none;
}
@media(max-width:760px){
 .maintenance-summary{grid-template-columns:1fr}
 .maintenance-result{flex-direction:column}
 .proportional-workshop-grid .machine-progress{height:15px!important}
}

/* =========================================================
   V8 — Administration & Dev Tools
   ========================================================= */
.admin-mode-bar{display:flex;align-items:center;justify-content:space-between;gap:18px}
.service-grid,.dev-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px}
.service-grid>div{padding:12px;border:1px solid var(--line);border-radius:10px;background:#0c1924}
.service-grid>div.ok{border-color:rgba(128,237,77,.35)}
.service-grid>div.ko{border-color:rgba(255,91,98,.45)}
.service-grid small,.service-grid b{display:block}
.service-grid small{color:var(--muted)}
.service-grid b{margin-top:5px}
.dev-indicator{position:fixed;top:12px;left:50%;transform:translateX(-50%);z-index:10000;padding:8px 14px;border-radius:999px;background:#ffb027;color:#221500;font-weight:1000;box-shadow:0 8px 25px rgba(0,0,0,.35)}
.dev-console{display:grid;gap:12px}
.dev-header{display:flex;justify-content:space-between;align-items:center;gap:15px}
.dev-grid .panel{display:flex;flex-direction:column;gap:8px}
.dev-grid h3{margin:0 0 5px}
.dev-warning{width:min(560px,94vw)}
.maintenance-screen{min-height:100vh;display:grid;place-content:center;text-align:center;padding:30px;background:radial-gradient(circle at top,#173245,#061018 65%)}
.maintenance-screen img{width:180px;margin:0 auto 20px}
.maintenance-screen h1{font-size:clamp(32px,6vw,70px);margin:0}
.maintenance-screen p{color:#b7c9d4;font-size:18px}
@media(max-width:760px){.admin-mode-bar,.dev-header{flex-direction:column;align-items:stretch}.dev-indicator{top:auto;bottom:12px;font-size:11px}}

/* =========================================================
   V8.0.1 — alignement des têtes et sécurité du mode dev
   ========================================================= */

/* La tête est centrée par son propre centre sur le rail. */
.proportional-workshop-grid .printer-visual.printing .animated-head{
  margin-left:0!important;
  transform-origin:center center!important;
}

/* Ender 3 : tête posée juste sous la traverse supérieure. */
.proportional-workshop-grid .printer-visual.model-ender3-v3-se.printing .animated-head,
.proportional-workshop-grid .printer-visual.model-ender3-v3-ke.printing .animated-head{
  left:50%!important;
  top:27%!important;
  animation:headEnder801 1.25s ease-in-out infinite alternate!important;
}
@keyframes headEnder801{
  from{transform:translate(-50%,-50%) translateX(-22px)}
  to{transform:translate(-50%,-50%) translateX(22px)}
}

/* A1 / A1 Mini : alignement plus bas sur leur rail. */
.proportional-workshop-grid .printer-visual.model-a1.printing .animated-head{
  left:49%!important;
  top:29%!important;
  animation:headA1801 1.15s ease-in-out infinite alternate!important;
}
.proportional-workshop-grid .printer-visual.model-a1-mini.printing .animated-head{
  left:49%!important;
  top:28%!important;
  animation:headA1Mini801 1.15s ease-in-out infinite alternate!important;
}
@keyframes headA1801{
  from{transform:translate(-50%,-50%) translateX(-16px)}
  to{transform:translate(-50%,-50%) translateX(16px)}
}
@keyframes headA1Mini801{
  from{transform:translate(-50%,-50%) translateX(-14px)}
  to{transform:translate(-50%,-50%) translateX(14px)}
}

/* CoreXY : on garde le réglage validé de la X1/P1S. */
.proportional-workshop-grid .printer-visual.model-x1c.printing .animated-head,
.proportional-workshop-grid .printer-visual.model-p1s.printing .animated-head{
  left:50%!important;
  top:18.5%!important;
  animation:headCore801 1s ease-in-out infinite alternate!important;
}
@keyframes headCore801{
  from{transform:translate(-50%,-50%) translateX(-16px)}
  to{transform:translate(-50%,-50%) translateX(16px)}
}

/* Dans les petits locaux, le redimensionnement ne décale plus la tête. */
.workshop.slots-2 .proportional-workshop-grid .printer-visual.model-ender3-v3-se.printing .animated-head,
.workshop.slots-2 .proportional-workshop-grid .printer-visual.model-ender3-v3-ke.printing .animated-head{
  top:28%!important;
}
.workshop.slots-2 .proportional-workshop-grid .printer-visual.model-a1.printing .animated-head,
.workshop.slots-2 .proportional-workshop-grid .printer-visual.model-a1-mini.printing .animated-head{
  top:30%!important;
}

/* =========================================================
   V8.0.2 — correction spécifique au garage
   ========================================================= */

/* Dans le garage, l'image est beaucoup plus grande dans sa cellule.
   La tête doit donc être descendue sur la traverse visible. */
.workshop.slots-2 .proportional-workshop-grid .printer-visual.model-ender3-v3-se.printing .animated-head,
.workshop.slots-2 .proportional-workshop-grid .printer-visual.model-ender3-v3-ke.printing .animated-head{
  top:34%!important;
  left:50%!important;
  animation:headEnderGarage802 1.25s ease-in-out infinite alternate!important;
}
@keyframes headEnderGarage802{
  from{transform:translate(-50%,-50%) translateX(-21px)}
  to{transform:translate(-50%,-50%) translateX(21px)}
}

.workshop.slots-2 .proportional-workshop-grid .printer-visual.model-a1.printing .animated-head{
  top:35%!important;
  left:49%!important;
  animation:headA1Garage802 1.15s ease-in-out infinite alternate!important;
}
.workshop.slots-2 .proportional-workshop-grid .printer-visual.model-a1-mini.printing .animated-head{
  top:34%!important;
  left:49%!important;
  animation:headA1MiniGarage802 1.15s ease-in-out infinite alternate!important;
}
@keyframes headA1Garage802{
  from{transform:translate(-50%,-50%) translateX(-15px)}
  to{transform:translate(-50%,-50%) translateX(15px)}
}
@keyframes headA1MiniGarage802{
  from{transform:translate(-50%,-50%) translateX(-13px)}
  to{transform:translate(-50%,-50%) translateX(13px)}
}

/* Le bouton d'activation reste visible dans l'en-tête admin. */
.admin-mode-bar>button{
  flex:0 0 auto;
  min-width:190px;
}

/* V8.2 — bonus administrateur */
.bonus-modal{width:min(620px,94vw)}
.bonus-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:16px 0}
.bonus-modal label{display:block;font-weight:800;color:#cadbe4}
.bonus-modal input,.bonus-modal select{display:block;width:100%;margin-top:6px;padding:11px;border:1px solid var(--line);border-radius:9px;background:#07111a;color:white}
@media(max-width:650px){.bonus-grid{grid-template-columns:1fr}}

/* =========================================================
   V8.2.1 — notifications temporaires
   ========================================================= */
.notifications-stack{
  position:fixed;
  top:18px;
  right:18px;
  z-index:12000;
  width:min(390px,calc(100vw - 36px));
  display:flex;
  flex-direction:column;
  gap:10px;
  pointer-events:none;
}
.notification{
  position:relative;
  padding:15px 42px 15px 17px;
  border:1px solid var(--line);
  border-radius:14px;
  background:rgba(8,20,30,.96);
  box-shadow:0 14px 38px rgba(0,0,0,.38);
  backdrop-filter:blur(12px);
  animation:notificationEnter821 .24s ease-out;
  pointer-events:auto;
  overflow:hidden;
}
.notification::after{
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  height:3px;
  background:linear-gradient(90deg,#25ddd3,#86ee50);
  transform-origin:left;
  animation:notificationLife821 5s linear forwards;
}
.notification b,
.notification span{
  display:block;
}
.notification b{
  font-size:17px;
  line-height:1.15;
}
.notification span{
  margin-top:5px;
  color:#c6d7df;
  line-height:1.3;
}
.notification.success{border-color:rgba(117,239,73,.72)}
.notification.achievement{border-color:rgba(255,203,69,.78)}
.notification.warning{border-color:rgba(255,166,48,.75)}
.notification.error{border-color:rgba(255,82,92,.78)}
.notification.info{border-color:rgba(45,222,213,.58)}
.notification-close{
  position:absolute;
  top:8px;
  right:9px;
  width:28px;
  height:28px;
  padding:0!important;
  border:0!important;
  border-radius:50%!important;
  background:rgba(255,255,255,.08)!important;
  color:#dceaf0!important;
  font-size:20px!important;
  line-height:1!important;
  cursor:pointer;
}
.notification-close:hover{
  background:rgba(255,255,255,.17)!important;
  transform:scale(1.06);
}
@keyframes notificationEnter821{
  from{opacity:0;transform:translateX(28px) scale(.97)}
  to{opacity:1;transform:translateX(0) scale(1)}
}
@keyframes notificationLife821{
  from{transform:scaleX(1)}
  to{transform:scaleX(0)}
}
@media(max-width:700px){
  .notifications-stack{top:10px;right:10px;width:calc(100vw - 20px)}
  .notification{padding:13px 40px 13px 14px}
}

.workshop-company-title{display:flex;align-items:center;gap:13px}.workshop-company-title img{width:54px;height:54px;object-fit:cover;border-radius:14px;border:1px solid rgba(47,225,216,.45);background:#07121b}.workshop-company-title h2{margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.workshop-company-title p{margin:3px 0 0;color:var(--muted)}
.company-user-card{display:flex!important;align-items:center;gap:10px}.company-user-card img{width:44px;height:44px;object-fit:cover;border-radius:11px;border:1px solid var(--line);background:#07121b}.company-user-card b,.company-user-card span,.company-user-card small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.company-user-card small{color:var(--muted)}
.company-settings-card{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:14px}.company-settings-summary{display:flex;align-items:center;gap:12px}.company-settings-summary img{width:60px;height:60px;object-fit:cover;border-radius:14px;border:1px solid var(--line)}.company-settings-summary small,.company-settings-summary b,.company-settings-summary span{display:block}.company-settings-summary span{color:var(--muted)}
.company-modal{width:min(650px,94vw)}.company-editor{display:grid;grid-template-columns:210px 1fr;gap:18px;margin:18px 0}.company-logo-editor{display:grid;gap:9px}.company-logo-editor>img{width:160px;height:160px;object-fit:cover;justify-self:center;border-radius:24px;border:1px solid rgba(47,225,216,.45);background:#07121b}.upload-company-logo{display:block;text-align:center;padding:11px;border-radius:9px;background:#173044;cursor:pointer;font-weight:900}.upload-company-logo input{display:none}.company-editor>label input{display:block;width:100%;margin-top:7px;padding:12px;border:1px solid var(--line);border-radius:9px;background:#07111a;color:white}
@media(max-width:700px){.company-editor{grid-template-columns:1fr}.company-settings-card{flex-direction:column;align-items:stretch}}

/* V8.3.1 — identité d'entreprise visible */
.settings-stack{display:grid;gap:14px}
.workshop-company-title{display:flex;align-items:center;gap:14px;margin-bottom:14px;padding:12px 15px;border:1px solid var(--line);border-radius:14px;background:#0b1924}
.workshop-company-title img{width:58px;height:58px;object-fit:cover;border-radius:14px;border:1px solid rgba(42,224,214,.5);background:#06121b}
.workshop-company-title h2{margin:0;font-size:26px}.workshop-company-title p{margin:3px 0 0;color:var(--muted)}
.sidebar-company-button{display:flex!important;align-items:center;gap:10px;text-align:left!important}
.sidebar-company-button img{width:42px;height:42px;object-fit:cover;border-radius:10px;border:1px solid var(--line);background:#06121b}
.sidebar-company-button span,.sidebar-company-button b,.sidebar-company-button small{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sidebar-company-button small{color:#c4d4dd}
.company-account-mini{display:grid!important;grid-template-columns:44px 1fr;align-items:center;gap:10px}
.company-account-mini img{width:44px;height:44px;object-fit:cover;border-radius:10px;border:1px solid var(--line);background:#06121b}
.company-account-mini>button{grid-column:1/-1}
.company-account-mini b,.company-account-mini span,.company-account-mini small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.company-account-mini small{color:var(--muted)}
.company-live-preview{margin-top:15px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#091620}
.company-live-preview small{display:block;margin-bottom:8px;color:var(--muted)}
.company-live-preview>div{display:flex;align-items:center;gap:10px}
.company-live-preview img{width:48px;height:48px;object-fit:cover;border-radius:10px}
.company-live-preview b,.company-live-preview em{display:block}.company-live-preview em{font-style:normal;color:var(--muted);margin-top:3px}

/* V8.4 — mode Industrie */
.industry-unlock{border-color:rgba(255,180,55,.58);box-shadow:0 25px 90px rgba(255,145,30,.18)}
.industry-unlock .trophy{filter:drop-shadow(0 0 25px rgba(255,179,56,.55))}

.stats-tabs{display:grid;gap:14px}.stats-tab-buttons{display:flex;gap:9px;flex-wrap:wrap}.stats-tab-buttons button.active{border-color:#31ded5;background:#123441}.leaderboard-shell{display:grid;gap:14px}.leaderboard-header{display:flex;align-items:center;justify-content:space-between;gap:15px}.leaderboard-podium{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:end}.podium-card{padding:20px 14px;text-align:center;border:1px solid var(--line);border-radius:18px;background:linear-gradient(180deg,#112532,#08141d)}.podium-card.rank-1{order:2;min-height:250px;border-color:rgba(255,206,73,.7)}.podium-card.rank-2{order:1;min-height:220px}.podium-card.rank-3{order:3;min-height:200px}.podium-card img{width:74px;height:74px;object-fit:cover;border-radius:18px}.podium-card h3{margin:10px 0 3px}.podium-card p{margin:0 0 9px;color:var(--muted)}.podium-card b,.podium-card small{display:block}.podium-rank{font-size:33px}.leaderboard-table-wrap{padding:0;overflow:hidden}.leaderboard-table{width:100%;border-collapse:collapse}.leaderboard-table th,.leaderboard-table td{padding:12px 11px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}.leaderboard-table tr.current-player{background:rgba(41,222,212,.09);box-shadow:inset 3px 0 #2bded4}.leader-company{display:flex;align-items:center;gap:8px}.leader-company img{width:34px;height:34px;object-fit:cover;border-radius:9px}.my-ranking{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:18px}.my-rank-medal{font-size:40px}.my-rank-score{text-align:right}@media(max-width:850px){.leaderboard-podium{grid-template-columns:1fr}.podium-card.rank-1,.podium-card.rank-2,.podium-card.rank-3{order:initial;min-height:0}.leaderboard-header,.my-ranking{display:grid;grid-template-columns:1fr}.my-rank-score{text-align:left}}


/* V8.6 UI refresh */
.stats-tab-buttons button{
 display:flex;
 align-items:center;
 gap:8px;
 border-radius:12px;
 transition:.2s;
}
.stats-tab-buttons button::before{
 display:inline-flex;
 width:18px;
 justify-content:center;
 color:#2bded4;
 font-weight:700;
}
.stats-tab-buttons button:first-child::before{content:"▥";}
.stats-tab-buttons button:last-child::before{content:"◈";}
.stats-tab-buttons button{
 background:#13202b;
 border:1px solid rgba(43,222,212,.25);
}
.stats-tab-buttons button.active{
 background:linear-gradient(180deg,#1f5558,#17333c);
 border-color:#2bded4;
 box-shadow:0 0 12px rgba(43,222,212,.18);
}


/* =========================================================
   V8.6.1 — boutons Statistiques / Classement harmonisés
   ========================================================= */
.stats-tab-buttons{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}

.stats-tab-buttons button{
  appearance:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:0;
  min-height:52px;
  padding:12px 22px;
  border:1px solid rgba(255,255,255,.06);
  border-radius:14px;
  background:#1b2c3d;
  color:#f5fbff !important;
  font:inherit;
  font-weight:900;
  line-height:1;
  box-shadow:none;
  cursor:pointer;
  transition:
    transform .18s ease,
    border-color .18s ease,
    background .18s ease,
    box-shadow .18s ease;
}

.stats-tab-buttons button::before{
  content:none !important;
  display:none !important;
}

.stats-tab-buttons button:hover{
  transform:translateY(-1px);
  border-color:rgba(43,221,212,.72);
  background:#20364a;
  color:#ffffff !important;
  box-shadow:0 8px 22px rgba(0,0,0,.22);
}

.stats-tab-buttons button.active{
  border-color:#2bddd4;
  background:linear-gradient(180deg,#35e3d6,#21c7c5);
  color:#07141d !important;
  box-shadow:0 0 20px rgba(43,221,212,.24);
}

.stats-tab-buttons button.active:hover{
  color:#07141d !important;
  background:linear-gradient(180deg,#42eadf,#28d1ce);
}

/* =========================================================
   V8.7 — Enterprise Edition
   ========================================================= */
.audio-toggle{display:flex!important;align-items:center;gap:9px;margin:10px 0;font-weight:800}
.audio-toggle input{width:20px;height:20px}
.printer-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:14px}
.printer-stat-head{display:grid;grid-template-columns:70px 1fr auto;gap:12px;align-items:center}
.printer-stat-head img{width:70px;height:70px;object-fit:contain;background:#07121b;border:1px solid var(--line);border-radius:13px}
.printer-stat-head h2,.printer-stat-head p{margin:0}.printer-stat-head p{color:var(--muted);margin-top:3px}
.printer-stat-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:15px}
.printer-stat-metrics>div{padding:10px;border-radius:10px;background:#0a1721;border:1px solid var(--line)}
.printer-stat-metrics small,.printer-stat-metrics b{display:block}.printer-stat-metrics small{color:var(--muted)}.printer-stat-metrics b{margin-top:4px}
.history-list{display:grid;gap:8px}.history-list article{display:flex;justify-content:space-between;gap:15px;padding:12px;border:1px solid var(--line);border-radius:11px;background:#0a1721}.history-list article.failed{border-color:rgba(255,78,88,.5)}.history-list b,.history-list span{display:block}.history-list span{margin-top:4px;color:var(--muted)}
.reputation-panel{text-align:center}.reputation-score{font-size:70px;font-weight:1000;color:#55eadf}.reputation-stars{font-size:38px;color:#ffd04c;letter-spacing:5px}.reputation-bar,.achievement-progress{height:14px;background:#102532;border-radius:999px;overflow:hidden}.reputation-bar i,.achievement-progress i{display:block;height:100%;background:linear-gradient(90deg,#28d8d0,#84ed4f)}
.achievement-summary{display:grid;grid-template-columns:1fr minmax(220px,1fr);gap:20px;align-items:center}.achievement-summary h2,.achievement-summary p{margin:3px 0}
.achievements-page{display:grid;gap:14px}.achievement-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}.achievement-card{display:flex;gap:12px;align-items:center;padding:14px;border-radius:12px;border:1px solid var(--line);background:#0b1923}.achievement-card.locked{filter:grayscale(1);opacity:.48}.achievement-card.unlocked{border-color:rgba(45,222,213,.55);box-shadow:0 0 16px rgba(45,222,213,.08)}.achievement-icon{font-size:35px}.achievement-card h3,.achievement-card p{margin:0}.achievement-card p{margin-top:4px;color:var(--muted)}.achievement-card small{display:block;margin-top:7px;font-weight:900}
.rename-printer-modal label{display:block;font-weight:900}.rename-printer-modal input{display:block;width:100%;margin-top:7px;padding:12px;border-radius:9px;border:1px solid var(--line);background:#07111a;color:white}
.enterprise-unlock{border-color:rgba(167,92,255,.65);box-shadow:0 25px 90px rgba(123,67,255,.18)}
@media(max-width:750px){.printer-stat-metrics{grid-template-columns:repeat(2,1fr)}.achievement-summary{grid-template-columns:1fr}.printer-stat-head{grid-template-columns:60px 1fr}.printer-stat-head button{grid-column:1/-1}.history-list article{flex-direction:column}}

.price-grid>div:last-child{display:flex;gap:7px;flex-wrap:wrap}.rd-page{display:grid;gap:14px}.rd-header{display:flex;justify-content:space-between;gap:20px;align-items:center}.rd-header h2,.rd-header p{margin:3px 0}.rd-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:10px}.rd-card{display:grid;grid-template-columns:1fr auto;gap:12px;padding:14px;border:1px solid var(--line);border-radius:13px;background:#0a1721}.rd-card.locked{opacity:.6}.rd-card h3,.rd-card p{margin:0}.rd-card p{margin-top:4px;color:var(--muted)}.rd-card em{display:block;margin-top:7px;color:#f3b56d;font-style:normal}.rd-levels{display:flex;gap:5px;margin:10px 0}.rd-levels i{width:24px;height:7px;border-radius:999px;background:#1b303d}.rd-levels i.done{background:linear-gradient(90deg,#2bded4,#82ed50)}.filament-production-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:9px}.filament-production-grid button{display:grid;gap:5px;text-align:left}.rd-sales p{padding:9px;border-bottom:1px solid var(--line)}@media(max-width:760px){.rd-header{align-items:stretch;flex-direction:column}.rd-card{grid-template-columns:1fr}}

/* V8.8.1 — R&D live, progression et mode dev */
.rd-active-live{display:grid;gap:6px;min-width:240px;text-align:right}
.rd-progress-track{height:10px;border-radius:999px;background:#112734;overflow:hidden}
.rd-progress-track i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#2bded4,#83ed50);transition:width .4s linear}
.rd-active-live small{color:#8deae2;font-weight:900}
.dev-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px;margin-bottom:14px}
@media(max-width:700px){.rd-active-live{text-align:left;min-width:0;width:100%}}

/* =========================================================
   V8.9 — Réseau et énergie
   ========================================================= */
.energy-page-stack{display:grid;gap:14px}
.grid-status-card{display:flex;align-items:center;justify-content:space-between;gap:20px;border-left:4px solid #42dd9a}
.grid-status-card.offline{border-left-color:#ff6a70;background:linear-gradient(90deg,rgba(255,80,90,.09),#0b1923)}
.grid-status-card h2,.grid-status-card p{margin:3px 0}
.energy-backup-mini{display:grid;gap:7px;text-align:right}.energy-backup-mini span,.energy-backup-mini b{display:block}
.generator-fuel-card{display:flex;align-items:center;justify-content:space-between;gap:15px}.generator-fuel-card h2,.generator-fuel-card p{margin:0}.generator-fuel-card p{margin-top:5px;color:var(--muted)}.generator-fuel-card>div:last-child{display:flex;gap:8px;flex-wrap:wrap}
.energy-stats-modal{width:min(980px,96vw);max-height:90vh;overflow:auto}.energy-stats-page{display:grid;gap:14px}.energy-stats-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.energy-stats-summary>div,.energy-stats-grid>div{padding:12px;border:1px solid var(--line);border-radius:11px;background:#091721}.energy-stats-summary h2,.energy-stats-summary small{display:block;margin:3px 0}
.energy-stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.energy-stats-grid small,.energy-stats-grid b{display:block}.energy-stats-grid b{margin-top:5px;font-size:19px}
.outage-history>div{display:grid;gap:8px}.outage-history article{display:flex;justify-content:space-between;gap:15px;padding:11px;border:1px solid var(--line);border-radius:10px;background:#091721}.outage-history b,.outage-history span{display:block}.outage-history span{margin-top:4px;color:var(--muted)}
@media(max-width:800px){.grid-status-card,.generator-fuel-card{align-items:stretch;flex-direction:column}.energy-backup-mini{text-align:left}.energy-stats-summary,.energy-stats-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:520px){.energy-stats-summary,.energy-stats-grid{grid-template-columns:1fr}.outage-history article{flex-direction:column}}

/* =========================================================
   V8.9.1 — Correctif rand() et bannière R&D
   ========================================================= */
.rd-hero{
  position:relative;
  min-height:300px;
  overflow:hidden;
  border:1px solid var(--line);
  border-radius:18px;
  background:#07121b;
  box-shadow:0 18px 48px rgba(0,0,0,.28);
}
.rd-hero>img{
  display:block;
  width:100%;
  height:clamp(300px,38vw,520px);
  object-fit:cover;
  object-position:center;
}
.rd-hero::after{
  content:"";
  position:absolute;
  inset:0;
  background:
    linear-gradient(180deg,rgba(4,10,16,.16),rgba(4,12,19,.3) 45%,rgba(4,12,19,.92)),
    linear-gradient(90deg,rgba(3,11,18,.75),transparent 58%);
  pointer-events:none;
}
.rd-hero-overlay{
  position:absolute;
  z-index:2;
  left:0;
  right:0;
  bottom:0;
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:20px;
  padding:28px;
}
.rd-hero-overlay h1{
  margin:4px 0 6px;
  font-size:clamp(28px,4vw,48px);
}
.rd-hero-overlay p{
  margin:0;
  max-width:700px;
  color:#c0d3dd;
}
.rd-hero-overlay>div>small{
  color:#55e6dd;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.rd-hero-status{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  justify-content:flex-end;
}
.rd-hero-status span{
  min-width:150px;
  padding:12px 14px;
  border:1px solid rgba(84,230,221,.34);
  border-radius:12px;
  background:rgba(5,18,28,.82);
  backdrop-filter:blur(8px);
}
.rd-hero-status small,
.rd-hero-status b{
  display:block;
}
.rd-hero-status small{
  color:#8eaab8;
}
.rd-hero-status b{
  margin-top:4px;
  color:#72eee5;
  font-size:18px;
}
@media(max-width:760px){
  .rd-hero-overlay{
    align-items:stretch;
    flex-direction:column;
    padding:20px;
  }
  .rd-hero-status{
    justify-content:flex-start;
  }
  .rd-hero-status span{
    flex:1;
  }
}

/* V8.9.3 — restauration énergie et stabilité notifications */
.energy-original-content{
  display:grid;
  gap:14px;
}
.energy-original-content>.panel{
  margin:0;
}

/* V8.9.6 — menu R&D permanent et déblocage par l'Usine */
.rd-locked-page{
  min-height:420px;
  display:grid;
  grid-template-columns:110px minmax(0,680px);
  justify-content:center;
  align-items:center;
  gap:28px;
  padding:42px;
  text-align:left;
  border-color:rgba(78,219,211,.34);
  background:
    radial-gradient(circle at 15% 30%,rgba(43,222,212,.1),transparent 34%),
    #0a1721;
}
.rd-locked-icon{
  display:grid;
  place-items:center;
  width:100px;
  height:100px;
  border-radius:24px;
  border:1px solid rgba(78,219,211,.38);
  background:#0d2531;
  font-size:44px;
  box-shadow:0 16px 42px rgba(0,0,0,.28);
}
.rd-locked-page h1{
  margin:5px 0 12px;
  font-size:36px;
}
.rd-locked-page p{
  color:#bfd0d9;
  line-height:1.55;
}
.rd-unlock-requirement{
  display:flex;
  justify-content:space-between;
  gap:20px;
  margin:20px 0;
  padding:13px 15px;
  border:1px solid var(--line);
  border-radius:11px;
  background:#07141d;
}
.rd-unlock-requirement span{
  color:var(--muted);
}
@media(max-width:650px){
  .rd-locked-page{
    grid-template-columns:1fr;
    padding:25px;
    text-align:center;
  }
  .rd-locked-icon{
    margin:auto;
  }
}

/* V8.9.8 — interface temps réel */
#outageWorkshopTimer{
  font-variant-numeric:tabular-nums;
}
[data-printer-end]{
  font-variant-numeric:tabular-nums;
}

/* V8.9.9 — compteurs temps réel */
#outageWorkshopTimer,
#outageTimerLive,
#nextOutageCheckLive,
#batteryChargeLive,
#generatorFuelLive,
#rdResearchTimer,
#rdFilamentTimer{
  font-variant-numeric:tabular-nums;
}

/* =========================================================
   V8.10 — Production continue de filament
   ========================================================= */
.filament-loop-panel{
  display:grid;
  gap:14px;
}
.filament-loop-panel>h2{
  margin:0;
}
.filament-active-card{
  display:grid;
  gap:12px;
  padding:16px;
  border:1px solid rgba(43,222,212,.5);
  border-radius:14px;
  background:linear-gradient(135deg,rgba(43,222,212,.09),#091721);
}
.filament-active-heading{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:15px;
}
.filament-active-heading h3{
  margin:3px 0 0;
  font-size:25px;
}
.filament-active-heading>div:last-child{
  display:grid;
  gap:4px;
  text-align:right;
}
.filament-active-heading>div:last-child>b{
  color:#67eee5;
  font-size:20px;
  font-variant-numeric:tabular-nums;
}
.filament-progress-track{
  height:15px;
  overflow:hidden;
  border-radius:999px;
  background:#122a37;
}
.filament-progress-track i{
  display:block;
  height:100%;
  border-radius:inherit;
  background:linear-gradient(90deg,#2bded4,#83ed50);
  transition:width .4s linear;
}
.filament-progress-footer{
  display:flex;
  justify-content:space-between;
  gap:12px;
  color:#aec4ce;
}
#rdFilamentProgressText{
  color:#71eee5;
  font-weight:900;
  font-variant-numeric:tabular-nums;
}
.danger-button{
  justify-self:start;
  border-color:rgba(255,92,99,.55)!important;
  background:#382029!important;
  color:#fff!important;
}
.filament-production-grid button.active-material{
  border-color:#34ddd4;
  background:linear-gradient(180deg,#17484c,#102b36);
  box-shadow:0 0 18px rgba(43,222,212,.18);
}
.filament-production-grid button.queued-material{
  border-color:#e7b957;
  box-shadow:0 0 14px rgba(231,185,87,.15);
}
@media(max-width:650px){
  .filament-active-heading,
  .filament-progress-footer{
    flex-direction:column;
    display:flex;
  }
  .filament-active-heading>div:last-child{
    text-align:left;
  }
}

.waste-page-stack,.missions-page{display:grid;gap:14px}.waste-storage-card{display:flex;justify-content:space-between;align-items:center;gap:20px}.recycler-card{display:grid;grid-template-columns:120px 1fr auto;align-items:center;gap:20px}.recycler-machine{position:relative;width:110px;height:110px;border-radius:20px;background:#0b202b;border:1px solid var(--line);display:grid;place-items:center}.recycler-wheel{position:absolute;width:78px;height:78px;border:10px dashed #31dcd2;border-radius:50%}.recycler-card.running .recycler-wheel{animation:recyclerSpin 2.2s linear infinite}.recycler-body{font-size:34px;z-index:1}.recycler-health{height:10px;border-radius:999px;background:#142b37;overflow:hidden}.recycler-health i{display:block;height:100%;background:linear-gradient(90deg,#f2b84b,#46df99)}.recycler-actions{display:grid;gap:8px}@keyframes recyclerSpin{to{transform:rotate(360deg)}}
.mission-hero{position:relative;min-height:320px;overflow:hidden;border-radius:18px;border:1px solid var(--line)}.mission-hero img{width:100%;height:clamp(320px,40vw,520px);object-fit:cover}.mission-hero:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent,rgba(4,10,16,.92))}.mission-hero>div{position:absolute;z-index:2;left:28px;right:28px;bottom:25px}.mission-hero h1{font-size:46px;margin:4px 0}.mission-title-row{display:flex;justify-content:space-between;gap:15px}.mission-progress{height:15px;border-radius:999px;background:#142b37;overflow:hidden}.mission-progress i{display:block;height:100%;background:linear-gradient(90deg,#2bded4,#84ed50)}.mission-component-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:9px}.mission-component-grid article{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px;border:1px solid var(--line);border-radius:11px;background:#091721}.mission-component-grid article.done{border-color:#46df99}.mission-catalog{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px}.mission-catalog article{display:grid;grid-template-columns:100px 1fr auto;gap:12px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:13px;background:#091721}.mission-catalog article.locked{opacity:.5}.mission-catalog article.completed{border-color:#46df99}.mission-catalog img{width:100px;height:82px;object-fit:cover;border-radius:10px}@media(max-width:760px){.waste-storage-card,.mission-title-row{flex-direction:column;align-items:stretch}.recycler-card{grid-template-columns:1fr}.mission-catalog article{grid-template-columns:80px 1fr}.mission-catalog article button{grid-column:1/-1}}

/* V8.11.1 — missions détaillées et collecte indépendante */
.mission-hero{background:#07131e}.mission-hero img{object-fit:contain!important;background:#07131e}.mission-catalog img{object-fit:contain!important;background:#06111a;padding:4px}.mission-material-summary{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.mission-material-summary span{display:grid;gap:2px;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:#081722}.mission-material-summary span b{color:#6be9df}.mission-component-info{min-width:0}.mission-component-info em{display:block;margin-top:5px;color:#7e9aa8;font-size:12px;font-style:normal}.waste-pickup-head{display:flex;justify-content:space-between;align-items:center;gap:14px}.waste-pickup-head h2,.waste-pickup-head p{margin:2px 0}.waste-pickup.paused{border-color:rgba(245,158,11,.45)}@media(max-width:700px){.waste-pickup-head{align-items:stretch;flex-direction:column}.mission-catalog article{grid-template-columns:1fr}.mission-catalog img{width:100%;height:160px}}

/* =========================================================
   V8.11.2 — Missions : sélection imprimante et cartes premium
   ========================================================= */
.active-mission-overview{
  display:grid;
  grid-template-columns:180px 1fr auto;
  align-items:center;
  gap:20px;
}
.active-mission-image{
  width:180px;
  height:145px;
  object-fit:contain;
  border:1px solid rgba(64,213,226,.35);
  border-radius:15px;
  background:radial-gradient(circle at center,rgba(44,201,221,.13),#07151e);
  padding:12px;
}
.active-mission-details h2{
  margin:5px 0 8px;
  font-size:30px;
}
.active-mission-details p{
  margin:4px 0;
  color:#a9bec9;
}
.mission-material-summary span{
  display:grid;
  gap:4px;
  min-width:90px;
}
.mission-material-summary span small{
  color:#b6c9d2;
}
.mission-progress-label{
  color:#a9bec9;
  font-variant-numeric:tabular-nums;
}
.mission-component-grid{
  grid-template-columns:repeat(auto-fit,minmax(285px,1fr));
}
.mission-component-card{
  display:grid!important;
  grid-template-columns:1fr!important;
  align-content:start;
  gap:13px!important;
  min-height:260px;
  padding:16px!important;
  transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease;
}
.mission-component-card:hover{
  transform:translateY(-2px);
}
.mission-component-card.running{
  border-color:rgba(237,181,74,.62)!important;
  box-shadow:0 0 20px rgba(237,181,74,.08);
}
.mission-component-card.done{
  border-color:rgba(66,224,147,.65)!important;
  background:linear-gradient(145deg,rgba(35,156,102,.12),#091721)!important;
  opacity:1!important;
  box-shadow:0 0 22px rgba(66,224,147,.08);
}
.mission-component-heading{
  display:flex;
  gap:12px;
  align-items:flex-start;
}
.mission-component-heading h3{
  margin:0 0 7px;
  font-size:20px;
  line-height:1.2;
}
.mission-component-status{
  display:grid;
  place-items:center;
  flex:0 0 36px;
  width:36px;
  height:36px;
  border-radius:50%;
  background:#112b38;
  color:#56e7de;
  font-weight:1000;
}
.mission-component-card.running .mission-component-status{
  background:#493917;
  color:#ffd978;
}
.mission-component-card.done .mission-component-status{
  background:#153d2d;
  color:#67ee9e;
}
.mission-component-material{
  display:inline-flex;
  padding:4px 9px;
  border:1px solid rgba(65,218,225,.35);
  border-radius:999px;
  color:#67e9e2;
  font-size:13px;
  font-weight:900;
}
.mission-component-specs{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
}
.mission-component-specs span{
  padding:10px;
  border:1px solid var(--line);
  border-radius:10px;
  background:#07141d;
}
.mission-component-specs small,
.mission-component-specs b{
  display:block;
}
.mission-component-specs small{
  color:#7f9ba9;
}
.mission-component-specs b{
  margin-top:4px;
  font-variant-numeric:tabular-nums;
}
.mission-component-printer{
  min-height:54px;
}
.mission-component-printer strong,
.mission-component-printer small{
  display:block;
}
.mission-component-printer strong{
  color:#e8f1f5;
}
.mission-component-card.done .mission-component-printer strong{
  color:#65ec99;
}
.mission-component-printer small{
  margin-top:5px;
  color:#809eac;
}
.mission-component-card>button{
  width:100%;
  margin-top:auto;
}
.mission-catalog{
  grid-template-columns:repeat(auto-fit,minmax(350px,1fr));
}
.mission-catalog article{
  grid-template-columns:150px 1fr;
  align-items:stretch;
  overflow:hidden;
  padding:0;
}
.mission-catalog-visual{
  display:grid;
  place-items:center;
  min-height:175px;
  padding:15px;
  background:radial-gradient(circle at center,rgba(49,205,220,.16),#06121a);
  border-right:1px solid var(--line);
}
.mission-catalog-visual img{
  width:100%;
  height:145px;
  object-fit:contain;
  border-radius:0;
}
.mission-catalog-content{
  padding:17px 16px 10px 0;
}
.mission-catalog-content h3{
  font-size:22px;
}
.mission-catalog article>button{
  grid-column:1/-1;
  margin:0 14px 14px;
}
.mission-printer-modal{
  width:min(760px,94vw);
}
.mission-picker-summary{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:9px;
  margin:16px 0;
}
.mission-picker-summary span{
  padding:12px;
  border:1px solid var(--line);
  border-radius:11px;
  background:#07141d;
}
.mission-picker-summary small,
.mission-picker-summary b{
  display:block;
}
.mission-picker-summary b{
  margin-top:5px;
}
.mission-printer-list{
  display:grid;
  gap:9px;
  max-height:55vh;
  overflow:auto;
}
.mission-printer-list>button{
  display:grid;
  grid-template-columns:82px 1fr auto;
  align-items:center;
  gap:13px;
  width:100%;
  text-align:left;
  padding:11px;
}
.mission-printer-list img{
  width:82px;
  height:64px;
  object-fit:contain;
  padding:5px;
  border-radius:9px;
  background:#07141d;
}
.mission-printer-list span small,
.mission-printer-list span b{
  display:block;
}
@media(max-width:720px){
  .active-mission-overview{
    grid-template-columns:1fr;
  }
  .active-mission-image{
    width:100%;
    height:210px;
  }
  .mission-catalog article{
    grid-template-columns:110px 1fr;
  }
  .mission-catalog-visual{
    min-height:150px;
  }
  .mission-catalog-visual img{
    height:120px;
  }
  .mission-picker-summary{
    grid-template-columns:1fr;
  }
  .mission-printer-list>button{
    grid-template-columns:65px 1fr;
  }
  .mission-printer-list>button>span:last-child{
    grid-column:1/-1;
  }
}

/* =========================================================
   V8.11.3 — Confirmation R&D et file extrudeuse
   ========================================================= */
.rd-confirm-overlay{
  cursor:default;
}
.rd-confirm-modal{
  width:min(540px,92vw);
  text-align:center;
  padding:30px;
}
.rd-confirm-icon{
  display:grid;
  place-items:center;
  width:78px;
  height:78px;
  margin:0 auto 15px;
  border-radius:50%;
  border:1px solid rgba(65,225,216,.5);
  background:rgba(35,202,194,.12);
  color:#68eee5;
  font-size:38px;
  font-weight:1000;
}
.rd-confirm-modal h2{
  margin:7px 0;
  font-size:30px;
}
.rd-confirm-modal>p{
  color:#a9bec9;
}
.rd-confirm-details{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:9px;
  margin:22px 0;
}
.rd-confirm-details span{
  padding:12px;
  border:1px solid var(--line);
  border-radius:11px;
  background:#07141d;
}
.rd-confirm-details small,
.rd-confirm-details b{
  display:block;
}
.rd-confirm-details b{
  margin-top:5px;
}
.rd-confirm-success{
  color:#69ec9b!important;
}
.primary-confirm-button{
  min-width:180px;
  margin-top:18px;
  background:linear-gradient(180deg,#28d9d0,#139a99)!important;
  color:#041014!important;
}
.filament-idle-state{
  display:flex;
  justify-content:space-between;
  gap:15px;
  padding:14px;
  border:1px solid var(--line);
  border-radius:12px;
  background:#081620;
}
.filament-idle-state small{
  color:#8ca6b3;
}
.filament-queue-controls{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}
.filament-queue-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:15px;
}
.filament-queue-header h3{
  margin:0;
}
.filament-queue-header>b{
  color:#62e9e1;
}
.filament-queue-list{
  display:grid;
  gap:8px;
}
.filament-queue-list>article{
  display:grid;
  grid-template-columns:42px 1fr auto;
  align-items:center;
  gap:12px;
  padding:11px;
  border:1px solid var(--line);
  border-radius:11px;
  background:#081620;
}
.filament-queue-list b,
.filament-queue-list small{
  display:block;
}
.filament-queue-list small{
  margin-top:4px;
  color:#8da7b4;
}
.queue-position{
  display:grid;
  place-items:center;
  width:34px;
  height:34px;
  border-radius:50%;
  background:#12303b;
  color:#66eae2;
  font-weight:1000;
}
.queue-actions{
  display:flex;
  gap:5px;
}
.queue-actions button{
  min-width:40px;
  padding:8px;
}
@media(max-width:650px){
  .rd-confirm-details{
    grid-template-columns:1fr;
  }
  .filament-queue-list>article{
    grid-template-columns:38px 1fr;
  }
  .queue-actions{
    grid-column:1/-1;
    justify-content:flex-end;
  }
}

/* V8.11.4 — mission artwork and R&D queue compatibility */
.mission-catalog-visual{
  min-height:220px;
  padding:8px;
}
.mission-catalog-visual img{
  height:205px;
  object-fit:contain;
}
.active-mission-image{
  width:240px;
  height:190px;
}
@media(max-width:720px){
  .active-mission-image{width:100%;height:240px}
  .mission-catalog-visual{min-height:170px}
  .mission-catalog-visual img{height:160px}
}


/* V8.11.5 — marché fournisseurs comparatif */
.supplier-market-intro{display:grid;gap:8px}
.supplier-market-legend{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;color:var(--muted);font-size:.86rem}
.supplier-material-zones{display:grid;gap:18px}
.supplier-material-zone{
  border:1px solid var(--line);
  border-radius:18px;
  overflow:hidden;
  background:linear-gradient(180deg,rgba(15,31,42,.96),rgba(7,18,27,.96));
  box-shadow:0 12px 30px rgba(0,0,0,.16)
}
.supplier-material-title{
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:14px 16px;border-bottom:1px solid var(--line);
  background:rgba(37,221,211,.045)
}
.supplier-material-title>div{display:flex;align-items:center;gap:10px}
.supplier-material-title h2{margin:0}
.supplier-material-title small{color:var(--muted)}
.supplier-comparison-scroll{overflow-x:auto;padding:12px}
.supplier-comparison-grid{
  display:grid;
  grid-template-columns:repeat(6,minmax(190px,1fr));
  gap:10px;
  min-width:1180px;
  align-items:stretch
}
.supplier-compare-cell{
  min-width:0;
  display:grid;
  grid-template-rows:118px 28px 1fr;
  gap:8px;
  padding:11px;
  border:1px solid var(--line);
  border-top:3px solid var(--cyan);
  border-radius:14px;
  background:#091721
}
.supplier-compare-cell.wanhao{border-top-color:#ff4f58}
.supplier-compare-cell.is-out{background:linear-gradient(180deg,rgba(62,20,25,.38),#091721)}
.supplier-compare-head{display:grid;grid-template-columns:54px 1fr;align-items:center;gap:8px;min-width:0}
.supplier-compare-head img{width:54px;height:42px;object-fit:contain}
.supplier-compare-head div{min-width:0;display:grid;gap:3px}
.supplier-compare-head b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.supplier-compare-head small{color:var(--muted);line-height:1.2}
.supplier-promo-slot{height:28px;display:flex;align-items:center}
.supplier-price-slots{display:grid;grid-template-rows:repeat(7,minmax(42px,1fr));gap:7px;min-height:336px}
.supplier-price-slots button{
  width:100%;min-height:42px;
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:8px 10px
}
.supplier-price-slots button span{color:var(--muted)}
.supplier-price-slots button b{white-space:nowrap}
.supplier-outage-placeholder{
  grid-row:1 / -1;
  min-height:189px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:9px;text-align:center;padding:12px;
  border:1px dashed rgba(255,105,112,.42);
  border-radius:11px;background:rgba(255,79,88,.055)
}
.supplier-outage-placeholder small{color:var(--muted);line-height:1.35}
@media(max-width:760px){
  .supplier-material-title{align-items:flex-start;flex-direction:column}
  .supplier-comparison-grid{grid-template-columns:repeat(6,190px);min-width:max-content}
}


/* V8.11.6 — fournisseurs, maintenance générale et recycleur */
.supplier-price-slots button{
  background:linear-gradient(180deg,#123143,#0b2433)!important;
  color:#e9fbff!important;
  border:1px solid rgba(40,220,215,.38)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035);
}
.supplier-price-slots button span{color:#9cb7c8!important}
.supplier-price-slots button b{color:#f3fdff!important}
.supplier-price-slots button:hover{
  background:linear-gradient(180deg,#17465a,#0d3041)!important;
  border-color:var(--cyan)!important;
  transform:translateY(-1px)
}
.maintenance-all-button{
  border-color:rgba(40,220,215,.65)!important;
  background:linear-gradient(135deg,rgba(22,93,104,.95),rgba(8,48,63,.98))!important;
  color:#dfffff!important;
  font-weight:800
}
.maintenance-all-button:hover{box-shadow:0 0 0 2px rgba(40,220,215,.12),0 8px 22px rgba(0,0,0,.22)}
.recycler-section-head{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:14px}
.recycler-section-head h2{margin:2px 0 0}
.recycler-section-head>span{color:var(--muted);font-size:.88rem}
.granule-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(135px,1fr));gap:10px}
.granule-grid article{
  display:grid;gap:5px;padding:13px;border:1px solid var(--line);border-radius:13px;
  background:linear-gradient(180deg,rgba(30,84,78,.17),rgba(6,21,29,.75))
}
.granule-grid article b{color:var(--muted);font-size:.82rem}
.granule-grid article strong{font-size:1.22rem;color:#d8fff5}
.recycler-history{display:grid;gap:8px;max-height:470px;overflow:auto;padding-right:4px}
.recycler-history article{
  display:flex;align-items:center;justify-content:space-between;gap:15px;
  padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:rgba(8,28,38,.75)
}
.recycler-history article>div{display:grid;gap:3px}
.recycler-history article>div:last-child{text-align:right}
.recycler-history small,.recycler-history span{color:var(--muted);font-size:.82rem}
.recycler-history strong{color:var(--cyan)}
@media(max-width:650px){
 .recycler-section-head{align-items:flex-start;flex-direction:column}
 .recycler-history article{align-items:flex-start;flex-direction:column}
 .recycler-history article>div:last-child{text-align:left}
}


/* V8.11.7 — confirmation de maintenance */
.maintenance-confirm-summary{display:grid;gap:9px;margin-top:12px}
.maintenance-confirm-summary>div{
 display:flex;justify-content:space-between;gap:18px;
 padding:10px 12px;border:1px solid var(--line);border-radius:11px;
 background:rgba(7,28,39,.72)
}
.maintenance-confirm-summary>div span{color:var(--muted)}
.maintenance-confirm-summary>div.total{
 border-color:rgba(40,220,215,.55);
 background:linear-gradient(135deg,rgba(20,90,96,.28),rgba(7,28,39,.85))
}
.maintenance-confirm-summary>div.total b{color:var(--cyan);font-size:1.12rem}


/* V8.12.0 — Personnel */
.staff-page{display:grid;gap:16px}
.staff-locked{
 min-height:520px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;
 padding:40px;border:1px solid var(--line);border-radius:22px;
 background:radial-gradient(circle at 50% 20%,rgba(32,197,190,.14),transparent 38%),linear-gradient(180deg,#0c2230,#07151f)
}
.staff-lock-icon{font-size:4.2rem;filter:grayscale(.35);margin-bottom:10px}
.staff-locked h1{font-size:2.5rem;margin:6px 0}
.staff-locked p{max-width:620px;color:var(--muted);font-size:1.05rem}
.staff-requirement{width:min(480px,100%);display:flex;justify-content:space-between;gap:16px;padding:12px 14px;margin-top:8px;border:1px solid var(--line);border-radius:12px;background:rgba(5,22,31,.78)}
.staff-requirement span{color:var(--muted)}
.staff-locked button{margin-top:20px}
.staff-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;background:linear-gradient(125deg,rgba(17,78,90,.5),rgba(7,22,31,.92))}
.staff-hero h1{font-size:2rem;margin:3px 0 7px}
.staff-hero p{margin:0;color:var(--muted)}
.staff-capacity{min-width:180px;text-align:right}
.staff-capacity>b{display:block;font-size:2rem;color:var(--cyan)}
.staff-capacity>span{color:var(--muted)}
.staff-capacity>div,.employee-level>div:nth-child(2){height:7px;margin-top:8px;border-radius:999px;background:#041019;overflow:hidden}
.staff-capacity i,.employee-level i{display:block;height:100%;background:linear-gradient(90deg,var(--cyan),#7affca)}
.staff-section-head{display:flex;justify-content:space-between;align-items:end;gap:14px;margin-bottom:14px}
.staff-section-head h2{margin:3px 0 0}
.staff-section-head>span,.staff-section-head>div>span{color:var(--muted)}
.staff-section-head>div:last-child{display:flex;align-items:center;gap:12px}
.staff-bonus-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px}
.staff-bonus-grid article{display:grid;grid-template-columns:40px 1fr auto;align-items:center;gap:10px;padding:12px;border:1px solid var(--line);border-radius:13px;background:rgba(5,24,34,.76)}
.staff-bonus-grid article>span{font-size:1.55rem}
.staff-bonus-grid article div{display:grid;gap:2px}
.staff-bonus-grid article small{color:var(--muted)}
.staff-bonus-grid article strong{color:var(--cyan)}
.employee-grid,.candidate-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}
.employee-card,.candidate-card{padding:14px;border:1px solid var(--line);border-top:3px solid #7c8c98;border-radius:15px;background:linear-gradient(180deg,#0b202c,#071720)}
.employee-card.rare,.candidate-card.rare{border-top-color:#39a8ff}
.employee-card.epic,.candidate-card.epic{border-top-color:#b475ff}
.employee-card.legendary,.candidate-card.legendary{border-top-color:#ffd257;box-shadow:0 0 22px rgba(255,210,87,.07)}
.employee-card header,.candidate-card header{display:flex;align-items:center;gap:10px}
.employee-card header>div:nth-child(2),.candidate-card header>div{display:grid;gap:2px;min-width:0;flex:1}
.employee-card header small,.candidate-card header small{color:var(--muted)}
.employee-card header>span,.candidate-card header>em{font-size:.76rem;font-style:normal;padding:4px 7px;border-radius:999px;border:1px solid var(--line)}
.employee-avatar,.candidate-card header>span{width:44px;height:44px;display:grid;place-items:center;font-size:1.5rem;border-radius:12px;background:rgba(37,221,211,.09)}
.employee-level{display:grid;gap:5px;margin:14px 0}
.employee-level>div:first-child{display:flex;justify-content:space-between}
.employee-level small{color:var(--muted)}
.employee-card p,.candidate-card p{color:var(--muted);min-height:43px}
.employee-card footer{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid var(--line);padding-top:11px}
.employee-card footer span{font-size:.85rem;color:var(--muted)}
.employee-card footer button{padding:7px 9px}
.candidate-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:12px 0}
.candidate-stats span{display:grid;gap:3px;padding:8px;border:1px solid var(--line);border-radius:9px;color:var(--muted);font-size:.77rem}
.candidate-stats b{color:#eaffff;font-size:.88rem}
.candidate-card>button{width:100%}
@media(max-width:700px){
 .staff-hero,.staff-section-head{align-items:flex-start;flex-direction:column}
 .staff-capacity{text-align:left;width:100%}
 .staff-section-head>div:last-child{align-items:flex-start;flex-direction:column}
 .candidate-stats{grid-template-columns:1fr}
}


/* =========================================================
   V9.0.0 — Interface mobile stable
   ========================================================= */
.nav{
  overflow-y:auto;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
  -webkit-overflow-scrolling:touch;
}
.nav button{
  flex:0 0 auto;
  touch-action:manipulation;
}
@media(max-width:760px){
  .app{padding:6px}
  .top{grid-template-columns:1fr}
  .logo{display:none}
  .layout{
    display:grid;
    grid-template-columns:minmax(118px,36vw) minmax(0,1fr);
    gap:6px;
    align-items:start;
  }
  .nav{
    position:sticky;
    top:6px;
    max-height:calc(100dvh - 12px);
    min-height:0;
    padding:6px;
    gap:4px;
    overflow-y:auto;
    overflow-x:hidden;
    z-index:20;
    contain:layout paint;
  }
  .nav button{
    min-height:44px;
    padding:10px 8px;
    font-size:.76rem;
    line-height:1.15;
  }
  .bill{
    margin-top:6px;
    padding:9px 6px;
  }
  .bill strong{font-size:17px}
  .content{padding:7px}
  .head{
    align-items:flex-start;
    flex-direction:column;
  }
  .xp{width:100%;min-width:0}
}
@media(max-width:430px){
  .layout{grid-template-columns:112px minmax(0,1fr)}
  .nav button{font-size:.7rem;padding:9px 6px}
}

/* V9.0.1 — Menu mobile plein écran */
.mobile-menu-trigger,.mobile-menu-close{display:none;}
@media(max-width:760px){
 body.mobile-menu-open{overflow:hidden;touch-action:none;}
 .mobile-menu-trigger{display:flex;position:sticky;top:6px;z-index:45;width:100%;min-height:48px;margin:0 0 7px;align-items:center;justify-content:center;gap:8px;border:1px solid rgba(60,220,216,.58);border-radius:14px;background:linear-gradient(135deg,rgba(13,45,57,.98),rgba(14,24,38,.98));color:#f4ffff;font-size:1rem;font-weight:900;box-shadow:0 8px 28px rgba(0,0,0,.28);touch-action:manipulation;}
 .layout{display:block;}
 .nav{display:none;position:fixed;inset:0;z-index:1000;width:auto;max-width:none;max-height:none;min-height:100dvh;padding:72px 16px 24px;overflow-y:auto;overflow-x:hidden;grid-template-columns:1fr;align-content:start;gap:9px;border:0;border-radius:0;background:radial-gradient(circle at top right,rgba(44,218,214,.16),transparent 34%),linear-gradient(180deg,#07131d 0%,#091824 55%,#061019 100%);box-shadow:none;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;}
 .nav.mobile-open{display:grid;}
 .nav .mobile-menu-close{display:flex;position:fixed;top:14px;right:14px;z-index:1002;width:48px;height:48px;padding:0;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.25);border-radius:50%;background:rgba(8,19,29,.94);color:#fff;font-size:1.35rem;line-height:1;}
 .nav button:not(.mobile-menu-close){width:100%;min-height:52px;padding:14px 16px;font-size:.94rem;text-align:left;border-radius:13px;}
 .nav .bill{width:100%;margin-top:10px;}
 .content{width:100%;min-width:0;}
}


/* =========================================================
   V9.0.2 — Notifications mobiles discrètes
   ========================================================= */
@media(max-width:760px){
  .notifications-stack{
    top:auto;
    right:10px;
    bottom:max(12px,env(safe-area-inset-bottom));
    left:10px;
    width:auto;
    display:block;
    z-index:12500;
  }

  .notification{
    width:100%;
    min-height:0;
    padding:11px 38px 11px 13px;
    border-radius:12px;
    box-shadow:0 10px 28px rgba(0,0,0,.42);
    animation:notificationEnterMobile902 .18s ease-out;
  }

  .notification b{
    font-size:.92rem;
    line-height:1.15;
  }

  .notification span{
    margin-top:2px;
    font-size:.8rem;
    line-height:1.2;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }

  .notification::after{
    height:2px;
    animation-duration:2.4s;
  }

  .notification-close{
    top:50%;
    right:8px;
    width:27px;
    height:27px;
    transform:translateY(-50%);
  }

  .notification-close:hover{
    transform:translateY(-50%) scale(1.06);
  }

  @keyframes notificationEnterMobile902{
    from{opacity:0;transform:translateY(18px) scale(.98)}
    to{opacity:1;transform:translateY(0) scale(1)}
  }
}


/* =========================================================
   V9.0.4 — Administration des domaines e-mail jetables
   ========================================================= */
.admin-security-grid{display:grid;gap:18px}
.admin-domain-panel .table-head{align-items:flex-start}
.domain-update-status{display:flex;gap:14px;flex-wrap:wrap;margin:8px 0 14px;color:var(--muted)}
.domain-add-form{display:grid;grid-template-columns:minmax(220px,1fr) auto;gap:10px;margin-bottom:12px}
.domain-add-form input,.domain-search{min-height:42px}
.domain-search{width:100%;margin-bottom:12px}
.danger-text{color:#ff8c8c}
.admin-domain-panel code{font-size:.9rem}
@media(max-width:760px){
 .domain-add-form{grid-template-columns:1fr}
 .admin-domain-panel .table-head{display:grid;gap:10px}
 .admin-domain-panel .table-head button{width:100%}
}


/* =========================================================
   V9.0.5 — Gestion fiable des comptes
   ========================================================= */
.admin-user-details-overlay{z-index:15000}
.admin-user-details-modal{width:min(1120px,95vw);max-height:92vh;overflow:auto}
.details-summary-grid{display:grid;grid-template-columns:repeat(5,minmax(130px,1fr));gap:10px;margin:15px 0}
.details-summary-grid>div{padding:11px;border:1px solid var(--border);border-radius:10px;background:rgba(255,255,255,.025)}
.details-summary-grid span{display:block;color:var(--muted);font-size:.8rem;margin-bottom:4px}
.details-actions{display:flex;justify-content:flex-end;margin:10px 0}
.admin-user-details-modal details{border:1px solid var(--border);border-radius:10px;margin:10px 0;overflow:hidden}
.admin-user-details-modal summary{cursor:pointer;padding:12px;font-weight:700;background:rgba(255,255,255,.025)}
.admin-user-details-modal details .table-scroll{padding:0 10px 10px}
@media(max-width:900px){.details-summary-grid{grid-template-columns:repeat(2,minmax(130px,1fr))}}
@media(max-width:560px){.details-summary-grid{grid-template-columns:1fr}.admin-user-details-modal{width:97vw}}


/* =========================================================
   V9.1.0 — Administration consolidée
   ========================================================= */
.admin-users-table .row-actions{
  display:flex;
  gap:7px;
  flex-wrap:nowrap;
  white-space:nowrap;
}
.admin-users-table td:last-child{
  min-width:535px;
}
@media(max-width:1200px){
  .admin-users-table td:last-child{min-width:500px}
}

.payroll-panel{margin-bottom:14px}.payroll-track{height:13px;background:rgba(255,255,255,.08);border-radius:999px;overflow:hidden;margin:12px 0 8px}.payroll-track i{display:block;height:100%;background:linear-gradient(90deg,#38bdf8,#22c55e);border-radius:inherit}.payroll-row{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
.solar-detail-grid{display:grid;grid-template-columns:repeat(3,minmax(140px,1fr));gap:10px;margin:14px 0}.solar-detail-grid>div{padding:12px;border:1px solid var(--border);border-radius:10px;background:rgba(255,255,255,.025)}.solar-detail-grid small{display:block;color:var(--muted);margin-bottom:4px}
.help-page{display:grid;gap:16px}.help-hero{display:grid;grid-template-columns:minmax(240px,360px) 1fr;align-items:center;overflow:hidden}.help-hero img{width:100%;max-height:380px;object-fit:contain;align-self:end}.help-hero h1{font-size:clamp(1.8rem,4vw,3rem);margin:.25rem 0}.help-layout{display:grid;grid-template-columns:280px 1fr;gap:16px}.help-topics{display:grid;gap:6px;align-content:start}.help-topics button{text-align:left}.help-topics button.active{background:var(--accent);color:#fff}.help-content{min-height:260px}.help-content p{font-size:1.05rem;line-height:1.65}
@media(max-width:800px){.solar-detail-grid{grid-template-columns:1fr}.help-hero{grid-template-columns:1fr;text-align:center}.help-layout{grid-template-columns:1fr}.help-topics{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:480px){.help-topics{grid-template-columns:1fr}}


/* =========================================================
   Forge3D V10.0.0 — Manuel interactif complet
   ========================================================= */
.manual-page{display:grid;gap:16px}
.manual-hero{
 display:grid;
 grid-template-columns:minmax(220px,350px) 1fr;
 align-items:center;
 min-height:300px;
 overflow:hidden;
 padding-bottom:0;
}
.manual-assistant{align-self:end;display:flex;justify-content:center}
.manual-assistant img{display:block;width:100%;max-height:390px;object-fit:contain;object-position:bottom}
.manual-hero-copy{padding:28px 28px 28px 0}
.manual-hero-copy h1{font-size:clamp(2rem,4vw,3.35rem);margin:.25rem 0 .7rem}
.manual-hero-copy p{max-width:760px;font-size:1.04rem;line-height:1.6}
.manual-search-wrap{
 display:flex;align-items:center;gap:10px;max-width:720px;
 margin-top:20px;padding:5px 14px;border:1px solid var(--border);
 border-radius:12px;background:rgba(5,10,20,.55);
}
.manual-search-wrap input{
 width:100%;border:0;background:transparent;outline:0;padding:12px 0;color:inherit;font-size:1rem
}
.manual-category-bar{display:flex;gap:8px;overflow-x:auto;padding:2px 0 8px}
.manual-category-bar button{white-space:nowrap}
.manual-category-bar button.active,.manual-article-button.active{background:var(--accent);color:#fff;border-color:transparent}
.manual-layout{display:grid;grid-template-columns:minmax(260px,330px) minmax(0,1fr);gap:16px;min-height:650px}
.manual-sidebar{padding:12px;align-self:start;position:sticky;top:12px;max-height:calc(100vh - 28px);overflow:auto}
.manual-sidebar-heading{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:8px 6px 14px}
.manual-sidebar-heading small{color:var(--muted)}
.manual-article-button{
 display:grid;grid-template-columns:38px 1fr;gap:10px;align-items:start;
 width:100%;padding:11px;margin-bottom:6px;text-align:left;border-radius:10px
}
.manual-article-button span:last-child{min-width:0}
.manual-article-button b{display:block;margin-bottom:3px}
.manual-article-button small{display:block;color:var(--muted);line-height:1.35}
.manual-article-button.active small{color:rgba(255,255,255,.78)}
.manual-article-icon{font-size:1.4rem;line-height:1}
.manual-reader{min-height:650px;padding:clamp(18px,3vw,34px);overflow:auto}
.manual-article-header{
 display:grid;grid-template-columns:68px 1fr;gap:18px;align-items:center;
 padding-bottom:22px;margin-bottom:24px;border-bottom:1px solid var(--border)
}
.manual-big-icon{
 display:grid;place-items:center;width:64px;height:64px;border-radius:16px;
 background:rgba(56,189,248,.12);font-size:2rem
}
.manual-category{display:inline-block;color:var(--accent);font-size:.76rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.manual-article-header h2{margin:.2rem 0 .35rem;font-size:clamp(1.7rem,3vw,2.4rem)}
.manual-article-header p{margin:0;color:var(--muted)}
.manual-article-body{font-size:1rem;line-height:1.72;max-width:920px}
.manual-article-body h3{margin:1.6rem 0 .45rem;font-size:1.18rem}
.manual-article-body h3:first-child{margin-top:0}
.manual-article-body ul,.manual-article-body ol{padding-left:1.35rem}
.manual-article-body li{margin:.35rem 0}
.manual-tip,.manual-warning{
 margin:20px 0;padding:15px 17px;border-radius:11px;border-left:4px solid #22c55e;
 background:rgba(34,197,94,.09)
}
.manual-warning{border-left-color:#f59e0b;background:rgba(245,158,11,.09)}
.manual-flow{
 display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:10px;
 margin:18px 0;padding:18px;border:1px solid var(--border);border-radius:12px;
 background:rgba(255,255,255,.025)
}
.manual-flow span{padding:9px 12px;border-radius:9px;background:rgba(56,189,248,.1);font-weight:700}
.manual-flow.vertical{flex-direction:column}
.manual-glossary{display:grid;grid-template-columns:minmax(80px,130px) 1fr;gap:0}
.manual-glossary dt,.manual-glossary dd{margin:0;padding:12px;border-bottom:1px solid var(--border)}
.manual-glossary dt{font-weight:800}
.manual-glossary dd{color:var(--muted)}
.manual-article-footer{display:flex;justify-content:flex-end;margin-top:28px;padding-top:16px;border-top:1px solid var(--border)}
.manual-empty,.manual-empty-list{text-align:center;color:var(--muted);padding:35px 15px}
@media(max-width:900px){
 .manual-hero{grid-template-columns:250px 1fr}
 .manual-layout{grid-template-columns:270px minmax(0,1fr)}
}
@media(max-width:760px){
 .manual-hero{grid-template-columns:1fr;text-align:center}
 .manual-assistant{order:2}
 .manual-assistant img{max-height:285px}
 .manual-hero-copy{padding:22px}
 .manual-layout{grid-template-columns:1fr}
 .manual-sidebar{position:static;max-height:430px}
 .manual-reader{min-height:480px}
}
@media(max-width:480px){
 .manual-article-header{grid-template-columns:1fr}
 .manual-glossary{grid-template-columns:1fr}
 .manual-glossary dt{padding-bottom:3px;border-bottom:0}
 .manual-glossary dd{padding-top:3px}
}


/* =========================================================
   Forge3D V10.0.1 — Harmonisation des boutons du manuel
   ========================================================= */
.manual-category-bar{
 display:flex;
 align-items:center;
 gap:9px;
 overflow-x:auto;
 padding:4px 2px 11px;
 scrollbar-width:thin;
 scroll-snap-type:x proximity;
}
.manual-category-bar button,
.manual-topics button,
.manual-article-button{
 appearance:none;
 -webkit-appearance:none;
 font:inherit;
 color:var(--text, #e8eef6);
 border:1px solid var(--border, rgba(148,163,184,.24));
 background:
  linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.012)),
  var(--panel, #111c27);
 box-shadow:
  0 1px 0 rgba(255,255,255,.035) inset,
  0 5px 14px rgba(0,0,0,.12);
 cursor:pointer;
 transition:
  background .18s ease,
  border-color .18s ease,
  box-shadow .18s ease,
  transform .18s ease,
  color .18s ease;
}
.manual-category-bar button{
 display:inline-flex;
 align-items:center;
 justify-content:center;
 gap:8px;
 min-height:42px;
 padding:9px 14px;
 border-radius:11px;
 white-space:nowrap;
 scroll-snap-align:start;
 font-weight:700;
 letter-spacing:.01em;
}
.manual-category-icon{
 display:inline-grid;
 place-items:center;
 width:22px;
 min-width:22px;
 height:22px;
 font-size:1rem;
 line-height:1;
 filter:saturate(.9);
}
.manual-category-bar button:hover,
.manual-article-button:hover{
 color:#fff;
 border-color:rgba(56,189,248,.48);
 background:
  linear-gradient(180deg,rgba(56,189,248,.13),rgba(56,189,248,.045)),
  var(--panel, #111c27);
 box-shadow:
  0 1px 0 rgba(255,255,255,.06) inset,
  0 8px 20px rgba(0,0,0,.18);
 transform:translateY(-1px);
}
.manual-category-bar button:focus-visible,
.manual-article-button:focus-visible{
 outline:2px solid var(--accent, #38bdf8);
 outline-offset:2px;
}
.manual-category-bar button.active,
.manual-article-button.active{
 color:#fff;
 border-color:rgba(56,189,248,.78);
 background:
  linear-gradient(135deg,rgba(14,165,233,.95),rgba(37,99,235,.92));
 box-shadow:
  0 1px 0 rgba(255,255,255,.18) inset,
  0 8px 22px rgba(14,165,233,.2);
 transform:none;
}
.manual-category-bar button.active .manual-category-icon{
 filter:none;
}
.manual-article-button{
 border-radius:11px;
}
@media(max-width:760px){
 .manual-category-bar{
  margin-inline:-2px;
  padding-bottom:12px;
 }
 .manual-category-bar button{
  min-height:40px;
  padding:8px 12px;
 }
}


/* =========================================================
   Forge3D V11.0.0 — Programme ForgeSpace
   ========================================================= */
.space-mode{display:grid;gap:16px}
.space-hero{min-height:390px;background-size:cover;background-position:center;border:1px solid rgba(56,189,248,.28);border-radius:16px;display:flex;align-items:center;overflow:hidden;box-shadow:0 18px 45px rgba(0,0,0,.28)}
.space-hero-copy{max-width:720px;padding:clamp(24px,5vw,60px)}
.space-hero-copy>span{color:#67d7ff;font-size:.78rem;font-weight:900;letter-spacing:.14em}
.space-hero-copy h1{font-size:clamp(2.4rem,6vw,5rem);margin:.25rem 0 .65rem;text-shadow:0 0 24px rgba(56,189,248,.28)}
.space-hero-copy p{font-size:1.08rem;line-height:1.6}
.space-hero-stats{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
.space-hero-stats b{padding:9px 12px;border:1px solid rgba(103,215,255,.24);border-radius:9px;background:rgba(2,10,22,.7)}
.space-progression{display:grid;grid-template-columns:1fr minmax(220px,420px);align-items:center;gap:22px}
.space-progress-track{height:15px;border-radius:999px;background:rgba(255,255,255,.08);overflow:hidden}
.space-progress-track i{display:block;height:100%;background:linear-gradient(90deg,#0ea5e9,#6366f1,#22c55e)}
.space-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:16px}
.space-section-title{display:flex;justify-content:space-between;align-items:end;gap:14px;margin-bottom:14px}
.space-section-title h2{margin:.15rem 0}.space-section-title small{color:#67d7ff}.space-section-title>span{color:var(--muted)}
.space-material-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.space-material-grid article{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;padding:12px;border:1px solid var(--border);border-radius:11px;background:rgba(255,255,255,.025)}
.space-material-grid article>div small{display:block;color:var(--muted);margin-top:3px}
.space-material-grid article button{grid-column:1/-1}
.space-material-grid article.locked,.space-contract.locked,.space-project.locked{opacity:.52}
.space-contract{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;padding:13px 0;border-bottom:1px solid var(--border)}
.space-contract:last-child{border-bottom:0}.space-contract h3{margin:.15rem 0}.space-contract p{margin:.2rem 0;color:var(--muted)}.space-contract span{font-size:.84rem}
.space-contract.done{opacity:.72}.space-contract.done h3:after{content:" ✓";color:#22c55e}
.space-project-grid{display:grid;grid-template-columns:repeat(3,minmax(220px,1fr));gap:12px}
.space-project{padding:15px;border:1px solid var(--border);border-radius:13px;background:linear-gradient(180deg,rgba(56,189,248,.055),rgba(255,255,255,.018))}
.space-project-icon{font-size:2rem}.space-project h3{margin:.25rem 0}.space-project p{min-height:48px;color:var(--muted);line-height:1.45}
.space-project-resources{display:flex;flex-wrap:wrap;gap:5px;margin:10px 0 13px}
.space-project-resources span{padding:5px 7px;border-radius:7px;background:rgba(255,255,255,.05);font-size:.75rem}
.space-project-resources span.missing{color:#fca5a5;background:rgba(239,68,68,.09)}
.space-project button{width:100%}
.space-levels{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr));gap:8px}
.space-levels div{padding:11px;border:1px solid var(--border);border-radius:10px;background:rgba(255,255,255,.02)}
.space-levels b{display:block;font-size:1.2rem;color:var(--muted)}.space-levels span{font-size:.8rem}
.space-levels div.reached{border-color:rgba(56,189,248,.5);background:rgba(56,189,248,.08)}.space-levels div.reached b{color:#67d7ff}
.space-finale{text-align:center;border-color:rgba(34,197,94,.42);background:linear-gradient(135deg,rgba(34,197,94,.09),rgba(56,189,248,.05))}
.space-locked{text-align:center;padding:60px 20px}.space-lock-level{font-size:2rem;font-weight:900;margin-top:18px;color:#67d7ff}
.space-ending-modal{max-width:760px;text-align:center;background:linear-gradient(145deg,#07111e,#10233a)}
.space-ending-badge{display:inline-block;color:#67d7ff;font-weight:900;letter-spacing:.16em}
.space-ending-modal h1{font-size:clamp(2.3rem,6vw,4.2rem);margin:.3rem 0}
.space-ending-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:22px 0}
.space-ending-stats div{padding:14px;border:1px solid var(--border);border-radius:10px;background:rgba(255,255,255,.035)}
.space-ending-stats small{display:block;color:var(--muted)}.space-ending-stats b{font-size:1.35rem}
.space-ending-note{color:#86efac}
@media(max-width:1000px){.space-project-grid{grid-template-columns:repeat(2,minmax(220px,1fr))}.space-levels{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.space-hero{min-height:340px;background-position:62% center}.space-progression,.space-grid{grid-template-columns:1fr}.space-material-grid{grid-template-columns:1fr}.space-project-grid{grid-template-columns:1fr}.space-levels{grid-template-columns:repeat(2,1fr)}.space-ending-stats{grid-template-columns:repeat(2,1fr)}}


/* =========================================================
   Forge3D V11.1.0 — ForgeSpace production overhaul
   ========================================================= */
.space-storage{background:linear-gradient(135deg,rgba(56,189,248,.07),rgba(99,102,241,.04))}
.space-storage-track,.space-project-big-progress i,.space-project-select i,.space-job-progress i{display:block;height:10px;border-radius:999px;background:rgba(255,255,255,.08);overflow:hidden}
.space-storage-track i,.space-project-big-progress em,.space-project-select em,.space-job-progress em{display:block;height:100%;background:linear-gradient(90deg,#0ea5e9,#6366f1,#22c55e)}
.space-inventory-strip{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.space-inventory-strip span{padding:7px 10px;border:1px solid var(--border);border-radius:9px;background:rgba(0,0,0,.18)}
.space-buy-row{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.space-buy-row button{min-height:48px;line-height:1.15}
.space-workbench{display:grid;grid-template-columns:320px minmax(0,1fr);gap:16px}
.space-project-list{align-self:start;position:sticky;top:12px}
.space-project-select{width:100%;display:grid;grid-template-columns:44px 1fr;gap:10px;text-align:left;padding:11px;margin-bottom:8px;border:1px solid var(--border);border-radius:11px;background:rgba(255,255,255,.025)}
.space-project-select>span{font-size:1.65rem}.space-project-select div{min-width:0}.space-project-select b,.space-project-select small{display:block}.space-project-select small{color:var(--muted);white-space:normal;margin:3px 0 7px}.space-project-select i{height:5px}
.space-project-select.active{border-color:#38bdf8;background:rgba(56,189,248,.11);box-shadow:0 0 0 1px rgba(56,189,248,.15)}
.space-project-select.locked{opacity:.52}
.space-project-detail-head{display:grid;grid-template-columns:1fr 190px;gap:18px;align-items:center}
.space-project-detail-head h2{font-size:1.9rem;margin:.2rem 0}.space-project-detail-head p{color:var(--muted)}
.space-project-big-progress b{display:block;text-align:right;font-size:1.6rem;margin-bottom:7px}
.space-project-resourcebar{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px;margin:16px 0}
.space-resource-chip{display:grid;grid-template-columns:34px 1fr;gap:7px;align-items:center;padding:10px;border:1px solid var(--border);border-radius:10px;background:rgba(255,255,255,.025)}
.space-resource-chip>span{font-size:1.35rem}.space-resource-chip small,.space-resource-chip b{display:block}.space-resource-chip small{color:var(--muted);font-size:.72rem}.space-resource-chip i{display:block;height:5px;margin-top:5px;border-radius:999px;background:rgba(255,255,255,.08);overflow:hidden}.space-resource-chip em{display:block;height:100%;background:#38bdf8}
.space-benefits{display:flex;gap:7px;flex-wrap:wrap;margin:14px 0}.space-benefits h3{width:100%;margin:0 0 3px}.space-benefits span{padding:7px 9px;border-radius:8px;background:rgba(34,197,94,.07);border:1px solid rgba(34,197,94,.18)}
.space-parts{display:grid;gap:10px}
.space-parts article{padding:13px;border:1px solid var(--border);border-radius:12px;background:rgba(255,255,255,.02)}
.space-parts article.running{border-color:rgba(56,189,248,.48);background:rgba(56,189,248,.065)}
.space-parts article.done{border-color:rgba(34,197,94,.34);background:rgba(34,197,94,.05)}
.space-parts article.locked{opacity:.52}
.space-part-main{display:grid;grid-template-columns:36px 1fr;gap:10px}.space-part-number{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:rgba(56,189,248,.14);font-weight:900}
.space-part-main h3{margin:.12rem 0}.space-part-main p{margin:0;color:var(--muted)}.space-part-main small{color:#67d7ff}
.space-part-materials{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}.space-part-materials span{font-size:.76rem;padding:5px 7px;border-radius:7px;background:rgba(255,255,255,.05)}.space-part-materials .missing{color:#fca5a5;background:rgba(239,68,68,.09)}
.space-job-progress{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;margin:10px 0}.space-job-progress b{font-size:.82rem}
.space-parts article>button{width:100%}
.space-contract-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.space-contract-card{padding:14px;border:1px solid var(--border);border-radius:12px;background:rgba(255,255,255,.02)}
.space-contract-card h3{margin:.2rem 0}.space-contract-card p{color:var(--muted)}
.space-contract-reqs{display:grid;gap:4px;margin:12px 0}.space-contract-reqs span{padding:5px 7px;border-radius:7px;background:rgba(255,255,255,.04)}.space-contract-reqs .ok{color:#86efac}.space-contract-reqs .missing{color:#fca5a5}
.space-contract-rewards{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}.space-contract-rewards span{padding:6px 8px;border-radius:8px;background:rgba(56,189,248,.07)}
.space-contract-card button{width:100%}
@media(max-width:1050px){.space-workbench{grid-template-columns:1fr}.space-project-list{position:static}.space-project-list{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.space-project-list .space-section-title{grid-column:1/-1}.space-project-select{margin:0}}
@media(max-width:760px){.space-project-list,.space-contract-grid{grid-template-columns:1fr}.space-project-detail-head{grid-template-columns:1fr}.space-project-big-progress b{text-align:left}.space-buy-row{grid-template-columns:repeat(3,1fr)}}

/* =========================================================
   V11.8 — atelier mobile dédié
   Une imprimante lisible à la fois, navigation tactile.
   ========================================================= */
.mobile-workshop-view{display:none}
@media(max-width:760px){
  .workshop{min-height:auto!important;padding:118px 12px 18px;background-position:center top}
  .workshop-rows{display:none!important}
  .mobile-workshop-view{display:block;position:relative;z-index:8}
  .mobile-carousel-controls{display:grid;grid-template-columns:48px 1fr 48px;align-items:center;gap:8px;margin-bottom:10px}
  .mobile-carousel-controls strong{text-align:center;padding:11px;border-radius:12px;background:rgba(4,14,22,.82);border:1px solid rgba(49,220,214,.35)}
  .mobile-carousel-controls button{height:46px;padding:0;font-size:34px;line-height:1;border-radius:12px;background:rgba(7,24,35,.9)}
  .mobile-printer-track{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;padding:2px 1px 8px}
  .mobile-printer-track::-webkit-scrollbar{display:none}
  .mobile-printer-card{flex:0 0 calc(100% - 2px);scroll-snap-align:center;min-height:500px;border:1px solid rgba(74,225,216,.38);border-radius:18px;background:linear-gradient(180deg,rgba(7,25,36,.94),rgba(4,12,19,.96));padding:14px;display:flex;flex-direction:column;align-items:stretch;text-align:left;overflow:hidden;box-shadow:0 16px 35px rgba(0,0,0,.35)}
  .mobile-printer-card.selected{border-color:#53e6dc;box-shadow:0 0 0 2px rgba(83,230,220,.15),0 16px 35px rgba(0,0,0,.4)}
  .mobile-printer-count{text-align:center;font-weight:900;color:#94f5ee;font-size:14px;margin-bottom:4px}
  .mobile-printer-visual{height:285px!important;width:100%!important;display:flex!important;align-items:center!important;justify-content:center!important;position:relative!important}
  .mobile-printer-visual>img{width:100%!important;height:100%!important;max-width:310px!important;object-fit:contain!important}
  .mobile-printer-info{padding:4px 4px 0;text-align:center}
  .mobile-printer-info h3{font-size:24px;margin:0 0 2px}
  .mobile-model{margin:0 0 10px;color:var(--muted)}
  .mobile-job{margin:8px 0;padding:10px;border-radius:10px;background:rgba(255,255,255,.06);font-weight:800;white-space:normal;overflow-wrap:anywhere}
  .mobile-job.active{color:#8ff6ef;background:rgba(36,211,198,.12)}
  .mobile-progress{position:relative;height:20px;border-radius:999px;background:#142631;overflow:hidden;margin:12px 0}
  .mobile-progress i{display:block;height:100%;background:linear-gradient(90deg,#28e0d4,#7df04c);transition:width 1s linear}
  .mobile-progress span{position:absolute;inset:0;display:grid;place-items:center;font-size:11px;font-weight:900;color:#041817}
  .mobile-printer-meta{display:grid;grid-template-columns:1fr 1fr 1fr;gap:7px;margin-top:12px}
  .mobile-printer-meta span{padding:9px 5px;border-radius:10px;background:rgba(255,255,255,.055);font-size:12px;text-align:center}
  .mobile-swipe-hint{text-align:center;color:var(--muted);font-size:12px;margin:2px 0 12px}
  .mobile-printer-list{border:1px solid var(--line);border-radius:14px;background:rgba(4,14,22,.9);overflow:hidden}
  .mobile-printer-list summary{cursor:pointer;padding:14px;text-align:center;font-weight:900;list-style:none}
  .mobile-printer-list summary::-webkit-details-marker{display:none}
  .mobile-printer-list-row{width:100%;display:grid;grid-template-columns:12px 1fr auto;gap:10px;align-items:center;text-align:left;border:0;border-top:1px solid rgba(255,255,255,.07);border-radius:0;padding:12px;background:transparent}
  .mobile-printer-list-row span:nth-child(2){display:grid;gap:2px;min-width:0}
  .mobile-printer-list-row b,.mobile-printer-list-row small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .mobile-printer-list-row small{color:var(--muted)}
  .mobile-printer-list-row em{font-style:normal;font-size:11px;color:#9fe8e2}
  .mobile-list-status{width:10px;height:10px;border-radius:50%}
  .mobile-list-status.free{background:#68df67;box-shadow:0 0 9px #68df67}
  .mobile-list-status.busy{background:#ffb84c;box-shadow:0 0 9px #ffb84c}
  .workshop-title{top:12px;left:12px;right:12px}
}

/* V11.9.0 language selector */
.language-selector{display:grid;gap:6px;padding:10px 12px;border:1px solid rgba(148,163,184,.22);border-radius:12px;background:rgba(2,8,15,.45);color:#a9b8c7;font-weight:800}
.language-selector span{font-size:11px;letter-spacing:.08em;text-transform:uppercase}
.language-selector select{width:100%;padding:10px 34px 10px 11px;border-radius:9px;border:1px solid rgba(32,211,190,.55);background:#0b2630;color:#fff;font:inherit;font-weight:800;cursor:pointer;appearance:auto}
.language-selector select:focus{outline:2px solid rgba(32,211,190,.35);outline-offset:2px}
.auth-language{position:static;width:min(230px,100%);margin:0 0 18px auto}
.auth-card{position:relative}
.sidebar-language{margin:10px 10px 4px}
@media(max-width:760px){.auth-language{width:100%;margin:0 0 18px}.sidebar-language{margin:10px 8px}.language-selector select{font-size:13px}}

/* V12.1.0 — language dropdown and uppercase navigation */
.nav button[data-menu-key], .mobile-menu-trigger, .mobile-menu-close { text-transform: uppercase; letter-spacing: .035em; }

/* V15.4 — multi-upgrade printer modal */
.upgrade-modal{width:min(1120px,96vw)}
.upgrade-modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}
.upgrade-modal-head p{margin:.35rem 0 0;color:var(--muted)}
.modal-close{font-size:24px;line-height:1;min-width:42px}
.upgrade-bulk-actions{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px}
.upgrade-choice{position:relative;display:flex;flex-direction:column;min-height:300px;transition:border-color .15s,background .15s}
.upgrade-choice.selected{border-color:var(--cyan);background:rgba(24,205,201,.08)}
.upgrade-choice.maxed{opacity:.72}
.upgrade-select{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:.9rem;color:var(--muted);cursor:pointer}
.upgrade-select input{width:18px;height:18px;accent-color:var(--cyan)}
.upgrade-level-picker{display:grid;grid-template-columns:42px 1fr 42px;gap:8px;align-items:center;margin-top:auto}
.upgrade-level-picker strong{text-align:center;border:1px solid var(--line);border-radius:9px;padding:10px 4px;background:#0a1420}
.upgrade-level-picker button{padding:10px 0}
.upgrade-item-cost{display:block;text-align:center;margin-top:8px;color:var(--cyan);font-weight:700}
.upgrade-max-label{margin-top:auto;border:1px solid var(--line);border-radius:9px;padding:12px;text-align:center;font-weight:800}
.upgrade-checkout{position:sticky;bottom:-22px;display:grid;grid-template-columns:auto auto minmax(240px,1fr);align-items:center;gap:18px;margin:18px -22px -22px;padding:16px 22px;background:#0a1420;border-top:1px solid var(--line);z-index:2}
.upgrade-checkout div{display:flex;flex-direction:column}.upgrade-checkout small{color:var(--muted)}.upgrade-checkout b{font-size:1.25rem}
@media(max-width:700px){.upgrade-checkout{grid-template-columns:1fr 1fr}.upgrade-checkout button{grid-column:1/-1}.upgrade-choice{min-height:0}.upgrade-grid{grid-template-columns:1fr}}

.support-card{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}
.support-card>div{max-width:720px}.support-card h2{margin:.35rem 0}.support-card p{margin:0;color:var(--muted,#9fb0c2)}
.support-button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:12px 20px;border-radius:12px;background:linear-gradient(180deg,#34d7d0,#18a9a5);color:#07181b;text-decoration:none;font-weight:800}
.support-button:hover{filter:brightness(1.08)}

/* V17 support shortcut */
.coffee-menu-button{width:100%;margin:.35rem 0;padding:.8rem 1rem;border:1px solid rgba(255,190,80,.45);background:linear-gradient(135deg,rgba(255,183,77,.18),rgba(255,130,40,.08));font-weight:800;text-align:left}
.coffee-menu-button:hover{transform:translateY(-1px);border-color:rgba(255,190,80,.8)}
.coffee-modal{text-align:center;max-width:520px}
.coffee-icon{font-size:4rem;margin-bottom:.3rem}
.coffee-modal p{line-height:1.65}
.coffee-thanks{font-weight:800}
.coffee-paypal{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}

/* V17.1 energy flow monitor */
.energy-flow-summary{display:flex;gap:22px;align-items:stretch;justify-content:space-between}
.energy-flow-source{min-width:240px;display:flex;flex-direction:column;justify-content:center;padding:8px 14px;border-left:4px solid var(--accent,#36d399)}
.energy-flow-source h2{margin:.35rem 0 0;font-size:1.75rem}
.energy-flow-values{display:grid;grid-template-columns:repeat(5,minmax(125px,1fr));gap:10px;flex:1}
.energy-flow-values span{background:rgba(255,255,255,.035);border-radius:12px;padding:13px;display:flex;flex-direction:column;gap:6px}
.energy-flow-values small{opacity:.72}.energy-flow-values b{font-size:1.05rem}
@media(max-width:1000px){.energy-flow-summary{flex-direction:column}.energy-flow-values{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.energy-flow-values{grid-template-columns:1fr}}

/* V18 developer energy simulator */
.dev-energy-debug{margin-top:14px;padding:12px 14px;border:1px solid rgba(80,220,160,.35);border-radius:12px;background:rgba(4,18,24,.45)}
.dev-energy-debug p{margin:8px 0;line-height:1.55}.dev-energy-debug small{opacity:.78}
.dev-console h4{margin:14px 0 8px}


/* V18.1.5 — rendement solaire lisible et navigation indépendante */
@media(min-width:901px){
 .nav{
  position:sticky;
  top:10px;
  align-self:start;
  height:calc(100vh - 20px);
  min-height:0;
  overflow-y:auto;
  overflow-x:hidden;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
 }
}
.solar-efficiency-overview{display:grid;gap:10px;margin:14px 0;padding:13px;border:1px solid var(--line);border-radius:12px;background:rgba(3,12,19,.55)}
.solar-efficiency-copy{display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap}
.solar-efficiency-copy span{display:grid;gap:3px}.solar-efficiency-copy small{color:var(--muted)}.solar-efficiency-copy b{font-size:18px}
.solar-efficiency-track{position:relative;height:24px;overflow:hidden;border-radius:999px;background:#142633;border:1px solid rgba(255,255,255,.08)}
.solar-efficiency-track i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#ffc94a,#ffe889);transition:width .5s linear}
.solar-efficiency-track strong{position:absolute;inset:0;display:grid;place-items:center;font-size:12px;color:#fff;text-shadow:0 1px 3px #000}
@media(max-width:900px){.nav{height:auto;max-height:none;overflow-y:hidden}.solar-efficiency-copy{display:grid;grid-template-columns:1fr 1fr}}
@media(max-width:520px){.solar-efficiency-copy{grid-template-columns:1fr}}


/* V18.1.6 — navigation mobile, generator details and staff specialties */
@media(max-width:900px){
 .nav{
  height:100dvh!important;
  max-height:100dvh!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior-y:contain;
  touch-action:pan-y;
  -webkit-overflow-scrolling:touch;
 }
}
.generator-output-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:12px}
.generator-output-grid>div{display:grid;gap:5px;padding:13px;border:1px solid var(--line);border-radius:11px;background:rgba(255,255,255,.035)}
.generator-output-grid small{color:var(--muted)}.generator-output-grid b{font-size:1.08rem}
.employee-specialty-list{display:grid;gap:18px}
.employee-specialty-group{display:grid;gap:12px;padding:14px;border:1px solid rgba(255,255,255,.08);border-radius:14px;background:rgba(2,10,17,.34)}
.employee-specialty-heading{display:flex;align-items:center;gap:11px;padding-bottom:10px;border-bottom:1px solid rgba(255,255,255,.08)}
.employee-specialty-heading>span{font-size:28px}.employee-specialty-heading>div{flex:1}.employee-specialty-heading small{color:var(--muted)}.employee-specialty-heading h3{margin:2px 0 0}.employee-specialty-heading>b{min-width:34px;text-align:center;padding:7px;border-radius:999px;background:rgba(32,211,190,.12);color:var(--cyan)}
@media(max-width:850px){.generator-output-grid{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.generator-output-grid{grid-template-columns:1fr}}

/* V18.1.7 — balanced Top 50 leaderboard and score breakdown */
.leaderboard-score-details{display:grid;gap:14px}.leaderboard-score-title{display:flex;justify-content:space-between;align-items:end;gap:16px}.leaderboard-score-title h2{margin:3px 0 0}.leaderboard-score-title>b{font-size:24px;color:#55eadf}.score-breakdown-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.score-breakdown-grid>div{display:flex;justify-content:space-between;gap:12px;padding:11px 13px;border:1px solid var(--line);border-radius:12px;background:#0b1b25}.score-breakdown-grid span{color:var(--muted)}.score-formula-note{margin:0;color:var(--muted);font-size:13px}@media(max-width:700px){.score-breakdown-grid{grid-template-columns:1fr}.leaderboard-score-title{align-items:start;flex-direction:column}}


/* V18.1.9 — corrected workshop score for every workshop level */
.leaderboard-table-compact{min-width:680px}
.leaderboard-table-compact th:last-child,.leaderboard-table-compact td:last-child{text-align:right}
.leaderboard-details-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:36px;padding:8px 12px;border:1px solid rgba(49,222,213,.38);border-radius:10px;background:#102b36;color:var(--text);font-weight:800}
.leaderboard-details-button:hover{border-color:#31ded5;background:#163944}
.podium-card .leaderboard-details-button{margin:12px auto 0}
.leaderboard-company-heading{display:flex;align-items:center;gap:14px;padding-right:38px}
.leaderboard-company-heading img{width:66px;height:66px;object-fit:cover;border-radius:16px;border:1px solid var(--line)}
.leaderboard-company-heading h2{margin:3px 0}.leaderboard-company-heading p{margin:0;color:var(--muted)}
.leaderboard-details-modal{width:min(760px,calc(100vw - 28px));max-height:90vh;overflow:auto}
.leaderboard-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:18px}
.leaderboard-detail-grid>div{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 13px;border:1px solid var(--line);border-radius:12px;background:#0b1b25}
.leaderboard-detail-grid span,.leaderboard-breakdown h3{color:var(--muted)}
.leaderboard-breakdown{margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}
.leaderboard-breakdown h3{margin:0 0 10px;font-size:14px;text-transform:uppercase;letter-spacing:.06em}
.leaderboard-total{display:flex;justify-content:space-between;align-items:center;margin-top:12px;padding:14px 15px;border-radius:12px;background:#123441;border:1px solid rgba(49,222,213,.45)}
.leaderboard-total b{font-size:21px;color:#55eadf}
@media(max-width:700px){
 .leaderboard-table-wrap{overflow:visible}.leaderboard-table-wrap .table-scroll{overflow:visible}
 .leaderboard-table-compact{min-width:0;display:block}.leaderboard-table-compact thead{display:none}.leaderboard-table-compact tbody{display:grid;gap:9px}
 .leaderboard-table-compact tr{display:grid;grid-template-columns:56px minmax(0,1fr) auto;gap:5px 10px;padding:12px;border:1px solid var(--line);border-radius:13px;background:#0b1b25}
 .leaderboard-table-compact td{padding:0;border:0;white-space:normal}
 .leaderboard-table-compact td:nth-child(1){grid-row:1/3;grid-column:1;align-self:center;font-size:18px}
 .leaderboard-table-compact td:nth-child(2){grid-column:2}.leaderboard-table-compact td:nth-child(3){grid-column:2;color:var(--muted);font-size:13px}
 .leaderboard-table-compact td:nth-child(4){grid-column:3;grid-row:1}.leaderboard-table-compact td:nth-child(4)::before{content:"Nv. ";color:var(--muted)}
 .leaderboard-table-compact td:nth-child(5){grid-column:2;grid-row:3}.leaderboard-table-compact td:nth-child(6){grid-column:3;grid-row:2/4;align-self:end;text-align:right;font-size:15px}
 .leader-company img{width:30px;height:30px}.leaderboard-details-button.compact span{display:none}.leaderboard-details-button.compact{width:38px;min-height:34px;padding:6px}
 .leaderboard-detail-grid,.score-breakdown-grid{grid-template-columns:1fr}.leaderboard-details-modal{padding:18px}.leaderboard-company-heading img{width:54px;height:54px}
}

/* V18.2.0 — endgame R&D point conversion to player XP */
.rd-xp-conversion{display:flex;align-items:center;justify-content:space-between;gap:22px;border:2px solid rgba(80,221,209,.68);background:linear-gradient(135deg,rgba(17,70,82,.97),rgba(9,24,34,.98));box-shadow:0 0 0 1px rgba(80,221,209,.12),0 16px 40px rgba(0,0,0,.3);position:relative;overflow:hidden}.rd-xp-conversion:before{content:"";position:absolute;inset:0 auto 0 0;width:5px;background:#67e7dd}.rd-xp-conversion>*{position:relative;z-index:1}
.rd-xp-conversion-copy{max-width:820px}.rd-xp-conversion-copy>small{color:#67e7dd;font-weight:800;letter-spacing:.12em}.rd-xp-conversion-copy h2{margin:5px 0 8px}.rd-xp-conversion-copy p{margin:0;color:var(--muted);line-height:1.55}
.rd-xp-conversion-values{display:flex;align-items:center;gap:16px;margin-top:16px}.rd-xp-conversion-values span{display:grid;gap:3px;padding:11px 14px;border:1px solid var(--line);border-radius:12px;background:rgba(5,17,24,.58)}.rd-xp-conversion-values small{color:var(--muted)}.rd-xp-conversion-values i{font-size:24px;color:#64e4da;font-style:normal}.rd-xp-conversion-button{min-width:190px;padding:15px 18px;font-weight:800}
.rd-xp-conversion-modal{text-align:center;max-width:610px}.rd-conversion-icon{font-size:52px;margin-bottom:4px}.rd-xp-conversion-modal>small{color:#67e7dd;font-weight:800;letter-spacing:.12em}.rd-xp-conversion-modal h2{margin:7px 0}.rd-xp-conversion-modal .modal-values{justify-content:center;margin:20px 0}.rd-conversion-balance,.rd-conversion-note{color:var(--muted)}
@media(max-width:760px){.rd-xp-conversion{align-items:stretch;flex-direction:column}.rd-xp-conversion-button{width:100%}.rd-xp-conversion-values{align-items:stretch;flex-direction:column}.rd-xp-conversion-values i{transform:rotate(90deg);align-self:center}.rd-xp-conversion-values span{text-align:center}}


/* V18.2.2 — tablet-safe order printer picker */
.order-printer-picker-button{display:none;width:100%;grid-template-columns:auto 1fr auto;align-items:center;gap:9px;text-align:left;padding:11px 12px;background:#0a1a25;border:1px solid var(--line);border-radius:10px}
.order-printer-picker-button b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.order-printer-picker-button em{font-style:normal;color:var(--cyan);font-size:12px;white-space:nowrap}
.order-printer-modal{width:min(680px,96vw);max-height:min(86dvh,780px);display:flex;flex-direction:column;overflow:hidden}
.order-printer-modal>p{margin-top:2px;color:var(--muted)}
.order-printer-list{display:grid;gap:7px;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:3px 4px 10px;min-height:0}
.order-printer-choice{width:100%;display:grid;grid-template-columns:34px minmax(0,1fr) 28px;align-items:center;gap:10px;padding:11px;border:1px solid var(--line);border-radius:11px;background:#091722;text-align:left}
.order-printer-choice.selected{border-color:var(--cyan);box-shadow:inset 0 0 0 1px rgba(43,222,212,.25)}
.order-printer-choice.busy{opacity:.58}
.order-printer-index{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:#142733;font-weight:900}
.order-printer-copy{min-width:0;display:grid;gap:3px}
.order-printer-copy b,.order-printer-copy small,.order-printer-copy em{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.order-printer-copy small{color:var(--muted)}
.order-printer-copy em{color:#f2b56d;font-size:11px;font-style:normal}
.order-printer-state{text-align:center;font-weight:900;color:var(--cyan)}
.empty-order-printers{padding:20px;text-align:center;color:var(--muted)}

/* Tablets and narrow desktop windows use the complete custom list instead of
   the operating-system select, whose popup can visually stop after 10 rows. */
@media(max-width:1180px),(pointer:coarse){
  .order-printer-native{display:none!important}
  .order-printer-picker-button{display:grid}
  .content{min-width:0}
  .cards{grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}
  .card{min-width:0}
  .modal{max-width:calc(100vw - 24px)}
}

/* Galaxy Tab / Android tablet viewport safeguards. */
@media (min-width:700px) and (max-width:1280px){
  .layout{grid-template-columns:minmax(190px,230px) minmax(0,1fr)}
  .content{padding-left:14px;padding-right:14px}
  .top{max-width:100vw;overflow:hidden}
  .strip{min-width:0;overflow-x:auto;overscroll-behavior-x:contain}
  .head{gap:12px;min-width:0}
  .head>div:first-child{min-width:0}
  .head h1{overflow-wrap:anywhere}
}
@media (orientation:portrait) and (min-width:700px) and (max-width:1000px){
  .layout{grid-template-columns:1fr}
  .mobile-menu-trigger{display:block}
  .nav{position:fixed!important;inset:0 auto 0 0;width:min(86vw,340px);z-index:1000;transform:translateX(-105%);transition:transform .22s ease;overflow-y:auto!important;-webkit-overflow-scrolling:touch}
  .nav.mobile-open{transform:translateX(0)}
  .content{width:100%;padding:12px}
}

/* =========================================================
   V18.2.8 — robust menu on phones using desktop mode
   ========================================================= */
@media (pointer:coarse) and (max-width:1180px),
       (orientation:portrait) and (max-width:1000px){
  body.mobile-menu-open{overflow:hidden;touch-action:none}
  .layout{display:block!important;grid-template-columns:1fr!important}
  .mobile-menu-trigger{
    display:flex!important;
    position:sticky;
    top:max(8px,env(safe-area-inset-top));
    z-index:950;
    width:max-content;
    min-width:132px;
    min-height:50px;
    margin:8px 12px 10px;
    padding:0 18px;
    align-items:center;
    justify-content:center;
    gap:10px;
    border:1px solid rgba(85,235,226,.7);
    border-radius:14px;
    background:linear-gradient(135deg,rgba(7,31,43,.98),rgba(12,54,66,.98));
    color:#f5ffff;
    font-size:15px;
    font-weight:900;
    box-shadow:0 10px 26px rgba(0,0,0,.38),inset 0 1px rgba(255,255,255,.08);
    pointer-events:auto!important;
    touch-action:manipulation;
    -webkit-tap-highlight-color:transparent;
  }
  .mobile-menu-trigger span{font-size:23px;line-height:1}
  .mobile-menu-trigger:active{transform:scale(.97)}
  .nav{
    display:grid!important;
    position:fixed!important;
    inset:0 auto 0 0!important;
    z-index:1100!important;
    width:min(88vw,360px)!important;
    max-width:360px!important;
    min-height:100dvh!important;
    padding:74px 16px max(24px,env(safe-area-inset-bottom))!important;
    overflow-y:auto!important;
    transform:translateX(-105%);
    visibility:hidden;
    pointer-events:none;
    transition:transform .22s ease,visibility 0s linear .22s;
    background:radial-gradient(circle at top right,rgba(44,218,214,.17),transparent 34%),linear-gradient(180deg,#07131d,#091824 55%,#061019)!important;
    box-shadow:18px 0 45px rgba(0,0,0,.48)!important;
  }
  .nav.mobile-open{
    transform:translateX(0)!important;
    visibility:visible;
    pointer-events:auto;
    transition:transform .22s ease;
  }
  .nav .mobile-menu-close{display:flex!important}
  .content{width:100%!important;min-width:0!important}
}

.order-printer-picker-button.has-selection{
  border-color:rgba(89,231,157,.72);
  box-shadow:inset 0 0 0 1px rgba(89,231,157,.14);
}
.order-printer-picker-button.has-selection em{color:#7ff0b4}

/* V18.3.0 — one unified order-printer picker on mobile and desktop.
   The native desktop select is intentionally retired so both layouts use the
   same availability filtering, automatic assignment and launch validation. */
.order-printer-native{display:none!important}
.order-printer-picker-button{display:grid!important;min-height:62px;padding:13px 16px;border-radius:13px;background:linear-gradient(180deg,#18c965,#13994c);border-color:rgba(87,239,153,.72);color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.06)}
.order-printer-picker-button:hover{filter:brightness(1.05)}
.order-printer-picker-button:focus-visible{outline:3px solid rgba(75,222,212,.42);outline-offset:2px}
.order-printer-picker-button>span{font-size:20px}
.order-printer-picker-button b{font-size:16px;color:#fff}
.order-printer-picker-button em{color:#d8ffe8;font-weight:800}
@media(min-width:1181px) and (pointer:fine){
  .order-printer-picker-button{grid-template-columns:auto minmax(0,1fr) auto}
}


/* V18.4.0 — public bilingual landing page */
.landing-page{min-height:100vh;background:radial-gradient(circle at 75% 5%,rgba(32,228,216,.13),transparent 28%),radial-gradient(circle at 10% 35%,rgba(168,109,255,.09),transparent 30%),#040910;color:var(--text)}
.landing-nav{height:82px;display:flex;align-items:center;justify-content:space-between;gap:24px;max-width:1240px;margin:auto;padding:0 28px;border-bottom:1px solid rgba(139,172,198,.14)}
.landing-brand{display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none}.landing-brand img{width:42px;height:42px}.landing-brand strong{font-size:22px;letter-spacing:.04em}.landing-brand span{color:var(--cyan)}
.landing-nav nav{display:flex;align-items:center;gap:10px}.landing-nav .language-selector{margin:0}.landing-nav .language-selector span{display:none}.landing-nav .language-selector select{background:#09131e;color:#fff;border:1px solid var(--line);border-radius:10px;padding:10px}
.landing-primary,.landing-login{border-radius:11px;padding:12px 18px;font-weight:850;cursor:pointer}.landing-primary{border:0;background:linear-gradient(135deg,var(--cyan),#52f08e);color:#021316;box-shadow:0 10px 30px rgba(32,228,216,.16)}.landing-login{border:1px solid var(--line);background:#09131e;color:#fff}
.landing-hero{max-width:1240px;margin:auto;padding:78px 28px 90px;display:grid;grid-template-columns:1.02fr .98fr;align-items:center;gap:68px}.landing-copy>small,.landing-section-head>small,.landing-showcase small{color:var(--cyan);font-weight:900;letter-spacing:.18em}.landing-copy h1{font-size:clamp(48px,6vw,82px);line-height:.98;margin:18px 0 24px;max-width:760px}.landing-copy>p{font-size:19px;line-height:1.7;color:#a9bbc8;max-width:680px}.landing-actions{display:flex;align-items:center;gap:20px;margin-top:34px}.landing-actions a{color:#dff9f7;text-decoration:none;font-weight:800}.landing-social{display:flex;gap:18px;margin-top:28px}.landing-social a{color:#91a5b7;text-decoration:none}.landing-social a:hover{color:#fff}
.landing-visual{position:relative;border-radius:24px;overflow:hidden;border:1px solid var(--line);box-shadow:0 35px 100px rgba(0,0,0,.45);transform:perspective(900px) rotateY(-3deg)}.landing-visual:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(2,8,12,.9))}.landing-visual>img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}.landing-visual>div{position:absolute;z-index:2;left:22px;bottom:20px;display:grid;gap:4px}.landing-visual b{font-size:22px}.landing-visual span{color:var(--green)}
.landing-section{max-width:1240px;margin:auto;padding:86px 28px}.landing-section-head{text-align:center;max-width:760px;margin:0 auto 42px}.landing-section-head h2{font-size:clamp(34px,4vw,54px);margin:14px 0}.landing-section-head p{color:var(--muted);font-size:18px;line-height:1.65}.landing-feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.landing-feature-grid article{border:1px solid var(--line);border-radius:18px;padding:26px;background:linear-gradient(180deg,rgba(14,28,42,.9),rgba(5,13,21,.95));min-height:220px}.landing-feature-grid article>span{font-size:32px}.landing-feature-grid h3{font-size:21px;margin:20px 0 10px}.landing-feature-grid p{color:var(--muted);line-height:1.6;margin:0}
.landing-showcase{max-width:1184px;margin:20px auto 100px;border:1px solid var(--line);border-radius:24px;overflow:hidden;display:grid;grid-template-columns:1fr 1fr;background:#09131e}.landing-showcase>img{width:100%;height:100%;min-height:380px;object-fit:cover}.landing-showcase>div{padding:52px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start}.landing-showcase h2{font-size:40px;line-height:1.1;margin:16px 0}.landing-showcase p{color:var(--muted);font-size:18px;line-height:1.6}.landing-showcase button{margin-top:14px}
.landing-footer{border-top:1px solid var(--line);max-width:1240px;margin:auto;padding:30px 28px 40px;display:flex;align-items:center;justify-content:space-between;gap:20px;color:var(--muted)}.landing-footer .landing-brand img{width:32px;height:32px}.landing-footer .landing-brand strong{font-size:18px}.landing-footer>div:last-child{display:flex;gap:18px}.landing-footer a{color:#c8d8e2;text-decoration:none}
.auth-home{position:absolute;left:18px;top:18px;border:0;background:transparent;color:var(--muted);cursor:pointer}.auth-card{position:relative}
@media(max-width:900px){.landing-hero{grid-template-columns:1fr;padding-top:52px;gap:42px}.landing-visual{transform:none}.landing-feature-grid{grid-template-columns:repeat(2,1fr)}.landing-showcase{margin-left:20px;margin-right:20px;grid-template-columns:1fr}.landing-showcase>img{min-height:270px}.landing-footer{flex-wrap:wrap}}
@media(max-width:620px){.landing-nav{height:auto;padding:16px 18px;align-items:flex-start}.landing-nav nav{flex-wrap:wrap;justify-content:flex-end}.landing-nav .landing-primary{display:none}.landing-brand strong{font-size:18px}.landing-brand img{width:36px;height:36px}.landing-hero{padding:48px 18px 70px}.landing-copy h1{font-size:46px}.landing-copy>p{font-size:17px}.landing-actions{align-items:flex-start;flex-direction:column}.landing-social{flex-direction:column;gap:10px}.landing-section{padding:68px 18px}.landing-feature-grid{grid-template-columns:1fr}.landing-showcase>div{padding:34px 24px}.landing-showcase h2{font-size:34px}.landing-footer{padding:28px 18px;align-items:flex-start;flex-direction:column}}


/* V18.4.1 — landing hierarchy, support visibility and compact auth navigation */
.landing-game-title{margin:14px 0 10px;font-size:clamp(64px,9vw,126px);line-height:.86;font-weight:1000;letter-spacing:-.055em;color:#f1f8ff;text-shadow:0 12px 38px rgba(0,0,0,.28)}
.landing-game-title span{color:var(--cyan)}
.landing-copy h1{font-size:clamp(36px,4.5vw,64px);line-height:1.02;margin:18px 0 22px;max-width:820px}
.landing-copy>small{font-size:13px}
.landing-actions .landing-login{padding:13px 22px}
.landing-support{max-width:1240px;margin:0 auto;padding:20px 28px 86px;display:grid;grid-template-columns:1.15fr .85fr;gap:20px}
.landing-support article{display:grid;grid-template-columns:auto 1fr;gap:22px;align-items:start;border:1px solid var(--line);border-radius:24px;padding:32px;background:linear-gradient(180deg,rgba(14,28,42,.96),rgba(5,13,21,.98))}
.landing-support .support-coffee{border-color:rgba(32,211,190,.38);background:radial-gradient(circle at 0 0,rgba(32,211,190,.15),transparent 44%),linear-gradient(180deg,rgba(14,28,42,.96),rgba(5,13,21,.98))}
.landing-support .support-tiktok{border-color:rgba(255,79,154,.34);background:radial-gradient(circle at 100% 0,rgba(255,79,154,.13),transparent 45%),linear-gradient(180deg,rgba(14,28,42,.96),rgba(5,13,21,.98))}
.support-icon{font-size:42px;line-height:1}
.landing-support small{font-weight:900;letter-spacing:.18em;color:var(--cyan)}
.landing-support h2{font-size:clamp(27px,3vw,40px);margin:8px 0 12px}
.landing-support p{color:#b4c5d2;line-height:1.72;margin:0 0 24px;max-width:680px}
.landing-support a{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;font-weight:900}
.landing-tiktok-button{padding:13px 20px;border-radius:12px;background:linear-gradient(135deg,#ff4f9a,#20d3be);color:#041015;box-shadow:0 12px 28px rgba(255,79,154,.18)}
.auth-home{position:absolute;left:18px;top:18px;z-index:3;width:auto!important;min-height:0!important;padding:8px 11px!important;border:1px solid rgba(255,255,255,.12)!important;border-radius:9px!important;background:rgba(5,14,22,.72)!important;color:#b8c9d5!important;font-size:13px!important;font-weight:800!important;box-shadow:none!important}
.auth-home:hover{color:#fff!important;border-color:var(--cyan)!important;background:rgba(10,28,37,.92)!important}
@media(max-width:900px){.landing-support{grid-template-columns:1fr}.landing-game-title{font-size:clamp(62px,16vw,100px)}}
@media(max-width:620px){.landing-game-title{font-size:clamp(56px,19vw,84px)}.landing-copy h1{font-size:38px}.landing-support{padding:10px 18px 68px}.landing-support article{grid-template-columns:1fr;padding:25px}.support-icon{font-size:36px}.auth-card{padding-top:72px!important}.auth-home{left:14px;top:14px}}


/* V18.4.3 — harmonious landing hierarchy and lightweight live printer demo */
.landing-category{margin:20px 0 8px!important;color:var(--cyan)!important;font-size:14px!important;font-weight:900;letter-spacing:.13em;text-transform:uppercase;line-height:1.45!important}
.landing-copy h1{margin-top:14px}
.landing-section-head>small{font-size:13px}
.landing-printer-demo{min-height:480px;background:#071018;isolation:isolate;transform:none}
.landing-printer-demo:after{background:linear-gradient(180deg,rgba(2,8,12,.08),rgba(2,8,12,.64))}
.landing-workshop-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.58;filter:saturate(.82) contrast(1.05)}
.printer-demo-card{position:relative;z-index:3;width:min(330px,calc(100% - 34px));margin:auto;padding:18px;border:1px solid rgba(117,231,224,.42);border-radius:20px;background:rgba(3,12,19,.88);backdrop-filter:blur(8px);box-shadow:0 24px 60px rgba(0,0,0,.42)}
.printer-demo-head{display:grid;grid-template-columns:auto 1fr auto;gap:11px;align-items:center}.printer-demo-head>span{font-size:28px}.printer-demo-head div{display:grid;gap:3px;min-width:0}.printer-demo-head b{font-size:16px}.printer-demo-head small{color:#9db1c0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.printer-demo-percent{color:var(--cyan);font-size:18px}
.printer-demo-progress{height:12px;margin:15px 0 18px;border:1px solid rgba(77,225,210,.55);border-radius:999px;background:#0b2630;overflow:hidden}.printer-demo-progress i{display:block;width:24%;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--cyan),#63f08e);animation:landingPrintProgress 18s linear infinite}
.printer-machine{position:relative;width:210px;height:220px;margin:0 auto 16px;border:8px solid #77919d;border-top-width:10px;border-radius:18px 18px 10px 10px;background:linear-gradient(180deg,rgba(12,37,47,.88),rgba(4,15,22,.96));box-shadow:inset 0 0 0 5px #213844,0 0 28px rgba(32,211,190,.15)}
.printer-gantry{position:absolute;left:22px;right:22px;top:38px;height:7px;border-radius:8px;background:#90a8b1}.printer-head{position:absolute;top:23px;left:34px;width:42px;height:36px;border-radius:10px;background:linear-gradient(180deg,#dcffff,#7fb5bb);box-shadow:0 0 20px rgba(177,255,249,.5);animation:landingPrinterHead 3.4s ease-in-out infinite alternate}.printer-head:after{content:"";position:absolute;left:17px;bottom:-14px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:16px solid #97c8ca}.printer-bed{position:absolute;left:20px;right:20px;bottom:31px;height:13px;border-radius:4px;background:#8196a0;box-shadow:0 6px 0 #273e49}.printer-part{position:absolute;left:68px;bottom:44px;width:72px;height:0;border-radius:5px 5px 2px 2px;background:linear-gradient(90deg,#41d980,#71f04f);box-shadow:0 0 12px rgba(90,240,110,.35);animation:landingPrintedPart 18s linear infinite}
.printer-demo-foot{display:flex;justify-content:space-between;gap:12px;align-items:end}.printer-demo-foot span{color:#67eb94;font-weight:850}.printer-demo-foot small{color:#9db1c0;text-align:right}.printer-demo-time{color:#fff}
@keyframes landingPrinterHead{from{transform:translateX(0)}to{transform:translateX(100px)}}
@keyframes landingPrintedPart{0%{height:4px}90%,100%{height:72px}}
@keyframes landingPrintProgress{0%{width:8%}90%{width:100%}100%{width:8%}}
@media(prefers-reduced-motion:reduce){.printer-demo-progress i,.printer-head,.printer-part{animation:none}.printer-demo-progress i{width:72%}.printer-part{height:48px}}
@media(max-width:620px){.landing-category{font-size:12px!important;letter-spacing:.09em}.landing-printer-demo{min-height:420px}.printer-demo-card{transform:scale(.9)}}

.error-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:14px;padding:28px;background:#040910}.error-page img{width:86px}.error-page h1{font-size:clamp(72px,16vw,150px);margin:0;color:var(--cyan)}.error-page h2{margin:0}.error-page p{color:var(--muted);line-height:1.7}.error-page a{text-decoration:none;margin-top:12px}


/* V18.4.3 — clearer workshop backdrop and simplified feature heading */
.landing-section-head>small{display:none!important}
.landing-workshop-bg{opacity:.78;filter:saturate(.92) contrast(1.04) brightness(.9)}
.landing-printer-demo:after{background:linear-gradient(90deg,rgba(2,8,12,.10),rgba(2,8,12,.22) 55%,rgba(2,8,12,.08))}
.printer-demo-card{width:min(300px,calc(100% - 38px));padding:16px;background:rgba(3,12,19,.74);backdrop-filter:blur(4px);box-shadow:0 18px 44px rgba(0,0,0,.34)}
.printer-machine{width:190px;height:200px}
@media(max-width:620px){.landing-workshop-bg{opacity:.72}.printer-demo-card{width:min(292px,calc(100% - 28px))}}

/* V18.4.6 — partenariat Atome3D et commandes industrielles */
.supplier-compare-head-atome{
  grid-template-columns:1fr;
  grid-template-rows:auto auto;
  justify-items:center;
  align-content:center;
  gap:5px;
  text-align:center
}
.supplier-atome-link{
  display:flex;align-items:center;justify-content:center;
  width:100%;min-height:58px;padding:3px 5px;border-radius:9px;
  background:#fff;transition:transform .18s ease,box-shadow .18s ease
}
.supplier-atome-link:hover{transform:translateY(-1px);box-shadow:0 0 0 2px rgba(37,221,211,.28),0 7px 18px rgba(0,0,0,.22)}
.supplier-compare-head .supplier-atome-logo{width:145px;height:58px;object-fit:contain}
.supplier-atome-details{display:flex!important;flex-direction:column;align-items:center;gap:3px;width:100%}
.supplier-atome-details small{color:#dcefff!important;font-weight:800;line-height:1.15}
.supplier-compare-head .supplier-tigertag-logo{width:94px;height:28px;object-fit:contain;border-radius:4px;background:#fff;padding:1px 4px}
.supplier-bulk-button{
  border-color:rgba(255,193,7,.72)!important;
  background:linear-gradient(180deg,#4b3710,#2d220d)!important
}
.supplier-bulk-button:hover{background:linear-gradient(180deg,#685018,#3a2c10)!important;border-color:#ffc107!important}


/* V18.4.7 — collecte industrielle et actions déchets */
.waste-pickup-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.waste-pickup-actions>button{min-width:180px}
.industrial-pickup-button{border-color:#f3b56d!important;background:linear-gradient(135deg,rgba(243,181,109,.18),rgba(255,129,74,.12))!important;color:#ffd8a8!important}
.industrial-pickup-button:hover{transform:translateY(-1px);box-shadow:0 8px 24px rgba(243,181,109,.16)}
@media(max-width:620px){.waste-pickup-actions{display:grid;grid-template-columns:1fr}.waste-pickup-actions>button{width:100%;min-width:0}}
