@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Manrope:wght@400;500;600;700;800&display=swap');

:root {
  --bg: #07111f;
  --panel:  rgba(12, 25, 41, 0.5);
  --panel-2: #102136;
  --ink: #f4f8fc;
  --muted: #8fa4b8;
  --blue: #55b9f3;
  --blue-bright: #8bd3ff;
  --lime: #b8ef5b;
  --line: rgba(139, 211, 255, .16);
  --header-height: 84px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: "Manrope", Arial, sans-serif;
  min-height: 100vh;
}
a { color: inherit; text-decoration: none; }
img { max-width: 100%; }

#matrixCanvas {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: -1;
  mask-image: linear-gradient(to bottom, rgba(0,0,0,.85), transparent 92%);
}

header, .site-header {
  width: 100%;
  min-height: var(--header-height);
  padding: 0 clamp(22px, 5vw, 76px);
  display: flex;
  align-items: center;
  gap: 44px;
  position: relative;
  top: auto;
  left: auto;
  z-index: 20;
  background: rgba(7, 17, 31, .88);
  border-bottom: 1px solid var(--line);
  backdrop-filter: blur(18px);
}
.home .site-header { position: sticky; top: 0; }
.brand { display: inline-flex; align-items: center; gap: 10px; font: 700 18px "IBM Plex Mono", monospace; letter-spacing: .18em; }
.brand img { width: 44px; height: 36px; object-fit: contain; }
.banner { flex: 1; }
.banner h1 { margin: 0; display: flex; align-items: center; gap: 12px; font: 700 19px "IBM Plex Mono", monospace; letter-spacing: .18em; text-shadow: none; }
.banner h1 img { width: 44px; height: 40px; object-fit: contain; }
nav { margin-left: auto; }
nav ul { display: flex; align-items: center; gap: 7px; margin: 0; padding: 0; list-style: none; }
nav li { margin: 0; }
nav a { display: block; padding: 10px 13px; color: var(--muted); font: 600 12px "IBM Plex Mono", monospace; border: 0; transition: color .2s, background .2s; }
nav a:hover, nav a:focus, nav a.active { color: var(--ink); background: rgba(139, 211, 255, .08); }
.header-contact { display: inline-flex; gap: 20px; align-items: center; padding: 12px 15px; color: var(--bg); background: var(--blue-bright); font: 600 11px "IBM Plex Mono", monospace; }

main { max-width: none; margin: 0; padding: 0; min-height: 60vh; background: transparent; color: var(--ink); position: relative; }
body:not(.home) main {
  width: min(1120px, calc(100% - 36px));
  margin: 38px auto;
  padding: clamp(28px, 5vw, 64px);
  background: rgba(12, 25, 41, .94);
  border: 1px solid var(--line);
  border-radius: 4px;
}
body:not(.home) main > h1:first-child, body:not(.home) main > p:first-child:empty { display: none; }
main h2 { color: var(--ink); text-align: left; }
main p { line-height: 1.72; text-align: left; }

