:root{
  --brand:#E45722;
  --brand-dark:#c4441a;
  --ink:#1f2329;
  --muted:#6b7280;
  --line:#e5e7eb;
  --bg:#f5f6f8;
  --card:#ffffff;
  --ok:#137333;
  --err:#b00020;
  --radius:10px;
  --shadow:0 1px 3px rgba(0,0,0,.07),0 1px 2px rgba(0,0,0,.04);
}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  color:var(--ink);background:var(--bg);line-height:1.5;font-size:15px}
a{color:var(--brand);text-decoration:none}
a:hover{text-decoration:underline}
h1{font-size:1.5rem;margin:0}
h2{font-size:1.15rem;margin:0 0 .75rem}
h3{font-size:1rem;margin:1rem 0 .25rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}

/* ---------- Topbar ---------- */
.topbar{display:flex;align-items:center;gap:1.5rem;background:#fff;border-bottom:1px solid var(--line);
  padding:0 1.25rem;height:60px;position:sticky;top:0;z-index:10}
.brand{display:flex;align-items:center;gap:.55rem;font-weight:700;color:var(--ink)}
.brand:hover{text-decoration:none}
.brand-logo{height:34px;width:auto;display:block}
.brand-mark{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;
  background:var(--brand);color:#fff;border-radius:8px;font-weight:800}
.brand-mark.big{width:52px;height:52px;font-size:1.6rem;border-radius:12px;margin:0 auto}
.brand-text{font-weight:700}
.mainnav{display:flex;gap:.25rem;flex:1;flex-wrap:wrap}
.mainnav a{padding:.4rem .7rem;border-radius:7px;color:var(--ink);font-weight:500}
.mainnav a:hover{background:var(--bg);text-decoration:none}
.mainnav a.active{background:var(--brand);color:#fff}
.userbox{display:flex;align-items:center;gap:.75rem}
.user-name{color:var(--ink);font-weight:600}
.btn-link{background:none;border:none;color:var(--brand);cursor:pointer;font:inherit;padding:0}
.btn-link.danger{color:var(--err)}
.inline{display:inline}
/* Firmenlogo oben rechts in der Kopfzeile */
.topbar-logo{display:flex;align-items:center;margin-left:1rem;padding-left:1rem;border-left:1px solid var(--line)}
.topbar-logo img{height:38px;width:auto;display:block}
@media(max-width:820px){.topbar-logo{display:none}}

/* ---------- Layout ---------- */
.container{max-width:1080px;margin:1.5rem auto;padding:0 1.25rem}
.page-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.25rem;flex-wrap:wrap}
.cols{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}
@media(max-width:820px){.cols{grid-template-columns:1fr}}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:1.25rem;margin-bottom:1.25rem}
.card.narrow{max-width:560px}

/* ---------- Auth ---------- */
.bare{display:flex;min-height:100vh;align-items:center;justify-content:center}
.auth-wrap{width:100%;display:flex;justify-content:center;padding:2rem 1rem}
.auth-card{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);
  width:100%;max-width:440px;overflow:hidden}
.auth-card.wide{max-width:760px;padding:2rem}
.auth-banner{background:#eff0f1;border-bottom:1px solid var(--line)}
.auth-banner img{display:block;width:100%;height:auto}
.auth-body{padding:1.75rem 2rem 2rem}
.auth-logo{height:46px;width:auto;display:block;margin:0 auto .4rem}
.auth-head{text-align:center;margin-bottom:1.5rem}
.auth-head h1{margin:.6rem 0 .15rem}
.auth-head p{margin:0;color:var(--muted)}
.auth-alt{text-align:center;margin-top:1rem;color:var(--muted)}

/* ---------- Forms ---------- */
label{display:block;font-weight:600;margin-bottom:.1rem;font-size:.9rem}
input,select,textarea{width:100%;padding:.55rem .65rem;border:1px solid var(--line);border-radius:8px;
  font:inherit;background:#fff;margin-top:.2rem}
input:focus,select:focus,textarea:focus{outline:2px solid var(--brand);border-color:var(--brand)}
.stack{display:flex;flex-direction:column;gap:.85rem}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:.85rem 1rem}
.grid2 .span2{grid-column:1/-1}
@media(max-width:680px){.grid2{grid-template-columns:1fr}.grid2 .span2{grid-column:auto}}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:.85rem}
.row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.85rem}
@media(max-width:560px){.row2,.row3{grid-template-columns:1fr}}
.chk{display:flex;align-items:center;gap:.5rem;font-weight:500}
.chk input{width:auto;margin:0}
.form-actions{display:flex;gap:.6rem;margin-top:.5rem;flex-wrap:wrap}
fieldset.comm{border:1px solid var(--line);border-radius:10px;padding:1rem;margin:.4rem 0}
fieldset.comm legend{font-weight:700;padding:0 .4rem;color:var(--brand)}
.upload-row{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;margin-top:.85rem}
.upload-row input[type=file]{width:auto}

/* ---------- Buttons ---------- */
.btn{display:inline-block;background:#fff;border:1px solid var(--line);color:var(--ink);
  padding:.55rem 1rem;border-radius:8px;cursor:pointer;font:inherit;font-weight:600;text-align:center}
