*{margin:0;padding:0;box-sizing:border-box}body{background:#000;display:flex;justify-content:center;align-items:center;height:100vh;height:100svh;overflow:hidden;font-family:sans-serif;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}#app{width:100%;max-width:480px;height:100%;max-height:860px;position:relative;overflow:hidden;border-radius:12px}.post{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:40px 32px;text-align:center;transition:transform .4s cubic-bezier(.25,.46,.45,.94),opacity .4s ease;will-change:transform,opacity;background-size:400% 400%;animation:bgDrift 8s ease-in-out infinite;overflow:hidden}.post:before,.post:after{content:"";position:absolute;width:140%;height:140%;border-radius:50%;pointer-events:none;mix-blend-mode:soft-light}.post:before{top:-40%;left:-30%;background:radial-gradient(circle,rgba(255,255,255,.7),transparent 60%);filter:blur(60px);animation:blobA 7s ease-in-out infinite alternate}.post:after{bottom:-40%;right:-30%;background:radial-gradient(circle,rgba(255,180,100,.6),transparent 60%);filter:blur(60px);animation:blobB 9s ease-in-out infinite alternate}@keyframes bgDrift{0%{background-position:0% 0%}25%{background-position:100% 50%}50%{background-position:50% 100%}75%{background-position:0% 50%}to{background-position:0% 0%}}@keyframes blobA{0%{transform:translate(0) scale(.8)}50%{transform:translate(50%,60%) scale(1.3)}to{transform:translate(-30%,40%) scale(1)}}@keyframes blobB{0%{transform:translate(0) scale(1.2)}50%{transform:translate(-50%,-60%) scale(.8)}to{transform:translate(30%,-30%) scale(1.1)}}.post.bg-radial,.post.bg-mesh,.post.bg-horizon,.post.has-material,.post.has-typo{background-size:auto;animation:none}.post.has-material:before,.post.has-material:after,.post.has-typo:before,.post.has-typo:after{display:none}.post.exit-up{transform:translateY(-100%);opacity:0}.post.exit-down,.post.enter-up{transform:translateY(100%);opacity:0}.post.enter-down{transform:translateY(-100%);opacity:0}.post.exit-left{transform:translate(-100%);opacity:0}.post.exit-right,.post.enter-left{transform:translate(100%);opacity:0}.post.enter-right{transform:translate(-100%);opacity:0}.verse-text{max-width:400px;line-height:1.5}.verse-ref{margin-top:24px;font-size:14px;opacity:.7;letter-spacing:2px;text-transform:uppercase}.page-dots{position:absolute;bottom:24px;left:50%;transform:translate(-50%);display:flex;gap:8px;z-index:5}.page-dot{width:6px;height:6px;border-radius:50%;background:#ffffff4d;transition:all .3s ease}.page-dot.active{background:#ffffffe6;transform:scale(1.3)}.post-bg-img{position:absolute;inset:-20px;background-size:cover;background-position:center;animation:bgImgDrift 20s ease-in-out infinite alternate;z-index:0}.post-bg-img+.post-bg-overlay{position:absolute;inset:0;background:#00000073;z-index:1}.post.has-bg-img>.verse-text,.post.has-bg-img>.verse-ref,.post.has-bg-img>div:not(.post-bg-img):not(.post-bg-overlay):not(.page-dots){position:relative;z-index:2}.post.has-bg-img>.page-dots{z-index:2}.post.has-duotone>.post-bg-img{filter:grayscale(100%) contrast(1.15)}.post-grain{position:absolute;inset:0;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 0.6 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");mix-blend-mode:soft-light;opacity:.35;pointer-events:none;z-index:1}.post>.verse-text,.post>.verse-ref{position:relative;z-index:2}.post.hl-glass>.verse-text{padding:18px 22px;background:#00000052;backdrop-filter:blur(10px) saturate(1.1);-webkit-backdrop-filter:blur(10px) saturate(1.1);border-radius:14px;box-shadow:0 8px 32px #00000040,inset 0 1px #ffffff14}.post.hl-glass>.verse-ref{margin-top:18px;padding:6px 14px;background:#0000004d;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:999px;display:inline-block;align-self:center}.post.hl-slab>.verse-text{padding:20px 24px;background:#0000008c;border-left:3px solid rgba(255,255,255,.85);border-radius:2px;box-shadow:0 12px 40px #0000004d}.post.hl-slab>.verse-ref{margin-top:16px;padding:4px 10px;background:#ffffffe6;color:#111!important;border-radius:2px;display:inline-block;align-self:center;font-weight:500}@keyframes bgImgDrift{0%{transform:translate(0) scale(1.08)}50%{transform:translate(-20px,-16px) scale(1.22)}to{transform:translate(10px,20px) scale(1.08)}}.post.mat-parchment{background:#efe7d3}.post.mat-stone{background:#c9c6bf}.post.mat-linen{background:#ede7d8}.post-tex{position:absolute;inset:0;pointer-events:none;z-index:1;mix-blend-mode:multiply}.post.mat-parchment>.post-tex{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch' seed='3'/><feColorMatrix values='0 0 0 0 0.30  0 0 0 0 0.20  0 0 0 0 0.08  0.7 0.7 0.7 0 -0.35'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");opacity:.55}.post.mat-stone>.post-tex{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='1.6' numOctaves='3' stitchTiles='stitch' seed='7'/><feColorMatrix values='0 0 0 0 0.15  0 0 0 0 0.15  0 0 0 0 0.17  0.8 0.8 0.8 0 -0.4'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");opacity:.6}.post.mat-linen>.post-tex{background-image:repeating-linear-gradient(0deg,rgba(90,65,30,.1) 0 1px,transparent 1px 3px),repeating-linear-gradient(90deg,rgba(90,65,30,.1) 0 1px,transparent 1px 3px),url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='1.2' numOctaves='2' stitchTiles='stitch' seed='4'/><feColorMatrix values='0 0 0 0 0.25  0 0 0 0 0.18  0 0 0 0 0.08  0.6 0.6 0.6 0 -0.35'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");opacity:1}.post-glyph{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;overflow:hidden;z-index:1}.post-glyph .glyph{font-family:Playfair Display,Georgia,serif;font-weight:700;line-height:.85;opacity:.085;letter-spacing:-.05em;user-select:none;white-space:nowrap}.post.typo-ghostInitial .glyph{font-size:clamp(280px,80vh,560px)}.post.typo-watermark .glyph{font-size:clamp(60px,14vw,120px);letter-spacing:.08em;opacity:.1}.post-vignette{position:absolute;inset:0;pointer-events:none;z-index:1;background:radial-gradient(ellipse at center,transparent 45%,rgba(0,0,0,.45) 100%)}.post.has-material>.verse-text,.post.has-material>.verse-ref,.post.has-material>div:not(.post-tex):not(.post-grain):not(.post-vignette):not(.page-dots),.post.has-typo>.verse-text,.post.has-typo>.verse-ref,.post.has-typo>div:not(.post-glyph):not(.post-grain):not(.post-vignette):not(.page-dots){position:relative;z-index:2}.hearts{position:absolute;bottom:20px;right:20px;font-size:24px;cursor:pointer}.hearts:active{transform:scale(1.3)}.hint{position:fixed;bottom:calc(12px + env(safe-area-inset-bottom,0px));left:50%;transform:translate(-50%);color:#555;font-size:12px;letter-spacing:1px;pointer-events:none}.music-toggle{position:fixed;top:calc(14px + env(safe-area-inset-top,0px));right:16px;width:32px;height:32px;border-radius:50%;background:#00000047;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.12);color:#ffffffb8;font-size:14px;line-height:1;cursor:pointer;z-index:20;display:flex;align-items:center;justify-content:center;transition:opacity .3s ease,transform .2s ease,color .3s ease;opacity:.55}.music-toggle:hover{opacity:1}.music-toggle:active{transform:scale(.92)}.music-toggle[aria-pressed=true]{color:#fff6}.double-tap-heart{position:absolute;font-size:80px;pointer-events:none;animation:heartPop .8s ease forwards;z-index:10}@keyframes heartPop{0%{transform:scale(0);opacity:1}50%{transform:scale(1.2);opacity:1}to{transform:scale(1);opacity:0}}
