@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;650;700;750;800&display=swap');
:root { color-scheme: dark; --ink: #f7f7fb; --muted: #a9adbb; --line: rgba(255,255,255,.1); font-family: Montserrat, ui-sans-serif, system-ui, sans-serif; }
* { box-sizing: border-box; }
* { scrollbar-width: thin; scrollbar-color: rgba(193,202,211,.58) transparent; }
*::-webkit-scrollbar { width: 7px; height: 7px; }
*::-webkit-scrollbar-track { background: transparent; }
*::-webkit-scrollbar-thumb { min-height: 42px; border: 2px solid transparent; border-radius: 999px; background: rgba(193,202,211,.58); background-clip: padding-box; }
*::-webkit-scrollbar-thumb:hover { background: rgba(224,230,236,.78); background-clip: padding-box; }
body { margin: 0; min-height: 100vh; color: var(--ink); background: #08090d; }
.tablet-page { min-height: 100vh; background: #08090d; }
.tablet-shell { position: relative; width: 100%; min-height: 100vh; overflow: hidden; background: linear-gradient(145deg, rgba(20,23,34,.98), rgba(8,10,16,1)); }
.tablet-shell::before { content: ""; position: absolute; inset: 0; pointer-events: none; background: radial-gradient(circle at 72% 8%, rgba(56,111,255,.18), transparent 30%); }
.statusbar { height: 64px; display: flex; align-items: center; justify-content: space-between; padding: 0 26px; border-bottom: 1px solid var(--line); position: relative; z-index: 1; }
.brand,.status-icons { display: flex; align-items: center; gap: 12px; font-size: 13px; font-weight: 650; letter-spacing: .04em; }
.brand-logo { display: block; width: 94px; height: 28px; object-fit: contain; filter: invert(1); }
.os-label { color: #858b9d; font-size: 10px; letter-spacing: .16em; }
.signal { letter-spacing: -2px; font-size: 8px; color: #74dc9a; }
.battery { padding: 4px 7px; border: 1px solid rgba(255,255,255,.4); border-radius: 5px; font-size: 10px; }
.battery::after { content: "%"; opacity: .65; }
.home { position: relative; width: min(1180px, 100%); min-height: calc(100vh - 64px); margin: 0 auto; padding: 72px 32px 80px; }
.welcome { max-width: 620px; }
.eyebrow { color: #809dff; letter-spacing: .19em; font-size: 11px; font-weight: 800; }
h1 { margin: 10px 0 12px; font-family: Montserrat, ui-sans-serif, system-ui, sans-serif; font-size: clamp(42px, 6vw, 74px); line-height: .98; letter-spacing: -.055em; font-weight: 650; }
.welcome > p:last-child,.login-copy { color: var(--muted); font-size: 16px; line-height: 1.7; }
.app-grid { display: grid; grid-template-columns: repeat(3, minmax(180px, 1fr)); gap: 18px; margin-top: 54px; }
.app-tile { --accent: #5b7fff; --icon-background: #18254d; position: relative; min-height: 218px; display: grid; grid-template-rows: 82px auto 3.1em; align-content: end; padding: 22px; color: inherit; text-decoration: none; border: 1px solid color-mix(in srgb, var(--accent) 30%, rgba(255,255,255,.1)); border-radius: 23px; background: linear-gradient(145deg, color-mix(in srgb, var(--accent) 20%, #171923), color-mix(in srgb, var(--accent) 6%, #0d0f16)); backdrop-filter: blur(15px); opacity: 0; transform: translateY(12px); animation: arrive .5s var(--delay) forwards; transition: transform .25s, border-color .25s, background .25s; }
.app-tile:hover { transform: translateY(-5px); border-color: color-mix(in srgb, var(--accent) 70%, white 20%); background: linear-gradient(145deg, color-mix(in srgb, var(--accent) 18%, transparent), rgba(255,255,255,.05)); }
.app-opening .app-tile:not(.app-tile-launching) { opacity: .2; transform: scale(.96); transition: opacity .22s, transform .22s; }
.app-tile.app-tile-launching { z-index: 5; transform: scale(1.045); filter: brightness(1.12); transition: transform .28s cubic-bezier(.2,.8,.2,1), filter .28s; }
.app-icon { position: relative; display: grid; place-items: center; width: 66px; aspect-ratio: 1; overflow: hidden; border-radius: 19px; background: var(--icon-background); box-shadow: inset 0 1px rgba(255,255,255,.3), inset 0 -12px 24px rgba(0,0,0,.16), 0 15px 32px color-mix(in srgb, var(--accent) 32%, transparent); }
.app-icon::after { content: ""; position: absolute; inset: 0 0 48% 0; pointer-events: none; background: linear-gradient(155deg, rgba(255,255,255,.3), rgba(255,255,255,0) 62%); border-radius: inherit; }
.app-icon img { display: block; width: 78%; height: 78%; object-fit: contain; position: relative; z-index: 1; }
.app-police .app-icon img { width: 76%; height: 76%; }
.app-hospital .app-icon img { width: 72%; height: 72%; }
.app-jobs .app-icon img { width: 72%; height: 72%; filter: invert(1); }
.app-doj .app-icon img,.app-public-services .app-icon img,.app-weazel .app-icon img { width: 64%; height: 64%; }
.app-name { align-self: start; font-size: 19px; font-weight: 750; }
.app-description { color: var(--muted); font-size: 13px; line-height: 1.45; margin-top: 7px; }
.login-page { display: grid; place-items: center; padding: 24px; background: radial-gradient(circle at 50% -10%, #263c75, transparent 42%), #08090d; }
.login-card { width: min(470px, 100%); padding: 48px; border: 1px solid var(--line); border-radius: 30px; background: rgba(19,21,31,.83); box-shadow: 0 35px 90px rgba(0,0,0,.5); backdrop-filter: blur(20px); }
.login-visual { height: 110px; position: relative; display: grid; place-items: center; margin-bottom: 24px; }
.login-logo { position: relative; z-index: 2; width: min(240px, 72%); filter: invert(1); }
.login-card h1 { font-size: 52px; }
.discord-button { display: flex; align-items: center; justify-content: center; gap: 10px; margin-top: 28px; padding: 15px 20px; color: white; background: #5865f2; text-decoration: none; border-radius: 13px; font-weight: 760; transition: transform .2s, background .2s; }
.discord-button img { width: 23px; height: 18px; color: white; filter: brightness(0) invert(1); }
.discord-button:hover { transform: translateY(-2px); background: #6d78f5; }
.login-error { margin: 16px 0 0; padding: 10px 12px; color: #ffb4b4; background: rgba(255,80,80,.1); border: 1px solid rgba(255,100,100,.2); border-radius: 10px; font-size: 12px; text-align: center; }
.app-page { min-height: 100vh; overflow: hidden; background: #090b11; }
.app-shell { position: relative; min-height: 100vh; overflow: hidden; background: radial-gradient(circle at 74% 0, rgba(65,96,180,.14), transparent 32%), linear-gradient(145deg, #121621, #090b11 65%); transform-origin: 50% 90%; animation: app-enter .46s cubic-bezier(.2,.82,.2,1) both; }
.app-page-placeholder .app-shell { background: radial-gradient(circle at 74% 0, color-mix(in srgb, var(--accent) 22%, transparent), transparent 32%), linear-gradient(145deg, #12161c, #0a0c10 65%); }
.app-page-hospital .app-shell { background: radial-gradient(circle at 74% 0, rgba(162,60,121,.18), transparent 32%), linear-gradient(145deg, #19121a, #0c0a0e 65%); }
.app-page-staff .app-shell { background: radial-gradient(circle at 74% 0, rgba(109,84,199,.18), transparent 32%), linear-gradient(145deg, #151321, #0a0910 65%); }
.app-status-title { display: flex; align-items: center; gap: 11px; font-size: 13px; font-weight: 750; }
.app-status-title img { width: 30px; height: 30px; object-fit: contain; }
.app-status-icon { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 9px; background: var(--icon-background); }
.app-status-icon img { width: 70% !important; height: 70% !important; }
.app-page-jobs .app-status-title img { filter: invert(1); }
.project-card { max-width: 900px; margin: 70px auto; padding: 48px; border: 1px solid var(--line); border-radius: 26px; background: rgba(255,255,255,.04); }.project-card h1 { font-size: 56px; }.project-card p { color: var(--muted); line-height: 1.7; }
.app-home-button { position: fixed; z-index: 20; bottom: max(12px, env(safe-area-inset-bottom)); left: 50%; width: 150px; height: 28px; transform: translateX(-50%); display: grid; place-items: center; border-radius: 18px; }
.app-home-button span { display: block; width: 112px; height: 5px; border-radius: 999px; background: rgba(255,255,255,.76); box-shadow: 0 1px 6px rgba(0,0,0,.45); transition: width .2s, background .2s; }
.app-home-button:hover span { width: 126px; background: white; }
.app-closing .app-shell { animation: app-exit .36s cubic-bezier(.4,0,.8,.2) forwards; }
.police-mdt { --mdt-blue: #0f6dba; --mdt-deep: #071827; --mdt-panel: #0e1b28; --mdt-line: rgba(136,177,211,.14); }
.police-mdt .app-shell { height: 100vh; background: #08111a; }
.police-mdt .app-statusbar { height: 52px; background: #09131e; border-color: var(--mdt-line); }
.police-mdt .mdt-product-name { gap: 7px; letter-spacing: .045em; }.police-mdt .mdt-product-name strong { font-size: 12px; font-weight: 750; }.police-mdt .mdt-product-name span { color: #718092; font-size: 11px; font-weight: 500; }
.mdt-layout { height: calc(100vh - 52px); display: grid; grid-template-columns: 238px minmax(0,1fr); }
.mdt-sidebar { min-width: 0; display: flex; flex-direction: column; overflow-y: auto; padding: 18px 14px 48px; border-right: 1px solid var(--mdt-line); background: linear-gradient(180deg,#0c1925,#09141f); }
.mdt-agency { display: flex; align-items: center; gap: 11px; padding: 0 8px 20px; border-bottom: 1px solid var(--mdt-line); }
.mdt-agency img { width: 38px; height: 38px; object-fit: contain; }.mdt-agency div { min-width: 0; }.mdt-agency strong,.mdt-agency span { display: block; }.mdt-agency strong { font-size: 12px; }.mdt-agency span { margin-top: 3px; color: #718397; font-size: 9px; text-transform: uppercase; letter-spacing: .08em; }
.mdt-nav { display: grid; gap: 4px; margin-top: 0; }.mdt-nav-item { width: 100%; display: grid; grid-template-columns: 24px 1fr auto; align-items: center; gap: 9px; padding: 11px 12px; border: 0; border-radius: 9px; color: #8597aa; background: transparent; font: 600 12px Montserrat,sans-serif; text-align: left; cursor: pointer; transition: .18s; }.mdt-nav-item > span { font-size: 17px; text-align: center; }.mdt-nav-item:hover { color: #dce9f5; background: rgba(255,255,255,.035); }.mdt-nav-item.active { color: white; background: linear-gradient(90deg,rgba(15,109,186,.28),rgba(15,109,186,.1)); box-shadow: inset 2px 0 #3ca8ff; }.mdt-nav-item b { min-width: 20px; padding: 3px 6px; color: #94cfff; background: rgba(42,142,220,.16); border-radius: 10px; font-size: 9px; text-align: center; }.mdt-nav-item b.danger { color: #ff9999; background: rgba(222,74,74,.15); }
.mdt-nav-group + .mdt-nav-group { margin-top: 8px; }.mdt-nav-group-toggle { width: 100%; display: flex; align-items: center; justify-content: space-between; padding: 10px 10px 8px; border: 0; color: #60778c; background: transparent; font: 750 10px Montserrat,sans-serif; letter-spacing: .08em; text-align: left; text-transform: uppercase; cursor: pointer; }.mdt-nav-group-toggle:hover { color: #9eb3c6; }.mdt-nav-group-toggle svg { width: 16px; height: 16px; transition: transform .22s ease; }.mdt-nav-group-items { display: grid; gap: 4px; max-height: 360px; overflow: hidden; opacity: 1; transition: max-height .3s ease, opacity .2s ease; }.mdt-nav-group.collapsed .mdt-nav-group-items { max-height: 0; opacity: 0; }.mdt-nav-group.collapsed .mdt-nav-group-toggle svg { transform: rotate(-90deg); }
.mdt-duty-card { display: grid; grid-template-columns: 9px 1fr auto; align-items: center; gap: 9px; margin-top: auto; padding: 12px; border: 1px solid rgba(68,199,129,.15); border-radius: 11px; background: rgba(39,132,87,.08); }.duty-dot { width: 8px; height: 8px; border-radius: 50%; background: #38ce83; box-shadow: 0 0 10px #38ce83; }.mdt-duty-card strong,.mdt-duty-card small { display: block; }.mdt-duty-card strong { font-size: 10px; }.mdt-duty-card small { margin-top: 3px; color: #719082; font-size: 8px; }.mdt-duty-card button { padding: 5px 7px; border: 1px solid rgba(255,255,255,.1); border-radius: 6px; color: #a7b8c8; background: rgba(255,255,255,.04); font: 600 8px Montserrat; cursor: pointer; }
.mdt-main { min-width: 0; overflow: auto; padding-bottom: 52px; background: radial-gradient(circle at 80% 0,rgba(19,91,148,.08),transparent 30%),#08111a; }
.mdt-toolbar { position: sticky; z-index: 8; top: 0; height: 66px; display: flex; align-items: center; gap: 14px; padding: 0 28px; border-bottom: 1px solid var(--mdt-line); background: rgba(8,17,26,.9); backdrop-filter: blur(18px); }.mdt-menu { display: none; }.mdt-search { width: min(540px,52vw); display: flex; align-items: center; gap: 10px; padding: 9px 12px; border: 1px solid var(--mdt-line); border-radius: 9px; color: #667c90; background: rgba(255,255,255,.025); }.mdt-search input { min-width: 0; flex: 1; border: 0; outline: 0; color: white; background: transparent; font: 500 11px Montserrat; }.mdt-search input::placeholder { color: #607386; }.mdt-search kbd { padding: 3px 6px; border: 1px solid rgba(255,255,255,.1); border-radius: 5px; color: #66798b; background: rgba(255,255,255,.035); font: 500 8px Montserrat; }.mdt-notification { position: relative; margin-left: auto; width: 34px; height: 34px; border: 1px solid var(--mdt-line); border-radius: 9px; color: #8ea2b6; background: rgba(255,255,255,.025); cursor: pointer; }.mdt-notification > span { position: absolute; top: -5px; right: -5px; display: grid; place-items: center; width: 16px; height: 16px; border-radius: 50%; color: white; background: #d84c58; font-size: 8px; }.mdt-profile { display: flex; align-items: center; gap: 9px; padding-left: 14px; border-left: 1px solid var(--mdt-line); }.mdt-avatar { display: grid; place-items: center; width: 33px; height: 33px; border-radius: 9px; color: #d5edff; background: linear-gradient(145deg,#195a8e,#0c3454); font-size: 10px; font-weight: 800; }.mdt-profile strong,.mdt-profile span { display: block; }.mdt-profile strong { max-width: 110px; overflow: hidden; text-overflow: ellipsis; font-size: 10px; white-space: nowrap; }.mdt-profile span { margin-top: 3px; color: #65798c; font-size: 8px; }
.mdt-view { display: none; padding: 30px clamp(22px,3vw,42px); animation: mdt-view-in .25s ease both; }.mdt-view.active { display: block; }.mdt-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; }.mdt-heading h1 { margin: 6px 0; font-size: clamp(30px,3.4vw,46px); letter-spacing: -.04em; }.mdt-heading > div > p:last-child { margin: 0; color: #74889c; font-size: 11px; }.mdt-heading .eyebrow { margin: 0; font-size: 9px; }.mdt-primary { padding: 10px 14px; border: 1px solid rgba(74,170,242,.4); border-radius: 9px; color: white; background: linear-gradient(145deg,#1978bd,#0d578e); box-shadow: 0 8px 24px rgba(4,88,153,.2); font: 650 10px Montserrat; cursor: pointer; }
.mdt-stats { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 12px; margin-top: 28px; }.mdt-stats article { min-width: 0; padding: 17px; border: 1px solid var(--mdt-line); border-radius: 12px; background: linear-gradient(145deg,rgba(18,37,54,.8),rgba(11,25,38,.8)); }.mdt-stats span,.mdt-stats strong,.mdt-stats small { display: block; }.mdt-stats span { color: #7b8fa2; font-size: 9px; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; }.mdt-stats strong { margin: 8px 0 7px; font-size: 27px; }.mdt-stats small { color: #60788c; font-size: 8px; }.mdt-stats i { display: inline-block; width: 6px; height: 6px; margin-right: 4px; border-radius: 50%; }.mdt-stats .positive { background: #36cb83; }.mdt-stats .warning { background: #edac3e; }.mdt-stats .danger-dot { background: #e55c65; }
.mdt-dashboard-grid { display: grid; grid-template-columns: minmax(0,1.55fr) minmax(260px,.8fr); gap: 14px; margin-top: 14px; }.mdt-panel { min-width: 0; border: 1px solid var(--mdt-line); border-radius: 12px; background: rgba(11,25,38,.72); overflow: hidden; }.mdt-panel > header { display: flex; align-items: center; justify-content: space-between; padding: 16px 18px; border-bottom: 1px solid var(--mdt-line); }.mdt-panel h2 { margin: 0; font-size: 12px; }.mdt-panel header span { display: block; margin-top: 4px; color: #65798c; font-size: 8px; }.mdt-panel header button { border: 0; color: #5ca9df; background: none; font: 600 8px Montserrat; cursor: pointer; }.activity-panel { grid-column: 1 / -1; }
.call-item { display: grid; grid-template-columns: 46px 1fr auto; align-items: center; gap: 12px; padding: 14px 18px; border-bottom: 1px solid rgba(136,177,211,.08); }.call-item:last-child { border: 0; }.call-code { padding: 7px 4px; border-radius: 7px; color: #80c4f4; background: rgba(44,134,200,.13); font-size: 9px; font-weight: 750; text-align: center; }.call-item.priority .call-code { color: #ff9b9b; background: rgba(213,65,75,.14); }.call-copy strong,.call-copy span { display: block; }.call-copy strong { font-size: 10px; }.call-copy span { margin-top: 5px; color: #64798d; font-size: 8px; }.call-units { text-align: right; }.call-units span,.call-units b { display: block; }.call-units span { color: #75899c; font-size: 8px; }.call-units b { margin-top: 5px; color: #e8b35c; font-size: 8px; }
.unit-list article { display: grid; grid-template-columns: 34px 1fr auto; align-items: center; gap: 10px; padding: 13px 16px; border-bottom: 1px solid rgba(136,177,211,.08); }.unit-avatar { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 8px; color: #b9dbf3; background: #132d42; font-size: 8px; font-weight: 800; }.unit-list strong,.unit-list div span { display: block; }.unit-list strong { font-size: 9px; }.unit-list div span { margin-top: 4px; color: #61758a; font-size: 7px; }.unit-list b { padding: 4px 6px; border-radius: 8px; font-size: 6px; }.unit-list .available { color: #66d79d; background: rgba(54,203,131,.1); }.unit-list .busy { color: #efb95f; background: rgba(239,185,95,.1); }
.activity-list { display: grid; grid-template-columns: repeat(3,1fr); }.activity-list article { display: flex; align-items: center; gap: 10px; padding: 15px 18px; border-right: 1px solid rgba(136,177,211,.08); }.activity-icon { display: grid; place-items: center; width: 31px; height: 31px; border-radius: 8px; color: #72b5e6; background: rgba(38,128,194,.12); }.activity-list strong,.activity-list div span { display: block; }.activity-list strong { font-size: 8px; }.activity-list div span { margin-top: 4px; color: #64788c; font-size: 7px; }
.mdt-empty-module { min-height: 360px; display: grid; place-content: center; justify-items: center; margin-top: 28px; padding: 30px; border: 1px dashed rgba(118,161,196,.2); border-radius: 14px; color: #60778c; text-align: center; background: rgba(12,27,41,.48); }.mdt-empty-module > span { display: grid; place-items: center; width: 58px; height: 58px; border-radius: 17px; color: #78b8e5; background: rgba(32,117,181,.13); font-size: 28px; }.mdt-empty-module h2 { margin: 18px 0 8px; color: #d9e5ee; font-size: 17px; }.mdt-empty-module p { max-width: 450px; margin: 0; font-size: 10px; line-height: 1.7; }
.police-mdt svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.police-mdt .mdt-nav-item { padding: 13px 13px; font-size: 13px; }.police-mdt .mdt-nav-item > svg { width: 19px; height: 19px; }.police-mdt .mdt-nav-item b { font-size: 10px; }
.police-mdt .mdt-agency strong { font-size: 13px; }.police-mdt .mdt-agency span { font-size: 10px; }
.police-mdt .mdt-duty-card strong { font-size: 13px; }.police-mdt .mdt-duty-card small { margin-top: 5px; font-size: 12px; }.police-mdt .mdt-duty-card button { padding: 7px 9px; font-size: 11px; }
.police-mdt .mdt-search input { font-size: 13px; }.police-mdt .mdt-search kbd { font-size: 10px; }.police-mdt .mdt-search > svg { width: 18px; height: 18px; }
.police-mdt .mdt-notification { display: grid; place-items: center; }.police-mdt .mdt-notification > svg { width: 17px; height: 17px; }.police-mdt .mdt-notification > span { font-size: 9px; }
.police-mdt .mdt-profile strong { font-size: 14px; }.police-mdt .mdt-profile span { margin-top: 4px; font-size: 12px; }.police-mdt .mdt-avatar { width: 38px; height: 38px; font-size: 12px; }
.police-mdt .mdt-heading > div > p:last-child { font-size: 13px; }.police-mdt .mdt-heading .eyebrow { font-size: 10px; }.police-mdt .mdt-primary { display: inline-flex; align-items: center; gap: 7px; padding: 12px 16px; font-size: 12px; }.police-mdt .mdt-primary svg { width: 15px; height: 15px; }
.police-mdt .mdt-stats article { padding: 20px; }.police-mdt .mdt-stats span { font-size: 11px; }.police-mdt .mdt-stats strong { font-size: 31px; }.police-mdt .mdt-stats small { font-size: 12px; line-height: 1.45; }
.police-mdt .mdt-panel h2 { font-size: 16px; }.police-mdt .mdt-panel header span { margin-top: 6px; font-size: 12px; }.police-mdt .mdt-panel header button { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; }.police-mdt .mdt-panel header button svg { width: 15px; height: 15px; }
.police-mdt .call-item { padding-top: 17px; padding-bottom: 17px; }.police-mdt .call-code { font-size: 12px; }.police-mdt .call-copy strong { font-size: 14px; }.police-mdt .call-copy span { margin-top: 6px; font-size: 12px; }.police-mdt .call-units span,.police-mdt .call-units b { font-size: 12px; }.police-mdt .call-units b { margin-top: 7px; }
.police-mdt .unit-list article { padding-top: 16px; padding-bottom: 16px; }.police-mdt .unit-avatar { width: 34px; height: 34px; font-size: 11px; }.police-mdt .unit-list strong { font-size: 13px; }.police-mdt .unit-list div span { margin-top: 5px; font-size: 11px; }.police-mdt .unit-list b { padding: 6px 8px; font-size: 10px; }
.police-mdt .activity-list article { padding-top: 18px; padding-bottom: 18px; }.police-mdt .activity-icon { width: 36px; height: 36px; }.police-mdt .activity-icon svg { width: 19px; height: 19px; }.police-mdt .activity-list strong { font-size: 13px; }.police-mdt .activity-list div span { margin-top: 6px; font-size: 11px; }
.police-mdt .mdt-empty-module > span svg { width: 29px; height: 29px; }.police-mdt .mdt-empty-module h2 { font-size: 20px; }.police-mdt .mdt-empty-module p { font-size: 12px; }
.citizen-workspace { min-height: 520px; display: grid; grid-template-columns: minmax(280px,.72fr) minmax(460px,1.4fr); gap: 14px; margin-top: 28px; }.citizen-list-panel,.citizen-detail { min-width: 0; border: 1px solid var(--mdt-line); border-radius: 13px; background: rgba(11,25,38,.72); overflow: hidden; }.citizen-filter { display: flex; align-items: center; gap: 9px; margin: 14px; padding: 10px 12px; border: 1px solid var(--mdt-line); border-radius: 9px; color: #6f879c; background: rgba(255,255,255,.025); }.citizen-filter svg { width: 18px; height: 18px; }.citizen-filter input { min-width: 0; width: 100%; border: 0; outline: 0; color: white; background: transparent; font: 500 12px Montserrat; }.citizen-list { max-height: 540px; overflow: auto; border-top: 1px solid var(--mdt-line); }.citizen-list-item { width: 100%; display: grid; grid-template-columns: 42px 1fr auto; align-items: center; gap: 11px; padding: 13px 14px; border: 0; border-bottom: 1px solid rgba(136,177,211,.08); color: #dce8f1; background: transparent; text-align: left; cursor: pointer; }.citizen-list-item:hover,.citizen-list-item.active { background: rgba(31,117,180,.1); }.citizen-list-item.active { box-shadow: inset 2px 0 #3ca8ff; }.citizen-list-avatar { display: grid; place-items: center; width: 40px; height: 40px; overflow: hidden; border-radius: 10px; color: #b9dff8; background: #15334b; font-size: 11px; font-weight: 800; }.citizen-list-avatar img { width: 100%; height: 100%; object-fit: cover; }.citizen-list-item strong,.citizen-list-item small { display: block; }.citizen-list-item strong { font-size: 12px; }.citizen-list-item small { margin-top: 5px; color: #657b8f; font-size: 10px; }.citizen-list-item time { color: #647a8e; font-size: 9px; }.citizen-loading,.citizen-list-empty { padding: 28px 18px; color: #6d8296; font-size: 11px; text-align: center; }.citizen-list-empty p { margin: 0 0 7px; color: #bdcbd6; font-size: 13px; }.citizen-list-empty span { font-size: 10px; }
.citizen-detail { padding: 22px; }.citizen-detail-empty { min-height: 450px; display: grid; place-content: center; justify-items: center; color: #647b8f; text-align: center; }.citizen-detail-empty > svg { width: 46px; height: 46px; }.citizen-detail-empty h2 { margin: 18px 0 8px; color: #d8e5ef; font-size: 17px; }.citizen-detail-empty p { margin: 0; font-size: 11px; }.citizen-profile > header { display: flex; align-items: center; gap: 16px; padding-bottom: 20px; border-bottom: 1px solid var(--mdt-line); }.citizen-profile-photo { display: grid; place-items: center; flex: 0 0 76px; width: 76px; height: 76px; overflow: hidden; border-radius: 17px; color: #76b9e8; background: #102c42; }.citizen-profile-photo img { width: 100%; height: 100%; object-fit: cover; }.citizen-profile-photo svg { width: 34px; height: 34px; }.citizen-profile h2 { margin: 4px 0 7px; font-size: 24px; }.citizen-profile header > div > span { color: #74899c; font-size: 11px; }.citizen-info-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 10px; margin-top: 18px; }.citizen-info-grid > div { padding: 12px; border: 1px solid rgba(136,177,211,.1); border-radius: 9px; background: rgba(255,255,255,.02); }.citizen-info-grid span,.citizen-info-grid strong { display: block; }.citizen-info-grid span { color: #657b8e; font-size: 9px; text-transform: uppercase; letter-spacing: .05em; }.citizen-info-grid strong { margin-top: 6px; font-size: 11px; }.citizen-tags,.citizen-phones { margin-top: 18px; }.citizen-tags h3,.citizen-phones h3 { margin: 0 0 9px; font-size: 11px; }.citizen-phones h3 small { margin-left: 5px; color: #5e7386; font-size: 8px; font-weight: 500; }.citizen-tags > div,.citizen-phones > div { display: flex; flex-wrap: wrap; gap: 7px; }.citizen-tags span,.citizen-tags em { padding: 7px 9px; border-radius: 7px; color: #a7bfd1; background: rgba(255,255,255,.045); font-size: 10px; font-style: normal; }.citizen-phones em { color: #65798b; font-size: 10px; }.copy-phone { display: inline-flex; align-items: center; gap: 7px; padding: 7px 9px; border: 1px solid rgba(62,151,215,.16); border-radius: 7px; color: #87c5ef; background: rgba(42,130,195,.08); font: 600 10px Montserrat; cursor: pointer; }.copy-phone svg { width: 13px; height: 13px; }.copy-phone.copied { color: #70dda8; border-color: rgba(69,204,137,.3); }.citizen-linked-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 8px; margin-top: 20px; }.citizen-linked-grid article { padding: 13px 8px; border: 1px solid var(--mdt-line); border-radius: 9px; text-align: center; background: rgba(255,255,255,.02); }.citizen-linked-grid strong,.citizen-linked-grid span { display: block; }.citizen-linked-grid strong { font-size: 20px; }.citizen-linked-grid span { margin-top: 5px; color: #6e8294; font-size: 8px; }.citizen-profile > footer { display: flex; justify-content: space-between; gap: 15px; margin-top: 20px; padding-top: 13px; border-top: 1px solid var(--mdt-line); color: #596f82; font-size: 8px; }
.citizen-dialog { width: min(760px,calc(100vw - 32px)); max-height: min(850px,calc(100vh - 32px)); padding: 0; border: 1px solid rgba(115,166,205,.22); border-radius: 17px; color: #edf5fa; background: #0c1823; box-shadow: 0 35px 100px rgba(0,0,0,.65); }.citizen-dialog::backdrop { background: rgba(1,6,11,.76); backdrop-filter: blur(8px); }.citizen-dialog form { display: grid; grid-template-rows: auto minmax(0,1fr) auto; max-height: inherit; }.citizen-dialog header,.citizen-dialog footer { display: flex; align-items: center; gap: 12px; padding: 18px 22px; }.citizen-dialog header { justify-content: space-between; border-bottom: 1px solid var(--mdt-line); }.citizen-dialog header h2 { margin: 5px 0 0; font-size: 21px; }.dialog-close { display: grid; place-items: center; width: 34px; height: 34px; border: 1px solid var(--mdt-line); border-radius: 9px; color: #899daf; background: rgba(255,255,255,.03); cursor: pointer; }.dialog-close svg { width: 17px; height: 17px; }.citizen-form-scroll { overflow-y: auto; padding: 0 22px; }.citizen-form-section { padding: 20px 0; border-bottom: 1px solid var(--mdt-line); }.citizen-form-section:last-child { border: 0; }.citizen-form-section h3 { margin: 0 0 14px; font-size: 13px; }.citizen-form-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 13px; }.citizen-form-grid label { color: #8195a7; font-size: 10px; font-weight: 650; }.citizen-form-grid input,.repeatable-row input { width: 100%; margin-top: 7px; padding: 11px 12px; border: 1px solid rgba(130,172,205,.16); border-radius: 8px; outline: 0; color: white; background: rgba(255,255,255,.03); font: 500 12px Montserrat; }.citizen-form-grid input:focus,.repeatable-row input:focus { border-color: rgba(60,168,255,.6); }.field-wide { grid-column: 1 / -1; }.citizen-photo-field { display: flex; align-items: center; gap: 16px; }.citizen-photo-preview { display: grid; place-items: center; width: 84px; height: 84px; overflow: hidden; border: 1px dashed rgba(108,164,205,.3); border-radius: 15px; color: #6ca9d5; background: rgba(37,112,166,.08); }.citizen-photo-preview img { width: 100%; height: 100%; object-fit: cover; }.citizen-photo-preview svg { width: 33px; height: 33px; }.file-button { display: inline-flex; padding: 9px 11px; border: 1px solid var(--mdt-line); border-radius: 8px; color: #b7cad8; background: rgba(255,255,255,.035); font-size: 10px; font-weight: 650; cursor: pointer; }.file-button input { display: none; }.citizen-photo-field p { max-width: 430px; margin: 9px 0 0; color: #63798c; font-size: 9px; line-height: 1.5; }.section-heading { display: flex; align-items: center; justify-content: space-between; }.section-heading h3 { margin: 0; }.add-repeatable { display: inline-flex; align-items: center; gap: 5px; border: 0; color: #69b5eb; background: none; font: 650 10px Montserrat; cursor: pointer; }.add-repeatable svg { width: 13px; height: 13px; }.repeatable-fields { display: grid; gap: 8px; margin-top: 12px; }.repeatable-row { display: grid; grid-template-columns: 1fr 34px; align-items: end; gap: 8px; }.repeatable-row button { display: grid; place-items: center; width: 34px; height: 39px; border: 1px solid rgba(208,84,91,.15); border-radius: 8px; color: #d97b82; background: rgba(208,84,91,.06); cursor: pointer; }.repeatable-row button svg { width: 15px; height: 15px; }.citizen-dialog footer { justify-content: flex-end; border-top: 1px solid var(--mdt-line); }.citizen-dialog footer .form-error { margin: 0 auto 0 0; color: #e98288; font-size: 10px; }.secondary-button { padding: 10px 14px; border: 1px solid var(--mdt-line); border-radius: 8px; color: #a7bac9; background: transparent; font: 600 11px Montserrat; cursor: pointer; }
.citizen-form-grid select { width: 100%; margin-top: 7px; padding: 11px 12px; border: 1px solid rgba(130,172,205,.16); border-radius: 8px; outline: 0; color: white; background: #101e2a; font: 500 12px Montserrat; }.citizen-form-grid select:focus { border-color: rgba(60,168,255,.6); }.citizen-name-line { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; }.citizen-name-line h2 { margin-right: 2px; }.life-status { display: inline-flex; align-items: center; padding: 5px 8px; border-radius: 999px; font-size: 9px; font-weight: 700; white-space: nowrap; }.life-status::before { content: ""; width: 6px; height: 6px; margin-right: 6px; border-radius: 50%; background: currentColor; }.life-status.alive { color: #68d99f; background: rgba(50,194,124,.1); }.life-status.deceased { color: #ed7f87; background: rgba(217,72,82,.11); }.life-status.left_country { color: #e7b966; background: rgba(218,157,52,.11); }.life-status.compact { justify-self: end; max-width: 115px; overflow: hidden; text-overflow: ellipsis; font-size: 8px; }
.citizen-form-grid textarea { width: 100%; margin-top: 7px; padding: 11px 12px; resize: vertical; border: 1px solid rgba(130,172,205,.16); border-radius: 8px; outline: 0; color: white; background: rgba(255,255,255,.03); font: 500 12px/1.5 Montserrat; }.citizen-form-grid textarea:focus { border-color: rgba(60,168,255,.6); }.citizen-form-grid textarea::placeholder { color: #65798c; opacity: 1; }
.citizen-dialog { overflow: hidden; }.citizen-dialog form { height: min(850px,calc(100vh - 32px)); max-height: min(850px,calc(100vh - 32px)); overflow: hidden; }.citizen-form-scroll { min-height: 0; overscroll-behavior: contain; }
.citizen-extra-dialog { width: min(600px,calc(100vw - 32px)); }.citizen-extra-dialog form { height: auto; max-height: min(620px,calc(100vh - 32px)); }.citizen-extra-dialog .citizen-form-scroll { overflow: visible; }.citizen-section-title { display: flex; align-items: center; justify-content: space-between; margin-top: 20px; }.citizen-section-title h3 { margin: 0; font-size: 11px; }.citizen-section-title button,.citizen-inline-action { display: inline-flex; align-items: center; gap: 5px; border: 0; color: #69b5eb; background: transparent; font: 650 9px Montserrat; cursor: pointer; }.citizen-section-title button svg,.citizen-inline-action svg { width: 12px; height: 12px; }.citizen-tags,.citizen-phones { position: relative; }.citizen-inline-action { position: absolute; top: -3px; right: 0; }
.field-help { display: block; margin-top: 7px; color: #667c8f; font-size: 10px; font-weight: 500; line-height: 1.45; }
.vehicle-workspace { margin-top: 28px; border: 1px solid var(--mdt-line); border-radius: 13px; background: rgba(11,25,38,.72); overflow: hidden; }.vehicle-workspace > .citizen-filter { max-width: 520px; }.vehicle-list { display: grid; grid-template-columns: repeat(3,minmax(240px,1fr)); gap: 12px; padding: 0 14px 14px; }.vehicle-card { min-width: 0; overflow: hidden; border: 1px solid rgba(136,177,211,.12); border-radius: 11px; background: rgba(255,255,255,.025); }.vehicle-card-image { height: 130px; display: grid; place-items: center; overflow: hidden; color: #5e839f; background: radial-gradient(circle at 50% 100%,rgba(38,109,158,.18),transparent 60%),#09151f; }.vehicle-card-image img { width: 100%; height: 100%; object-fit: contain; }.vehicle-card-image svg { width: 42px; height: 42px; }.vehicle-card > div:last-child { padding: 14px; }.vehicle-card span { color: #628198; font-size: 10px; text-transform: uppercase; letter-spacing: .06em; }.vehicle-card h3 { margin: 5px 0 9px; font-size: 15px; }.vehicle-card p { margin: 0; color: #8196a8; font-size: 11px; }.vehicle-card p strong { color: #dbe7ef; }.vehicle-card a,.vehicle-card em { display: inline-block; margin-top: 11px; color: #68b5e9; font-size: 11px; font-style: normal; text-decoration: none; }.vehicle-dialog { width: min(880px,calc(100vw - 32px)); }.vehicle-dialog form { height: auto; max-height: calc(100vh - 32px); }.vehicle-form-layout { display: grid; grid-template-columns: 250px minmax(0,1fr); gap: 20px; }.vehicle-image-preview { min-height: 220px; display: grid; place-content: center; justify-items: center; overflow: hidden; border: 1px dashed rgba(94,158,204,.26); border-radius: 13px; color: #6b9fc5; background: radial-gradient(circle at 50% 100%,rgba(37,115,171,.16),transparent 62%),rgba(255,255,255,.015); }.vehicle-image-preview img { width: 100%; height: 180px; object-fit: contain; }.vehicle-image-preview svg { width: 46px; height: 46px; }.vehicle-image-preview span { margin-top: 10px; padding: 0 10px; color: #758b9d; font-size: 10px; text-align: center; }.vehicle-fields textarea { width: 100%; margin-top: 7px; padding: 11px 12px; resize: vertical; border: 1px solid rgba(130,172,205,.16); border-radius: 8px; outline: 0; color: white; background: rgba(255,255,255,.03); font: 500 12px/1.5 Montserrat; }.model-field,.owner-field { position: relative; }.vehicle-model-suggestions,.vehicle-owner-suggestions { position: absolute; z-index: 40; top: calc(100% + 6px); right: 0; left: 0; display: none; max-height: 300px; overflow-y: auto; padding: 6px; border: 1px solid rgba(121,171,207,.2); border-radius: 10px; background: #101f2b; box-shadow: 0 18px 45px rgba(0,0,0,.55); }.vehicle-model-suggestions.open,.vehicle-owner-suggestions.open { display: grid; }.vehicle-model-suggestions button,.vehicle-owner-suggestions button { display: grid; grid-template-columns: 62px 1fr; align-items: center; gap: 10px; padding: 8px; border: 0; border-radius: 7px; color: #dce7ee; background: transparent; text-align: left; cursor: pointer; }.vehicle-model-suggestions button:hover,.vehicle-owner-suggestions button:hover { background: rgba(61,146,207,.1); }.vehicle-model-suggestions img { width: 60px; height: 42px; object-fit: contain; border-radius: 5px; background: #0a151e; }.vehicle-model-suggestions strong,.vehicle-model-suggestions small,.vehicle-owner-suggestions strong,.vehicle-owner-suggestions small { display: block; }.vehicle-model-suggestions strong,.vehicle-owner-suggestions strong { font-size: 11px; }.vehicle-model-suggestions small,.vehicle-owner-suggestions small { margin-top: 4px; color: #698094; font-size: 9px; }.vehicle-model-suggestions p,.vehicle-owner-suggestions p { margin: 0; padding: 12px; color: #6e8395; font-size: 10px; text-align: center; }.vehicle-owner-suggestions button { grid-template-columns: 40px 1fr; }
.vehicle-list > .citizen-list-empty { grid-column: 1 / -1; min-height: 210px; display: grid; place-content: center; }.vehicle-model-suggestions strong,.vehicle-owner-suggestions strong { font-size: 13px; }.vehicle-model-suggestions small,.vehicle-owner-suggestions small { margin-top: 5px; font-size: 11px; }.vehicle-model-suggestions p,.vehicle-owner-suggestions p { font-size: 12px; }.vehicle-brand-suggestions button { grid-template-columns: 42px 1fr; }.brand-monogram { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 8px; color: #9dc9e8; background: #142d40; font-size: 10px; font-weight: 800; }
.vehicle-fields > label { position: relative; }
#citizen-dialog form { height: auto; max-height: calc(100vh - 32px); }.citizen-dialog .citizen-form-scroll { max-height: calc(100vh - 190px); }
.police-mdt .citizen-list-item strong { font-size: 14px; }.police-mdt .citizen-list-item small { margin-top: 6px; font-size: 12px; }.police-mdt .life-status.compact { max-width: 135px; padding: 6px 9px; font-size: 11px; }.police-mdt .life-status.compact::before { width: 7px; height: 7px; }
.police-mdt .citizen-profile header > div > span { font-size: 13px; }.police-mdt .citizen-name-line .life-status { padding: 6px 10px; font-size: 11px; }.police-mdt .citizen-info-grid span { font-size: 11px; }.police-mdt .citizen-info-grid strong { margin-top: 7px; font-size: 14px; }.police-mdt .citizen-section-title h3,.police-mdt .citizen-tags h3,.police-mdt .citizen-phones h3 { font-size: 14px; }.police-mdt .citizen-section-title button,.police-mdt .citizen-inline-action { font-size: 11px; }.police-mdt .citizen-section-title button svg,.police-mdt .citizen-inline-action svg { width: 14px; height: 14px; }.police-mdt .citizen-phones h3 small { font-size: 10px; }.police-mdt .citizen-tags span,.police-mdt .citizen-tags em,.police-mdt .citizen-phones em { padding: 8px 10px; font-size: 12px; }.police-mdt .copy-phone { padding: 8px 10px; font-size: 12px; }.police-mdt .copy-phone svg { width: 15px; height: 15px; }.police-mdt .citizen-linked-grid strong { font-size: 24px; }.police-mdt .citizen-linked-grid span { margin-top: 7px; font-size: 11px; }.police-mdt .citizen-profile > footer { font-size: 10px; }
.citizen-licenses { margin-top: 18px; }.citizen-license-list { display: grid; gap: 7px; margin-top: 10px; }.citizen-license-row { min-height: 42px; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 10px 12px; border: 1px solid rgba(136,177,211,.1); border-radius: 9px; background: rgba(255,255,255,.02); }.citizen-license-row span { color: #788ea1; font-size: 12px; }.citizen-license-row strong { color: #e1ebf2; font-size: 13px; text-align: right; }.citizen-no-license { margin: 0; padding: 12px; border: 1px dashed rgba(136,177,211,.14); border-radius: 9px; color: #657a8c; font-size: 11px; text-align: center; }
.police-mdt .citizen-linked-grid a { display: block; padding: 13px 8px; border: 1px solid var(--mdt-line); border-radius: 9px; color: inherit; background: rgba(255,255,255,.02); text-align: center; text-decoration: none; transition: border-color .18s, background .18s, transform .18s; }.police-mdt .citizen-linked-grid a:hover { transform: translateY(-2px); border-color: rgba(77,166,231,.35); background: rgba(46,133,196,.08); }.police-mdt .citizen-linked-grid a strong,.police-mdt .citizen-linked-grid a span { display: block; }
.police-mdt .citizen-license-list { display: flex; flex-wrap: wrap; gap: 7px; }.police-mdt .citizen-license-row { min-height: 0; display: inline-flex; justify-content: flex-start; gap: 7px; padding: 8px 10px; border: 0; border-radius: 7px; background: rgba(255,255,255,.045); }.police-mdt .citizen-license-row span { color: #a7bfd1; font-size: 12px; }.police-mdt .citizen-license-row span::after { content: "·"; margin-left: 7px; color: #617588; }.police-mdt .citizen-license-row strong { color: #d4e0e8; font-size: 12px; }.police-mdt .copy-phone { border-color: transparent; color: #a7bfd1; background: rgba(255,255,255,.045); }.police-mdt .copy-phone:hover { color: #d9e7f1; background: rgba(255,255,255,.075); }.police-mdt .copy-phone svg { color: #71879a; }.police-mdt .copy-phone.copied { color: #70dda8; border-color: transparent; background: rgba(69,204,137,.1); }
.dispatch-heading { align-items: flex-end; }.dispatch-create { display: grid; grid-template-columns: 150px auto; gap: 7px 9px; align-items: end; }.dispatch-create label { grid-column: 1 / -1; color: #71879a; font-size: 11px; font-weight: 650; }.dispatch-create select { height: 39px; padding: 0 34px 0 12px; border: 1px solid var(--mdt-line); border-radius: 9px; outline: 0; color: #dce8f0; background: #101f2b; font: 600 12px Montserrat; }.dispatch-create .mdt-primary { height: 39px; display: inline-flex; align-items: center; gap: 7px; }.dispatch-create svg { width: 15px; height: 15px; }.dispatch-help { margin: 22px 0 0; color: #61798d; font-size: 11px; }.dispatch-board { display: grid; grid-template-columns: minmax(270px,.7fr) minmax(520px,1.5fr); gap: 14px; margin-top: 12px; }.dispatch-roster,.dispatch-units { min-width: 0; overflow: hidden; border: 1px solid var(--mdt-line); border-radius: 13px; background: rgba(11,25,38,.72); }.dispatch-roster > header,.dispatch-units > header { min-height: 66px; display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; border-bottom: 1px solid var(--mdt-line); }.dispatch-roster h2,.dispatch-units h2 { margin: 0; font-size: 15px; }.dispatch-roster header span,.dispatch-units header span { display: block; margin-top: 5px; color: #70869a; font-size: 11px; }.dispatch-live { display: flex !important; align-items: center; gap: 6px; margin: 0 !important; padding: 6px 8px; border-radius: 999px; color: #70dba5 !important; background: rgba(54,203,131,.08); font-weight: 650; }.dispatch-live i { width: 7px; height: 7px; border-radius: 50%; background: #42d58c; box-shadow: 0 0 9px #42d58c; }.dispatch-agent-list { min-height: 360px; display: grid; align-content: start; gap: 8px; padding: 12px; transition: background .18s, box-shadow .18s; }.dispatch-agent { display: grid; grid-template-columns: 40px 1fr auto; align-items: center; gap: 10px; padding: 11px; border: 1px solid rgba(136,177,211,.12); border-radius: 10px; color: inherit; background: rgba(255,255,255,.025); cursor: grab; user-select: none; transition: transform .16s, border-color .16s, background .16s; }.dispatch-agent:hover { transform: translateY(-1px); border-color: rgba(77,166,231,.3); background: rgba(48,131,190,.07); }.dispatch-agent:active { cursor: grabbing; }.dispatch-agent.selected { border-color: #48aaf0; background: rgba(48,145,215,.13); box-shadow: 0 0 0 2px rgba(72,170,240,.08); }.dispatch-agent.dragging { opacity: .42; }.dispatch-agent-avatar { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 10px; color: #b9dbf3; background: linear-gradient(145deg,#193b55,#10283b); font-size: 11px; font-weight: 800; }.dispatch-agent strong,.dispatch-agent small { display: block; }.dispatch-agent strong { overflow: hidden; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }.dispatch-agent small { margin-top: 5px; color: #70869a; font-size: 10px; }.dispatch-agent-badge { padding: 5px 7px; border-radius: 7px; color: #77c7fd; background: rgba(48,145,215,.11); font-size: 10px; font-weight: 750; }.dispatch-unit-grid { min-height: 360px; display: grid; grid-template-columns: repeat(2,minmax(240px,1fr)); align-content: start; gap: 10px; padding: 12px; }.dispatch-unit { min-width: 0; overflow: hidden; border: 1px solid rgba(136,177,211,.13); border-radius: 11px; background: rgba(255,255,255,.02); transition: border-color .18s, background .18s, box-shadow .18s; }.dispatch-unit.drop-active,.dispatch-dropzone.drop-active { border-color: #49aaf0; background: rgba(44,134,200,.1); box-shadow: inset 0 0 0 2px rgba(73,170,240,.1); }.dispatch-unit > header { display: flex; align-items: center; gap: 10px; padding: 12px; border-bottom: 1px solid rgba(136,177,211,.1); cursor: pointer; }.dispatch-unit-icon { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 10px; color: #8dccf7; background: rgba(41,132,197,.13); }.dispatch-unit-icon svg { width: 19px; height: 19px; }.dispatch-unit-title { min-width: 0; flex: 1; }.dispatch-unit-title strong,.dispatch-unit-title span { display: block; }.dispatch-unit-title strong { font-size: 14px; }.dispatch-unit-title span { margin-top: 4px; color: #70869a; font-size: 10px; }.dispatch-unit-delete { display: grid; place-items: center; width: 30px; height: 30px; border: 0; border-radius: 8px; color: #9b6b73; background: transparent; cursor: pointer; }.dispatch-unit-delete:hover { color: #ee8991; background: rgba(210,69,80,.1); }.dispatch-unit-delete svg { width: 15px; height: 15px; }.dispatch-unit-members { min-height: 84px; display: grid; align-content: start; gap: 7px; padding: 9px; }.dispatch-unit-members:empty::after { content: "Déposez des agents ici"; display: grid; place-items: center; min-height: 66px; color: #526a7d; font-size: 10px; }.dispatch-unit .dispatch-agent { padding: 8px; grid-template-columns: 34px 1fr auto; }.dispatch-unit .dispatch-agent-avatar { width: 34px; height: 34px; border-radius: 8px; }.dispatch-unit .dispatch-agent strong { font-size: 12px; }.dispatch-unit .dispatch-agent small { font-size: 9px; }.dispatch-empty { grid-column: 1 / -1; min-height: 250px; display: grid; place-content: center; justify-items: center; padding: 30px; color: #60778c; text-align: center; }.dispatch-empty svg { width: 38px; height: 38px; color: #6baedc; }.dispatch-empty strong { margin-top: 14px; color: #cbdbe6; font-size: 14px; }.dispatch-empty span { margin-top: 7px; font-size: 10px; }.dispatch-error { min-height: 18px; margin-top: 10px; }
.dispatch-board { grid-template-columns: clamp(285px, 22vw, 340px) minmax(0, 1fr); }.dispatch-roster,.dispatch-units { display: flex; flex-direction: column; }.dispatch-agent-list,.dispatch-unit-grid { flex: 1; width: 100%; }.dispatch-agent small { font-size: 12px; }.dispatch-agent-badge { padding: 6px 8px; font-size: 12px; }.dispatch-unit .dispatch-agent small { font-size: 11px; }.dispatch-unit .dispatch-agent-badge { font-size: 11px; }
.dispatch-agent { position: relative; }.dispatch-agent.drop-before::before,.dispatch-agent.drop-after::after { content: ""; position: absolute; z-index: 3; right: 4px; left: 4px; height: 3px; border-radius: 999px; background: #4eb4fa; box-shadow: 0 0 10px rgba(78,180,250,.8); pointer-events: none; }.dispatch-agent.drop-before::before { top: -6px; }.dispatch-agent.drop-after::after { bottom: -6px; }.dispatch-unit-grid:has(> .dispatch-empty) { display: flex; }.dispatch-unit-grid > .dispatch-empty { width: 100%; min-height: 0; flex: 1; align-self: stretch; }
.dispatch-unit-icon { position: relative; width: 44px; height: 44px; flex: 0 0 44px; cursor: pointer; transition: color .18s, background .18s, transform .18s; }.dispatch-unit-icon svg { width: 25px; height: 25px; }.dispatch-unit-icon:hover { color: #fff; transform: translateY(-1px); filter: brightness(1.18); }.dispatch-unit[data-vehicle-type="car"] .dispatch-unit-icon { color: #79c8ff; background: rgba(42,137,207,.16); }.dispatch-unit[data-vehicle-type="motorcycle"] .dispatch-unit-icon { color: #f0bd68; background: rgba(226,156,52,.15); }.dispatch-unit[data-vehicle-type="helicopter"] .dispatch-unit-icon { color: #b69cff; background: rgba(125,90,213,.16); }.dispatch-unit[data-vehicle-type="boat"] .dispatch-unit-icon { color: #5ed8e5; background: rgba(44,171,188,.15); }.dispatch-unit[data-vehicle-type="bicycle"] .dispatch-unit-icon { color: #70dba4; background: rgba(49,190,119,.14); }.dispatch-unit[data-vehicle-type="swat"] { border-color: rgba(230,76,85,.52); background: linear-gradient(145deg,rgba(110,24,31,.2),rgba(61,18,23,.14)); box-shadow: inset 0 0 0 1px rgba(222,65,76,.08); }.dispatch-unit[data-vehicle-type="swat"] > header { border-bottom-color: rgba(230,76,85,.22); }.dispatch-unit[data-vehicle-type="swat"] .dispatch-unit-icon { color: #ff9299; background: rgba(218,57,69,.18); }.dispatch-unit[data-vehicle-type="swat"] .dispatch-unit-title span { color: #bc7a80; }.dispatch-vehicle-select { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }.dispatch-unit-title strong { color: #fff; }.dispatch-status-badge { position: relative; flex: 0 0 auto; padding: 7px 9px; border-radius: 999px; font-size: 9px; font-weight: 750; white-space: nowrap; cursor: pointer; }.dispatch-status-badge.patrol { color: #70dba5; background: rgba(54,203,131,.11); }.dispatch-status-badge.foot { color: #74c1f6; background: rgba(42,137,207,.14); }.dispatch-status-badge.intervention { color: #f2b661; background: rgba(232,158,52,.13); }.dispatch-status-select { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.mdt-nav-group-items { max-height: 720px; }.dispatch-help { display: none; }.dispatch-status-badge { min-height: 28px; display: inline-flex; align-items: center; justify-content: center; padding: 0 12px; line-height: 1; }.dispatch-units header .dispatch-status-badge > span { display: block; margin: 0; color: inherit; font-size: 10px; line-height: 1; }.dispatch-status-badge.patrol,.unit-list .patrol { color: #69d99f; background: rgba(50,194,124,.14); }.dispatch-status-badge.foot,.unit-list .foot { color: #69b5eb; background: rgba(42,137,207,.16); }.dispatch-status-badge.intervention,.unit-list .intervention { color: #f0ad4e; background: rgba(232,145,36,.15); }.units-panel { display: flex; flex-direction: column; }.units-panel .unit-list:has(.dashboard-units-empty) { flex: 1; display: grid; place-items: center; }.dashboard-units-empty { padding: 18px; color: #65798c; font-size: 11px; text-align: center; }
.nav-notification-dot { justify-self: end; width: 9px; height: 9px; border-radius: 50%; background: #ed525e; box-shadow: 0 0 0 0 rgba(237,82,94,.55); animation: notification-pulse 1.55s ease-out infinite; }.nav-notification-dot[hidden] { display: none; }
.mdt-empty-module { min-height: 330px; border-style: solid; border-color: var(--mdt-line); background: linear-gradient(145deg,rgba(14,31,45,.78),rgba(9,23,35,.7)); }.mdt-empty-module > span,.module-icon { display: grid; place-items: center; width: 58px; height: 58px; border-radius: 16px; color: #78b8e5; background: rgba(32,117,181,.13); }.mdt-empty-module > span svg,.module-icon svg { width: 29px; height: 29px; }
.mdt-module-shell { min-height: 330px; margin-top: 28px; overflow: hidden; border: 1px solid var(--mdt-line); border-radius: 14px; background: linear-gradient(145deg,rgba(14,31,45,.78),rgba(9,23,35,.7)); }.mdt-module-shell > header { display: flex; align-items: center; gap: 14px; padding: 18px; border-bottom: 1px solid var(--mdt-line); }.mdt-module-shell > header .module-icon { width: 42px; height: 42px; border-radius: 11px; }.mdt-module-shell > header .module-icon svg { width: 21px; height: 21px; }.mdt-module-shell h2,.mdt-module-shell h3 { margin: 0; }.mdt-module-shell h2 { font-size: 15px; }.mdt-module-shell header p { margin: 5px 0 0; color: #6d8396; font-size: 11px; }.module-placeholder { min-height: 250px; display: grid; place-content: center; justify-items: center; padding: 30px; color: #60778c; text-align: center; }.module-placeholder > svg { width: 42px; height: 42px; color: #6caedc; }.module-placeholder h3 { margin-top: 16px; color: #d5e3ec; font-size: 17px; }.module-placeholder p { max-width: 440px; margin: 8px 0 0; font-size: 11px; line-height: 1.6; }.appointment-list { display: grid; gap: 9px; padding: 14px; }.appointment-card { display: flex; align-items: center; gap: 13px; padding: 13px; border: 1px solid rgba(136,177,211,.11); border-radius: 10px; background: rgba(255,255,255,.025); }.appointment-card .module-icon { flex: 0 0 40px; width: 40px; height: 40px; border-radius: 10px; }.appointment-card .module-icon svg { width: 20px; height: 20px; }.appointment-card strong { font-size: 13px; }.appointment-card p { margin: 5px 0; color: #8296a7; font-size: 11px; }.appointment-card small { color: #60768a; font-size: 10px; }
@keyframes notification-pulse { 0% { box-shadow: 0 0 0 0 rgba(237,82,94,.55); } 70%,100% { box-shadow: 0 0 0 8px rgba(237,82,94,0); } }
@keyframes mdt-view-in { from { opacity: 0; transform: translateY(8px); } }
@keyframes arrive { to { opacity: 1; transform: translateY(0); } }
@keyframes app-enter { from { opacity: 0; transform: scale(.9) translateY(28px); filter: blur(7px); } to { opacity: 1; transform: scale(1) translateY(0); filter: blur(0); } }
@keyframes app-exit { to { opacity: 0; transform: scale(.88) translateY(34px); filter: blur(8px); border-radius: 34px; } }
@media (max-width: 720px) { .home { padding: 42px 24px 64px; }.statusbar { padding: 0 16px; }.app-grid { grid-template-columns: 1fr; margin-top: 38px; }.app-tile { min-height: 205px; }.login-card { padding: 34px 25px; }.login-card h1 { font-size: 42px; } }
@media (max-width: 720px) { .project-card { margin: 38px 20px 74px; padding: 30px 24px; }.project-card h1 { font-size: 42px; } }
@media (max-width: 980px) { .mdt-layout { grid-template-columns: 190px minmax(0,1fr); }.mdt-agency span { display: none; }.mdt-stats { grid-template-columns: repeat(2,1fr); }.mdt-dashboard-grid { grid-template-columns: 1fr; }.activity-panel { grid-column: auto; }.activity-list { grid-template-columns: 1fr; }.activity-list article { border-right: 0; border-bottom: 1px solid rgba(136,177,211,.08); } }
@media (max-width: 720px) { .police-mdt .app-status-title span { display: inline; }.mdt-layout { display: block; }.mdt-sidebar { position: fixed; z-index: 30; inset: 52px auto 0 0; width: min(280px,82vw); transform: translateX(-105%); transition: transform .25s ease; box-shadow: 20px 0 50px rgba(0,0,0,.4); }.mdt-sidebar.open { transform: translateX(0); }.mdt-menu { display: grid; place-items: center; width: 34px; height: 34px; border: 1px solid var(--mdt-line); border-radius: 8px; color: white; background: rgba(255,255,255,.03); }.mdt-toolbar { padding: 0 16px; }.mdt-search { width: auto; flex: 1; }.mdt-search kbd,.mdt-profile > div:last-child { display: none; }.mdt-profile { padding-left: 0; border: 0; }.mdt-notification { display: none; }.mdt-view { padding: 24px 16px; }.mdt-heading { align-items: flex-start; flex-direction: column; }.mdt-heading .mdt-primary { align-self: stretch; }.mdt-stats { grid-template-columns: repeat(2,minmax(0,1fr)); }.mdt-dashboard-grid { grid-template-columns: 1fr; }.call-item { grid-template-columns: 42px 1fr; }.call-units { display: none; } }
@media (max-width: 820px) { .citizen-workspace { grid-template-columns: 1fr; }.citizen-list { max-height: 300px; }.citizen-form-grid { grid-template-columns: 1fr; }.field-wide { grid-column: auto; }.citizen-linked-grid { grid-template-columns: repeat(2,1fr); }.citizen-dialog { max-height: calc(100vh - 18px); }.citizen-form-scroll { padding: 0 16px; }.citizen-dialog header,.citizen-dialog footer { padding: 15px 16px; } }
@media (max-width: 1000px) { .vehicle-list { grid-template-columns: repeat(2,minmax(220px,1fr)); } }
@media (max-width: 1100px) { .dispatch-board { grid-template-columns: 1fr; }.dispatch-agent-list { min-height: 180px; }.dispatch-unit-grid { min-height: 260px; } }
@media (max-width: 720px) { .dispatch-heading { align-items: stretch; }.dispatch-create { grid-template-columns: 1fr auto; }.dispatch-unit-grid { grid-template-columns: 1fr; } }
@media (max-width: 720px) { .vehicle-list { grid-template-columns: 1fr; }.vehicle-form-layout { grid-template-columns: 1fr; }.vehicle-image-preview { min-height: 170px; } }
@media (prefers-reduced-motion: reduce) { * { animation: none !important; transition: none !important; }.app-tile { opacity: 1; transform: none; } }
.police-mdt .mdt-stats { grid-template-columns: repeat(5,minmax(0,1fr)); }.police-mdt .mdt-stats [data-open-view] { cursor: pointer; }
.defcon-stat { --defcon: #36cb83; --defcon-ink: #36cb83; border-color: var(--defcon) !important; box-shadow: inset 0 0 0 1px var(--defcon); background: linear-gradient(145deg,color-mix(in srgb,var(--defcon) 22%,#0b1926),rgba(11,25,38,.85)) !important; }.defcon-stat strong { color: var(--defcon-ink); }.defcon-stat span { color: #c3d0dc !important; }.defcon-stat small { color: #c3d0dc !important; }
.defcon-stat.defcon-4 { --defcon: #f2d13b; --defcon-ink: #f2d13b; }.defcon-stat.defcon-3 { --defcon: #f08a2e; --defcon-ink: #f08a2e; }.defcon-stat.defcon-2 { --defcon: #e5404b; --defcon-ink: #ff6b74; }
.defcon-stat.defcon-1 { --defcon: #000; --defcon-ink: #fff; background: #000 !important; border-color: #e5404b !important; box-shadow: inset 0 0 0 1px #e5404b, 0 0 18px rgba(229,64,75,.35); }
@media (max-width: 980px) { .police-mdt .mdt-stats { grid-template-columns: repeat(2,minmax(0,1fr)); }.police-mdt .mdt-stats .defcon-stat { grid-column: 1 / -1; } }
.mdt-duty-toggle { display: inline-flex; align-items: center; gap: 8px; padding: 8px 12px; border: 1px solid rgba(229,92,101,.35); border-radius: 9px; color: #f0a3a8; background: rgba(229,92,101,.08); font: 700 12px Montserrat,system-ui,sans-serif; cursor: pointer; transition: background .2s ease,border-color .2s ease,color .2s ease; }.mdt-duty-toggle i { width: 8px; height: 8px; border-radius: 50%; background: #e55c65; }.mdt-duty-toggle.on { border-color: rgba(68,199,129,.4); color: #8fe3b8; background: rgba(39,132,87,.12); }.mdt-duty-toggle.on i { background: #38ce83; box-shadow: 0 0 10px #38ce83; }.mdt-duty-toggle:disabled { opacity: .55; cursor: progress; }
.mdt-profile strong { display: flex !important; align-items: center; gap: 7px; max-width: 180px; }.mdt-profile strong > span { display: block; min-width: 0; margin: 0 !important; overflow: hidden; text-overflow: ellipsis; color: inherit !important; font-size: inherit !important; }.mdt-badge-number { flex: none; padding: 3px 6px; border: 1px solid rgba(106,170,226,.35); border-radius: 6px; color: #9fd0ff; background: rgba(25,90,142,.3); font-size: 11px; letter-spacing: .03em; }.mdt-badge-number[hidden] { display: none; }
@media (max-width: 720px) { .mdt-duty-toggle { margin-left: auto; padding: 8px 10px; }.mdt-duty-toggle span { display: none; } }
.rename-panel { margin-top: 28px; border: 1px solid var(--mdt-line); border-radius: 13px; background: rgba(11,25,38,.72); overflow: hidden; }.rename-panel > header { padding: 18px 20px; border-bottom: 1px solid var(--mdt-line); }.rename-panel h2 { margin: 0; font-size: 16px; }.rename-panel header span { display: block; margin-top: 6px; color: #65798c; font-size: 12px; }
.rename-row { display: grid; grid-template-columns: 64px minmax(0,1fr) 160px 210px; align-items: center; gap: 12px; margin: 0; padding: 10px 20px; border-bottom: 1px solid rgba(136,177,211,.08); }.rename-row:last-child { border-bottom: 0; }.rename-row-head { color: #7b8fa2; font-size: 10px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; background: rgba(255,255,255,.02); border-bottom: 1px solid var(--mdt-line); }
.rename-rank { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 9px; color: #d5edff; background: linear-gradient(145deg,#195a8e,#0c3454); font-size: 12px; font-weight: 800; }
.rename-row input { width: 100%; padding: 10px 12px; border: 1px solid transparent; border-radius: 8px; outline: 0; color: white; background: transparent; font: 600 13px Montserrat; transition: border-color .15s ease,background .15s ease; }.rename-row input:hover { border-color: rgba(130,172,205,.16); }.rename-row input:focus { border-color: rgba(60,168,255,.6); background: rgba(255,255,255,.03); }.rename-row input[name="abbreviation"] { color: #9fd0ff; letter-spacing: .03em; }.rename-row input:invalid { border-color: rgba(229,92,101,.6); }
.rename-actions { display: flex; justify-content: flex-end; gap: 8px; visibility: hidden; }.rename-row.dirty .rename-actions { visibility: visible; }.rename-row.dirty { background: rgba(25,120,189,.06); }.rename-row.saving { opacity: .6; pointer-events: none; }.rename-actions .mdt-primary { height: auto; padding: 9px 12px; font-size: 11px; }.rename-actions .secondary-button { padding: 9px 12px; }
.rename-error { margin: 0; padding: 0 20px 14px; font-size: 12px; }.rename-error:empty { display: none; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
@media (max-width: 720px) { .rename-row { grid-template-columns: 40px minmax(0,1fr) 90px; padding: 10px 12px; }.rename-row-head span:last-child { display: none; }.rename-actions { grid-column: 1 / -1; display: none; }.rename-row.dirty .rename-actions { display: flex; } }
.rename-row.with-toggle { grid-template-columns: 64px minmax(0,1fr) 160px 120px 210px; }.rename-row.inactive input[type="text"],.rename-row.inactive input:not([type]) { color: #6d8193; }.rename-row.inactive .rename-rank { opacity: .45; }
.mdt-switch { display: inline-flex; align-items: center; gap: 9px; color: #8fe3b8; font-size: 12px; font-weight: 650; cursor: pointer; }.mdt-switch input { position: absolute; opacity: 0; pointer-events: none; }.mdt-switch i { position: relative; flex: none; width: 36px; height: 20px; border-radius: 999px; background: rgba(229,92,101,.35); transition: background .2s ease; }.mdt-switch i::after { content: ""; position: absolute; top: 3px; left: 3px; width: 14px; height: 14px; border-radius: 50%; background: #fff; transition: transform .2s ease; }.mdt-switch input:checked + i { background: #2fae70; }.mdt-switch input:checked + i::after { transform: translateX(16px); }.mdt-switch input:focus-visible + i { outline: 2px solid rgba(60,168,255,.7); outline-offset: 2px; }.mdt-switch input:not(:checked) ~ span { color: #e98288; }
@media (max-width: 720px) { .rename-row.with-toggle { grid-template-columns: 40px minmax(0,1fr) 90px; }.rename-row.with-toggle .mdt-switch { grid-column: 2 / -1; }.rename-row-head.with-toggle span:nth-child(4) { display: none; } }
.rename-actions { visibility: visible !important; opacity: 0; pointer-events: none; transition: opacity .25s ease; }.rename-row.dirty .rename-actions,.rename-row.saved .rename-actions { opacity: 1; pointer-events: auto; }.rename-row.saved .rename-actions .secondary-button { opacity: 0; pointer-events: none; transition: opacity .2s ease; }
.rename-actions .mdt-primary { transition: background .25s ease,border-color .25s ease,box-shadow .25s ease; }.rename-row.saved .rename-actions .mdt-primary { border-color: rgba(84,232,152,.7); background: linear-gradient(145deg,#2fc77c,#178a52); box-shadow: 0 0 0 3px rgba(56,206,131,.18),0 0 22px rgba(56,206,131,.55); pointer-events: none; }
.rename-row { transition: background .3s ease,box-shadow .3s ease; }.rename-row.saved { background: rgba(56,206,131,.07); box-shadow: inset 3px 0 0 #38ce83; }
.mdt-switch.saved i { box-shadow: 0 0 0 3px rgba(56,206,131,.2),0 0 16px rgba(56,206,131,.55); }.mdt-switch i { transition: background .2s ease,box-shadow .3s ease; }
@media (max-width: 720px) { .rename-row.saved .rename-actions { display: flex; } }
.vehicle-list { grid-template-columns: repeat(5,minmax(0,1fr)); }
.vehicle-card-image { height: auto; aspect-ratio: 16 / 9; display: flex; align-items: center; justify-content: center; padding: 8px; }.vehicle-card-image img { width: auto; height: auto; max-width: 100%; max-height: 100%; object-fit: contain; }
@media (max-width: 1000px) { .vehicle-list { grid-template-columns: repeat(3,minmax(0,1fr)); } }
@media (max-width: 720px) { .vehicle-list { grid-template-columns: repeat(2,minmax(0,1fr)); } }
.vehicle-card { cursor: pointer; transition: transform .18s ease,border-color .18s ease,background .18s ease; }.vehicle-card:hover,.vehicle-card:focus-visible { transform: translateY(-2px); border-color: rgba(77,166,231,.35); background: rgba(46,133,196,.06); outline: 0; }.vehicle-card.impounded { border-color: rgba(240,138,46,.35); }
.vehicle-card-image { position: relative; }.vehicle-flag { position: absolute; top: 8px; right: 8px; padding: 4px 8px; border-radius: 6px; font-size: 10px !important; font-weight: 700; letter-spacing: .04em !important; text-transform: uppercase; backdrop-filter: blur(6px); }.vehicle-flag.impound { color: #fff !important; background: rgba(214,112,24,.92); box-shadow: 0 4px 14px rgba(214,112,24,.35); }.vehicle-flag.reports { color: #8ea2b6 !important; background: rgba(8,17,26,.75); border: 1px solid rgba(136,177,211,.18); }.vehicle-flag.reports.has-reports { color: #ffd3d6 !important; background: rgba(160,40,50,.85); border-color: rgba(229,92,101,.6); }
.vehicle-card .impound-line { color: #f3a764; }
.impound-summary { padding: 16px 16px 12px; color: #8ea2b6; font-size: 13px; font-weight: 600; }
.vehicle-detail-layout { display: grid; grid-template-columns: minmax(280px,.9fr) minmax(0,1.3fr); gap: 18px; margin-top: 28px; align-items: start; }.vehicle-detail-media,.vehicle-detail-main > section { border: 1px solid var(--mdt-line); border-radius: 13px; background: rgba(11,25,38,.72); }.vehicle-detail-media { padding: 14px; }.vehicle-detail-media .vehicle-card-image { border-radius: 10px; }.vehicle-detail-media .citizen-info-grid .field-wide { grid-column: 1 / -1; }.vehicle-detail-media a { color: #68b5e9; text-decoration: none; }.vehicle-details-text { margin: 14px 0 0; padding: 12px; border-radius: 9px; color: #a7bac9; background: rgba(255,255,255,.02); font-size: 12px; line-height: 1.5; white-space: pre-wrap; }
.vehicle-detail-main { display: grid; gap: 14px; }.vehicle-detail-main > .form-error:empty { display: none; }
.vehicle-status { padding: 18px 20px; }.vehicle-status header { display: flex; align-items: center; justify-content: space-between; gap: 14px; }.vehicle-status-label { display: block; color: #7b8fa2; font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; }.vehicle-status strong { display: block; margin-top: 5px; font-size: 20px; }.vehicle-status.active { border-color: rgba(68,199,129,.3) !important; }.vehicle-status.active header strong { color: #8fe3b8; }.vehicle-status.impound { border-color: rgba(240,138,46,.45) !important; background: linear-gradient(145deg,rgba(240,138,46,.1),rgba(11,25,38,.8)) !important; }.vehicle-status.impound header strong { color: #f3a764; }
.vehicle-status-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; margin-top: 16px; }.vehicle-status-grid > div,.vehicle-status-reason { padding: 11px 12px; border: 1px solid rgba(136,177,211,.1); border-radius: 9px; background: rgba(255,255,255,.02); }.vehicle-status-grid span,.vehicle-status-reason span { display: block; color: #7b8fa2; font-size: 10px; text-transform: uppercase; letter-spacing: .05em; }.vehicle-status-grid strong { margin-top: 6px; font-size: 14px; }.vehicle-status-reason { margin: 10px 0 0; color: #c3d0dc; font-size: 13px; line-height: 1.45; }.vehicle-status-reason span { margin-bottom: 5px; }
.impound-button { background: linear-gradient(145deg,#d67018,#a24f0b) !important; border-color: rgba(243,167,100,.5) !important; box-shadow: 0 8px 24px rgba(214,112,24,.25) !important; }.release-button { background: linear-gradient(145deg,#2fae70,#17804d) !important; border-color: rgba(84,232,152,.5) !important; box-shadow: 0 8px 24px rgba(47,174,112,.25) !important; }.release-button.confirming { box-shadow: 0 0 0 3px rgba(56,206,131,.25),0 0 22px rgba(56,206,131,.55) !important; }
.vehicle-section { padding: 18px 20px; }.vehicle-section h3 { display: flex; align-items: center; gap: 8px; margin: 0 0 12px; font-size: 15px; }.vehicle-section h3 small { padding: 2px 7px; border-radius: 999px; color: #8ea2b6; background: rgba(255,255,255,.06); font-size: 11px; }.vehicle-empty { margin: 0; color: #65798c; font-size: 13px; }
.vehicle-report-list { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }.vehicle-report-list li { display: flex; align-items: center; gap: 12px; padding: 11px 12px; border: 1px solid rgba(136,177,211,.1); border-radius: 9px; background: rgba(255,255,255,.02); }.vehicle-report-list strong,.vehicle-report-list span { display: block; }.vehicle-report-list strong { font-size: 13px; }.vehicle-report-list span { margin-top: 4px; color: #65798c; font-size: 11px; }.report-kind { flex: none; min-width: 78px; padding: 4px 8px; border-radius: 6px; font-size: 10px; text-align: center; text-transform: uppercase; letter-spacing: .04em; }.report-kind.case { color: #9fd0ff; background: rgba(25,90,142,.35); }.report-kind.infraction { color: #ffd3d6; background: rgba(160,40,50,.5); }.report-kind.history { color: #f3c79f; background: rgba(214,112,24,.25); }
.impound-dialog { width: min(620px,calc(100vw - 32px)); }.impound-dialog-vehicle { margin: 0 0 16px; color: #f3a764; font-size: 14px; font-weight: 700; }.impound-dialog select,.impound-dialog textarea { width: 100%; margin-top: 7px; padding: 11px 12px; border: 1px solid rgba(130,172,205,.16); border-radius: 8px; outline: 0; color: white; background: rgba(255,255,255,.03); font: 500 12px Montserrat; }.impound-dialog select option { background: #0c1823; }.impound-officer-switch { padding: 6px 0; color: #c3d0dc !important; font-size: 12px !important; }.impound-officer-switch input:not(:checked) ~ span { color: #c3d0dc !important; }
@media (max-width: 980px) { .vehicle-detail-layout { grid-template-columns: 1fr; } }
@media (max-width: 720px) { .vehicle-status header { flex-direction: column; align-items: stretch; }.vehicle-status-grid { grid-template-columns: 1fr; } }
.weapon-card .vehicle-card-image,.weapon-detail-image,[data-view-panel="weapon"] .vehicle-detail-media .vehicle-card-image { aspect-ratio: 4 / 3; padding: 0; background: #4a4d55; }.weapon-card .vehicle-card-image img,[data-view-panel="weapon"] .vehicle-detail-media .vehicle-card-image img { width: 100%; height: 100%; max-width: none; max-height: none; object-fit: cover; }
.weapon-image-preview { padding: 0; }.weapon-image-preview img { height: auto; aspect-ratio: 4 / 3; object-fit: cover; }
#weapon-model-suggestions img { object-fit: cover; }
.weapon-undeclared { color: #e98288; font-weight: 700; }
.weapon-serial { font-family: ui-monospace,SFMono-Regular,Consolas,monospace; font-size: 17px !important; letter-spacing: .08em; color: #9fd0ff; }
.vehicle-section h3 .section-action { margin-left: auto; padding: 7px 11px; font-size: 11px; }
.report-kind.ballistic { color: #d7c4ff; background: rgba(109,84,199,.35); }.ballistic-signature { font-family: ui-monospace,SFMono-Regular,Consolas,monospace; letter-spacing: .04em; }.ballistic-item { align-items: flex-start !important; }.ballistic-item p { margin: 8px 0 0; color: #a7bac9; font-size: 12px; line-height: 1.5; white-space: pre-wrap; }
.ballistic-signature { display: block; white-space: pre-wrap; line-height: 1.5; }
.vehicle-status.undeclared { border-color: rgba(229,64,75,.6) !important; background: linear-gradient(145deg,rgba(229,64,75,.12),rgba(11,25,38,.8)) !important; }.vehicle-status.undeclared header strong { color: #ff6b74; }
.vehicle-status.lost { border-color: rgba(242,209,59,.5) !important; background: linear-gradient(145deg,rgba(242,209,59,.1),rgba(11,25,38,.8)) !important; }.vehicle-status.lost header strong { color: #f2d13b; }.vehicle-status header small { display: block; margin-top: 5px; color: #a7bac9; font-size: 12px; }
.citizen-info-grid .undeclared-field { border-color: rgba(229,64,75,.5); background: rgba(229,64,75,.08); }.citizen-info-grid .undeclared-field strong { color: #ff6b74; }
.vehicle-flag.lost { color: #241d00 !important; background: rgba(242,209,59,.92); }.weapon-lost-line { color: #f2d13b !important; }
.weapon-admin-actions { display: flex; justify-content: space-between; gap: 8px; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--mdt-line); }
.danger-button { padding: 10px 14px; border: 1px solid rgba(229,64,75,.45); border-radius: 8px; color: #ff8a92; background: rgba(229,64,75,.08); font: 600 11px Montserrat; cursor: pointer; transition: background .2s ease,box-shadow .2s ease; }.danger-button:hover { background: rgba(229,64,75,.16); }.danger-button.confirming { color: #fff; background: #c8323d; box-shadow: 0 0 0 3px rgba(229,64,75,.25),0 0 20px rgba(229,64,75,.5); }.danger-button:disabled { opacity: .6; cursor: progress; }
.weapon-lost-field input { width: 100%; margin-top: 7px; padding: 11px 12px; border: 1px solid rgba(130,172,205,.16); border-radius: 8px; outline: 0; color: white; background: rgba(255,255,255,.03); font: 500 12px Montserrat; color-scheme: dark; }.weapon-lost-field small { display: block; margin-top: 6px; color: #65798c; font-size: 10px; font-weight: 500; }
.vehicle-card:not(.weapon-card) .vehicle-card-image,[data-view-panel="vehicle"] .vehicle-detail-media .vehicle-card-image { padding: 16px; }
.weapon-card .vehicle-card-image img,[data-view-panel="weapon"] .vehicle-detail-media .vehicle-card-image img { transform: scale(1.18); }
.weapon-card .vehicle-card-image,[data-view-panel="weapon"] .vehicle-detail-media .vehicle-card-image { aspect-ratio: 16 / 9; }
.weapon-card .vehicle-card-image img,[data-view-panel="weapon"] .vehicle-detail-media .vehicle-card-image img { transform: scale(1.12); }
.vehicle-flag.destroyed { color: #e6e9ee !important; background: rgba(30,32,38,.92); border: 1px solid rgba(255,255,255,.25); }
.vehicle-card.destroyed .vehicle-card-image img { filter: grayscale(1) brightness(.75); }.vehicle-card.destroyed { opacity: .75; }.destroyed-line { color: #9aa6b2 !important; }
.vehicle-status.destroyed { border-color: rgba(154,166,178,.45) !important; background: linear-gradient(145deg,rgba(154,166,178,.1),rgba(11,25,38,.8)) !important; }.vehicle-status.destroyed header strong { color: #c9d1d9; }
.date-field input { width: 100%; margin-top: 7px; padding: 11px 12px; border: 1px solid rgba(130,172,205,.16); border-radius: 8px; outline: 0; color: white; background: rgba(255,255,255,.03); font: 500 12px Montserrat; color-scheme: dark; }.date-field small { display: block; margin-top: 6px; color: #65798c; font-size: 10px; font-weight: 500; }
.weapon-admin-actions { justify-content: flex-start; }
.registry-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 14px; }.registry-toolbar .citizen-filter { flex: 1 1 280px; margin: 0; }
.registry-filter { display: inline-flex; align-items: center; gap: 8px; padding: 0 4px 0 12px; border: 1px solid var(--mdt-line); border-radius: 9px; color: #7b8fa2; background: rgba(255,255,255,.025); font-size: 10px; font-weight: 650; letter-spacing: .05em; text-transform: uppercase; }.registry-filter select { padding: 10px 26px 10px 4px; border: 0; outline: 0; color: #e3edf4; background: transparent; font: 600 12px Montserrat; letter-spacing: 0; text-transform: none; cursor: pointer; }.registry-filter select option { color: #e3edf4; background: #0c1823; }.registry-filter:focus-within { border-color: rgba(60,168,255,.6); }
@media (max-width: 720px) { .registry-filter { flex: 1 1 140px; justify-content: space-between; } }
.vehicle-flags { position: absolute; top: 8px; right: 8px; display: flex; flex-direction: column; align-items: flex-end; gap: 5px; }.vehicle-flags .vehicle-flag { position: static; }
.vehicle-flag.destroyed { color: #fff !important; background: rgba(200,40,52,.94); border: 0; box-shadow: 0 4px 14px rgba(200,40,52,.35); }
.vehicle-flag.undeclared { color: #fff !important; background: rgba(176,52,128,.92); box-shadow: 0 4px 14px rgba(176,52,128,.3); }
.vehicle-status.undeclared { border-color: rgba(214,92,168,.6) !important; background: linear-gradient(145deg,rgba(176,52,128,.16),rgba(11,25,38,.8)) !important; }.vehicle-status.undeclared header strong { color: #f08ccd; }
.vehicle-status.impound { border-color: rgba(240,138,46,.55) !important; }.vehicle-status.impound header strong { color: #f3a764; }
.vehicle-status header small.status-undeclared { color: #f08ccd; font-weight: 650; }
.mdt-search-results { position: absolute; z-index: 50; top: calc(100% - 6px); max-height: min(520px,70vh); overflow-y: auto; padding: 8px; border: 1px solid rgba(121,171,207,.22); border-radius: 12px; background: #101f2b; box-shadow: 0 22px 55px rgba(0,0,0,.55); }.mdt-search-results[hidden] { display: none; }
.mdt-search-results section + section { margin-top: 6px; padding-top: 6px; border-top: 1px solid var(--mdt-line); }.mdt-search-results h3 { display: flex; align-items: center; gap: 7px; margin: 4px 8px 6px; color: #7b8fa2; font-size: 10px; font-weight: 650; letter-spacing: .06em; text-transform: uppercase; }.mdt-search-results h3 small { padding: 1px 6px; border-radius: 999px; background: rgba(255,255,255,.06); font-size: 10px; }
.mdt-search-results button { display: block; width: 100%; padding: 9px 10px; border: 0; border-radius: 8px; color: #e3edf4; background: transparent; text-align: left; cursor: pointer; }.mdt-search-results button:hover,.mdt-search-results button:focus-visible { background: rgba(61,146,207,.12); outline: 0; }.mdt-search-results strong,.mdt-search-results span { display: block; }.mdt-search-results strong { font-size: 13px; }.mdt-search-results span { margin-top: 3px; color: #6f879c; font-size: 11px; }.mdt-search-empty { margin: 8px 10px; color: #6f879c; font-size: 12px; }
#vehicles-subtitle a,#weapons-subtitle a { color: #68b5e9; text-decoration: none; }#vehicles-subtitle a:hover,#weapons-subtitle a:hover { text-decoration: underline; }
.citizen-profile > header > div:nth-child(2) { min-width: 0; flex: 1; }.citizen-profile > header > div > span { display: block; }.citizen-id-card { margin-top: 6px; color: #74899c; font-size: 13px; }.citizen-id-card strong { color: #9fd0ff; font-family: ui-monospace,SFMono-Regular,Consolas,monospace; letter-spacing: .05em; }
.citizen-edit-button { flex: none; align-self: flex-start; }
.citizen-addresses { margin-top: 4px; }.citizen-addresses > em { display: block; margin-top: 10px; color: #65798b; font-size: 12px; font-style: normal; }
.citizen-address-list { display: grid; gap: 7px; margin: 10px 0 0; padding: 0; list-style: none; }.citizen-address-list li { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid rgba(136,177,211,.1); border-radius: 9px; background: rgba(255,255,255,.02); }.citizen-address-list b { flex: none; min-width: 118px; color: #7b8fa2; font-size: 10px; font-weight: 650; letter-spacing: .05em; text-transform: uppercase; }.citizen-address-list span { flex: 1; min-width: 0; color: #dbe7ef; font-size: 13px; }
.citizen-address-remove { flex: none; min-width: 26px; height: 26px; padding: 0 7px; border: 1px solid transparent; border-radius: 7px; color: #6f879c; background: transparent; font: 600 15px/1 Montserrat; cursor: pointer; }.citizen-address-remove:hover { border-color: rgba(229,64,75,.4); color: #ff8a92; }.citizen-address-remove.confirming { border-color: rgba(229,64,75,.6); color: #fff; background: #c8323d; font-size: 11px; }
.citizen-removable-chip { display: inline-flex; align-items: stretch; min-height: 34px; overflow: hidden; padding: 0; border-radius: 7px; background: rgba(255,255,255,.045); }.police-mdt .citizen-tags .citizen-removable-chip { padding: 0; background: rgba(255,255,255,.045); }.compact-info-button { display: inline-flex; align-items: center; gap: 7px; min-height: 34px; padding: 8px 10px; border: 0; color: #a7bfd1; background: transparent; font: 600 12px/1.2 Montserrat; }.police-mdt .citizen-tags .compact-info-button { padding: 8px 10px; border-radius: 0; background: transparent; font-size: 12px; }.citizen-removable-chip > button:last-child { align-self: stretch; min-width: 27px; padding: 0 7px; border: 0; color: #71879a; background: transparent; font: 700 14px/1 Montserrat; cursor: pointer; }.citizen-removable-chip > button:last-child:hover { color: #ff8a92; background: rgba(229,64,75,.12); }.phone-chip .copy-phone { min-height: 34px; padding: 8px 10px; border-radius: 7px 0 0 7px; }
.license-chip .compact-info-button { cursor: pointer; }.license-chip .compact-info-button:hover { color: #d9e7f1; background: rgba(255,255,255,.04); }.license-chip strong { color: #d4e0e8; }.license-chip strong::before { content: "·"; margin-right: 7px; color: #617588; }.license-chip em { color: #f29a70; font-size: 10px; font-style: normal; }.license-chip.suspended { background: rgba(180,75,35,.1); box-shadow: inset 0 0 0 1px rgba(229,126,75,.2); }
.confirm-delete-dialog .citizen-form-section > p:first-child { margin: 0; color: #b8c8d4; font-size: 13px; line-height: 1.7; }.danger-button { color: #fff !important; background: #c8323d !important; }.danger-button:hover { color: #fff !important; background: #df414d !important; }
.case-workspace { margin-top: 28px; overflow: hidden; border: 1px solid var(--mdt-line); border-radius: 13px; background: rgba(11,25,38,.72); }.case-workspace > .citizen-filter { max-width: 560px; }.case-list { display: grid; }.case-list-item { width: 100%; display: grid; grid-template-columns: 120px minmax(0,1fr) auto; align-items: center; gap: 16px; padding: 16px 18px; border: 0; border-bottom: 1px solid rgba(136,177,211,.09); color: inherit; background: transparent; text-align: left; cursor: pointer; }.case-list-item:hover { background: rgba(60,168,255,.05); }.case-list-item:last-child { border-bottom: 0; }.case-list-item > strong { color: #8dccf7; font: 750 13px ui-monospace,SFMono-Regular,Consolas,monospace; letter-spacing: .04em; }.case-list-item h2 { margin: 0; color: #e1ebf2; font-size: 14px; }.case-list-item span { display: block; margin-top: 6px; color: #687f92; font-size: 10px; }.case-list-item em { padding: 5px 8px; border-radius: 6px; color: #9fb1bf; background: rgba(255,255,255,.05); font-size: 9px; font-style: normal; text-transform: uppercase; }.case-list-item em.high,.case-list-item em.critical { color: #ffb0a1; background: rgba(205,73,55,.14); }.case-number-help { margin: 12px 0 0; color: #687f92; font-size: 11px; }
.case-agent-field select { min-height: 125px; padding: 5px; }.case-agent-field option { padding: 5px; }.case-agent-field small { display: block; margin-top: 6px; color: #687f92; font-size: 10px; }.case-role-field { display: flex; flex-wrap: wrap; gap: 8px 16px; margin: 0; padding: 12px; border: 1px solid rgba(130,172,205,.16); border-radius: 8px; }.case-role-field legend { padding: 0 6px; color: #8297a8; font-size: 11px; }.case-role-field label { flex-direction: row; align-items: center; gap: 6px; color: #c9d6df; font-size: 11px; }.case-role-field input { width: auto; margin: 0; }
.case-heading-actions { display: flex; gap: 8px; }.case-file { display: grid; gap: 16px; }.case-file > header,.case-section { padding: 20px; border: 1px solid var(--mdt-line); border-radius: 13px; background: rgba(11,25,38,.72); }.case-badges { display: flex; flex-wrap: wrap; gap: 7px; }.case-badges span { padding: 6px 9px; border-radius: 7px; color: #9fd0ff; background: rgba(45,126,184,.16); font-size: 10px; font-weight: 700; text-transform: uppercase; }.case-badges .priority.high,.case-badges .priority.critical { color: #ffb0a1; background: rgba(205,73,55,.16); }.case-badges .classification.confidential,.case-badges .classification.secret { color: #d0b4ff; background: rgba(123,76,190,.18); }.case-meta { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 10px; margin-top: 16px; }.case-meta span { padding: 11px; border: 1px solid rgba(136,177,211,.1); border-radius: 8px; color: #70869a; font-size: 9px; text-transform: uppercase; }.case-meta strong { display: block; margin-top: 6px; color: #dce7ee; font-size: 12px; text-transform: none; }.case-assigned { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; margin-top: 14px; }.case-assigned b { color: #71879a; font-size: 10px; text-transform: uppercase; }.case-assigned span { padding: 6px 8px; border-radius: 6px; color: #a8cee9; background: rgba(52,139,200,.1); font-size: 10px; }.case-assigned em { color: #65798b; font-size: 10px; }.case-tabs { display: flex; flex-wrap: wrap; gap: 4px; padding: 7px; border: 1px solid var(--mdt-line); border-radius: 11px; background: rgba(11,25,38,.72); }.case-tabs a,.case-tabs span { padding: 8px 10px; border-radius: 7px; color: #8399aa; font-size: 10px; text-decoration: none; }.case-tabs a { color: #9fd0ff; background: rgba(45,126,184,.1); }.case-section h2 { display: flex; align-items: center; justify-content: space-between; margin: 0 0 14px; font-size: 14px; }.case-section > p { margin: 0; color: #adbdc9; font-size: 12px; line-height: 1.7; white-space: pre-wrap; }.case-stats { display: grid; grid-template-columns: repeat(4,1fr); gap: 8px; margin-top: 18px; }.case-stats span { padding: 12px; border: 1px solid rgba(136,177,211,.1); border-radius: 8px; color: #71879a; font-size: 9px; text-align: center; text-transform: uppercase; }.case-stats strong { display: block; margin-bottom: 5px; color: #e2edf4; font-size: 20px; }.case-people-list { display: grid; gap: 8px; }.case-person { position: relative; display: grid; grid-template-columns: minmax(220px,.7fr) 1fr auto; align-items: center; gap: 12px; padding: 10px; border: 1px solid rgba(136,177,211,.1); border-radius: 9px; }.case-person > a { display: flex; align-items: center; gap: 10px; color: inherit; text-decoration: none; }.case-person strong,.case-person small { display: block; }.case-person small,.case-person p { margin: 4px 0 0; color: #71879a; font-size: 10px; }.case-person > button { border: 0; color: #71879a; background: transparent; font-size: 16px; cursor: pointer; }.case-person > button:hover { color: #ff8a92; }.case-timeline { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }.case-timeline li { position: relative; display: grid; grid-template-columns: 145px 1fr; gap: 18px; padding: 0 0 20px; }.case-timeline li:not(:last-child)::after { content: ''; position: absolute; top: 19px; bottom: 0; left: 151px; width: 1px; background: rgba(77,166,231,.25); }.case-timeline time { color: #70869a; font-size: 10px; }.case-timeline div { position: relative; padding-left: 18px; }.case-timeline div::before { content: ''; position: absolute; top: 3px; left: 3px; width: 7px; height: 7px; border-radius: 50%; background: #3ca8ff; box-shadow: 0 0 8px rgba(60,168,255,.5); }.case-timeline strong,.case-timeline span { display: block; }.case-timeline strong { font-size: 12px; }.case-timeline span { margin-top: 4px; color: #70869a; font-size: 10px; }
@media (max-width: 800px) { .case-meta,.case-stats { grid-template-columns: repeat(2,1fr); }.case-person { grid-template-columns: 1fr auto; }.case-person p { grid-column: 1 / -1; }.case-list-item { grid-template-columns: 1fr auto; }.case-list-item > strong { grid-column: 1 / -1; } }

/* Fiche affaire : espacement sous l'en-tête et états vides harmonisés. */
#case-detail { margin-top: 28px; }
#case-detail-heading {
  color: #b8c8d4;
  font-size: 16px;
  font-weight: 600;
  line-height: 1.4;
}
#case-detail .case-section > h2 {
  min-height: 36px;
  margin-bottom: 14px;
}
#case-detail .case-section > p,
#case-detail .case-people-list > .vehicle-empty,
#case-detail .case-document-list > .vehicle-empty,
#case-detail .case-timeline > .vehicle-empty {
  margin: 0;
  color: #65798c;
  font: 500 12px/1.7 Montserrat, sans-serif;
}
#case-detail .case-timeline > .vehicle-empty {
  display: block;
  padding: 0;
}
.case-document-list { display: grid; gap: 8px; }
.case-document { overflow: hidden; border: 1px solid rgba(136,177,211,.1); border-radius: 9px; background: rgba(255,255,255,.02); }
.case-document summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 13px 14px; cursor: pointer; list-style: none; }
.case-document summary::-webkit-details-marker { display: none; }
.case-document summary > span:first-child { display: flex; align-items: center; gap: 10px; min-width: 0; }
.case-document summary b { flex: none; color: #8dccf7; font: 750 11px ui-monospace,SFMono-Regular,Consolas,monospace; }
.case-document summary strong { overflow: hidden; color: #dce7ee; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.case-document summary > span:last-child { flex: none; color: #71879a; font-size: 10px; }
.case-document[open] summary { border-bottom: 1px solid rgba(136,177,211,.1); background: rgba(60,168,255,.035); }
.case-document-body { padding: 14px; }
.case-document-body > p { margin: 0; color: #b8c8d4; font-size: 12px; line-height: 1.7; white-space: pre-wrap; }
.case-document-body footer { display: flex; flex-wrap: wrap; align-items: center; gap: 7px 14px; margin-top: 14px; padding-top: 11px; border-top: 1px solid rgba(136,177,211,.08); color: #71879a; font-size: 10px; }
.case-document-body footer a { color: #8dccf7; text-decoration: none; }
.case-document-body .verification { margin-left: auto; padding: 5px 8px; border-radius: 6px; color: #edc986; background: rgba(214,153,55,.12); font-size: 9px; font-style: normal; text-transform: uppercase; }
.case-document-body .verification.corroborated { color: #82d8aa; background: rgba(58,177,114,.12); }
.case-document-body .verification.contradicted { color: #ff9da5; background: rgba(205,73,55,.14); }
.evidence-meta { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 8px; margin-bottom: 14px; }
.evidence-meta span { padding: 9px 10px; border: 1px solid rgba(136,177,211,.08); border-radius: 7px; color: #71879a; font-size: 9px; text-transform: uppercase; }
.evidence-meta strong { display: block; margin-top: 5px; overflow-wrap: anywhere; color: #d5e2ea; font-size: 11px; text-transform: none; }
.evidence-custody-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 18px; padding-top: 14px; border-top: 1px solid rgba(136,177,211,.08); }
.evidence-custody-heading h3 { margin: 0; font-size: 12px; }
.evidence-custody { margin-top: 14px; }
.evidence-custody li { grid-template-columns: 135px 1fr; }
.evidence-custody li:not(:last-child)::after { left: 141px; }
.evidence-custody p { margin: 6px 0 0; color: #8da0af; font-size: 11px; line-height: 1.5; white-space: pre-wrap; }
@media (max-width: 720px) { .case-document summary { align-items: flex-start; flex-direction: column; gap: 6px; }.case-document summary > span:last-child { white-space: normal; } }
@media (max-width: 720px) { .evidence-meta { grid-template-columns: repeat(2,minmax(0,1fr)); }.evidence-custody li { grid-template-columns: 1fr; gap: 5px; padding-left: 18px; }.evidence-custody li:not(:last-child)::after { left: 3px; }.evidence-custody div { padding-left: 0; }.evidence-custody div::before { left: -18px; } }
@media (max-width: 720px) { .citizen-profile > header { flex-wrap: wrap; }.citizen-edit-button { width: 100%; }.citizen-address-list li { flex-wrap: wrap; }.citizen-address-list b { min-width: 0; width: 100%; } }
.life-status.missing { color: #b9a4ff; background: rgba(140,110,240,.13); }
.citizen-detail-column { min-width: 0; display: flex; flex-direction: column; gap: 8px; }.citizen-detail-column > .citizen-detail { flex: 1; }
.citizen-pin-tabs { display: flex; align-items: center; gap: 6px; overflow-x: auto; padding: 2px 2px 4px; scrollbar-width: thin; }.citizen-pin-tabs[hidden] { display: none; }
.citizen-pin-tab { position: relative; flex: 0 1 200px; min-width: 120px; display: flex; align-items: center; border: 1px solid var(--mdt-line); border-radius: 10px; background: rgba(11,25,38,.72); transition: border-color .15s ease,background .15s ease; }.citizen-pin-tab:hover { border-color: rgba(77,166,231,.35); }.citizen-pin-tab.active { border-color: rgba(60,168,255,.65); background: rgba(25,120,189,.16); box-shadow: inset 0 -2px 0 #3ca8ff; }
.citizen-pin-open { flex: 1; min-width: 0; display: flex; align-items: center; gap: 8px; padding: 7px 4px 7px 8px; border: 0; color: #dbe7ef; background: transparent; text-align: left; cursor: pointer; }.citizen-pin-avatar { flex: none; display: grid; place-items: center; width: 26px; height: 26px; overflow: hidden; border-radius: 7px; color: #d5edff; background: linear-gradient(145deg,#195a8e,#0c3454); font-size: 10px; font-weight: 800; }.citizen-pin-avatar img { width: 100%; height: 100%; object-fit: cover; }.citizen-pin-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; font-weight: 650; }
.citizen-pin-close { flex: none; width: 26px; height: 26px; margin-right: 4px; border: 0; border-radius: 7px; color: #6f879c; background: transparent; font: 600 15px/1 Montserrat; cursor: pointer; }.citizen-pin-close:hover { color: #ff8a92; background: rgba(229,64,75,.12); }
.citizen-pin-count { flex: none; margin-left: auto; padding: 0 6px; color: #65798c; font-size: 11px; font-weight: 650; }
.citizen-header-actions { flex: none; align-self: flex-start; display: flex; gap: 8px; }
.citizen-pin-button { display: inline-flex; align-items: center; gap: 6px; }.citizen-pin-button svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }.citizen-pin-button.pinned { border-color: rgba(60,168,255,.55); color: #9fd0ff; background: rgba(25,120,189,.16); }.citizen-pin-button.pinned svg { fill: currentColor; }.citizen-pin-button:disabled { opacity: .5; cursor: not-allowed; }
@media (max-width: 720px) { .citizen-header-actions { width: 100%; }.citizen-header-actions > button { flex: 1; justify-content: center; } }
.citizen-pin-tab { flex: 1 1 0; min-width: 0; max-width: 190px; }.citizen-pin-open { padding: 6px 2px 6px 10px; }.citizen-pin-name { display: block; font-size: 12px; line-height: 1.25; }.citizen-pin-name strong,.citizen-pin-name small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.citizen-pin-name small { color: #7b8fa2; font-size: 11px; font-weight: 500; }.citizen-pin-close { width: 22px; height: 22px; margin-right: 3px; }
.citizen-pin-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 650; }.citizen-pin-open { padding: 9px 2px 9px 12px; }
/* Onglets façon intercalaires : accrochés au bord haut de la fiche, sans la décaler. */
[data-view-panel="citizens"] .citizen-workspace { margin-top: 46px; }
.citizen-detail-column { position: relative; display: block; }.citizen-detail-column > .citizen-detail { height: 100%; background: #0a1723; }
.citizen-pin-tabs { position: absolute; z-index: 2; right: 16px; bottom: calc(100% - 1px); left: 16px; display: flex; align-items: flex-end; gap: 3px; overflow: visible; padding: 0; }
.citizen-pin-tab { flex: 0 1 150px; min-width: 0; max-width: 150px; height: 34px; border: 1px solid var(--mdt-line); border-bottom: 0; border-radius: 10px 10px 0 0; background: #0b1520; box-shadow: none; transform: translateY(3px); transition: transform .15s ease,background .15s ease,border-color .15s ease; }
.citizen-pin-tab:hover { border-color: rgba(77,166,231,.3); background: #0d1b28; transform: translateY(1px); }
.citizen-pin-tab.active { z-index: 3; height: 36px; border-color: var(--mdt-line); background: #0a1723; box-shadow: inset 0 2px 0 #3ca8ff; transform: none; }
.citizen-pin-tab.active::after { content: ""; position: absolute; right: 0; bottom: -1px; left: 0; height: 2px; background: #0a1723; }
.citizen-pin-tab.active .citizen-pin-name { color: #fff; }.citizen-pin-tab:not(.active) .citizen-pin-name { color: #8ea2b6; }
.citizen-pin-open { padding: 0 2px 0 12px; height: 100%; }.citizen-pin-count { align-self: center; margin-bottom: 4px; }
@media (max-width: 820px) { [data-view-panel="citizens"] .citizen-workspace { row-gap: 46px; }.citizen-pin-tabs { left: 8px; right: 8px; }.citizen-pin-tab { flex-basis: 110px; } }
.citizen-pin-tab.active { box-shadow: none; }
.citizen-pin-tab.active .citizen-pin-name { color: #c3d0dc; }
/* ---------- Carte (crime-map.js) */
.crime-map { position: relative; overflow: hidden; border-radius: 12px; background: #0b3b66; cursor: grab; touch-action: none; user-select: none; }.crime-map.dragging { cursor: grabbing; }.crime-map.picking { cursor: crosshair; }
.crime-map-canvas { position: absolute; top: 0; left: 0; transform-origin: 0 0; }.crime-map-canvas img { display: block; width: 100%; height: 100%; pointer-events: none; }
.crime-map-zones { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.crime-map-zone { fill: var(--group-color); fill-opacity: .22; stroke: var(--group-color); stroke-opacity: .85; stroke-width: 1.4; vector-effect: non-scaling-stroke; transition: fill-opacity .15s ease; }.crime-map-zone.highlighted { fill-opacity: .38; stroke-width: 2.5; }.crime-map-zone.preview { fill-opacity: .14; stroke-width: 2; stroke-dasharray: 6 4; }.crime-map-zone.unfinished { fill: none; }.crime-map-zone-point { fill: #fff; stroke: var(--group-color); stroke-width: 2; vector-effect: non-scaling-stroke; pointer-events: none; }
.crime-map-markers { position: absolute; inset: 0; }
.crime-map-hq { position: absolute; display: flex; align-items: center; gap: 6px; padding: 0; border: 0; background: transparent; transform: translate(-9px, -50%) scale(var(--crime-map-marker-scale, 1)); transform-origin: 9px 50%; cursor: pointer; }
.crime-map-hq span { flex: none; width: 18px; height: 18px; border: 3px solid #fff; border-radius: 50%; background: var(--group-color); box-shadow: 0 0 0 2px rgba(0,0,0,.35),0 0 14px var(--group-color); }
.crime-map-hq b { padding: 3px 7px; border-radius: 6px; color: #fff; background: rgba(8,17,26,.82); font-size: 11px; white-space: nowrap; opacity: 0; transition: opacity .15s ease; pointer-events: none; }.crime-map-hq:hover b,.crime-map-hq.highlighted b { opacity: 1; }.crime-map-hq.highlighted span { width: 22px; height: 22px; }
.crime-map-controls { position: absolute; z-index: 2; top: 10px; right: 10px; display: grid; gap: 4px; }.crime-map-controls button { width: 32px; height: 32px; border: 1px solid rgba(136,177,211,.25); border-radius: 8px; color: #e3edf4; background: rgba(8,17,26,.82); font: 700 16px/1 Montserrat; cursor: pointer; }.crime-map-controls button:hover { background: rgba(25,90,142,.85); }
.crime-map-readout { position: absolute; z-index: 2; bottom: 10px; left: 10px; padding: 5px 9px; border-radius: 7px; color: #c3d0dc; background: rgba(8,17,26,.82); font: 600 11px ui-monospace,SFMono-Regular,Consolas,monospace; pointer-events: none; }.crime-map-readout[hidden] { display: none; }

/* ---------- Groupes criminels : liste + carte */
.group-color-dot { display: inline-block; flex: none; width: 12px; height: 12px; border-radius: 50%; background: var(--group-color, #94a3b8); box-shadow: 0 0 0 3px color-mix(in srgb,var(--group-color, #94a3b8) 25%,transparent); }
.groups-workspace { display: grid; grid-template-columns: minmax(260px,.62fr) minmax(0,1.4fr); gap: 14px; margin-top: 28px; height: calc(100vh - 290px); min-height: 520px; }
.groups-list-panel { display: flex; flex-direction: column; min-width: 0; border: 1px solid var(--mdt-line); border-radius: 13px; background: rgba(11,25,38,.72); overflow: hidden; }.group-list { flex: 1; overflow-y: auto; padding: 0 8px 8px; }
.group-list-item { display: flex; align-items: center; gap: 12px; width: 100%; padding: 12px; border: 1px solid transparent; border-radius: 10px; color: #dbe7ef; background: transparent; text-align: left; cursor: pointer; }.group-list-item:hover { border-color: color-mix(in srgb,var(--group-color) 45%,transparent); background: color-mix(in srgb,var(--group-color) 9%,transparent); }
.group-list-item > span { flex: 1; min-width: 0; }.group-list-item strong,.group-list-item small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.group-list-item strong { font-size: 14px; }.group-list-item small { margin-top: 4px; color: #6f879c; font-size: 11px; }
.group-list-item em { display: flex; gap: 4px; font-style: normal; }.group-list-item em b { padding: 3px 6px; border-radius: 5px; color: #c3d0dc; background: rgba(255,255,255,.06); font-size: 9px; letter-spacing: .04em; text-transform: uppercase; }
.groups-map-panel { min-width: 0; padding: 0; border: 1px solid var(--mdt-line); border-radius: 13px; overflow: hidden; }#groups-map { width: 100%; height: 100%; border-radius: 0; }

/* ---------- Fiche d'un groupe */
.group-title { display: flex; align-items: center; gap: 14px; }.group-title .group-color-dot { width: 18px; height: 18px; }
.group-heading-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.group-detail-layout { display: grid; grid-template-columns: minmax(0,1.15fr) minmax(320px,1fr); gap: 16px; margin-top: 28px; align-items: start; }
.group-map-panel { position: sticky; top: 84px; border: 1px solid color-mix(in srgb,var(--group-color) 40%,var(--mdt-line)); border-radius: 13px; background: rgba(11,25,38,.72); overflow: hidden; }
#group-detail-map { height: min(560px,calc(100vh - 360px)); min-height: 360px; border-radius: 0; }
.group-map-tools { display: grid; gap: 10px; padding: 14px; border-bottom: 1px solid var(--mdt-line); }
.group-map-tool { display: grid; grid-template-columns: 130px minmax(0,1fr) auto; align-items: center; gap: 8px 12px; }.group-map-tool > span { color: #7b8fa2; font-size: 10px; font-weight: 650; letter-spacing: .05em; text-transform: uppercase; }.group-map-tool > strong { color: #dbe7ef; font: 600 12px ui-monospace,SFMono-Regular,Consolas,monospace; }.group-map-tool > div { display: flex; gap: 6px; }.group-map-tool .secondary-button { padding: 7px 10px; font-size: 11px; }.group-map-tool .secondary-button.active { border-color: var(--group-color); color: #fff; background: color-mix(in srgb,var(--group-color) 30%,transparent); }
.group-map-tool > .group-zone-list { grid-column: 1 / -1; display: grid; gap: 6px; }.group-zone-list > span { display: grid; grid-template-columns: minmax(90px,1fr) auto auto auto; align-items: center; gap: 9px; padding: 7px 9px; border: 1px solid rgba(136,177,211,.12); border-radius: 8px; background: rgba(255,255,255,.025); }.group-zone-list b { color: #dbe7ef; font-size: 11px; }.group-zone-list small { color: #73899d; font-size: 10px; }.group-zone-list button { padding: 4px 7px; border: 0; border-radius: 5px; color: #9fcfff; background: rgba(60,168,255,.09); font: 650 10px Montserrat; cursor: pointer; }.group-zone-list button:last-child { color: #ff9ba4; background: rgba(229,64,75,.08); }
.group-radius { grid-column: 2 / -1; display: flex; align-items: center; gap: 10px; color: #7b8fa2; font-size: 11px; }.group-radius[hidden] { display: none; }.group-radius input { flex: 1; accent-color: var(--group-color); }.group-radius output { min-width: 62px; color: #dbe7ef; font: 600 12px ui-monospace,SFMono-Regular,Consolas,monospace; text-align: right; }
.group-pick-hint { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 0; padding: 9px 11px; border-radius: 8px; color: #fff; background: color-mix(in srgb,var(--group-color) 28%,transparent); font-size: 12px; }.group-pick-hint[hidden] { display: none; }.group-pick-hint > div { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 5px; }.group-pick-hint button { padding: 5px 8px; border: 0; border-radius: 6px; color: #fff; background: rgba(255,255,255,.08); font: 700 11px Montserrat; cursor: pointer; }.group-pick-hint button:hover { background: rgba(255,255,255,.15); }.group-pick-hint button:disabled { opacity: .4; cursor: not-allowed; }
#group-map-error:empty { display: none; }
.group-detail-main { display: grid; gap: 14px; }.group-detail-main > section { border: 1px solid var(--mdt-line); border-radius: 13px; background: rgba(11,25,38,.72); }.group-description { margin: 0 !important; }
.group-member-list { display: grid; gap: 7px; margin: 0; padding: 0; list-style: none; }.group-member-list li { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border: 1px solid rgba(136,177,211,.1); border-radius: 9px; background: rgba(255,255,255,.02); }
.group-member-name { flex: 1; min-width: 0; display: flex; align-items: center; gap: 10px; color: inherit; text-decoration: none; }.group-member-name .citizen-list-avatar { flex: none; overflow: hidden; }.group-member-name .citizen-list-avatar img { width: 100%; height: 100%; object-fit: cover; }.group-member-name strong,.group-member-name small { display: block; }.group-member-name strong { font-size: 13px; }.group-member-name small { margin-top: 3px; color: #6f879c; font-size: 11px; }.group-member-name:hover strong { color: #9fd0ff; }
.group-role { flex: none; padding: 5px 10px; border: 1px solid color-mix(in srgb,var(--group-color) 55%,transparent); border-radius: 999px; color: #fff; background: color-mix(in srgb,var(--group-color) 22%,transparent); font: 650 11px Montserrat; cursor: pointer; }
.vehicle-report-list li .citizen-address-remove { margin-left: auto; }
.group-note-form { display: grid; gap: 8px; margin-bottom: 12px; }.group-note-form textarea { width: 100%; padding: 11px 12px; resize: vertical; border: 1px solid rgba(130,172,205,.16); border-radius: 8px; outline: 0; color: #fff; background: rgba(255,255,255,.03); font: 500 12px/1.5 Montserrat; }.group-note-form .mdt-primary { justify-self: end; height: auto; padding: 9px 14px; font-size: 11px; }
.group-note-list { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }.group-note-list li { padding: 11px 12px; border-left: 3px solid var(--group-color); border-radius: 0 9px 9px 0; background: rgba(255,255,255,.025); }.group-note-list p { margin: 0; color: #dbe7ef; font-size: 13px; line-height: 1.5; white-space: pre-wrap; }.group-note-list span { display: block; margin-top: 6px; color: #6f879c; font-size: 11px; }

/* ---------- Choix de couleur */
.color-field > span { display: block; color: #8195a7; font-size: 10px; font-weight: 650; }.color-swatches { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 9px; }
.color-swatch { position: relative; width: 32px; height: 32px; padding: 0; border: 2px solid transparent; border-radius: 50%; background: var(--swatch); box-shadow: inset 0 0 0 1px rgba(255,255,255,.15); cursor: pointer; transition: transform .12s ease; }.color-swatch:hover { transform: scale(1.08); }.color-swatch.selected { border-color: #fff; box-shadow: 0 0 0 3px color-mix(in srgb,var(--swatch) 55%,transparent); }
.color-custom { display: grid; place-items: center; overflow: hidden; background: conic-gradient(#e5404b,#f2d13b,#36cb83,#3ca8ff,#8b5cf6,#ec4899,#e5404b); }.color-custom.selected { background: var(--swatch); }.color-custom input { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }.color-custom span { color: #fff; font-size: 16px; font-weight: 700; text-shadow: 0 1px 3px rgba(0,0,0,.6); pointer-events: none; }

/* ---------- Fiche citoyen : groupes */
.citizen-group-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }.citizen-group-chips a { display: inline-flex; align-items: center; gap: 8px; padding: 7px 11px; border: 1px solid color-mix(in srgb,var(--group-color) 50%,transparent); border-radius: 9px; color: #dbe7ef; background: color-mix(in srgb,var(--group-color) 12%,transparent); text-decoration: none; font-size: 12px; }.citizen-group-chips a span { color: #8ea2b6; }

@media (max-width: 1100px) { .group-detail-layout { grid-template-columns: 1fr; }.group-map-panel { position: static; } }
@media (max-width: 820px) { .groups-workspace { grid-template-columns: 1fr; height: auto; }.groups-list-panel { max-height: 320px; }.groups-map-panel { height: 480px; }.group-map-tool { grid-template-columns: 1fr; } }
.crime-map .crime-map-zones { width: 100% !important; height: 100% !important; fill: none; stroke: none; }

/* ---------- Notifications de la barre d'outils */
.mdt-notification > span[hidden] { display: none; }
.mdt-notification-list { position: absolute; z-index: 50; top: calc(100% - 6px); width: 330px; max-height: min(460px,70vh); overflow-y: auto; padding: 8px; border: 1px solid rgba(121,171,207,.22); border-radius: 12px; background: #101f2b; box-shadow: 0 22px 55px rgba(0,0,0,.55); }
.mdt-notification-list[hidden] { display: none; }
.mdt-notification-list button { display: grid; grid-template-columns: 18px 1fr auto; align-items: start; gap: 10px; width: 100%; padding: 9px 10px; border: 0; border-radius: 8px; color: #e3edf4; background: transparent; text-align: left; cursor: pointer; font: inherit; }
.mdt-notification-list button:hover { background: rgba(46,133,196,.1); }
.mdt-notification-list button > svg { width: 17px; height: 17px; margin-top: 1px; color: #8ea2b6; }
.mdt-notification-list button.unread > svg { color: #68b5e9; }
.mdt-notification-list strong,.mdt-notification-list span { display: block; }
.mdt-notification-list strong { font-size: 12px; }
.mdt-notification-list span { margin-top: 3px; color: #6f879c; font-size: 11px; }
.mdt-notification-list .nav-notification-dot { margin-top: 4px; }

/* ---------- Registre des empreintes */
.fingerprint-card-image { background: #e9e6df; }
.fingerprint-card-image img { width: auto; height: 100%; max-height: 150px; object-fit: contain; mix-blend-mode: multiply; }
.vehicle-card .fingerprint-card-image + div > em,.vehicle-card .fingerprint-card-image + div > a { display: block; font-size: 12px; }
.vehicle-card .fingerprint-card-image + div > a { color: #68b5e9; text-decoration: none; }
.vehicle-flag.fingerprint-running { color: #fff !important; background: rgba(25,120,189,.92); box-shadow: 0 4px 14px rgba(25,120,189,.35); }
.vehicle-flag.fingerprint-match { color: #05210f !important; background: rgba(69,204,137,.94); box-shadow: 0 4px 14px rgba(69,204,137,.3); }
.vehicle-flag.fingerprint-no-match { color: #e6e9ee !important; background: rgba(30,32,38,.92); border: 1px solid rgba(255,255,255,.25); }
.fingerprint-lab-status { display: flex; align-items: center; gap: 14px; margin: 14px 14px 0; padding: 13px 16px; border: 1px solid rgba(60,168,255,.3); border-radius: 11px; background: linear-gradient(145deg,rgba(25,120,189,.14),rgba(11,25,38,.7)); }
.fingerprint-lab-status[hidden] { display: none; }
.fingerprint-lab-status strong,.fingerprint-lab-status span { display: block; }
.fingerprint-lab-status strong { font-size: 13px; }
.fingerprint-lab-status span { margin-top: 4px; color: #8ea2b6; font-size: 11px; }
.fingerprint-lab-status a,.fingerprint-busy-note a,.fp-result a.secondary-button { color: #68b5e9; text-decoration: none; }
.fingerprint-lab-pulse { flex: none; width: 10px; height: 10px; border-radius: 50%; background: #3ca8ff; animation: fingerprint-lab-pulse 1.6s ease-out infinite; }
@keyframes fingerprint-lab-pulse { 0% { box-shadow: 0 0 0 0 rgba(60,168,255,.6); } 70%,100% { box-shadow: 0 0 0 9px rgba(60,168,255,0); } }

.fingerprint-detail-image { display: grid; place-items: center; padding: 14px; border-radius: 10px; background: #e9e6df; }
.fingerprint-detail-image img { display: block; width: 100%; max-width: 240px; height: auto; mix-blend-mode: multiply; }
.vehicle-detail-media .citizen-info-grid strong a { color: #68b5e9; }
.fingerprint-status small { display: block; margin-top: 6px; color: #8ea2b6; font-size: 12px; }
.fingerprint-status small a { color: #68b5e9; text-decoration: none; }
.fingerprint-status.unknown { border-color: rgba(136,177,211,.22) !important; }
.fingerprint-status.running { border-color: rgba(60,168,255,.4) !important; background: linear-gradient(145deg,rgba(25,120,189,.12),rgba(11,25,38,.8)) !important; }
.fingerprint-status.running header strong { color: #8fcbf5; }
.fingerprint-status.no-match header strong { color: #c2ccd6; }
.fingerprint-status.match { border-color: rgba(69,204,137,.4) !important; background: linear-gradient(145deg,rgba(69,204,137,.1),rgba(11,25,38,.8)) !important; }
.fingerprint-status.match header strong { color: #8fe3b8; }
.fingerprint-status .mdt-primary:disabled { opacity: .45; cursor: not-allowed; }
.fingerprint-busy-note { margin: 12px 0 0; color: #8ea2b6; font-size: 12px; }
.fingerprint-progress { position: relative; height: 4px; margin-top: 16px; overflow: hidden; border-radius: 4px; background: rgba(60,168,255,.15); }
.fingerprint-progress i { position: absolute; top: 0; bottom: 0; width: 35%; border-radius: 4px; background: #3ca8ff; animation: fingerprint-progress 2.4s ease-in-out infinite; }
@keyframes fingerprint-progress { 0% { left: -35%; } 100% { left: 100%; } }
.report-kind.fingerprint-reference { color: #9fd0ff; background: rgba(25,90,142,.35); }
.report-kind.fingerprint-unknown,.report-kind.fingerprint-no_match { color: #c2ccd6; background: rgba(255,255,255,.07); }
.report-kind.fingerprint-running { color: #9fd0ff; background: rgba(25,120,189,.3); }
.report-kind.fingerprint-match { color: #8fe3b8; background: rgba(69,204,137,.18); }
.vehicle-report-list strong a { color: #68b5e9; text-decoration: none; }

/* ---------- Analyse comparative */
.fp-compare { display: grid; grid-template-columns: 1fr 170px 1fr; align-items: center; gap: 12px; padding: 22px 12px; border-radius: 11px; background: #050d15; }
.fp-print { justify-self: center; width: 100%; max-width: 240px; }
.fp-frame { position: relative; aspect-ratio: 240 / 300; overflow: hidden; border-radius: 8px; background: #fff; }
.fp-frame img { display: block; width: 100%; height: 100%; }
.police-mdt .fp-frame svg.fp-points { position: absolute; inset: 0; width: 100%; height: 100%; fill: none; stroke: #45cc89; stroke-width: 2; pointer-events: none; }
.fp-frame.fp-empty { display: grid; place-content: center; justify-items: center; gap: 10px; border: 1px dashed rgba(136,177,211,.25); color: #5e7489; background: rgba(255,255,255,.02); font-size: 11px; text-align: center; }
.police-mdt .fp-frame.fp-empty > svg { width: 44px; height: 44px; }
.fp-print p { margin: 9px 0 0; color: #74889c; font-size: 10px; letter-spacing: .08em; text-align: center; text-transform: uppercase; }
.fp-scan { position: absolute; left: 0; right: 0; top: 0; height: 2px; opacity: 0; background: #4da6e7; box-shadow: 0 0 14px 3px rgba(77,166,231,.7); }
.fp-center { display: grid; justify-items: center; gap: 7px; text-align: center; }
.fp-verdict { padding: 6px 12px; border: 2px solid #45cc89; border-radius: 4px; color: #45cc89; font: 800 13px Consolas,monospace; letter-spacing: .18em; text-transform: uppercase; opacity: 0; transform: scale(1.4); transition: opacity .3s ease, transform .35s cubic-bezier(.2,1.6,.4,1); }
.fp-verdict.show { opacity: 1; transform: scale(1); }
.fp-compare.no-match .fp-verdict { border-color: #ed525e; color: #ed525e; }
.fp-score { color: #4da6e7; font: 700 30px/1 Consolas,monospace; }
.fp-count { min-height: 15px; color: #74889c; font: 12px Consolas,monospace; }
.fp-status { min-height: 13px; color: #74889c; font: 600 10px Consolas,monospace; letter-spacing: .14em; }
.fp-compare.done .fp-score,.fp-compare.done .fp-status { color: #45cc89; }
.fp-compare.no-match.done .fp-score,.fp-compare.no-match.done .fp-status { color: #ed525e; }
.fp-result { display: none; align-items: center; gap: 12px; margin-top: 14px; padding: 14px 16px; border: 1px solid rgba(69,204,137,.4); border-radius: 10px; background: rgba(69,204,137,.08); }
.fp-result.show { display: flex; animation: fp-result-in .4s ease; }
.fp-result.no-match { border-color: rgba(136,177,211,.2); background: rgba(255,255,255,.03); }
.fp-result > div { flex: 1; min-width: 0; }
.fp-result small { color: #74889c; font-size: 11px; }
.fp-result strong { display: block; margin-top: 3px; font-size: 14px; }
.fp-result .mdt-primary:disabled { opacity: .5; cursor: not-allowed; }
@keyframes fp-result-in { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@media (max-width: 820px) {
  .fp-compare { grid-template-columns: 1fr 1fr; }
  .fp-center { grid-column: 1 / -1; grid-row: 1; }
  .fp-result { flex-wrap: wrap; }
}
@media (prefers-reduced-motion: reduce) {
  .fp-verdict,.fingerprint-progress i,.fingerprint-lab-pulse { transition: none; animation: none; }
}

/* ---------- Fiche citoyen */
.citizen-fingerprint-section > em { display: block; margin-top: 10px; color: #6d8296; font-size: 12px; }
.citizen-section-title h3 small { margin-left: 6px; color: #6d8296; font-size: 11px; font-weight: 500; }
.citizen-fingerprints { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.citizen-fingerprint { display: flex; align-items: center; gap: 10px; padding: 7px 12px 7px 7px; border: 1px solid var(--mdt-line); border-radius: 9px; color: inherit; background: rgba(255,255,255,.025); text-decoration: none; }
.citizen-fingerprint:hover { border-color: rgba(77,166,231,.35); background: rgba(46,133,196,.08); }
.citizen-fingerprint img { width: 34px; height: 42px; border-radius: 4px; background: #fff; object-fit: cover; }
.police-mdt .citizen-fingerprint > svg { width: 34px; height: 34px; padding: 6px; border-radius: 6px; color: #8fe3b8; background: rgba(69,204,137,.12); }
.citizen-fingerprint strong,.citizen-fingerprint small { display: block; }
.citizen-fingerprint strong { font-size: 12px; }
.citizen-fingerprint small { margin-top: 3px; color: #6d8296; font-size: 10px; }

/* ---------- Effectifs */
.personnel-list { display: grid; gap: 8px; padding: 14px; }
.personnel-row { display: grid; grid-template-columns: 58px 38px 1fr auto; align-items: center; gap: 12px; padding: 10px 14px; border: 1px solid rgba(136,177,211,.1); border-radius: 10px; background: rgba(255,255,255,.02); }
.personnel-row .dispatch-agent-badge { justify-self: start; }
.personnel-row strong,.personnel-row small { display: block; }
.personnel-row strong { font-size: 13px; }
.personnel-row strong a { color: inherit; text-decoration: none; }
.personnel-row strong a:hover { color: #68b5e9; }
.personnel-row small { margin-top: 4px; color: #6d8296; font-size: 11px; }
.personnel-row em { color: #6d8296; font-size: 11px; font-style: normal; }
.personnel-row em.on { color: #70dda8; }
.vehicle-owner-suggestions button:disabled { opacity: .45; cursor: not-allowed; }
.vehicle-owner-suggestions button:disabled:hover { background: transparent; }
.citizen-form-grid input.field-invalid,.citizen-form-grid input.field-invalid:focus { border-color: rgba(229,92,101,.8); background: rgba(229,92,101,.08); }
.personnel-table { display: grid; gap: 6px; min-width: 0; overflow-x: auto; }
.personnel-table .personnel-row { grid-template-columns: 80px minmax(170px,1.6fr) minmax(120px,1fr) minmax(120px,1fr) minmax(120px,1fr) 100px; min-width: 760px; }
.personnel-head { padding-top: 4px !important; padding-bottom: 4px !important; border-color: transparent !important; background: transparent !important; }
.personnel-head button { display: inline-flex; align-items: center; gap: 6px; justify-self: start; padding: 4px 0; border: 0; color: #6d8296; background: none; font: 650 10px Montserrat,sans-serif; letter-spacing: .06em; text-transform: uppercase; cursor: pointer; }
.personnel-head button:hover,.personnel-head button.active { color: #cfe2f0; }
.personnel-head button i { width: 8px; color: #68b5e9; font-size: 8px; font-style: normal; }
.personnel-name { display: flex; align-items: center; gap: 10px; min-width: 0; }
.personnel-name strong { overflow: hidden; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.personnel-grade { color: #cfdbe4; font-size: 12px; }
.personnel-date span,.personnel-date small { display: block; }
.personnel-date span { color: #cfdbe4; font-size: 12px; }
.personnel-date small { margin-top: 3px; color: #6d8296; font-size: 10px; }

/* ---------- Fiche agent */
.personnel-table .personnel-row[data-agent-id] { cursor: pointer; transition: border-color .18s, background .18s; }
.personnel-table .personnel-row[data-agent-id]:hover,.personnel-table .personnel-row[data-agent-id]:focus-visible { border-color: rgba(77,166,231,.35); background: rgba(46,133,196,.08); outline: 0; }
.agent-portrait { position: relative; display: grid; place-items: center; height: 220px; overflow: hidden; border-radius: 10px; background: radial-gradient(circle at 50% 100%,rgba(38,109,158,.25),transparent 65%),#09151f; }
.agent-portrait img { width: 100%; height: 100%; object-fit: cover; }
.agent-portrait > span { color: #b9dff8; font-size: 42px; font-weight: 800; }
.agent-portrait .dispatch-agent-badge { position: absolute; top: 10px; right: 10px; }
.citizen-info-grid small { display: block; margin-top: 4px; color: #6d8296; font-size: 10px; }
.agent-identity-link a { color: #68b5e9; text-decoration: none; }
.agent-discord { font-family: Consolas,monospace; letter-spacing: .03em; }
.vehicle-status.agent-off-duty header strong { color: #a7b6c3; }

/* ---------- Fiche agent : tuteur, heures, formations */
.agent-tutor { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
.agent-tutor > .vehicle-empty { margin: 0; }
.agent-tutor-select { margin-left: auto; }
.agent-tutor-select select { max-width: 280px; }
.agent-tutees { display: grid; grid-template-columns: repeat(auto-fill,minmax(220px,1fr)); gap: 8px; }
.agent-link-card a { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border: 1px solid var(--mdt-line); border-radius: 9px; color: inherit; background: rgba(255,255,255,.025); text-decoration: none; }
.agent-link-card a:hover { border-color: rgba(77,166,231,.35); background: rgba(46,133,196,.08); }
.agent-link-card strong,.agent-link-card small { display: block; }
.agent-link-card strong { font-size: 13px; }
.agent-link-card small { margin-top: 3px; color: #6d8296; font-size: 11px; }
.agent-range { display: inline-flex; gap: 2px; margin-left: auto; padding: 3px; border: 1px solid var(--mdt-line); border-radius: 8px; }
.agent-range button { padding: 5px 10px; border: 0; border-radius: 6px; color: #8ea2b6; background: transparent; font: 600 11px Montserrat,sans-serif; cursor: pointer; }
.agent-range button[aria-pressed="true"] { color: #fff; background: rgba(49,151,232,.28); }
.agent-hours-total { margin: 0 0 6px; color: #8ea2b6; font-size: 12px; }
.agent-hours-total strong { color: #e3edf4; font-size: 16px; }
.police-mdt .agent-hours-chart svg { display: block; width: 100%; height: 220px; fill: none; stroke: none; }
.agent-hours-chart .grid { stroke: rgba(136,177,211,.1); stroke-width: 1; }
.agent-hours-chart .baseline { stroke: rgba(136,177,211,.3); stroke-width: 1; }
.agent-hours-chart .axis { fill: #6d8296; font: 500 10px Montserrat,sans-serif; }
.agent-hours-chart .bar { fill: #3197e8; }
.agent-hours-chart .hit { fill: transparent; }
.agent-hours-chart g:hover .bar { fill: #58adf0; }
.agent-hours-tooltip { position: fixed; z-index: 100; padding: 7px 10px; border: 1px solid rgba(121,171,207,.22); border-radius: 8px; color: #e3edf4; background: #101f2b; box-shadow: 0 12px 30px rgba(0,0,0,.5); font: 500 11px Montserrat,sans-serif; pointer-events: none; }
.agent-hours-tooltip[hidden] { display: none; }
.agent-hours-tooltip span { display: block; color: #8ea2b6; text-transform: capitalize; }
.agent-hours-tooltip strong { display: block; margin-top: 3px; font-size: 13px; }
.agent-trainings li > div { flex: 1; min-width: 0; }
.training-status { padding: 6px 10px; border: 1px solid; border-radius: 7px; font: 650 11px Montserrat,sans-serif; cursor: pointer; }
.training-status.requested { border-color: rgba(136,177,211,.3); color: #b7c7d4; background: rgba(255,255,255,.04); }
.training-status.in_progress { border-color: rgba(240,160,40,.55); color: #f6b24a; background: rgba(240,160,40,.12); }
.training-status.acquired { border-color: rgba(69,204,137,.5); color: #70dda8; background: rgba(69,204,137,.12); }
.training-status option { color: #e3edf4; background: #101f2b; }
.agent-training-form { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.agent-training-form select { flex: 1; min-width: 180px; padding: 9px 10px; border: 1px solid rgba(130,172,205,.16); border-radius: 8px; color: #e3edf4; background: #0f1d29; font: 500 12px Montserrat,sans-serif; }
.agent-training-form select option:disabled { color: #5d7183; }

/* ---------- Catalogue des formations */
.training-list { display: grid; gap: 10px; padding: 14px; }
.training-card { padding: 14px 16px; border: 1px solid rgba(136,177,211,.1); border-radius: 10px; background: rgba(255,255,255,.02); }
.training-card header { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
.training-card h3 { margin: 0; font-size: 15px; }
.training-card header p { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 0; }
.training-card header p span { padding: 3px 8px; border-radius: 999px; color: #a7bfd1; background: rgba(255,255,255,.05); font-size: 11px; }
.training-actions { display: flex; gap: 8px; flex: none; }
.secondary-button.danger { color: #f0a0a6; border-color: rgba(229,92,101,.35); }
.secondary-button.danger:hover { background: rgba(229,92,101,.1); }
.training-details { margin: 12px 0 0; color: #adbdc9; font-size: 12px; line-height: 1.6; white-space: pre-wrap; }
.agent-note-list { --group-color: #3197e8; }
.agent-hours-chart .hatch { fill: rgba(142,162,182,.07); }
.agent-hours-chart .hire-line { stroke: #8ea2b6; stroke-width: 1.5; }
.agent-hours-chart .hire-label { fill: #a7b6c3; font: 600 10px Montserrat,sans-serif; }

/* ---------- Fiche agent : grade, divisions, notes modifiables */
.agent-inline-select,.agent-division-add { width: 100%; margin-top: 7px; padding: 9px 10px; border: 1px solid rgba(130,172,205,.16); border-radius: 8px; color: #e3edf4; background: #0f1d29; font: 600 12px Montserrat,sans-serif; cursor: pointer; }
.agent-division-add { color: #8ea2b6; font-weight: 500; }
.agent-divisions { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 7px; }
.agent-divisions em { color: #6d8296; font-size: 12px; }
.agent-division-chip { display: inline-flex; align-items: center; gap: 6px; padding: 5px 6px 5px 10px; border-radius: 999px; color: #cfe2f0; background: rgba(46,133,196,.16); font-size: 12px; font-weight: 600; }
.agent-division-chip button { width: 18px; height: 18px; padding: 0; border: 0; border-radius: 50%; color: #8ea2b6; background: rgba(255,255,255,.06); cursor: pointer; line-height: 1; }
.agent-division-chip button:hover { color: #fff; background: rgba(229,92,101,.5); }
.agent-assignment-error:empty { display: none; }
.agent-assignment-error { margin: 10px 2px 0; }
.agent-note-list li { position: relative; }
.agent-note-actions { display: flex; gap: 10px; margin-top: 8px; }
.agent-note-actions button { padding: 0; border: 0; color: #6f879c; background: none; font: 600 11px Montserrat,sans-serif; cursor: pointer; }
.agent-note-actions button:hover { color: #68b5e9; }
.agent-note-actions button[data-note-delete]:hover { color: #f0a0a6; }
.agent-note-edit { margin: 0; }
.agent-note-edit-actions { display: flex; justify-content: flex-end; gap: 8px; }
.training-requirements { margin: 0; padding: 0; border: 0; }
.training-requirements legend { margin-bottom: 8px; padding: 0; color: inherit; font: inherit; }
.training-requirements > div { display: flex; flex-wrap: wrap; gap: 6px; }
.training-requirement-option { display: inline-flex !important; align-items: center; gap: 7px; padding: 6px 10px; border: 1px solid rgba(130,172,205,.16); border-radius: 999px; font-size: 12px; cursor: pointer; }
.training-requirement-option input { width: auto !important; margin: 0 !important; }
.training-requirement-option:has(input:checked) { border-color: rgba(60,168,255,.55); background: rgba(46,133,196,.16); }
.training-card header p span.training-required { color: #f6b24a; background: rgba(240,160,40,.12); }
.citizen-info-grid .agent-division-chip { display: inline-flex; color: #cfe2f0; font-size: 12px; letter-spacing: 0; text-transform: none; }

/* ---------- Droits */
.police-mdt [data-permission][hidden] { display: none !important; }
.group-map-tools.read-only button { display: none; }
.agent-division-chip.read-only { padding-right: 10px; }
.permission-list { display: grid; gap: 18px; padding: 14px; }
.permission-group h3 { margin: 0 0 8px; color: #6d8296; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; }
.permission-row { display: grid; grid-template-columns: minmax(220px,1fr) 290px minmax(0,2fr) 80px; align-items: center; gap: 14px; padding: 12px 14px; border: 1px solid rgba(136,177,211,.1); border-radius: 10px; background: rgba(255,255,255,.02); }
.permission-row + .permission-row { margin-top: 8px; }
.permission-label strong,.permission-label small,.permission-label em { display: block; }
.permission-label strong { font-size: 13px; }
.permission-label small { margin-top: 4px; color: #6d8296; font-size: 11px; }
.permission-label em { margin-top: 4px; color: #f6b24a; font-size: 11px; font-style: normal; }
.permission-row .registry-filter select { width: 100%; }
.permission-divisions { display: flex; flex-wrap: wrap; gap: 6px; }
.permission-divisions .training-requirement-option { padding: 4px 9px; font-size: 11px; }
.permission-saved { color: #70dda8; font-size: 11px; font-weight: 600; text-align: right; }
@media (max-width: 1100px) { .permission-row { grid-template-columns: 1fr; } .permission-saved { text-align: left; } }
.mdt-nav-group[hidden] { display: none; }

/* ---------- Journal d'audit */
.audit-toolbar { flex-wrap: wrap; }
.audit-toolbar .citizen-filter { flex: 1 1 320px; }
.audit-list { padding: 0 14px 14px; }
.audit-table { display: grid; gap: 4px; overflow-x: auto; }
.audit-row { display: grid; grid-template-columns: 150px minmax(160px,1fr) minmax(220px,1.4fr) minmax(180px,1.2fr); align-items: center; gap: 14px; min-width: 760px; padding: 10px 14px; border: 1px solid rgba(136,177,211,.08); border-radius: 9px; background: rgba(255,255,255,.02); font-size: 12px; }
.audit-row[data-audit-id] { cursor: pointer; }
.audit-row[data-audit-id]:hover,.audit-row[aria-expanded="true"] { border-color: rgba(77,166,231,.3); background: rgba(46,133,196,.07); }
.audit-head { padding-top: 4px; padding-bottom: 4px; border-color: transparent; background: transparent; }
.audit-head button,.audit-head span { display: inline-flex; align-items: center; gap: 6px; justify-self: start; padding: 4px 0; border: 0; color: #6d8296; background: none; font: 650 10px Montserrat,sans-serif; letter-spacing: .06em; text-transform: uppercase; }
.audit-head button { cursor: pointer; }
.audit-head button:hover,.audit-head button.active { color: #cfe2f0; }
.audit-head button i { width: 8px; color: #68b5e9; font-size: 8px; font-style: normal; }
.audit-row time { color: #a7b6c3; }
.audit-actor { display: flex; align-items: center; gap: 8px; color: #e3edf4; font-weight: 600; }
.audit-type em { display: block; margin-bottom: 3px; color: #6d8296; font-size: 10px; font-style: normal; letter-spacing: .05em; text-transform: uppercase; }
.audit-type { color: #e3edf4; }
.audit-target a { color: #68b5e9; text-decoration: none; }
.audit-target { overflow: hidden; color: #a7b6c3; text-overflow: ellipsis; white-space: nowrap; }
.audit-details { min-width: 760px; margin: -2px 0 6px; padding: 12px 16px; border: 1px solid rgba(77,166,231,.2); border-top: 0; border-radius: 0 0 9px 9px; background: rgba(8,20,31,.8); }
.audit-details h4 { margin: 4px 0 8px; color: #6d8296; font-size: 10px; letter-spacing: .06em; text-transform: uppercase; }
.audit-details ul { display: grid; gap: 4px; margin: 0 0 10px; padding: 0; list-style: none; }
.audit-details li { display: grid; grid-template-columns: 180px 1fr; gap: 12px; font-size: 12px; }
.audit-details li b { color: #8ea2b6; font-weight: 600; }
.audit-details li span { color: #dbe7ef; word-break: break-word; }
.audit-details small { color: #5d7183; font-size: 10px; }
.audit-pagination { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; padding: 0 14px 14px; color: #8ea2b6; font-size: 12px; }
.audit-pagination div { display: flex; align-items: center; gap: 6px; }
.audit-pagination strong { padding: 0 8px; color: #e3edf4; }
.audit-pagination button:disabled { opacity: .4; cursor: default; }
.project-card .project-logo { display: block; width: min(260px, 70%); height: auto; margin-bottom: 22px; }
.app-weazel .app-icon img { width: 70%; height: 70%; }

/* ---------- Liste des affaires (même tableau que les effectifs) */
.case-search-filter { flex: 0 1 360px; margin: 0 0 0 auto !important; }
.personnel-table.case-table .personnel-row { grid-template-columns: 120px minmax(220px,2fr) minmax(150px,1fr) minmax(130px,1fr) 100px 120px; min-width: 820px; }
.case-number { color: #9fd0ff; font: 700 12px Consolas,monospace; letter-spacing: .02em; }
.case-row-name { min-width: 0; }
.case-row-name strong { overflow: hidden; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.case-row { cursor: pointer; transition: border-color .18s, background .18s; }
.case-row:hover,.case-row:focus-visible { border-color: rgba(77,166,231,.35); background: rgba(46,133,196,.08); outline: 0; }
.case-status,.case-table .case-priority { justify-self: start; padding: 4px 8px; border-radius: 6px; color: #9fd0ff; background: rgba(45,126,184,.16); font-size: 10px; font-style: normal; font-weight: 700; text-transform: uppercase; }
.case-status.draft,.case-status.archived,.case-status.dismissed { color: #b7c7d4; background: rgba(255,255,255,.06); }
.case-status.closed,.case-status.referred { color: #8fe3b8; background: rgba(69,204,137,.14); }
.case-status.pending { color: #f6b24a; background: rgba(240,160,40,.12); }
.case-table .case-priority.low { color: #b7c7d4; background: rgba(255,255,255,.06); }
.case-table .case-priority.high,.case-table .case-priority.critical { color: #ffb0a1; background: rgba(205,73,55,.16); }
@media (max-width: 720px) { .mdt-module-shell > header { flex-wrap: wrap; } .case-search-filter { flex-basis: 100%; } }
