:root{color:#d9edf1;font-synthesis:none;text-rendering:optimizelegibility;background:#070b0d;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:linear-gradient(#0c1618fa,#050708),#070b0d;min-width:320px;min-height:100vh;margin:0;overflow-x:hidden}button,input{font:inherit}button{cursor:pointer}button:disabled,input:disabled{cursor:not-allowed;opacity:.55}.opening-sequence{color:#d9edf1;background:#05080a;place-items:center;min-height:100vh;display:grid;position:relative;overflow:hidden}.opening-visual{z-index:0;background-color:#05080a;background-image:var(--opening-image);will-change:transform;background-position:50%;background-size:cover;position:absolute;inset:0}.motion-slow-zoom .opening-visual{animation:18s ease-in-out infinite alternate opening-slow-zoom}.motion-push-in .opening-visual{animation:15s ease-in-out infinite alternate opening-push-in}.motion-pan-left .opening-visual{animation:18s ease-in-out infinite alternate opening-pan-left}.motion-pan-right .opening-visual{animation:18s ease-in-out infinite alternate opening-pan-right}.opening-hud{z-index:1;background:0 0;grid-template-rows:auto 1fr auto;gap:clamp(14px,2vw,24px);width:100%;min-height:100vh;padding:clamp(28px,5vw,72px) clamp(24px,8vw,112px);display:grid;position:relative}.opening-status,.opening-actions{justify-content:space-between;align-items:center;gap:16px;display:flex}.opening-status span,.opening-status strong,.opening-speaker{letter-spacing:0;text-transform:uppercase;font-family:SFMono-Regular,Consolas,monospace;font-size:13px}.opening-status span{color:#bff6ffdb;text-shadow:0 0 10px #58e6ff6b,0 2px 9px #000000f5}.opening-status strong{color:#58e6ff}.opening-dialogue{filter:drop-shadow(0 10px 28px #000000bd);border-left:2px solid #58e6ffeb;align-self:end;max-width:min(880px,74vw);padding:0 0 0 clamp(16px,2.1vw,28px)}.opening-dialogue h2{color:#dffcff;text-shadow:0 0 2px #dffcff,0 0 16px #58e6ff85,0 3px #040c0efa,0 11px 28px #000000f5;margin:10px 0 16px;font-family:SFMono-Regular,IBM Plex Mono,JetBrains Mono,Consolas,monospace;font-size:clamp(34px,5vw,68px);font-weight:900;line-height:1.02}.opening-dialogue p{color:#bff6ff;text-shadow:0 0 9px #58e6ff94,0 2px #02080afa,0 9px 22px #000000f5;white-space:pre-line;min-height:176px;margin:0;font-family:SFMono-Regular,IBM Plex Mono,JetBrains Mono,Consolas,monospace;font-size:clamp(17px,2vw,25px);font-weight:760;line-height:1.72}.opening-typewriter-text:after{color:#58e6ff;content:"▌";text-shadow:0 0 12px #58e6ffe6;width:.72ch;animation:.82s step-end infinite opening-caret;display:inline-block}.opening-speaker{color:#58e6ff;text-shadow:0 0 10px #58e6ffad,0 2px 8px #000000eb}.speaker-mirror{border-left-color:#ff4f5ed9;animation:1.8s steps(2,end) infinite opening-glitch}.speaker-mirror .opening-speaker,.speaker-mirror h2{color:#ff7b84;text-shadow:0 0 2px #ff7b84,0 0 18px #ff4f5e99,0 3px #080204fa,0 11px 28px #000000f5}.tone-alert .opening-dialogue,.tone-channel .opening-dialogue{border-left-color:#ff4f5ee6}.tone-archive .opening-dialogue,.tone-analysis .opening-dialogue{border-left-color:#ffc35adb}.opening-button{color:#d9edf1;background:#0a1b1fe0;border:1px solid #58e6ff80;min-width:128px;padding:12px 16px;font-family:SFMono-Regular,Consolas,monospace;font-weight:800}.opening-button:hover{background:#102d33f5;border-color:#58e6ff}.opening-button.primary{color:#071013;background:#58e6ff}.opening-button.secondary{color:#a9b9bd}.ending-sequence{min-height:100vh}.ending-sequence .opening-dialogue{max-width:min(940px,78vw)}.ending-sequence .opening-dialogue h2{font-size:clamp(30px,4.2vw,56px)}.ending-sequence .opening-dialogue p{min-height:150px;font-size:clamp(16px,1.65vw,22px);line-height:1.58}.ending-choice-actions{flex-wrap:wrap;gap:12px;margin-top:18px;display:flex}.ending-choice-actions .opening-button{min-width:148px}.opening-button.danger{color:#fff1f2;background:#560e14e6;border-color:#ff4f5eb8;box-shadow:0 0 24px #ff4f5e2e}.opening-button.danger:hover{background:#74141cf5;border-color:#ff7b84}#ending-root:empty{display:none}#ending-root:not(:empty){z-index:20;position:fixed;inset:0}@keyframes opening-slow-zoom{0%{transform:scale(1.01)}to{transform:scale(1.045)}}@keyframes opening-push-in{0%{transform:scale(1.02)translateY(0)}to{transform:scale(1.08)translateY(-1.6%)}}@keyframes opening-pan-left{0%{transform:scale(1.075)translate(1.8%)}to{transform:scale(1.075)translate(-1.8%)}}@keyframes opening-pan-right{0%{transform:scale(1.075)translate(-1.8%)}to{transform:scale(1.075)translate(1.8%)}}@keyframes opening-caret{0%,48%{opacity:1}49%,to{opacity:0}}@keyframes opening-glitch{0%,92%,to{transform:translate(0)}94%{transform:translate(2px)}96%{transform:translate(-2px)}}.app-shell{grid-template-rows:auto minmax(0,1fr);gap:10px;width:min(1500px,100vw - 28px);height:100vh;margin:0 auto;padding:10px 0;display:grid}.topbar{grid-template-columns:minmax(260px,.6fr) minmax(640px,1fr);align-items:stretch;gap:10px;display:grid}.brand,.hud-strip,.panel,.battle-panel,.tower-shop,.wave-control{background:#0a1113eb;border:1px solid #74919452;box-shadow:0 18px 60px #0000003d}.brand{flex-wrap:wrap;align-items:center;gap:10px;min-height:0;padding:6px 12px;display:flex}.brand-mark{color:#58e6ff;letter-spacing:0;border:2px solid #58e6ff;place-items:center;width:30px;height:30px;font-family:SFMono-Regular,Consolas,monospace;font-size:12px;font-weight:800;display:grid;transform:skew(-8deg)}.brand-text{flex-direction:row;flex:auto;align-items:baseline;gap:10px;min-width:0;display:flex}.brand h1{white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:15px;line-height:1.1;overflow:hidden}.brand p,.panel-heading span,.hud-card span{color:#8ea3a7;letter-spacing:0;text-transform:uppercase;margin:0;font-family:SFMono-Regular,Consolas,monospace;font-size:11px}.brand p{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mirror-pulse-strip{letter-spacing:0;color:#ffd0d3;white-space:nowrap;background:linear-gradient(90deg,#140004d9,#28060a73);border:1px solid #ff5a6e59;align-items:center;gap:8px;min-width:240px;max-width:360px;margin-left:6px;padding:4px 10px;font-family:SFMono-Regular,Consolas,monospace;font-size:11px;display:inline-flex;overflow:hidden}.mirror-pulse-tag{color:#ff7a86;letter-spacing:.5px;text-transform:uppercase;font-weight:700}.mirror-pulse-dot{background:#ff5d6f;border-radius:50%;width:7px;height:7px;animation:1.6s ease-in-out infinite mirror-pulse-dot;display:inline-block;box-shadow:0 0 6px #ff5d6f}@keyframes mirror-pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.7)}}.mirror-pulse-text{text-overflow:ellipsis;color:#ffe2e4;letter-spacing:.3px;flex:auto;font-size:12px;overflow:hidden}.mirror-pulse-text.flip{animation:.32s ease-out mirror-pulse-flip}@keyframes mirror-pulse-flip{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.mirror-pulse-wave{align-items:flex-end;gap:2px;height:14px;display:inline-flex}.mirror-pulse-wave i{opacity:.85;background:#ff5d6f;border-radius:1px;width:2px;height:100%;animation:1s ease-in-out infinite mirror-pulse-bar;display:inline-block}.mirror-pulse-wave i:first-child{animation-delay:0s}.mirror-pulse-wave i:nth-child(2){animation-delay:.12s}.mirror-pulse-wave i:nth-child(3){animation-delay:.24s}.mirror-pulse-wave i:nth-child(4){animation-delay:.36s}.mirror-pulse-wave i:nth-child(5){animation-delay:.48s}@keyframes mirror-pulse-bar{0%,to{transform:scaleY(.35)}50%{transform:scaleY(1)}}.hud-strip{grid-template-columns:repeat(6,minmax(0,1fr)) auto;gap:1px;padding:4px;display:grid}.hud-card{background:#0d171ad1;border:1px solid #74919438;justify-content:space-between;align-items:baseline;gap:6px;min-width:0;min-height:0;padding:6px 8px;display:flex;overflow:hidden}.hud-card span{white-space:nowrap;text-overflow:ellipsis;flex:none;overflow:hidden}.hud-card strong{color:#58e6ff;text-align:right;white-space:nowrap;text-overflow:ellipsis;flex:auto;margin-top:0;font-size:14px;line-height:1.1;display:inline-block;overflow:hidden}.hud-card.phase strong{color:#ffc35a}.hud-card.stage-card strong{color:#ffd76a}.audio-toggle{color:#58e6ff;text-transform:uppercase;letter-spacing:.04em;background:#0a1b1fb8;border:1px solid #58e6ff5c;justify-content:center;align-items:center;gap:6px;min-width:64px;padding:4px 10px;font-family:SFMono-Regular,Consolas,monospace;font-size:11px;display:inline-flex}.audio-toggle:hover{background:#102d33f0;border-color:#58e6ff}.audio-toggle .audio-toggle-label{color:#8ea3a7;font-size:10px}.audio-toggle strong{color:#58e6ff;letter-spacing:0;font-size:12px}.audio-toggle.muted{color:#ff8a4d;border-color:#ff8a4d99}.audio-toggle.muted strong{color:#ff8a4d}.mission-grid{grid-template:"battle side"minmax(0,1fr)"shop side"/minmax(620px,1fr) 360px;gap:12px;min-height:0;display:grid}.battle-panel{flex-direction:column;grid-area:battle;min-width:0;min-height:0;padding:10px;display:flex}.tower-shop{grid-area:shop}.panel-heading{justify-content:space-between;align-items:center;gap:10px;min-height:22px;margin-bottom:6px;display:flex}.panel-heading strong{color:#ffc35a;text-align:right;font-family:SFMono-Regular,Consolas,monospace;font-size:12px;font-weight:700}.game-root{background:#081012;border:1px solid #58e6ff26;flex:auto;width:100%;min-height:260px;overflow:hidden}.side-panel{grid-area:side;grid-template-rows:auto minmax(0,1fr);gap:12px;min-height:0;display:grid;overflow:hidden}.panel{min-width:0;padding:14px}.memory-summary,.last-report{color:#a9b9bd;margin:10px 0 0;font-size:13px;line-height:1.45}.mirror-console{isolation:isolate;background:linear-gradient(#26080cc7,#080e10eb),radial-gradient(120% 60% at 50% -10%,#ff4f5e38,#0000 70%);border:1px solid #ff4f5e6b;grid-template-rows:auto auto minmax(0,1fr) auto;min-height:0;padding:0;transition:border-color .4s,box-shadow .4s,filter .4s;display:grid;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #ff4f5e29,0 0 32px #ff4f5e14}.mirror-name-strip{letter-spacing:.06em;white-space:nowrap;background:linear-gradient(90deg,#3c0a0ee6,#0a1012d9);border-bottom:1px solid #ff4f5e47;grid-template-columns:minmax(0,auto) minmax(0,1fr) minmax(0,auto);align-items:center;gap:12px;padding:8px 14px;font-family:SFMono-Regular,Consolas,monospace;display:grid}.mirror-name-tag{letter-spacing:.16em;text-transform:uppercase;color:#ff929b;opacity:.78;text-overflow:ellipsis;font-size:9px;overflow:hidden}.mirror-name-id{letter-spacing:.22em;color:#ffe4e7;text-shadow:0 0 12px #ff4f5e8c;text-align:center;font-size:16px;font-weight:700}.mirror-name-node{letter-spacing:.14em;text-transform:uppercase;color:#8ea3a7;text-align:right;text-overflow:ellipsis;font-size:9px;overflow:hidden}.mirror-console:before{pointer-events:none;content:"";z-index:0;background:repeating-linear-gradient(#0000 0 3px,#ff4f5e0d 4px);position:absolute;inset:0}.mirror-console>*{z-index:1;position:relative}.mirror-portrait{background:linear-gradient(#3c0a0e80,#0a101200);border-bottom:1px solid #ff4f5e38;grid-template-columns:132px minmax(0,1fr);gap:14px;padding:12px 14px;display:grid;position:relative}.mirror-portrait-frame{background:#0b0e10;border:1px solid #ff4f5e4d;width:132px;height:168px;position:relative;overflow:hidden}.mirror-portrait img{object-fit:cover;object-position:top center;filter:saturate(1.05)contrast(1.05);-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:100%;height:100%;transition:filter .4s,transform .4s;display:block}.mirror-portrait-overlay{pointer-events:none;position:absolute;inset:0;overflow:hidden}.mirror-scanline{opacity:0;filter:blur(.5px);background:linear-gradient(90deg,#0000,#58e6ffd9,#0000);height:3px;transition:opacity .3s;position:absolute;left:-10%;right:-10%}.mirror-blinded-banner{text-align:center;letter-spacing:.42em;color:#ff6b77;opacity:0;pointer-events:none;background:#140406c7;border-top:1px solid #ff4f5eb3;border-bottom:1px solid #ff4f5eb3;padding:6px 0;font-family:SFMono-Regular,Consolas,monospace;font-size:16px;font-weight:700;transition:opacity .3s;position:absolute;top:50%;left:-10%;right:-10%;transform:translateY(-50%)skewY(-3deg)}.mirror-portrait-meta{align-content:start;gap:8px;min-width:0;display:grid}.mirror-portrait-row{flex-wrap:wrap;gap:6px;display:flex}.mirror-state-chip,.belief-chip{letter-spacing:.08em;text-transform:uppercase;color:#8addeb;background:#0c1a1ebd;border:1px solid #58e6ff66;align-items:center;padding:4px 8px;font-family:SFMono-Regular,Consolas,monospace;font-size:11px;display:inline-flex}.belief-chip[data-belief=believe]{color:#b5f0bb;background:#0e1e12b3;border-color:#7af0828c}.belief-chip[data-belief=doubt]{color:#ffd278;background:#281808b3;border-color:#ffc35aa6}.belief-chip[data-belief=ignore]{color:#b9c8cb;background:#0e1214b3;border-color:#74919466}.credibility-ring{--score:.5;background:conic-gradient(#58e6ffd9 calc(var(--score) * 360deg), #28383c8c 0);border-radius:50%;place-items:center;width:64px;height:64px;margin-top:2px;display:grid;position:relative;box-shadow:inset 0 0 0 1px #58e6ff40,0 0 12px #58e6ff2e}.credibility-ring:before{content:"";background:#080e10eb;border-radius:50%;position:absolute;inset:6px}.credibility-ring .credibility-label{letter-spacing:.16em;color:#6f8a8e;text-transform:uppercase;font-family:SFMono-Regular,Consolas,monospace;font-size:9px;position:relative}.credibility-ring strong{color:#ffc35a;letter-spacing:.04em;margin-top:-2px;font-family:SFMono-Regular,Consolas,monospace;font-size:14px;position:relative}.memory-tags{flex-wrap:wrap;gap:6px;margin-top:2px;display:flex}.memory-tag{color:#8addeb;letter-spacing:.04em;background:#0c2226c7;border:1px solid #58e6ff3d;align-items:center;padding:4px 8px;font-family:SFMono-Regular,Consolas,monospace;font-size:11px;display:inline-flex}.memory-tag.empty{color:#6f8a8e;border-color:#74919447}.memory-tag.count{color:#ffc35a;background:#281808b3;border-color:#ffc35a73}.mirror-feed-wrap{grid-template-rows:auto minmax(0,1fr);min-height:0;display:grid}.mirror-feed-heading{text-transform:uppercase;color:#8ea3a7;letter-spacing:.18em;border-bottom:1px solid #74919429;justify-content:space-between;align-items:center;padding:10px 14px 8px;font-family:SFMono-Regular,Consolas,monospace;font-size:11px;display:flex}.mirror-feed-heading strong{color:#58e6ff;letter-spacing:.2em}.mirror-feed{scroll-behavior:auto;scrollbar-width:thin;scrollbar-color:#58e6ff47 transparent;overscroll-behavior:contain;flex-direction:column;gap:8px;padding:12px 14px 14px;display:flex;overflow-y:auto}.mirror-feed::-webkit-scrollbar{width:6px}.mirror-feed::-webkit-scrollbar-thumb{background:#58e6ff47}.feed-entry{background:#0c1214b8;border-left:2px solid #ff4f5e73;gap:4px;padding:8px 10px;animation:.24s ease-out feed-fade-in;display:grid}.feed-entry .feed-label{letter-spacing:.18em;text-transform:uppercase;color:#ff6b77;font-family:SFMono-Regular,Consolas,monospace;font-size:10px}.feed-entry .feed-text{color:#ffd9dd;overflow-wrap:anywhere;margin:0;font-size:14px;line-height:1.55}.feed-entry.mirror_speech{background:linear-gradient(#300a108c,#0c1214b8);border-left-color:#ff4f5eb3}.feed-entry.mirror_analysis{background:linear-gradient(#0c202699,#0c1214b8);border-left-color:#58e6ffa6}.feed-entry.mirror_analysis .feed-label{color:#58e6ff}.feed-entry.mirror_analysis .feed-text{color:#cdeef6}.feed-entry.mirror_intel{background:#140e0899;border-left-color:#ffc35a80}.feed-entry.mirror_intel .feed-label{color:#ffc35a}.feed-entry.player{background:#0a160ca6;border-left-color:#7af082a6}.feed-entry.player .feed-label{color:#95e89d}.feed-entry.player .feed-text{color:#d8f4dd}.feed-entry.system{background:#0a0e10c7;border-left-color:#74919473}.feed-entry.system .feed-label{color:#8ea3a7}.feed-entry.system .feed-text{color:#b9c8cb;font-style:italic}.feed-intel{gap:4px;margin-top:2px;display:grid}.feed-intel .intel-row{grid-template-columns:56px minmax(0,1fr);align-items:baseline;gap:8px;font-size:12px;line-height:1.4;display:grid}.feed-intel .intel-row span{color:#8ea3a7;letter-spacing:.16em;text-transform:uppercase;font-family:SFMono-Regular,Consolas,monospace;font-size:10px}.feed-intel .intel-row strong{color:#d9edf1;font-weight:500}.feed-cursor{color:#ff929b;margin-left:2px;animation:.85s steps(2,end) infinite feed-cursor;display:inline-block}.mirror-console[data-state=online]{border-color:#ff4f5e6b}.mirror-console[data-state=analyzing]{border-color:#58e6ff8c;box-shadow:inset 0 0 0 1px #58e6ff33,0 0 28px #58e6ff29}.mirror-console[data-state=analyzing] .mirror-portrait img{filter:hue-rotate(40deg)saturate(1.25)contrast(1.05)brightness(1.02);animation:1.5s ease-in-out infinite alternate mirror-pulse}.mirror-console[data-state=analyzing] .mirror-scanline{opacity:.85;animation:1.4s linear infinite mirror-scan}.mirror-console[data-state=summary]{filter:saturate(.8);border-color:#7491946b}.mirror-console[data-state=summary] .mirror-portrait img{filter:grayscale(.6)brightness(.72)contrast(1.05)}.mirror-console[data-state=summary] .mirror-blinded-banner{opacity:.92;animation:2.4s ease-in-out infinite blinded-flicker}.mirror-console[data-state=combat]{border-color:#ff4f5eb3;box-shadow:inset 0 0 0 1px #ff4f5e40,0 0 30px #ff4f5e2e}.mirror-console[data-state=combat] .mirror-portrait img{filter:saturate(1.2)contrast(1.1)brightness(1.04);transform:scale(1.02)}.mirror-console[data-state=combat]:after{pointer-events:none;content:"";background:radial-gradient(circle at 50% 0,#ff4f5e1f,#0000 60%);position:absolute;inset:0}.mirror-console[data-state=victory],.mirror-console[data-state=defeat]{border-color:#3c464899}.mirror-console[data-state=victory] .mirror-portrait img,.mirror-console[data-state=defeat] .mirror-portrait img{filter:grayscale(.85)brightness(.5)}.mirror-console.low-hp{animation:1.6s steps(2,end) infinite glitch}.mirror-console.low-hp .mirror-portrait img{animation:1.6s steps(3,end) infinite glitch-img}@keyframes mirror-pulse{0%{box-shadow:inset 0 0 0 1px #58e6ff33}to{box-shadow:inset 0 0 0 1px #ffc35a66}}@keyframes mirror-scan{0%{transform:translateY(-30px)}to{transform:translateY(168px)}}@keyframes feed-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes feed-cursor{50%{opacity:0}}@keyframes blinded-flicker{0%,to{opacity:.92}43%{opacity:.5}46%{opacity:.95}60%{opacity:.4}}@keyframes glitch{0%,to{transform:translate(0)}20%{transform:translate(-1px,1px)}40%{transform:translate(1px,-1px)}60%{transform:translate(-1px,-1px)}80%{transform:translate(1px,1px)}}@keyframes glitch-img{0%,to{filter:hue-rotate()saturate(1.2)contrast(1.1)}35%{filter:hue-rotate(-15deg)saturate(1.5)contrast(1.2)}70%{filter:hue-rotate(20deg)saturate(.8)contrast(1.4)}}.chat-form{border-top:1px solid #7491942e;grid-template-columns:1fr 72px;gap:8px;padding:10px 14px 12px;display:grid}.chat-form input{color:#d9edf1;background:#080d0f;border:1px solid #74919447;outline:none;min-width:0;padding:10px 11px}.chat-form input:focus{border-color:#58e6ffd9}.chat-form button,.wave-button,.tower-card{color:#d9edf1;background:#0a1b1feb;border:1px solid #58e6ff66}.chat-form button:hover,.wave-button:hover,.tower-card:hover{background:#102d33f0;border-color:#58e6ff}.tower-shop{padding:8px 10px}.wave-control{border-radius:2px;padding:12px;transition:box-shadow .35s,border-color .35s}.wave-control.wave-control--analyzing{border-color:#58e6ff59;animation:2.4s ease-in-out infinite wave-panel-analyzing-glow;position:relative;box-shadow:inset 0 0 0 1px #58e6ff1f,0 0 18px #58e6ff14}.wave-control.wave-control--analyzing:after{content:"";border-radius:inherit;pointer-events:none;opacity:.85;background:linear-gradient(120deg,#0000 0% 42%,#ff8c4814 50%,#0000 58% 100%) 0 0/220% 100%;animation:2.8s linear infinite wave-panel-analyzing-sweep;position:absolute;inset:-1px}@keyframes wave-panel-analyzing-glow{0%,to{box-shadow:inset 0 0 0 1px #58e6ff1f,0 0 14px #58e6ff0f}50%{box-shadow:inset 0 0 0 1px #ff8c4838,0 0 22px #ff783c1a}}@keyframes wave-panel-analyzing-sweep{0%{background-position:100% 0}to{background-position:-100% 0}}.tower-shop-layout{grid-template-columns:minmax(0,1fr) 200px;align-items:stretch;gap:10px;display:grid}.tower-buttons{grid-template-columns:repeat(8,minmax(0,1fr));gap:6px;display:grid}.tower-card{text-align:center;grid-template:"icon""name""price"/minmax(0,1fr);place-items:center;row-gap:2px;min-height:0;padding:6px 4px 5px;display:grid}.tower-card.selected{border-color:#58e6ff;box-shadow:inset 0 0 0 1px #58e6ff7a}.tower-card.preview{background:#2c200ceb;border-color:#ffc35a}.tower-card.disabled{color:#738285}.tower-card .tower-icon{grid-area:icon}.tower-card strong{white-space:nowrap;text-overflow:ellipsis;text-align:center;grid-area:name;max-width:100%;font-size:12px;line-height:1.15;overflow:hidden}.tower-card small{color:#ffc35a;text-align:center;grid-area:price;font-family:SFMono-Regular,Consolas,monospace;font-size:11px;line-height:1.1}.tower-icon{color:#58e6ff;background:#081012b8;border:1px solid #58e6ff73;place-items:center;width:30px;height:30px;font-family:SFMono-Regular,Consolas,monospace;font-size:11px;font-weight:800;display:grid;overflow:hidden}.tower-icon img{object-fit:contain;pointer-events:none;-webkit-user-drag:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.tower-icon.cannon{border-color:#ffc35a99}.tower-icon.radar{border-color:#8ee6a699}.tower-icon.decoy{border-color:#ff8a4d99}.tower-icon.shield{border-color:#b2a3ff99}.tower-icon.sniper{border-color:#ffe06699}.tower-icon.flak{border-color:#ff5d8a99}.tower-icon.frost{border-color:#58e6ff99}.tower-card.selected .tower-icon{border-color:#58e6ff;box-shadow:inset 0 0 0 1px #58e6ff73}.tower-card.preview .tower-icon{border-color:#ffc35a}.selected-detail{gap:2px;display:grid}.tower-preview{border-left:1px solid #74919433;grid-template-rows:auto auto;gap:4px;padding-left:10px;display:grid}.tower-preview-title{color:#8ea3a7;justify-content:space-between;align-items:center;gap:10px;min-height:18px;font-family:SFMono-Regular,Consolas,monospace;font-size:10px;display:flex}.tower-preview-title strong{color:#ffc35a;font-size:12px}.selected-detail div{border-bottom:1px solid #74919429;justify-content:space-between;padding-bottom:1px;font-size:11px;line-height:1.25;display:flex}.selected-detail span{color:#8ea3a7}.selected-detail strong{color:#d9edf1}.wave-button{color:#58e6ff;width:100%;min-height:52px;font-family:SFMono-Regular,Consolas,monospace;font-size:18px;font-weight:800;transition:color .25s,border-color .25s,box-shadow .25s}.wave-button.wave-button--analyzing{cursor:wait;color:#9ef6ff;opacity:1;background:linear-gradient(145deg,#0c2a30fa 0%,#081216f5 100%);border-color:#58e6ffa6;animation:1.6s ease-in-out infinite wave-btn-analyzing-pulse;position:relative;overflow:hidden;box-shadow:0 0 0 1px #58e6ff47,0 0 22px #58e6ff24}.wave-button.wave-button--analyzing:before{content:"";pointer-events:none;background:linear-gradient(105deg,#0000 0% 38%,#58e6ff2e 50%,#0000 62% 100%) 0 0/200% 100%;animation:2s linear infinite wave-btn-analyzing-sheen;position:absolute;inset:0}.wave-button.wave-button--analyzing:after{content:"";pointer-events:none;background:linear-gradient(90deg,#0000,#58e6ffe6 45%,#ffa05ad9 55%,#0000);border-radius:1px;height:2px;animation:1.4s ease-in-out infinite wave-btn-analyzing-scan;position:absolute;bottom:6px;left:8%;right:8%}.wave-button.wave-button--combat{opacity:.72}@keyframes wave-btn-analyzing-pulse{0%,to{border-color:#58e6ff8c;box-shadow:0 0 0 1px #58e6ff52,0 0 18px #58e6ff1f}50%{border-color:#ffaa648c;box-shadow:0 0 0 1px #ff965073,0 0 28px #ff6e2833}}@keyframes wave-btn-analyzing-sheen{0%{background-position:100% 0}to{background-position:-100% 0}}@keyframes wave-btn-analyzing-scan{0%,to{opacity:.35;transform:translate(-12%)}50%{opacity:1;transform:translate(12%)}}@media (prefers-reduced-motion:reduce){.wave-control.wave-control--analyzing{animation:none}.wave-control.wave-control--analyzing:after{opacity:.4;animation:none}.wave-button.wave-button--analyzing,.wave-button.wave-button--analyzing:before,.wave-button.wave-button--analyzing:after{animation:none}}@media (width<=1160px){.app-shell{height:auto;min-height:100vh}.topbar{grid-template-columns:1fr}.mission-grid{grid-template:"battle""shop""side"/1fr}.hud-strip{grid-template-columns:repeat(3,minmax(0,1fr))}.hud-card:last-of-type:nth-child(odd){grid-column:1/-1}.audio-toggle{grid-column:1/-1;justify-self:stretch}.game-root{flex:none;height:420px}.side-panel{max-height:none;overflow:visible}.tower-buttons{grid-template-columns:repeat(4,minmax(0,1fr))}.tower-shop-layout{grid-template-columns:1fr}.tower-preview{border-top:1px solid #74919433;border-left:0;padding-top:8px;padding-left:0}}@media (width<=720px){.app-shell{width:min(100vw - 16px,620px);height:auto;min-height:100vh;padding-top:8px}.brand-text{flex-direction:column;align-items:flex-start;gap:2px}.brand h1{font-size:14px}.tower-buttons{grid-template-columns:repeat(3,minmax(0,1fr))}.opening-hud{gap:12px;width:min(100vw - 16px,620px);min-height:calc(100vh - 16px);padding:16px}.opening-dialogue{padding:16px}.opening-dialogue p{min-height:260px}.opening-actions{flex-direction:column-reverse;align-items:stretch}.opening-button{width:100%}}.ending-overlay{z-index:80;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:auto;background:#040a0cd1;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.ending-overlay.hidden{pointer-events:none;display:none}.ending-card{background:linear-gradient(165deg,#122026fa 0%,#080e12fa 100%);border:1px solid #ff5d8a73;border-radius:14px;width:100%;max-width:420px;padding:28px 26px 22px;box-shadow:0 0 0 1px #58e6ff1f,0 22px 48px #0000008c}.ending-card[data-ending=victory]{border-color:#7af08273}.ending-card[data-ending=victory] .ending-kicker{color:#7af082f2}.ending-kicker{letter-spacing:.14em;text-transform:uppercase;color:#ff5d8af2;margin:0 0 6px;font-size:11px;font-weight:700}.ending-title{color:#e8f4f7;margin:0 0 14px;font-size:22px;font-weight:800;line-height:1.25}.ending-taunt{color:#bed4d8eb;margin:0 0 22px;font-size:14px;line-height:1.55}.ending-dismiss{color:#58e6ff;cursor:pointer;background:#0c2a30eb;border:1px solid #58e6ff66;border-radius:10px;width:100%;min-height:46px;font-size:15px;font-weight:700;transition:border-color .2s,background .2s}.ending-dismiss:hover{background:#10343af5;border-color:#58e6ffbf}.tower-popup{z-index:60;pointer-events:auto;filter:drop-shadow(0 18px 44px #0000009e);width:248px;position:fixed}.tower-popup.hidden{pointer-events:none;opacity:0;visibility:hidden;transition:opacity .12s,transform .12s;transform:translateY(-2px)}.tower-popup .popup-card{background:linear-gradient(#0e1e22f5,#081012f5);border:1px solid #58e6ff8c;gap:10px;padding:14px 14px 12px;display:grid}.tower-popup .popup-header{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.tower-popup .popup-tower-name{color:#d9edf1;letter-spacing:.02em;font-size:15px;font-weight:700;display:block}.tower-popup .popup-level{color:#ffc35a;letter-spacing:.06em;text-transform:uppercase;margin-top:4px;font-family:SFMono-Regular,Consolas,monospace;font-size:11px;display:block}.tower-popup .popup-close{color:#c2cfd2;background:#080e109e;border:1px solid #74919452;width:26px;height:26px;padding:0;font-family:SFMono-Regular,Consolas,monospace;font-size:13px;line-height:1}.tower-popup .popup-close:hover{color:#ff6b77;border-color:#ff6b77}.tower-popup .popup-hp{background:#0a1812ad;border:1px solid #6ee08c5c;justify-content:space-between;align-items:baseline;padding:8px 10px;font-family:SFMono-Regular,Consolas,monospace;display:flex}.tower-popup .popup-hp span{color:#8ea3a7;text-transform:uppercase;font-size:11px}.tower-popup .popup-hp strong{color:#6ee08c;font-size:14px}.tower-popup .popup-detail{gap:4px;display:grid}.tower-popup .popup-detail div{border-bottom:1px dashed #7491942e;justify-content:space-between;padding-bottom:3px;font-size:12px;display:flex}.tower-popup .popup-detail span{color:#8ea3a7}.tower-popup .popup-detail strong{color:#d9edf1}.tower-popup .popup-actions{grid-template-columns:1fr 1fr;gap:8px;margin-top:2px;display:grid}.tower-popup .popup-btn{color:#d9edf1;letter-spacing:.02em;background:#0a1b1feb;border:1px solid #58e6ff66;padding:9px 6px;font-family:SFMono-Regular,Consolas,monospace;font-size:12px;font-weight:700}.tower-popup .popup-btn:hover:not(:disabled){background:#102d33f0;border-color:#58e6ff}.tower-popup .popup-btn.primary{color:#ffc35a;border-color:#ffc35a8c}.tower-popup .popup-btn.primary:hover:not(:disabled){background:#32240cf2;border-color:#ffc35a}.tower-popup .popup-btn.ghost{color:#ff8a4d;border-color:#ff8a4d80}.tower-popup .popup-btn.ghost:hover:not(:disabled){background:#30120cf0;border-color:#ff8a4d}.tower-popup .popup-note{color:#8ea3a7;text-align:center;margin:0;padding-top:4px;font-family:SFMono-Regular,Consolas,monospace;font-size:11px}
