.tsm{--tsm-accent:#e0679f;position:relative;width:100%;height:var(--tsm-h,380px);border-radius:20px;overflow:hidden;background:#e9efe9;box-shadow:0 10px 40px rgba(0,0,0,.12);font-family:inherit;isolation:isolate}
.tsm__map,.tsm__map iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.tsm__map iframe{filter:saturate(1.05)}

.tsm__card{position:absolute;top:20px;width:min(360px,calc(100% - 40px));background:rgba(255,255,255,.96);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:18px;padding:20px 20px 16px;box-shadow:0 12px 36px rgba(20,20,40,.22);color:#2a2a35;z-index:2;opacity:0;transform:translateY(14px);transition:opacity .5s ease,transform .5s ease}
.tsm--left .tsm__card{left:20px}
.tsm--right .tsm__card{right:20px}
.tsm.is-ready .tsm__card{opacity:1;transform:none}
.tsm__card::before{content:"";position:absolute;left:0;top:18px;bottom:18px;width:4px;border-radius:0 4px 4px 0;background:var(--tsm-accent)}

.tsm__head{display:flex;flex-direction:column;gap:8px;margin-bottom:12px;padding-right:34px}
.tsm__name{margin:0;font-size:1.2rem;line-height:1.25;font-weight:700;color:var(--tsm-accent)}
.tsm__status{display:inline-flex;align-items:center;gap:7px;align-self:flex-start;font-size:.78rem;font-weight:600;padding:4px 10px;border-radius:999px;background:#eee;color:#555}
.tsm__status i{width:8px;height:8px;border-radius:50%;background:#aaa}
.tsm__status.is-open{background:#e3f6ea;color:#17803d}
.tsm__status.is-open i{background:#1fb455;animation:tsm-pulse 1.8s infinite}
.tsm__status.is-closed{background:#fde8e8;color:#b42318}
.tsm__status.is-closed i{background:#e03b3b}
@keyframes tsm-pulse{0%{box-shadow:0 0 0 0 rgba(31,180,85,.5)}70%{box-shadow:0 0 0 8px rgba(31,180,85,0)}100%{box-shadow:0 0 0 0 rgba(31,180,85,0)}}

.tsm__body{overflow:hidden;transition:max-height .35s ease,opacity .3s ease;max-height:420px}
.tsm__row{display:flex;gap:11px;align-items:flex-start;margin:0 0 11px;font-size:.93rem;line-height:1.45}
.tsm__row svg{flex:0 0 18px;width:18px;height:18px;margin-top:2px;fill:var(--tsm-accent)}
.tsm__row a{color:inherit;text-decoration:none;font-weight:600}
.tsm__row a:hover{color:var(--tsm-accent)}
.tsm__hours{flex:1}
.tsm__hours-btn{all:unset;box-sizing:border-box;display:flex;justify-content:space-between;gap:10px;width:100%;cursor:pointer;font-size:.93rem}
.tsm__hours-btn em{font-style:normal;font-size:.78rem;color:var(--tsm-accent);font-weight:600;white-space:nowrap}
.tsm__hours-btn:focus-visible{outline:2px solid var(--tsm-accent);outline-offset:3px;border-radius:4px}
.tsm__week{list-style:none;margin:8px 0 0;padding:0;font-size:.86rem}
.tsm__week[hidden]{display:none}
.tsm__week li{display:flex;justify-content:space-between;padding:4px 8px;border-radius:6px;color:#555}
.tsm__week li.is-today{background:color-mix(in srgb,var(--tsm-accent) 14%,#fff);color:#222;font-weight:700}

.tsm__actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.tsm__btn{flex:1 1 calc(50% - 8px);text-align:center;text-decoration:none;font-size:.85rem;font-weight:600;padding:10px 12px;border-radius:12px;border:1.5px solid #e4e4ea;color:#2a2a35;background:#fff;transition:transform .15s,box-shadow .15s,background .15s,color .15s}
.tsm__btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.1);border-color:var(--tsm-accent);color:var(--tsm-accent)}
.tsm__btn--primary{background:#1a73e8;border-color:#1a73e8;color:#fff}
.tsm__btn--primary:hover{background:#1558b8;border-color:#1558b8;color:#fff}
.tsm__btn--wa{background:#25d366;border-color:#25d366;color:#fff}
.tsm__btn--wa:hover{background:#1ebe5b;border-color:#1ebe5b;color:#fff}

.tsm__toggle{all:unset;position:absolute;top:14px;right:14px;width:30px;height:30px;border-radius:50%;background:#f3f3f7;cursor:pointer;display:none;align-items:center;justify-content:center}
.tsm__toggle span{width:9px;height:9px;border-right:2px solid #555;border-bottom:2px solid #555;transform:rotate(45deg) translate(-2px,-2px);transition:transform .3s}
.tsm__card.is-collapsed .tsm__toggle span{transform:rotate(-135deg) translate(-2px,-2px)}
.tsm__card.is-collapsed .tsm__body,.tsm__card.is-collapsed .tsm__actions{display:none}
.tsm__card.is-collapsed .tsm__head{margin-bottom:0}

@media (max-width:640px){
	.tsm{height:max(var(--tsm-h,380px),520px);border-radius:16px}
	.tsm__card{top:auto;bottom:12px;left:12px!important;right:12px!important;width:auto;padding:16px 16px 12px}
	.tsm__toggle{display:flex}
	.tsm__btn{flex:1 1 calc(50% - 8px)}
}
@media (prefers-reduced-motion:reduce){.tsm__card,.tsm__body,.tsm__btn{transition:none}.tsm__status.is-open i{animation:none}}

/* Formato banner a todo el ancho */
.tsm--full{width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);border-radius:0;box-shadow:none}
.tsm--full.tsm--left .tsm__card{left:max(20px,calc((100vw - 1200px)/2))}
.tsm--full.tsm--right .tsm__card{right:max(20px,calc((100vw - 1200px)/2))}
.tsm__map--js{background:#e5ebe5}
.tsm__map--js .gm-style-iw{border-radius:12px}
/* La tarjeta no tapa los controles de Google (zoom a la derecha) */
.tsm--right .tsm__card{right:64px}


/* ---------- v1.2 · Icono de ubicación exacta ---------- */
.tsm{--tsm-edge:380px;--tsm-sign:1;--tsm-up:0px}
.tsm--right{--tsm-edge:444px;--tsm-sign:-1}
.tsm--full.tsm--left,.tsm--full.tsm--right{--tsm-edge:calc(max(20px,(100vw - 1200px)/2) + 380px)}

/* El mapa se desplaza para que la ubicación quede en la zona libre, no bajo la tarjeta */
.tsm__map--embed iframe{
	inset:auto;
	top:calc(var(--tsm-up) * -1);
	height:calc(100% + var(--tsm-up));
	left:calc((var(--tsm-sign) - 1) / 2 * var(--tsm-edge));
	width:calc(100% + var(--tsm-edge));
}

.tsm__pin{position:absolute;z-index:1;display:block;width:44px;line-height:0;text-decoration:none;
	left:calc(50% + var(--tsm-sign) * var(--tsm-edge) / 2);
	top:calc(50% - var(--tsm-up) / 2);
	transform:translate(-50%,-100%);
	filter:drop-shadow(0 6px 6px rgba(0,0,0,.35))}
.tsm__pin[hidden]{display:none}
.tsm__pin svg{display:block;width:100%;height:auto;transform-origin:50% 100%;animation:tsm-drop .7s cubic-bezier(.3,1.5,.5,1) .2s both}
.tsm__pin:hover svg{transform:scale(1.08);transition:transform .2s}
.tsm__pin:focus-visible{outline:2px solid var(--tsm-accent);outline-offset:4px;border-radius:8px}
.tsm__pin-pulse{position:absolute;left:50%;bottom:-8px;width:16px;height:16px;margin-left:-8px;border-radius:50%;background:var(--tsm-accent);opacity:.55;animation:tsm-ring 2s ease-out infinite}
.tsm__pin--gm{left:0;top:0;transform:translate(-50%,-100%)}
@keyframes tsm-drop{0%{opacity:0;transform:translateY(-28px)}100%{opacity:1;transform:none}}
@keyframes tsm-ring{0%{transform:scale(.4);opacity:.7}100%{transform:scale(3.2);opacity:0}}
@media (prefers-reduced-motion:reduce){.tsm__pin svg,.tsm__pin-pulse{animation:none}}

/* Móvil: la tarjeta va abajo, la ubicación se sube a la zona visible */
@media (max-width:640px){
	.tsm,.tsm--right,.tsm--full.tsm--left,.tsm--full.tsm--right{--tsm-edge:0px;--tsm-up:264px}
	.tsm__pin{width:40px}
}
