*{box-sizing:border-box}html{color-scheme:dark}body{margin:0;background:#060b10;color:#eef3f6;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}:root{--bg:#060b10;--panel:#0d151d;--panel2:#111b24;--line:#1e2b36;--muted:#7e8e9c;--gold:#d9aa3b;--gold2:#f3c55d;--blue:#2f74b7;--red:#ef6a64;--green:#55c98a;--radius:16px}.fiction-footer{position:fixed;left:0;right:0;bottom:0;z-index:50;padding:10px 14px;text-align:center;font-size:11px;color:#81909c;background:rgba(4,8,12,.94);border-top:1px solid #16232c;backdrop-filter:blur(10px)}.eyebrow{margin:0;color:#9aabb8;font-size:10px;letter-spacing:.19em;font-weight:800;text-transform:uppercase}.seal{width:82px;height:82px;display:grid;place-items:center;border:2px solid var(--gold);border-radius:24px;color:#071019;background:linear-gradient(145deg,var(--gold2),#b27b19);font-weight:950;font-size:24px;box-shadow:0 16px 45px rgba(217,170,59,.15)}.seal.small{width:64px;height:64px;font-size:18px}.seal.tiny{width:46px;height:46px;border-radius:13px;font-size:13px}.login-page{min-height:100dvh;background:#04090d}.login-shell{min-height:calc(100dvh - 35px);display:grid;grid-template-columns:minmax(420px,600px) 1fr}.login-card{display:flex;flex-direction:column;justify-content:center;padding:clamp(34px,6vw,86px);background:#071019;border-right:1px solid #182630}.login-brand{display:flex;gap:18px;align-items:center;margin-bottom:68px}.login-brand>div:last-child{display:flex;flex-direction:column;gap:4px}.login-brand span,.login-brand small{font-size:9px;letter-spacing:.16em;color:#70818e;text-transform:uppercase}.login-brand strong{font-size:17px;letter-spacing:.03em}.login-title h1{font-size:clamp(48px,6vw,72px);line-height:.95;margin:10px 0 18px;letter-spacing:-.045em}.login-title>p:last-child{color:var(--muted);margin:0 0 28px}.login-form{display:grid;gap:18px;max-width:430px}.login-form label,.setup-card label,.settings-form label,.form-grid label{display:grid;gap:8px;color:#9aabb7;font-size:10px;font-weight:800;letter-spacing:.11em;text-transform:uppercase}.field{height:54px;display:flex;align-items:center;gap:12px;border:1px solid #253642;border-radius:12px;background:#050b10;padding:0 15px}.field span{color:#617482}.field input{flex:1;border:0;outline:0;background:transparent;color:#fff;min-width:0}.remember{display:flex!important;align-items:center;gap:11px!important;cursor:pointer;text-transform:none!important;letter-spacing:0!important}.remember>input{position:absolute;opacity:0}.switch{position:relative;width:43px;height:24px;border-radius:99px;background:#18232c;border:1px solid #34434e}.switch i{position:absolute;width:16px;height:16px;left:3px;top:3px;border-radius:50%;background:#81909b;transition:.18s}.remember input:checked+.switch{background:rgba(217,170,59,.2);border-color:#a77b27}.remember input:checked+.switch i{transform:translateX(19px);background:var(--gold2)}.remember>span:last-child{display:grid}.remember strong{font-size:12px;color:#e7edf0}.remember small{font-size:10px;color:#71828f}.btn{height:46px;border:1px solid #263642;border-radius:11px;padding:0 18px;display:inline-flex;align-items:center;justify-content:center;gap:10px;font-size:12px;font-weight:850}.btn.primary{background:linear-gradient(180deg,var(--gold2),var(--gold));border-color:#e8b94f;color:#111}.btn.ghost{background:#0b1319;color:#dce5ea}.btn.wide{width:100%}.login-visual{position:relative;overflow:hidden;background:radial-gradient(circle at 50% 40%,#17334b 0,#0a1823 34%,#03070a 75%)}.visual-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(80,135,176,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(80,135,176,.08) 1px,transparent 1px);background-size:44px 44px;mask-image:linear-gradient(to bottom,#000,transparent)}.visual-content{position:absolute;inset:0;display:grid;place-content:center;text-align:center}.shield-outline{width:220px;height:260px;display:grid;place-items:center;margin:auto;border:2px solid rgba(217,170,59,.5);border-radius:80px 80px 110px 110px;color:var(--gold);font-size:70px;box-shadow:0 0 80px rgba(217,170,59,.08)}.visual-content p{margin:24px 0 4px;color:#9eb0bc;text-transform:uppercase;letter-spacing:.22em;font-size:10px}.visual-content strong{font-size:22px}.notice{padding:13px 15px;border-radius:10px;margin:0 0 18px;font-size:12px}.notice.error{background:rgba(239,106,100,.1);border:1px solid rgba(239,106,100,.28);color:#ff9792}.notice.success{background:rgba(85,201,138,.1);border:1px solid rgba(85,201,138,.28);color:#86e4ae}.muted{color:var(--muted)}.install-page{min-height:100dvh;display:grid;place-items:center;padding:40px 20px 70px;background:radial-gradient(circle at 50% 0,#10283a,#060b10 55%)}.setup-card{width:min(520px,100%);padding:34px;border:1px solid var(--line);border-radius:20px;background:#0b1319;box-shadow:0 30px 100px rgba(0,0,0,.4)}.setup-card h1{font-size:40px;margin:14px 0}.setup-card form{display:grid;gap:14px}.setup-card input,.settings-form input,.form-grid input,.form-grid select,.form-grid textarea{width:100%;border:1px solid #263743;border-radius:10px;background:#071016;color:#fff;padding:12px 13px;outline:0}.setup-card input:focus,.settings-form input:focus,.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus{border-color:#8f6d29;box-shadow:0 0 0 3px rgba(217,170,59,.07)}.app-page{min-height:100dvh}.app-shell{min-height:100dvh;display:grid;grid-template-columns:248px minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100dvh;display:flex;flex-direction:column;background:#050a0e;border-right:1px solid #18252e;z-index:40}.side-brand{height:76px;display:flex;align-items:center;gap:12px;padding:0 16px;border-bottom:1px solid #17242d}.side-brand>div:nth-child(2){display:grid;gap:2px}.side-brand strong{font-size:15px}.side-brand small{font-size:9px;color:#687985;text-transform:uppercase;letter-spacing:.14em}.side-close,.side-open{display:none}.station-card{margin:16px;padding:14px;border:1px solid var(--line);border-radius:12px;background:#0b1218;display:grid;gap:4px}.station-card span{font-size:8px;color:#72818d;letter-spacing:.16em}.station-card strong{font-size:13px}.station-card small{font-size:9px;color:#73838f}.sidebar nav{padding:4px 8px;display:grid;gap:3px;overflow:auto}.sidebar nav button,.logout{height:44px;display:flex;align-items:center;gap:11px;padding:0 13px;border:0;border-radius:10px;background:transparent;color:#91a2ae;font-size:12px;font-weight:700;text-align:left}.sidebar nav button span{width:18px;text-align:center}.sidebar nav button.active,.sidebar nav button:hover{background:#101921;color:#fff}.sidebar nav button.active{box-shadow:inset 2px 0 var(--gold)}.logout{margin:auto 8px 44px;color:#d77a76}.main{min-width:0;display:flex;flex-direction:column}.topbar{height:76px;display:flex;align-items:center;gap:18px;padding:0 28px;border-bottom:1px solid #17242d;background:rgba(6,11,16,.92);position:sticky;top:0;z-index:30;backdrop-filter:blur(12px)}.topbar>div:nth-child(2){display:grid;gap:3px}.topbar>div:nth-child(2)>strong{font-size:16px}.user-chip{margin-left:auto;display:flex;align-items:center;gap:10px}.user-chip>div:last-child{display:grid;gap:2px}.user-chip strong{font-size:11px}.user-chip small{font-size:9px;color:#758691}.avatar{width:36px;height:36px;display:grid;place-items:center;border-radius:11px;background:#18232c;border:1px solid #31404a;color:#fff;font-size:11px;font-weight:900}.content{padding:34px clamp(22px,3vw,44px) 70px}.view{display:none}.view.active{display:block;animation:fade .18s ease}@keyframes fade{from{opacity:.35;transform:translateY(4px)}to{opacity:1;transform:none}}.view-head{display:flex;justify-content:space-between;align-items:flex-end;gap:22px;margin-bottom:24px}.view-head h1{font-size:clamp(38px,4vw,58px);line-height:.96;letter-spacing:-.045em;margin:8px 0 10px}.view-head>div>p:last-child{margin:0;color:var(--muted);font-size:12px}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:16px}.metric{min-height:130px;padding:18px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(145deg,#0e171e,#0a1117);display:grid;align-content:space-between}.metric span{font-size:9px;color:#7d8f9b;text-transform:uppercase;letter-spacing:.13em}.metric strong{font-size:34px;letter-spacing:-.04em}.metric small{color:#70818d;font-size:9px}.dash-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(260px,.7fr);gap:16px}.panel{border:1px solid var(--line);border-radius:16px;background:#0b1319}.panel-head{padding:18px;border-bottom:1px solid #17252e}.panel-head h2{font-size:18px;margin:5px 0 0}.activity-list{display:grid}.activity-item{display:grid;grid-template-columns:120px 1fr auto;gap:12px;align-items:center;padding:13px 18px;border-bottom:1px solid #14212a;font-size:11px}.activity-item:last-child{border-bottom:0}.activity-item time{color:#6d7d89;font-size:9px}.activity-item small{color:#72838f}.status-panel{padding-bottom:10px}.system-row{display:flex;align-items:center;justify-content:space-between;padding:13px 18px;border-bottom:1px solid #14212a;font-size:11px}.status{font-size:9px;letter-spacing:.08em}.status.good{color:var(--green)}.toolbar{display:flex;gap:12px;margin:0 0 14px}.search{height:44px;display:flex;align-items:center;gap:9px;width:min(420px,100%);padding:0 13px;border:1px solid var(--line);border-radius:11px;background:#091117;color:#61727e}.search input{flex:1;min-width:0;border:0;outline:0;background:transparent;color:#fff}.table-panel{overflow:hidden}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:780px}th,td{padding:13px 15px;border-bottom:1px solid #16242d;text-align:left;font-size:11px}th{position:sticky;top:0;background:#0e171e;color:#71828e;font-size:9px;text-transform:uppercase;letter-spacing:.1em;z-index:1}td{color:#dbe4e9}.row-actions{display:flex;gap:7px}.mini{height:31px;padding:0 10px;border-radius:8px;border:1px solid #2b3b46;background:#111b22;color:#dbe4e9;font-size:9px;font-weight:800}.mini.danger{color:#ff928d;border-color:#53302f}.badge{display:inline-flex;align-items:center;min-height:25px;padding:0 9px;border-radius:99px;border:1px solid #2b3b46;background:#101920;color:#9eb0bb;font-size:9px}.badge.active{border-color:#24553c;color:#65d698;background:#0d2119}.role-list{display:grid;gap:10px}.role-card{border:1px solid var(--line);border-radius:14px;background:#0b1319;padding:16px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px}.role-card h3{font-size:14px;margin:0 0 4px}.role-card p{font-size:9px;color:#738490;margin:0}.role-card .role-actions{display:flex;gap:8px}.settings-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;padding:20px}.modal{width:min(720px,calc(100% - 24px));max-height:calc(100dvh - 24px);padding:0;border:1px solid #263945;border-radius:18px;background:#0c141a;color:#fff;box-shadow:0 30px 120px rgba(0,0,0,.65)}.modal.wide{width:min(980px,calc(100% - 24px))}.modal::backdrop{background:rgba(0,0,0,.72);backdrop-filter:blur(4px)}.modal form{max-height:calc(100dvh - 24px);overflow:auto;padding:22px}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:18px}.modal-head h2{font-size:28px;margin:4px 0}.modal-close{width:40px;height:40px;border:1px solid #2a3a46;border-radius:10px;background:#121c23;color:#fff;font-size:20px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.form-grid.two{grid-template-columns:1fr 1fr}.form-grid label.full{grid-column:1/-1}.form-grid textarea{min-height:110px;resize:vertical}.check-line{display:flex!important;align-items:center;gap:10px!important;padding:12px;border:1px solid #253641;border-radius:11px;background:#081016;text-transform:none!important;letter-spacing:0!important}.check-line span{display:grid}.check-line strong{font-size:12px;color:#eef3f6}.check-line small{font-size:9px;color:#71818d}.permission-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:18px 0}.perm{display:flex;align-items:center;gap:10px;padding:11px;border:1px solid #20313b;border-radius:10px;background:#091117;font-size:10px;color:#c9d3d9}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.app-footer{position:relative;margin-top:auto}.toast{position:fixed;right:18px;bottom:52px;z-index:120;padding:12px 14px;border:1px solid #28513b;border-radius:11px;background:#0e2118;color:#7ce0a8;font-size:11px;box-shadow:0 16px 50px rgba(0,0,0,.45)}.toast.error{border-color:#603634;background:#251111;color:#ff9b96}.hidden{display:none!important}@media(max-width:1100px){.metrics{grid-template-columns:repeat(2,1fr)}.dash-grid{grid-template-columns:1fr}.login-shell{grid-template-columns:1fr}.login-visual{display:none}.login-card{border-right:0}.settings-form{grid-template-columns:1fr}}@media(max-width:820px){.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;left:-310px;width:min(86vw,290px);transition:left .2s}.sidebar.open{left:0;box-shadow:20px 0 80px #000}.side-close,.side-open{display:grid;place-items:center;width:40px;height:40px;border:1px solid #283844;border-radius:10px;background:#0d161d;color:#fff}.side-close{margin-left:auto}.topbar{padding:0 14px}.content{padding:24px 14px 70px}.view-head{align-items:flex-start;flex-direction:column}.view-head .btn{width:100%}.user-chip>div:last-child{display:none}.form-grid,.permission-grid{grid-template-columns:1fr}.metrics{grid-template-columns:1fr 1fr}.role-card{grid-template-columns:1fr}.fiction-footer{font-size:9px}}@media(max-width:520px){.login-card{padding:28px 18px 70px}.login-brand{margin-bottom:45px}.login-title h1{font-size:48px}.metrics{grid-template-columns:1fr}.content{padding-left:10px;padding-right:10px}.view-head h1{font-size:38px}.modal{width:calc(100% - 10px);max-height:calc(100dvh - 10px)}.modal form{padding:16px}.activity-item{grid-template-columns:1fr}.activity-item time{order:3}.settings-form{padding:14px}}
/* Leitstelle / Dispatch Center */
.dispatch-head{align-items:center}
.dispatch-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.desk-state{height:42px;display:inline-flex;align-items:center;gap:8px;padding:0 13px;border:1px solid #3a2a28;border-radius:11px;background:#160d0c;color:#dd817c;font-size:9px;letter-spacing:.08em}
.desk-state i,.live-pill i{width:8px;height:8px;border-radius:50%;background:#e65f59;box-shadow:0 0 0 4px rgba(230,95,89,.08)}
.desk-state.occupied{border-color:#254c39;background:#0c1b14;color:#65d698}
.desk-state.occupied i,.live-pill i{background:#55c98a;box-shadow:0 0 0 4px rgba(85,201,138,.1)}
.danger-desk{background:#281513!important;border-color:#59312e!important;color:#ff9c96!important}
.dispatch-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:16px}
.dispatch-layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(320px,.72fr);gap:16px}
.dispatch-side{display:grid;align-content:start;gap:16px}
.live-pill{display:inline-flex;align-items:center;gap:8px;font-size:9px;color:#68d99b;letter-spacing:.11em}
.dispatch-list{display:grid;max-height:70vh;overflow:auto}
.dispatch-card{display:grid;grid-template-columns:76px minmax(0,1fr);gap:14px;padding:16px 18px;border-bottom:1px solid #16242d;border-left:3px solid #b88a31}
.dispatch-card.priority-high{border-left-color:#e6605b}.dispatch-card.priority-low{border-left-color:#4e82ad}.dispatch-card.closed{opacity:.52}
.dispatch-code{display:grid;align-content:start;gap:5px}.dispatch-code span{font-size:9px;color:#7d8d98}.dispatch-code strong{font-size:18px;color:#eab849}
.dispatch-copy{min-width:0}.dispatch-card-head{display:flex;align-items:center;gap:10px;justify-content:space-between}.dispatch-card h3{margin:0;font-size:14px}.dispatch-card p{margin:6px 0 9px;color:#9aabb6;font-size:11px;line-height:1.55;overflow-wrap:anywhere}
.dispatch-meta{display:flex;flex-wrap:wrap;gap:8px 13px;color:#6f818d;font-size:9px}
.dispatch-controls{display:grid;grid-template-columns:minmax(120px,1fr) 135px auto;gap:8px;margin-top:12px}
.dispatch-controls input,.dispatch-controls select{height:34px;border:1px solid #253743;border-radius:8px;background:#071016;color:#fff;padding:0 9px;font-size:10px}
.dispatch-feed{max-height:34vh;overflow:auto}.feed-row{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:10px;align-items:start;padding:13px 15px;border-bottom:1px solid #16242d}
.feed-row.ringing{background:linear-gradient(90deg,rgba(217,170,59,.065),transparent)}
.feed-icon{width:32px;height:32px;display:grid;place-items:center;border:1px solid #2c3b46;border-radius:10px;background:#101a21;color:#e7b84c}.feed-row>div:nth-child(2){display:grid;gap:3px;min-width:0}
.feed-row strong{font-size:11px}.feed-row small{font-size:9px;color:#71828e}.feed-row p{margin:0;color:#a6b4bd;font-size:10px;line-height:1.4;overflow-wrap:anywhere}
.empty-state{padding:28px;color:#6f808c;text-align:center;font-size:11px}.empty-state.small{padding:18px}
@media(max-width:1200px){.dispatch-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.dispatch-layout{grid-template-columns:1fr}.dispatch-side{grid-template-columns:1fr 1fr}.dispatch-feed{max-height:360px}}
@media(max-width:700px){.dispatch-actions{width:100%;justify-content:stretch}.dispatch-actions>*{flex:1 1 auto}.dispatch-metrics{grid-template-columns:1fr 1fr}.dispatch-side{grid-template-columns:1fr}.dispatch-card{grid-template-columns:58px 1fr;padding:13px 12px}.dispatch-controls{grid-template-columns:1fr}.feed-row{grid-template-columns:32px 1fr}.feed-row>.mini{grid-column:2}.dispatch-card-head{align-items:flex-start;flex-direction:column}}
@media(max-width:430px){.dispatch-metrics{grid-template-columns:1fr}.dispatch-card{grid-template-columns:1fr}.dispatch-code{display:flex;align-items:center;gap:8px}.dispatch-actions{display:grid;grid-template-columns:1fr}.desk-state{justify-content:center}}


/* Streifenblatt + stabilere Leitstellensteuerung */
.patrol-layout{display:grid;grid-template-columns:minmax(300px,.72fr) minmax(0,1.45fr);gap:16px}
.patrol-self-card{align-self:start}.patrol-form{display:grid;gap:13px;padding:18px}
.patrol-form label,.dispatch-controls label{display:grid;gap:6px;color:#758792;font-size:9px;text-transform:uppercase;letter-spacing:.1em}
.patrol-form input,.patrol-form select,.dispatch-controls select{height:40px;border:1px solid #293b46;border-radius:9px;background:#071016;color:#fff;padding:0 10px;outline:0}
.my-patrol{padding:0 18px 18px}.my-patrol-card{display:grid;gap:14px;padding:15px;border:1px solid #284333;border-radius:12px;background:#0c1a14}
.my-patrol-card>div:first-child{display:grid;gap:4px}.my-patrol-card span{font-size:8px;color:#72a286;letter-spacing:.13em}.my-patrol-card strong{font-size:22px}.my-patrol-card small{font-size:9px;color:#82a28f}
.my-patrol-actions{display:grid;grid-template-columns:1fr auto;gap:8px}.my-patrol-actions select{height:34px;border:1px solid #2b4036;border-radius:8px;background:#07120d;color:#fff;padding:0 8px}
.patrol-list{display:grid}.patrol-row{display:grid;grid-template-columns:82px minmax(0,1fr) 145px 125px auto;gap:13px;align-items:center;padding:13px 16px;border-bottom:1px solid #16242d}
.unit-sign{display:grid;gap:2px}.unit-sign span{font-size:9px;color:#dbad42;text-transform:uppercase;letter-spacing:.1em}.unit-sign strong{font-size:19px}
.patrol-person{display:grid;gap:2px}.patrol-person strong{font-size:11px}.patrol-person span,.patrol-person small{font-size:9px;color:#758691}
.patrol-status{display:inline-flex;align-items:center;justify-content:center;min-height:28px;border-radius:99px;border:1px solid #30414b;font-size:9px;padding:0 9px}
.status-available{border-color:#28573e;color:#6bd99c;background:#0b1b13}.status-busy{border-color:#715829;color:#e8bd58;background:#1d170b}.status-traffic{border-color:#365872;color:#7eb8e1;background:#0d1820}.status-unavailable{border-color:#583230;color:#ef8d88;background:#1c1010}
.dispatch-controls.compact{grid-template-columns:minmax(180px,1fr) 150px 84px;align-items:end}
.dispatch-save-state{height:34px;display:flex;align-items:center;justify-content:center;border:1px solid #20333e;border-radius:8px;color:#6f818d;font-size:9px}
.dispatch-save-state.saving{color:#e9b94e;border-color:#59451f;background:#171205}
.dispatch-controls select:disabled{opacity:.55;cursor:wait}
@media(max-width:1100px){.patrol-layout{grid-template-columns:1fr}.patrol-row{grid-template-columns:72px minmax(0,1fr) 135px auto}.patrol-row>small{display:none}}
@media(max-width:700px){.patrol-row{grid-template-columns:64px 1fr}.patrol-status{justify-self:start}.patrol-row>.mini{grid-column:2;justify-self:start}.dispatch-controls.compact{grid-template-columns:1fr}.dispatch-save-state{justify-content:flex-start;border:0;padding:0}}
@media(max-width:430px){.my-patrol-actions{grid-template-columns:1fr}.patrol-row{grid-template-columns:1fr}.unit-sign{display:flex;gap:8px;align-items:center}}


/* V3 — GTA V Leitstellenkarte / aktive LB Phone Calls */
.gta-dispatch-map-panel{margin-bottom:16px;overflow:hidden}
.map-panel-head{display:flex;align-items:center;justify-content:space-between;gap:16px}
.map-head-status{display:flex;align-items:center;gap:10px}
.gta-map-shell{padding:14px}
.gta-map{
  position:relative;
  width:100%;
  aspect-ratio:16/8.7;
  min-height:340px;
  max-height:720px;
  overflow:hidden;
  border:1px solid #273a47;
  border-radius:14px;
  background:
    radial-gradient(circle at 50% 45%,rgba(42,77,95,.2),transparent 50%),
    #050b0f;
  box-shadow:inset 0 0 80px rgba(0,0,0,.55);
}
.gta-map-tiles{
  position:absolute;
  inset:0;
  display:grid;
  grid-template-columns:repeat(4,25%);
  grid-template-rows:repeat(4,25%);
  width:100%;
  height:100%;
  filter:saturate(.72) brightness(.62) contrast(1.14);
  transform:scale(1.002);
}
.gta-map-tiles img{
  display:block;
  width:100%;
  height:100%;
  object-fit:fill;
  user-select:none;
  pointer-events:none;
}
.gta-map-shade{
  position:absolute;
  inset:0;
  pointer-events:none;
  background:
    linear-gradient(rgba(5,12,17,.12),rgba(5,12,17,.12)),
    radial-gradient(circle at center,transparent 48%,rgba(0,0,0,.44) 100%);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.025);
}
.gta-map-markers{position:absolute;inset:0;z-index:4;pointer-events:none}
.gta-call-marker{
  position:absolute;
  width:34px;height:34px;
  transform:translate(-50%,-50%);
  border:0;background:transparent;padding:0;
  pointer-events:auto;
  z-index:5;
}
.marker-core{
  position:absolute;inset:4px;
  display:grid;place-items:center;
  border-radius:50%;
  background:#bd3e39;
  border:2px solid #fff1ee;
  box-shadow:0 5px 18px rgba(0,0,0,.55);
  color:#fff;font-size:12px;
}
.gta-call-marker.answered .marker-core{background:#c5982f;border-color:#fff3c7}
.marker-pulse{
  position:absolute;inset:0;border-radius:50%;
  background:rgba(235,80,72,.35);
  animation:callPulse 1.25s ease-out infinite;
}
.gta-call-marker.answered .marker-pulse{background:rgba(221,174,65,.32);animation-duration:1.8s}
@keyframes callPulse{0%{transform:scale(.7);opacity:1}100%{transform:scale(2.2);opacity:0}}
.marker-label{
  position:absolute;left:39px;top:50%;
  min-width:180px;
  transform:translateY(-50%);
  display:none;
  padding:9px 11px;
  border:1px solid #3a4d58;
  border-radius:9px;
  background:rgba(4,10,14,.94);
  box-shadow:0 12px 35px rgba(0,0,0,.55);
  text-align:left;
  white-space:nowrap;
}
.marker-label strong{display:block;font-size:10px;color:#fff}
.marker-label small{display:block;margin-top:3px;font-size:8px;color:#8fa1ad}
.gta-call-marker:hover .marker-label,.gta-call-marker:focus .marker-label,.gta-call-marker.focused .marker-label{display:block}
.gta-call-marker.focused .marker-core{box-shadow:0 0 0 7px rgba(255,255,255,.16),0 6px 20px rgba(0,0,0,.65)}
.map-no-calls{
  position:absolute;z-index:3;
  left:50%;top:50%;transform:translate(-50%,-50%);
  display:grid;gap:5px;text-align:center;
  padding:16px 20px;
  border:1px solid rgba(102,130,146,.22);
  border-radius:12px;
  background:rgba(5,12,17,.72);
  backdrop-filter:blur(5px);
}
.map-no-calls strong{font-size:12px}
.map-no-calls span{color:#7d909d;font-size:9px}
.map-attribution{
  position:absolute;z-index:3;right:8px;bottom:6px;
  padding:4px 6px;border-radius:5px;
  background:rgba(0,0,0,.55);color:#7f909b;font-size:7px;
}
.map-legend{
  display:flex;align-items:center;gap:18px;flex-wrap:wrap;
  padding:0 16px 14px;color:#81929d;font-size:9px;
}
.map-legend>span{display:flex;align-items:center;gap:7px}
.legend-dot{width:8px;height:8px;border-radius:50%;display:inline-block}
.legend-dot.ringing{background:#e5544d;box-shadow:0 0 0 4px rgba(229,84,77,.1)}
.legend-dot.answered{background:#d5a83d;box-shadow:0 0 0 4px rgba(213,168,61,.1)}
.map-coord-note{margin-left:auto!important}
.phone-native-pill{
  padding:5px 8px;border:1px solid #28513b;border-radius:99px;
  color:#66d897;background:#0b1c13;font-size:8px;font-weight:800;letter-spacing:.1em
}
.feed-row.answered-call{background:linear-gradient(90deg,rgba(217,170,59,.05),transparent)}
.call-coords{font-family:ui-monospace,SFMono-Regular,Consolas,monospace!important;color:#a7bac6!important}
.call-coords.waiting{color:#8b7645!important}
@media(max-width:900px){
 .gta-map{aspect-ratio:1.15/1;min-height:420px}
 .map-coord-note{width:100%;margin-left:0!important}
}
@media(max-width:560px){
 .gta-map-shell{padding:8px}
 .gta-map{min-height:380px;border-radius:10px}
 .marker-label{left:50%;top:39px;transform:translateX(-50%);min-width:155px}
 .map-panel-head{align-items:flex-start;flex-direction:column}
 .map-head-status{width:100%;justify-content:space-between}
}


/* V3.1 — GTA Atlas map tile correction
   Zoom 2 in CreepPork/GTAV-Maps consists of exactly 2x2 512px tiles.
   Keep the rendered coordinate plane square (1024x1024). */
.gta-map-shell{
  display:grid;
  place-items:center;
  padding:14px;
  overflow:hidden;
}
.gta-map{
  width:min(100%,980px);
  height:auto;
  min-height:0;
  max-height:none;
  aspect-ratio:1 / 1;
  margin:0 auto;
  background:#07151c;
}
.gta-map-tiles{
  grid-template-columns:repeat(2,50%)!important;
  grid-template-rows:repeat(2,50%)!important;
}
.gta-map-tiles img{
  width:100%;
  height:100%;
  object-fit:fill;
  display:block;
}
.gta-map-shade{
  background:
    linear-gradient(rgba(5,12,17,.07),rgba(5,12,17,.07)),
    radial-gradient(circle at center,transparent 60%,rgba(0,0,0,.25) 100%);
}
.map-attribution{
  max-width:70%;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
@media(max-width:900px){
  .gta-map{
    width:min(100%,760px);
    min-height:0;
    aspect-ratio:1 / 1;
  }
}
@media(max-width:560px){
  .gta-map-shell{padding:7px}
  .gta-map{
    width:100%;
    min-height:0;
    aspect-ratio:1 / 1;
  }
}

/* V3.1.1 — kein Leerzustand-Text auf der Karte */
.map-no-calls{display:none!important}


/* V3.2 — Interaktive Leitstellenkarte */
.gta-map-shell{
  display:block!important;
  padding:12px 14px!important;
  overflow:visible!important;
}
.gta-map-viewport{
  --marker-scale:1;
  position:relative;
  width:min(100%,1080px);
  height:460px;
  margin:0 auto;
  overflow:hidden;
  border:1px solid #273a47;
  border-radius:14px;
  background:#050b0f;
  box-shadow:inset 0 0 80px rgba(0,0,0,.55);
  cursor:grab;
  touch-action:none;
  user-select:none;
}
.gta-map-viewport.dragging{cursor:grabbing}
.gta-map-scene{
  position:absolute;
  left:0;top:0;
  width:1024px;height:1024px;
  transform-origin:0 0;
  will-change:transform;
  background:#07151c;
}
.gta-map-tiles{
  position:absolute!important;
  inset:0!important;
  width:1024px!important;
  height:1024px!important;
  display:grid!important;
  grid-template-columns:repeat(2,512px)!important;
  grid-template-rows:repeat(2,512px)!important;
  transform:none!important;
}
.gta-map-tiles img{
  width:512px!important;height:512px!important;
  object-fit:fill!important;
}
.gta-map-shade{position:absolute;inset:0}
.gta-map-markers{
  position:absolute;
  inset:0;
  width:1024px;height:1024px;
  z-index:5;
  pointer-events:none;
}
.gta-map-marker{
  transform:translate(-50%,-50%) scale(var(--marker-scale))!important;
  transform-origin:center!important;
  pointer-events:auto;
  cursor:pointer;
}
.gta-map-controls{
  position:absolute;
  z-index:20;
  left:12px;top:12px;
  display:grid;
  gap:6px;
}
.gta-map-control{
  width:38px;height:38px;
  border:1px solid #344854;
  border-radius:9px;
  background:rgba(5,12,17,.9);
  color:#eaf1f4;
  font-size:19px;
  font-weight:850;
  box-shadow:0 7px 20px rgba(0,0,0,.34);
}
.gta-map-control:hover{border-color:#6d8491;background:#0f1b22}
.gta-map-control.reset{font-size:15px}
.gta-map-viewport .map-attribution{
  position:absolute;
  z-index:20;
  right:7px;bottom:6px;
}
.gta-dispatch-marker{
  position:absolute;
  width:40px;height:40px;
  border:0;background:transparent;padding:0;
  z-index:6;
}
.gta-dispatch-marker .marker-core{
  inset:3px;
  border-radius:10px;
  background:#2773a6;
  border-color:#ccecff;
  font-size:7px;
  line-height:1;
  font-weight:950;
  letter-spacing:-.03em;
  overflow:hidden;
}
.gta-dispatch-marker.priority-high .marker-core{background:#bc4d43;border-color:#ffe0dc}
.gta-dispatch-marker.priority-medium .marker-core{background:#a47822;border-color:#ffedb5}
.gta-dispatch-marker.priority-low .marker-core{background:#356f98;border-color:#d2efff}
.dispatch-marker-ring{
  position:absolute;inset:0;
  border:2px solid rgba(96,187,241,.42);
  border-radius:13px;
  animation:dispatchRing 2.2s ease-out infinite;
}
.gta-dispatch-marker.priority-high .dispatch-marker-ring{border-color:rgba(239,92,82,.48)}
.gta-dispatch-marker.priority-medium .dispatch-marker-ring{border-color:rgba(225,177,68,.48)}
@keyframes dispatchRing{0%{transform:scale(.78);opacity:.8}70%,100%{transform:scale(1.45);opacity:0}}
.gta-dispatch-marker .marker-label{left:45px}
.gta-dispatch-marker:hover .marker-label,
.gta-dispatch-marker:focus .marker-label,
.gta-dispatch-marker.focused .marker-label{display:block}
.gta-dispatch-marker.focused .marker-core{
  box-shadow:0 0 0 7px rgba(99,190,244,.16),0 6px 20px rgba(0,0,0,.65)
}
.legend-dot.dispatch{background:#4199ce;box-shadow:0 0 0 4px rgba(65,153,206,.1)}
.map-link{
  border-color:#2b4b60!important;
  color:#83c9ee!important;
  background:#0b1720!important;
  height:25px!important;
}
.map-head-status{flex-wrap:wrap}
@media(max-width:900px){
  .gta-map-viewport{height:390px}
}
@media(max-width:560px){
  .gta-map-shell{padding:7px!important}
  .gta-map-viewport{height:320px;border-radius:10px}
  .gta-map-controls{left:8px;top:8px}
  .gta-map-control{width:34px;height:34px}
  .gta-map-marker .marker-label{
    left:50%!important;top:43px!important;
    transform:translateX(-50%)!important;
    min-width:165px;
  }
}


/* V3.3 — echte HD Multi-Zoom-Karte statt hochskalierter Atlas-Grafik */
.gta-map-hd-tiles{
  position:absolute!important;
  inset:0!important;
  display:block!important;
  width:1024px!important;
  height:1024px!important;
  overflow:visible!important;
  filter:none!important;
  transform:none!important;
  background:#07131a;
}
.gta-map-hd-tiles .gta-hd-tile{
  position:absolute!important;
  display:block!important;
  object-fit:fill!important;
  opacity:0;
  transition:opacity .12s linear;
  user-select:none;
  pointer-events:none;
  max-width:none!important;
  image-rendering:auto;
}
.gta-map-hd-tiles .gta-hd-tile.loaded{opacity:1}
.gta-map-hd-tiles .gta-hd-tile.failed{opacity:0}
.gta-map-scene{
  background:#07131a!important;
}
.gta-map-shade{
  z-index:2;
  pointer-events:none;
  background:
    linear-gradient(rgba(2,8,12,.03),rgba(2,8,12,.03)),
    radial-gradient(circle at center,transparent 72%,rgba(0,0,0,.18) 100%)!important;
}
.gta-map-markers{z-index:5!important}
.gta-map-style-switch{
  position:absolute;
  z-index:22;
  right:12px;
  top:12px;
  display:flex;
  overflow:hidden;
  padding:3px;
  gap:3px;
  border:1px solid #344854;
  border-radius:10px;
  background:rgba(5,12,17,.91);
  box-shadow:0 7px 20px rgba(0,0,0,.34);
}
.gta-map-style-switch button{
  height:31px;
  padding:0 11px;
  border:0;
  border-radius:7px;
  background:transparent;
  color:#82949f;
  font-size:9px;
  font-weight:850;
  letter-spacing:.04em;
}
.gta-map-style-switch button:hover{color:#e8f0f4;background:#14212a}
.gta-map-style-switch button.active{
  color:#111;
  background:#d9aa3b;
}
.map-zoom-readout{
  position:absolute;
  z-index:21;
  left:12px;
  bottom:10px;
  padding:5px 8px;
  border:1px solid rgba(61,82,94,.7);
  border-radius:7px;
  background:rgba(4,10,14,.78);
  color:#93a5b0;
  font-size:8px;
  font-weight:800;
  letter-spacing:.08em;
  pointer-events:none;
}
.gta-map-viewport{
  background:#07131a!important;
}
@media(max-width:560px){
  .gta-map-style-switch{
    right:8px;
    top:8px;
  }
  .gta-map-style-switch button{
    height:28px;
    padding:0 8px;
    font-size:8px;
  }
  .map-zoom-readout{left:8px;bottom:7px}
}


/* V3.4 — Leaflet map. Old custom tile renderer is no longer used. */
.gta-map-viewport,.gta-map-scene,.gta-map-hd-tiles,.gta-map-controls{
  display:none!important;
}
.gta-map-shell.leaflet-shell{
  display:block!important;
  padding:12px 14px!important;
  overflow:visible!important;
}
.gta-leaflet-wrap{
  position:relative;
  width:min(100%,1120px);
  margin:0 auto;
}
.gta-leaflet-map{
  width:100%;
  height:470px;
  overflow:hidden;
  border:1px solid #273a47;
  border-radius:14px;
  background:#0a2132;
  box-shadow:inset 0 0 60px rgba(0,0,0,.35);
  z-index:1;
}
.gta-leaflet-map .leaflet-tile{
  image-rendering:auto;
  backface-visibility:hidden;
}
.gta-leaflet-map .leaflet-container{
  background:#0a2132;
}
.gta-leaflet-map .leaflet-control-zoom{
  margin-left:12px;
  margin-top:12px;
  border:1px solid #344854!important;
  border-radius:10px;
  overflow:hidden;
  box-shadow:0 7px 20px rgba(0,0,0,.34);
}
.gta-leaflet-map .leaflet-control-zoom a{
  width:38px;
  height:38px;
  line-height:38px;
  border:0!important;
  border-bottom:1px solid #263944!important;
  background:rgba(5,12,17,.94);
  color:#eef4f6;
  font-size:20px;
}
.gta-leaflet-map .leaflet-control-zoom a:last-child{border-bottom:0!important}
.gta-leaflet-map .leaflet-control-zoom a:hover{background:#12202a;color:#fff}
.leaflet-style-switch{
  position:absolute!important;
  z-index:800!important;
  right:12px!important;
  top:12px!important;
}
.leaflet-zoom-readout{
  position:absolute!important;
  z-index:800!important;
  left:12px!important;
  bottom:10px!important;
}
.sahp-leaflet-divicon{
  background:transparent!important;
  border:0!important;
}
.leaflet-sahp-marker{
  position:relative;
  width:38px;
  height:38px;
}
.leaflet-sahp-marker .leaflet-marker-core{
  position:absolute;
  inset:4px;
  display:grid;
  place-items:center;
  border-radius:50%;
  background:#c84640;
  border:2px solid #fff2ef;
  color:#fff;
  font-size:12px;
  font-weight:900;
  box-shadow:0 5px 18px rgba(0,0,0,.58);
}
.leaflet-sahp-marker.call.answered .leaflet-marker-core{
  background:#bf922c;
  border-color:#ffefba;
}
.leaflet-marker-pulse{
  position:absolute;
  inset:0;
  border-radius:50%;
  background:rgba(235,80,72,.34);
  animation:leafletCallPulse 1.25s ease-out infinite;
}
.leaflet-sahp-marker.call.answered .leaflet-marker-pulse{
  background:rgba(221,174,65,.30);
  animation-duration:1.8s;
}
@keyframes leafletCallPulse{
  0%{transform:scale(.68);opacity:1}
  100%{transform:scale(2.15);opacity:0}
}
.leaflet-sahp-marker.dispatch{
  width:42px;
  height:42px;
}
.leaflet-sahp-marker.dispatch .leaflet-marker-core{
  inset:3px;
  border-radius:11px;
  background:#357aa6;
  border-color:#d4f0ff;
  font-size:7px;
  line-height:1;
  letter-spacing:-.04em;
  overflow:hidden;
  padding:2px;
}
.leaflet-sahp-marker.dispatch.priority-high .leaflet-marker-core{
  background:#bb4b43;border-color:#ffe1dc;
}
.leaflet-sahp-marker.dispatch.priority-medium .leaflet-marker-core{
  background:#9b731f;border-color:#fff0b8;
}
.leaflet-sahp-marker.dispatch.priority-low .leaflet-marker-core{
  background:#326c96;border-color:#d3efff;
}
.leaflet-dispatch-ring{
  position:absolute;
  inset:0;
  border:2px solid rgba(86,181,236,.44);
  border-radius:14px;
  animation:leafletDispatchRing 2.15s ease-out infinite;
}
.leaflet-sahp-marker.dispatch.priority-high .leaflet-dispatch-ring{border-color:rgba(239,92,82,.50)}
.leaflet-sahp-marker.dispatch.priority-medium .leaflet-dispatch-ring{border-color:rgba(225,177,68,.50)}
@keyframes leafletDispatchRing{
  0%{transform:scale(.8);opacity:.85}
  75%,100%{transform:scale(1.5);opacity:0}
}
.gta-leaflet-map .leaflet-popup-content-wrapper,
.gta-leaflet-map .leaflet-popup-tip{
  background:#071016;
  color:#eaf1f4;
  border:1px solid #2b3c47;
  box-shadow:0 14px 42px rgba(0,0,0,.58);
}
.gta-leaflet-map .leaflet-popup-content-wrapper{
  border-radius:11px;
  padding:0;
}
.gta-leaflet-map .leaflet-popup-content{margin:12px 14px}
.sahp-map-popup{display:grid;gap:4px;min-width:170px}
.sahp-map-popup .popup-kicker{
  color:#d9aa3b;
  font-size:8px;
  font-weight:900;
  letter-spacing:.12em;
}
.sahp-map-popup strong{font-size:11px}
.sahp-map-popup small,.sahp-map-popup div{font-size:9px;color:#879aa6}
@media(max-width:900px){
  .gta-leaflet-map{height:410px}
}
@media(max-width:560px){
  .gta-map-shell.leaflet-shell{padding:7px!important}
  .gta-leaflet-map{height:340px;border-radius:10px}
  .leaflet-style-switch{right:8px!important;top:8px!important}
  .leaflet-zoom-readout{left:8px!important;bottom:7px!important}
}


/* V3.5 — resilient map-tile loading */
.map-tile-status{
  position:absolute;
  z-index:850;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
  display:flex;
  align-items:center;
  gap:9px;
  min-height:38px;
  padding:0 13px;
  border:1px solid #314651;
  border-radius:10px;
  background:rgba(5,13,18,.9);
  color:#a8bac4;
  box-shadow:0 12px 38px rgba(0,0,0,.45);
  font-size:10px;
  pointer-events:none;
  transition:opacity .18s ease,visibility .18s ease;
}
.map-tile-status i{
  width:9px;height:9px;
  border:2px solid #536b79;
  border-top-color:#d9aa3b;
  border-radius:50%;
  animation:sahpMapSpin .8s linear infinite;
}
.map-tile-status.hidden{
  opacity:0;
  visibility:hidden;
}
.map-tile-status.error{
  border-color:#673836;
  color:#ff9c96;
}
.map-tile-status.error i{
  animation:none;
  border:0;
  background:#df5f58;
}
@keyframes sahpMapSpin{to{transform:rotate(360deg)}}
.gta-leaflet-map .gta-tile-failed{opacity:0}


/* V4 — Dienstanweisung, Strafenkatalog, Bürgerakten & Rechnungen */
.document-panel{overflow:hidden}.document-frame{display:block;width:100%;height:72vh;min-height:620px;border:0;background:#111}
.policy-warning,.case-guidance{display:flex;gap:12px;align-items:flex-start;margin-bottom:14px;padding:13px 15px;border:1px solid #594821;border-radius:12px;background:#171306;color:#d9b968}
.policy-warning strong,.case-guidance strong{white-space:nowrap;font-size:10px;text-transform:uppercase;letter-spacing:.08em}
.policy-warning span,.case-guidance span{color:#b5aa8b;font-size:10px;line-height:1.5}
.catalog-toolbar{justify-content:space-between}.catalog-toolbar select{height:44px;min-width:250px;border:1px solid var(--line);border-radius:11px;background:#091117;color:#fff;padding:0 12px}
.catalog-list{display:grid;gap:14px}.catalog-category{overflow:hidden}.catalog-category-head{display:flex;align-items:center;gap:15px;padding:17px;border-bottom:1px solid #1a2831}
.catalog-category-head>span{width:46px;height:46px;display:grid;place-items:center;border:1px solid #7e632d;border-radius:12px;background:#1a1508;color:#e2b848;font-weight:900}
.catalog-category-head h3{margin:0 0 3px;font-size:15px}.catalog-category-head p{margin:0;color:#72838e;font-size:9px}
.catalog-rows{display:grid}.catalog-row{display:grid;grid-template-columns:72px minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px 16px;border-bottom:1px solid #16242d}
.catalog-row:last-child{border-bottom:0}.catalog-code{font-size:11px;font-weight:900;color:#e3b744}.catalog-title{display:grid;gap:3px}.catalog-title strong{font-size:10px}.catalog-title small{font-size:8px;color:#7b8b96}
.catalog-values{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.catalog-values span{padding:5px 8px;border:1px solid #2b3a44;border-radius:99px;background:#0d171d;color:#9eb0ba;font-size:8px}
.citizen-record-modal{width:min(1100px,calc(100% - 24px))}.record-shell{max-height:calc(100dvh - 24px);overflow:auto;padding:22px}.record-actions{display:flex;justify-content:flex-end;margin-bottom:14px}
.case-list{display:grid;gap:12px}.case-card{padding:16px;border:1px solid #20313b;border-radius:14px;background:#091117}.case-card-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}
.case-card-head h3{margin:5px 0;font-size:14px}.case-card-head p{margin:0;color:#96a7b2;font-size:10px;line-height:1.5}.case-summary-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:14px 0}
.case-summary-grid>div{padding:10px;border:1px solid #1e303a;border-radius:9px;background:#071016;display:grid;gap:4px}.case-summary-grid span{font-size:8px;color:#72838e;text-transform:uppercase}.case-summary-grid strong{font-size:13px}
.case-charges{display:grid;border-top:1px solid #18262f}.case-charge{display:grid;grid-template-columns:65px minmax(0,1fr) auto;gap:10px;padding:9px 0;border-bottom:1px solid #14212a}.case-charge span{color:#dcb047;font-size:9px;font-weight:900}.case-charge strong{font-size:9px}.case-charge small{font-size:8px;color:#788a95}
.case-footer{display:flex;gap:10px 18px;flex-wrap:wrap;padding-top:11px;color:#71828e;font-size:8px}.invoice-open{border-color:#705623!important;color:#e6bd59!important;background:#1b1608!important}
.penalty-modal{width:min(1180px,calc(100% - 20px))}.charge-picker-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:20px 0 9px}.charge-picker-head h3{margin:4px 0 0}
.search.compact{height:40px}.charge-picker{max-height:410px;overflow:auto;border:1px solid #20313b;border-radius:13px;background:#071016}
.charge-row{display:grid;grid-template-columns:24px 62px minmax(0,1fr) 150px 70px 70px;gap:10px;align-items:center;padding:11px 13px;border-bottom:1px solid #16242d;text-transform:none!important;letter-spacing:0!important;cursor:pointer}
.charge-row:last-child{border-bottom:0}.charge-row>input[type=checkbox]{width:16px;height:16px}.charge-code{font-size:9px;color:#e3b744;font-weight:900}.charge-name{display:grid;gap:2px}.charge-name strong{font-size:9px}.charge-name small{font-size:8px;color:#738490}
.charge-fine{display:grid;gap:2px}.charge-fine small{font-size:7px;color:#687a85}.charge-fine input{height:32px!important;padding:0 8px!important;font-size:9px}.charge-fine em{font-style:normal;font-size:7px;color:#8b7a4a}
.charge-stat{justify-self:end;font-size:9px;color:#a3b2bb}.penalty-totals{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px;margin-top:14px}.penalty-totals>div{padding:11px;border:1px solid #22343f;border-radius:10px;background:#0a1319;display:grid;gap:4px}.penalty-totals span{font-size:8px;color:#71838f;text-transform:uppercase}.penalty-totals strong{font-size:15px}
.conversion-note{margin-top:10px;padding:10px 12px;border:1px solid #2d3e48;border-radius:10px;background:#081117;color:#90a2ad;font-size:9px}.conversion-note strong{color:#dcb047}
.record-button{border-color:#3a5362!important;color:#9cd2ed!important}.settings-form small{color:#6d7f8a;font-size:8px;line-height:1.35;font-weight:500;letter-spacing:0;text-transform:none}
@media(max-width:900px){.document-frame{height:65vh;min-height:500px}.case-summary-grid{grid-template-columns:repeat(3,1fr)}.charge-row{grid-template-columns:24px 55px minmax(0,1fr) 120px}.charge-stat{display:none}.catalog-row{grid-template-columns:62px 1fr}.catalog-values{grid-column:2;justify-content:flex-start}}
@media(max-width:620px){.document-frame{min-height:440px}.catalog-toolbar{display:grid}.catalog-toolbar select{min-width:0;width:100%}.case-card-head{flex-direction:column}.case-summary-grid{grid-template-columns:1fr 1fr}.case-charge{grid-template-columns:55px 1fr}.case-charge small{grid-column:2}.charge-picker-head{align-items:stretch;flex-direction:column}.charge-row{grid-template-columns:22px 48px minmax(0,1fr)}.charge-fine{grid-column:2/-1}.penalty-totals{grid-template-columns:1fr 1fr}.policy-warning,.case-guidance{flex-direction:column}}


/* V5 — private Leitstelle */
.dispatch-access-gate{
  display:flex;
  align-items:center;
  gap:16px;
  min-height:150px;
  margin-bottom:16px;
  padding:22px;
  border:1px solid #2a3d48;
  border-radius:15px;
  background:
    radial-gradient(circle at 0 0,rgba(217,170,59,.08),transparent 34%),
    #091117;
}
.dispatch-access-gate.hidden{display:none!important}
.dispatch-access-icon{
  flex:0 0 58px;
  width:58px;height:58px;
  display:grid;place-items:center;
  border:1px solid #6c572a;
  border-radius:16px;
  background:#191406;
  color:#e2b848;
  font-size:24px;
}
.dispatch-access-gate h2{margin:4px 0 6px;font-size:18px}
.dispatch-access-gate p{margin:0;max-width:720px;color:#82949f;font-size:10px;line-height:1.55}
.dispatch-private.hidden{display:none!important}
@media(max-width:560px){
  .dispatch-access-gate{align-items:flex-start;flex-direction:column}
}


/* V7 — FiveM Player Link */
.fivem-link-box{
  margin:0 18px 18px;
  padding:14px;
  border:1px solid #263a46;
  border-radius:12px;
  background:#081117;
}
.fivem-link-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.fivem-link-head h3{margin:4px 0 0;font-size:13px}
.fivem-link-box>p{margin:9px 0 12px;color:#7f929e;font-size:9px;line-height:1.5}
.fivem-link-command{
  display:grid;
  gap:5px;
  margin-top:10px;
  padding:10px 11px;
  border:1px solid #594a25;
  border-radius:9px;
  background:#171307;
}
.fivem-link-command.hidden{display:none!important}
.fivem-link-command span,.fivem-link-command small{font-size:8px;color:#8f866a}
.fivem-link-command strong{
  font-family:ui-monospace,SFMono-Regular,Consolas,monospace;
  color:#f1c65d;
  font-size:12px;
  user-select:text;
}


/* V8 — automatische FiveM-Erkennung */
.auto-detect-box{position:relative;overflow:hidden}
.auto-detect-box::before{
  content:"";
  position:absolute;left:0;top:0;bottom:0;width:3px;
  background:#3b8c63;
}
.auto-detect-box .badge.active{
  border-color:#285c43!important;
  color:#72d9a3!important;
  background:#091b13!important;
}


/* V9 — Bürger / FiveM Auto-Link */
.citizen-auto-link-note{
  display:grid;
  gap:4px;
  padding:11px 12px;
  border:1px solid #284638;
  border-radius:10px;
  background:#091711;
}
.citizen-auto-link-note strong{
  color:#7ed7a7;
  font-size:9px;
  letter-spacing:.06em;
  text-transform:uppercase;
}
.citizen-auto-link-note span{
  color:#849991;
  font-size:9px;
  line-height:1.45;
}


/* V9.2 — CEF-/Proxy-sichere Bestätigung statt window.confirm() */
.app-confirm{
  position:fixed;
  inset:0;
  z-index:99999;
  display:grid;
  place-items:center;
  padding:18px;
  background:rgba(0,0,0,.68);
  backdrop-filter:blur(5px);
  animation:confirmIn .13s ease-out;
}
.app-confirm.closing{opacity:0;transition:opacity .12s ease}
.app-confirm-card{
  width:min(440px,calc(100vw - 28px));
  display:grid;
  grid-template-columns:46px 1fr;
  gap:12px;
  padding:17px;
  border:1px solid #354955;
  border-radius:15px;
  background:#0a141a;
  box-shadow:0 24px 70px rgba(0,0,0,.58);
}
.app-confirm-icon{
  width:42px;height:42px;
  display:grid;place-items:center;
  border:1px solid #774340;
  border-radius:12px;
  color:#ff8e87;
  background:#1e0e0d;
  font-weight:900;
  font-size:18px;
}
.app-confirm-copy h3{margin:1px 0 5px;font-size:15px}
.app-confirm-copy p{margin:0;color:#8da0aa;font-size:10px;line-height:1.5}
.app-confirm-actions{
  grid-column:1/-1;
  display:flex;
  justify-content:flex-end;
  gap:8px;
  padding-top:4px;
}
.danger-solid{
  border-color:#743d39!important;
  background:#9d403a!important;
  color:#fff!important;
}
.danger-solid:hover{background:#b64a43!important}
@keyframes confirmIn{
  from{opacity:0;transform:scale(.99)}
  to{opacity:1;transform:scale(1)}
}


/* V9.2.2 - Dienstanweisung as pre-rendered pages.
   Avoids Chromium/FiveM PDF font rendering artifacts. */
.document-panel{
  overflow:hidden;
  border-radius:15px;
}
.document-frame{display:none!important}

.document-image-viewer{
  display:grid;
  grid-template-rows:auto minmax(0,1fr);
  height:72vh;
  min-height:620px;
  background:#071119;
}

.document-viewer-toolbar{
  position:relative;
  z-index:3;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  min-height:54px;
  padding:8px 12px;
  border-bottom:1px solid #29404f;
  background:#071c31;
}

.doc-control{
  min-width:42px;
  height:38px;
  padding:0 12px;
  border:1px solid #305b83;
  border-radius:10px;
  background:#08213c;
  color:#e9f3ff;
  font:inherit;
  font-size:14px;
  font-weight:800;
  cursor:pointer;
  transition:background .15s ease,border-color .15s ease,opacity .15s ease;
}
.doc-control:hover:not(:disabled){
  background:#0c3159;
  border-color:#4d80ad;
}
.doc-control:disabled{
  opacity:.34;
  cursor:default;
}
.doc-fit{
  min-width:78px;
  font-size:9px;
  text-transform:uppercase;
  letter-spacing:.05em;
}

.document-page-counter{
  min-width:112px;
  text-align:center;
  color:#dceafa;
  font-size:11px;
  font-weight:700;
}
.document-page-counter strong{color:#fff}

.document-toolbar-spacer{width:10px}
.document-zoom-label{
  min-width:45px;
  text-align:center;
  color:#98b0c1;
  font-size:9px;
  font-weight:800;
}

.document-page-stage{
  position:relative;
  min-height:0;
  overflow:auto;
  overscroll-behavior:contain;
  padding:14px;
  background:
    radial-gradient(circle at 50% 0,rgba(32,72,105,.22),transparent 36%),
    #071018;
  cursor:default;
  scrollbar-color:#536b7a #0a151c;
  scrollbar-width:thin;
}
.document-page-stage.dragging{
  cursor:grabbing;
  user-select:none;
}
.document-page-stage::-webkit-scrollbar{width:10px;height:10px}
.document-page-stage::-webkit-scrollbar-track{background:#0a151c}
.document-page-stage::-webkit-scrollbar-thumb{
  background:#536b7a;
  border:2px solid #0a151c;
  border-radius:10px;
}

.document-page-sheet{
  width:100%;
  min-width:0;
  margin:0 auto;
  transition:width .14s ease;
}
.document-page-sheet img{
  display:block;
  width:100%;
  height:auto;
  margin:0 auto;
  border-radius:3px;
  background:#fff;
  box-shadow:0 8px 28px rgba(0,0,0,.35);
  user-select:none;
  -webkit-user-drag:none;
}

.document-loading{
  position:absolute;
  inset:0;
  z-index:2;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:9px;
  pointer-events:none;
  background:rgba(6,15,21,.44);
  color:#a6bac7;
  font-size:10px;
  transition:opacity .14s ease;
}
.document-loading.hidden{
  opacity:0;
  visibility:hidden;
}
.document-loading i{
  width:18px;
  height:18px;
  border:2px solid #415d70;
  border-top-color:#e3b744;
  border-radius:50%;
  animation:documentSpin .75s linear infinite;
}
@keyframes documentSpin{to{transform:rotate(360deg)}}

@media(max-width:900px){
  .document-image-viewer{
    height:68vh;
    min-height:500px;
  }
  .document-viewer-toolbar{
    gap:6px;
    padding:7px 8px;
  }
  .doc-control{
    min-width:38px;
    height:36px;
    padding:0 9px;
  }
  .document-page-counter{min-width:96px}
}

@media(max-width:620px){
  .document-image-viewer{
    height:64vh;
    min-height:430px;
  }
  .document-viewer-toolbar{
    justify-content:flex-start;
    overflow-x:auto;
  }
  .document-toolbar-spacer{width:2px}
  .doc-fit{min-width:72px}
  .document-page-stage{padding:8px}
}


/* V9.2.3 — direct asset fallback for LB Tablet */
.document-load-error{
  position:absolute;
  left:50%;
  top:50%;
  z-index:4;
  transform:translate(-50%,-50%);
  display:grid;
  gap:4px;
  width:min(360px,calc(100% - 28px));
  padding:15px;
  border:1px solid #713e3b;
  border-radius:12px;
  background:#190e0d;
  color:#ff9b95;
  text-align:center;
}
.document-load-error.hidden{display:none!important}
.document-load-error strong{font-size:11px}
.document-load-error span{font-size:9px;color:#bb8c88}

/* Gemeinsame LSPD/SAHP-Datensätze */
.badge.agency-lspd{border-color:#315b86;background:#09192a;color:#83b7eb}
.badge.agency-sahp{border-color:#79652d;background:#1b1608;color:#e4bf59}


/* ============================================================
   V10 - Dokumentationen / editierbare Dienstanweisung / Katalog
   ============================================================ */

.view-head-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}

.system-doc-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
  margin-bottom:14px;
}
.system-doc-card{
  display:grid;
  grid-template-columns:48px minmax(0,1fr);
  gap:13px;
  padding:17px;
  align-items:start;
}
.system-doc-card .row-actions{grid-column:1/-1;justify-content:flex-end}
.system-doc-card h3{margin:4px 0 5px;font-size:16px}
.system-doc-card p{margin:0;color:#8596a1;font-size:10px;line-height:1.5}
.document-type-icon,.document-file-badge{
  display:grid;
  place-items:center;
  border:1px solid #355064;
  border-radius:11px;
  background:#0a1922;
  color:#f3c34e;
  font-weight:900;
}
.document-type-icon{width:46px;height:46px;font-size:20px}
.document-file-badge{
  width:44px;height:44px;
  font-size:9px;
  letter-spacing:.06em;
}

.documentation-toolbar{margin:14px 0}
.document-library-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}
.document-library-card{
  padding:15px;
  display:grid;
  gap:12px;
}
.document-card-top{
  display:grid;
  grid-template-columns:44px minmax(0,1fr) auto;
  gap:11px;
  align-items:start;
}
.document-card-copy h3{margin:3px 0 5px;font-size:14px}
.document-card-copy p{margin:0;color:#81939f;font-size:9px;line-height:1.5}
.document-card-meta{
  display:flex;
  flex-wrap:wrap;
  gap:7px 13px;
  padding-top:9px;
  border-top:1px solid #1e303a;
  color:#778a96;
  font-size:8px;
}
.document-card-meta span:first-child{
  max-width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.upload-hint{
  margin-top:8px;
  padding:9px 11px;
  border:1px solid #273d49;
  border-radius:9px;
  color:#7f929d;
  font-size:9px;
  line-height:1.45;
  background:#081218;
}

.directive-meta{
  display:flex;
  flex-wrap:wrap;
  gap:8px 16px;
  margin:0 0 10px;
  color:#7f929e;
  font-size:9px;
}
.directive-managed-panel{
  padding:0;
  overflow:hidden;
}
.directive-managed-content{
  display:grid;
  gap:18px;
  padding:20px;
  background:#071018;
}
.directive-text-page{
  width:min(900px,100%);
  margin:0 auto;
  padding:44px 50px;
  min-height:700px;
  border-radius:4px;
  background:#f3f6fb;
  color:#17212b;
  box-shadow:0 10px 35px rgba(0,0,0,.35);
}
.directive-text-page pre{
  margin:0;
  color:#17212b;
  font-family:Arial,Helvetica,sans-serif;
  font-size:13px;
  line-height:1.58;
  white-space:pre-wrap;
  overflow-wrap:anywhere;
}
.directive-page-no{
  display:block;
  margin-bottom:22px;
  color:#66717b;
  font-size:9px;
  font-weight:800;
  letter-spacing:.1em;
}
.document-loading-inline{
  padding:35px;
  text-align:center;
  color:#8396a3;
}
.directive-editor{
  min-height:56vh;
  resize:vertical;
  font-family:ui-monospace,SFMono-Regular,Consolas,monospace;
  line-height:1.5;
  white-space:pre-wrap;
}

.modal.extra-wide{width:min(1050px,calc(100vw - 28px))}
.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.form-grid .span-two{grid-column:span 2}

.catalog-row{
  position:relative;
}
.catalog-row-actions{
  display:flex;
  gap:5px;
  justify-content:flex-end;
  align-items:center;
}
.catalog-row.with-actions{
  grid-template-columns:90px minmax(180px,1fr) auto auto;
}

@media(max-width:900px){
  .system-doc-grid,.document-library-grid{grid-template-columns:1fr}
  .form-grid.three{grid-template-columns:1fr 1fr}
  .form-grid .span-two{grid-column:span 1}
  .directive-text-page{padding:30px 28px;min-height:560px}
}
@media(max-width:620px){
  .form-grid.three{grid-template-columns:1fr}
  .document-card-top{grid-template-columns:42px minmax(0,1fr)}
  .document-card-top>.badge{grid-column:1/-1;justify-self:start}
  .directive-managed-content{padding:8px}
  .directive-text-page{padding:24px 18px;min-height:460px}
  .directive-text-page pre{font-size:11px}
}


/* ============================================================
   V11 - Direct PDF editor
   ============================================================ */
.managed-pdf-editor{overflow:hidden;margin-bottom:15px}
.pdf-editor-bar{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:10px 12px;border-bottom:1px solid #213641;background:#09151d;
}
.pdf-editor-nav,.pdf-editor-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.pdf-page-label,.pdf-zoom-label,.pdf-version{font-size:9px;color:#8ca0ac;font-weight:700}
.pdf-page-label{min-width:92px;text-align:center}
.pdf-zoom-label{min-width:42px;text-align:center}
.pdf-version{padding-right:4px}
.pdf-edit-toolbar{
  display:flex;align-items:center;gap:7px;flex-wrap:wrap;
  padding:9px 12px;border-bottom:1px solid #2a3f4b;background:#0c1b24;
}
.pdf-edit-toolbar[hidden]{display:none!important}
.pdf-edit-toolbar label{
  display:flex;align-items:center;gap:6px;margin:0;
  color:#889aa5;font-size:8px;text-transform:uppercase;letter-spacing:.05em
}
.pdf-edit-toolbar input{
  width:62px;height:30px;padding:0 7px;border-radius:7px
}
.pdf-editor-toolbar-spacer{flex:1}
.pdf-editor-help{max-width:390px;color:#82949e;font-size:8px;line-height:1.35}
.pdf-editor-stage-wrap{position:relative;min-height:560px;background:#050b0f}
.pdf-editor-scroll{
  width:100%;height:72vh;min-height:560px;overflow:auto;
  padding:20px;box-sizing:border-box;
  background:
    radial-gradient(circle at 50% 0,rgba(35,75,104,.17),transparent 42%),
    #050b0f;
}
.pdf-editor-page{
  position:relative;margin:0 auto;width:max-content;
  background:#fff;box-shadow:0 10px 40px rgba(0,0,0,.5)
}
.pdf-editor-page canvas{display:block;background:#fff}
.pdf-annotation-layer{
  position:absolute;inset:0;z-index:3;pointer-events:none;
  user-select:none;overflow:hidden
}
.pdf-annotation-layer.editing{pointer-events:auto}
.pdf-annotation-layer[data-tool="text"]{cursor:text}
.pdf-annotation-layer[data-tool="whiteout"]{cursor:crosshair}
.pdf-annotation{position:absolute;box-sizing:border-box}
.pdf-annotation-whiteout{
  background:#fff;border:1px dashed rgba(19,89,155,.65);
  min-width:3px;min-height:3px;cursor:move
}
.pdf-annotation-text{
  display:flex;align-items:flex-start;
  min-width:46px;min-height:22px;
  padding:2px 3px 2px 19px;
  color:#111;background:rgba(255,252,206,.7);
  border:1px dashed rgba(181,128,0,.75);
  line-height:1.2;cursor:text;white-space:pre-wrap;
  font-family:Arial,Helvetica,sans-serif
}
.pdf-annotation:not(.selected) .pdf-annotation-text{background:rgba(255,252,206,.48)}
.pdf-annotation.selected .pdf-annotation-text,.pdf-annotation.selected.pdf-annotation-whiteout{
  outline:2px solid #f5be36;outline-offset:1px
}
.pdf-annotation-handle{
  position:absolute;left:2px;top:2px;z-index:2;
  display:grid;place-items:center;width:15px;height:17px;
  color:#111;background:#f4bd3d;border-radius:3px;
  font-size:9px;font-weight:900;cursor:move
}
.pdf-editor-loading{
  position:absolute;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;
  gap:9px;color:#a6bac7;background:rgba(5,11,15,.7);font-size:10px
}
.pdf-editor-loading.hidden{display:none}
.pdf-editor-loading i{
  width:18px;height:18px;border:2px solid #415d70;border-top-color:#e3b744;
  border-radius:50%;animation:documentSpin .75s linear infinite
}
.pdf-editor-error{
  position:absolute;z-index:25;left:50%;top:50%;transform:translate(-50%,-50%);
  width:min(500px,calc(100% - 32px));padding:15px;
  border:1px solid #713e3b;border-radius:12px;background:#190e0d;color:#ff9b95;
  text-align:center;font-size:10px;line-height:1.5
}

.documentation-only-note{
  margin-bottom:12px;padding:11px 13px;border:1px solid #253943;border-radius:10px;
  background:#081219;color:#8497a2;font-size:9px;line-height:1.45
}

@media(max-width:900px){
  .pdf-editor-bar{align-items:flex-start;flex-direction:column}
  .pdf-editor-actions{width:100%}
  .pdf-editor-scroll{height:67vh;min-height:480px;padding:10px}
  .pdf-editor-help{max-width:100%;flex-basis:100%}
}

/* Rollen & Rechte: geschützte/gesperrte Berechtigungsfelder */
.permission-grid.is-disabled{opacity:.58}
.role-permission-hint{margin:14px 0 -4px;padding:10px 12px;border:1px solid #2a3b46;border-radius:10px;background:#0a1218;color:#91a3ae;font-size:10px;line-height:1.5}


/* Rechnungsstatus: manuell und irreversibel auf Bezahlt setzen */
.invoice-status-select{
  height:34px;min-width:116px;padding:0 30px 0 10px;
  border:1px solid #705623;border-radius:9px;background:#1b1608;color:#e6bd59;
  font-size:10px;font-weight:800;outline:0;cursor:pointer
}
.invoice-status-select:focus{box-shadow:0 0 0 3px rgba(217,170,59,.09)}
.invoice-status-select.is-paid{
  border-color:#24553c;background:#0d2119;color:#65d698;cursor:not-allowed;opacity:1
}
.invoice-status-select:disabled{opacity:1}
