/* An olive instrument panel, with the arena carrying the visual weight. */
#toggle-combat{background:#d5be80;color:#263020;border-color:#d5be80;font-weight:650}
body[data-combat="on"] .exhibit-layout{display:block}
body[data-combat="on"] .gallery-column{width:100%}
body[data-combat="on"] .stage{height:calc(100dvh - 106px);min-height:540px;max-height:none;border-color:#64704f}
body[data-combat="on"] #info-panel,body[data-combat="on"] #heroes-bar,body[data-combat="on"] .environment-bar,body[data-combat="on"] .studio-option,body[data-combat="on"] #modebar,body[data-combat="on"] .gallery-toolbar,body[data-combat="on"] .museum-footer,body[data-combat="on"] #open-stories,body[data-combat="on"] #hotspots-overlay,body[data-combat="on"] #heroes-overlay,body[data-combat="on"] .stage-label,body[data-combat="on"] .stage-instruction,body[data-combat="on"] #read-detail{display:none!important}
.combat-ui{position:absolute;inset:0;z-index:20;pointer-events:none;color:#eee9d7;font-family:inherit}
.combat-ui[hidden],.combat-ui [hidden]{display:none!important}
.combat-ui button{pointer-events:auto;min-height:44px;padding:10px 15px;border:1px solid #94a07577;border-radius:3px;background:#263021ed;color:#eee9d7;font:inherit;font-size:12px;cursor:pointer;touch-action:none}
.combat-ui button:hover{background:#4c5a3c;border-color:#d0cba7}
.combat-ui button:focus-visible{outline:2px solid #ffe5a1;outline-offset:3px}
.combat-ui button:disabled{opacity:.55;cursor:default}
.combat-top{position:absolute;top:20px;left:24px;right:24px;display:flex;justify-content:space-between;gap:20px;z-index:5;align-items:start}
.combat-mission{padding:13px 17px;background:#202a1ee8;border-left:3px solid #d6bd7d;box-shadow:0 3px 16px #15201922}
.combat-mission>span,.combat-eyebrow{display:block;margin:0;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:#cfceac}
.combat-mission strong{display:flex;align-items:center;gap:24px;font-size:14px;font-weight:500;margin-top:8px}
.combat-mission b{font:600 19px 'Segoe UI',sans-serif;color:#f1db9e;white-space:nowrap}
.combat-top nav{display:flex;gap:6px}
#combat-targets{position:absolute;inset:0}
.combat-ui .combat-target{position:absolute;left:0;top:0;min-width:112px;padding:7px 10px 9px;background:#322c25df;border-color:#d58c70;color:#ffe6cb;font-size:11px;box-shadow:0 2px 7px #0003}
.combat-target i{display:block;height:3px;background:#593e32;margin-top:6px;width:100%}
.combat-target i b{display:block;height:100%;background:#dc8060}
.combat-ui .combat-target.is-locked{border-color:#ffdd99;background:#5a402bed;box-shadow:0 0 0 2px #ebbb6170}
.combat-ui .combat-target.is-locked span::before{content:'◎ ';color:#ffdd99}
.combat-ui .combat-target.is-firing{border-color:#ff986f;background:#703f2de8}
#combat-reticle{position:absolute;left:0;top:0;width:44px;height:44px;border:1px solid #eddfad99;border-radius:50%;filter:drop-shadow(0 1px 2px #000);z-index:2}
#combat-reticle:before,#combat-reticle:after{content:'';position:absolute;background:#ffedb6;left:50%;top:50%;transform:translate(-50%,-50%)}
#combat-reticle:before{width:60px;height:1px}#combat-reticle:after{height:60px;width:1px}
#combat-reticle i{position:absolute;inset:15px;border:1px solid #ffedb6;border-radius:50%}
#combat-damage{position:absolute;inset:0;box-shadow:inset 0 0 120px #b34821;opacity:0;z-index:3}
#combat-feedback{position:absolute;top:116px;left:50%;transform:translateX(-50%);font-size:13px;color:#fff2c9;text-shadow:0 1px 4px #000;text-align:center;max-width:85%;z-index:3}
.combat-bottom{position:absolute;left:24px;right:24px;bottom:22px;display:flex;align-items:end;gap:14px;z-index:4}
.combat-status{width:188px;background:#202a1eed;border:1px solid #96a07966;padding:15px 17px}
.combat-status>span{font-size:11px;color:#c7ceac}.combat-status strong{display:block;margin:4px 0 10px;font-size:30px;font-weight:500}.combat-status small{font-size:13px;color:#b8c09e;font-weight:400}
.combat-status p{font:12px monospace;margin:10px 0 0;color:#cbd3b3}
.combat-meter{height:3px;background:#78825e66;overflow:hidden}.combat-meter i{display:block;width:100%;height:100%;background:#c7d392;transform-origin:left center}
.combat-radar{position:relative;border:1px solid #96a07966;line-height:0}.combat-radar canvas{width:132px;height:132px}.combat-radar span{position:absolute;bottom:5px;left:0;right:0;text-align:center;font-size:8px;line-height:1;letter-spacing:.08em;color:#afb796}
.combat-weapon{margin-left:auto;width:208px;padding:12px;background:#202a1eed;border:1px solid #96a07966}
.combat-ui #combat-fire{width:100%;min-height:58px;border-color:#d9c086;background:#cfb574;color:#28301e;font-size:17px;font-weight:600}
#combat-fire kbd{display:block;margin:4px 0 0;font:9px inherit;letter-spacing:.10em;text-transform:uppercase}
.combat-weapon .combat-meter{margin:10px 0 7px}.combat-weapon>span{font-size:11px;display:block;text-align:center;color:#d1d3b2}
.combat-menu{position:absolute;inset:0;display:grid;place-items:center;padding:20px;background:#18231866;backdrop-filter:blur(3px);pointer-events:auto;z-index:6;overflow:auto}
.combat-menu-card{width:min(550px,100%);padding:26px 32px;background:#222c20f5;border:1px solid #86916c;box-shadow:0 18px 60px #111b1166}
.combat-menu{align-items:safe center}
.combat-levels{margin:14px 0;padding-top:12px;border-top:1px solid #9ba77d33}
.combat-levels h3{margin:0 0 10px;font-size:11px;font-weight:500;color:#d9d3b5}
.combat-levels [role="group"]{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.combat-levels button{padding:9px 5px;min-height:44px;font-size:12px}
.combat-levels button[aria-pressed="true"]{background:#585b3c;color:#fff1c5;border-color:#d9c58a;box-shadow:inset 0 -2px #d9c58a}
#combat-level-note{font-size:11px;line-height:1.5;color:#ced3b6;margin:10px 0 6px;min-height:33px}
#combat-best{font-size:10px;line-height:1.5;color:#aeb998;margin:0}
.combat-result{border-top:1px solid #d6bd7d77;border-bottom:1px solid #9ba77d33;margin:22px 0 0;padding:14px 0 17px}
#combat-result-label{margin:0 0 15px;color:#e2cd90;font-size:11px}
.combat-result dl{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin:0}
.combat-result dt{font-size:10px;color:#b9c3a2;margin-bottom:4px}.combat-result dd{margin:0;font:500 23px 'Segoe UI',sans-serif;color:#f2e6bf;font-variant-numeric:tabular-nums}
.combat-result:not([hidden])~.combat-controls-guide,.combat-result:not([hidden])~.combat-guide-note{display:none}
.combat-ui[data-critical="on"] .combat-status{border-color:#db8d6e;background:#402d23ed}
.combat-ui[data-critical="on"] #combat-health-fill{background:#ef9a75}
.combat-status #combat-health-warning{color:#ffbc96;font-size:10px;line-height:1.3;max-width:150px;margin-top:7px}
@media(max-width:430px){.combat-levels{margin:16px 0}.combat-levels button{font-size:11px}.combat-result dd{font-size:21px}}
.combat-menu h2{font:normal clamp(32px,4vw,46px)/1.08 Georgia,serif;margin:12px 0;color:#f3e6c3}
#combat-menu-copy{font-size:14px;line-height:1.65;margin:0 0 14px;color:#d7dbc3}
.combat-controls-guide{display:grid;grid-template-columns:1fr 1fr;gap:14px 20px;padding:14px 0;border-top:1px solid #9ba77d33;border-bottom:1px solid #9ba77d33}
.combat-controls-guide p{font-size:11px;margin:0;display:flex;align-items:center;gap:9px;color:#c7cdb3}
.combat-controls-guide kbd{border:1px solid #8e9b713f;padding:6px;min-width:48px;text-align:center;color:#ecd99f;font:10px inherit}
.combat-guide-note{font-size:11px;line-height:1.6;color:#b8c09f;margin:12px 0 18px}
.combat-menu-actions{display:flex;gap:10px;flex-wrap:wrap}.combat-menu-actions button{flex:1;white-space:nowrap}
.combat-ui .combat-primary{background:#d5bf84;color:#28301f;border-color:#d5bf84;font-weight:600}
.combat-ui .combat-primary:hover{background:#ead39c;color:#202919}
.combat-loading{position:absolute;inset:0;display:grid;place-content:center;text-align:center;background:#20291ff2;pointer-events:auto;padding:26px;z-index:4}
.combat-loading h2{font:30px Georgia,serif}.combat-loading p{font-size:13px}.combat-loading button{margin:18px auto;min-width:180px}
.combat-touch{display:none}
@media(pointer:coarse),(max-width:760px){
 body[data-combat="on"] .stage{height:calc(100dvh - 87px);min-height:580px}
 .combat-top{left:12px;right:12px;top:12px;gap:8px}.combat-top nav{gap:4px}.combat-top nav button{font-size:10px;padding:8px}.combat-mission{padding:10px}.combat-mission>span{font-size:8px;letter-spacing:.05em}.combat-mission strong{font-size:11px;gap:8px;flex-wrap:wrap}.combat-mission b{font-size:15px}
 .combat-bottom{left:12px;right:12px;bottom:15px;gap:7px}.combat-status{width:125px;padding:10px}.combat-status strong{font-size:23px}.combat-status p{margin:7px 0 0}.combat-radar{position:absolute;bottom:149px;left:0}.combat-radar canvas{width:90px;height:90px}.combat-radar span{font-size:7px}
 .combat-weapon{width:150px;padding:9px}.combat-ui #combat-fire{min-height:53px;font-size:15px}#combat-fire kbd{display:none}
 .combat-touch{position:absolute;left:12px;right:12px;bottom:142px;display:flex;align-items:end;justify-content:space-between;pointer-events:none;z-index:4}
 .combat-touch button{min-height:46px;width:46px;padding:4px;font-size:22px;background:#28351de8}.combat-drive-pad{display:grid;grid-template-columns:repeat(3,46px);gap:4px}.combat-drive-pad button:first-child{grid-column:2;grid-row:1}.combat-drive-pad button:not(:first-child){grid-row:2}.combat-aim-pad{display:grid;grid-template-columns:repeat(2,46px);gap:4px}.combat-aim-pad span{grid-column:1/3;text-align:center;font-size:9px;color:#f2e8c6;text-shadow:0 1px 3px #000}
 .combat-radar{bottom:255px}.combat-menu{padding:16px}.combat-menu-card{padding:24px}.combat-controls-guide{gap:10px;grid-template-columns:1fr}.combat-controls-guide p:nth-child(-n+2){display:none}.combat-guide-note{font-size:10px}.combat-menu h2{font-size:32px}
}
@media(max-width:430px){.combat-top{flex-wrap:wrap}.combat-mission{width:100%;display:flex;justify-content:space-between;align-items:center}.combat-mission strong{margin:0}.combat-top nav{margin-left:auto}#combat-feedback{top:116px}.combat-menu-card{padding:22px 18px}.combat-menu-actions button{font-size:11px}.combat-controls-guide{display:none}.combat-radar{display:none}}
@media(max-height:600px) and (min-width:600px){body[data-combat="on"] .stage{height:calc(100dvh - 70px);min-height:420px}.combat-menu-card{padding:20px 30px}.combat-menu h2{font-size:30px;margin:9px 0}.combat-controls-guide{padding:10px 0}.combat-guide-note{margin:10px 0}.combat-status{padding:10px}.combat-radar canvas{width:105px;height:105px}}
@media(prefers-reduced-motion:reduce){#combat-damage{display:none}}

/* Target controls stay available when the selected opponent is outside the camera. */
body[data-combat="on"] .museum-shell{display:grid;height:100dvh;min-height:0;grid-template-rows:auto minmax(0,1fr)}
body[data-combat="on"] .gallery-column{height:100%}
body[data-combat="on"] .stage{height:100%!important;min-height:0!important}
.combat-target-console{position:absolute;z-index:4;bottom:22px;left:50%;transform:translateX(-50%);width:330px;padding:10px 12px 3px;background:#202a1ee8;border:1px solid #96a07966}
#combat-roster{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
#combat-roster button{text-align:left;padding:6px 9px;min-height:52px;background:#2d3825}
#combat-roster button[aria-pressed="true"]{border-color:#e5cd8d;background:#575535;color:#fff0c1}
#combat-roster span{display:block;font-size:11px}#combat-roster small{display:block;white-space:nowrap;font:9px monospace;color:#cbd1b3;margin:2px 0 5px}
#combat-roster i{display:block;width:100%;height:2px;background:#87503955}#combat-roster b{display:block;height:100%;background:#dba582}
.combat-target-status{display:flex;align-items:center;min-height:42px;gap:5px}.combat-target-status p{font-size:10px;line-height:1.4;color:#d0d3b5;margin:0;flex:1}
.combat-ui #combat-unlock{font-size:9px;padding:5px;border:0;background:transparent;min-height:44px;white-space:nowrap}
.combat-ui #combat-unlock:hover{color:#ffe5a1}
#combat-optics{position:absolute;inset:0;display:none;background:radial-gradient(ellipse at center,transparent 30%,#111a0c22 55%,#080e07e8 100%);z-index:1}
#combat-optics>span{position:absolute;top:18%;left:50%;transform:translateX(-50%);color:#e5d8a3;font:10px monospace;letter-spacing:.16em;text-transform:uppercase;white-space:nowrap;text-shadow:0 1px 3px #000}
#combat-optics i{position:absolute;width:200px;height:7px;left:50%;top:calc(50% + 53px);transform:translateX(-50%);background:repeating-linear-gradient(90deg,#e9dcb8 0 1px,transparent 1px 20px);border-bottom:1px solid #e9dcb8;filter:drop-shadow(0 1px 2px #000)}
.combat-ui[data-scope="on"] #combat-optics{display:block}
.combat-ui[data-scope="on"] #combat-reticle{width:110px;height:110px;border-color:#dacba76b}
.combat-ui[data-scope="on"] #combat-reticle:before{width:190px}.combat-ui[data-scope="on"] #combat-reticle:after{height:180px}
.combat-ui[data-scope="on"] #combat-reticle i{inset:49px;border-radius:0;transform:rotate(45deg)}
#combat-reticle.is-ready{border-color:#cedb8b}#combat-reticle.is-ready:before,#combat-reticle.is-ready:after{background:#d9ef9b}
.combat-ui #combat-reticle.is-hit:before,.combat-ui #combat-reticle.is-hit:after{background:#fff;border-radius:2px;height:3px;width:32px;transform:translate(-50%,-50%) rotate(45deg)}
.combat-ui #combat-reticle.is-hit:after{transform:translate(-50%,-50%) rotate(-45deg)}
#combat-threat{position:absolute;left:50%;top:50%;width:200px;height:200px;text-align:center;line-height:24px;color:#ff956b;text-shadow:0 1px 4px #40291d;font-size:23px;z-index:3}
@media(max-width:1150px){
 .combat-target-console{top:107px;bottom:auto;left:24px;transform:none;width:310px}
 #combat-feedback{top:230px}
}
@media(max-width:760px){
 .combat-target-console{left:12px;right:12px;top:97px;width:auto;padding:7px 9px 0}
 #combat-roster{gap:5px}#combat-roster button{min-height:44px;padding:4px 8px}#combat-roster small{margin:0 0 3px}
 .combat-target-status{min-height:32px}.combat-target-status p{font-size:9px}.combat-ui #combat-unlock{min-height:44px}
 #combat-feedback{top:204px;font-size:11px}.combat-top nav button{font-size:9px;padding:7px}
 #combat-optics>span{display:none}#combat-optics i{width:140px}
}
@media(max-width:430px){.combat-target-console{top:105px}.combat-top nav{width:100%;justify-content:flex-end}.combat-top nav button{min-height:44px}.combat-target-status p{max-width:240px}}
@media(max-height:600px) and (min-width:600px){.combat-target-console{top:auto;bottom:22px;left:50%;transform:translateX(-50%);width:280px;padding:7px}.combat-target-status{min-height:30px}#combat-feedback{top:103px}}
#combat-kill-banner{position:absolute;top:150px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:14px;padding:13px 22px;background:#202a1ef2;border:1px solid #d6bd7d;border-left-width:4px;box-shadow:0 6px 26px #131b1355;z-index:4;max-width:calc(100% - 32px);pointer-events:none}
#combat-kill-banner>span{font-size:26px;color:#d6bd7d}#combat-kill-banner small{display:block;font-size:10px;letter-spacing:.04em;color:#c9d0b7}#combat-kill-banner strong{display:block;font:normal 25px/1.25 Georgia,serif;color:#fff0c9;margin-top:3px;white-space:nowrap}
.combat-destroyed{width:100%;border-collapse:collapse;margin-top:22px;text-align:left;font-size:12px}
.combat-destroyed caption{text-align:left;font-size:11px;color:#e2cd90;padding:0 0 10px}.combat-destroyed th,.combat-destroyed td{padding:9px 0;border-bottom:1px solid #9ba77d33}.combat-destroyed th{font-weight:500}.combat-destroyed thead{font-size:10px;color:#acb898}.combat-destroyed td{text-align:right;color:#c1c7b0}.combat-destroyed tr[data-destroyed="true"] td{color:#e8d393}.combat-destroyed small{display:block;color:#a7b397;font-size:10px;margin-top:3px}
@media(max-width:700px){#combat-kill-banner{top:265px;padding:10px 16px;gap:10px}#combat-kill-banner strong{font-size:22px}}
@media(max-width:430px){#combat-kill-banner{top:235px}#combat-roster span{font-size:10px;line-height:1.2}.combat-destroyed{font-size:11px}.combat-destroyed td{max-width:110px}}
@media(max-height:600px) and (min-width:600px){#combat-kill-banner{top:132px;padding:8px 16px}#combat-kill-banner strong{font-size:20px}}
.combat-graphics{display:flex;justify-content:space-between;align-items:center;gap:18px;margin:15px 0;color:#bdc6aa;font-size:11px}.combat-graphics select{max-width:65%;min-height:38px;background:#293322;color:#e9dfc3;border:1px solid #85916b;padding:6px 9px;font:inherit}.combat-graphics select:focus-visible{outline:2px solid #ffe5a1;outline-offset:3px}

/* Native modal: focus and background inertness are owned by the browser. */
dialog.combat-menu{position:fixed;inset:0;margin:0;border:0;max-width:none;max-height:none;width:100vw;height:100dvh;color:inherit;box-sizing:border-box}
dialog.combat-menu:not([open]){display:none!important}
dialog.combat-menu::backdrop{background:transparent}

/* v29: held battle controls are not selectable text or touch-callout targets.
   Limit this to the live HUD; museum stories and native menu inputs stay normal. */
body[data-combat="on"] #viewport,
body[data-combat="on"] :is(.combat-touch,.combat-top,.combat-bottom,.combat-target-console,#combat-targets),
body[data-combat="on"] :is(.combat-touch,.combat-top,.combat-bottom,.combat-target-console,#combat-targets) * {
  -webkit-user-select: none;
  user-select: none;
  -webkit-touch-callout: none;
  -webkit-user-drag: none;
}
