
.ttkz-root,.ttkz-root *{box-sizing:border-box}
.ttkz-root{position:relative;width:100%;margin:0;padding:0}
.ttkz-root .ttkz-stage{position:relative;width:100%;line-height:0}
.ttkz-root .ttkz-stage>picture,.ttkz-root .ttkz-bg{display:block;width:100%;max-width:100%;height:auto;margin:0;padding:0}

.ttkz-root button.ttkz-hotspot,
.ttkz-root button.ttkz-hotspot:hover,
.ttkz-root button.ttkz-hotspot:focus,
.ttkz-root button.ttkz-hotspot:active{
 appearance:none!important;-webkit-appearance:none!important;
 position:absolute!important;left:var(--x)!important;top:var(--y)!important;
 width:auto!important;height:auto!important;min-width:0!important;min-height:0!important;
 margin:0!important;padding:0!important;border:0!important;border-radius:0!important;
 background:transparent!important;background-image:none!important;box-shadow:none!important;
 line-height:0!important;overflow:visible!important;cursor:pointer!important;z-index:5!important;
 transform:translate(-50%,-50%) scale(1)!important;transform-origin:center!important;
 transition:transform .2s ease,filter .2s ease,opacity .2s ease!important;
}
.ttkz-root button.ttkz-hotspot::before,.ttkz-root button.ttkz-hotspot::after{content:none!important;display:none!important}

