@import url("https://fonts.googleapis.com/css2?family=VT323&display=swap");

@import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap');

body{
margin:0;
background:#050505;
color:#ff6a00;
font-family:'Press Start 2P', monospace;
}

/* scanlines */


/* grid floor */
.grid{
position:fixed;
bottom:0;
width:100%;
height:50vh;
background:
linear-gradient(#ff6a00aa 1px, transparent 1px),
linear-gradient(90deg,#ff6a00aa 1px, transparent 1px);
background-size:40px 40px;
transform:perspective(400px) rotateX(60deg);
transform-origin:bottom;
pointer-events:none;
}

header{
padding:30px;
display:flex;
justify-content:space-between;
align-items:center;
}

nav a{
color:#ff6a00;
text-decoration:none;
margin-left:30px;
font-size:12px;
}

nav a:hover{
color:#fff;
}

.container{
max-width:1100px;
margin:auto;
padding:80px 40px;
}

.hero h1{
font-size:24px;
color:#fff;
}

.lead{
font-size:12px;
line-height:1.8;
margin-top:40px;
}

.cards{
display:grid;
grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
gap:30px;
margin-top:40px;
}

.card{
border:2px solid #ff6a00;
padding:20px;
background:#000;
}

footer{
text-align:center;
padding:60px 20px;
color:#ff6a00;
font-size:10px;
border-top:1px solid #ff6a0033;
margin-top:60px;
}

.cursor{
display:inline-block;
width:10px;
height:14px;
background:#ff6a00;
animation:blink 1s infinite;
margin-left:6px;
}

@keyframes blink{
0%,50%,100%{opacity:1}
25%,75%{opacity:0}
}


/* terminal overlay */
.arcade-terminal{
display:none;
position:fixed;
right:20px;
bottom:20px;
width:min(520px, calc(100vw - 40px));
background:#000;
border:2px solid #ff6a00;
padding:18px;
z-index:9999;
box-shadow:0 0 25px rgba(255,106,0,.25);
}
.arcade-terminal.active{display:block;}
.arcade-terminal .term-head{
display:flex;
justify-content:space-between;
align-items:center;
margin-bottom:12px;
font-size:10px;
color:#fff;
}
.arcade-terminal .term-close{
background:#000;
color:#ff6a00;
border:2px solid #ff6a00;
padding:6px 10px;
font:inherit;
cursor:pointer;
}
.arcade-terminal .term-output{
min-height:140px;
max-height:40vh;
overflow:auto;
font-size:10px;
line-height:1.8;
white-space:pre-wrap;
margin-bottom:10px;
}
.arcade-terminal input{
width:100%;
background:#000;
color:#ff6a00;
border:2px solid #ff6a00;
padding:10px;
font:inherit;
font-size:10px;
box-sizing:border-box;
}
.secret-banner{
display:none;
position:fixed;
left:50%;
top:90px;
transform:translateX(-50%);
background:#000;
color:#fff;
border:2px solid #ff6a00;
padding:16px 18px;
z-index:9998;
text-align:center;
font-size:10px;
box-shadow:0 0 25px rgba(255,106,0,.25);
}
.secret-banner.active{display:block;}

h1{
  line-height:1.4;
}
.hero h1{
  margin-bottom:28px;
}
.card h3{
  font-size:11px;
  line-height:1.5;
  margin:0 0 16px 0;
  word-break:break-word;
}
.card p{
  font-family:Arial,Helvetica,sans-serif;
  font-size:15px;
  line-height:1.7;
  color:#b7ffd8;
  margin:0;
}
.events-grid .card p,
.text-panel p{
  font-family:Arial,Helvetica,sans-serif;
  font-size:16px;
  line-height:1.8;
}
.text-panel{
  border:2px solid #ff6a00;
  padding:24px;
  background:#000;
  max-width:760px;
}
@media(max-width:900px){
  nav a{
    margin-left:12px;
    font-size:10px;
  }
  .card h3{
    font-size:10px;
  }
}


/* extra oldschool / atari elements */
body::before{
content:'';
position:fixed;
inset:0;
background:
radial-gradient(circle at 20% 30%, rgba(255,255,255,0.18) 0 1px, transparent 1px),
radial-gradient(circle at 70% 20%, rgba(255,255,255,0.14) 0 1px, transparent 1px),
radial-gradient(circle at 80% 70%, rgba(255,255,255,0.12) 0 1px, transparent 1px);
background-size:180px 180px, 220px 220px, 260px 260px;
pointer-events:none;
opacity:.4;
}
.hud{
display:flex;
gap:18px;
flex-wrap:wrap;
font-size:10px;
margin-bottom:22px;
color:#fff;
}
.hud span{
border:2px solid #ff6a00;
padding:10px 12px;
background:#000;
box-shadow:0 0 14px rgba(255,106,0,.16);
}
.marquee{
overflow:hidden;
border:2px solid #ff6a00;
padding:12px 0;
margin:10px 0 34px 0;
background:#000;
white-space:nowrap;
}
.marquee span{
display:inline-block;
padding-left:100%;
animation:marqueeMove 18s linear infinite;
font-size:10px;
color:#fff;
}
@keyframes marqueeMove{
0%{transform:translateX(0)}
100%{transform:translateX(-100%)}
}
.hero{
position:relative;
}
.hero h1{
text-shadow:0 0 12px rgba(255,106,0,.25);
}
.cards{
align-items:stretch;
}
.card{
box-shadow:0 0 18px rgba(255,106,0,.10);
}
.card::before{
content:'>';
display:block;
font-size:10px;
color:#fff;
margin-bottom:12px;
}
.section-divider{
height:2px;
background:#ff6a00;
opacity:.25;
margin:10px 0 0 0;
}
.footer-small{
display:inline-block;
margin-top:14px;
font-size:9px;
color:#fff;
opacity:.7;
}
.text-panel,
.arcade-terminal,
.card{
position:relative;
}
.text-panel::after,
.card::after{
content:'█';
position:absolute;
right:10px;
bottom:8px;
font-size:9px;
opacity:.55;
}
@media(max-width:900px){
.hud{
font-size:9px;
}
.marquee span{
font-size:9px;
}
}



body{
  color:var(--arcade-orange);
}

nav a:hover{
  color:var(--arcade-red);
}

.hero h1{
  color:#fff;
  text-shadow:0 0 12px rgba(255,106,0,.35);
}

/* HUD smaller + subtle */
.hud{
  font-size:8px;
  opacity:.65;
  gap:10px;
  margin-bottom:14px;
}

.hud span{
  border:1px solid rgba(255,106,0,.5);
  padding:6px 8px;
  background:#000;
  box-shadow:none;
}

/* arcade glow adjustments */
.card{
  border:2px solid var(--arcade-orange);
}

.text-panel{
  border:2px solid var(--arcade-orange);
}

.marquee{
  border:2px solid var(--arcade-orange);
}

footer{
  border-top:1px solid rgba(255,106,0,.4);
}


/* --- extra oldschool arcade details --- */
body{
  position: relative;
  overflow-x: hidden;
}

body::before{
  content:'';
  position:fixed;
  inset:0;
  pointer-events:none;
  background:
    radial-gradient(ellipse at center, transparent 58%, rgba(0,0,0,.18) 100%),
    radial-gradient(ellipse at center, rgba(255,255,255,.025) 0%, transparent 70%);
  z-index: 2;
}

/* subtle CRT screen curvature */
.screen-curve{
  position:fixed;
  inset:0;
  pointer-events:none;
  box-shadow:
    inset 0 0 120px rgba(0,0,0,.22),
    inset 0 0 40px rgba(255,106,0,.05);
  z-index:3;
}

/* horizon glow */
.horizon-glow{
  position:fixed;
  left:0;
  right:0;
  bottom:38vh;
  height:18vh;
  pointer-events:none;
  background: linear-gradient(180deg,
    rgba(255,42,42,0) 0%,
    rgba(255,42,42,.06) 35%,
    rgba(255,106,0,.12) 100%);
  filter: blur(16px);
  z-index: 0;
}

/* insert coin */

@keyframes coinBlink{
  0%, 45% { opacity:.8; }
  46%, 100% { opacity:.18; }
}

/* terminal open pulse */
#terminal-toggle{
  position: relative;
}
#terminal-toggle::after{
  content:'';
  position:absolute;
  left:-6px; right:-6px; top:-6px; bottom:-6px;
  border:1px solid rgba(255,106,0,.28);
  opacity:0;
  animation: terminalPulse 2.4s infinite;
}
@keyframes terminalPulse{
  0%{opacity:0; transform:scale(1)}
  35%{opacity:.65}
  100%{opacity:0; transform:scale(1.08)}
}

