:root{
  --sage:#618373; --sage-deep:#4e6b5e; --sage-soft:#DEE7E2; --sage-faint:#EEF2EF;
  --graphite:#545454; --charcoal:#222624; --ink:#33403a;
  --stone:#F4F1EA; --stone-deep:#E9E4D8; --paper:#FCFBF7; --line:#DFD9CB; --line-soft:#ECE7DC;
  --terra:#B86F4D; --terra-soft:#F2E4DC;
  --fd:'Montserrat',sans-serif; --fb:'Manrope',sans-serif;
  --shadow-sm:0 1px 2px rgba(34,38,36,.05),0 2px 8px rgba(34,38,36,.05);
  --shadow-md:0 2px 6px rgba(34,38,36,.07),0 12px 32px rgba(34,38,36,.09);
}
*{margin:0;padding:0;box-sizing:border-box}
html{font-size:16px}
body{font-family:var(--fb);background:var(--stone);color:var(--ink);-webkit-font-smoothing:antialiased;line-height:1.5;min-height:100vh}
h1,h2,h3{font-family:var(--fd);color:var(--charcoal);font-weight:600;text-wrap:balance}
button{font-family:inherit;cursor:pointer}
input,select{font-family:inherit;font-size:1rem;color:var(--ink);min-width:0;max-width:100%}
:focus-visible{outline:2px solid var(--sage);outline-offset:2px}

/* ---------- login ---------- */
#login[hidden]{display:none!important}
#login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1.5rem;
  background:linear-gradient(155deg,var(--stone) 0%,#EFEBE1 60%,#E9E4D7 100%)}
.login-card{background:var(--paper);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow-md);
  width:min(420px,94vw);padding:2.8rem 2.6rem 2.4rem}
.login-logo{width:230px;max-width:80%;display:block;margin:0 auto .9rem}
.login-sub{font-family:var(--fd);text-align:center;font-size:.68rem;font-weight:600;letter-spacing:.3em;
  text-transform:uppercase;color:var(--sage);margin-bottom:2rem}
.err{color:var(--terra);font-size:.8rem;min-height:1.1rem;margin-bottom:.5rem}

/* ---------- header ---------- */
header{position:sticky;top:0;z-index:40;background:rgba(252,251,247,.94);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);display:flex;align-items:center;gap:1.2rem;padding:0 1.6rem;height:64px}
.logo{height:34px;flex:none}
.tabs{display:flex;gap:.3rem;overflow-x:auto}
.tab{background:none;border:none;border-bottom:2px solid transparent;font-family:var(--fd);font-size:.78rem;
  font-weight:600;letter-spacing:.06em;color:var(--graphite);padding:1.25rem .9rem;white-space:nowrap;transition:.15s}
