:root {
      --red: #FF4655;
      --white: #ECE8E1;
      --offwhite: #C4BEB4;
      --dark: #0F1923;
      --mid: #1F2731;
      --teal: #00B4B4;
      --gold: #E6AC4A;
      --green: #6AC14D;
  }

  * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
  }

  body {
      background: var(--dark);
      color: var(--white);
      font-family: 'Rajdhani', sans-serif;
      min-height: 100vh;
      overflow-x: hidden;
  }

  body::before {
      content: '';
      position: fixed;
      inset: 0;
      background: repeating-linear-gradient(0deg, transparent, transparent 2px, rgba(0, 0, 0, 0.03) 2px, rgba(0, 0, 0, 0.03) 4px);
      pointer-events: none;
      z-index: 999;
  }

  header,
  .divider,
  .ticker,
  .container {
      position: relative;
      z-index: 2;
  }

  .corner {
      position: fixed;
      width: 60px;
      height: 60px;
      pointer-events: none;
      z-index: 100;
  }

  .corner-tl {
      top: 20px;
      left: 20px;
      border-top: 2px solid var(--red);
      border-left: 2px solid var(--red);
  }

  .corner-tr {
      top: 20px;
      right: 20px;
      border-top: 2px solid var(--red);
      border-right: 2px solid var(--red);
  }

  .corner-bl {
      bottom: 20px;
      left: 20px;
      border-bottom: 2px solid var(--red);
      border-left: 2px solid var(--red);
  }

  .corner-br {
      bottom: 20px;
      right: 20px;
      border-bottom: 2px solid var(--red);
      border-right: 2px solid var(--red);
  }

  header {
      text-align: center;
      padding: 40px 20px 20px;
  }

  .logo-mark {
      font-family: 'Bebas Neue', cursive;
      font-size: clamp(48px, 8vw, 90px);
      letter-spacing: 0.15em;
      color: var(--white);
      line-height: 1;
  }

  .logo-mark .slash {
      color: var(--red);
  }

  .subtitle {
      font-family: 'Share Tech Mono', monospace;
      font-size: 11px;
      letter-spacing: 0.4em;
      color: var(--offwhite);
      margin-top: 6px;
      text-transform: uppercase;
  }

  .subtitle::before {
      content: '// ';
      color: var(--red);
  }

  .subtitle::after {
      content: ' //';
      color: var(--red);
  }

  .divider {
      width: 100%;
      max-width: 900px;
      margin: 20px auto;
      height: 1px;
      background: linear-gradient(90deg, transparent, var(--red), transparent);
      position: relative;
  }

  .divider::before {
      content: '';
      position: absolute;
      left: 50%;
      top: -3px;
      transform: translateX(-50%);
      width: 6px;
      height: 6px;
      background: var(--red);
      clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
  }

  .container {
      max-width: 1100px;
      margin: 0 auto;
      padding: 20px 40px 60px;
  }

  .agent-display {
      display: grid;
      grid-template-columns: minmax(280px, 370px) minmax(0, 1fr);
      gap: 40px;
      align-items: center;
      margin: 20px 0 40px;
  }

  /* Portrait */
  .portrait-frame {
      position: relative;
      width: 94%;
      height: 460px;
      margin: 0 auto;
      overflow: hidden;
      clip-path: polygon(0 0, calc(100% - 24px) 0, 100% 24px, 100% 100%, 24px 100%, 0 calc(100% - 24px));
      background: var(--mid);
  }

  .portrait-gradient {
      position: absolute;
      inset: 0;
      background: linear-gradient(160deg, #141D27 0%, #1a0a0c 100%);
      z-index: 0;
  }

  .agent-img {
      position: absolute;
      bottom: 0;
      left: 50%;
      transform: translateX(-50%);
      height: 100%;
      width: auto;
      max-width: 160%;
      object-fit: contain;
      object-position: bottom center;
      z-index: 2;
      opacity: 0;
      transition: opacity 0.5s ease;
      filter: drop-shadow(0 0 40px rgba(255, 70, 85, 0.2));
  }

  .agent-img.visible {
      opacity: 1;
  }

  .spin-overlay {
      position: absolute;
      inset: 0;
      z-index: 4;
      display: flex;
      align-items: center;
      justify-content: center;
      background: var(--mid);
      transition: opacity 0.35s;
  }

  .spin-overlay.hidden {
      opacity: 0;
      pointer-events: none;
  }

  .spin-name-big {
      font-family: 'Bebas Neue', cursive;
      font-size: 60px;
      letter-spacing: 0.1em;
      color: var(--white);
      text-align: center;
      padding: 20px;
      line-height: 1;
  }

  .portrait-placeholder {
      position: absolute;
      inset: 0;
      z-index: 1;
      display: flex;
      align-items: center;
      justify-content: center;
      flex-direction: column;
      gap: 10px;
  }

  .portrait-placeholder .q-mark {
      font-family: 'Bebas Neue', cursive;
      font-size: 120px;
      color: rgba(255, 255, 255, 0.1);
      line-height: 1;
  }

  .portrait-placeholder .hint-text {
      font-family: 'Share Tech Mono', monospace;
      font-size: 10px;
      letter-spacing: 0.3em;
      color: rgba(255, 255, 255, 0.2);
      text-transform: uppercase;
  }

  .portrait-glow {
      position: absolute;
      bottom: 0;
      left: 0;
      right: 0;
      height: 140px;
      background: linear-gradient(to top, rgba(255, 70, 85, 0.15), transparent);
      z-index: 3;
      pointer-events: none;
  }

  .portrait-frame::before,
  .portrait-frame::after {
      content: '';
      position: absolute;
      z-index: 10;
      pointer-events: none;
  }

  .portrait-frame::before {
      top: 0;
      left: 0;
      width: 36px;
      height: 36px;
      border-top: 2px solid var(--red);
      border-left: 2px solid var(--red);
  }

  .portrait-frame::after {
      bottom: 0;
      right: 0;
      width: 36px;
      height: 36px;
      border-bottom: 2px solid var(--red);
      border-right: 2px solid var(--red);
  }

  .role-badge {
      position: absolute;
      bottom: 14px;
      left: 0;
      right: 0;
      text-align: center;
      z-index: 10;
  }

  .role-tag {
      display: inline-block;
      font-family: 'Share Tech Mono', monospace;
      font-size: 10px;
      letter-spacing: 0.3em;
      padding: 4px 24px;
      border: 1px solid var(--red);
      color: var(--red);
      background: rgba(15, 25, 35, 0.9);
      clip-path: polygon(10px 0%, calc(100% - 10px) 0%, 100% 50%, calc(100% - 10px) 100%, 10px 100%, 0% 50%);
      transition: color 0.3s, border-color 0.3s;
  }

  /* Info panel */
  .agent-info {
      position: relative;
  }

  .agent-status {
      font-family: 'Share Tech Mono', monospace;
      font-size: 10px;
      letter-spacing: 0.35em;
      color: var(--teal);
      margin-bottom: 8px;
      opacity: 0;
      transform: translateX(-10px);
      transition: all 0.4s 0.2s;
  }

  .agent-status.show {
      opacity: 1;
      transform: translateX(0);
  }

  .agent-status::before {
      content: '▶ ';
  }

  .agent-name-display {
      font-family: 'Bebas Neue', cursive;
      font-size: clamp(56px, 6vw, 88px);
      line-height: 0.9;
      color: var(--white);
      overflow: hidden;
  }

  .agent-name-display.glitch {
      animation: nameGlitch 0.05s steps(1) infinite;
  }

  @keyframes nameGlitch {
      0% {
          clip-path: inset(0 0 90% 0);
          transform: translate(-3px, 0);
          color: var(--red);
      }

      10% {
          clip-path: inset(40% 0 50% 0);
          transform: translate(3px, 0);
          color: var(--teal);
      }

      20% {
          clip-path: inset(70% 0 15% 0);
          transform: translate(0, 2px);
          color: var(--white);
      }

      30% {
          clip-path: inset(20% 0 60% 0);
          transform: translate(-2px, 0);
          color: var(--red);
      }

      40% {
          clip-path: none;
          transform: none;
          color: var(--white);
      }

      100% {
          clip-path: none;
          transform: none;
          color: var(--white);
      }
  }

  .agent-origin {
      font-family: 'Share Tech Mono', monospace;
      font-size: 11px;
      letter-spacing: 0.2em;
      color: var(--offwhite);
      margin: 8px 0 18px;
      opacity: 0;
      transition: opacity 0.4s 0.3s;
  }

  .agent-origin.show {
      opacity: 1;
  }

  .stats-section {
      margin-top: 16px;
      opacity: 0;
      transform: translateY(10px);
      transition: all 0.5s 0.4s;
  }

  .stats-section.show {
      opacity: 1;
      transform: translateY(0);
  }

  .stat-label {
      font-family: 'Share Tech Mono', monospace;
      font-size: 9px;
      letter-spacing: 0.3em;
      color: var(--offwhite);
      display: flex;
      justify-content: space-between;
      margin-bottom: 4px;
  }

  .stat-bar-track {
      height: 3px;
      background: rgba(255, 255, 255, 0.1);
      margin-bottom: 12px;
      clip-path: polygon(0 0, 100% 0, calc(100% - 4px) 100%, 0 100%);
  }

  .stat-bar-fill {
      height: 100%;
      background: linear-gradient(90deg, var(--red), #ff8c96);
      width: 0;
      transition: width 1s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.6s;
      position: relative;
  }

  .stat-bar-fill::after {
      content: '';
      position: absolute;
      right: 0;
      top: -2px;
      width: 2px;
      height: 7px;
      background: white;
  }

  /* Abilities */
  .abilities-row {
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      gap: 8px;
      margin-top: 20px;
      opacity: 0;
      transition: opacity 0.4s 0.7s;
  }

  .abilities-row.show {
      opacity: 1;
  }

  .ability-card {
      background: rgba(255, 255, 255, 0.04);
      border: 1px solid rgba(255, 255, 255, 0.1);
      padding: 8px 6px 8px;
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 5px;
      position: relative;
      clip-path: polygon(0 0, calc(100% - 8px) 0, 100% 8px, 100% 100%, 8px 100%, 0 calc(100% - 8px));
      transition: border-color 0.2s, background 0.2s;
  }

  .ability-card:hover {
      border-color: var(--red);
      background: rgba(255, 70, 85, 0.08);
  }

  .ability-keybind {
      font-family: 'Share Tech Mono', monospace;
      font-size: 8px;
      font-weight: bold;
      color: var(--dark);
      background: var(--offwhite);
      padding: 1px 5px;
      letter-spacing: 0.1em;
      position: absolute;
      top: 4px;
      left: 4px;
  }

  .ability-icon-wrap {
      width: 34px;
      height: 34px;
      display: flex;
      align-items: center;
      justify-content: center;
      margin-top: 10px;
  }

  .ability-icon-wrap svg {
      width: 26px;
      height: 26px;
      fill: var(--offwhite);
      transition: fill 0.2s;
  }

  .ability-card:hover .ability-icon-wrap svg {
      fill: var(--red);
  }

  .ability-name {
      font-family: 'Rajdhani', sans-serif;
      font-size: 9px;
      font-weight: 600;
      letter-spacing: 0.04em;
      color: var(--offwhite);
      text-align: center;
      text-transform: uppercase;
      line-height: 1.15;
  }

  .agent-quote {
      font-style: italic;
      color: var(--offwhite);
      font-size: 13px;
      line-height: 1.5;
      margin-top: 14px;
      padding-left: 12px;
      border-left: 2px solid var(--red);
      opacity: 0;
      transition: opacity 0.4s 0.9s;
      font-weight: 500;
  }

  .agent-quote.show {
      opacity: 1;
  }

  .btn-container {
      display: flex;
      justify-content: center;
      margin-top: 36px;
  }

  .randomize-btn {
      position: relative;
      font-family: 'Bebas Neue', cursive;
      font-size: 22px;
      letter-spacing: 0.2em;
      color: var(--dark);
      background: var(--red);
      border: none;
      padding: 14px 50px;
      clip-path: polygon(16px 0%, calc(100% - 16px) 0%, 100% 50%, calc(100% - 16px) 100%, 16px 100%, 0% 50%);
      transition: all 0.15s;
      overflow: hidden;
  }

  .randomize-btn::before {
      content: '';
      position: absolute;
      inset: 0;
      background: white;
      transform: translateX(-100%) skewX(-15deg);
      transition: transform 0.3s;
      opacity: 0.2;
  }

  .randomize-btn:hover::before {
      transform: translateX(100%) skewX(-15deg);
  }

  .randomize-btn:hover {
      background: #ff6470;
      transform: scale(1.03);
  }

  .randomize-btn:active {
      transform: scale(0.97);
  }

  .randomize-btn:disabled {
      opacity: 0.5;
      cursor: not-allowed;
  }

  .role-btn {
      font-family: 'Rajdhani', sans-serif;
      font-size: 13px;
      font-weight: 600;
      letter-spacing: 0.15em;
      color: var(--offwhite);
      background: transparent;
      border: 1px solid rgba(255, 255, 255, 0.2);
      padding: 8px 20px;
      text-transform: uppercase;
      transition: all 0.15s;
  }

  .role-btn:hover {
      border-color: var(--red);
      color: var(--red);
      background: rgba(255, 70, 85, 0.05);
  }

  .role-btn.active {
      border-color: var(--red);
      color: var(--red);
      background: rgba(255, 70, 85, 0.1);
  }

  .filter-row {
      display: flex;
      justify-content: center;
      gap: 8px;
      flex-wrap: wrap;
      margin: 16px 0;
  }

  .ticker {
      width: 100%;
      overflow: hidden;
      border-top: 1px solid rgba(255, 255, 255, 0.05);
      border-bottom: 1px solid rgba(255, 255, 255, 0.05);
      padding: 8px 0;
      margin: 20px 0;
      position: relative;
  }

  .ticker::before,
  .ticker::after {
      content: '';
      position: absolute;
      top: 0;
      bottom: 0;
      width: 80px;
      z-index: 2;
  }

  .ticker::before {
      left: 0;
      background: linear-gradient(90deg, var(--dark), transparent);
  }

  .ticker::after {
      right: 0;
      background: linear-gradient(-90deg, var(--dark), transparent);
  }

  .ticker-inner {
      display: flex;
      gap: 40px;
      animation: ticker 22s linear infinite;
      white-space: nowrap;
  }

  @keyframes ticker {
      from {
          transform: translateX(0);
      }

      to {
          transform: translateX(-50%);
      }
  }

  .ticker-item {
      font-family: 'Share Tech Mono', monospace;
      font-size: 10px;
      letter-spacing: 0.2em;
      color: rgba(255, 255, 255, 0.15);
      text-transform: uppercase;
  }

  .ticker-item span {
      color: var(--red);
      margin-right: 4px;
  }

  .all-agents-label {
      font-family: 'Share Tech Mono', monospace;
      font-size: 9px;
      letter-spacing: 0.4em;
      color: rgba(255, 255, 255, 0.3);
      text-align: center;
      margin-bottom: 14px;
      text-transform: uppercase;
  }

  .agents-mini-grid {
      display: flex;
      flex-wrap: wrap;
      gap: 6px;
      justify-content: center;
      max-width: 900px;
      margin: 0 auto;
  }

  .made-by {
      margin-top: 28px;
      text-align: center;
      font-family: 'Share Tech Mono', monospace;
      font-size: 10px;
      letter-spacing: 0.12em;
      color: rgba(255, 255, 255, 0.32);
      text-transform: lowercase;
  }

  .agent-chip {
      font-family: 'Rajdhani', sans-serif;
      font-size: 11px;
      font-weight: 600;
      letter-spacing: 0.05em;
      padding: 3px 14px;
      border: 1px solid rgba(255, 255, 255, 0.1);
      color: rgba(255, 255, 255, 0.4);
      transition: all 0.15s;
      clip-path: polygon(6px 0%, calc(100% - 6px) 0%, 100% 50%, calc(100% - 6px) 100%, 6px 100%, 0% 50%);
  }

  .agent-chip.duelist {
      border-color: rgba(255, 70, 85, 0.2);
  }

  .agent-chip.initiator {
      border-color: rgba(106, 193, 77, 0.2);
  }

  .agent-chip.controller {
      border-color: rgba(0, 180, 180, 0.2);
  }

  .agent-chip.sentinel {
      border-color: rgba(230, 172, 74, 0.2);
  }

  .agent-chip:hover,
  .agent-chip.highlighted {
      color: var(--white);
      background: rgba(255, 70, 85, 0.1);
      border-color: var(--red);
      transform: scale(1.05);
  }

  #particles {
      position: fixed;
      inset: 0;
      pointer-events: none;
      z-index: 1;
  }

  #flash-overlay {
      position: fixed;
      inset: 0;
      background: white;
      opacity: 0;
      pointer-events: none;
      z-index: 500;
      transition: opacity 0.1s;
  }

  @keyframes shimmer {
      0% {
          background-position: -200% center;
      }

      100% {
          background-position: 200% center;
      }
  }

  .agent-name-display.shimmer-active {
      background: linear-gradient(90deg, var(--white) 0%, var(--red) 25%, var(--teal) 50%, var(--white) 75%, var(--red) 100%);
      background-size: 200% auto;
      background-clip: text;
      -webkit-background-clip: text;
      -webkit-text-fill-color: transparent;
      animation: shimmer 0.5s linear;
  }

  @media (max-width: 760px) {
      .agent-display {
          grid-template-columns: 1fr;
      }

      .agent-info {
          width: 100%;
      }

      .portrait-frame {
          height: 300px;
      }

      .abilities-row {
          grid-template-columns: repeat(2, 1fr);
      }

      .container {
          padding: 20px 16px 60px;
      }

      .ability-name {
          font-size: 8px;
      }
  }

  /* Agent Selection Panel */
  .select-agents-toggle {
      font-family: 'Rajdhani', sans-serif;
      font-size: 13px;
      font-weight: 600;
      letter-spacing: 0.15em;
      color: var(--offwhite);
      background: transparent;
      border: 1px solid rgba(255, 255, 255, 0.2);
      padding: 8px 20px;
      text-transform: uppercase;
      transition: all 0.15s;
      cursor: pointer;
      margin-top: 14px;
  }
  .select-agents-toggle:hover {
      border-color: var(--teal);
      color: var(--teal);
      background: rgba(0, 180, 180, 0.05);
  }
  .select-agents-toggle.open {
      border-color: var(--teal);
      color: var(--teal);
      background: rgba(0, 180, 180, 0.08);
  }

  .select-agents-panel {
      display: none;
      max-width: 900px;
      margin: 16px auto 0;
      background: rgba(0,0,0,0.25);
      border: 1px solid rgba(255,255,255,0.08);
      padding: 18px 20px;
      clip-path: polygon(10px 0%, calc(100% - 10px) 0%, 100% 10px, 100% 100%, calc(100% - 10px) calc(100% - 0px), 10px calc(100% - 0px), 0% calc(100% - 10px), 0% 10px);
  }
  .select-agents-panel.open {
      display: block;
  }

  .select-agents-header {
      display: flex;
      justify-content: space-between;
      align-items: center;
      margin-bottom: 14px;
      flex-wrap: wrap;
      gap: 8px;
  }

  .select-agents-title {
      font-family: 'Share Tech Mono', monospace;
      font-size: 9px;
      letter-spacing: 0.4em;
      color: var(--teal);
      text-transform: uppercase;
  }

  .select-agents-actions {
      display: flex;
      gap: 8px;
  }

  .sa-action-btn {
      font-family: 'Share Tech Mono', monospace;
      font-size: 9px;
      letter-spacing: 0.15em;
      color: var(--offwhite);
      background: transparent;
      border: 1px solid rgba(255,255,255,0.15);
      padding: 4px 12px;
      cursor: pointer;
      transition: all 0.15s;
      text-transform: uppercase;
  }
  .sa-action-btn:hover {
      border-color: var(--red);
      color: var(--red);
      background: rgba(255,70,85,0.06);
  }

  .select-agents-grid {
      display: flex;
      flex-wrap: wrap;
      gap: 6px;
      justify-content: center;
  }

  .sa-chip {
      font-family: 'Rajdhani', sans-serif;
      font-size: 11px;
      font-weight: 600;
      letter-spacing: 0.05em;
      padding: 4px 14px;
      border: 1px solid rgba(255, 255, 255, 0.15);
      color: rgba(255, 255, 255, 0.35);
      transition: all 0.15s;
      clip-path: polygon(6px 0%, calc(100% - 6px) 0%, 100% 50%, calc(100% - 6px) 100%, 6px 100%, 0% 50%);
      cursor: pointer;
      user-select: none;
      text-transform: uppercase;
      position: relative;
  }
  .sa-chip.duelist { border-color: rgba(255, 70, 85, 0.2); }
  .sa-chip.initiator { border-color: rgba(106, 193, 77, 0.2); }
  .sa-chip.controller { border-color: rgba(0, 180, 180, 0.2); }
  .sa-chip.sentinel { border-color: rgba(230, 172, 74, 0.2); }

  .sa-chip.selected.duelist { background: rgba(255,70,85,0.15); border-color: #FF4655; color: #FF4655; }
  .sa-chip.selected.initiator { background: rgba(106,193,77,0.15); border-color: #6AC14D; color: #6AC14D; }
  .sa-chip.selected.controller { background: rgba(0,180,180,0.15); border-color: #00B4B4; color: #00B4B4; }
  .sa-chip.selected.sentinel { background: rgba(230,172,74,0.15); border-color: #E6AC4A; color: #E6AC4A; }

  .sa-chip:hover { opacity: 0.85; transform: scale(1.04); }

  .sa-count-label {
      font-family: 'Share Tech Mono', monospace;
      font-size: 9px;
      letter-spacing: 0.2em;
      color: var(--offwhite);
      text-align: center;
      margin-top: 12px;
  }
  .sa-count-label .sa-count-num {
      color: var(--teal);
  }
  .sa-count-label .sa-warn {
      color: var(--red);
  }

  @media (max-width: 420px) {
      .agent-name-display {
          font-size: clamp(40px, 13vw, 56px);
      }

      .spin-name-big {
          font-size: clamp(36px, 12vw, 52px);
      }

      .role-btn {
          padding: 7px 14px;
          font-size: 12px;
      }

      .randomize-btn {
          width: 100%;
          max-width: 330px;
          padding: 12px 16px;
          letter-spacing: 0.12em;
      }
  }
