.cepa-floor-plan,
.cepa-floor-plan * { box-sizing: border-box; }
.cepa-floor-plan { --cepa-accent: #e72b31; --cepa-dark: #191919; display: grid; grid-template-columns: 150px 310px minmax(0, 1fr); width: 100%; min-height: 660px; overflow: hidden; border: 1px solid #e5e5e5; border-radius: 12px; color: #292929; background: #fff; box-shadow: 0 18px 50px rgba(0,0,0,.08); font-family: inherit; }
.cepa-floor-plan.has-single-floor { grid-template-columns: 310px minmax(0, 1fr); }
.cepa-floor-plan.has-single-floor .cepa-floor-plan__floors { display: none; }
.cepa-floor-plan.has-focused-shop { display: block; min-height: 430px; }
.cepa-floor-plan.has-focused-shop .cepa-floor-plan__floors,
.cepa-floor-plan.has-focused-shop .cepa-floor-plan__sidebar { display: none; }
.cepa-floor-plan.has-focused-shop .cepa-floor-plan__map { min-height: 430px; height: 430px; }
.cepa-floor-plan button,
.cepa-floor-plan input { font: inherit; }
.cepa-floor-plan .screen-reader-text { position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0,0,0,0); border: 0; white-space: nowrap; }
.cepa-floor-plan__floors { display: flex; flex-direction: column; gap: 2px; padding: 18px 10px; background: #f4f4f4; }
.cepa-floor-plan__floor { position: relative; min-height: 52px; padding: 10px 13px; border: 0; border-radius: 7px; color: #666; background: transparent; cursor: pointer; text-align: left; transition: color .18s ease, background .18s ease, transform .18s ease; }
.cepa-floor-plan__floor:hover { color: var(--cepa-dark); background: #fff; }
.cepa-floor-plan__floor.is-active { color: #fff; background: var(--cepa-dark); box-shadow: 0 5px 16px rgba(0,0,0,.15); transform: translateX(4px); }
.cepa-floor-plan__floor.is-active::after { position: absolute; top: 50%; right: -7px; width: 14px; height: 14px; transform: translateY(-50%) rotate(45deg); background: var(--cepa-dark); content: ''; }
.cepa-floor-plan__sidebar { z-index: 2; min-width: 0; border-right: 1px solid #ededed; background: #fff; }
.cepa-floor-plan__search { display: flex; gap: 9px; align-items: center; height: 72px; padding: 14px 18px; border-bottom: 1px solid #ededed; }
.cepa-floor-plan__search > span[aria-hidden] { color: #777; font-size: 27px; transform: rotate(-15deg); }
.cepa-floor-plan__search input { width: 100%; height: 42px; padding: 0; border: 0 !important; outline: 0; color: #222; background: transparent; box-shadow: none !important; font-size: 15px; }
.cepa-floor-plan__search input::placeholder { color: #9a9a9a; }
.cepa-floor-plan__shop-list { height: 588px; overflow-x: hidden; overflow-y: auto; scrollbar-color: #bbb transparent; scrollbar-width: thin; }
.cepa-floor-plan__shop { display: grid; grid-template-columns: 46px minmax(0, 1fr); gap: 12px; align-items: center; width: 100%; min-height: 72px; padding: 10px 17px; border: 0; border-bottom: 1px solid #f0f0f0; color: #333; background: #fff; cursor: default; text-align: left; transition: background .18s ease, box-shadow .18s ease; }
.cepa-floor-plan__shop.has-point { cursor: pointer; }
.cepa-floor-plan__shop.has-point:hover { background: #fafafa; }
.cepa-floor-plan__shop.is-selected { background: #fff7f7; box-shadow: inset 4px 0 var(--cepa-accent); }
.cepa-floor-plan__shop-logo { display: grid; width: 44px; height: 44px; overflow: hidden; place-items: center; border-radius: 6px; color: #777; background: #f2f2f2; font-size: 12px; font-weight: 700; }
.cepa-floor-plan__shop-logo img { display: block; width: 100%; height: 100%; padding: 4px; object-fit: contain; object-position: center; }
.cepa-floor-plan__shop-text { display: flex; min-width: 0; flex-direction: column; gap: 3px; }
.cepa-floor-plan__shop-text strong { overflow: hidden; color: #2b2b2b; font-size: 14px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.cepa-floor-plan__shop-text small { overflow: hidden; color: #aaa; font-size: 11px; font-weight: 400; text-overflow: ellipsis; white-space: nowrap; }
.cepa-floor-plan__empty { margin: 0; padding: 28px 20px; color: #888; line-height: 1.6; }
.cepa-floor-plan__map { position: relative; min-width: 0; min-height: 660px; overflow: hidden; background: linear-gradient(145deg, #fafafa, #f1f1f1); }
.cepa-floor-plan__viewport { position: absolute; inset: 0; display: grid; overflow: hidden; place-items: center; cursor: default; touch-action: none; }
.cepa-floor-plan__viewport.is-zoomed { cursor: grab; }
.cepa-floor-plan__viewport.is-zoomed:active { cursor: grabbing; }
.cepa-floor-plan__canvas { position: relative; width: min(94%, 1100px); opacity: 0; transform-origin: 0 0; will-change: transform; }
.cepa-floor-plan__canvas.is-ready { opacity: 1; }
.cepa-floor-plan__canvas.is-animated { transition: transform .42s cubic-bezier(.2,.75,.25,1); }
.cepa-floor-plan__canvas > img { display: block; width: 100%; height: auto; pointer-events: none; user-select: none; }
.cepa-floor-plan__loading { position: absolute; z-index: 4; top: 20px; left: 50%; padding: 9px 14px; transform: translateX(-50%); border-radius: 99px; color: #555; background: rgba(255,255,255,.92); box-shadow: 0 4px 16px rgba(0,0,0,.08); font-size: 13px; }
.cepa-floor-plan__point { position: absolute; z-index: 2; width: 13px; height: 13px; padding: 0; transform: translate(-50%, -50%) scale(calc(1 / var(--map-scale, 1))); border: 1px solid rgba(255,255,255,.9); border-radius: 50%; outline: 0; opacity: .58; background: var(--cepa-accent); box-shadow: 0 1px 5px rgba(0,0,0,.28); cursor: pointer; transition: opacity .16s ease, box-shadow .16s ease; }
.cepa-floor-plan__point span { display: none; }
.cepa-floor-plan__point:hover,
.cepa-floor-plan__point:focus { opacity: 1; outline: 3px solid rgba(231,43,49,.18); box-shadow: 0 1px 7px rgba(0,0,0,.38); }
.cepa-floor-plan__popup { --cepa-popup-arrow-offset: 0px; position: absolute; z-index: 8; width: min(240px, calc(100% - 24px)); padding: 14px; transform: translate(-50%, calc(-100% - 13px)); border: 1px solid rgba(0,0,0,.08); border-radius: 10px; opacity: 1; color: #292929; background: rgba(255,255,255,.97); box-shadow: 0 12px 34px rgba(0,0,0,.2); cursor: default; transition: opacity .16s ease; }
.cepa-floor-plan__popup::after { position: absolute; bottom: -8px; left: calc(50% + var(--cepa-popup-arrow-offset)); width: 0; height: 0; transform: translateX(-50%); border-top: 8px solid rgba(255,255,255,.97); border-right: 8px solid transparent; border-left: 8px solid transparent; content: ''; }
.cepa-floor-plan__popup.is-below { transform: translate(-50%, 13px); }
.cepa-floor-plan__popup.is-below::after { top: -8px; bottom: auto; border-top: 0; border-right: 8px solid transparent; border-bottom: 8px solid rgba(255,255,255,.97); border-left: 8px solid transparent; }
.cepa-floor-plan__popup.is-outside { opacity: 0; pointer-events: none; }
.cepa-floor-plan__popup-close { position: absolute; top: 4px; right: 6px; display: grid; width: 26px; height: 26px; padding: 0; place-items: center; border: 0; border-radius: 50%; color: #777; background: transparent; cursor: pointer; font-size: 20px; line-height: 1; }
.cepa-floor-plan__popup-close:hover { color: #222; background: #f2f2f2; }
.cepa-floor-plan__popup-body { display: grid; grid-template-columns: 52px minmax(0, 1fr); gap: 11px; align-items: center; padding-right: 17px; }
.cepa-floor-plan__popup-logo { display: grid; width: 52px; height: 52px; padding: 4px; overflow: hidden; place-items: center; border-radius: 7px; color: #777; background: #f4f4f4; font-size: 12px; font-weight: 700; }
.cepa-floor-plan__popup-logo img { display: block; width: 100%; height: 100%; object-fit: contain; object-position: center; }
.cepa-floor-plan__popup-info { display: flex; min-width: 0; flex-direction: column; gap: 4px; }
.cepa-floor-plan__popup-info strong { overflow: hidden; color: #222; font-size: 15px; line-height: 1.25; text-overflow: ellipsis; white-space: nowrap; }
.cepa-floor-plan__popup-info small { color: #8b8b8b; font-size: 12px; }
.cepa-floor-plan__popup-phone,
.cepa-floor-plan__popup-link { display: block; margin-top: 10px; color: var(--cepa-accent); font-size: 12px; text-decoration: none; }
.cepa-floor-plan__popup-phone + .cepa-floor-plan__popup-link { margin-top: 5px; }
.cepa-floor-plan__popup-phone:hover,
.cepa-floor-plan__popup-link:hover { color: #a8171c; text-decoration: underline; }
.cepa-floor-plan__controls { position: absolute; z-index: 5; right: 18px; bottom: 18px; display: flex; flex-direction: column; overflow: hidden; border: 1px solid #e4e4e4; border-radius: 7px; background: #fff; box-shadow: 0 6px 18px rgba(0,0,0,.12); }
.cepa-floor-plan__controls button { display: grid; width: 40px; height: 38px; padding: 0; place-items: center; border: 0; border-bottom: 1px solid #ededed; color: #333; background: #fff; cursor: pointer; font-size: 20px; line-height: 1; }
.cepa-floor-plan__controls button:last-child { border-bottom: 0; font-size: 16px; }
.cepa-floor-plan__controls button:hover { color: var(--cepa-accent); background: #fafafa; }
@media (max-width: 1050px) {
	.cepa-floor-plan { grid-template-columns: 132px 270px minmax(0, 1fr); }
	.cepa-floor-plan.has-single-floor { grid-template-columns: 270px minmax(0, 1fr); }
}
@media (max-width: 800px) {
	.cepa-floor-plan { display: flex; min-height: 0; flex-direction: column; overflow: visible; }
	.cepa-floor-plan__floors { flex-direction: row; overflow-x: auto; padding: 10px; }
	.cepa-floor-plan__floor { min-width: max-content; min-height: 44px; text-align: center; }
	.cepa-floor-plan__floor.is-active { transform: none; }
	.cepa-floor-plan__floor.is-active::after { display: none; }
	.cepa-floor-plan__sidebar { border-right: 0; border-bottom: 1px solid #ededed; }
	.cepa-floor-plan__search { height: 62px; }
	.cepa-floor-plan__shop-list { display: flex; height: auto; max-height: 236px; flex-direction: column; }
	.cepa-floor-plan__shop { min-height: 62px; }
	.cepa-floor-plan__map { min-height: 470px; }
	.cepa-floor-plan.has-focused-shop,
	.cepa-floor-plan.has-focused-shop .cepa-floor-plan__map { min-height: 380px; height: 380px; }
}
@media (max-width: 480px) {
	.cepa-floor-plan { border-radius: 8px; }
	.cepa-floor-plan__map { min-height: 390px; }
	.cepa-floor-plan__canvas { width: 98%; }
	.cepa-floor-plan__controls { right: 10px; bottom: 10px; }
}
@media (prefers-reduced-motion: reduce) {
	.cepa-floor-plan__canvas.is-animated { transition: none; }
}
