@import url("https://fonts.googleapis.com/css2?family=Barlow+Semi+Condensed:wght@500;600;700&family=Barlow:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap");:root{--bg:#eef0ee;--surface:#fff;--surface-2:#f3f5f3;--fg:#1c2224;--muted:#5b6568;--line:#d6dbd8;--accent:#1f6b57;--accent-fg:#fff;--ok:#2c7a4b;--warn:#9a5a0a;--danger:#a33a2a;--stage:#dfe6ea;--font-display:"Barlow Semi Condensed","Arial Narrow","Helvetica Neue",sans-serif;--font-body:"Barlow",system-ui,-apple-system,"Segoe UI",sans-serif;--font-mono:"IBM Plex Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;--r:6px}*{box-sizing:border-box}body,html{margin:0;height:100%}body{background:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:15px;line-height:1.45}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1,h2,h3{font-family:var(--font-display);text-wrap:balance;margin:0}a{color:var(--accent)}[hidden]{display:none!important}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);background:var(--surface);padding:9px 14px;border-radius:var(--r);cursor:pointer;font-weight:600;font-size:.9rem;text-decoration:none;color:var(--fg)}.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.big{width:100%;padding:12px 14px;font-size:.95rem}.btn:disabled{opacity:.6;cursor:progress}.btn.danger{color:var(--danger)}.note{font-size:.8rem;color:var(--muted);margin:0}.err{color:var(--danger);font-size:.85rem;margin:0}.d3-app{display:flex;flex-direction:column;min-height:100%}@media (min-width:960px){.d3-app{height:100vh}.d3-app.is-embed{height:760px}}.cfg-top{display:flex;align-items:baseline;gap:12px;padding:12px 16px;background:var(--surface);border-bottom:1px solid var(--line);flex-wrap:wrap}.brand-name{font-family:var(--font-display);font-weight:700;font-size:1.15rem}.brand-sub{font-size:.78rem;color:var(--muted);letter-spacing:.06em;text-transform:uppercase}.demo-chip{font-family:var(--font-mono);font-size:.7rem;padding:2px 7px;border:1px solid var(--line);border-radius:99px;color:var(--muted)}.config{flex:1 1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr)}@media (min-width:960px){.config{grid-template-columns:minmax(0,1fr) 410px;grid-template-rows:minmax(0,1fr)}}.stage{position:relative;background:var(--stage);height:56vh;min-height:340px;overflow:hidden}.is-embed .stage{height:380px;min-height:0}@media (min-width:960px){.is-embed .stage,.stage{height:auto;min-height:0}}.stage-inner{position:absolute}.stage-inner .d3-canvas{display:block;position:absolute;inset:0;width:100%!important;height:100%!important;touch-action:none}.stage-inner img.photo{object-fit:fill;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none}.calib,.stage-inner img.photo{position:absolute;inset:0;width:100%;height:100%}.calib{touch-action:none;overflow:visible;z-index:2}.calib polygon{fill:color-mix(in srgb,var(--accent) 18%,transparent);stroke:#fff;stroke-width:2;stroke-dasharray:6 5}.calib .h{cursor:-webkit-grab;cursor:grab}.calib .h circle.o{fill:var(--accent);stroke:#fff;stroke-width:3}.calib .h text{font:600 12px var(--font-body);fill:#fff;paint-order:stroke;stroke:rgba(0,0,0,.55);stroke-width:3px}.d3-dim{position:absolute;transform:translate(-50%,-50%);font-family:var(--font-mono);font-size:.76rem;font-weight:500;color:#1c2224;background:hsla(0,0%,100%,.9);padding:2px 7px;border-radius:3px;pointer-events:none;white-space:nowrap;z-index:1;border:1px solid rgba(0,0,0,.08)}.stage-tools{position:absolute;top:12px;left:12px;display:flex;gap:4px;background:hsla(0,0%,100%,.88);border-radius:var(--r);padding:4px;box-shadow:0 1px 3px rgba(0,0,0,.12);z-index:3}.stage-tools button{border:0;background:transparent;padding:6px 10px;border-radius:4px;font-size:.82rem;font-weight:600;color:#2a3134;cursor:pointer}.stage-tools button:hover{background:#e9eeec}.stage-tools button[aria-pressed=true]{background:#1c2224;color:#fff}.stage-hint{position:absolute;left:12px;bottom:12px;font-size:.78rem;color:#2a3134;background:hsla(0,0%,100%,.85);padding:4px 9px;border-radius:4px;z-index:3;max-width:calc(100% - 24px)}.calib-bar{position:absolute;left:50%;transform:translateX(-50%);top:12px;z-index:4;background:#1c2224;color:#fff;border-radius:var(--r);padding:10px 12px;display:flex;gap:12px;align-items:center;width:min(560px,calc(100% - 24px));box-shadow:0 6px 20px rgba(0,0,0,.25)}.calib-bar p{margin:0;font-size:.84rem;line-height:1.35;flex:1 1;min-width:0}.webgl-fail{position:absolute;inset:0;display:grid;place-items:center;padding:24px;text-align:center;color:var(--muted)}.panel{background:var(--surface);border-left:1px solid var(--line);display:flex;flex-direction:column;min-height:0}.panel-scroll{padding:4px 20px 20px}@media (min-width:960px){.panel-scroll{flex:1 1;overflow-y:auto}}.step{padding:18px 0;border-bottom:1px solid var(--line);display:grid;grid-gap:12px;gap:12px}.step:last-child{border-bottom:0}.step h2{font-size:1.05rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;display:flex;align-items:baseline;gap:10px}.step h2 .n{font-family:var(--font-mono);font-size:.78rem;color:var(--accent);font-weight:500}.field{display:grid;grid-gap:6px;gap:6px}.f-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.f-head label{font-weight:500;font-size:.92rem}.num{display:inline-flex;align-items:center;gap:4px;font-size:.82rem;color:var(--muted)}.num,.num input{font-family:var(--font-mono)}.num input{width:70px;text-align:right;padding:4px 6px;border:1px solid var(--line);border-radius:4px;background:var(--surface-2);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}input[type=range]{width:100%;accent-color:var(--accent);margin:0}.meta{font-size:.82rem;color:var(--muted);margin:0;font-family:var(--font-mono)}.opts{display:grid;grid-gap:6px;gap:6px}.opt{display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;border:1px solid var(--line);background:var(--surface);padding:10px 12px;border-radius:var(--r);cursor:pointer}.opt:hover{border-color:color-mix(in srgb,var(--accent) 50%,var(--line))}.opt[aria-checked=true]{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent);box-shadow:inset 0 0 0 1px var(--accent)}.opt .t{font-weight:500}.opt .s{font-size:.8rem;color:var(--muted);font-family:var(--font-mono);white-space:nowrap}.swatches{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));grid-gap:8px;gap:8px}.sw{display:grid;grid-gap:6px;gap:6px;border:1px solid var(--line);background:var(--surface);padding:8px;border-radius:var(--r);cursor:pointer;text-align:left}.sw[aria-checked=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.sw .chip{height:30px;border-radius:3px;border:1px solid rgba(0,0,0,.15)}.sw .t{font-size:.78rem;line-height:1.25}.sw .s{font-size:.72rem;color:var(--muted);font-family:var(--font-mono)}.row-label{font-size:.85rem;font-weight:500;margin-bottom:-6px}.row-label:empty{display:none}.seg{display:flex;flex-wrap:wrap;gap:4px;background:var(--surface-2);padding:3px;border-radius:var(--r)}.seg button{flex:1 1 auto;border:0;background:transparent;padding:7px 10px;border-radius:4px;cursor:pointer;font-size:.86rem;color:var(--muted)}.seg button[aria-checked=true]{background:var(--surface);color:var(--fg);font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.12)}.toggle{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 0;cursor:pointer}.toggle .t{font-weight:500;font-size:.92rem}.toggle .s{display:block;font-size:.78rem;color:var(--muted);font-family:var(--font-mono)}.toggle input{width:20px;height:20px;accent-color:var(--accent);flex:none}.upload{display:grid;grid-gap:8px;gap:8px}.file-btn{position:relative;overflow:hidden}.file-btn input{position:absolute;inset:0;opacity:0;cursor:pointer}.pricebar{border-top:1px solid var(--line);background:var(--surface);padding:14px 20px calc(14px + env(safe-area-inset-bottom, 0px));display:grid;grid-gap:10px;gap:10px;position:-webkit-sticky;position:sticky;bottom:0;z-index:5}.price-row{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.price-lbl{font-size:.74rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.price{font-family:var(--font-display);font-weight:700;font-size:1.9rem;line-height:1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.price-sub{font-size:.76rem;color:var(--muted)}.breakdown{display:grid;grid-gap:4px;gap:4px;font-size:.82rem;max-height:210px;overflow-y:auto;padding-top:4px;border-top:1px dashed var(--line)}.breakdown .l{display:flex;justify-content:space-between;gap:12px}.breakdown .l span:last-child{font-family:var(--font-mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.breakdown .l.total{font-weight:600;border-top:1px solid var(--line);padding-top:4px;margin-top:2px}.sheet{position:fixed;inset:0;z-index:50;background:rgba(15,20,22,.45);display:flex;justify-content:flex-end}.sheet-card{background:var(--surface);width:min(480px,100%);height:100%;overflow-y:auto;padding:20px 20px calc(24px + env(safe-area-inset-bottom, 0px));display:grid;grid-gap:16px;gap:16px;align-content:start;box-shadow:-8px 0 30px rgba(0,0,0,.2)}.sheet-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.sheet-head h2{font-size:1.4rem}.x{border:0;width:34px;height:34px;border-radius:50%;cursor:pointer;font-size:1.1rem;flex:none}.summary,.x{background:var(--surface-2)}.summary{border-radius:var(--r);padding:12px;display:grid;grid-gap:10px;gap:10px}.summary img{width:100%;border-radius:4px;display:block}.summary ul{margin:0;padding-left:18px;font-size:.85rem;display:grid;grid-gap:2px;gap:2px}.summary .sp{display:flex;justify-content:space-between;align-items:baseline;font-weight:600;gap:8px}.summary .sp b{font-family:var(--font-display);font-size:1.3rem}form.lead{grid-gap:10px}.fgrid,form.lead{display:grid;gap:10px}.fgrid{grid-template-columns:1fr 1fr;grid-gap:10px}@media (max-width:420px){.fgrid{grid-template-columns:1fr}}.in{display:grid;grid-gap:4px;gap:4px;font-size:.85rem;font-weight:500;min-width:0}.in input,.in select,.in textarea{border:1px solid var(--line);border-radius:4px;padding:9px 10px;background:var(--surface);font-weight:400;width:100%;min-width:0}.in textarea{min-height:76px;resize:vertical}.check{display:flex;gap:8px;font-size:.8rem;color:var(--muted);align-items:flex-start}.check input{margin-top:3px;accent-color:var(--accent)}.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}.success{display:grid;grid-gap:12px;gap:12px;text-align:center;padding:24px 0}.success .ok{width:56px;height:56px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;margin:0 auto}.adm{min-height:100vh;display:grid;grid-template-rows:auto 1fr}.adm-top{display:flex;align-items:center;gap:16px;padding:10px 16px;background:#1c2224;color:#e6ebe9;flex-wrap:wrap}.adm-top .logo{font-family:var(--font-display);font-weight:700;font-size:1.2rem;letter-spacing:.02em;color:#fff;text-decoration:none}.adm-top .logo span{color:#7fc8ad}.adm-top nav{display:flex;gap:4px;flex-wrap:wrap}.adm-top nav a{color:#c9d2cf;text-decoration:none;padding:7px 11px;border-radius:var(--r);font-weight:500}.adm-top nav a:hover,.adm-top nav a[aria-current=page]{background:hsla(0,0%,100%,.1);color:#fff}.adm-top .who{margin-left:auto;font-size:.82rem;color:#9aa5a7;display:flex;gap:10px;align-items:center}.adm-top .who button{background:transparent;border:1px solid hsla(0,0%,100%,.25);color:#e6ebe9;border-radius:var(--r);padding:5px 10px;cursor:pointer}.adm-main{padding-block:28px 64px;padding-inline:16px}.wrap{max-width:1120px;margin:0 auto;display:grid;grid-gap:20px;gap:20px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}.page-head h1{font-size:1.9rem}.page-head p{margin:4px 0 0;color:var(--muted);max-width:64ch}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));grid-gap:14px;gap:14px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px;display:grid;grid-gap:12px;gap:12px;align-content:start;min-width:0}.card h3{font-size:1.05rem;text-transform:uppercase;letter-spacing:.03em;font-weight:600}.card .desc{font-size:.84rem;color:var(--muted);margin:-6px 0 0}.card.wide{grid-column:1/-1}.empty{padding:32px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:var(--r);background:var(--surface)}.frow{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:10px;gap:10px;align-items:center;font-size:.9rem}.frow>span:last-child{display:flex;align-items:center;justify-content:flex-end;min-width:0;gap:4px}.frow input[type=email],.frow input[type=number],.frow input[type=text],.frow select{width:130px;padding:7px 9px;border:1px solid var(--line);border-radius:4px;background:var(--surface-2);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:right}.frow input[type=email],.frow input[type=text],.frow select{width:230px;max-width:100%;text-align:left}.frow input[type=color]{width:48px;height:34px;border:1px solid var(--line);border-radius:4px;padding:2px;background:var(--surface-2)}.frow input[type=checkbox]{width:20px;height:20px;accent-color:var(--accent)}.unit{font-family:var(--font-mono);font-size:.74rem;color:var(--muted)}.tbl-wrap{overflow-x:auto}table.tbl{width:100%;border-collapse:collapse;font-size:.86rem}.tbl th{text-align:left;font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.tbl td,.tbl th{padding:6px;border-bottom:1px solid var(--line)}.tbl td{vertical-align:middle}.tbl input[type=text]{width:100%;min-width:160px}.tbl input[type=number],.tbl input[type=text]{padding:6px 8px;border:1px solid var(--line);border-radius:4px;background:var(--surface-2)}.tbl input[type=number]{width:90px;text-align:right}.tbl input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent)}.tbl input[type=color]{width:40px;height:30px;border:1px solid var(--line);border-radius:4px;padding:2px;background:var(--surface-2)}.savebar{position:-webkit-sticky;position:sticky;bottom:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:10px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px;box-shadow:0 -4px 16px rgba(0,0,0,.06);flex-wrap:wrap}.saved{font-size:.82rem;color:var(--ok);font-family:var(--font-mono)}.lead-card{grid-template-columns:132px minmax(0,1fr);align-items:start}@media (max-width:480px){.lead-card{grid-template-columns:1fr}}.lead-thumb{width:100%;aspect-ratio:4/3;border-radius:4px;background:var(--surface-2);object-fit:cover;display:grid;place-items:center;color:var(--muted);font-size:.72rem;text-align:center;max-width:100%}.lead-body{display:grid;grid-gap:6px;gap:6px;min-width:0}.lead-top{display:flex;justify-content:space-between;gap:8px;align-items:baseline;flex-wrap:wrap}.lead-name{font-weight:600}.lead-date{font-size:.76rem;color:var(--muted);font-family:var(--font-mono)}.lead-cfg{font-size:.8rem;color:var(--muted);margin:0;overflow-wrap:anywhere}.lead-contact{font-size:.82rem;font-family:var(--font-mono);overflow-wrap:anywhere}.lead-foot{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}.lead-price{font-family:var(--font-display);font-weight:700;font-size:1.15rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.badge{font-size:.7rem;font-family:var(--font-mono);color:var(--muted);border:1px solid var(--line);border-radius:3px;padding:0 5px}.status{border:1px solid var(--line);border-radius:99px;padding:4px 10px;font-size:.78rem;font-weight:600;background:var(--surface)}.status[data-s=neu]{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}.status[data-s=bearbeitung]{border-color:var(--warn);color:var(--warn)}.status[data-s=angebot]{border-color:var(--ok);color:var(--ok)}.status[data-s=erledigt]{color:var(--muted)}pre.code{background:#182022;color:#d9e6e3;padding:16px;border-radius:var(--r);overflow-x:auto;font-family:var(--font-mono);font-size:.82rem;line-height:1.6;margin:0;white-space:pre}.preview{width:100%;height:760px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}.auth{min-height:100vh;display:grid;place-items:center;padding:24px 16px}.auth-card{width:min(420px,100%);background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:24px;display:grid;grid-gap:14px;gap:14px}.auth-card h1{font-size:1.6rem}.auth-card p{margin:0;color:var(--muted);font-size:.9rem}.linkbtn{border:0;background:none;color:var(--accent);cursor:pointer;padding:0;font-weight:600}.home{max-width:1120px;margin:0 auto;padding-block:48px 72px;padding-inline:16px;display:grid;grid-gap:40px;gap:40px}.home h1{font-size:clamp(2rem,5vw,3.4rem);line-height:1.05;max-width:18ch}.home .lead-txt{font-size:1.1rem;color:var(--muted);max-width:60ch;margin:12px 0 0}.home .row{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.mod-card{text-decoration:none;color:inherit}.mod-card:hover{border-color:var(--accent)}.mod-card .go{font-weight:600;color:var(--accent);font-size:.9rem}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}