.ttp-app-shell { width: 100%; }
.ttp-mobile-app {
  --bg: #0b0c10;
  --panel: rgba(15, 17, 24, 0.74);
  --panel-strong: rgba(12, 14, 19, 0.92);
  --text: #f3efe9;
  --muted: rgba(243, 239, 233, 0.72);
  --line: rgba(255,255,255,0.08);
  --line-strong: rgba(255,255,255,0.18);
  --glow: rgba(212, 165, 116, 0.18);
  color: var(--text);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

.ttp-view {
  --ttp-view-radius: 28px;
  position: relative;
  width: 100%;
  min-height: 78svh;
  height: min(92svh, 900px);
  border-radius: var(--ttp-view-radius);
  overflow: hidden;
  overflow: clip;
  isolation: isolate;
  background:
    radial-gradient(circle at top, rgba(212,165,116,.12) 0%, rgba(23,25,34,.22) 24%, rgba(11,12,16,1) 68%),
    linear-gradient(180deg, #13151d 0%, #0b0c10 100%);
  box-shadow: 0 18px 60px rgba(0,0,0,.32);
}

.ttp-view::before,
.ttp-view::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.ttp-view::before {
  background:
    radial-gradient(120% 58% at 50% -10%, rgba(255,255,255,.035) 0%, rgba(255,255,255,.018) 28%, rgba(255,255,255,0) 62%),
    linear-gradient(180deg, rgba(255,255,255,.012) 0%, rgba(255,255,255,.008) 14%, rgba(255,255,255,0) 36%, rgba(255,255,255,0) 72%, rgba(255,255,255,.006) 100%);
  z-index: 0;
}

.ttp-view::after {
  z-index: 8;
  border-radius: inherit;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.05), inset 0 1px 0 rgba(255,255,255,.025);
}

.ttp-canvas {
  position: absolute;
  inset: -1px;
  display: block;
  width: 100%;
  height: 100%;
  touch-action: none;
  will-change: transform;
  border-radius: inherit;
  clip-path: inset(0 round var(--ttp-view-radius));
  -webkit-clip-path: inset(0 round var(--ttp-view-radius));
  -webkit-mask-image: -webkit-radial-gradient(white, black);
  z-index: 1;
}

/* Tattoo-Ink (multiply) über dem VPS-Drahtgitter: Mesh = Fläche/Haut, WebGL = darauf gemappte Tinte */
.ttp-webgl-layer {
  position: absolute;
  inset: -1px;
  display: block;
  width: 100%;
  height: 100%;
  pointer-events: none;
  border-radius: inherit;
  clip-path: inset(0 round var(--ttp-view-radius));
  -webkit-clip-path: inset(0 round var(--ttp-view-radius));
  -webkit-mask-image: -webkit-radial-gradient(white, black);
  mix-blend-mode: multiply;
  z-index: 3;
}

/* Zwischen Foto und Tattoo: Projektions-Mesh (Gitter), nicht dieselbe Ebene wie die Tinte */
.ttp-projection-mesh-layer {
  position: absolute;
  inset: -1px;
  display: block;
  width: 100%;
  height: 100%;
  pointer-events: none;
  border-radius: inherit;
  clip-path: inset(0 round var(--ttp-view-radius));
  -webkit-clip-path: inset(0 round var(--ttp-view-radius));
  -webkit-mask-image: -webkit-radial-gradient(white, black);
  z-index: 2;
}

.ttp-live-stage {
  position: absolute;
  inset: -1px;
  z-index: 3;
  pointer-events: none;
  overflow: hidden;
  border-radius: inherit;
  will-change: opacity;
  contain: layout paint style;
}

.ttp-live-tattoo {
  position: absolute;
  left: 0;
  top: 0;
  pointer-events: none;
  display: block;
  transform-origin: center center;
  transform-style: preserve-3d;
  will-change: transform, left, top, width, height, opacity;
  mix-blend-mode: multiply;
  backface-visibility: hidden;
  contain: layout style paint;
  image-rendering: auto;
  outline: 1px solid transparent;
}

.hidden { display: none !important; }

.ttp-empty-state,
.ttp-processing {
  position: absolute;
  inset: 0;
  display: grid;
  place-content: center;
  gap: 12px;
  text-align: center;
  padding: 24px;
  z-index: 2;
  animation: ttp-fade-up .5s cubic-bezier(.22,1,.36,1) both;
}

.ttp-empty-state {
  margin: 22px;
  inset: 0;
  width: calc(100% - 44px);
  height: calc(100% - 44px);
  border-radius: 24px;
  border: 2px dashed rgba(255,255,255,.18);
  background: rgba(12,14,19,.28);
  cursor: pointer;
  place-content: center;
}

.ttp-processing {
  background: rgba(8,10,14,.58);
  backdrop-filter: blur(14px);
}

.ttp-processing-icon {
  width: 52px;
  height: 52px;
  color: var(--ttp-accent);
  margin: 0 auto;
}

.ttp-processing-icon svg,
.ttp-logo svg,
.ttp-empty-upload-icon svg {
  width: 100%;
  height: 100%;
}

.ttp-processing-text { color: var(--text); font-weight: 700; }
.ttp-processing-sub { color: rgba(230,232,240,.74); font-size: .9rem; margin-top: -4px; }
.ttp-processing-progress { width: min(320px, 82vw); display: grid; grid-template-columns: 1fr auto; gap: 10px; align-items: center; }
.ttp-processing-bar { height: 10px; border-radius: 999px; background: rgba(255,255,255,.12); overflow: hidden; box-shadow: inset 0 1px 0 rgba(255,255,255,.08); }
.ttp-processing-fill { display: block; height: 100%; width: 0%; border-radius: inherit; background: linear-gradient(90deg, rgba(212,165,116,.72), rgba(212,165,116,1)); box-shadow: 0 0 20px rgba(212,165,116,.28); transition: width .2s ease; }
.ttp-processing-percent { min-width: 42px; text-align: right; color: var(--text); font-weight: 700; font-size: .92rem; letter-spacing: .01em; }

.ttp-logo,
.ttp-empty-upload-icon {
  width: 68px;
  height: 68px;
  margin: 0 auto;
  color: var(--ttp-accent);
  filter: drop-shadow(0 10px 24px rgba(212,165,116,.15));
}

.ttp-title { font-size: 1.35rem; font-weight: 700; letter-spacing: -.02em; }
.ttp-sub { color: var(--muted); max-width: 28rem; font-size: .95rem; }

.ttp-topbar {
  position: absolute;
  top: 14px;
  left: 14px;
  right: 14px;
  padding-right: 90px;
  display: flex;
  align-items: center;
  gap: 10px;
  z-index: 3;
  will-change: opacity, transform;
  animation: ttp-fade-up .55s cubic-bezier(.22,1,.36,1) both;
}

.ttp-icon-btn,
.ttp-tool,
.ttp-chip-btn,
.ttp-booking-chip,
.ttp-preset,
.ttp-handle,
.ttp-object-tool,
.ttp-selection-slider {
  border: 1px solid var(--line);
  background: var(--panel);
  color: var(--text);
  backdrop-filter: blur(16px);
}

.ttp-icon-btn,
.ttp-tool {
  width: 48px;
  height: 48px;
  border-radius: 999px;
  display: inline-grid;
  place-items: center;
  cursor: pointer;
  box-shadow: 0 12px 32px rgba(0,0,0,.26), inset 0 1px 0 rgba(255,255,255,.04);
  transition: transform .22s ease, background .22s ease, border-color .22s ease, box-shadow .22s ease, opacity .22s ease;
}

.ttp-icon-btn:hover,
.ttp-tool:hover,
.ttp-preset:hover,
.ttp-chip-btn:hover,
.ttp-handle:hover,
.ttp-object-tool:hover {
  transform: translateY(-1px) scale(1.02);
  border-color: rgba(255,255,255,.22);
  box-shadow: 0 16px 38px rgba(0,0,0,.28), 0 0 0 1px rgba(255,255,255,.04), 0 0 0 10px rgba(212,165,116,.03);
}

.ttp-icon-btn:active,
.ttp-tool:active,
.ttp-chip-btn:active,
.ttp-preset:active,
.ttp-handle:active,
.ttp-object-tool:active {
  transform: scale(.97);
}

.ttp-icon-btn svg,
.ttp-tool svg,
.ttp-handle svg,
.ttp-object-tool svg {
  width: 22px;
  height: 22px;
}

.ttp-icon-btn input { display: none; }

.ttp-chip-btn,
.ttp-booking-chip,
.ttp-preset {
  min-height: 42px;
  padding: 0 14px;
  border-radius: 999px;
  font-size: .92rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: transform .22s ease, border-color .22s ease, box-shadow .22s ease, background .22s ease;
}

.ttp-chip-btn,
.ttp-preset {
  box-shadow: 0 10px 28px rgba(0,0,0,.2);
}

.ttp-booking-chip {
  margin-left: auto;
  color: var(--ttp-accent);
  background: rgba(15, 17, 24, 0.82);
}

.ttp-side-tools {
  position: absolute;
  right: 14px;
  top: 50%;
  transform: translateY(-50%);
  display: grid;
  gap: 10px;
  z-index: 3;
  will-change: opacity, transform;
  animation: ttp-fade-up .45s cubic-bezier(.22,1,.36,1) both;
}

.ttp-tool.is-active,
.ttp-object-tool.is-active {
  border-color: var(--line-strong);
  background: rgba(20,22,30,.94);
  box-shadow: 0 12px 26px rgba(0,0,0,.28), 0 0 0 1px rgba(255,255,255,.04), 0 0 18px var(--glow);
}

.ttp-selection-tools {
  position: absolute;
  z-index: 5;
  display: grid;
  gap: 8px;
  transform: translate(-50%, -50%);
  animation: ttp-fade-in .22s ease both;
}

.ttp-edit-focus {
  position: absolute;
  z-index: 2;
  border-radius: 26px;
  border: 1px solid rgba(255,255,255,.12);
  background: radial-gradient(circle at center, rgba(255,255,255,.04), rgba(255,255,255,0));
  box-shadow: 0 0 0 9999px rgba(7,9,12,.18), inset 0 0 0 1px rgba(255,255,255,.06), 0 18px 34px rgba(0,0,0,.18);
  pointer-events: none;
  transform-origin: center center;
  animation: ttp-fade-in .18s ease both;
}

.ttp-object-tool {
  width: 38px;
  height: 38px;
  border-radius: 999px;
  display: inline-grid;
  place-items: center;
  cursor: pointer;
  box-shadow: 0 10px 28px rgba(0,0,0,.24), inset 0 1px 0 rgba(255,255,255,.04);
  transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease, background .2s ease;
}

.ttp-object-tool svg {
  width: 17px;
  height: 17px;
}

.ttp-selection-slider {
  position: absolute;
  z-index: 5;
  width: min(92vw, 360px);
  padding: 12px 13px;
  border-radius: 18px;
  background: var(--panel-strong);
  box-shadow: 0 18px 40px rgba(0,0,0,.28);
  transform: translateX(-50%);
  animation: ttp-fade-in .22s ease both;
}

.ttp-selection-slider[data-side="bottom"] {
  transform: translateX(-50%);
}

.ttp-selection-slider-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 8px;
}