.hero {
  min-height: calc(100vh - var(--header-height));
  max-width: 1500px;
  margin: 0 auto;
  padding: clamp(70px, 10vw, 140px) clamp(24px, 7vw, 105px);
  display: grid;
  grid-template-columns: 1.1fr .9fr;
  align-items: center;
  gap: clamp(40px, 8vw, 120px);
}
.eyebrow { display: flex; align-items: center; gap: 10px; margin: 0 0 24px; color: var(--blue-bright); font: 600 10px "IBM Plex Mono", monospace; letter-spacing: .16em; text-transform: uppercase; }
.eyebrow span { width: 24px; height: 1px; background: var(--blue); box-shadow: 0 0 10px var(--blue); }
.hero h1 { margin: 0; font-size: clamp(58px, 8.3vw, 126px); line-height: .86; letter-spacing: -.075em; }
.hero h1 em { display: inline-block; color: transparent; font-style: normal; -webkit-text-stroke: 1px var(--blue-bright); text-shadow: 0 0 30px rgba(85,185,243,.17); }
.hero-intro { max-width: 610px; margin: 38px 0 0; color: var(--muted); font-size: clamp(15px, 1.4vw, 18px); }
.hero-actions { display: flex; align-items: center; gap: 30px; margin-top: 40px; }
.button { display: inline-flex; align-items: center; justify-content: space-between; min-width: 220px; padding: 17px 19px; font: 600 11px "IBM Plex Mono", monospace; }
.button-primary { color: var(--bg); background: var(--blue-bright); box-shadow: 8px 8px 0 rgba(85,185,243,.12); }
.button-link { display: inline-flex; gap: 16px; align-items: center; padding-bottom: 5px; border-bottom: 1px solid var(--line); font: 600 11px "IBM Plex Mono", monospace; color: var(--muted); }
.button-link:hover { color: var(--ink); }

.hero-console { min-height: 440px; background: rgba(12,25,41, 0.2); border: 1px solid rgba(139,211,255,.22); box-shadow: 24px 24px 0 rgba(3,9,16,.44); position: relative; transform: rotate(1deg); }
.console-bar { height: 52px; padding: 0 18px; display: flex; align-items: center; border-bottom: 1px solid var(--line); color: var(--muted); font: 9px "IBM Plex Mono", monospace; }
.console-bar > span { display: flex; gap: 5px; margin-right: 16px; }
.console-bar i { width: 7px; height: 7px; border: 1px solid var(--muted); border-radius: 50%; }
.console-bar small { margin-left: auto; color: var(--lime); }
.console-body { padding: 38px 30px; font: clamp(10px, 1vw, 13px)/2 "IBM Plex Mono", monospace; }
.console-body p { margin: 0; color: var(--muted); }
.console-body p span { display: inline-block; width: 28px; color: #40556b; }
.console-body b { color: #c78cff; }
.console-body em { color: var(--blue-bright); font-style: normal; }
.console-output { margin-top: 22px !important; }
.console-output strong { color: var(--lime); font-weight: 400; }
.hex-orbit { width: 150px; height: 150px; position: absolute; right: 28px; bottom: 24px; border: 1px solid var(--line); border-radius: 50%; animation: spin 22s linear infinite; }
.hex-orbit:before, .hex-orbit:after { content:""; position:absolute; inset:20px; border:1px dashed rgba(139,211,255,.22); border-radius:50%; }
.hex-orbit:after { inset:55px; background: var(--blue); border: 0; box-shadow: 0 0 22px var(--blue); }
.hex-orbit span { position:absolute; color:var(--blue-bright); font:9px "IBM Plex Mono"; }
.hex-orbit span:nth-child(1){left:68px;top:-5px}.hex-orbit span:nth-child(2){right:-4px;top:68px}.hex-orbit span:nth-child(3){left:68px;bottom:-6px}.hex-orbit span:nth-child(4){left:-4px;top:68px}
@keyframes spin { to { transform: rotate(360deg); } }

.status-strip { min-height: 58px; padding: 0 clamp(24px,6vw,90px); display: flex; align-items: center; justify-content: space-between; gap: 20px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); background: rgba(12,25,41,.7); }
.status-strip p { margin: 0; color: var(--muted); font: 9px "IBM Plex Mono", monospace; letter-spacing: .12em; }
.status-dot { display: inline-block; width: 7px; height: 7px; margin-right: 8px; border-radius: 50%; background: var(--lime); box-shadow: 0 0 10px var(--lime); }

.projects { padding: clamp(90px, 11vw, 160px) clamp(24px, 7vw, 105px); max-width: 1500px; margin: 0 auto; }
.section-heading { display: flex; justify-content: space-between; align-items: flex-end; gap: 50px; margin-bottom: 70px; }
.section-heading h2, .about-copy h2 { margin: 0; font-size: clamp(45px, 6vw, 82px); line-height: .95; letter-spacing: -.06em; }
.section-heading > p { max-width: 420px; margin: 0; color: var(--muted); }
.project-grid { display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--line); }
.project-card { min-height: 480px; padding: 23px 30px 28px; position: relative; border-right: 1px solid var(--line); transition: background .25s, transform .25s; }
.project-card:first-child { border-left: 1px solid var(--line); }
.project-card:hover { background: var(--panel); transform: translateY(-6px); }
.card-number { color: var(--muted); font: 9px "IBM Plex Mono", monospace; }
.card-visual { height: 230px; margin: 25px 0 28px; position: relative; display: grid; place-items: center; }
.gallery-visual i { position: absolute; width: 125px; height: 155px; border: 1px solid var(--blue); background: var(--panel); }
.gallery-visual i:nth-child(1) { transform: rotate(-10deg) translateX(-22px); opacity: .4; }
.gallery-visual i:nth-child(2) { transform: rotate(7deg) translateX(20px); background: var(--panel-2); }
.gallery-visual i:nth-child(3) { width: 35px; height: 35px; border-radius: 50%; background: var(--blue); box-shadow: 0 0 30px rgba(85,185,243,.5); }
.server-visual i { position:absolute; width:150px; height:28px; border:1px solid var(--line); background:var(--panel); }
.server-visual i:after{content:"";position:absolute;right:10px;top:9px;width:6px;height:6px;border-radius:50%;background:var(--lime)}
.server-visual i:nth-child(1){top:65px}.server-visual i:nth-child(2){top:101px}.server-visual i:nth-child(3){top:137px}.server-visual strong{position:absolute;bottom:26px;color:var(--lime);font:9px "IBM Plex Mono";letter-spacing:.14em}
.tools-visual { border: 1px solid var(--line); margin-top: 45px; height: 190px; background: rgba(3,9,16,.55); }
.tools-visual span { color: var(--lime); font: 35px "IBM Plex Mono"; }
.tools-visual i { position:absolute;height:1px;background:var(--line);width:50%;bottom:38px}.tools-visual i:last-child{bottom:25px;width:35%}
.card-copy p { margin: 0 0 10px; color: var(--blue); font: 9px "IBM Plex Mono"; letter-spacing: .14em; }
.card-copy h3 { margin: 0 0 10px; font-size: 25px; }
.card-copy span { color: var(--muted); font-size: 13px; line-height: 1.6; }
.card-arrow { position: absolute; right: 28px; bottom: 28px; color: var(--blue-bright); }

