/* V&Z Book Club self-contained hero module · v0.7.14 */
.home-page{padding:0 0 86px!important;max-width:520px;margin:0 auto}
.room-home{background:#050806}
.room-stage{position:relative;width:100%;aspect-ratio:1094/1536;overflow:hidden;background:#050806}
.room-background{display:block;width:100%;height:100%;object-fit:cover}
.photo-mask,.current-book-mask{position:absolute;padding:0;border:0;background:transparent;overflow:hidden;cursor:pointer;isolation:isolate}
.photo-mask img,.current-book-mask img{width:106%;height:106%;margin:-3%;object-fit:cover;display:block;opacity:0;filter:sepia(.28) saturate(.72) brightness(.66) contrast(1.12) hue-rotate(-8deg)}
.photo-mask.has-image img,.current-book-mask.has-image img{opacity:1}
.photo-mask::before{content:"";position:absolute;inset:0;background:rgba(73,53,28,.26);mix-blend-mode:multiply;z-index:1;pointer-events:none}
.photo-mask:after{content:"+";position:absolute;inset:0;z-index:2;display:grid;place-items:center;color:#ead9b1;background:rgba(5,8,6,.32);font:700 18px Georgia,serif;opacity:0;transition:opacity .15s}
.photo-mask:hover:after,.photo-mask:focus-visible:after{opacity:1}
.photo-mask-1{left:72.7%;top:10.8%;width:11.0%;height:12.0%;clip-path:polygon(6% 2%,94% 5%,98% 97%,1% 95%);transform:rotate(.7deg) skewY(.25deg)}
.photo-mask-1 img{transform:rotate(-.7deg) scale(1.03)}
.photo-mask-2{left:71.8%;top:24.5%;width:12.5%;height:9.0%;clip-path:polygon(4% 3%,95% 0,99% 94%,1% 99%);transform:rotate(-.4deg) skewY(-.35deg)}
.photo-mask-2 img{transform:rotate(.4deg) scale(1.035)}
.photo-mask-3{left:86.0%;top:22.5%;width:9.8%;height:9.1%;clip-path:polygon(5% 2%,95% 0,99% 95%,1% 99%);transform:rotate(-.5deg) skewY(-.3deg)}
.photo-mask-3 img{transform:rotate(.5deg) scale(1.04)}
.photo-mask-4{left:85.8%;top:34.8%;width:10.0%;height:8.2%;clip-path:polygon(4% 2%,95% 0,99% 95%,1% 99%);transform:rotate(-.5deg) skewY(-.25deg)}
.photo-mask-4 img{transform:rotate(.5deg) scale(1.04)}
.photo-mask-5{left:80.8%;top:47.6%;width:12.6%;height:9.0%;clip-path:polygon(4% 2%,95% 0,99% 95%,1% 99%);transform:rotate(-.7deg) skewY(-.4deg)}
.photo-mask-5 img{transform:rotate(.7deg) scale(1.04)}
.current-book-mask{left:30.5%;top:66.1%;width:13.9%;height:5.8%;clip-path:polygon(12% 12%,89% 0,100% 70%,13% 100%);transform:rotate(-6deg)}
/* v0.7.5 frame calibration */
.frame-calibrator{width:min(96vw,620px);max-height:94vh;padding:0;border:1px solid #745b39;background:#efe6d4;color:#252820}
.frame-calibrator::backdrop{background:rgba(0,0,0,.82)}
.frame-calibrator-shell{padding:12px;overflow:auto;max-height:94vh}
.frame-calibrator-controls{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:8px;margin:10px 0}
.frame-calibrator-controls select{width:100%;border:1px solid currentColor;border-radius:0;background:transparent;color:inherit;padding:8px}
.calibration-stage{position:relative;width:100%;aspect-ratio:2/3;background:#050806;touch-action:none;overflow:hidden}
.calibration-stage>img{display:block;width:100%;height:100%;object-fit:cover;pointer-events:none}
#calibrationOverlay{position:absolute;inset:0;width:100%;height:100%;overflow:visible;touch-action:none}
#calibrationPolygon{fill:rgba(210,170,82,.22);stroke:#f6d585;stroke-width:5;vector-effect:non-scaling-stroke}
.calibration-handle{fill:#f6d585;stroke:#1d271f;stroke-width:6;vector-effect:non-scaling-stroke;cursor:grab}
.calibration-handle:active{cursor:grabbing}
[data-theme="dark"] .frame-calibrator{background:#142019;color:#f1e4c7}


/* v0.7.6 color-mask frame import */
.mask-detection-status{margin:8px 0;padding:8px;border:1px solid currentColor;font-size:.72rem;line-height:1.35}
.photo-mask{will-change:transform;backface-visibility:hidden}
.photo-mask img{width:100%;height:100%;margin:0;transform-origin:center;filter:sepia(.38) saturate(.68) brightness(.72) contrast(1.08) hue-rotate(-9deg)}
.photo-mask::before{box-shadow:inset 0 0 12px rgba(20,10,4,.35)}
.frame-calibrator .dialog-actions{grid-template-columns:1fr 1fr 1fr}
@media(max-width:430px){.frame-calibrator .dialog-actions{grid-template-columns:1fr}.frame-calibrator .dialog-actions button{width:100%}}


/* v0.7.8 exact uploaded hero geometry */
.room-background{object-fit:fill}
.photo-mask::after{display:none}
.current-book-mask{left:31.901%;top:75.846%;width:9.872%;height:4.557%;clip-path:polygon(47.22% 0%,0% 47.14%,52.78% 98.57%,99.07% 50%);transform:none}
.current-book-mask img{width:100%;height:100%;margin:0;object-fit:cover;transform:scale(1.08);filter:sepia(.38) saturate(.68) brightness(.72) contrast(1.08) hue-rotate(-9deg)}


/* v0.7.11 consistent editor-to-frame photo transform */
.photo-mask img{object-fit:contain;transform:translate(var(--photo-x,0%),var(--photo-y,0%)) scale(var(--photo-scale,1));transform-origin:center;touch-action:none}
.photo-editor{width:min(94vw,520px);padding:0;border:1px solid #745b39;background:#efe6d4;color:#252820}
.photo-editor::backdrop{background:rgba(0,0,0,.82)}
.photo-editor-shell{padding:14px}
.photo-editor-preview{position:relative;width:100%;aspect-ratio:4/3;overflow:hidden;background:#d8cdb8;touch-action:none;cursor:grab}
.photo-editor-preview:active{cursor:grabbing}
.photo-editor-preview img{width:100%;height:100%;display:block;object-fit:contain;transform-origin:center;user-select:none;pointer-events:none;filter:sepia(.38) saturate(.68) brightness(.72) contrast(1.08) hue-rotate(-9deg)}
.photo-scale-control{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:12px;margin:14px 0;font-weight:800}
.photo-scale-control input{width:100%}
.photo-editor .dialog-actions{grid-template-columns:1fr 1fr 1fr}
[data-theme="dark"] .photo-editor{background:#142019;color:#f1e4c7}
@media(max-width:430px){.photo-editor .dialog-actions{grid-template-columns:1fr}.photo-editor .dialog-actions button{width:100%}}

/* v0.7.12 full-bleed hero carousel */
.home-page{max-width:none!important;width:100%;margin:0!important}
.room-home{width:100vw;margin-left:calc(50% - 50vw);overflow:hidden}
.hero-carousel{position:relative;width:100%;overflow:hidden;touch-action:pan-y;background:#050806;--hero-brightness:1;--hero-contrast:1}
.hero-track{display:flex;width:100%;transition:transform .32s ease;will-change:transform}
.hero-slide{position:relative;flex:0 0 100%;width:100%;overflow:hidden;background:#050806}
.hero-slide>.hero-image,.hero-slide .room-stage{display:block;width:100%;height:auto}
.hero-slide>.hero-image{aspect-ratio:1024/1536;object-fit:cover}
.hero-image{filter:brightness(var(--hero-brightness)) contrast(var(--hero-contrast))}
.room-stage{aspect-ratio:1094/1536}
.hero-dots{position:absolute;left:50%;bottom:12px;z-index:8;display:flex;gap:8px;transform:translateX(-50%);padding:7px 9px;background:rgba(0,0,0,.16);border-radius:999px;backdrop-filter:blur(2px)}
.hero-dot{width:7px;height:7px;padding:0;border:1px solid rgba(255,255,255,.72);border-radius:50%;background:rgba(255,255,255,.18);cursor:pointer}
.hero-dot.is-active{background:rgba(255,255,255,.88)}
.hero-adjuster{width:min(92vw,430px);padding:0;border:1px solid #745b39;background:#efe6d4;color:#252820}
.hero-adjuster::backdrop{background:rgba(0,0,0,.82)}
.hero-adjuster-shell{padding:14px}
.hero-adjust-control{display:grid;grid-template-columns:1fr auto;gap:8px;margin:16px 0;font-weight:700}
.hero-adjust-control input{grid-column:1/-1;width:100%}
.hero-adjust-control output{font-family:"Courier New",monospace}
[data-theme="dark"] .hero-adjuster{background:#142019;color:#f1e4c7}
@media(min-width:700px){.home-page{max-width:none}.app-header{max-width:none}.hero-slide>.hero-image{aspect-ratio:16/10;object-position:center}.room-stage{max-height:none}}


/* v0.7.14 headerless hero + floating current book */
body{padding-top:0}
#appMain{padding-top:0!important}
.home-page{padding-bottom:86px!important}
.hero-carousel{isolation:isolate}
.featured-book{
  position:absolute;right:clamp(12px,4vw,28px);bottom:clamp(38px,7vw,62px);z-index:12;
  width:clamp(116px,31vw,178px);aspect-ratio:2/3;padding:0;border:0;background:transparent;
  cursor:pointer;perspective:900px;filter:drop-shadow(0 18px 18px rgba(0,0,0,.38));
  touch-action:manipulation;
  transform:translate(var(--book-x,0px),var(--book-y,0px)) scale(var(--book-scale,1));
  transform-origin:bottom right;
}
.book-adjuster-shell{display:grid;gap:14px}
.book-nudge-grid{display:grid;grid-template-columns:repeat(3,48px);grid-template-rows:repeat(2,48px);gap:6px;justify-content:center}
.book-nudge-grid button{font:inherit;cursor:pointer}
.book-scale-row{display:flex;gap:8px;justify-content:center}
.featured-book-3d{position:absolute;inset:0;display:block;transform-style:preserve-3d;transform:rotateY(-15deg) rotateX(3deg) rotateZ(2deg);transition:transform .2s ease}
.featured-book:active .featured-book-3d{transform:rotateY(-10deg) rotateX(2deg) rotateZ(1deg) scale(.98)}
.featured-book-3d img{position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:cover;border-radius:2px 5px 5px 2px;backface-visibility:hidden;box-shadow:inset -5px 0 8px rgba(0,0,0,.13)}
.featured-book-3d::before{content:"";position:absolute;left:-8px;top:2%;width:10px;height:96%;background:linear-gradient(90deg,#7e2522,#c74334 55%,#6f1f22);transform:rotateY(90deg);transform-origin:right center;border-radius:2px 0 0 2px}
.featured-book-pages{position:absolute;z-index:-1;right:-7px;top:2.5%;width:10px;height:95%;background:repeating-linear-gradient(0deg,#eee5d4 0 2px,#d7cbb8 2px 3px);transform:rotateY(90deg);transform-origin:left center;border-radius:0 3px 3px 0;box-shadow:2px 0 4px rgba(0,0,0,.24)}
.featured-book-3d::after{content:"";position:absolute;left:5%;right:2%;bottom:-7px;height:10px;background:repeating-linear-gradient(90deg,#eee5d4 0 2px,#d7cbb8 2px 3px);transform:rotateX(90deg);transform-origin:top center;border-radius:0 0 3px 3px}
@media(max-width:430px){.featured-book{right:10px;bottom:35px;width:clamp(108px,31vw,142px)}}
