/* Squad composition only; component skins live in ui/components.css. */
#overlay.squad-preparing{position:relative;inset:auto;min-height:100dvh;display:block;padding:22px 28px 34px;background:var(--ui-bg)}
.squad-prep{display:block;width:min(1440px,100%);margin-inline:auto;font-size:14px;scrollbar-color:var(--ui-shade-709c9d) var(--ui-bg)}
.prep-heading{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;padding:14px 18px;margin-bottom:24px;border:1px solid var(--ui-border);border-radius:8px;background:var(--ui-shade-142126)}
.prep-heading h1{margin:0;font:600 clamp(28px,3vw,40px)/1.1 var(--ui-font-display);text-transform:uppercase;letter-spacing:.025em;color:var(--ui-shade-dbe3cd)}
.prep-heading .prep-launch{justify-self:end;min-width:0;max-width:none;width:190px}
.prep-workspace{display:grid;grid-template-columns:300px minmax(400px,1fr) 300px;gap:30px;background:transparent;border-radius:0;overflow:visible;align-items:start}
.prep-pack{grid-column:1;grid-row:1;min-width:0;padding:0;background:none}
.pack-heading{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;margin:0 0 14px;background:var(--ui-shade-203036);border-radius:4px}
.pack-heading h2{margin:0;font:600 25px/1.15 var(--ui-font-display);text-transform:uppercase;letter-spacing:.025em;color:var(--ui-shade-d6e2cf)}
.prep-stats h2{margin:0;font:600 25px/1.15 var(--ui-font-display);text-transform:uppercase;letter-spacing:.025em;color:var(--ui-shade-d6e2cf)}
.prep-capacity{font-size:15px;font-variant-numeric:tabular-nums;color:var(--ui-shade-c0d1cd)}
.prep-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.prep-character{grid-column:2;grid-row:1;position:relative;min-width:0;min-height:0;padding:0;background:none}
.prep-model{position:relative;height:565px;margin:0 94px 0 0}
.prep-model canvas{width:100%;height:100%;display:block;cursor:grab;touch-action:none}
.prep-model canvas:active{cursor:grabbing}
.rotate-hint{position:absolute;bottom:3px;left:50%;transform:translateX(-50%);white-space:nowrap;padding:5px 12px;font-size:11px;color:var(--ui-shade-c7d6d0);background:var(--ui-shade-142126);border-radius:4px;pointer-events:none}
.preview-fallback{position:absolute;top:40%;left:0;width:100%;font-size:13px;color:var(--ui-muted);text-align:center}
.prep-equipment{position:absolute;inset:64px 0 auto auto;display:flex;flex-direction:column;gap:18px;width:80px;pointer-events:none}
.prep-equipment:before{content:'';position:absolute;top:44px;bottom:44px;left:-15px;width:9px;border:1px solid var(--ui-shade-52777b);border-right:0;border-radius:6px 0 0 6px}
.prep-character .prep-roster{display:flex;justify-content:center;gap:10px;margin:12px 94px 0 0;padding:12px;border:1px solid var(--ui-shade-4c676c);border-radius:6px;background:var(--ui-panel);overflow:visible}
.prep-stats{grid-column:3;grid-row:1;min-width:0;padding:10px 0 0;border:0;background:none}
.prep-stats h2{margin-bottom:22px}
.trait{font-size:12px;line-height:1.65;color:var(--ui-shade-cedcd3);margin:0}
.trait-line{display:flex;align-items:center;gap:8px;margin:8px 0}
.trait-line svg{width:18px;height:18px;flex-shrink:0;color:var(--ui-shade-a8cdc4)}
.combat-section{margin-top:27px;padding-top:24px;border-top:1px solid var(--ui-shade-4a666a)}
.squad-prep button:focus-visible{outline:2px solid var(--ui-focus);outline-offset:4px}
.squad-prep a:focus-visible{outline:2px solid var(--ui-focus);outline-offset:4px}
.squad-prep canvas:focus-visible{outline:2px solid var(--ui-focus);outline-offset:4px}
.squad-prep ::selection{background:var(--ui-focus);color:var(--ui-shade-142126)}
@media(min-width:1600px){.prep-model{height:650px}
.prep-equipment{top:96px;gap:22px}}
@media(min-width:701px) and (max-width:1180px){.prep-workspace{grid-template-columns:240px minmax(310px,1fr);gap:26px}
.prep-pack{grid-column:1}
.prep-character{grid-column:2}
.prep-stats{grid-column:1 / -1;grid-row:2;display:grid;grid-template-columns:1fr 1fr;gap:32px;border-top:1px solid var(--ui-border);padding-top:24px}
.combat-section{margin:0;padding:0;border:0}
.prep-model{height:500px}
.prep-heading h1{font-size:30px}
.prep-heading .prep-launch{width:160px}}
@media(max-width:700px){#overlay.squad-preparing{padding:12px 14px 24px}
.prep-heading{grid-template-columns:1fr auto;padding:10px;gap:12px;margin-bottom:18px}
.prep-heading h1{grid-row:2;grid-column:1 / -1;text-align:center;font-size:28px}
.prep-heading .prep-launch{width:132px}
.prep-workspace{display:flex;flex-direction:column;gap:26px}
.prep-character{width:100%;order:0}
.prep-model{height:340px;margin-right:76px}
.prep-equipment{top:12px;width:62px;gap:12px}
.prep-equipment:before{left:-11px;width:6px;top:34px;bottom:34px}
.prep-character .prep-roster{margin:10px 76px 0 0;padding:8px;gap:6px}
.prep-pack{order:1;width:100%;max-width:none;padding:0;border:0}
.prep-grid{gap:9px}
.prep-stats{order:2;width:100%;padding:0;display:block}
.combat-section{margin-top:24px;padding-top:24px}
.prep-stats h2{margin-bottom:16px}
.rotate-hint{font-size:11px;padding:4px 8px}}
@media(prefers-reduced-motion:reduce){.squad-prep button{transition:none}}
#overlay.squad-preparing{background:radial-gradient(ellipse at 50% 48%,var(--ui-shade-1b353b) 0,var(--ui-shade-122328) 37%,var(--ui-shade-0e181d) 76%)}
.prep-heading{background:var(--ui-shade-121e24);border-color:var(--ui-shade-3f5358);border-top-color:var(--ui-shade-5b7073);padding:16px 18px;margin-bottom:20px;box-shadow:0 8px 24px var(--ui-shade-060e1238)}
.prep-heading h1{font-size:clamp(30px,3.2vw,46px);color:var(--ui-heading);letter-spacing:.035em}
.prep-heading .prep-launch{width:210px}
.pack-heading{position:relative;background:linear-gradient(90deg,var(--ui-shade-273a3e),var(--ui-panel));padding:10px 8px}
.pack-heading h2{font-size:28px}
.prep-stats h2{font-size:28px}
.prep-capacity{font:600 22px/1 var(--ui-font-display)}
.prep-model{height:595px}
.prep-stats .ui-stat-row{font-size:16px}
.prep-stats>.character-summary{padding:2px 0 0}
.trait{font-size:14px}
.trait-line{gap:9px;margin:12px 0}
.trait-line svg{width:21px;height:21px}
.combat-section{position:relative;margin-top:26px;padding-top:26px}
.combat-section:before{content:'';position:absolute;top:-3px;width:5px;height:5px;background:var(--ui-shade-5c777b)}
.combat-section:after{content:'';position:absolute;top:-3px;width:5px;height:5px;background:var(--ui-shade-5c777b)}
.combat-section:before{left:0}
.combat-section:after{right:0}
.prep-character .prep-roster{position:relative;align-items:center;margin-top:14px;padding:12px 18px;background:linear-gradient(135deg,var(--ui-shade-263b40),var(--ui-shade-1a2c32));border-color:var(--ui-shade-526e74)}
.prep-character .prep-roster:before{content:'Squad';font:600 25px/1 var(--ui-font-display);text-transform:uppercase;color:var(--ui-heading);margin-right:6px}
.rotate-hint{bottom:5px;background:var(--ui-shade-1b292d);border:1px solid var(--ui-shade-445c61);padding:5px 15px;font-size:12px}
@media(min-width:1600px){.prep-model{height:680px}
.prep-equipment{gap:24px}}
@media(min-width:701px) and (max-width:1180px){.prep-model{height:520px}
.prep-character .prep-roster{padding:10px;gap:8px}
.prep-character .prep-roster:before{display:none}
.prep-heading h1{font-size:32px}
.prep-heading .prep-launch{width:170px}}
@media(max-width:700px){.prep-heading{padding:10px}
.prep-heading h1{font-size:28px}
.prep-heading .prep-launch{width:140px}
.prep-model{height:350px}
.prep-equipment{gap:12px}
.prep-character .prep-roster{padding:8px;gap:6px;margin-top:12px}
.prep-character .prep-roster:before{display:none}
.rotate-hint{font-size:11px;padding:4px 8px}
.trait{font-size:13px}}
.prep-character .prep-roster{margin-top:40px;min-height:106px;align-items:flex-start;gap:14px;padding:0 20px 10px;border-radius:7px}
.prep-character .prep-roster:before{align-self:center;margin:0 8px 0 0;font-size:28px;line-height:1}
@media(min-width:701px) and (max-width:1180px){.prep-character .prep-roster{padding-inline:14px;gap:12px}}
@media(max-width:700px){.prep-character .prep-roster{margin-top:28px;min-height:86px;padding:0 8px 8px;gap:8px}}
.prep-character .prep-roster{justify-content:center}
.prep-character .prep-roster:before{position:absolute;left:20px;top:50%;transform:translateY(-50%);margin:0}
@media(min-width:701px) and (max-width:1180px){.prep-character .prep-roster:before{display:none}}
@media(min-width:701px) and (max-width:1320px){.prep-character .prep-roster:before{display:none}}
@media(min-width:1181px){.prep-workspace{grid-template-columns:300px minmax(380px,1fr) 340px;gap:26px}}
@media(min-width:1181px){.prep-stats{padding-top:10px}
.prep-stats h2{margin-bottom:17px}
.prep-stats .trait-line{margin:9px 0}
.prep-stats .ui-health{margin-bottom:15px}
.combat-section{margin-top:21px;padding-top:21px}}
.pack-heading{position:relative;isolation:isolate;min-height:44px;padding:7px 17px 7px 7px;margin-bottom:14px;background:linear-gradient(90deg,var(--ui-shade-1a2a2f00) 0%,var(--ui-shade-23363b) 47%,var(--ui-shade-1c2d32) 100%);border-radius:0 6px 0 0}
.pack-heading h2{position:relative;z-index:1;font:600 28px/1.05 var(--ui-font-display);letter-spacing:.025em;color:var(--ui-shade-cbd8c4)}
.pack-heading:before{content:'';position:absolute;top:1px;bottom:1px;width:17px;border-right:1px solid var(--ui-shade-587276);border-radius:0 100% 100% 0;transform:skewX(-12deg);pointer-events:none}
.pack-heading:after{content:'';position:absolute;top:1px;bottom:1px;width:17px;border-right:1px solid var(--ui-shade-587276);border-radius:0 100% 100% 0;transform:skewX(-12deg);pointer-events:none}
.pack-heading:before{left:143px;opacity:.65}
.pack-heading:after{left:148px;opacity:.3}
.pack-heading .prep-capacity{font:600 23px/1 var(--ui-font-display);color:var(--ui-shade-cedbd2);font-variant-numeric:tabular-nums}
@media(max-width:700px){.pack-heading{min-height:44px;padding-right:16px}}
.prep-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;justify-self:end}
.launch-feedback{margin:-8px 0 18px;text-align:right;color:var(--ui-shade-bbdccf);font-size:12px}
@media(min-width:701px) and (max-width:1180px){.prep-actions{gap:8px}
.prep-heading h1{font-size:30px}}
@media(max-width:700px){.prep-actions{grid-row:1;grid-column:2;gap:8px}
.prep-heading .prep-launch{width:132px}
.launch-feedback{text-align:left;font-size:11px}}

/* Preparation overlays the scene; game HUD and result panels retain their layout. */
#overlay.squad-preparing{position:fixed;inset:0;overflow:auto;min-height:100dvh}
#overlay[hidden]{display:none!important}.squad-prep{display:none}#overlay.squad-preparing .squad-prep{display:block}#overlay.squad-preparing>.brief{display:none}
.prep-status[hidden]{display:none}.prep-status{margin:0 0 16px;color:var(--ui-muted);font-size:12px}
.squad-prep svg{width:24px;height:24px;flex-shrink:0}.rifle-item-image{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
.ui-item-actions{display:flex;gap:8px;flex-wrap:wrap}.ui-item-actions select{min-height:44px;min-width:130px;flex:1;font:inherit;font-size:12px;background:var(--ui-panel);color:var(--ui-text);border:1px solid var(--ui-border);border-radius:4px;padding:8px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

.squad-prep .trait-line svg{width:21px;height:21px}

.prep-equipment-actions[hidden]{display:none}
.prep-equipment-actions>[data-toggle-equipment]{width:100%}