.tab:hover{color:var(--charcoal)}
.tab.on{color:var(--sage-deep);border-bottom-color:var(--sage)}
.hright{margin-left:auto;display:flex;align-items:center;gap:.7rem}
.langsel{border:1px solid var(--line);border-radius:8px;background:#fff;padding:.42rem .5rem;font-family:var(--fd);font-weight:600;font-size:.76rem}
.usermenu{position:relative}
.userbtn{display:flex;align-items:center;gap:.55rem;background:#fff;border:1px solid var(--line);border-radius:9px;padding:.4rem .7rem}
.userbtn .avatar{width:26px;height:26px;border-radius:50%;background:var(--sage);color:#fff;display:flex;align-items:center;justify-content:center;
  font-family:var(--fd);font-weight:600;font-size:.66rem}
.userbtn .uname{font-family:var(--fd);font-weight:600;font-size:.78rem;color:var(--charcoal)}
.userdrop{position:absolute;right:0;top:110%;background:var(--paper);border:1px solid var(--line);border-radius:10px;
  box-shadow:var(--shadow-md);min-width:200px;z-index:60;overflow:hidden}
.userdrop button{display:block;width:100%;text-align:left;background:none;border:none;padding:.75rem 1rem;font-size:.85rem}
.userdrop button:hover{background:var(--sage-faint)}

main{max-width:1400px;margin:0 auto;padding:1.5rem 1.6rem 4rem;display:grid;gap:1.4rem}
main>*,.top>*,.tabview>*{min-width:0}
.tabview{display:none}
.tabview.on{display:block}
.stack{display:grid;gap:1.4rem}
.top{display:grid;grid-template-columns:350px 1fr;gap:1.4rem;align-items:stretch;margin-bottom:1.4rem}

.panel{background:var(--paper);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-sm)}
.ph{padding:1rem 1.35rem;border-bottom:1px solid var(--line-soft);display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.ph h2{font-size:.95rem;font-weight:600}
.phbtns{display:flex;gap:.5rem;flex-wrap:wrap}
.pb{padding:1.25rem 1.35rem}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border:none;border-radius:9px;
  font-family:var(--fd);font-weight:600;font-size:.78rem;letter-spacing:.04em;padding:.7rem 1.2rem;transition:.16s}
.btn-sm{padding:.5rem .85rem;font-size:.72rem}
.btn-primary{background:var(--sage);color:#fff}
.btn-primary:hover{background:var(--sage-deep)}
.btn-primary:disabled,.btn-terra:disabled,.btn-ghost:disabled{opacity:.55;cursor:not-allowed}
.btn-ghost{background:#fff;border:1px solid var(--line);color:var(--ink)}
.btn-ghost:hover{border-color:var(--sage);color:var(--sage-deep)}
.btn-terra{background:var(--terra);color:#fff}
.btn-terra:hover{filter:brightness(.94)}

/* ---------- form ---------- */
.field{margin-bottom:1.05rem}
.field>label{display:block;font-family:var(--fd);font-size:.72rem;font-weight:600;color:var(--graphite);margin-bottom:.45rem}
.field select,.field input,.field textarea{width:100%;border:1px solid var(--line);background:#fff;border-radius:9px;padding:.7rem .85rem;outline:none;transition:border-color .15s;font:inherit;resize:vertical}
.field select:focus,.field input:focus,.field textarea:focus{border-color:var(--sage);box-shadow:0 0 0 3px rgba(97,131,115,.13)}
.dims3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem}
.dims3 .dim{position:relative}
.dims3 label{display:block;font-family:var(--fd);font-size:.72rem;font-weight:600;color:var(--graphite);margin-bottom:.45rem}
.dims3 input{width:100%;border:1px solid var(--line);background:#fff;border-radius:9px;outline:none;
  font-family:var(--fd);font-weight:600;font-size:1.1rem;color:var(--charcoal);padding:.65rem 2rem .65rem .8rem;transition:border-color .15s}
.dims3 input:focus{border-color:var(--sage);box-shadow:0 0 0 3px rgba(97,131,115,.13)}
.dims3 .u{position:absolute;right:.7rem;bottom:.82rem;font-size:.72rem;color:var(--graphite);pointer-events:none}
.geo-line{font-size:.82rem;color:var(--graphite);margin:-.2rem 0 1.05rem}
.geo-line b{color:var(--charcoal);font-family:var(--fd);font-weight:600}
.colorrow{display:flex;gap:.7rem;align-items:center}
.colorrow select{flex:1}
.colorchip{width:46px;height:46px;border-radius:9px;border:1px solid rgba(0,0,0,.14);flex:none}
.colornote{font-size:.72rem;color:var(--graphite);margin-top:.45rem}
.formprice{margin:1.1rem 0 1.05rem;padding:1rem 1.1rem;background:var(--sage-faint);border:1px solid var(--sage-soft);border-radius:10px}
.formprice .lbl{font-family:var(--fd);font-size:.72rem;font-weight:600;color:var(--sage-deep)}
.formprice .val{font-family:var(--fd);font-weight:600;font-size:1.7rem;color:var(--charcoal);line-height:1.25}
.formprice .sub{font-size:.76rem;color:var(--graphite);min-height:1rem}
.formbtns{display:grid;gap:.55rem}
.cancel-edit{display:none;background:none;border:none;color:var(--graphite);font-size:.78rem;text-decoration:underline}
.cancel-edit:hover{color:var(--terra)}

/* ---------- 3d ---------- */
.stage{position:relative;border-radius:12px;overflow:hidden;border:1px solid var(--line);min-height:620px;
  background:linear-gradient(168deg,#F2EFE7,#E6E1D2);box-shadow:var(--shadow-sm)}
#three{position:absolute;inset:0}
.stage .dimtag{position:absolute;left:1rem;top:1rem;font-family:var(--fd);font-size:.78rem;font-weight:600;
  color:var(--charcoal);background:rgba(252,251,247,.88);border:1px solid var(--line);border-radius:8px;padding:.5rem .85rem;max-width:70%}
.scenebar{position:absolute;right:1rem;top:1rem;display:flex;gap:.6rem;align-items:center;
  background:rgba(252,251,247,.88);border:1px solid var(--line);border-radius:8px;padding:.4rem .6rem}
.scenebar select{border:1px solid var(--line);border-radius:7px;background:#fff;padding:.3rem .4rem;font-family:var(--fd);font-weight:600;font-size:.72rem}
.personchk{display:flex;align-items:center;gap:.35rem;font-size:.72rem;color:var(--ink);white-space:nowrap}
.personchk input{accent-color:var(--sage)}
.stage .hint{position:absolute;right:1rem;bottom:.9rem;font-size:.7rem;color:var(--graphite);opacity:.75}

/* ---------- lists ---------- */
table.list{width:100%;border-collapse:collapse;font-size:.875rem}
table.list th{font-family:var(--fd);font-size:.68rem;font-weight:600;color:var(--graphite);
  text-align:left;padding:.6rem .85rem;border-bottom:1px solid var(--line)}
table.list td{padding:.75rem .85rem;border-bottom:1px solid var(--line-soft);vertical-align:middle}
table.list tbody tr:hover td{background:var(--sage-faint)}
td.r,th.r{text-align:right}
.posname{font-family:var(--fd);font-weight:600;font-size:.875rem;color:var(--charcoal)}
.possub{font-size:.76rem;color:var(--graphite);margin-top:.1rem}
.poscomment{font-style:italic;color:var(--sage-deep)}
.cchip{display:inline-flex;align-items:center;gap:.45rem;font-size:.8rem}
.cchip i{width:16px;height:16px;border-radius:5px;border:1px solid rgba(0,0,0,.15);flex:none}
.iconbtn{background:none;border:1px solid var(--line);border-radius:7px;width:30px;height:30px;color:var(--graphite);transition:.15s;font-size:.85rem}
.iconbtn:hover{border-color:var(--sage);color:var(--sage-deep)}
.iconbtn.del:hover{border-color:var(--terra);color:var(--terra)}
.empty{padding:2.2rem 1.4rem;text-align:center;color:var(--graphite);font-size:.875rem}
.empty b{color:var(--charcoal)}

.totalswrap{display:flex;justify-content:flex-end;padding:1.1rem 1.35rem;border-top:1px solid var(--line-soft)}
.totals{min-width:330px;display:grid;gap:.3rem}
.totals .row{display:flex;justify-content:space-between;font-size:.875rem;color:var(--graphite)}
.totals .row b{color:var(--charcoal);font-family:var(--fd);font-weight:600}
.totals .grand{display:flex;justify-content:space-between;align-items:baseline;border-top:1px solid var(--line);margin-top:.45rem;padding-top:.6rem}
.totals .grand .lbl{font-family:var(--fd);font-weight:600;font-size:.875rem;color:var(--charcoal)}
.totals .grand .val{font-family:var(--fd);font-weight:600;font-size:1.8rem;color:var(--sage-deep)}
.totals .adminrow b{color:var(--terra)}

/* ---------- admin ---------- */
.admin-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:1.3rem}
.set h3{font-size:.82rem;font-weight:600;color:var(--sage-deep);margin-bottom:.6rem}
.set table{width:100%;border-collapse:collapse;font-size:.82rem}
.set th{font-family:var(--fd);font-size:.66rem;font-weight:600;color:var(--graphite);text-align:left;padding:.4rem .45rem;border-bottom:1px solid var(--line)}
.set td{padding:.35rem .45rem;border-bottom:1px solid var(--line-soft)}
.set input[type=number]{width:86px;border:1px solid var(--line);border-radius:7px;padding:.35rem .5rem;background:#fff;
  font-family:var(--fd);font-weight:600;font-size:.82rem;outline:none}
.set input[type=number]:focus{border-color:var(--sage)}
.switch{display:flex;align-items:flex-start;gap:.6rem;font-size:.82rem;margin-top:1rem}
.switch input{accent-color:var(--sage);width:17px;height:17px;margin-top:.15rem}
#companyform .field{margin-bottom:.6rem}

/* ---------- modals ---------- */
.overlay{position:fixed;inset:0;background:rgba(34,38,36,.45);display:none;align-items:center;justify-content:center;z-index:90;backdrop-filter:blur(3px);padding:1rem;overflow:auto}
.overlay.open{display:flex}
.modal{background:var(--paper);border-radius:14px;box-shadow:var(--shadow-md);width:min(420px,94vw);padding:1.8rem 1.9rem;max-height:92vh;overflow:auto}
.modal-wide{width:min(760px,94vw)}
.modal h2{font-size:1.05rem;margin-bottom:.35rem}
.modal p{color:var(--graphite);font-size:.82rem;margin-bottom:1rem}
.modal input[type=password]{width:100%;border:1px solid var(--line);border-radius:9px;padding:.7rem .9rem;outline:none;margin-bottom:.7rem;background:#fff}
.modal input:focus,.modal select:focus{border-color:var(--sage)}
.mrow{display:flex;justify-content:flex-end;gap:.6rem;margin-top:.6rem}
.ogrid{display:grid;grid-template-columns:1fr 1fr;gap:0 1rem}
.osummary{background:var(--sage-faint);border:1px solid var(--sage-soft);border-radius:10px;padding:.8rem 1rem;font-size:.85rem;margin-top:.4rem}
.osummary b{font-family:var(--fd)}

footer{border-top:1px solid var(--line);background:var(--paper)}
footer .inner{max-width:1400px;margin:0 auto;padding:1rem 1.6rem;font-size:.72rem;color:var(--graphite)}

/* ---------- print ---------- */
#printdoc{display:none}
@media print{
  body{background:#fff}
  .appwrap,#login{display:none!important}
  #printdoc{display:block;color:#222;font-size:11pt;font-family:var(--fb)}
  #printdoc .phead{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:2px solid #618373;padding-bottom:12pt;margin-bottom:16pt}
  #printdoc .plogo img,#printdoc .plogo svg{height:42pt!important;width:auto!important}
  #printdoc h1{font-size:14pt;margin-bottom:2pt}
  #printdoc .pmeta{font-size:8.5pt;color:#555;text-align:right;line-height:1.5}
  #printdoc table{width:100%;border-collapse:collapse;font-size:9.5pt}
  #printdoc th{text-align:left;font-size:8pt;text-transform:uppercase;letter-spacing:.06em;color:#555;border-bottom:1pt solid #999;padding:4pt 6pt}
  #printdoc td{padding:6pt;border-bottom:.5pt solid #ddd;vertical-align:top}
  #printdoc td.r,#printdoc th.r{text-align:right}
  #printdoc .ptotals{margin-top:12pt;margin-left:auto;width:250pt;font-size:10pt}
  #printdoc .ptotals div{display:flex;justify-content:space-between;padding:2pt 0}
  #printdoc .ptotals .pgrand{border-top:1pt solid #618373;margin-top:4pt;padding-top:5pt;font-weight:700;font-size:12pt}
  #printdoc .pfoot{margin-top:22pt;font-size:8pt;color:#777;border-top:.5pt solid #ddd;padding-top:8pt}
  #printdoc .addrblock{display:flex;justify-content:space-between;margin-bottom:16pt;font-size:9.5pt;line-height:1.55}
  #printdoc .addrblock .to b{font-size:10.5pt}
  #printdoc .offermeta{text-align:right;font-size:9pt;color:#333}
  #printdoc .drawingsheet{page-break-after:always}
  /* Zeichnungs-Folgeseiten im Angebots-PDF: A4-quer-SVG um 90° gedreht
     auf Portrait-Seiten (Querformat-Mischseiten drucken nicht überall) */
  #printdoc .pdrawing{page-break-before:always;position:relative;height:250mm}
  #printdoc .rotwrap{position:absolute;left:0;top:0;width:249mm;height:176mm;transform-origin:top left;transform:rotate(90deg) translateY(-176mm)}
  #printdoc .rotwrap svg{width:100%;height:100%;background:#fff}
}

/* ---------- responsive / mobil ---------- */
@media (max-width:1020px){
  .top{grid-template-columns:1fr}
  .stage{min-height:52vh}
  header{padding:0 .9rem;gap:.7rem}
  .userbtn .uname{display:none}
  .tab{padding:1.2rem .6rem;font-size:.72rem}
  main{padding:1rem .9rem 3rem}
  .ogrid{grid-template-columns:1fr}
  .totals{min-width:0;width:100%}
  .totalswrap{padding:1rem .9rem}
  table.list{display:block;overflow-x:auto;white-space:nowrap}
  .scenebar{left:1rem;right:auto;top:auto;bottom:2.6rem}
  .stage .hint{display:none}
}
@media (prefers-reduced-motion: reduce){
  *{transition:none!important;animation:none!important}
}