/* small arcade flash */
.pixel-flash{
  display:none;
  position:fixed;
  inset:0;
  z-index:9997;
  pointer-events:none;
  background:
    repeating-linear-gradient(90deg,
      rgba(255,106,0,.18) 0 16px,
      rgba(255,42,42,.16) 16px 32px);
  mix-blend-mode:screen;
}
.pixel-flash.active{
  display:block;
  animation: pixelFlash .45s steps(3) 1;
}
@keyframes pixelFlash{
  0%{opacity:0}
  20%{opacity:.8}
  100%{opacity:0}
}


body{
  color:var(--arcade-orange);
}
nav a{
  color:var(--arcade-orange);
}
nav a:hover{
  color:#fff;
}
.card{
  border-color:var(--arcade-orange);
  box-shadow:0 0 18px rgba(255,106,0,.08), 0 0 8px rgba(125,255,114,.08);
}
.card h3{
  color:var(--arcade-orange);
}
.text-panel{
  border-color:var(--arcade-orange);
}
.marquee{
  border-color:var(--arcade-orange);
}
.marquee span,
.hud span{
  color:var(--arcade-orange);
}
.hud span{
  border-color: rgba(125,255,114,.45);
}
footer{
  color:var(--arcade-orange);
  border-top:1px solid rgba(255,106,0,.35);
}
.footer-small{
  color:var(--arcade-orange);
}

