.landing{
  position: fixed;
  inset: 0;
  overflow: hidden;
  /* warmer Kalkputz statt Reinweiß */
  background: #f2efe9;
}

/* Licht, Vignette, Patina, Stuck-Schatten */
.landing::before{
  content:"";
  position:absolute;
  inset:-18%;
  pointer-events:none;

  background:
    /* Fensterlicht: weich, leicht seitlich */
    radial-gradient(1200px 900px at 18% 20%,
      rgba(255,255,255,0.95),
      rgba(255,255,255,0.10) 55%,
      rgba(0,0,0,0.05) 85%),

    /* Altbau-Unebenheit: große wolkige Flächen */
    radial-gradient(1000px 800px at 65% 45%,
      rgba(0,0,0,0.040),
      rgba(0,0,0,0.0) 60%),
    radial-gradient(900px 700px at 30% 75%,
      rgba(0,0,0,0.030),
      rgba(0,0,0,0.0) 62%),

    /* leichte Patina-Flecken (sehr subtil) */
    radial-gradient(520px 420px at 78% 34%,
      rgba(120,95,60,0.045),
      rgba(120,95,60,0.0) 70%),
    radial-gradient(480px 380px at 40% 30%,
      rgba(120,95,60,0.030),
      rgba(120,95,60,0.0) 72%),

    /* Stuck/Decken-Kante: dunkler oben + zarter Schatten */
    linear-gradient(180deg,
      rgba(0,0,0,0.085),
      rgba(0,0,0,0.00) 22%),

    /* ganz leichte Randabdunklung (Fotolinse) */
    radial-gradient(1400px 1100px at 50% 55%,
      rgba(0,0,0,0.00) 60%,
      rgba(0,0,0,0.10) 100%);

  filter: blur(0.25px);
}

/* Putzstruktur + Filmkorn (SVG fractalNoise) */
.landing::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;

  /* Korn + Putz: multiply wirkt wie Foto */
  opacity: 0.18;
  mix-blend-mode: multiply;

  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='220' height='220' filter='url(%23n)' opacity='.62'/%3E%3C/svg%3E");
  background-size: 260px 260px;
}

/* Title: wie Wandbeschriftung im Altbau */
.gallery-title{
  position:absolute;
  top: 28px;
  left: 34px;

  font-size: 18px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #141414;

  /* minimaler “Schablonen”-Schatten */
  text-shadow:
    0 1px 0 rgba(255,255,255,0.30),
    0 2px 14px rgba(0,0,0,0.14);
}

/* Buttons: kleine Metallschilder / Rahmen */
.floating-actions{
  position:absolute;
  left:50%;
  top:56%;
  transform:translate(-50%,-50%);
  display:flex;
  gap: 14px;
}
.meta {
  position: absolute;
  top: 28px;
  right: 34px;
}

.meta button {
  background: none;
  border: none;
  padding: 0;

  font-size: 13px;
  letter-spacing: 0.08em;
  color: rgba(20,20,20,0.55);
  cursor: pointer;
}

.meta button:hover {
  color: rgba(20,20,20,0.85);
}

.legal {
  position: absolute;
  bottom: 18px;
  right: 32px; /* alternativ: left: 50%; transform */
  font-size: 11px;
  letter-spacing: 0.08em;
}

.legal a {
  color: rgba(20,20,20,0.35);
  text-decoration: none;
  transition: color 0.2s ease;
}

.legal a:hover {
  color: rgba(20,20,20,0.75);
}

/* Plaketten-Look */
.action{
  background: rgba(255,255,255,0.12);
  border: 1px solid rgba(18,18,18,0.80);
  color: #141414;

  padding: 12px 22px;
  font-size: 15px;
  letter-spacing: 0.04em;
  cursor: pointer;

  /* leichtes “Material” */
  box-shadow:
    0 10px 26px rgba(0,0,0,0.10),
    inset 0 1px 0 rgba(255,255,255,0.25);
  backdrop-filter: blur(2px);
}

.action:hover{
  background: rgba(18,18,18,0.92);
  color: #f2efe9;
}

.action.ghost{
  border-color: rgba(18,18,18,0.45);
  color: rgba(18,18,18,0.62);
}

.action:disabled{
  opacity: 0.35;
  cursor: not-allowed;
  box-shadow: none;
}

/* Hint: wie kleine Museumsnotiz */
.hint{
  position:absolute;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%);

  font-size: 13px;
  letter-spacing: 0.06em;
  color: rgba(20,20,20,0.60);
}

.portal{
  position: absolute;
  left: 50%;
  top: 54%;
  transform: translate(-50%, -50%);
  width: min(420px, 70vw);
}

.portal img{
  width: 100%;
  display: block;

  /* Bild hängt an der Wand */
  box-shadow:
    0 14px 40px rgba(0,0,0,0.35),
    inset 0 0 0 1px rgba(255,255,255,0.04);

  filter: contrast(0.95) brightness(0.96);
  transition:
    transform 0.6s ease,
    box-shadow 0.6s ease,
    filter 0.6s ease;

  cursor: pointer;
}

/* Nähe */
.portal img:hover{
  transform: scale(1.02);
  box-shadow:
    0 22px 60px rgba(0,0,0,0.45);
  filter: contrast(1.05) brightness(1.02);
}
.modal {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.45);
  display: flex;
  align-items: center;
  justify-content: center;
}

.modal.hidden {
  display: none;
}

.modal-card {
  width: min(520px, calc(100% - 48px));
  padding: 26px;
  background: #f2efe9;
  color: #111;
  border-radius: 2px;
  box-shadow: 0 30px 80px rgba(0,0,0,0.35);
}