.btn:hover{text-decoration:none;border-color:#cfd3d8}
.btn-primary{background:var(--brand);border-color:var(--brand);color:#fff}
.btn-primary:hover{background:var(--brand-dark);border-color:var(--brand-dark)}
.btn-primary:disabled{opacity:.5;cursor:not-allowed}
.btn-ghost{background:#fff}
.btn-ghost.danger{color:var(--err);border-color:#f0c3c9}
.btn-sm{padding:.3rem .6rem;font-size:.85rem}
.btn-block{width:100%}

/* ---------- KPIs ---------- */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;margin-bottom:1.5rem}
.kpi{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);
  padding:1.1rem;display:flex;flex-direction:column;gap:.2rem}
.kpi-val{font-size:1.6rem;font-weight:800;color:var(--ink)}
.kpi-lbl{color:var(--muted);font-size:.85rem}
.kpi-alert{border-color:var(--brand);background:#fff7f3}
.kpi-alert .kpi-val{color:var(--brand)}

/* ---------- Tables ---------- */
table.data{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
table.data th,table.data td{padding:.6rem .75rem;text-align:left;border-bottom:1px solid var(--line);font-size:.92rem}
table.data th{background:#fafbfc;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
table.data tr:last-child td{border-bottom:none}
table.data tr:hover td{background:#fcfcfd}

/* ---------- Badges ---------- */
.badge{display:inline-block;padding:.18rem .55rem;border-radius:999px;background:#eef0f3;color:#374151;
  font-size:.78rem;font-weight:600;white-space:nowrap}
.badge-pending{background:#fff3e0;color:#9a5b00}
.badge-active{background:#e6f4ea;color:var(--ok)}
.badge-rejected{background:#fde7ea;color:var(--err)}

/* ---------- Misc ---------- */
.muted{color:var(--muted);font-size:.9rem}
.ok{color:var(--ok);font-weight:700}
.ok-line{color:var(--ok)}
.notes{background:#fafbfc;border:1px solid var(--line);border-radius:8px;padding:.75rem;margin-top:.75rem}
.kv{display:grid;grid-template-columns:auto 1fr;gap:.3rem 1rem;margin:0}
.kv dt{color:var(--muted);font-weight:600;font-size:.85rem}
.kv dd{margin:0}
.flash{padding:.7rem 1rem;border-radius:8px;margin-bottom:1rem;font-weight:500}
.flash-success{background:#e6f4ea;color:var(--ok);border:1px solid #b7dfc2}
.flash-error{background:#fde7ea;color:var(--err);border:1px solid #f3c0c8}
.calc-box{background:#fafbfc;border:1px solid var(--line);border-radius:8px;padding:.75rem;margin:.5rem 0}
.calc-box div{display:flex;justify-content:space-between;padding:.2rem 0;font-size:.92rem}
.calc-total{border-top:1px solid var(--line);margin-top:.3rem;padding-top:.4rem!important;font-size:1.05rem!important}
.calc-total strong{color:var(--brand)}
.doclist{list-style:none;padding:0;margin:0}
.doclist li{padding:.4rem 0;border-bottom:1px solid var(--line)}
.doclist li:last-child{border-bottom:none}
.approve-bar{display:flex;align-items:center;gap:1rem;background:#fff7f3;border:1px solid var(--brand);
  border-radius:var(--radius);padding:.85rem 1.1rem;margin-bottom:1.25rem;flex-wrap:wrap}
.welcome ol{margin:.4rem 0 .6rem 1.1rem;padding:0}
.welcome li{margin:.25rem 0}
.appfoot{text-align:center;color:var(--muted);font-size:.82rem;padding:2rem 1rem}

/* ---------- Progress ---------- */
.progress{display:flex;flex-wrap:wrap;gap:0}
.step{display:flex;flex-direction:column;align-items:center;flex:1;min-width:90px;position:relative;padding:0 .25rem}
.step .dot{width:16px;height:16px;border-radius:50%;background:#d4d8dd;border:3px solid #fff;box-shadow:0 0 0 1px var(--line);z-index:1}
.step .lbl{font-size:.72rem;color:var(--muted);text-align:center;margin-top:.4rem}
.step::before{content:"";position:absolute;top:8px;left:-50%;width:100%;height:3px;background:var(--line);z-index:0}
.step:first-child::before{display:none}
.step.done .dot{background:var(--brand);box-shadow:0 0 0 1px var(--brand)}
.step.done .lbl{color:var(--ink);font-weight:600}
.step.done::before{background:var(--brand)}

/* ---------- Erfassung (QR) ---------- */
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.auth-card.capture{max-width:760px;padding:1.75rem 2rem 2rem}
.auth-card.capture h1{margin:.4rem 0 0}
.consent-box{background:#fff7f3;border-color:var(--brand)}
.consent-box legend{color:var(--brand)}
.consent{align-items:flex-start;gap:.6rem;font-weight:500;line-height:1.45}
.consent input{margin-top:.2rem}
.big-check{font-size:3rem;color:var(--ok);line-height:1}

/* ---------- QR-Karte ---------- */
.qr-card{max-width:420px;margin:0 auto;text-align:center}
.qr-brand img{height:42px;width:auto;margin-bottom:.5rem}
.qr-title{margin:.2rem 0}
.qr-sub{color:var(--muted);margin:.1rem 0 1rem}
.qrbox{display:flex;justify-content:center;margin:1rem 0}
.qrbox img,.qrbox canvas{display:block}
.qr-instr{margin:.6rem 0 .2rem;font-weight:600}
.qr-url{word-break:break-all;font-size:.82rem;color:var(--muted);background:#fafbfc;border:1px solid var(--line);border-radius:8px;padding:.5rem}
.qr-hint{margin:.6rem 0 0}
.danger{color:var(--err)}

/* ---------- Druck ---------- */
@media print{
  .topbar,.appfoot,.no-print{display:none !important}
  body{background:#fff}
  .container{margin:0;max-width:none}
  .qr-card{border:none;box-shadow:none;max-width:none}
  .qr-url{border:none;background:none}
}
