:root{
  --bg:#08111f;
  --bg2:#0f1d33;
  /* 2026-06-07: Panel-Hintergründe vollständig entsättigt und transparenter.
     Vorher: rgba(16,28,48,.92) → klar blau (B viel höher als R), 92% opak.
     Erster Versuch: rgba(18,27,34,.78) hatte noch Blaustich (B=34, R=18) und
     78% war zu deckend → wirkte weiter wie alter blauer Kasten.
     Jetzt: echtes Grau ohne Hue (R=G=B annähernd gleich) bei 55–60% Alpha
     → kombiniert mit backdrop-filter:blur(14px) entsteht ein klares
     Milchglas, das Bild schimmert durch und Texte bleiben gut lesbar. */
  --panel:rgba(20, 22, 25, 0.58);
  --panel2:rgba(28, 30, 34, 0.52);
  --line:rgba(255, 255, 255, 0.10);
  --text:#edf6ff;
  /* 2026-06-11: Kontrast leicht angehoben (Lesbarkeit bei kleiner Schrift /
     BFSG). Vorher #94a8c4. */
  --muted:#aebdd4;
  /* 2026-06-07: Akzentfarbe global auf Orange umgestellt (Premium-Camping-Look).
     Alle Stellen die var(--accent) nutzen werden damit konsistent orange. */
  --accent:#F97316;
  --accent2:#22c55e;
  --danger:#fb7185;
  --warn:#fbbf24;
  --shadow:0 18px 55px rgba(0,0,0,.32);
  --radius:22px;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--text);background:#071017;overflow:auto}
