.ipba-duel *{box-sizing:border-box}.ipba-duel main{padding:16px}.ipba-duel h1{margin:0;font-size:20px}.ipba-duel h2{margin:4px 0 14px;font-size:20px}.ipba-duel h3{font-size:15px}.ipba-duel small{font-size:11px;border:1px solid currentColor;padding:3px 6px;margin-left:6px}.ipba-duel .lobby{display:grid;grid-template-columns:1.25fr 1fr;gap:16px}.ipba-duel .panel{border:1px solid var(--ipba-border);background:var(--ipba-surface);padding:16px}.ipba-duel .eyebrow{font-size:11px;letter-spacing:.06em;font-weight:bold;color:var(--ipba-link);margin:0 0 6px}.ipba-duel label{display:flex;flex-direction:column;gap:6px;font-weight:bold;margin-bottom:12px}.ipba-duel button,.ipba-duel .button,.ipba-duel select,.ipba-duel input{font:inherit;min-height:38px;padding:8px 12px;border:1px solid var(--ipba-border-strong);border-radius:3px;background:var(--ipba-surface);color:var(--ipba-text)}.ipba-duel button,.ipba-duel .button{cursor:pointer;font-weight:bold}.ipba-duel button:disabled{cursor:default;opacity:.5}.ipba-duel .primary{background:var(--ipba-accent);border-color:var(--ipba-accent);color:#052833}.ipba-duel :focus-visible{outline:2px solid var(--ipba-accent);outline-offset:2px}.ipba-duel .muted{color:var(--ipba-text-muted);font-size:12px}.ipba-duel .rules{border-left:3px solid var(--ipba-accent);padding:1px 14px;background:var(--ipba-surface-muted);margin-top:20px}.ipba-duel #status{min-height:20px}.ipba-duel hr{border:0;border-top:1px solid var(--ipba-border);margin:24px 0}.ipba-duel #plan{width:100%;height:330px;object-fit:contain;background:#eff3ed;border:1px solid var(--ipba-border);margin-top:8px}.ipba-duel .matchbar{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.ipba-duel #score{font-size:32px;white-space:nowrap}.ipba-duel .matchbar h2{margin-bottom:4px}.ipba-duel .invitebar{display:flex;align-items:center;gap:10px;border-top:0}.ipba-duel .invitebar label{flex:1;margin:0}.ipba-duel #arena{position:relative;height:64vh;min-height:340px;overflow:hidden;background:#15222a;touch-action:none}.ipba-duel #arena canvas{width:100%;height:100%;display:block}.ipba-duel #crosshair{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:24px;color:white;text-shadow:0 1px 3px #000;pointer-events:none;z-index:2}.ipba-duel #overlay{position:absolute;left:50%;top:16px;transform:translateX(-50%);z-index:3;display:flex;flex-direction:column;gap:10px;align-items:center;max-width:90%;text-align:center}.ipba-duel #announcement{background:#12232ce8;color:white;padding:10px 18px;border-radius:3px;white-space:pre-line}.ipba-duel .controls{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.ipba-duel .controls label{margin:0}.ipba-duel .controls span{flex:1;font-size:12px}.ipba-duel #touchControls{display:none;position:absolute;bottom:12px;left:12px;right:12px;z-index:4;justify-content:space-between;align-items:end;pointer-events:none}.ipba-duel #touchControls button{pointer-events:auto;touch-action:none;background:#193340dd;color:white;min-width:48px;min-height:48px}.ipba-duel .dpad{display:grid;grid-template-columns:repeat(3,48px);gap:4px}.ipba-duel .dpad button:first-child{grid-column:2}.ipba-duel .dpad button:nth-child(2){grid-column:1}.ipba-duel [hidden]{display:none!important}@media(pointer:coarse){.ipba-duel #touchControls{display:flex}}@media(max-width:760px){.ipba-duel main{padding:10px}.ipba-duel .lobby{grid-template-columns:1fr}.ipba-duel .panel{padding:12px}.ipba-duel button,.ipba-duel select,.ipba-duel input{min-height:44px;font-size:16px}.ipba-duel .invitebar{flex-wrap:wrap}.ipba-duel .invitebar label{flex-basis:100%}.ipba-duel #plan{height:260px}.ipba-duel .matchbar{gap:12px}.ipba-duel .controls{gap:12px}.ipba-duel .controls label{flex:1}.ipba-duel #arena{height:60vh}.ipba-duel .ipba-layout-nav{flex-wrap:wrap}}

@media(max-width:760px){.ipba-duel .ipba-layout-header{display:flex;flex-wrap:wrap}.ipba-duel .ipba-layout-identity{flex:1}.ipba-duel .ipba-layout-identity h1{font-size:17px}.ipba-duel .ipba-layout-nav{order:3;flex:1 1 100%;min-width:0}.ipba-duel .ipba-layout-nav a{flex:1 1 100px;white-space:normal}.ipba-duel .ipba-theme-toggle{font-size:12px;max-width:100px}.ipba-duel .panel{min-width:0}.ipba-duel .invitebar input{width:100%;min-width:0}}

.ipba-duel .training-modes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:16px 0}.ipba-duel .training-mode{display:flex;flex-direction:column;align-items:flex-start;gap:10px;min-width:0;padding:14px;border:1px solid var(--ipba-border);border-radius:3px;background:var(--ipba-surface-muted)}.ipba-duel .training-mode h3{margin:0;font-size:14px}.ipba-duel .training-mode p{margin:0;font-size:12px;line-height:1.5;flex:1}.ipba-duel .training-mode button{margin-top:4px;max-width:100%;white-space:normal;text-align:left}@media(max-width:1100px){.ipba-duel .training-modes{grid-template-columns:1fr}}

