:root{
  --bg:#eef0f3; --panel:#ffffff; --ink:#0f172a; --muted:#64748b;
  --line:#e2e8f0; --accent:#2563eb; --accent-soft:#eff4ff;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --sans:"Segoe UI",-apple-system,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;font-family:var(--sans);color:var(--ink);background:var(--bg);
  display:flex;flex-direction:column;
}

/* ---- Topbar ---- */
header{
  background:#0f172a;color:#f8fafc;padding:10px 18px;
  display:flex;align-items:center;gap:18px;flex-wrap:wrap;
}
header h1{font-size:15px;font-weight:700;margin:0;letter-spacing:.3px;white-space:nowrap}
header h1 span{color:#60a5fa}
.palette{display:flex;gap:6px;flex-wrap:wrap}
.palette button{
  border:1px solid #33415570;background:#1e293b;color:#cbd5e1;
  font:600 12px var(--sans);padding:5px 9px;border-radius:7px;cursor:pointer;
  display:flex;align-items:center;gap:6px;transition:.12s;
}
.palette button:hover{background:#334155;color:#fff}
.palette button.active{background:var(--accent);border-color:var(--accent);color:#fff}
.palette .dot{width:9px;height:9px;border-radius:50%}
.spacer{flex:1}
.toolbtn{
  border:1px solid #33415570;background:#1e293b;color:#e2e8f0;
  font:600 12px var(--sans);padding:6px 11px;border-radius:7px;cursor:pointer;text-decoration:none;
}
.toolbtn:hover{background:#334155}
.toolbtn.active{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important}
.toolbtn.danger{background:#7f1d1d;border-color:#991b1b;color:#fecaca}
.toolbtn.danger:hover{background:#991b1b}
.hint{color:#94a3b8;font-size:12px}

/* ---- Layout ---- */
main{flex:1;display:flex;min-height:0}
#stage{flex:1;overflow:auto;padding:22px;display:flex;align-items:flex-start;justify-content:center}
#canvas{position:relative;display:inline-block;background:#fff;
  box-shadow:0 4px 24px #0f172a1f;border:1px solid var(--line);line-height:0;cursor:crosshair}
#canvas img{display:block;max-width:100%;height:auto;user-select:none;-webkit-user-drag:none;-webkit-touch-callout:none}

/* ---- Pins ---- */
#pins{position:absolute;inset:0;pointer-events:none}
.pin{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;
  display:flex;align-items:center;gap:6px;cursor:grab;
  touch-action:none;-webkit-user-select:none;user-select:none}
.pin:active{cursor:grabbing}
.pin .badge{
  width:28px;height:28px;border-radius:50%;flex:none;
  display:flex;align-items:center;justify-content:center;
  color:#fff;font:700 10px var(--sans);box-shadow:0 2px 6px #0003;border:2px solid #fff}
.pin .tag{
  background:#fffffff2;border:1px solid var(--line);border-radius:6px;
  padding:2px 7px;font:600 11px var(--sans);color:#1e293b;white-space:nowrap;
  box-shadow:0 1px 3px #0000001a;line-height:1.3}

/* ---- Sidebar ---- */
#side{width:320px;flex:none;background:var(--panel);border-left:1px solid var(--line);
  display:flex;flex-direction:column;min-height:0}
#side h2{font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);
  margin:0;padding:14px 16px 8px}
#device-list{list-style:none;margin:0;padding:0 10px 10px;overflow:auto;flex:1}
#device-list li{display:flex;align-items:center;gap:9px;padding:8px 8px;border-radius:8px;cursor:pointer}
#device-list li:hover{background:var(--accent-soft)}
#device-list .dot{width:11px;height:11px;border-radius:50%;flex:none}
#device-list .nm{font-weight:600;font-size:13px}
#device-list .meta{font-size:11px;color:var(--muted);font-family:var(--mono)}
#device-list .empty{color:var(--muted);font-size:13px;padding:10px 8px}

/* ---- Edit panel ---- */
#panel:empty{display:none}
#panel{border-top:1px solid var(--line);background:#f8fafc;padding:14px 16px}
#panel h3{margin:0 0 10px;font-size:13px}
#panel label{display:block;font-size:11px;color:var(--muted);font-weight:600;margin:8px 0 3px}
#panel input,#panel select,#panel textarea{
  width:100%;padding:7px 9px;border:1px solid var(--line);border-radius:7px;
  font:13px var(--sans);background:#fff}
#panel input[name=ip]{font-family:var(--mono)}
#panel textarea{resize:vertical;min-height:46px}
.row{display:flex;gap:8px}
.row>*{flex:1}
.btns{display:flex;gap:8px;margin-top:12px}
.btns button{font:600 13px var(--sans);padding:8px 12px;border-radius:7px;cursor:pointer;border:1px solid transparent}
.save{background:var(--accent);color:#fff}
.save:hover{background:#1d4ed8}
.del{background:#fff;color:#dc2626;border-color:#fecaca;margin-left:auto}
.del:hover{background:#fef2f2}
.close{background:#fff;color:var(--muted);border-color:var(--line)}
.count{font-size:11px;color:var(--muted);padding:0 16px 12px}

/* ---- Projekt-Info in Sidebar ---- */
.proj-info{
  margin:0 10px 6px;padding:8px 10px;border-radius:8px;border:1px solid var(--line);
  font-size:12px;line-height:1.5;cursor:pointer;color:var(--ink);background:#fafbfc;
}
.proj-info:hover{background:var(--accent-soft);border-color:var(--accent)}
.proj-info strong{font-size:13px}
.proj-info em{color:var(--muted);font-style:normal}
.proj-empty{color:var(--muted)}

/* ---- Snap-Gitter auf Canvas ---- */
#canvas.snap-grid{background-image:
  linear-gradient(to right,  #e2e8f055 1px, transparent 1px),
  linear-gradient(to bottom, #e2e8f055 1px, transparent 1px);
  background-size:2.5% 2.5%}

/* ---- Device thumbnail in sidebar ---- */
.dev-thumb{width:28px;height:28px;border-radius:50%;object-fit:cover;flex:none;border:2px solid var(--line)}

/* ---- Image section in edit panel ---- */
.img-upload-form{border-bottom:1px solid var(--line);padding:14px 16px 10px;background:#f8fafc}
.img-upload-form label:first-of-type{display:block;font-size:11px;color:var(--muted);font-weight:600;margin-bottom:6px}
.dev-preview{display:block;max-width:100%;max-height:130px;border-radius:7px;border:1px solid var(--line);margin-bottom:8px;object-fit:cover}
.dev-preview-empty{height:56px;border:1px dashed var(--line);border-radius:7px;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:12px;margin-bottom:8px}
.img-label{display:inline-block;cursor:pointer;background:#f1f5f9;border:1px solid var(--line);border-radius:7px;padding:5px 11px;font-size:12px;color:var(--muted);font-weight:600}
.img-label input{display:none}
.img-label:hover{background:#e2e8f0}

/* ---- Print page ---- */
.print-body{background:#fff;color:#000;font-family:var(--sans);padding:28px 36px;display:block;margin:0}
.p-header{display:flex;align-items:flex-start;justify-content:space-between;border-bottom:2px solid #0f172a;padding-bottom:14px;margin-bottom:24px}
.p-header h1{font-size:18px;margin:0 0 4px;font-family:var(--sans)}
.p-header h1 span{color:#2563eb}
.p-proj{font-size:14px;font-weight:600;color:#0f172a;margin-bottom:2px}
.p-date{font-size:12px;color:#64748b}
.p-print-btn{background:#2563eb;color:#fff;border:none;border-radius:7px;padding:8px 16px;font:600 13px var(--sans);cursor:pointer;white-space:nowrap}
.p-print-btn:hover{background:#1d4ed8}
.p-section{margin-bottom:32px}
.p-section h2{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:#64748b;margin:0 0 12px;border-bottom:1px solid #e2e8f0;padding-bottom:6px}
.p-canvas{position:relative;display:inline-block;border:1px solid #e2e8f0;max-width:100%}
.p-canvas img{display:block;max-width:100%;height:auto}
.p-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.p-card{border:1px solid #e2e8f0;border-radius:8px;overflow:hidden;display:flex;gap:10px;padding:10px;break-inside:avoid}
.card-img{width:68px;height:68px;object-fit:cover;border-radius:6px;flex:none}
.card-img-ph{display:flex;align-items:center;justify-content:center;color:#fff;font:700 13px var(--sans);width:68px;height:68px;border-radius:6px;flex:none}
.p-card-body{flex:1;min-width:0}
.p-card-name{font-weight:700;font-size:13px;margin-bottom:5px}
.p-meta{border-collapse:collapse;font-size:11px;width:100%}
.p-meta td{padding:1px 4px 1px 0;vertical-align:top;color:#475569}
.p-meta td:first-child{color:#94a3b8;width:36px;white-space:nowrap}
.p-meta code{font-family:var(--mono);font-size:11px}

@media print{
  .no-print{display:none!important}
  .p-section:first-of-type{page-break-after:always}
  .print-body{padding:0}
  @page{margin:15mm}
}

/* ================================================================
   Multi-Kunden: Start-Seite
   ================================================================ */
body.start-page,body.kunde-page{display:block;height:auto;min-height:100vh}
.start-header{
  background:#0f172a;color:#f8fafc;padding:12px 24px;
  display:flex;align-items:center;gap:16px;flex-wrap:wrap;position:sticky;top:0;z-index:10;
}
.start-header h1{font-size:16px;font-weight:700;margin:0;white-space:nowrap}
.start-header h1 span{color:#60a5fa}
.search-input{
  flex:1;min-width:180px;max-width:340px;padding:7px 12px;border-radius:7px;
  border:1px solid #33415570;background:#1e293b;color:#f1f5f9;font:14px var(--sans);
}
.search-input::placeholder{color:#64748b}
.search-input:focus{outline:none;border-color:var(--accent)}
.k-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;padding:24px}
.k-card{
  display:block;background:#fff;border:1px solid var(--line);border-radius:10px;
  padding:16px;text-decoration:none;color:var(--ink);transition:.12s;
}
.k-card:hover{border-color:var(--accent);box-shadow:0 4px 16px #2563eb18;transform:translateY(-1px)}
.k-name{font-size:15px;font-weight:700;margin-bottom:4px}
.k-addr{font-size:12px;color:var(--muted);margin-bottom:8px}
.k-meta{font-size:11px;font-weight:600;color:var(--accent)}
.k-empty{padding:40px 24px;color:var(--muted);font-size:14px}

/* ================================================================
   Modal
   ================================================================ */
.modal-bd{
  position:fixed;inset:0;background:#0008;display:flex;align-items:center;
  justify-content:center;z-index:100;
}
.modal{background:#fff;border-radius:12px;padding:24px;width:420px;max-width:90vw}
.modal h3{margin:0 0 14px;font-size:15px}
.modal label{display:block;font-size:11px;color:var(--muted);font-weight:600;margin:10px 0 3px}
.modal input{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:7px;font:14px var(--sans)}

/* ================================================================
   Kunden-Detail-Seite
   ================================================================ */
.kunde-header{
  background:#0f172a;color:#f8fafc;padding:12px 24px;
  display:flex;align-items:center;gap:16px;flex-wrap:wrap;
}
.back-btn{
  color:#60a5fa;text-decoration:none;font:600 13px var(--sans);white-space:nowrap;
}
.back-btn span{color:#60a5fa}
.back-btn:hover{color:#93c5fd}
.k-title-block{flex:1}
.k-title-block h1{font-size:17px;font-weight:700;margin:0;color:#f8fafc}
.k-addr-small{font-size:12px;color:#94a3b8}
.etagen-wrap{max-width:760px;margin:28px auto;padding:0 20px}
.etagen-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.etagen-header h2{font-size:13px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin:0}
.e-row{
  background:#fff;border:1px solid var(--line);border-radius:9px;
  padding:14px 16px;margin-bottom:10px;display:flex;align-items:center;gap:12px;
}
.e-info{flex:1}
.e-label{font-size:15px;font-weight:700;margin-right:10px}
.e-cnt{font-size:12px;color:var(--muted)}
.e-actions{display:flex;gap:8px}
.e-empty{color:var(--muted);font-size:13px;padding:16px 0}

/* ================================================================
   Editor: Breadcrumb + Back-Button in Toolbar
   ================================================================ */
.etage-crumb{
  background:#1e293b;border:1px solid #33415570;color:#60a5fa;
  font:700 12px var(--sans);padding:5px 10px;border-radius:7px;white-space:nowrap;
}
