/* Contact v88 candidate.
   Page-owned presentation transferred from the historical v87 Contact baseline.
   Shared header, navigation, theme and language presentation remain outside this file. */

body[data-page="contact"]{
  min-width:320px;
  background:var(--bg);
  color:var(--ink);
  -webkit-font-smoothing:antialiased;
}
body[data-page="contact"] .contact-page{
  min-height:0;
  overflow:hidden;
}
body[data-page="contact"] .contact-page a{
  color:inherit;
  text-decoration:none;
}
body[data-page="contact"] .contact-page a:focus-visible,
body[data-page="contact"] .contact-page button:focus-visible,
body[data-page="contact"] .contact-page textarea:focus-visible,
body[data-page="contact"] .contact-page input:focus-visible{
  outline:2px solid var(--orange);
  outline-offset:4px;
}

.contact-hero{
  position:relative;
  min-height:100svh;
  display:grid;
  grid-template-columns:minmax(0,1.18fr) minmax(280px,.72fr);
  align-items:center;
  gap:8vw;
  padding:clamp(8.5rem,15vh,11rem) 8vw 7rem;
}
body[data-page="contact"] .kicker{
  margin:0 0 1.7rem;
  color:var(--orange);
  font-size:.72rem;
  font-weight:600;
  letter-spacing:.23em;
  text-transform:uppercase;
}
body[data-page="contact"] :is(h1,.legal-heading h2){
  margin:0;
  font-family:"CHARUS Outfit",Arial,Helvetica,sans-serif;
  font-weight:var(--headline-weight);
  letter-spacing:-.045em;
  -webkit-text-stroke:var(--headline-grade-stroke) currentColor;
  paint-order:stroke fill;
}
body[data-page="contact"] h1{
  max-width:820px;
  font-size:clamp(3.45rem,6.8vw,7.4rem);
  line-height:.94;
}
.round-dot{
  display:inline-block;
  width:.15em;
  height:.15em;
  margin-left:.24em;
  border-radius:50%;
  background:var(--orange);
  vertical-align:-.015em;
}
.exchange-prefix,
.exchange-change{color:var(--ink)}
.exchange-change{will-change:color}

.hero-contact{
  position:relative;
  z-index:2;
  align-self:center;
  padding-top:4rem;
}
.contact-stack{
  display:grid;
  gap:1.9rem;
  width:min(100%,30rem);
}
.contact-channel{
  display:grid;
  gap:.62rem;
  align-items:start;
}
.channel-label{
  display:none;
  color:var(--muted);
  font-size:.76rem;
  font-weight:600;
  letter-spacing:.16em;
  text-transform:uppercase;
}
.hero-email-target{
  min-height:2.3rem;
  display:inline-flex;
  align-items:center;
  justify-content:flex-start;
}
.hero-email-reveal{
  min-height:2.3rem;
  display:inline-flex;
  align-items:center;
  gap:.28rem;
  margin:0;
  padding:0 0 .24rem;
  border:0;
  border-bottom:1px solid color-mix(in srgb,var(--orange) 42%,transparent);
  background:transparent;
  color:color-mix(in srgb,var(--ink) 74%,var(--muted) 26%);
  font:inherit;
  font-size:clamp(1.25rem,2vw,1.75rem);
  font-weight:400;
  line-height:1.2;
  cursor:pointer;
  opacity:.92;
  transition:color .18s ease,border-color .18s ease,opacity .18s ease,transform .18s ease,gap .28s ease;
}
.hero-email-reveal svg{
  width:1.96rem;
  height:1.46rem;
  flex:0 0 auto;
  display:block;
  fill:none;
  stroke:currentColor;
  stroke-width:1.6;
  stroke-linecap:round;
  stroke-linejoin:round;
  transform:translateY(.06em);
  transition:opacity .22s ease,transform .3s ease,width .28s ease,margin .28s ease;
}
.hero-email-address{
  display:inline-flex;
  align-items:center;
  min-width:0;
  white-space:nowrap;
}
.hero-email-local{
  display:inline-block;
  max-width:0;
  overflow:hidden;
  opacity:0;
  transform:translateX(-.22em);
  white-space:nowrap;
  transition:max-width .46s cubic-bezier(.22,.61,.36,1),opacity .2s ease,transform .46s cubic-bezier(.22,.61,.36,1);
}
.hero-email-reveal.is-revealed .hero-email-local{
  max-width:9.25ch;
  opacity:1;
  transform:translateX(0);
}
.hero-email-reveal.is-revealed{gap:0}
.hero-email-reveal.is-revealed svg{
  width:0;
  margin-right:0;
  opacity:0;
  transform:translateY(.08em) scale(.88);
  overflow:hidden;
}
.hero-email-domain{
  display:inline-block;
  margin-left:-.02em;
  white-space:nowrap;
}
.hero-email-reveal:is(:hover,:focus-visible){
  color:var(--ink);
  border-bottom-color:color-mix(in srgb,var(--orange) 72%,transparent);
  opacity:1;
  transform:translateY(-1px);
}
.hero-email-reveal:active{transform:translateY(0) scale(.99)}