.ipba-duel .training-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.ipba-duel .training-actions span{flex:1 1 100%;font-size:12px;color:var(--ipba-text-muted)}.ipba-duel .training-actions button{touch-action:none}@media(max-width:760px){.ipba-duel .training-actions button{flex:1 1 140px;min-height:44px}}

.ipba-duel #visorPaint{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2}.ipba-duel .game-help{position:absolute;top:12px;left:12px;z-index:5;max-width:calc(100% - 24px)}.ipba-duel .game-help>button{background:var(--ipba-surface);color:var(--ipba-text)}.ipba-duel #keysPanel{margin-top:6px;max-width:430px;max-height:calc(60vh - 90px);overflow:auto;background:var(--ipba-surface);color:var(--ipba-text);border:1px solid var(--ipba-border);padding:8px;box-shadow:0 3px 12px #0003}.ipba-duel .key-guide{margin-top:18px;padding:12px;border:1px solid var(--ipba-border)}.ipba-duel summary{cursor:pointer;font-weight:bold;min-height:30px}.ipba-duel .key-reference{width:100%;border-collapse:collapse;font-size:12px}.ipba-duel .key-reference th,.ipba-duel .key-reference td{padding:7px;text-align:left;border-bottom:1px solid var(--ipba-border);vertical-align:top}.ipba-duel .key-reference th{width:42%}.ipba-duel .key-reference tr:last-child>*{border-bottom:0}@media(max-width:760px){.ipba-duel .game-help{top:8px;left:8px}.ipba-duel #keysPanel{max-height:40vh}.ipba-duel .key-reference th,.ipba-duel .key-reference td{padding:6px}}

