








.btn--undo {
  color: var(--brand);
  border-color: color-mix(in srgb, var(--lic-gold) 42%, transparent);
  background: color-mix(in srgb, var(--lic-gold) 10%, transparent);
}
.btn--undo:hover,
.btn--undo:active,
.btn--undo:focus-visible {
  color: var(--text-3);
  border-color: var(--line-2);
  background: var(--surface-2);
}
.btn--undo[disabled],
.btn--undo[aria-disabled="true"] {
  color: var(--text-3);
  border-color: var(--line);
  background: transparent;
}
 


 
.fp-facts {
  display: flex; flex-wrap: wrap; gap: var(--sp-3);
  justify-content: center;
  margin-block-end: var(--sp-6);
}
.fp-facts li {
  display: flex; flex-direction: column; align-items: center;
  min-width: 116px;
  padding: var(--sp-3) var(--sp-4);
  background: var(--surface); border: 1px solid var(--line);
  border-radius: var(--r); text-align: center;
}
.fp-facts strong { font-family: var(--font-num); font-size: var(--fs-lg); font-weight: 700; }
.fp-facts span   { font-size: var(--fs-xs); color: var(--text-3); }

 


.fp-full {
  width: 100%;
  padding-inline: clamp(var(--sp-2), 1.2vw, var(--sp-5));
}

.fp {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) clamp(240px, 21vw, 320px);
  grid-template-areas:
    'toolbar toolbar'
    'stage   cart';
  gap: var(--sp-4);
  padding: var(--sp-4);
  background: var(--bg-3); border: 1px solid var(--line);
  border-radius: var(--r-lg);
}
@media (max-width: 940px) {
  .fp {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas: 'toolbar' 'stage' 'cart';
  }
}



.fp.is-registering { grid-template-columns: minmax(0, 1fr) clamp(320px, 40vw, 580px); }
.fp.is-registering .fp__cart { position: static; }
@media (max-width: 940px) {
  .fp.is-registering { grid-template-columns: minmax(0, 1fr); }
}

 
.fp__toolbar {
  grid-area: toolbar;
  display: flex; align-items: center; justify-content: center;
  gap: var(--sp-4); flex-wrap: wrap;
  padding-block-end: var(--sp-3);
  border-block-end: 1px solid var(--line);
}
.fp__legend { display: flex; align-items: center; gap: var(--sp-4); flex-wrap: wrap; justify-content: center; }
.fp__legend-item {
  display: inline-flex; align-items: center; gap: var(--sp-2);
  font-size: var(--fs-xs); color: var(--text-2);
}
.fp__legend-item small { color: var(--text-3); }
.fp__legend-sep { inline-size: 1px; block-size: 20px; background: var(--line-2); }
.fp__swatch {
  inline-size: 13px; block-size: 13px; border-radius: 3px;
  border: 1px solid var(--line-2); flex-shrink: 0;
}
.fp__swatch[data-status="available"] { background: color-mix(in srgb, var(--st-available) 32%, transparent); border-color: var(--st-available); }
.fp__swatch[data-status="held"]      { background: color-mix(in srgb, var(--st-held) 32%, transparent);      border-color: var(--st-held); }
.fp__swatch[data-status="reserved"]  { background: color-mix(in srgb, var(--st-reserved) 40%, transparent);  border-color: var(--st-reserved); }
.fp__swatch[data-status="selected"]  { background: var(--st-selected); border-color: var(--st-selected); }
.fp__swatch[data-status="room"]      { background: color-mix(in srgb, var(--highlight) 42%, transparent);   border-color: var(--highlight); }
.fp__swatch[data-status="vip"]       { background: color-mix(in srgb, var(--grid-yellow) 46%, transparent);  border-color: var(--grid-yellow); }

 
.fp__stage {
  grid-area: stage;
  position: relative;
  overflow: hidden;
  border-radius: var(--r);
  background:
    radial-gradient(circle at 50% 0%, color-mix(in srgb, var(--highlight) 12%, transparent), transparent 60%),
    var(--bg-2);
  border: 1px solid var(--line);
  touch-action: pan-y;                 
  cursor: grab;
}
.fp__stage.is-zoomed { touch-action: none; }    
.fp__stage.is-panning { cursor: grabbing; }



