/* Luminous capsules. Scroll-owned transforms and touch targets remain unchanged. */
:is(.editorial-link,.explore,.finale-cta,.whatsapp-fixed,.panel-close,:where(.finale-socials) button,.finale-phone,.finale-email,.contact-email) {
  --capsule-a:#5d70ff; --capsule-b:#ff657e;
  position:relative; isolation:isolate; overflow:hidden; box-sizing:border-box;
  border:1px solid transparent; border-radius:999px; min-height:44px;
  padding:12px 20px; color:#fff; text-decoration:none;
  background:linear-gradient(135deg,#222331f5,#10131df5) padding-box,linear-gradient(120deg,#ffffffb0,var(--capsule-a),var(--capsule-b),#fff2) border-box;
  box-shadow:inset 0 1px 0 #ffffff38,inset 0 -5px 13px #7b6aff20,0 4px 15px #0003;
  transition:box-shadow .3s,background-color .3s,color .3s,scale .4s cubic-bezier(.2,.9,.25,1.4);
  -webkit-tap-highlight-color:transparent; touch-action:manipulation;
}
:is(.editorial-link,.explore,.finale-cta,.whatsapp-fixed,.panel-close,:where(.finale-socials) button,.finale-phone,.finale-email,.contact-email)::after {
  content:""; position:absolute; inset:0; z-index:-1; pointer-events:none; border-radius:inherit;
  background:radial-gradient(ellipse at var(--light-x,30%) var(--light-y,0%),#ffffff45,transparent 65%);
  opacity:.65; transition:opacity .25s;
}
.hero-cta,.finale-cta { background:linear-gradient(115deg,#3146a8,#6843a8 50%,#a52d55) padding-box,linear-gradient(125deg,#c2eaff,#8b76ff,#ff9aab,#fff) border-box; box-shadow:inset 0 1px 0 #fff6,inset 0 -5px 12px #c6acff35,0 3px 18px #5949ff30; }
.editorial-link:hover,.finale-cta:hover,.whatsapp-fixed:hover { color:#fff; background-color:transparent; }
.finale-cta:hover { background:linear-gradient(115deg,#3c51b9,#774ebd 50%,#b93964) padding-box,linear-gradient(125deg,#c2eaff,#8b76ff,#ff9aab,#fff) border-box; }
.whatsapp-fixed:hover { background:linear-gradient(125deg,#204c42f5,#1b3b44f5) padding-box,linear-gradient(120deg,#c2ffe3,#4bbf9d,#9eb8ff) border-box; }
.editorial-link { gap:16px; font-size:10px; line-height:1.4; }
.editorial-link span { font-size:18px; }
.hero-cta { width:max-content; max-width:100%; margin-top:8px; }
.explore { display:inline-flex; align-items:center; gap:10px; font-size:8px; padding:10px 15px; min-height:44px; letter-spacing:.08em; background:linear-gradient(135deg,#1d202de6,#11151de6) padding-box,linear-gradient(100deg,#fff7,#fff1) border-box; }
.explore span { margin:0; font-size:17px; }
.whatsapp-fixed { position:fixed; --capsule-a:#74efbf; --capsule-b:#79bcff; background:linear-gradient(125deg,#173c35f5,#142c33f5) padding-box,linear-gradient(120deg,#c2ffe3,#4bbf9d,#9eb8ff) border-box; box-shadow:inset 0 1px 0 #fff5,0 3px 19px #1bba8225; }
.panel-close { display:inline-flex; align-items:center; gap:16px; padding:10px 18px; font-size:9px; }
.panel-close span { font-size:19px; }
.finale-cta { font-size:12px; min-height:56px; padding:16px 23px; }
.finale-contact :is(.finale-phone,.finale-email) { display:inline-flex; align-items:center; justify-content:center; font-size:12px; padding:10px 18px; background:linear-gradient(120deg,#8a233280,#601e3280) padding-box,linear-gradient(120deg,#fff8,#fff2) border-box; }
.contact-email { display:inline-flex; align-items:center; font-size:clamp(12px,3.3vw,20px); max-width:100%; overflow-wrap:anywhere; }
:where(.finale-socials) button:disabled { color:#ffffffb3; background:linear-gradient(120deg,#962b3970,#5e283a70) padding-box,linear-gradient(120deg,#ffffff70,#ffffff20) border-box; box-shadow:none; cursor:not-allowed; }
.site-specs .editorial-link { color:#fff; padding:10px 16px; }
.site-panel .editorial-link { margin:0 10px 18px 0; }
.teaser-heading .editorial-link { padding:10px 14px; gap:8px; }
.location-link { border:1px solid #ffffff35; border-radius:26px; padding:23px 26px; margin:15px 0; background:radial-gradient(ellipse at var(--light-x,10%) var(--light-y,0%),#6266ba30,transparent 65%),linear-gradient(120deg,#20222b,#14171d); box-shadow:inset 0 1px 0 #fff2; transition:scale .4s cubic-bezier(.2,.9,.25,1.4),border-color .3s; }
.location-link>span:last-child { display:inline-flex; padding:9px 14px; border:1px solid #ffffff40; border-radius:999px; background:linear-gradient(110deg,#353c63,#38304d); margin-top:10px; }
.teaser-photos button { border-radius:22px; border:1px solid #ffffff55; box-shadow:inset 0 1px 0 #fff4; transition:scale .4s cubic-bezier(.2,.9,.25,1.4); }
.side-menu :is(button,a)::before { width:28px; height:24px; left:8px; top:10px; border-radius:999px; background:radial-gradient(ellipse at 30% 12%,#ffffffbd,transparent 56%),linear-gradient(150deg,var(--dot),#161827); box-shadow:inset 0 1px 0 #ffffffa0,inset 0 -2px 3px #0005,0 0 12px color-mix(in srgb,var(--dot) 35%,transparent); transition:scale .4s cubic-bezier(.2,.9,.25,1.4),box-shadow .25s; }
.side-menu [data-panel="locations"] { --dot:#7f81b0; }
.side-menu [data-panel="crew"] { --dot:#647cff; }
.side-menu [data-panel="clients"] { --dot:#e4e7f0; }
.side-menu [data-panel="contact"] { --dot:#ff657e; }
.side-menu :is(button,a):active::before { scale:.86; }
:is(.editorial-link,.explore,.finale-cta,.whatsapp-fixed,.panel-close,.finale-phone,.finale-email,.contact-email,.location-link,.teaser-photos button):active { scale:.96; opacity:1; }
:is(.editorial-link,.explore,.finale-cta,.whatsapp-fixed,.panel-close,.finale-phone,.finale-email,.contact-email,.location-link,.teaser-photos button,.side-menu :is(button,a)):focus-visible { outline:2px solid #fff; outline-offset:4px; }
@media(hover:hover) and (pointer:fine) {
  :is(.editorial-link,.explore,.finale-cta,.whatsapp-fixed,.panel-close,.finale-phone,.finale-email,.contact-email):hover { box-shadow:inset 0 1px 0 #fff8,inset 0 -4px 14px #b9abff40,0 0 22px #877bff40; }
  :is(.editorial-link,.explore,.finale-cta,.whatsapp-fixed,.panel-close):hover::after { opacity:1; }
  .side-menu :is(button,a):hover::before { scale:1.14; }
  .location-link:hover { border-color:#a99bff; }
}
@media(max-width:400px) { .teaser-heading { gap:8px; } .teaser-heading .eyebrow { font-size:8px; } .editorial-link { font-size:9px; padding:11px 15px; } .finale-cta { font-size:10px; } }
@media(prefers-reduced-motion:reduce) {
  :is(.editorial-link,.explore,.finale-cta,.whatsapp-fixed,.panel-close,:where(.finale-socials) button,.finale-phone,.finale-email,.contact-email,.location-link,.teaser-photos button),.side-menu :is(button,a)::before { transition:none; }
}

/* Compact flat-gradient navigation: centered right, labels always readable. */
.side-menu { top:50%; bottom:auto; left:auto; right:max(12px,env(safe-area-inset-right)); transform:translateY(-50%); align-items:flex-end; gap:5px; }
.side-menu :is(button,a),.side-menu :is(button,a):hover {
  position:relative; display:flex; align-items:center; justify-content:space-between;
  width:calc(112px + var(--rail-stretch,1)*20px); height:44px; min-height:44px;
  padding:0 13px; gap:7px; border:0; border-radius:999px;
  background:linear-gradient(110deg,var(--rail-a),var(--rail-b));
  color:#10151b; font:700 10px/1.15 Arial,sans-serif; letter-spacing:0;
  box-shadow:none; backdrop-filter:none; text-align:left; overflow:hidden;
  transition:width .5s cubic-bezier(.2,.85,.25,1.15),filter .25s;
}
.side-menu :is(button,a)::before,.side-menu :is(button,a)::after { content:none; }
.side-menu :is(button,a) span { color:inherit; }
.side-menu :is(button,a) .rail-arrow { font-size:16px; flex-shrink:0; }
.side-menu [data-panel="locations"] { --rail-a:#12b6d5; --rail-b:#65a8ff; }
.side-menu [data-panel="crew"] { --rail-a:#ff704c; --rail-b:#ffae25; }
.side-menu [data-panel="clients"] { --rail-a:#f275b5; --rail-b:#d78bea; }
.side-menu [data-panel="contact"] { --rail-a:#18cbb4; --rail-b:#4bdf7e; }
.side-menu :is(button,a):focus-visible { width:164px; outline:2px solid white; outline-offset:3px; }
.side-menu :is(button,a):active { filter:brightness(1.12); }
@media(hover:hover) and (pointer:fine) { .side-menu :is(button,a):hover { width:164px; } }
@media(max-width:600px) {
  .side-menu { right:max(8px,env(safe-area-inset-right)); gap:3px; }
  .side-menu :is(button,a),.side-menu :is(button,a):hover { width:calc(101px + var(--rail-stretch,1)*13px); padding:0 10px; font-size:9px; }
  .side-menu :is(button,a):focus-visible { width:132px; }
}
@media(prefers-reduced-motion:reduce) { .side-menu :is(button,a) { transition:none; } }

/* Edge tabs: half concealed until selected; no decorative arrows. */
.side-menu { right:0; }
.side-menu :is(button,a),.side-menu :is(button,a):hover {
  width:144px; justify-content:flex-start; padding:0 18px;
  translate:50% 0;
  transition:translate .45s cubic-bezier(.2,.85,.25,1.1),filter .25s;
}
.side-menu :is(button,a) span { white-space:nowrap; }
.side-menu :is(button,a):focus-visible,.side-menu :is(button,a).is-expanded { width:144px; translate:8% 0; }
@media(hover:hover) and (pointer:fine) { .side-menu :is(button,a):hover { translate:8% 0; } }
@media(max-width:600px) {
  .side-menu { right:0; }
  .side-menu :is(button,a),.side-menu :is(button,a):hover,.side-menu :is(button,a):focus-visible { width:132px; padding:0 15px; }
}
@media(prefers-reduced-motion:reduce) { .side-menu :is(button,a) { transition:none; } }

/* The scroll controller floats this rail from center-right to the top corner.
   Smaller colored faces keep a 44px tap target and expand on touch or focus. */
.side-menu {
  --rail-dock: 0;
  top: max(23px, env(safe-area-inset-top));
  bottom: auto;
  transform: translate3d(0, 0, 0);
}
.side-menu :is(button,a), .side-menu :is(button,a):hover {
  isolation: isolate;
  background: none;
  translate: calc(50% + (50% - 44px) * var(--rail-dock)) 0;
}
.side-menu :is(button,a)::before {
  content: '';
  position: absolute;
  z-index: -1;
  inset: calc(var(--rail-dock) * 10px) 0;
  width: auto;
  height: auto;
  border-radius: 999px;
  background: linear-gradient(110deg, var(--rail-a), var(--rail-b));
  box-shadow: none;
  transition: inset .3s ease;
}
.side-menu :is(button,a) span { opacity: calc(1 - var(--rail-dock)); transition: opacity .2s; }
.side-menu :is(button,a).is-expanded, .side-menu :is(button,a):focus-visible { translate: 8% 0; }
.side-menu :is(button,a).is-expanded::before, .side-menu :is(button,a):focus-visible::before { inset: 0; animation: none; }
.side-menu :is(button,a).is-expanded span, .side-menu :is(button,a):focus-visible span { opacity: 1; }
.side-menu :is(button,a)::before { animation: rail-float 4.5s ease-in-out infinite; }
.side-menu :is(button,a):nth-child(2)::before { animation-delay: -.7s; }
.side-menu :is(button,a):nth-child(3)::before { animation-delay: -1.4s; }
.side-menu :is(button,a):nth-child(4)::before { animation-delay: -2.1s; }
.side-menu.is-docked button.is-expanded::before, .side-menu.is-docked button:focus-visible::before { animation: none; }
@keyframes rail-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(var(--rail-float, 0px)); } }
@media (hover: hover) and (pointer: fine) {
  .side-menu :is(button,a):hover { translate: 8% 0; }
  .side-menu :is(button,a):hover::before { inset: 0; animation: none; scale: 1; }
  .side-menu :is(button,a):hover span { opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
  .side-menu :is(button,a)::before { animation: none; }
  .side-menu :is(button,a)::before, .side-menu :is(button,a) span { transition: none; }
}

/* Beside the contracted headline: four aligned rows with readable labels.
   Retraction changes width only; the compact stack keeps its measured position. */
.side-menu { --rail-open: 0; --rail-align: 0; gap: 4px; }
.side-menu :is(button,a),
.side-menu :is(button,a):hover,
.side-menu :is(button,a):focus-visible,
.side-menu :is(button,a).is-expanded {
  width: var(--rail-width, 132px);
  height: var(--rail-height, 44px);
  min-height: var(--rail-height, 44px);
  padding-left: calc(15px + var(--rail-open) * 8px);
  font-size: calc(10px + var(--rail-open) * 2px);
}
.side-menu :is(button,a), .side-menu :is(button,a):hover {
  translate: calc((50% + (50% - 44px) * var(--rail-dock)) * (1 - var(--rail-open))) 0;
}
.side-menu :is(button,a)::before { inset: var(--rail-inset, 0px) 0; }
.side-menu :is(button,a) span { opacity: calc(1 - var(--rail-dock) + var(--rail-open)); }
/* Floating amplitude fades continuously to zero beside the headline. */
.side-menu :is(button,a).is-expanded, .side-menu :is(button,a):focus-visible { translate: 0 0; }
.side-menu :is(button,a).is-expanded::before, .side-menu :is(button,a):focus-visible::before { inset: 0; }
.side-menu :is(button,a).is-expanded span, .side-menu :is(button,a):focus-visible span { opacity: 1; }
@media (hover: hover) and (pointer: fine) {
  .side-menu :is(button,a):hover { translate: 0 0; }
  .side-menu :is(button,a):hover::before { inset: 0; }
  .side-menu :is(button,a):hover span { opacity: 1; }
}


/* Native links share the same edge-tab palette and animation as panel controls. */
.side-menu a { text-decoration:none; box-sizing:border-box; }
.side-menu .rail-link { --rail-a:#ffe500; --rail-b:#ffef66; --dot:#ffe500; }
.side-menu :is(button,a):nth-child(5)::before { animation-delay:-2.8s; }

/* Masaryk uses the existing edge-tab system; no separate home overlay. */
.side-menu .rail-masaryk { --rail-a:#f275b5; --rail-b:#d78bea; --dot:#e4e7f0; }
.side-menu :is(button,a):nth-child(6)::before { animation-delay:-3.5s; }