@media (max-width: 900px){
  .card h3{
    font-size:8px;
    line-height:1.35;
    letter-spacing:0;
  }
}
/* especially for the long Veranstaltungstechnik header on phones */
@media (max-width: 640px){
  .cards .card:first-child h3{
    font-size:7px;
    line-height:1.3;
  }
}


/* mobile tweak for VERANSTALTUNGEN header */
@media (max-width: 640px){
  #events h1{
    font-size: 18px;
    line-height: 1.35;
  }
}




body{
  background:var(--arcade-bg);
  color:var(--arcade-orange-soft);
}

h1{
  color:var(--arcade-orange);
}

nav a{
  color:var(--arcade-orange-soft);
}
nav a:hover{
  color:var(--arcade-orange);
}

.card{
  border:2px solid var(--arcade-orange);
}
.card h3{
  color:var(--arcade-orange);
}
.card p{
  color:#ffd9c2;
}

.marquee{
  border-color:var(--arcade-orange);
}
.hud span{
  border-color:var(--arcade-orange);
  color:var(--arcade-orange-soft);
}


.footer-small{
  color:var(--arcade-orange);
}


/* --- compact mobile layout --- */
@media (max-width: 700px){

  .container{
    padding:50px 22px;
  }

  h1{
    font-size:20px;
    line-height:1.35;
    margin-bottom:18px;
  }

  .lead{
    font-size:11px;
    line-height:1.7;
  }

  .cards{
    gap:18px;
  }

  .card{
    padding:16px;
  }

  .card h3{
    font-size:9px;
    line-height:1.35;
    margin-bottom:10px;
  }

  .card p{
    font-size:13px;
    line-height:1.6;
  }

  nav a{
    font-size:9px;
    margin-left:10px;
  }

  .hud{
    font-size:7px;
  }

  .marquee span{
    font-size:8px;
  }

}


/* --- arcade palette v2 --- */
:root{
  --arcade-bg:#050505;
  --arcade-green:#ff6a00;      /* primary */
  --arcade-green-soft:#b6ffae;
  --arcade-orange:#ff6a00;     /* accent */
  --arcade-white:#ffffff;
}

body{
  background:var(--arcade-bg);
  color:var(--arcade-green-soft);
}

h1{
  color:var(--arcade-orange);
}

