:root{--color-primary:#4f46e5;--color-primary-hover:#4338ca;--color-primary-soft:#eef2ff;--color-primary-border:#c7d2fe;--color-slate-50:#f8fafc;--color-slate-100:#f1f5f9;--color-slate-200:#e2e8f0;--color-slate-300:#cbd5e1;--color-slate-400:#94a3b8;--color-slate-500:#64748b;--color-slate-600:#475569;--color-slate-700:#334155;--color-slate-800:#1e293b;--color-slate-900:#0f172a;--color-bg:#f8fafc;--color-surface:#fff;--color-surface-muted:#f8fafc;--color-text:#0f172a;--color-text-muted:#64748b;--color-border:#e2e8f0;--color-border-strong:#cbd5e1;--color-danger:#dc2626;--color-success:#059669;--shadow-sm:0 1px 2px 0 rgba(15,23,42,.04),0 1px 3px 0 rgba(15,23,42,.06);--shadow-md:0 4px 6px -1px rgba(15,23,42,.06),0 2px 4px -2px rgba(15,23,42,.04);--shadow-lg:0 10px 15px -3px rgba(15,23,42,.08),0 4px 6px -4px rgba(15,23,42,.04);--shadow-focus:0 0 0 3px rgba(79,70,229,.18);--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-full:9999px;--space-1:0.25rem;--space-2:0.5rem;--space-3:0.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--font-sans:var(--font-inter),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;--font-mono:ui-monospace,SFMono-Regular,"SF Mono",Consolas,"Liberation Mono",monospace;--transition:150ms cubic-bezier(0.4,0,0.2,1)}*,:after,:before{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;font-family:var(--font-sans);font-feature-settings:"cv02","cv03","cv04","cv11";background:var(--color-bg);color:var(--color-text);font-size:14px;line-height:1.5}#root{min-height:100vh}h1,h2,h3,h4{color:var(--color-text);letter-spacing:-.01em}h1{font-weight:700}h2,h3{font-weight:600}a{color:var(--color-primary);text-decoration:none;transition:color var(--transition)}a:hover{color:var(--color-primary-hover)}button,input[type=search],input[type=text],select{font-family:inherit}.app{min-height:100vh;display:flex;flex-direction:column}.main{flex:1;padding:var(--space-6) var(--space-8);max-width:1600px;width:100%;margin:0 auto}.nav{background:linear-gradient(135deg,var(--color-slate-900) 0,#1a1e42 100%);border-bottom:1px solid rgba(148,163,184,.12);padding:var(--space-4) var(--space-8);box-shadow:var(--shadow-sm);position:sticky;top:0;z-index:50}.nav-inner{max-width:1600px;margin:0 auto;display:flex;align-items:center;gap:var(--space-8)}.nav-brand{gap:var(--space-3);font-size:1rem;letter-spacing:-.01em}.nav-brand,.nav-brand-icon{display:flex;align-items:center;color:#fff;font-weight:700}.nav-brand-icon{width:36px;height:32px;border-radius:var(--radius-md);background:linear-gradient(135deg,var(--color-primary) 0,#7c3aed 100%);justify-content:center;font-size:.75rem;letter-spacing:-.02em;box-shadow:0 2px 8px rgba(79,70,229,.4)}.nav-brand-text{display:flex;flex-direction:column;line-height:1.15}.nav-brand-title{color:#fff;font-weight:600;font-size:.95rem}.nav-brand-sub{color:#94a3b8;font-weight:400;font-size:.75rem}.nav-links{display:flex;gap:var(--space-1);margin-left:auto}.nav-link{padding:.5rem 1rem;border-radius:var(--radius-md);color:#cbd5e1;font-weight:500;font-size:.875rem;transition:all var(--transition);position:relative}.nav-link:hover{color:#fff;background:hsla(0,0%,100%,.08);text-decoration:none}.nav-link.active{color:#fff;background:rgba(79,70,229,.25);box-shadow:inset 0 0 0 1px rgba(165,180,252,.3)}.page-header{margin-bottom:var(--space-6)}.page-header h1{margin:0 0 var(--space-2);font-size:1.75rem;letter-spacing:-.02em}.page-header .subtitle{margin:0;color:var(--color-text-muted);font-size:.9rem;max-width:64ch}.page-error,.page-loading{padding:var(--space-10) var(--space-6);text-align:center;color:var(--color-text-muted);font-size:.95rem}.page-error{color:var(--color-danger)}.table-page{display:flex;flex-direction:column;gap:var(--space-4)}.table-toolbar{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.table-toolbar label{font-weight:500;font-size:.875rem;color:var(--color-text-muted)}.table-search-input{padding:.55rem .9rem;font-size:.875rem;border:1px solid var(--color-border-strong);border-radius:var(--radius-md);min-width:280px;background:var(--color-surface);color:var(--color-text);transition:all var(--transition)}.table-search-input::placeholder{color:var(--color-slate-400)}.table-search-input:hover{border-color:var(--color-slate-400)}.table-search-input:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--shadow-focus)}.table-search-count{margin-left:auto;color:var(--color-text-muted);font-size:.85rem;font-variant-numeric:tabular-nums}.sortable-table{display:flex;flex-direction:column;gap:var(--space-3)}.table-container{overflow-x:auto;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.changes-table,.sortable-table table{width:100%;border-collapse:collapse;font-size:.875rem;font-variant-numeric:tabular-nums}.changes-table td,.changes-table th,.sortable-table td,.sortable-table th{padding:.75rem 1rem;text-align:left;border-bottom:1px solid var(--color-border)}.changes-table thead th,.sortable-table thead th{background:var(--color-surface-muted);font-weight:600;color:var(--color-text-muted);font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:1}.sortable-table th.sortable{cursor:pointer;user-select:none;transition:all var(--transition)}.sortable-table th.sortable:hover{background:var(--color-primary-soft);color:var(--color-primary)}.sortable-table .sort-indicator{margin-left:.35rem;color:var(--color-primary);font-size:.75rem}.sortable-table tbody tr{transition:background-color .1s}.sortable-table tbody tr:nth-child(2n){background:var(--color-surface-muted)}.sortable-table tbody tr:hover{background:var(--color-primary-soft)}.sortable-table tbody td{color:var(--color-slate-700)}.changes-table tbody tr:last-child td,.sortable-table tbody tr:last-child td{border-bottom:none}.sortable-table .pagination{display:flex;align-items:center;justify-content:center;gap:var(--space-4);padding:var(--space-3);color:var(--color-text-muted);font-size:.85rem;font-variant-numeric:tabular-nums}.sortable-table .pagination button{padding:.5rem 1.1rem;border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text);border-radius:var(--radius-full);cursor:pointer;font-weight:500;font-size:.85rem;transition:all var(--transition);box-shadow:var(--shadow-sm)}.sortable-table .pagination button:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary);transform:translateY(-1px);box-shadow:var(--shadow-md)}.sortable-table .pagination button:active:not(:disabled){transform:translateY(0)}.sortable-table .pagination button:disabled{opacity:.4;cursor:not-allowed}.editable-cell{cursor:text;transition:background-color .1s}.editable-cell:hover{background:var(--color-primary-soft)!important;box-shadow:inset 2px 0 0 var(--color-primary)}.editable-cell.editing{padding:0}.cell-input{width:100%;min-width:80px;padding:.6rem .9rem;border:2px solid var(--color-primary);border-radius:var(--radius-sm);font:inherit;background:var(--color-primary-soft);color:var(--color-text)}.cell-input:focus{outline:none;box-shadow:var(--shadow-focus)}.changes-page{display:flex;flex-direction:column;gap:var(--space-4)}.no-changes{color:var(--color-text-muted);font-style:italic;padding:var(--space-10);text-align:center;background:var(--color-surface);border:1px dashed var(--color-border-strong);border-radius:var(--radius-lg)}.analytics-page{display:flex;flex-direction:column;gap:var(--space-5)}.analytics-controls{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.analytics-controls label{font-weight:500;font-size:.8rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em}.analysis-select,.analysis-sub-controls select,.filter-select{padding:.55rem 2.2rem .55rem .9rem;font-size:.875rem;border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M6 8l4 4 4-4' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right .75rem center;appearance:none;color:var(--color-text);cursor:pointer;transition:all var(--transition)}.analysis-select{min-width:240px;font-weight:500}.filter-select{min-width:120px}.analysis-select:hover,.analysis-sub-controls select:hover,.filter-select:hover{border-color:var(--color-slate-400)}.analysis-select:focus,.analysis-sub-controls select:focus,.filter-select:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--shadow-focus)}.filter-select:disabled{opacity:.5;cursor:not-allowed}.filter-result-count{margin-left:auto;font-size:.85rem;color:var(--color-text-muted);font-variant-numeric:tabular-nums;padding:.35rem .75rem;background:var(--color-primary-soft);color:var(--color-primary);border-radius:var(--radius-full);font-weight:500}.filter-mode-toggle{position:relative;display:inline-flex;background:var(--color-surface-muted);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);padding:2px;isolation:isolate}.filter-mode-toggle:before{content:"";position:absolute;top:2px;bottom:2px;left:2px;width:calc(50% - 2px);background:var(--color-primary-soft);border:1px solid var(--color-primary-border);border-radius:calc(var(--radius-md) - 2px);box-shadow:0 1px 2px rgba(79,70,229,.12);transform:translateX(0);transition:transform .26s cubic-bezier(.4,0,.2,1);z-index:-1}.filter-mode-toggle:has(.filter-mode-btn:nth-child(2).active):before{transform:translateX(100%)}.filter-mode-btn{flex:1 1 0;min-width:110px;padding:.5rem 1rem;font-size:.825rem;font-weight:500;color:var(--color-text-muted);background:transparent;border:none;border-radius:calc(var(--radius-md) - 2px);cursor:pointer;transition:color .26s cubic-bezier(.4,0,.2,1);white-space:nowrap;text-align:center}.filter-mode-btn:hover{color:var(--color-text)}.filter-mode-btn.active{color:var(--color-primary)}.filter-mode-btn:focus-visible{outline:none;box-shadow:var(--shadow-focus)}.filter-date{padding:.55rem .75rem;font-size:.875rem;border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font-family:inherit;cursor:pointer;transition:all var(--transition);min-width:150px;color-scheme:light}.filter-date:hover{border-color:var(--color-slate-400)}.filter-date:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--shadow-focus)}.filter-date::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.55;transition:opacity var(--transition)}.filter-date::-webkit-calendar-picker-indicator:hover{opacity:1}.filter-clear-btn{padding:.45rem .85rem;font-size:.8rem;font-weight:500;color:var(--color-text-muted);background:transparent;border:1px solid var(--color-border-strong);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition)}.filter-clear-btn:hover{color:var(--color-danger);border-color:var(--color-danger);background:rgba(220,38,38,.05)}.filter-warning{padding:var(--space-3) var(--space-4);background:#fef2f2;border:1px solid #fecaca;border-left:3px solid var(--color-danger);border-radius:var(--radius-md);color:#991b1b;font-size:.85rem;font-weight:500}.analytics-layout{display:grid;grid-template-columns:220px 1fr;gap:var(--space-5);align-items:start}.analytics-sidebar{position:sticky;top:80px;gap:var(--space-1);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4);box-shadow:var(--shadow-sm)}.analytics-sidebar,.sidebar-group{display:flex;flex-direction:column}.sidebar-group{gap:2px}.sidebar-group+.sidebar-group{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-border)}.sidebar-group-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);font-weight:600;padding:var(--space-1) var(--space-3);margin-bottom:2px}.sidebar-item{display:block;width:100%;text-align:left;background:none;border:none;padding:var(--space-2) var(--space-3);font:inherit;font-size:.82rem;font-weight:500;color:var(--color-text);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition)}.sidebar-item:hover{background:var(--color-primary-soft);color:var(--color-primary)}.sidebar-item.active{background:var(--color-primary);color:#fff;font-weight:600}.analytics-main{display:flex;flex-direction:column;gap:var(--space-5);min-width:0}.analytics-content{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--space-6)}.yoy-selectors{display:flex;align-items:flex-end;gap:var(--space-4);flex-wrap:wrap}.yoy-selector{display:flex;flex-direction:column;gap:var(--space-1)}.yoy-selector label{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}.yoy-selector label,.yoy-vs{color:var(--color-text-muted);font-weight:600}.yoy-vs{font-size:.9rem;padding-bottom:var(--space-2)}.yoy-comparison-grid{display:grid;grid-template-columns:1fr 1fr auto;gap:var(--space-3);align-items:stretch}.yoy-card{position:relative;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-1)}.yoy-card-year{font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);font-weight:600}.yoy-card-value{font-size:1.5rem;font-weight:700;color:var(--color-text);font-variant-numeric:tabular-nums}.yoy-card-label{font-size:.75rem;color:var(--color-text-muted);font-weight:500;text-transform:uppercase;letter-spacing:.03em}.yoy-card-change{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:100px;background:var(--color-surface-muted)}.yoy-offenses-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-5)}.yoy-offense-year{margin:0 0 var(--space-3);font-size:.85rem;font-weight:600;color:var(--color-primary)}.compare-neutral{color:var(--color-text-muted);font-size:.82rem}.analysis-panel{display:flex;flex-direction:column;gap:var(--space-6);max-width:100%}.analysis-sub-controls{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--radius-md)}.analysis-sub-controls label{font-weight:500;font-size:.8rem;color:var(--color-text-muted)}.analysis-sub-controls label:has(input[type=checkbox]){display:flex;align-items:center;gap:.45rem;cursor:pointer;text-transform:none;font-size:.85rem;color:var(--color-text);padding:.35rem .6rem;border-radius:var(--radius-sm);transition:background var(--transition)}.analysis-sub-controls label:has(input[type=checkbox]):hover{background:var(--color-primary-soft)}.analysis-sub-controls input[type=checkbox]{width:16px;height:16px;accent-color:var(--color-primary);cursor:pointer}.summary-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-4)}.summary-cards .card{position:relative;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5);transition:all var(--transition);overflow:hidden;display:flex;flex-direction:column;gap:var(--space-2)}.summary-cards .card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--color-primary) 0,#7c3aed 100%);opacity:.9}.summary-cards .card:hover{border-color:var(--color-primary-border);box-shadow:var(--shadow-md);transform:translateY(-2px)}.summary-cards .card-value{display:block;font-size:2rem;font-weight:700;color:var(--color-text);letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1.1}.summary-cards .card-label{font-size:.8rem;color:var(--color-text-muted);font-weight:500;text-transform:uppercase;letter-spacing:.04em}.chart-container{display:flex;flex-direction:column;gap:var(--space-3)}.chart-container h3{margin:0;font-size:.95rem;font-weight:600;color:var(--color-text);letter-spacing:-.005em}.chart-inner{height:320px;position:relative;padding:var(--space-4);background:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--radius-lg)}.chart-inner.chart-tall{height:440px}.chart-split .chart-inner{max-width:720px;height:380px}.chart-note{font-size:.8rem;color:var(--color-text-muted);margin:0;padding:var(--space-3) var(--space-4);background:var(--color-surface-muted);border-left:3px solid var(--color-primary);border-radius:var(--radius-sm);line-height:1.5}.data-table-section{display:flex;flex-direction:column;gap:var(--space-3)}.data-table-section h3{margin:0;font-size:.95rem;font-weight:600;color:var(--color-text)}.analytics-table{width:100%;border-collapse:collapse;font-size:.875rem;font-variant-numeric:tabular-nums;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.analytics-table td,.analytics-table th{padding:.6rem .9rem;text-align:left;border-bottom:1px solid var(--color-border)}.analytics-table thead th{background:var(--color-surface-muted);font-weight:600;color:var(--color-text-muted);font-size:.7rem;text-transform:uppercase;letter-spacing:.06em}.analytics-table tbody tr:last-child td{border-bottom:none}.analytics-table tbody tr:hover{background:var(--color-primary-soft)}.analytics-table tbody td{color:var(--color-slate-700)}.booking-count-link{background:none;border:none;padding:0;font:inherit;color:var(--color-primary);cursor:pointer;font-weight:600;transition:color var(--transition);text-decoration:underline;text-underline-offset:2px}.booking-count-link:hover{color:var(--color-primary-hover)}.modal-overlay{position:fixed;inset:0;background:rgba(15,23,42,.6);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-4);animation:modal-fade-in .15s ease-out}.modal-content{background:var(--color-surface);border-radius:var(--radius-xl);box-shadow:0 20px 50px -10px rgba(15,23,42,.4),0 0 0 1px hsla(0,0%,100%,.1);max-width:520px;width:100%;max-height:80vh;display:flex;flex-direction:column;animation:modal-scale-in .18s cubic-bezier(.16,1,.3,1)}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-scale-in{0%{opacity:0;transform:scale(.96) translateY(6px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--color-border)}.modal-header h3{margin:0;font-size:1.05rem;font-weight:600}.modal-close{background:none;border:none;font-size:1.5rem;line-height:1;cursor:pointer;color:var(--color-text-muted);padding:.35rem .55rem;border-radius:var(--radius-sm);transition:all var(--transition)}.modal-close:hover{color:var(--color-text);background:var(--color-surface-muted)}.modal-body{padding:var(--space-5) var(--space-6);overflow-y:auto;flex:1}.modal-name-list{margin:0;padding-left:var(--space-6);font-size:.9rem}.modal-name-list li{padding:var(--space-2) 0;border-bottom:1px solid var(--color-border);color:var(--color-slate-700)}.modal-name-list li:last-child{border-bottom:none}.modal-content.modal-wide{max-width:900px}.modal-overlay.modal-overlay-confirm{z-index:1100;background:rgba(15,23,42,.55)}.modal-content.modal-confirm{max-width:720px}.modal-subtitle{margin:.35rem 0 0;font-size:.82rem;color:var(--color-text-muted);font-weight:400;max-width:62ch;line-height:1.5}.modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-3);padding:var(--space-4) var(--space-6);border-top:1px solid var(--color-border);background:var(--color-surface-muted)}.merge-cancel-btn{padding:.55rem 1.1rem;background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);font-size:.825rem;font-weight:500;cursor:pointer;transition:all var(--transition)}.merge-cancel-btn:hover{border-color:var(--color-slate-400);background:var(--color-surface-muted)}.merge-cancel-btn:focus-visible,.merge-confirm-btn:focus-visible{outline:none;box-shadow:var(--shadow-focus)}.merge-group-card.merge-group-card-confirm{margin:0;border-color:var(--color-primary-border)}.view-crimes-btn{padding:.35rem .85rem;background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-sm);font-size:.78rem;font-weight:500;cursor:pointer;white-space:nowrap;transition:background var(--transition)}.view-crimes-btn:hover{background:var(--color-primary-hover)}.view-crimes-btn:focus-visible{outline:none;box-shadow:var(--shadow-focus)}.crimes-list{list-style:none;margin:0;padding:0}.crimes-list li{padding:var(--space-3) 0;border-bottom:1px solid var(--color-border);color:var(--color-slate-700);font-size:.9rem}.crimes-list li:last-child{border-bottom:none}.merge-group-card.merge-group-card-confirm .merge-group-card-header{padding:var(--space-4) var(--space-5)}.view-duplicates-link{display:inline-flex;align-items:center;gap:.4rem;background:none;border:none;padding:.35rem .65rem;font:inherit;font-size:.82rem;font-weight:600;color:var(--color-primary);cursor:pointer;border-radius:var(--radius-sm);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1.5px;text-decoration-color:rgba(79,70,229,.4);transition:all var(--transition)}.view-duplicates-link:hover{background:var(--color-primary-soft);color:var(--color-primary-hover);text-decoration-color:var(--color-primary)}.view-duplicates-link:focus-visible{outline:none;box-shadow:var(--shadow-focus)}.view-duplicates-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 .4rem;background:var(--color-primary);color:#fff;border-radius:var(--radius-full);font-size:.7rem;font-weight:700;text-decoration:none;font-variant-numeric:tabular-nums}.merge-group-list{display:flex;flex-direction:column;gap:var(--space-4)}.merge-group-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;transition:border-color var(--transition),box-shadow var(--transition)}.merge-group-card:hover{border-color:var(--color-primary-border);box-shadow:var(--shadow-sm)}.merge-group-card-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-4) var(--space-5);background:linear-gradient(180deg,var(--color-primary-soft) 0,rgba(238,242,255,.4) 100%);border-bottom:1px solid var(--color-border)}.merge-group-name{margin:0 0 .2rem;font-size:1rem;font-weight:600;color:var(--color-text);letter-spacing:-.01em}.merge-group-meta{font-size:.78rem;color:var(--color-text-muted);font-variant-numeric:tabular-nums}.merge-group-actions{display:flex;gap:var(--space-2);align-items:center;flex-shrink:0}.merge-dismiss-btn{padding:.55rem 1.1rem;background:var(--color-surface);color:var(--color-text-muted);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);font-size:.825rem;font-weight:500;cursor:pointer;transition:all var(--transition);white-space:nowrap}.merge-dismiss-btn:hover{color:var(--color-text);border-color:var(--color-slate-400);background:var(--color-surface-muted)}.merge-dismiss-btn:focus-visible{outline:none;box-shadow:var(--shadow-focus)}.merge-dismiss-action-btn{padding:.55rem 1.1rem;background:var(--color-slate-700);color:#fff;border:1px solid var(--color-slate-700);border-radius:var(--radius-md);font-size:.825rem;font-weight:600;cursor:pointer;transition:all var(--transition);white-space:nowrap;box-shadow:0 1px 2px rgba(51,65,85,.2)}.merge-dismiss-action-btn:hover{background:var(--color-slate-800);border-color:var(--color-slate-800);transform:translateY(-1px);box-shadow:0 4px 10px rgba(51,65,85,.25)}.merge-dismiss-action-btn:active{transform:translateY(0)}.merge-dismiss-action-btn:focus-visible{outline:none;box-shadow:var(--shadow-focus)}.merge-confirm-btn{padding:.55rem 1.1rem;background:var(--color-primary);color:#fff;border:1px solid var(--color-primary);border-radius:var(--radius-md);font-size:.825rem;font-weight:600;cursor:pointer;transition:all var(--transition);white-space:nowrap;box-shadow:0 1px 2px rgba(79,70,229,.2)}.merge-confirm-btn:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover);transform:translateY(-1px);box-shadow:0 4px 10px rgba(79,70,229,.25)}.merge-confirm-btn:active{transform:translateY(0)}.merge-group-table-wrap{overflow-x:auto;padding:0 var(--space-5) var(--space-4)}.merge-group-table{width:100%;border-collapse:collapse;font-size:.82rem;font-variant-numeric:tabular-nums}.merge-group-table th{padding:.6rem .75rem .5rem;text-align:left;font-weight:600;color:var(--color-text-muted);font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--color-border)}.merge-group-table td{padding:.55rem .75rem;color:var(--color-slate-700);border-bottom:1px solid var(--color-border)}.merge-group-table tbody tr:last-child td{border-bottom:none}.merge-group-table tbody tr:hover{background:var(--color-primary-soft)}.merge-mono{font-family:var(--font-mono);font-size:.8rem;color:var(--color-text);font-weight:500}.merge-empty{flex-direction:column;gap:var(--space-2);padding:var(--space-10) var(--space-4);text-align:center;color:var(--color-text-muted)}.merge-empty,.merge-empty-icon{display:flex;align-items:center}.merge-empty-icon{width:56px;height:56px;border-radius:var(--radius-full);background:var(--color-primary-soft);color:var(--color-primary);justify-content:center;font-size:1.8rem;font-weight:700;margin-bottom:var(--space-2)}.merge-empty-title{margin:0;font-size:1rem;font-weight:600;color:var(--color-text)}.merge-empty-sub{margin:0;font-size:.85rem;max-width:46ch}.merge-confirmed-section{margin-top:var(--space-6);padding-top:var(--space-5);border-top:1px solid var(--color-border)}.merge-confirmed-toggle{background:none;border:none;padding:var(--space-2) 0;font:inherit;font-size:.82rem;font-weight:600;color:var(--color-text-muted);cursor:pointer;transition:color var(--transition)}.merge-confirmed-toggle:hover{color:var(--color-primary)}.merge-confirmed-list{list-style:none;padding:0;margin:var(--space-3) 0 0;display:flex;flex-direction:column;gap:var(--space-2)}.merge-confirmed-item{display:flex;align-items:stretch;gap:var(--space-2);background:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:.82rem;overflow:hidden;transition:border-color var(--transition)}.merge-confirmed-item:hover{border-color:var(--color-primary-border)}.merge-confirmed-view-btn{flex:1;display:flex;align-items:center;gap:.75rem;padding:var(--space-3) var(--space-4);background:transparent;border:none;font:inherit;text-align:left;cursor:pointer;color:inherit;transition:background var(--transition);border-radius:var(--radius-md) 0 0 var(--radius-md)}.merge-confirmed-view-btn:hover{background:var(--color-primary-soft)}.merge-confirmed-view-btn:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--color-primary)}.merge-confirmed-name{font-weight:600;color:var(--color-text)}.merge-confirmed-ids{color:var(--color-text-muted);font-family:var(--font-mono);font-size:.78rem}.merge-confirmed-view-hint{margin-left:auto;font-size:.75rem;color:var(--color-primary);font-weight:500;opacity:0;transition:opacity var(--transition);white-space:nowrap}.merge-confirmed-view-btn:focus-visible .merge-confirmed-view-hint,.merge-confirmed-view-btn:hover .merge-confirmed-view-hint{opacity:1}.merge-undo-btn{margin:var(--space-2) var(--space-3) var(--space-2) 0;padding:.35rem .75rem;background:transparent;border:1px solid var(--color-border-strong);color:var(--color-text-muted);border-radius:var(--radius-md);font-size:.78rem;font-weight:500;cursor:pointer;transition:all var(--transition);align-self:center}.merge-undo-btn:hover{color:var(--color-danger);border-color:var(--color-danger);background:rgba(220,38,38,.05)}.merge-undo-btn:focus-visible{outline:none;box-shadow:var(--shadow-focus)}.merge-undo-btn.merge-undo-btn-lg{margin:0 auto 0 0;padding:.55rem 1.1rem;font-size:.825rem}.merge-view-no-rows{margin:0;padding:var(--space-5) var(--space-6);color:var(--color-text-muted);font-size:.85rem;font-style:italic;text-align:center}.table-filters{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;padding:var(--space-3) var(--space-5);background:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--radius-md)}.table-filters-label{font-size:.78rem;font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;display:flex;align-items:center;gap:var(--space-2)}.filter-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;background:var(--color-primary);color:#fff;border-radius:var(--radius-full);font-size:.65rem;font-weight:600}.table-filter-select{padding:.35rem 1.8rem .35rem .6rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);font:inherit;font-size:.78rem;color:var(--color-text);appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%2364748b' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .5rem center;cursor:pointer;transition:border-color var(--transition)}.table-filter-select:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--shadow-focus)}.chart-download-btn,.export-btn{padding:.35rem .85rem;background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);font-size:.78rem;font-weight:500;cursor:pointer;white-space:nowrap;transition:all var(--transition)}.chart-download-btn:hover,.export-btn:hover{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-soft)}.export-btn{margin-left:auto}.chart-header-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.chart-header-row h3{margin:0;font-size:.95rem;font-weight:600;color:var(--color-text);letter-spacing:-.005em}.analysis-description{margin:0;font-size:.85rem;color:var(--color-text-muted);line-height:1.6;max-width:72ch}.rate-cell{display:flex;align-items:center;gap:var(--space-2);min-width:140px}.rate-bar{display:inline-block;height:8px;background:var(--color-primary);border-radius:var(--radius-full);opacity:.6;min-width:2px;max-width:80px;transition:width .3s ease}.rate-value{font-variant-numeric:tabular-nums;font-weight:500;font-size:.82rem;white-space:nowrap}.person-name-link{background:none;border:none;padding:0;font:inherit;color:var(--color-primary);cursor:pointer;text-decoration:underline;text-underline-offset:2px;text-align:left;width:100%}.person-name-link:hover{color:var(--color-primary-hover)}.profile-demographics{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-bottom:var(--space-5)}.profile-stat{display:flex;flex-direction:column;gap:2px;padding:var(--space-3) var(--space-4);background:var(--color-surface-muted);border-radius:var(--radius-md);min-width:100px}.profile-stat-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);font-weight:500}.profile-section-title,.profile-stat-value{font-size:.9rem;font-weight:600;color:var(--color-text)}.profile-section-title{margin:0 0 var(--space-4);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-border)}.horizontal-timeline{margin-bottom:var(--space-5);padding:var(--space-4) var(--space-2);background:var(--color-surface-muted);border-radius:var(--radius-md);border:1px solid var(--color-border)}.ht-labels{display:flex;justify-content:space-between;margin-bottom:var(--space-2);padding:0 var(--space-2)}.ht-label-end,.ht-label-start{font-size:.7rem;color:var(--color-text-muted);font-weight:500;text-transform:uppercase;letter-spacing:.03em}.ht-track{position:relative;height:28px;margin:0 var(--space-2)}.ht-line{left:0;right:0;height:2px;background:var(--color-border-strong);transform:translateY(-50%)}.ht-line,.ht-marker{position:absolute;top:50%}.ht-marker{transform:translate(-50%,-50%);background:none;border:none;padding:6px;cursor:pointer;z-index:1}.ht-dot{display:block;width:12px;height:12px;border-radius:50%;background:var(--color-primary);border:2px solid var(--color-surface);box-shadow:0 0 0 1px var(--color-primary);transition:all .15s ease}.ht-marker:hover .ht-dot{transform:scale(1.4);box-shadow:0 0 0 2px var(--color-primary),0 0 8px rgba(79,70,229,.4)}.ht-tooltip{position:absolute;bottom:calc(100% + 4px);left:50%;transform:translateX(-50%);background:rgba(15,23,42,.92);color:#f8fafc;font-size:.7rem;font-weight:500;padding:3px 8px;border-radius:var(--radius-sm);white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .1s ease}.ht-marker:hover .ht-tooltip{opacity:1}.ht-today{position:absolute;top:50%;transform:translate(-50%,-50%)}.ht-today-line{display:block;width:2px;height:20px;background:var(--color-slate-400);border-radius:1px}.timeline-card-highlighted{box-shadow:0 0 0 2px var(--color-primary),0 0 16px rgba(79,70,229,.35);animation:glow-fade 3s ease-out forwards}@keyframes glow-fade{0%{box-shadow:0 0 0 2px var(--color-primary),0 0 16px rgba(79,70,229,.45)}70%{box-shadow:0 0 0 2px var(--color-primary),0 0 16px rgba(79,70,229,.35)}to{box-shadow:none}}.profile-timeline,.timeline-entry{display:flex;flex-direction:column}.timeline-gap{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) 0}.timeline-gap-line{flex:1;height:1px;background:var(--color-border)}.timeline-gap-label{font-size:.75rem;color:var(--color-text-muted);font-weight:500;white-space:nowrap}.timeline-card{border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.timeline-card-header{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-surface-muted);border-bottom:1px solid var(--color-border)}.timeline-badge{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:22px;padding:0 var(--space-2);background:var(--color-primary);color:#fff;border-radius:var(--radius-full);font-size:.7rem;font-weight:600}.timeline-date{font-size:.82rem;font-weight:600;color:var(--color-text)}.timeline-card-body{padding:var(--space-3) var(--space-4);display:flex;flex-direction:column;gap:var(--space-2)}.timeline-row{display:flex;gap:var(--space-3);font-size:.82rem}.timeline-field-label{color:var(--color-text-muted);font-weight:500;min-width:100px;flex-shrink:0}.timeline-crimes{margin-top:var(--space-1)}.timeline-crime-list{margin:var(--space-1) 0 0;padding-left:var(--space-5);font-size:.8rem}.timeline-crime-list li{padding:2px 0;color:var(--color-slate-700)}.dashboard-page{display:flex;flex-direction:column;gap:var(--space-6)}.dashboard-year-select{display:inline;appearance:auto;background:none;border:none;border-bottom:2px solid var(--color-primary);font:inherit;font-size:inherit;color:var(--color-primary);font-weight:600;cursor:pointer;padding:0 var(--space-1)}.dashboard-year-select:focus{outline:none;border-bottom-color:var(--color-primary-hover)}.dashboard-page .summary-cards{grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}.change-indicator{display:inline-flex;align-items:center;gap:.2rem;font-size:.78rem;font-weight:600;margin-top:var(--space-1)}.change-indicator.good{color:var(--color-success)}.change-indicator.bad{color:var(--color-danger)}.change-arrow{font-size:.7rem}.dashboard-insights{background:var(--color-primary-soft);border:1px solid var(--color-primary-border);border-radius:var(--radius-lg);padding:var(--space-5)}.dashboard-insights h3{margin:0 0 var(--space-3);font-size:.95rem;font-weight:600;color:var(--color-primary)}.dashboard-insights ul{margin:0;padding-left:var(--space-5)}.dashboard-insights li{padding:var(--space-1) 0;font-size:.88rem;color:var(--color-text);line-height:1.6}.dashboard-quicklinks{display:flex;flex-direction:column;gap:var(--space-4)}.dashboard-quicklinks h3{margin:0;font-size:.95rem;font-weight:600;color:var(--color-text)}.quicklink-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--space-4)}.quicklink-card{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-5);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);text-decoration:none;transition:all var(--transition)}.quicklink-card:hover{border-color:var(--color-primary-border);box-shadow:var(--shadow-md);transform:translateY(-2px)}.quicklink-icon{font-size:1.5rem}.quicklink-title{font-size:.95rem;font-weight:600;color:var(--color-text)}.quicklink-desc{font-size:.82rem;color:var(--color-text-muted);line-height:1.5}@media (max-width:768px){.main{padding:var(--space-4)}.nav{padding:var(--space-3) var(--space-4)}.nav-inner{gap:var(--space-3)}.nav-brand-sub{display:none}.page-header h1{font-size:1.4rem}.summary-cards .card-value{font-size:1.5rem}.analytics-content{padding:var(--space-4)}.analytics-layout{grid-template-columns:1fr}.analytics-sidebar{position:static;flex-direction:row;flex-wrap:wrap;gap:var(--space-1);padding:var(--space-3)}.sidebar-group{flex-direction:row;flex-wrap:wrap;gap:2px}.sidebar-group+.sidebar-group{margin-top:0;padding-top:0;border-top:none;padding-left:var(--space-2);border-left:1px solid var(--color-border)}.sidebar-group-label,.sidebar-item{padding:var(--space-1) var(--space-2)}.sidebar-item{font-size:.75rem}.yoy-comparison-grid{grid-template-columns:1fr 1fr}.yoy-card-change{grid-column:1/-1}.yoy-offenses-grid{grid-template-columns:1fr}}@keyframes tcr-spin{to{transform:rotate(1turn)}}@keyframes tcr-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(.96)}}.tcr-loading{min-height:60vh;flex-direction:column;gap:var(--space-4);color:var(--color-text-muted)}.tcr-loading,.tcr-loading-icon{display:flex;align-items:center;justify-content:center}.tcr-loading-icon{width:56px;height:56px;border-radius:var(--radius-lg);background:linear-gradient(135deg,var(--color-primary) 0,#7c3aed 100%);color:#fff;font-weight:700;font-size:1.1rem;letter-spacing:-.02em;box-shadow:0 8px 24px rgba(79,70,229,.35);animation:tcr-pulse 1.6s ease-in-out infinite;position:relative}.tcr-loading-icon:before{content:"";position:absolute;inset:-6px;border-radius:var(--radius-lg);border-left:2px solid transparent;border-bottom:2px solid transparent;border-top:2px solid transparent;border-top-color:var(--color-primary);border-right:2px solid transparent;border-right-color:var(--color-primary);animation:tcr-spin 1.1s linear infinite}.tcr-loading-text{font-size:.95rem;font-weight:500}.dashboard-print-header{display:none}@media print{body{background:#fff!important;color:#000!important;font-size:11pt}.analytics-controls,.analytics-sidebar,.chart-download-btn,.export-btn,.filter-clear-btn,.modal-overlay,.nav,.pagination,.table-filters,.table-toolbar,.view-crimes-btn,button{display:none!important}.dashboard-print-header{display:block!important;margin:0 0 12pt;padding:0 0 6pt;border-bottom:1pt solid #000}.dashboard-print-header h1{margin:0;font-size:14pt;font-weight:700;color:#000}.dashboard-print-header .print-date{margin:2pt 0 0;font-size:9pt;color:#444}.app,.main{padding:0!important;margin:0!important;max-width:100%!important}.analytics-layout,.app,.main{display:block!important}.analytics-main{width:100%!important;max-width:100%!important}.analysis-panel,.analytics-table,.card,.chart-container,.data-table-section,.summary-cards,table{break-inside:avoid;page-break-inside:avoid}.chart-container,.chart-inner{width:100%!important;max-width:100%!important}.analysis-panel,.analytics-table,.card,.chart-container,.table-toolbar{box-shadow:none!important;border-color:#999!important}h1,h2,h3,h4,label,p,span,td,th{color:#000!important}.card-label,.subtitle,.table-search-count{color:#444!important}a{color:#000!important;text-decoration:none!important}.analytics-sidebar,.nav,.pagination-top{position:static!important}}