.fp-svg {
  display: block; width: 100%; height: auto;
  max-height: min(1180px, 116vh);
  transform: scale(var(--fp-zoom, 1)) translate(var(--fp-x, 0px), var(--fp-y, 0px));
  transform-origin: center center;
  transition: transform var(--t) var(--ease);
}
.fp__stage.is-panning .fp-svg { transition: none; }

 
.fp-svg text { direction: ltr; }

 
.fp__zoom {
  position: absolute; z-index: 15;
  bottom: var(--sp-3); right: var(--sp-3);    
  display: flex; flex-direction: column; gap: 1px;
  padding: 3px;
  background: color-mix(in srgb, var(--bg) 88%, transparent);
  border: 1px solid var(--line-2);
  border-radius: var(--r-sm);
  box-shadow: var(--sh-3);
  backdrop-filter: blur(6px);
}
.fp__zoom-btn {
  inline-size: 36px; block-size: 36px;
  display: grid; place-items: center;
  border-radius: 6px;
  background: transparent; color: var(--text);
  font-size: 15px; line-height: 1;
  cursor: pointer;
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.fp__zoom-btn:hover { background: var(--brand); color: var(--gold-ink); }
.fp__zoom-btn:focus-visible { outline: 2px solid var(--brand); outline-offset: 1px; }
.fp__zoom-btn--reset { font-size: 13px; color: var(--text-3); }
.fp__zoom-btn--reset:hover { color: var(--gold-ink); }

 
.fp-grid-line {
  fill: none;
  stroke: color-mix(in srgb, var(--grid-yellow) 22%, transparent);
  stroke-width: .012;
}
:root[data-theme="light"] .fp-grid-line { stroke: color-mix(in srgb, #c9a227 30%, transparent); }

.fp-hall {
  fill: none;
  stroke: var(--accent);
  stroke-width: .14;
  vector-effect: non-scaling-stroke;
}
.fp-foyer {
  fill: color-mix(in srgb, var(--ly-green) 7%, transparent);
  stroke: color-mix(in srgb, var(--ly-green) 34%, transparent);
  stroke-width: .05;
  stroke-dasharray: .45 .3;
}

 
.fp-stage {
  fill: color-mix(in srgb, #71beea 62%, transparent);
  stroke: #4a9fd4; stroke-width: .05;
}
.fp-screen {
  stroke: var(--text-2); stroke-width: .22;
  stroke-linecap: round; opacity: .85;
}
.fp-screen-label { fill: var(--text-2); font-size: .55px; }

 
.fp-seating {
  fill: color-mix(in srgb, var(--ly-green) 12%, transparent);
  stroke: #26ab4a; stroke-width: .06;
}
.fp-vip {
  fill: color-mix(in srgb, var(--grid-yellow) 30%, transparent);
  stroke: var(--grid-yellow); stroke-width: .06;
}
.fp-vip-label {
  font-size: .46px; font-weight: 700;
  fill: color-mix(in srgb, var(--grid-yellow) 72%, var(--text));
  letter-spacing: .05px;
}

.fp-aisle {
  stroke: var(--text-3); stroke-width: .07;
  stroke-dasharray: .7 .35; opacity: .55;
}
.fp-column { fill: var(--text-3); opacity: .5; }
.fp-wall {
  fill: none; stroke: var(--text-2);
  stroke-width: .16; stroke-linejoin: round; stroke-linecap: round;
}




.fp-booth-logo { pointer-events: none; }



.fp-plate--light {
  

  filter: drop-shadow(0 0 .04px rgb(255 255 255 / .95))
          drop-shadow(0 0 .04px rgb(255 255 255 / .95));
}
.fp-plate--dark { filter: invert(1) brightness(1.6); }

 
.fp-booth-id--foot { font-size: .42px; opacity: .85; }




.fp-barrier {
  fill: none; stroke: var(--text-2);
  stroke-width: .12; stroke-dasharray: .55 .32;
  stroke-linecap: round; opacity: .9;
}

 
.fp-reception {
  fill: none; stroke: var(--brand);
  stroke-width: .22; stroke-linecap: round;
}
.fp-reception-label {
  font-size: .5px; font-weight: 700;
  fill: var(--brand); font-family: var(--font);
}

 
.fp-arrow-head  { fill: currentColor; }
.fp-exit-gap {
  stroke: var(--st-available); stroke-width: .2;
  stroke-linecap: round;
}
.fp-exit-arrow {
  stroke: var(--st-available); stroke-width: .09;
  color: var(--st-available);
  stroke-dasharray: .32 .2;
}
.fp-exit-label {
  font-size: .52px; font-weight: 700;
  fill: var(--st-available); font-family: var(--font);
}

 
.fp-svg text {
  font-family: var(--font-num);
  text-anchor: middle;
  dominant-baseline: middle;
  pointer-events: none;
  user-select: none;
}
.fp-feature-label {
  font-size: .62px; font-weight: 700; fill: var(--text);
  font-family: var(--font);
}
.fp-zone-label {
  font-size: .68px; font-weight: 700; fill: var(--ly-green);
  font-family: var(--font); text-anchor: end;
}
.fp-zone-sub {
  font-size: .5px; font-weight: 600;
  fill: color-mix(in srgb, var(--ly-green) 78%, var(--text));
  font-family: var(--font); text-anchor: end;
}

 
.fp-booth { cursor: pointer; outline: none; }
.fp-booth-rect {
  fill: color-mix(in srgb, var(--st-available) 22%, transparent);
  stroke: var(--st-available);
  stroke-width: .06;
  transition: fill var(--t-fast) var(--ease), stroke var(--t-fast) var(--ease),
              stroke-width var(--t-fast) var(--ease);
}
.fp-booth-id {
  font-size: .66px; font-weight: 700;
  fill: var(--text);
  transition: fill var(--t-fast) var(--ease);
}
.fp-booth-area { font-size: .4px; fill: var(--text-3); }
.fp-lock { fill: var(--st-reserved); opacity: .85; }



.fp-booth[style*="--u"] .fp-booth-rect { stroke: color-mix(in srgb, var(--u) 78%, var(--st-available)); }

 
.fp-booth--room { cursor: default; pointer-events: auto; }
.fp-booth--room .fp-booth-rect {
  fill: color-mix(in srgb, var(--highlight) 34%, transparent);
  stroke: color-mix(in srgb, var(--highlight) 88%, var(--text));
  stroke-width: .07;
}
.fp-booth--room .fp-booth-id { fill: var(--text); font-size: .6px; }
.fp-room-tag {
  font-size: .38px; font-weight: 600;
  fill: color-mix(in srgb, var(--highlight) 55%, var(--text));
  font-family: var(--font);
}


.fp-room-tag--team {
  font-weight: 700;
  fill: var(--brand);
}
:root[data-theme="light"] .fp-booth--room .fp-booth-rect {
  fill: color-mix(in srgb, var(--highlight) 18%, transparent);
}
.fp-booth--room:hover .fp-booth-rect {
  fill: color-mix(in srgb, var(--highlight) 46%, transparent);
}

 
.fp-booth[data-status="held"] .fp-booth-rect {
  fill: color-mix(in srgb, var(--st-held) 26%, transparent);
  stroke: var(--st-held); stroke-dasharray: .3 .18;
}
.fp-booth[data-status="reserved"] {
  cursor: not-allowed;
}
.fp-booth[data-status="reserved"] .fp-booth-rect {
  fill: color-mix(in srgb, var(--st-reserved) 34%, transparent);
  stroke: var(--st-reserved);
}
.fp-booth[data-status="reserved"] .fp-booth-id,
.fp-booth[data-status="reserved"] .fp-booth-area { fill: var(--text-3); }

 
.fp-booth[data-status="available"]:hover .fp-booth-rect,
.fp-booth[data-status="available"]:focus-visible .fp-booth-rect {
  fill: color-mix(in srgb, var(--st-available) 46%, transparent);
  stroke-width: .11;
}
.fp-booth:focus-visible .fp-booth-rect {
  stroke: var(--brand); stroke-width: .13;
}

 
.fp-booth.is-selected .fp-booth-rect {
  fill: color-mix(in srgb, var(--st-selected) 55%, transparent);
  stroke: var(--st-selected); stroke-width: .13;
}
.fp-booth.is-selected .fp-booth-id { fill: #fff; }
.fp-booth.is-selected .fp-booth-area { fill: rgb(255 255 255 / .8); }


 


.fp__stage.is-locked { cursor: default; }
.fp__stage.is-locked .fp-booth { cursor: default; }
.fp__stage.is-locked .fp-booth:not(.is-selected) { opacity: .4; }
.fp__stage.is-locked .fp-booth.is-selected .fp-booth-rect { stroke-width: .16; }
 
.fp__stage.is-locked .fp-booth[data-status="available"]:hover .fp-booth-rect {
  fill: color-mix(in srgb, var(--st-available) 22%, transparent);
  stroke-width: .06;
}
.fp__stage.is-locked .fp-booth.is-selected:hover .fp-booth-rect {
  fill: color-mix(in srgb, var(--st-selected) 55%, transparent);
  stroke-width: .16;
}

 
.fp__lock {
  position: absolute; z-index: 16;
  top: var(--sp-3); left: 50%;
  transform: translate(-50%, 0);
  display: flex; align-items: center; gap: var(--sp-2);
  max-inline-size: calc(100% - var(--sp-6));
  padding: var(--sp-2) var(--sp-3);
  background: color-mix(in srgb, var(--bg) 92%, transparent);
  border: 1px solid var(--line-2);
  border-radius: var(--r-pill);
  box-shadow: var(--sh-3);
  backdrop-filter: blur(6px);
  font-size: var(--fs-xs); font-weight: 600; color: var(--text-2);
}
.fp__lock > i { color: var(--st-held); }
.fp__lock-btn {
  display: inline-flex; align-items: center; gap: var(--sp-1);
  padding: 3px var(--sp-3);
  border-radius: var(--r-pill);
  background: linear-gradient(135deg, var(--lic-gold-lt), var(--lic-gold));
  color: var(--gold-ink);
  font-size: var(--fs-xs); font-weight: 700;
  cursor: pointer;
  box-shadow: 0 6px 18px -10px color-mix(in srgb, var(--lic-gold) 80%, transparent);
}
.fp__lock-btn:hover { box-shadow: 0 10px 24px -10px color-mix(in srgb, var(--lic-gold) 90%, transparent); }
.fp__lock-btn:focus-visible { outline: 2px solid var(--text); outline-offset: 2px; }

 
@keyframes fp-lock-pulse {
  0%, 100% { transform: translate(-50%, 0) scale(1); }
  35%      { transform: translate(-50%, 0) scale(1.07); }
}
.fp__lock.is-pulse {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--brand) 26%, transparent);
  animation: fp-lock-pulse .42s var(--ease) 2;
}
@media (prefers-reduced-motion: reduce) {
  .fp__lock.is-pulse { animation: none; }
}

 
.fp__tip {
  position: absolute; z-index: 20;
  padding: var(--sp-2) var(--sp-3);
  background: var(--bg); border: 1px solid var(--line-2);
  border-radius: var(--r-sm); box-shadow: var(--sh-3);
  font-size: var(--fs-xs); line-height: 1.6;
  pointer-events: none; white-space: nowrap;
  transform: translate(-50%, -120%);
}
.fp__tip.is-below { transform: translate(-50%, 24%); }
.fp__tip strong { display: block; font-family: var(--font-num); font-size: var(--fs-sm); }
.fp__tip span { color: var(--text-3); }

 
.fp__cart {
  grid-area: cart;
  display: flex; flex-direction: column; gap: var(--sp-3);
  padding: var(--sp-4);
  background: var(--bg-2); border: 1px solid var(--line);
  border-radius: var(--r);
  align-self: start;
  position: sticky; inset-block-start: calc(var(--header-h) + var(--sp-4));
}
@media (max-width: 940px) { .fp__cart { position: static; } }

 
.fp__cart .alert { margin-block-end: 0; font-size: var(--fs-xs); padding: var(--sp-3) var(--sp-4); }

 
.fp__step { display: flex; flex-direction: column; gap: var(--sp-3); }

.fp__cart-head { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-2); }
.fp__cart-head h3 { font-size: var(--fs-sm); text-transform: uppercase; letter-spacing: .08em; color: var(--text-3); }
.fp__cart-body { display: flex; flex-direction: column; gap: var(--sp-3); }
.fp__cart-empty { font-size: var(--fs-sm); color: var(--text-3); }

 
.fp__pkg select { font-size: var(--fs-sm); padding: var(--sp-2) var(--sp-3); }
.fp__pkg-meta {
  font-family: var(--font-num); font-size: var(--fs-xs);
  color: var(--text-3);
}

.fp__chips { display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.fp__chip {
  display: inline-flex; align-items: center; gap: var(--sp-2);
  padding: var(--sp-1) var(--sp-2) var(--sp-1) var(--sp-3);
  background: var(--surface-2); border: 1px solid var(--line-2);
  border-radius: var(--r-pill);
  font-family: var(--font-num); font-size: var(--fs-xs); font-weight: 700;
}
[dir="rtl"] .fp__chip { padding: var(--sp-1) var(--sp-3) var(--sp-1) var(--sp-2); }
.fp__chip small { color: var(--text-3); font-weight: 400; }
.fp__chip button {
  inline-size: 18px; block-size: 18px;
  display: grid; place-items: center; border-radius: 50%;
  background: var(--surface-2); color: var(--text-3); font-size: 10px;
}
 
.fp__chip button:hover { background: var(--surface-2); color: var(--text); }

.fp__cart-foot {
  display: flex; flex-direction: column; gap: var(--sp-3);
  padding-block-start: var(--sp-3);
  border-block-start: 1px dashed var(--line);
}
.fp__sum { font-size: var(--fs-sm); color: var(--text-2); }
.fp__sum strong { font-family: var(--font-num); font-size: var(--fs-lg); color: var(--text); }

 
.fp__msg {
  display: flex; align-items: flex-start; gap: var(--sp-2);
  padding: var(--sp-2) var(--sp-3);
  background: color-mix(in srgb, var(--st-held) 12%, transparent);
  border: 1px solid color-mix(in srgb, var(--st-held) 40%, transparent);
  border-radius: var(--r-sm);
  font-size: var(--fs-xs); font-weight: 600; color: var(--st-held);
}

 
.fp__recap {
  display: flex; flex-direction: column; gap: var(--sp-2);
  padding: var(--sp-3);
  background: var(--surface); border: 1px solid var(--line);
  border-radius: var(--r-sm);
  font-size: var(--fs-xs);
}
.fp__recap li { display: flex; align-items: baseline; justify-content: space-between; gap: var(--sp-3); }
.fp__recap span   { color: var(--text-3); }
.fp__recap strong { font-family: var(--font-num); color: var(--text); text-align: end; }
 
.fp__recap strong#fpRecapPkg { font-family: var(--font); }

 
.fp__step--reg .form { gap: var(--sp-4); }
.fp__step--reg .form__grid { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: var(--sp-3); }
.fp__step--reg .field label { font-size: var(--fs-xs); }
.fp__step--reg .check { font-size: var(--fs-xs); }

 
@media print {
  .site-header, .site-footer, .to-top, .fp__toolbar, .fp__cart, .fp__zoom, .fp__lock, .preloader { display: none !important; }
  .fp-full { padding: 0; }
  .fp { border: 0; padding: 0; grid-template-columns: 1fr; grid-template-areas: 'stage'; }
  .fp-svg { transform: none !important; max-height: none; }
}