@media(max-width:760px){.ipba-duel #overlay{top:64px}}

.ipba-duel .training-mode label{align-self:stretch;margin:0;font-size:12px}.ipba-duel .training-mode select{width:100%;min-width:0}.ipba-duel #botStyleInfo{flex:0;font-size:12px;line-height:1.5;min-height:3em}

.ipba-duel .preview-switch{display:flex;gap:8px;margin:14px 0 8px}.ipba-duel .preview-switch button[aria-pressed=true]{background:var(--ipba-accent);border-color:var(--ipba-accent);color:#052833}.ipba-duel #layoutPreview{min-height:260px;min-width:0}.ipba-duel #layoutPreview .ifv-thumbnails{display:none}.ipba-duel #layoutPreview .ifv-toolbar select{max-width:100%;min-width:0}.ipba-duel #layoutPreview label{margin:0;font-weight:normal}.ipba-duel #layoutArea{margin-top:-6px}@media(max-width:760px){.ipba-duel #layoutPreview .ifv-toolbar select{flex:1 1 150px}.ipba-duel #layoutPreview .ifv-height{flex-wrap:wrap}.ipba-duel .preview-switch button{flex:1}}

.ipba-duel .team-setup{display:grid;grid-template-columns:2fr 1fr 1fr;gap:10px;margin:16px 0;padding:12px;border:1px solid var(--ipba-border);background:var(--ipba-surface-muted)}.ipba-duel .team-setup label{margin:0;min-width:0;font-size:12px}.ipba-duel .team-setup select{width:100%;min-width:0}.ipba-duel #teamInfo{grid-column:1/-1;margin:0;font-size:12px;color:var(--ipba-text-muted)}.ipba-duel .shot-status{position:absolute;right:12px;bottom:12px;z-index:3;display:flex;flex-direction:column;align-items:flex-end;gap:6px;max-width:65%;pointer-events:none}.ipba-duel .shot-status>*{background:#12232ce8;color:#fff;padding:7px 10px;font-size:12px;border-radius:3px}.ipba-duel #hitFeedback[data-kind=hit]{background:#155c3c}.ipba-duel #hitFeedback[data-kind=out]{background:#943329}@media(max-width:760px){.ipba-duel .team-setup{grid-template-columns:1fr 1fr}.ipba-duel .team-setup label:first-child{grid-column:1/-1}.ipba-duel .shot-status{bottom:74px;max-width:90%;right:8px}}

.ipba-duel #bunkerNames{position:absolute;inset:0;z-index:1;pointer-events:none}.ipba-duel #nameToggle[aria-pressed=true]{border-color:var(--ipba-accent);color:var(--ipba-link)}

/* Compact broadcast overlay remains visible in fullscreen. */
.ipba-duel .broadcast-hud{position:absolute;z-index:4;top:10px;left:50%;transform:translateX(-50%);width:min(460px,calc(100% - 20px));display:grid;grid-template-columns:1fr 110px 1fr;background:#20292fee;color:#fff;pointer-events:none;text-align:center;border-bottom:3px solid #00acd6;box-shadow:0 2px 8px #0003;font-variant-numeric:tabular-nums}
.ipba-duel .hud-team,.ipba-duel .hud-clock{display:flex;flex-direction:column;gap:3px;padding:7px 10px;font-size:10px;font-weight:bold;letter-spacing:.04em}.ipba-duel .hud-team strong{font-size:26px}.ipba-duel .hud-clock{background:#f5f7f8;color:#17252d}.ipba-duel .hud-clock strong{font-size:29px}.ipba-duel .team-a{border-top:4px solid #00bce5}.ipba-duel .team-b{border-top:4px solid #f0842e}.ipba-duel .hud-stats{grid-column:1/-1;padding:5px;font-size:11px;background:#121e25}.ipba-duel .game-help{top:130px;display:flex;flex-wrap:wrap;gap:6px}.ipba-duel #keysPanel{flex-basis:100%}.ipba-duel #overlay{top:178px}.ipba-duel #arena:fullscreen{width:100vw;height:100vh;height:100dvh;min-height:0}.ipba-duel #arena:-webkit-full-screen{width:100vw;height:100vh;min-height:0}.ipba-duel #arenaReady{background:#00acd6;color:#052833}.ipba-duel #controllerStatus{font-size:12px}
@media(max-width:760px){.ipba-duel .broadcast-hud{top:6px}.ipba-duel .hud-team,.ipba-duel .hud-clock{padding:5px;font-size:10px}.ipba-duel .game-help{top:118px;gap:5px}.ipba-duel .game-help>button{font-size:11px;padding:6px;min-height:38px}.ipba-duel #overlay{top:167px;font-size:12px}.ipba-duel #announcement{padding:7px 10px}.ipba-duel .broadcast-hud{grid-template-columns:1fr 100px 1fr}.ipba-duel #arena{min-height:440px}}
@media(max-height:500px) and (min-width:761px){.ipba-duel .game-help{top:8px;max-width:calc(50% - 245px)}.ipba-duel .game-help>button{font-size:11px;padding:5px}.ipba-duel #overlay{top:130px}}

@media(max-width:760px){.ipba-duel .game-help{top:144px}.ipba-duel #overlay{top:235px}}
@media(min-width:1100px){.ipba-duel .game-help{top:12px;max-width:calc(50% - 245px)}.ipba-duel #overlay{top:138px}}

.ipba-duel.game-expanded{overflow:hidden}.ipba-duel #arena.arena-expanded{position:fixed;inset:0;z-index:99999;width:100vw;height:100vh;height:100dvh;min-height:0}

/* Confirmed hit, finite ammunition and individual player states. */
.ipba-duel .player-bars{display:flex;justify-content:center;gap:4px;height:9px;margin:3px 0}.ipba-duel .player-bars i{width:21px;border:1px solid #87949d;background:#172128}.ipba-duel .team-a .player-bars .alive{background:#00bce5;border-color:#80eaff}.ipba-duel .team-b .player-bars .alive{background:#f0842e;border-color:#ffd4b2}.ipba-duel #hudNameA,.ipba-duel #hudNameB{min-height:24px;display:flex;align-items:center;justify-content:center;overflow-wrap:anywhere;letter-spacing:0}.ipba-duel #hitPopup{position:absolute;z-index:5;left:50%;top:55%;transform:translateX(-50%);padding:8px 14px;background:#102c26ed;border-left:3px solid #68e1a1;color:#fff;white-space:pre-line;text-align:center;font-weight:bold;font-size:14px;pointer-events:none}.ipba-duel .ammo-hud{position:absolute;z-index:4;bottom:14px;left:14px;display:grid;gap:5px;background:#14232deb;color:#fff;padding:10px;min-width:180px;font-size:11px}.ipba-duel .ammo-hud strong{font-size:20px;font-variant-numeric:tabular-nums}.ipba-duel .ammo-hud progress{width:100%;height:8px;accent-color:#00bce5}.ipba-duel .ammo-hud button{font-size:12px;min-height:32px;padding:5px 8px}.ipba-duel #overlay{top:170px}
@media(max-width:1099px){.ipba-duel .game-help{top:172px}.ipba-duel #overlay{top:263px}}
@media(max-width:760px){.ipba-duel .broadcast-hud{grid-template-columns:1fr 86px 1fr}.ipba-duel #hudNameA,.ipba-duel #hudNameB{min-height:28px}.ipba-duel .ammo-hud{min-width:145px;padding:6px;bottom:8px;left:8px}.ipba-duel .shot-status{bottom:95px;max-width:60%}.ipba-duel #hitPopup{top:66%;font-size:12px;width:max-content;max-width:90%}}
@media(pointer:coarse){.ipba-duel .ammo-hud{bottom:125px}.ipba-duel .shot-status{bottom:125px}.ipba-duel #arena{min-height:650px}}

/* Training feedback: compact, responsive, and theme aware. */
.ipba-duel .reaction-panel{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;border-left:3px solid #00acd6;margin-top:12px}.ipba-duel #reactionCurrent{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums}.ipba-duel .reaction-panel small{flex-basis:100%;font-size:12px}.ipba-duel .avatar-toolbar{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin:12px 0}.ipba-duel .avatar-toolbar label{flex:1;min-width:200px}.ipba-duel .avatar-team{display:block;border-left:5px solid #00bce5;padding:8px 12px;margin:8px 0}.ipba-duel #avatarHits{padding:0 0 0 20px}.ipba-duel #avatarHits li{padding:5px 0}.ipba-duel #restartRound{border-color:#00acd6}.ipba-duel #avatarCard summary{cursor:pointer;min-height:32px}.ipba-duel #reactionStats{font-variant-numeric:tabular-nums}
@media(max-width:600px){.ipba-duel .avatar-toolbar label{flex-basis:100%}.ipba-duel .avatar-toolbar button,.ipba-duel #restartRound{min-height:44px}.ipba-duel .reaction-panel{gap:8px}.ipba-duel #reactionStats{flex-basis:100%}.ipba-duel #avatarView{height:300px!important}}
.ipba-duel .reaction-panel small{border:0;padding:0;margin:0;background:transparent;color:inherit;display:block}.ipba-duel #reactionHud{font-weight:700;font-variant-numeric:tabular-nums}

/* Team crests retain their original proportions in both scoreboard themes. */
.ipba-duel .hud-identity{display:flex;align-items:center;justify-content:center;gap:6px;min-height:32px}
.ipba-duel .hud-logo{width:30px;height:30px;flex:0 0 30px;object-fit:contain;background:#fff;border:1px solid #ddd;border-radius:3px;padding:2px;box-sizing:border-box}
.ipba-duel .hud-logo[hidden]{display:none}
.ipba-duel .hud-identity span{min-width:0}
@media(max-width:480px){.ipba-duel .hud-identity{gap:4px}.ipba-duel .hud-logo{width:24px;height:24px;flex-basis:24px}}