nav a{
  color:var(--arcade-green-soft);
}
nav a:hover{
  color:var(--arcade-orange);
}

.card{
  border:2px solid var(--arcade-orange);
}
.card h3{
  color:var(--arcade-orange);
}
.card p{
  color:#d7ffd2;
}

.marquee{
  border-color:var(--arcade-orange);
}
.hud span{
  border-color:var(--arcade-orange);
  color:var(--arcade-green-soft);
}

footer{
  border-top:1px solid rgba(125,255,114,.35);
  color:var(--arcade-green-soft);
}

/* accent highlights */
.marquee span:hover,
nav a:focus{
  color:var(--arcade-orange);
}

/* INSERT COIN styling */


/* --- scanline intensity control --- */
:root{
  --scanline-opacity: 0.06;
}



/* --- pixel corner brackets (arcade panels) --- */
.card{
  position: relative;
}

.card::before,
.card::after{
  content:'';
  position:absolute;
  width:14px;
  height:14px;
  border:2px solid var(--arcade-orange);
}

.card::before{
  top:-2px;
  left:-2px;
  border-right:none;
  border-bottom:none;
}

.card::after{
  bottom:-2px;
  right:-2px;
  border-left:none;
  border-top:none;
}

/* extra corners */
.card .corner-a,
.card .corner-b{
  position:absolute;
  width:14px;
  height:14px;
  border:2px solid var(--arcade-orange);
}

.card .corner-a{
  top:-2px;
  right:-2px;
  border-left:none;
  border-bottom:none;
}

.card .corner-b{
  bottom:-2px;
  left:-2px;
  border-right:none;
  border-top:none;
}

/* scanline control widget */
.scanline-control{
  position:fixed;
  right:14px;
  bottom:14px;
  font-size:8px;
  background:#000;
  border:1px solid var(--arcade-orange);
  padding:8px;
  z-index:10;
  color:var(--arcade-green-soft);
}

.scanline-control input{
  width:80px;
}

/* force orange frames */
.card,
.text-panel,
.marquee,
.hud span{
  border-color: var(--arcade-orange) !important;
}
.card::before,
.card::after,
.card .corner-a,
.card .corner-b{
  border-color: var(--arcade-orange) !important;
}

/* scanline overlay using variable */


/* --- force green text everywhere --- */
body, p, h1, h2, h3, h4, h5, h6, nav a, footer, .lead, .text-panel, .card p, .card h3 {
  color: var(--arcade-green) !important;
}

/* blinking cursor / marker */
.cursor{
  background: var(--arcade-green) !important;
}

/* insert coin text */


/* terminal text */
.arcade-terminal,
.arcade-terminal *{
  color: var(--arcade-green) !important;
}


/* --- final color rules --- */

/* default text = green */
body, p, h2, h3, h4, h5, h6, nav a, .lead, .text-panel, .card p, .card h3, footer {
  color: var(--arcade-green) !important;
}

/* header title white */
header div:first-child{
  color:#ffffff !important;
}

/* INSERT COIN white */


/* blinking cursor green */
.cursor{
  background: var(--arcade-green) !important;
}



/* --- phosphor green CRT refinement --- */
:root{
  --arcade-green: #66ff66;
}
body, p, h2, h3, h4, h5, h6, nav a, .lead, .text-panel, .card p, .card h3, footer,
.arcade-terminal, .arcade-terminal *{
  color: var(--arcade-green) !important;
  text-shadow: 0 0 6px rgba(102,255,102,0.28);
}
.cursor{
  background: var(--arcade-green) !important;
  box-shadow: 0 0 8px rgba(102,255,102,0.45);
}

/* startup flicker */
body.startup-flicker::before{
  animation: crtBoot .7s steps(3) 1;
}
@keyframes crtBoot{
  0%{opacity:0.95; filter:brightness(1.8);}
  25%{opacity:0.15; filter:brightness(0.7);}
  50%{opacity:0.85; filter:brightness(1.4);}
  100%{opacity:1; filter:brightness(1);}
}