.ttkz-root .ttkz-door-art{
 position:relative!important;display:block!important;
 width:var(--door-w)!important;height:auto!important;max-width:none!important;
 margin:0!important;padding:0!important;border:0!important;border-radius:0!important;
 background:transparent!important;box-shadow:none!important;line-height:0!important;
}
.ttkz-root .ttkz-door-art>img{
 display:block!important;width:var(--door-w)!important;height:auto!important;max-width:none!important;
 margin:0!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;
}
.ttkz-root .ttkz-door-label{
 position:absolute!important;left:50%!important;top:50%!important;z-index:2!important;
 transform:translate(-50%,-50%)!important;display:block!important;
 width:auto!important;height:auto!important;min-width:0!important;margin:0!important;padding:2px 5px!important;
 border:0!important;border-radius:4px!important;background:rgba(255,255,255,.88)!important;color:#111!important;
 box-shadow:none!important;font:700 16px/1.05 Arial,sans-serif!important;white-space:nowrap!important;pointer-events:none!important;
}
.ttkz-root .ttkz-number{display:grid;place-items:center;min-width:46px;height:46px;padding:0 10px;border-radius:999px;background:#fff;color:#111;border:2px solid currentColor;font:700 18px/1 Arial,sans-serif;box-shadow:0 3px 16px rgba(0,0,0,.24)}

.ttkz-root button.ttkz-hotspot.is-open:hover,.ttkz-root button.ttkz-hotspot.is-open:focus-visible{
 transform:translate(-50%,-50%) translateY(calc(-1 * var(--hover-lift))) scale(var(--hover-scale))!important;
}
.ttkz-root button.ttkz-hotspot.ttkz-shadow-soft.is-open:hover,.ttkz-root button.ttkz-hotspot.ttkz-shadow-soft.is-open:focus-visible{filter:drop-shadow(0 6px 8px rgba(0,0,0,.28))!important}
.ttkz-root button.ttkz-hotspot.ttkz-shadow-strong.is-open:hover,.ttkz-root button.ttkz-hotspot.ttkz-shadow-strong.is-open:focus-visible{filter:drop-shadow(0 10px 13px rgba(0,0,0,.44))!important}
.ttkz-root button.ttkz-hotspot.ttkz-shadow-none{filter:none!important}
.ttkz-root button.ttkz-hotspot.is-locked{opacity:.48;cursor:not-allowed!important}
.ttkz-root button.ttkz-hotspot.is-locked:hover,.ttkz-root button.ttkz-hotspot.is-locked:focus-visible{transform:translate(-50%,-50%)!important;filter:none!important}

.ttkz-root .ttkz-status{min-height:1.4em;padding:.6rem;text-align:center;line-height:1.4}
.ttkz-root .ttkz-modal{display:none;position:fixed!important;inset:0!important;z-index:2147483000!important;line-height:1.5!important}
.ttkz-root .ttkz-modal.is-visible{display:block!important}.ttkz-root .ttkz-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.74)}
.ttkz-root .ttkz-panel{position:relative;z-index:1;width:min(var(--ttkz-modal-max),calc(100% - 32px));max-width:var(--ttkz-modal-max);max-height:calc(100vh - 48px);overflow:auto;margin:24px auto!important;padding:clamp(24px,4vw,48px)!important;background:#fff!important;color:#111!important;border:0!important;border-radius:14px;box-shadow:0 20px 70px rgba(0,0,0,.38);text-align:left}
.ttkz-root .ttkz-title{margin:0 50px 24px 0!important;padding:0!important;color:inherit!important;font-size:clamp(25px,3vw,38px)!important;line-height:1.15!important}
.ttkz-root .ttkz-content{line-height:1.65}.ttkz-root .ttkz-content img,.ttkz-root .ttkz-content video,.ttkz-root .ttkz-content iframe{max-width:100%;height:auto}.ttkz-root .ttkz-content iframe{width:100%}
.ttkz-root .ttkz-close{appearance:none;position:absolute!important;right:12px!important;top:8px!important;width:48px!important;height:48px!important;margin:0!important;padding:0!important;border:0!important;background:transparent!important;color:#111!important;box-shadow:none!important;font:400 38px/1 Arial,sans-serif!important;cursor:pointer!important}
body.ttkz-modal-open{overflow:hidden!important}
@media(max-width:700px){.ttkz-root button.ttkz-hotspot{left:var(--mx)!important;top:var(--my)!important}.ttkz-root .ttkz-door-label{font-size:14px!important}.ttkz-root .ttkz-panel{width:calc(100% - 20px);max-height:calc(100vh - 20px);margin:10px auto!important;padding:28px 20px!important}}
@media(prefers-reduced-motion:reduce){.ttkz-root button.ttkz-hotspot{transition:none!important}}

/* 1.4.2 critical sizing fix: frontend receives --door-w from PHP. */
.ttkz-root button.ttkz-hotspot .ttkz-door-art{
 width:var(--door-w,70px)!important;
 max-width:var(--door-w,70px)!important;
 min-width:0!important;
}
.ttkz-root button.ttkz-hotspot .ttkz-door-art>img{
 display:block!important;
 width:var(--door-w,70px)!important;
 max-width:var(--door-w,70px)!important;
 min-width:0!important;
 height:auto!important;
 object-fit:contain!important;
}

/* 1.5.0 – BeBuilder content inside the overlay */
.ttkz-root .ttkz-content-bebuilder{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  padding:0!important;
}
.ttkz-root .ttkz-content-bebuilder .section,
.ttkz-root .ttkz-content-bebuilder .section_wrapper,
.ttkz-root .ttkz-content-bebuilder .wrap,
.ttkz-root .ttkz-content-bebuilder .mcb-wrap-inner{
  max-width:100%;
}
.ttkz-root .ttkz-builder-error{
  padding:12px;
  border:1px solid #d63638;
}


/* 1.6.2 — keep modal below Betheme/sticky site header.
   JS supplies --ttkz-header-offset dynamically; fallback leaves a small safe gap. */
.ttkz-modal{
  top:var(--ttkz-header-offset, 12px)!important;
  height:calc(100dvh - var(--ttkz-header-offset, 12px))!important;
  z-index:99990!important;
}
.ttkz-modal-dialog{
  max-height:calc(100dvh - var(--ttkz-header-offset, 12px) - 24px)!important;
  overflow:auto!important;
}
.ttkz-close{
  position:sticky!important;
  top:0!important;
  z-index:10!important;
}


/* 1.6.4 — rollback of 1.6.3 reparenting.
   Modal stays in its original calendar DOM and is absolutely hidden until opened. */
.ttkz-root .ttkz-modal{
  display:none!important;
  visibility:hidden!important;
  opacity:0!important;
  pointer-events:none!important;
}
.ttkz-root .ttkz-modal.is-open,
.ttkz-root .ttkz-modal.open,
.ttkz-root .ttkz-modal[aria-hidden="false"]{
  display:flex!important;
  visibility:visible!important;
  opacity:1!important;
  pointer-events:auto!important;
}

/* Instead of moving the modal, hide Betheme header while it is open.
   This prevents the header from covering the close button without breaking modal JS scope. */
body.ttkz-modal-open #Header_wrapper,
body.ttkz-modal-open #Header,
body.ttkz-modal-open .mfn-header-tmpl,
body.ttkz-modal-open header.site-header{
  visibility:hidden!important;
  pointer-events:none!important;
}
body.ttkz-modal-open .ttkz-modal{
  top:0!important;
  height:100dvh!important;
  z-index:999999!important;
}
body.ttkz-modal-open .ttkz-modal-dialog{
  max-height:calc(100dvh - 24px)!important;
}


/* 1.6.5 — while a door overlay is open, hide the surrounding Betheme page chrome.
   The calendar/root remains present because it owns the modal. */
body.ttkz-modal-open #Header_wrapper,
body.ttkz-modal-open #Header,
body.ttkz-modal-open .mfn-header-tmpl,
body.ttkz-modal-open header.site-header,
body.ttkz-modal-open #Footer,
body.ttkz-modal-open footer#Footer,
body.ttkz-modal-open footer.site-footer,
body.ttkz-modal-open .mfn-footer,
body.ttkz-modal-open #Sliding-top,
body.ttkz-modal-open #back_to_top,
body.ttkz-modal-open .back-to-top,
body.ttkz-modal-open .mfn-scroll-top,
body.ttkz-modal-open .fixed-nav,
body.ttkz-modal-open .mfn-header-placeholder{
  display:none!important;
}

/* Keep the overlay itself above any remaining theme/plugin furniture. */
body.ttkz-modal-open .ttkz-modal{
  top:0!important;
  bottom:0!important;
  height:100dvh!important;
  max-height:100dvh!important;
  z-index:999999!important;
}
body.ttkz-modal-open .ttkz-modal-dialog{
  max-height:calc(100dvh - 24px)!important;
  overflow:auto!important;
}


/* 1.6.8 — BeBuilder overlay page runs in its own document so Betheme can load
   all of its normal frontend CSS/JS instead of returning unstyled builder HTML via AJAX. */
.ttkz-overlay-frame{
  display:block!important;
  width:100%!important;
  height:calc(100dvh - 24px)!important;
  min-height:520px!important;
  border:0!important;
  background:#fff!important;
}
.ttkz-content-bebuilder{
  padding:0!important;
  width:100%!important;
  max-width:none!important;
}
body.ttkz-modal-open .ttkz-panel{
  width:min(100%, var(--ttkz-modal-max,1400px))!important;
  max-height:calc(100dvh - 24px)!important;
}
