@font-face{font-family:Plex;src:url('assets/fonts/plex-mono-regular.ttf') format('truetype');font-display:swap}
@font-face{font-family:Russo;src:url('assets/fonts/russo-one.ttf') format('truetype');font-display:swap}
:root{color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:#000;color:#eee;min-height:100dvh;font-family:Plex,'Courier New',monospace}body::after{content:'';position:fixed;inset:0;pointer-events:none;background:repeating-linear-gradient(transparent 0 3px,#ffffff02 3px 4px);z-index:3}.hud-background{position:fixed;inset:0;width:100%;height:100%;color:#666;opacity:.36;pointer-events:none}main{position:relative;max-width:1600px;min-height:100dvh;margin:auto;padding:clamp(45px,7vh,75px) clamp(24px,7vw,110px) 90px}header{display:flex;align-items:center;gap:28px;margin-bottom:clamp(35px,6vh,64px)}h1{margin:0;font:clamp(30px,3.5vw,48px)/1 Russo,'Arial Black',sans-serif;letter-spacing:-1px;transform:skewX(-8deg)}.header-line{width:64px;height:7px;border-bottom:1px solid #666;background:repeating-linear-gradient(to right,#777 0 1px,transparent 1px 8px)}.fleet-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,290px));gap:28px;align-content:start}.unit-tile{display:block;color:inherit;text-decoration:none;border:1px solid #3c3c3c;background:#000;position:relative;transition:border-color .16s}.unit-tile::before,.unit-tile::after{content:'';position:absolute;width:12px;height:12px;border-color:#a0a0a0;border-style:solid;pointer-events:none;z-index:2}.unit-tile::before{top:-1px;left:-1px;border-width:1px 0 0 1px}.unit-tile::after{bottom:-1px;right:-1px;border-width:0 1px 1px 0}.tile-image{aspect-ratio:1.5;background:#000;transition:filter .16s;overflow:hidden}.tile-image img{display:block;width:100%;height:100%;object-fit:contain;padding:14px}h2{margin:0;padding:15px 14px;border-top:1px solid #303030;font:400 11px/1.5 Plex,monospace;letter-spacing:.35px}.unit-tile:hover{border-color:#ddd}.unit-tile:hover .tile-image,.unit-tile:focus-visible .tile-image{filter:invert(1)}.unit-tile:focus-visible{outline:2px solid #fff;outline-offset:5px}@media(max-width:540px){main{padding:45px 24px 60px}header{margin-bottom:36px}.fleet-grid{grid-template-columns:repeat(auto-fill,minmax(230px,290px))}.hud-background{opacity:.25}h1{font-size:32px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}




/* TSR title: asymmetric, interrupted monochrome traces. */
.title-background{color:#ededed;opacity:.8;stroke-width:1.3;filter:drop-shadow(0 0 1px #ffffff48)}
.trace-layer,.trace-fragments{animation:trace-drift 11s linear infinite;animation-delay:var(--delay);filter:none}
.trace-1{animation-duration:16s;animation-direction:reverse}.trace-2{animation-duration:13s}.trace-3{animation-duration:19s;animation-direction:reverse}
.trace-fragments{animation-name:trace-transmission}

.title-slashes{animation:trace-transmission 9s linear infinite;animation-delay:-3s}
@keyframes trace-drift{0%,100%{transform:translateX(0);opacity:.8}35%{transform:translateX(14px);opacity:1}70%{transform:translateX(-9px);opacity:.7}}
@keyframes trace-transmission{0%,100%{transform:translateX(0);opacity:.65}28%{transform:translateX(24px);opacity:.9}29%{opacity:.3}30%{opacity:.85}65%{transform:translateX(-18px);opacity:.5}66%{opacity:.15}67%{opacity:.7}}

@media(max-width:540px){.title-background{opacity:.45}}
@media(prefers-reduced-motion:reduce){.title-background *{animation:none!important}}


[hidden]{display:none!important}.discovery-caption{display:block;margin-top:6px;color:#888;font-size:8px;letter-spacing:1px}.discovery-notice{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);margin:0;color:#bbb;font-size:10px;letter-spacing:1px;pointer-events:none;z-index:4}.discovered-tile.revealing{animation:reveal-unit .8s ease-out}.discovered-tile:hover .tile-image{filter:invert(1)}@keyframes reveal-unit{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){}

.fleet-grid{align-items:start}
.fleet-title{font:inherit;letter-spacing:inherit;color:inherit;background:none;border:0;padding:0;user-select:none;-webkit-user-select:none;touch-action:none;cursor:default}.fleet-title:focus-visible{outline:1px solid #777;outline-offset:6px}h1{user-select:none;-webkit-user-select:none}.unit-tile h2{height:48px;display:flex;align-items:center}.trace-node{position:fixed;z-index:4;width:48px;height:36px;padding:6px;background:none;border:0;color:#555;cursor:default;touch-action:manipulation}.trace-node svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1}.trace-node.lit{color:#fff;filter:drop-shadow(0 0 3px #fff);}.trace-node:focus-visible{outline:1px solid #666;outline-offset:2px}.node-1{left:43%;top:17%}.node-2{right:8%;top:30%}.node-3{right:14%;bottom:24%}.node-4{left:43%;bottom:10%}.node-5{left:6%;bottom:24%}@media(max-width:540px){.node-1{left:42%;top:52%}.node-2{right:8%;top:61%}.node-3{right:14%;bottom:20%}.node-4{left:43%;bottom:10%}.node-5{left:6%;bottom:20%}.discovery-notice{width:90%;text-align:center;font-size:9px}}

/* Discovered presence: dossier not yet available. */
.discovered-tile{border:1px dashed #353535;background:#000;cursor:default}.discovered-tile::before,.discovered-tile::after{border-color:#555}.discovered-tile .tile-image{opacity:.38;filter:none;position:relative}.discovered-tile .tile-image::after{content:'';position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(transparent 0 4px,#0009 4px 5px)}.discovered-tile:hover{border-color:#353535}.discovered-tile:hover .tile-image{filter:none}.discovered-tile h2{color:#888;border-top:1px dashed #303030;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:3px;padding:7px 14px}.ghost-status{font-size:7px;line-height:1.3;letter-spacing:1px;color:#626262}
.discovered-tile .tile-image{opacity:1}.discovered-tile .tile-image>img:first-child{opacity:.38}.discovered-tile .tile-image .xray-sweep{position:absolute;inset:0;opacity:.95;pointer-events:none;mask-image:linear-gradient(90deg,transparent 0%,#000 38%,#000 62%,transparent 100%);mask-size:32% 100%;mask-repeat:no-repeat;mask-position:-50% 0;animation:xray-pass 4.8s linear infinite}.discovered-tile .tile-image::after{z-index:2;background:repeating-linear-gradient(transparent 0 4px,#0005 4px 5px)}@keyframes xray-pass{from{mask-position:-50% 0}to{mask-position:150% 0}}@media(prefers-reduced-motion:reduce){.discovered-tile .tile-image .xray-sweep{animation:none;display:none}}
/* Ambient title glitch; independent of discovery state. */
.fleet-title{position:relative;isolation:isolate}.fleet-title::before,.fleet-title::after{content:attr(data-text);position:absolute;inset:0;color:inherit;pointer-events:none;opacity:0;user-select:none}.fleet-title::before{animation:fleet-glitch-upper 4.7s steps(1,end) infinite}.fleet-title::after{animation:fleet-glitch-lower 6.1s steps(1,end) infinite;animation-delay:-1.7s}@keyframes fleet-glitch-upper{0%,7%,13%,46%,53%,100%{opacity:0;transform:translateX(0);clip-path:inset(0 0 100% 0)}8%{opacity:1;transform:translateX(3px);clip-path:inset(20% 0 58% 0)}10%{opacity:1;transform:translateX(-2px);clip-path:inset(42% 0 48% 0)}12%{opacity:.8;transform:translateX(1px);clip-path:inset(9% 0 76% 0)}48%{opacity:1;transform:translateX(-3px);clip-path:inset(27% 0 62% 0)}51%{opacity:.7;transform:translateX(2px);clip-path:inset(48% 0 44% 0)}}@keyframes fleet-glitch-lower{0%,22%,28%,73%,79%,100%{opacity:0;transform:translateX(0);clip-path:inset(100% 0 0 0)}23%{opacity:.9;transform:translateX(-3px);clip-path:inset(68% 0 18% 0)}25%{opacity:1;transform:translateX(2px);clip-path:inset(54% 0 36% 0)}27%{opacity:.7;transform:translateX(-1px);clip-path:inset(80% 0 10% 0)}74%{opacity:1;transform:translateX(3px);clip-path:inset(58% 0 24% 0)}77%{opacity:.8;transform:translateX(-2px);clip-path:inset(75% 0 17% 0)}}@media(prefers-reduced-motion:reduce){.fleet-title::before,.fleet-title::after{animation:none;opacity:0}}
