/*
 * Assassin Game - 1970s Terminal Aesthetic
 * BEM CSS with modern features (nesting, :has)
 */

@import url('https://fonts.googleapis.com/css2?family=VT323&family=Micro+5&family=Sixtyfour:SCAN@-40&display=swap');

:root {
  --bg-dark: #0a0a0a;
  --text-primary: #ffaa00; /* #ff6600; */
  --text-accent: #ffaa00;
  --text-dim: #aa4400;
  --border-color: #a55a0f;
  --glow: 0 0 10px rgba(255, 102, 0, 0.5);
  /* --font-mono: 'Courier New', 'Courier', monospace; */
  --font-mono: 'VT323', 'Micro 5', 'Sixtyfour', monospace;
  height: 100%;
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  font-size: 16px !important; /* override default font size to make all text 16px */
}

body {
  background: var(--bg-dark);
  color: var(--text-primary);
  font-family: var(--font-mono);
  font-size: 16px;
  line-height: 1.6;
  height: 100%;
  display: flex;
  flex-direction: column;
  padding: 0;
  overflow: hidden;
  align-items: center;
}

/* Scrollbar styling */
* {
  scrollbar-width: thin;
  scrollbar-color: var(--border-color) transparent;
}

*::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}

*::-webkit-scrollbar-track {
  background: transparent;
}

*::-webkit-scrollbar-thumb {
  background: var(--border-color);
  border-radius: 0;
}

*::-webkit-scrollbar-thumb:hover {
  background: var(--text-primary);
}

/* Header and Footer */
.-header,
.site-footer {
  flex-shrink: 0;
  background: var(--bg-dark);
  z-index: 100;
  text-align: center;
  color: var(--text-accent);
}

.site-header, .site-footer, .main-wrapper {
  width: min(900px, 100%);
}

.site-header {
  text-align: left;
  padding: 0 3ch;
  margin-bottom: -2ch;
}

.site-header__title {
  text-transform: uppercase;
  letter-spacing: 0.125em;
  background-color: var(--border-color);
  padding: 0 .25em;
  color: var(--bg-dark);
}

.site-footer {
  display: flex;
  justify-content: space-between;
  gap: 2ch;
  padding: 1ch 3ch;
}

.button_to {
  line-height: 0;
}

/* Main content wrapper */
.main-wrapper {
  flex: 1;
  display: flex;
  flex-direction: column;
  padding: 1ch 3ch;
  overflow: hidden;
  min-height: 0;
}

/* Terminal container */
.terminal {
  width: 100%;
  margin: 0 auto;
  border: 2px solid var(--border-color);
  box-shadow: var(--glow);
  position: relative;
  flex: 1;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  
  &::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: repeating-linear-gradient(
      0deg,
      rgba(255, 102, 0, 0.05) 0px,
      transparent 2px,
      transparent 4px
    );
    pointer-events: none;
    z-index: 0;
  }
}

/* Terminal content - scrollable area */
.terminal-content {
  flex: 1;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 3ch;
  position: relative;
  z-index: 1;
}

/* Typography */
h1, h2, h3, h4, h5, h6 {
  color: var(--text-accent);
  text-transform: uppercase;
  letter-spacing: 0.125em;
  margin-bottom: 3ch;
}

h1 {
  text-align: center;
  margin-bottom: 4ch;
}

h2 {
  border-bottom: 2px solid var(--border-color);
  padding-bottom: 0.5em;
  margin-bottom: 3ch;
}

h3 {
  margin-bottom: 1ch;
}

ol{
  margin-left: 3ch;
}

a {
  color: var(--text-accent);
  text-decoration: none;
  border-bottom: 1px dotted var(--text-dim);
  transition: all 0.3s;
  
  &:hover {
    color: var(--text-primary);
    text-shadow: var(--glow);
  }
}

pre {
  font-family: var(--font-mono);
  line-height: 1;
}

/* Forms */
.form {
  margin: 3ch 0;
}

.form__group {
  margin-bottom: 3ch;
  display: flex;
  align-items: baseline;
  gap: 2ch;
  flex-wrap: wrap;
}

.form__label {
  color: var(--text-accent);
  text-transform: uppercase;
  letter-spacing: 0.083em;
  white-space: nowrap;
  flex-shrink: 0;
  min-width: 30ch;
  text-align: right;
  padding-right: 1ch;
}