.ttp-selection-slider-title {
  font-size: .78rem;
  color: var(--muted);
}

.ttp-selection-slider-toggle {
  min-width: 44px;
  height: 28px;
  padding: 0 10px;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: rgba(255,255,255,.05);
  color: var(--text);
  cursor: pointer;
}

.ttp-selection-slider-input {
  width: 100%;
  accent-color: var(--ttp-accent);
}

.ttp-selection {
  position: absolute;
  border: 1px dashed rgba(255,255,255,.58);
  border-radius: 18px;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.06), 0 0 0 1px rgba(0,0,0,.12);
  z-index: 4;
  pointer-events: none;
  transform-origin: center center;
  animation: ttp-fade-in .24s ease both;
}

.ttp-mobile-app.is-editing .ttp-selection {
  border-color: rgba(255,255,255,.72);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.08), 0 0 0 1px rgba(0,0,0,.12), 0 0 0 10px rgba(212,165,116,.05);
}

.ttp-selection::after {
  content: '';
  position: absolute;
  inset: 6px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.16);
}

.ttp-handle {
  position: absolute;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: rgba(17,19,25,.96);
  display: grid;
  place-items: center;
  pointer-events: auto;
  cursor: pointer;
  box-shadow: 0 8px 22px rgba(0,0,0,.28);
  touch-action: none;
  -webkit-tap-highlight-color: transparent;
}

.ttp-handle::before,
.ttp-object-tool::before {
  content: '';
  position: absolute;
  inset: -8px;
}

.ttp-handle svg { width: 15px; height: 15px; }
.ttp-rotate { right: -6px; top: -6px; }
.ttp-scale { right: -6px; bottom: -6px; }

.ttp-bottom-sheet { display: none !important; }

.ttp-presets {
  position: absolute;
  left: 14px;
  right: 14px;
  top: 72px;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  z-index: 3;
  animation: ttp-fade-up .4s cubic-bezier(.22,1,.36,1) both;
}


.ttp-toast {
  position: absolute;
  left: 50%;
  bottom: 18px;
  z-index: 7;
  max-width: min(86vw, 360px);
  padding: 11px 14px;
  border-radius: 16px;
  border: 1px solid var(--line);
  background: rgba(12,14,19,.88);
  color: var(--text);
  font-size: .8rem;
  line-height: 1.35;
  text-align: center;
  box-shadow: 0 14px 36px rgba(0,0,0,.28);
  backdrop-filter: blur(14px);
  transform: translate(-50%, 10px);
  opacity: 0;
  pointer-events: none;
}

.ttp-toast.is-visible {
  opacity: 1;
  transform: translate(-50%, 0);
  transition: opacity .22s ease, transform .22s ease;
}

.ttp-edit-helper {
  position: absolute;
  top: 14px;
  left: 14px;
  z-index: 6;
  display: inline-flex;
  align-items: center;
  max-width: min(58vw, 320px);
  min-height: 38px;
  padding: 0 14px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.16);
  background: linear-gradient(135deg, rgba(14,16,22,.9), rgba(20,22,30,.68));
  color: rgba(248,244,238,.95);
  font-size: .72rem;
  font-weight: 600;
  line-height: 1.15;
  white-space: nowrap;
  box-shadow: 0 16px 34px rgba(0,0,0,.24), inset 0 1px 0 rgba(255,255,255,.06);
  backdrop-filter: blur(14px) saturate(1.06);
  -webkit-backdrop-filter: blur(14px) saturate(1.06);
  animation: ttp-fade-in .22s ease both;
}

.ttp-edit-ui {
  position: absolute;
  inset: 0;
  z-index: 6;
  pointer-events: none;
}