.message-shell,
.calendar-shell{width:min(100%,31.5rem)}
.action-row{
  position:relative;
  display:block;
  min-width:0;
}
.contact-action{
  --action-hit-h:2.5rem;
  --action-visual-h:2rem;
  --action-outline:color-mix(in srgb,var(--ink) 28%,transparent);
  --action-surface:color-mix(in srgb,var(--bg) 96%,var(--ink) 4%);
  position:absolute;
  isolation:isolate;
  left:calc(-1 * (4.5rem + 1rem));
  top:50%;
  width:4.5rem;
  height:var(--action-hit-h);
  display:grid;
  place-items:center;
  margin:0;
  padding:0;
  border:0;
  background:transparent;
  color:var(--ink);
  font:inherit;
  font-size:.84rem;
  line-height:1;
  letter-spacing:.01em;
  cursor:pointer;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transform:translateY(-50%);
  transition:transform .18s ease,color .2s ease,opacity .2s ease,filter .2s ease,visibility 0s linear .2s;
}
.contact-action::after{
  content:"";
  position:absolute;
  z-index:-1;
  left:50%;
  top:50%;
  width:100%;
  height:var(--action-visual-h);
  transform:translate(-50%,-50%);
  border:1px solid var(--action-outline);
  border-radius:999px;
  background:var(--action-surface);
  box-shadow:0 0 0 1px color-mix(in srgb,var(--bg) 74%,transparent) inset,0 1px 2px color-mix(in srgb,var(--ink) 7%,transparent);
  transition:border-color .2s ease,background-color .2s ease,transform .18s ease,box-shadow .2s ease;
}
html[data-theme="dark"] .contact-action{
  --action-outline:color-mix(in srgb,var(--ink) 26%,transparent);
  --action-surface:color-mix(in srgb,var(--bg) 90%,var(--ink) 10%);
}
.contact-action.is-visible{
  opacity:1;
  visibility:visible;
  transition-delay:0s;
}
.contact-action.is-visible:not([disabled]){pointer-events:auto}
.contact-action:hover{transform:translateY(calc(-50% - .5px))}
.contact-action:hover::after{
  border-color:color-mix(in srgb,var(--ink) 40%,transparent);
  background:color-mix(in srgb,var(--ink) 4%,var(--bg));
  transform:translate(-50%,-50%) scale(1.02);
}
.contact-action:active{transform:translateY(-50%) scale(.98)}
.contact-action[disabled]{
  color:color-mix(in srgb,var(--ink) 34%,transparent);
  filter:saturate(.7);
}
.contact-action[disabled]::after{
  border-color:color-mix(in srgb,var(--ink) 14%,transparent);
  background:color-mix(in srgb,var(--bg) 98%,var(--ink) 2%);
}
.contact-action.is-visible[data-tooltip-when="disabled"][disabled],
.contact-action.is-visible[data-tooltip-when="always"]{
  z-index:20;
  pointer-events:auto;
}
.contact-action[data-tooltip]::before{
  content:attr(data-tooltip);
  position:absolute;
  right:calc(100% + .58rem);
  bottom:50%;
  z-index:12;
  width:max-content;
  max-width:min(18rem,70vw);
  padding:.48rem .62rem;
  border:1px solid color-mix(in srgb,var(--hair) 84%,transparent);
  background:color-mix(in srgb,var(--bg) 97%,var(--ink) 3%);
  color:var(--copy);
  box-shadow:0 3px 12px color-mix(in srgb,var(--ink) 10%,transparent);
  font-size:.72rem;
  line-height:1.35;
  white-space:normal;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transform:translate(5px,50%);
  transition:opacity .16s ease,transform .16s ease,visibility 0s linear .16s;
}
.contact-action.is-visible[data-tooltip-when="disabled"][disabled]:hover::before,
.contact-action.is-visible[data-tooltip-when="always"]:is(:hover,:focus-visible)::before{
  opacity:1;
  visibility:visible;
  transform:translate(0,50%);
  transition-delay:0s;
}
.contact-action[disabled]:hover{transform:translateY(-50%)}
.contact-action[disabled]:hover::after{transform:translate(-50%,-50%)}
.mail-action-row::before{
  content:"";
  position:absolute;
  z-index:0;
  left:-6.35rem;
  right:-.8rem;
  top:-.8rem;
  bottom:-1.25rem;
}
.mail-action-row .hero-email-target{position:relative;z-index:1}
.mail-action-row .mail-action{z-index:2}
.mail-action-row:is(:hover,:focus-within) .mail-action{
  opacity:1;
  visibility:visible;
  pointer-events:auto;
  transition-delay:0s;
}
.calendar-action-row{
  --calendar-action-center:50%;
  --calendar-action-stack-offset:1.5rem;
}
.calendar-action-row.has-message-action .calendar-book-action{
  top:calc(var(--calendar-action-center) - var(--calendar-action-stack-offset));
}
.calendar-action-row .calendar-message-action{
  top:calc(var(--calendar-action-center) + var(--calendar-action-stack-offset));
}

