
/* Stade CRM – Layout: App-Shell – Kopfleiste, Navigation links (Handy: unten), Arbeitsfläche mit Kundenliste + Kundenakte, Anrufleiste schwebt unten rechts */
:root{
  --bg:#F2F5F4; --surface:#FFFFFF; --surface-2:#E8EEEC; --line:#D3DCD9; --fg:#15201D; --muted:#5A6A66;
  --accent:#1C5B53; --accent-fg:#FFFFFF; --accent-soft:#D9EAE6;
  --good:#2C7A39; --good-soft:#E0F0E2; --warn:#8F6200; --warn-soft:#FAEFD3; --bad:#B0342A; --bad-soft:#F7E0DC;
  --stamp:#B0342A; --shadow:0 8px 28px rgba(21,32,29,.16);
  --f-display:"Segoe UI Semibold","Segoe UI",system-ui,-apple-system,Roboto,sans-serif;
  --f-body:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",sans-serif;
  --f-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#0F1514; --surface:#171F1D; --surface-2:#1E2826; --line:#2D3936; --fg:#E3ECE9; --muted:#93A39F;
  --accent:#5DB3A7; --accent-fg:#06201C; --accent-soft:#1A3632;
  --good:#6CC27A; --good-soft:#18301E; --warn:#E2B548; --warn-soft:#382C0F; --bad:#F07C70; --bad-soft:#3C1C19;
  --stamp:#F07C70; --shadow:0 8px 28px rgba(0,0,0,.5); color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0F1514; --surface:#171F1D; --surface-2:#1E2826; --line:#2D3936; --fg:#E3ECE9; --muted:#93A39F;
  --accent:#5DB3A7; --accent-fg:#06201C; --accent-soft:#1A3632;
  --good:#6CC27A; --good-soft:#18301E; --warn:#E2B548; --warn-soft:#382C0F; --bad:#F07C70; --bad-soft:#3C1C19;
  --stamp:#F07C70; --shadow:0 8px 28px rgba(0,0,0,.5); color-scheme:dark}

html,body{height:100%}
body{background:var(--bg);color:var(--fg);font:14px/1.45 var(--f-body);overflow:hidden}
*{box-sizing:border-box}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3{font-family:var(--f-display);margin:0;text-wrap:balance;letter-spacing:.005em}
h1{font-size:1.6rem;font-weight:700}
h2{font-size:1.2rem;font-weight:600}
h3{font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.mono{font-family:var(--f-mono);font-variant-numeric:tabular-nums}
.num{font-variant-numeric:tabular-nums}
.muted{color:var(--muted)}
.small{font-size:.85rem}
a{color:var(--accent)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.app{display:grid;grid-template-columns:212px minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);height:100%}
.top{grid-column:1/-1;display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:var(--surface);border-bottom:1px solid var(--line);
  padding-block:10px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.brand{display:flex;align-items:center;gap:10px;font-family:var(--f-display);font-weight:700;font-size:1.15rem;white-space:nowrap}
.stampmark{width:30px;height:34px;display:grid;place-items:center;background:var(--stamp);color:#fff;font-size:1rem;font-weight:700;border:3px dotted var(--surface);outline:1px solid var(--stamp);outline-offset:-1px;flex:none}
.gsearch{flex:1 1 260px;min-width:0;max-width:520px;position:relative}
.gsearch input[type=search]{width:100%;padding:8px 12px 8px 34px;border:1px solid var(--line);border-radius:8px;background:var(--bg)}
.gsearch svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:16px;height:16px;stroke:var(--muted)}
.topright{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-left:auto}
.chip{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;font-size:.78rem;background:var(--surface-2);color:var(--muted);white-space:nowrap;border:0}
.chip .dot{width:7px;height:7px;border-radius:50%;background:var(--warn)}
.chip.ok .dot{background:var(--good)}
select.user{padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}

.side{background:var(--surface);border-right:1px solid var(--line);display:flex;flex-direction:column;gap:2px;
  padding-block:14px;padding-right:12px;padding-left:max(12px,env(safe-area-inset-left,0px))}
.navbtn{display:flex;align-items:center;gap:10px;padding:9px 10px;border:0;background:none;border-radius:8px;text-align:left;cursor:pointer;color:var(--muted);font-weight:500}
.navbtn svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8;flex:none}
.navbtn:hover{background:var(--surface-2);color:var(--fg)}
.navbtn[aria-current="page"]{background:var(--accent-soft);color:var(--accent)}
.navbtn .badge{margin-left:auto;background:var(--bad);color:#fff;border-radius:999px;font-size:.72rem;padding:0 7px;line-height:18px}
.sidenote{margin-top:auto;font-size:.76rem;color:var(--muted);padding:10px;border-top:1px solid var(--line)}

main{overflow:auto;min-width:0;padding:20px;padding-right:max(20px,env(safe-area-inset-right,0px))}
.view{max-width:1280px;margin:0 auto;display:flex;flex-direction:column;gap:18px}
.vhead{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap}

.card{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:16px;min-width:0}
.card > h3{margin-bottom:10px}
.grid{display:grid;gap:14px}
.kpis{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.kpi .v{font-family:var(--f-display);font-size:1.9rem;font-weight:600;line-height:1.1;font-variant-numeric:tabular-nums}
.kpi .l{color:var(--muted);font-size:.85rem}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 12px;border-radius:8px;border:1px solid var(--line);background:var(--surface);cursor:pointer;font-weight:500;white-space:nowrap}
.btn:hover{background:var(--surface-2)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}
.btn.primary:hover{filter:brightness(1.08)}
.btn.call{background:var(--good);border-color:var(--good);color:#fff}
.btn.danger{color:var(--bad);border-color:var(--bad)}
.btn.ghost{border-color:transparent;background:none}
.btn.sm{padding:4px 9px;font-size:.85rem}
.btn svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2}
.btn[disabled]{opacity:.5;cursor:not-allowed}

.pill{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:999px;font-size:.75rem;font-weight:600;white-space:nowrap}
.pill.good{background:var(--good-soft);color:var(--good)}
.pill.warn{background:var(--warn-soft);color:var(--warn)}
.pill.bad{background:var(--bad-soft);color:var(--bad)}
.pill.neutral{background:var(--surface-2);color:var(--muted)}
.tag{display:inline-block;font-family:var(--f-mono);font-size:.72rem;letter-spacing:.04em;text-transform:uppercase;padding:2px 7px;border:1px dashed var(--line);border-radius:4px;color:var(--fg);background:var(--bg);cursor:pointer}
.tag:hover{border-color:var(--accent);color:var(--accent)}
.tags{display:flex;flex-wrap:wrap;gap:5px}
.toggle{padding:4px 10px;border-radius:999px;border:1px solid var(--line);background:var(--surface);cursor:pointer;font-size:.85rem}
.toggle[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}

input[type=text],input[type=search],input[type=date],input[type=number],select,textarea{border:1px solid var(--line);border-radius:8px;padding:7px 10px;background:var(--surface);min-width:0}
textarea{width:100%;resize:vertical;min-height:70px}
label.f{display:flex;flex-direction:column;gap:4px;font-size:.82rem;color:var(--muted);min-width:0}
label.f > input,label.f > select,label.f > textarea{color:var(--fg);font-size:.95rem}
.frow{display:flex;gap:10px;flex-wrap:wrap}
.frow > *{flex:1 1 140px}
.check{display:flex;gap:8px;align-items:flex-start;font-size:.92rem;cursor:pointer}
.check input{margin-top:3px}

/* Kunden */
.split{display:grid;grid-template-columns:minmax(300px,420px) minmax(0,1fr);gap:16px;height:calc(100vh - 140px);height:calc(100dvh - 140px)}
.pane{min-height:0;overflow:auto;min-width:0}
.listpane{display:flex;flex-direction:column;gap:10px;overflow:hidden}
.filters{display:flex;flex-wrap:wrap;gap:8px}
.filters select,.filters input{font-size:.85rem;padding:5px 8px;flex:1 1 110px}
.clist{overflow:auto;border:1px solid var(--line);border-radius:10px;background:var(--surface);flex:1;min-height:0}
.citem{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);background:none;padding:10px 12px;cursor:pointer}
.citem:hover{background:var(--surface-2)}
.citem[aria-selected="true"]{background:var(--accent-soft)}
.citem .l1{display:flex;justify-content:space-between;gap:8px;align-items:center}
.citem .nm{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.citem .l2{display:flex;gap:10px;color:var(--muted);font-size:.82rem;margin-top:2px;flex-wrap:wrap}
.resinfo{font-size:.8rem;color:var(--muted);display:flex;justify-content:space-between;gap:8px}
.empty{padding:28px;text-align:center;color:var(--muted)}

.akte{display:flex;flex-direction:column;gap:14px}
.ahead{display:flex;gap:14px;justify-content:space-between;flex-wrap:wrap;align-items:flex-start}
.ahead .who{min-width:0}
.ahead .nr{font-family:var(--f-mono);color:var(--muted);font-size:.85rem}
.agrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.agrid .wide{grid-column:1/-1}
.phones{display:flex;flex-direction:column;gap:8px}
.phone{display:flex;align-items:center;gap:10px;justify-content:space-between;padding:8px 10px;border:1px solid var(--line);border-radius:8px;flex-wrap:wrap}
.phone .pn{min-width:0}
.phone .raw{font-size:.78rem;color:var(--muted)}
dl.kv{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:4px 14px;margin:0;font-size:.92rem}
dl.kv dt{color:var(--muted)}
dl.kv dd{margin:0;overflow-wrap:anywhere}
.notice{padding:10px 12px;border-radius:8px;font-size:.9rem;display:flex;gap:10px;align-items:flex-start}
.notice.warn{background:var(--warn-soft);color:var(--fg)}
.notice.bad{background:var(--bad-soft);color:var(--fg)}
.notice.info{background:var(--accent-soft);color:var(--fg)}
.notice b{white-space:nowrap}
.bars{display:flex;align-items:flex-end;gap:10px;height:110px;padding-top:16px}
.bar{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;height:100%;justify-content:flex-end;min-width:0}
.bar .b{width:100%;max-width:46px;background:var(--accent);border-radius:4px 4px 0 0;min-height:2px}
.bar .b.zero{background:var(--line)}
.bar .y{font-size:.75rem;color:var(--muted)}
.bar .val{font-size:.7rem;color:var(--muted);white-space:nowrap}
.timeline{display:flex;flex-direction:column}
.ev{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 12px;padding:10px 0;border-bottom:1px solid var(--line)}
.ev:last-child{border-bottom:0}
.ev .ic{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--surface-2);grid-row:span 2}
.ev .ic svg{width:14px;height:14px;stroke:var(--muted);fill:none;stroke-width:2}
.ev .meta{font-size:.8rem;color:var(--muted);display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.ev .tx{white-space:pre-wrap;overflow-wrap:anywhere}
.qbanner{display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:space-between;background:var(--accent);color:var(--accent-fg);padding:10px 14px;border-radius:10px}
.qbanner .btn{background:transparent;color:var(--accent-fg);border-color:rgba(255,255,255,.45)}
.back{display:none}

table.t{width:100%;border-collapse:collapse;font-size:.9rem}
table.t th{text-align:left;font-weight:600;color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;padding:8px;border-bottom:1px solid var(--line)}
table.t td{padding:9px 8px;border-bottom:1px solid var(--line);vertical-align:top}
.tablewrap{overflow-x:auto}
.linkbtn{background:none;border:0;padding:0;color:var(--accent);cursor:pointer;font-weight:600;text-align:left}
.linkbtn:hover{text-decoration:underline}

.drop{border:2px dashed var(--line);border-radius:12px;padding:28px;text-align:center;display:flex;flex-direction:column;gap:10px;align-items:center;background:var(--surface)}
.drop.over{border-color:var(--accent);background:var(--accent-soft)}
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;counter-reset:s}
.step{padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.step b{display:block;margin-bottom:4px}

/* Anrufleiste */
.callbar{position:fixed;z-index:30;right:calc(16px + env(safe-area-inset-right,0px));bottom:calc(16px + env(safe-area-inset-bottom,0px));width:min(380px,calc(100vw - 32px));
  background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);overflow:hidden}
.callbar .ch{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--good);color:#fff}
.callbar .ch.in{background:var(--accent);color:var(--accent-fg)}
.callbar .ch .t{margin-left:auto;font-family:var(--f-mono);font-size:1rem}
.callbar .cb{padding:12px 14px;display:flex;flex-direction:column;gap:10px}
.callbar .big{font-family:var(--f-mono);font-size:1.35rem;font-weight:500;letter-spacing:.02em;user-select:all;overflow-wrap:anywhere}
.callbar .acts{display:flex;gap:8px;flex-wrap:wrap}
.pulse{width:9px;height:9px;border-radius:50%;background:#fff;animation:p 1.1s infinite}
@keyframes p{50%{opacity:.25}}
@media (prefers-reduced-motion:reduce){.pulse{animation:none}}
.progress{display:flex;flex-direction:column;gap:4px;font-size:.85rem}
.progress .st{display:flex;gap:8px;align-items:center;color:var(--muted)}
.progress .st.on{color:var(--fg);font-weight:600}
.progress .st.done{color:var(--good)}
.progress .st i{width:8px;height:8px;border-radius:50%;background:currentColor;flex:none}

/* Dialog */
.overlay{position:fixed;inset:0;background:rgba(10,18,16,.45);z-index:40;display:grid;place-items:center;padding:16px}
.modal{background:var(--surface);border-radius:14px;box-shadow:var(--shadow);width:min(560px,100%);max-height:calc(100dvh - 32px);overflow:auto;padding:20px;display:flex;flex-direction:column;gap:14px}
.modal .acts{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}
.choices{display:flex;flex-wrap:wrap;gap:6px}
.choices input{position:absolute;opacity:0;pointer-events:none}
.choices label{padding:6px 11px;border:1px solid var(--line);border-radius:999px;cursor:pointer;font-size:.88rem}
.choices input:checked + label{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}
.choices input:focus-visible + label{outline:2px solid var(--accent);outline-offset:2px}
.toast{position:fixed;z-index:50;left:50%;transform:translateX(-50%);top:calc(14px + env(safe-area-inset-top,0px));background:var(--fg);color:var(--bg);padding:9px 16px;border-radius:999px;font-size:.9rem;box-shadow:var(--shadow);max-width:calc(100vw - 32px)}
.demo{font-size:.74rem;font-family:var(--f-mono);color:var(--warn);text-transform:uppercase;letter-spacing:.06em}

@media (max-width:1100px){.agrid{grid-template-columns:minmax(0,1fr)}}
@media (max-width:860px){
  .app{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto}
  .side{grid-row:3;flex-direction:row;border-right:0;border-top:1px solid var(--line);justify-content:space-around;gap:0;
    padding-block:4px calc(4px + env(safe-area-inset-bottom,0px));padding-left:max(8px,env(safe-area-inset-left,0px));padding-right:max(8px,env(safe-area-inset-right,0px))}
  .navbtn{flex-direction:column;gap:2px;font-size:.68rem;padding:6px 4px;position:relative;flex:1;align-items:center}
  .navbtn .badge{position:absolute;top:2px;right:calc(50% - 22px);margin:0}
  .sidenote{display:none}
  main{padding:14px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
  .split{grid-template-columns:minmax(0,1fr);height:auto}
  .listpane{overflow:visible}
  .clist{max-height:none;overflow:visible}
  .split.has-detail .listpane{display:none}
  .split:not(.has-detail) .detailpane{display:none}
  .pane{overflow:visible}
  .back{display:inline-flex}
  .callbar{bottom:calc(74px + env(safe-area-inset-bottom,0px))}
  .top .chip.src{display:none}
}

/* Anmeldung */
.login{min-height:100%;display:grid;place-items:center;padding:24px max(16px,env(safe-area-inset-left,0px))}
.login form{width:min(380px,100%);background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:28px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--shadow)}
.login .brand{font-size:1.4rem;margin-bottom:6px}
.err{color:var(--bad);font-size:.9rem;min-height:1.2em}
.chip.off .dot{background:var(--bad)}
.pwbox{font-family:var(--f-mono);font-size:1.2rem;padding:10px 14px;background:var(--surface-2);border-radius:8px;user-select:all;word-break:break-all}
html,body{height:100%}
@media (max-width:860px){
  .notice{flex-direction:column;gap:2px}
  .ahead > div:last-child{align-items:flex-start!important}
}
