:root{
  --bg:#eef0f3; --card:#f9fafb; --ink:#212733; --mut:#68707e; --line:#d4d8df;
  --nav:#1d3557; --navink:#e8edf5; --navmut:#b9c6da; --navline:#3c567d;
  --ok:#1c7d55; --okbg:#e5f3ec; --bad:#b3362f; --badbg:#faeae8; --amb:#9a6410; --ambbg:#faf1de;
  --gold:#b58a1f;
}
html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);
  font:13px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
*{box-sizing:border-box}
button{font:inherit;cursor:pointer}
svg{display:block}
.num{font-variant-numeric:tabular-nums}
.ic{width:14px;height:14px;flex:none}

/* ── Toolbar ─────────────────────────────────────────── */
.bar{background:var(--nav);color:var(--navink);padding:0 18px;display:flex;align-items:stretch;gap:18px;flex-wrap:wrap;position:sticky;top:0;z-index:40}
.brand{display:flex;align-items:center;gap:9px;padding:11px 0;font-size:13.5px;font-weight:650;letter-spacing:.03em}
.brand .logo{width:22px;height:22px;border-radius:5px;background:linear-gradient(135deg,#4a7dd8,#1d3557);display:grid;place-items:center;font-size:11px;font-weight:800;color:#fff}
.brand small{color:var(--navmut);font-weight:400;font-size:11px}
nav{display:flex;gap:2px;margin-left:6px}
nav button{background:transparent;border:0;color:var(--navmut);padding:0 13px;font-size:12.5px;border-bottom:2px solid transparent;display:flex;align-items:center;gap:7px}
nav button:hover{color:#fff}
nav button.on{color:#fff;border-bottom-color:#7ea4e0}
nav button:focus-visible{outline:2px solid #7ea4e0;outline-offset:-2px}
.bar .right{margin-left:auto;display:flex;align-items:center;gap:10px;padding:9px 0}
.bar .per{border:1px solid var(--navline);border-radius:4px;padding:4px 9px;font-size:11px;color:var(--navmut)}
.live-btn{background:#2a4a75;border:1px solid #4a6da0;color:#fff;border-radius:4px;padding:4px 11px;font-size:11.5px;display:flex;align-items:center;gap:6px}
.live-btn .dot{width:7px;height:7px;border-radius:99px;background:#59d99d}
.pub{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--navmut)}
.pub .av{width:24px;height:24px;border-radius:99px;background:#4a7dd8;color:#fff;display:grid;place-items:center;font-size:10px;font-weight:700}

.wrap{max-width:1240px;margin:0 auto;padding:16px 18px 60px}
.view{display:none}
.view.on{display:block}

/* ── Bausteine ───────────────────────────────────────── */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin-bottom:12px}
.st{background:var(--card);border:1px solid var(--line);border-radius:6px;padding:11px 13px}
.st .lb{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--mut);display:flex;gap:6px;align-items:center}
.st .v{font-size:21px;font-weight:700;margin-top:4px}
.st .d{font-size:10.5px;color:var(--ok);margin-top:1px}
.st .d.n{color:var(--bad)}
.st.hl{border-color:#9db8dd;background:#f2f6fc}
.card{background:var(--card);border:1px solid var(--line);border-radius:6px;padding:14px 16px;margin-bottom:12px}
.card h3{margin:0 0 11px;font-size:10.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--mut);font-weight:650;display:flex;align-items:center;gap:7px}
.card h3 .grow{flex:1}
.cols{display:grid;grid-template-columns:1.6fr 1fr;gap:12px}
@media(max-width:880px){.cols{grid-template-columns:1fr}}
.tblwrap{overflow-x:auto}
table{border-collapse:collapse;width:100%;min-width:860px}
th{text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.07em;font-weight:650;
   padding:7px 9px;background:#e5e8ed;color:#4d5561;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:7px 9px;border-bottom:1px solid var(--line);font-size:12.5px;background:var(--card);white-space:nowrap}
tr.rowlink{cursor:pointer}
tr.rowlink:hover td{background:#f0f4f9}
tr.q td:first-child{box-shadow:inset 3px 0 0 var(--ok)}
tr.u td:first-child{box-shadow:inset 3px 0 0 var(--bad)}
tr.m td:first-child{box-shadow:inset 3px 0 0 var(--ok)}
tr.new td{animation:flash 1.6s ease}
@keyframes flash{0%{background:#fdf6dd}100%{background:var(--card)}}
@media (prefers-reduced-motion: reduce){tr.new td{animation:none}}
.tag{font-size:10.5px;font-weight:700;letter-spacing:.02em}
.tag.ok{color:var(--ok)} .tag.no{color:var(--bad)} .tag.md{color:var(--amb)}
a.doc{color:var(--nav);text-decoration:none;display:inline-flex;gap:5px;align-items:center;font-weight:600;font-size:12px}
a.doc:hover{text-decoration:underline}
.chip{display:inline-block;font-size:10.5px;border:1px solid var(--line);border-radius:99px;padding:2px 8px;background:#fff;color:var(--mut)}
.filter{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.filter select,.filter input{font:12px system-ui;border:1px solid var(--line);border-radius:4px;padding:5px 8px;background:#fff;color:var(--ink)}
.bars .row{display:grid;grid-template-columns:150px 1fr 44px;gap:10px;align-items:center;margin-bottom:7px;font-size:12px}
.bars .tr{height:7px;background:#e2e5ea;border-radius:3px;overflow:hidden}
.bars .tr i{display:block;height:100%;background:var(--nav)}
.legend{display:flex;gap:14px;font-size:11px;color:var(--mut);flex-wrap:wrap}
.legend b{color:var(--ink)}
.ld{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px;vertical-align:-1px}

/* Journey */
.jsteps{display:grid;grid-template-columns:repeat(5,1fr);gap:0;margin-bottom:14px}
@media(max-width:880px){.jsteps{grid-template-columns:1fr 1fr}}
.js{padding:12px 14px 14px;border-top:3px solid var(--line);background:var(--card);border-right:1px solid var(--line)}
.js:last-child{border-right:0}
.js.hot{border-top-color:var(--nav)}
.js .t{font-size:11px;color:var(--mut)}
.js .b{font-size:16px;font-weight:750;margin-top:3px}
.js .s{font-size:10.5px;color:var(--ok);margin-top:2px}
.wa{max-width:430px;background:#e5ddd5;border:1px solid var(--line);border-radius:8px;padding:14px;background-image:radial-gradient(#d9d0c7 1px,transparent 1px);background-size:18px 18px}
.wa .msg{background:#fff;border-radius:0 8px 8px 8px;padding:8px 11px;margin-bottom:9px;max-width:88%;box-shadow:0 1px 1px #0002;font-size:12.5px}
.wa .msg .time{font-size:9.5px;color:#8a939e;text-align:right;margin-top:3px}
.wa .msg b{color:#075e54}
.wa .day{text-align:center;margin:8px 0}
.wa .day span{background:#d5e5f0;border-radius:6px;font-size:10px;padding:3px 9px;color:#3b5163}

/* Detail-Drawer */
.ovl{position:fixed;inset:0;background:#10141f66;z-index:60;display:none}
.ovl.on{display:block}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(760px,96vw);background:var(--bg);z-index:61;
  transform:translateX(102%);transition:transform .25s ease;overflow-y:auto;border-left:1px solid var(--line);box-shadow:-12px 0 40px #10141f33}
.drawer.on{transform:none}
@media (prefers-reduced-motion: reduce){.drawer{transition:none}}
.drawer .dh{background:var(--nav);color:#fff;padding:13px 18px;display:flex;justify-content:space-between;align-items:center;position:sticky;top:0}
.drawer .dh h2{margin:0;font-size:13.5px;font-weight:650}
.drawer .dh button{background:transparent;border:1px solid var(--navline);color:#fff;border-radius:4px;padding:3px 10px;font-size:12px}
.drawer .db{padding:16px 18px}
.kv{display:grid;grid-template-columns:1fr 1fr;gap:8px 18px;font-size:12.5px}
@media(max-width:600px){.kv{grid-template-columns:1fr}}
.kv div{display:flex;justify-content:space-between;gap:10px;border-bottom:1px dotted var(--line);padding:5px 0}
.kv span{color:var(--mut)}
.kv b{font-weight:650;text-align:right}
/* geschwärzter Beleg */
.beleg{background:#fff;border:1px solid var(--line);border-radius:4px;padding:20px 22px;max-width:430px;box-shadow:0 2px 8px #10141f14;font:11px/1.6 Georgia,serif;color:#333}
.beleg .bh{display:flex;justify-content:space-between;margin-bottom:12px}
.beleg .bh .jc{font-weight:700;font-size:13px;color:#c94f16}
.beleg .red{display:inline-block;background:#111;border-radius:1px;color:transparent;user-select:none}
.beleg p{margin:0 0 7px}
.beleg .stamp{margin-top:10px;display:inline-block;border:2px solid #1c7d55;color:#1c7d55;font:700 10px system-ui;padding:3px 8px;border-radius:3px;transform:rotate(-3deg);letter-spacing:.06em}
.beleg .stamp.no{border-color:#b3362f;color:#b3362f}
.beleg .wm{position:relative}
.belegwrap{position:relative;display:inline-block}
.belegwrap::after{content:attr(data-wm);position:absolute;inset:auto 0 42%;text-align:center;
  transform:rotate(-24deg);font:700 15px system-ui;color:#1d355722;letter-spacing:.1em;pointer-events:none}
.timeline{border-left:2px solid var(--line);margin:6px 0 4px 7px;padding-left:16px}
.tstep{position:relative;padding-bottom:13px;font-size:12.5px}
.tstep::before{content:"";position:absolute;left:-22.5px;top:2px;width:11px;height:11px;border-radius:99px;background:#fff;border:2.5px solid var(--line)}
.tstep.done::before{background:var(--ok);border-color:var(--ok)}
.tstep.now::before{background:#fff;border-color:var(--nav)}
.tstep .tt{font-weight:650}
.tstep .td{color:var(--mut);font-size:11px}
.paybar{height:8px;border-radius:4px;background:#e2e5ea;overflow:hidden;margin:8px 0 4px}
.paybar i{display:block;height:100%;background:linear-gradient(90deg,#2a5a8f,var(--nav));width:57%}
details.nachweis{border:1px solid var(--line);border-radius:5px;background:#fff;margin-top:8px}
details.nachweis summary{cursor:pointer;padding:8px 12px;font-size:12px;font-weight:600;list-style:none;display:flex;justify-content:space-between}
details.nachweis summary::after{content:"▾";color:var(--mut)}
details.nachweis[open] summary::after{content:"▴"}
details.nachweis .rows{padding:0 12px 10px;font-size:11.5px;color:var(--mut)}
details.nachweis .rows div{display:flex;justify-content:space-between;padding:3px 0;border-top:1px dotted var(--line)}
.cta{display:inline-block;background:#e8590c;color:#fff;font-size:9.5px;font-weight:700;border-radius:3px;padding:1.5px 6px;letter-spacing:.02em;vertical-align:1px}
tr.hl td{background:#fff4ec !important;box-shadow:inset 0 0 0 1px #e8590c55}
tr.hl td:first-child{box-shadow:inset 3px 0 0 #e8590c,inset 0 0 0 1px #e8590c55}
.flychip{position:fixed;z-index:80;background:#fff;border:1.5px solid #e8590c;border-radius:7px;box-shadow:0 10px 34px #10141f3d;
  padding:7px 12px;font:600 12px system-ui;display:flex;gap:7px;align-items:center;color:#212733;
  transition:all 1.15s cubic-bezier(.5,.05,.25,1);pointer-events:none}
.ovlbox{position:fixed;left:20px;top:50%;z-index:75;background:#ffffffF2;border:1px solid var(--line);border-left:4px solid var(--nav);
  border-radius:8px;box-shadow:0 14px 44px #10141f2e;padding:13px 17px 11px;min-width:250px;max-width:330px;
  transform:translate(-150%,-50%);transition:transform .34s cubic-bezier(.2,.9,.3,1)}
.ovlbox.on{transform:translateY(-50%)}
.ovlbox h5{margin:0 0 7px;font:700 10.5px system-ui;text-transform:uppercase;letter-spacing:.11em;color:var(--nav)}
.ovlbox .oi{display:flex;gap:8px;align-items:center;font:600 12.5px system-ui;color:#212733;padding:3.5px 0;
  opacity:0;transform:translateX(-14px);transition:all .4s ease}
.ovlbox .oi.in{opacity:1;transform:none}
.ovlbox .oi svg{width:13px;height:13px;color:var(--ok)}
@media (prefers-reduced-motion: reduce){.ovlbox,.ovlbox .oi,.flychip{transition:none}}
/* Toast */
.toast{position:fixed;right:18px;top:64px;z-index:70;background:var(--nav);color:#fff;border-radius:6px;padding:11px 16px;font-size:12.5px;
  box-shadow:0 8px 30px #10141f44;display:none;align-items:center;gap:9px}
.toast.on{display:flex;animation:slide .3s ease}
@keyframes slide{from{transform:translateY(-8px);opacity:0}to{transform:none;opacity:1}}
.toast .dot{width:8px;height:8px;border-radius:99px;background:#59d99d}
@media (prefers-reduced-motion: reduce){.toast.on{animation:none}}

/* ── Login-Screen (nur wenn /auth/me 401) ─────────────── */
.login{position:fixed;inset:0;z-index:100;background:linear-gradient(160deg,#22406b,#152a49);display:none;place-items:center;padding:20px}
.login.on{display:grid}
.login .box{background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:0 20px 60px #0006;padding:26px 28px;width:min(400px,94vw)}
.login .box .lg{display:flex;align-items:center;gap:9px;font-weight:650;font-size:14px;letter-spacing:.03em;margin-bottom:4px}
.login .box .lg .logo{width:24px;height:24px;border-radius:6px;background:linear-gradient(135deg,#4a7dd8,#1d3557);display:grid;place-items:center;font-size:12px;font-weight:800;color:#fff}
.login .box small{color:var(--mut)}
.login h1{font-size:18px;margin:16px 0 4px}
.login p{color:var(--mut);font-size:12.5px;margin:0 0 16px}
.login label{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--mut);display:block;margin-bottom:5px}
.login input{width:100%;border:1px solid var(--line);border-radius:6px;padding:10px 12px;font:14px system-ui;background:#fff;color:var(--ink)}
.login button{margin-top:12px;width:100%;background:var(--nav);color:#fff;border:0;border-radius:6px;padding:11px;font:650 14px system-ui}
.login button:disabled{opacity:.55;cursor:default}
.login .msg{margin-top:14px;font-size:12.5px;padding:10px 12px;border-radius:6px;display:none}
.login .msg.on{display:block}
.login .msg.ok{background:var(--okbg);color:var(--ok);border:1px solid #bfe2cf}
.login .msg.err{background:var(--badbg);color:var(--bad);border:1px solid #eecac6}
.login .msg a{color:var(--nav);font-weight:650;word-break:break-all}