.message-area{
  display:block;
  width:100%;
  min-height:6.6rem;
  max-height:48vh;
  resize:vertical;
  padding:1rem 1.05rem;
  border:1px solid color-mix(in srgb,var(--hair) 88%,transparent);
  border-radius:0;
  background:#fff;
  color:#17191b;
  box-shadow:none;
  font:inherit;
  font-size:1rem;
  line-height:1.55;
}
.message-area::placeholder{color:#9a9791;opacity:1}
.message-area:focus::placeholder{color:transparent}
html[data-theme="dark"] .message-area{
  background:rgba(255,255,255,.94);
  border-color:rgba(255,255,255,.16);
}

.calendar-shell{min-width:0;overflow-anchor:none}
.calendar-panel{
  position:relative;
  isolation:isolate;
  width:100%;
  padding:.82rem .88rem .84rem;
  border:1px solid color-mix(in srgb,var(--hair) 84%,transparent);
  background:color-mix(in srgb,var(--bg) 91%,white 9%);
}
html[data-theme="dark"] .calendar-panel{background:color-mix(in srgb,var(--bg) 88%,white 12%)}
.calendar-toolbar{
  display:grid;
  grid-template-columns:1.8rem 1fr 1.8rem;
  align-items:center;
  gap:.35rem;
  margin-bottom:.72rem;
}
.calendar-month{
  text-align:center;
  color:var(--ink);
  font-size:.9rem;
  line-height:1.2;
}
.calendar-nav{
  appearance:none;
  width:1.8rem;
  height:1.8rem;
  display:grid;
  place-items:center;
  padding:0;
  border:0;
  border-radius:50%;
  background:transparent;
  color:var(--muted);
  font:inherit;
  font-size:1.1rem;
  cursor:pointer;
  transition:background-color .18s ease,color .18s ease,transform .18s ease;
}
.calendar-nav:hover:not(:disabled){
  color:var(--ink);
  background:color-mix(in srgb,var(--ink) 5%,transparent);
  transform:scale(1.04);
}
.calendar-nav:disabled{opacity:.32;cursor:default}
.calendar-weekdays,
.calendar-days{
  display:grid;
  grid-template-columns:repeat(7,minmax(0,1fr));
  gap:.18rem;
}
.calendar-weekdays{
  margin-bottom:.2rem;
  color:var(--muted);
  font-size:.7rem;
  text-align:center;
}
.calendar-day{
  appearance:none;
  aspect-ratio:1;
  min-width:0;
  display:grid;
  place-items:center;
  padding:0;
  border:1px solid transparent;
  background:transparent;
  color:var(--copy);
  font:inherit;
  font-size:.78rem;
  cursor:pointer;
  transition:background-color .16s ease,border-color .16s ease,color .16s ease,transform .16s ease;
}
.calendar-day:hover:not(:disabled){
  border-color:color-mix(in srgb,var(--ink) 18%,var(--hair));
  color:var(--ink);
  transform:translateY(-1px);
}
.calendar-day:disabled{
  color:color-mix(in srgb,var(--muted) 48%,transparent);
  cursor:default;
}
.calendar-day.is-blank{visibility:hidden;pointer-events:none}
.calendar-day.is-today{
  color:color-mix(in srgb,var(--orange) 48%,var(--muted));
  font-weight:500;
}
.calendar-day.is-selected{
  border-color:var(--orange);
  background:color-mix(in srgb,var(--orange) 8%,transparent);
  color:var(--ink);
}
.calendar-times{
  display:flex;
  gap:.42rem;
  margin-top:.68rem;
  padding:.2rem .06rem .15rem;
  overflow-x:auto;
  overscroll-behavior-inline:contain;
  scrollbar-width:none;
  -ms-overflow-style:none;
}
.calendar-times[hidden]{display:none}
.calendar-times::-webkit-scrollbar{display:none}
.time-slot{
  flex:0 0 36%;
  min-width:7.5rem;
  padding:.55rem .35rem;
  border:1px solid color-mix(in srgb,var(--hair) 84%,transparent);
  background:transparent;
  color:var(--copy);
  font:inherit;
  font-size:.78rem;
  line-height:1;
  text-align:center;
  cursor:pointer;
  transition:border-color .16s ease,background-color .16s ease,color .16s ease,transform .16s ease;
}
.time-slot:hover{
  border-color:color-mix(in srgb,var(--ink) 20%,var(--hair));
  color:var(--ink);
  transform:translateY(-1px);
}
.time-slot.is-selected{
  border-color:var(--orange);
  background:color-mix(in srgb,var(--orange) 8%,transparent);
  color:var(--ink);
}
.booking-email-step{
  display:grid;
  margin-top:.72rem;
  padding-top:.72rem;
  border-top:1px solid color-mix(in srgb,var(--hair) 66%,transparent);
}
.booking-email-step[hidden]{display:none}
.booking-email-input{
  width:100%;
  min-width:0;
  height:2.28rem;
  padding:.4rem .72rem;
  border:1px solid color-mix(in srgb,var(--hair) 88%,transparent);
  border-radius:0;
  background:color-mix(in srgb,var(--bg) 96%,white 4%);
  color:var(--ink);
  font:inherit;
  font-size:.84rem;
  outline:0;
}
html[data-theme="dark"] .booking-email-input{background:color-mix(in srgb,var(--bg) 86%,white 14%)}
.booking-email-input.is-invalid{border-color:color-mix(in srgb,#b34a3c 68%,var(--hair))}

.page-index{
  position:absolute;
  left:8vw;
  bottom:clamp(24px,3.2vh,38px);
  display:flex;
  gap:1.1rem;
  align-items:center;
  font-family:"CHARUS Inter",Arial,Helvetica,sans-serif;
  font-size:clamp(.74rem,.82vw,.88rem);
  color:var(--muted);
}
.page-index a{transition:color .2s ease}
.page-index a:hover{color:var(--ink)}
.page-index span{opacity:.45}

.legal-section{
  position:relative;
  min-height:100svh;
  display:grid;
  grid-template-columns:minmax(260px,.62fr) minmax(0,1.38fr);
  gap:8vw;
  align-items:start;
  padding:clamp(8rem,13vh,10rem) 8vw clamp(6rem,10vh,8rem);
  border-top:1px solid color-mix(in srgb,var(--hair) 72%,transparent);
}
.legal-heading{
  position:sticky;
  top:128px;
}
body[data-page="contact"] .legal-heading h2{
  max-width:420px;
  font-size:clamp(2.8rem,4.7vw,5.2rem);
  line-height:.98;
}
.legal-copy{
  max-width:850px;
  color:var(--copy);
}
.status-note{
  margin:0 0 3rem;
  padding:1rem 1.1rem;
  border-left:2px solid var(--orange);
  background:color-mix(in srgb,var(--bg2) 74%,transparent);
  color:var(--copy);
  font-size:.92rem;
  line-height:1.55;
}
.legal-block{
  padding:0 0 2.5rem;
  margin:0 0 2.5rem;
  border-bottom:1px solid color-mix(in srgb,var(--hair) 62%,transparent);
}
.legal-block:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0}
.legal-block h3{
  margin:0 0 1rem;
  color:var(--ink);
  font-size:.78rem;
  font-weight:600;
  letter-spacing:.15em;
  text-transform:uppercase;
}
#imprint .legal-block h3{margin-bottom:1.35rem}
.legal-block p{
  margin:.62rem 0 0;
  max-width:760px;
  font-size:clamp(1rem,1.2vw,1.12rem);
  line-height:1.68;
  font-weight:var(--body-copy-weight);
  letter-spacing:var(--body-copy-tracking);
  -webkit-text-stroke:var(--body-grade-stroke) currentColor;
  paint-order:stroke fill;
}
.legal-block dl{
  display:grid;
  grid-template-columns:minmax(150px,.38fr) minmax(0,1fr);
  gap:.72rem 2rem;
  margin:0;
  font-size:clamp(.98rem,1.15vw,1.08rem);
  line-height:1.58;
}
.legal-block dt{color:var(--muted)}
.legal-block dd{margin:0;color:var(--copy)}
.legal-link,
.legal-reveal{
  color:inherit;
  text-decoration:none;
  border:0;
  border-bottom:1px solid color-mix(in srgb,var(--orange) 44%,transparent);
  background:transparent;
  padding:0 0 .08rem;
  font:inherit;
  line-height:inherit;
  cursor:pointer;
  transition:color .18s ease,border-color .18s ease;
}
.legal-link:is(:hover,:focus-visible),
.legal-reveal:is(:hover,:focus-visible){
  color:var(--ink);
  border-bottom-color:color-mix(in srgb,var(--orange) 78%,transparent);
}
.legal-phone{min-height:1.58em}
code{
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:.88em;
}

.page-end{
  min-height:124px;
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:2rem;
  padding:2.6rem 8vw 2rem;
  color:color-mix(in srgb,var(--muted) 86%,transparent);
  font-size:.76rem;
  letter-spacing:.01em;
}
.page-end a{
  color:inherit;
  text-decoration:none;
  transition:color .18s ease,transform .18s ease;
}
.page-end a:is(:hover,:focus-visible){
  color:var(--ink);
  transform:translateY(-1px);
}
.mail-copy-notice{
  position:fixed;
  left:50%;
  bottom:clamp(1.25rem,4vh,2.4rem);
  z-index:100;
  max-width:min(28rem,calc(100vw - 2rem));
  padding:.68rem .9rem;
  border:1px solid color-mix(in srgb,var(--hair) 84%,transparent);
  background:color-mix(in srgb,var(--bg) 96%,var(--ink) 4%);
  color:var(--copy);
  box-shadow:0 5px 20px color-mix(in srgb,var(--ink) 12%,transparent);
  font-size:.78rem;
  line-height:1.35;
  text-align:center;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transform:translate(-50%,.45rem);
  transition:opacity .18s ease,transform .18s ease,visibility 0s linear .18s;
}
.mail-copy-notice.is-visible{
  opacity:1;
  visibility:visible;
  transform:translate(-50%,0);
  transition-delay:0s;
}

@media(max-width:920px){
  body[data-page="contact"] .kicker{letter-spacing:.18em}
  .contact-hero{
    grid-template-columns:1fr;
    align-content:center;
    gap:2.5rem;
    padding:8.5rem 7vw 7rem;
  }
  .hero-contact{padding-top:0}
  .page-index{left:7vw}
  .legal-section{
    grid-template-columns:1fr;
    gap:3.5rem;
    padding:7rem 7vw 5.5rem;
  }
  .legal-heading{position:static}
  .page-end{padding-left:7vw;padding-right:7vw}
}
@media(max-width:620px){
  .contact-action{
    width:4rem;
    left:calc(-1 * (4rem + .8rem));
    font-size:.79rem;
  }
  .time-slot{flex-basis:42%;min-width:7.25rem}
  body[data-page="contact"] h1{font-size:clamp(3.1rem,15vw,5.1rem)}
  .page-index{gap:.72rem;font-size:.72rem}
  .legal-block dl{grid-template-columns:1fr;gap:.2rem}
  .legal-block dd{margin:0 0 .75rem}
  .page-end{min-height:108px;padding-top:2rem;padding-bottom:1.6rem}
}
@media(max-width:480px){
  .contact-stack{gap:1.55rem}
  .contact-action{
    position:relative;
    left:auto;
    top:auto;
    margin:0 0 .45rem;
    transform:none;
  }
  .contact-action:hover,
  .contact-action[disabled]:hover{transform:translateY(-.5px)}
  .contact-action:active{transform:scale(.98)}
  .mail-action-row::before{display:none}
  .mail-action-row .mail-action{position:absolute;left:calc(-1 * (4rem + .7rem));top:50%;transform:translateY(-50%)}
  .calendar-action-row.has-message-action .calendar-book-action,
  .calendar-action-row .calendar-message-action{top:auto}
}
@media(prefers-reduced-motion:reduce){
  .contact-page *,
  .contact-page *::before,
  .contact-page *::after{
    scroll-behavior:auto!important;
    transition-duration:.001ms!important;
    animation-duration:.001ms!important;
    animation-iteration-count:1!important;
  }
  .exchange-change{will-change:auto}
}
