:host { display: block; } .panel { position: relative; width: 320px; max-height: 440px; background: var(--fog-bg-deep); display: flex; flex-direction: column; overflow: hidden; } /* ── Header ── */ .header { display: flex; align-items: flex-start; gap: 12px; padding: 14px 40px 12px 16px; border-bottom: 1px solid var(--fog-border); } .avatar { flex-shrink: 0; width: 48px; height: 48px; border-radius: 50%; background: #0e1116; border: 2px solid var(--fog-amber); display: flex; align-items: center; justify-content: center; transition: border-color 0.3s ease; } .avatar-img { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; object-position: top center; } .avatar .avatar-initials { font-family: var(--font-mono); font-size: 15px; font-weight: 600; letter-spacing: 0.06em; color: #8a9ab8; line-height: 1; } .header-info { flex: 1; min-width: 0; } .survivor-name { font-family: var(--font-serif); font-size: 20px; font-weight: 700; color: #e8eaed; letter-spacing: 0.015em; line-height: 1.1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .survivor-state { font-family: var(--font-mono); font-size: 10px; text-transform: uppercase; letter-spacing: 0.12em; color: var(--fog-amber); margin-top: 2px; } .survivor-state.injured { color: var(--fog-amber-dim); } .survivor-state.downed { color: var(--fog-red); } .survivor-state.sacrificed { color: var(--fog-red); } .close-btn { position: absolute; top: 10px; right: 10px; width: 28px; height: 28px; background: none; border: 1px solid var(--fog-border); color: var(--fog-text-dim); font-size: 14px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: color 0.15s, border-color 0.15s; } .close-btn:hover { color: var(--fog-text); border-color: rgba(255,255,255,0.15); } .close-btn:focus-visible { outline: 2px solid var(--fog-amber); outline-offset: 2px; } /* ── Perks ── */ .perk-slots { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 8px; } .perk-chip { font-family: var(--font-mono); font-size: 9.5px; background: rgba(232, 165, 71, 0.10); color: var(--fog-amber); border: 1px solid rgba(232, 165, 71, 0.20); padding: 2px 7px; letter-spacing: 0.04em; } .perk-empty { font-family: var(--font-mono); font-size: 10px; color: var(--fog-text-faint); font-style: italic; } /* ── Mission strip ── */ .mission-strip { display: flex; align-items: center; gap: 8px; padding: 8px 16px; border-bottom: 1px solid var(--fog-border); } .difficulty-pips { display: flex; gap: 3px; } .pip { width: 6px; height: 6px; background: var(--fog-amber); clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%); } .pip.dim { background: var(--fog-text-faint); } .mission-label { font-family: var(--font-mono); font-size: 9.5px; color: var(--fog-text-dim); letter-spacing: 0.06em; text-transform: uppercase; } .tick-counter { font-family: var(--font-mono); font-size: 10px; color: var(--fog-text-dim); margin-left: auto; } /* ── Log ── */ .log { flex: 1; overflow: hidden; padding: 10px 16px 12px; display: flex; flex-direction: column; gap: 5px; } .log-entry { font-family: var(--font-mono); font-size: 10.5px; line-height: 1.5; color: var(--fog-text); transition: opacity 0.2s; } .log-glyph { margin-right: 5px; font-size: 9px; } .log-entry.success .log-glyph { color: var(--fog-green); } .log-entry.failure .log-glyph { color: var(--fog-red); } /* ── Abandon row ── */ .abandon-row { display: flex; align-items: center; gap: 6px; padding: 8px 16px; border-bottom: 1px solid var(--fog-border); } .abandon-btn { background: none; border: 1px solid rgba(180, 60, 60, 0.3); color: rgba(180, 60, 60, 0.6); font-family: var(--font-mono); font-size: 9.5px; text-transform: uppercase; letter-spacing: 0.06em; padding: 4px 10px; cursor: pointer; transition: border-color 0.15s, color 0.15s; } .abandon-btn:hover, .abandon-btn:focus-visible { border-color: var(--fog-red); color: var(--fog-red); outline: none; } .abandon-confirm-label { font-family: var(--font-mono); font-size: 9.5px; color: var(--fog-red); flex: 1; font-style: italic; } .abandon-confirm-btn { background: rgba(180, 60, 60, 0.15); border: 1px solid var(--fog-red); color: var(--fog-red); font-family: var(--font-mono); font-size: 9.5px; text-transform: uppercase; letter-spacing: 0.06em; padding: 4px 10px; cursor: pointer; } .abandon-confirm-btn:focus-visible { outline: 2px solid var(--fog-red); } .abandon-cancel-btn { background: none; border: 1px solid var(--fog-border); color: var(--fog-text-dim); font-family: var(--font-mono); font-size: 9.5px; text-transform: uppercase; letter-spacing: 0.06em; padding: 4px 10px; cursor: pointer; transition: border-color 0.15s, color 0.15s; } .abandon-cancel-btn:hover, .abandon-cancel-btn:focus-visible { border-color: rgba(255,255,255,0.15); color: var(--fog-text); outline: none; }