:root{--color-brand-primary:#0055a5;--color-brand-primary-dark:#003f7a;--color-brand-primary-light:#e8f1fa;--color-brand-accent:#d0021b;--color-brand-accent-light:#fef2f2;--color-gray-900:#0f172a;--color-gray-800:#1e293b;--color-gray-700:#334155;--color-gray-600:#475569;--color-gray-500:#64748b;--color-gray-400:#94a3b8;--color-gray-300:#cbd5e0;--color-gray-200:#e2e8f0;--color-gray-100:#f1f5f9;--color-gray-50:#f8f9fb;--color-success:#059669;--color-success-light:#ecfdf5;--color-success-border:#6ee7b7;--color-warning:#d97706;--color-warning-light:#fffbeb;--color-warning-border:#fcd34d;--color-error:#dc2626;--color-error-light:#fef2f2;--color-error-border:#fca5a5;--color-info:#0055a5;--color-info-light:#eff6ff;--color-info-border:#93c5fd;--color-capa-campamentos:#d0021b;--color-capa-ciclovias:#2d717c;--color-capa-parques:#2d7a3a;--color-capa-pavimentos:#7c5c2d;--color-capa-ipt:#5c2d91;--color-capa-comunas:#1565c0;--surface-base:#fff;--surface-raised:#f8f9fb;--surface-sunken:#f1f5f9;--surface-overlay:hsla(0,0%,100%,.95);--border-default:1px solid var(--color-gray-200);--border-strong:1px solid var(--color-gray-300);--border-brand:1px solid var(--color-brand-primary);--border-radius-sm:4px;--border-radius-md:8px;--border-radius-lg:12px;--border-radius-xl:16px;--border-radius-full:9999px;--font-sans:"Roboto",sans-serif;--font-serif:"Roboto Slab",serif;--text-xs:11px;--text-sm:13px;--text-base:15px;--text-md:16px;--text-lg:18px;--text-xl:20px;--text-2xl:24px;--text-3xl:30px;--font-normal:400;--font-medium:500;--font-semibold:600;--font-bold:700;--leading-tight:1.2;--leading-snug:1.4;--leading-normal:1.5;--leading-relaxed:1.7;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--shadow-xs:0 1px 2px rgba(0,0,0,.05);--shadow-sm:0 1px 4px rgba(0,0,0,.08);--shadow-md:0 2px 12px rgba(0,0,0,.1);--shadow-lg:0 4px 24px rgba(0,0,0,.12);--shadow-sidebar:2px 0 12px rgba(0,0,0,.06);--transition-fast:0.15s ease;--transition-normal:0.25s ease;--transition-slow:0.35s ease;--sidebar-width:268px;--header-height:52px;--panel-stats-width:320px;--z-sidebar:1000;--z-header:1100;--z-panel:900;--z-modal:2000;--z-toast:3000}@import url("https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;600;700&family=Roboto+Slab:wght@400;500;700&display=swap");@import url("https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined");*,:after,:before{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased}body{font-family:var(--font-sans);font-size:var(--text-base);color:var(--color-gray-700);background-color:var(--color-gray-50);line-height:var(--leading-normal)}h1{font-size:var(--text-3xl);line-height:var(--leading-tight)}h1,h2{font-family:var(--font-serif);font-weight:var(--font-normal);color:var(--color-gray-800)}h2{font-size:var(--text-2xl)}h2,h3{line-height:var(--leading-snug)}h3{font-family:var(--font-serif);font-size:var(--text-xl);font-weight:var(--font-medium);color:var(--color-gray-800)}h4{font-size:var(--text-lg)}h4,h5{font-family:var(--font-sans);font-weight:var(--font-semibold);color:var(--color-gray-800)}h5{font-size:var(--text-md)}h6{font-family:var(--font-sans);font-size:var(--text-base);font-weight:var(--font-semibold);color:var(--color-gray-800)}p{line-height:var(--leading-relaxed)}.material-symbols-outlined{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;font-size:24px;display:inline-block;line-height:1;font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--font-semibold);border:none;border-radius:var(--border-radius-md);cursor:pointer;padding:var(--space-2) var(--space-4);transition:background-color var(--transition-fast),border-color var(--transition-fast);text-decoration:none}.btn-primary{background-color:var(--color-brand-primary);color:#fff}.btn-primary:active,.btn-primary:hover{background-color:var(--color-brand-primary-dark)}.btn-secondary{background-color:var(--surface-base);color:var(--color-gray-700);border:var(--border-default)}.btn-secondary:hover{background-color:var(--color-gray-100)}.btn-ghost{background:none;color:var(--color-gray-600);border:none}.btn-ghost:hover{background-color:var(--color-gray-100)}.btn:disabled,.btn[disabled]{opacity:.5;cursor:not-allowed;pointer-events:none}.text-primary{color:var(--color-brand-primary)!important}.text-accent{color:var(--color-brand-accent)!important}.text-muted{color:var(--color-gray-500)!important}.text-sm{font-size:var(--text-sm)!important}.text-xs{font-size:var(--text-xs)!important}.font-medium{font-weight:var(--font-medium)!important}.font-semibold{font-weight:var(--font-semibold)!important}.flex,.flex-col{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-1{gap:var(--space-1)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.toast-mensaje{position:fixed;bottom:var(--space-6);left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--border-radius-md);font-size:var(--text-sm);font-weight:var(--font-medium);z-index:var(--z-toast);box-shadow:var(--shadow-lg);white-space:nowrap;pointer-events:none}.toast-mensaje.success{background:var(--color-success-light);color:var(--color-success);border:1px solid var(--color-success-border)}.toast-mensaje.info{background:var(--color-info-light);color:var(--color-info);border:1px solid var(--color-info-border)}.toast-mensaje.error{background:var(--color-error-light);color:var(--color-error);border:1px solid var(--color-error-border)}.toast-mensaje.warning{background:var(--color-warning-light);color:var(--color-warning);border:1px solid var(--color-warning-border)}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-gray-300);border-radius:var(--border-radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-gray-400)}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.animate-spin{animation:spin .8s linear infinite}.animate-fade-in{animation:fadeIn .2s ease forwards}.custom-control-box{display:flex;flex-direction:column;gap:var(--space-1)}