.ttp-edit-hint {
  position: absolute;
  top: 72px;
  right: 14px;
  display: inline-flex;
  align-items: center;
  gap: 9px;
  max-width: min(58vw, 280px);
  padding: 10px 13px;
  border-radius: 18px;
  border: 1px solid rgba(255,255,255,.18);
  background: linear-gradient(135deg, rgba(12,14,19,.82), rgba(18,20,28,.54));
  color: rgba(248,244,238,.98);
  font-size: .73rem;
  font-weight: 650;
  letter-spacing: .01em;
  line-height: 1.28;
  text-align: right;
  text-shadow: 0 1px 10px rgba(0,0,0,.36);
  box-shadow: 0 18px 42px rgba(0,0,0,.24), inset 0 1px 0 rgba(255,255,255,.08);
  backdrop-filter: blur(14px) saturate(1.1);
  -webkit-backdrop-filter: blur(14px) saturate(1.1);
  animation: ttp-fade-in .22s ease both;
  overflow: hidden;
}

.ttp-edit-hint::before {
  content: '';
  width: 8px;
  height: 8px;
  border-radius: 999px;
  flex: 0 0 8px;
  background: radial-gradient(circle at 35% 35%, rgba(255,255,255,.92), var(--ttp-accent) 58%, rgba(212,165,116,.58) 100%);
  box-shadow: 0 0 0 6px rgba(212,165,116,.10), 0 0 18px rgba(212,165,116,.18);
}

.ttp-edit-hint::after {
  content: '';
  position: absolute;
  inset: 1px;
  border-radius: 17px;
  pointer-events: none;
  border: 1px solid rgba(255,255,255,.05);
  background: linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,0) 42%);
  mask-image: linear-gradient(180deg, rgba(0,0,0,.95), rgba(0,0,0,.28));
  -webkit-mask-image: linear-gradient(180deg, rgba(0,0,0,.95), rgba(0,0,0,.28));
}

.ttp-edit-exit {
  position: absolute;
  top: 14px;
  right: 14px;
  min-height: 38px;
  padding: 0 14px;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.18);
  background: linear-gradient(135deg, rgba(14,16,22,.92), rgba(20,22,30,.72));
  color: var(--text);
  font-size: .78rem;
  font-weight: 650;
  letter-spacing: .01em;
  box-shadow: 0 16px 34px rgba(0,0,0,.26), inset 0 1px 0 rgba(255,255,255,.08);
  backdrop-filter: blur(14px) saturate(1.08);
  -webkit-backdrop-filter: blur(14px) saturate(1.08);
  pointer-events: auto;
  cursor: pointer;
  transition: transform .2s ease, border-color .2s ease, background .2s ease, box-shadow .2s ease, opacity .2s ease;
  animation: ttp-fade-in .22s ease both;
}

.ttp-edit-exit:hover {
  transform: translateY(-1px);
  border-color: rgba(255,255,255,.26);
  background: linear-gradient(135deg, rgba(18,20,26,.96), rgba(24,26,34,.82));
  box-shadow: 0 18px 38px rgba(0,0,0,.3), inset 0 1px 0 rgba(255,255,255,.1);
}

.ttp-edit-exit:active {
  transform: scale(.98);
}

.ttp-mobile-app.is-previewing .ttp-topbar .ttp-icon-btn,
.ttp-mobile-app.is-previewing .ttp-topbar .ttp-chip-btn,
.ttp-mobile-app.is-previewing .ttp-topbar .ttp-booking-chip,
.ttp-mobile-app.is-previewing .ttp-side-tools .ttp-tool,
.ttp-mobile-app.is-previewing .ttp-selection-tools .ttp-object-tool,
.ttp-mobile-app.is-previewing .ttp-selection-slider,
.ttp-mobile-app.is-previewing .ttp-selection {
  box-shadow: 0 12px 32px rgba(0,0,0,.26), 0 0 0 1px rgba(255,255,255,.03), 0 0 28px var(--glow);
}

.ttp-mobile-app.is-editing .ttp-topbar {
  display: none !important;
}

