/* Baysal Elektrotechnik – Oberfläche (Design 5, angelehnt an klassische Handwerker-Software) */
:root{
  --bg:#f5f6f8; --card:#ffffff; --text:#1f2937; --muted:#6b7280; --border:#e5e7eb; --field:#f3f4f6;
  --red:#c8102e; --red-dark:#a30d26; --gray:#8c8c8c; --danger:#dc2626; --ok:#059669;
  --side:#1b2433; --side-hover:#263145; --side-text:#c9d0dc; --side-muted:#8591a5;
  --shadow:0 1px 2px rgba(15,23,42,.05);
  --radius:10px;
  box-sizing:border-box; padding-top:env(safe-area-inset-top,0px); padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){--bg:#12151a;--card:#1c2027;--text:#eceff3;--muted:#9aa3b0;--border:#313742;--field:#272c35;--shadow:none}
}
:root[data-theme="dark"]{--bg:#12151a;--card:#1c2027;--text:#eceff3;--muted:#9aa3b0;--border:#313742;--field:#272c35;--shadow:none}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,"Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",Arial,sans-serif;font-size:15px;line-height:1.4;-webkit-font-smoothing:antialiased}
h1{font-size:1.5rem;font-weight:700;margin:0;letter-spacing:-.02em}
h2{font-size:1.05rem;font-weight:700;margin:0 0 10px}
.sub{color:var(--muted);font-size:.82rem}
a{color:var(--red)}

/* ---------- Rahmen: Seitenleiste + Inhalt ---------- */
#app{min-height:100%}
.main{max-width:860px;margin:0 auto;padding:16px 16px 90px}
.main.wide{max-width:1240px}
.main.narrow{max-width:460px}
body.has-side #app{padding-left:236px}
body.has-side .main{max-width:980px;padding:28px 32px 90px;margin:0}
body.has-side .main.wide{max-width:1240px}
.side{position:fixed;left:0;top:0;bottom:0;width:236px;background:var(--side);color:var(--side-text);display:flex;flex-direction:column;padding:16px 12px 12px;z-index:50;overflow-y:auto}
.side .brand{display:block;background:#fff;border-radius:10px;padding:9px 12px;margin:2px 4px 18px}
.side .brand img{display:block;width:100%;height:auto;max-height:46px;object-fit:contain}
.nav{display:flex;flex-direction:column;gap:2px;flex:1}
.nav-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:8px;color:var(--side-text);cursor:pointer;font-size:.9rem;font-weight:500;white-space:nowrap;border:none;background:transparent;text-align:left;width:100%;-webkit-tap-highlight-color:transparent}
.nav-item:hover{background:var(--side-hover);color:#fff}
.nav-item.active{background:var(--side-hover);color:#fff;box-shadow:inset 3px 0 0 var(--red)}
.nav-item svg{width:18px;height:18px;flex:0 0 18px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.nav-sep{height:1px;background:rgba(255,255,255,.08);margin:8px 6px}
.side-user{border-top:1px solid rgba(255,255,255,.08);padding:12px 4px 2px;margin-top:10px}
.side-user .who{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.side-user .av{width:34px;height:34px;border-radius:50%;background:var(--red);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.8rem;flex:0 0 34px}
.side-user .nm{color:#fff;font-weight:600;font-size:.88rem;line-height:1.15}
.side-user .rl{color:var(--side-muted);font-size:.74rem}
.side-user .acts{display:flex;gap:6px}
.side-user button{flex:1;background:var(--side-hover);color:var(--side-text);border:none;border-radius:8px;padding:8px 6px;font-size:.78rem;font-weight:500}
.side-user button:hover{background:#34425a;color:#fff}

/* ---------- Seitenkopf ---------- */
.page-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:18px}
.page-head .acts{display:flex;gap:8px;flex-wrap:wrap}
.top-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;gap:8px;flex-wrap:wrap}
.back{color:var(--red);cursor:pointer;font-size:.85rem;margin-bottom:10px;display:inline-block;font-weight:600}

/* ---------- Karten, Kennzahlen ---------- */
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin-bottom:14px}
.kpis{display:flex;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px;overflow:hidden;flex-wrap:wrap}
.kpi{flex:1 1 150px;padding:12px 18px;border-right:1px solid var(--border)}
.kpi:last-child{border-right:none}
.kpi .l{font-size:.72rem;color:var(--muted);margin-bottom:3px}
.kpi .v{font-size:1.15rem;font-weight:700;white-space:nowrap}
.kpi .v.red{color:var(--danger)}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:16px}
.stat{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;text-align:left;box-shadow:var(--shadow)}
.stat .ic{width:34px;height:34px;border-radius:9px;background:var(--field);display:flex;align-items:center;justify-content:center;font-size:1.05rem;margin-bottom:10px}
.stat .n{font-size:1.5rem;font-weight:700;line-height:1.1;color:var(--text)}
.stat .l{font-size:.76rem;color:var(--muted);margin-top:3px}
.stat .d{font-size:.72rem;margin-top:5px;color:var(--muted)}
.stat .d b{font-weight:600}
.stat .d .up{color:var(--ok)}
.stat .d .down{color:var(--danger)}
.today-card{display:flex;gap:22px;flex-wrap:wrap;align-items:center}
.today-card .num{font-size:1.4rem;font-weight:700;line-height:1}
.today-card .lab{font-size:.72rem;color:var(--muted)}
.today-card .blk{min-width:70px}
.warnlist{font-size:.8rem;color:var(--danger);font-weight:600;width:100%}

/* ---------- Eingaben, Knöpfe ---------- */
input,select,textarea{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:8px;background:var(--card);color:var(--text);font-size:.95rem;margin-bottom:10px;font-family:inherit}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--red);box-shadow:0 0 0 3px rgba(200,16,46,.12)}
label.chk{display:flex;align-items:center;gap:8px;font-size:.9rem;padding:4px 0;margin-bottom:0;cursor:pointer}
label.chk input{width:auto;margin:0}
button{background:var(--red);color:#fff;border:none;border-radius:8px;padding:9px 16px;font-size:.9rem;font-weight:600;cursor:pointer;font-family:inherit;transition:background .12s,opacity .12s}
button:hover{background:var(--red-dark)}
button:active{opacity:.9}
button.secondary{background:var(--card);color:var(--text);border:1px solid var(--border)}
button.secondary:hover{background:var(--field)}
button.gray{background:var(--field);color:var(--text)}
button.gray:hover{background:var(--border)}
button.danger{background:var(--danger)}
button.sm{padding:6px 12px;font-size:.8rem}
button:disabled{opacity:.5;cursor:default}
.row{display:flex;gap:8px;flex-wrap:wrap}
.row>*{flex:1;min-width:100px}
.hidden{display:none}
.error{color:var(--danger);font-size:.85rem;margin-bottom:8px}
.ok-msg{color:var(--ok);font-size:.85rem;margin-bottom:8px}

/* ---------- Tabs (Unterstrich) ---------- */
.tabs{display:flex;gap:2px;margin-bottom:14px;border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tab{padding:9px 14px;cursor:pointer;font-size:.88rem;color:var(--muted);border-bottom:2px solid transparent;white-space:nowrap;flex:0 0 auto;font-weight:500;margin-bottom:-1px}
.tab:hover{color:var(--text)}
.tab.active{color:var(--red);border-color:var(--red);font-weight:600}

/* ---------- Listen ---------- */
.list-item{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid var(--border);gap:8px;flex-wrap:wrap}
.list-item:last-child{border-bottom:none}
.list-item>div:first-child{flex:1 1 200px;min-width:0}
.list-item .info{cursor:pointer;flex:1}
.badge{font-size:.72rem;padding:3px 9px;border-radius:999px;background:var(--field);color:var(--muted);white-space:nowrap;font-weight:600}
.badge.status-offen{background:#fef3c7;color:#92400e}
.badge.status-progress{background:#dbeafe;color:#1e40af}
.badge.status-fertig{background:#d1fae5;color:#065f46}
.badge.inactive{background:#fee2e2;color:#991b1b}
.badge.okdot{background:#d1fae5;color:#065f46}
.badge.okdot::before{content:"● ";font-size:.6rem}
.badge.new{background:var(--red);color:#fff}

/* Status-Pillen für Belege */
.pill{display:inline-block;font-size:.7rem;font-weight:700;padding:3px 10px;border-radius:999px;white-space:nowrap;background:#e5e7eb;color:#4b5563}
.pill.s-entwurf{background:#e5e7eb;color:#4b5563}
.pill.s-unbezahlt,.pill.s-ausstehend{background:#fbeaa8;color:#7a5b00}
.pill.s-ueberfaellig{background:#f4a6a0;color:#7f1d1d}
.pill.s-zahlungserinnerung{background:#f7b6a1;color:#7c2d12}
.pill.s-mahnung1{background:#ee8f86;color:#7f1d1d}
.pill.s-mahnung2{background:#d9534f;color:#fff}
.pill.s-bezahlt,.pill.s-angenommen,.pill.s-abgerechnet{background:#bfe8cf;color:#14532d}
.pill.s-erstattet,.pill.s-storniert,.pill.s-abgelehnt{background:#e5e7eb;color:#6b7280}

/* ---------- Belegtabelle ---------- */
.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.filters .grow{flex:1}
.filters input.search{margin:0;width:240px;max-width:100%}
.dd{position:relative}
.dd>button{background:var(--card);color:var(--text);border:1px solid var(--border);display:flex;align-items:center;gap:8px;font-weight:500;padding:8px 12px;font-size:.84rem}
.dd>button:hover{background:var(--field)}
.dd>button .cnt{background:var(--red);color:#fff;border-radius:999px;font-size:.68rem;padding:1px 7px;font-weight:700}
.dd>button::after{content:"";border:4px solid transparent;border-top-color:currentColor;margin-top:4px}
.dd-menu{display:none;position:absolute;left:0;top:calc(100% + 4px);min-width:230px;background:var(--card);border:1px solid var(--border);border-radius:10px;box-shadow:0 10px 30px rgba(15,23,42,.18);padding:6px;z-index:60;max-height:70vh;overflow:auto}
.dd.open .dd-menu{display:block}
.dd-menu label.chk{padding:7px 10px;border-radius:6px;font-size:.88rem}
.dd-menu label.chk:hover{background:var(--field)}
.dd-menu .reset{display:block;width:100%;margin-top:6px;border-top:1px solid var(--border);border-radius:0 0 6px 6px;background:transparent;color:var(--muted);padding:9px 10px 5px;text-align:left;font-weight:500}
.dd-menu .reset:hover{background:transparent;color:var(--red)}
.dd-menu .opt{display:block;width:100%;text-align:left;background:transparent;color:var(--text);padding:8px 10px;border-radius:6px;font-weight:500;font-size:.88rem}
.dd-menu .opt:hover,.dd-menu .opt.on{background:var(--field);color:var(--red)}
.dd-menu .range{display:flex;gap:8px;padding:8px 6px 4px;border-top:1px solid var(--border);margin-top:6px}
.dd-menu .range label{font-size:.7rem;color:var(--muted);flex:1}
.dd-menu .range input{margin:2px 0 0;padding:6px 8px;font-size:.84rem}
.tbl-wrap{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
table.dtable{width:100%;border-collapse:collapse;font-size:.88rem}
.dtable th{font-size:.72rem;font-weight:600;color:var(--muted);text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);white-space:nowrap;background:var(--card)}
.dtable th.sortable{cursor:pointer;user-select:none}
.dtable th.sortable:hover{color:var(--text)}
.dtable td{padding:13px 12px;border-bottom:1px solid var(--border);vertical-align:middle}
.dtable tbody tr{cursor:pointer}
.dtable tbody tr:hover{background:var(--field)}
.dtable tbody tr:last-child td{border-bottom:none}
.dtable .r{text-align:right;white-space:nowrap}
.dtable .nr{font-weight:700;white-space:nowrap}
.dtable .ell{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dtable .neg{color:var(--danger)}
.dtable .due-late{color:var(--danger);font-weight:600}
.empty{padding:30px 16px;text-align:center;color:var(--muted)}
.more{display:block;margin:12px auto}

/* ---------- Kacheln (Baustellen, Mitarbeiter) ---------- */
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:12px}
.tile{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:6px;cursor:pointer;transition:border-color .12s,box-shadow .12s}
.tile:hover{border-color:#cfd3da;box-shadow:0 4px 14px rgba(15,23,42,.08)}
.tile .info{cursor:pointer}
.tile-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.tile-ico{width:36px;height:36px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:1.1rem;background:var(--field)}
.tile.st-offen .tile-ico{background:#fef3c7}
.tile.st-progress .tile-ico{background:#dbeafe}
.tile.st-fertig .tile-ico{background:#d1fae5}
.tile-name{font-size:1rem;font-weight:700}
.stale{color:var(--danger);font-size:.78rem;font-weight:600;margin-top:4px}
.emp-tile{gap:8px;cursor:default}
.emp-top{display:flex;justify-content:space-between;align-items:center}
.avatar{width:40px;height:40px;border-radius:10px;background:var(--red);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.9rem}
.emp-actions{gap:6px;margin-top:4px}
.emp-actions button{flex:1;min-width:0;padding:7px 6px;font-size:.74rem}
.fab{position:fixed;right:24px;bottom:26px;z-index:40;width:54px;height:54px;border-radius:50%;padding:0;display:flex;align-items:center;justify-content:center;font-size:1.6rem;line-height:1;box-shadow:0 8px 20px rgba(200,16,46,.35)}
.fab:hover{background:var(--red-dark)}

/* ---------- Chat ---------- */
.photos,.gallery{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.photos img,.gallery img{width:80px;height:80px;object-fit:cover;border-radius:8px;cursor:pointer}
.gallery img{width:104px;height:104px}
.chat-box{display:flex;flex-direction:column;gap:2px;padding:6px 2px;min-height:120px}
.msg{max-width:80%;margin-bottom:10px;display:flex;flex-direction:column}
.msg.own{align-self:flex-end;align-items:flex-end}
.msg.other{align-self:flex-start;align-items:flex-start}
.msg .bubble{background:var(--field);border-radius:16px;padding:9px 13px;font-size:.92rem;white-space:pre-wrap;word-break:break-word}
.msg.other .bubble{border-bottom-left-radius:5px;background:var(--card);border:1px solid var(--border)}
.msg.own .bubble{background:var(--red);color:#fff;border-bottom-right-radius:5px}
.msg .meta{font-size:.68rem;color:var(--muted);margin:2px 6px}
.msg .del{cursor:pointer;color:var(--danger);margin-left:6px}
.msg .photos{margin-top:4px}
.msg.pending .bubble{opacity:.7}
.msg.failed .bubble{outline:2px solid var(--danger)}
.bubble img{width:104px;height:104px;object-fit:cover;border-radius:10px;cursor:pointer;background:var(--field)}
.bubble .photos{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.chat-input{position:sticky;bottom:10px;background:var(--card);border:1px solid var(--border);border-radius:14px;padding:6px 6px 6px 10px;display:flex;gap:6px;align-items:flex-end;box-shadow:0 4px 16px rgba(15,23,42,.1)}
.chat-input textarea{margin:0;resize:none;min-height:40px;max-height:100px;border:none;background:transparent;box-shadow:none!important}
.chat-input select{background:var(--field);padding:8px 10px;margin:0}
.attach-btn{background:var(--field);color:var(--text);border-radius:8px;min-width:40px;height:40px;padding:0 10px;display:flex;align-items:center;justify-content:center;cursor:pointer;flex:0 0 auto}
.send-btn{flex:0 0 auto;padding:10px 16px}

/* ---------- Sonstiges ---------- */
.login-wrap{display:flex;flex-direction:column;align-items:center;background:var(--card);border:1px solid var(--border);border-radius:16px;box-shadow:0 10px 40px rgba(15,23,42,.08);padding:34px 22px 26px;margin:40px 0 16px}
.login-wrap img{height:54px;margin-bottom:14px}
.lightbox{position:fixed;inset:0;background:rgba(15,23,42,.6);display:flex;align-items:center;justify-content:center;z-index:100;padding:20px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.lightbox img{max-width:100%;max-height:100%;border-radius:8px}
.assign-box{max-height:160px;overflow-y:auto;border:1px solid var(--border);border-radius:8px;padding:8px;margin-bottom:10px}
footer{text-align:center;color:var(--muted);font-size:.72rem;margin-top:24px}
.ver{opacity:.6}
.toast-wrap{position:fixed;left:0;right:0;top:12px;z-index:300;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none;padding:0 12px}
.toast{pointer-events:auto;max-width:460px;width:100%;background:var(--card);color:var(--text);border-radius:10px;padding:12px 16px;box-shadow:0 10px 30px rgba(15,23,42,.25);border-left:5px solid var(--red);font-size:.9rem;cursor:pointer}
.toast.ok{border-left-color:#10b981}
.toast.err{border-left-color:#dc2626}
.pending-badge{display:inline-block;font-size:.68rem;margin:0 6px;color:var(--muted)}
.setup-box{max-width:520px;margin:40px auto}
.setup-box code{background:var(--field);padding:2px 6px;border-radius:6px;font-size:.85rem}
.install-hint{font-size:.78rem;color:var(--muted);text-align:center;margin-top:10px}
.skel{border-radius:10px;background:linear-gradient(90deg,var(--field) 25%,var(--border) 37%,var(--field) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite;height:90px}
@keyframes shimmer{0%{background-position:100% 0}100%{background-position:0 0}}
::selection{background:rgba(200,16,46,.25)}
*{scrollbar-width:thin;scrollbar-color:var(--border) transparent}
button,.tab,.tile,.nav-item{-webkit-tap-highlight-color:transparent}

/* Einsatzplanung */
table.plan{border-collapse:separate;border-spacing:4px;width:100%;min-width:640px;table-layout:fixed}
table.plan th{font-size:.74rem;font-weight:600;color:var(--muted);text-align:left;padding:4px}
table.plan tbody th{color:var(--text);font-size:.82rem;width:84px}
table.plan td{vertical-align:top;background:var(--card);border:1px solid var(--border);border-radius:8px;min-height:54px;height:54px;padding:4px;cursor:pointer}
table.plan td.off{background:var(--field)}
.chip{display:inline-block;margin:2px 2px 0 0;padding:3px 8px;border-radius:999px;font-size:.72rem;font-weight:600;background:rgba(200,16,46,.1);color:var(--red);cursor:default}
.chip.off{background:var(--field);color:var(--muted)}
[data-open].chip{cursor:pointer}

/* Monatsdiagramm (Dashboard) */
.chart{display:flex;gap:6px;margin-top:12px}
.chart .col{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0}
.chart .bars{height:110px;display:flex;align-items:flex-end;gap:2px;width:100%;justify-content:center}
.chart .bar{width:42%;border-radius:3px 3px 0 0;min-height:1px}
.chart .bar.rev{background:var(--red)}
.chart .bar.cost{background:#9aa3b2}
.chart .mon{font-size:.66rem;color:var(--muted)}

/* ---------- Schmale Bildschirme: Seitenleiste wird zur Kopfleiste ---------- */
@media (max-width:900px){
  body.has-side #app{padding-left:0}
  body.has-side .main{padding:14px 14px 90px}
  .side{position:static;width:auto;height:auto;flex-direction:column;padding:10px 10px 8px;overflow:visible}
  .side .brand{display:inline-block;margin:0 0 8px;align-self:flex-start;padding:5px 9px}
  .side .brand img{height:30px;width:auto;max-height:none}
  .nav{flex-direction:row;overflow-x:auto;gap:4px;scrollbar-width:none;flex:none;padding-bottom:2px}
  .nav::-webkit-scrollbar{display:none}
  .nav-item{width:auto;flex:0 0 auto;padding:8px 12px;gap:8px;font-size:.84rem}
  .nav-item.active{box-shadow:inset 0 -3px 0 var(--red)}
  .nav-sep{display:none}
  .side-user{display:flex;align-items:center;justify-content:space-between;border-top:none;padding:8px 2px 0;margin-top:2px}
  .side-user .who{margin:0}
  .side-user .acts{flex:0 0 auto}
  .side-user button{padding:6px 10px}
  .filters input.search{width:100%}
  .kpi{flex:1 1 45%;border-bottom:1px solid var(--border)}
  /* Tabelle wird zu Karten */
  table.dtable,.dtable tbody,.dtable tr,.dtable td{display:block;width:100%}
  .dtable thead{display:none}
  .dtable tr{padding:10px 12px;border-bottom:1px solid var(--border);display:grid;grid-template-columns:1fr auto;gap:2px 10px}
  .dtable td{padding:0;border:none}
  .dtable td.hide-m{display:none}
  .dtable td.c-nr{grid-column:1}
  .dtable td.c-amt{grid-column:2;grid-row:1;text-align:right}
  .dtable td.c-cust{grid-column:1;color:var(--muted);font-size:.82rem}
  .dtable td.c-st{grid-column:2;grid-row:2;text-align:right}
  .dtable td.c-name{grid-column:1 / span 2;font-size:.82rem;color:var(--muted)}
  .dtable .ell{max-width:none;white-space:normal}
  .fab{right:16px;bottom:18px}
}
@media (max-width:480px){
  .chat-input{flex-wrap:wrap}
  .chat-input textarea{flex:1 1 100%;order:-1;padding:10px 6px}
  .chat-input .send-btn{margin-left:auto}
}
