/* ===========================
   Imports
=========================== */
@import url("https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@400;500;700&display=swap");
@import url("https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap");

/* ===========================
   Theme Tokens
=========================== */
:root{
  --arc-bg:#0a0f1f;
  --arc-panel:#0f172a;
  --arc-text:#e2e8f0;
  --arc-dim:#94a3b8;
  --arc-cyan:#22d3ee;
  --arc-magenta:#a78bfa;
  --arc-yellow:#f59e0b;
  --arc-green:#34d399;

  --surface:#0f172a;
  --text:#0f172a;
}

:root[data-theme="dark"],
body.kadence-dark,
body.has-dark-theme,
html[data-theme="dark"],
[data-kadence-theme="dark"]{
  --surface:#0f172a;
  --text:#e2e8f0;
}

/* ===========================
   Kadence Form Polish
=========================== */
.kb-form :is(input[type="text"], input[type="email"], input[type="tel"], textarea, input[type="file"]){
  width:100%;
  padding:12px 14px;
  margin-bottom:15px;
  border:1px solid #ccc;
  border-radius:6px;
  font:16px/1.4 inherit;
  box-sizing:border-box;
  background:#fff;
  color:#0f172a;
}
.kb-form textarea{ resize:vertical; min-height:120px; }
.kb-form :is(input, textarea)::placeholder{ color:#94a3b8; }

.kb-form :is(input, textarea):focus{
  outline:none;
  border-color:#2d6cdf;
  box-shadow:0 0 0 3px rgba(45,108,223,.15);
}

.kb-form button[type="submit"]{
  background:#2d6cdf;
  color:#fff;
  border:0;
  padding:12px 18px;
  font-size:16px;
  border-radius:6px;
  cursor:pointer;
  transition:background .25s ease, transform .06s ease, box-shadow .25s ease;
  text-transform:none;
}
.kb-form button[type="submit"]:hover{ background:#1e4da8; }
.kb-form button[type="submit"]:active{ transform:translateY(1px); }
.kb-form button[type="submit"]:disabled{
  background:#9fb6f0;
  cursor:not-allowed;
  opacity:.75;
}

/* Dark-mode inputs */
:root[data-theme="dark"] .kb-form :is(input[type="text"], input[type="email"], input[type="tel"], textarea, input[type="file"]),
body.kadence-dark .kb-form :is(input[type="text"], input[type="email"], input[type="tel"], textarea, input[type="file"]){
  background:#0f172a;
  color:#e2e8f0;
  border-color:#23304d;
}
:root[data-theme="dark"] .kb-form :is(input, textarea)::placeholder,
body.kadence-dark .kb-form :is(input, textarea)::placeholder{ color:#64748b; }

/* Wrap */
.input-wrap{ position:relative; display:inline-block; width:100%; }

/* ===========================
   Konami Arcade Overlay
=========================== */
#sftr-arcade{
  position:fixed; inset:0; display:none;
  align-items:center; justify-content:center;
  padding:24px; background:rgba(0,0,0,.65); z-index:99999;
}
body.konami-active #sftr-arcade{ display:flex; }

.sftr-arcade-panel{
  position:relative; width:min(560px,92vw);
  background:#0f172a; color:#e2e8f0; border-radius:20px;
  padding:28px 24px 22px;
  box-shadow:0 20px 60px rgba(0,0,0,.45); overflow:hidden;
}
.sftr-arcade-panel::before{
  content:""; position:absolute; inset:-2px; border-radius:22px; padding:2px;
  background:linear-gradient(135deg,var(--arc-cyan),var(--arc-magenta),var(--arc-cyan));
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask-composite:exclude;
  animation:sftrGlow 6s linear infinite; pointer-events:none;
}
@keyframes sftrGlow{
  0%{ filter:hue-rotate(0); }
  100%{ filter:hue-rotate(360deg); }
}

.sftr-arcade-close{
  position:absolute; top:8px; right:10px;
  border:0; background:transparent; color:#94a3b8;
  font-size:28px; line-height:1; cursor:pointer;
}
.sftr-arcade-close:hover{ color:#e2e8f0; }

.sftr-arcade-actions{ display:flex; gap:10px; margin:18px 0 10px; flex-wrap:wrap; }
.sftr-btn{
  display:inline-flex; align-items:center; justify-content:center;
  padding:10px 16px; border-radius:12px;
  background:var(--arc-cyan); color:#0f172a; font-weight:700; text-decoration:none;
}
.sftr-btn:hover{ filter:brightness(1.05); }
.sftr-btn.sftr-secondary{ background:#1f2937; color:#e2e8f0; }
.sftr-note{ opacity:.7; font-size:.9rem; margin-top:6px; }

/* Sparks */
.sftr-spark{
  position:fixed; width:6px; height:6px; border-radius:50%;
  pointer-events:none; z-index:100000;
  animation:sftrSpark 900ms ease-out forwards;
}
@keyframes sftrSpark{
  to{
    transform:translate(var(--dx,0), var(--dy,-80px)) scale(.8);
    opacity:0;
  }
}

/* ===========================
   Arcade Screen & Cards
=========================== */
.arcade-wrap{
  min-height:80vh; display:grid; place-items:center; padding:40px 16px;
  background:
    radial-gradient(1200px 600px at 50% -10%, #1e293b 0%, #0b1020 45%, #080b17 100%),
    var(--arc-bg);
}
.arcade-screen{
  position:relative; width:min(980px,96vw); border-radius:24px;
  padding:28px 20px 18px;
  background:
    linear-gradient(145deg, rgba(34,211,238,.07), rgba(167,139,250,.07)) border-box,
    var(--arc-panel);
  box-shadow:0 30px 90px rgba(0,0,0,.45), inset 0 0 0 2px rgba(255,255,255,.06);
  color:var(--arc-text); overflow:hidden;
}
.arcade-overlay-scanlines{
  pointer-events:none; position:absolute; inset:0;
  background:repeating-linear-gradient(
    to bottom,
    rgba(255,255,255,.04) 0 1px,
    transparent 2px 4px
  );
  mix-blend-mode:overlay; animation:scanScroll 10s linear infinite;
}
@keyframes scanScroll{
  0%{ background-position-y:0; }
  100%{ background-position-y:1000px; }
}

.arcade-header h1{
  font-family:"Press Start 2P", system-ui, sans-serif;
  font-size:clamp(22px,5vw,36px); line-height:1.3; margin:0 0 6px;
  text-shadow:0 0 6px rgba(34,211,238,.6), 0 0 14px rgba(167,139,250,.6);
}
.arcade-sub{ margin:0 0 18px; color:var(--arc-dim); font-size:14px; }

.arcade-insert-coin{
  font-family:"Press Start 2P", system-ui, sans-serif;
  text-align:center; letter-spacing:2px; margin:6px 0 18px; color:var(--arc-cyan);
  animation:coinBlink 1s steps(2, jump-none) infinite, glow 6s linear infinite;
  user-select:none;
}
@keyframes coinBlink{ 50%{ opacity:.15; } }
@keyframes glow{
  0%{ text-shadow:0 0 6px rgba(34,211,238,.6), 0 0 0 rgba(167,139,250,0); }
  100%{ text-shadow:0 0 10px rgba(34,211,238,.8), 0 0 22px rgba(167,139,250,.6); }
}

.arcade-grid{
  display:grid; grid-template-columns:repeat(2, minmax(0,1fr));
  gap:14px; margin:8px 0 18px;
}
@media (max-width:640px){
  .arcade-grid{ grid-template-columns:1fr; }
}

.arcade-card{
  position:relative; display:grid; align-content:center; gap:6px;
  min-height:120px; padding:16px; border-radius:16px;
  text-decoration:none; color:var(--arc-text);
  background:
    linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.03)) border-box,
    radial-gradient(600px 200px at 10% -30%, rgba(34,211,238,.25), transparent 60%),
    radial-gradient(600px 200px at 90% 130%, rgba(167,139,250,.25), transparent 60%),
    #0b1226;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);
  overflow:hidden; transition:transform .12s ease;
}
.arcade-card:hover{ transform:translateY(-2px); }
.arcade-card::after{
  content:""; position:absolute; inset:0;
  background:radial-gradient(
    400px 120px at var(--mx,50%) var(--my,50%),
    rgba(255,255,255,.07), transparent 70%
  );
  opacity:0; transition:opacity .2s ease;
}
.arcade-card:hover::after{ opacity:1; }

.arcade-card-title{ font-weight:800; font-size:20px; letter-spacing:.3px; }
.arcade-card-tag{
  display:inline-flex; align-items:center; gap:6px; width:fit-content;
  text-transform:uppercase; font-size:11px; letter-spacing:1px;
  padding:6px 10px; border-radius:999px;
  background:#121a33; color:var(--arc-dim);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);
}

.arcade-status{
  margin-top:4px; border-top:1px solid rgba(255,255,255,.06); padding-top:12px;
  font-family:"Press Start 2P", system-ui, sans-serif; font-size:11px; color:var(--arc-dim);
}
.status-row{ display:flex; align-items:center; gap:8px; margin:6px 0; }
.status-row .spacer{ flex:1; }
.status-row .label{ color:var(--arc-text); }
.status-row .dot{ opacity:.5; }

.arcade-footer{ margin-top:8px; color:var(--arc-dim); font-size:13px; }

/* Game modal */
.sftr-game-modal{
  position:fixed; inset:0; display:none;
  align-items:center; justify-content:center;
  padding:16px; background:rgba(0,0,0,.75); z-index:100000;
}
.sftr-game-modal.active{ display:flex; }
.sftr-game-frame{
  width:min(860px,96vw); background:#0f172a; color:#e2e8f0;
  border-radius:20px; box-shadow:0 30px 90px rgba(0,0,0,.6);
  padding:12px 12px 18px;
}
.sftr-game-hud{
  display:flex; align-items:center; justify-content:space-between;
  gap:10px; margin-bottom:8px;
}
.sftr-game-hud .hud-left{ display:flex; gap:14px; align-items:baseline; }
.sftr-game-hud .hud-right{ display:flex; gap:8px; }
#sftr-canvas{
  display:block; width:100%; height:auto; background:#0b1226;
  border-radius:14px; box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);
}
.sftr-game-help{ margin-top:8px; color:#94a3b8; font-size:14px; }

/* Typewriter helpers */
#sftr-typewriter, .sftr-typewriter-2{ text-align:center !important; }
#sftr-typed-top, #sftr-typed-bottom,
.sftr-typewriter-2 .sftr-type-line{
  display:inline-block; width:fit-content; max-width:100%; margin-inline:auto;
}

/* ===========================
   Veteran-Owned Badge
=========================== */
.sftr-vet-badge{
  display:inline-flex; align-items:center; gap:.45rem;
  font-weight:800; letter-spacing:.2px; line-height:1;
  color:var(--text); background:transparent; border:0; box-shadow:none;
  margin-inline:10px;
}
.sftr-vet-badge--header{ font-size:16px; }

.sftr-vet-badge .medal{
  position:relative; display:inline-grid; place-items:center;
  width:26px; height:26px; flex:0 0 26px; border-radius:999px;
  background:rgba(34,211,238,.18); color:var(--arc-cyan);
}
.sftr-vet-badge .star{ font-size:15px; line-height:1; transform:translateY(-1px); }
.sftr-vet-badge .medal::after{
  content:""; position:absolute; inset:-5px; border-radius:999px;
  border:2px solid rgba(34,211,238,.35);
  transform:scale(.8); animation:sftrVetPulse 2s ease-out infinite;
}
@keyframes sftrVetPulse{
  0%{ opacity:1; transform:scale(.8); }
  100%{ opacity:0; transform:scale(1.18); }
}

/* Header color inheritance in dark variants */
.site-header .sftr-vet-badge{ color:inherit !important; }
:where(html[data-theme="dark"], [data-kadence-theme="dark"], body.has-dark-theme, body.kadence-dark)
  .site-header .sftr-vet-badge :is(.label, a),
:where(html[data-theme="dark"], [data-kadence-theme="dark"], body.has-dark-theme, body.kadence-dark)
  .site-header .sftr-vet-badge{
  color:#fff !important;
}
:where(html[data-theme="dark"], [data-kadence-theme="dark"], body.has-dark-theme, body.kadence-dark)
  .site-header .sftr-vet-badge .star{
  color:var(--arc-cyan) !important;
}

/* XL option */
.sftr-vet-badge--xl{ font-size:18px; }
.sftr-vet-badge--xl .medal{ width:30px; height:30px; flex:0 0 30px; }
.sftr-vet-badge--xl .star{ font-size:18px; transform:translateY(-1px); }
.sftr-vet-badge--xl .medal::after{ inset:-6px; transform:scale(.78); }

/* Reduced motion */
@media (prefers-reduced-motion:reduce){
  .sftr-arcade-panel::before,
  .sftr-spark,
  .arcade-overlay-scanlines,
  .arcade-insert-coin,
  .sftr-vet-badge .medal::after{
    animation:none !important;
  }
  .sftr-arcade-panel::before{ filter:none; }
  .arcade-overlay-scanlines{ background-position-y:0; }
  .sftr-vet-badge .medal::after{ opacity:.6; }
}

/* ===========================
   Mobile Bar & Misc
=========================== */
.sftr-mobile-bar{ display:none; }
@media (max-width:640px){
  .sftr-mobile-bar{
    position:fixed; left:0; right:0; bottom:0; z-index:9999;
    display:grid; grid-template-columns:repeat(3,1fr); gap:1px;
    background:rgba(0,0,0,.12);
  }
  .sftr-mobile-bar a{
    display:flex; align-items:center; justify-content:center;
    padding:.8rem 0; font-weight:800; text-decoration:none;
    background:var(--surface); color:var(--text);
  }
  :root[data-theme="light"] .sftr-mobile-bar a{
    background:#f8fafc; color:#0f172a;
  }
}

.sftr-open-badge{ font-weight:800; display:inline-flex; gap:.4rem; align-items:center; }
.sftr-open-badge.is-open{ color:var(--arc-cyan); }
.sftr-open-badge.is-closed{ color:var(--arc-yellow); }

#sftr-typewriter-wrap{ position:relative; z-index:5; margin-bottom:.75rem !important; }
#sftr-typewriter-viewport{ position:relative; z-index:5; }
.entry-hero .wp-block-buttons,
.kadence-hero .wp-block-buttons{ position:relative; z-index:4; }

.sftr-social-btn{
  display:grid; place-items:center; height:48px; border-radius:12px;
  background:var(--btn); border:1px solid #ffffff12; color:var(--text);
  text-decoration:none; transition:background .2s ease, transform .06s ease;
}
.sftr-social-btn:hover{ background:var(--btnHover); transform:translateY(-1px); }

.sr-only{
  position:absolute; width:1px; height:1px; margin:-1px; border:0; padding:0;
  clip:rect(0,0,0,0); overflow:hidden; white-space:nowrap;
}

/* Phones: typewriter spacing */
@media (max-width:480px){
  #sftr-typewriter-wrap{ padding-inline:12px; }
  .sftr-typewriter-2{ font-size:clamp(20px,7.5vw,34px); letter-spacing:.1px; }
  #sftr-typed-top, #sftr-typed-bottom{ min-width:0 !important; }
}