@keyframes ttp-fade-up {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes ttp-fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

@media (min-width: 768px) {
  .ttp-view { min-height: 86svh; }
  .ttp-selection-slider {
    width: min(420px, 42vw);
  }
}

@media (max-width: 640px) {
  .ttp-view { --ttp-view-radius: 22px; min-height: 74svh; height: min(86svh, 760px); border-radius: var(--ttp-view-radius); }
  .ttp-topbar { gap: 8px; padding-right: 80px; }
  .ttp-icon-btn,
  .ttp-tool { width: 46px; height: 46px; }
  .ttp-chip-btn,
  .ttp-booking-chip,
  .ttp-preset { min-height: 40px; font-size: .85rem; padding: 0 12px; }
  .ttp-booking-chip { max-width: 40vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ttp-side-tools { right: 10px; gap: 8px; }
  .ttp-edit-hint { top: 68px; right: 10px; max-width: min(66vw, 236px); padding: 9px 11px; font-size: .69rem; }
  .ttp-edit-exit { top: 10px; right: 10px; min-height: 34px; padding: 0 12px; font-size: .73rem; }
  .ttp-edit-helper { top: 10px; left: 10px; max-width: min(62vw, 250px); min-height: 34px; padding: 0 12px; font-size: .68rem; }
  .ttp-selection-slider {
    width: min(94vw, 340px);
    padding: 12px 13px;
  }
  .ttp-object-tool { width: 36px; height: 36px; }
  .ttp-object-tool svg { width: 16px; height: 16px; }
  .ttp-handle { width: 28px; height: 28px; }
  .ttp-handle svg { width: 14px; height: 14px; }
}


.ttp-debug-panel {
  position: absolute;
  left: 14px;
  right: 14px;
  top: 14px;
  z-index: 4;
  padding: 10px 12px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(10,12,16,.78);
  backdrop-filter: blur(12px);
  color: rgba(255,255,255,.9);
  font-size: 11px;
  line-height: 1.3;
  pointer-events: none;
  box-shadow: 0 10px 24px rgba(0,0,0,.24);
}
.ttp-debug-row { display:flex; justify-content:space-between; gap:12px; padding:2px 0; }
.ttp-debug-key { color: rgba(255,255,255,.62); text-transform:none; }
.ttp-debug-value { color: rgba(255,255,255,.95); text-align:right; font-variant-numeric: tabular-nums; }
@media (max-width: 560px) {
  .ttp-debug-panel { font-size: 10px; padding: 8px 10px; }
}

.ttp-mesh-debug-tuning {
  position: absolute;
  left: 14px;
  right: 14px;
  top: 200px;
  max-height: min(50vh, 420px);
  overflow-x: hidden;
  overflow-y: auto;
  z-index: 5;
  padding: 10px 12px;
  border-radius: 14px;
  border: 1px solid rgba(255, 220, 100, 0.2);
  background: rgba(12, 14, 20, 0.9);
  backdrop-filter: blur(10px);
  color: rgba(255, 255, 255, 0.92);
  font-size: 11px;
  line-height: 1.35;
  pointer-events: auto;
  box-shadow: 0 10px 28px rgba(0, 0, 0, 0.28);
  -webkit-overflow-scrolling: touch;
}
.ttp-mesh-tune-head { font-weight: 600; margin-bottom: 4px; color: rgba(255, 230, 150, 0.95); }
.ttp-mesh-tune-hint { font-size: 10px; color: rgba(255, 255, 255, 0.55); margin: 0 0 10px; line-height: 1.35; }
.ttp-mesh-tune-grid { display: flex; flex-direction: column; gap: 8px; }
.ttp-mesh-tune-row { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(64px, 1fr) 44px; align-items: center; gap: 8px; font-size: 10px; }
.ttp-mesh-tune-row input[type="range"] { width: 100%; min-width: 0; }
.ttp-mesh-tune-label { color: rgba(255, 255, 255, 0.72); }
.ttp-mesh-tune-val { font-variant-numeric: tabular-nums; color: rgba(255, 220, 100, 0.95); text-align: right; }
.ttp-mesh-tune-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.ttp-mesh-tune-export {
  width: 100%;
  margin-top: 10px;
  padding: 8px 10px;
  border-radius: 10px;
  border: 1px solid rgba(255, 255, 255, 0.1);
  background: rgba(0, 0, 0, 0.35);
  color: rgba(255, 255, 255, 0.88);
  font-size: 10px;
  line-height: 1.35;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  resize: vertical;
  min-height: 120px;
  box-sizing: border-box;
}
.ttp-mesh-tune-row input[type="checkbox"] {
  width: auto;
  justify-self: start;
}
.ttp-mesh-tune-row-check {
  grid-template-columns: 1fr;
  gap: 6px;
}
@media (max-width: 560px) {
  .ttp-mesh-debug-tuning { top: 180px; font-size: 10px; padding: 8px 10px; max-height: min(46vh, 380px); }
  .ttp-mesh-tune-row { grid-template-columns: 1fr; gap: 4px; }
  .ttp-mesh-tune-val { text-align: left; }
}

.ttp-debug-chip {
  position: absolute;
  left: 14px;
  right: 14px;
  bottom: 14px;
  z-index: 4;
  padding: 10px 12px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(10,12,16,.78);
  backdrop-filter: blur(12px);
  color: rgba(255,255,255,.86);
  font-size: 12px;
  line-height: 1.35;
  pointer-events: none;
  box-shadow: 0 10px 24px rgba(0,0,0,.24);
}
\n.ttp-empty-state{appearance:none;-webkit-appearance:none;color:var(--text);font:inherit;}

.ttp-mobile-app.is-editing .ttp-live-tattoo { transition: none; }
.ttp-mobile-app.is-previewing .ttp-live-tattoo { transition: transform .16s ease, left .16s ease, top .16s ease, width .16s ease, height .16s ease, opacity .18s ease; }

.ttp-warp-defs { position:absolute; width:0; height:0; overflow:hidden; pointer-events:none; }
.ttp-live-stage { perspective: 1400px; }
.ttp-live-tattoo { translate: 0 0; }


/* Safari/iOS compositing seam fix */
.ttp-view,
.ttp-view::before,
.ttp-view::after,
.ttp-canvas,
.ttp-webgl-layer,
.ttp-live-stage,
.ttp-live-tattoo {
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}

.ttp-view canvas,
.ttp-view img {
  display: block;
}


.ttp-debug-toggle { gap: 8px; padding-inline: 12px 14px; }
.ttp-debug-toggle svg { width: 18px; height: 18px; }
.ttp-debug-toggle.is-active { border-color: rgba(212,165,116,.52); box-shadow: 0 12px 32px rgba(0,0,0,.24), 0 0 0 1px rgba(212,165,116,.12); }
.ttp-debug-toggle:not(.is-active) { opacity: .78; }

.ttp-projection-mesh-toggle { padding-inline: 12px 14px; min-width: 52px; justify-content: center; }
.ttp-projection-mesh-toggle.is-active { border-color: rgba(72, 220, 190, 0.5); box-shadow: 0 12px 32px rgba(0, 0, 0, 0.22), 0 0 0 1px rgba(72, 220, 190, 0.14); }
.ttp-projection-mesh-toggle:not(.is-active) { opacity: 0.82; }

.ttp-debug-visuals {
  position:absolute;
  left:14px;
  right:14px;
  top:128px;
  z-index:7;
  pointer-events:auto;
}
.ttp-debug-modebar {
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  justify-content:flex-start;
}
.ttp-debug-mode-btn {
  appearance:none; border:1px solid rgba(255,255,255,.12); background:rgba(5,10,20,.72); color:#fff;
  border-radius:999px; padding:8px 12px; font:600 12px/1 var(--ttp-font, inherit); backdrop-filter: blur(12px);
}
.ttp-debug-mode-btn.is-active { border-color: rgba(212,165,116,.55); box-shadow: 0 0 0 1px rgba(212,165,116,.16); }
@media (max-width:640px){ .ttp-debug-visuals { top:118px; } .ttp-debug-mode-btn { padding:7px 10px; font-size:11px; } }


.ttp-debug-workbench {
  display:grid;
  gap:12px;
  margin-top:16px;
  padding:14px;
  border-radius:22px;
  border:1px solid rgba(255,255,255,.12);
  background:rgba(10,12,16,.92);
  box-shadow:0 18px 48px rgba(0,0,0,.28);
}
.ttp-debug-workbench-head {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
}
.ttp-debug-workbench-title { font-weight:800; font-size:1rem; letter-spacing:.01em; }
.ttp-debug-workbench-sub { color:rgba(255,255,255,.65); font-size:.84rem; margin-top:2px; }
.ttp-debug-workbench-actions { display:flex; gap:8px; flex-wrap:wrap; }
.ttp-debug-workbench-body { display:grid; gap:12px; }
.ttp-debug-workbench-mode .ttp-debug-panel,
.ttp-debug-workbench-mode .ttp-debug-chip,
.ttp-debug-workbench-mode .ttp-debug-visuals,
.ttp-debug-workbench-mode .ttp-mesh-debug-tuning {
  position:static;
  left:auto;
  right:auto;
  top:auto;
  bottom:auto;
  width:100%;
  max-width:none;
  pointer-events:auto;
}
.ttp-debug-workbench-mode .ttp-debug-panel,
.ttp-debug-workbench-mode .ttp-debug-chip {
  box-shadow:none;
  background:rgba(18,22,30,.88);
}
.ttp-debug-workbench-mode .ttp-debug-visuals {
  z-index:auto;
}
.ttp-debug-workbench-mode .ttp-debug-modebar {
  gap:10px;
}
.ttp-debug-workbench-mode .ttp-debug-mode-btn {
  min-height:38px;
  font-size:12px;
}
.ttp-debug-workbench.is-collapsed .ttp-debug-workbench-body {
  display:none;
}
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-view {
  min-height:min(72svh, 820px);
  height:min(82svh, 820px);
}
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-topbar {
  padding-right:14px;
  flex-wrap:wrap;
}
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-side-tools {
  right:18px;
}
@media (max-width: 900px) {
  .ttp-debug-workbench { padding:12px; border-radius:18px; }
}
@media (max-width: 640px) {
  .ttp-mobile-app.ttp-debug-workbench-mode .ttp-view {
    min-height:60svh;
    height:min(68svh, 700px);
  }
  .ttp-debug-workbench-head {
    flex-direction:column;
    align-items:stretch;
  }
  .ttp-debug-workbench-actions {
    width:100%;
  }
  .ttp-debug-workbench-actions .ttp-chip-btn {
    width:100%;
    justify-content:center;
  }
}

/* v5.4.2 debug lab fixes */
.ttp-mobile-app.ttp-debug-workbench-mode {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-content: start;
}
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-stage {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 14px;
}
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-view {
  order: 1;
}
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-workbench {
  order: 2;
  margin-top: 0;
}
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-workbench-body {
  grid-template-columns: minmax(0, 1.4fr) minmax(280px, .8fr);
  align-items: start;
}
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-workbench-chip {
  grid-column: 1 / -1;
}
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-panel,
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-visuals,
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-chip {
  margin: 0;
}
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-panel {
  max-height: 52svh;
  overflow: auto;
}
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-visuals {
  background: rgba(18,22,30,.78);
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 18px;
  padding: 12px;
}
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-modebar {
  justify-content: flex-start;
  gap: 8px;
}
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-mode-btn {
  min-width: 104px;
  justify-content: center;
}
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-edit-helper,
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-edit-hint,
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-chip,
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-panel,
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-visuals {
  backdrop-filter: none;
}
@media (max-width: 900px) {
  .ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-workbench-body {
    grid-template-columns: 1fr;
  }
  .ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-panel {
    max-height: none;
  }
}

.ttp-debug-preview {
  margin-top: 12px;
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 18px;
  background: rgba(12,16,24,.92);
  overflow: hidden;
}
.ttp-debug-preview-head {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:10px 12px;
  font-size:12px;
  color:rgba(255,255,255,.9);
}
.ttp-debug-preview-sub { color: rgba(255,255,255,.58); }
.ttp-debug-preview-note { padding: 8px 10px; font-size: 12px; line-height: 1.45; color: rgba(255,255,255,.82); }
.ttp-debug-preview-img { display:block; width:100%; height:auto; background:#0b1018; }
.ttp-debug-preview.is-empty { min-height: 72px; display:flex; align-items:center; }


/* v5.5.1 debug-lab hotfix */
.ttp-debug-workbench{margin-top:14px;scroll-margin-top:24px;}
.ttp-debug-workbench-panel,.ttp-debug-workbench-visuals,.ttp-debug-workbench-chip{position:relative;z-index:1;}
.ttp-debug-workbench .ttp-debug-panel{max-height:none;}
.ttp-app.ttp-debug-workbench-mode .ttp-stage .ttp-debug-chip,
.ttp-app.ttp-debug-workbench-mode .ttp-stage .ttp-debug-panel,
.ttp-app.ttp-debug-workbench-mode .ttp-stage .ttp-debug-visuals{display:none!important;}


/* v5.5.3 debug lab clean */
.ttp-mobile-app{display:flex;flex-direction:column;gap:14px;}
.ttp-mobile-app .ttp-view{order:1;}
.ttp-mobile-app .ttp-debug-workbench{order:2;margin-top:0;position:relative;}
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-view{overflow:hidden;}
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-chip,
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-panel,
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-visuals{display:none!important;}
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-workbench{display:block!important;}
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-workbench .ttp-debug-panel,
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-workbench .ttp-debug-visuals,
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-workbench .ttp-debug-chip{display:block!important;}
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-workbench-head{margin-bottom:10px;}
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-workbench-body{display:grid;gap:12px;}
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-preview-img{display:block;width:100%;height:auto;border-radius:16px;}
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-preview{background:rgba(7,10,18,.72);border:1px solid rgba(255,255,255,.08);border-radius:18px;padding:12px;}
.ttp-mobile-app.ttp-debug-workbench-mode .ttp-debug-preview.is-empty{min-height:140px;display:flex;align-items:flex-start;}


.ttp-empty-studio-logo {
  width: min(420px, 72vw);
  margin: 0 auto 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  filter: drop-shadow(0 10px 24px rgba(0,0,0,.28));
}

.ttp-empty-studio-logo img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
}


.ttp-object-tool-toggle[aria-pressed="true"],
.ttp-object-tool-toggle.is-active{
  box-shadow: inset 0 0 0 1px rgba(212,165,116,.72);
}


.ttp-object-tool[data-control="mirror"] svg{
  transform: scale(1.02);
}
.ttp-object-tool-toggle[aria-pressed="true"],
.ttp-object-tool-toggle.is-active{
  background: rgba(212,165,116,.16);
  color: #fff;
  box-shadow: inset 0 0 0 1px rgba(212,165,116,.78), 0 6px 18px rgba(0,0,0,.18);
}


/* Premium guided tooltips */
.ttp-guidance.hidden{display:none!important}
.ttp-guidance{
  position:absolute;
  inset:0;
  z-index:72;
  pointer-events:auto;
  font-family:inherit;
}
.ttp-guidance-backdrop{
  position:absolute;
  inset:0;
  border:0;
  background:linear-gradient(180deg,rgba(5,7,10,.18),rgba(5,7,10,.34));
  backdrop-filter:blur(1.5px);
  -webkit-backdrop-filter:blur(1.5px);
  cursor:pointer;
}
.ttp-guidance-card{
  position:absolute;
  width:min(390px,calc(100% - 34px));
  border:1px solid rgba(255,255,255,.14);
  border-radius:24px;
  padding:18px 18px 16px;
  color:#fff;
  background:
    radial-gradient(circle at 18% 0%,rgba(214,161,103,.23),transparent 34%),
    linear-gradient(145deg,rgba(24,27,31,.94),rgba(7,9,13,.91));
  box-shadow:0 26px 70px rgba(0,0,0,.58), inset 0 1px 0 rgba(255,255,255,.10);
  transform:translateY(10px) scale(.98);
  opacity:0;
  animation:ttpGuideIn .46s cubic-bezier(.2,.8,.2,1) forwards;
}
.ttp-guidance.is-leaving .ttp-guidance-card{animation:ttpGuideOut .18s ease forwards}
.ttp-guidance.is-start .ttp-guidance-card{left:50%;bottom:32px;transform:translateX(-50%) translateY(10px) scale(.98)}
.ttp-guidance.is-import .ttp-guidance-card{left:16px;top:76px}
.ttp-guidance.is-edit .ttp-guidance-card{left:50%;bottom:86px;transform:translateX(-50%) translateY(10px) scale(.98)}
.ttp-guidance-close{
  position:absolute;
  top:10px;
  right:10px;
  width:32px;
  height:32px;
  border:1px solid rgba(255,255,255,.12);
  border-radius:999px;
  background:rgba(255,255,255,.06);
  color:#fff;
  font-size:22px;
  line-height:1;
  display:grid;
  place-items:center;
}
.ttp-guidance-kicker{
  color:var(--ttp-accent,#d6a167);
  text-transform:uppercase;
  letter-spacing:.18em;
  font-size:11px;
  font-weight:800;
  margin:0 42px 8px 0;
}
.ttp-guidance-title{
  font-size:19px;
  line-height:1.12;
  font-weight:900;
  letter-spacing:-.02em;
  margin:0 38px 8px 0;
}
.ttp-guidance-text{
  font-size:13.5px;
  line-height:1.45;
  color:rgba(255,255,255,.78);
  max-width:32em;
}
.ttp-guidance-ok{
  margin-top:14px;
  width:100%;
  border:1px solid rgba(214,161,103,.42);
  border-radius:999px;
  color:#fff;
  background:linear-gradient(180deg,rgba(214,161,103,.22),rgba(214,161,103,.08));
  box-shadow:0 0 0 1px rgba(214,161,103,.08),0 12px 24px rgba(0,0,0,.26);
  min-height:42px;
  font-weight:900;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.ttp-guidance-visual{
  height:62px;
  margin:14px 0 2px;
  border-radius:18px;
  background:rgba(0,0,0,.20);
  border:1px solid rgba(255,255,255,.08);
  overflow:hidden;
  position:relative;
}
.ttp-guidance-scan{
  position:absolute;
  inset:12px 22px;
  border:1px dashed rgba(255,255,255,.34);
  border-radius:14px;
}
.ttp-guidance-scan span{
  position:absolute;
  width:14px;height:14px;
  border-color:var(--ttp-accent,#d6a167);
  border-style:solid;
}
.ttp-guidance-scan span:nth-child(1){left:-1px;top:-1px;border-width:2px 0 0 2px;border-top-left-radius:10px}
.ttp-guidance-scan span:nth-child(2){right:-1px;top:-1px;border-width:2px 2px 0 0;border-top-right-radius:10px}
.ttp-guidance-scan span:nth-child(3){left:-1px;bottom:-1px;border-width:0 0 2px 2px;border-bottom-left-radius:10px}
.ttp-guidance-scan span:nth-child(4){right:-1px;bottom:-1px;border-width:0 2px 2px 0;border-bottom-right-radius:10px}
.ttp-guidance-scan i{
  position:absolute;
  left:8px;right:8px;top:8px;height:2px;
  background:linear-gradient(90deg,transparent,var(--ttp-accent,#d6a167),transparent);
  box-shadow:0 0 14px var(--ttp-accent,#d6a167);
  animation:ttpScan 1.55s ease-in-out infinite;
}
.ttp-guidance-import{
  position:absolute;
  inset:0;
  display:grid;
  place-items:center;
}
.ttp-guidance-import-dot{
  width:10px;height:10px;border-radius:999px;background:var(--ttp-accent,#d6a167);
  box-shadow:0 0 20px var(--ttp-accent,#d6a167);
  animation:ttpPulse 1.25s ease-in-out infinite;
}
.ttp-guidance-import-line{
  position:absolute;
  width:150px;height:1px;
  background:linear-gradient(90deg,transparent,var(--ttp-accent,#d6a167),transparent);
  animation:ttpLine 1.6s ease-in-out infinite;
}
.ttp-guidance-import-icon{
  position:absolute;
  right:34px;
  width:32px;height:32px;
  display:grid;place-items:center;
  color:#fff;
  opacity:.85;
}
.ttp-guidance-import-icon svg{width:28px;height:28px}
.ttp-guidance-gestures{
  position:absolute;
  inset:0;
}
.ttp-gesture-dot{
  position:absolute;
  width:12px;height:12px;border-radius:999px;background:#fff;
  box-shadow:0 0 14px rgba(255,255,255,.7);
}
.ttp-gesture-dot-a{left:28%;top:54%;animation:ttpDragA 1.7s ease-in-out infinite}
.ttp-gesture-dot-b{left:62%;top:34%;animation:ttpDragB 1.7s ease-in-out infinite}
.ttp-gesture-path{
  position:absolute;
  left:30%;right:28%;top:50%;height:1px;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);
  transform:rotate(-14deg);
}
.ttp-gesture-rotate,.ttp-gesture-scale,.ttp-gesture-mirror{
  position:absolute;
  bottom:15px;
  color:var(--ttp-accent,#d6a167);
  opacity:.95;
}
.ttp-gesture-rotate{left:20%}
.ttp-gesture-scale{left:47%}
.ttp-gesture-mirror{right:20%}
.ttp-gesture-rotate svg,.ttp-gesture-scale svg,.ttp-gesture-mirror svg{width:22px;height:22px}
.ttp-guidance-target{
  position:relative;
  z-index:74;
  animation:ttpTargetGlow 1.45s ease-in-out infinite;
}
.ttp-guidance-target::after{
  content:"";
  position:absolute;
  inset:-6px;
  border-radius:999px;
  border:1px solid rgba(214,161,103,.64);
  box-shadow:0 0 26px rgba(214,161,103,.42);
  pointer-events:none;
}
@keyframes ttpGuideIn{
  to{opacity:1;transform:translateY(0) scale(1)}
}
.ttp-guidance.is-start .ttp-guidance-card,
.ttp-guidance.is-edit .ttp-guidance-card{animation-name:ttpGuideInCentered}
@keyframes ttpGuideInCentered{
  to{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}
}
@keyframes ttpGuideOut{to{opacity:0;transform:translateY(8px) scale(.98)}}
@keyframes ttpScan{0%,100%{top:8px}50%{top:calc(100% - 10px)}}
@keyframes ttpPulse{0%,100%{transform:scale(.86);opacity:.7}50%{transform:scale(1.18);opacity:1}}
@keyframes ttpLine{0%,100%{transform:translateX(-20px);opacity:.45}50%{transform:translateX(20px);opacity:1}}
@keyframes ttpDragA{0%,100%{transform:translate(0,0)}50%{transform:translate(40px,-13px)}}
@keyframes ttpDragB{0%,100%{transform:translate(0,0)}50%{transform:translate(-30px,17px)}}
@keyframes ttpTargetGlow{0%,100%{filter:none}50%{filter:drop-shadow(0 0 14px rgba(214,161,103,.52))}}
@media (max-width:520px){
  .ttp-guidance-card{width:calc(100% - 28px);border-radius:22px;padding:16px 16px 14px}
  .ttp-guidance.is-import .ttp-guidance-card{left:14px;right:14px;top:78px;width:auto}
  .ttp-guidance.is-start .ttp-guidance-card{bottom:24px}
  .ttp-guidance.is-edit .ttp-guidance-card{bottom:74px}
  .ttp-guidance-title{font-size:18px}
  .ttp-guidance-text{font-size:13px}
  .ttp-guidance-visual{height:56px}
}
@media (prefers-reduced-motion:reduce){
  .ttp-guidance-card,.ttp-guidance-scan i,.ttp-guidance-import-dot,.ttp-guidance-import-line,.ttp-gesture-dot,.ttp-guidance-target{animation:none!important}
}


/* Tooltip visibility hardening v5.5.83 */
.ttp-view{position:relative}
.ttp-guidance{z-index:9999!important}
.ttp-guidance-card{z-index:10000!important}
.ttp-guidance-backdrop{z-index:9998!important}
.ttp-guidance:not(.hidden){display:block!important}
.ttp-guidance.is-import .ttp-guidance-card{max-width:min(390px,calc(100% - 28px))}
.ttp-guidance.is-start .ttp-guidance-card,
.ttp-guidance.is-edit .ttp-guidance-card{left:50%!important}

.ttp-mobile-app[data-ttp-version='5.5.92'] .ttp-guidance{contain:layout style;}


/* 5.5.85: Schritt-1-Hinweis exakt mittig auf der Bühne */
.ttp-guidance.is-start .ttp-guidance-card{
  left:50%!important;
  top:50%!important;
  bottom:auto!important;
  transform:translate(-50%,-50%) scale(.98)!important;
}
.ttp-guidance.is-start .ttp-guidance-card{animation-name:ttpGuideInCenterBoth!important}
@keyframes ttpGuideInCenterBoth{to{opacity:1;transform:translate(-50%,-50%) scale(1)}}


/* 5.5.85: hochwertiger WannaDo-Motiv-Scroller im Viewer */
.ttp-presets{
  position:absolute;left:12px;right:12px;top:66px;z-index:52;max-width:calc(100% - 24px);
  padding:12px;border-radius:22px;border:1px solid rgba(255,255,255,.12);
  background:linear-gradient(145deg,rgba(18,20,24,.88),rgba(6,8,12,.84));
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  box-shadow:0 22px 60px rgba(0,0,0,.42), inset 0 1px 0 rgba(255,255,255,.08);
}
.ttp-preset-scroller{display:flex;gap:11px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding:2px 2px 7px}
.ttp-preset-scroller::-webkit-scrollbar{height:5px}.ttp-preset-scroller::-webkit-scrollbar-thumb{background:rgba(214,161,103,.46);border-radius:999px}
.ttp-preset-card{flex:0 0 112px;scroll-snap-align:start;border:1px solid rgba(255,255,255,.12);border-radius:18px;padding:7px;color:#fff;background:rgba(255,255,255,.055);box-shadow:0 12px 28px rgba(0,0,0,.24);text-align:left}
.ttp-preset-card:active{transform:scale(.985)}
.ttp-preset-thumb{display:block;width:100%;aspect-ratio:1/1.18;border-radius:13px;overflow:hidden;background:rgba(255,255,255,.05)}
.ttp-preset-thumb img{width:100%;height:100%;display:block;object-fit:cover}
.ttp-preset-name{display:block;margin:7px 2px 1px;font-size:12px;font-weight:800;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ttp-presets-empty{color:rgba(255,255,255,.74);font-size:13px;padding:8px 10px}
@media (max-width:520px){.ttp-presets{left:10px;right:10px;top:62px;padding:10px;border-radius:20px}.ttp-preset-card{flex-basis:96px}}


/* 5.5.86: WannaDo-Hinweis am Ende des Onboardings */
.ttp-guidance.is-wannado .ttp-guidance-card{
  left:16px;
  top:76px;
}
@media (max-width:520px){
  .ttp-guidance.is-wannado .ttp-guidance-card{
    left:14px;
    right:14px;
    top:78px;
    width:auto;
  }
}


/* 5.5.87: Booking-Hinweis nach WannaDo-Auswahl */
.ttp-guidance.is-booking .ttp-guidance-card{
  left:50%;
  bottom:72px;
  transform:translateX(-50%) translateY(10px) scale(.98);
}
.ttp-guidance.is-booking .ttp-guidance-card{
  animation-name:ttpGuideInCentered;
}
.ttp-guidance.is-booking .ttp-guidance-ok{
  border-color:rgba(214,161,103,.68);
  background:linear-gradient(180deg,rgba(214,161,103,.34),rgba(214,161,103,.13));
}
@media (max-width:520px){
  .ttp-guidance.is-booking .ttp-guidance-card{
    left:14px;
    right:14px;
    bottom:72px;
    width:auto;
    transform:translateY(10px) scale(.98);
  }
}


/* 5.5.88: Booking-Hinweis immer zentral und vollständig sichtbar */
.ttp-guidance.is-booking .ttp-guidance-card{
  left:50%!important;
  right:auto!important;
  top:50%!important;
  bottom:auto!important;
  width:min(390px,calc(100% - 34px))!important;
  transform:translate(-50%,-50%) scale(.98)!important;
  animation-name:ttpGuideInCenterBoth!important;
}
@media (max-width:520px){
  .ttp-guidance.is-booking .ttp-guidance-card{
    left:50%!important;
    right:auto!important;
    top:50%!important;
    bottom:auto!important;
    width:calc(100% - 28px)!important;
    transform:translate(-50%,-50%) scale(.98)!important;
  }
}


/* 5.5.90: Start-Tooltip mit grafischem Körperbild + animierter Scan-Line */
.ttp-guidance.is-start .ttp-guidance-visual{
  margin-top:14px;
}
.ttp-guidance-body-preview{
  position:relative;
  width:100%;
  max-width:352px;
  margin:0 auto;
  border-radius:22px;
  overflow:hidden;
  background:
    radial-gradient(circle at 50% 30%, rgba(255,138,61,.10), transparent 45%),
    linear-gradient(180deg, rgba(255,255,255,.045), rgba(0,0,0,.16));
  border:1px solid rgba(255,255,255,.095);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.06),
    0 16px 34px rgba(0,0,0,.22);
}
.ttp-guidance-body-img{
  position:relative;
  z-index:1;
  display:block;
  width:100%;
  height:auto;
  max-height:230px;
  object-fit:contain;
  background:#080808;
}
.ttp-guidance-body-glow{
  position:absolute;
  inset:14% 12%;
  z-index:0;
  border-radius:999px;
  background:radial-gradient(circle, rgba(255,138,61,.16), transparent 68%);
  filter:blur(18px);
  opacity:.8;
  pointer-events:none;
}
.ttp-guidance-body-scan{
  position:absolute;
  z-index:3;
  left:8%;
  right:8%;
  height:2px;
  border-radius:999px;
  top:8%;
  background:linear-gradient(90deg, transparent, rgba(255,138,61,1), rgba(255,222,180,.96), rgba(255,138,61,1), transparent);
  box-shadow:
    0 0 8px rgba(255,138,61,.95),
    0 0 20px rgba(255,138,61,.46),
    0 0 34px rgba(255,138,61,.22);
  animation:ttpBodyScanMove 3.1s ease-in-out infinite;
  pointer-events:none;
}
.ttp-guidance-body-scan::before{
  content:"";
  position:absolute;
  left:0;
  right:0;
  top:-20px;
  height:42px;
  background:linear-gradient(180deg, transparent, rgba(255,138,61,.12), transparent);
  filter:blur(6px);
}
.ttp-guidance-body-scan::after{
  content:"";
  position:absolute;
  left:50%;
  top:50%;
  width:10px;
  height:10px;
  border-radius:50%;
  transform:translate(-50%,-50%);
  background:#ff8a3d;
  box-shadow:0 0 16px rgba(255,138,61,.95);
}
@keyframes ttpBodyScanMove{
  0%{top:7%;opacity:0;transform:scaleX(.88)}
  9%{opacity:1;transform:scaleX(1)}
  50%{top:50%;opacity:1}
  91%{opacity:1;transform:scaleX(1)}
  100%{top:91%;opacity:0;transform:scaleX(.88)}
}
@media (max-width:520px){
  .ttp-guidance-body-preview{
    max-width:100%;
    border-radius:18px;
  }
  .ttp-guidance-body-img{
    max-height:205px;
  }
}
@media (max-height:720px){
  .ttp-guidance-body-img{
    max-height:180px;
  }
}


/* 5.5.91: Body-Grafik im Start-Tooltip vollständig sichtbar */
.ttp-guidance.is-start .ttp-guidance-card{
  max-height:calc(100dvh - 28px);
  overflow:auto;
  -webkit-overflow-scrolling:touch;
}
.ttp-guidance.is-start .ttp-guidance-visual{
  width:100%;
}
.ttp-guidance-body-preview{
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:visible;
  padding:6px;
}
.ttp-guidance-body-img{
  width:100%;
  height:auto;
  max-height:none;
  object-fit:contain;
  border-radius:16px;
}
.ttp-guidance-body-scan{
  left:6%;
  right:6%;
}
@media (max-height:760px){
  .ttp-guidance.is-start .ttp-guidance-card{
    top:50%;
  }
  .ttp-guidance-body-preview{
    max-width:330px;
  }
  .ttp-guidance-body-img{
    max-height:210px;
    width:auto;
    max-width:100%;
  }
}
@media (max-height:650px){
  .ttp-guidance-body-img{
    max-height:165px;
  }
}


/* 5.5.92: Start-Tooltip Body-Grafik IMMER komplett sichtbar im Visual-Div */
.ttp-guidance.is-start .ttp-guidance-card{
  width:min(410px, calc(100% - 28px))!important;
}
.ttp-guidance.is-start .ttp-guidance-visual{
  height:auto !important;
  min-height:0 !important;
  overflow:visible !important;
  margin-top:12px !important;
  background:transparent !important;
  border:0 !important;
}
.ttp-guidance.is-start .ttp-guidance-body-preview{
  position:relative;
  display:block !important;
  width:100%;
  max-width:360px;
  margin:0 auto;
  padding:10px;
  aspect-ratio: 1 / 0.78;
  min-height:220px;
  overflow:hidden !important;
  border-radius:20px;
  background:
    radial-gradient(circle at 50% 38%, rgba(255,138,61,.10), transparent 46%),
    linear-gradient(180deg, rgba(255,255,255,.045), rgba(0,0,0,.16));
  border:1px solid rgba(255,255,255,.095);
}
.ttp-guidance.is-start .ttp-guidance-body-img{
  display:block;
  width:100% !important;
  height:100% !important;
  max-width:100% !important;
  max-height:none !important;
  object-fit:contain !important;
  object-position:center center !important;
  border-radius:14px;
  background:#080808;
}
.ttp-guidance.is-start .ttp-guidance-body-glow{
  inset:10% 10%;
}
.ttp-guidance.is-start .ttp-guidance-body-scan{
  left:7% !important;
  right:7% !important;
  top:9%;
}
@media (max-width:520px){
  .ttp-guidance.is-start .ttp-guidance-card{
    width:calc(100% - 24px)!important;
    padding:15px 14px 14px !important;
  }
  .ttp-guidance.is-start .ttp-guidance-body-preview{
    max-width:100%;
    min-height:200px;
    aspect-ratio: 1 / 0.80;
    padding:8px;
    border-radius:18px;
  }
}
@media (max-height:760px){
  .ttp-guidance.is-start .ttp-guidance-card{
    max-height:calc(100dvh - 20px) !important;
  }
  .ttp-guidance.is-start .ttp-guidance-body-preview{
    min-height:170px;
    aspect-ratio: 1 / 0.74;
  }
}
@media (max-height:670px){
  .ttp-guidance.is-start .ttp-guidance-body-preview{
    min-height:145px;
    aspect-ratio: 1 / 0.68;
  }
}

/* 5.5.92: Schritt-2 Import-Tooltip mit Rose-Motivvorschau */
.ttp-guidance.is-import .ttp-guidance-visual{
  height:145px;
  margin:15px 0 4px;
  border-radius:22px;
  overflow:hidden;
  border:1px solid rgba(255,255,255,.095);
  background:
    radial-gradient(circle at 22% 50%,rgba(214,161,103,.16),transparent 28%),
    radial-gradient(circle at 78% 50%,rgba(255,255,255,.07),transparent 30%),
    linear-gradient(180deg,rgba(255,255,255,.045),rgba(0,0,0,.16));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 16px 34px rgba(0,0,0,.22);
}
.ttp-guidance-rose-import{position:absolute;inset:0}
.ttp-guidance-rose-source-card,
.ttp-guidance-rose-skin-card{
  position:absolute;
  top:50%;
  transform:translateY(-50%);
  width:96px;
  height:104px;
  border-radius:18px;
  border:1px solid rgba(255,255,255,.12);
  overflow:hidden;
  z-index:2;
  box-shadow:0 18px 34px rgba(0,0,0,.34), inset 0 1px 0 rgba(255,255,255,.08);
}
.ttp-guidance-rose-source-card{
  left:18px;
  background:linear-gradient(180deg,#f4f4f4,#cfcfcf);
  animation:ttpRoseSourcePulse 3.4s ease-in-out infinite;
}
.ttp-guidance-rose-skin-card{
  right:18px;
  background:
    radial-gradient(circle at 38% 18%,rgba(255,255,255,.35),transparent 20%),
    linear-gradient(110deg,#7b5038,#d49a74 48%,#8a5d43);
}
.ttp-guidance-rose-tag{
  position:absolute;
  left:9px;
  top:8px;
  z-index:4;
  padding:3px 7px;
  border-radius:999px;
  font-size:9px;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
  line-height:1;
}
.ttp-guidance-rose-source-card .ttp-guidance-rose-tag{background:rgba(0,0,0,.72);color:#fff}
.ttp-guidance-rose-skin-card .ttp-guidance-rose-tag{background:rgba(255,255,255,.22);color:#fff;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.ttp-guidance-rose-img{position:absolute;display:block;object-fit:contain;pointer-events:none;user-select:none;background:transparent}
.ttp-guidance-rose-source{left:16px;right:16px;top:24px;bottom:12px;width:calc(100% - 32px);height:calc(100% - 36px)}
.ttp-guidance-rose-fly{
  left:46px;
  top:45px;
  width:42px;
  height:56px;
  opacity:0;
  z-index:6;
  filter:drop-shadow(0 0 12px rgba(214,161,103,.75));
  animation:ttpRoseFly 3.4s ease-in-out infinite;
}
.ttp-guidance-rose-placed{
  left:31px;
  top:31px;
  width:44px;
  height:58px;
  opacity:0;
  transform:rotate(-7deg) scale(.78);
  animation:ttpRosePlacedAppear 3.4s ease-in-out infinite;
  z-index:3;
}
.ttp-guidance-rose-flow{
  position:absolute;
  left:122px;
  right:122px;
  top:50%;
  height:2px;
  transform:translateY(-50%);
  border-radius:999px;
  background:linear-gradient(90deg,transparent,rgba(214,161,103,.92),transparent);
  box-shadow:0 0 18px rgba(214,161,103,.42);
  z-index:1;
}
.ttp-guidance-rose-flow::before,
.ttp-guidance-rose-flow::after{
  content:"";
  position:absolute;
  top:50%;
  width:8px;
  height:8px;
  border-radius:999px;
  background:var(--ttp-accent,#d6a167);
  box-shadow:0 0 16px var(--ttp-accent,#d6a167);
  transform:translate(-50%,-50%);
  animation:ttpRoseDotMove 1.7s ease-in-out infinite;
}
.ttp-guidance-rose-flow::after{animation-delay:.42s;opacity:.55}
.ttp-guidance-rose-glow{
  position:absolute;
  right:30px;
  top:29px;
  width:72px;
  height:78px;
  border-radius:50%;
  background:rgba(214,161,103,.18);
  box-shadow:0 0 24px rgba(214,161,103,.5),0 0 40px rgba(214,161,103,.18);
  opacity:0;
  animation:ttpRoseGlowOn 3.4s ease-in-out infinite;
}
@keyframes ttpRoseSourcePulse{0%,100%{transform:translateY(-50%) scale(1)}30%{transform:translateY(-50%) scale(1.025)}}
@keyframes ttpRoseDotMove{0%{left:0%;opacity:0}16%{opacity:1}84%{opacity:1}100%{left:100%;opacity:0}}
@keyframes ttpRoseFly{0%,18%{opacity:0;transform:translate(0,0) rotate(0deg) scale(.74)}26%{opacity:1;transform:translate(0,0) rotate(0deg) scale(.9)}56%{opacity:1;transform:translate(210px,6px) rotate(-7deg) scale(.82)}68%,100%{opacity:0;transform:translate(210px,6px) rotate(-7deg) scale(.7)}}
@keyframes ttpRosePlacedAppear{0%,54%{opacity:0;transform:rotate(-7deg) scale(.78)}63%,88%{opacity:.86;transform:rotate(-7deg) scale(1)}100%{opacity:0;transform:rotate(-7deg) scale(.98)}}
@keyframes ttpRoseGlowOn{0%,52%{opacity:0;transform:scale(.92)}62%,82%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1.06)}}
@media (max-width:520px){
  .ttp-guidance.is-import .ttp-guidance-visual{height:132px}
  .ttp-guidance-rose-source-card,.ttp-guidance-rose-skin-card{width:82px;height:92px}
  .ttp-guidance-rose-source-card{left:12px}
  .ttp-guidance-rose-skin-card{right:12px}
  .ttp-guidance-rose-flow{left:100px;right:100px}
  .ttp-guidance-rose-fly{left:40px;top:44px;width:38px;height:48px}
  @keyframes ttpRoseFly{0%,18%{opacity:0;transform:translate(0,0) rotate(0deg) scale(.74)}26%{opacity:1;transform:translate(0,0) rotate(0deg) scale(.9)}56%{opacity:1;transform:translate(176px,4px) rotate(-7deg) scale(.78)}68%,100%{opacity:0;transform:translate(176px,4px) rotate(-7deg) scale(.66)}}
}
