/* ==========================================================================
   CRIMEHUB — APP-SHELL UND SEITEN
   Ergänzt crimehub.css (Tokens + Komponenten). Getrennt gehalten, damit
   crimehub.css jederzeit aus design/assets/ neu kopiert werden kann.
   ========================================================================== */

html,body{height:100%}
body{overflow:hidden;background:#07050A}
body.plain-page{overflow:auto}

/* ---------- Hinweise ---------- */
.flash{padding:11px 16px;margin-bottom:14px;border-radius:3px 9px 4px 8px;
  font-size:var(--text-sm);font-weight:600;
  background:var(--panel-head);border:1px solid var(--line-2);color:var(--text)}
.flash--success{border-color:rgba(74,222,128,.4);color:var(--ok)}
.flash--error{border-color:var(--line-red);color:var(--red-hot)}
.plain-page .flash{position:fixed;top:16px;left:50%;transform:translateX(-50%);z-index:200;
  margin:0;box-shadow:var(--shadow-md)}

/* ==========================================================================
   APP-SHELL
   ========================================================================== */
.app{position:relative;display:grid;height:100%;
  grid-template-columns:214px 1fr;
  grid-template-rows:56px 1fr;
  grid-template-areas:"bar bar" "side main";
  background:linear-gradient(180deg,#141216 0%,#1d1220 42%,#3f1032 78%,#4d0f38 100%)}
.app::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:url("../img/bg.png") center top/cover no-repeat}
.app > *{position:relative;z-index:1}

/* ---------- App-Leiste ---------- */
.abar{grid-area:bar;display:flex;align-items:center;gap:var(--sp-4);
  padding:0 var(--sp-4) 0 var(--sp-3);background:#0A0709}
.abar::after{content:"";position:absolute;left:0;right:0;top:100%;height:9px;z-index:3;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='9'%3E%3Cpath d='M0 0 H80 V3 L70 6 L63 2 L56 5 L49 2 L42 6 L35 3 L28 6 L21 2 L14 5 L7 2 L0 3 Z' fill='%230A0709'/%3E%3C/svg%3E") repeat-x;
  background-size:80px 9px;pointer-events:none}
.abar__brand{flex:none;display:flex;align-items:center}
.abar__logo{height:52px;width:auto;display:block;filter:drop-shadow(0 2px 4px rgba(0,0,0,.9))}
.abar__title{font-family:var(--font-tag);font-size:19px;text-transform:uppercase;
  padding-top:3px;letter-spacing:.01em;white-space:nowrap}
.abar__crumb{font-family:var(--font-ui);font-size:var(--text-xs);text-transform:uppercase;
  letter-spacing:.14em;color:var(--text-mute);border-left:1px solid var(--line-2);
  padding-left:var(--sp-4);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:280px}
.abar .spacer{flex:1}

.tenant select{height:40px;padding:0 10px;background:rgba(255,255,255,.05);
  border:1px solid var(--line);border-radius:4px 9px 5px 8px;color:var(--text-dim);
  font-family:var(--font-ui);font-size:var(--text-sm);max-width:230px}
.tenant select:hover{border-color:var(--line-red);color:#fff}

.iconbtn{position:relative;width:44px;height:44px;border-radius:99px;display:grid;
  place-items:center;color:#CFC9D6;flex:none;
  transition:background var(--t-fast) var(--ease-out),color var(--t-fast) var(--ease-out)}
.iconbtn:hover{background:rgba(255,255,255,.08);color:#fff}
.iconbtn svg{width:20px;height:20px}

.me{display:flex;align-items:center;gap:9px;padding-left:var(--sp-3);flex:none;
  border-left:1px solid var(--line)}
.me__txt{text-align:right}
.me__n{font-family:var(--font-ui);font-size:var(--text-md);font-weight:600;line-height:1.1}
.me__r{font-family:var(--font-mono);font-size:10px;color:var(--red-hot);letter-spacing:.08em;
  text-transform:uppercase}

/* ---------- Seitenleiste ---------- */
.side{grid-area:side;background:rgba(8,5,11,.82);overflow-y:auto;overscroll-behavior:contain;
  padding:var(--sp-3) 8px var(--sp-4);display:flex;flex-direction:column;gap:2px}
.side__group{font-family:var(--font-ui);font-size:var(--text-2xs);text-transform:uppercase;
  letter-spacing:.18em;color:var(--text-faint);padding:14px 10px 6px}
.nav2{position:relative;display:flex;align-items:center;gap:11px;min-height:48px;padding:0 10px;
  border-radius:3px 8px 4px 7px;color:var(--text-dim);
  font-family:var(--font-ui);font-size:var(--text-md);font-weight:600;
  text-transform:uppercase;letter-spacing:.05em;
  transition:background var(--t-fast) var(--ease-out),color var(--t-fast) var(--ease-out)}
.nav2 img{width:28px;height:28px;flex:none;object-fit:contain;opacity:.78;
  filter:drop-shadow(0 1px 2px rgba(0,0,0,.85));
  transition:opacity var(--t-fast) var(--ease-out)}
.nav2__dot{width:28px;height:28px;flex:none;display:grid;place-items:center}
.nav2__dot::before{content:"";width:7px;height:7px;border-radius:99px;background:var(--text-faint)}
.nav2:hover{background:rgba(255,255,255,.055);color:#fff}
.nav2:hover img{opacity:1}
.nav2__t{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nav2[aria-current="page"]{background:rgba(224,30,36,.13);color:#fff}
.nav2[aria-current="page"] img{opacity:1}
.nav2[aria-current="page"] .nav2__dot::before{background:var(--red)}
.nav2__mark{position:absolute;left:8px;right:8px;bottom:2px;height:10px;color:var(--red);
  pointer-events:none}
.nav2__mark .b{width:100%;height:10px;fill:currentColor;
  filter:drop-shadow(0 1px 6px rgba(224,30,36,.6))}
.nav2__mark .d{position:absolute;right:26%;top:5px;width:7px;height:15px;fill:currentColor}

/* ---------- Inhaltsfläche ---------- */
.main{grid-area:main;min-height:0;min-width:0;padding:var(--sp-4);
  overflow-y:auto;overscroll-behavior:contain}

.page__head{display:flex;align-items:flex-end;gap:var(--sp-4);margin-bottom:16px;flex-wrap:wrap}
.page__head h2{font-family:var(--font-tag);font-size:22px;text-transform:uppercase}
.page__head .spacer{flex:1}

.grid{display:grid;gap:16px}
.grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid--main{grid-template-columns:minmax(0,1fr) 340px}
@media (max-width:1100px){
  .grid--3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .grid--main,.grid--2{grid-template-columns:minmax(0,1fr)}
  .app{grid-template-columns:72px 1fr}
  .nav2{justify-content:center;padding:0}
  .nav2__t,.side__group{position:absolute;width:1px;height:1px;padding:0;margin:-1px;
    overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
  .abar__crumb{display:none}
}
@media (max-width:860px){
  .grid--3{grid-template-columns:minmax(0,1fr)}
  .abar__title{font-size:16px}
}

/* ---------- Kennzahlen ---------- */
.kpi{position:relative;background:var(--panel);border:1px solid var(--line);
  border-radius:3px 10px 4px 8px;padding:13px 15px;overflow:hidden}
.kpi::after{content:"";position:absolute;inset:0;background-image:var(--noise);opacity:.05;
  mix-blend-mode:overlay;pointer-events:none}
.kpi--red{border-color:var(--line-red)}
.kpi__l{display:flex;align-items:center;gap:7px;margin-bottom:5px}
.kpi__v{font-family:var(--font-mono);font-size:1.5rem;font-weight:600;letter-spacing:-.03em;
  line-height:1.05}
.kpi__v--ok{color:var(--ok)} .kpi__v--red{color:var(--red-hot)}
.kpi__s{font-size:var(--text-2xs);color:var(--text-mute);margin-top:4px}

/* ---------- Abgerissenes Blatt ---------- */
.paper{position:relative;background-color:var(--panel-2);
  box-shadow:inset 0 10px 16px -12px rgba(0,0,0,.8)}
.paper::before{content:"";position:absolute;top:0;left:0;right:0;height:13px;z-index:4;
  background:radial-gradient(circle at 24px 0,#06040A 0 6px,rgba(255,255,255,.07) 6.4px,
    transparent 7px) repeat-x;background-size:48px 13px;pointer-events:none}
.paper::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background-image:var(--noise);opacity:.06;mix-blend-mode:overlay}
.paper > *{position:relative;z-index:1}
.panel::before{height:11px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='11'%3E%3Cpath d='M0 11 H80 V6 L70 3 L63 8 L56 4 L49 8 L42 3 L35 7 L28 3 L21 8 L14 4 L7 8 L0 6 Z' fill='%232A1C38'/%3E%3C/svg%3E");
  background-size:80px 11px}

/* ---------- Tabellen / Listenzeilen ---------- */
.row{display:flex;align-items:center;gap:var(--sp-4);min-height:60px;padding:0 var(--sp-4);
  position:relative;color:inherit}
.row + .row::before{content:"";position:absolute;top:0;left:var(--sp-4);right:var(--sp-4);height:1px;
  background:repeating-linear-gradient(90deg,rgba(255,255,255,.11) 0 7px,rgba(255,255,255,.02) 7px 11px)}
.row:hover{background:rgba(255,255,255,.04)}
.row__main{flex:1;min-width:0}
.row__t{font-family:var(--font-ui);font-size:1.0625rem;font-weight:600;letter-spacing:.02em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row__s{font-size:var(--text-xs);color:var(--text-mute);margin-top:2px}
.row__end{flex:none;display:flex;align-items:center;gap:10px}

/* ---------- Formulare ---------- */
.field{margin-bottom:var(--sp-4)}
.field label{display:block;font-family:var(--font-ui);font-size:var(--text-xs);font-weight:600;
  text-transform:uppercase;letter-spacing:.12em;color:var(--text-mute);margin-bottom:6px}
.field input[type=text],.field input[type=number],.field input[type=color],
.field select,.field textarea{
  width:100%;min-height:44px;padding:10px 12px;background:var(--input-bg,rgba(0,0,0,.35));
  border:1px solid var(--line-2);border-radius:3px 8px 4px 7px;color:var(--text);
  font-family:var(--font-body);font-size:var(--text-sm)}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none;border-color:var(--red);box-shadow:0 0 0 3px rgba(224,30,36,.15)}
.field textarea{min-height:90px;resize:vertical}
.field input[type=color]{padding:4px;height:44px}
.field__hint{font-size:var(--text-2xs);color:var(--text-faint);margin-top:5px}
.field--row{display:flex;gap:var(--sp-3);align-items:flex-end}
.field--row > *{flex:1}
.check{display:flex;align-items:center;gap:9px;min-height:44px;cursor:pointer;
  font-size:var(--text-sm);color:var(--text-dim)}
.check input{width:18px;height:18px;accent-color:var(--red);flex:none}
.form__actions{display:flex;gap:var(--sp-2);padding-top:var(--sp-2)}

/* ---------- Rechte-Matrix ---------- */
.matrix{display:grid;gap:var(--sp-4)}
.matrix__group{border:1px solid var(--line);border-radius:3px 10px 4px 8px;overflow:hidden}
.matrix__head{padding:9px 13px;background:var(--panel-head);
  font-family:var(--font-ui);font-size:var(--text-xs);font-weight:700;
  text-transform:uppercase;letter-spacing:.12em}
.matrix__body{padding:6px 13px 11px;display:grid;gap:2px}

/* ---------- Kleinteile ---------- */
.tag{display:inline-flex;align-items:center;height:22px;padding:0 9px;border-radius:99px;
  font-family:var(--font-ui);font-size:var(--text-2xs);font-weight:700;
  text-transform:uppercase;letter-spacing:.09em;border:1px solid currentColor;opacity:.9}
.muted-box{padding:var(--sp-6) var(--sp-4);text-align:center;color:var(--text-mute);
  font-size:var(--text-sm)}
.stack{display:flex;flex-direction:column;gap:16px;min-height:0}
.scroll-y{overflow-y:auto;overscroll-behavior:contain}

/* ---------- Anmeldeseite ---------- */
.plain-page{min-height:100vh;display:grid;place-items:center;padding:var(--sp-6);
  background:
    radial-gradient(120% 80% at 50% 0%,transparent 40%,rgba(5,3,7,.6) 100%),
    linear-gradient(180deg,#141216 0%,#1d1220 42%,#3f1032 78%,#4d0f38 100%)}
.plain-page::before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:url("../img/bg.png") center top/cover no-repeat}
.login{position:relative;z-index:1;width:min(420px,100%);display:flex;
  flex-direction:column;align-items:center;gap:var(--sp-5)}
.login__logo{width:min(320px,80%);height:auto;display:block;
  filter:drop-shadow(0 6px 18px rgba(0,0,0,.9))}
.login__card{width:100%}
.login__card .panel__body{padding:var(--sp-5)}
.login__lead{font-size:var(--text-sm);color:var(--text-dim);margin-bottom:var(--sp-4)}
.login__sep{margin:var(--sp-5) 0}
.login__hint{font-size:var(--text-xs);color:var(--text-mute);line-height:1.6}
.login__hint strong{color:var(--text-dim)}

/* ---------- Tablet ---------- */
body.is-tablet .nav2:hover{background:transparent}
body.is-tablet .nav2[aria-current="page"]{background:rgba(224,30,36,.13)}
body.is-tablet .row:hover{background:transparent}
body.is-tablet .paper::after,body.is-tablet .panel::after{display:none}