/* Form inputs - explicit selectors for better specificity */
input.form__input,
textarea.form__input,
select.form__input,
.form__file,
.form__input {
  width: 100%;
  background: transparent !important;
  border: none !important;
  border-bottom: 1px solid var(--border-color) !important;
  color: var(--text-primary) !important;
  font-family: var(--font-mono) !important;
  padding: 0.5em 0 !important;
  transition: all 0.3s;
  border-radius: 0 !important;
  box-shadow: none !important;
}

input.form__input:focus,
textarea.form__input:focus,
select.form__input:focus,
.form__input:focus {
  outline: none !important;
  border-bottom-color: var(--text-primary) !important;
  background: transparent !important;
  box-shadow: none !important;
}

input.form__input::placeholder,
textarea.form__input::placeholder,
.form__input::placeholder {
  color: var(--text-dim) !important;
}

/* File input */
input[type="file"].form__file,
.form__file {
  width: 100%;
  background: transparent !important;
  border: none !important;
  border-bottom: 1px solid var(--border-color) !important;
  color: var(--text-primary) !important;
  font-family: var(--font-mono) !important;
  padding: 0.5em 0 !important;
  cursor: pointer;
}

input[type="file"].form__file:hover,
.form__file:hover {
  border-bottom-color: var(--text-primary) !important;
}

/* Buttons */
.button,
button.button,
input[type="submit"].button {
  background: var(--text-primary);
  border: none !important;
  border-bottom: none !important;
  color: var(--bg-dark);
  font-family: var(--font-mono);
  padding: 0 .5em;
  line-height: .9;
  cursor: pointer;
  text-transform: uppercase;
  letter-spacing: 0.125em;
  transition: all 0.3s;
  display: inline-block;
  vertical-align: middle;
  text-align: center;
  box-sizing: border-box;
  margin: 0;
  
  &:hover {
    background: var(--text-accent);
    color: var(--bg-dark);
    border-bottom: none !important;
    text-shadow: none;
  }

  &:focus {
    outline: none !important;
    border-bottom: none !important;
    box-shadow: none !important;
  } 
}

button.button--primary {
  background: var(--text-accent);
  color: var(--bg-dark);
  
  &:hover {
    background: var(--text-primary);
    color: var(--bg-dark);
  }
}

button.button.button--dim {
  background: var(--text-dim);
  color: var(--bg-dark);
  
  &:hover {
    background: var(--text-primary);
    color: var(--bg-dark);
  }
}

button.button--danger {
  background: #ff0000;
  color: var(--bg-dark);
  
  &:hover {
    background: #cc0000;
    color: var(--bg-dark);
  }
}

button.button.button--success {
  background: #00ff00 !important;
  color: var(--bg-dark) !important;
  
  &:hover {
    background: #00cc00 !important;
    color: var(--bg-dark) !important;
  }
}

button.button--disabled {
  opacity: 0.5;
  cursor: not-allowed;
  
  &:hover {
    background: var(--text-primary);
    color: var(--bg-dark);
  }
}

/* BANG button */
button.bang-button {
  width: 100%;
  background: var(--text-primary);
  border: none;
  color: var(--bg-dark);
  font-family: var(--font-mono);
  font-weight: bold;
  padding: 1em;
  cursor: pointer;
  text-transform: uppercase;
  letter-spacing: 0.125em;
  transition: all 0.3s;
  margin: 0;
  
  &:hover {
    background: var(--text-accent);
    color: var(--bg-dark);
    box-shadow: 0 0 4ch rgba(255, 102, 0, 0.8);
  }
}

.bang-button--disabled {
  opacity: 0.3;
  cursor: not-allowed;
  
  &:hover {
    background: var(--text-primary);
    color: var(--bg-dark);
    box-shadow: none;
  }
}

/* Player card */
.player-card__photo {
  width: 100%;
  max-width: 38ch;
  height: auto;
  aspect-ratio: 1;
  margin: 0 auto 3ch;
  border: 2px solid var(--text-primary);
  overflow: hidden;
  
  img {
    width: 38ch;
    height: 38ch;
    max-width: 100%;
    max-height: 100%;
    object-fit: cover;
    display: block;
    filter: sepia(100%) hue-rotate(-10deg) saturate(2)
    
  }
}

.player-card__handle {
  color: var(--text-accent);
  text-transform: uppercase;
  letter-spacing: 0.125em;
  margin-bottom: 1ch;
  clear: both;
}

.player-card__code {
  color: var(--text-primary);
  letter-spacing: 0.25em;
  margin: 3ch 0;
}

.player-card__info {
  color: var(--text-dim);
  margin-top: 1ch;
}

/* Game dashboard */
.game-dashboard__section {
  margin: 4ch 0;
  padding: 3ch;
  padding-top: 3ch;
  border: 2px solid var(--border-color);
  position: relative;
}

