@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap');

:root { --slate-900:#0f172a; --slate-800:#1e293b; --slate-700:#334155; --slate-600:#475569; --slate-500:#64748b; --slate-400:#94a3b8; --line:#e2e8f0; --bg:#f1f5f9; --purple:#7e22ce; }
* { box-sizing:border-box; } html { scroll-behavior:smooth; } body { margin:0; background:var(--bg); color:var(--slate-800); font-family:Inter,system-ui,sans-serif; font-size:13px; } button,a { font:inherit; } button { cursor:pointer; } a { color:inherit; text-decoration:none; }
.portal-header { position:sticky; top:0; z-index:20; color:#fff; background:linear-gradient(105deg,#1e293b,#0f172a); box-shadow:0 5px 16px rgba(15,23,42,.16); }
.portal-bar { width:min(1152px,calc(100% - 32px)); height:58px; margin:auto; display:flex; align-items:center; justify-content:space-between; gap:15px; }
.portal-brand { display:flex; align-items:center; gap:9px; min-width:0; }.portal-brand img { width:32px; height:32px; border-radius:9px; }.portal-brand strong,.portal-brand small { display:block; }.portal-brand strong { font-size:13px; font-weight:900; letter-spacing:.8px; text-transform:uppercase; }.portal-brand small { margin-top:1px; color:#94a3b8; font-size:9px; }
.portal-user { display:flex; align-items:center; gap:9px; min-width:0; }.demo-chip { border:1px solid rgba(250,204,21,.25); border-radius:999px; padding:5px 9px; color:#fde68a; background:rgba(250,204,21,.08); font-size:9px; font-weight:700; }.portal-avatar { width:28px; height:28px; display:grid; place-items:center; border-radius:50%; color:#5b21b6; background:#ede9fe; font-size:9px; font-weight:900; }.user-copy strong,.user-copy small { display:block; }.user-copy strong { max-width:120px; overflow:hidden; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }.user-copy small { color:#94a3b8; font-size:9px; text-transform:capitalize; }.portal-icon { border:0; color:#94a3b8; background:transparent; font-size:21px; }
.portal-tabs { width:min(1152px,calc(100% - 32px)); height:42px; margin:auto; display:flex; align-items:stretch; gap:2px; overflow-x:auto; }.portal-tabs a { display:flex; align-items:center; gap:8px; padding:0 16px; border-bottom:2px solid transparent; color:#cbd5e1; font-size:11px; font-weight:600; white-space:nowrap; }.portal-tabs a:hover { color:#fff; background:rgba(255,255,255,.04); }.portal-tabs a.is-active { border-bottom-color:#fff; color:#fff; }.portal-tabs a span { color:#94a3b8; font-size:15px; }.portal-tabs a.is-active span { color:#fff; }
.portal-main { width:min(1152px,calc(100% - 32px)); margin:auto; padding:25px 0 38px; }.report-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; margin-bottom:8px; }.back-link { display:inline-block; margin-bottom:6px; color:#94a3b8; font-size:11px; }.back-link:hover { color:#475569; text-decoration:underline; }.report-heading h1 { margin:0; color:#1e293b; font-size:25px; font-weight:900; letter-spacing:-.8px; }.report-heading p { margin:4px 0 0; color:#64748b; font-size:12px; }.report-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:7px; }.button { display:inline-flex; align-items:center; gap:7px; border:1px solid var(--line); border-radius:9px; padding:9px 13px; font-size:11px; font-weight:700; transition:.16s; }.button--light { color:#475569; background:#fff; }.button--light:hover { background:#f8fafc; }.button--dark { border-color:#1e293b; color:#fff; background:#1e293b; }.button--dark:hover { background:#0f172a; }.cache-note { margin:0 0 12px; color:#94a3b8; font-size:9px; text-align:right; }.cache-note:first-letter { color:#f59e0b; }
.report-card { margin-bottom:12px; padding:18px; border:1px solid var(--line); border-radius:14px; background:#fff; box-shadow:0 2px 7px rgba(15,23,42,.035); }.card-title { display:flex; align-items:center; gap:10px; margin-bottom:16px; }.card-title h2 { margin:0; color:#1e293b; font-size:16px; font-weight:900; }.card-icon { width:35px; height:35px; display:grid; place-items:center; flex:0 0 35px; border-radius:10px; color:#fff; font-size:16px; font-weight:700; }.card-icon--navy { background:#1e293b; }.card-icon--purple { background:#7e22ce; }.card-icon--teal { background:#0d9488; }.card-icon--indigo { background:#4f46e5; }.card-icon--amber { background:#d97706; }.card-icon--red { background:#dc2626; }.event-status,.count-pill { margin-left:auto; border-radius:999px; padding:5px 10px; font-size:10px; font-weight:800; }.event-status { color:#166534; background:#dcfce7; }.count-pill--purple { color:#7e22ce; background:#f3e8ff; }.count-pill--teal { color:#0f766e; background:#ccfbf1; }.count-pill--indigo { color:#4338ca; background:#e0e7ff; }.count-pill--amber { color:#b45309; background:#fef3c7; }.count-pill--red { color:#b91c1c; background:#fee2e2; }
.event-info-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:15px; color:#334155; }.event-info-grid span,.field-label { display:block; margin-bottom:5px; color:#94a3b8; font-size:9px; font-weight:900; letter-spacing:1px; text-transform:uppercase; }.event-info-grid strong { font-size:12px; }.event-description { grid-column:1/-1; padding-top:4px; }.event-description p { margin:0; color:#475569; font-size:12px; line-height:1.55; }.map-block { margin-top:17px; padding-top:14px; border-top:1px solid #f1f5f9; }.map-block img { display:block; width:100%; max-height:290px; border:1px solid #e2e8f0; border-radius:10px; object-fit:contain; background:#f8fafc; }.map-block.is-hidden { display:none; }
.companies-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }.company-card { padding:13px; border:1px solid var(--line); border-radius:10px; }.company-head { display:flex; align-items:flex-start; justify-content:space-between; gap:8px; margin-bottom:10px; }.company-head strong,.company-head small { display:block; }.company-head strong { color:#1e293b; font-size:12px; }.company-head small { margin-top:4px; color:#94a3b8; font-size:9px; }.percent-pill { border-radius:999px; padding:4px 7px; color:#475569; background:#f1f5f9; font-size:9px; font-weight:800; white-space:nowrap; }.progress-bar { height:6px; overflow:hidden; margin-bottom:11px; border-radius:5px; background:#f1f5f9; }.progress-bar i { display:block; height:100%; border-radius:inherit; background:#22c55e; }.company-kpis { display:grid; grid-template-columns:repeat(4,1fr); gap:4px; text-align:center; }.company-kpis span { padding:6px 2px; border-radius:6px; color:#64748b; background:#f8fafc; font-size:9px; }.company-kpis b,.company-kpis span { display:block; }.company-kpis b { margin-bottom:2px; color:#334155; font-size:12px; }.company-kpis .kpi-ok { color:#16a34a; background:#f0fdf4; }.company-kpis .kpi-ok b { color:#15803d; }.company-kpis .kpi-issue { color:#dc2626; background:#fef2f2; }.company-kpis .kpi-issue b { color:#b91c1c; }.company-kpis .kpi-resolved { color:#2563eb; background:#eff6ff; }.company-kpis .kpi-resolved b { color:#1d4ed8; }.company-contact { display:grid; gap:4px; margin-top:11px; padding-top:10px; border-top:1px solid #f1f5f9; color:#64748b; font-size:9px; }
.table-wrap { overflow-x:auto; }.report-table { width:100%; border-collapse:collapse; min-width:700px; }.report-table th { padding:0 8px 8px; border-bottom:1px solid #e2e8f0; color:#94a3b8; font-size:9px; font-weight:900; letter-spacing:1px; text-align:left; text-transform:uppercase; white-space:nowrap; }.report-table td { padding:9px 8px; border-bottom:1px solid #f1f5f9; color:#64748b; font-size:10px; vertical-align:middle; }.report-table tbody tr:last-child td { border-bottom:0; }.report-table tbody tr:hover td { background:#f8fafc; }.person-name { display:flex; align-items:center; gap:8px; color:#1e293b !important; white-space:nowrap; }.person-name strong { font-size:10px; }.avatar { width:25px; height:25px; display:inline-grid; place-items:center; flex:0 0 25px; border-radius:50%; font-size:8px; font-weight:900; }.avatar--violet { color:#6d28d9; background:#ede9fe; }.avatar--orange { color:#c2410c; background:#ffedd5; }.avatar--blue { color:#1d4ed8; background:#dbeafe; }.avatar--green { color:#047857; background:#d1fae5; }.avatar--pink { color:#be185d; background:#fce7f3; }.role-pill { border-radius:999px; padding:4px 7px; color:#475569; background:#f1f5f9; font-size:9px; white-space:nowrap; }.table-section { margin-top:17px; }.table-section:first-of-type { margin-top:0; }.table-section-title { margin-bottom:8px; color:#64748b; font-size:10px; font-weight:900; letter-spacing:1px; text-transform:uppercase; }.table-section-title i { width:7px; height:7px; display:inline-block; margin-right:7px; border-radius:50%; background:#818cf8; }.table-section-title span { color:#cbd5e1; }.number-col { width:34px; }.item-title { display:block; color:#334155; font-size:10px; }.item-description { display:block; max-width:290px; margin-top:4px; color:#94a3b8; font-size:9px; line-height:1.4; }.muted { color:#94a3b8 !important; }.report-status { display:inline-block; border-radius:999px; padding:4px 7px; font-size:9px; font-weight:800; white-space:nowrap; }.report-status--sin_novedad { color:#15803d; background:#dcfce7; }.report-status--resuelta { color:#1d4ed8; background:#dbeafe; }.report-status--incidencia { color:#b91c1c; background:#fee2e2; }.report-status--pendiente { color:#64748b; background:#f1f5f9; }.report-status--en_proceso { color:#b45309; background:#fef3c7; }.inline-photos,.incident-photos { display:flex; flex-wrap:wrap; gap:4px; }.photo-thumb { width:48px; height:40px; position:relative; padding:0; overflow:hidden; border:1px solid #e2e8f0; border-radius:6px; background:#f1f5f9; }.photo-thumb img { display:block; width:100%; height:100%; object-fit:cover; }.photo-thumb span { position:absolute; inset:0; display:grid; place-items:center; color:#fff; background:rgba(15,23,42,.46); opacity:0; font-size:17px; transition:.15s; }.photo-thumb:hover span { opacity:1; }
.schedule-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:9px; }.schedule-item { position:relative; min-height:90px; padding:12px; border:1px solid #e2e8f0; border-radius:9px; background:#f8fafc; }.schedule-item strong,.schedule-item span,.schedule-item small,.schedule-item em { display:block; }.schedule-item strong { color:#64748b; font-size:10px; }.schedule-item span { margin-top:9px; color:#334155; font-size:10px; font-weight:800; }.schedule-item small { margin-top:4px; color:#94a3b8; font-size:9px; }.schedule-item.is-current { border-color:#99f6e4; background:#f0fdfa; }.schedule-item.is-current strong { color:#0f766e; }.schedule-item em { width:max-content; margin-top:7px; padding:3px 5px; border-radius:4px; color:#0f766e; background:#ccfbf1; font-size:8px; font-style:normal; font-weight:800; }
.incident-list { display:grid; gap:9px; }.report-incident { display:flex; justify-content:space-between; gap:18px; padding:14px; border:1px solid #e2e8f0; border-radius:10px; background:#f8fafc; }.report-incident.is-open { border-color:#fecaca; background:#fff7f7; }.incident-main { min-width:0; flex:1; }.incident-line { display:flex; align-items:center; flex-wrap:wrap; gap:7px; }.incident-line strong { color:#64748b; font-size:10px; }.report-incident h3 { margin:8px 0 4px; color:#1e293b; font-size:13px; }.report-incident p { margin:0; color:#475569; font-size:10px; line-height:1.5; }.incident-person { display:flex; align-items:center; gap:6px; margin-top:10px; color:#64748b; font-size:9px; }.incident-person .avatar { width:22px; height:22px; flex-basis:22px; }.incident-photos { margin-top:10px; }.photo-thumb--report { width:78px; height:66px; }.photo-thumb--report span { inset:auto 0 0; display:block; padding:3px; opacity:1; font-size:8px; text-align:center; }.incident-date { min-width:75px; color:#94a3b8; font-size:9px; text-align:right; }.incident-date strong { display:block; margin-top:4px; color:#64748b; font-size:10px; }.report-footer { padding:8px 0 18px; color:#94a3b8; font-size:9px; text-align:center; }
.lightbox { display:none; position:fixed; inset:0; z-index:40; align-items:center; justify-content:center; padding:25px; background:rgba(15,23,42,.84); }.lightbox.is-open { display:flex; }.lightbox > div { max-width:min(800px,92vw); text-align:center; }.lightbox img { max-width:100%; max-height:75vh; border-radius:10px; box-shadow:0 20px 60px rgba(0,0,0,.35); }.lightbox p { color:#fff; font-size:11px; }.lightbox > button { position:absolute; top:12px; right:22px; border:0; color:#fff; background:none; font-size:38px; font-weight:200; }.print-loader { position:fixed; inset:0; z-index:60; display:flex; align-items:center; justify-content:center; flex-direction:column; gap:9px; color:#fff; background:rgba(15,23,42,.86); font-size:13px; }.print-loader span { color:#cbd5e1; font-size:11px; }
@media (max-width:800px) { .portal-bar,.portal-tabs,.portal-main { width:calc(100% - 24px); }.user-copy,.demo-chip { display:none; }.portal-tabs a { padding:0 11px; }.report-heading { flex-direction:column; }.report-actions { justify-content:flex-start; }.event-info-grid { grid-template-columns:repeat(2,1fr); }.companies-grid { grid-template-columns:1fr; }.schedule-grid { grid-template-columns:repeat(2,1fr); } }
@media (max-width:520px) { .portal-main { padding-top:17px; }.report-card { padding:13px; }.report-heading h1 { font-size:22px; }.report-actions .button { padding:8px 9px; }.report-actions .button span { display:none; }.event-info-grid { gap:12px; }.event-description { grid-column:1/-1; }.schedule-grid { grid-template-columns:1fr; }.report-incident { flex-direction:column; gap:9px; }.incident-date { text-align:left; }.card-title h2 { font-size:14px; } }
@media print { @page { size:A4 portrait; margin:12mm 10mm; } body { background:#fff; }.portal-header,.no-print,.report-actions,.lightbox,.report-footer { display:none !important; }.portal-main { width:100%; padding:0; }.report-card { margin-bottom:8px; padding:12px; border-radius:8px; box-shadow:none; break-inside:avoid; }.report-card h2 { font-size:14px; }.report-table { font-size:10px; }.report-table td,.report-table th { padding-top:4px; padding-bottom:4px; }.photo-thumb span { display:none; }.map-block img { max-height:220px; }.companies-grid { gap:7px; }.company-card { padding:9px; } }