button,input,textarea,select{font:inherit}
button{border:0;cursor:pointer}
a{color:#FDBA74}
a:hover{color:#F97316}
.hidden{display:none!important}

.app-shell{min-height:100vh;padding:18px;display:flex;flex-direction:column;gap:16px}
.app-logo-header{min-height:210px;padding:14px 18px;display:grid;place-items:center;position:relative;overflow:hidden;border:1px solid rgba(254, 215, 170,.78);border-radius:var(--radius);background:linear-gradient(135deg,#f8fbff 0%,#FFE9D1 45%,#FFF4E6 100%);box-shadow:0 22px 58px rgba(15,23,42,.28)}
.app-logo-header::before{content:'';position:absolute;inset:-42% -8% auto auto;width:440px;height:440px;border-radius:999px;background:rgba(253, 186, 116,.24)}
.app-logo-header::after{content:'';position:absolute;inset:auto auto -48% -10%;width:390px;height:390px;border-radius:999px;background:rgba(201, 90, 18,.14)}
.hero-brand-mark{position:relative;z-index:1;display:grid;place-items:center}
.hero-logo{display:block;width:min(100%,390px);height:182px;object-fit:contain;filter:drop-shadow(0 22px 34px rgba(15,23,42,.28))}
.account-line{display:flex;align-items:center;justify-content:center;gap:9px;flex-wrap:wrap;color:var(--muted);font-size:12px;font-weight:750;padding:0 6px;margin:-2px 0 0}
.account-line.guest-auth-links{flex-direction:column;gap:4px}
.account-line a,.account-line button{color:var(--muted);font-size:12px;font-weight:750;text-decoration:none;background:transparent!important;border:0!important;padding:0!important}
.account-line a:hover,.account-line button:hover{color:var(--accent);text-decoration:underline;text-underline-offset:4px}
.account-line form{display:inline;margin:0}.account-line form::before{content:'·';margin-right:9px;color:rgba(199, 174, 145,.55)}

.site-tabs{display:flex;gap:10px;flex-wrap:wrap;padding:10px;background:rgba(7,16,31,.58);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.tab-btn{flex:1;min-width:160px;padding:12px 14px;border-radius:15px;background:rgba(255,255,255,.07);border:1px solid var(--line);color:var(--text);font-weight:950}
.tab-btn.active{background:linear-gradient(135deg,#F97316,#C95A12);border-color:rgba(255, 244, 230,.55)}
.primary,.secondary,.ghost,.danger{display:inline-flex;align-items:center;justify-content:center;min-width:0;min-height:42px;padding:10px 13px;border-radius:13px;font-weight:850;line-height:1.16;text-align:center;white-space:normal;overflow-wrap:anywhere;color:var(--text);border:1px solid var(--line)}
.primary{background:linear-gradient(135deg,#F97316,#C95A12)}
.secondary,.ghost{background:rgba(255,255,255,.07)}
/* 2026-06-07: Point-Popup Aktions-Zeile (Verschieben + Löschen nebeneinander). */
.point-actions{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 4px}
.point-actions > button{flex:1 1 140px;min-width:0;padding:9px 12px;border-radius:11px;font-weight:850;font-size:13px}
.danger{background:rgba(251,113,133,.14);color:#fecdd3}
.wide{width:100%;margin-top:10px}

.panel,.map-card,.loaded-panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);backdrop-filter:blur(14px)}
.panel{padding:14px}.hint,.empty-state{color:var(--muted);line-height:1.35}.small-hint{font-size:12px;margin:9px 0 0}
input,textarea,select{width:100%;border:1px solid var(--line);border-radius:13px;background:rgba(4,10,20,.56);color:var(--text);padding:11px 12px;outline:none}
input:focus,textarea:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(253, 186, 116,.14)}
.field-label{display:block;color:var(--muted);font-size:12px;font-weight:800;margin-bottom:6px}
#articleSearch + *{}
label[for="articleSearch"].field-label{font-size:13.5px;font-weight:900;margin-bottom:8px;letter-spacing:.01em}
.button-row{display:flex;gap:10px;flex-wrap:wrap}

.start-view{display:grid;gap:16px}
.hero-card{padding:22px;border-radius:28px;background:radial-gradient(circle at 15% 10%,rgba(253, 186, 116,.2),transparent 34%),rgba(16,28,48,.92);border:1px solid var(--line);box-shadow:var(--shadow)}
.eyebrow{margin:0 0 4px;color:var(--accent);font-size:12px;text-transform:uppercase;letter-spacing:.16em;font-weight:900}
.hero-card h2{margin:0 0 10px;font-size:clamp(28px,4vw,46px);line-height:1.03}.hero-card p{max-width:760px;color:var(--muted);font-size:17px;line-height:1.55}
.start-feature-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.start-feature-strip>div,.quick-card{padding:14px;border-radius:18px;background:linear-gradient(135deg,rgba(249, 115, 22,.13),rgba(201, 90, 18,.07));border:1px solid rgba(253, 186, 116,.18);box-shadow:var(--shadow)}
.start-feature-strip strong{display:block;color:var(--text);font-size:15px;margin-bottom:5px}.start-feature-strip span{display:block;color:var(--muted);font-size:13px;line-height:1.38}
.info-grid{display:grid;grid-template-columns:1.15fr 1fr .85fr;gap:16px}.info-panel h3{margin:0 0 10px;color:var(--accent);font-size:18px}.info-panel li,.info-panel p{color:var(--muted);line-height:1.48}.safety-panel{border-color:rgba(251,191,36,.34);background:rgba(48,35,16,.82)}.safety-panel h3{color:#fde68a}
.legal-page{max-width:860px;margin:0 auto;width:100%}.legal-card{padding:22px}.legal-links{display:flex;justify-content:center;align-items:center;gap:14px;margin-top:8px;padding:4px 0 10px}.legal-links button{background:transparent;border:0;color:var(--muted);font-size:12px;font-weight:750;padding:2px 0}.legal-links button:hover,.legal-links button.active{color:var(--accent);text-decoration:underline;text-underline-offset:4px}
body.planner-open .legal-links{display:none!important}

/* 2026-06-07: Planer-Layout durchgehend einspaltig — Sidebar (Punkte 1-5 +
   Wo ist was?) oben, Karte drunter, auf ALLEN Bildschirmgrößen. Vorher war
   Desktop 370px-Sidebar links + Karte rechts; Marlon wollte konsistent
   Buttons-oben-Karte-unten auch auf Desktop, damit die Karte volle Breite
   bekommt. Sidebar selbst läuft in 2 Spalten (wie iPad-Quer). */
.layout{display:grid;grid-template-columns:1fr;gap:16px;align-items:start}
.planner-start-card{grid-column:1/-1;display:flex;align-items:center;gap:12px;padding:4px 2px 2px;color:var(--muted);font-size:12px;font-weight:950;text-transform:uppercase;letter-spacing:.14em}.planner-start-card span{white-space:nowrap;color:var(--accent);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:5px;text-decoration-color:rgba(253, 186, 116,.8)}.planner-start-card::after{content:'';height:1px;flex:1;background:linear-gradient(90deg,rgba(253, 186, 116,.55),rgba(148,178,220,.12),transparent)}
.sidebar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-width:0;padding-right:0;max-height:none;overflow:visible}.planner-tiles{gap:10px}
.tile-panel{padding:0;overflow:hidden;isolation:isolate}.tile-panel summary{list-style:none;cursor:pointer;padding:14px 15px;display:flex;align-items:center;justify-content:space-between;gap:10px;background:rgba(255,255,255,.045);border-bottom:1px solid transparent}.tile-panel summary::-webkit-details-marker{display:none}.tile-panel summary span{font-size:17px;font-weight:950}.tile-panel summary small{color:var(--muted);font-weight:800;text-align:right}.tile-panel summary::after{content:'⌄';font-size:22px;color:var(--accent);transition:transform .18s ease}.tile-panel[open] summary{border-bottom-color:rgba(255,255,255,.07)}.tile-panel[open] summary::after{transform:rotate(180deg)}.tile-panel>:not(summary){margin-left:14px;margin-right:14px}.tile-panel>.wide{width:calc(100% - 28px)}.tile-panel>:last-child{margin-bottom:14px}
.details-inline{margin-top:10px;padding-top:10px;border-top:1px solid rgba(255,255,255,.07)}
.vehicle-form,.details-form{display:grid;grid-template-columns:1fr 1fr;gap:9px}.details-form{grid-template-columns:1fr}.vehicle-form label,.details-form label{display:grid;gap:5px;color:var(--muted);font-size:12px;font-weight:850}.vehicle-form input,.details-form input,.details-form textarea{font-size:14px;color:var(--text)}

.search-wrap{position:relative}.suggestions{position:fixed;z-index:2147483002;background:#0b1729;border:1px solid var(--line);border-radius:14px;max-height:250px;overflow:auto;overscroll-behavior:contain;box-shadow:var(--shadow)}.suggestion{padding:10px 12px;border-bottom:1px solid rgba(255,255,255,.06);display:flex;justify-content:space-between;gap:10px}.suggestion:hover{background:rgba(253, 186, 116,.12)}
.upload-btn{position:relative;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;min-width:0;min-height:42px;padding:10px 13px;border-radius:13px;background:rgba(255,255,255,.07);border:1px solid var(--line);color:var(--text);font-weight:850;line-height:1.16;text-align:center;white-space:normal;overflow-wrap:anywhere;cursor:pointer}.upload-btn input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;padding:0;margin:0}.excel-upload-btn{display:flex}
.settings-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:10px 14px 14px}.settings-actions>*{width:100%;min-width:0;max-width:100%;text-align:center}.settings-actions button,.settings-actions .upload-btn{height:auto}.settings-subdetails{margin:10px 14px 14px;border:1px solid rgba(255,255,255,.08);border-radius:14px;background:rgba(255,255,255,.045);padding:8px}.settings-subdetails summary{cursor:pointer;font-weight:900;color:var(--text);padding:4px}.settings-subdetails input{margin:8px 0}.cloud-status{color:var(--muted);font-size:12px;margin:0 14px 14px}

.workspace{min-height:auto;padding-right:0}.map-card{min-height:520px;padding:14px;display:flex;flex-direction:column;position:relative}.map-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;margin-bottom:10px}.map-head h2{margin:0;font-size:17px}.map-head p{margin:4px 0 0;color:var(--muted);font-size:13px}.map-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;justify-content:flex-end}.map-actions button{padding:8px 11px}.legend{color:var(--muted);font-size:13px;display:flex;align-items:center;gap:7px;flex-basis:100%;justify-content:flex-end}.legend span{width:18px;height:18px;border-radius:999px;background:linear-gradient(135deg,var(--accent),#C95A12);display:inline-block}
/* 2026-06-07: feste Aspect-Ratio für das Bearbeitungs-Feld auf ALLEN Geräten,
   plus symmetrisches Padding links/rechts. So bleibt der Wohnwagen-Grundriss
   immer mittig, mit Reserveplatz für Deichsel/Stützrad, die typischerweise
   ÜBER den Bildrand hinausgehen (xPct > 100). Die Reserve ist auf Desktop
   und Mobile proportional gleich groß — kein Rausrutschen mehr.
   padding-inline 8% = ca. 2-3 cm sichtbarer Rand rechts auf Mobile. */
.image-stage{position:relative;flex:1 1 auto;display:grid;place-items:center;overflow:hidden;background:rgba(0,0,0,.22);border-radius:18px;border:1px solid rgba(255,255,255,.08);aspect-ratio:4/3;min-height:0;width:100%;padding-inline:8%;box-sizing:border-box}
#floorplan{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;display:block;margin:auto}.upload-empty{position:absolute;inset:24px;display:grid;place-content:center;text-align:center;gap:8px;border:2px dashed rgba(253, 186, 116,.35);border-radius:18px;background:rgba(7,18,37,.38);color:var(--muted);z-index:1;cursor:pointer;transition:border-color .15s ease,background .15s ease,transform .15s ease}.upload-empty:hover,.upload-empty:focus-visible{border-color:rgba(253, 186, 116,.72);background:rgba(253, 186, 116,.1);outline:0;transform:translateY(-1px)}.upload-empty strong{color:var(--text);font-size:22px}.upload-empty span{font-size:14px}
.points-layer,.coord-layer{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none}.coord-layer{z-index:20}.points-layer{z-index:30}.coord-layer *{pointer-events:none}.load-point{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;z-index:31;width:var(--point-w,36px);height:var(--point-h,36px);min-width:0;min-height:0;padding:0;border-radius:var(--point-radius,999px);border:2px solid rgba(255, 244, 230,.95);background:linear-gradient(135deg,#C95A12,#C95A12);color:#fff;box-shadow:0 8px 20px rgba(154, 71, 16,.38);display:grid;place-items:center;text-align:center;overflow:hidden}.load-point.assigned{background:linear-gradient(135deg,#059669,#16a34a);border-color:#bbf7d0}.load-point:hover{outline:3px solid rgba(253, 186, 116,.28)}.load-point.moving-selected{outline:4px solid rgba(216,180,254,.8);box-shadow:0 0 0 6px rgba(168,85,247,.28),0 8px 20px rgba(154, 71, 16,.38)}.load-point>span{display:grid;place-items:center;width:100%;height:100%;padding:1px 2px;color:#fff;font-size:10px;line-height:1;font-weight:950;text-align:center;overflow:hidden;text-overflow:ellipsis}.load-point>span small{display:block;max-width:100%;font-size:8px;line-height:1;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.load-point.size-xs>span{font-size:8px}.load-point.size-s>span{font-size:9px}.load-point.size-xs>span small,.load-point.size-s>span small{display:none}
.coord-line{position:absolute;pointer-events:none;opacity:.8;z-index:20}.coord-line.vertical{top:0;bottom:0;border-left:3px dashed rgba(251,191,36,.75)}.coord-line.horizontal{left:0;right:0;border-top:3px dashed rgba(34,197,94,.75)}.coord-line.axle{border-left-color:rgba(168,85,247,.9);filter:drop-shadow(0 0 4px rgba(168,85,247,.7))}.coord-line.rear,.coord-line.front{filter:drop-shadow(0 0 4px rgba(251,191,36,.7))}.coord-line.left-side,.coord-line.right-side{filter:drop-shadow(0 0 4px rgba(34,197,94,.7))}.coord-line span{position:absolute;padding:3px 7px;border-radius:999px;background:rgba(7,18,37,.82);border:1px solid rgba(255,255,255,.14);font-size:10px;font-weight:900;color:#fff;white-space:nowrap}.coord-line.vertical span{top:8px;left:4px}.coord-line.horizontal span{left:8px;top:4px}.coord-line.axle span{background:rgba(88,28,135,.92)}
.coord-panel{position:fixed;right:24px;top:120px;z-index:2147483000;width:min(340px,calc(100vw - 48px));max-height:calc(100vh - 144px);max-height:calc(100dvh - 144px);overflow:auto;overscroll-behavior:contain;padding:14px;border-radius:18px;background:rgba(7,18,37,.96);border:1px solid rgba(253, 186, 116,.34);box-shadow:var(--shadow)}.coord-panel h3{margin:0 0 5px}.coord-panel p{margin:0 0 10px;color:var(--muted);font-size:13px}.coord-buttons,.coord-orientation{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}.coord-buttons button,.coord-orientation button{padding:9px;border-radius:12px;background:rgba(255,255,255,.08);border:1px solid var(--line);color:var(--text);font-weight:850}.coord-buttons button.active,.coord-orientation button.active{background:linear-gradient(135deg,#F97316,#C95A12);border-color:rgba(255, 244, 230,.55)}.coord-buttons button[data-coord]{position:relative;padding-right:26px}.coord-buttons button[data-coord].coord-set{border-color:rgba(134,239,172,.55)}.coord-buttons button[data-coord].coord-set::after{content:"✓";position:absolute;top:50%;right:8px;transform:translateY(-50%);color:#86efac;font-weight:950;font-size:14px;line-height:1;text-shadow:0 1px 2px rgba(0,0,0,.4)}.coord-values{padding:8px 10px;border-radius:12px;background:rgba(255,255,255,.06);color:var(--muted);font-size:12px;font-weight:850;margin-bottom:10px}.coord-ok{color:#86efac}.coord-missing{color:#fde68a}.coord-values em{color:#fca5a5;font-style:normal;font-weight:950}.coord-toggle{display:flex;align-items:center;gap:8px;margin:8px 0 10px;color:var(--muted);font-size:13px;font-weight:850}.coord-toggle input{width:18px;height:18px;accent-color:var(--accent);padding:0;flex:0 0 auto}.coord-orientation-note{font-size:12px!important;margin:0 0 10px!important;color:var(--muted)!important}
.image-stage.adding-point{cursor:crosshair;outline:3px solid rgba(253, 186, 116,.38);outline-offset:-3px}.image-stage.setting-coord{cursor:crosshair;outline:3px solid rgba(251,191,36,.46);outline-offset:-3px}.image-stage.moving-point{cursor:pointer;outline:3px solid rgba(168,85,247,.48);outline-offset:-3px}.image-stage.move-target{cursor:crosshair}.image-stage.adding-point::after,.image-stage.setting-coord::after,.image-stage.moving-point::after,.image-stage.move-target::after,.coord-click-hint{display:none!important;content:none!important}

.point-popup{position:fixed;z-index:2147483001;min-width:320px;max-width:380px;max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px);overflow-y:auto;overflow-x:hidden;background:#071225;border:1px solid rgba(253, 186, 116,.38);border-radius:16px;padding:46px 12px 12px;box-shadow:var(--shadow);overscroll-behavior:contain;scrollbar-width:thin}.point-popup h3{padding-right:42px;margin:-32px 0 6px;min-height:36px;display:flex;align-items:center}.point-popup ul{margin:8px 0 0;padding-left:18px}.point-popup li{margin:4px 0;color:var(--muted)}.popup-close{position:absolute;top:10px;right:10px;z-index:20;width:36px;height:36px;border-radius:999px;background:rgba(251,113,133,.24);border:1px solid rgba(254,205,211,.5);color:#fff;font-size:25px;font-weight:950;line-height:1;display:grid;place-items:center;box-shadow:0 8px 22px rgba(0,0,0,.35)}.point-section-title{margin:10px 0 6px;color:var(--accent);font-weight:950;font-size:12px;text-transform:uppercase;letter-spacing:.08em}.point-items{display:grid;gap:6px}.point-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 8px;border-radius:11px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.07)}.point-item>span{min-width:0;flex:1;font-weight:800}.point-item small{display:block;margin-top:2px;color:var(--muted);font-weight:700}.danger-mini{background:rgba(251,113,133,.16)!important;color:#fecdd3!important}.point-search{display:block;margin-top:2px;padding:9px 10px}.point-article-results{display:grid;gap:5px;margin-top:7px;max-height:280px;overflow-y:auto;overflow-x:hidden;touch-action:pan-y;overscroll-behavior-x:none}.point-article-result{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-width:0;max-width:100%;box-sizing:border-box;text-align:left;padding:8px 9px;border-radius:11px;background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.07);color:var(--text)}.point-article-result:hover{background:rgba(253, 186, 116,.13)}.point-article-result small{display:block;color:var(--muted);font-size:11px}.point-article-result b{white-space:nowrap}.point-article-result>span{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.point-popup.search-docked{top:8px!important;left:8px!important;right:8px!important;width:auto!important;max-width:none!important;max-height:calc(100vh - 16px)!important;max-height:calc(100dvh - 16px)!important}.point-popup.search-docked .point-search{position:sticky;top:0;z-index:30;background:#071225;border-color:var(--accent);box-shadow:0 8px 18px rgba(0,0,0,.35)}.point-popup.search-docked .point-article-results{max-height:calc(100vh - 190px)}

.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.stat{background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.07);border-radius:14px;padding:9px}.stat b{display:block;font-size:18px}.stat span{color:var(--muted);font-size:12px}.warnings{margin-top:10px;display:grid;gap:7px}.warn{padding:9px;border-radius:13px;background:rgba(251,191,36,.12);border:1px solid rgba(251,191,36,.3);color:#fde68a;font-size:13px}.ok{padding:9px;border-radius:13px;background:rgba(34,197,94,.1);border:1px solid rgba(34,197,94,.25);color:#bbf7d0;font-size:13px}.distribution-details{margin-top:10px;padding:10px;border-radius:16px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.07)}.distribution-details h3{margin:0 0 8px;color:var(--accent);font-size:12px;text-transform:uppercase;letter-spacing:.08em}.distribution-row{display:flex;justify-content:space-between;gap:10px;padding:7px 0;border-top:1px solid rgba(255,255,255,.07);font-size:13px}.distribution-row:first-of-type{border-top:0}.distribution-row span{color:var(--muted);font-weight:800}.distribution-row b{white-space:nowrap}
.mini-actions{display:flex;gap:6px}.icon-btn{padding:7px 9px;border-radius:10px;background:rgba(255,255,255,.08);color:var(--text);border:1px solid var(--line)}
.qty-control{display:flex;align-items:center;gap:5px;flex-wrap:nowrap}.qty-control button{min-width:28px;height:30px;border-radius:9px;background:rgba(255,255,255,.08);border:1px solid var(--line);color:var(--text);font-weight:950;padding:0}.qty-control input{width:58px;padding:6px 5px;text-align:center;border-radius:9px}.qty-control input[type=number]::-webkit-outer-spin-button,.qty-control input[type=number]::-webkit-inner-spin-button{appearance:none;-webkit-appearance:none;margin:0}.qty-control input[type=number]{appearance:textfield;-moz-appearance:textfield}
.field-style-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:8px 0}.field-style-row label{display:grid;gap:5px;color:var(--muted);font-size:12px;font-weight:850}.field-preview-box{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px;border:1px solid rgba(148,178,220,.18);border-radius:14px;background:rgba(255,255,255,.045)}.field-preview-box>span{color:var(--muted);font-size:12px;font-weight:850}.field-preview{width:var(--point-w,36px);height:var(--point-h,36px);border-radius:var(--point-radius,999px);display:grid;place-items:center;background:linear-gradient(135deg,#C95A12,#C95A12);border:2px solid rgba(255, 244, 230,.95);box-shadow:0 8px 20px rgba(154, 71, 16,.28);color:#fff;font-size:10px;font-weight:950;line-height:1}.field-preview span{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.article-manager{margin:10px 0;border:1px solid rgba(255,255,255,.08);border-radius:14px;background:rgba(255,255,255,.045);padding:8px;overflow:hidden}.article-manager summary{cursor:pointer;font-weight:900;padding:4px}.article-manager input{margin:8px 0}.article-manage-list{display:grid;gap:8px;max-height:430px;overflow:auto;overflow-x:hidden;overscroll-behavior:contain;padding-right:2px}.article-manage-row{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;align-items:stretch;padding:8px;border-radius:13px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.07);min-width:0}.article-manage-main{text-align:left;background:transparent;border:0;color:var(--text);padding:3px;min-width:0}.article-manage-actions{display:flex;gap:7px;flex-wrap:wrap;align-items:stretch}.mini-manage{padding:7px 9px;border-radius:10px;white-space:nowrap;flex:1 1 90px;min-width:0}.mini-manage.mini-icon{flex:0 0 auto;width:40px;padding:7px 0;text-align:center;font-size:16px;line-height:1}.article-manage-assign{display:flex;gap:7px;align-items:end;flex-wrap:wrap;padding:8px;border-radius:12px;background:rgba(7,18,37,.55);border:1px solid rgba(253, 186, 116,.24)}.article-manage-assign label{display:grid;gap:5px;flex:1 1 160px;color:var(--muted);font-size:12px;font-weight:850;min-width:0}.article-manage-assign select{margin:0;padding:8px 9px;border-radius:10px;background:rgba(255,255,255,.06);border:1px solid var(--line);color:var(--text);font-weight:800;min-width:0;width:100%}.article-manage-assign .mini-manage{flex:0 0 auto}.article-manage-row strong,.article-manage-row small{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis}.article-manage-row small{color:var(--muted);font-size:11px}.article-manage-row button[disabled]{opacity:.45;cursor:not-allowed}.article-manage-editor{display:grid;grid-template-columns:1fr 110px;gap:8px;padding:10px;border-radius:14px;background:rgba(7,18,37,.72);border:1px solid rgba(253, 186, 116,.28)}.article-manage-editor label{display:grid;gap:5px;color:var(--muted);font-size:12px;font-weight:850}.article-manage-editor label:nth-child(3),.article-manage-editor label:nth-child(4),.article-manage-editor label:nth-child(5),.article-manage-editor-actions{grid-column:1/-1}.article-manage-editor input,.article-manage-editor textarea{margin:0}.article-manage-editor-actions{display:flex;gap:8px;flex-wrap:wrap}.article-manage-editor-actions button{flex:1 1 120px}
.whereis-view{padding:0 18px 18px}.whereis-panel{max-width:980px;margin:0 auto;padding:16px}.whereis-panel h2{margin:0 0 6px}.whereis-panel input{margin:12px 0 14px}.whereis-list{display:grid;gap:8px}.whereis-list.compact{max-height:280px;overflow:auto;overscroll-behavior:contain}.whereis-item{width:100%;display:flex;align-items:center;justify-content:space-between;gap:14px;text-align:left;padding:11px 12px;border-radius:15px;background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.08);color:var(--text)}.whereis-item:hover,.whereis-table-row:hover{border-color:rgba(253, 186, 116,.42);background:rgba(253, 186, 116,.1)}.whereis-item small{color:var(--muted)}.whereis-item b{color:#FFF4E6;font-size:13px;white-space:nowrap}.whereis-table{display:grid;gap:6px;margin-top:12px}.whereis-table-head,.whereis-table-row{display:grid;grid-template-columns:minmax(150px,1.5fr) minmax(130px,1fr) 90px;gap:10px;align-items:center}.whereis-table-head{padding:8px 10px;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.08em}.whereis-table-row{width:100%;text-align:left;padding:10px;border-radius:14px;background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.08);color:var(--text)}

/* 2026-06-07: Bisherige max-width:1120px-Regel + iPad-Quer-Override für das
   1-Spalten-Planer-Layout sind jetzt ÜBERFLÜSSIG, weil das Default-Layout
   schon einspaltig ist (siehe oben). Nur noch die Mobile-Spezialfälle in
   @media(max-width:760px) weiter unten greifen. */
@media(max-width:760px){
  .article-manage-editor{grid-template-columns:1fr}
  .app-shell{padding:10px}.app-logo-header{min-height:154px;padding:10px 12px;border-radius:20px}.hero-logo{width:min(100%,300px);height:138px}.site-tabs{display:grid;grid-template-columns:1fr}.tab-btn{width:100%;min-width:0}.info-grid,.start-feature-strip{grid-template-columns:1fr}.layout{gap:12px}.sidebar{display:flex;flex-direction:column;gap:12px}.tile-panel summary{padding:15px}.vehicle-form,.field-style-row,.settings-actions{grid-template-columns:1fr}.map-head{flex-direction:column}.map-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}.map-actions button{width:100%;min-width:0}.map-actions .legend{grid-column:1/-1;justify-content:flex-start}.image-stage{height:auto;min-height:0}/* 2026-06-07: feste 4/3 aspect-ratio */.coord-panel{position:fixed;top:12px;left:8px;right:8px;width:auto;max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px)}.coord-buttons,.coord-orientation{grid-template-columns:1fr}.point-popup{left:8px!important;right:8px!important;width:auto!important;min-width:0!important;max-width:none!important;padding-top:56px}.point-popup h3{margin-top:-42px;padding-right:52px;min-height:44px}.popup-close{width:44px;height:44px;font-size:30px;top:8px;right:8px}.stats-grid{grid-template-columns:1fr}.whereis-view{padding:0 10px 12px}.whereis-item{align-items:flex-start;flex-direction:column}.whereis-table-head{display:none}.whereis-table-row{grid-template-columns:1fr}.whereis-table-row span:nth-child(2)::before{content:'Ort: ';color:var(--muted)}.whereis-table-row span:nth-child(3)::before{content:'kg: ';color:var(--muted)}
}

/* ---- Usability-Patch 20260530 (web-45) ---- */

/* Auswertung: Balkendiagramm sichtbar machen */
.bar-chart{display:grid;gap:6px;margin-top:10px}
.bar-row{display:grid;gap:4px}
.bar-meta{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:var(--muted);font-weight:850}
.bar-track{position:relative;height:8px;border-radius:999px;background:rgba(255,255,255,.07);overflow:hidden}
.bar-track i{display:block;height:100%;background:linear-gradient(135deg,#F97316,#C95A12)}
.bar-row.front  .bar-track i{background:linear-gradient(135deg,#22c55e,#16a34a)}
.bar-row.rear   .bar-track i{background:linear-gradient(135deg,#fbbf24,#f97316)}
.bar-row.middle .bar-track i{background:linear-gradient(135deg,#94a8c4,#64748b)}
.bar-row.left   .bar-track i{background:linear-gradient(135deg,#FDBA74,#F97316)}
.bar-row.right  .bar-track i{background:linear-gradient(135deg,#a78bfa,#7c3aed)}

/* Layout ist jetzt automatisch responsiv (siehe @media-Regeln oben).
   Die alten manuellen "Mobile Variante"-Klassen wurden entfernt — keine
   .layout.mobile-preview / body.mobile-variant mehr nötig. */

/* Body horizontal nicht doppelt scrollen lassen (defensiv, kein Bruch) */
body{overflow-x:hidden}

/* Touch-Action: schnelles Tippen am Stage nicht als Double-Tap-Zoom werten */
.image-stage{touch-action:manipulation}

/* ---- Plan-Manager-Modal (web-46) ---- */
.plan-modal-backdrop{position:fixed;inset:0;z-index:2147483600;display:grid;place-items:center;padding:16px;background:rgba(4,10,20,.72);backdrop-filter:blur(6px)}
.plan-modal-backdrop.hidden{display:none!important}
body.plan-modal-open{overflow:hidden}
.plan-modal{width:min(560px,100%);max-height:calc(100dvh - 32px);max-height:calc(100vh - 32px);display:flex;flex-direction:column;background:#0b1729;border:1px solid rgba(253, 186, 116,.34);border-radius:18px;box-shadow:var(--shadow);overflow:hidden}
.plan-modal__header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line)}
.plan-modal__title{margin:0;font-size:18px;color:var(--text)}
.plan-modal__close{width:38px;height:38px;border-radius:999px;background:rgba(251,113,133,.22);border:1px solid rgba(254,205,211,.5);color:#fff;font-size:22px;font-weight:950;line-height:1;display:grid;place-items:center}
.plan-modal__save{padding:14px 16px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.03)}
.plan-modal__save.hidden{display:none!important}
.plan-modal__save-row{display:flex;gap:8px;align-items:stretch;flex-wrap:wrap}
.plan-modal__save-row input{flex:1 1 220px;min-width:0}
.plan-modal__save-row .primary{flex:0 0 auto;min-width:140px}
.plan-modal__hint{margin:8px 0 0;color:var(--muted);font-size:12px;line-height:1.4}
.plan-modal__body{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:12px 16px;-webkit-overflow-scrolling:touch}
.plan-modal__message{margin:0 0 10px;padding:9px 12px;border-radius:12px;background:rgba(253, 186, 116,.12);border:1px solid rgba(253, 186, 116,.3);color:#FED7AA;font-size:13px;font-weight:850}
.plan-modal__message.is-error{background:rgba(251,113,133,.16);border-color:rgba(254,205,211,.4);color:#fecdd3}
.plan-modal__message.hidden{display:none!important}
.plan-modal__empty{padding:18px;text-align:center;color:var(--muted);font-size:13px}
.plan-modal__list{display:grid;gap:8px}
.plan-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:14px;background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.08);min-height:64px}
.plan-row__main{flex:1 1 auto;min-width:0}
.plan-row__name{font-weight:850;color:var(--text);font-size:15px;display:flex;align-items:center;gap:7px;flex-wrap:wrap;overflow:hidden;text-overflow:ellipsis}
.plan-row__meta{color:var(--muted);font-size:12px;margin-top:2px}
.plan-row__badge{font-size:10px;text-transform:uppercase;letter-spacing:.08em;padding:2px 6px;border-radius:999px;background:rgba(34,197,94,.18);color:#bbf7d0;border:1px solid rgba(34,197,94,.32);font-weight:900}
.plan-row__actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.plan-row__primary{min-height:42px;padding:9px 14px;font-weight:900;border-radius:12px}
.plan-row__icon{width:42px;height:42px;min-height:42px;padding:0;display:grid;place-items:center;border-radius:12px;background:rgba(255,255,255,.08);border:1px solid var(--line);color:var(--text);font-size:18px;line-height:1}
.plan-row__icon--danger{background:rgba(251,113,133,.16);border-color:rgba(254,205,211,.4);color:#fecdd3}
.plan-row__icon:hover{outline:2px solid rgba(253, 186, 116,.4)}
.plan-row__delete-confirm{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:6px 8px;border-radius:12px;background:rgba(251,113,133,.1);border:1px solid rgba(254,205,211,.3)}
.plan-row__delete-confirm span{font-size:12px;color:#fecdd3;font-weight:850}
.plan-row__delete-confirm .danger,.plan-row__delete-confirm .ghost{min-height:38px;padding:7px 11px;font-size:13px}
.plan-row--editing{flex-direction:column;align-items:stretch;gap:8px}
.plan-row__edit{width:100%;font-size:15px}
.plan-row--editing .plan-row__actions{justify-content:flex-end}
@media(max-width:540px){
  .plan-modal-backdrop{padding:0;align-items:stretch}
  .plan-modal{width:100%;height:100dvh;height:100vh;max-height:none;border-radius:0;border-left:0;border-right:0}
  .plan-row{align-items:flex-start;flex-direction:column}
  .plan-row__actions{width:100%;justify-content:flex-start}
  .plan-row__primary{flex:1 1 auto}
  .plan-modal__save-row{flex-direction:column}
  .plan-modal__save-row .primary{width:100%}
}

/* Feld-Controls als kompakte horizontale Reihe wie Deichsel-Controls (web-72).
   Wrapper wird zur Flex-Leiste oberhalb des Feldes, Buttons in Drawbar-Groesse.
   Reihenfolge per CSS-order: Drehen / OK / X / Verschieben (rechts).
   Funktionen unveraendert; Akzentfarbe nur noch ueber Border. */
.drag-handle-wrapper{position:absolute;display:flex;flex-direction:row;align-items:center;gap:6px;background:rgba(15,29,51,.94);padding:6px 8px;border-radius:8px;box-shadow:0 4px 14px rgba(0,0,0,.45);pointer-events:auto;white-space:nowrap;z-index:36;transform:translate(-50%,calc(-100% - 22px))}
.drag-handle-btn,.drag-rotate-btn,.drag-confirm-btn,.drag-cancel-btn{position:static;appearance:none;pointer-events:auto;background:rgba(30,41,59,.85);color:#e2e8f0;font-size:15px;line-height:1;padding:6px 9px;border-radius:6px;cursor:pointer;min-width:32px;min-height:32px;width:auto;height:auto;font-family:inherit;display:grid;place-items:center;box-shadow:none;font-weight:700;transition:background .15s,border-color .15s,transform .15s}
.drag-rotate-btn{order:1;touch-action:manipulation;border:1px solid rgba(253, 186, 116,.7);font-weight:900}
.drag-rotate-btn:hover,.drag-rotate-btn:active{background:rgba(253, 186, 116,.22);border-color:#FDBA74;transform:rotate(90deg)}
.drag-confirm-btn{order:2;border:1px solid rgba(16,185,129,.85);font-weight:900}
.drag-confirm-btn:hover{background:rgba(16,185,129,.25);border-color:#10b981}
.drag-cancel-btn{order:3;border:1px solid rgba(148,163,184,.55)}
.drag-cancel-btn:hover{background:rgba(148,163,184,.22);border-color:#cbd5e1}
.drag-handle-btn{order:4;touch-action:none;cursor:grab;border:1px solid rgba(168,85,247,.75)}
.drag-handle-btn:hover,.drag-handle-btn:active{background:rgba(168,85,247,.22);border-color:#a855f7;cursor:grabbing}
.load-point.drag-handle-active{outline:4px solid rgba(168,85,247,.8);box-shadow:0 0 0 6px rgba(168,85,247,.25),0 8px 20px rgba(154, 71, 16,.38)}
.inline-create-article-btn{display:block;width:100%;text-align:left;margin-top:8px;padding:9px 10px;border-radius:11px;border:1px dashed rgba(253, 186, 116,.45);background:rgba(253, 186, 116,.07);color:var(--accent);font-size:13px;font-weight:800;cursor:pointer}
.inline-create-article-btn:hover{background:rgba(253, 186, 116,.15);border-color:var(--accent)}
.inline-article-create{background:rgba(255,255,255,.05);border:1px solid rgba(253, 186, 116,.3);border-radius:12px;padding:10px 10px 8px;margin-top:6px;display:grid;gap:7px}
.inline-article-label{display:grid;gap:3px;font-size:12px;font-weight:700;color:var(--muted)}
.inline-article-actions{display:flex;gap:8px;margin-top:2px}
.inline-save-btn{flex:1;background:var(--accent);color:#071225;font-weight:900;border:none;border-radius:9px;padding:8px 10px;cursor:pointer;font-size:13px}
.inline-save-btn:hover{opacity:.88}
.inline-cancel-btn{flex:0 0 auto;padding:8px 12px;border-radius:9px;font-size:13px}

/* ---- Gewichts-Overlay / Ampel-Badge (web-54) ---- */
.weight-overlay{position:absolute;top:10px;left:50%;transform:translateX(-50%);z-index:40;display:flex;align-items:center;gap:7px;padding:7px 14px;border-radius:999px;background:rgba(7,18,37,.82);border:1px solid rgba(148,178,220,.28);box-shadow:0 4px 16px rgba(0,0,0,.38);backdrop-filter:blur(8px);white-space:nowrap;pointer-events:none;font-size:13px;font-weight:850;color:var(--text);max-width:calc(100% - 28px)}
.weight-overlay-dot{width:13px;height:13px;border-radius:999px;flex-shrink:0}
.weight-overlay-dot.green{background:#22c55e;box-shadow:0 0 6px rgba(34,197,94,.7)}
.weight-overlay-dot.yellow{background:#fbbf24;box-shadow:0 0 6px rgba(251,191,36,.7)}
.weight-overlay-dot.red{background:#fb7185;box-shadow:0 0 6px rgba(251,113,133,.7)}
.weight-overlay-dot.grey{background:rgba(148,178,220,.45)}
.weight-overlay-sep{color:rgba(148,178,220,.4)}
.faq-page{max-width:920px}
.faq-card{padding:24px 24px 20px}
.faq-card h2{margin:0 0 6px;color:var(--text);font-size:24px}
.faq-intro{margin:0 0 18px;color:var(--muted);line-height:1.5}
.faq-group-title{margin:22px 0 10px;padding:0 0 6px;color:var(--accent);font-size:13px;font-weight:950;text-transform:uppercase;letter-spacing:.1em;border-bottom:1px solid rgba(253, 186, 116,.25)}
.faq-group-title:first-of-type{margin-top:6px}
.faq-note{margin:0 0 14px;padding:10px 12px;border-radius:12px;background:rgba(251,191,36,.10);border:1px solid rgba(251,191,36,.28);color:#fde68a;font-size:13px;line-height:1.5}
.faq-item{margin:0 0 8px;padding:0;border-radius:14px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.07);overflow:hidden}
.faq-item summary{list-style:none;cursor:pointer;padding:13px 44px 13px 16px;position:relative;font-weight:850;color:var(--text);font-size:15px;line-height:1.4;background:rgba(255,255,255,.025)}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{content:'+';position:absolute;right:16px;top:50%;transform:translateY(-50%);font-size:22px;color:var(--accent);line-height:1;font-weight:700;transition:transform .18s ease}
.faq-item[open] summary::after{content:'\2212'}
.faq-item[open] summary{border-bottom:1px solid rgba(255,255,255,.07)}
.faq-item summary:hover{background:rgba(253, 186, 116,.06)}
.faq-body{padding:12px 16px 14px;color:var(--muted);line-height:1.55;font-size:14px}
.faq-body p{margin:0 0 8px}
.faq-body p:last-child{margin-bottom:0}
.faq-body ul,.faq-body ol{margin:6px 0 8px;padding-left:22px}
.faq-body li{margin:3px 0}
.faq-body strong,.faq-body em{color:var(--text)}
.faq-body em{font-style:normal;color:#FFF4E6}
.link-button{background:transparent;border:0;padding:0;color:#FDBA74;text-decoration:underline;font:inherit;cursor:pointer}
.link-button:hover{color:#F97316}
@media (max-width:720px){
  .faq-card{padding:18px 14px 16px}
  .faq-card h2{font-size:20px}
  .faq-item summary{font-size:14px;padding:12px 38px 12px 13px}
  .faq-body{padding:10px 13px 12px;font-size:13.5px}
}

/* Auswertung: Statuskarten + Ampellogik (scoped) */
.eval-status{display:grid;gap:10px;margin-bottom:10px;min-width:0;max-width:100%}
.eval-status,.eval-cards,.eval-overall,.eval-card{box-sizing:border-box}
.eval-overall b,.eval-card b,.eval-overall span,.eval-card span,.eval-badge{overflow-wrap:anywhere;word-break:break-word}
.eval-badge{white-space:normal;text-align:center;max-width:100%}
.eval-overall,.eval-card{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:14px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.045)}
.eval-overall{padding:12px 14px}
.eval-overall .eval-overall-body,.eval-card .eval-card-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.eval-overall b,.eval-card b{font-size:13px;line-height:1.2}
.eval-overall span:not(.eval-dot),.eval-card span:not(.eval-dot):not(.eval-badge){color:var(--muted);font-size:12px;line-height:1.3}
.eval-dot{flex:none;width:12px;height:12px;border-radius:999px;background:rgba(255,255,255,.25);box-shadow:0 0 0 2px rgba(255,255,255,.06)}
.eval-badge{flex:none;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:3px 8px;border-radius:999px;background:rgba(255,255,255,.08);color:#e2e8f0}
.eval-cards{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));min-width:0;max-width:100%}
.eval-ok       {border-color:rgba(34,197,94,.35);background:rgba(34,197,94,.08)}
.eval-ok .eval-dot{background:#22c55e;box-shadow:0 0 0 2px rgba(34,197,94,.18)}
.eval-ok .eval-badge{background:rgba(34,197,94,.18);color:#bbf7d0}
.eval-warn     {border-color:rgba(251,191,36,.4);background:rgba(251,191,36,.1)}
.eval-warn .eval-dot{background:#fbbf24;box-shadow:0 0 0 2px rgba(251,191,36,.22)}
.eval-warn .eval-badge{background:rgba(251,191,36,.22);color:#fde68a}
.eval-critical {border-color:rgba(239,68,68,.45);background:rgba(239,68,68,.1)}
.eval-critical .eval-dot{background:#ef4444;box-shadow:0 0 0 2px rgba(239,68,68,.22)}
.eval-critical .eval-badge{background:rgba(239,68,68,.22);color:#fecaca}
.eval-missing  {border-color:rgba(148,163,184,.3);background:rgba(148,163,184,.08)}
.eval-missing .eval-dot{background:#94a3b8;box-shadow:0 0 0 2px rgba(148,163,184,.18)}
.eval-missing .eval-badge{background:rgba(148,163,184,.2);color:#cbd5e1}
.eval-disclaimer{margin:10px 0 0;font-size:11.5px;color:var(--muted);font-style:italic}

/* === Deichsel-Overlay (drawbars.js) ============================== */
.drawbar-layer{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:7}
.drawbar-layer .drawbar-item{position:absolute;pointer-events:auto;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;will-change:left,top}
.drawbar-layer .drawbar-item img{display:block;max-width:240px;max-height:240px;pointer-events:none;transform-origin:50% 50%;filter:drop-shadow(0 2px 4px rgba(0,0,0,.25))}
.drawbar-layer .drawbar-item.is-selected{cursor:grabbing}
.drawbar-layer .drawbar-item.is-selected img{outline:2px dashed #FDBA74;outline-offset:4px;border-radius:6px}
.drawbar-layer .drawbar-item:active{cursor:grabbing}
.drawbar-controls{position:absolute;left:50%;top:100%;transform:translate(-50%,8px);display:flex;gap:6px;background:rgba(15,29,51,.94);padding:6px 8px;border-radius:8px;box-shadow:0 4px 14px rgba(0,0,0,.45);pointer-events:auto;white-space:nowrap;z-index:8}
.drawbar-controls .drawbar-ctrl-btn{appearance:none;border:1px solid rgba(148,163,184,.45);background:rgba(30,41,59,.85);color:#e2e8f0;font-size:15px;line-height:1;padding:6px 9px;border-radius:6px;cursor:pointer;min-width:32px;min-height:32px;font-family:inherit}
.drawbar-controls .drawbar-ctrl-btn:hover{background:rgba(253, 186, 116,.18);border-color:#FDBA74}
.drawbar-controls .drawbar-ctrl-btn:active{background:rgba(253, 186, 116,.32)}
.drawbar-variant-menu{position:fixed;z-index:1000;background:#0f1d33;border:1px solid rgba(148,163,184,.4);border-radius:10px;box-shadow:0 12px 40px rgba(0,0,0,.55);padding:6px;max-height:70vh;overflow:auto;min-width:260px;max-width:320px}
.drawbar-variant-menu .drawbar-variant-item{display:flex;align-items:center;gap:10px;width:100%;background:transparent;border:0;color:#e2e8f0;padding:8px;border-radius:6px;cursor:pointer;text-align:left;font-size:13px;line-height:1.25;font-family:inherit}
.drawbar-variant-menu .drawbar-variant-item:hover{background:rgba(253, 186, 116,.12)}
.drawbar-variant-menu .drawbar-variant-item img{width:54px;height:36px;object-fit:contain;background:#fff;border-radius:4px;padding:2px;flex:0 0 54px}
.drawbar-variant-menu .drawbar-variant-item span{flex:1 1 auto;color:#e2e8f0}
@media (max-width:640px){
  .drawbar-layer .drawbar-item img{max-width:180px;max-height:180px}
  .drawbar-variant-menu{max-width:90vw}
}

/* === Homepage base layout (web-67 restore) =======================
   Stellt sicher, dass Hero/Benefits/Steps/Bild auf ALLEN Breiten
   sauber innerhalb des Viewports bleiben. Vorher gab es nur eine
   tiefer entfernte Desktop-Variante; ohne diese Basisregeln liefen
   intrinsische Bildbreiten und Mockup-Pills horizontal raus. */
.start-view{min-width:0;max-width:100%}
.start-view > *{min-width:0;max-width:100%;box-sizing:border-box}

.hero-card.hero-v2{
  display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);
  gap:26px;align-items:center;
  width:100%;max-width:100%;min-width:0;box-sizing:border-box;
  padding:30px 30px 28px;border-radius:30px;position:relative;overflow:hidden;
}
.hero-v2 .hero-content,.hero-v2 .hero-mock{min-width:0;max-width:100%;box-sizing:border-box}
.hero-headline{margin:0 0 14px;font-size:clamp(28px,4.4vw,52px);line-height:1.04;font-weight:950}
.hero-sub{margin:0 0 18px;max-width:560px;color:#cfdcef;font-size:17px;line-height:1.55}
.hero-cta{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 6px}
.hero-cta > .primary,.hero-cta > .ghost{flex:0 1 auto;min-width:0;max-width:100%}
.hero-mock{position:relative;z-index:1;display:flex;justify-content:flex-end;min-width:0}
.hero-mock-card{
  width:100%;max-width:430px;min-width:0;box-sizing:border-box;
  padding:18px;background:rgba(7,16,31,.78);
  border:1px solid rgba(253, 186, 116,.28);border-radius:22px;
  box-shadow:0 22px 50px rgba(0,0,0,.5);
}
.hero-mock-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:14px;flex-wrap:wrap}
.hero-bar-row{margin:10px 0;min-width:0}
.hero-bar-track{height:10px;border-radius:999px;background:rgba(255,255,255,.07);overflow:hidden;display:flex}
.hero-bar-track i{display:block;height:100%;background:linear-gradient(135deg,#22d3ee,#C95A12)}
.hero-bar-track.split i.left{background:linear-gradient(135deg,#22c55e,#16a34a)}
.hero-bar-track.split i.right{background:linear-gradient(135deg,#fbbf24,#f97316)}
.hero-mock-foot{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;min-width:0}
.hero-mini-pill{font-size:11.5px;font-weight:900;padding:5px 10px;border-radius:999px;background:rgba(255,255,255,.06);border:1px solid rgba(148,178,220,.22);color:#cfdcef;white-space:normal;overflow-wrap:anywhere;max-width:100%}

.start-hero-image{
  margin:0 auto;width:100%;max-width:1120px;min-width:0;box-sizing:border-box;
  display:flex;flex-direction:column;gap:10px;align-items:stretch;
}
.start-hero-image img{display:block;width:100%;max-width:100%;height:auto;max-height:none;object-fit:contain;border-radius:22px;border:1px solid var(--line);box-shadow:0 24px 60px rgba(2,8,23,.28)}
.start-hero-image figcaption{color:var(--muted);font-size:13px;line-height:1.4;text-align:center}

.start-benefits,.start-steps{width:100%;max-width:100%;min-width:0;box-sizing:border-box}
.section-quiet-title{margin:4px 0 16px;color:var(--accent);font-size:clamp(19px,2.6vw,25px);font-weight:950;letter-spacing:.01em;line-height:1.15;text-shadow:0 8px 24px rgba(253, 186, 116,.18)}
.benefit-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;width:100%;max-width:100%;min-width:0;box-sizing:border-box}
.benefit{padding:14px;border-radius:16px;background:rgba(255,255,255,.045);border:1px solid var(--line);min-width:0;max-width:100%;box-sizing:border-box}
.benefit strong{display:block;color:var(--text);font-size:15px;margin-bottom:6px}
.benefit p{margin:0;color:var(--muted);font-size:13.5px;line-height:1.5}

.quiet-steps{margin:0;padding-left:22px;color:var(--muted);line-height:1.55}
.quiet-steps li{margin:6px 0}
.quiet-note{margin:10px 0 0;color:var(--muted);font-size:13px;font-style:italic}
.price-note{margin-top:18px;padding:16px 18px;border-radius:18px;background:linear-gradient(135deg,rgba(34,197,94,.16),rgba(249, 115, 22,.10));border:1px solid rgba(74,222,128,.30);box-shadow:0 16px 34px rgba(0,0,0,.18)}
.price-note strong{display:block;color:#dcfce7;font-size:clamp(17px,2.4vw,22px);font-weight:950;line-height:1.2;margin-bottom:6px}
.price-note span{display:block;color:#FFE9D1;font-size:14px;line-height:1.5}

.safety-note{padding:14px 16px;border-radius:16px;background:rgba(48,35,16,.7);border:1px solid rgba(251,191,36,.34);color:#fde68a;width:100%;max-width:100%;box-sizing:border-box}
.safety-note h4{margin:0 0 6px;color:#fde68a}
.safety-note p{margin:0;line-height:1.5;font-size:14px;color:#fef3c7}

.bottom-cta{
  display:flex;flex-wrap:wrap;gap:18px;align-items:center;justify-content:space-between;
  width:100%;max-width:100%;min-width:0;box-sizing:border-box;
  padding:22px 24px;border-radius:24px;
}
.bottom-cta-text{flex:1 1 320px;min-width:0;max-width:100%}
.bottom-cta-buttons{display:flex;gap:10px;flex-wrap:wrap}
.bottom-cta-link{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:12px 18px;border-radius:13px;background:rgba(255,255,255,.07);border:1px solid var(--line);color:var(--text);font-weight:900;text-decoration:none}

@media(max-width:1120px){
  .hero-card.hero-v2{grid-template-columns:1fr;padding:24px 22px;gap:22px}
  .hero-mock{justify-content:stretch}
  .hero-mock-card{max-width:none}
  .benefit-row{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* === Homepage mobile overflow emergency fix (web-67) =============
   Marlon meldete bei 390px scrollWidth ~1370 statt 375. Intrinsische
   Bildbreite und Flex-/Grid-Kinder ohne min-width:0 / max-width
   sprengten die Seite. Diese Regeln greifen NUR auf Mobile und
   beeinflussen Desktop nicht. */
@media (max-width:760px){
  html,body{max-width:100vw;overflow-x:hidden}
  .app-shell{padding:10px;max-width:100vw;overflow-x:hidden}
  .start-view{display:grid;gap:14px;width:100%;max-width:100%;min-width:0}
  .start-view > *{width:100%;max-width:100%;min-width:0;box-sizing:border-box}

  .hero-card,
  .hero-card.hero-v2,
  .hero-v2 .hero-content,
  .hero-v2 .hero-mock,
  .hero-mock-card,
  .start-hero-image,
  .start-benefits,
  .benefit-row,
  .benefit,
  .start-steps,
  .quiet-steps,
  .price-note,
  .safety-note,
  .bottom-cta,
  .bottom-cta-text,
  .bottom-cta-buttons{
    width:100%!important;max-width:100%!important;min-width:0!important;box-sizing:border-box;
  }

  .hero-card.hero-v2{grid-template-columns:1fr;gap:18px;padding:18px 14px;border-radius:22px}
  .hero-headline{font-size:clamp(26px,7vw,34px);line-height:1.08;margin:0 0 10px}
  .hero-sub{font-size:15px;line-height:1.5;margin:0 0 14px;max-width:100%}
  .hero-cta{flex-direction:column;align-items:stretch;gap:8px;margin:0 0 4px}
  .hero-cta > .primary,
  .hero-cta > .ghost,
  .hero-cta-primary,
  .hero-cta-secondary{width:100%;min-width:0;max-width:100%;flex:0 0 auto;white-space:normal;overflow-wrap:anywhere}

  .hero-mock{justify-content:stretch}
  .hero-mock-card{padding:14px;border-radius:18px}
  .hero-mock-head{flex-wrap:wrap;gap:6px}
  .hero-mock-foot{flex-direction:column;align-items:stretch;gap:6px}
  .hero-mini-pill{display:block;width:100%;text-align:center;white-space:normal}

  .start-hero-image img{width:100%;max-width:100%;height:auto;border-radius:14px}
  .start-hero-image figcaption{font-size:12.5px}

  .benefit-row{grid-template-columns:1fr;gap:10px}
  .benefit{padding:12px;border-radius:14px}

  .safety-note{padding:12px 14px;border-radius:14px}
  .safety-note p{font-size:13.5px}

  .bottom-cta{flex-direction:column;align-items:stretch;gap:12px;padding:16px;border-radius:18px}
  .bottom-cta-buttons{width:100%}
  .bottom-cta-buttons .primary,
  .bottom-cta-buttons .ghost,
  .bottom-cta-link{flex:1 1 auto;width:100%;min-width:0;max-width:100%;white-space:normal;overflow-wrap:anywhere}

  /* Defensive: keine Startseiten-Bildgrafiken dürfen aus dem Viewport laufen */
  .start-view img{max-width:100%;height:auto}
}

@media (max-width:430px){
  .hero-card.hero-v2{padding:16px 12px}
  .hero-mock-card{padding:12px}
  .benefit{padding:11px}
}

/* === Homepage hero image responsive guard (web-68) ====================
   Marlon: Beispielbild war auf Desktop wieder riesig. Hier robust gegen
   spätere Layout-Drift festgenagelt. Base-Regel hat bereits max-width:560px
   und max-height:360px; diese Regeln verstärken das und decken Mobile
   sauber ab. */
@media (min-width:901px){
  .start-hero-image{
    max-width:1120px!important;
    width:100%!important;
    margin-left:auto!important;
    margin-right:auto!important;
  }
  .start-hero-image img{
    max-width:100%!important;
    max-height:none!important;
    width:100%!important;
    height:auto!important;
    object-fit:contain!important;
  }
}
@media (max-width:900px){
  .start-hero-image{
    width:100%;
    max-width:100%;
    margin-left:auto;
    margin-right:auto;
    box-sizing:border-box;
  }
  .start-hero-image img{
    width:100%;
    max-width:100%;
    height:auto;
    max-height:none;
    object-fit:contain;
  }
}

/* === Mobile Footer / Legal Links (web-73, 2026-06-01) ===
   Mobil: Impressum/Datenschutz/Haftung/Sicherheit zentriert,
   gleichmaessige Abstaende, Umbruch erlaubt, kein horizontaler Overflow.
   Desktop bleibt unberuehrt. */
@media (max-width:560px){
  .site-footer.legal-links,
  .legal-links{
    display:flex;
    flex-wrap:wrap;
    justify-content:center;
    align-items:center;
    gap:10px 16px;
    padding:8px 10px 14px;
    margin:8px auto 0;
    max-width:100%;
    box-sizing:border-box;
    overflow-x:hidden;
    text-align:center;
  }
  .legal-links button{
    flex:0 0 auto;
    font-size:12.5px;
    line-height:1.2;
    padding:6px 4px;
    min-height:32px;
    white-space:nowrap;
  }
}
/* web-74: whereis Artikelliste als zugeklapptes Dropdown */
.whereis-list-collapsible{margin-top:12px;border:1px solid rgba(255,255,255,.08);border-radius:14px;background:rgba(255,255,255,.04);overflow:hidden}
.whereis-list-collapsible>summary{list-style:none;cursor:pointer;padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--text);font-weight:600;user-select:none}
.whereis-list-collapsible>summary::-webkit-details-marker{display:none}
.whereis-list-collapsible>summary::after{content:'▾';font-size:14px;color:var(--muted);transition:transform .15s ease}
.whereis-list-collapsible[open]>summary::after{transform:rotate(180deg)}
.whereis-list-collapsible>summary:hover{background:rgba(253, 186, 116,.08)}
.whereis-list-collapsible .whereis-table-scroll{max-height:60vh;max-height:60dvh;overflow-y:auto;overscroll-behavior:contain;padding:6px 12px 12px;margin-top:0}
.whereis-list-inline-collapsible{margin-top:10px}
.whereis-list-inline-collapsible .whereis-list-inline-scroll{max-height:400px;overflow-y:auto;overscroll-behavior:contain;padding:6px 10px 10px;margin-top:0;display:flex;flex-direction:column;gap:6px}

/* ---- whereis-suggestions (web-76) ---- */
.whereis-suggestions{margin-top:6px;max-height:240px;overflow-y:auto;overscroll-behavior:contain;border:1px solid rgba(255,255,255,.12);border-radius:12px;background:rgba(15,23,42,.96);display:flex;flex-direction:column;gap:2px;padding:4px;box-shadow:0 8px 24px rgba(0,0,0,.35)}
.whereis-suggestions[hidden]{display:none}
.whereis-suggestion{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;text-align:left;padding:8px 10px;border-radius:8px;background:transparent;color:var(--text);border:1px solid transparent;cursor:pointer;font:inherit}
.whereis-suggestion:hover,.whereis-suggestion:focus{background:rgba(253, 186, 116,.12);border-color:rgba(253, 186, 116,.25);outline:none}
.whereis-suggestion .ws-name{font-weight:650}
.whereis-suggestion .ws-meta{color:var(--muted);font-size:12px}

/* ---- web-77: article-manage Fach-Auswahl Desktop-Kontrast ---- */
/* Chrome/desktop rendert <option> in einem Systempopup mit weissem Hintergrund;
   <option> erbt color:var(--text) (fast weiss) -> unlesbar. Mobile nutzt das
   OS-Wheel und bleibt unveraendert. Wir setzen color/background explizit. */
.article-manage-assign select{background-color:#0b1626;color:#e5edf7}
.article-manage-assign select option,
.article-manage-assign select optgroup{background-color:#0b1626;color:#e5edf7}

/* Premium status badge in account line */

/* web-138/139: Feedback-Button in der Account-Line erbt dieselbe dezente Optik
   wie Logout und „Eingeloggt als …" — kein Pillen-Look mehr.
   Visuelle Properties werden komplett von `.account-line button` bestimmt.
   Mobile Position (`order:3`) bleibt erhalten — siehe @media (max-width:640px). */
.feedback-modal{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;padding:18px}
.feedback-modal.hidden{display:none!important}
.feedback-backdrop{position:absolute;inset:0;background:rgba(2,8,23,.72);backdrop-filter:blur(6px)}
.feedback-dialog{position:relative;width:min(560px,100%);max-height:calc(100vh - 36px);overflow:auto;padding:24px;border-radius:24px;box-shadow:0 30px 90px rgba(0,0,0,.52)}
.feedback-close{position:absolute;top:12px;right:12px;width:40px;height:40px;border-radius:999px;background:rgba(255,255,255,.08);color:var(--text);font-size:28px;line-height:1;display:grid;place-items:center}
.feedback-dialog h2{margin:0 44px 8px 0;font-size:clamp(24px,4vw,34px);line-height:1.08;color:var(--text)}
.feedback-intro{margin:0 0 18px;color:var(--muted);line-height:1.5}
.feedback-form{display:grid;gap:14px}
.feedback-form label{display:grid;gap:7px;color:var(--text);font-weight:850}
.feedback-form label span{font-size:13px;color:#c9d7ea}
.feedback-form select,.feedback-form textarea{width:100%;border-radius:14px;border:1px solid rgba(148,178,220,.28);background:rgba(3,10,24,.55);color:var(--text);padding:12px 13px;outline:none}
.feedback-form textarea{resize:vertical;min-height:132px;line-height:1.45}
.feedback-form select:focus,.feedback-form textarea:focus{border-color:rgba(253, 186, 116,.72);box-shadow:0 0 0 3px rgba(253, 186, 116,.16)}
.feedback-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin-top:2px}
.feedback-status{min-height:20px;color:var(--muted);font-size:13px;line-height:1.35}
.feedback-status.success{color:#bbf7d0}.feedback-status.error{color:#fecdd3}
@media (max-width:640px){.feedback-modal{align-items:end;padding:10px}.feedback-dialog{padding:20px 16px;border-radius:22px}.feedback-actions{display:grid;grid-template-columns:1fr}.feedback-actions button{width:100%}.feedback-open-btn{order:3}}

.premium-status-badge{
  display:inline-flex;
  align-items:center;
  gap:8px;
  margin-left:10px;
  padding:3px 10px;
  border-radius:999px;
  font-size:0.85rem;
  font-weight:600;
  line-height:1.4;
  background:#eef2f7;
  color:#1f2a44;
  border:1px solid #d6dde8;
  vertical-align:middle;
}
.premium-status-badge.hidden{display:none;}
.premium-status-badge[data-status="admin"]{background:#fdecec;color:#7a1d1d;border-color:#f3b6b6;}
.premium-status-badge[data-status="lifetime"]{background:#fff5d6;color:#6b4e00;border-color:#f0d77a;}
.premium-status-badge[data-status="premium"]{background:#e3f6e8;color:#1e5a32;border-color:#b6e0c1;}
.premium-status-badge[data-status="trial"]{background:#e8efff;color:#1a3a8a;border-color:#b9c8f0;}
.premium-status-badge[data-status="free"]{background:#f1f3f6;color:#33415c;border-color:#d6dde8;}
.premium-status-badge .premium-status-label{white-space:nowrap;}
.premium-status-badge .premium-status-cta{
  font-size:0.78rem;
  padding:2px 8px!important;
  min-height:0;
  border-radius:999px;
  background:transparent!important;
  border:1px solid currentColor!important;
  color:inherit;
  opacity:0.85;
  cursor:pointer;
}
.premium-status-badge .premium-status-cta[disabled]{opacity:0.55;cursor:not-allowed;}
@media (max-width:560px){
  .account-line:not(.guest-auth-links){
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    justify-content:center;
    gap:4px 8px;
    width:100%;
    padding:5px 8px;
    margin:-4px 0 0;
    border:1px solid rgba(148,178,220,.10);
    border-radius:13px;
    background:rgba(7,16,31,.22);
    text-align:center;
  }
  .premium-status-badge{
    order:1;
    flex:0 1 auto;
    width:auto;
    max-width:100%;
    margin:0 0 2px;
    padding:4px 7px;
    display:inline-flex;
    flex-direction:row;
    align-items:center;
    justify-content:center;
    gap:6px;
    border-radius:999px;
    font-size:11.5px;
    line-height:1.15;
    white-space:normal;
    text-align:center;
  }
  .premium-status-badge .premium-status-label{
    display:inline;
    width:auto;
    white-space:nowrap;
    font-weight:800;
  }
  .premium-status-badge .premium-status-cta{
    display:inline-flex!important;
    width:auto;
    min-height:24px;
    align-items:center;
    justify-content:center;
    padding:3px 8px!important;
    border-radius:999px;
    font-size:11.5px;
    font-weight:900;
    opacity:.95;
  }
  .account-line:not(.guest-auth-links) > span:first-child{
    order:2;
    flex:1 1 100%;
    display:block;
    width:100%;
    max-width:100%;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:10.5px;
    line-height:1.15;
    opacity:.78;
  }
  .account-line form{
    order:3;
    display:inline-flex;
    width:auto;
    margin:0;
  }
  .account-line form::before{content:none!important;margin:0!important;}
  .account-line form button,
  .account-line .account-delete-link,
  .account-line #feedbackOpenBtn{
    display:inline-flex!important;
    width:auto;
    min-height:0;
    align-items:center;
    justify-content:center;
    padding:2px 4px!important;
    border-radius:0!important;
    background:transparent!important;
    border:0!important;
    margin:0!important;
    opacity:.66!important;
    font-size:10.5px!important;
    font-weight:750!important;
    line-height:1.15;
    color:var(--muted)!important;
  }
  .account-line .account-delete-link{order:4;}
}/* === Onboarding/Tutorial — web-80 === */
.cl-step-strip{
  list-style:none; padding:8px 6px; margin:0 0 10px 0;
  display:flex; flex-wrap:wrap; gap:6px;
  border-radius:8px; background:rgba(0,0,0,0.04);
  font-size:12px; line-height:1.2;
}
.cl-step-strip li{
  display:inline-flex; align-items:center; gap:4px;
  padding:4px 8px; border-radius:999px; background:#fff;
  border:1px solid rgba(0,0,0,0.08); color:#1f2937;
}
.cl-step-strip .cl-step-num{
  display:inline-flex; align-items:center; justify-content:center;
  width:18px; height:18px; border-radius:50%;
  background:linear-gradient(135deg,#F97316,#C95A12); color:#fff; font-size:11px; font-weight:700;
  box-shadow:0 1px 3px rgba(0,0,0,0.25);
}
/* Floorplan-Bild drag (web-81): vor Koordinatensetzung verschiebbar */
#floorplan.floorplan-draggable{ cursor: grab; touch-action: none; user-select: none; -webkit-user-drag: none; }
#floorplan.floorplan-draggable.floorplan-dragging{ cursor: grabbing; }
#floorplan.floorplan-locked{ cursor: default; }

/* === Sidebar Step Badges — web-82 (2026-06-07: blau → orange) === */
.sidebar .tile-panel > summary .step-badge{
  display:inline-flex; align-items:center; justify-content:center;
  width:20px; height:20px; min-width:20px; border-radius:50%;
  background:linear-gradient(135deg,#F97316,#C95A12); color:#fff;
  font-size:11px; font-weight:700; line-height:1;
  margin-right:6px; flex:0 0 auto;
  box-shadow:0 2px 6px rgba(249,115,22,0.32), inset 0 1px 0 rgba(255,255,255,0.18);
  border:1px solid rgba(255,244,230,0.25);
}

/* === Feature-Gating: gesperrte Panels/Buttons (web-83) === */
.feature-locked{
  position:relative;
  opacity:.55;
  filter:grayscale(0.6);
  cursor:not-allowed !important;
}
.feature-locked > *{ pointer-events:none !important; }
.feature-locked::after{
  content:"Zugang erforderlich";
  position:absolute;
  top:6px; right:8px;
  font-size:10px; font-weight:700; line-height:1;
  background:#fbbf24; color:#1f2937;
  padding:2px 6px; border-radius:999px;
  box-shadow:0 1px 2px rgba(0,0,0,.2);
  pointer-events:none;
  z-index:2;
}
.feature-locked input,
.feature-locked button,
.feature-locked select,
.feature-locked textarea{
  pointer-events:none !important;
  cursor:not-allowed !important;
}
details.panel.feature-locked > summary{ cursor:not-allowed !important; }
.feature-upgrade-hint{
  display:block;
  margin-top:6px;
  font-size:11px;
  color:#fbbf24;
  font-weight:600;
}

/* === web-84: Grundriss verschieben (Phase 1) ===
 * Eigener Modus für das Verschieben des Grundrissbildes.
 * Banner mit OK-Button erscheint über dem Bild. Im Modus werden Deichsel-
 * und Punkte-Layer für Klick/Touch gesperrt, damit garantiert nur das Bild
 * bewegt wird. */
.image-stage.floorplan-move-mode{ outline:none; }
.image-stage.floorplan-move-mode .points-layer{
  outline:3px solid rgba(253, 186, 116,.72);
  outline-offset:4px;
  border-radius:10px;
}
.image-stage.floorplan-move-mode #floorplan{
  cursor:grab;
  touch-action:none;
}
.image-stage.floorplan-move-mode #floorplan.floorplan-dragging{
  cursor:grabbing;
}
/* Im Bearbeiten-Modus: Punkte/Koordinaten sperren, Deichsel bleibt bearbeitbar. */
.image-stage.floorplan-move-mode .points-layer,
.image-stage.floorplan-move-mode .points-layer *,
.image-stage.floorplan-move-mode .coord-layer,
.image-stage.floorplan-move-mode .coord-layer *,
.image-stage.floorplan-move-mode .weight-overlay,
.image-stage.floorplan-move-mode .weight-overlay *{
  pointer-events:none !important;
}
.image-stage.floorplan-move-mode .weight-overlay{display:none !important;}
.floorplan-move-banner{
  position:absolute;
  left:50%;
  top:12px;
  transform:translateX(-50%);
  display:flex;
  align-items:center;
  gap:10px;
  padding:8px 12px;
  background:rgba(201, 90, 18,.96);
  color:#fff;
  border-radius:999px;
  box-shadow:0 6px 18px rgba(0,0,0,.32);
  font-size:13px;
  font-weight:600;
  z-index:60;
  max-width:calc(100% - 24px);
  pointer-events:auto;
}
.floorplan-move-banner.hidden{ display:none; }
.floorplan-move-ok{
  appearance:none;
  border:0;
  padding:6px 16px;
  background:#fbbf24;
  color:#1f2937;
  font-weight:800;
  font-size:14px;
  border-radius:999px;
  cursor:pointer;
  min-height:36px;
  min-width:56px;
  box-shadow:0 2px 6px rgba(0,0,0,.25);
}
.floorplan-move-ok:hover,
.floorplan-move-ok:focus-visible{ background:#f59e0b; outline:0; }
#floorplanMoveBtn.primary{
  background:rgba(253, 186, 116,.18);
  border-color:rgba(253, 186, 116,.65);
  color:#FED7AA;
}
@media (max-width:560px){
  .floorplan-move-banner{
    top:8px;
    left:8px;
    right:8px;
    transform:none;
    max-width:none;
    padding:10px 12px;
    font-size:14px;
    border-radius:14px;
    justify-content:space-between;
  }
  .floorplan-move-banner-text{ flex:1 1 auto; }
  .floorplan-move-ok{
    padding:10px 18px;
    font-size:16px;
    min-height:44px;
    min-width:64px;
  }
}

/* === web-85: Deichsel nur im expliziten Verschieben-Modus auswählbar === */
#drawbarMoveBtn.primary{
  background:rgba(253, 186, 116,.18);
  border-color:rgba(253, 186, 116,.65);
  color:#FED7AA;
}
.drawbar-layer .drawbar-item.drawbar-locked{
  cursor:default;
}
.drawbar-layer .drawbar-item.drawbar-locked:active{
  cursor:default;
}
.drawbar-controls .drawbar-ok-btn{
  background:rgba(34,197,94,.22);
  border-color:rgba(34,197,94,.65);
  color:#bbf7d0;
  font-weight:800;
}
.drawbar-controls .drawbar-ok-btn:hover{
  background:rgba(34,197,94,.36);
  border-color:#22c55e;
}

/* === web-86: Deichsel-Buttons bleiben gerade === */
.drawbar-layer .drawbar-item{transform-origin:50% 50%;}
.drawbar-layer .drawbar-item img{transform-origin:50% 50%;}

/* === web-87: Mobile Button-Ausrichtung + Grundriss Upload-Feedback === */
.settings-actions button,
.settings-actions .upload-btn,
.map-actions button{
  min-height:54px;
  align-items:center;
  justify-content:center;
  text-align:center;
  line-height:1.15;
}
.map-actions{
  align-items:stretch;
}
.map-actions button{
  height:100%;
}
.upload-progress{
  position:absolute;
  top:50%;
  left:50%;
  transform:translate(-50%,-50%);
  z-index:75;
  min-width:280px;
  max-width:min(420px, 86%);
  background:rgba(15,23,42,.96);
  border:1px solid rgba(253, 186, 116,.55);
  border-radius:18px;
  padding:18px 20px;
  box-shadow:0 24px 60px rgba(0,0,0,.52);
  color:#e2e8f0;
  pointer-events:none;
}
.upload-progress.hidden{display:none;}
.upload-progress-label{
  display:flex;
  justify-content:space-between;
  gap:12px;
  font-size:13px;
  font-weight:850;
  margin-bottom:8px;
}
.upload-progress-track{
  height:9px;
  border-radius:999px;
  background:rgba(148,163,184,.22);
  overflow:hidden;
}
.upload-progress-bar{
  display:block;
  width:0%;
  height:100%;
  border-radius:999px;
  background:linear-gradient(90deg,#FDBA74,#22c55e);
  transition:width .18s ease;
}
@media(max-width:760px){
  .settings-actions button,
  .settings-actions .upload-btn,
  .map-actions button{
    min-height:58px;
    padding:12px 14px;
    font-size:14px;
  }
  .map-actions{
    align-items:stretch;
  }
  .map-actions button{
    display:flex;
  }
}


/* === web-88: Sidebar-Schrittbuttons sauber ausrichten === */
.sidebar .tile-panel > summary{
  display:grid;
  grid-template-columns:28px minmax(0,1fr) 24px;
  grid-template-rows:auto auto;
  align-items:center;
  column-gap:9px;
  row-gap:2px;
}
.sidebar .tile-panel > summary .step-badge{
  grid-column:1;
  grid-row:1 / span 2;
  margin-right:0;
  justify-self:center;
}
.sidebar .tile-panel > summary > span:not(.step-badge){
  grid-column:2;
  grid-row:1;
  justify-self:start;
  text-align:left;
  white-space:normal;
  line-height:1.15;
}
.sidebar .tile-panel > summary > small{
  grid-column:2;
  grid-row:2;
  justify-self:start;
  text-align:left;
  max-width:none;
  font-size:11.5px;
  line-height:1.18;
}
.sidebar .tile-panel > summary::after{
  grid-column:3;
  grid-row:1 / span 2;
  justify-self:end;
}
@media(max-width:760px){
  .sidebar .tile-panel > summary{
    grid-template-columns:30px minmax(0,1fr) 24px;
    column-gap:9px;
  }
  .sidebar .tile-panel > summary > span:not(.step-badge){
    font-size:17px;
  }
  .sidebar .tile-panel > summary > small{
    font-size:11px;
    line-height:1.15;
  }
}
@media(max-width:390px){
  .sidebar .tile-panel > summary{
    grid-template-columns:28px minmax(104px,1fr) 24px;
  }
  .sidebar .tile-panel > summary > small{
    display:none;
  }
  .sidebar .tile-panel > summary::after{
    grid-column:3;
  }
}

/* === web-92: Non-Sync Field Touch Fixes === */
.drag-rotate-btn,.drag-confirm-btn,.drag-cancel-btn{touch-action:manipulation;}
.drag-handle-wrapper{gap:8px;padding:7px 10px;}
@media(max-width:760px){
  .drag-handle-wrapper{transform:translate(-50%,calc(-100% - 26px));}
  .drag-handle-btn,.drag-rotate-btn,.drag-confirm-btn,.drag-cancel-btn{min-width:38px;min-height:38px;padding:8px 10px;}
}

/* web-93/web-141: alte blaue Tab-Button-Regel — 2026-06-07 deaktiviert.
   Wird vollständig vom STYLE-REDESIGN-Block (am Datei-Ende) ersetzt. */
.start-steps{
  margin-top:34px;
  padding:18px;
  border-radius:20px;
  background:linear-gradient(145deg,rgba(255,255,255,.065),rgba(253, 186, 116,.045));
  border:1px solid rgba(148,178,220,.24);
  box-shadow:0 18px 40px rgba(0,0,0,.22);
}
.start-steps .section-quiet-title{margin-top:0}
.start-steps .quiet-steps{padding-left:20px}
.start-steps .quiet-steps li{margin:8px 0;padding-left:2px}
.auth-card .auth-links{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
  align-items:stretch;
  margin-top:14px;
}
.auth-card .auth-links .ghost{
  width:100%;
  min-height:46px;
  padding:11px 10px;
  text-align:center;
}
@media (max-width:640px){
  .auth-card .auth-links{grid-template-columns:1fr;}
  .start-steps{margin-top:26px;}
}

/* web-94: Defensive Guest-Mode Klickschutz fuer Login-/Planer-Links */
body[data-guest="1"] .guest-auth-links a,
body[data-guest="1"] .site-tabs a.tab-btn,
body[data-guest="1"] .hero-cta a,
body[data-guest="1"] a.hero-cta-primary,
body[data-guest="1"] a.bottom-cta-link{
  position:relative;
  z-index:9999;
  pointer-events:auto !important;
  touch-action:manipulation;
}

/* web-94: Grundriss-Größe im Verschieben-Modus + Deichsel unter Grundriss */
.floorplan-move-size-btn{
  appearance:none;
  border:1px solid rgba(255,255,255,.55);
  background:rgba(255,255,255,.16);
  color:#fff;
  font-weight:950;
  font-size:18px;
  line-height:1;
  border-radius:999px;
  cursor:pointer;
  min-width:38px;
  min-height:36px;
  padding:6px 12px;
  box-shadow:0 2px 6px rgba(0,0,0,.22);
}
.floorplan-move-size-btn:hover,
.floorplan-move-size-btn:focus-visible{background:rgba(255,255,255,.28);outline:0;}
@media (max-width:560px){
  .floorplan-move-banner{gap:8px;}
  .floorplan-move-size-btn{min-width:44px;min-height:44px;font-size:22px;padding:8px 12px;}
}


/* web-95: Deichsel-Button nicht dauerhaft aktiv/blau */
#addDrawbarBtn.secondary:not(.primary){background:rgba(255,255,255,.07);border-color:var(--line);color:var(--text);}

/* web-96: Drehen direkt im Grundriss-Positioniermodus */
.floorplan-move-tool-btn{
  appearance:none;
  border:1px solid rgba(255,255,255,.55);
  background:rgba(15,23,42,.22);
  color:#fff;
  font-weight:950;
  font-size:18px;
  line-height:1;
  border-radius:999px;
  cursor:pointer;
  min-width:38px;
  min-height:36px;
  padding:6px 12px;
  box-shadow:0 2px 6px rgba(0,0,0,.22);
}
.floorplan-move-tool-btn:hover,
.floorplan-move-tool-btn:focus-visible{background:rgba(255,255,255,.28);outline:0;}
@media (max-width:560px){
  .floorplan-move-tool-btn{min-width:44px;min-height:44px;font-size:22px;padding:8px 12px;}
}

/* web-99: Grundrissbild echte sichtbare Größe, Rahmen schrumpft mit */
#floorplan{width:auto;height:auto;max-width:100%;max-height:100%;margin:auto;}
.image-stage{display:grid;place-items:center;}

/* web-100: Deichsel im gemeinsamen Grundriss-Bearbeiten-Menü */
.image-stage.floorplan-move-mode .drawbar-controls{display:none !important;}


/* web-137: Grundriss-Bearbeiten-Toolbar — sauberes responsives Grid.
   11 Buttons + OK (span 2) = 12 Zellen, restlos symmetrisch in 6 / 4 / 3 / 2 Spalten.
   Kein horizontaler Scroll, kein Textüberlauf, zweizeilige Labels okay.
   Konsolidiert frühere web-97 / web-100 / web-129 Layout-Overrides. */
.floorplan-move-banner{
  /* 2026-06-07: Toolbar standardmäßig als kompakter Block (statt volle
     Stage-Breite). Marlon: „der kleinere Block, der gefällt mir besser". */
  left:8px;
  right:auto;
  top:8px;
  transform:none;
  width:auto;
  max-width:min(520px, calc(100% - 16px));
  display:grid;
  grid-template-columns:repeat(6, minmax(0,1fr));
  align-items:stretch;
  justify-items:stretch;
  gap:7px;
  padding:12px 12px 11px;
  border-radius:16px;
  overflow:visible;
}
.floorplan-move-banner #rotateLeftBtn,
.floorplan-move-banner #rotateRightBtn,
.floorplan-move-banner #floorplanSizeDownBtn,
.floorplan-move-banner #floorplanSizeUpBtn,
.floorplan-move-banner #addDrawbarEditBtn,
.floorplan-move-banner #drawbarSizeDownBtn,
.floorplan-move-banner #drawbarSizeUpBtn,
.floorplan-move-banner #drawbarRotateLeftBtn,
.floorplan-move-banner #drawbarRotateRightBtn,
.floorplan-move-banner #drawbarDeleteBtn,
.floorplan-move-banner #floorplanMoveOkBtn{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  min-width:0;
  min-height:54px;
  box-sizing:border-box;
  padding:6px 8px;
  border-radius:12px;
  text-align:center;
  white-space:normal;
  overflow:hidden;
  overflow-wrap:break-word;
  word-break:normal;
  hyphens:none;
  line-height:1.18;
  font-size:13px;
  font-weight:800;
  letter-spacing:-.01em;
}
.floorplan-move-banner #floorplanMoveOkBtn{
  grid-column:span 2;
  background:#fbbf24;
  color:#1f2937;
  font-size:15px;
  font-weight:950;
  letter-spacing:.04em;
}
@media (max-width:899px){
  .floorplan-move-banner{
    grid-template-columns:repeat(4, minmax(0,1fr));
    gap:6px;
    padding:11px 10px;
    border-radius:14px;
  }
  .floorplan-move-banner #rotateLeftBtn,
  .floorplan-move-banner #rotateRightBtn,
  .floorplan-move-banner #floorplanSizeDownBtn,
  .floorplan-move-banner #floorplanSizeUpBtn,
  .floorplan-move-banner #addDrawbarEditBtn,
  .floorplan-move-banner #drawbarSizeDownBtn,
  .floorplan-move-banner #drawbarSizeUpBtn,
  .floorplan-move-banner #drawbarRotateLeftBtn,
  .floorplan-move-banner #drawbarRotateRightBtn,
  .floorplan-move-banner #drawbarDeleteBtn,
  .floorplan-move-banner #floorplanMoveOkBtn{
    min-height:52px;
    padding:5px 6px;
    font-size:12.5px;
  }
  .floorplan-move-banner #floorplanMoveOkBtn{font-size:14px;}
}
@media (max-width:519px){
  .floorplan-move-banner{
    grid-template-columns:repeat(3, minmax(0,1fr));
    gap:5px;
    padding:10px 9px;
  }
  .floorplan-move-banner #rotateLeftBtn,
  .floorplan-move-banner #rotateRightBtn,
  .floorplan-move-banner #floorplanSizeDownBtn,
  .floorplan-move-banner #floorplanSizeUpBtn,
  .floorplan-move-banner #addDrawbarEditBtn,
  .floorplan-move-banner #drawbarSizeDownBtn,
  .floorplan-move-banner #drawbarSizeUpBtn,
  .floorplan-move-banner #drawbarRotateLeftBtn,
  .floorplan-move-banner #drawbarRotateRightBtn,
  .floorplan-move-banner #drawbarDeleteBtn,
  .floorplan-move-banner #floorplanMoveOkBtn{
    min-height:52px;
    padding:5px 5px;
    font-size:12px;
  }
  .floorplan-move-banner #floorplanMoveOkBtn{font-size:13.5px;}
}
@media (max-width:339px){
  .floorplan-move-banner{
    grid-template-columns:repeat(2, minmax(0,1fr));
    gap:5px;
    padding:9px 8px;
  }
  .floorplan-move-banner #rotateLeftBtn,
  .floorplan-move-banner #rotateRightBtn,
  .floorplan-move-banner #floorplanSizeDownBtn,
  .floorplan-move-banner #floorplanSizeUpBtn,
  .floorplan-move-banner #addDrawbarEditBtn,
  .floorplan-move-banner #drawbarSizeDownBtn,
  .floorplan-move-banner #drawbarSizeUpBtn,
  .floorplan-move-banner #drawbarRotateLeftBtn,
  .floorplan-move-banner #drawbarRotateRightBtn,
  .floorplan-move-banner #drawbarDeleteBtn,
  .floorplan-move-banner #floorplanMoveOkBtn{
    min-height:50px;
    font-size:11.5px;
  }
}


/* web-130: Toolbar im Grundriss-bearbeiten-Modus einklappbar */
.floorplan-toolbar-toggle{
  position:absolute;
  top:-10px;
  right:8px;
  z-index:2;
  width:30px;
  height:24px;
  min-width:30px;
  min-height:24px;
  padding:0;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.6);
  background:rgba(15,23,42,.92);
  color:#fff;
  font-size:15px;
  font-weight:950;
  line-height:1;
  display:grid;
  place-items:center;
  box-shadow:0 4px 12px rgba(0,0,0,.32);
}
.floorplan-toolbar-toggle:hover,
.floorplan-toolbar-toggle:focus-visible{background:rgba(30,41,59,.98);outline:0;}
.floorplan-move-banner.toolbar-collapsed{
  display:block;
  left:auto;
  right:8px;
  top:8px;
  width:34px;
  min-height:26px;
  padding:0;
  border-radius:999px;
  background:transparent;
  border:0;
  box-shadow:none;
  overflow:visible;
}
.floorplan-move-banner.toolbar-collapsed .floorplan-toolbar-toggle{
  position:static;
  width:34px;
  height:28px;
  min-width:34px;
  min-height:28px;
}
.floorplan-move-banner.toolbar-collapsed .floorplan-move-tool-btn,
.floorplan-move-banner.toolbar-collapsed .floorplan-move-size-btn,
.floorplan-move-banner.toolbar-collapsed .floorplan-move-ok{
  display:none!important;
}


/* web-131: Toolbar kann im Grundrissfeld verschoben werden */
.floorplan-toolbar-drag{
  position:absolute;
  top:-10px;
  right:44px;
  z-index:2;
  width:30px;
  height:24px;
  min-width:30px;
  min-height:24px;
  padding:0;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.6);
  background:rgba(201, 90, 18,.96);
  color:#fff;
  font-size:15px;
  font-weight:950;
  line-height:1;
  display:grid;
  place-items:center;
  box-shadow:0 4px 12px rgba(0,0,0,.32);
  cursor:grab;
  touch-action:none;
}
.floorplan-toolbar-drag:hover,
.floorplan-toolbar-drag:focus-visible{background:rgba(249, 115, 22,.98);outline:0;}
.floorplan-toolbar-drag.dragging{cursor:grabbing;background:#fbbf24;color:#1f2937;}
.floorplan-move-banner.toolbar-positioned{
  right:auto;
  transform:none;
}
.floorplan-move-banner.toolbar-collapsed .floorplan-toolbar-drag{display:none!important;}


/* web-101: alte separate Deichsel-Bearbeitung deaktiviert */
.drawbar-controls{display:none !important;}
#drawbarMoveBtn{display:none !important;}

/* web-103: Koordinaten duerfen auf Deichsel/ausserhalb Bild gesetzt werden.
   Im Koordinatenmodus fangen Deichsel/Felder/Overlays keine Taps ab;
   imageStage bekommt den Klick und app.js nutzt allowOutside:true/clamp:false. */
.image-stage.setting-coord .drawbar-layer,
.image-stage.setting-coord .drawbar-layer *,
.image-stage.setting-coord .points-layer,
.image-stage.setting-coord .points-layer *,
.image-stage.setting-coord .weight-overlay,
.image-stage.setting-coord .weight-overlay *{
  pointer-events:none !important;
}


/* web-106: Grundriss-Menü — Laden/Speichern nebeneinander, klare Aktionsfarben */
.settings-actions #planLoadBtn,
.settings-actions #planSaveBtn{
  border-color:rgba(255,255,255,.18);
  box-shadow:0 8px 18px rgba(0,0,0,.16);
}
.settings-actions #planLoadBtn{
  background:linear-gradient(135deg,rgba(251, 146, 60,.30),rgba(249, 115, 22,.18));
  border-color:rgba(253, 186, 116,.42);
  color:#e0f2fe;
}
.settings-actions #planSaveBtn{
  background:linear-gradient(135deg,rgba(34,197,94,.36),rgba(16,185,129,.20));
  border-color:rgba(34,197,94,.48);
  color:#dcfce7;
}
.settings-actions #planLoadBtn:hover,
.settings-actions #planSaveBtn:hover{filter:brightness(1.08)}

/* web-107: kleiner Hinweis im Koordinatenfeld */
.coord-warning{
  margin:8px 0 10px;
  padding:8px 10px;
  border-radius:12px;
  background:rgba(251,191,36,.10);
  border:1px solid rgba(251,191,36,.30);
  color:#fde68a;
  font-size:12.5px;
  line-height:1.35;
}
.coord-warning strong{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:18px;
  height:18px;
  margin-right:5px;
  border-radius:999px;
  background:#f59e0b;
  color:#1f1300;
  font-weight:950;
}

/* web-108: rotes Inline-Ausrufezeichen bei wichtigen Stammdaten-Hinweisen */
.inline-danger-mark{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:18px;
  height:18px;
  margin:0 3px;
  border-radius:999px;
  background:#ef4444;
  color:#fff;
  font-weight:950;
  line-height:1;
}

/* web-111: Koordinaten-Menü Aktionsbuttons deutlicher */
#coordPanel #resetCoordPanelBtn,
#coordPanel #closeCoordPanel{
  margin-top:10px;
  width:100%;
  border:0;
  font-weight:900;
}
#coordPanel #resetCoordPanelBtn{
  background:linear-gradient(135deg,#ef4444,#b91c1c);
  color:#fff;
  box-shadow:0 8px 18px rgba(239,68,68,.22);
}
#coordPanel #closeCoordPanel{
  margin-top:14px;
  background:linear-gradient(135deg,#22c55e,#15803d);
  color:#fff;
  box-shadow:0 8px 18px rgba(34,197,94,.22);
}
#coordPanel #resetCoordPanelBtn:hover{filter:brightness(1.06)}
#coordPanel #closeCoordPanel:hover{filter:brightness(1.06)}

/* web-112: Felder auch außerhalb des Bildes im Arbeitsbereich setzen/verschieben */
.image-stage.adding-point .drawbar-layer,
.image-stage.adding-point .drawbar-layer *,
.image-stage.adding-point .weight-overlay,
.image-stage.adding-point .weight-overlay *,
.image-stage.moving-point .drawbar-layer,
.image-stage.moving-point .drawbar-layer *,
.image-stage.moving-point .weight-overlay,
.image-stage.moving-point .weight-overlay *{
  pointer-events:none!important;
}

/* web-113: Deichsel im Bearbeitungsmodus löschen */
#drawbarDeleteBtn.floorplan-move-tool-btn{
  background:rgba(248,113,113,.18);
  border-color:rgba(248,113,113,.38);
  color:#fecaca;
  box-shadow:none;
}
#drawbarDeleteBtn.floorplan-move-tool-btn:hover{
  background:rgba(248,113,113,.26);
  color:#fee2e2;
}

/* web-116: individuelle Feldform mit Ziehrahmen */
.custom-field-resize-frame{
  position:absolute;
  transform:translate(-50%,-50%);
  width:var(--point-w,36px);
  height:var(--point-h,36px);
  border:2px dashed rgba(216,180,254,.95);
  border-radius:var(--point-radius,10px);
  pointer-events:none;
  z-index:35;
  box-shadow:0 0 0 5px rgba(168,85,247,.16);
}
.custom-field-resize-handle{
  position:absolute;
  pointer-events:auto;
  width:18px;
  height:18px;
  border-radius:999px;
  border:2px solid rgba(255,255,255,.9);
  background:#a855f7;
  box-shadow:0 4px 12px rgba(0,0,0,.35);
  padding:0;
}
.custom-field-resize-handle.handle-e{right:-10px;top:50%;transform:translateY(-50%);cursor:ew-resize}
.custom-field-resize-handle.handle-s{left:50%;bottom:-10px;transform:translateX(-50%);cursor:ns-resize}
.custom-field-resize-handle.handle-se{right:-10px;bottom:-10px;cursor:nwse-resize;background:#7c3aed}

/* Homepage: echte Screenshots statt Mock-Auswertung (web-117) */
.hero-real-screenshot{
  display:block;width:100%;max-width:560px;height:auto;max-height:360px;object-fit:contain;
  border-radius:20px;border:1px solid rgba(148,178,220,.24);
  box-shadow:0 22px 50px rgba(0,0,0,.28);background:rgba(255,255,255,.03)
}
@media (max-width:760px){.hero-real-screenshot{max-width:100%;border-radius:14px}}

/* web-120: Aktiver Zugang-kaufen Button soll normalen Klick-Cursor zeigen; nur disabled bleibt gesperrt. */
.premium-status-badge .premium-status-cta:not([disabled]){cursor:pointer;}


/* web-132: Einklapp-Pfeil bleibt an derselben Toolbar-Position */
.floorplan-move-banner.toolbar-collapsed{
  display:grid;
  left:8px;
  right:8px;
  top:8px;
  transform:none;
  width:auto;
  min-height:28px;
  padding:0;
  background:transparent;
  border:0;
  box-shadow:none;
  overflow:visible;
  pointer-events:none;
}
.floorplan-move-banner.toolbar-collapsed .floorplan-toolbar-toggle{
  position:absolute;
  top:-10px;
  right:8px;
  width:30px;
  height:24px;
  min-width:30px;
  min-height:24px;
  pointer-events:auto;
}
.floorplan-move-banner.toolbar-collapsed .floorplan-move-tool-btn,
.floorplan-move-banner.toolbar-collapsed .floorplan-move-size-btn,
.floorplan-move-banner.toolbar-collapsed .floorplan-move-ok,
.floorplan-move-banner.toolbar-collapsed .floorplan-toolbar-drag{
  display:none!important;
}


/* web-135: Mobile Querformat bekommt mehr Sicherheitsabstand zwischen Anzeige und Grundrissbild.
   Reiner Layout-Zusatz: keine Änderung an Grundriss-Offset, Bild-/Deichsel-Kopplung oder gespeicherten Koordinaten.
   Rollback: diesen Block entfernen und dashboard.php wieder auf styles.css?v=web-133 setzen. */
@media (max-width:900px) and (orientation:landscape) and (max-height:520px){
  .image-stage{
    box-sizing:border-box;
    padding-top:clamp(34px, 10dvh, 52px);
  }
}

/* ============================================================
 * STYLE-REDESIGN HOMEPAGE — 2026-06-07
 * Dark Mode + Orange Accent (Premium Camping/Roadtrip)
 * Konsolidiert, ohne !important-Stapel. Bei Rollback diesen Block
 * komplett entfernen — vorherige Regeln greifen dann wieder.
 * ============================================================ */
:root{
  --cl-bg: #071017;
  --cl-surface: rgba(18, 27, 34, 0.78);
  --cl-surface-solid: #121B22;
  --cl-surface-hover: #202E38;
  --cl-button-dark: #18232B;
  --cl-button-dark-hover: #202E38;
  --cl-text: #F8FAFC;
  --cl-text-warm: #FFF4E6;
  --cl-text-secondary: #B8C0C8;
  --cl-text-muted: #7E8994;
  --cl-accent: #F97316;
  --cl-accent-dark: #C95A12;
  --cl-accent-light: #FDBA74;
  --cl-border: rgba(255,255,255,0.10);
  --cl-border-accent: rgba(249,115,22,0.45);
  --cl-shadow: 0 28px 70px rgba(0,0,0,0.50);
  --cl-glow-orange: rgba(249,115,22,0.32);
  --cl-radius-xl: 32px;
  --cl-radius-lg: 22px;
}

/* Page background: dediziertes Layer-Element. Ein universelles, bereits
   vorbeschnittenes Bild (Tannen links/rechts, Bergstraße, Sonnenuntergang)
   für ALLE Geräte. Auf Tablet/Desktop reicht `cover`, weil das viewport
   breit genug ist, dass das Bild ohne starkes Beschneiden passt. Auf
   Mobile Hochformat würde `cover` aber an der Höhe skalieren und das
   Bild seitlich abschneiden — dadurch fielen Tannen und Berg weg.
   Mobile-Default: 100% Viewport-Breite, Höhe proportional, oben sitzend.
   Unter dem Bild wird das Layer dunkel (background-color + Overlay). */
.cl-bg-layer{
  position:fixed;
  inset:0;
  z-index:-1;
  overflow:hidden;
  background-color:#071017;
  background-image:url('/assets/bg-mountain-sunset.jpg?v=web-156');
  background-size:100% auto;
  background-position:top center;
  background-repeat:no-repeat;
  pointer-events:none;
}
@media (min-width:760px){
  .cl-bg-layer{
    background-size:cover;
    background-position:center center;
  }
}
/* Wir verlassen uns nicht mehr auf die <img>/<picture> Elemente im HTML —
   sie würden mit object-fit:cover das ganze Bild vertikal zeigen.
   background-image im Container ist flexibler. */
.cl-bg-layer picture,
.cl-bg-layer img{ display:none; }
.cl-bg-overlay{
  position:absolute;
  inset:0;
  /* Mobile: Bild endet bei ~35-42% der viewport-Höhe (Bildverhältnis 4:3,
     viewport hochformat ~2:1). Übergang dunkel setzt knapp vor diesem
     Bildrand ein, sodass keine harte Kante entsteht. */
  background:linear-gradient(180deg,
    transparent 0%,
    rgba(7,16,23,0.06) 28%,
    rgba(7,16,23,0.55) 46%,
    rgba(7,16,23,0.88) 70%,
    rgba(7,16,23,0.95) 100%);
}
@media (min-width:760px){
  .cl-bg-overlay{
    /* Tablet/Desktop: Bild deckt das ganze viewport → sanfter Verlauf
       wie zuvor, oben transparent, unten lesbar. */
    background:linear-gradient(180deg,
      transparent 0%,
      rgba(7,16,23,0.08) 40%,
      rgba(7,16,23,0.55) 72%,
      rgba(7,16,23,0.92) 100%);
  }
}

/* App-Shell: Container. Logo-Header bekommt KEINEN Kasten mehr. */
.app-shell{
  background:transparent;
  max-width:1000px;
  margin:0 auto;
  padding:28px 18px 48px;
}
@media (min-width:760px){
  .app-shell{ padding:36px 28px 64px; }
}

/* Logo-Header: KEIN Kasten, warmweißes Logo, dezenter Schatten.
   Die alten ::before/::after Pseudo-Kreise werden hier abgeschaltet. */
.app-logo-header{
  min-height:0;
  padding:24px 0 12px;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  display:grid;
  place-items:center;
  position:relative;
  overflow:visible;
}
.app-logo-header::before,
.app-logo-header::after{
  content:none;
  display:none;
}
.hero-brand-mark{ display:grid; place-items:center; }
.hero-logo{
  display:block;
  width:min(72vw, 360px);
  height:auto;
  max-height:200px;
  object-fit:contain;
  filter:drop-shadow(0 12px 32px rgba(0,0,0,0.45));
}
@media (max-width:560px){
  .hero-logo{ width:min(72vw, 320px); max-height:160px; }
}

/* Auth-Links unter dem Logo: zentriert, mit Trenner, mit Lucide-Icons. */
.account-line.guest-auth-links{
  flex-direction:row;
  flex-wrap:wrap;
  justify-content:center;
  gap:8px 18px;
  margin:18px auto 6px;
  padding:0 8px;
  color:var(--cl-text-warm);
  font-size:16px;
  font-weight:500;
  opacity:.95;
}
.account-line.guest-auth-links a{
  display:inline-flex;
  align-items:center;
  gap:8px;
  color:#E8D8C4;
  text-decoration:none;
  font-size:16px;
  font-weight:500;
  padding:6px 4px;
  transition:color .15s ease;
}
.account-line.guest-auth-links a:hover{ color:var(--cl-accent-light); text-decoration:none; }
.account-line.guest-auth-links a .cl-icon{
  width:22px; height:22px;
  color:var(--cl-accent);
  stroke-width:1.8;
  flex-shrink:0;
}
.cl-auth-divider{
  display:inline-block;
  width:1px;
  height:22px;
  background:rgba(255,255,255,0.22);
  align-self:center;
}

/* Site-Tabs: Glas-Container mit kompakten Buttons drin. */
.site-tabs{
  background:rgba(12,18,24,0.62);
  border:1px solid rgba(255,255,255,0.10);
  border-radius:24px;
  padding:14px;
  gap:10px;
  margin-top:22px;
  box-shadow:0 24px 60px rgba(0,0,0,0.42), inset 0 1px 0 rgba(255,255,255,0.05);
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
  display:grid;
  grid-template-columns:1fr;
}

/* Tab-Buttons: kompakt (56px hoch), Icons links, Chevron rechts. */
.site-tabs .tab-btn,
.site-tabs a.tab-btn{
  display:grid;
  grid-template-columns:40px 1fr 24px;
  align-items:center;
  text-align:left;
  padding:0 18px;
  height:56px;
  border-radius:18px;
  font-size:18px;
  font-weight:800;
  letter-spacing:-0.01em;
  color:var(--cl-text-warm);
  text-decoration:none;
  border:1px solid rgba(255,255,255,0.10);
  background:linear-gradient(180deg, rgba(31,43,52,0.94) 0%, rgba(19,29,37,0.94) 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,0.06), 0 8px 20px rgba(0,0,0,0.28);
  transition:border-color .18s ease, transform .12s ease, box-shadow .18s ease;
  position:relative;
  overflow:visible;
  min-width:0;
  flex:none;
}
/* Icon-Kapsel: Lucide-SVG bekommt einen runden Hintergrund-Pad
   (wie iOS App-Icons). Padding auf SVG wirkt visuell als Luft
   um das Icon, Background/Border umschließen die padded box. */
/* Gefülltes Icon (z.B. Wohnwagen) bekommt eigenen Slot:
   - Größer (28 statt 22) damit filled-Form visuell so präsent wirkt wie outline-Icons
   - Inneres Padding kleiner (2 statt 5), Außenkapsel bleibt gleich groß
   - stroke ist nicht none, weil wir im SVG einen leichten Outline mitgeben,
     der die schwarzen Konturen so dick wirken lässt wie stroke-width:2 bei den
     anderen Icons. Die Farbe folgt currentColor (Akzent / weiß im aktiven Tab). */
.site-tabs .tab-btn .cl-icon.cl-icon-filled{
  width:28px; height:28px;
  padding:2px;
}
.site-tabs .tab-btn .cl-icon.cl-icon-filled path{
  fill:currentColor;
  stroke:currentColor;
}
.site-tabs .tab-btn .cl-icon{
  width:22px; height:22px;
  padding:5px;
  box-sizing:content-box;
  border-radius:11px;
  color:var(--cl-accent);
  stroke-width:2;
  background:radial-gradient(120% 120% at 30% 25%,
    rgba(249,115,22,0.22) 0%,
    rgba(249,115,22,0.10) 60%,
    rgba(249,115,22,0.06) 100%);
  border:1px solid rgba(249,115,22,0.36);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.10),
    0 4px 10px rgba(0,0,0,0.25),
    0 0 0 0 rgba(249,115,22,0);
  filter:drop-shadow(0 1px 0 rgba(0,0,0,0.25));
  transition:transform .18s ease, box-shadow .18s ease, background .18s ease;
}
.site-tabs .tab-btn .cl-chevron{
  width:20px; height:20px;
  color:var(--cl-accent);
  stroke-width:2.6;
  justify-self:end;
  opacity:.85;
}
.site-tabs .tab-btn:hover{
  border-color:var(--cl-border-accent);
  box-shadow:inset 0 1px 0 rgba(255,255,255,0.06), 0 12px 30px rgba(0,0,0,0.28), 0 0 0 1px rgba(249,115,22,0.18);
}
.site-tabs .tab-btn:hover .cl-icon{
  transform:scale(1.06);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.12),
    0 6px 14px rgba(0,0,0,0.30),
    0 0 0 3px rgba(249,115,22,0.14);
}
.site-tabs .tab-btn.active,
.site-tabs a.tab-btn.active{
  background:linear-gradient(180deg, #FB923C 0%, #F97316 48%, #C95A12 100%);
  color:#FFFFFF;
  border:1px solid rgba(255,244,230,0.32);
  box-shadow:0 14px 34px rgba(249,115,22,0.36), inset 0 1px 0 rgba(255,255,255,0.35);
}
/* Aktives Tab: helle Glas-Kapsel über dem Orange-Hintergrund,
   damit das Icon klar abgesetzt und kontrastreich wirkt. */
.site-tabs .tab-btn.active .cl-icon{
  color:#FFF8EE;
  background:radial-gradient(120% 120% at 30% 25%,
    rgba(255,255,255,0.42) 0%,
    rgba(255,244,230,0.22) 60%,
    rgba(255,244,230,0.14) 100%);
  border-color:rgba(255,244,230,0.65);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.55),
    0 4px 12px rgba(120,40,0,0.30);
  filter:drop-shadow(0 1px 0 rgba(120,40,0,0.45));
}
.site-tabs .tab-btn.active .cl-chevron{ color:#FFF4E6; opacity:1; }
.site-tabs .tab-btn.active:hover{ filter:brightness(1.05); transform:translateY(-1px); }
.site-tabs .tab-btn.active:hover .cl-icon{
  background:radial-gradient(120% 120% at 30% 25%,
    rgba(255,255,255,0.55) 0%,
    rgba(255,244,230,0.30) 60%,
    rgba(255,244,230,0.20) 100%);
}
.site-tabs .tab-btn.active::before{ display:none; content:none; } /* Akzent-Strich weg */
@media (min-width:760px){
  .site-tabs .tab-btn,
  .site-tabs a.tab-btn{ height:60px; font-size:19px; }
}

/* Hero-Card: Dark Glass mit Caravan-Bild rechts (desktop) / unten (mobile). */
.hero-card.hero-v2{
  margin-top:28px;
  background:
    linear-gradient(90deg, rgba(12,18,24,0.98) 0%, rgba(12,18,24,0.74) 42%, rgba(12,18,24,0.18) 100%),
    url('/assets/hero-caravan-road.jpg?v=web-1') right center / cover no-repeat,
    linear-gradient(135deg, rgba(20,29,36,0.92) 0%, rgba(12,18,24,0.96) 46%, rgba(22,26,28,0.86) 100%);
  border:1px solid rgba(255,255,255,0.12);
  border-radius:32px;
  box-shadow:0 28px 70px rgba(0,0,0,0.50), inset 0 1px 0 rgba(255,255,255,0.05);
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
  padding:30px 22px;
  position:relative;
  overflow:hidden;
}
@media (min-width:820px){
  .hero-card.hero-v2{
    padding:48px;
    min-height:520px;
  }
}
.hero-card.hero-v2 .hero-content{ position:relative; z-index:2; max-width:560px; }
.hero-card.hero-v2 .eyebrow{
  color:var(--cl-accent);
  font-size:14px;
  font-weight:800;
  letter-spacing:0.34em;
  text-transform:uppercase;
  margin:0;
}
.hero-card.hero-v2 .hero-subeyebrow{
  color:#AAB4BF;
  font-size:14px;
  font-weight:700;
  letter-spacing:0.34em;
  text-transform:uppercase;
  margin:8px 0 0;
  display:block;
}
.hero-card.hero-v2 .hero-headline{
  color:var(--cl-text-warm);
  font-size:44px;
  font-weight:850;
  line-height:0.98;
  letter-spacing:-0.045em;
  margin:18px 0 16px;
}
.hero-card.hero-v2 .hero-headline .accent-dot{ color:var(--cl-accent); }
@media (min-width:760px){ .hero-card.hero-v2 .hero-headline{ font-size:60px; } }
@media (min-width:1024px){ .hero-card.hero-v2 .hero-headline{ font-size:64px; } }

.hero-card.hero-v2 .hero-sub{
  color:#C9D0D8;
  font-size:18px;
  line-height:1.55;
  margin:0;
}
.hero-card.hero-v2 .hero-sub strong{ color:var(--cl-accent); font-weight:700; }
@media (min-width:760px){ .hero-card.hero-v2 .hero-sub{ font-size:20px; } }

.hero-card.hero-v2 .hero-feature-row{
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:14px 18px;
  margin:28px 0 0;
  padding-top:20px;
  border-top:1px solid rgba(255,255,255,0.13);
  /* Hero-Card hat auf großen Screens ein 2-Spalten-Grid (Text links,
     Caravan-Bild rechts). Die Feature-Reihe muss in BEIDEN Spalten
     erscheinen — sonst rutscht sie auf iPad-Quer neben den Text statt
     darunter zu bleiben. */
  grid-column:1 / -1;
}
@media (min-width:760px){
  .hero-card.hero-v2 .hero-feature-row{
    grid-template-columns:repeat(4, minmax(0, 1fr));
    gap:18px;
  }
}
.hero-card.hero-v2 .hero-feature{
  display:flex;
  align-items:center;
  gap:10px;
  color:#E8D8C4;
  font-size:13.5px;
  font-weight:600;
  line-height:1.25;
}
.hero-card.hero-v2 .hero-feature .cl-icon{
  width:22px; height:22px;
  color:var(--cl-accent);
  stroke-width:1.9;
  flex-shrink:0;
}

/* Die alte Hero-Sequenz mit eigenem Bild + Caption deaktivieren — Caravan
   liegt jetzt im Hero-Card-Hintergrund. */
.start-hero-image{ display:none; }

/* 2026-06-09: Beispielbild unter den fuenf Schritten (Startseite).
   Dunkler Glas-Look mit gerundeten Ecken + dezenter Schatten,
   passend zum restlichen Orange-Theme. Auf Mobile randlos full-width. */
.planner-example-image{
  margin:18px auto 22px;
  max-width:1000px;
  padding:0;
}
.planner-example-image img{
  display:block;
  width:100%;
  height:auto;
  border-radius:18px;
  border:1px solid rgba(255,255,255,0.10);
  box-shadow:0 24px 60px rgba(0,0,0,0.45), 0 0 0 1px rgba(249,115,22,0.08);
  background:#0a0e12;
}
.planner-example-image figcaption{
  margin:10px 6px 0;
  text-align:center;
  color:var(--cl-text-secondary, var(--muted));
  font-size:13.5px;
  line-height:1.45;
}
@media (max-width:560px){
  .planner-example-image{ margin:14px -4px 18px; }
  .planner-example-image img{ border-radius:12px; }
  .planner-example-image figcaption{ font-size:12.5px; padding:0 6px; }
}

/* Eingeloggt-Modus: Account-Line bleibt funktional wie heute, nur Lesbarkeit
   leicht angepasst (Hintergrund ist jetzt dunkler). */
.account-line:not(.guest-auth-links){
  color:var(--cl-text-muted);
}

/* Desktop: Eingeloggt-Bereich vertikal gestapelt in einer dezenten Glas-Leiste.
   Auf Mobile bleibt der bestehende Spezial-Layout-Block greift (max-width:560px). */
@media (min-width:561px){
  .account-line:not(.guest-auth-links){
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:6px;
    padding:6px 22px;
    margin:8px auto 0;
    max-width:520px;
    background:transparent;
    border:0;
    color:var(--cl-text-muted);
    font-size:13.5px;
    text-align:center;
  }
  .account-line:not(.guest-auth-links) > span:first-child{
    color:var(--cl-text-warm);
    font-weight:600;
    font-size:14px;
  }
  .account-line:not(.guest-auth-links) a,
  .account-line:not(.guest-auth-links) button{
    color:var(--cl-text-secondary);
    font-size:13.5px;
  }
  .account-line:not(.guest-auth-links) a:hover,
  .account-line:not(.guest-auth-links) button:hover{
    color:var(--cl-accent);
  }
  /* Trenner "·" vor Logout-Form ausblenden, weil wir vertikal stapeln */
  .account-line:not(.guest-auth-links) form::before{ content:none; margin:0; }
  .account-line:not(.guest-auth-links) form{ display:block; }
  .account-line:not(.guest-auth-links) .account-delete-link{
    margin-left:0 !important;
  }
}

/* 2026-06-07: Body transparent + Stacking-Context, damit cl-bg-layer mit
   z-index:-1 wirklich SICHTBAR ist und nicht hinter dem opaken body-bg
   verschwindet. */
html{ background-color:#071017; }

/* 2026-06-07: Header-Reihe oben in whereisPage (Zurück + Drucken) und
   Print-Stylesheet, das nur die Artikelliste auf Papier zeigt. */
.whereis-header-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-bottom:14px;
  flex-wrap:wrap;
}
#whereisPrintBtn{
  display:inline-flex;
  align-items:center;
  padding:9px 14px;
  border-radius:11px;
  font-weight:800;
  font-size:14px;
}
/* Logo nur beim Drucken anzeigen — sonst versteckt im normalen Layout. */
.whereis-print-logo{ display:none; }
@media print{
  /* Browser-Rand komplett weg. Drucker-eigener "unprintable area"
     (üblich 3-5mm) bleibt physikalisch immer — den können wir nicht
     überschreiben, der entsteht im Druckwerk, nicht in CSS. */
  @page{ margin:0; size:A4 portrait; }

  /* Reset: html/body neutral, weiß, kein Hintergrund/Bild. */
  html, body{
    margin:0 !important;
    padding:0 !important;
    background:#fff !important;
    color:#000 !important;
    min-height:0 !important;
  }
  /* Hintergrund-Layer (Berg-Bild) komplett weg — sonst druckt der mit. */
  .cl-bg-layer, .cl-bg-overlay, .cc-banner, .cc-root,
  body::before, body::after{ display:none !important; }

  /* Alle direkten Geschwister von #whereisPage in der app-shell ausblenden,
     damit KEIN Platzhalter (Tabs, Logo, Hero-Card, Planer, FAQ, Legal …)
     mehr Raum belegt. visibility:hidden hatte den Platz noch reserviert —
     deshalb war oben weißer Leerraum. */
  .app-shell > *:not(#whereisPage){ display:none !important; }

  /* App-Shell ohne Padding/Begrenzung, damit die Liste am Papierrand sitzt. */
  .app-shell{
    display:block !important;
    max-width:none !important;
    margin:0 !important;
    padding:0 !important;
    background:transparent !important;
    box-shadow:none !important;
  }

  /* No-Print Elemente (Zurück-/Drucken-Button, Hint-Zeile) endgültig weg. */
  .no-print, .no-print *{ display:none !important; }

  /* Druck-Container: füllt die Seite, kleiner Innenrand für Lesbarkeit,
     ansonsten flach (keine Glas-Optik, kein Rahmen, kein Schatten). */
  #whereisPage{
    display:block !important;
    position:static !important;
    inset:auto !important;
    background:#fff !important;
    color:#000 !important;
    margin:0 !important;
    padding:8mm !important;
  }
  #whereisPage .panel{
    background:#fff !important;
    color:#000 !important;
    border:0 !important;
    border-radius:0 !important;
    box-shadow:none !important;
    backdrop-filter:none !important;
    padding:0 !important;
    margin:0 !important;
  }
  #whereisPage h2{
    color:#000 !important;
    margin:0 0 5mm !important;
    font-size:16pt !important;
    font-weight:700 !important;
    padding-right:46mm !important;
  }
  /* Logo oben rechts auf jeder Druckseite (display only beim Print). */
  .whereis-print-logo{
    display:block !important;
    position:fixed;
    top:2mm; right:3mm;
    width:38mm; height:auto;
    z-index:9999;
  }

  /* Liste: 3 Spalten (Bezeichnung | Ort | kg) ohne Container-Rahmen. */
  #whereisPage .whereis-table{
    display:block !important;
    max-height:none !important;
    overflow:visible !important;
    gap:0 !important;
  }
  #whereisPage .whereis-table-head{
    display:grid !important;
    grid-template-columns:1.6fr 1fr 22mm !important;
    gap:6mm !important;
    border-bottom:1pt solid #000 !important;
    padding:3pt 0 !important;
    color:#000 !important;
    font-weight:700 !important;
    font-size:9.5pt !important;
    text-transform:uppercase;
    letter-spacing:0.05em;
    page-break-after:avoid;
  }
  #whereisPage .whereis-table-row{
    display:grid !important;
    grid-template-columns:1.6fr 1fr 22mm !important;
    gap:6mm !important;
    background:transparent !important;
    border:0 !important;
    border-bottom:0.3pt solid #bbb !important;
    border-radius:0 !important;
    padding:4pt 0 !important;
    color:#000 !important;
    font-size:10.5pt !important;
    text-align:left !important;
    page-break-inside:avoid;
  }
  #whereisPage .whereis-table-row > span{
    color:#000 !important;
    word-break:break-word;
  }
  #whereisPage .whereis-table-row > span:last-child{
    text-align:right;
    font-variant-numeric:tabular-nums;
  }
}
body{
  background:transparent !important;
  position:relative;
  isolation:isolate;
}

/* Usability 2026-06-11: Indikator für ungespeicherte (nicht im Account
   gesicherte) Änderungen am „Beladungsplan speichern“-Button. */
.plan-save-btn.has-unsaved::after{
  content:"●";
  color:#f0a500;
  margin-left:7px;
  font-size:0.9em;
  line-height:1;
  vertical-align:middle;
}

/* Usability 2026-06-11: Prioritätszeile über der Auswertung + anklickbare
   „Daten fehlen“-Karten, die zum betreffenden Feld springen. */
.eval-priority{
  display:flex;
  flex-direction:column;
  gap:2px;
  padding:10px 14px;
  margin-bottom:10px;
  border-radius:10px;
  border-left:4px solid #6b7a90;
  background:rgba(255,255,255,0.05);
}
.eval-priority .eval-prio-label{
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:.04em;
  opacity:.75;
}
.eval-priority .eval-prio-text{ font-weight:650; }
.eval-priority.eval-ok{ border-left-color:#3fb27f; }
.eval-priority.eval-warn{ border-left-color:#e0a13c; }
.eval-priority.eval-critical{ border-left-color:#e0584f; }
.eval-priority.eval-missing{ border-left-color:#8aa0bd; }
.eval-jump{
  cursor:pointer;
  width:100%;
  text-align:left;
  font:inherit;
  border:1px solid transparent;
  transition:border-color .12s ease, background .12s ease;
}
.eval-jump:hover,
.eval-jump:focus-visible{
  border-color:rgba(255,255,255,0.35);
  outline:none;
}
button.eval-card.eval-jump{ background:rgba(255,255,255,0.04); }
button.eval-card.eval-jump:hover{ background:rgba(255,255,255,0.09); }

/* Usability 2026-06-11: sichtbarer Sperr-Hinweis in Schritt 4 (Artikel & Felder),
   solange Stammdaten/Koordinaten fehlen. */
.step-lock-notice{
  display:flex;
  gap:10px;
  align-items:flex-start;
  padding:10px 12px;
  margin:0 0 12px;
  border-radius:10px;
  border-left:4px solid #e0a13c;
  background:rgba(224,161,60,0.12);
  font-size:13.5px;
}
.step-lock-notice.hidden{ display:none; }
.step-lock-icon{ font-size:16px; line-height:1.3; }
.step-lock-body b{ display:block; margin-bottom:6px; }
.step-lock-actions{ display:flex; flex-wrap:wrap; gap:8px; }
.step-lock-link{
  cursor:pointer;
  border:1px solid rgba(224,161,60,0.55);
  background:rgba(255,255,255,0.06);
  color:inherit;
  font:inherit;
  padding:5px 10px;
  border-radius:8px;
  transition:background .12s ease;
}
.step-lock-link:hover,
.step-lock-link:focus-visible{ background:rgba(224,161,60,0.25); outline:none; }

/* Usability 2026-06-11: sanfte Plausibilitätshinweise unter den Stammdaten. */
.stammdaten-warn{
  margin-top:8px;
  display:flex;
  flex-direction:column;
  gap:5px;
}
.stammdaten-warn.hidden{ display:none; }
.stammdaten-warn-row{
  font-size:13px;
  padding:7px 10px;
  border-radius:8px;
  background:rgba(224,161,60,0.14);
  border-left:3px solid #e0a13c;
}

/* Usability 2026-06-11: geführte Kalibrierung (Schritt-für-Schritt-Banner). */
.coord-guide{
  margin:8px 0;
  padding:10px 12px;
  border-radius:10px;
  background:rgba(249,115,22,0.14);
  border:1px solid rgba(249,115,22,0.5);
}
.coord-guide.hidden{ display:none; }
.coord-guide-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.coord-guide-head b{ font-size:14px; }
.coord-guide-cancel{
  cursor:pointer;
  border:none;
  background:transparent;
  color:var(--muted);
  font:inherit;
  text-decoration:underline;
  padding:2px 4px;
}
.coord-guide-cancel:hover{ color:var(--text); }
.coord-guide-sub{ font-size:13px; margin-top:4px; }
.coord-guide-progress{
  margin-top:8px;
  height:6px;
  border-radius:3px;
  background:rgba(255,255,255,0.15);
  overflow:hidden;
}
.coord-guide-progress > span{
  display:block;
  height:100%;
  background:var(--accent,#F97316);
  transition:width .2s ease;
}

/* Usability 2026-06-11: Erst-Nutzer-Onboarding-Karte (einmalig). */
.cl-onboard{
  position:fixed;
  right:18px;
  bottom:18px;
  z-index:9000;
  width:min(360px, calc(100vw - 32px));
  background:#1b2330;
  color:#edf6ff;
  border:1px solid rgba(255,255,255,0.14);
  border-radius:14px;
  padding:16px 18px 18px;
  box-shadow:0 12px 40px rgba(0,0,0,.4);
}
.cl-onboard h4{ margin:0 0 6px; font-size:16px; }
.cl-onboard p{ margin:0 0 8px; font-size:13.5px; }
.cl-onboard ol{ margin:0 0 12px; padding-left:18px; font-size:13.5px; line-height:1.5; }
.cl-onboard-actions{ display:flex; flex-wrap:wrap; gap:8px; }
.cl-onboard-actions .primary,
.cl-onboard-actions .ghost{ flex:1 1 auto; }
.cl-onboard-x{
  position:absolute;
  top:8px;
  right:10px;
  cursor:pointer;
  border:none;
  background:transparent;
  color:var(--muted,#aebdd4);
  font-size:22px;
  line-height:1;
  padding:2px 6px;
}
.cl-onboard-x:hover{ color:#fff; }
@media (max-width:560px){
  .cl-onboard{ right:8px; left:8px; bottom:8px; width:auto; }
}

/* Usability 2026-06-11: Mobile-Lupe beim Punktsetzen (rein visuell). */
.cl-loupe{
  position:fixed;
  display:none;
  z-index:9500;
  border-radius:50%;
  border:2px solid rgba(255,255,255,0.85);
  box-shadow:0 4px 16px rgba(0,0,0,.45);
  background-repeat:no-repeat;
  background-color:#0d1117;
  pointer-events:none;
}
.cl-loupe-cross,
.cl-loupe-cross::before{
  position:absolute;
  background:rgba(249,115,22,0.95);
}
.cl-loupe-cross{
  left:50%; top:50%;
  width:2px; height:18px;
  transform:translate(-50%,-50%);
}
.cl-loupe-cross::before{
  content:"";
  left:-8px; top:8px;
  width:18px; height:2px;
}