.game-dashboard__stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(25ch, 1fr));
  gap: 3ch;
  margin: 3ch 0;
}

.game-dashboard__stat {
  text-align: center;
}

.game-dashboard__stat-label {
  color: var(--text-dim);
  text-transform: uppercase;
  letter-spacing: 0.083em;
  margin-bottom: 1ch;
}

.game-dashboard__stat-value {
  color: var(--text-accent);
  font-weight: bold;
}

.game-dashboard__target {
  margin: 4ch 0;
}

/* Fieldset-style sections must be relatively positioned */
.game-dashboard__section {
  position: relative !important;
  border: 2px solid var(--border-color);
  padding: 3ch;
  margin-bottom: 3ch;
}

/* Fieldset-style headers for dashboard sections */
.game-dashboard__section > h2,
.game-dashboard__section > h3 {
  position: absolute;
  top: -11px;
  left: 12px;
  background: var(--bg-dark);
  padding: 0 8px;
  border: none !important;
  border-bottom: none !important;
  padding-bottom: 0 !important;
  margin: 0 !important;
  line-height: 1.1;
  display: inline-block;
  z-index: 1;
}

/* Player and target grid - side by side on wider screens */
.player-target-grid {
  display: grid;
  gap: 3ch;
  grid-template-columns: 1fr;
  margin-bottom: 4ch;
  
  @media (min-width: 62em) {
    grid-template-columns: 1fr 1fr;
  }
  
  .game-dashboard__section {
    margin-bottom: 0;
  }
}

/* Leaderboard */
.leaderboard {
  margin: 3ch 0;
}

.leaderboard__row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 2ch;
  border-bottom: 1px solid var(--border-color);
  
  &:first-child {
    border-top: 1px solid var(--border-color);
  }
}

.leaderboard__row--top {
  background: rgba(255, 170, 0, 0.1);
  color: var(--text-accent);
}

.leaderboard__rank {
  font-weight: bold;
  width: 8ch;
  text-align: center;
}

.leaderboard__handle {
  flex: 1;
}

.leaderboard__kills {
  font-weight: bold;
  width: 10ch;
  text-align: right;
  color: var(--text-accent);
}

/* Messages */
.message {
  padding: 2ch;
  margin: 3ch 0;
  /* border: 2px solid var(--border-color); */
}

.message--notice {
  border-color: var(--text-accent);
  background: rgba(255, 170, 0, 0.1);
}

.message--alert {
  border-color: #ff0000;
  background: rgba(255, 0, 0, 0.1);
  color: #ff0000;
}

.message--waiting {
  text-align: center;
  padding: 0;
  color: var(--text-dim);
}

/* Notification Dialog */
.notification-dialog {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: var(--bg-dark);
  padding: 2ch;
  max-width: 90%;
  width: 500px;
  z-index: 1000;
  
  &::backdrop {
    background: rgba(0, 0, 0, 0.5);
    backdrop-filter: blur(2px);
  }
}

.notification-dialog__content {
  padding: 4ch;
  display: flex;
  flex-direction: column;
  gap: 3ch;
  border: 2px solid var(--border-color);
  box-shadow: var(--glow);
}

.notification-dialog__message {
  padding: 2ch;
  color: var(--text-primary) !important;
}

.notification-dialog__message--notice {
  color: var(--text-accent);
}

.notification-dialog__message--alert {
  color: #ff0000;
}

.notification-dialog__dismiss {
  align-self: center;
}

/* Game list */
.game-list__item {
  padding: 3ch;
  border: 1px solid var(--border-color);
  margin-bottom: 1ch;
  display: flex;
  justify-content: space-between;
  align-items: center;
  
  &:hover {
    background: rgba(255, 102, 0, 0.05);
  }
}

.game-list__info {
  flex: 1;
}

.game-list__slug {
  color: var(--text-accent);
  margin-bottom: 1ch;
}

.game-list__details {
  color: var(--text-dim);
}

.game-list__actions {
  display: flex;
  gap: 1ch;
  
  form {
    display: inline-block;
    margin: 0;
    padding: 0;
    vertical-align: middle;
    line-height: 0;
  }
}

/* Utility classes */
.text-center {
  text-align: center;
}

.mt-20 {
  margin-top: 3ch;
}

.mb-20 {
  margin-bottom: 3ch;
}

.mt-10 {
  margin-top: 2ch;
}

.mb-10 {
  margin-bottom: 2ch;
}

.mt-5 {
  margin-top: 1ch;
}

.mb-5 {
  margin-bottom: 1ch;
}

.hidden {
  display: none;
}

