 .tls-widget, .tls-widget *{box-sizing:border-box}
.tls-widget{--tls-border:#e6e8ef;--tls-bg:#fff;--tls-muted:#64748b;--tls-text:#0f172a;--tls-accent:#2563eb;--tls-soft:#f8fafc;--tls-radius:14px;width:100%;max-width:100%;margin:18px 0;padding:16px;border:1px solid var(--tls-border);border-radius:var(--tls-radius);background:var(--tls-bg);color:var(--tls-text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;box-shadow:0 6px 18px rgba(15,23,42,.06)}
.tls-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px}
.tls-title{font-size:18px;font-weight:750;letter-spacing:-.2px}
.tls-sub{font-size:12px;color:var(--tls-muted)}

.tls-tabs{display:flex;gap:8px;margin:10px 0 14px}
.tls-tab{appearance:none;border:1px solid var(--tls-border);background:var(--tls-soft);color:var(--tls-text);padding:8px 12px;border-radius:10px;font-weight:650;font-size:13px;cursor:pointer;transition:transform .08s ease,background .15s ease,border-color .15s ease}
.tls-tab:hover{transform:translateY(-1px)}
.tls-tab.is-active{background:var(--tls-bg);border-color:var(--tls-accent);box-shadow:0 0 0 3px rgba(37,99,235,.12)}

.tls-panels{margin-top:4px}
.tls-panel[hidden]{display:none}

.tls-scroll{overflow:auto;overscroll-behavior:contain;border:1px solid var(--tls-border);border-radius:12px;background:#fff}
.tls-grid{display:grid;grid-template-columns:120px repeat(calc(var(--tls-cols) - 1), minmax(140px, 1fr));min-width:740px}
.tls-cell{padding:12px 12px;border-bottom:1px solid var(--tls-border);border-right:1px solid var(--tls-border);background:#fff}
.tls-cell:last-child{border-right:none}
.tls-grid > .tls-cell:nth-last-child(-n + 1){border-right:none}

.tls-corner{background:var(--tls-soft);position:sticky;left:0;z-index:2;border-right:1px solid var(--tls-border)}
.tls-time,.tls-rowlabel{background:var(--tls-soft);font-weight:700;color:var(--tls-muted);position:sticky;left:0;z-index:1}

.tls-dayhead{background:#fff}
.tls-dayname{font-weight:800;font-size:14px}
.tls-daydate{font-size:12px;color:var(--tls-muted);margin-top:2px}
.tls-minmax{margin-top:6px;display:flex;gap:8px;align-items:center;font-size:12px}
.tls-max{font-weight:800}
.tls-min{color:var(--tls-muted);font-weight:700}

.tls-slot{display:flex;align-items:center;gap:10px}
.tls-slot-ico{flex:0 0 auto;width:30px;height:30px;color:#f59e0b}
.tls-slot-temp{font-weight:800;font-size:16px}

.tls-ico svg{width:30px;height:30px;display:block}

.tls-rowval{font-size:13px;color:var(--tls-text);background:#fff}
.tls-sun{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--tls-muted)}

.tls-hours{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.tls-hour{display:grid;grid-template-columns:64px 38px 54px 1fr;align-items:center;gap:10px;padding:12px;border:1px solid var(--tls-border);border-radius:12px;background:var(--tls-soft)}
.tls-hour-time{font-weight:800}
.tls-hour-ico{width:30px;height:30px;color:#f59e0b}
.tls-hour-temp{font-weight:900;font-size:18px}
.tls-hour-meta{display:flex;gap:10px;color:var(--tls-muted);font-size:12px;flex-wrap:wrap}

.tls-weekend{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.tls-card{border:1px solid var(--tls-border);border-radius:14px;background:var(--tls-soft);padding:14px}
.tls-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.tls-card-title{font-weight:900;font-size:16px}
.tls-card-date{color:var(--tls-muted);font-size:12px;margin-top:2px}
.tls-card-ico{width:34px;height:34px;color:#f59e0b}
.tls-card-temps{display:flex;gap:10px;align-items:baseline;margin-top:10px}
.tls-card-max{font-size:26px;font-weight:900}
.tls-card-min{font-size:14px;font-weight:800;color:var(--tls-muted)}
.tls-card-grid{display:grid;grid-template-columns:1fr auto;gap:8px 10px;margin-top:12px;font-size:13px;color:var(--tls-text)}

.tls-foot{margin-top:12px;color:var(--tls-muted);font-size:12px}

.tls-error{border:1px solid #fecaca;background:#fff1f2;color:#7f1d1d;padding:12px;border-radius:12px}
.tls-empty{padding:12px;color:var(--tls-muted)}

@media (max-width: 900px){
  .tls-hours{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width: 640px){
  .tls-head{flex-direction:column;align-items:flex-start}
  .tls-hours{grid-template-columns:1fr}
  .tls-weekend{grid-template-columns:1fr}
  .tls-grid{min-width:680px}
}


/* --- Mapa Canarias --- */
.tls-canarias-stage{position:relative;border:1px solid var(--tls-border);border-radius:14px;overflow:hidden;background:#fff}
.tls-canarias-svg{display:block;width:100%;height:auto;position:relative;z-index:1}
.tls-canarias-labels{pointer-events:none}
.tls-canarias-markers{position:absolute;inset:0;pointer-events:none;z-index:2}
.tls-canarias-marker{position:absolute;transform:translate(-50%,-80%);pointer-events:auto}
.tls-canarias-bubble{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:999px;background:rgba(255,255,255,.95);border:1px solid rgba(15,23,42,.12);box-shadow:0 8px 20px rgba(15,23,42,.12);backdrop-filter:blur(6px)}
.tls-canarias-ico{width:26px;height:26px;display:block}
.tls-canarias-ico .tls-ico svg{width:26px;height:26px}
.tls-canarias-temp{font-weight:900;font-size:14px;letter-spacing:-.2px;color:var(--tls-text)}
.tls-canarias-name{margin-top:6px;text-align:center;font-size:12px;font-weight:800;color:var(--tls-text);text-shadow:0 1px 0 rgba(255,255,255,.85)}
.tls-canarias-tooltip{position:absolute;left:50%;top:-10px;transform:translate(-50%,-100%);min-width:180px;max-width:240px;background:#fff;border:1px solid rgba(15,23,42,.12);border-radius:12px;padding:10px 10px 9px;box-shadow:0 14px 30px rgba(15,23,42,.18);display:none}
.tls-canarias-marker:hover .tls-canarias-tooltip,.tls-canarias-marker:focus-within .tls-canarias-tooltip{display:block}
.tls-canarias-tip-title{font-weight:900;font-size:13px;margin-bottom:6px}
.tls-canarias-tip-row{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;font-size:12px;color:var(--tls-muted)}
.tls-canarias-tip-row strong{color:var(--tls-text)}
@media (max-width:640px){.tls-canarias-name{display:none}.tls-canarias-tooltip{min-width:160px}.tls-canarias-labels{display:none}}
