:root{color-scheme:dark;--bg:#08111f;--panel:#101d31;--municipality-color:#18B8F2;--municipality-color-dark:#0E7490;--municipality-on-color:#FFFFFF;--accent:var(--municipality-color);--muted:#9fb0c7}*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;background:var(--bg);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}body{overflow:hidden}#spa-root{position:fixed;inset:0;overflow:hidden;pointer-events:auto}.spa-frame{position:absolute;inset:0;width:100%;height:100%;border:0;background:var(--bg);display:none;visibility:hidden;opacity:0;pointer-events:none;z-index:0;transition:opacity .18s}.spa-frame.is-active{display:block;visibility:visible;opacity:1;pointer-events:auto!important;z-index:1}#spa-loader{position:fixed;inset:0;z-index:999999;pointer-events:none;display:grid;place-items:center;background:radial-gradient(circle at center,rgba(20,36,59,.98),rgba(8,17,31,.995) 65%);opacity:0;visibility:hidden;transition:.2s}#spa-loader.is-visible{opacity:1;visibility:visible;pointer-events:auto}.loader-card{display:grid;justify-items:center;gap:18px;color:#fff}.loader-wheel{position:relative;width:78px;height:78px;border-radius:50%;background:conic-gradient(var(--accent) var(--loader-progress,8%),rgba(255,255,255,.12) 0);box-shadow:0 0 34px rgba(34,197,94,.2);animation:spin 1.05s linear infinite}.loader-wheel:after{content:"";position:absolute;inset:9px;border-radius:50%;background:var(--panel)}.loader-mark{position:absolute;inset:0;z-index:1;display:grid;place-items:center;font-size:27px;animation:counter 1.05s linear infinite}.loader-title{font-size:16px;font-weight:800}.loader-detail{color:var(--muted);font-size:13px}.session-bar{position:fixed;right:12px;bottom:8px;z-index:900000;display:flex;gap:9px;align-items:center;padding:5px 9px;border-radius:999px;background:rgba(8,17,31,.82);color:#9fb0c7;font-size:11px;pointer-events:auto}.session-bar a{color:#fff;text-decoration:none}.login{min-height:100%;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at top,#15304b,#08111f 65%)}.login-card{width:min(440px,100%);padding:34px;border:1px solid rgba(255,255,255,.12);border-radius:22px;background:#101d31;color:#fff;text-align:center;box-shadow:0 30px 80px rgba(0,0,0,.32)}.login-card p{color:var(--muted);line-height:1.55}.brand-mark{display:grid;place-items:center;width:62px;height:62px;margin:0 auto 18px;border-radius:18px;background:var(--municipality-color);color:#fff;font-weight:900;font-size:24px}.login-card #googleButton{display:flex;justify-content:center;margin-top:24px}.error{color:#fca5a5!important}.spa-error{max-width:520px;margin:12vh auto;padding:24px;border:1px solid rgba(239,68,68,.45);border-radius:16px;background:#172033;color:#fff}.spa-error button{padding:10px 14px;border:0;border-radius:10px;font-weight:800}@keyframes spin{to{transform:rotate(360deg)}}@keyframes counter{to{transform:rotate(-360deg)}}

#spa-activity{position:fixed;top:14px;right:16px;z-index:999998;display:flex;align-items:center;gap:10px;padding:8px 12px 8px 8px;border:1px solid rgba(255,255,255,.12);border-radius:999px;background:rgba(16,29,49,.94);color:#fff;box-shadow:0 10px 30px rgba(0,0,0,.22);opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .16s ease,transform .16s ease,visibility .16s ease;pointer-events:none}
#spa-activity.is-visible{opacity:1;visibility:visible;transform:translateY(0)}
.activity-wheel{position:relative;width:30px;height:30px;flex:0 0 30px;border-radius:50%;background:conic-gradient(var(--accent) 32%,rgba(255,255,255,.13) 0);animation:spin .85s linear infinite}
.activity-wheel:after{content:"";position:absolute;inset:4px;border-radius:50%;background:var(--panel)}
.activity-wheel .loader-mark{font-size:10px;animation:counter .85s linear infinite}
.activity-text{font-size:12px;font-weight:800;letter-spacing:.01em;white-space:nowrap}

/* Sugerencias para hoy — panel persistente fuera de las vistas SPA */
.sug-fab{position:fixed;right:18px;bottom:18px;z-index:99990;width:52px;height:52px;border:0;border-radius:50%;background:#0f172a;color:#fff;box-shadow:0 12px 32px rgba(15,23,42,.28);font-size:21px;cursor:pointer}.sug-fab b{position:absolute;right:-3px;top:-5px;min-width:20px;height:20px;padding:0 5px;border-radius:999px;background:#dc2626;color:#fff;font-size:11px;display:grid;place-items:center}.sug-panel{position:fixed;right:18px;bottom:18px;z-index:99991;width:min(390px,calc(100vw - 24px));max-height:min(650px,calc(100vh - 30px));display:none;flex-direction:column;background:#fff;border:1px solid #e2e8f0;border-radius:18px;box-shadow:0 22px 60px rgba(15,23,42,.28);overflow:hidden;color:#0f172a}.sug-panel.open{display:flex}.sug-head{display:flex;align-items:center;justify-content:space-between;padding:14px 15px;border-bottom:1px solid #e2e8f0}.sug-head strong{font-size:15px}.sug-head small{display:block;color:#64748b;font-weight:600;margin-top:2px}.sug-close{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:1px solid transparent;border-radius:10px;background:transparent;color:#0f172a;font-size:22px;font-weight:850;cursor:pointer}.sug-close:hover,.sug-close:focus-visible{background:#fff;border-color:#bae6fd;outline:none}.sug-close-label{display:none;font-size:12px}.sug-close-icon{line-height:1}.sug-list{overflow:auto;padding:8px}.sug-card{border:1px solid #e2e8f0;border-radius:13px;margin:7px 0;background:#fff}.sug-summary{padding:11px 12px;cursor:pointer}.sug-title{font-weight:900;font-size:13px}.sug-sub{font-size:12px;color:#64748b;margin-top:3px}.sug-detail{display:none;padding:0 12px 12px;font-size:12px;line-height:1.4}.sug-card.expanded .sug-detail{display:block}.sug-check{display:flex;align-items:center;gap:7px;margin:6px 0}.sug-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}.sug-actions button{border:1px solid #cbd5e1;background:#fff;color:#334155!important;border-radius:9px;padding:7px 9px;font-size:11px;font-weight:800;cursor:pointer}.sug-actions button.primary{background:#0f172a;color:#fff!important;border-color:#0f172a}.sug-empty{padding:22px;text-align:center;color:#64748b;font-size:13px}@media(max-width:600px){.sug-fab{right:12px;bottom:12px}.sug-panel{right:8px;bottom:8px;width:calc(100vw - 16px);max-height:calc(100vh - 16px)}}


/* v8 — cabecera superior, paneles y ventanas comunes */
:root{--shell-h:0px;--float-shadow:0 22px 60px rgba(15,23,42,.22);--float-radius:18px}
#spa-root{top:0}
.app-topbar{position:fixed;left:0;right:0;top:0;height:var(--shell-h);z-index:900100;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 14px;background:rgba(8,17,31,.96);border-bottom:1px solid rgba(255,255,255,.10);color:#d9e7f6;font-size:12px;backdrop-filter:blur(12px)}
.topbar-left,.topbar-right{display:flex;align-items:center;gap:9px;min-width:0}.topbar-left time{font-weight:750;color:#9fb0c7;white-space:nowrap}.topbar-right{justify-content:flex-end}.topbar-link,.app-topbar a{border:0;background:transparent;color:#fff;padding:7px 9px;border-radius:9px;font:inherit;font-weight:850;text-decoration:none;cursor:pointer}.topbar-link:hover,.app-topbar a:hover{background:rgba(255,255,255,.08)}.topbar-exit{border-left:1px solid rgba(255,255,255,.12)!important;border-radius:0!important;padding-left:12px!important}.topbar-context{color:#9fb0c7}.app-topbar form{margin:0}.app-topbar select{max-width:210px;border:1px solid rgba(255,255,255,.15);border-radius:8px;background:#101d31;color:#fff;padding:6px 8px}
.session-bar{display:none!important}
#spa-activity{top:14px}
.sug-fab{right:18px;bottom:18px;background:#0b7198;box-shadow:var(--float-shadow)}
.sug-panel{right:18px;bottom:18px;border-color:#bae6fd;background:#f0f9ff;box-shadow:var(--float-shadow);border-radius:var(--float-radius);pointer-events:none;visibility:hidden;opacity:0;display:flex;transform:translateY(8px);transition:opacity .16s ease,transform .16s ease}
.sug-panel.open{pointer-events:auto;visibility:visible;opacity:1;transform:none}.sug-head{background:linear-gradient(135deg,#e0f2fe,#ecfeff);border-color:#bae6fd}.sug-card{box-shadow:0 5px 18px rgba(14,116,144,.07)}
.news-backdrop{position:fixed;inset:0;z-index:999995;display:grid;place-items:center;padding:18px;background:rgba(2,6,23,.62);backdrop-filter:blur(4px)}.news-backdrop[hidden]{display:none}.news-modal{position:relative;width:min(640px,calc(100vw - 28px));max-height:calc(100vh - 36px);overflow:auto;border:1px solid rgba(125,211,252,.28);border-radius:22px;background:linear-gradient(155deg,#101d31,#0b1626);color:#fff;padding:28px;box-shadow:0 30px 90px rgba(0,0,0,.42)}.news-kicker{color:var(--municipality-color);font-size:11px;font-weight:900;letter-spacing:.16em}.news-modal h2{margin:7px 44px 18px 0;font-size:clamp(24px,4vw,35px)}.news-close{position:absolute;right:14px;top:12px;width:38px;height:38px;border:0;border-radius:50%;background:rgba(255,255,255,.08);color:#fff;font-size:24px;cursor:pointer}.news-slide{display:none;min-height:185px}.news-slide.active{display:block}.news-slide h3{font-size:22px;margin:0 0 10px}.news-slide p{color:#b9c9dc;line-height:1.55;margin:0}.news-footer{position:sticky;bottom:-28px;display:flex;align-items:center;justify-content:space-between;gap:10px;margin:20px -28px -28px;padding:15px 28px;background:rgba(8,17,31,.97);border-top:1px solid rgba(255,255,255,.10)}.news-footer button,.news-dismiss{border:1px solid rgba(255,255,255,.15);border-radius:10px;background:color-mix(in srgb,var(--municipality-color) 28%,#101d31);color:#fff;padding:9px 12px;font-weight:800;cursor:pointer}.news-dismiss{width:100%;margin-top:14px;background:transparent;color:#9fdcf3}
@media(max-width:650px){:root{--shell-h:0px}.app-topbar{padding:0 8px}.topbar-left time{max-width:130px;overflow:hidden;text-overflow:ellipsis}.topbar-context{display:none}.app-topbar select{max-width:130px}.news-modal{padding:22px}.news-footer{bottom:-22px;margin:18px -22px -22px;padding:13px 22px}.sug-panel{right:8px;bottom:8px;width:calc(100vw - 16px);max-height:calc(100vh - var(--shell-h) - 16px)}}


/* v8.0.3.1 — cierre accesible de Sugerencias en móvil */
.sug-head{position:sticky;top:0;z-index:4;flex:0 0 auto}
@media(max-width:600px){
  .sug-panel{right:8px;bottom:max(8px,env(safe-area-inset-bottom));width:calc(100vw - 16px);max-height:calc(100dvh - 16px - env(safe-area-inset-bottom));}
  .sug-head{padding:12px 12px 12px 14px}
  .sug-close{min-width:78px;min-height:44px;padding:0 11px;background:#fff;border-color:#7dd3fc;color:#0f172a;box-shadow:0 2px 8px rgba(14,116,144,.10)}
  .sug-close-label{display:inline}
  .sug-close-icon{font-size:20px}
  .sug-list{overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
}

/* 8.3.2 · identidad cromática municipal del shell */
.loader-wheel,.activity-wheel{box-shadow:0 0 34px color-mix(in srgb,var(--municipality-color) 28%,transparent)}
.sug-fab{background:var(--municipality-color)!important;color:var(--municipality-on-color)!important}
.news-modal{border-color:color-mix(in srgb,var(--municipality-color) 38%,transparent)}

/* 8.7.1 · Utilidades persistentes y Novedades alineadas con el sistema visual común. */
.sug-fab{
  width:auto!important;height:44px!important;min-width:132px!important;padding:0 14px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:8px!important;
  border:1px solid color-mix(in srgb,var(--municipality-color) 30%,#d4d4d8)!important;border-radius:10px!important;
  background:#fff!important;color:#18181b!important;box-shadow:0 8px 24px rgba(15,23,42,.12)!important;font-size:13px!important;font-weight:800!important
}
.sug-fab::after{content:"Sugerencias";font-size:13px;font-weight:800}
.sug-fab b{right:-7px!important;top:-8px!important;box-shadow:0 0 0 3px #fff!important}
.sug-panel{border-color:#e4e4e7!important;border-radius:12px!important;background:#fff!important;box-shadow:0 18px 48px rgba(15,23,42,.18)!important}
.sug-head{background:#fff!important;border-color:#e4e4e7!important}
.sug-card{border-radius:9px!important;box-shadow:none!important}

/* Novedades usa un Dialog claro; se corrige contraste y se separa paginación de la acción persistente. */
.news-backdrop{background:rgba(9,9,11,.52)!important;backdrop-filter:blur(5px)!important}
.news-modal{width:min(620px,calc(100vw - 28px))!important;border:1px solid #e4e4e7!important;border-radius:14px!important;background:#fff!important;color:#18181b!important;padding:26px!important;box-shadow:0 24px 70px rgba(0,0,0,.24)!important}
.news-kicker{color:var(--municipality-color)!important}
.news-modal h2,.news-slide h3{color:#18181b!important}
.news-slide p{color:#52525b!important}
.news-close{background:#fff!important;color:#18181b!important;border:1px solid #e4e4e7!important;border-radius:8px!important}
.news-footer{position:relative!important;bottom:auto!important;margin:22px -26px 0!important;padding:14px 26px!important;background:#fafafa!important;border-top:1px solid #e4e4e7!important;color:#18181b!important}
.news-footer button{border:1px solid #d4d4d8!important;border-radius:8px!important;background:#fff!important;color:#18181b!important;padding:8px 12px!important}
.news-dismiss{width:100%!important;margin:12px 0 0!important;border:1px solid #d4d4d8!important;border-radius:8px!important;background:#fff!important;color:#52525b!important;padding:9px 12px!important}
@media(max-width:600px){.sug-fab{min-width:44px!important;width:44px!important;padding:0!important}.sug-fab::after{display:none}.news-modal{padding:20px!important}.news-footer{margin:18px -20px 0!important;padding:12px 20px!important}}