.button-group {
  margin-top: 3ch;
  display: flex;
  gap: 1ch;
  justify-content: center;
}

.dim {
  color: var(--text-dim);
}

/* Camera capture styles */
.camera-container {
  border: 1px solid var(--border-color);
  padding: 3ch;
  margin-bottom: 1ch;
  background: var(--border-color)
}

.camera-video-wrapper {
  position: relative;
  width: 100%;
  max-width: 45ch;
  margin: 0 auto;
}

.camera-video {
  width: 100%;
  display: block;
  background: #000;
  border-radius: 1ch;
  aspect-ratio: 1;
}

.camera-preview {
  width: 100%;
  display: none;
  border-radius: 1ch;
}

.camera-overlay {
  position: absolute;
  inset: 0;
  pointer-events: none;
  display: grid;
  place-items: center;
}

.camera-frame {
  width: 80%;
  max-width: 40ch;
  aspect-ratio: 1;
  border: 2px dashed var(--text-dim);
  border-radius: 1ch;
}

.camera-buttons {
  text-align: center;
  margin-top: 1ch;
}

.camera-hint {
  text-align: center;
  margin: 1ch 0 0 0;
  color: var(--text-dim);
}

.file-error {
  margin-top: 1ch;
  font-size: 2ch;
  color: #ff4444;
  display: none;
}

.form-tip {
  margin-bottom: 1ch;
  font-size: 2ch;
  color: var(--text-dim);
}

.form-helper {
  margin-top: 1ch;
  margin-bottom: 3ch;
  color: var(--text-dim);
}

/* Dialog heading styles */
.dialog-heading {
  margin-bottom: 2ch;
}

.dialog-text-large {
  margin-top: 2ch;
  font-size: 3ch;
}

.dialog-text-small {
  margin-top: 1ch;
}

.dialog-text-dim {
  margin-top: 1ch;
  color: var(--text-dim);
}

.dialog-text-muted {
  margin-top: 3ch;
  color: #ffaaaa;
}

/* Pre element spacing */
.pre-divider {
  margin: 1ch 0 3ch 0;
}

.game-actions-spacing {
  margin-bottom: 1ch;
}

/* Eliminated page theme */
body.eliminated-page {
  background: #330000 !important;
}

.eliminated-page .terminal {
  border-color: #880000 !important;
  box-shadow: 0 0 10px rgba(170, 0, 0, 0.5) !important;
}

.eliminated-page .site-header__title {
  background-color: #880000 !important;
  color: #ffaaaa !important;
}

.eliminated-page h1,
.eliminated-page h1 pre {
  color: #ff4444 !important;
}

.eliminated-page h2,
.eliminated-page h3 {
  color: #ff6666 !important;
  border-bottom-color: #880000 !important;
  background: #330000 !important;
}

.eliminated-page .game-dashboard__section {
  border-color: #880000 !important;
}

.eliminated-page .leaderboard__row {
  border-bottom-color: #880000 !important;
}

.eliminated-page .leaderboard__row:first-child {
  border-top-color: #880000 !important;
}

.eliminated-page .leaderboard__row--top {
  background: rgba(170, 0, 0, 0.2) !important;
  color: #ff8888 !important;
}

.eliminated-page .leaderboard__rank,
.eliminated-page .leaderboard__handle {
  color: #ff8888 !important;
}

.eliminated-page .leaderboard__kills {
  color: #ff6666 !important;
}

.eliminated-banner {
  background: #440000;
  border: 2px solid #aa0000;
  padding: 4ch;
  margin: 4ch 0;
  text-align: center;
  box-shadow: 0 0 20px rgba(170, 0, 0, 0.5);
}

.eliminated-banner h1 {
  color: #ff4444;
  font-size: 6ch;
  margin-bottom: 2ch;
  text-shadow: 0 0 10px rgba(255, 68, 68, 0.8);
}

.eliminated-banner p {
  color: #ff8888;
  font-size: 2ch;
  margin: 1ch 0;
}

/* Responsive */
@media (max-width: 48em) {
  .site-header {
    padding: 0 1ch;
  }

  .main-wrapper {
    padding: 1ch;
  }
  
  .terminal-content {
    padding: 4ch 2ch 2ch 2ch;
  }
  
  .player-card__photo {
    max-width: 25ch;
    
    img {
      width: 25ch;
      height: 25ch;
      max-width: 100%;
      max-height: 100%;
      object-fit: cover;
    }
  }
  
  .game-dashboard__stats {
    grid-template-columns: 1fr;
  }
  
  .form__label {
    min-width: 0;
  }
}
