/* ====================  css/mockups.css  ====================
   Mockups aus HTML und CSS statt aus Bilddateien: gestochen scharf auf jedem
   Bildschirm, ohne Ladezeit, ohne Bildrechte - und als Text im Quelltext,
   damit Suchmaschinen und Screenreader lesen koennen, was zu sehen ist.
   Die Marke im Mockup heisst "ihrshop": der Leser soll sich darin sehen,
   und niemand soll es fuer eine echte Kundenreferenz halten. */

.mock{ margin: 0; display: flex; flex-direction: column; align-items: center; gap: 16px }
.mock figcaption{
  font-size: .7rem; letter-spacing: .16em; text-transform: uppercase;
  color: var(--text-leise); text-align: center;
}
.mock--breit{ width: 100% }

/* ---------- Das Handy ---------- */
.telefon{
  position: relative;
  width: 290px; aspect-ratio: 9 / 19.3;
  /* Das Geraet wird als Ganzes verkleinert, nicht schmaler gemacht: die
     Produktseite ist fuer 290px gebaut und wuerde sonst gequetscht und unten
     abgeschnitten. Bemessen nach der Bildschirmhoehe - vorher waren es feste
     622px, auf einem Laptop fast drei Viertel des Bildes. */
  zoom: .76;
  padding: 9px; border-radius: 42px;
  background: #07080d;
  border: 1px solid rgba(140,170,240,.30);
  box-shadow: 0 50px 90px -40px rgba(0,0,0,.95), 0 0 0 6px rgba(140,170,240,.05);
}
.telefon::before{            /* die Kamerainsel */
  content: ""; position: absolute; z-index: 2;
  top: 18px; left: 50%; transform: translateX(-50%);
  width: 72px; height: 21px; border-radius: 12px; background: #07080d;
}
.schirm{
  height: 100%; overflow: hidden; border-radius: 33px;
  background: #fff; color: #15171c;
  font: 11px/1.45 var(--schrift); padding-top: 34px;
  text-transform: none; letter-spacing: 0;
}
.schirm p{ max-width: none; color: inherit }
.schirm--dunkel{ background: #000; color: #f4f4f5 }

/* ---------- Produktseite ---------- */
.shop-kopf{ display: flex; justify-content: space-between; align-items: center; padding: 6px 16px 10px }
.shop-marke{ font-weight: 700; font-size: 14px; letter-spacing: -.01em }
.shop-korb{
  position: relative; width: 18px; height: 16px; border: 1.6px solid #15171c; border-radius: 3px 3px 5px 5px;
  font-size: 0;
}
.shop-korb::after{
  content: "1"; position: absolute; top: -8px; right: -9px; width: 14px; height: 14px; border-radius: 50%;
  background: var(--blau); color: #fff; font-size: 9px; line-height: 14px; text-align: center; font-weight: 700;
}
.shop-bild{
  position: relative; aspect-ratio: 1 / 1.02;
  background: radial-gradient(120% 90% at 50% 30%, #f3f6fb 0%, #e3e9f2 55%, #d3dbe8 100%);
}
.shop-bild--quadrat{ aspect-ratio: 1 / 1 }

/* Die Flasche: Braunglas, Etikett, Pipette. */
.flasche{
  position: absolute; left: 50%; bottom: 15%; transform: translateX(-50%);
  width: 29%; height: 50%;
  border-radius: 16% 16% 10% 10% / 9% 9% 7% 7%;
  background: linear-gradient(90deg, #5c300b, #a9621f 32%, #de9c52 47%, #a15a1b 60%, #52290a);
  box-shadow: 0 14px 20px -8px rgba(40,25,10,.45);
}
.flasche::before{             /* Etikett */
  content: "N°3"; position: absolute; left: 11%; right: 11%; top: 32%; height: 36%;
  background: #f6f3ee; border-radius: 3px;
  font: 700 9px/1 var(--schrift); color: #3b2a1a; display: grid; place-items: center; letter-spacing: .04em;
}
.flasche i{                   /* Hals mit Schraubkappe */
  position: absolute; left: 50%; bottom: 99%; transform: translateX(-50%);
  width: 38%; height: 20%; border-radius: 2px 2px 0 0;
  background: linear-gradient(90deg, #0f0f10, #3c3c40 45%, #0f0f10);
}
.flasche i::before{           /* Pipettenball */
  content: ""; position: absolute; left: 50%; bottom: 100%; transform: translateX(-50%);
  width: 72%; height: 95%; border-radius: 45% 45% 12% 12%;
  background: linear-gradient(90deg, #17171a, #4a4a50 45%, #17171a);
}

.shop-text{ padding: 12px 16px 0 }
.shop-titel{ font-weight: 600; font-size: 13px }
.shop-sterne{ margin-top: 3px; color: #5b6070 }
.shop-sterne span{ color: #f5a524; letter-spacing: 1px }
.shop-preis{ margin-top: 6px; font-weight: 700; font-size: 16px }
.shop-versand{ margin-top: 10px; padding: 8px 10px; border-radius: 8px; background: #f1f4fa }
.shop-versand b{ font-weight: 700 }
.leiste{ display: block; height: 5px; margin-top: 6px; border-radius: 3px; background: #dde3ee; overflow: hidden }
.leiste i{ display: block; height: 100%; border-radius: 3px; background: linear-gradient(90deg, var(--blau), var(--violett)) }
.shop-knopf{
  display: block; margin-top: 10px; padding: 11px; border-radius: 10px;
  background: #111318; color: #fff; text-align: center; font-weight: 600; font-size: 12px;
}
.shop-dazu{
  display: flex; align-items: center; gap: 9px; margin-top: 10px; padding: 7px 8px;
  border: 1px solid #e5e8ef; border-radius: 10px;
}
.dazu-bild{
  width: 30px; height: 30px; border-radius: 6px; flex: none;
  background: radial-gradient(circle at 50% 35%, #f0f3f8, #d9e0eb);
  position: relative;
}
.dazu-bild::after{            /* Pinsel */
  content: ""; position: absolute; left: 44%; top: 18%; width: 12%; height: 64%;
  border-radius: 2px; background: linear-gradient(#2a2a2e 0 55%, #c79a5b 55%);
  transform: rotate(18deg);
}
.dazu-text{ flex: 1; color: #5b6070 }
.dazu-text b{ display: block; color: #15171c; font-weight: 600 }
.dazu-plus{
  width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center;
  background: #111318; color: #fff; font-weight: 700; font-size: 14px;
}
.shop-vertrauen{ margin-top: 10px; text-align: center; color: #7a8090; font-size: 10px }

/* ---------- Instagram-Anzeige ---------- */
.ig-kopf{ display: flex; align-items: center; gap: 8px; padding: 4px 12px 10px }
.ig-kopf b{ display: block; font-weight: 600 }
.ig-kopf small{ display: block; font-size: 9.5px; color: #a1a1aa }
.ig-avatar{ width: 28px; height: 28px; border-radius: 50%; flex: none;
  background: conic-gradient(from 200deg, var(--blau), var(--violett), #f0508c, var(--blau));
  box-shadow: 0 0 0 2px #000 inset }
.ig-mehr{ margin-left: auto; color: #a1a1aa; letter-spacing: 1px }
.ig-preis{
  position: absolute; left: 10px; bottom: 10px; padding: 4px 8px; border-radius: 6px;
  background: rgba(255,255,255,.94); color: #15171c; font-weight: 700; font-size: 11px;
}
.ig-cta{
  display: flex; justify-content: space-between; padding: 10px 12px;
  background: #0f1729; color: #fff; font-weight: 600; border-bottom: 1px solid #1f2937;
}
.ig-punkte{ display: flex; justify-content: center; gap: 4px; padding: 8px 0 2px }
.ig-punkte i{ width: 5px; height: 5px; border-radius: 50%; background: #3f3f46 }
.ig-punkte i.an{ background: var(--blau) }
.ig-likes{ padding: 4px 12px 0; font-weight: 600 }
.ig-text{ padding: 3px 12px 0; color: #d4d4d8 }
.ig-text b{ color: #fff; font-weight: 600 }
.ig-katalog{ display: flex; gap: 7px; padding: 12px 12px 0 }
.ig-katalog span{
  flex: 1; font-size: 9.5px; color: #a1a1aa; display: flex; flex-direction: column; gap: 3px;
}
.ig-katalog span b{ color: #fff; font-weight: 600 }
.ig-katalog i{
  display: block; aspect-ratio: 1; border-radius: 6px;
  background: radial-gradient(circle at 50% 40%, #b8702a 0 22%, #e3e9f2 23%);
}
.ig-katalog i.b{ background: radial-gradient(circle at 50% 40%, #2a2a2e 0 12%, #e3e9f2 13%) }
.ig-katalog i.c{ background: radial-gradient(circle at 36% 45%, #b8702a 0 17%, transparent 18%),
                             radial-gradient(circle at 66% 45%, #2a2a2e 0 11%, #e3e9f2 12%) }

/* ---------- Messprotokoll ---------- */
.tafel-mock{
  width: min(440px, 100%);
  padding: 16px 20px 8px; border-radius: 10px;
  background: rgba(9,11,20,.94); border: 1px solid var(--linie);
  box-shadow: 0 30px 60px -30px rgba(0,0,0,.9);
  font-size: .88rem;
}
.tm-kopf{ display: flex; flex-direction: column; gap: 2px; padding-bottom: 12px; max-width: none }
.tm-kopf span{ font-size: .66rem; letter-spacing: .16em; text-transform: uppercase; color: var(--text-leise) }
.tm-kopf b{ color: var(--text); font-weight: 600 }
.tm-zeile{ display: flex; justify-content: space-between; gap: 16px; padding: 10px 0; border-top: 1px solid var(--linie); color: var(--text-leise) }
.tm-zeile em{ font-style: normal; color: var(--text); font-variant-numeric: tabular-nums }
.tm-zeile em.ok::before{ content: ""; display: inline-block; width: 7px; height: 7px; margin-right: 7px; border-radius: 50%; background: #34d399; vertical-align: 1px }
.tm-summe em{ font-weight: 600 }

/* ---------- Der Befund als Blatt ---------- */
.blatt{
  width: min(470px, calc(100% - 12px));   /* die Drehung braucht ein paar Pixel Rand */
  padding: clamp(22px, 3vw, 32px);
  background: var(--papier); color: var(--tinte); border-radius: 2px;
  box-shadow: 0 0 0 1px rgba(48,96,240,.28), 0 1px 2px rgba(0,0,0,.6), 0 30px 80px -24px rgba(0,0,0,.9);
  rotate: -1deg;   /* Einzeleigenschaft - bewegung.css animiert genau diese */
}
.blatt p{ max-width: none; color: inherit }
.blatt-kopf{
  display: flex; justify-content: space-between; gap: 12px;
  font-size: .66rem; letter-spacing: .16em; text-transform: uppercase; color: rgba(22,22,26,.55);
  padding-bottom: 12px; border-bottom: 1px solid rgba(22,22,26,.22);
}
.blatt-zeile{
  display: grid; grid-template-columns: 10px minmax(0, 1fr); gap: 12px; align-items: start;
  padding: 12px 0; border-bottom: 1px solid rgba(22,22,26,.10);
  font-size: .86rem; line-height: 1.45; color: rgba(22,22,26,.72);
}
.blatt-zeile b{ display: block; color: var(--tinte); font-weight: 600 }
.blatt-zeile i{ width: 9px; height: 9px; border-radius: 50%; margin-top: 5px }
.blatt-zeile i.rot{ background: #e0483a } .blatt-zeile i.gelb{ background: #d99a1e } .blatt-zeile i.gruen{ background: #1f9d55 }
.blatt-fuss{ margin-top: 14px; font-size: .76rem; color: rgba(22,22,26,.55) }

/* ---------- Anordnung ----------
   Einstieg mit Mockup: Text links, Geraet rechts, leicht gedreht - die
   einzige Tiefe auf der Seite, die nicht von der Punktwolke kommt. */
.kopf-raster{
  display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr);
  gap: clamp(32px, 5vw, 80px); align-items: center;
}
.kopf-raster .satz{ max-width: none }
.kopf-raster h1{ font-size: clamp(2.4rem, 4.3vw, 4.5rem) }
.kopf-raster .telefon{ transform: perspective(1400px) rotateY(-11deg) rotateX(4deg) }
.zwei-spalten{
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .85fr);
  gap: clamp(32px, 5vw, 72px); align-items: center;
}
/* Hoehe des Geraets je Bildschirmhoehe: rund 50-55 % des Fensters. */
@media (max-height: 860px){ .telefon{ zoom: .66 } }
@media (max-height: 740px){ .telefon{ zoom: .58 } }
@media (min-height: 1080px){ .telefon{ zoom: .86 } }

@media (max-width: 900px){
  .kopf-raster, .zwei-spalten{ grid-template-columns: minmax(0, 1fr) }
  .kopf-raster .telefon{ transform: none }
  .telefon{ zoom: .72 }
}
@media (max-width: 480px){
  .kopf-raster h1{ font-size: clamp(2rem, 8.6vw, 2.6rem) }
}


/* ---------- Platzhalter ----------
   Ein ruhiger Kasten mit der Angabe, welches Bild hierher gehoert und in
   welchem Format. Gestrichelt, damit er nie mit einem fertigen Element
   verwechselt wird. bau.py zaehlt sie bei jedem Bau - vor dem Livegang
   muss die Zahl null sein. */
.platzhalter{
  margin: 0; width: 100%;
  display: grid; place-items: center;
  border: 1px dashed rgba(140,170,240,.34); border-radius: 2px;
  background:
    repeating-linear-gradient(135deg, rgba(140,170,240,.035) 0 14px, transparent 14px 28px),
    rgba(9,11,20,.93);   /* .72 liess den Ring der Punktwolke durch die Beschriftung laufen */
  padding: 22px; text-align: center;
}
.ph-marke{
  font-size: .66rem; letter-spacing: .18em; text-transform: uppercase;
  color: var(--violett-h); max-width: none;
}
.ph-was{ margin-top: 8px; color: var(--text); font-size: .98rem; max-width: 28ch }
/* Die Bildnotiz (Motiv, Format, Mindestgroesse) ist fuer uns, nicht fuer
   Besucher: seit dem Livegang bleibt sie im Quelltext, wird aber nicht gezeigt. */
.ph-wie{ display: none }

/* ---------- Referenzen ---------- */
.arbeiten{ display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(24px, 3vw, 44px); position: relative }
@media (max-width: 760px){ .arbeiten{ grid-template-columns: minmax(0, 1fr) } }
.arbeit figcaption{ margin-top: 14px }
.arbeit h3{ font-size: 1.1rem }
.arbeit p{ color: var(--text-leise); font-size: .92rem; margin-top: 4px }
.arbeit .marken{ display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px }
.arbeit .marken span{
  font-size: .66rem; letter-spacing: .12em; text-transform: uppercase;
  padding: 4px 9px; border: 1px solid var(--linie); border-radius: 2px; color: var(--text-leise);
}

/* ---------- Wer dahinter steht ---------- */
.person{ display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: clamp(28px, 5vw, 72px); align-items: center }
@media (max-width: 820px){ .person{ grid-template-columns: minmax(0, 1fr) } .person .platzhalter{ max-width: 320px } }
.person blockquote{
  margin-top: 1.2em; padding-left: 20px; border-left: 2px solid var(--violett);
  color: var(--text); font-size: 1.08rem; line-height: 1.55;
}

/* Referenzen und Person bekommen denselben weichen Grund wie alle anderen
   Bloecke ueber der Buehne - ohne ihn lief der Ring der Punktwolke quer
   durch die Bildunterschriften. */
.person{ position: relative }
.arbeiten::before, .person::before{
  content: ""; position: absolute; inset: -5vh -5vw; z-index: -1; pointer-events: none;
  background: radial-gradient(115% 92% at 50% 50%, rgba(5,6,12,.95) 0%, rgba(5,6,12,.84) 55%, transparent 86%);
}

/* ---------- Helles Fenster: Suche, Shopping, Editor, App ---------- */
.fenster{
  width: min(500px, 100%);
  background: #fff; color: #1f2328; border-radius: 12px; overflow: hidden;
  box-shadow: 0 0 0 1px rgba(140,170,240,.25), 0 40px 80px -36px rgba(0,0,0,.9);
  font: 13px/1.5 Arial, "Helvetica Neue", sans-serif;   /* Suchmaschinen sehen nicht aus wie Sora */
  text-transform: none; letter-spacing: 0;
}
.fenster p{ max-width: none; color: inherit }
.fe-suche{
  display: flex; align-items: center; gap: 10px; margin: 14px 16px 6px; padding: 10px 16px;
  border: 1px solid #dfe1e5; border-radius: 24px; color: #202124; font-size: 14px;
  box-shadow: 0 1px 4px rgba(32,33,36,.12);
}
.fe-lupe{ width: 12px; height: 12px; border: 2px solid #9aa0a6; border-radius: 50%; position: relative; flex: none }
.fe-lupe::after{ content: ""; position: absolute; right: -5px; bottom: -4px; width: 6px; height: 2px; background: #9aa0a6; rotate: 45deg }
.fe-gesponsert{ padding: 8px 18px 0; font-size: 12px; color: #202124; font-weight: 700 }

.serp{ padding: 12px 18px 14px }
.serp + .serp{ border-top: 1px solid #f1f3f4 }
.serp-url{ display: flex; align-items: center; gap: 8px; font-size: 12px; color: #4d5156 }
.serp-url i{ width: 18px; height: 18px; border-radius: 50%; background: conic-gradient(from 200deg, var(--blau), var(--violett), var(--blau)) }
.serp-titel{ margin-top: 4px; font-size: 18px; line-height: 1.3; color: #1a0dab }
.serp-reich{ margin-top: 3px; font-size: 12.5px; color: #4d5156 }
.serp-reich .sterne{ color: #f5a524; letter-spacing: 1px }
.serp-reich b{ color: #202124 } .serp-reich em{ font-style: normal; color: #188038 }
.serp-text{ margin-top: 3px; color: #4d5156; font-size: 13px }
.serp--blass{ opacity: .45 }

.shopping{ display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; padding: 10px 16px 18px }
.sh-karte{ display: flex; flex-direction: column; gap: 2px; font-size: 12px; color: #202124 }
.sh-karte b{ font-weight: 400; margin-top: 6px } .sh-karte strong{ font-weight: 700; font-size: 13px }
.sh-karte small{ color: #5f6368; font-size: 11px }
.sh-karte .sterne{ color: #f5a524; font-size: 11px } .sh-karte .sterne em{ color: #5f6368; font-style: normal }
.sh-bild{
  position: relative; aspect-ratio: 1; border-radius: 8px;
  background: radial-gradient(120% 90% at 50% 30%, #f3f6fb, #dde4ee);
}
.sh-bild .flasche{ bottom: 12%; height: 56% }
.sh-bild--pinsel::after{
  content: ""; position: absolute; left: 46%; top: 16%; width: 9%; height: 66%; border-radius: 2px;
  background: linear-gradient(#2a2a2e 0 55%, #c79a5b 55%); rotate: 18deg;
}
.sh-bild--set .flasche{ left: 38%; height: 50% }
.sh-bild--set::after{
  content: ""; position: absolute; left: 64%; top: 26%; width: 7%; height: 56%; border-radius: 2px;
  background: linear-gradient(#2a2a2e 0 55%, #c79a5b 55%); rotate: 18deg;
}

/* ---------- Freigabeliste ---------- */
.fg-zeile{
  display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 8px 12px; align-items: start;
  padding: 12px 0; border-top: 1px solid var(--linie);
}
.fg-art{
  font-size: .62rem; letter-spacing: .14em; text-transform: uppercase; padding: 3px 7px;
  border: 1px solid var(--blau); color: var(--blau); border-radius: 2px; margin-top: 2px;
}
.fg-art--video{ border-color: var(--violett-h); color: var(--violett-h) }
.fg-titel{ color: var(--text); font-size: .92rem; line-height: 1.4 }
.fg-titel small{ display: block; color: var(--text-leise); font-size: .78rem; margin-top: 2px }
.fg-knoepfe{ grid-column: 2; display: flex; gap: 8px }
.fg-knoepfe em{
  font-style: normal; font-size: .76rem; padding: 5px 12px; border-radius: 2px;
  border: 1px solid var(--linie); color: var(--text-leise);
}
.fg-knoepfe em.ja{ background: var(--text); color: var(--raum); border-color: var(--text) }

/* ---------- Kurzvideo ---------- */
.schirm--video{ position: relative; background: #0d0f14; color: #fff; padding-top: 0 }
.vd-bild{ position: absolute; inset: 0; background: radial-gradient(120% 80% at 50% 40%, #3b3228 0%, #16130f 70%) }
.vd-bild .flasche{ bottom: 22%; width: 34%; height: 42% }
.vd-titel{
  position: absolute; left: 18px; right: 18px; top: 18%;
  font: 700 21px/1.15 var(--schrift); text-transform: uppercase; letter-spacing: -.01em;
  text-shadow: 0 2px 12px rgba(0,0,0,.6);
}
.vd-untertitel{
  position: absolute; left: 22px; right: 22px; bottom: 16%; text-align: center;
  font-weight: 600; font-size: 12px; padding: 5px 8px; border-radius: 6px; background: rgba(0,0,0,.62);
}
.vd-kopf{ position: absolute; left: 16px; bottom: 7%; display: flex; align-items: center; gap: 8px; font-size: 11px }
.vd-fortschritt{ position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: rgba(255,255,255,.2) }
.vd-fortschritt i{ display: block; width: 38%; height: 100%; background: #fff }

/* ---------- Weiterleitungen ---------- */
.wl-zeile{
  display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) auto; gap: 8px; align-items: center;
  padding: 9px 0; border-top: 1px solid var(--linie);
  font: .76rem/1.4 ui-monospace, "SF Mono", Menlo, monospace; color: var(--text-leise);
}
.wl-zeile span{ overflow: hidden; text-overflow: ellipsis; white-space: nowrap }
.wl-zeile span:nth-of-type(2){ color: var(--text) }
.wl-zeile i{ font-style: normal; color: var(--text-fern) }
.wl-zeile em{ font-style: normal; color: #34d399 }

/* ---------- Editor und eigene App ---------- */
.fenster--editor{ font: 12.5px/1.5 var(--schrift); padding-bottom: 14px }
.ed-kopf{ padding: 12px 16px; background: #f6f6f7; border-bottom: 1px solid #e3e3e3; font-weight: 600; font-size: 12px; color: #303030 }
.ed-block{ display: flex; justify-content: space-between; align-items: center; padding: 14px 16px 6px }
.ed-block b{ font-weight: 600 }
.ed-schalter{ width: 32px; height: 18px; border-radius: 9px; background: #111; position: relative }
.ed-schalter i{ position: absolute; right: 2px; top: 2px; width: 14px; height: 14px; border-radius: 50%; background: #fff }
.ed-feld{ margin: 8px 16px 0; padding: 7px 10px; border: 1px solid #d9d9d9; border-radius: 8px; display: flex; flex-direction: column }
.ed-feld small{ font-size: 10.5px; color: #616161 }
.ed-farbe{ display: inline-block; width: 12px; height: 12px; border-radius: 50%; margin-right: 6px; vertical-align: -2px;
  background: linear-gradient(90deg, var(--blau), var(--violett)) }
.ed-vorschau{ margin: 12px 16px 0; padding: 9px 11px; border-radius: 8px; background: #f1f4fa; font-size: 12px }
.ed-vorschau b{ font-weight: 700 }
.app-zahlen{ display: grid; grid-template-columns: 1fr 1fr; gap: 10px; padding: 14px 16px 4px }
.app-zahlen span{ border: 1px solid #e3e3e3; border-radius: 8px; padding: 10px 12px }
.app-zahlen b{ display: block; font-size: 18px; font-weight: 700 }
.app-zahlen small{ color: #616161; font-size: 11px }
.app-log-kopf{ padding: 12px 16px 2px; font-size: 11px; color: #616161; text-transform: uppercase; letter-spacing: .08em }
.app-log{ display: grid; grid-template-columns: 10px minmax(0, 1fr); gap: 10px; padding: 7px 16px; align-items: start }
.app-log i{ width: 8px; height: 8px; border-radius: 50%; margin-top: 5px }
.app-log i.ok{ background: #1f9d55 } .app-log i.warn{ background: #d99a1e }

/* ---------- Schulung: Sitzung am geteilten Bildschirm ----------
   Dunkles Besprechungsfenster, darin hell die Shopify-Verwaltung des Kunden.
   Der gruene Rahmen ist das Zeichen, das jede Videokonferenz fuer "Bildschirm
   wird geteilt" benutzt. */
.fenster--sitzung{ background: #14161d; color: #e6e9f2; font: 12px/1.45 var(--schrift); padding-bottom: 14px }
.si-kopf{
  display: flex; align-items: center; gap: 8px; padding: 10px 14px;
  border-bottom: 1px solid rgba(255,255,255,.07); font-size: 11.5px; color: #aab1c4;
}
.si-live{ width: 7px; height: 7px; border-radius: 50%; background: #ef4444; flex: none }
.si-zeit{ margin-left: auto; font-variant-numeric: tabular-nums }
.si-raster{ display: grid; grid-template-columns: minmax(0, 1fr) 76px; gap: 10px; padding: 12px 14px 0 }
.si-bildschirm{ border-radius: 8px; overflow: hidden; background: #f1f1f1; color: #303030; box-shadow: 0 0 0 2px #22c55e }
.si-admin{ display: grid; grid-template-columns: 36px minmax(0, 1fr); min-height: 158px }
.si-seite{ background: #e7e7e7; display: flex; flex-direction: column; gap: 8px; padding: 13px 9px }
.si-seite i{ height: 6px; border-radius: 3px; background: #c9c9c9 }
.si-seite i.an{ background: #303030 }
.si-inhalt{ position: relative; padding: 12px 12px 16px; display: flex; flex-direction: column; gap: 6px }
.si-inhalt b{ font-size: 13px; font-weight: 700; margin-bottom: 2px }
.si-zeile{
  display: flex; justify-content: space-between; gap: 8px;
  background: #fff; border: 1px solid #e1e1e1; border-radius: 6px; padding: 6px 8px; font-size: 11px;
}
.si-zeile em{ font-style: normal; font-size: 10px; padding: 0 6px; border-radius: 8px; background: #cdfee1; color: #0c5132; white-space: nowrap }
.si-zeile em.entwurf{ background: #e0f0ff; color: #00527c }
.si-zeile em.aus{ background: #ececec; color: #616161 }
.si-zeile--markiert{ border-color: var(--blau); box-shadow: 0 0 0 3px rgba(56,189,248,.28) }
.si-zeiger{
  position: absolute; left: 58%; top: 60%; width: 13px; height: 19px; background: #111;
  clip-path: polygon(0 0, 0 100%, 30% 74%, 50% 100%, 66% 94%, 46% 68%, 100% 68%);
}
.si-leute{ display: flex; flex-direction: column; gap: 8px }
.si-person{
  aspect-ratio: 1; border-radius: 8px; background: #20232e;
  display: grid; place-items: center; align-content: center; gap: 5px;
}
.si-person i{
  font-style: normal; width: 30px; height: 30px; border-radius: 50%;
  display: grid; place-items: center; font-size: 10.5px; font-weight: 600; color: #fff;
  background: linear-gradient(135deg, var(--blau), var(--violett));
}
.si-person--sie i{ background: #3a3f52 }
.si-person small{ font-size: 10px; color: #aab1c4 }
.si-protokoll{ margin: 12px 14px 0; padding: 10px 12px; border-radius: 8px; background: #1c1f28; display: grid; gap: 5px; font-size: 11.5px }
.si-protokoll small{ font-size: 9.5px; letter-spacing: .14em; text-transform: uppercase; color: #8990a3 }
.si-protokoll span{ display: flex; gap: 8px; align-items: baseline }
.si-protokoll span::before{ content: ""; flex: none; width: 9px; height: 9px; border-radius: 50%; translate: 0 1px }
.si-protokoll .ok::before{ background: #34d399 }
.si-protokoll .offen{ color: #aab1c4 }
.si-protokoll .offen::before{ border: 1.5px solid #8990a3 }