/* boot overlay */
.boot-overlay{
  position:fixed;
  inset:0;
  background:#000;
  color:#66ff66;
  display:flex;
  align-items:center;
  justify-content:center;
  z-index:10000;
  font-size:12px;
  text-align:center;
  white-space:pre-line;
  text-shadow: 0 0 8px rgba(102,255,102,0.4);
}
.boot-overlay.hidden{
  display:none;
}


/* running marquee text white */
.marquee span{
  color:#ffffff !important;
}



/* --- hero improvements --- */
.hero{
  text-align:center;
  max-width:820px;
  margin-left:auto;
  margin-right:auto;
}

.hero h1{
  font-size:28px;
  margin-bottom:30px;
  letter-spacing:2px;
}

/* hero lead slightly larger */
.hero .lead{
  font-size:13px;
  line-height:1.8;
}

/* --- body text font (more readable) --- */
.card p,
.text-panel p,
.lead{
  font-family: "IBM Plex Mono", "Courier New", monospace;
  font-size:14px;
  letter-spacing:0.3px;
}

/* keep arcade font for titles */
h1, h2, h3, nav a, .hud, .marquee{
  font-family: "Press Start 2P", monospace;
}


/* VT323 for readable retro body text */
.card p,
.text-panel p,
.lead{
  font-family: "VT323", monospace !important;
  font-size:18px;
  letter-spacing:0.5px;
}


/* unified scanline overlay controlled by slider */
:root{
  --scanline-opacity: 0.06;
}
body::after{
  content:'';
  position:fixed;
  inset:0;
  background:repeating-linear-gradient(
    0deg,
    rgba(255,255,255,1) 0px,
    rgba(255,255,255,1) 1px,
    transparent 1px,
    transparent 4px
  );
  opacity: var(--scanline-opacity);
  mix-blend-mode: screen;
  pointer-events:none;
  z-index: 5;
}

/* hero headline white */
.hero h1{
  color:#ffffff !important;
}

/* make hero lead more readable */
.hero .lead{
  font-family: "VT323", monospace;
  font-size:22px;
  line-height:1.7;
  max-width:720px;
  margin:0 auto;
}

/* slightly bigger on desktop */
@media (min-width:900px){
  .hero .lead{
    font-size:24px;
  }
}

/* centered arcade terminal */
.arcade-terminal{
position:fixed;
top:50%;
left:50%;
transform:translate(-50%,-50%);
width:680px;
max-width:92vw;
max-height:70vh;
background:#000;
border:2px solid var(--arcade-orange);
padding:22px;
box-shadow:0 0 30px rgba(255,106,0,.25);
z-index:9999;
animation: terminalOpen .18s ease-out;
}

/* terminal open animation */
@keyframes terminalOpen{
0%{
transform:translate(-50%,-40%) scale(.92);
opacity:0;
}
100%{
transform:translate(-50%,-50%) scale(1);
opacity:1;
}
}

