@font-face { font-family:'Montserrat'; font-style:normal; font-weight:100 900; font-display:swap; src:url(assets/fonts/Montserrat-var.woff2) format('woff2'); }
@font-face { font-family:'Source Sans 3'; font-style:normal; font-weight:200 900; font-display:swap; src:url(assets/fonts/SourceSans3-var.woff2) format('woff2'); }
/* ========================================================================
   semmering.com — клик-прототип по ТЗ v5
   Строго по Brand Guidelines: Semmering Blau #75abd6 · Montserrat + Source Sans 3
   ======================================================================== */
/* Шрифты self-hosted (Sprint 3): assets/fonts/*.woff2 — заменяет render-blocking Google-@import */
:root{
  --blau:#75abd6; --blau-d:#4f86b3; --blau-dd:#3a6a93; --blau-deep:#274b63;
  --hellblau:#bad5ea; --hellblau-l:#e8f1f8;
  --anthrazit:#312e2b; --dunkel:#4d4d4d; --grau:#5b6470; --hellgrau:#ededed;
  --beige:#d8cab7; --beige-l:#f6f0e7;
  --lichten:#1f3d50; 
  --red:#75abd6; --green:#3a6a93;
  --bikedark:#16181c; --bikedark-2:#22262c; --orange:#75abd6; --gold:var(--blau-dd); /* --orange → Semmering Blau: оранж НЕ в бренд-гайдлайнах (решение владельца 06.07) */
  --white:#fff; --shadow:0 6px 24px rgba(20,40,60,.10);
}
*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{font-family:'Source Sans 3',-apple-system,'Helvetica Neue',Arial,sans-serif;
  color:var(--anthrazit);font-size:17px;line-height:1.6;background:var(--white);}
h1,h2,h3,h4,h5{font-family:'Montserrat',Arial,sans-serif;line-height:1.12;color:var(--anthrazit);}
a{color:inherit;text-decoration:none;}
img{max-width:100%;display:block;}
.wrap{max-width:1180px;margin:0 auto;padding:0 22px;}
.sec{padding:64px 0;}
.sec-sm{padding:40px 0;}
.eyebrow{font-family:'Montserrat';font-weight:700;font-size:12px;letter-spacing:2px;
  text-transform:uppercase;color:var(--blau-dd);margin-bottom:10px;}
h2.title{font-size:34px;font-weight:800;letter-spacing:-.5px;margin-bottom:8px;}
.lead{font-size:19px;color:var(--dunkel);font-weight:300;max-width:760px;margin-bottom:8px;}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:8px;font-family:'Montserrat';font-weight:700;
  font-size:15px;padding:13px 26px;border-radius:40px;cursor:pointer;border:2px solid transparent;
  transition:.18s;white-space:nowrap;}
