* { box-sizing: border-box; }
html, body { margin: 0; width: 100%; height: 100%; font-family: Arial, Helvetica, sans-serif; overscroll-behavior: none; }
body { background-size: cover; background-position: center; background-attachment: fixed; color: #222; overflow: hidden; touch-action: none; }
.stage { width: 100vw; height: 100dvh; min-height: 100vh; display: grid; place-items: center; padding: max(14px, env(safe-area-inset-top)) max(14px, env(safe-area-inset-right)) max(74px, env(safe-area-inset-bottom)) max(14px, env(safe-area-inset-left)); position: relative; overflow: hidden; }
.paper-stack { width: calc(100vw - 36px); height: calc(100dvh - 112px); position: relative; perspective: 1400px; display: grid; place-items: center; overflow: visible; }
.paper { position: absolute; width: calc(var(--paper-w) * 1px); height: calc(var(--paper-h) * 1px); max-width: min(92vw, calc((100dvh - 120px) * (var(--paper-w) / var(--paper-h)))); max-height: min(calc(100dvh - 120px), calc(92vw * (var(--paper-h) / var(--paper-w)))); aspect-ratio: var(--paper-w) / var(--paper-h); z-index: var(--z); background: var(--paper-color); border-radius: 10px; box-shadow: 0 18px 45px rgba(0,0,0,.28), 0 2px 8px rgba(0,0,0,.18); transform: translate(var(--x), var(--y)) rotate(var(--rot)); transition: transform .65s cubic-bezier(.2,.8,.2,1), opacity .45s ease; overflow: hidden; border: 1px solid rgba(0,0,0,.08); transform-origin: center center; }
.paper::before { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(255,255,255,.38), rgba(255,255,255,0) 18%), repeating-linear-gradient(0deg, rgba(0,0,0,.018), rgba(0,0,0,.018) 1px, transparent 1px, transparent 34px); pointer-events: none; }
.paper-inner { height: 100%; padding: clamp(22px, 5vmin, 58px); overflow: hidden; position: relative; z-index: 1; display: flex; flex-wrap: wrap; align-content: center; align-items: flex-start; justify-content: stretch; gap: var(--gap); container-type: size; }
.align-v-start { align-content: flex-start; }
.align-v-center { align-content: center; }
.align-v-end { align-content: flex-end; }
.align-h-start { justify-content: flex-start; }
.align-h-center { justify-content: center; }
.align-h-end { justify-content: flex-end; }
.align-h-stretch { justify-content: stretch; }
.paper:not(.active) .paper-inner { pointer-events: none; }
.content-block { width: min(100%, var(--block-width)); max-width: 100%; animation: paperEffect .7s ease both; animation-delay: .12s; }
.align-h-stretch .content-block { flex-grow: 1; }
.paper:not(.active) .content-block { animation: none; }
.paper.thrown-left { transform: translate(-130vw, -18vh) rotate(-42deg); opacity: 0; pointer-events: none; }
.paper.thrown-right { transform: translate(130vw, 12vh) rotate(42deg); opacity: 0; pointer-events: none; }
.paper.thrown-up { transform: translate(15vw, -140vh) rotate(28deg); opacity: 0; pointer-events: none; }
.paper.thrown-down { transform: translate(-10vw, 140vh) rotate(-28deg); opacity: 0; pointer-events: none; }
.text-block { font-size: clamp(15px, 2.1cqw, 22px); line-height: 1.48; overflow-wrap: anywhere; }
.text-block h1 { font-size: clamp(28px, 5.2cqw, 58px); line-height: 1.05; margin: 0 0 .35em; }
.text-block h2 { font-size: clamp(22px, 3.8cqw, 38px); line-height: 1.15; margin: .2em 0 .35em; }
.text-block p { margin: 0 0 .75em; }
.image-figure { margin: 0; text-align: center; }
.paper-image { width: var(--image-size); max-width: 100%; max-height: 54cqh; object-fit: contain; border-radius: 10px; margin: 0 auto; box-shadow: 0 8px 22px rgba(0,0,0,.18); display: block; }
.paper-image.fit-cover { aspect-ratio: 4 / 3; object-fit: cover; }
figcaption { margin-top: 8px; font-size: clamp(12px, 1.5cqw, 16px); opacity: .78; }
.contact-form { display: grid; gap: 10px; margin: 0; font-size: clamp(13px, 1.7cqw, 16px); }
.contact-form label { display: grid; gap: 5px; font-weight: 700; }
.contact-form input, .contact-form textarea { border: 1px solid rgba(0,0,0,.2); border-radius: 8px; padding: 9px 10px; font: inherit; background: rgba(255,255,255,.72); }
.contact-form textarea { min-height: 90px; resize: none; }
.contact-form button, .pager button { border: 0; border-radius: 999px; padding: 12px 22px; cursor: pointer; font-weight: 700; background: #222; color: #fff; }
.reviews-box { padding: clamp(12px, 2.4cqw, 18px); background: rgba(255,255,255,.55); border-radius: 12px; overflow: hidden; }
.pager { position: fixed; left: 50%; bottom: max(16px, env(safe-area-inset-bottom)); transform: translateX(-50%); display: flex; align-items: center; gap: 14px; background: rgba(255,255,255,.72); backdrop-filter: blur(10px); border-radius: 999px; padding: 10px; box-shadow: 0 8px 25px rgba(0,0,0,.18); z-index: 5000; }
#paperCounter { min-width: 72px; text-align: center; font-weight: 700; }
.notice { position: fixed; top: 18px; left: 50%; transform: translateX(-50%); z-index: 9999; background: #ebfff1; color: #145c25; border: 1px solid #b7e7c1; padding: 12px 18px; border-radius: 10px; box-shadow: 0 8px 22px rgba(0,0,0,.14); }
.notice.error { background: #fff0f0; color: #8b1d1d; border-color: #f0b9b9; }
.effect-none { animation: none; }
.effect-fade { animation-name: fadeIn; }
.effect-zoom { animation-name: zoomIn; }
.effect-slide-up { animation-name: slideUp; }
.effect-slide-down { animation-name: slideDown; }
.effect-slide-left { animation-name: slideLeft; }
.effect-slide-right { animation-name: slideRight; }
.effect-soft-pop { animation-name: softPop; }
.effect-rotate-in { animation-name: rotateIn; }
.effect-blur-in { animation-name: blurIn; }
.effect-flip-in { animation-name: flipIn; }
.effect-float-in { animation-name: floatIn; }
.effect-tilt-in { animation-name: tiltIn; }
.effect-bounce-in { animation-name: bounceIn; }
.effect-wipe-in { animation-name: wipeIn; }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes zoomIn { from { opacity: 0; transform: scale(.88); } to { opacity: 1; transform: scale(1); } }
@keyframes slideUp { from { opacity: 0; transform: translateY(28px); } to { opacity: 1; transform: translateY(0); } }
@keyframes slideDown { from { opacity: 0; transform: translateY(-28px); } to { opacity: 1; transform: translateY(0); } }
@keyframes slideLeft { from { opacity: 0; transform: translateX(-34px); } to { opacity: 1; transform: translateX(0); } }
@keyframes slideRight { from { opacity: 0; transform: translateX(34px); } to { opacity: 1; transform: translateX(0); } }
@keyframes softPop { 0% { opacity: 0; transform: scale(.82); } 70% { transform: scale(1.035); } 100% { opacity: 1; transform: scale(1); } }
@keyframes rotateIn { from { opacity: 0; transform: rotate(-6deg) scale(.92); } to { opacity: 1; transform: rotate(0) scale(1); } }
@keyframes blurIn { from { opacity: 0; filter: blur(12px); } to { opacity: 1; filter: blur(0); } }
@keyframes flipIn { from { opacity: 0; transform: rotateX(65deg); } to { opacity: 1; transform: rotateX(0); } }
@keyframes floatIn { from { opacity: 0; transform: translateY(22px) scale(.96); } to { opacity: 1; transform: translateY(0) scale(1); } }
@keyframes tiltIn { from { opacity: 0; transform: translateY(20px) rotate(-4deg); } to { opacity: 1; transform: translateY(0) rotate(0); } }
@keyframes bounceIn { 0% { opacity: 0; transform: scale(.8); } 60% { opacity: 1; transform: scale(1.06); } 100% { transform: scale(1); } }
@keyframes wipeIn { from { opacity: 0; clip-path: inset(0 100% 0 0); } to { opacity: 1; clip-path: inset(0 0 0 0); } }
@media (max-width: 700px) {
    .stage { padding: 12px 12px 78px; }
    .paper-stack { width: 100vw; height: calc(100dvh - 92px); }
    .paper { max-width: 74vw; max-height: calc(100dvh - 135px); }
    .paper-inner { padding: clamp(16px, 5vw, 28px); gap: min(var(--gap), 14px); }
    .content-block { width: 100% !important; }
    .text-block { font-size: clamp(13px, 3.6vw, 17px); line-height: 1.38; }
    .text-block h1 { font-size: clamp(24px, 7vw, 34px); }
    .text-block h2 { font-size: clamp(19px, 5.5vw, 26px); }
    .paper-image { max-height: 38cqh; }
    .pager { width: calc(100vw - 24px); justify-content: space-between; }
}
@media (max-width: 420px) { .paper { max-width: 70vw; max-height: calc(100dvh - 150px); } }
/* V4: Startanimation, Datenschutz-Gate und erweiterte Typografie */
.content-block { color: var(--text-color); font-size: var(--text-size); background: var(--block-bg); padding: var(--block-pad, 0); border-radius: 12px; }
.content-block[style*="--block-bg:#"], .content-block[style*="--block-bg: #"] { --block-pad: clamp(10px, 2cqw, 18px); }
.text-block { font-size: clamp(12px, var(--text-size), 96px); color: var(--text-color); }
.text-block h1, .text-block h2, .text-block h3, .text-block p, .text-block li { color: inherit; }

.stage.starting .paper { opacity: 0; pointer-events: none; }
.stage.start-effect-spin .paper { animation: startSpin var(--start-duration, 1800ms) cubic-bezier(.18,.89,.2,1.08) both; }
.stage.start-effect-fly .paper { animation: startFly var(--start-duration, 1800ms) cubic-bezier(.18,.89,.2,1.08) both; animation-delay: calc(var(--paper-index, 0) * 95ms); }
.stage.start-effect-spin-fly .paper { animation: startSpinFly var(--start-duration, 1800ms) cubic-bezier(.18,.89,.2,1.08) both; animation-delay: calc(var(--paper-index, 0) * 85ms); }
@keyframes startSpin { from { opacity: 0; transform: translate(var(--x), var(--y)) rotate(calc(var(--rot) - 420deg)) scale(.45); } to { opacity: 1; transform: translate(var(--x), var(--y)) rotate(var(--rot)) scale(1); } }
@keyframes startFly { from { opacity: 0; transform: translate(calc(var(--x) - 120vw), calc(var(--y) - 60vh)) rotate(calc(var(--rot) - 28deg)) scale(.75); } to { opacity: 1; transform: translate(var(--x), var(--y)) rotate(var(--rot)) scale(1); } }
@keyframes startSpinFly { from { opacity: 0; transform: translate(calc(var(--x) + 70vw), calc(var(--y) - 80vh)) rotate(calc(var(--rot) + 720deg)) scale(.35); } to { opacity: 1; transform: translate(var(--x), var(--y)) rotate(var(--rot)) scale(1); } }

.privacy-gate { position: fixed; inset: 0; z-index: 20000; display: grid; place-items: center; padding: max(16px, env(safe-area-inset-top)) 16px max(16px, env(safe-area-inset-bottom)); background: rgba(0,0,0,.48); backdrop-filter: blur(10px); color: var(--privacy-text); }
.privacy-gate.accepted { opacity: 0; pointer-events: none; transition: opacity .35s ease; }
.privacy-box { width: min(920px, 96vw); max-height: 88dvh; overflow: auto; background: var(--privacy-bg); color: var(--privacy-text); border-radius: 18px; padding: clamp(18px, 4vw, 34px); box-shadow: 0 24px 70px rgba(0,0,0,.38); }
.privacy-content { line-height: 1.55; font-size: clamp(14px, 2.1vw, 17px); }
.privacy-content h1, .privacy-content h2 { margin-top: 0; }
.privacy-box button { border: 0; border-radius: 999px; padding: 13px 22px; font-weight: 800; cursor: pointer; background: var(--privacy-button); color: #fff; margin-top: 14px; }
.privacy-effect-fade .privacy-box { animation: fadeIn .45s ease both; }
.privacy-effect-zoom .privacy-box { animation: zoomIn .45s ease both; }
.privacy-effect-slide-up .privacy-box { animation: slideUp .45s ease both; }
.privacy-effect-blur-in .privacy-box { animation: blurIn .45s ease both; }
.privacy-effect-none .privacy-box { animation: none; }
@media (max-width: 700px) { .privacy-box { width: 94vw; max-height: 84dvh; padding: 18px; } }

/* V5: Zufallseffekte und mobiles Datenschutzfenster */
.effect-random { animation-name: fadeIn; }
.privacy-effect-random .privacy-box { animation: fadeIn .45s ease both; }
.privacy-gate { overflow: hidden; overscroll-behavior: contain; }
.privacy-box { display: flex; flex-direction: column; overflow: hidden; max-height: min(88dvh, 920px); }
.privacy-content { overflow: auto; -webkit-overflow-scrolling: touch; padding-right: 8px; min-height: 0; }
.privacy-box button { flex: 0 0 auto; align-self: flex-start; position: sticky; bottom: 0; box-shadow: 0 -8px 18px rgba(0,0,0,.08); }
@media (max-width: 700px) {
    .privacy-gate { align-items: stretch; justify-items: center; padding: max(10px, env(safe-area-inset-top)) 10px max(10px, env(safe-area-inset-bottom)); }
    .privacy-box { width: calc(100vw - 20px); max-height: calc(100dvh - 20px); padding: 16px; border-radius: 16px; }
    .privacy-content { flex: 1 1 auto; max-height: none; font-size: 14px; line-height: 1.45; }
    .privacy-box button { width: 100%; margin-top: 12px; padding: 14px 16px; }
}

/* V6 flexibles Kontaktformular */
.contact-form fieldset { border: 1px solid rgba(0,0,0,.16); border-radius: 10px; padding: 10px; margin: 0; }
.contact-form legend { font-weight: 700; padding: 0 6px; }
.contact-form select { border: 1px solid rgba(0,0,0,.2); border-radius: 8px; padding: 9px 10px; font: inherit; background: rgba(255,255,255,.72); }
.inline-choice { display: flex !important; grid-template-columns: none !important; align-items: flex-start; gap: 8px !important; font-weight: 600 !important; }
.inline-choice input { width: auto !important; margin-top: .25em; }
.hp-field { position: absolute !important; left: -10000px !important; width: 1px !important; height: 1px !important; opacity: 0 !important; pointer-events: none !important; }


/* V7: mehr Start-Effekte und Seitenwechsel-Rausflug-Effekte */
.stage.start-effect-spiral .paper { animation: startSpiral var(--start-duration, 1800ms) cubic-bezier(.18,.89,.2,1.08) both; animation-delay: calc(var(--paper-index, 0) * 75ms); }
.stage.start-effect-zoom-spin .paper { animation: startZoomSpin var(--start-duration, 1800ms) cubic-bezier(.18,.89,.2,1.08) both; }
.stage.start-effect-fan .paper { animation: startFan var(--start-duration, 1800ms) cubic-bezier(.18,.89,.2,1.08) both; animation-delay: calc(var(--paper-index, 0) * 65ms); }
.stage.start-effect-drop .paper { animation: startDrop var(--start-duration, 1800ms) cubic-bezier(.2,1.1,.2,1) both; animation-delay: calc(var(--paper-index, 0) * 55ms); }
.stage.start-effect-flip-stack .paper { animation: startFlipStack var(--start-duration, 1800ms) cubic-bezier(.18,.89,.2,1.08) both; animation-delay: calc(var(--paper-index, 0) * 75ms); }
.stage.start-effect-scatter .paper { animation: startScatter var(--start-duration, 1800ms) cubic-bezier(.18,.89,.2,1.08) both; animation-delay: calc(var(--paper-index, 0) * 60ms); }
.stage.start-effect-elastic .paper { animation: startElastic var(--start-duration, 1800ms) cubic-bezier(.18,1.4,.25,1) both; animation-delay: calc(var(--paper-index, 0) * 70ms); }
.stage.start-effect-tornado .paper { animation: startTornado var(--start-duration, 1800ms) cubic-bezier(.18,.89,.2,1.08) both; animation-delay: calc(var(--paper-index, 0) * 70ms); }
.stage.start-effect-fold .paper { animation: startFold var(--start-duration, 1800ms) ease both; animation-delay: calc(var(--paper-index, 0) * 75ms); transform-origin: top center; }
@keyframes startSpiral { from { opacity: 0; transform: translate(calc(var(--x) + 95vw), calc(var(--y) + 70vh)) rotate(calc(var(--rot) + 1080deg)) scale(.25); } to { opacity: 1; transform: translate(var(--x), var(--y)) rotate(var(--rot)) scale(1); } }
@keyframes startZoomSpin { from { opacity: 0; transform: translate(var(--x), var(--y)) rotate(calc(var(--rot) - 720deg)) scale(0); filter: blur(8px); } to { opacity: 1; transform: translate(var(--x), var(--y)) rotate(var(--rot)) scale(1); filter: blur(0); } }
@keyframes startFan { from { opacity: 0; transform: translate(calc(var(--x) + (var(--paper-index) * 32px - 120px)), calc(var(--y) + 80px)) rotate(calc(var(--rot) + (var(--paper-index) * 18deg - 60deg))) scale(.8); } to { opacity: 1; transform: translate(var(--x), var(--y)) rotate(var(--rot)) scale(1); } }
@keyframes startDrop { 0% { opacity: 0; transform: translate(var(--x), calc(var(--y) - 130vh)) rotate(calc(var(--rot) + 20deg)); } 70% { opacity: 1; transform: translate(var(--x), calc(var(--y) + 18px)) rotate(calc(var(--rot) - 3deg)); } 100% { opacity: 1; transform: translate(var(--x), var(--y)) rotate(var(--rot)); } }
@keyframes startFlipStack { from { opacity: 0; transform: translate(var(--x), var(--y)) rotateY(82deg) rotate(var(--rot)) scale(.86); } to { opacity: 1; transform: translate(var(--x), var(--y)) rotateY(0) rotate(var(--rot)) scale(1); } }
@keyframes startScatter { from { opacity: 0; transform: translate(calc(var(--x) + (var(--paper-index) * 70px - 180px)), calc(var(--y) + (var(--paper-index) * -55px + 170px))) rotate(calc(var(--rot) + (var(--paper-index) * 55deg - 120deg))) scale(.72); } to { opacity: 1; transform: translate(var(--x), var(--y)) rotate(var(--rot)) scale(1); } }
@keyframes startElastic { 0% { opacity: 0; transform: translate(var(--x), var(--y)) rotate(calc(var(--rot) + 360deg)) scale(.15); } 65% { opacity: 1; transform: translate(var(--x), var(--y)) rotate(calc(var(--rot) - 8deg)) scale(1.08); } 100% { opacity: 1; transform: translate(var(--x), var(--y)) rotate(var(--rot)) scale(1); } }
@keyframes startTornado { from { opacity: 0; transform: translate(calc(var(--x) + 10vw), calc(var(--y) - 110vh)) rotate(calc(var(--rot) + 1440deg)) scale(.2); filter: blur(10px); } to { opacity: 1; transform: translate(var(--x), var(--y)) rotate(var(--rot)) scale(1); filter: blur(0); } }
@keyframes startFold { from { opacity: 0; transform: translate(var(--x), var(--y)) rotateX(-88deg) rotate(var(--rot)); } to { opacity: 1; transform: translate(var(--x), var(--y)) rotateX(0) rotate(var(--rot)); } }

.paper.paper-out { pointer-events: none; animation-duration: var(--transition-duration, 900ms); animation-timing-function: cubic-bezier(.22,.78,.18,1); animation-fill-mode: both; }
.paper.paper-out-spin-fly { animation-name: outSpinFly; }
.paper.paper-out-spin { animation-name: outSpin; }
.paper.paper-out-fly { animation-name: outFly; }
.paper.paper-out-spiral { animation-name: outSpiral; }
.paper.paper-out-zoom-spin { animation-name: outZoomSpin; }
.paper.paper-out-fan { animation-name: outFan; }
.paper.paper-out-drop { animation-name: outDrop; }
.paper.paper-out-flip-stack { animation-name: outFlipStack; }
.paper.paper-out-scatter { animation-name: outScatter; }
.paper.paper-out-elastic { animation-name: outElastic; }
.paper.paper-out-tornado { animation-name: outTornado; }
.paper.paper-out-fold { animation-name: outFold; transform-origin: top center; }
@keyframes outSpinFly { to { opacity: 0; transform: translate(calc(var(--x) - 130vw), calc(var(--y) - 35vh)) rotate(calc(var(--rot) - 720deg)) scale(.35); } }
@keyframes outSpin { to { opacity: 0; transform: translate(var(--x), var(--y)) rotate(calc(var(--rot) + 540deg)) scale(.12); } }
@keyframes outFly { to { opacity: 0; transform: translate(calc(var(--x) + 130vw), calc(var(--y) + 18vh)) rotate(calc(var(--rot) + 36deg)); } }
@keyframes outSpiral { to { opacity: 0; transform: translate(calc(var(--x) - 85vw), calc(var(--y) + 80vh)) rotate(calc(var(--rot) - 1080deg)) scale(.18); filter: blur(8px); } }
@keyframes outZoomSpin { to { opacity: 0; transform: translate(var(--x), var(--y)) rotate(calc(var(--rot) + 900deg)) scale(2.4); filter: blur(14px); } }
@keyframes outFan { to { opacity: 0; transform: translate(calc(var(--x) + 32vw), calc(var(--y) + 38vh)) rotate(calc(var(--rot) + 72deg)) scale(.78); } }
@keyframes outDrop { to { opacity: 0; transform: translate(var(--x), calc(var(--y) + 135vh)) rotate(calc(var(--rot) + 22deg)); } }
@keyframes outFlipStack { to { opacity: 0; transform: translate(calc(var(--x) - 40vw), var(--y)) rotateY(88deg) rotate(calc(var(--rot) - 24deg)) scale(.7); } }
@keyframes outScatter { to { opacity: 0; transform: translate(calc(var(--x) - 120vw), calc(var(--y) + 60vh)) rotate(calc(var(--rot) - 160deg)) scale(.65); } }
@keyframes outElastic { 0% { opacity: 1; transform: translate(var(--x), var(--y)) rotate(var(--rot)) scale(1); } 35% { transform: translate(var(--x), var(--y)) rotate(calc(var(--rot) - 5deg)) scale(1.08); } 100% { opacity: 0; transform: translate(calc(var(--x) + 95vw), calc(var(--y) - 70vh)) rotate(calc(var(--rot) + 520deg)) scale(.1); } }
@keyframes outTornado { to { opacity: 0; transform: translate(calc(var(--x) + 20vw), calc(var(--y) - 140vh)) rotate(calc(var(--rot) + 1600deg)) scale(.1); filter: blur(12px); } }
@keyframes outFold { to { opacity: 0; transform: translate(var(--x), var(--y)) rotateX(88deg) rotate(var(--rot)) scale(.92); } }


/* V8: Rueckwaerts-Blaettern bekommt ebenfalls den eingestellten/Zufalls-Effekt */
.paper.paper-in { pointer-events: none; animation-duration: var(--transition-duration, 900ms); animation-timing-function: cubic-bezier(.22,.78,.18,1); animation-fill-mode: both; }
.paper.paper-in-spin-fly { animation-name: startSpinFly; }
.paper.paper-in-spin { animation-name: startSpin; }
.paper.paper-in-fly { animation-name: startFly; }
.paper.paper-in-spiral { animation-name: startSpiral; }
.paper.paper-in-zoom-spin { animation-name: startZoomSpin; }
.paper.paper-in-fan { animation-name: startFan; }
.paper.paper-in-drop { animation-name: startDrop; }
.paper.paper-in-flip-stack { animation-name: startFlipStack; }
.paper.paper-in-scatter { animation-name: startScatter; }
.paper.paper-in-elastic { animation-name: startElastic; }
.paper.paper-in-tornado { animation-name: startTornado; }
.paper.paper-in-fold { animation-name: startFold; transform-origin: top center; }
body.is-preview .stage { min-height: 100dvh; padding: 10px; transform: scale(.96); transform-origin: center; }
body.is-preview .pager { bottom: 8px; }
body.is-preview .paper-stack { height: calc(100dvh - 70px); }

/* V8: Rueckwaerts-Blaettern bekommt ebenfalls den eingestellten/Zufalls-Effekt */
.paper.paper-in { pointer-events: none; animation-duration: var(--transition-duration, 900ms); animation-timing-function: cubic-bezier(.22,.78,.18,1); animation-fill-mode: both; }
.paper.paper-in-spin-fly { animation-name: startSpinFly; }
.paper.paper-in-spin { animation-name: startSpin; }
.paper.paper-in-fly { animation-name: startFly; }
.paper.paper-in-spiral { animation-name: startSpiral; }
.paper.paper-in-zoom-spin { animation-name: startZoomSpin; }
.paper.paper-in-fan { animation-name: startFan; }
.paper.paper-in-drop { animation-name: startDrop; }
.paper.paper-in-flip-stack { animation-name: startFlipStack; }
.paper.paper-in-scatter { animation-name: startScatter; }
.paper.paper-in-elastic { animation-name: startElastic; }
.paper.paper-in-tornado { animation-name: startTornado; }
.paper.paper-in-fold { animation-name: startFold; transform-origin: top center; }
body.is-preview .stage { min-height: 100dvh; padding: 10px; transform: scale(.96); transform-origin: center; }
body.is-preview .pager { bottom: 8px; }
body.is-preview .paper-stack { height: calc(100dvh - 70px); }

/* V10: Bildformen, Schatten, nicht verschiebbare Bilder und formatierbare Bildunterschriften */
.image-figure { user-select: none; -webkit-user-drag: none; }
.paper-image { border-radius: 0; box-shadow: none; pointer-events: none; user-select: none; -webkit-user-drag: none; }
.image-figure.shadow-none .paper-image { box-shadow: none; }
.image-figure.shadow-soft .paper-image { box-shadow: 0 8px 22px rgba(0,0,0,.18); }
.image-figure.shadow-medium .paper-image { box-shadow: 0 14px 34px rgba(0,0,0,.26); }
.image-figure.shadow-strong .paper-image { box-shadow: 0 22px 50px rgba(0,0,0,.38); }
.image-figure.shadow-glow .paper-image { box-shadow: 0 0 0 4px rgba(255,255,255,.55), 0 0 35px rgba(255,255,255,.72), 0 12px 26px rgba(0,0,0,.2); }
.image-figure.shadow-paper .paper-image { box-shadow: 6px 7px 0 rgba(0,0,0,.10), 0 14px 30px rgba(0,0,0,.18); }
.image-figure.shape-original .paper-image { border-radius: 0; clip-path: none; }
.image-figure.shape-rounded .paper-image { border-radius: 18px; clip-path: none; }
.image-figure.shape-circle .paper-image { aspect-ratio: 1 / 1; border-radius: 50%; object-fit: cover; }
.image-figure.shape-pill .paper-image { border-radius: 999px; clip-path: none; }
.image-figure.shape-diamond .paper-image { aspect-ratio: 1 / 1; clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%); object-fit: cover; }
.image-figure.shape-star .paper-image { aspect-ratio: 1 / 1; clip-path: polygon(50% 0%,61% 34%,98% 35%,68% 56%,79% 91%,50% 70%,21% 91%,32% 56%,2% 35%,39% 34%); object-fit: cover; }
.image-figure.shape-hexagon .paper-image { aspect-ratio: 1 / 1; clip-path: polygon(25% 5%,75% 5%,100% 50%,75% 95%,25% 95%,0 50%); object-fit: cover; }
.image-figure.shape-blob .paper-image { border-radius: 38% 62% 48% 52% / 48% 35% 65% 52%; object-fit: cover; }
.image-figure.shape-ticket .paper-image { border-radius: 6px; clip-path: polygon(0 0,100% 0,100% 38%,94% 50%,100% 62%,100% 100%,0 100%,0 62%,6% 50%,0 38%); }
.image-figure.shape-polaroid { display: inline-block; background: #fff; padding: 12px 12px 34px; box-shadow: 0 12px 28px rgba(0,0,0,.22); }
.image-figure.shape-polaroid .paper-image { width: min(var(--image-size), 100%); border-radius: 2px; box-shadow: none; }
.image-figure figcaption { margin-top: 8px; font-size: var(--caption-size); color: var(--caption-color); font-family: var(--caption-font); opacity: .9; }