/* starfield background */
.starfield{
  position:fixed;
  inset:0;
  pointer-events:none;
  z-index:0;
  background:
    radial-gradient(2px 2px at 20% 30%, #fff, transparent),
    radial-gradient(1px 1px at 80% 70%, #fff, transparent),
    radial-gradient(1px 1px at 50% 20%, #fff, transparent),
    radial-gradient(2px 2px at 70% 40%, #fff, transparent),
    radial-gradient(1px 1px at 10% 80%, #fff, transparent);
  opacity:0.4;
  animation: starMove 60s linear infinite;
}

@keyframes starMove{
  from{ transform: translateY(0); }
  to{ transform: translateY(-200px); }
}

/* --- Projector Defender Game --- */
.projector-game{
position:fixed;
inset:0;
background:#000;
z-index:12000;
display:none;
align-items:center;
justify-content:center;
flex-direction:column;
font-family: "Press Start 2P", monospace;
color:#66ff66;
}

.projector-game canvas{
border:2px solid var(--arcade-orange);
background:#000;
}

.projector-game .close{
margin-top:20px;
cursor:pointer;
color:#fff;
}

/* random player HUD */
.hud-mini{
  margin-top:8px;
  font-size:8px;
  line-height:1.2;
}
#playername{
  display:inline-block;
  color: var(--arcade-green) !important;
  text-shadow: 0 0 8px rgba(102,255,102,.45);
  animation: playerBlink 1.4s steps(1) 4;
}
@keyframes playerBlink{
  0%, 55%, 100%{ opacity:1; }
  56%, 80%{ opacity:.2; }
}

/* mobile game hint */
.projector-game::after{
content:"← → or touch";
display:block;
margin-top:6px;
font-family:VT323;
font-size:16px;
color:#66ff66;
text-align:center;
}


/* --- Projector Defender v2 --- */
.projector-game{
  position:fixed;
  inset:0;
  background:rgba(0,0,0,.94);
  z-index:12000;
  display:none;
  align-items:center;
  justify-content:center;
  flex-direction:column;
  gap:14px;
  padding:18px;
}
.projector-game.active{display:flex;}
.projector-game .game-panel{
  border:2px solid var(--arcade-orange);
  background:#000;
  box-shadow:0 0 28px rgba(255,106,0,.18);
  padding:14px;
}
.projector-game canvas{
  display:block;
  width:min(92vw, 640px);
  height:auto;
  image-rendering:pixelated;
  background:#000;
}
.projector-game .game-ui{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  justify-content:center;
  font-family:"Press Start 2P", monospace;
  font-size:10px;
  color:#66ff66;
}
.projector-game button,
.projector-game .close{
  border:2px solid var(--arcade-orange);
  background:#000;
  color:#fff;
  padding:10px 14px;
  font:inherit;
  cursor:pointer;
}
.projector-game .hint{
  font-family:"VT323", monospace;
  font-size:22px;
  color:#66ff66;
}


/* --- bombproof boot overlay auto-hide --- */
.boot-overlay{
  animation: bootAutoHide 3s forwards !important;
}

@keyframes bootAutoHide{
  0%{
    opacity:1;
    visibility:visible;
    pointer-events:auto;
  }
  85%{
    opacity:1;
    visibility:visible;
    pointer-events:auto;
  }
  100%{
    opacity:0;
    visibility:hidden;
    pointer-events:none;
  }
}


/* --- v33 stable core overrides --- */
:root{
  --scanline-opacity: 0.06;
}

body::after{
  content:'';
  position:fixed;
  inset:0;
  background:repeating-linear-gradient(
    0deg,
    rgba(255,255,255,.95) 0 1px,
    transparent 1px 4px
  );
  opacity:var(--scanline-opacity);
  mix-blend-mode:screen;
  pointer-events:none;
  z-index:5;
}

/* white header + insert coin */
header > div > div:first-child{
  color:#fff !important;
}


/* terminal centered */
.arcade-terminal{
  position:fixed !important;
  top:50% !important;
  left:50% !important;
  right:auto !important;
  bottom:auto !important;
  transform:translate(-50%,-50%) !important;
  width:min(680px, 92vw) !important;
  max-height:72vh !important;
  overflow:auto;
  z-index:9999;
  animation:terminalOpen .18s ease-out;
}
@keyframes terminalOpen{
  0%{transform:translate(-50%,-42%) scale(.94); opacity:0}
  100%{transform:translate(-50%,-50%) scale(1); opacity:1}
}

/* slider */
.scanline-control{
  position:fixed;
  right:14px;
  bottom:14px;
  background:#000;
  border:1px solid #ff6a00;
  padding:8px 10px;
  z-index:11;
  font-size:8px;
}
.scanline-control label{
  display:block;
  color:#66ff66;
  margin-bottom:4px;
}
.scanline-control input{
  width:96px;
}

/* game overlay */
.projector-game{
  position:fixed;
  inset:0;
  background:rgba(0,0,0,.94);
  display:none;
  align-items:center;
  justify-content:center;
  flex-direction:column;
  gap:12px;
  z-index:12000;
  padding:16px;
}
.projector-game.active{display:flex}
.projector-game .game-ui{
  display:flex;
  gap:12px;
  flex-wrap:wrap;
  justify-content:center;
  font-size:10px;
  color:#66ff66;
}
.projector-game .game-panel{
  background:#000;
  border:2px solid #ff6a00;
  padding:14px;
  box-shadow:0 0 26px rgba(255,106,0,.18);
}
.projector-game canvas{
  display:block;
  width:min(92vw, 640px);
  height:auto;
  background:#000;
  image-rendering:pixelated;
}
.projector-game .hint{
  font-family:"VT323", monospace;
  font-size:22px;
  color:#66ff66;
}
.projector-game .game-buttons{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  justify-content:center;
}
.projector-game button{
  border:2px solid #ff6a00;
  background:#000;
  color:#fff;
  padding:10px 14px;
  font:inherit;
  cursor:pointer;
}

/* game controls under canvas */
.projector-game .game-touch-controls{
  display:flex;
  gap:14px;
  flex-wrap:wrap;
  justify-content:center;
}
.projector-game .game-touch-controls button{
  min-width:150px;
  border:2px solid #ff6a00;
  background:#000;
  color:#66ff66;
  padding:12px 16px;
  font:inherit;
  cursor:pointer;
  touch-action:manipulation;
}
.projector-game .game-touch-controls button:active{
  transform:translateY(1px);
}
@media (max-width: 640px){
  .projector-game .game-touch-controls{
    width:min(92vw, 640px);
  }
  .projector-game .game-touch-controls button{
    flex:1 1 0;
    min-width:0;
    padding:14px 10px;
  }
  .projector-game .hint{
    text-align:center;
    padding:0 10px;
    line-height:1.1;
  }
}


/* --- Raum gallery + popup --- */
.raum-gallery{
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:18px;
  margin-top:18px;
}
.raum-shot{
  appearance:none;
  background:#000;
  border:2px solid var(--arcade-orange, #ff6a00);
  padding:10px;
  cursor:pointer;
  text-align:left;
  box-shadow:0 0 18px rgba(255,106,0,.14);
}
.raum-shot img{
  display:block;
  width:100%;
  aspect-ratio:4 / 3;
  object-fit:cover;
  border:1px solid rgba(255,106,0,.5);
  margin-bottom:8px;
}
.raum-shot span{
  display:block;
  color:var(--arcade-green, #66ff66);
  font-size:10px;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.raum-shot:hover,
.raum-shot:focus-visible{
  transform:translateY(-2px);
  box-shadow:0 0 24px rgba(255,106,0,.22);
  outline:none;
}
.room-popup-backdrop{
  position:fixed;
  inset:0;
  display:none;
  align-items:center;
  justify-content:center;
  background:rgba(0,0,0,.72);
  z-index:10020;
  padding:16px;
}
.room-popup-backdrop.active{display:flex;}
.room-popup{
  display:block;
  position:relative !important;
  top:auto !important;
  left:auto !important;
  right:auto !important;
  bottom:auto !important;
  transform:none !important;
  width:min(1080px, 94vw) !important;
  max-height:88vh !important;
  overflow:auto;
  animation:terminalOpen .18s ease-out;
}
.room-popup-body{
  display:flex;
  flex-direction:column;
  gap:12px;
}
.room-popup-body img{
  display:block;
  width:100%;
  height:auto;
  max-height:72vh;
  object-fit:contain;
  border:2px solid rgba(255,106,0,.55);
  background:#050505;
}
.room-popup-caption{
  margin:0;
  color:var(--arcade-green, #66ff66);
  line-height:1.7;
}
@media (max-width: 780px){
  .raum-gallery{grid-template-columns:1fr;}
  .room-popup{padding:14px !important;}
  .room-popup-body img{max-height:58vh;}
}


/* v47 room thumbs + popup navigation */
.room-panel{
  max-width: 980px;
}
.room-panel .raum-gallery{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin-top:18px;
  align-items:flex-start;
}
.raum-shot{
  width:96px;
  background:#000;
  border:1px solid rgba(255,106,0,.55);
  padding:6px;
  display:flex;
  flex-direction:column;
  gap:6px;
  align-items:stretch;
  box-shadow:none;
}
.raum-shot img{
  width:100%;
  height:62px;
  object-fit:cover;
  display:block;
  border:1px solid rgba(255,106,0,.3);
}
.raum-shot span{
  display:block;
  font-size:8px;
  line-height:1.3;
  text-align:left;
  color:#fff;
}
.raum-shot:hover,
.raum-shot:focus-visible{
  transform:translateY(-1px);
  box-shadow:0 0 0 1px rgba(255,106,0,.4), 0 0 14px rgba(255,106,0,.14);
}
.room-popup-backdrop{
  padding:24px;
}
.room-popup{
  display:block !important;
  width:min(880px, calc(100vw - 48px));
  max-width:880px;
}
.room-popup-body{
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:320px;
}
.room-popup-body::after{
  content:'';
  position:absolute;
  inset:0;
  pointer-events:none;
  background:repeating-linear-gradient(to bottom, rgba(255,255,255,.05) 0 1px, rgba(0,0,0,0) 1px 4px);
  opacity:.13;
}
.room-popup-body img{
  width:auto;
  max-width:100%;
  max-height:68vh;
  height:auto;
  border:2px solid #ff6a00;
  background:#000;
  position:relative;
  z-index:1;
}
.room-popup-caption{
  margin:14px 52px 0;
  font-size:10px;
  line-height:1.7;
  text-align:center;
  color:#b7ffd8;
}
.room-popup-nav{
  position:absolute;
  top:50%;
  transform:translateY(-50%);
  z-index:2;
  width:38px;
  height:38px;
  border:2px solid #ff6a00;
  background:#000;
  color:#ff6a00;
  font:inherit;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  box-shadow:0 0 18px rgba(255,106,0,.18);
}
.room-popup-prev{left:8px;}
.room-popup-next{right:8px;}
.room-popup-nav:hover,
.room-popup-nav:focus-visible{
  color:#fff;
  box-shadow:0 0 22px rgba(255,106,0,.28);
}
@media(max-width:700px){
  .raum-shot{width:82px;padding:5px;}
  .raum-shot img{height:54px;}
  .raum-shot span{font-size:7px;}
  .room-popup{width:min(96vw, 96vw);}
  .room-popup-nav{width:32px;height:32px;}
  .room-popup-body img{max-height:54vh;}
  .room-popup-caption{margin:12px 38px 0;font-size:9px;}
}


/* Raum thumbnails */
.raum-thumbs{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
.raum-thumbs img{width:110px;height:75px;object-fit:cover;cursor:pointer;border:1px solid rgba(255,255,255,.2);transition:transform .15s}
.raum-thumbs img:hover{transform:scale(1.08)}
#raum-popup{position:fixed;inset:0;background:rgba(0,0,0,.92);display:none;align-items:center;justify-content:center;z-index:9999}
#raum-popup img{max-width:90%;max-height:85%;border:2px solid #ff7a18;box-shadow:0 0 12px rgba(255,122,24,.6)}


/* mailto links back to green */
a[href^="mailto"]{
color:#33ff99;
}
a[href^="mailto"]:hover{
color:#66ffbb;
}

/* grid intensity slider */
.grid-control{
position:fixed;
left:20px;
bottom:20px;
z-index:50;
font-family:'VT323',monospace;
color:#33ff99;
font-size:14px;
opacity:.8;
}
.grid-control input{
width:120px;
}

/* INSERT COINS overlay */


@keyframes coinblink{
0%,100%{opacity:1}
50%{opacity:0}
}


/* INSERT COIN size + blink fix */
.insert-coin{
  font-size:12px !important;
  letter-spacing:2px;
  color:#ffffff !important;
  animation: coinblink 1.2s infinite !important;
  position:fixed;
  bottom:14px;
  left:50%;
  transform:translateX(-50%);
}


/* insert coin final fix */
.insert-coin, #insert-coins{
  position: fixed;
  left: 50%;
  bottom: 14px;
  transform: translateX(-50%);
  z-index: 9996;
  display: block;
  color: #ffffff !important;
  font-family: "Press Start 2P", monospace;
  font-size: 12px !important;
  letter-spacing: 2px;
  text-decoration: none;
  cursor: pointer;
  user-select: none;
  text-shadow: 0 0 6px rgba(255,255,255,.2);
  animation: coinblink 1.2s steps(2, start) infinite !important;
}

@keyframes coinblink{
  0%, 49% { opacity: 1; }
  50%, 100% { opacity: 0; }
}
