:root{
  --void:#05050a;
  --void-2:#0a0b13;
  --panel:rgba(255,255,255,0.045);
  --panel-border:rgba(255,255,255,0.10);
  --violet:#9a7bff;
  --cyan:#48e6cd;
  --ember:#ff7e52;
  --text:#f4f2fa;
  --text-dim:rgba(244,242,250,0.62);
  --text-faint:rgba(244,242,250,0.38);
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--void);
  color:var(--text);
  font-family:'Space Grotesk', sans-serif;
  line-height:1.65;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{font-family:'Fraunces', serif; margin:0; font-weight:500; letter-spacing:-0.01em;}
a{color:inherit; text-decoration:none;}
img,svg,canvas{display:block; max-width:100%;}
.wrap{max-width:1160px; margin:0 auto; padding:0 30px; position:relative; z-index:2;}
.mono{font-family:'Space Mono', monospace;}
.eyebrow{
  font-family:'Space Mono', monospace; text-transform:uppercase; letter-spacing:0.22em;
  font-size:11.5px; font-weight:400; color:var(--cyan); display:flex; align-items:center; gap:10px;
}
.eyebrow::before{content:""; width:22px; height:1px; background:var(--cyan);}

#bg-canvas{position:fixed; inset:0; z-index:0; width:100%; height:100%;}
.grain{position:fixed; inset:0; z-index:1; pointer-events:none; opacity:0.035;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

.btn{
  display:inline-flex; align-items:center; gap:10px; padding:15px 28px; border-radius:2px;
  font-size:14px; font-weight:500; letter-spacing:0.02em; cursor:pointer; border:1px solid var(--panel-border);
  background:var(--panel); color:var(--text); backdrop-filter:blur(14px); transition:all .35s cubic-bezier(.2,.8,.2,1);
  position:relative; overflow:hidden;
}
.btn:hover{border-color:var(--cyan); box-shadow:0 0 26px -6px var(--cyan);}
.btn.solid{background:linear-gradient(135deg, var(--ember), #d9542a); border-color:transparent; color:#160a04;}
.btn.solid:hover{box-shadow:0 0 30px -6px var(--ember);}
.btn.small{padding:11px 22px; font-size:13px;}

/* header */
header{position:fixed; top:0; left:0; right:0; z-index:40; padding:18px 0;}
.nav{display:flex; align-items:center; justify-content:space-between;}
.brand{display:flex; align-items:center; gap:10px; font-family:'Fraunces', serif; font-size:18px;}
.brand-mark{width:34px; height:34px; object-fit:contain;}
.navlinks{display:flex; align-items:center; gap:28px; font-size:13px; font-family:'Space Mono', monospace; flex-wrap:wrap;}
.navlinks a{color:var(--text-dim); position:relative; white-space:nowrap;}
.navlinks a:hover, .navlinks a.active{color:var(--cyan);}
#menuToggle{display:none;}
.menu-btn{display:none; background:none; border:none; cursor:pointer;}
.menu-btn span{display:block; width:22px; height:1px; background:var(--text); margin:6px 0;}
@media (max-width:1080px){
  .navlinks{position:fixed; inset:64px 0 0 0; background:rgba(5,5,10,0.97); flex-direction:column; align-items:flex-start; padding:20px 30px; transform:translateY(-115%); transition:.4s; overflow-y:auto;}
  .navlinks a{width:100%; padding:16px 0; border-bottom:1px solid var(--panel-border);}
  #menuToggle:checked ~ .navlinks{transform:translateY(0);}
  .menu-btn{display:block;}
}

/* perspective reveal engine */
.reveal{
  opacity:0; transform:perspective(1200px) rotateX(14deg) translateY(70px) translateZ(-60px);
  transition:opacity 1.1s cubic-bezier(.16,1,.3,1), transform 1.1s cubic-bezier(.16,1,.3,1);
  will-change:transform, opacity;
}
.reveal.in{opacity:1; transform:perspective(1200px) rotateX(0) translateY(0) translateZ(0);}
.reveal.d1{transition-delay:.08s;} .reveal.d2{transition-delay:.16s;} .reveal.d3{transition-delay:.24s;}

/* hero */
.hero{min-height:100vh; display:flex; flex-direction:column; justify-content:center; position:relative; padding-top:80px;}
.hero .wrap{text-align:center;}
.hero h1{font-size:clamp(40px,8vw,96px); line-height:0.98; margin:26px 0 30px;}
.hero h1 .line{display:block; overflow:hidden;}
.hero h1 em{font-style:italic; background:linear-gradient(120deg, var(--ember), var(--violet) 60%, var(--cyan)); -webkit-background-clip:text; background-clip:text; color:transparent;}
.hero p.lead{max-width:460px; margin:0 auto 42px; color:var(--text-dim); font-size:16.5px;}
.hero-ctas{display:flex; flex-wrap:wrap; justify-content:center; gap:14px;}
.scroll-hint{position:absolute; bottom:36px; left:50%; transform:translateX(-50%); font-family:'Space Mono',monospace; font-size:11px; letter-spacing:.18em; text-transform:uppercase; color:var(--text-faint); display:flex; flex-direction:column; align-items:center; gap:10px;}
.scroll-hint .bar{width:1px; height:34px; background:linear-gradient(var(--cyan), transparent); animation:scrollhint 2s ease-in-out infinite;}
@keyframes scrollhint{0%{transform:scaleY(0); transform-origin:top;} 50%{transform:scaleY(1); transform-origin:top;} 51%{transform-origin:bottom;} 100%{transform:scaleY(0); transform-origin:bottom;}}

.page-header{padding:150px 0 60px; position:relative;}
.page-header h1{font-size:clamp(34px,5.5vw,58px);}
.page-header p.lead{color:var(--text-dim); font-size:16.5px; max-width:620px; margin-top:18px;}

section{padding:110px 0; position:relative;}
section.tight{padding:60px 0;}
.section-head{max-width:640px; margin-bottom:60px;}
.section-head h2{font-size:clamp(30px,4.2vw,50px); margin-top:18px;}
.section-head.center{margin-left:auto; margin-right:auto; text-align:center;}

/* glass panel base */
.panel{background:var(--panel); border:1px solid var(--panel-border); backdrop-filter:blur(18px); border-radius:4px;}

/* photo framing */
.photo-frame{border-radius:6px; overflow:hidden; border:1px solid var(--panel-border); position:relative; background:var(--void-2);}
.photo-frame img{width:100%; height:100%; object-fit:cover; display:block;}
.photo-frame::after{content:""; position:absolute; inset:0; box-shadow:inset 0 0 60px rgba(5,5,10,0.55); pointer-events:none;}
.photo-frame.tint::before{content:""; position:absolute; inset:0; background:linear-gradient(160deg, rgba(154,123,255,0.28), rgba(72,230,205,0.12)); mix-blend-mode:color; z-index:1;}

/* about / mein weg */
.about-grid{display:grid; grid-template-columns:0.85fr 1.15fr; gap:70px; align-items:center;}
@media (max-width:900px){.about-grid{grid-template-columns:1fr;}}
.portrait-wrap{perspective:1200px;}
.portrait-frame{aspect-ratio:0.82; transition:transform .5s cubic-bezier(.16,1,.3,1);}
.portrait-frame:hover{transform:rotateY(4deg) rotateX(-2deg);}

.about-text p{margin:0 0 18px; color:var(--text-dim); font-size:16.5px;}

.timeline{margin-top:80px; border-top:1px solid var(--panel-border);}
.tl-row{display:grid; grid-template-columns:130px 1fr; gap:24px; padding:28px 0; border-bottom:1px solid var(--panel-border);
  transform:translateX(-24px); opacity:0; transition:transform .8s cubic-bezier(.16,1,.3,1), opacity .8s ease;}
.tl-row.in{transform:translateX(0); opacity:1;}
.tl-year{font-family:'Space Mono',monospace; font-size:16px; color:var(--ember); font-weight:700;}
.tl-title{font-weight:600; margin-bottom:4px;}
.tl-people{color:var(--text-faint); font-size:14px;}
@media (max-width:620px){.tl-row{grid-template-columns:1fr; gap:6px;}}

.mini-gallery{margin-top:70px; display:grid; grid-template-columns:repeat(2,1fr); gap:20px;}
@media (max-width:700px){.mini-gallery{grid-template-columns:1fr;}}
.mini-gallery .photo-frame{aspect-ratio:4/3;}

/* vision */
.vision{text-align:center;}
.vision .wrap{max-width:780px;}
.vision h2{font-size:clamp(24px,3.4vw,36px); font-style:italic; font-weight:400; line-height:1.55;
  background:linear-gradient(100deg, var(--text), var(--cyan) 50%, var(--text)); -webkit-background-clip:text; background-clip:text; color:transparent;}
.vision cite{display:block; margin-top:30px; font-style:normal; font-family:'Space Mono',monospace; font-size:12.5px; letter-spacing:.16em; text-transform:uppercase; color:var(--text-faint);}

/* angebote — tilt cards */
.offer-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:26px;}
@media (max-width:960px){.offer-grid{grid-template-columns:1fr;}}
.tilt-outer{perspective:1000px;}
.offer-card{
  padding:36px 30px; display:flex; flex-direction:column; height:100%;
  transition:transform .12s ease-out, box-shadow .3s ease; transform-style:preserve-3d;
}
.offer-card:hover{box-shadow:0 30px 60px -30px rgba(154,123,255,0.35);}
.offer-icon{width:50px; height:50px; margin-bottom:24px; transform:translateZ(30px);}
.offer-card h3{font-size:20px; margin-bottom:12px; transform:translateZ(20px);}
.offer-card > p.desc{color:var(--text-dim); font-size:14.5px; margin-bottom:22px; transform:translateZ(14px);}
.offer-pillars{margin:0 0 26px; padding:0; list-style:none; display:flex; flex-direction:column; gap:12px;}
.offer-pillars li{font-size:14px; color:var(--text-dim); padding-left:18px; position:relative;}
.offer-pillars li::before{content:"◆"; position:absolute; left:0; color:var(--cyan); font-size:8px; top:6px;}
.offer-pillars b{color:var(--text); font-weight:600;}
.offer-price{margin-top:auto; border-top:1px solid var(--panel-border); padding-top:22px;}
.price-num{font-family:'Fraunces', serif; font-size:26px; font-weight:600;}
.price-meta{font-size:13px; color:var(--text-faint); margin:8px 0 20px; display:flex; flex-direction:column; gap:4px;}

/* impressionen gallery */
.gallery{display:grid; grid-template-columns:repeat(4,1fr); gap:18px;}
@media (max-width:900px){.gallery{grid-template-columns:repeat(2,1fr);}}
.gallery .photo-frame{aspect-ratio:3/4; transition:transform .4s cubic-bezier(.2,.8,.2,1);}
.gallery .photo-frame:hover{transform:translateY(-6px);}

/* impulse grid */
.impulse-intro{max-width:640px; margin-bottom:50px;}
.impulse-grid{display:grid; grid-template-columns:repeat(auto-fit, minmax(150px,1fr)); gap:14px;}
.imp-tile{
  aspect-ratio:1; border-radius:4px; padding:18px; display:flex; flex-direction:column; justify-content:space-between;
  color:#fff; position:relative; overflow:hidden; border:1px solid var(--panel-border);
  transition:transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s ease;
}
.imp-tile:hover{transform:translateY(-8px) scale(1.03); box-shadow:0 26px 40px -20px rgba(0,0,0,0.5);}
.imp-tile svg{width:24px; height:24px; opacity:.85;}
.imp-tile span{font-family:'Fraunces', serif; font-size:15px; font-weight:500; line-height:1.2;}
.imp-tile:focus-visible{outline:2px solid var(--cyan); outline-offset:3px;}
.t1{background:linear-gradient(150deg,#3a2560,#1c1330);}
.t2{background:linear-gradient(150deg,#0f4a44,#0a2723);}
.t3{background:linear-gradient(150deg,#7a3a20,#3d1c0f);}
.t4{background:linear-gradient(150deg,#1c2440,#0b0f1f);}

/* impuls detail page */
.impuls-detail{max-width:720px; margin:0 auto;}
.impuls-back{
  display:inline-flex; align-items:center; gap:8px; font-family:'Space Mono',monospace; font-size:12.5px;
  letter-spacing:.1em; text-transform:uppercase; color:var(--text-faint); margin-bottom:44px;
}
.impuls-back:hover{color:var(--cyan);}
.impuls-icon{width:70px; height:70px; border-radius:50%; display:flex; align-items:center; justify-content:center; margin-bottom:30px;}
.impuls-icon svg{width:34px; height:34px;}
.impuls-body{color:var(--text-dim); font-size:17px; line-height:1.85;}
.impuls-body p{margin:0 0 20px;}
.impuls-nav{display:flex; justify-content:space-between; margin-top:60px; padding-top:30px; border-top:1px solid var(--panel-border); font-family:'Space Mono',monospace; font-size:12px; letter-spacing:.08em; text-transform:uppercase; color:var(--text-faint);}
.impuls-nav a{display:flex; align-items:center; gap:8px;}
.impuls-nav a:hover{color:var(--cyan);}

/* wanderungen */
.wanderung-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:26px;}
@media (max-width:820px){.wanderung-grid{grid-template-columns:1fr;}}
.wanderung-card{overflow:hidden;}
.wanderung-card .photo-frame{aspect-ratio:4/3; border-radius:0; border:none;}
.wanderung-card-body{padding:28px 30px;}
.wanderung-meta{display:flex; flex-direction:column; gap:6px; margin:18px 0 24px; font-size:14px; color:var(--text-dim);}
.wanderung-meta b{color:var(--text);}
.wanderung-detail-header{aspect-ratio:16/7; border-radius:6px; margin-bottom:44px;}
@media (max-width:700px){.wanderung-detail-header{aspect-ratio:4/3;}}

/* sitzung page */
.sitzung-body{max-width:720px; color:var(--text-dim); font-size:16.5px;}
.sitzung-body h3{color:var(--text); font-size:20px; margin:44px 0 16px;}
.sitzung-body p{margin:0 0 16px;}
.sitzung-header-photo{aspect-ratio:21/8; border-radius:6px; margin-bottom:50px;}
@media (max-width:700px){.sitzung-header-photo{aspect-ratio:4/3;}}

/* kontakt */
.kontakt-grid{display:grid; grid-template-columns:1fr 1fr; gap:60px;}
@media (max-width:900px){.kontakt-grid{grid-template-columns:1fr;}}
.kontakt p{color:var(--text-dim);}
.kontakt-links{display:flex; flex-direction:column; gap:14px; margin-top:30px;}
.kontakt-link{display:flex; align-items:center; gap:12px; padding:17px 18px; border-radius:4px; font-size:14.5px;}
.kontakt-link:hover{border-color:var(--cyan);}
.kontakt-link svg{width:20px; height:20px; flex-shrink:0;}

.form-card{padding:34px;}
.form-row{display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-bottom:14px;}
@media (max-width:520px){.form-row{grid-template-columns:1fr;}}
.form-card label{font-size:11.5px; font-family:'Space Mono',monospace; text-transform:uppercase; letter-spacing:.1em; color:var(--text-faint); display:block; margin-bottom:8px;}
.form-card input, .form-card textarea{
  width:100%; background:rgba(255,255,255,0.04); border:1px solid var(--panel-border); border-radius:3px;
  padding:13px 14px; color:var(--text); font-family:'Space Grotesk',sans-serif; font-size:14.5px;
}
.form-card input:focus, .form-card textarea:focus{outline:none; border-color:var(--cyan);}
.form-card textarea{resize:vertical; min-height:110px;}
.field{margin-bottom:14px;}
.form-note{font-size:12px; color:var(--text-faint); margin-top:16px;}

/* impressum */
.impressum-grid{display:grid; grid-template-columns:1fr 1fr; gap:50px;}
@media (max-width:760px){.impressum-grid{grid-template-columns:1fr;}}
.impressum-grid h4{font-size:11.5px; font-family:'Space Mono',monospace; text-transform:uppercase; letter-spacing:.1em; color:var(--cyan); margin-bottom:12px;}
.impressum-grid p{color:var(--text-dim); margin:0 0 5px; font-size:14.5px;}

footer{padding:56px 0 34px; font-size:13px; border-top:1px solid var(--panel-border);}
.foot-grid{display:flex; flex-wrap:wrap; justify-content:space-between; gap:30px; padding-bottom:34px; border-bottom:1px solid var(--panel-border);}
.foot-brand{display:flex; align-items:center; gap:10px; font-family:'Fraunces',serif; font-size:17px;}
.foot-brand img{width:26px; height:26px;}
.foot-nav{display:flex; gap:20px; flex-wrap:wrap; font-family:'Space Mono',monospace; font-size:12.5px; color:var(--text-faint);}
.foot-nav a:hover{color:var(--cyan);}
.foot-bottom{display:flex; flex-wrap:wrap; justify-content:space-between; gap:14px; padding-top:22px; color:var(--text-faint);}
details{margin-top:26px; border-top:1px solid var(--panel-border); padding-top:20px;}
summary{cursor:pointer; color:var(--text); font-weight:500; list-style:none; font-family:'Space Mono',monospace; font-size:13px;}
summary::-webkit-details-marker{display:none;}
summary::before{content:"+ "; color:var(--cyan);}
details[open] summary::before{content:"– ";}
.legal-text{margin-top:18px; max-height:320px; overflow-y:auto; padding-right:12px; line-height:1.7;}
.legal-text h4{color:var(--text); font-family:'Space Grotesk',sans-serif; font-size:13.5px; margin:18px 0 6px;}
.legal-text p,.legal-text li{color:var(--text-faint); font-size:12.5px;}