.btn.primary{background:var(--blau);color:#fff;}
.btn.primary:hover{background:var(--blau-d);}
.btn.secondary{background:transparent;border-color:var(--blau);color:var(--blau-dd);}
.btn.secondary:hover{background:var(--hellblau-l);}
.btn.ghost{background:rgba(255,255,255,.15);border-color:rgba(255,255,255,.6);color:#fff;}
.btn.ghost:hover{background:rgba(255,255,255,.28);}
.btn.dark{background:var(--anthrazit);color:#fff;}
.btn.orange{background:var(--orange);color:var(--anthrazit);} /* яркий бренд-синий + тёмный текст: контраст на тёмном фоне байкпарка */
.btn.orange:hover{filter:brightness(1.08);}
.btn.sm{padding:9px 18px;font-size:13px;}

/* ---------- notification bar ---------- */
.notif{background:var(--blau-dd);color:#fff;font-size:13.5px;font-weight:500;}
.notif .wrap{display:flex;align-items:center;gap:22px;height:38px;flex-wrap:wrap;overflow:hidden;}
.notif b{font-weight:700;}
.notif .dot{width:7px;height:7px;border-radius:50%;background:#7fe08a;display:inline-block;margin-right:5px;
  box-shadow:0 0 0 3px rgba(127,224,138,.28);}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(127,224,138,.6);}70%{box-shadow:0 0 0 7px rgba(127,224,138,0);}100%{box-shadow:0 0 0 0 rgba(127,224,138,0);}}
.notif .push{margin-left:auto;background:var(--hellblau-l);color:var(--blau-dd);padding:3px 12px;border-radius:20px;font-weight:700;font-size:12.5px;}

/* ---------- header ---------- */
header.site{position:sticky;top:0;z-index:60;background:rgba(255,255,255,.96);backdrop-filter:blur(8px);
  border-bottom:1px solid var(--hellgrau);}
header.site .wrap{display:flex;align-items:center;gap:18px;height:70px;}
.logo{display:flex;align-items:center;gap:9px;font-family:'Montserrat';font-weight:800;font-size:21px;
  letter-spacing:.5px;color:var(--blau-dd);}
.logo svg{width:34px;height:24px;}
nav.main{display:flex;gap:20px;margin-left:8px;font-family:'Montserrat';font-weight:600;font-size:14.5px;}
nav.main a{color:var(--anthrazit);padding:6px 2px;border-bottom:2px solid transparent;transition:.15s;}
nav.main a:hover,nav.main a.active{color:var(--blau-dd);border-color:var(--blau);}
.head-right{margin-left:auto;display:flex;align-items:center;gap:14px;}
.season-toggle{display:flex;background:var(--hellgrau);border-radius:30px;padding:3px;font-family:'Montserrat';
  font-weight:700;font-size:12.5px;cursor:pointer;}
.season-toggle span{padding:5px 13px;border-radius:30px;color:var(--dunkel);transition:.18s;}
.season-toggle span.on{background:#fff;color:var(--blau-dd);box-shadow:0 1px 4px rgba(0,0,0,.12);}
body.winter .season-toggle .w{background:#fff;color:var(--blau-deep);box-shadow:0 1px 4px rgba(0,0,0,.12);}
body.winter .season-toggle .s{background:transparent;color:var(--grau);box-shadow:none;}
.lang{font-family:'Montserrat';font-weight:600;font-size:13px;color:var(--grau);cursor:pointer;}
.burger{display:none;font-size:24px;cursor:pointer;color:var(--blau-dd);background:none;border:none;}

/* ---------- right floating panel ---------- */
/* Gafs 06.07: Rail war top:50% (Viewport-Mitte) — auf hohen/Hochformat-Screens
   rutschte er nach unten und überdeckte die Hero-Video-Controls (.hero-textbtn/.hero-vidbtn,
   die absolut am Hero-BODEN sitzen). Fix: Rail oben-rechts unter dem Header verankern
   (top:132px) → immer klar ÜBER den Video-Controls, auf jeder Screenhöhe. */
.floatpanel{position:fixed;right:14px;top:132px;transform:none;z-index:55;
  display:flex;flex-direction:column;gap:8px;}
.floatpanel a{width:46px;height:46px;border-radius:50%;background:#fff;box-shadow:var(--shadow);
  display:flex;align-items:center;justify-content:center;font-size:19px;color:var(--blau-dd);transition:.15s;}
.floatpanel a:hover{background:var(--blau);color:#fff;}

/* ---------- hero ---------- */
.hero{position:relative;min-height:560px;display:flex;align-items:flex-end;color:#fff;overflow:hidden;}
.hero .bg{position:absolute;inset:0;z-index:0;}
.hero .bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(18,34,54,.30) 0%,rgba(18,34,54,.12) 38%,rgba(18,34,54,.56) 76%,rgba(18,34,54,.82) 100%);} /* усилен низ для читаемости белого текста на светлых фото (tagesgast/senioren) */
.hero .wrap{position:relative;z-index:2;padding-bottom:54px;}
.hero .photo-tag{position:absolute;top:14px;right:18px;z-index:2;font-size:11px;color:rgba(255,255,255,.9);text-shadow:0 1px 3px rgba(0,0,0,.55);
  font-family:'Montserrat';letter-spacing:1px;}
.hero h1,.hero .hero-h1{color:#fff;font-size:58px;font-weight:900;letter-spacing:-1.5px;max-width:760px;text-shadow:0 2px 8px rgba(0,0,0,.4),0 2px 30px rgba(0,0,0,.5);}
.hero .sub{font-size:21px;font-weight:300;margin:14px 0 8px;max-width:600px;text-shadow:0 1px 14px rgba(8,16,26,.55);}
.hero .frische{display:inline-block;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.45);
  border-radius:30px;padding:6px 16px;font-family:'Montserrat';font-weight:600;font-size:14px;margin-bottom:18px;text-shadow:0 1px 10px rgba(8,16,26,.5);}
.hero .cta-row{display:flex;gap:12px;margin-top:8px;flex-wrap:wrap;}
/* season backgrounds (mountain gradients as photo placeholders) */
.bg-summer{background:
  radial-gradient(120% 80% at 70% 0%,#8fc4e8 0%,#5e93bd 40%,#3a6a93 100%);}
.bg-summer::before{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,transparent 45%,#4f86b3 78%,#3a6a93 100%);opacity:.92;
  clip-path:polygon(0 62%,18% 50%,32% 60%,48% 42%,63% 56%,80% 40%,100% 58%,100% 100%,0 100%);}
.bg-winter{background:radial-gradient(120% 80% at 70% 0%,#cfe2f0 0%,#9bbdd6 40%,#5b7f9c 100%);}
.bg-winter::before{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,transparent 45%,#e9f1f7 76%,#cdddea 100%);opacity:.95;
  clip-path:polygon(0 62%,18% 50%,32% 60%,48% 42%,63% 56%,80% 40%,100% 58%,100% 100%,0 100%);}

/* ---------- live status bar ---------- */
.livebar{background:var(--anthrazit);color:#fff;}
.livebar .wrap{display:flex;align-items:center;gap:26px;height:52px;font-size:14.5px;font-weight:500;flex-wrap:wrap;}
.livebar .item{display:flex;align-items:center;gap:7px;}
.livebar .ok{color:#7fe08a;font-weight:700;}
.livebar a{margin-left:auto;color:var(--blau);font-family:'Montserrat';font-weight:700;font-size:13px;}

/* ---------- heute block ---------- */
.heute{background:var(--hellblau-l);}
.heute-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:20px;margin-top:18px;}
.heute-card{background:#fff;border-radius:14px;padding:22px;box-shadow:var(--shadow);}
.heute-list{list-style:none;}
.heute-list li{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--hellgrau);font-weight:500;}
.heute-list li:last-child{border:none;}
.heute-list .stat{width:9px;height:9px;border-radius:50%;background:#7fe08a;flex:0 0 9px;}
.heute-list .closed{background:#d98b8b;}
.heute-list .tag-ev{margin-left:auto;font-family:'Montserrat';font-size:11px;font-weight:700;
  background:var(--hellblau);color:var(--blau-dd);padding:3px 9px;border-radius:20px;}
.heute-list .tag-promo{background:#fbe3d6;color:#b35a00;}
.buy-card{background:linear-gradient(135deg,var(--blau-dd),var(--blau));color:#fff;border-radius:14px;padding:24px;}
.buy-card .price{font-family:'Montserrat';font-weight:800;font-size:34px;}
.buy-card .small{opacity:.85;font-size:14px;}

/* DEAD-TILE: .tiles/.tile удалены 2026-08-03 — разметки не существует (STATUS DEAD-TILE) */

.filterbar{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0;}
.chip{font-family:'Montserrat';font-weight:600;font-size:13px;padding:8px 16px;border-radius:30px;
  background:var(--hellgrau);color:var(--dunkel);cursor:pointer;border:1.5px solid transparent;transition:.15s;}
.chip.active,.chip:hover{background:var(--blau);color:#fff;}

/* ---------- cards grid ---------- */
.cardgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:22px;}
/* einsame letzte Karte (3er-Grid, Rest 1) mittig statt links — nur Desktop */
/* 11.08: центрирование сироты отключено — сетки has() выше не оставляют сирот */
/* Sichtbare Breadcrumb (nur tiefe Zweige) */
.crumbs{font-size:13px;padding:12px 0 2px;}
.crumbs .wrap{display:flex;flex-wrap:wrap;gap:7px;align-items:center;}
.crumbs a{color:var(--grau);text-decoration:none;}
.crumbs a:hover{color:var(--blau);text-decoration:underline;}
.crumbs .sep{color:var(--grau);opacity:.55;}
.crumbs [aria-current]{color:var(--anthrazit);font-weight:600;}
.cardgrid.c4{grid-template-columns:repeat(4,1fr);}
.exp-card{background:#fff;border-radius:14px;overflow:hidden;box-shadow:var(--shadow);transition:.2s;cursor:pointer;}
.exp-card:hover{transform:translateY(-4px);}
.exp-card .ph{height:170px;position:relative;display:flex;align-items:flex-end;padding:12px;color:#fff;font-family:'Montserrat';font-weight:700;font-size:18px;background-color:#9db8cf;}
.exp-card .ph .badge{position:absolute;top:10px;left:10px;background:rgba(0,0,0,.55);font-size:11px;font-weight:600;
  padding:3px 9px;border-radius:20px;font-family:'Montserrat';}
.exp-card .body{padding:16px 16px 18px;}
.exp-card .tags{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 10px;}
.exp-card .tg{font-family:'Montserrat';font-size:11px;font-weight:600;background:var(--hellblau-l);color:var(--blau-dd);
  padding:3px 9px;border-radius:8px;}
.exp-card .price{font-family:'Montserrat';font-weight:700;color:var(--blau-dd);}
.ph-a{background:linear-gradient(150deg,#6aa0c8,#3a6a93);}
.ph-b{background:linear-gradient(150deg,#6aa0c8,#3a6a93);}
.ph-c{background:linear-gradient(150deg,#6aa0c8,#3a6a93);}
.ph-d{background:linear-gradient(150deg,#5e93bd,#274b63);}
.ph-e{background:linear-gradient(150deg,#5e93bd,#1f3d50);}
.ph-f{background:linear-gradient(150deg,#3a3f45,#16181c);}

/* ---------- stats ---------- */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;text-align:center;}
.stats .n{font-family:'Montserrat';font-weight:900;font-size:40px;color:var(--blau-dd);line-height:1;}
.stats .l{font-size:13px;color:var(--dunkel);margin-top:6px;text-transform:uppercase;letter-spacing:.5px;font-weight:600;}

/* ---------- split (hotel) ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:0;border-radius:16px;overflow:hidden;box-shadow:var(--shadow);}
.split .ph{min-height:340px;background:linear-gradient(150deg,#9db8cf,#4f86b3);}
.split .txt{background:var(--beige-l);padding:42px;}
.split .txt h3{font-size:26px;margin-bottom:10px;}

/* ---------- partner strip ---------- */
.partners{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin-top:18px;}
.partners .p{background:#fff;border:1px solid var(--hellgrau);border-radius:10px;padding:12px 18px;
  font-family:'Montserrat';font-weight:700;font-size:14px;color:var(--blau-dd);box-shadow:0 1px 3px rgba(0,0,0,.04);}
.partners .p.gravity{background:var(--anthrazit);color:#fff;}

/* ---------- reviews ---------- */
.reviews{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:20px;}
.rev{background:#fff;border-radius:14px;padding:20px;box-shadow:var(--shadow);}
.rev .stars{color:#f2b01e;font-size:16px;}
.rev .q{font-size:15px;color:var(--dunkel);margin:8px 0;}
.rev .who{font-family:'Montserrat';font-weight:700;font-size:13px;}

/* ---------- newsletter ---------- */
.newsletter{background:linear-gradient(135deg,var(--blau-dd),var(--blau));color:#fff;border-radius:18px;
  padding:42px;display:flex;align-items:center;gap:26px;flex-wrap:wrap;}
.newsletter h3{color:#fff;font-size:26px;}
.newsletter form{display:flex;gap:10px;margin-left:auto;flex-wrap:wrap;}
.newsletter input{padding:13px 18px;border-radius:40px;border:none;font-size:15px;min-width:240px;}

/* ---------- footer ---------- */
footer.site{background:var(--anthrazit);color:#cfd3d8;padding:54px 0 28px;font-size:14.5px;}
footer.site .cols{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:30px;}
footer.site h4{color:#fff;font-size:14px;text-transform:uppercase;letter-spacing:1px;margin-bottom:14px;}
footer.site a{display:block;padding:4px 0;color:#cfd3d8;}
footer.site a:hover{color:var(--blau);}
footer.site .logo{color:#fff;margin-bottom:14px;}
footer.site .trust{display:flex;gap:10px;margin-top:16px;flex-wrap:wrap;}
footer.site .trust span{background:#3c3935;padding:6px 12px;border-radius:8px;font-size:12px;font-weight:600;font-family:'Montserrat';}
footer.site .bottom{border-top:1px solid #4a443f;margin-top:34px;padding-top:18px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;font-size:12.5px;color:#9a948d;}

/* ---------- hirschi ---------- */
.hirschi{position:fixed;bottom:18px;left:18px;z-index:56;}
.hirschi-fab{width:76px;height:76px;border-radius:50%;background:#fff;box-shadow:var(--shadow);border:none;
  display:flex;align-items:center;justify-content:center;font-size:34px;cursor:pointer;}
.hirschi.open .hirschi-fab{animation:none;}
@keyframes bob{0%,100%{transform:translateY(0);}50%{transform:translateY(-7px);}}
.hirschi-panel{position:absolute;bottom:76px;left:0;width:320px;max-width:82vw;background:#fff;border-radius:16px;
  box-shadow:0 18px 50px rgba(0,0,0,.25);overflow:hidden;opacity:0;transform:translateY(12px) scale(.98);
  pointer-events:none;transition:.2s;transform-origin:bottom left;}
.hirschi.open .hirschi-panel{opacity:1;transform:none;pointer-events:auto;}
.hp-head{display:flex;justify-content:space-between;align-items:center;background:var(--blau-dd);color:#fff;padding:12px 16px;font-family:'Montserrat';font-size:16px;}
.hp-close{background:none;border:none;color:#fff;font-size:16px;cursor:pointer;opacity:.85;}
.hp-intro{padding:12px 16px;font-size:14px;color:var(--dunkel);border-bottom:1px solid var(--hellgrau);}
.hp-list{max-height:min(52vh,420px);overflow-y:auto;}
.hq{border-bottom:1px solid var(--hellgrau);}
.hq-q{width:100%;text-align:left;background:none;border:none;padding:12px 16px;font-size:14px;font-weight:600;font-family:'Montserrat';color:var(--anthrazit);cursor:pointer;display:flex;justify-content:space-between;gap:10px;}
.hq-q::after{content:"+";color:var(--blau);font-weight:700;}
.hq.open .hq-q::after{content:"–";}
.hq-q:hover{background:var(--hellblau-l);}
.hq-a{display:none;padding:0 16px 12px;font-size:13.5px;color:var(--dunkel);line-height:1.5;}
.hq.open .hq-a{display:block;}
.hq-a a{display:inline-block;margin-top:6px;color:var(--blau-dd);font-weight:700;}
@media(max-width:900px){.hirschi{bottom:12px;left:12px;}.hirschi-fab{width:68px;height:68px;font-size:30px;}}

/* ---------- season show/hide ---------- */
.only-summer{display:block;} .only-winter{display:none;}
body.winter .only-summer{display:none;} body.winter .only-winter{display:block;}
.inline.only-summer{display:inline;} .inline.only-winter{display:none;}
body.winter .inline.only-summer{display:none;} body.winter .inline.only-winter{display:inline;}
/* bulletproof off-season HIDE — beats utility classes (.item etc.) that set display */
body:not(.winter) .only-winter{display:none !important;}
body.winter .only-summer{display:none !important;}
/* Heute hover-preview */
.heute-list li{position:relative;}
.hpreview{position:absolute;left:0;top:100%;z-index:30;background:#fff;border:1px solid var(--hellgrau);
  box-shadow:0 12px 34px rgba(0,0,0,.16);border-radius:10px;padding:10px 14px;font-size:13.5px;line-height:1.4;
  color:var(--dunkel);width:min(320px,78vw);opacity:0;visibility:hidden;transform:translateY(4px);
  transition:.15s ease;pointer-events:none;margin-top:2px;}
.heute-list li:hover .hpreview{opacity:1;visibility:visible;transform:translateY(0);}
.hpreview b{color:var(--blau-dd);font-family:'Montserrat';}
.season-note{font-size:12.5px;color:var(--grau);font-style:italic;margin-top:8px;}

/* ---------- bikepark dark world ---------- */
body.bikepark{background:var(--bikedark);color:#dfe3e8;}
.bp-hero{position:relative;min-height:540px;display:flex;align-items:flex-end;color:#fff;
  background:radial-gradient(130% 90% at 30% 10%,#3a4048 0%,#16181c 70%);overflow:hidden;}
.bp-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.25) 0%,transparent 32%,rgba(0,0,0,.74));}
.bp-hero .wrap{position:relative;z-index:2;padding-bottom:50px;}
.bp-hero h1{color:#fff;font-size:66px;font-weight:900;letter-spacing:-2px;text-transform:uppercase;text-shadow:0 2px 10px rgba(0,0,0,.5),0 2px 34px rgba(0,0,0,.5);}
.bp-hero h1 .o{color:var(--orange);}
.bp-hero .sub{font-size:20px;opacity:.9;margin:12px 0 18px;}
.bp-section{padding:56px 0;}
.bp-section h2{color:#fff;font-size:32px;text-transform:uppercase;font-weight:800;}
.bp-livepanel{position:fixed;right:14px;top:50%;transform:translateY(-50%);z-index:55;background:rgba(34,38,44,.95);
  border:1px solid #333;border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:12px;text-align:center;
  font-family:'Montserrat';font-size:12px;color:#cfd3d8;min-width:74px;}
.bp-livepanel .v{font-weight:800;font-size:16px;color:#fff;}
.bp-livepanel .live{color:#75abd6;font-weight:800;} /* 03.08: остаток bikepark-orange → Semmering Blau (owner-решение) */
.bp-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;text-align:center;}
.bp-stats .n{font-family:'Montserrat';font-weight:900;font-size:46px;color:#fff;}
.bp-stats .n .o{color:var(--orange);}
.bp-stats .l{color:#9aa0a8;font-size:13px;text-transform:uppercase;letter-spacing:.5px;margin-top:4px;font-weight:600;}
.trailcards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:24px;}
.trailcard{border-radius:14px;overflow:hidden;min-height:260px;position:relative;display:flex;flex-direction:column;
  justify-content:flex-end;padding:18px;color:#fff;cursor:pointer;transition:.2s;}
.trailcard:hover{transform:translateY(-4px);}
.trailcard::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 40%,rgba(0,0,0,.7));z-index:0;}
.trailcard>*{position:relative;z-index:1;}
.trailcard .micro{font-family:'Montserrat';font-size:12px;opacity:.85;text-transform:uppercase;letter-spacing:1px;}
.trailcard h3{color:#fff;font-size:24px;text-transform:uppercase;margin:4px 0;}
.tc1{background:linear-gradient(150deg,#5e93bd,#33617f);}
.tc2{background:linear-gradient(150deg,#7a6a4a,#2a2418);}
.tc3{background:linear-gradient(150deg,#4a6a8a,#16283a);}
.tc4{background:linear-gradient(150deg,#8a4a3a,#3a1a14);}
.statusrow{display:flex;align-items:center;gap:14px;padding:14px 18px;background:var(--bikedark-2);
  border-radius:10px;margin-bottom:8px;border-left:4px solid var(--blau-d);}
.statusrow .lvl{width:14px;height:14px;border-radius:50%;}
.statusrow .open{color:#7fe08a;font-weight:700;font-family:'Montserrat';font-size:13px;margin-left:auto;}
.statusrow .closed{color:#ff7a6d;}
.sticker20{display:inline-flex;align-items:center;justify-content:center;width:120px;height:120px;border-radius:50%;
  background:var(--orange);color:var(--anthrazit);font-family:'Montserrat';font-weight:900;text-align:center;line-height:1.05;
  transform:rotate(-12deg);font-size:17px;box-shadow:0 8px 24px rgba(51,97,127,.38);padding:10px;}

/* ---------- activity detail ---------- */
.adetail{display:grid;grid-template-columns:1.4fr 1fr;gap:34px;align-items:start;margin-top:8px;}
.bpdet{display:grid;grid-template-columns:1.6fr 1fr;gap:26px;} /* трейл-детали: 2-кол (info + ticket-box) */
.booking-card{position:relative;background:#fff;border-radius:16px;box-shadow:var(--shadow);padding:24px;border:1px solid var(--hellgrau);}
.adetail>div:last-child{position:sticky;top:120px;align-self:start;}
.booking-card .price{font-family:'Montserrat';font-weight:800;font-size:32px;color:var(--anthrazit);}
.booking-card .row{display:flex;justify-content:space-between;gap:14px;align-items:baseline;padding:13px 0;border-bottom:1px solid var(--hellgrau);font-size:15px;}
.booking-card .row b{font-family:'Montserrat';text-align:right;overflow-wrap:anywhere;} /* длинные значения (schneeschuh «Optional: Bergfahrt…») переносятся, не наезжают на label */
.booking-card .field{color:var(--grau);}
.tip{background:#fff8e9;border:1px solid #f0dca8;border-radius:10px;padding:12px 16px;margin:14px 0;font-size:14.5px;}
.tip b{color:#b3870c;}
.accordion .ac{border-bottom:1px solid var(--hellgrau);}
.accordion .ac h4{padding:16px 0;cursor:pointer;display:flex;justify-content:space-between;font-size:16px;text-transform:none;letter-spacing:0;}
.accordion .ac .ac-body{display:none;padding-bottom:16px;color:var(--dunkel);font-size:15px;}
.accordion .ac.open .ac-body{display:block;}
.accordion .ac h4 .arr{transition:.2s;color:var(--blau);}
.accordion .ac.open h4 .arr{transform:rotate(180deg);}



/* ---------- proto banner ---------- */
.protobar{background:#2a2a2a;color:#fff;font-size:12.5px;text-align:center;padding:7px;font-family:'Montserrat';letter-spacing:.5px;}
.protobar b{color:var(--orange);}

/* ---------- groups ---------- */
.principle{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:22px;}
.principle .p{background:var(--beige-l);border-radius:14px;padding:24px;border-bottom:3px solid var(--blau);}
.principle .p h4{color:var(--blau-dd);font-size:17px;margin-bottom:8px;text-transform:none;letter-spacing:0;}
.gtype{background:#fff;border:1px solid var(--hellgrau);border-radius:14px;padding:22px;box-shadow:0 1px 3px rgba(0,0,0,.04);margin-bottom:14px;}
.gtype h3{color:var(--blau-dd);font-size:20px;margin-bottom:6px;}
.formbox{background:linear-gradient(135deg,var(--blau-dd),var(--blau));color:#fff;border-radius:16px;padding:34px;}
.formbox h3{color:#fff;}
.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px;}
.formgrid input,.formgrid select{padding:13px 16px;border-radius:10px;border:none;font-size:15px;width:100%;}
.formgrid .full{grid-column:1/-1;}

@media(max-width:900px){
  nav.main,.season-toggle{display:none;} /* .lang был мёртвым селектором (реальный класс .lang-toggle); DE/EN оставляем видимым — в бургере переключателя языка нет */
  .burger{display:block;margin-left:auto;}
  .heute-grid,.split,.adetail,.bpdet{grid-template-columns:1fr;}
  .cardgrid,.cardgrid.c4,.stats,.bp-stats,.trailcards,.reviews,.principle,.formgrid{grid-template-columns:1fr 1fr;}
  .hero h1,.hero .hero-h1,.bp-hero h1{font-size:40px;}
  footer.site .cols{grid-template-columns:1fr 1fr;}
  .floatpanel,.bp-livepanel{display:none;}
  .booking-card{position:static;}.adetail>div:last-child{position:static;}
}

/* ---------- mobile nav (burger) fix ---------- */
@media(max-width:900px){
  header.site .wrap{position:relative;}
  body.navopen nav.main{display:flex !important;flex-direction:column;position:absolute;
    top:60px;left:0;right:0;background:#fff;padding:10px 4px;gap:2px;
    box-shadow:0 14px 34px rgba(0,0,0,.16);border-radius:0 0 12px 12px;z-index:80;}
  body.navopen nav.main a{padding:12px 6px;border-bottom:1px solid var(--hellgrau);font-size:16px;}
  body.bikepark.navopen nav.main{background:#fff;}
}

/* ===== i18n: paired DE/EN spans + language toggle ===== */
.t-e{display:none;}
body.en .t-d{display:none;}
body.en .t-e{display:inline;}
.lang-toggle{display:flex;background:var(--hellgrau);border-radius:30px;padding:3px;
  font-family:'Montserrat';font-weight:600;font-size:12.5px;cursor:pointer;margin-left:2px;user-select:none;}
.lang-toggle span{padding:5px 10px;border-radius:30px;color:var(--dunkel);transition:.18s;}
.lang-toggle span.on{background:#fff;color:var(--blau-dd);box-shadow:0 1px 4px rgba(0,0,0,.12);}


/* ghost variant for light backgrounds */
.btn.ghost2{border:2px solid var(--blau-dd);color:var(--blau-dd);background:transparent;}
.btn.ghost2:hover{background:var(--blau-dd);color:#fff;}

/* ===== Temp-Compare Wien vs Semmering (Sommerfrische) ===== */
/* Gafs 06.07: temp-Vergleich mittelgroß, in 2-Spalten-Split (rechte Spalte) */
.tempsplit .txt{flex:1.05}
.tempsplit .tempcmp{flex:1}
.tempcmp{display:flex;align-items:center;gap:14px;margin:0;flex:1;}
.tc-card{flex:1;background:#fff;border-radius:14px;box-shadow:var(--shadow);padding:14px 16px 11px;text-align:center;}
.tc-card.tc-hl{border:2px solid var(--blau);}
.tc-city{font-family:'Montserrat';font-weight:800;font-size:14px;color:var(--anthrazit);}
.tc-city span{font-weight:600;font-size:11px;color:var(--grau);display:block;}
.tc-val{font-family:'Montserrat';font-weight:900;font-size:34px;color:var(--anthrazit);line-height:1.05;margin:3px 0 6px;}
.tc-hl .tc-val{color:var(--blau-dd);}
.tc-bar{height:46px;width:11px;background:var(--hellgrau);border-radius:7px;margin:0 auto;display:flex;align-items:flex-end;overflow:hidden;}
.tc-bar span{display:block;width:100%;border-radius:7px;background:linear-gradient(180deg,#e0554a,#e0a94a);}
.tc-hl .tc-bar span{background:linear-gradient(180deg,#75abd6,#4c7ba6);}
.tc-note{font-size:11px;color:var(--grau);margin-top:6px;line-height:1.3;}
.tc-delta{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-width:58px;}
.tc-delta b{font-family:'Montserrat';font-weight:900;font-size:20px;color:var(--blau-dd);background:var(--hellblau);border-radius:32px;padding:7px 10px;}
.tc-delta span{font-size:11px;font-weight:700;font-family:'Montserrat';color:var(--blau-dd);}
@media(max-width:760px){.tempsplit{flex-direction:column;align-items:stretch!important}.tempcmp{max-width:460px}}
@media(max-width:640px){.tempcmp{gap:9px}.tc-val{font-size:27px}.tc-delta b{font-size:16px;padding:6px 8px}}

/* ===== Nav-Dropdowns (§3) ===== */
.navitem{position:relative;display:flex;align-items:center;}
.navitem>a{position:relative;padding-right:15px;}
.navitem>a::after{content:"▾";position:absolute;right:0;top:50%;transform:translateY(-50%);font-size:9px;opacity:.55;}
.navitem::before{content:"";position:absolute;top:100%;left:0;right:0;height:8px;}
.submenu{position:absolute;top:calc(100% + 6px);left:-10px;min-width:252px;background:#fff;
  box-shadow:0 16px 40px rgba(0,0,0,.18);border-radius:0 0 12px 12px;border-top:3px solid var(--blau);
  padding:8px 0;display:none;z-index:80;max-height:min(74vh,600px);overflow-y:auto;}
.navitem:hover .submenu,.navitem:focus-within .submenu{display:block;}
.submenu a{display:block !important;padding:10px 20px;color:var(--anthrazit);border:none !important;
  font-size:14px;font-weight:600;white-space:nowrap;}
.submenu a:hover{background:var(--hellblau-l);color:var(--blau-dd);}
/* Gafs 06.07: kategorisierte Nav-Dropdowns — Gruppen-Header + Icons */
.submenu a{display:flex;align-items:center;gap:9px;}
.submenu .sm-ic{flex:none;width:20px;text-align:center;font-size:15px;line-height:1;}
.submenu .sm-tx{flex:1;}
.submenu .sm-h{grid-column:1/-1;padding:10px 20px 3px;font-family:Montserrat;font-weight:800;font-size:10.5px;letter-spacing:.7px;text-transform:uppercase;color:var(--blau);pointer-events:none;}
.submenu .sm-h:first-child{padding-top:4px;}
body.navopen .submenu .sm-h{padding:9px 6px 2px;}

/* ===== Floating Buttons (§19) — größer, Labels, Marke ===== */
.floatpanel{gap:12px;}
.floatpanel a{width:54px;height:54px;position:relative;}
.floatpanel .fp-ic{font-size:22px;line-height:1;}
.floatpanel .fp-lb{position:absolute;right:64px;top:50%;transform:translateY(-50%);
  background:var(--anthrazit);color:#fff;padding:6px 11px;border-radius:8px;font-size:12.5px;
  font-family:'Montserrat';font-weight:600;white-space:nowrap;opacity:0;pointer-events:none;transition:.15s;box-shadow:var(--shadow);}
.floatpanel a:hover .fp-lb{opacity:1;}

@media(max-width:900px){
  .navitem{flex-direction:column;align-items:stretch;}
  .navitem>a::after,.navitem::before{display:none;}
  body.navopen .submenu{position:static;display:block;box-shadow:none;border:none;border-radius:0;padding:0 0 6px 16px;min-width:0;}
  body.navopen .submenu a{padding:8px 6px !important;font-size:14px;border-bottom:1px solid var(--hellgrau) !important;font-weight:500;}
}

/* next-step band mobile */
@media(max-width:900px){.nb-grid{grid-template-columns:1fr!important;}}

/* ===== P3 mobile QA fixes ===== */
@media(max-width:900px){
  .wrap table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;}
  .wrap table tr{white-space:nowrap;}
  [style*="grid-template-columns:repeat(4"]{grid-template-columns:repeat(2,1fr)!important;}
  [style*="grid-template-columns:repeat(3"]{grid-template-columns:1fr!important;}
  [style*="grid-template-columns:1fr 1fr"]{grid-template-columns:1fr!important;}
  .cardgrid{grid-template-columns:1fr 1fr;}
  .trailcards{grid-template-columns:1fr!important;}
}
@media(max-width:540px){
  .cardgrid,.cardgrid.c4{grid-template-columns:1fr;}
  .bp-stats{grid-template-columns:repeat(2,1fr);}
  h2.title{font-size:26px;}
  .notif .wrap{height:auto;padding:6px 22px;gap:10px;}
}

/* P3 mobile fixes round 2 */
.season-toggle .tico,.season-toggle .tlbl{padding:0!important;box-shadow:none!important;background:none!important;}
@media(max-width:900px){
  /* season toggle bleibt sichtbar, aber nur Emoji-Icon (Text „Sommer/Winter" ausgeblendet) */
  .season-toggle{display:flex!important;}
  .season-toggle .tlbl{display:none;}
  .season-toggle>span.s,.season-toggle>span.w{padding:6px 11px;}
  .season-toggle .tico{font-size:15px;}
}
@media(max-width:540px){
  .hero h1,.hero .hero-h1{font-size:31px!important;letter-spacing:-1px;}
  .hero .sub{font-size:16px;}
  .bp-hero h1{font-size:34px!important;}
  .notif .push{display:none;}
  h1[style*="font-size:44px"],h1[style*="font-size:46px"],h1[style*="font-size:48px"]{font-size:31px!important;}
}

/* form labels (a11y fix — no HTML in placeholders) */
.formgrid .ff{display:flex;flex-direction:column;}
.formgrid .ff label{font-family:'Montserrat';font-weight:700;font-size:12px;letter-spacing:.4px;margin-bottom:5px;color:#dfeaf3;}
.formgrid .ff input,.formgrid .ff textarea{width:100%;}
.formgrid .ff.full{grid-column:1/-1;}
/* mobile: allow button label wrapping */
@media(max-width:540px){.btn{white-space:normal;text-align:center;line-height:1.3;}}

/* ===== P0 fix: горизонтальный overflow на мобиле (375px) ===== */
html,body{overflow-x:hidden;max-width:100%;}
.notif .wrap>*{min-width:0;}
.hero h1,.hero .hero-h1,.bp-hero h1,.notif .wrap,.hero .sub{overflow-wrap:break-word;}
@media(max-width:400px){
  .hero h1,.hero .hero-h1,.bp-hero h1{font-size:26px!important;}
  .head-right{gap:8px;}
  .logo{font-size:18px;}
}
/* ═══════════════════════════════════════════════════════════════
   CSS_PATCH_SPRINT1 — для владельца style.css (внешне поддерживаемый файл)
   Я (Claude) в style.css НЕ лезу по договорённости. Эти правила закрывают
   4 находки из teardown, которые чинятся только на CSS-уровне.
   → Просто дописать блок в конец style.css (или сказать мне «внеси»).
   ═══════════════════════════════════════════════════════════════ */

/* 1. TEARDOWN №25 — точки .dot вне .notif были невидимы.
      В HTML я уже вшил inline-фикс для livebar; это системное правило
      на будущее (тогда inline можно убрать): */
.dot{width:7px;height:7px;border-radius:50%;background:#7fe08a;display:inline-block;margin-right:5px;}

/* 2. TEARDOWN №21 — на 390px бургер и Tickets-CTA уходят за экран: */
/* (removed — dead: класс .topbar отсутствует во всех 76 HTML; актуальный
   мобайл-фикс шапки живёт в блоке MOBILE-QA-390 и в header.site .wrap ниже) */

/* 3. TEARDOWN №32 — контраст .season-note был 2,8:1 (< AA 4,5:1): */
.season-note{color:#5b6470;}

/* 4. TEARDOWN №32 — фокус для клавиатуры + skip-link (a11y): */
:focus-visible{outline:3px solid #75abd6;outline-offset:2px;border-radius:4px;}
.skip-link{position:absolute;left:-9999px;top:0;background:#1A2F5A;color:#fff;
  padding:10px 18px;z-index:9999;border-radius:0 0 8px 0;font-family:Montserrat;}
.skip-link:focus{left:0;}

/* ── Sprint 3: Newsletter в футере ── */
.foot-nl{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:32px;padding-top:22px;border-top:1px solid #4a443f;}
.foot-nl form{display:flex;gap:8px;flex-wrap:wrap;}
.foot-nl input{padding:10px 16px;border-radius:24px;border:none;min-width:230px;font-size:14px;font-family:inherit;}
.hirschi-fab{transition:transform .18s cubic-bezier(.34,1.45,.64,1);}
.hirschi-fab:hover{transform:scale(1.08);}

/* ── Волна 1: мега-дропдаун (2 колонки, бренд-цвета) ── */
@media(min-width:901px){
  .submenu{min-width:560px;display:none;grid-template-columns:1fr 1fr;gap:2px 20px;
    padding:16px 14px;border-top:3px solid var(--blau);border-radius:0 0 14px 14px;
    background:linear-gradient(180deg,#fff 0%,var(--hellblau-l) 140%);box-shadow:0 18px 40px rgba(20,40,60,.16);}
  .navitem:hover .submenu,.navitem:focus-within .submenu{display:grid;}
  .submenu a{border-radius:8px;font-size:14px;}
}
/* ── Волна 1: температурный виджет компактнее ── */
.tempcmp .tc-val{font-size:34px;}
/* ── Волна 1: сезонный переключатель — «поп» при переключении ── */
@keyframes sw-pop{50%{transform:scale(1.14)}}
.season-toggle span.on{animation:sw-pop .32s cubic-bezier(.34,1.45,.64,1);}

/* ── Волна 2: белые горы-дивайдер под hero (бренд-графика) ── */
.hero::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:105px;z-index:1;pointer-events:none;
  background:url('assets/mountain-mask.png') bottom/100% 100% no-repeat;}
body.hotelbrand .hero::after{background:url('assets/mountain-mask-cream.png') bottom/100% 100% no-repeat;}
.hero .wrap{padding-bottom:108px;}
.hero .photo-tag{display:none;}
/* Gafs 06.07: Hero-VIDEO-Seiten fast vollflächig — immersives Video beim Einstieg statt Info-Overload;
   die weißen Berge maskieren den Übergang wie auf semmering.com. NUR Video-Heroes (nicht Content-Heroes). */
.hero:has(.hero-video){min-height:92vh!important;}
.hero:has(.hero-video)::after{height:132px;}
.hero:has(.hero-video) .wrap{padding-bottom:132px;}
/* Gafs 06.07: ▲▲▲ Marken-Divider (triangels.svg — exakt vom Original semmering.com) über jeder Sektions-Eyebrow */
.eyebrow::before{content:"";display:block;width:62px;height:13px;margin:0 auto 9px;background:url('assets/triangles.svg') center/contain no-repeat;}
/* Gafs 06.07: NIEDRIGE Berge gespiegelt am Seitenende — im Footer-Abstand (margin), damit sie NICHT über Buttons/Inhalt der letzten Sektion liegen */
footer.site{position:relative;margin-top:52px;}
footer.site::before{content:"";position:absolute;left:0;right:0;top:0;transform:translateY(-100%);height:52px;background:url('assets/mountain-mask-footer.png') bottom/100% 100% no-repeat;pointer-events:none;}
/* Gafs 06.07: Marken-Aktivitäts-Icon (Semmering-Piktogramme) als Badge auf Aktivitätskarten */
/* Gafs 06.07 v2: float statt absolute — Text umfließt das Icon, kein Overlap mehr */
.exp-card .body{position:relative;}
.actc-ico{float:right;width:48px;height:48px;border-radius:11px;box-shadow:0 2px 8px rgba(20,30,45,.15);margin:0 0 8px 14px;}
.exp-card .body .tags{padding-right:0;}
.exp-card .body::after{content:"";display:block;clear:both;}
/* Gafs 06.07: Hirschi-Hint — kleine Sprechblase am Maskottchen, signalisiert „Fragen-Helfer" (blendet nach ~8s aus / bei geöffnetem Panel) */
.hirschi-hint{position:absolute;left:74px;bottom:20px;width:212px;background:#fff;color:var(--anthrazit);border-radius:13px;padding:9px 14px;font-size:12.5px;line-height:1.4;box-shadow:0 6px 20px rgba(10,25,45,.20);z-index:54;animation:hhin .5s ease .9s both, hhout .6s ease 8s both;}
.hirschi-hint b{color:var(--blau-dd)}
.hirschi-hint::after{content:"";position:absolute;left:-7px;bottom:20px;border:7px solid transparent;border-right-color:#fff}
.hirschi.open .hirschi-hint{display:none}
@keyframes hhin{from{opacity:0;transform:translateX(-10px) scale(.96)}to{opacity:1;transform:none}}
@keyframes hhout{to{opacity:0;transform:translateX(-8px);visibility:hidden}}
@media(prefers-reduced-motion:reduce){.hirschi-hint{animation:none}}
@media(max-width:560px){.hirschi-hint{width:168px;font-size:11.5px;left:66px}}

/* ── Волна 2: часы работы — виджет вместо таблицы ── */
.hb-now{display:flex;align-items:center;gap:16px;background:#fff;border-radius:16px;padding:18px 22px;box-shadow:var(--shadow);flex-wrap:wrap;}
.hb-now .stat{width:12px;height:12px;border-radius:50%;background:#7fe08a;flex:0 0 12px;box-shadow:0 0 0 3px rgba(127,224,138,.22);}
.hb-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;}
.hb-chip{background:#fff;border:1px solid var(--hellblau);border-radius:24px;padding:7px 14px;font-size:13.5px;color:var(--dunkel);}
.hb-chip b{color:var(--blau-dd);}
.hb-chip.hb-current{background:var(--blau);border-color:var(--blau);color:#fff;}
.hb-chip.hb-current b{color:#fff;}

/* ── Hirschi-позы у booking-card ── */
.hpose{width:96px;display:block;margin:0 auto -10px;filter:drop-shadow(0 6px 14px rgba(20,40,60,.2));position:relative;z-index:2;}
/* Свежий проход 05.07 — единый компонент карточки активности (act_card compact) */
/* .actgrid — надёжная сетка для act_card (auto-fit, любое число, без orphan-хака .cardgrid) */
.actgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-top:18px;}
@media(max-width:430px){.actgrid{grid-template-columns:1fr 1fr;gap:11px;}}
.actc .ph{height:130px;}
.actc .body{padding:12px 14px 14px;display:flex;flex-direction:column;height:100%;} /* равная высота: «Mehr» снизу даже без meta (place-карты) */
.actc-more{margin-top:auto;}
.actc-name{display:block;font-family:'Montserrat';font-weight:800;font-size:14.5px;color:var(--blau-dd);line-height:1.25;margin:0 0 8px;}
.actc .act-meta{margin:0 0 8px;}
.actc-more{color:var(--blau-dd);font-weight:700;font-family:'Montserrat';font-size:12.5px;}
/* Сценарный маскот в hero — на классе, чтобы не наезжал на первую карточку на мобайле (был inline absolute bottom:-8px) */
.scen-pose{width:90px;position:absolute;right:24px;bottom:-8px;z-index:2;filter:drop-shadow(0 6px 14px rgba(20,40,60,.25));}
@media(max-width:768px){.scen-pose{width:60px;right:12px;bottom:10px;}}
/* Длинные односоставные заголовки (Datenschutzerklärung, Geschäftsbedingungen) не обрезаются на узких экранах */
h1.title,h2.title{overflow-wrap:break-word;}
/* Фото-карусель (photo_gallery) — свайп со скролл-снапом + подписи, единый вид на всех страницах */
.photocar{margin-top:18px;}
.pc-track{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding:2px 2px 10px;scrollbar-width:thin;scrollbar-color:var(--blau) transparent;}
.pc-track::-webkit-scrollbar{height:7px;}
.pc-track::-webkit-scrollbar-thumb{background:var(--blau);border-radius:4px;}
.pc-track:focus-visible{outline:2px solid var(--blau);outline-offset:3px;border-radius:8px;}
.pc-slide{flex:0 0 84%;max-width:440px;scroll-snap-align:center;margin:0;border-radius:14px;overflow:hidden;box-shadow:var(--shadow);position:relative;background:var(--hellgrau);}
.pc-slide img{width:100%;object-fit:cover;display:block;}
.pc-slide figcaption{position:absolute;left:0;right:0;bottom:0;padding:10px 14px;background:linear-gradient(to top,rgba(8,16,26,.8),rgba(8,16,26,0));color:#fff;font-family:'Montserrat';font-weight:700;font-size:13px;line-height:1.3;}
.pc-hint{text-align:center;font-size:12px;color:var(--grau);margin-top:4px;font-family:'Montserrat';font-weight:600;letter-spacing:.5px;}
body.bikepark .pc-hint{color:rgba(255,255,255,.72);} /* подсказка свайпа читаема на тёмных фонах */
@media(min-width:768px){.pc-slide{flex-basis:44%;}.pc-hint{display:none;}}
@media(min-width:1100px){.pc-slide{flex-basis:31%;}}
/* Events — индивидуальные карточки-посты + дата-рекомендация наверху */
.ev-list{display:flex;flex-direction:column;gap:10px;margin-top:6px;}
.ev-card{display:flex;align-items:stretch;gap:14px;background:#fff;border:1px solid var(--hellgrau);border-radius:14px;padding:13px 15px;box-shadow:var(--shadow);text-decoration:none;color:inherit;transition:transform .14s,box-shadow .14s;}
.ev-card:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(20,55,90,.14);}
.ev-date{flex:0 0 54px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--hellblau-l);border-radius:10px;color:var(--blau-dd);font-family:'Montserrat';line-height:1;}
.ev-date b{font-size:22px;font-weight:800;}
.ev-date span{font-size:11px;font-weight:700;margin-top:2px;text-transform:uppercase;letter-spacing:.4px;}
.ev-body{flex:1;min-width:0;}
.ev-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:2px;}
.ev-cat{font-family:'Montserrat';font-weight:700;font-size:11.5px;color:var(--blau-dd);background:var(--hellblau-l);padding:2px 9px;border-radius:999px;}
.ev-title{font-family:'Montserrat';font-weight:800;font-size:16px;color:var(--anthrazit);line-height:1.25;}
.ev-meta{font-size:12.5px;color:var(--grau);margin:1px 0;}
.ev-desc{font-size:13.5px;color:var(--dunkel);margin:4px 0 0;}
.ev-arrow{align-self:center;color:var(--blau-dd);font-weight:800;font-size:18px;flex:0 0 auto;}
.ev-next{min-height:4px;}
.ev-next-card{display:flex;align-items:center;gap:16px;background:linear-gradient(135deg,var(--blau-dd),var(--blau));color:#fff;border-radius:16px;padding:15px 20px;text-decoration:none;box-shadow:var(--shadow);}
.evn-badge{flex:0 0 auto;text-align:center;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.35);border-radius:12px;padding:8px 13px;font-family:'Montserrat';}
.evn-badge .evn-k{display:block;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;opacity:.92;}
.evn-badge b{font-size:19px;font-weight:800;white-space:nowrap;}
.evn-body{flex:1;min-width:0;}
.evn-cat{font-family:'Montserrat';font-weight:700;font-size:12px;opacity:.92;}
.evn-title{font-family:'Montserrat';font-weight:800;font-size:20px;line-height:1.2;margin-top:2px;}
.evn-arrow{font-size:22px;font-weight:800;flex:0 0 auto;}
@media(max-width:560px){.ev-title{font-size:15px;}.evn-title{font-size:16px;}.ev-desc{font-size:13px;}.evn-badge b{font-size:16px;}.ev-card{padding:12px;gap:11px;}}
/* Hirschi-ассистент: разделитель «Fragen zu dieser Seite» / «Allgemein» (page-aware FAQ) */
.hp-list .hq-sep{font-family:'Montserrat';font-weight:800;font-size:10.5px;letter-spacing:.5px;text-transform:uppercase;color:var(--blau-dd);padding:12px 2px 4px;border-top:1px solid var(--hellgrau);margin-top:4px;}
.hp-list .hq-sep:first-child{border-top:none;margin-top:0;padding-top:2px;}

/* ── HO-1: страница отеля в бренд-цветах Sporthotel (бордо #75abd6) ── */
body.hotelbrand .eyebrow{color:var(--blau-dd);}
body.hotelbrand .btn.primary{background:#75abd6;}
body.hotelbrand .btn.primary:hover{background:#5e93bd;}
/* Gafs 06.07: Header-Tickets-Button bleibt Semmering-Blau (nicht Hotel-Bordeaux) */
body.hotelbrand header.site .btn.primary{background:var(--blau);}
body.hotelbrand header.site .btn.primary:hover{background:var(--blau-dd);}
body.hotelbrand h2.title{color:#3d2229;}
body.hotelbrand .chip{border-color:#bad5ea;}
body.hotelbrand .tg{background:#e8f1f8;color:var(--blau-dd);}
body.hotelbrand .price{color:var(--blau-dd);}

/* ── Галерея главной: адаптив ── */
@media(max-width:900px){.galgrid{grid-template-columns:repeat(3,1fr) !important;}}
@media(max-width:520px){.galgrid{grid-template-columns:repeat(2,1fr) !important;}}

/* ── Journey-таймлайн аудиторий-лендингов ── */
.journey{max-width:840px;background:#fff;border-radius:16px;padding:14px 18px;box-shadow:var(--shadow);}
.jstep{display:grid;grid-template-columns:56px 18px 1fr;gap:0 12px;position:relative;padding:9px 0;}
.jtime{font-family:Montserrat;font-weight:800;color:var(--blau-dd);font-size:14px;}
.jdot{width:12px;height:12px;border-radius:50%;background:var(--blau);margin-top:4px;box-shadow:0 0 0 3px var(--hellblau-l);position:relative;z-index:1;}
.jstep::before{content:"";position:absolute;left:73.5px;top:24px;bottom:-6px;width:2px;background:var(--hellblau);}
.jstep:last-child::before{display:none;}
.jtxt{font-size:14.5px;color:var(--dunkel);}
.jtxt a{color:var(--blau-dd);font-weight:700;}
@media(max-width:520px){.jstep{grid-template-columns:46px 14px 1fr;}.jstep::before{left:59px;}}

/* ── H-7: крупные карточки активностей на главной ── */
.cardgrid.big{grid-template-columns:repeat(3,1fr);gap:18px;}
@media(max-width:900px){.cardgrid.big{grid-template-columns:repeat(2,1fr);}}
@media(max-width:560px){.cardgrid.big{grid-template-columns:1fr;}}


/* ── Live redesign: 7-Tage-Prognose (#wk-forecast) + статус-группы ── */
.wk-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:10px;margin-top:14px;}
.wk-day{background:var(--white);border-radius:14px;padding:14px 6px 12px;text-align:center;box-shadow:var(--shadow);}
.wk-day.today{outline:2.5px solid var(--blau);outline-offset:-2.5px;}
.wk-dow{font-family:'Montserrat';font-weight:800;font-size:13px;letter-spacing:.5px;color:var(--blau-dd);text-transform:uppercase;}
.wk-date{font-size:11.5px;color:#5b6470;margin-top:1px;}
.wk-ico{font-size:30px;line-height:1.25;margin:7px 0 5px;}
.wk-max{font-family:'Montserrat';font-weight:800;font-size:19px;color:var(--anthrazit);}
.wk-min{font-size:13px;color:#5b6470;}
.wk-loading{grid-column:1/-1;font-size:14px;color:#5b6470;font-style:italic;padding:18px 0;text-align:center;}
.status-h{font-family:'Montserrat';font-weight:800;font-size:14px;letter-spacing:1.5px;text-transform:uppercase;color:var(--blau-dd);margin:26px 0 0;}
#webcams,#wetter,#status{scroll-margin-top:86px;}
@media(max-width:760px){
  .wk-grid{display:flex;overflow-x:auto;padding-bottom:6px;-webkit-overflow-scrolling:touch;}
  .wk-day{min-width:96px;flex:0 0 auto;}
}
/* ══════════════════════════════════════════════════════════════════
   COLOR DRAFT 1 — «Alpine Tiefe»
   Ритм: hellblau-l → тонированный белый → blau-deep (тёмные band'ы),
   футер глубже антрацита. Дописать в КОНЕЦ style.css, HTML не трогать.
   ══════════════════════════════════════════════════════════════════ */
:root{
  --hellblau-l:#e3eef7;                    /* пастель чуть глубже — фон различим */
  --v-page:#f3f8fc;                        /* тонированный «белый» страницы */
  --v-deep:linear-gradient(168deg,#33617f 0%,#274b63 55%,#1d3a4e 100%);
  --v-footer:#14242f;                      /* футер глубже антрацита */
  --shadow:0 6px 24px rgba(20,40,60,.13);
}
body{background:var(--v-page);}
.livebar{background:var(--blau-deep);}

/* бежевые секции → тёмно-синие контраст-блоки с белым текстом */
section[style*="var(--beige-l)"]{background:var(--v-deep)!important;}
section[style*="var(--beige-l)"] h2.title,
section[style*="var(--beige-l)"] h3{color:#fff;}
section[style*="var(--beige-l)"] .eyebrow{color:#9cc7e8;}
section[style*="var(--beige-l)"] .lead{color:#d9e7f2;}
section[style*="var(--beige-l)"] .season-note{color:#a9c3d5;}
section[style*="var(--beige-l)"] .season-note a[style]{color:#bfe0f7!important;}
section[style*="var(--beige-l)"] .stb-num{color:#fff!important;}
section[style*="var(--beige-l)"] .stb-num + div{color:#c4d6e5!important;}
section[style*="var(--beige-l)"] .eyebrow[style]{color:#bad5ea!important;}
section[style*="var(--beige-l)"] .chip{background:rgba(255,255,255,.13);color:#eaf3fa;}
section[style*="var(--beige-l)"] .chip.active,
section[style*="var(--beige-l)"] .chip:hover{background:var(--blau);color:#fff;}
section[style*="var(--beige-l)"] .btn.primary{background:#fff;color:var(--blau-dd);}
section[style*="var(--beige-l)"] .btn.primary:hover{background:var(--hellblau-l);}

/* светло-голубые паузы: секция карты (6) и band под newsletter (12) */
#main>section:nth-of-type(6):not(.xseason-cta):not(.livebar2):not([class*=hero]):not([style*=background]),
#main>section:nth-of-type(12):not(.xseason-cta):not(.livebar2):not([class*=hero]):not([style*=background]){background:var(--hellblau-l);}

/* тёплый беж внутри сплита и «принципов» → холодный светлый */
.split .txt{background:var(--hellblau-l);}
.principle .p{background:var(--hellblau-l);}

/* карточки принципиально белые — «выпрыгивают» из тонированных фонов */
.exp-card,.rev,.heute-card,.tc-card,.journey,.hb-now{background:#fff;}

/* футер: глубокий сине-чёрный вместо коричневого антрацита */
footer.site{background:var(--v-footer);color:#c3d2dd;}
footer.site a{color:#c3d2dd;}
footer.site .trust span{background:#22404f;}
footer.site .bottom{border-top-color:#2b4a5c;color:#8ba4b3;}
.foot-nl{border-top-color:#2b4a5c;}

/* ── Отель: полный бренд Sporthotel, минимум пересечений с курортной палитрой ── */
body.hotelbrand{background:#fbf7f2;}
body.hotelbrand section[style*="var(--hellblau-l)"]{background:#e8f1f8 !important;}
body.hotelbrand section[style*="var(--beige-l)"]{background:#f3e7db !important;}
body.hotelbrand section[style*="linear-gradient(135deg,var(--blau-dd)"]{background:linear-gradient(135deg,#4f86b3,#75abd6) !important;}
body.hotelbrand .btn.ghost2{border-color:var(--blau-dd);color:var(--blau-dd);}
body.hotelbrand .btn.secondary{border-color:var(--blau-dd);color:var(--blau-dd);}
body.hotelbrand .hq-q::after{color:var(--blau-dd);}
body.hotelbrand a[style*="color:var(--blau-dd)"]{color:var(--blau-dd) !important;}
body.hotelbrand .season-note a{color:var(--blau-dd);}

/* ── N-10: floatpanel крупнее, в стилистике ── */
.floatpanel a{width:56px;height:56px;font-size:22px;border:2px solid var(--hellblau);}
.floatpanel a:hover{transform:scale(1.07);border-color:var(--blau);}

/* ═══════════════════════════════════════════════════════════
   MOBILE-QA-390 — аддитивный блок (03.07.2026)
   Заменяет мёртвый фикс TEARDOWN №21 (селектор .topbar в HTML
   не существует; строки 566–571 можно удалить при случае).
   ═══════════════════════════════════════════════════════════ */

/* Fix-1. Бургер: <button class="burger"> пуст (0×0) — рисуем иконку CSS.
   Работает на всех ширинах ≤900, клик уже обрабатывает app.js. */
.burger{width:38px;height:38px;flex:0 0 38px;position:relative;padding:0;}
.burger::before{content:"";position:absolute;left:7px;right:7px;top:50%;height:2.5px;border-radius:2px;
  background:currentColor;transform:translateY(-50%);box-shadow:0 -7px 0 currentColor,0 7px 0 currentColor;}

@media(max-width:520px){
  /* Fix-2. Шапка влезает в 390: лого + сезон + язык + Tickets + бургер
     (проверено: последний элемент заканчивается на x=389) */
  header.site .wrap{padding:0 10px;gap:5px;}
  .logo{font-size:14px!important;gap:5px;letter-spacing:.4px;}
  .logo svg{width:20px;height:14px;}
  .season-toggle span{padding:4px 6px!important;}
  .lang-toggle span{padding:3px 6px;font-size:11px;}
  header.site .btn.sm{padding:6px 9px;font-size:11.5px;}
  header.site .btn.sm svg{display:none!important;} /* у svg инлайн display */
  /* Fix-3. Livebar: auto-высота — 2-я строка выпадала из тёмной подложки */
  .livebar .wrap{height:auto;padding:8px 22px;}
  /* Fix-4. Пункты открытого моб-меню не режутся (white-space:nowrap у .submenu a) */
  body.navopen .submenu a{white-space:normal;}
  /* Fix-5. live: статус-строки переносятся, «geöffnet» не упирается в край */
  .statusrow{flex-wrap:wrap;}
  /* Fix-6. nachtaktive: стикер не закрывает подзаголовок hero */
  .hero img[src*="Hirschi_Apres_Ski"]{display:none;}
}

/* ── Контраст-фиксы после Color-Draft «Alpine Tiefe» (все вьюпорты) ── */

/* Fix-7a. gruppen: полосатая таблица — прозрачные строки на тёмном band */
section[style*="var(--beige-l)"] .wrap table tr:not([style*="background"]){color:#eaf3fa;}
/* Fix-7b. gruppen: белые плашки логотипов глушились multiply на тёмном
   (!important — mix-blend-mode задан инлайном) */
section[style*="var(--beige-l)"] img[style*="mix-blend-mode:multiply"]{mix-blend-mode:normal!important;}
/* Fix-7c. winter: белый заголовок на светлой карточке .split .txt внутри band */
section[style*="var(--beige-l)"] .split .txt h2.title,
section[style*="var(--beige-l)"] .split .txt h3{color:var(--anthrazit);}
section[style*="var(--beige-l)"] .split .txt .eyebrow{color:var(--blau-dd);}
section[style*="var(--beige-l)"] .split .txt .lead{color:var(--dunkel);}

/* лейблы формы резервации (#reservierung, lichten.html) */
#reservierung .ff label{color:var(--blau-dd);}

/* Fix-10. hotel: «Ein Haus mit Geschichte» — hotelbrand вернул бежевый фон,
   а белые цвета Color-Draft остались */
body.hotelbrand section[style*="var(--beige-l)"] h2.title,
body.hotelbrand section[style*="var(--beige-l)"] h3{color:#3d2229;}
body.hotelbrand section[style*="var(--beige-l)"] .lead{color:var(--dunkel);}
body.hotelbrand section[style*="var(--beige-l)"] .eyebrow{color:var(--blau-dd);}
body.hotelbrand section[style*="var(--beige-l)"] .season-note{color:#5b6470;}

/* Fix-11. wellness-spa: ghost-кнопки (белые, для тёмных hero) на светлой секции */
body:not(.bikepark) section:not([style*="background"]) .btn.ghost{
  background:transparent;border-color:var(--blau-dd);color:var(--blau-dd);}

/* ── D-7: Promo-Popup ── */
.promo-pop{position:fixed;right:18px;bottom:18px;z-index:1200;max-width:330px;background:#fff;border-radius:16px;box-shadow:0 12px 40px rgba(10,20,35,.28);padding:16px 16px 14px;opacity:0;transform:translateY(14px);transition:opacity .4s,transform .4s;font-size:14px;color:var(--anthrazit)}
.promo-pop.on{opacity:1;transform:none}
.promo-pop .pp-x{position:absolute;top:2px;right:2px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:none;border:0;font-size:20px;color:#5b6470;cursor:pointer;line-height:1}
.promo-pop .pp-ev{display:block;text-decoration:none;color:var(--anthrazit);margin-bottom:10px;padding-right:30px}
.promo-pop .pp-ev b{color:var(--blau-dd)}
.promo-pop .pp-nl{display:flex;gap:10px;align-items:center;width:100%;background:none;border:0;border-top:1px solid var(--hellgrau);padding:10px 0 0;cursor:pointer;color:var(--dunkel);font:inherit;text-align:left}
@media(max-width:520px){.promo-pop{left:10px;right:10px;max-width:none}}
/* promo-pop поднимается над sticky-CTA во ВСЁМ диапазоне, где CTA виден (≤720) */
@media(max-width:720px){body.has-stickycta .promo-pop{bottom:84px}}
@media(max-width:700px){.bp-tickets{grid-template-columns:1fr!important}}

/* ── N-10: Floatpanel-редизайн (крупнее, бренд-стиль) ── N10-FLOATPANEL */
.floatpanel{gap:10px;}
.floatpanel a{width:58px;height:58px;border-radius:18px;background:rgba(255,255,255,.96);
  border:1.5px solid rgba(117,171,214,.45);backdrop-filter:blur(6px);
  box-shadow:0 6px 22px rgba(10,25,45,.18);flex-direction:column;gap:2px;}
.floatpanel .fp-ic{font-size:21px;}
.floatpanel a::after{content:"";position:absolute;inset:0;border-radius:18px;transition:.15s;}
.floatpanel a:hover{background:var(--blau-dd);border-color:var(--blau-dd);color:#fff;transform:translateX(-3px);}
.floatpanel .fp-lb{position:static;transform:none;opacity:1;background:none;box-shadow:none;padding:0;
  font-family:Montserrat;font-weight:700;font-size:8.5px;letter-spacing:.4px;text-transform:uppercase;color:inherit;}
.hirschi-fab{box-shadow:0 6px 22px rgba(10,25,45,.24);border:2px solid #fff;}

/* ── H-4: точки статуса в «Heute am Semmering» — .stat лежит внутри <a> (не flex-item),
   без display инлайновый span схлопывался в 0×0 и точка была невидима ── */
.heute-list .stat{display:inline-block;vertical-align:1px;margin-right:4px;}

/* ── CONSENT-BAR (WR-P0-5) ── */
.consent-bar{position:fixed;left:0;right:0;bottom:0;z-index:1400;background:var(--anthrazit);color:#eef3f8;
  display:flex;gap:18px;align-items:center;justify-content:center;flex-wrap:wrap;padding:14px 20px;font-size:14px;box-shadow:0 -6px 24px rgba(0,0,0,.25)}
.consent-bar a{color:#9fc3e6;text-decoration:underline}
.consent-bar .cb-btns{display:flex;gap:10px}
.consent-bar button{font-family:Montserrat;font-weight:700;font-size:13.5px;border-radius:10px;padding:10px 16px;cursor:pointer;border:0}
.consent-bar .cb-ok{background:#fff;color:var(--anthrazit)}
.consent-bar .cb-min{background:transparent;color:#cdd7e1;border:1.5px solid #5a6672}
@media(max-width:520px){.consent-bar{font-size:13px;padding:12px 14px}}

/* ══ WARROOM FUN-06: bikepark — .floatpanel и .bp-livepanel были ОБЕ
   fixed right:14px; top:50%; translateY(-50%); z-index:55 (style.css:150/:335)
   и накрывали друг друга. Раскладываем стопкой вокруг вертикального центра:
   live-статус (≈230px, 3 блока) — НАД центром, тикет-шорткаты (4×58+гэпы
   ≈262px) — ПОД. Стек ≈500px — влезает при vh ≥ ~560px (десктоп >900px,
   на ≤900 обе панели и так скрыты старым правилом style.css:426). ══ */
body.bikepark .bp-livepanel{top:calc(50% - 8px);transform:translateY(-100%);}
body.bikepark .floatpanel{top:calc(50% + 8px);transform:none;}

/* ══ WARROOM WA-01/WA-06 — контраст главных CTA и мелкого серого текста ══ */
/* WA-01: белый на var(--blau) #75abd6 = 2.46:1 (фейл AA). → var(--blau-dd)
   #33617f = 6.6:1. Переменные проверены в :root (стр.81): --blau-dd, --blau-deep есть.
   hotel.html не задет: body.hotelbrand .btn.primary{#75abd6} (стр.624) специфичнее.
   Тёмные band'ы Color-Draft: их белые .btn.primary (стр.694) специфичнее — остаются. */
.btn.primary{background:var(--blau-dd);}
.btn.primary:hover{background:var(--blau-deep);}
.chip.active,.chip:hover{background:var(--blau-dd);color:#fff;}
/* чипы внутри тёмных band'ов (Color-Draft стр.692 задавал var(--blau)) —
   тоже темним + светлый бордер, чтобы чип не сливался с band-фоном */
section[style*="var(--beige-l)"] .chip.active,
section[style*="var(--beige-l)"] .chip:hover{background:var(--blau-dd);border-color:var(--hellblau);color:#fff;}
/* hotelbrand: чипы в бордо — не тащим синий в палитру отеля (белый на #75abd6 ≈ 9:1) */
body.hotelbrand .chip.active,body.hotelbrand .chip:hover{background:#75abd6;color:#fff;}
/* Betriebszeiten: текущий период (стр.616 задавал var(--blau)) */
.hb-chip.hb-current{background:var(--blau-dd);border-color:var(--blau-dd);}
/* CTA на тёмных заливках (gruppen-.formbox, .newsletter, футер-.foot-nl):
   blau-dd слился бы с градиентом blau-dd→blau — там кнопки белые,
   по паттерну Color-Draft (стр.694). Стоит ПОСЛЕ hover-правила: при равной
   специфичности с .btn.primary:hover побеждает порядок в файле. */
.formbox .btn.primary,.newsletter .btn.primary,.foot-nl .btn.primary{background:#fff;color:var(--blau-dd);}
.formbox .btn.primary:hover,.newsletter .btn.primary:hover,.foot-nl .btn.primary:hover{background:var(--hellblau-l);color:var(--blau-dd);}
/* WA-06: var(--grau) #8b919b на белом = 3.17:1 → #5b6470 (6.0:1, уже юзается
   в .season-note-фиксе стр.574). Классовые случаи: */
.booking-card .field,.tc-note{color:#5b6470;}
/* инлайновые случаи (wandern-билет-карточки <p class="small" style="color:var(--grau)">,
   «ab/from» в booking-card) — инлайн бьётся только атрибут-селектором + !important: */
.exp-card [style*="color:var(--grau)"],
.booking-card [style*="color:var(--grau)"]{color:#5b6470!important;}
/* media-wave */
@media(max-width:900px){.only-desktop{display:none!important}.grp-strip{grid-template-columns:repeat(2,1fr)!important}}

/* ═══ CRO-POLISH: STICKY MOBILE CTA (money-страницы) ═══
   Только ≤720px, на body.has-stickycta. z-index 1390 < consent-bar (1400):
   пока баннер согласия виден — он приоритетнее; после его remove() — CTA виден.
   left:84px оставляет место Hirschi-FAB (left:18px, ~56px). ── */
.sticky-cta{display:none;}
@media(max-width:720px){
  body.has-stickycta .sticky-cta{
    display:flex;position:fixed;left:84px;right:12px;bottom:12px;z-index:1390;
    gap:8px;align-items:stretch;}
  body.has-stickycta{padding-bottom:76px;}
  .sticky-cta .btn{flex:1;justify-content:center;box-shadow:0 8px 26px rgba(10,25,45,.28);
    font-size:15px;padding:14px 16px;border-radius:12px;}
  /* второстепенная кнопка (напр. «Anrufen») — компактнее */
  .sticky-cta .sc-2nd{flex:0 0 auto;padding:14px 15px;}
}
/* отель — бордо-бренд у sticky-CTA (в тон body.hotelbrand) */
body.hotelbrand .sticky-cta .btn.primary{background:#75abd6;}

/* ═══ HERO-GHOST-FROSTED (visual audit 04.07) — фикс невидимых ghost-кнопок на фото-героях.
   Причина: поздняя light-section .btn.ghost (тёмно-синий текст) перекрывала hero-правило.
   Решение: матовое стекло (тёмная подложка + blur) = гарантированный контраст на ЛЮБОМ фото. ── */
.hero .btn.ghost, .bp-hero .btn.ghost, 
.hero .btn.ghost2, .bp-hero .btn.ghost2{
  background:rgba(16,30,48,.66)!important;
  border-color:rgba(255,255,255,.72)!important;
  color:#fff!important;
  backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);
  text-shadow:0 1px 3px rgba(0,0,0,.4);
}
.hero .btn.ghost:hover, .bp-hero .btn.ghost:hover, 
.hero .btn.ghost2:hover{
  background:rgba(16,30,48,.66)!important;border-color:#fff!important;
}
/* hero-why буллеты — тень для читаемости поверх фото */
.hero .hero-why span, .bp-hero .hero-why span{
  text-shadow:0 1px 3px rgba(0,0,0,.45);
}

/* ── PHOTO-STRIP (thumbnail preview rows) — не схлопывать в 1 колонку как контент-cardgrid ── */
.photo-strip{display:grid;gap:10px;}
.photo-strip.s3{grid-template-columns:repeat(3,1fr);}
.photo-strip.s2{grid-template-columns:1fr 1fr;}
@media(max-width:430px){.photo-strip.s3{grid-template-columns:1fr 1fr;}}

/* ── CARD-TITLE-GRADIENT — читаемость белых заголовков карточек на светлых фото ── */
.exp-card .ph, .trailcard, .split .ph{position:relative;}
.exp-card .ph::before{content:"";position:absolute;left:0;right:0;bottom:0;height:62%;
  background:linear-gradient(to top,rgba(10,20,35,.66),rgba(10,20,35,.12) 55%,transparent);
  pointer-events:none;border-radius:0 0 inherit inherit;}
.exp-card .ph{text-shadow:0 1px 4px rgba(0,0,0,.45);}
.exp-card .ph .badge{z-index:2;}

/* ══ TBL — единый премиум-стиль таблиц (rounded container + zebra + mobile-scroll) ══ */
.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:14px;box-shadow:var(--shadow);
  border:1px solid var(--hellgrau);margin:14px 0;background:#fff;width:fit-content;max-width:100%;}
.tbl{width:100%;border-collapse:collapse;font-size:14px;min-width:480px;}
.tbl th,.tbl td{padding:11px 15px;text-align:left;}
.tbl th:not(:first-child),.tbl td:not(:first-child){text-align:center;}
/* шапка: первая строка th (таблицы без thead) ИЛИ thead */
.tbl tr:first-child th, .tbl thead th{
  background:var(--anthrazit);color:#fff;font-family:'Montserrat';font-weight:700;
  font-size:12px;text-transform:uppercase;letter-spacing:.4px;padding:12px 15px;position:sticky;top:0;}
.tbl tbody td, .tbl tr td{border-top:1px solid var(--hellgrau);color:var(--anthrazit);}
.tbl tbody tr:nth-child(odd) td, .tbl tr:nth-child(even) td{background:var(--beige-l);}
.tbl td:first-child{font-weight:600;}
.tbl b{color:var(--blau-dd);}
@media(max-width:520px){.tbl{font-size:13px;min-width:440px;}.tbl th,.tbl td{padding:9px 11px;}}

/* ── INTERWEAVE: audience strip on activity/hub cards ── */
.aud-strip{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:14px 0 4px;padding:12px 14px;
  background:var(--hellblau-l);border-radius:12px}
.aud-strip .aud-lb{font-family:'Montserrat';font-weight:700;font-size:13px;color:var(--blau-dd);white-space:nowrap}
.aud-strip .aud-chips{display:flex;gap:8px;flex-wrap:wrap}
.aud-strip .chip{background:#fff}
/* ── INTERWEAVE: audience→activity block on scenario landings ── */
.aud-acts{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-top:14px}
.aud-acts a{display:flex;align-items:center;gap:9px;background:#fff;border:1px solid var(--hellgrau);
  border-radius:12px;padding:11px 13px;text-decoration:none;color:var(--anthrazit);font-weight:600;
  font-family:'Montserrat';font-size:14px;transition:.15s}
.aud-acts a:hover{border-color:var(--blau);transform:translateY(-2px)}
.aud-acts a .ic{color:var(--blau-dd);flex:0 0 auto}

/* ═══ PRICELIST — заменяет плотные .tbl прайс-матрицы (моб-первый, группируемый) ═══ */
.pricelist{margin:6px 0 2px}
.pl-group+.pl-group{margin-top:20px}
.pl-gtitle{display:flex;align-items:center;gap:10px;font-family:'Montserrat',system-ui,sans-serif;font-size:12px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--blau-dd);margin:0 0 10px}
.pl-gtitle::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,rgba(51,97,127,.22),transparent)}
.pl-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 14px;padding:11px 15px;background:#fff;border:1px solid rgba(20,40,60,.09);border-radius:12px;margin-bottom:8px}
.pl-row.pl-star{border:1.5px solid var(--blau);box-shadow:0 4px 16px rgba(80,134,179,.15)}
.pl-name{flex:1 1 220px;font-weight:600;color:var(--anthrazit);font-size:14.5px;line-height:1.3}
.pl-badge{display:inline-block;font-size:9.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#fff;background:var(--blau);border-radius:999px;padding:2px 9px;margin-left:8px;vertical-align:middle;white-space:nowrap}
.pl-prices{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.pl-seg{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;min-width:66px;background:var(--v-page);border-radius:9px;padding:5px 9px;text-align:center}
.pl-seg small{font-size:9px;text-transform:uppercase;letter-spacing:.03em;color:#8494a3;line-height:1.1;margin-bottom:1px}
.pl-seg b{font-size:14.5px;color:var(--blau-dd);line-height:1.2;white-space:nowrap}
.pl-seg.pl-muted b{color:#c2ccd4;font-weight:500}
.pl-seg.pl-one{min-width:0;background:transparent;padding:5px 2px}
.pl-seg.pl-one b{font-size:15px;color:var(--blau-dd)}
.pl-star .pl-seg{background:var(--hellblau-l)}

/* ── Erlebnis-Planer: Audience-Selector + Szenario-Spotlight (home) ── */
.aud-selector{display:flex;gap:9px;flex-wrap:wrap;margin:6px 0 20px}
.aud-chip{font-family:Montserrat;font-weight:700;font-size:14px;padding:9px 16px;border-radius:999px;border:1.5px solid var(--hellgrau);background:#fff;color:var(--blau-dd);cursor:pointer;transition:all .16s ease;line-height:1}
.aud-chip:hover{border-color:var(--blau);transform:translateY(-1px)}
.aud-chip.active{background:var(--blau-dd);border-color:var(--blau-dd);color:#fff;box-shadow:0 4px 14px rgba(30,60,90,.25)}
.aud-spots{margin-bottom:6px}
.aud-spot[hidden]{display:none!important}
.aud-spot{display:grid;grid-template-columns:minmax(280px,42%) 1fr;gap:0;border-radius:20px;overflow:hidden;box-shadow:var(--shadow);border:1px solid var(--hellgrau);background:#fff;animation:audfade .28s ease}
@keyframes audfade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.aud-spot-media{position:relative;min-height:320px;background-size:cover;background-position:center}
.aud-spot-badge{position:absolute;top:14px;left:14px;background:rgba(255,255,255,.92);color:var(--blau-dd);font-family:Montserrat;font-weight:800;font-size:13px;padding:6px 13px;border-radius:999px;backdrop-filter:blur(4px)}
.aud-spot-body{padding:26px 28px 24px}
.aud-spot-title{font-family:Montserrat;font-weight:800;font-size:27px;color:var(--anthrazit);margin:2px 0 6px;line-height:1.1}
.aud-spot-hook{font-size:16px;color:var(--dunkel);margin:0 0 14px;line-height:1.4}
.aud-spot-lbl{font-family:Montserrat;font-weight:700;font-size:12px;letter-spacing:.5px;text-transform:uppercase;color:var(--grau);margin:12px 0 7px}
.aud-chiprow{display:flex;gap:8px;flex-wrap:wrap}
.aud-actchip{font-size:13.5px;font-weight:700;font-family:Montserrat;text-decoration:none;padding:7px 13px;border-radius:999px;background:var(--blau-dd);color:#fff;transition:transform .14s}
.aud-actchip:hover{transform:translateY(-1px);background:var(--blau)}
.aud-svc{font-size:13px;padding:6px 12px;border-radius:999px;background:var(--hellblau-l);color:var(--blau-dd);border:1px solid var(--hellblau)}
.aud-day{margin:16px 0 18px;font-family:Montserrat;font-weight:600;font-size:13.5px;color:var(--blau-dd);background:var(--beige-l);border-radius:12px;padding:11px 14px;line-height:1.5}
.aud-day-ic{opacity:.8}
.aud-spot-cta{margin-top:2px}
.aud-more{font-size:13.5px;color:var(--grau);margin:2px 0 26px}
.aud-more a{color:var(--blau-dd);font-weight:600;text-decoration:none}
.aud-more a:hover{text-decoration:underline}
.aud-actsheading{font-family:Montserrat;font-weight:800;font-size:22px;color:var(--anthrazit);margin:8px 0 14px}
/* Подсветка подходящих активностей при выбранной аудитории */
[data-audgrid] .exp-card{transition:box-shadow .2s,transform .2s,opacity .2s;position:relative}
[data-audgrid].aud-active .exp-card:not(.match){opacity:.82;transition:opacity .2s ease}
/* Gafs 06.07: Home Live-Statusbar + „Nächstes Event“-Pille (statt schlichter livebar) */
.livebar2{background:var(--blau-dd);color:#fff}
.livebar2 .wrap{display:flex;gap:12px 20px;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:9px 0}
.lb-status{display:flex;gap:8px 9px;align-items:center;flex-wrap:wrap;font-family:Montserrat;font-weight:600;font-size:13px}
.lb-chip{display:inline-flex;align-items:center;gap:6px;background:rgba(255,255,255,.11);border-radius:999px;padding:5px 12px;color:#fff;text-decoration:none;white-space:nowrap}
.lb-chip.lb-open{background:rgba(127,224,138,.20)}
.lb-dot{width:8px;height:8px;border-radius:50%;background:#7fe08a;box-shadow:0 0 0 3px rgba(127,224,138,.22);flex:none}
.lb-all{color:#dbe8f4;text-decoration:none;font-weight:700;font-size:12.5px;white-space:nowrap}
.lb-all:hover{color:#fff}
.nextev{display:inline-flex;align-items:center;gap:9px;background:#fff;color:var(--blau-dd);border-radius:999px;padding:5px 7px 5px 15px;text-decoration:none;font-family:Montserrat;box-shadow:0 3px 12px rgba(0,0,0,.20);transition:transform .15s ease}
.nextev:hover{transform:translateY(-1px)}
.nextev .nx-lbl{font-size:10px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--blau)}
.nextev .nx-ic{font-size:16px;line-height:1}
.nextev .nx-d{font-weight:800;font-size:13px}
.nextev .nx-n{font-weight:600;font-size:13px}
.nextev .nx-t{font-size:11px;opacity:.65}
.nextev .nx-go{background:var(--blau-dd);color:#fff;width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:12px;flex:none}
@media(max-width:700px){.nextev .nx-lbl{display:none}.lb-chip.lb-hide-s{display:none}.livebar2 .wrap{gap:8px 12px}}
/* Gafs 06.07: Anreise-Karte — bewegtes Zug/Auto respektiert reduced-motion */
@media (prefers-reduced-motion:reduce){.anr-veh{display:none}}
[data-audgrid].aud-active .exp-card.match{box-shadow:0 0 0 3px var(--blau),var(--shadow);transform:translateY(-2px)}
[data-audgrid] .exp-card.match::after{content:"★";position:absolute;top:10px;right:10px;z-index:3;background:var(--blau-dd);color:#fff;width:26px;height:26px;border-radius:50%;display:none;align-items:center;justify-content:center;font-size:13px;box-shadow:0 2px 8px rgba(0,0,0,.3)}
[data-audgrid].aud-active .exp-card.match::after{display:flex}
@media(max-width:760px){.aud-spot{grid-template-columns:1fr}.aud-spot-media{min-height:200px}.aud-spot-title{font-size:23px}.aud-spot-body{padding:20px}}

/* Hero-Video (home, Sommer) — drone-Loop, Poster = AIR-01 (LCP-Fallback) */
.hero-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1}
@media(prefers-reduced-motion:reduce){.hero-video{display:none}}

/* Bergluft / Höhenluftkurort (wellness-spa) */
.air-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:22px;align-items:center;margin-top:6px}
.air-stats{display:flex;flex-direction:column;gap:10px}
.air-s{background:#fff;border-radius:12px;padding:12px 14px;box-shadow:var(--shadow)}
.air-s b{font-family:Montserrat;font-weight:800;font-size:23px;color:var(--blau-dd);display:block}
.air-s small{color:var(--dunkel);font-size:13px}
@media(max-width:760px){.air-grid{grid-template-columns:1fr}}

/* Downloads-Hub */
.dl-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:8px 0 20px}
.dl-card{display:flex;flex-direction:column;gap:4px;background:#fff;border-radius:14px;padding:16px;box-shadow:var(--shadow);text-decoration:none;color:inherit;border:1px solid var(--hellgrau);transition:transform .14s}
.dl-card:hover{transform:translateY(-2px)}
.dl-ic{font-size:24px}
.dl-card b{font-family:'Montserrat';color:var(--blau-dd)}
.dl-card small{color:var(--dunkel);font-size:12px}
@media(max-width:640px){.dl-grid{grid-template-columns:1fr 1fr}}
@media(min-width:641px){.dl-grid>*:last-child:nth-child(3n+1){grid-column:2}} /* центрировать одиночку в неполном ряду (как .cardgrid) */


/* Hero-Video Pause/Play-Steuerung (WCAG 2.2.2) — additiv */
.hero-vidbtn{position:absolute;right:16px;bottom:44px;z-index:4;width:40px;height:40px;
  display:inline-flex;align-items:center;justify-content:center;padding:0;border-radius:50%;
  background:rgba(18,28,46,.55);color:#fff;border:1px solid rgba(255,255,255,.55);cursor:pointer;
  backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);transition:background .15s,transform .15s;}
.hero-vidbtn:hover{background:rgba(18,28,46,.8);}
.hero-vidbtn:active{transform:scale(.94);}
.hero-vidbtn:focus-visible{outline:3px solid #fff;outline-offset:2px;}
.hero-vidbtn svg{fill:currentColor;display:block;}
@media (max-width:640px){.hero-vidbtn{width:44px;height:44px;right:12px;bottom:12px;}}
/* Hero-Text-Ausblenden-Toggle (Gafs: Text verdeckt das Video) */
.hero-textbtn{position:absolute;right:16px;bottom:92px;z-index:4;display:inline-flex;align-items:center;gap:6px;
  height:40px;padding:0 14px;border-radius:20px;background:rgba(18,28,46,.55);color:#fff;border:1px solid rgba(255,255,255,.55);
  font-family:'Montserrat',system-ui,sans-serif;font-size:13px;font-weight:600;cursor:pointer;
  backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);transition:background .15s,transform .15s;}
.hero-textbtn:hover{background:rgba(18,28,46,.8);}
.hero-textbtn:active{transform:scale(.95);}
.hero-textbtn:focus-visible{outline:3px solid #fff;outline-offset:2px;}
.hero-textbtn svg{fill:currentColor;display:block;flex:none;}
.hero .wrap{transition:opacity .35s ease;}
.hero.vidfocus .wrap{opacity:0;pointer-events:none;}
@media (max-width:640px){.hero-textbtn{right:12px;bottom:64px;height:38px;padding:0 12px;font-size:12px;}}


/* Cross-Season-CTA am Seitenende (Brand Semmering Blau) — additiv */
.xseason-cta{background:linear-gradient(135deg,var(--blau-dd),var(--blau-deep));color:#fff;}
.xseason-cta .wrap{padding:26px 20px;}
.xs-inner{display:flex;align-items:center;gap:18px;flex-wrap:wrap;}
.xs-hirschi{width:54px;height:54px;border-radius:50%;background:#fff;padding:2px;flex:0 0 auto;object-fit:cover;}
.xs-ico{font-size:26px;flex:0 0 auto;line-height:1;}
.xs-txt{flex:1 1 320px;min-width:0;}
.xs-txt b{display:block;font-family:'Montserrat';font-size:19px;margin-bottom:3px;color:#fff;}
.xs-txt span{font-size:14px;opacity:.92;line-height:1.5;}
.xseason-cta a.btn.primary.xs-btn{background:#fff;color:var(--blau-dd);flex:0 0 auto;}
.xseason-cta a.btn.primary.xs-btn:hover{background:var(--hellblau);color:var(--blau-dd);}
@media(max-width:640px){.xs-inner{gap:12px}.xs-txt{flex-basis:100%}.xseason-cta a.btn.primary.xs-btn{width:100%;text-align:center}}

@media (max-width:640px){.hero::after{height:66px}}


/* Echtes Marken-Logo (Header blau / Footer weiß) — additiv */
.logo-img{height:30px;width:auto;display:block;}
footer.site .logo-img{height:32px;}
@media (max-width:640px){.logo-img{height:22px;}}

/* Mobile-Menü Akkordeon: Untermenüs (Sommer/Winter) einklappbar — additiv */
.nav-toggle{display:none;background:none;border:none;padding:0;font:inherit;}
@media(max-width:1460px){ /* 04.08 P0: бургер живёт до 1460px (V1 POLISH #5), а аккордеон сабменю оставался ≤900 — на 901–1460 подменю было недостижимо тапом */
  body.navopen .navitem.has-sub{position:relative;}
  body.navopen .navitem.has-sub > a{display:block;text-align:left;padding-right:50px !important;}
  body.navopen .nav-toggle{display:flex;align-items:center;justify-content:center;position:absolute;top:0;right:2px;height:47px;width:46px;color:var(--blau-dd);font-size:15px;cursor:pointer;transition:transform .2s;z-index:2;}
  body.navopen .navitem.has-sub.open > .nav-toggle{transform:rotate(180deg);}
  body.navopen .navitem.has-sub .submenu{display:none !important;padding-left:16px;}
  body.navopen .navitem.has-sub.open .submenu{display:block !important;}
  body.navopen .submenu a{white-space:normal !important;word-break:break-word;overflow-wrap:anywhere;}
}

@media(max-width:900px){body.navopen nav.main{box-sizing:border-box;max-width:100vw;overflow-x:hidden;}}/*panelbox*/


/* Live-Webcam YouTube-Embeds (16:9 responsiv) — additiv */
.webcam-frame{position:relative;width:100%;aspect-ratio:16/9;border-radius:12px;overflow:hidden;box-shadow:var(--shadow);background:#0a0a0a;}
.webcam-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;}
.webcam-cap{font-family:"Montserrat";font-weight:700;font-size:13px;color:var(--blau-dd);margin-top:8px;text-align:center;}


/* Social-Icon-Bar (Footer) — additiv */
.social-bar{display:flex;gap:9px;margin:8px 0 2px;}
footer.site .soc{width:38px;height:38px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:rgba(255,255,255,.12);color:#fff;transition:background .15s,color .15s;padding:0;flex:0 0 auto;}
footer.site .soc:hover{background:#fff;color:var(--blau-dd);}
footer.site .soc svg{width:19px;height:19px;}


/* Instagram-Grid (Home) — additiv */
.ig-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;}
.ig-tile{position:relative;aspect-ratio:1;background-size:cover;background-position:center;border-radius:10px;display:block;transition:transform .2s,box-shadow .2s;box-shadow:var(--shadow);}
.ig-tile:hover{transform:scale(1.03);box-shadow:0 8px 20px rgba(0,0,0,.18);}
.ig-tile .ig-ico{position:absolute;top:7px;right:9px;color:#fff;font-size:13px;opacity:.85;text-shadow:0 1px 3px rgba(0,0,0,.55);}
@media(max-width:760px){.ig-grid{grid-template-columns:repeat(3,1fr);}}
@media(max-width:420px){.ig-grid{grid-template-columns:repeat(2,1fr);}}

/* Tickets: Kategorie-Jump-Nav sticky beim Scrollen der Preistabellen */
#shopnav{position:sticky;top:56px;z-index:40;background:#fff;box-shadow:0 3px 12px rgba(0,0,0,.06);}
@media(max-width:900px){#shopnav{top:52px;}}


/* Mega-Footer (AREA47-inspiriert): granulare Kategorien + Partner-Strip — additiv */
footer.site .cols.mega{grid-template-columns:minmax(220px,1.5fr) repeat(4,minmax(115px,1fr));gap:22px 18px;}
footer.site .cols.mega .fcol-brand{max-width:none;}
@media(max-width:1000px){footer.site .cols.mega{grid-template-columns:1fr 1fr 1fr;}footer.site .cols.mega .fcol-brand{grid-column:1/-1;}}
@media(max-width:600px){footer.site .cols.mega{grid-template-columns:1fr 1fr;}}
.fpartners{display:flex;align-items:center;gap:14px 20px;flex-wrap:wrap;border-top:1px solid rgba(255,255,255,.12);padding-top:16px;margin-top:20px;}
.fp-lbl{font-family:"Montserrat";font-weight:700;font-size:11.5px;letter-spacing:1.2px;text-transform:uppercase;color:rgba(255,255,255,.6);}
.fp-strip{display:flex;gap:10px;flex-wrap:wrap;align-items:center;}
.fp{background:#fff;border-radius:10px;padding:6px 11px;display:inline-flex;align-items:center;justify-content:center;height:44px;box-shadow:0 2px 8px rgba(0,0,0,.15);}
.fp img{height:30px;width:auto;display:block;}

/* Tickets §density — sammelbare Sekundär-Tarife (native details) + Stat-Strip + Foto-Divider-Bänder */
.pl-fold{margin:14px 0 2px;border:1px solid rgba(20,40,60,.1);border-radius:14px;background:#fff;overflow:hidden;}
.pl-fold>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;padding:14px 16px;font-family:"Montserrat",system-ui,sans-serif;font-weight:700;font-size:14.5px;color:var(--blau-dd);user-select:none;}
.pl-fold>summary::-webkit-details-marker{display:none;}
.pl-fold>summary::after{content:"▾";margin-left:auto;font-size:13px;color:var(--blau);transition:transform .2s;}
.pl-fold[open]>summary::after{transform:rotate(180deg);}
.pl-fold>summary:hover{background:var(--hellblau-l);}
.pl-fold .pl-hint{font-weight:500;font-size:12px;color:var(--grau);letter-spacing:0;text-transform:none;}
.pl-foldbody{padding:2px 16px 14px;}
.pl-foldbody .pricelist{margin-top:2px;}
.tk-stats{display:flex;flex-wrap:wrap;gap:10px;margin:4px 0 6px;}
.tk-stat{flex:1 1 130px;background:#fff;border:1px solid rgba(20,40,60,.09);border-radius:14px;padding:14px 12px;text-align:center;}
.tk-stat b{display:block;font-family:"Montserrat",system-ui,sans-serif;font-size:26px;font-weight:800;color:var(--blau-dd);line-height:1;}
.tk-stat small{display:block;margin-top:6px;font-size:11.5px;color:var(--grau);text-transform:uppercase;letter-spacing:.04em;}
.tk-band{position:relative;height:132px;border-radius:16px;overflow:hidden;margin:26px 0 12px;background-size:cover;background-position:center;display:flex;align-items:flex-end;}
.tk-band::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,25,40,.15) 30%,rgba(10,25,40,.62));}
.tk-band h2{position:relative;z-index:1;margin:0;padding:0 22px 16px;color:#fff;font-size:26px;text-shadow:0 2px 14px rgba(0,0,0,.55);}
.tk-band .bsub{position:relative;z-index:1;margin-left:auto;padding:0 22px 18px;color:rgba(255,255,255,.9);font-size:12.5px;font-weight:600;font-family:"Montserrat",system-ui,sans-serif;align-self:flex-end;}
@media(max-width:600px){.tk-stat b{font-size:22px;}.tk-band{height:104px;}.tk-band h2{font-size:20px;}.tk-band .bsub{display:none;}}

/* Aktivitäten-Karten §AREA47-Format — Kurzbeschreibung + Meta (Level-Slider · Dauer · Alter) */
.act-desc{font-size:13.5px;color:var(--dunkel);margin:2px 0 9px;line-height:1.38;}
.act-meta{display:flex;flex-wrap:wrap;gap:7px 13px;align-items:center;margin:0 0 11px;}
.am-it{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;color:var(--grau);font-family:"Montserrat",system-ui,sans-serif;white-space:nowrap;}
.am-it svg{width:14px;height:14px;flex:none;opacity:.75;}
.am-diff{gap:7px;}
.am-bar{display:inline-flex;gap:3px;}
.am-seg{width:13px;height:5px;border-radius:3px;background:rgba(20,40,60,.13);}
.am-d1 .am-seg.on{background:var(--blau-d);}
.am-d2 .am-seg.on{background:#e0a53b;}
.am-d3 .am-seg.on{background:#c85a44;}
.am-k{color:var(--grau);}

/* Hirschi §Belebung (Variante C ohne Higgsfield) — dezente Idle-Bewegung der Maskottchen-Illustrationen + Hover-Reaktion, reduced-motion-sicher */
@media (prefers-reduced-motion:no-preference){
  .hpose,.hir-live{animation:hir-sway 4.6s ease-in-out infinite;transform-origin:50% 92%;will-change:transform;}
  .hpose:hover,.hir-live:hover{animation:hir-hop .6s ease;}
  .xs-hirschi{animation:hir-bob 3.4s ease-in-out infinite;transform-origin:50% 90%;}
  @keyframes hir-sway{0%,100%{transform:translateY(0) rotate(-1.3deg);}50%{transform:translateY(-7px) rotate(1.3deg);}}
  @keyframes hir-bob{0%,100%{transform:translateY(0);}50%{transform:translateY(-5px);}}
  @keyframes hir-hop{0%{transform:translateY(0) rotate(0);}35%{transform:translateY(-14px) rotate(-7deg);}65%{transform:translateY(0) rotate(5deg);}100%{transform:translateY(0) rotate(0);}}
}
@media (prefers-reduced-motion:reduce){
  .hirschi-fab,.hpose,.hir-live,.xs-hirschi{animation:none!important;}
}

/* Hirschi — echtes Higgsfield-Video (ersetzt statisches hir-live in der Buy-Card), runder Badge, reduced-motion-sicher */
.hir-anim{float:right;width:96px;height:96px;margin:-6px -4px 6px 10px;border-radius:50%;overflow:hidden;
  background:#fff;border:3px solid #fff;box-shadow:0 5px 16px rgba(20,40,60,.22);position:relative;}
.hir-anim-v,.hir-anim-s{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 44%;display:block;}
.hir-anim-s{display:none;}
@media (prefers-reduced-motion:reduce){.hir-anim-v{display:none;}.hir-anim-s{display:block;}}

/* Hirschi-Video-Sticker (hvid) — animierte Posen, ersetzt statische PNGs; reduced-motion → PNG-Fallback */
.hvid .hv-s{display:none;}
.hvid .hv-v{display:block;}
@media (prefers-reduced-motion:reduce){.hvid .hv-v{display:none;}.hvid .hv-s{display:block;}}

/* Reel-Video (Hochformat, echte Semmering-Clips) auf Aktivitätsseiten */
.act-reel{display:flex;gap:20px;align-items:center;margin:22px 0;flex-wrap:wrap;}
.ar-frame{position:relative;width:196px;flex:0 0 196px;aspect-ratio:9/16;border-radius:18px;overflow:hidden;
  box-shadow:0 12px 34px rgba(20,40,60,.24);background:#0a1522;border:3px solid #fff;}
.ar-frame video{width:100%;height:100%;object-fit:cover;display:block;}
.ar-cap{flex:1 1 220px;min-width:180px;}
.ar-cap .ar-lbl{font-family:'Montserrat',system-ui,sans-serif;font-weight:800;font-size:12px;letter-spacing:.07em;text-transform:uppercase;color:var(--blau-dd);}
.ar-cap p{font-size:15.5px;color:var(--dunkel);margin-top:7px;line-height:1.4;}
@media(max-width:560px){.act-reel{gap:14px;}.ar-frame{width:150px;flex-basis:150px;}}

/* Bikepark-Trail §Charakter/Für wen/Tipp (dunkle Welt) */
.trail-cwt{display:grid;gap:11px;margin:14px 0 18px;background:#16181c;border:1px solid #2a2e35;border-radius:14px;padding:16px 18px;}
.cwt-i{display:flex;gap:12px;align-items:flex-start;}
.cwt-ic{color:var(--orange,#f0743a);font-size:14px;line-height:1.7;flex:none;}
.cwt-l{display:block;font-family:"Montserrat",system-ui,sans-serif;font-weight:800;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#8b929c;}
.cwt-i p{color:#dfe3e8;font-size:15px;margin:2px 0 0;line-height:1.4;}
/* IG-Feed: Video-Kacheln (echte Reels, spielen beim Scrollen) */
.ig-tile.ig-vid{overflow:hidden;}
.ig-tile.ig-vid video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
.ig-tile.ig-vid .ig-ico{z-index:2;}

/* Preisrechner (Bergtag) */
.calc{max-width:520px;background:#fff;border-radius:16px;padding:16px 20px;box-shadow:var(--shadow);}
.calc-item{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--hellgrau);cursor:pointer;font-size:15px;color:var(--anthrazit);}
.calc-item input{width:18px;height:18px;accent-color:var(--blau);flex:none;cursor:pointer;}
.calc-item span{flex:1;}
.calc-item b{color:var(--blau-dd);font-family:"Montserrat",system-ui,sans-serif;white-space:nowrap;}
.calc-people{display:flex;align-items:center;gap:12px;padding:12px 0;font-family:"Montserrat",system-ui,sans-serif;font-weight:600;color:var(--anthrazit);}
.calc-people span{flex:1;}
.calc-people button{width:34px;height:34px;border-radius:50%;border:1.5px solid var(--blau);background:#fff;color:var(--blau-dd);font-size:19px;cursor:pointer;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .15s;}
.calc-people button:hover{background:var(--hellblau-l);}
.calc-people b{min-width:24px;text-align:center;font-size:17px;}
.calc-total{display:flex;align-items:center;justify-content:space-between;padding:14px 0 6px;border-top:2px solid var(--blau);font-family:"Montserrat",system-ui,sans-serif;font-size:15px;font-weight:600;color:var(--grau);}
.calc-total b{color:var(--blau-dd);font-size:26px;font-variant-numeric:tabular-nums;}
.calc-tip{font-size:13px;color:var(--grau);margin:6px 0 2px;line-height:1.4;}

/* FAQ-Suche */
.faq-search{width:100%;max-width:520px;padding:12px 16px;margin-bottom:8px;border:1.5px solid var(--hellblau);border-radius:12px;font-size:15px;font-family:inherit;color:var(--anthrazit);background:#fff;}
.faq-search:focus{outline:none;border-color:var(--blau);box-shadow:0 0 0 3px rgba(117,171,214,.25);}
.faq-nohit{color:var(--grau);font-size:14px;margin:4px 0 12px;}


/* Reel-Videos groesser auf Aktivitaeten (additive 2026-07-06) */
.ar-frame{width:300px;flex:0 0 300px;}
@media(max-width:560px){.ar-frame{width:240px;flex-basis:240px;}}


/* R-05: CTA-Kontrast WCAG AA (additive 2026-07-07) — Primary dunkler, weisser Text >4.5:1 */
.btn.primary{background:var(--blau-dd);}
.btn.primary:hover{background:var(--blau-deep);}


/* B3 Joooo (alle Varianten) zurueckgerollt 2026-07-07 auf Sasha-Wunsch */


/* R-16: Focus-Ring non-text Kontrast (WCAG 1.4.11) --blau-dd (additive 2026-07-07) */
:focus-visible{outline-color:var(--blau-dd)}
.pc-track:focus-visible,.wk-day.today{outline-color:var(--blau-dd)}
.faq-search:focus{border-color:var(--blau-dd)}

/* R-26: Tap-Target DE/EN-Umschalter >=24px mobil (WCAG 2.5.8, additive 2026-07-07) */
@media(max-width:640px){.lang-toggle span{padding:7px 11px;font-size:12px;min-height:24px;display:inline-flex;align-items:center}}


/* Аудит консистентности 2026-07-07 (safe-auto) */
h1.title{font-size:34px;font-weight:800;letter-spacing:-.5px}
@media(max-width:600px){h1.title{font-size:26px}}
.pkg-price{font-family:'Montserrat',sans-serif;font-weight:800;font-size:clamp(22px,5vw,34px);line-height:1.1;margin:6px 0}
.dl-ic:empty{min-height:24px}
@media(max-width:600px){.tk-band .bsub{display:block;flex-basis:100%;font-size:11.5px;margin-left:0}}

/* Аудит a11y/UX 2026-07-08 (доработка до 10/10) */
.pl-seg small{color:#5b6470}                            /* контраст подписей цен ≥4.5:1 (был #8494a3) */
#shopnav{top:70px}                                      /* подшапка не заезжает под sticky-header (h=70) */
@media(max-width:900px){#shopnav{top:70px}}
div.exp-card{cursor:default}                            /* нессылочные инфо-карточки; a.exp-card сохраняет pointer */
@media(max-width:900px){footer.site a{padding:8px 0}}   /* tap-таргеты футера комфортнее */
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.season-toggle span.on{animation:none}.aud-spot{animation:none}}

/* R-16: Fokus-Ring-Kontrast — dunkleres Blau (#33617f ~4.7:1 auf Weiss statt #75abd6 ~1.9:1); additiv, longhand nach shorthand gewinnt */
:focus-visible{outline-color:#33617f}
.pc-track:focus-visible{outline-color:#33617f}

/* Pakete-Teaser (cross-page) — R7 */
.pkt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px;margin-top:8px}
.pkt-sub{color:var(--grau);font-size:14.5px;max-width:62ch;margin:2px 0 4px}
.pkm{display:block;background:#fff;border:1px solid var(--hellgrau);border-radius:14px;overflow:hidden;box-shadow:var(--shadow);text-decoration:none;color:inherit;position:relative;transition:transform .15s,box-shadow .15s}
.pkm:hover{transform:translateY(-3px);box-shadow:0 10px 28px rgba(20,40,60,.14)}
.pkm::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--rail);z-index:1}
.pkm-img{height:118px;overflow:hidden}
.pkm-img img{width:100%;height:100%;object-fit:cover;display:block}
.pkm-b{padding:11px 13px 13px}
.pkm-badge{display:inline-block;color:#fff;font-size:11px;font-weight:800;border-radius:999px;padding:2px 9px;margin-bottom:5px}
.pkm-name{font-family:Montserrat,sans-serif;font-weight:700;font-size:14px;line-height:1.22;color:var(--anthrazit)}
.pkm-price{font-family:Montserrat,sans-serif;font-weight:800;font-size:18px;color:var(--blau-dd);margin-top:3px}

/* === All-In 3-in-1 Bundle (tickets.html #allin) === */
.ab-bundle{display:flex;flex-wrap:wrap;align-items:stretch;gap:10px;margin-top:6px}
.ab-tile{flex:1 1 128px;min-width:118px;background:var(--beige-l);border:1px solid var(--hellgrau);border-radius:14px;padding:16px 12px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px}
.ab-ic{display:inline-flex;align-items:center;justify-content:center;width:54px;height:54px;border-radius:50%;background:#fff;box-shadow:var(--shadow);color:var(--blau-dd)}
.ab-ic svg.ic{width:30px;height:30px}
.ab-tile b{font-family:Montserrat,sans-serif;font-size:15px;color:var(--anthrazit);line-height:1.2}
.ab-tile small{font-size:12.5px;color:var(--grau);line-height:1.35}
.ab-op{display:flex;align-items:center;justify-content:center;font-family:Montserrat,sans-serif;font-weight:800;font-size:26px;color:var(--blau-d);flex:0 0 auto;padding:0 2px}
.ab-deal{flex:1 1 196px;min-width:184px;background:linear-gradient(135deg,var(--blau-deep),var(--blau-dd));color:#fff;border-radius:16px;padding:18px 18px 16px;display:flex;flex-direction:column;align-items:flex-start;gap:2px;box-shadow:var(--shadow)}
.ab-badge{background:#ffd84d;color:#3a2c00;font-family:Montserrat,sans-serif;font-weight:800;font-size:12px;border-radius:999px;padding:3px 11px;margin-bottom:6px}
.ab-deal-nm{font-family:Montserrat,sans-serif;font-weight:800;font-size:18px}
.ab-price{display:flex;align-items:baseline;gap:6px}
.ab-price b{font-family:Montserrat,sans-serif;font-weight:800;font-size:34px;line-height:1}
.ab-price span{font-size:14px;opacity:.9}
.ab-sub{font-size:13px;opacity:.93}
.ab-sub s{opacity:.8}
.ab-deal .btn.primary{background:#fff;color:var(--blau-dd);border-color:#fff}
.ab-deal .btn.primary:hover{background:#eaf2f9}
@media(max-width:640px){
  .ab-bundle{flex-direction:column}
  .ab-tile,.ab-deal{flex:1 1 auto;width:100%}
  .ab-tile{flex-direction:row;justify-content:flex-start;text-align:left;gap:12px}
  .ab-op{transform:rotate(90deg);font-size:22px;padding:2px 0;align-self:center}
}

/* === Reviews wall (Google-Bewertungen, mehrsprachig) === */
.rev-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(258px,1fr));gap:14px;margin-top:6px}
.rev-card{background:#fff;border:1px solid var(--hellgrau);border-radius:14px;padding:15px 17px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:8px;margin:0}
.rev-stars{color:#e8a72c;font-size:14px;letter-spacing:3px;line-height:1}
.rev-text{margin:0;font-size:14.5px;line-height:1.5;color:var(--dunkel);font-style:italic}
.rev-text::before{content:"„"}.rev-text::after{content:"\201C"}
.rev-meta{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--anthrazit);margin-top:auto}
.rev-meta b{font-weight:700}
.rev-lang{margin-left:auto;background:#e8eff4;color:#33617f;font-size:11px;font-weight:800;border-radius:999px;padding:2px 9px;letter-spacing:.5px}
@media (prefers-color-scheme:dark){}

/* === a11y: футер-заголовки колонок h4→h2 (порядок уровней), вид сохранён === */
footer.site .fh{color:#fff;font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:1px;margin:0 0 14px;line-height:1.2}

/* audit 09.07: SVG-погода вместо эмодзи-глифов на live */
.wk-ico .wk-svg{width:32px;height:32px;color:var(--blau-dd);display:inline-block}
.wk-day.today .wk-ico .wk-svg{color:#fff}

/* audit: neutral price text не 30px-огромным */
.exp-card .price:has(.t-d){font-size:18px;font-weight:700;color:var(--blau-dd)}

/* #res (grandview): тёмно-синяя рамка вокруг карточки резервации — вместо позиционного светло-голубого */
#res{background:var(--lichten)}

/* audit-legal: юр-страницы — премиум-читаемость вместо «сырого Word» (визуал-аудит P0) */
body.legal{background:#faf8f4}
body.legal main>.sec{padding-top:0}
body.legal .sec>.wrap{max-width:760px}
body.legal .eyebrow{color:var(--blau-dd);letter-spacing:.16em;font-size:12px}
body.legal h1.title{font-size:42px;line-height:1.12;margin:6px 0 6px;color:var(--anthrazit,#1e2a38)}
body.legal .lead{font-size:17px;line-height:1.6;color:var(--dunkel);margin-bottom:8px}
body.legal .sec p{font-size:16px;line-height:1.7;margin:0 0 18px;color:#2a2f36}
body.legal .sec h2{font-size:23px!important;font-weight:700;margin:44px 0 12px;padding-top:22px;border-top:1px solid var(--line,#e5e2dc);color:var(--blau-dd)}
body.legal .sec h2:first-of-type{border-top:none;padding-top:0;margin-top:22px}
body.legal .sec ul,body.legal .sec ol{line-height:1.7;margin:0 0 18px}
@media(max-width:520px){body.legal h1.title{font-size:31px}body.legal .sec p{font-size:15.5px}body.legal .sec h2{font-size:20px!important;margin-top:34px}}

/* audit-visual-2: премиум-микро глобально (визуал-аудит: eyebrow-акцент 35стр, контраст 53стр, карточки-hover 58стр) */
:root{--dunkel:#3a4048}
.eyebrow{text-transform:uppercase;letter-spacing:.14em;font-weight:800;font-size:12.5px}
.exp-card{transition:transform .18s ease,box-shadow .18s ease}
.exp-card:hover{transform:translateY(-3px);box-shadow:0 12px 32px rgba(20,40,60,.15)}

/* audit-visual-4: премиум-детали глобально (eyebrow-штрих, воздух под заголовками секций) */
.eyebrow::before{content:"";display:inline-block;width:22px;height:2px;background:currentColor;opacity:.5;border-radius:2px;vertical-align:middle;margin-right:9px}
.sec>.wrap>.title,.sec-sm>.wrap>.title{margin-bottom:12px}
.sec .lead,.sec-sm .lead{margin-bottom:16px;line-height:1.55}

/* audit-visual-5: определение карточек + ритм секций (визуал-аудит карточки-58/ритм-55) */
.exp-card{border:1px solid rgba(30,45,60,.07)}
.sec{padding:72px 0}
.sec-sm{padding:46px 0}

/* audit-visual-6: типо-шкала (открытее) + футер-когезия */
.sec>.wrap>.title,.sec-sm>.wrap>.title{font-size:37px;line-height:1.14}
@media(max-width:520px){.sec>.wrap>.title,.sec-sm>.wrap>.title{font-size:27px}}
footer.site{padding:62px 0 30px}
footer.site .cols{gap:26px 40px}
footer.site h4{font-size:12.5px;letter-spacing:.14em;color:#e9edf1;margin-bottom:16px}
footer.site a{padding:5px 0}
footer.site .fpartners{margin-top:26px;padding-top:22px;border-top:1px solid rgba(255,255,255,.09)}

/* ================= REVIEW-FIX BLOCK — Google-Doc(14) + 10-Punkte-Feedback · 09.07 ================= */
/* doc#2 — Berg-Divider vorerst auf Original (100% 100%) zurück: cover/100%-auto haben die Kette
   „zerbrochen". Saubere Lösung mit echtem Brand-„Berge"-Element (GRAPHICS) folgt mit Medien-Session. */
.hero::after{background-size:100% 100%!important;background-position:bottom!important}

/* doc#4 — Hero-Video hat z-index:1, der alte .bg::after-Scrim liegt darunter → Text kontrastarm.
   Scrim über das Video (im z2-Stacking-Context der .wrap, hinter dem Text) legen. */
.hero:has(.hero-video) .wrap::before{content:"";position:absolute;z-index:-1;left:-60vw;right:-60vw;top:-45vh;bottom:-200px;pointer-events:none;
  background:linear-gradient(to top,rgba(6,14,24,.60) 0%,rgba(6,14,24,.30) 26%,rgba(6,14,24,.08) 42%,rgba(6,14,24,0) 58%);}

/* 10pt#5 — dritte Hero-CTA als dezenter Text-Link (Primary=Tickets, Secondary=Aktivitäten, Tertiär=Live) */
.hero .cta-live{align-self:center;color:#fff;font-family:'Montserrat';font-weight:700;font-size:14px;text-decoration:none;opacity:.94;
  padding:6px 2px;border-bottom:1.5px solid rgba(255,255,255,.5);text-shadow:0 1px 10px rgba(8,16,26,.6);white-space:nowrap}
.hero .cta-live:hover{opacity:1;border-bottom-color:#fff}

/* doc#7 — Hirschi im All-In-Kreis vertikal zentrieren (war 50% 44%) */
.hir-anim .hir-anim-v,.hir-anim .hir-anim-s{object-position:50% 50%!important}

/* 10pt#6 — „Heute am Semmering" als kompaktes 2-Spalten-Karten-Raster statt langer 8-Zeilen-Liste */
.heute-list{display:grid!important;grid-template-columns:1fr 1fr;gap:12px}
.heute-list li{flex-direction:column;align-items:flex-start!important;gap:7px;padding:13px 14px!important;
  border:1px solid var(--hellgrau)!important;border-radius:12px;background:#fbfdff}
.heute-list li>a{display:flex;align-items:center;flex-wrap:wrap;gap:6px;width:100%}
@media(max-width:720px){.heute-list{grid-template-columns:1fr}}

/* doc#6/#8/#11 — Bildrahmen von schmal-horizontal (fixe Höhe) auf füllbare Seitenverhältnisse.
   16:9 skaliert mit der Kartenbreite → jedes Foto lässt sich sauber beschneiden. */
.exp-card .ph{height:auto!important;aspect-ratio:16/9}
.actc .ph{height:auto!important;aspect-ratio:16/9}
.pkm-img{height:auto!important;aspect-ratio:3/2}
.pkm-img img{width:100%;height:100%;object-fit:cover}

/* doc#14 — .cta-row-Gap galt nur unter .hero → auf .bp-hero u.a. klebten die Buttons. Generisch setzen. */
.cta-row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}

/* doc#10 — Akkordeon-Titel: Icon+Titel+Pfeil als 3 Flex-Items bei space-between → Titel wirkte zentriert.
   Titel links neben das Icon, Pfeil nach rechts. */
.accordion .ac h4{justify-content:flex-start!important;gap:9px}
.accordion .ac h4 .arr{margin-left:auto}

/* doc#12 — Kartentitel über Foto: Grau-Verlauf war zu schwach → Text kontrastarm. Verlauf + Schatten verstärken. */
.exp-card .ph::before{height:80%!important;background:linear-gradient(to top,rgba(8,16,28,.88),rgba(8,16,28,.42) 46%,rgba(8,16,28,0))!important}
.exp-card .ph{text-shadow:0 1px 6px rgba(0,0,0,.62)!important}

/* doc#7 — Hirschi im Chat-FAB-Kreis vertikal etwas höher zentrieren */
/* #7/#721 — Hirschi im Kreis vertikal zentriert (war 50% 40% → Kinn/Schal abgeschnitten) */
.hirschi-fab .hir-anim-v,.hirschi-fab .hir-anim-s{object-position:50% 50%!important}

/* doc#13 — Footer-Bottom: Inline-„·"-Trenner verrutschten beim Umbruch → sauberes Flex-Wrap mit ::before-Trenner. */
.legal-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
.legal-row a{color:inherit;text-decoration:underline;padding:0}
.legal-row>a::before{content:"·";opacity:.5;margin-right:8px;text-decoration:none;display:inline-block}

/* doc#1/#9 — Brand-Manual: Hero = „Semmering Blau" #75abd6. Dunkle UI-Balken (#33617f = grau-teal)
   und das Liechtensteinhaus-Theme (#1f3d50 = lila-navy, falscher Farbton) auf ein sattes
   Dunkel-Semmering-Blau (Ableitung aus #75abd6) vereinheitlichen. */
:root{--lichten:#26506f}  /* S4: dunkel-Semmering-Blau (hue~205) — используется только #res на grandview */
.livebar2,.notif{background:#3a6a93!important}


/* ============ MOBILE-AUDIT BATCH 1 (Sasha 09.07 Nacht) ============ */
/* #647/#657 — Text über Foto: kräftiger dunkler Halo → Weiß auf jedem Bild lesbar */
.exp-card .ph,.exp-card .ph .t-d,.exp-card .ph .t-e{color:#fff!important;text-shadow:0 1px 3px rgba(0,0,0,.92),0 2px 14px rgba(0,0,0,.75)!important}
.exp-card .ph::before{height:90%!important;background:linear-gradient(to top,rgba(6,12,22,.90),rgba(6,12,22,.45) 46%,rgba(6,12,22,0))!important}

/* #646/#659 — Hochkant-Reels (9:16) auf Mobile deutlich breiter statt schmal-zentriert */
@media(max-width:560px){
  .act-reel{flex-direction:column;gap:12px}
  .ar-frame{width:min(86vw,340px)!important;flex-basis:auto!important;margin:0 auto}
}

/* #653 — Live-Status-Chips auf Mobile in EINER Reihe (horizontal scroll) statt Umbruch */
@media(max-width:640px){
  .lb-status{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:3px;-ms-overflow-style:none;scrollbar-width:none}
  .lb-status::-webkit-scrollbar{display:none}
  .lb-status .lb-chip,.lb-status .lb-all{flex:0 0 auto}
}

/* ============ АВТ Ф1 — системные корни (Sasha mobile-audit) ============ */
/* #661/#674 — кнопки никогда не касаются: gap для любых flex-рядов с 2+ кнопками (inline-style с gap перебьёт, где задан) */
[style*="display:flex"]:has(> .btn + .btn){gap:12px 12px}
[style*="display:flex"]:has(> .btn + a),[style*="display:flex"]:has(> a.btn){gap:12px 12px}
.cta-row,.btn-row,.actions{gap:12px 12px;flex-wrap:wrap}
.btn{margin:0}

/* #696 — скрим для ВСЕХ видео-hero (не только главная): читаемость белого текста */
.hero:has(video) .wrap::before,.bp-hero:has(video) .wrap::before{content:"";position:absolute;z-index:-1;left:-60vw;right:-60vw;top:-45vh;bottom:-200px;pointer-events:none;
  background:linear-gradient(to top,rgba(6,14,24,.60) 0%,rgba(6,14,24,.30) 26%,rgba(6,14,24,.08) 42%,rgba(6,14,24,0) 58%)}
.bp-hero .wrap{position:relative;z-index:2}

/* #677 — Animierte Hirschi entfernt → relevante Statik (Poster). TZ für Ilya (klasse Animation + Platzierungs-Liste) separat. */
.hir-anim-v{display:none!important}
.hir-anim-s{display:block!important}
.hvid .hv-v{display:none!important}
.hvid .hv-s{display:block!important}

/* #647/#650a/#683 KORREKTUR — nth-of-type-Zebra überschrieb dunkle Self-Styled-Sections (xseason-cta) → weißer Text unsichtbar. Erzwingen. */
.xseason-cta{background:linear-gradient(135deg,var(--blau-dd),var(--blau-deep))!important;color:#fff!important}
.xseason-cta .xs-txt b,.xseason-cta .xs-txt span{color:#fff!important}

/* #647 verstärkt — Kartentitel auf Foto GARANTIERT lesbar (voller dunkler Bottom-Verlauf + starker Schatten) */
.exp-card .ph::before{height:100%!important;background:linear-gradient(to top,rgba(4,10,18,.94) 0%,rgba(4,10,18,.52) 34%,rgba(4,10,18,.12) 62%,rgba(4,10,18,0) 82%)!important}
.exp-card .ph,.exp-card .ph .t-d,.exp-card .ph .t-e{color:#fff!important;text-shadow:0 1px 4px rgba(0,0,0,.95),0 2px 16px rgba(0,0,0,.82)!important}

/* #647 ECHTE URSACHE — Verlauf-::before lag ÜBER dem Titel (Titel=Flex-Content ohne z-index) → Text gedimmt. Titel über den Verlauf heben. */
.exp-card .ph::before{z-index:1!important}
.exp-card .ph>.t-d,.exp-card .ph>.t-e,.exp-card .ph>span:not(.badge){position:relative;z-index:2}

/* #668/#670/#681 — Spacing-System: Sektions-Abstände auf Mobile straffen (72px×2=144px war „Abgrund"). Einheitlicher Rhythmus. */
@media(max-width:760px){
  .sec{padding:38px 0!important}
  .sec-sm{padding:26px 0!important}
  .bp-section{padding:34px 0!important}
    .wrap{padding:0 16px}
  .sec>.wrap>.title,.sec-sm>.wrap>.title{margin-bottom:12px}
  .sec>.wrap>.lead,.sec-sm>.wrap>.lead{margin-bottom:14px}
}
@media(max-width:480px){
  .sec{padding:30px 0!important}
  .sec-sm{padding:22px 0!important}
}

/* #656/#669/#671/#695 — Typo-Hierarchie & unzertrennliche Einheiten */
@media(max-width:760px){
  .lead{font-size:16.5px;line-height:1.55;color:var(--dunkel)}
  .hero .sub{font-size:16.5px;line-height:1.5}
  .bp-hero .sub{font-size:15.5px}
  h2.title{letter-spacing:-.3px;line-height:1.12}
  .split .txt h3,.newsletter h3{font-size:22px}
  p{line-height:1.6}
}
/* Zahlen+Einheit nie umbrechen (Preise, Höhen, Stats) */
.price,.stats .n,.tc-val,.bp-stats .n,.booking-card .price,.buy-card .price,.stat-n,.fact-n{white-space:nowrap}

/* #664/#717 — auf saison-fixen Seiten (data-season) den Saison-Umschalter ausblenden: eine Winterseite in „Sommer" schalten ergäbe leeren Inhalt. Navigation via Mega-Menü. */
body[data-season] .season-toggle{display:none!important}

/* #687 — Grid-Orphans auf Mobile zentrieren: einzelnes Element in letzter 2-Spalten-Reihe (ungerade Anzahl) mittig statt links. Nur Karten-/Stat-Grids (nicht Formulare). */
@media(max-width:767px){
  .cardgrid>*:last-child:nth-child(odd),
  .cardgrid.c4>*:last-child:nth-child(odd),
  .reviews>*:last-child:nth-child(odd),
  .principle>*:last-child:nth-child(odd),
  .trailcards>*:last-child:nth-child(odd),
  .stats>*:last-child:nth-child(odd),
  .bp-stats>*:last-child:nth-child(odd),
  }

/* #645 — Sommerfrische/Temp-Vergleich auf Mobile kompakter (Widget war zu groß) */
@media(max-width:640px){
  .tc-card{padding:9px 10px 8px;border-radius:11px}
  .tc-val{font-size:23px!important;margin:1px 0 3px}
  .tc-bar{height:34px;width:9px}
  .tc-city{font-size:12.5px}
  .tc-city span{font-size:10px}
  .tc-note{font-size:10px;margin-top:3px}
  .tc-delta{min-width:46px}
  .tc-delta b{font-size:15px;padding:5px 7px}
  .tempcmp{gap:7px}
}

/* #716 — dynamischer All-In-Nudge im Preisrechner */
.calc-nudge{margin-top:10px;padding:12px 14px;border-radius:13px;background:linear-gradient(135deg,var(--blau-dd),var(--blau));color:#fff;font-size:13.5px;line-height:1.45;box-shadow:var(--shadow);animation:mo-nudge .3s ease}
.calc-nudge a{color:#fff;font-weight:800;text-decoration:underline;white-space:nowrap}
@keyframes mo-nudge{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* #651 — kompakter Header beim Herunterscrollen (voll beim Hochscrollen). Graceful: ohne JS bleibt der Header normal. */
header.site .wrap{transition:height .25s ease}
header.site .logo{transition:font-size .22s ease}
@media(prefers-reduced-motion:reduce){header.site .wrap,header.site .logo{transition:none}}
body.hdr-compact header.site .wrap{height:52px}
body.hdr-compact header.site .logo{font-size:18px}
body.hdr-compact header.site{box-shadow:0 3px 14px rgba(10,25,45,.10)}

/* ── FIX 10.07 (мобайл grid-track overflow): .heute-grid/.heute-list трек «1fr» имеет неявный auto-минимум (min-content) — неразрывный контент распирал трек до 532px в контейнере 358px, правая часть карточек (buy-card: цена/CTA) обрезалась на 390px (doc scrollWidth=390, не скроллилось). minmax(0,1fr) снимает минимум; min-width:0 даёт flex/grid-детям ужиматься. Только мобайл, десктоп не тронут. ── */
@media(max-width:900px){.heute-grid{grid-template-columns:minmax(0,1fr);}}
@media(max-width:720px){.heute-list{grid-template-columns:minmax(0,1fr);}}
.heute-grid>*,.heute-list>li,.heute-list li>a{min-width:0;}

/* #698 — иммерсивные «главы» (.chapter) + плейсхолдер-слоты «Foto folgt» (.photoslot): финальная структура строится до прихода всех фото; где фото нет — аккуратный слот, а не пустота. picture-aware (webpify оборачивает img в picture). */
.chapter{display:grid;grid-template-columns:1fr 1fr;gap:0;border-radius:18px;overflow:hidden;box-shadow:var(--shadow);background:#fff;margin:20px 0}
.chapter.rev .chapter-media{order:2}
.chapter-media{position:relative;min-height:360px;background:var(--hellblau-l)}
.chapter-media>img,.chapter-media>picture,.chapter-media>.photoslot{position:absolute;inset:0;width:100%;height:100%}
.chapter-media img{width:100%;height:100%;object-fit:cover;display:block}
.chapter-text{padding:32px 38px;display:flex;flex-direction:column;justify-content:center}
.chapter-text h3{color:var(--blau-dd);font-size:25px;margin:5px 0 10px;text-transform:none;letter-spacing:0}
.chapter .chapter-text h3{color:var(--blau-dd)}
.chapter .chapter-text .eyebrow{color:var(--blau-dd)}
.chapter .chapter-text p,.chapter .chapter-text .season-note{color:var(--dunkel)}
.chapter-gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:18px}
.chapter-gallery>a,.chapter-gallery>.photoslot{aspect-ratio:4/3;border-radius:10px;overflow:hidden;display:block;position:relative}
.chapter-gallery>a>picture{display:block;width:100%;height:100%}
.chapter-gallery img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s ease}
.chapter-gallery>a:hover img{transform:scale(1.06)}
.photoslot{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;padding:8px;color:var(--blau-dd);border:1px dashed var(--blau);background:repeating-linear-gradient(135deg,var(--hellblau-l),var(--hellblau-l) 11px,#e7eff8 11px,#e7eff8 22px)}
.photoslot .ps-tx{font-family:'Montserrat';font-weight:700;font-size:10.5px;letter-spacing:1px;text-transform:uppercase;opacity:.82;line-height:1.3}
@media(max-width:768px){.chapter{grid-template-columns:1fr}.chapter.rev .chapter-media{order:0}.chapter-media{min-height:220px}.chapter-text{padding:22px 20px}.chapter-gallery{grid-template-columns:repeat(3,1fr)}}

/* #651 — notif+header в одном залипающем стеке (.topstack); промо-слоган из бывшего livebar2 влит в notif (.nf-mood). Раньше sticky был на header.site — перенесён на .topstack, чтобы статус-полоса тоже залипала. */
html,body{overflow-x:clip}  /* #651: было overflow-x:hidden — оно создаёт scroll-контейнер и ломает position:sticky; clip клипает без этого побочного эффекта */
.topstack{position:sticky;top:0;z-index:60}
header.site{position:static}
.notif .wrap:has(.nf-mood){height:auto;padding-top:5px;padding-bottom:6px}
.nf-mood{width:100%;font-family:'Montserrat';font-weight:700;font-size:14px;line-height:1.3;color:#fff;margin:0;display:flex;align-items:center;gap:8px;text-decoration:none}
.nf-mood svg{flex:none;opacity:.95}
.nf-mood .nfm-arw{opacity:.8}
.nf-mood:hover{opacity:.92}
@media(max-width:768px){.nf-mood{font-size:13px}}
body.hdr-compact .nf-mood{display:none}  /* #651: при скролле вниз прячем промо-слоган — залипающий бар компактится (богатый вверху, тонкий при скролле) */

/* ═══ #fix-price-overflow — цена вылезала за пределы .buy-card ═══
   Причина: .price{white-space:nowrap} (строка «Zahlen nie umbrechen») + маскот
   float:right;width:150px → доступная ширина ~277px, а строка 34px её не переносила.
   Решение: цена как стек (was / now+kid / note), clear:right под маскотом. */
.buy-card .price.price-stack{white-space:normal;clear:right;line-height:1.15}
.price-stack .p-was{display:block;font-size:15px;font-weight:400;opacity:.55;text-decoration:line-through;margin-bottom:2px}
.price-stack .p-row{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.price-stack .p-now{font-size:34px;font-weight:800;white-space:nowrap}
.price-stack .p-kid{font-size:16px;font-weight:600;opacity:.88;white-space:nowrap}
.price-stack .p-note{display:block;font-size:13.5px;font-weight:400;opacity:.85;margin-top:5px}
@media(max-width:520px){.price-stack .p-now{font-size:30px}}

/* ═══ #fix-heute-cards — карточки «Heute am Semmering» рвались на 3 строки ═══
   Причина: имя+описание+бейдж+стрелка лежали в одном flex-wrap ряду → при длинном
   названии («Millenniumswarte & Millennium Jump») бейдж и → уезжали вниз, тире
   («— Plattform…») открывало строку. Теперь 2 ряда: имя сверху на всю ширину,
   описание+бейдж+стрелка снизу (бейдж в верхнем ряду наезжал на «Liechtensteinhaus»). */
.heute-list li>a.he-a{display:flex;flex-direction:column;gap:6px;width:100%}
.he-top{display:flex;align-items:flex-start;gap:6px;width:100%}
.he-top .he-ic{align-self:flex-start;margin-top:0}
.he-top .stat{align-self:flex-start;margin-top:7px;flex:0 0 9px}
.he-top b{flex:1 1 auto;min-width:0;line-height:1.28;overflow-wrap:break-word}  /* без hyphens:auto — рвал «Mill-ennium» */
.he-bot{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;
  font-size:14px;font-weight:400;color:#5b6b78;line-height:1.35}
.he-txt{min-width:0}
.he-r{display:flex;align-items:center;gap:9px;flex:0 0 auto}
.he-r .tag-ev{margin-left:0}
.he-arw{color:var(--blau-dd);flex:0 0 auto;font-weight:700}
.heute-list li{justify-content:flex-start}

/* ═══ #fix-nav-caret — каретка ▾ слипалась с буквой: «Sommeŕ», «Winteŕ», «Hoteĺ» ═══
   Причина: nav.main a{padding:6px 2px} (специфичность 0,1,2) перебивало
   .navitem>a{padding-right:15px} (0,1,1) → фактический отступ 2px, а ::after сидит right:0.
   Поднимаем специфичность + чуть увеличиваем глиф (9px читался как обрубок буквы). */
nav.main .navitem>a{padding-right:17px}
nav.main .navitem>a::after{font-size:10px;opacity:.5;right:2px}

/* ═══ #fix-hirschi-overlap — маскот-FAB накрывал кликабельную ссылку в hero ═══
   Мобайл: .hirschi{fixed;bottom:12px;left:12px} + 68px FAB → верх на 80px от низа экрана,
   и на первом экране он ложился на .cta-live («Heute geöffnet · Live-Infos →») + .geo-pos.
   padding-bottom не помогает: hero растёт вместе с ним, текст остаётся у низа.
   Решение: на мобильном FAB не показывается поверх hero — появляется после начала скролла. */
@media(max-width:720px){
  .hirschi{transition:opacity .28s ease,transform .28s ease}
  .hirschi.fab-off{opacity:0;transform:translateY(16px) scale(.92);pointer-events:none}
}

/* ═══ #fix-tiny-price-labels — подписи цен были 9px (нечитаемо на телефоне) ═══
   .pl-seg small — «ERWACHSENE / JUGEND/SEN. / KINDER» над ценой, uppercase 9px.
   Минимум для uppercase-caption ~11px; letter-spacing чуть уже, чтобы 3 сегмента
   по-прежнему влезали в ряд на 390px. */
.pl-seg small{font-size:11px;letter-spacing:.02em}

/* ═══ #fix-tkband-mobile — «Berg · Cart · Waldseilgarten» лип к «Sommer-Preisliste 2026» ═══
   ≤600px правило 1310 возвращало .bsub (display:block;flex-basis:100%), но .tk-band —
   flex БЕЗ wrap и с фиксированной height:104px → подпись не переносилась под заголовок,
   а вставала вплотную справа. Даём перенос и высоту по контенту. */
@media(max-width:600px){
  .tk-band{flex-wrap:wrap;align-content:flex-end;height:auto;min-height:104px}
  .tk-band h2{flex:0 0 100%;padding-bottom:4px}
  .tk-band .bsub{flex:0 0 100%;margin-left:0;padding:0 22px 14px;align-self:auto}
}

/* ═══ #fix-cardgrid-price-baseline — цены в «Beliebteste Tickets» плясали по вертикали ═══
   .exp-card .body — обычный блок, поэтому .price сидела сразу под описанием: карточка
   с длинным текстом (All-In, 3 строки) опускала цену, короткая («18 km, alle Trails.»)
   поднимала. В ряду три цены оказывались на трёх разных уровнях.
   Прижимаем цену к низу карточки — цены выстраиваются по одной линии. */
.cardgrid .exp-card{display:flex;flex-direction:column}
.cardgrid .exp-card .body{display:flex;flex-direction:column;flex:1 1 auto}
.cardgrid .exp-card .body .price{margin-top:auto;padding-top:8px}

/* ═══ #fix-actcard-more-baseline — «Mehr →» плясал по вертикали ═══
   Карточки активностей: у «Goldwaschanlage» нет мета-строки (сложность/время/возраст),
   поэтому её «Mehr →» вставал на 86px выше соседей в ряду. Прижимаем к низу карточки. */
.cardgrid .exp-card .body .actc-more{margin-top:auto;padding-top:10px}

/* ═══ #fix-roomcard-cta-baseline — кнопки «Preis & Verfügbarkeit» не на одной линии ═══
   Карточки комнат (hotel): у «Doppelzimmer Superior» описание на строку длиннее,
   поэтому CTA опускалась на 23px ниже соседних. Inline style="margin-top:8px" бил
   любое CSS-правило → в gen_hotel_v2 заменён на класс .room-cta. */
.cardgrid .exp-card .body > .room-cta{margin-top:auto}

/* ═══ #fix-card-baseline-global — рваный низ карточек на 8 страницах ═══
   Замер (getBoundingClientRect по рядам): разброс низа последнего элемента
   до 146px на pakete, 123px на aktivitaeten, 22–63px на hotel/wellness/sommer/winter/lichten.
   Причина одна: карточки-плитки растянуты в grid (stretch), но внутри — обычный поток,
   поэтому CTA/цена/«Mehr →» садятся сразу под текстом разной длины.
   Прижимаем последний интерактивный элемент к низу. Если последним идёт абзац
   описания — правило не срабатывает (:is), дыры не будет. */
.cardgrid .exp-card,.actgrid .exp-card{display:flex;flex-direction:column}
.cardgrid .exp-card .body,.actgrid .exp-card .body{display:flex;flex-direction:column;flex:1 1 auto}
.cardgrid .exp-card .body > :last-child:is(a,span,.price,.btn),
.actgrid  .exp-card .body > :last-child:is(a,span,.price,.btn){margin-top:auto;padding-top:10px}
/* пакеты: .pk-card уже flex-column, не хватало только прижатия CTA */
.pk-grid .pk-card{display:flex;flex-direction:column}
.pk-grid .pk-card .pk-cta{margin-top:auto}

/* ═══ #fix-trailgroup-contrast — названия групп трейлов тонули на тёмном фоне ═══
   #trails на var(--bikedark-2)=#22262c. h2 забелены (.bp-section h2{color:#fff}),
   а h3 наследовали глобальный h3{color:var(--anthrazit)=#312e2b} → контраст 1.13:1,
   «Family & Einsteiger / Medium / Advanced / Jump & Airbag / Pro» почти невидимы.
   Целим строго в #trails (светлая #tickets в той же .bp-section не трогается). */
.bp-section#trails h3{color:#fff}

/* ═══ #fix-formgrid-mobile — форма запроса на 360px: 2 колонки по 130px, поля разъезжаются ═══
   .formgrid держит 1fr 1fr до 900px и НЕ спускается до 1 колонки (в отличие от .cardgrid,
   у которой есть правило ≤540px). На 360px это 130px-поля, а из-за многострочных label
   («Gruppentyp (Schule, Firma, Bus …)» = 3 строки) парные input встают на разной высоте.
   Прямой конверсионный элемент — одна колонка на узких экранах. */
@media(max-width:540px){.formgrid{grid-template-columns:1fr}}

/* ═══ #fix-hero-scrim-midzone — надзаголовок/H1 hero тонули на светлых фото ═══
   Глобальный скрим .hero .bg::after имел провал на 38% высоты (0.12) — ровно там,
   где стоят eyebrow и H1. Замер яркости 10 hero: 4 светлых (winter 178, lichten 169,
   gruppen 158, index 152 — текст ~1.8:1), лишь hotel тёмный (85). Поднимаем ТОЛЬКО
   среднюю точку 0.12→0.26 (не до 0.40, как предлагалось — это переусилило бы hotel).
   Аддитивное правило перебивает исходный градиент (идёт позже в каскаде). */
.hero .bg::after{background:linear-gradient(180deg,rgba(18,34,54,.32) 0%,rgba(18,34,54,.26) 38%,rgba(18,34,54,.56) 76%,rgba(18,34,54,.82) 100%)}

/* ═══ #hide-dupe — объединение дублей (owner 10.07): контент остаётся в HTML, скрыт визуально ═══
   Напр. hotel perks: 2-я расплывчатая строка про лифт-карты дублировала «−10% auf Liftkarten».
   Владелец: объединить в одну, вторую скрыть (не удалять). */
li.hide-dupe{display:none}

/* ═══ #fix-statusrow-mobile — статус-бейдж отрывался от названия на телефоне ═══
   .statusrow — flex-row [icon][name][meta][status margin-left:auto][→]. На узком экране
   name+meta переносились, а status с margin-left:auto оставался справа-внизу с отрывом 45px.
   Реструктурируем на мобильном: meta уходит на 2-ю строку под именем, статус остаётся рядом с названием. */
@media(max-width:560px){
  .statusrow{flex-wrap:wrap;align-items:center}
  .statusrow .sr-meta{order:5;flex-basis:100%;margin-left:44px;margin-top:1px}
}

/* ═══ #fix-index-buycard-mobile — цена-оффер утоплена под списком на мобильном ═══
   .heute-grid на ≤900px схлопывается в 1 колонку, .buy-card (All-In 55 € + «Im Shop kaufen»)
   идёт ПОСЛЕ 8-строчного списка → цена/CTA видны только на ~2.5 экране.
   Поднимаем оффер в начало секции на мобильном; десктоп (2 колонки) не трогаем. */
@media(max-width:900px){.heute-grid>.buy-card{order:-1}.heute-grid{display:flex;flex-direction:column}}

/* ═══ #fix-pkm-price-baseline — плейсхолдер «auf Anfrage» громче названия + рваная базовая линия ═══
   Все 100 .pkm-price на сайте = «auf Anfrage» (0 с цифрой). Было 18px/800 — перевешивал имя пакета 14px/700.
   Плюс .pkm display:block → цена садилась под именем разной длины (2 vs 3 строки = 17px разброс).
   Уменьшаем плейсхолдер (крупная шкала — для реальных чисел) и прижимаем к низу карточки (ровная линия). */
.pkm{display:flex;flex-direction:column}
.pkm-b{display:flex;flex-direction:column;flex:1 1 auto}
.pkm-price{font-size:13.5px;font-weight:600;color:var(--grau);margin-top:auto;padding-top:6px}

/* ═══ #fix-cardgrid-c4-lonely — правило центрирования одиночки ломало 4-колоночную .c4 ═══
   .cardgrid>*:last-child:nth-child(3n+1){grid-column:2} (стр.155) задумано для 3-колоночной сетки
   (одиночка в неполном ряду → центр). Но .cardgrid.c4 = 4 колонки, и 4-я карта (4≡3n+1) падала
   во 2-й ряд, колонка 4 пустовала. Исключаем .c4 (спецификация выше правила 155). */
@media(min-width:768px){.cardgrid.c4>*:last-child:nth-child(3n+1){grid-column:auto}}

/* ═══ #fix-pkt-grid-autofit — 2-3 тизера пакетов клеились влево, справа пустота ═══
   .pkt-grid = repeat(auto-fill,minmax(210px,1fr)) — auto-fill держит пустые треки (5 на 1136px),
   а видимых карт в сезон обычно 2-3 → правая половина пустует; зимой одиночка растягивалась.
   auto-fit схлопывает пустые треки: карты занимают доступную ширину без дыр. */
.pkt-grid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}

/* ═══ #fb-exp-scrim — Titel auf exp-card-Foto war unter dem Scrim (Feedback Dima #12) ═══
   Nur in <span class="t-d/e"> gewrappte Titel lagen bei z-index:2 über dem ::before-Scrim;
   NACKTE Text-Knoten (z.B. «Kultur Sommer Semmering», «Golfclub Semmering») blieben darunter
   und wirkten grau/kontrastarm, während gewrappte («Events & Feste») weiß & klar waren.
   isolation:isolate macht .ph zum Stacking-Context → ::before z-index:-1 liegt ÜBER dem
   Bild, aber UNTER allem Textinhalt (nackt ODER gewrappt). Badge/Spans (z-index:2) bleiben oben. */
.exp-card .ph{isolation:isolate}
.exp-card .ph::before{z-index:-1!important}

/* ═══ #fb-cta-gap — Buttons «geklebt» (Feedback Dima #14) ═══
   .cta-row hatte gap:12px; auf großen Hero-Pill-Buttons (Bikepark: «Tickets sichern» /
   «Alle 14 Trails ansehen») wirkte das zusammengeklebt. 16px horizontaler Abstand gibt Luft. */
.cta-row{gap:14px 16px}

/* ═══ #fb-legal-dots — verwaiste «·»-Trenner im Footer (Feedback Dima #13) ═══
   .legal-row>a::before{content:"·"} sitzt vor jedem Link; beim Umbruch startet die neue Zeile
   mit einem freischwebenden «· Datenschutz» (links versetzt, wirkt wie verrutschter Bullet).
   Mobil: Trenner ausblenden (rein dekorativ, kein Inhaltsverlust) + Links zentriert clustern. */
@media(max-width:560px){
  .legal-row{justify-content:center;gap:6px 14px}
  .legal-row>a::before{display:none}
}

/* ═══ #fb-events-organizer — Events sichtbar nach Veranstalter trennen (Feedback Simona+Karoline) ═══
   Jede ev-card trägt jetzt ein Veranstalter-Badge (berg=am Berg/Bergbahnen grün, hotel=Sporthotel bordeaux)
   + Filter-Chips «Alle / Am Berg / Sporthotel». Nur Gruppierung/Kennzeichnung — keine neuen Fakten. */
.ev-org{font-family:'Montserrat';font-weight:700;font-size:11px;padding:2px 9px;border-radius:999px;white-space:nowrap;display:inline-flex;align-items:center;gap:3px}
.ev-org--berg{color:var(--blau-dd);background:var(--hellblau-l)}
.ev-org--hotel{color:var(--anthrazit);background:var(--beige)}
.ev-filter{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 18px}
.ev-filter .chip{cursor:pointer;border:1px solid var(--hellgrau);background:#fff}
.ev-filter .chip.active{background:var(--blau-dd);color:#fff;border-color:var(--blau-dd)}

/* ═══ #fb-home-nextev — prominenter «Nächstes Event»-Teaser auf der Startseite (Feedback Karoline: war zu klein) ═══
   Vorher: der Next-Event-Teaser wurde gar nicht mehr gerendert (Rest im entfernten livebar2). Jetzt: markantes
   Marken-Band oben in «Was ist los am Semmering», client-seitig aktuell gehalten. Nur vorhandene Event-Daten. */
.nextev-band-wrap{margin:0 0 22px}
.nextev-band{display:flex;align-items:center;gap:16px;background:linear-gradient(135deg,var(--blau-dd),var(--blau));color:#fff;border-radius:14px;padding:16px 20px;text-decoration:none;box-shadow:0 8px 24px rgba(20,55,90,.20);transition:transform .15s ease,box-shadow .15s ease}
.nextev-band:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(20,55,90,.28)}
.nextev-band .neb-lbl{font-family:'Montserrat';font-weight:800;font-size:11px;letter-spacing:1px;text-transform:uppercase;background:rgba(255,255,255,.18);padding:4px 11px;border-radius:999px;white-space:nowrap;flex:none}
.nextev-band .neb-date{font-family:'Montserrat';font-weight:800;font-size:18px;white-space:nowrap;flex:none}
.nextev-band .neb-title{font-family:'Montserrat';font-weight:700;font-size:17px;flex:1;min-width:0}
.nextev-band .neb-t{font-size:13px;opacity:.85;white-space:nowrap;flex:none}
.nextev-band .neb-go{background:#fff;color:var(--blau-dd);width:30px;height:30px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:15px;flex:none}
@media(max-width:560px){.nextev-band{flex-wrap:wrap;gap:8px 12px;padding:14px 16px}.nextev-band .neb-title{flex:1 1 100%;font-size:16px;order:5}.nextev-band .neb-go{order:6;margin-left:auto}}

/* ═══ #fb-hours-clarity — «Hauptsaison»-Tag + Hinweis «bis 1. Nov» (Feedback Simona+Karoline) ═══
   Vorher stand nur «18. Juni – 6. September» prominent → las sich, als schließe alles am 6.9.
   Tag «Hauptsaison» macht klar, dass das die Hauptzeit ist; der Zusatz verweist auf den Betrieb bis 1. Nov
   (alle Zeiträume als Chips darunter). Keine neuen Daten — 1. Nov steht bereits in der Zeitraum-Liste. */
.hb-tag{display:inline-block;font-family:'Montserrat';font-weight:800;font-size:10.5px;letter-spacing:.6px;text-transform:uppercase;color:var(--blau-dd);background:var(--hellblau-l);padding:3px 10px;border-radius:999px;margin:0 8px 5px 0} /* 03.08: слипался с датой */

/* ═══ #fb-brand-color — --blau-dd von grau-teal #33617f auf ein satteres Semmering-Blau #3a6a93
   verschoben (näher an --blau #75abd6, Feedback aller 5 Reviewer «zu dunkel»). Kontrast geprüft:
   Weiß auf #3a6a93 = 5.73:1, #3a6a93-Text auf hell = 4.87:1 (beide AA). Folgende Rest-Fälle nachgezogen: */
/* .tag-ev (Status-Pille «offen»): blau-dd-Text auf dem tieferen Tint #bad5ea war 3.77 → hellerer Tint = 4.87 */
.heute-list .tag-ev,.he-r .tag-ev{background:var(--hellblau-l)}

/* ═══ #fb-hero-vidbtn — Pause-Button auf dem Hero-Video war leicht zu übersehen (Feedback Karoline) ═══
   Vorher: 40px, Hintergrund 55% dunkel, dünner 55%-Rand → verschwand auf dunklem Video. Jetzt größer,
   deutlich deckender, klarer weißer Rand + Schatten. Button/Logik unverändert (WCAG-Steuerung bleibt). */
.hero-vidbtn{width:46px;height:46px;background:rgba(12,20,36,.74);border:1.6px solid rgba(255,255,255,.92);box-shadow:0 4px 16px rgba(0,0,0,.42);bottom:150px}
.hero-vidbtn svg{width:20px;height:20px}
.hero-vidbtn:hover{background:rgba(12,20,36,.92)}
/* Text-Toggle knapp unter den Pausen-Button — Cluster in Sichtweite, nicht am 92vh-Rand unter dem Fold */
.hero-textbtn{bottom:96px}
@media(max-width:640px){.hero-vidbtn{width:46px;height:46px;right:12px;bottom:118px}.hero-textbtn{bottom:64px}}

/* ═══ #fb-hero-text-contrast — kleiner Text auf dem Video war kontrastarm (Feedback Dima #4) ═══
   .hero-proof (13px Sterne/Bewertungen) hatte nur einen weichen Schatten (inline) → wusch auf hellen
   Video-Frames aus. Stärkerer Doppelschatten macht ihn frame-robust. .sub ebenso leicht verstärkt. */
.hero-proof{text-shadow:0 1px 3px rgba(0,0,0,.88),0 2px 12px rgba(0,0,0,.62)!important}
.hero .sub{text-shadow:0 1px 4px rgba(8,16,26,.78),0 2px 18px rgba(8,16,26,.55)}

/* ═══ #fix-hotel-nl-btn — «Anmelden»-Button im Hotel-Newsletter war unlesbar (blau-dd Text auf rot #75abd6 = 1.57) ═══
   Auf body.hotelbrand gewann .btn.primary{background:#75abd6} über den invertierten Weiß-Button (.foot-nl .btn.primary).
   Höhere Spezifität stellt den lesbaren Weiß-Button + blauen Text sicher (~5.6:1). Pre-existing, nicht vom Farb-Realign. */
body.hotelbrand .foot-nl .btn.primary,body.hotelbrand .newsletter .btn.primary,body.hotelbrand .formbox .btn.primary{background:#fff!important;color:var(--blau-dd)!important}
body.hotelbrand .foot-nl .btn.primary:hover,body.hotelbrand .newsletter .btn.primary:hover,body.hotelbrand .formbox .btn.primary:hover{background:var(--hellblau-l)!important;color:var(--blau-dd)!important}

/* ═══ #hotel-quiet — Sporthotel weniger dominant auf Nicht-Hotel-Seiten (Feedback Simona+Karoline+Tania) ═══
   Die grosse «Bleib über Nacht»-Übernachten-Sektion (index) und «Ski-Tag verlängern» (winter) sind Dubletten
   der hotel.html-Inhalte + des Pakete-Teasers. Ausgeblendet (Inhalt bleibt im HTML), Pakete-Teaser bleibt sichtbar
   → Hotel in unterstützender Rolle, Bergerlebnis im Fokus. Fakten (8 Min/2 Saunen/Grand View) leben auf hotel.html. */
.hq-hide{display:none}

/* ═══ #circle0-diff-blau — Schwierigkeits-Meter auf Marken-Blau-Intensität (Feedback-Runde: #75abd6 dominiert) ═══
   Vorher d2=orange #e0a53b, d3=rot #c85a44 (off-brand). Level bleibt klar via Segment-Anzahl (1/2/3) +
   Blau-Dunkelheit (hell=leicht → dunkel=schwer). Kein Info-Verlust, marken-konsistent. */
.am-d1 .am-seg.on{background:var(--blau)}
.am-d2 .am-seg.on{background:var(--blau-d)}
.am-d3 .am-seg.on{background:var(--blau-dd)}

/* ═══ #circle1-trailcard-blau — .tc2/.tc4 waren braun/rot-braun (off-brand), .tc1 alt-grau-teal ═══
   Trailcard-Fallback-Verläufe (Bike-Events u.a.) auf Marken-Blau-Familie vereinheitlicht (#75abd6 dominiert),
   unterscheidbar via Blau-Abstufung. Meist von Foto überdeckt — konsistenter Fallback ohne Braun/Rot-Blitz. */
.tc1{background:linear-gradient(150deg,#5e93bd,#3a6a93)}
.tc2{background:linear-gradient(150deg,#75abd6,#4f86b3)}
.tc3{background:linear-gradient(150deg,#4f86b3,#274b63)}
.tc4{background:linear-gradient(150deg,#6aa0c8,#33617f)}

/* ═══ #brand-lighter (Sasha 11.07: «Сайт темнее чем брендовый цвет») — dominante Blau-Flächen auf Hero-Farbe #75abd6 ═══
   Marke: Semmering Blau #75abd6 soll DOMINIEREN + «weiß für Text auf blauem Hintergrund». Solid-Flächen & Verläufe
   heller. --blau-dd bleibt NUR für Text-auf-hell (Eyebrow/Preis/Nav — lesbar). hotelbrand (#75abd6) unberührt (höhere Spez.). */
.notif,.livebar2{background:var(--blau)!important}
.hp-head{background:var(--blau)}
.btn.primary{background:var(--blau)}
.btn.primary:hover{background:#5e93bd}
.chip.active,.chip:hover{background:var(--blau);color:#fff}
.hb-chip.hb-current,.aud-chip.active,.aud-actchip{background:var(--blau)}
.nextev .nx-go{background:var(--blau)}
[data-audgrid] .exp-card.match::after{background:var(--blau)}
.buy-card,.newsletter,.formbox,.ev-next-card,.nextev-band{background:linear-gradient(135deg,#5e93bd,var(--blau))}

/* ═══ #foot-slogan — offizieller Marken-Slogan «Ganz nah. Ganz Berg.» (Sasha: der Haupt-Slogan) ═══ */
.foot-slogan{font-family:'Montserrat',system-ui,sans-serif;font-weight:800;font-size:20px;letter-spacing:-.01em;color:#fff;margin:2px 0 12px;line-height:1.15}
@media(max-width:640px){.foot-slogan{font-size:18px}}

/* ═══ #calc-ages — Altersgruppen-Umschalter im Preisrechner (Erwachsene/Jugend/Kinder), reale Tarife ═══ */
.calc-ages{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.calc-age{font-family:'Montserrat',system-ui,sans-serif;font-weight:700;font-size:13px;padding:7px 15px;border-radius:999px;border:1.5px solid var(--hellblau);background:#fff;color:var(--blau-dd);cursor:pointer;transition:.15s}
.calc-age:hover{border-color:var(--blau)}
.calc-age.on{background:var(--blau);color:#fff;border-color:var(--blau)}

/* ═══ Berge-Divider FIX (Sasha 11.07: zurück zum weichen Grat vom alten semmering.com, Farbe = Sektion darunter, NICHT grau) ═══
   Ursache grau: mountain-mask.png-Füllung ist halbtransparent → dunkles Video schien durch.
   Lösung: PNG als MASKE (weiche Grat-Form bleibt) + solide Füllung in der Farbe der Sektion darunter. */
.hero::after{
  background:var(--hellblau-l)!important;
  -webkit-mask:url('assets/mountain-mask-solid.png') bottom/100% 100% no-repeat!important;
          mask:url('assets/mountain-mask-solid.png') bottom/100% 100% no-repeat!important;
  clip-path:none!important;z-index:6!important;}
body.hotelbrand .hero::after{
  background:#f3ecdf!important;z-index:6!important;
  -webkit-mask:url('assets/mountain-mask-solid.png') bottom/100% 100% no-repeat!important;
          mask:url('assets/mountain-mask-solid.png') bottom/100% 100% no-repeat!important;}

/* ═══ 3-Schritte-Element WIEDERHERSTELLEN (Brand Manual §6 «Elemente» — 3 Dreiecke transparent→voll) ═══
   audit-visual-4 hatte den Marken-Divider durch einen generischen Strich ersetzt → Marken-Element ging verloren.
   Zurück zu den 3 Semmering-Dreiecken über der Eyebrow (Ausrichtung folgt der Eyebrow). */
.eyebrow::before{
  content:"";display:block;width:58px;height:13px;margin:0 0 8px 0;
  background:url('assets/triangles.svg') left center/contain no-repeat!important;
  border-radius:0!important;opacity:1!important;vertical-align:baseline!important;}
/* Zentrierte Eyebrows (z. B. mittige Sektionen) → Dreiecke mittig */
.center .eyebrow::before,[style*="text-align:center"] .eyebrow::before,.tac .eyebrow::before{margin-left:auto;margin-right:auto;background-position:center!important;}

/* ═══ #26 (Audit 07-07): Footer-Links — größere Tap-Targets auf Mobile (waren zu eng: 5px) ═══ */
@media(max-width:640px){
  footer.site a{padding:9px 0}
  footer.site .fcol{margin-bottom:4px}
}

/* ═══ Bikepark/Lichten-Hero Lesbarkeit: Accent-Zeile (#75abd6) war auf hellem Himmel unlesbar (Kontrast ~1.3) ═══
   Stärkerer Scrim in der Text-Zone (Mitte) + kräftigerer Text-Shadow. Bild bleibt sichtbar, Text wird lesbar. */
.bp-hero::after{
  background:linear-gradient(180deg,rgba(8,16,26,.34) 0%,rgba(8,16,26,.15) 26%,rgba(8,16,26,.44) 56%,rgba(8,16,26,.80) 100%)!important;}
.bp-hero h1{text-shadow:0 1px 3px rgba(0,0,0,.85),0 2px 18px rgba(0,0,0,.55)!important;}

/* polish — round1 (ЦВЕТ-КОНТРАСТ ОТКАТАН по решению владельца 15.07: брендовый #75abd6 доминирует на CTA/статус-баре/чипах; AA-замечание 2.46:1 остаётся в OWNER_CONFIRMATION_LIST). Оставлены не-цветовые фиксы: тап-таргеты переключателей ≥24px (мобайл), центрирование reel-модуля bikepark/grandview. */
@media(max-width:520px){.lang-toggle span{padding:6px 8px}.season-toggle span{padding:6px 8px!important}}
.act-reel{justify-content:center;gap:30px}
.act-reel .ar-cap{flex:0 1 380px;max-width:380px}

/* orphan-fix filtered cardgrid */
/* #651-orphan: :nth-child orphan-центровка (стр.155) считает по DOM и игнорит display:none
   сезонные/аудиторные карточки → одинокая карточка уезжала в колонку 2/3, слева пусто.
   Для фильтруемой .cardgrid.big отключаем хак: карточки текут натурально слева (grid-column:auto). */
.cardgrid.big>*:last-child:nth-child(3n+1){grid-column:auto}
.cardgrid.big>*:last-child:nth-child(3n+2){grid-column:auto}

/* card-icon badge owner-fix */
/* owner 15.07: значок активности висел криво в теле карточки (float:right не работает в flex-body → пустота слева).
   → бейдж в правом-верхнем углу фото, тело карточки чистое. Белое кольцо = контраст над фото. */
.exp-card{position:relative}
.exp-card .actc-ico{position:absolute;top:11px;right:11px;float:none!important;margin:0!important;width:42px;height:42px;z-index:4;box-shadow:0 3px 10px rgba(10,20,35,.45),0 0 0 2px rgba(255,255,255,.95)}
.exp-card .body::after{content:none}
/* match-звезда аудитории уходит в НИЖ-правый угол фото, чтобы не сталкиваться с бейджем */
[data-audgrid].aud-active .exp-card.match::after{top:auto;bottom:11px;right:11px}

/* live-status by real date */
/* .live-*/off-banner показываются по умолчанию; html.real-* (JS по реальной дате) прячет неверный сезон. */
html.real-winter .live-summer{display:none!important;}
html.real-summer .live-winter{display:none!important;}
html:not(.real-summer):not(.real-winter) .live-winter{display:none!important;}

/* gallery snap-start */
.pc-slide{scroll-snap-align:start}

/* DES-006 section rhythm */
@media(min-width:900px){.sec{padding:52px 0}.sec-sm{padding:32px 0}}

/* HOME-001 buy-card height */
@media(min-width:901px){.heute-grid>.buy-card{align-self:start}}

/* CRO#1 mobile: head-right уже тесен на ≤400px (toggle+lang+Tickets+burger) — прячем season-toggle, чтобы бургер не обрезался; сезон авто-детектится+persist, Sommer/Winter есть в меню */
@media(max-width:520px){.head-right .season-toggle{display:none!important}}

/* ── Gafs 17.07: Logo war site-wide zu klein ──────────────────────────────
   Ursache: 05.07 ersetzte das echte Marken-SVG (viewBox 1305×369 = 3.54:1)
   das alte Freihand-SVG, aber height:30px blieb. Bei width:auto rendert das
   nur 106px statt der im Markup deklarierten 150px Breite → 30% zu schmal.
   42px ⇒ 149px Breite = die ursprünglich geplante Groesse. Header ist 70px hoch. */
.logo-img{height:42px;width:149px;flex:none;}
footer.site .logo-img{height:44px;width:156px;}
@media (max-width:640px){.logo-img{height:30px;width:106px;}}
.logo{flex:none;}

/* Owner-Entscheid #27: Zusatzleistungen (hotel.html#services) — Zeile mit Preis rechts */
.xs-row{display:flex;justify-content:space-between;align-items:baseline;gap:14px;
  padding:8px 0;border-bottom:1px solid var(--hellgrau);font-size:14.5px;color:var(--dunkel);}
.xs-row:last-child{border-bottom:0;padding-bottom:0;}
.xs-row b{color:var(--blau-dd);font-family:'Montserrat',sans-serif;white-space:nowrap;font-size:15px;}
.exp-card .body h4+.xs-row{margin-top:8px;}
@media(max-width:640px){.xs-row{font-size:14px;}}

/* reel-size — вертикальные видео крупнее (Саша 06-17.07: «мелкие вертикальные видео»; было 196/150px) */
.ar-frame{width:280px;flex-basis:280px}
@media(max-width:560px){.ar-frame{width:230px;flex-basis:230px}}

/* photocar-nav — стрелки каруселей (пара к app.js photocar-auto) */
.pc-nav{position:absolute;top:calc(50% - 32px);transform:translateY(-50%);z-index:3;width:40px;height:40px;border-radius:50%;border:1px solid var(--hellgrau,#dde);background:rgba(255,255,255,.92);color:var(--blau-dd,#3a6a93);font-size:26px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 10px rgba(20,40,60,.18);transition:background .15s}
.pc-nav:hover{background:#fff}
.pc-nav:focus-visible{outline:2px solid var(--blau-dd,#3a6a93);outline-offset:2px}
.pc-prev{left:8px}.pc-next{right:8px}
@media(max-width:560px){.pc-nav{width:34px;height:34px;font-size:22px}}

/* ═══════════════ BUG-MOBILE (audit-verified 18.07) ═══════════════
   Функц. баг: на ≤430px header не влезал → Ticketshop обрезан, бургер
   уезжал за край (моб-меню недоступно). Причина — лого-фикс 17.07
   (.logo-img width:106px). Ужимаем head-right БЕЗ увеличения уже
   существующей ≤520-компактизации (:764/:768/:769/:1969). Также
   notif-текст переносится, а не режется overflow:hidden(:50).
   ══════════════════════════════════════════════════════════════ */
@media(max-width:430px){
  header.site .logo-img{height:26px;width:auto;}
  .head-right{gap:6px;}
  .lang-toggle span{padding:5px 6px;}
}
@media(max-width:540px){
  .notif .wrap{overflow:visible;}
  .notif .wrap>*{min-width:0;white-space:normal;overflow-wrap:anywhere;}
}

/* === ФАЗА 0: ЕДИНЫЙ ТОКЕН-КОНТРАКТ (append-only, non-breaking) === */
/* Дописать в САМЫЙ КОНЕЦ docs/style.css.
   Секция (A) переобъявляет КАЖДЫЙ существующий токен его ЭФФЕКТИВНЫМ
   (каскадно-побеждающим) значением из 4 блоков :root (L8-17, L688-694,
   L1378, L1458). Так как этот :root идёт ПОСЛЕДНИМ в файле и имеет ту же
   специфичность (document-root), он побеждает — но значения ИДЕНТИЧНЫ
   текущим эффективным, поэтому рендер существующих правил не меняется.
   Секция (B) ДОБАВЛЯЕТ новые шкалы; они пока нигде не используются = 0
   визуального эффекта. Тёмная тема НЕ вводится (её фактически нет). */
:root{
  /* --- (A) ПЕРЕОБЪЯВЛЕНИЕ СУЩЕСТВУЮЩИХ 24 ТОКЕНОВ (эффективные значения) --- */
  --blau:#75abd6;            /* L9  — Semmering Blau (=--orange=--red) */
  --blau-d:#4f86b3;          /* L9 */
  --blau-dd:#3a6a93;         /* L9  (=--green=--gold) */
  --blau-deep:#274b63;       /* L9 */
  --hellblau:#bad5ea;        /* L10 */
  --hellblau-l:#e3eef7;      /* ЭФФ: L689 переопределяет L10 (#e8f1f8) */
  --anthrazit:#312e2b;       /* L11 — цвет тела/заголовков */
  --dunkel:#3a4048;          /* ЭФФ: L1378 переопределяет L11 (#4d4d4d) */
  --grau:#5b6470;            /* L11 */
  --hellgrau:#ededed;        /* L11 */
  --beige:#d8cab7;           /* L12 */
  --beige-l:#f6f0e7;         /* L12 */
  --lichten:#26506f;         /* ЭФФ: L1458 переопределяет L13 (#1f3d50) */
  --red:#75abd6;             /* L14 — нейтрализован под Blau (владелец 06.07) */
  --green:#3a6a93;           /* L14 */
  --bikedark:#16181c;        /* L15 */
  --bikedark-2:#22262c;      /* L15 */
  --orange:#75abd6;          /* L15 — нейтрализован под Blau */
  --gold:var(--blau-dd);     /* L15 — ссылочный, резолвится в #3a6a93 */
  --white:#fff;              /* L16 */
  --shadow:0 6px 24px rgba(20,40,60,.13);   /* ЭФФ: L693 переопределяет L16 (.10) */
  --v-page:#f3f8fc;          /* L690 */
  --v-deep:linear-gradient(168deg,#33617f 0%,#274b63 55%,#1d3a4e 100%);  /* L691 */
  --v-footer:#14242f;        /* L692 */

  /* --- (B) НОВЫЕ ШКАЛЫ (пока не используются = 0 визуального эффекта) --- */

  /* type: модульная шкала ~1.2, якорь --text-base=17px (=body) */
  --text-2xs:10px;
  --text-xs:12px;
  --text-sm:14px;            /* самый частый UI-размер */
  --text-base:17px;          /* = body font-size */
  --text-lg:20px;
  --text-xl:24px;
  --text-2xl:30px;
  --text-3xl:34px;           /* верх дискретной шкалы; hero/display — через clamp() поверх */
  --leading-none:1;
  --leading-tight:1.12;      /* = h1-h5 line-height */
  --leading-snug:1.25;
  --leading-normal:1.5;
  --leading-relaxed:1.6;     /* = body line-height */
  --leading-loose:1.75;

  /* space: база 4px */
  --sp-1:4px;
  --sp-2:8px;
  --sp-3:12px;
  --sp-4:16px;
  --sp-5:20px;
  --sp-6:24px;
  --sp-7:32px;
  --sp-8:40px;               /* = .sec-sm вертикаль */
  --sp-9:48px;
  --sp-10:64px;              /* = .sec вертикаль */
  --sp-11:80px;
  --sp-12:96px;

  /* radius */
  --r-sm:8px;
  --r-md:12px;
  --r-card:14px;             /* доминанта карточек (×24) — сохранена пиксельно во избежание сдвига в Фазе 3 */
  --r-lg:16px;
  --r-xl:24px;
  --r-pill:999px;

  /* elevation */
  --elev-1:0 1px 3px rgba(0,0,0,.04);          /* низкая — chips/gtype */
  --elev-2:0 6px 24px rgba(20,40,60,.13);       /* средняя = текущий эффективный --shadow */
  --elev-3:0 18px 50px rgba(0,0,0,.25);         /* высокая — оверлеи/панели */

  /* color: синяя лестница (якорь --blue-500 = Semmering Blau) */
  --blue-50:#f3f8fc;         /* = --v-page */
  --blue-100:#e3eef7;        /* = эфф. --hellblau-l */
  --blue-200:#c4d6e5;
  --blue-300:#bad5ea;        /* = --hellblau */
  --blue-400:#9cc7e8;
  --blue-500:#75abd6;        /* ЯКОРЬ = --blau */
  --blue-600:#5e93bd;
  --blue-700:#4f86b3;        /* = --blau-d */
  --blue-750:#3a6a93;        /* = --blau-dd */
  --blue-800:#33617f;
  --blue-850:#274b63;        /* = --blau-deep */
  --blue-900:#1d3a4e;
  --blue-950:#14242f;        /* = --v-footer */
  /* нейтрали (сине-нейтральный уклон, hue~210) */
  --ink:#22303c;             /* НОВЫЙ основной текст (замена тёплого --anthrazit в Фазе 3, сейчас unused) */
  --muted:#5b6470;           /* = эфф. --grau */
  --border:#dfe3e8;          /* НОВЫЙ бордюр (замена --hellgrau в Фазе 3); имя --line занято fallback'ом на legal-стр (style.css:1372) */
  --surface:#ffffff;         /* = --white */
  --bg:#f3f8fc;              /* = --v-page */

  /* font */
  --font-head:'Montserrat',Arial,sans-serif;                                  /* = h1-h5 стек */
  --font-body:'Source Sans 3',-apple-system,'Helvetica Neue',Arial,sans-serif; /* = body стек */
}
/* === ФАЗА 1: БАЗОВЫЕ КОМПОНЕНТЫ (append-only, unused until Phase 3) ===
   Дописать в САМЫЙ КОНЕЦ docs/style.css, ПОСЛЕ токен-блока Фазы 0 (:root L2017+).
   Все имена ниже проверены грепом: 0 совпадений как CSS-селекторы в style.css,
   0 как class-строки в src/gen_*.py, 0 bare-токенов в built HTML docs/*.html.
   Классы пока НИГДЕ не применяются => 0 визуального эффекта. Существующие
   используемые классы (.btn/.chip/.price/.sec/.exp-card и пр.) НЕ трогаются.
   Значения на токенах Фазы 0 воспроизводят доминирующий текущий вид
   (визуально-нейтральная миграция в Фазе 3). */

/* ---------- КАРТОЧКИ ---------- */

/* .card — панель, воспроизводит доминантный вид .exp-card
   (surface + 1px border + r-card + elev-2). Паддинга нет — как у .exp-card,
   внутренний отступ живёт на дочернем .body. */
.card{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--r-card);
  box-shadow:var(--elev-2);
  overflow:hidden;
}

/* .card-media — .card с верхним изображением/бейджем.
   Применяется как class="card card-media". Слот .card-media__ph = аналог .exp-card .ph. */
.card-media{
  position:relative;
}
.card-media__ph{
  position:relative;
  display:flex;
  align-items:flex-end;
  min-height:170px;
  padding:var(--sp-3);
  color:#fff;
  font-family:var(--font-head);
  font-weight:700;
  background-color:#9db8cf;
  background-size:cover;
  background-position:center;
}
.card-media__badge{
  position:absolute;
  top:var(--sp-2);
  left:var(--sp-2);
  z-index:2;
  background:rgba(0,0,0,.55);
  color:#fff;
  font-family:var(--font-head);
  font-size:var(--text-2xs);
  font-weight:600;
  padding:3px 9px;
  border-radius:var(--r-pill);
}

/* .card-flat — панель без тени и бордюра (tile/trailcard/buy-card-основа). */
.card-flat{
  background:var(--surface);
  border-radius:var(--r-card);
  overflow:hidden;
}

/* единый hover-лифт (опциональный модификатор, воспроизводит exp-card:hover@1381) */
.card-hover{transition:transform .18s ease,box-shadow .18s ease;}
.card-hover:hover{transform:translateY(-3px);box-shadow:0 12px 32px rgba(20,40,60,.15);}

/* ---------- КНОПКИ ---------- */
/* Базовый слой кнопок = существующий .btn + варианты (.primary/.secondary/.ghost/
   .ghost2/.dark/.orange/.sm/.xs-btn). Все УЖЕ применяются в разметке/генераторах,
   поэтому в Фазе 0/1 НЕ переопределяются и НЕ добавляются. Консолидация — Фаза 3
   (менять разметку, не CSS-базу). Новых классов здесь нет. */

/* ---------- ЦЕНА / БЕЙДЖ / СЕКЦИЯ ---------- */

/* под-компоненты цены (statt-цена + акцент) */
.price-strike{                 /* «statt»-цена: перечёркнута, приглушена */
  font-family:var(--font-head);
  font-weight:400;
  font-size:var(--text-sm);    /* 14px ≈ текущие .p-was 15px */
  text-decoration:line-through;
  opacity:.55;
  white-space:nowrap;
}
.price-now{                    /* акцент актуальной цены (воспроизводит .exp-card .price) */
  font-family:var(--font-head);
  font-weight:700;
  color:var(--blue-750);       /* = эфф. --blau-dd #3a6a93 */
  white-space:nowrap;
}
.price-now.is-lg{ font-size:var(--text-3xl); font-weight:800; }  /* = buy-card 34px */
.price-now.is-md{ font-size:var(--text-2xl); font-weight:800; }  /* ≈ booking-card 32px */

/* pill-badge (НЕ .badge: bare-.badge уже используется под .exp-card .ph @167/937) */
.badge-pill{
  display:inline-block;
  font-family:var(--font-head);
  font-weight:600;
  font-size:var(--text-xs);    /* 12px ≈ текущие 11px бэйджи/теги */
  padding:var(--sp-1) var(--sp-2);          /* 4px 8px */
  border-radius:var(--r-pill);
  background:var(--blue-100);  /* = эфф. --hellblau-l #e3eef7 */
  color:var(--blue-750);
  line-height:var(--leading-tight);
}

/* крупная секция (аддитивный вариант ритма, между .sec и hero) */
.sec-lg{ padding:var(--sp-11) 0; }           /* 80px — новый шаг, не пересекает .sec/.sec-sm */

/* ═══════════════════════════════════════════════════════════════════
   VISUAL-QA ROUND 2026-07-22 (веер 9 кластеров, адверсариально проверено).
   Аддитивно в конец. Каждый фикс закрывает несколько находок сразу.
   ═══════════════════════════════════════════════════════════════════ */

/* [QA #1,9,13,16,25] Приветственный пузырь Hirschi (.hirschi-hint) на money-
   страницах с sticky-CTA налезал на нижнюю фикс-панель и обрезался. Панель видна
   только ≤720px на body.has-stickycta — там прячем транзиентный пузырь (FAB остаётся). */
@media(max-width:720px){
  body.has-stickycta .hirschi-hint{display:none!important;}
}

/* [QA #8,18,23] Контактные ссылки футера ловили footer.site a{display:block}
   → <a> уезжал на новую строку, а ведущий разделитель «·» из nowrap-спана
   оставался висеть один. Возвращаем контактам инлайн. */
footer.site .cols p a{display:inline;padding:0;}

/* [QA #6] Оверлей-заголовки карточек хаба активностей (.exp-card .ph) на мобиле
   в 2-колоночной сетке обрезали длинные односоставные слова (Goldwaschanlage,
   Sonnenaufgang). Разрешаем перенос и чуть уменьшаем кегль на узких. */
@media(max-width:430px){
  .exp-card .ph{font-size:15px;}
  .exp-card .ph .t-d,.exp-card .ph .t-e{overflow-wrap:anywhere;word-break:break-word;min-width:0;}
}

/* [QA #27] .actc-name (заголовок компактной act-card) обрезал «Schneeschuhwandern»
   у правого края в 2-колоночной сетке. Разрешаем перенос + даём грид-детям ужиматься. */
.actc-name{overflow-wrap:anywhere;word-break:break-word;}
.actgrid>a,.actgrid>div,.actgrid>.actc,.actgrid>.exp-card{min-width:0;}

/* [QA #7,20] На мобиле в блоке «In Aktion» подпись .ar-cap сохраняла flex-basis
   380px из десктопа; в column-флексе это резервировало ~380px ПУСТОЙ ВЫСОТЫ. */
@media(max-width:560px){
  .act-reel .ar-cap{flex:0 1 auto;max-width:none;}
}

/* [QA #12] Короткие карты без .act-meta растягивались до высоты соседа → пустой
   провал внутри. На мобиле выравниваем по верху — карты сжимаются по контенту. */
@media(max-width:560px){
  .actgrid{align-items:start;}
}

/* [QA #3,21] Контраст hero-текста на светлых фото/видео: дисклеймер .geo-pos имел
   opacity:.85 без тени, .hero-proof — слабую тень. Усиливаем (глобальный скрим не трогаем). */
.hero .geo-pos{opacity:1;text-shadow:0 1px 3px rgba(0,0,0,.9),0 2px 12px rgba(0,0,0,.62);}
.hero .hero-proof{text-shadow:0 1px 3px rgba(0,0,0,.9),0 2px 12px rgba(0,0,0,.62);}
/* конец VISUAL-QA ROUND 2026-07-22 */


/* ═══ TOP-AREA REDESIGN 2026-07-22 (запрос Саши: шапка/лого крупнее, нотиф аккуратнее+симметрично, бургер без задвоения) ═══ */

/* Бургер: убрать CSS-псевдолинии (::before дублировал инлайн-SVG = «хуйня») — оставляем чистый SVG, крупнее */
.burger::before{display:none!important;content:none!important;}
.burger::after{display:none!important;content:none!important;}
.burger{display:none;}
@media(max-width:900px){
  .burger{display:flex!important;align-items:center;justify-content:center;margin-left:auto;
    width:44px;height:44px;padding:0;color:var(--blau-dd);background:none;border:none;}
  .burger svg{display:block!important;width:26px;height:26px;}
  body.navopen nav.main{top:100%!important;}   /* дропдаун под подросшей шапкой */
}

/* Шапка и лого крупнее */
header.site .wrap{height:82px;}
.logo-img{height:42px;}
@media(max-width:900px){ header.site .wrap{height:76px;} }
@media(max-width:640px){ .logo-img{height:32px!important;} }
body.hdr-compact header.site .wrap{height:64px;}

/* Нотиф-бар: симметрично, без перегруза */
.notif .wrap{gap:12px 26px;}
.nf-live{display:flex;align-items:center;gap:8px 22px;flex-wrap:wrap;}
@media(min-width:721px){
  .notif .wrap{justify-content:center;}   /* центр — симметрично, консистентно с мобайлом; одна строка если влезает, иначе 2 центр. строки */
}
@media(max-width:720px){
  .notif .wrap{flex-direction:column;align-items:center;text-align:center;gap:5px;padding-top:8px;padding-bottom:8px;}
  .nf-live{justify-content:center;gap:4px 16px;}
  .nf-mood{justify-content:center;}
}
/* конец TOP-AREA REDESIGN 2026-07-22 */


/* ═══ CRAFT PASS 2026-07-22 (фидбек Саши: тонкий текст, нотиф 1 строка-лево, синие иконки чипов, hero-кнопки, Waldmaus) ═══ */

/* Тонкий текст: было font-weight:300 (Source Sans Light) — нечитаемо, особенно на мобиле */
.lead{font-weight:400;}
.hero .sub{font-weight:400;}
@media(max-width:640px){
  body{font-weight:420;}
  .lead,.hero .sub,p,li{font-weight:445;}
  .small,.chip,.tg{font-weight:500;}
}

/* Нотиф-бар: ОДНА строка, ЛЕВО, не перегружено (перекрывает центрирование TOP-AREA) */
.notif .wrap{flex-wrap:nowrap!important;justify-content:flex-start!important;align-items:center!important;text-align:left!important;gap:6px 18px;overflow:hidden;}
.nf-live{flex-wrap:nowrap!important;gap:6px 16px;min-width:0;}
.notif .nf-mood{flex:0 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.notif .nf-mood>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block;max-width:100%;}
.nf-live>a,.nf-live>span{white-space:nowrap;}
@media(max-width:720px){
  .notif .wrap{flex-direction:row!important;}
  .notif .nf-mood{display:none!important;}   /* мобайл: промо прячем → 1 чистая строка статуса слева */
  .nf-live>span.inline{overflow:hidden;text-overflow:ellipsis;}
}

/* Синие уродские иконки на чипах — убрать (эмодзи→.ic и программные первого svg) */
.chip .ic{display:none!important;}
.chip>svg:first-child{display:none!important;}

/* Hero pause/Video кнопки налезали на белый гребень гор (::after 132px) — поднять выше */
.hero-vidbtn{bottom:150px!important;}
@media(max-width:640px){.hero-vidbtn{bottom:150px!important;right:12px!important;}}
/* конец CRAFT PASS 2026-07-22 */

/* нотиф мобайл: прячем оперстатус (обрезался) — остаётся 1 чистая строка погода+статус-линк */
@media(max-width:720px){.notif .nf-live .live-summer.inline,.notif .nf-live .live-winter.inline{display:none!important;}}


/* ═══ PREMIUM PASS #1 2026-07-22 (grounded-аудит: топ AI-slop) ═══ */
/* [аудит #1, все шаблоны] ▲▲▲-divider над КАЖДОЙ eyebrow = хрестоматийный slop (закон 8) + центрирован (против лево-закона). Убираем — бренд несут лого/цвет/типографика/hero-гребень. */
.eyebrow::before{display:none!important;content:none!important;}

/* [аудит index] hero-pill .frische = глассморфизм-по-умолчанию (bg 18% white) + белый текст на пёстром фото = нечитаемо. Делаем читаемым: тёмный тинт + тень, лево. */
.hero .frische{background:rgba(16,28,44,.5)!important;border-color:rgba(255,255,255,.28)!important;text-shadow:0 1px 6px rgba(0,0,0,.55);backdrop-filter:none!important;}

/* [аудит grandview] отзывы 2 колонки на телефоне → рубленые строки. 1 колонка ≤560. */
@media(max-width:560px){.reviews{grid-template-columns:1fr!important;}}

/* [аудит index/tickets] развёрнутый пузырь Hirschi-FAB перекрывает контент на мобиле — прячем транзиентный greeting на всём мобиле (FAB остаётся). */
@media(max-width:720px){.hirschi-hint{display:none!important;}}
/* конец PREMIUM PASS #1 */


/* ═══ PREMIUM PASS #2 2026-07-22 (grounded-аудит: компоненты/пустоты/перекрытия) ═══ */
/* [component] синий значок-квадрат .actc-ico на карточках активностей — непоследовательный декор-slop */
.actc-ico,.exp-card .actc-ico{display:none!important;}
/* [component] декор-иконки на фильтр-чипах (.aud-chip) и тег-чипах (.tg) — text-only, консистентно */
.aud-chip .ic,.aud-chip>svg,.tg .ic,.tg>svg:first-child{display:none!important;}
/* [component] бейдж «Paketvorteil» (.pkm-badge) растягивался на всю ширину в flex-колонке — сжать по тексту */
.pkm-badge{align-self:flex-start!important;width:auto!important;}
/* [image] пустые провалы в карточных сетках — карточки по контенту, не тянутся под соседа */
.actgrid,.cardgrid{align-items:start;}
/* [overlap] FAB×sticky-CTA на money-мобиле: поднять FAB над баром (greeting-пузырь уже скрыт) */
@media(max-width:720px){
  .hirschi-fab{width:60px;height:60px;}
  body.has-stickycta .hirschi{bottom:84px;}
}
/* конец PREMIUM PASS #2 */


/* ═══ V1 POLISH #1 2026-07-23 (лево-закон: hero-контент) ═══ */
/* [аудит] .hero=display:flex, .hero .wrap без width → сжимался до ширины контента и margin:auto центрировал → hero вдавлен вправо на всех стр. Выравниваем по левому контент-краю (как breadcrumb/секции). */
.hero .wrap,.bp-hero .wrap{width:100%;}
/* конец V1 POLISH #1 */


/* ═══ V1 POLISH #2 2026-07-23 (AVT: типографика/читаемость) ═══ */
/* [аудит] .season-note был font-style:italic — целый справочный абзац курсивом читается дёшево. Прямое начертание (отличается цветом). */
.season-note{font-style:normal!important;}
/* [аудит] мера строки на текстовых/legal-страницах: абзацы-прямые-дети .sec .wrap не тянутся >70ch. */
.sec>.wrap>p{max-width:72ch;}
/* legal dl-подобные списки impressum/agb/datenschutz — читаемая колонка */
.sec>.wrap>ul,.sec>.wrap>ol{max-width:72ch;}
/* конец V1 POLISH #2 */


/* ═══ V1 POLISH #3 2026-07-23 (AVT: планшет-проход) ═══ */
/* [проход 768] Hirschi-greeting-пузырь перекрывал заголовки секций на планшете (hide был ≤720). Расширяем до ≤900 (весь компакт-режим). */
@media(max-width:900px){.hirschi-hint{display:none!important;}}
/* конец V1 POLISH #3 */


/* [проход 768/desktop] In-Aktion (.act-reel): портрет 9:16 был высоким (~498px) → секция высокая, caption короткий, пустота. Компактнее + top-align (без кропа рила). */
@media(min-width:561px){
  .act-reel{align-items:flex-start;justify-content:flex-start!important;}
  .act-reel .ar-frame{width:230px!important;flex-basis:230px!important;}
  .act-reel .ar-cap{align-self:flex-start;}
}


/* ═══ V1 POLISH #5 2026-07-23 (AVT 1024-проход: шапка не влезала) ═══ */
/* [1024] full-nav сворачивался только ≤900 → на 901-1180 nav+season-toggle+DE/EN+Ticketshop не влезали, Ticketshop (главный CTA) клипался за краем (overflow:clip). Сворачиваем в бургер до ≤1180. */
@media(max-width:1460px){
  header.site nav.main,.season-toggle{display:none!important;}
  header.site .burger{display:flex!important;align-items:center;justify-content:center;margin-left:auto;}
}
/* конец V1 POLISH #5 */


/* [FIX бага моего же #5] бургер-дропдаун должен работать на всём диапазоне сворачивания ≤1460 (был ≤900) */
@media(max-width:1460px){
  header.site .wrap{position:relative;}
  body.navopen nav.main{display:flex!important;flex-direction:column;position:absolute;top:100%;left:0;right:0;background:#fff;padding:10px 6px;gap:2px;box-shadow:0 16px 38px rgba(10,20,35,.18);border-radius:0 0 14px 14px;z-index:80;max-height:80vh;overflow-y:auto;}
  body.navopen nav.main a,body.navopen nav.main .navitem>a{padding:13px 10px;border-bottom:1px solid var(--hellgrau);font-size:16px;color:var(--anthrazit)!important;}
  body.navopen nav.main .navitem{display:block;}
}


/* [анти-slop] .statusrow имел border-left:4px (side-stripe, бан) — всегда синий = декор, статус уже в точке .lvl. Убираем side-stripe. */
.statusrow{border-left:none!important;}


/* ═══ ЦИКЛ 2 (арт-директор) 2026-07-23 ═══ */
/* Hirschi-greeting-пузырь (.hirschi-hint) перекрывал контент/money-CTA на десктопе (напр. Preisrechner «Im Shop kaufen»). Скрываем глобально — FAB-аватар остаётся (клик открывает помощь). Чище, без перекрытий. */
.hirschi-hint{display:none!important;}
/* конец ЦИКЛ 2 */

/* ---------- 2026-08-03: Wetter-Widget (.wxw) — сезонный live-виджет (index/sommer/winter) ---------- */
.wxw{display:flex;align-items:center;gap:20px 26px;flex-wrap:wrap;background:#fff;border-radius:16px;padding:16px 22px;box-shadow:var(--shadow);}
.wxw-main{display:flex;align-items:center;gap:14px;min-width:170px;}
.wxw-ico svg{width:46px;height:46px;color:var(--blau-dd);display:block;}
.wxw-temp{font-family:Montserrat;font-weight:800;font-size:32px;line-height:1;color:var(--blau-deep);}
.wxw-cond{font-size:13.5px;color:var(--grau);font-weight:600;margin-top:4px;}
.wxw-chips{display:flex;gap:10px;flex-wrap:wrap;}
body.winter .wxw-chips.only-winter{display:flex;} /* .only-winter даёт display:block — возвращаем flex */
.wxw-chip{background:var(--hellblau-l);border-radius:12px;padding:8px 14px;display:flex;flex-direction:column;gap:2px;}
.wxw-chip .wxw-k{font-size:11px;letter-spacing:.5px;color:var(--grau);font-weight:700;font-family:Montserrat;text-transform:uppercase;}
.wxw-chip b{font-size:15px;color:var(--blau-deep);}
.wxw-link{margin-left:auto;font-weight:700;font-size:14px;color:var(--blau-dd);text-decoration:none;white-space:nowrap;}
.wxw-link:hover{text-decoration:underline;text-underline-offset:3px;}
@media(max-width:640px){.wxw{gap:12px 16px;padding:14px 16px;}.wxw-link{margin-left:0;}}

/* OWN-21 (решение #21) уже реализовано выше (строка ~1525) — дубль удалён 03.08 */

/* ---------- 2026-08-03: узкие экраны — компактная DE/EN-пилюля, чтобы не теснить Ticketshop-CTA ---------- */
@media(max-width:420px){
  .lang-toggle{font-size:12px;}
  .lang-toggle span{padding:4px 8px;}
  header.site .btn.sm{padding:8px 12px;font-size:13px;}
}

/* ---------- 2026-08-03: notif на index (промо+лайв) не влезает 901–1440px — прячем второй статус-чип, температура и промо остаются ---------- */
@media(min-width:901px) and (max-width:1440px){
  .notif .wrap:has(.nf-mood) .live-summer,
  .notif .wrap:has(.nf-mood) .live-winter{display:none;}
}

/* ---------- 2026-08-03 v2: Winterbericht-карточка (правая колонка split-блока) ---------- */
.wxw-card{flex-direction:column;align-items:flex-start;gap:12px;}
.wxw-card .wxw-main{min-width:0;}

/* ---------- 2026-08-03: карта курорта (2000×1776) доминировала на странице ----------
   Ограничиваем и по ширине, и по высоте экрана: блок больше не выше ~65vh,
   пропорции сохраняются (object-fit:contain), полный размер — по клику. */
.resortmap{max-width:820px;margin:0 auto;display:block;}
.resortmap img{display:block;width:100%;height:auto;max-height:65vh;object-fit:contain;}
@media(max-width:640px){.resortmap img{max-height:none;}}

/* ---------- 2026-08-03: сезонные спотлайты планера — .only-* внутри grid-колонки не должны ломать сетку ---------- */
.aud-spot-media.only-summer,.aud-spot-media.only-winter{display:none;}
.aud-spot-media.only-summer{display:block;}
body.winter .aud-spot-media.only-summer{display:none;}
body.winter .aud-spot-media.only-winter{display:block;}

/* ---------- 2026-08-03 (фидбэк Саши, скрин index-winter) ---------- */
/* 1. Серая hero-пилюля (.frische) растягивалась: body.winter .only-winter даёт display:block и
      перебивает inline-block. Возвращаем компактность в обоих сезонах. */
.hero .frische.only-summer{display:inline-block;}
body.winter .hero .frische.only-summer{display:none;}
body.winter .hero .frische.only-winter{display:inline-block;}
/* 2. Кнопки видео (пауза + «Video») стояли в зоне горной маски (105px) — маска их накрывала,
      а разный right/размер делал их кривыми. Единая колонка над маской, один правый край. */
.hero-vidbtn{right:18px;bottom:122px;}
.hero-textbtn{right:18px;bottom:170px;}
@media (max-width:640px){
  .hero-vidbtn{right:14px;bottom:118px;width:42px;height:42px;}
  .hero-textbtn{right:14px;bottom:166px;height:38px;}
}
/* 3. Winterbericht: карточка погоды/снега — по центру своей колонки, не прилипает к краю. */
#wetter-heute .wxw-card{margin:0 auto;max-width:520px;width:100%;}

/* ---------- 2026-08-03: сезонные карточки в .actgrid — display:block от .only-* не должен убивать grid-item ---------- */
.actgrid .only-summer{display:block;}
.actgrid .only-winter{display:none;}
body.winter .actgrid .only-summer{display:none;}
body.winter .actgrid .only-winter{display:block;}

/* ---------- 2026-08-03 (свип): одиночная карточка пакета растягивалась на всю ширину с гигантским фото ---------- */
.pkt-grid > *{max-width:560px;}
.pkt-grid:has(> .only-summer:only-of-type),.pkt-grid:has(> .only-winter:only-of-type){justify-content:start;}

/* ---------- 2026-08-04: мобайл — контролы видео уходят в верхний правый угол hero ----------
   Внизу hero на мобиле места нет: текст доходит до горной маски, кнопки налезали на трастовую
   строку (скрин Саши + свой скрин). Сверху справа свободно (слева только eyebrow). */
@media (max-width:640px){
  .hero-vidbtn{top:14px;bottom:auto;right:14px;width:38px;height:38px;}
  .hero-textbtn{top:14px;bottom:auto;right:60px;height:38px;padding:0 12px;}
}

/* ---------- 2026-08-04: зимний hero-H1 (div.hero-h1) наследовал line-height текста — строки разъезжались ---------- */
.hero .hero-h1{line-height:1.1;margin:0 0 12px;}

/* ---------- 2026-08-04 (свип активностей): офф-сезонные заметки в booking-card по РЕАЛЬНОЙ дате ----------
   .only-* мертвы на страницах с форс-сезоном (data-season) — заметка «Im Winter geschlossen»
   на летней странице никогда не показывалась. real-winter/real-summer ставит _SEASONBOOT по дате. */
.rwin-note,.rsum-note{display:none;}
html.real-winter .rwin-note{display:block;}
html.real-summer .rsum-note{display:block;}

/* ---------- 2026-08-04 (свип остатка) ---------- */
/* uebersicht на мобиле: 80 карточек-заглушек растягивались в километр — плотнее и ниже */
@media(max-width:640px){
  body.en .cardgrid .exp-card .ph.ph-a,body.en .cardgrid .exp-card .ph.ph-b,body.en .cardgrid .exp-card .ph.ph-c,
  body.en .cardgrid .exp-card .ph.ph-d,body.en .cardgrid .exp-card .ph.ph-e,body.en .cardgrid .exp-card .ph.ph-f{height:56px;font-size:13px;}
}
/* одиночная карточка неполного ряда прижимается к левому краю (заголовки секций левые) */
.cardgrid>*:only-child{margin-right:auto;max-width:560px;}

/* ---------- 2026-08-04: калькулятор v2 — групповые счётчики и брейкдаун ---------- */
.calc-grps{display:flex;gap:10px 18px;flex-wrap:wrap;margin-bottom:12px;}
.calc-grp{display:flex;align-items:center;gap:8px;background:#fff;border-radius:12px;padding:8px 12px;box-shadow:var(--shadow);font-size:14px;}
.calc-grp span{font-family:Montserrat;font-weight:600;color:var(--dunkel);}
.calc-grp button{width:30px;height:30px;border-radius:50%;border:1px solid var(--hellblau);background:var(--hellblau-l);color:var(--blau-dd);font-size:17px;font-weight:800;cursor:pointer;line-height:1;}
.calc-grp button:hover{background:var(--hellblau);}
.calc-grp b{min-width:18px;text-align:center;font-family:Montserrat;}
.calc-bd{margin-top:8px;font-size:13.5px;color:var(--dunkel);background:#fff;border-radius:10px;padding:10px 14px;line-height:1.6;}

/* ---------- 2026-08-04 (охота по компонентам) ---------- */
/* Ритм секций: в окне 761–899px действовал base 72px — БОЛЬШЕ десктопных 52px. Планшет = между мобилом и десктопом. */
@media(min-width:761px) and (max-width:899px){.sec{padding:46px 0;}.sec-sm{padding:30px 0;}}
/* ~700 интерактивных карточек были «мёртвыми» рядом с анимированными exp-card — единый лёгкий hover */
.actc,.dl-card,.aud-spot .aud-actchip,.statusrow,.pkm{transition:transform .18s ease,box-shadow .18s ease;}
.actc:hover,.dl-card:hover,.pkm:hover{transform:translateY(-3px);box-shadow:0 10px 26px rgba(15,30,50,.14);}
.statusrow:hover{transform:translateX(3px);}
a.aud-actchip:hover{background:var(--hellblau);}

/* ---------- 2026-08-04: тап-зоны (сезон/мобайл-охота): футер, крошки, чипы, hp-close ---------- */
footer.site a{display:inline-block;padding:5px 2px;}
.crumbs a{display:inline-block;padding:9px 4px;}
.hp-close{min-width:40px;min-height:40px;display:inline-flex;align-items:center;justify-content:center;}
@media(max-width:640px){.chip{padding:9px 14px;}}

/* ---------- 2026-08-04: детальный статус трасс на live (лето: 14 трейлов, зима: пиcты по легенде) ---------- */
.trailstatus{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:8px;margin-top:8px;}
.ts-row{display:flex;align-items:center;gap:9px;background:rgba(255,255,255,.08);border-radius:11px;padding:9px 13px;color:#fff;font-size:13.5px;text-decoration:none;}
a.ts-row:hover{background:rgba(255,255,255,.15);}
.ts-row b{font-family:Montserrat;min-width:26px;}
.ts-dot{width:13px;height:13px;flex:0 0 13px;border-radius:50%;}
.ts-blue{background:#3b7dc9;}
.ts-red{background:#d64545;}
.ts-black{background:#16181c;border-radius:3px;transform:rotate(45deg);width:11px;height:11px;flex-basis:11px;}
.ts-purple{background:#8b5cb8;}
.ts-green{background:#3f9e57;}
.ts-diff{color:#9aa0a8;font-size:12px;}
.ts-state{margin-left:auto;color:#7fe08a;font-size:12px;font-weight:700;white-space:nowrap;}
@media(max-width:640px){.trailstatus{grid-template-columns:1fr;}}

/* ---------- 2026-08-04: снег столбиком (как температурные бары) + иконка качества ---------- */
.wxw-snowcol{flex-direction:row;align-items:center;gap:10px;}
.snowbar{width:16px;height:44px;background:var(--hellblau-l);border:1px solid var(--hellblau);border-radius:8px;display:flex;align-items:flex-end;overflow:hidden;}
.snowbar span{display:block;width:100%;background:linear-gradient(180deg,#bcd9f0,#75abd6);border-radius:0 0 7px 7px;transition:height .5s ease;}
.wxw-qico{color:var(--blau-dd);display:inline-flex;}
.wxw-qico svg{display:block;}


/* ---------- 2026-08-11 НОЧЬ S15: кнопки hero-видео — одна аккуратная линия справа внизу ---------- */
.hero-vidbtn{right:16px !important;bottom:16px !important;}
.hero-textbtn{right:64px !important;bottom:16px !important;height:40px;}
@media (max-width:640px){
  .hero-vidbtn{width:40px;height:40px;right:12px !important;bottom:12px !important;}
  .hero-textbtn{right:60px !important;bottom:12px !important;height:40px;font-size:12px;padding:0 12px;}
}
/* S10: читаемость — live-статус трасс (diff сливался), формы на hellblau-l, светлые заголовки на фото */
.ts-diff{color:#c3ccd6;}
.ts-row{background:rgba(255,255,255,.12);}
.formgrid label{color:var(--anthrazit);font-weight:700;}
/* S10: bikepark #tickets — фон явно тёмный (h2 белый мог оказаться на светлой соседке) */
body.bikepark .bp-section{background:var(--bikedark);}
/* S6: свёрнутый прайс другого сезона */
.season-alt{margin:14px 0;background:#fff;border:1.5px solid var(--hellblau);border-radius:14px;padding:0 16px;}
.season-alt>summary{cursor:pointer;font-family:Montserrat;font-weight:700;color:var(--blau-dd);padding:14px 0;list-style:none;}
.season-alt>summary::before{content:"▸ ";}
.season-alt[open]>summary::before{content:"▾ ";}
.season-alt[open]{padding-bottom:14px;}

/* ---------- 2026-08-11 НОЧЬ S2 v2: колонки по ЧИСЛУ ВИДИМЫХ карточек (data-vis ставит app.js —
   nth-child не годится: сезонно скрытые карточки считаются) ---------- */
.cardgrid[data-vis="4"],.cardgrid[data-vis="7"],.cardgrid[data-vis="8"],
.cardgrid[data-vis="11"],.cardgrid[data-vis="12"]{grid-template-columns:repeat(4,1fr);}
.cardgrid[data-vis="5"],.cardgrid[data-vis="10"]{grid-template-columns:repeat(5,1fr);}
@media(max-width:1100px){
  .cardgrid[data-vis]{grid-template-columns:repeat(2,1fr)!important;}
}
@media(max-width:640px){
  .cardgrid[data-vis]{grid-template-columns:1fr!important;}
}

/* ---------- 2026-08-11 НОЧЬ: SVG-иконки floatpanel (размер обязателен, иначе невидимы) ---------- */
.floatpanel .fp-ic{display:flex;align-items:center;justify-content:center;}
.floatpanel .fp-ic svg{width:21px;height:21px;display:block;}

/* ---------- 2026-08-11 НОЧЬ I1: нотиф-полоса — единый шрифт, ничего не обрезается ---------- */
.notif{font-family:Montserrat,system-ui,sans-serif;font-size:12.5px;font-weight:600;letter-spacing:.2px;}
.notif .wrap{height:auto;min-height:38px;padding-top:4px;padding-bottom:4px;overflow:visible;}
.notif a,.notif .nf-live span{font-weight:600;}
.notif b{font-weight:800;}
@media(max-width:700px){
  .notif{font-size:12px;}
  .notif .wrap{gap:6px 14px;}
  .notif .live-summer,.notif .live-winter{display:none;}  /* на телефоне только температура+ссылка — без обрезанных статусов */
}

/* ---------- 2026-08-11 НОЧЬ I4: равные высоты карточек в сетках ---------- */
.cardgrid .exp-card{display:flex;flex-direction:column;}
.cardgrid .exp-card .body{flex:1;display:flex;flex-direction:column;}
.cardgrid .exp-card .body>:last-child{margin-top:auto;}

/* ---------- 2026-08-11 НОЧЬ T1: калькулятор + допродажа справа ---------- */
@media(max-width:860px){.calc-wrap{grid-template-columns:1fr!important;}}
.calc-aside .exp-card{box-shadow:var(--shadow);}

/* ---------- 2026-08-11 НОЧЬ H6: таймлайн истории отеля ---------- */
.hist-tl{margin-top:14px;display:flex;flex-direction:column;gap:12px;}
.hist-row{display:grid;grid-template-columns:76px 1fr;gap:14px;align-items:start;}
.hist-row b{font-family:Montserrat;font-size:20px;font-weight:800;color:#9fc4e8;line-height:1.3;}
.hist-row span{font-size:14.5px;color:#dbe5ee;line-height:1.65;}

/* ---------- 2026-08-11 НОЧЬ H7/S10 v2: labels форм — тёмные на светлых секциях, светлые только в .formbox (градиент gruppen) ---------- */
.formgrid .ff label{color:var(--anthrazit);}
.formbox .formgrid .ff label{color:#dfeaf3;}

/* ---------- 2026-08-11 НОЧЬ S10 v3: тёмные (экс-беж) секции — прямые тексты и ссылки читаемы.
   Только прямые дети .wrap — тексты ВНУТРИ белых карточек (.exp-card и т.п.) не трогаем. ---------- */
section[style*="var(--beige-l)"] .wrap>p{color:#dbe5ee!important;}
section[style*="var(--beige-l)"] .wrap>p a:not(.btn){color:#cfe6ff!important;text-decoration:underline;text-underline-offset:2px;}
section[style*="var(--beige-l)"] .wrap>.season-note{color:#b8c9d8!important;}

/* ---------- 2026-08-11 НОЧЬ P1/P6: рилсы крупнее на десктопе, подпись объёмнее ---------- */
@media(min-width:900px){
  .ar-frame{width:250px;flex-basis:250px;}
  .ar-cap{font-size:15px;}
}

/* ---------- 2026-08-11 НОЧЬ I2: дропдаун статуса в нотиф-полосе (hover/фокус, деликатно) ---------- */
.nf-drop{position:relative;cursor:default;}
.nf-drop .nf-panel{display:none;position:absolute;top:calc(100% + 8px);left:0;z-index:80;min-width:250px;
  background:#fff;color:var(--anthrazit);border-radius:12px;box-shadow:0 10px 34px rgba(10,25,40,.25);
  padding:12px 14px;flex-direction:column;gap:6px;font-size:13px;font-weight:500;}
.nf-drop:hover .nf-panel,.nf-drop:focus-within .nf-panel{display:flex;}
.nf-drop .nf-panel b{font-family:Montserrat;font-size:12px;letter-spacing:.6px;text-transform:uppercase;color:var(--grau);}
.nf-drop .nf-panel a{color:var(--blau-dd);font-weight:700;margin-top:4px;}
@media(max-width:700px){.nf-drop .nf-panel{display:none!important;}}  /* на мобиле статус скрыт (I1) — дроп не нужен */

/* ---------- 2026-08-11 НОЧЬ L-волна: hover ghost2 на bikepark-hero (FIX-098) ---------- */
.bp-hero .btn.ghost2:hover{background:rgba(255,255,255,.22);border-color:#fff;}
/* L-волна №23: одинокая карточка в сетке — не на всю ширину */
.cardgrid[data-vis="1"]{grid-template-columns:minmax(0,560px);justify-content:start;}