.about { min-height: 680px; display: grid; grid-template-columns: 1fr 1fr; background: var(--panel); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.about-mark { min-height: 580px; display:grid; place-items:center; position:relative; overflow:hidden; background:radial-gradient(circle,rgba(85,185,243,.12),transparent 55%); border-right:1px solid var(--line) }
.about-mark:before,.about-mark:after{content:"";position:absolute;width:440px;height:440px;border:1px solid var(--line);border-radius:50%}.about-mark:after{width:280px;height:280px;border-style:dashed}
.about-mark span{font:800 clamp(130px,18vw,250px) "Manrope";color:transparent;-webkit-text-stroke:1px var(--blue);z-index:1;line-height:1}.about-mark i{position:absolute;z-index:2;padding:8px 12px;background:var(--lime);color:var(--bg);font:10px "IBM Plex Mono";transform:rotate(-8deg)}
.about-copy { padding: clamp(70px, 9vw, 140px); }
.about-copy h2 { margin-bottom: 35px; }
.about-copy > p:not(.eyebrow) { max-width: 540px; color: var(--muted); }
.about-copy .button-link { margin-top: 30px; }

footer { margin: 0; padding: 65px clamp(24px,7vw,105px); display: grid; grid-template-columns: 2fr 1fr 1fr auto; gap: 50px; align-items:start; color:var(--muted); background:rgba(2, 2, 2, 0); border-top:0; }
.footer-brand p { font-size: 12px; margin: 14px 0 0; }
.footer-column { min-width: 0; text-align: left; }
.footer-column h4 { display:block; margin:0 0 15px; padding:0; border:0; color:var(--ink); font:600 10px "IBM Plex Mono"; letter-spacing:.12em; text-transform:uppercase }
.footer-column ul { margin:0; padding:0; list-style:none }.footer-column li { margin:8px 0 }.footer-column a { color:var(--muted); font-size:12px }.footer-column a:hover { color:var(--blue-bright); text-decoration:none }
.copyright { margin: 3px 0 0; font: 9px "IBM Plex Mono"; }

#ts-viewer { font-family:"IBM Plex Mono",monospace;color:#cce4ff;background:#06101c;padding:1.5rem;border:1px solid var(--line);border-radius:4px;max-width:100%;margin:2rem auto;box-shadow:0 0 30px rgba(0,170,255,.08) }
#ts-viewer li { margin-left:1rem }.status-online{color:var(--lime);font-weight:600;text-shadow:0 0 6px rgba(184,239,91,.6)}

/* Gemeinsames Erscheinungsbild der klassischen Unterseiten */
body:not(.home):not(.gallery-page) {
  display: flex;
  min-height: 100vh;
  flex-direction: column;
  background: var(--bg);
  color: var(--ink);
  font-family: "Manrope", Arial, sans-serif;
}
body:not(.home):not(.gallery-page) #matrixCanvas { opacity: .9; }
body:not(.home):not(.gallery-page) header { position: sticky; top: 0; }
body:not(.home):not(.gallery-page) .banner h1 {
  margin: 0;
  font: 700 18px "IBM Plex Mono", monospace;
  letter-spacing: .18em;
}
body:not(.home):not(.gallery-page) .banner h1 img {
  width: 44px !important;
  height: 36px !important;
}
body:not(.home):not(.gallery-page) main {
  width: min(1120px, calc(100% - 36px));
  margin: clamp(42px, 7vw, 90px) auto;
  padding: clamp(30px, 6vw, 72px);
  flex: 1;
  color: var(--ink);
  background: rgba(7, 17, 31, .72);
  border: 1px solid rgba(139, 211, 255, .2);
  border-radius: 0;
  box-shadow: 24px 24px 0 rgba(3, 9, 16, .34);
  backdrop-filter: blur(12px);
}
body:not(.home):not(.gallery-page) main > h1,
body:not(.home):not(.gallery-page) main > h2,
body:not(.home):not(.gallery-page) main .box > h2 {
  margin: 0 0 34px;
  color: var(--ink);
  font: 700 clamp(42px, 7vw, 78px)/.95 "Manrope", Arial, sans-serif;
  letter-spacing: -.055em;
}
body:not(.home):not(.gallery-page) main h3,
body:not(.home):not(.gallery-page) main strong { color: var(--blue-bright); }
body:not(.home):not(.gallery-page) main p,
body:not(.home):not(.gallery-page) main li {
  max-width: 850px;
  color: var(--muted);
  line-height: 1.75;
}
body:not(.home):not(.gallery-page) main a { color: var(--blue-bright); }
body:not(.home):not(.gallery-page) main .box {
  width: min(560px, 100%);
  min-width: 0;
  margin: 0 auto;
  padding: clamp(24px, 5vw, 48px);
  background: transparent;
  border: 1px solid var(--line);
  border-radius: 0;
}
body:not(.home):not(.gallery-page) input,
body:not(.home):not(.gallery-page) select,
body:not(.home):not(.gallery-page) textarea {
  width: 100%;
  min-height: 48px;
  margin: 10px 0;
  padding: 12px 14px;
  color: var(--ink);
  background: rgba(3, 9, 16, .68);
  border: 1px solid var(--line);
  border-radius: 0;
  font: 12px "IBM Plex Mono", monospace;
}
body:not(.home):not(.gallery-page) input:focus,
body:not(.home):not(.gallery-page) select:focus,
body:not(.home):not(.gallery-page) textarea:focus {
  outline: 1px solid var(--blue-bright);
  border-color: var(--blue-bright);
}
body:not(.home):not(.gallery-page) button,
body:not(.home):not(.gallery-page) input[type="submit"] {
  width: auto;
  min-height: 44px;
  padding: 0 22px;
  color: var(--bg);
  background: var(--blue-bright);
  border: 0;
  border-radius: 0;
  font: 700 11px "IBM Plex Mono", monospace;
  letter-spacing: .06em;
  cursor: pointer;
}
body:not(.home):not(.gallery-page) button a { color: inherit; }
body:not(.home):not(.gallery-page) table {
  width: 100%;
  margin-top: 28px;
  border-collapse: collapse;
  color: var(--ink);
  background: transparent;
}
body:not(.home):not(.gallery-page) th,
body:not(.home):not(.gallery-page) td {
  padding: 15px 12px;
  text-align: left;
  border-bottom: 1px solid var(--line);
}
body:not(.home):not(.gallery-page) th {
  color: var(--blue-bright);
  font: 600 10px "IBM Plex Mono", monospace;
  letter-spacing: .1em;
  text-transform: uppercase;
}
body:not(.home):not(.gallery-page) footer { margin-top: auto; }
.err { margin: 12px 0; color: #ff8585; font: 12px "IBM Plex Mono", monospace; }

@media (max-width: 900px) {
  .site-header, header { gap: 16px; }
  .header-contact { display: none; }
  .hero { grid-template-columns: 1fr; }
  .hero-console { max-width: 600px; width: 100%; }
  .project-grid { grid-template-columns: 1fr; }
  .project-card, .project-card:first-child { min-height: 420px; border-left: 1px solid var(--line); border-bottom: 1px solid var(--line); }
  .about { grid-template-columns: 1fr; }
  .about-mark { min-height: 430px; border-right:0; border-bottom:1px solid var(--line) }
  footer { grid-template-columns: 2fr 1fr 1fr; }
  .copyright { grid-column: 1 / -1; }
}
@media (max-width: 650px) {
  :root { --header-height: auto; }
  .site-header, header { position: relative; padding: 17px 20px; flex-wrap: wrap; }
  .brand { margin-right: auto; }
  nav { width: 100%; order: 3; overflow-x: auto; }
  nav ul { justify-content: flex-start; }
  nav a { white-space: nowrap; }
  .hero { min-height: auto; padding-top: 75px; }
  .hero h1 { font-size: clamp(55px, 18vw, 82px); }
  .hero-actions { align-items:flex-start; flex-direction:column; }
  .hero-console { min-height: 390px; }
  .status-strip { padding: 18px 24px; flex-wrap: wrap; }
  .status-strip p:nth-child(n+3) { display:none; }
  .section-heading { align-items:flex-start; flex-direction:column; }
  .project-card { padding-left: 22px; padding-right: 22px; }
  .about-copy { padding: 70px 25px; }
  footer { grid-template-columns: 1fr 1fr; }
  .footer-brand, .copyright { grid-column: 1 / -1; }
  body:not(.home) main { margin-top: 20px; padding: 24px; }
  body:not(.home):not(.gallery-page) main {
    width: calc(100% - 24px);
    margin: 22px auto 45px;
    padding: 28px 20px;
    box-shadow: 10px 10px 0 rgba(3, 9, 16, .34);
  }
  body:not(.home):not(.gallery-page) main > h1,
  body:not(.home):not(.gallery-page) main > h2,
  body:not(.home):not(.gallery-page) main .box > h2 {
    font-size: clamp(36px, 13vw, 54px);
  }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior:auto }
  .hex-orbit { animation:none }
}
