/* Kontakt */
.contact-cards-wrap{ padding-top:0; margin-top:-40px; position:relative; z-index:2; }
.contact-cards{ list-style:none; padding:0; margin:0; display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
@media (max-width:1100px){ .contact-cards{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:560px){ .contact-cards{ grid-template-columns:1fr; } }
.contact-card{ display:grid; gap:10px; align-content:start; }
.contact-card .card__icon{ margin-bottom:8px; }
.contact-card__label{ font-size:11.5px; letter-spacing:.16em; text-transform:uppercase; color:var(--cyan); }
.contact-card__value{ font:500 19px/1.35 var(--font-display); color:var(--text); }
.contact-card__value:hover{ color:var(--brand-bright); }
.contact-card__sub{ font-size:14px; }
.contact-card__copy{ position:absolute; top:18px; right:18px; width:38px; height:38px; border-radius:50%; display:grid; place-items:center; border:1px solid var(--line-strong); color:var(--text-2); font-size:17px; opacity:0; transition:opacity var(--dur-ui), color var(--dur-ui), border-color var(--dur-ui); }
.contact-card:hover .contact-card__copy, .contact-card__copy:focus-visible{ opacity:1; }
.contact-card__copy:hover{ color:var(--text); border-color:var(--accent); }
@media (hover:none){ .contact-card__copy{ opacity:1; } }

.contact-grid{ display:grid; grid-template-columns:minmax(0,7fr) minmax(0,5fr); gap:clamp(32px,5vw,80px); align-items:start; }
@media (max-width:1000px){ .contact-grid{ grid-template-columns:1fr; } }
.contact-form-wrap{ margin-top:12px; }

.map{ margin:0; position:sticky; top:calc(var(--header-h) + 24px); border-radius:var(--r-4); overflow:hidden; border:1px solid var(--line); background:var(--ink-950); }
.map__svg{ width:100%; height:auto; aspect-ratio:1; }
.map__river{ fill:none; stroke:rgba(42,159,216,.35); stroke-width:14; stroke-linecap:round; }
.map__roads path{ fill:none; stroke:rgba(255,255,255,.1); stroke-width:2; }
.map__pulse{ fill:none; stroke:#3FD0E0; stroke-width:2; transform-origin:300px 320px; animation:mapPulse 2.4s var(--ease-out) infinite; }
@keyframes mapPulse{ 0%{ transform:scale(.6); opacity:1; } 100%{ transform:scale(3.2); opacity:0; } }
@media (prefers-reduced-motion: reduce){ .map__pulse{ animation:none; } }
.map__label{ font:600 20px var(--font-display); fill:#EAF1FB; }
.map__sub{ font:500 12px var(--font-mono); fill:#9DB0C9; }
.map__cap{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:12px; padding:18px 20px; border-top:1px solid var(--line); font-size:14px; color:var(--text-2); }
.map__cap span{ display:inline-flex; gap:8px; align-items:center; }

/* ---- Hero: code-drawn "beacon" on Rheinau (IMG-19 stays blocked) ---------------- */
.contact-hero{ min-height:auto; align-items:center; padding:calc(var(--header-h) + clamp(40px, 6vw, 88px)) 0 clamp(96px, 10vw, 150px); }
.contact-hero__aurora{ position:absolute; inset:0; z-index:-3; pointer-events:none;
  background:
    radial-gradient(42% 60% at 78% 38%, rgba(42,159,216,.20), transparent 70%),
    radial-gradient(30% 40% at 12% 85%, rgba(63,208,224,.08), transparent 70%),
    radial-gradient(60% 50% at 50% -10%, rgba(42,159,216,.14), transparent 70%); }
.contact-hero__aurora::after{ content:""; position:absolute; inset:0;
  background-image:radial-gradient(rgba(234,241,251,.09) 1px, transparent 1.4px); background-size:26px 26px;
  -webkit-mask-image:radial-gradient(60% 70% at 70% 40%, #000 20%, transparent 75%); mask-image:radial-gradient(60% 70% at 70% 40%, #000 20%, transparent 75%); }
.contact-hero__media{ opacity:.35; }
.contact-hero__grid{ display:grid; grid-template-columns:minmax(0,7fr) minmax(0,5fr); gap:clamp(24px,4vw,64px); align-items:center; }
.contact-hero__title{ max-width:13ch; }

.office-status{ display:inline-flex; align-items:center; gap:10px; justify-self:start; padding:9px 16px 9px 12px; border-radius:var(--r-pill); border:1px solid var(--line-strong); background:var(--glass-bg); -webkit-backdrop-filter:var(--glass-blur); backdrop-filter:var(--glass-blur); font:500 13.5px/1.2 var(--font-body); color:var(--text-2); }
.office-status__dot{ position:relative; width:9px; height:9px; border-radius:50%; background:var(--text-3); }
.office-status[data-state="open"] .office-status__dot{ background:#3FE08F; box-shadow:0 0 10px rgba(63,224,143,.7); }
.office-status[data-state="open"] .office-status__dot::after{ content:""; position:absolute; inset:-4px; border-radius:50%; border:1px solid rgba(63,224,143,.6); animation:statusPing 2s var(--ease-out) infinite; }
.office-status[data-state="closed"] .office-status__dot{ background:#E0A33F; }
.office-status strong{ color:var(--text); font-weight:600; }
@keyframes statusPing{ 0%{ transform:scale(.6); opacity:1; } 100%{ transform:scale(1.9); opacity:0; } }

.beacon{ position:relative; width:100%; max-width:560px; aspect-ratio:1; justify-self:end; }
.beacon__svg{ position:absolute; inset:0; width:100%; height:100%; overflow:visible; }
.beacon__rings circle{ fill:none; stroke:rgba(234,241,251,.09); stroke-width:1; }
.beacon__rings .beacon__outer{ stroke:rgba(42,159,216,.35); stroke-dasharray:2 7; }
.beacon__ticks line{ stroke:rgba(234,241,251,.18); stroke-width:1; }
.beacon__cross{ stroke:rgba(234,241,251,.05); stroke-width:1; fill:none; }
.beacon__river{ fill:none; stroke:url(#bcRiver); stroke-width:12; stroke-linecap:round; }
.beacon__links path{ fill:none; stroke:rgba(63,208,224,.5); stroke-width:1.2; stroke-dasharray:3 7; animation:beaconFlow 1.6s linear infinite; }
@keyframes beaconFlow{ to{ stroke-dashoffset:-20; } }
.beacon__pulses circle{ fill:none; stroke:#3FD0E0; stroke-width:1.5; transform-box:fill-box; transform-origin:center; animation:beaconPulse 3.6s var(--ease-out) infinite; opacity:0; }
.beacon__pulses circle:nth-child(2){ animation-delay:1.2s; }
.beacon__pulses circle:nth-child(3){ animation-delay:2.4s; }
@keyframes beaconPulse{ 0%{ transform:scale(.25); opacity:.9; } 100%{ transform:scale(6.6); opacity:0; } }
.beacon__core{ fill:#3FD0E0; filter:drop-shadow(0 0 8px #3FD0E0); }
.beacon__sweep{ position:absolute; inset:4.7%; border-radius:50%; pointer-events:none;
  background:conic-gradient(from 0deg, transparent 0deg, rgba(63,208,224,0) 280deg, rgba(63,208,224,.22) 358deg, rgba(63,208,224,.5) 360deg);
  -webkit-mask-image:radial-gradient(closest-side, transparent 6%, #000 30%); mask-image:radial-gradient(closest-side, transparent 6%, #000 30%);
  animation:beaconSweep 7s linear infinite; }
@keyframes beaconSweep{ to{ transform:rotate(360deg); } }
.beacon__sat{ position:absolute; width:clamp(42px, 4.4vw, 56px); aspect-ratio:1; translate:-50% -50%; display:grid; place-items:center; border-radius:50%;
  background:rgba(13,22,40,.82); border:1px solid rgba(63,208,224,.35); color:var(--cyan); font-size:clamp(18px, 1.8vw, 23px);
  box-shadow:0 0 0 6px rgba(63,208,224,.05), 0 12px 30px -10px rgba(0,0,0,.8); -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); }
.beacon__sat .ti{ animation:satFloat 5s ease-in-out infinite; animation-delay:calc(var(--d) * -1.3s); }
@keyframes satFloat{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-4px); } }
.beacon__label{ position:absolute; left:50%; top:calc(50% - 50px); translate:-50% 0; padding:5px 9px; border-radius:6px; background:rgba(8,14,27,.72); font-size:12px; letter-spacing:.18em; text-transform:uppercase; color:var(--text); white-space:nowrap; }
.beacon__label b{ color:var(--cyan); font-weight:400; }

@media (max-width:900px){
  .contact-hero{ padding-bottom:clamp(88px, 14vw, 120px); }
  .contact-hero__grid{ grid-template-columns:1fr; }
  .contact-hero__grid .beacon{ position:absolute; z-index:-1; top:calc(var(--header-h) - 10px); right:-28vw; width:88vw; max-width:520px; opacity:.55; }
  .contact-hero .beacon__sat, .contact-hero .beacon__label{ display:none; }
}
@media (prefers-reduced-motion: reduce){
  .beacon__links path, .beacon__pulses circle, .beacon__sweep, .beacon__sat .ti, .office-status__dot::after{ animation:none !important; }
  .beacon__pulses circle:first-child{ opacity:.35; transform:scale(2.5); }
  .beacon__sweep{ opacity:.5; }
}

/* ---- Form section: ambient light + glass panel --------------------------------- */
.contact-cards-wrap{ padding-bottom:clamp(64px, 8vw, 110px); }
.contact-form-sec{ overflow:hidden; isolation:isolate; }
.contact-form-sec::before{ content:""; position:absolute; inset:0; z-index:-1; pointer-events:none;
  background:
    radial-gradient(38% 45% at 8% 20%, rgba(42,159,216,.13), transparent 70%),
    radial-gradient(34% 40% at 92% 85%, rgba(63,208,224,.09), transparent 70%); }
.contact-form-sec::after{ content:""; position:absolute; inset:0; z-index:-1; pointer-events:none;
  background-image:linear-gradient(rgba(234,241,251,.035) 1px, transparent 1px), linear-gradient(90deg, rgba(234,241,251,.035) 1px, transparent 1px); background-size:56px 56px;
  -webkit-mask-image:linear-gradient(transparent, #000 25%, #000 75%, transparent); mask-image:linear-gradient(transparent, #000 25%, #000 75%, transparent); }
.contact-panel{ padding:clamp(20px, 3vw, 32px); border-radius:var(--r-4); border:1px solid var(--line); background:linear-gradient(160deg, rgba(23,34,58,.7), rgba(10,17,32,.55)); -webkit-backdrop-filter:var(--glass-blur); backdrop-filter:var(--glass-blur); box-shadow:0 30px 80px -40px rgba(0,0,0,.8); }
