/* RTD MASTER INTEGRATION — specialist presentation layers
   Workers A (flow rail), C (roster authorship) and G (map-native terrain)
   appended their presentation to launch-v79-defense-alive.css. Integrated,
   that pushed the core Defense stylesheet past its performance budget, so the
   appended layers live here instead. This file is loaded immediately after
   launch-v79-defense-alive.css, preserving the exact cascade order the
   specialists authored. Other workers already ship their own stylesheets. */
/* Worker A — flow/agency pass: compact contextual choices without expanding the battlefield banner. */
.defense-decision-rail{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:clamp(.25rem,1.4vw,.55rem);padding:clamp(.36rem,1.5vw,.48rem) clamp(.4rem,1.8vw,.58rem);border:2px solid #17151b;border-radius:13px;background:#2b2731;box-shadow:0 3px 0 #17151b;color:#fff;min-width:0}
.defense-decision-rail>span{min-width:0;display:grid;gap:.08rem}
.defense-decision-rail small{font:900 .58rem/1 var(--def-font-mono);letter-spacing:.09em;color:#bdb4c7}
.defense-decision-rail b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:950 .78rem/1.05 var(--def-font-display)}
.defense-decision-rail em{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:700 .62rem/1.1 var(--def-font-mono);font-style:normal;color:#d5cddc}
.defense-decision-rail>div{display:flex;gap:.3rem;align-items:center}
.defense-decision-rail button{min-height:clamp(32px,9vw,36px);min-width:60px;max-width:clamp(88px,28vw,156px);padding:.34rem clamp(.32rem,1.5vw,.5rem);border:2px solid #17151b;border-radius:10px;background:#fff;color:#17151b;box-shadow:0 2px 0 #17151b;font:950 clamp(.56rem,2.2vw,.64rem)/1 var(--def-font-display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.defense-decision-rail button:first-child{background:#73e890}
.defense-decision-rail[data-tone="combat"] button:first-child{background:#ffd45a}
.defense-decision-rail[data-tone="power"] button:first-child{background:#c59cff}
.defense-decision-rail[data-tone="breather"]{outline:2px solid #73e890;outline-offset:-4px}
.defense-decision-rail[data-tone="paused"] button:first-child{background:#ffd45a}
.defense-decision-rail.pulse{animation:def-flow-call .72s ease-out 1}
@keyframes def-flow-call{0%{box-shadow:0 3px 0 #17151b}35%{box-shadow:0 5px 0 #17151b,0 0 0 4px color-mix(in srgb,var(--field-accent) 30%,transparent)}100%{box-shadow:0 3px 0 #17151b}}
/* Worker A layout safety: the contextual call uses the feed's existing footprint. */
.defense-field-feed{position:relative;container-type:inline-size}
.defense-decision-rail{position:absolute;inset:0;z-index:4;height:100%;min-height:0;max-height:none;box-sizing:border-box}
.defense-wave-banner{pointer-events:none}
.defense-boss-bar{position:relative;z-index:5}
@container (max-width:220px){
  .defense-decision-rail{grid-template-columns:minmax(0,1fr) auto;padding:.28rem .34rem;gap:.22rem}
  .defense-decision-rail small,.defense-decision-rail em{display:none}
  .defense-decision-rail b{font-size:.62rem;white-space:normal;line-height:1}
  .defense-decision-rail>div{gap:.18rem}
  .defense-decision-rail button{min-height:32px;min-width:52px;max-width:62px;padding:.24rem .26rem;font-size:.5rem}
}
/* Worker C — roster authorship: functional treatment only; Worker H may reskin. */
.defense-roster-builder{display:grid;gap:.45rem;padding:.55rem;border:2px solid #17151b;border-radius:14px;background:#211d27;color:#fff;box-shadow:0 3px 0 #0e0c11}
.defense-roster-builder-head,.defense-roster-pool-head{display:flex;align-items:center;justify-content:space-between;gap:.55rem}.defense-roster-builder-head>span,.defense-roster-pool-head>span{min-width:0;display:grid;gap:.1rem}.defense-roster-builder-head small,.defense-roster-pool-head small{color:#9ddfff;font-size:.62rem;font-weight:950;letter-spacing:.07em}.defense-roster-builder-head b,.defense-roster-pool-head b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:950 .72rem/1.05 var(--def-font-display)}.defense-roster-builder-head>em,.defense-roster-pool-head>em{flex:0 0 auto;color:#fff2a8;font:900 .58rem/1.1 var(--def-font-mono);font-style:normal;text-align:right}
.defense-roster-selected{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:.35rem}.defense-roster-build-card,.defense-roster-empty{position:relative;min-width:0;min-height:86px;display:grid;grid-template-columns:46px minmax(0,1fr);align-items:center;gap:.3rem;padding:.28rem;border:2px solid #17151b;border-radius:11px;background:#302a37;color:#fff;box-shadow:0 2px 0 #0e0c11;text-align:left;overflow:hidden}.defense-roster-build-card::after{content:"";position:absolute;left:0;right:0;bottom:0;height:4px;background:var(--roster-color,#9ddfff)}.defense-roster-build-card.selected{background:color-mix(in srgb,var(--roster-color,#9ddfff) 24%,#302a37)}.defense-roster-build-card.captain{outline:2px solid #fff2a8;outline-offset:-4px}.defense-roster-build-card:disabled{opacity:1}.defense-roster-builder.locked .defense-roster-build-card:not(.captain){opacity:.62}.defense-roster-build-pet{width:44px;height:64px;object-fit:contain}.defense-roster-build-card>span{min-width:0;display:grid;gap:.1rem}.defense-roster-build-card small{font-size:.56rem;font-weight:950;color:#9ddfff}.defense-roster-build-card b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:950 .68rem/1 var(--def-font-display)}.defense-roster-build-card em{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#d7cedc;font:800 .55rem/1 var(--def-font-mono);font-style:normal}.defense-roster-build-card>i{position:absolute;right:.25rem;top:.24rem;padding:.15rem .25rem;border:1px solid #17151b;border-radius:999px;background:#fff2cf;color:#17151b;font:950 .66rem/1 var(--def-font-mono);font-style:normal}.defense-roster-empty{place-items:center;grid-template-columns:1fr;border-style:dashed;background:#26212b;color:#837987;text-align:center}.defense-roster-empty b{font-size:1.25rem;line-height:1}.defense-roster-empty small{font-size:.52rem;font-weight:900}.defense-roster-pool{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.32rem}.defense-roster-pool .defense-roster-build-card{min-height:72px}.defense-roster-pool.guest-pool .defense-roster-build-card{background:#282333}.defense-roster-lock-note,.defense-roster-empty-copy,.defense-roster-graduated{margin:0;padding:.35rem .45rem;border:1px dashed #5d5362;border-radius:8px;color:#d7cedc;font-size:.6rem;font-weight:800;line-height:1.25}.defense-roster-graduated{color:#bcffca}.defense-roster-tag{display:block;color:#9ddfff;font:950 .66rem/1 var(--def-font-mono);font-style:normal;letter-spacing:.05em}.defense-roster-pet.roster-active{box-shadow:0 3px 0 #17151b,0 0 0 2px #fff2a8 inset}.defense-roster-pet.roster-guest .defense-roster-tag{color:#d8b9ff}.defense-intro-captain{position:absolute;left:50%;bottom:-2px;translate:-50% 0;white-space:nowrap;padding:.2rem .35rem;border:2px solid #17151b;border-radius:999px;background:#fff2a8;color:#17151b;font:950 .56rem/1 var(--def-font-mono);z-index:4}

/* Worker C depth pass — reveal real roster strategy without adding a parallel buff system. */
.defense-roster-read{display:grid;grid-template-columns:repeat(auto-fit,minmax(135px,1fr));gap:.32rem;padding:.38rem;border:1px solid #4f4656;border-radius:10px;background:#17151b}.defense-roster-read>span{min-width:0;display:grid;gap:.12rem;padding:.3rem .38rem;border:1px solid #3b3440;border-radius:8px;background:#28222d}.defense-roster-read small{color:#9ddfff;font:950 .66rem/1 var(--def-font-mono);letter-spacing:.06em}.defense-roster-read b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#fff;font:950 .66rem/1.08 var(--def-font-display)}.defense-roster-read>span.ready{box-shadow:inset 0 0 0 1px #9eff75}.defense-roster-read>span.ready small{color:#9eff75}.defense-roster-read>span.quiet{opacity:.68}
.defense-roster-build-card>span>u{display:flex;flex-wrap:wrap;gap:.18rem;margin-top:.06rem;text-decoration:none}.defense-roster-build-card>span>u>i{padding:.12rem .22rem;border:1px solid #5d5362;border-radius:999px;background:#211d27;color:#d7cedc;font:900 .66rem/1 var(--def-font-mono);font-style:normal;letter-spacing:.025em}.defense-roster-build-card>span>u>i.trail{border-color:#75b86f;background:#18351f;color:#bcffca}.defense-roster-build-card>span>strong{display:block;margin-top:.02rem;color:#fff2a8;font:900 .66rem/1 var(--def-font-mono);letter-spacing:.035em}.defense-roster-build-card.trail-fit{box-shadow:0 2px 0 #0e0c11,inset 0 0 0 2px rgb(158 255 117/.24)}.defense-roster-build-card.trail-fit::before{content:"TRAIL";position:absolute;left:.24rem;top:.2rem;z-index:2;padding:.1rem .18rem;border:1px solid #17151b;border-radius:5px;background:#bcffca;color:#17151b;font:950 .66rem/1 var(--def-font-mono)}
.defense-roster-selected .defense-roster-build-card{min-height:102px}.defense-roster-pool .defense-roster-build-card{min-height:92px}
.defense-captain-tower{filter:drop-shadow(0 0 5px rgb(255 242 168/.34))}.defense-captain-mark{position:absolute;z-index:4;left:50%;top:-13px;translate:-50% 0;min-width:max-content;padding:2px 4px;border:1.5px solid #17151b;border-radius:999px;background:#fff2a8;color:#17151b;box-shadow:0 2px 0 rgb(23 21 27/.65);font:950 7px/1 var(--def-font-mono);font-style:normal;pointer-events:none}.defense-shell[data-field-density="crowded"] .defense-captain-mark{font-size:6px;padding:1px 3px;top:-10px}
/* Worker C depth restraint: give the actual Rizo art room and keep veteran detail concise. */
.defense-roster-build-card,.defense-roster-empty{grid-template-columns:66px minmax(0,1fr)}.defense-roster-build-pet{width:62px;height:76px}.defense-roster-build-card>span{padding-right:2.55rem}.defense-roster-build-card em{max-width:100%}.defense-roster-build-card>span>u{max-width:100%}
.defense-roster-build-pet.mini-pet{position:relative;left:auto;right:auto;top:auto;bottom:auto;transform:none;width:62px;height:76px;justify-self:center;align-self:center;z-index:1}.defense-roster-build-pet.mini-pet .mini-pet-shadow{bottom:4px;height:9px}
.defense-roster-read b{overflow:visible;text-overflow:clip;white-space:normal;line-height:1.16}
/* Worker C depth readability floor: no new tactical text below the Defense 10.5px floor. */
.defense-roster-read small,.defense-roster-read b,.defense-roster-build-card>span>u>i,.defense-roster-build-card>span>strong{font-size:.66rem}.defense-roster-build-card.trail-fit::before{font-size:.66rem}

/* Worker C depth restraint: important roster meaning may wrap instead of truncating on phones. */
.defense-roster-build-card em{overflow:visible;text-overflow:clip;white-space:normal;line-height:1.12}.defense-roster-pool-head b{overflow:visible;text-overflow:clip;white-space:normal;line-height:1.12}
/* ===== Worker G — map-native strategic terrain ===== */
.defense-map-mechanics{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:hidden}
.defense-map-mechanic{position:absolute;left:var(--mechanic-x);top:var(--mechanic-y);width:var(--mechanic-size);aspect-ratio:1;translate:-50% -50%;border:2px dashed color-mix(in srgb,var(--field-accent) 68%,#fff);border-radius:50%;background:color-mix(in srgb,var(--field-accent) 8%,transparent);box-shadow:inset 0 0 0 5px rgb(255 255 255/.025),0 0 18px color-mix(in srgb,var(--field-accent) 16%,transparent);opacity:.48;transition:opacity .16s ease,scale .16s ease,filter .16s ease}
.defense-map-mechanic>b{position:absolute;left:50%;top:50%;translate:-50% -50%;display:grid;place-items:center;width:23px;height:23px;border:1.5px solid color-mix(in srgb,var(--field-accent) 68%,#fff);border-radius:50%;background:rgb(18 15 23/.76);color:#fff;font:950 .8rem/1 var(--def-font-display);box-shadow:0 2px 0 rgb(10 8 13/.45)}
.defense-map-mechanic>span{position:absolute;left:50%;top:calc(100% - 4px);translate:calc(-50% + var(--mechanic-hint-shift,0px)) 0;display:none;width:max-content;min-width:128px;max-width:min(250px,72vw);padding:.28rem .38rem;border:1px solid rgb(255 255 255/.18);border-radius:8px;background:rgb(18 15 23/.88);color:#fff;text-align:center;box-shadow:0 3px 0 rgb(10 8 13/.35)}
.defense-map-mechanic.mechanic-edge-left>span{translate:calc(0px + var(--mechanic-hint-shift,0px)) 0}
.defense-map-mechanic.mechanic-edge-right>span{translate:calc(-100% + var(--mechanic-hint-shift,0px)) 0}
.defense-map-mechanic.mechanic-edge-bottom>span{top:auto;bottom:calc(100% - 4px)}
.defense-map-mechanic>span strong,.defense-map-mechanic>span em{display:block}.defense-map-mechanic>span strong{font:950 .58rem/1 var(--def-font-display);letter-spacing:.07em}.defense-map-mechanic>span em{margin-top:.15rem;color:#ddd4e5;font:750 .52rem/1.15 var(--def-font-body);font-style:normal}
.defense-world.placement-mode .defense-map-mechanic,.defense-world.route-tracing .defense-map-mechanic{opacity:.88;scale:1.03;background:color-mix(in srgb,var(--field-accent) 13%,transparent)}
.defense-world.placement-mode .defense-map-mechanic>span,.defense-world.route-tracing .defense-map-mechanic>span{display:block}
.defense-world.fx-potato .defense-map-mechanic{box-shadow:none;filter:none}.defense-world.fx-potato .defense-map-mechanic>span{backdrop-filter:none}
.mechanic-keeper{border-style:solid}.mechanic-keeper>b{background:#405d43}.mechanic-vent{border-style:dotted}.mechanic-vent>b{background:#702f26}.mechanic-basin{border-style:solid}.mechanic-basin>b{background:#575171}.mechanic-pylon{border-radius:40% 60% 48% 52%;border-style:dashed}.mechanic-pylon>b{background:#315560}.mechanic-shelter{border-style:double;border-width:4px}.mechanic-shelter>b{background:#5a8997}.mechanic-seal{border-style:solid;box-shadow:inset 0 0 0 5px rgb(255 116 190/.04),0 0 18px rgb(255 95 185/.13)}.mechanic-seal>b{background:#54264f}
.defense-world.map-ember.weather-active .mechanic-vent{opacity:1;background:rgb(255 111 70/.14);filter:drop-shadow(0 0 7px #ff895e)}
.defense-world.map-moon.weather-active .mechanic-basin{opacity:1;background:rgb(213 194 255/.12);filter:drop-shadow(0 0 7px #d4c0ff)}
.defense-world.map-storm.weather-active .mechanic-pylon{opacity:1;filter:drop-shadow(0 0 8px #b6f6ff);animation:def-map-pylon-charge .6s ease-in-out infinite alternate}
.defense-world.map-blizzard.whiteout-live .mechanic-shelter{opacity:1;background:rgb(228 251 255/.16);filter:drop-shadow(0 0 7px #fff)}
.defense-world.map-eclipse.weather-active .mechanic-seal{opacity:1;filter:drop-shadow(0 0 8px #ff78bd)}
@keyframes def-map-pylon-charge{from{scale:1;rotate:-1deg}to{scale:1.045;rotate:1deg}}

.defense-tower.defense-map-bond .defense-aura{filter:drop-shadow(0 0 5px color-mix(in srgb,var(--field-accent) 65%,transparent))}.defense-map-bond-badge{position:absolute;z-index:8;right:4px;bottom:8px;display:grid;place-items:center;width:18px;height:18px;border:1.5px solid var(--play-outline);border-radius:50%;background:color-mix(in srgb,var(--field-accent) 70%,#211d27);color:#fff;font:950 .62rem/1 var(--def-font-display);box-shadow:0 2px 0 rgb(0 0 0/.35)}
.defense-tower.map-bond-vent .defense-map-bond-badge{animation:def-map-bond-hot .8s ease-in-out infinite alternate}.defense-world.map-storm.weather-active .defense-tower.map-bond-pylon .defense-map-bond-badge{animation:def-map-pylon-charge .45s ease-in-out infinite alternate}.defense-world.map-blizzard.whiteout-live .defense-tower.map-bond-shelter{filter:drop-shadow(0 0 1.5px var(--play-outline)) drop-shadow(0 0 7px rgb(230 255 255/.48))}.defense-world.map-eclipse.weather-active .defense-tower.map-bond-seal{filter:drop-shadow(0 0 1.5px var(--play-outline)) drop-shadow(0 0 7px rgb(255 110 194/.42))}
@keyframes def-map-bond-hot{from{translate:0 0}to{translate:0 -2px}}
.defense-map-bond-copy{display:grid;gap:.15rem;margin:.4rem 0 0;padding:.42rem .5rem;border:1px solid color-mix(in srgb,var(--field-accent) 45%,#4d4353);border-radius:10px;background:color-mix(in srgb,var(--field-accent) 9%,#211d27);color:#efe6f1;font-size:.67rem;line-height:1.25}.defense-map-bond-copy b{color:#fff;font-size:.62rem;letter-spacing:.05em}.defense-map-bond-copy span{color:#ddd4e5}
.field-guide-map-mechanic{display:block;margin-top:.28rem;padding:.3rem .38rem;border-radius:8px;background:color-mix(in srgb,var(--guide-color) 12%,#201b25);color:#eee3ef;font-weight:850}

/* Worker G depth pass — readable map mastery, not extra input */
.defense-map-mechanic.mechanic-has-core::after{content:"";position:absolute;left:50%;top:50%;width:var(--mechanic-core);aspect-ratio:1;translate:-50% -50%;border:1.5px solid color-mix(in srgb,var(--field-accent) 80%,#fff);border-radius:50%;background:color-mix(in srgb,var(--field-accent) 9%,transparent);opacity:.68;box-shadow:inset 0 0 10px color-mix(in srgb,var(--field-accent) 22%,transparent)}
.defense-world.placement-mode .mechanic-vent.mechanic-has-core::after{opacity:1;border-style:dotted;background:rgb(255 103 63/.13);box-shadow:inset 0 0 12px rgb(255 90 45/.18),0 0 10px rgb(255 99 57/.18)}
.defense-map-bond-link{position:absolute;left:var(--link-x);top:var(--link-y);width:var(--link-length);height:3px;transform-origin:0 50%;rotate:var(--link-angle);translate:0 -50%;opacity:.16;background:repeating-linear-gradient(90deg,color-mix(in srgb,var(--field-accent) 66%,#fff) 0 7px,transparent 7px 14px);filter:drop-shadow(0 0 3px color-mix(in srgb,var(--field-accent) 25%,transparent));transition:opacity .2s ease,filter .2s ease}
.defense-map-bond-link>u{position:absolute;inset:-5px 0;text-decoration:none;border-block:1px solid color-mix(in srgb,var(--field-accent) 18%,transparent);opacity:.5}
.defense-world.map-circuit-linked .defense-map-bond-link.link-pylon,.defense-world.map-seal-resonance .defense-map-bond-link.link-seal{opacity:.76;filter:drop-shadow(0 0 5px color-mix(in srgb,var(--field-accent) 72%,#fff))}
.defense-world.map-storm.map-circuit-linked.weather-active .defense-map-bond-link.link-pylon{opacity:1;animation:def-map-link-live .5s linear infinite}
.defense-world.map-eclipse.map-seal-resonance.weather-active .defense-map-bond-link.link-seal{opacity:1;animation:def-map-link-live .85s ease-in-out infinite alternate}
@keyframes def-map-link-live{from{filter:drop-shadow(0 0 3px color-mix(in srgb,var(--field-accent) 56%,#fff));background-position:0 0}to{filter:drop-shadow(0 0 9px color-mix(in srgb,var(--field-accent) 90%,#fff));background-position:14px 0}}
.defense-tower.map-bond-tier-core .defense-map-bond-badge{outline:2px solid rgb(255 105 64/.34);outline-offset:2px;animation:def-map-bond-hot .42s ease-in-out infinite alternate}
.defense-world.map-moon.weather-active .defense-tower.map-bond-basin .defense-map-bond-badge{outline:2px solid rgb(220 206 255/.34);outline-offset:2px;animation:def-map-pylon-charge .62s ease-in-out infinite alternate}
.defense-world.map-circuit-linked .defense-tower.map-bond-pylon .defense-map-bond-badge,.defense-world.map-seal-resonance .defense-tower.map-bond-seal .defense-map-bond-badge{box-shadow:0 0 0 2px color-mix(in srgb,var(--field-accent) 28%,transparent),0 0 11px color-mix(in srgb,var(--field-accent) 48%,transparent),0 2px 0 rgb(0 0 0/.35)}
.defense-placement-preview.map-bond-preview{color:color-mix(in srgb,var(--field-accent) 76%,#fff);border-color:color-mix(in srgb,var(--field-accent) 76%,#fff);background:color-mix(in srgb,var(--field-accent) 14%,transparent)}
.defense-placement-preview.map-bond-preview .defense-placement-label{max-width:166px;color:#fff;background:color-mix(in srgb,var(--field-accent) 74%,#251d2a);border-color:#fff;white-space:normal;line-height:1.08;text-align:center}
.defense-world.fx-potato .defense-map-bond-link{filter:none;animation:none}.defense-world.fx-potato .defense-map-mechanic.mechanic-has-core::after{box-shadow:none}
