.magnifier{position:absolute;z-index:6;width:clamp(145px,12vw,215px);aspect-ratio:1;left:0;top:0;
  opacity:0;pointer-events:none;will-change:transform;transition:opacity .22s}
.magnifier.visible{opacity:1}
.magnifier:after{content:'';position:absolute;z-index:0;left:76%;top:77%;width:58%;height:13%;
  transform:rotate(45deg);transform-origin:8% 50%;border-radius:0 12px 12px 0;
  background:linear-gradient(#e5ba73 0 18%,#6c3d30 22% 68%,#2c181a 78%);
  box-shadow:0 8px 12px #0e090ab3}
.magnifier-glass{position:relative;z-index:1;width:100%;height:100%;border-radius:50%;overflow:hidden;
  border:9px solid #e6c486;background:#f5f0e6;box-shadow:inset 0 0 0 2px #fff4d0,
    inset 0 0 30px #fff3c970,0 8px 0 #4f2c26,0 22px 30px #160d10ba,0 0 0 2px #472624}
.magnifier-glass:after{content:'';position:absolute;inset:4px;border-radius:50%;pointer-events:none;
  background:linear-gradient(130deg,#fff9dc94,transparent 35%,transparent 68%,#fff6d123 95%);
  border:1px solid #fff8df7a}
.magnifier-content{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform;
  background:#f5f0e6}
.magnifier-content .draw-grid{transition:none}
.magnifier.found .magnifier-glass{animation:lens-found .8s ease-in-out infinite alternate}
@keyframes lens-found{to{box-shadow:inset 0 0 0 2px #fff4d0,inset 0 0 35px #fff4c7,
  0 8px 0 #4f2c26,0 22px 30px #160d10ba,0 0 0 9px #fce3a582}}
.draw-reveal{position:absolute;z-index:7;left:50%;top:48%;width:min(660px,63vw);max-height:64vh;
  padding:27px 36px 24px;text-align:center;background:linear-gradient(135deg,#fffdf4,#f7ead2);
  border:3px solid #d4aa69;box-shadow:0 26px 75px #130b0ce0,0 0 0 9px #fff2d235;color:#572c2b;
  opacity:0;transform:translate(-50%,-44%) scale(.75);pointer-events:none;
  transition:opacity .55s,transform .7s cubic-bezier(.15,1.25,.2,1)}
.draw-reveal:before{content:'';position:absolute;inset:9px;border:1px solid #c9a36c88;pointer-events:none}
.draw-reveal small{color:#9d6a56;letter-spacing:.35em;font-weight:700}
.draw-reveal h2{margin:4px 0 0;font:600 clamp(25px,3vw,40px) 'Noto Serif SC',serif;color:#752b32}
.draw-reveal .reveal-number{font:700 clamp(65px,10vw,120px)/1.15 'Noto Serif SC',serif;color:#9d353c;text-shadow:0 4px 0 #ead1b2}
.draw-reveal .reveal-caption{font-size:15px;color:#8d6857;margin-bottom:10px}
.draw-reveal img{display:block;max-width:100%;max-height:180px;margin:auto;object-fit:contain}
.draw-reveal img.blessing{max-height:80px;margin-top:6px}
.draw-stage.revealed .draw-reveal{opacity:1;transform:translate(-50%,-50%) scale(1)}
.draw-stage.revealed .draw-grid:not(.clone){filter:blur(3px);opacity:.25}
.draw-stage.revealed .draw-title{opacity:.3}
.draw-stage.revealed .magnifier{opacity:0}
.draw .draw-sidebar{background:#fbf2e3}
.draw .draw-sidebar h3{color:#7b1825}
/* A continuous ivory surface: handwriting has no backing, frames or labels. */
body.wall,body.draw{background:#f5f0e6;color:#633b3a;background-image:radial-gradient(ellipse at 45% 0,#fffdf5,transparent 75%),linear-gradient(115deg,#e8dfd14d,transparent 38%,#ded3c533)}
body.wall .grain,body.draw .grain{opacity:.075;pointer-events:none}
.wall-scene{position:relative;height:100%;display:flex;flex-direction:column;padding:26px 4vw 16px}
.wall-heading{text-align:center;flex:none;color:#773f45}
.wall-heading p{font:600 clamp(16px,1.5vw,23px) 'Noto Serif SC',serif;letter-spacing:.18em;margin:0 0 8px}
.wall-heading h1{font:500 clamp(26px,2.8vw,44px) 'Noto Serif SC',serif;letter-spacing:.22em;margin:0 0 18px}
.ink-wall{display:grid;grid-template-columns:repeat(var(--columns,4),minmax(0,1fr));grid-template-rows:repeat(var(--rows,3),minmax(0,1fr));gap:1.5vh 1vw;min-height:0}
.wall-scene>.ink-wall{flex:1;width:100%;padding:12px 1vw}
.wall-ink{position:relative;min-width:0;min-height:0;display:flex;flex-direction:column;justify-content:center;align-items:center;background:none;border:0;box-shadow:none;padding:0;transform:translateY(var(--shift)) rotate(var(--tilt)) scale(var(--ink-scale));mix-blend-mode:multiply;transition:opacity .6s;animation:ink-appear .8s ease both}
.wall-ink img{display:block;width:100%;height:100%;min-height:0;object-fit:contain;mix-blend-mode:multiply}
.wall-ink img:first-child:not(:last-child),.wall-ink img+img{height:48%}
@keyframes ink-appear{from{opacity:0}to{opacity:1}}
.wall-count{text-align:center;flex:none;font-size:14px;letter-spacing:.2em;color:#9a7970;padding-top:10px}
.draw .draw-stage{position:relative;display:block;padding:0;background:transparent;border:0;border-radius:0;overflow:hidden;height:100vh}
.draw .draw-stage:before,.draw .draw-stage:after{content:none}
.draw-title{position:absolute;z-index:4;left:15%;right:15%;top:4%;text-align:center;transition:opacity .45s}
.draw-title h1{margin:0 0 8px;color:#773f45;font:500 clamp(28px,3vw,46px) 'Noto Serif SC',serif;letter-spacing:.18em}
.draw-title p{margin:0;color:#a08073;font-size:15px;letter-spacing:.1em}
.draw-grid{position:absolute;z-index:2;inset:18% 5% 15%;transition:filter .6s,opacity .6s}
.wall-ink.chosen{filter:drop-shadow(0 0 10px #c4965bb0)}
.wall-ink.searched{filter:drop-shadow(0 0 5px #c4965b50)}
.draw-launch{position:absolute;z-index:9;left:50%;bottom:4%;transform:translateX(-50%);min-width:220px;border:1px solid #a36d68;color:#fff8ed;background:linear-gradient(130deg,#9e5c61,#743941);border-radius:999px;padding:14px 34px;font-weight:600;letter-spacing:.16em;box-shadow:0 8px 24px #713c4126}
.draw-launch:hover{filter:brightness(1.12)}.draw-launch:disabled{opacity:.7;cursor:wait}
@media(max-height:800px){.wall-scene{padding-top:18px}.wall-heading h1{margin-bottom:8px;font-size:28px}.wall-heading p{font-size:17px}.draw-reveal{padding:14px 25px;width:min(570px,75vw)}.draw-reveal .reveal-number{font-size:70px}.draw-reveal img{max-height:105px}}
@media(max-width:760px){.wall-scene{padding:65px 3vw 14px}.wall-heading h1{font-size:27px}.wall-heading p{font-size:15px}.draw-title{left:7%;right:7%;top:10%}.draw-title h1{font-size:28px}.draw-title p{font-size:12px}.draw-grid{inset:24% 4% 15%}.draw-reveal{width:85vw}.draw-reveal .reveal-number{font-size:60px}}
@media(prefers-reduced-motion:reduce){.wall-ink,.magnifier.found .magnifier-glass{animation:none}.draw-reveal,.magnifier,.draw-grid{transition:none}}
/* Free placement in non-overlapping regions; density scales with the guest count. */
.ink-wall{display:block;position:relative;padding:0!important}
.wall-ink{position:absolute;transform-origin:center;transition:left .8s ease,top .8s ease,width .8s ease,height .8s ease,opacity .6s}
.draw-grid{position:absolute}
.draw-grid .wall-ink{transition:none;animation:none}
@media(prefers-reduced-motion:reduce){.wall-ink{transition:none}}
.wall .wall-ink{animation:none}
.wall .wall-ink.await-ink{opacity:0}
.wall .wall-ink.ink-arrive{animation:ink-settle 1.15s cubic-bezier(.18,.7,.22,1) both}
@keyframes ink-settle{0%{opacity:0;filter:blur(2.5px)}55%{opacity:.72;filter:blur(.5px)}100%{opacity:1;filter:blur(0)}}
@media(prefers-reduced-motion:reduce){.wall .wall-ink.ink-arrive{animation:none}}
.prize-reveal{position:relative;display:flex;align-items:center;justify-content:center;gap:16px;margin:7px auto 2px;color:#8b2330}.prize-reveal:before,.prize-reveal:after{content:'✦';color:#c89a4e;font-size:24px;animation:prizeSpark 1.2s ease-in-out infinite alternate}.prize-reveal:after{animation-delay:.35s}.prize-reveal strong{font:700 clamp(42px,6vw,76px)/1 'Noto Serif SC',serif;background:linear-gradient(95deg,#7b1825,#d39b42 48%,#8e202e);background-size:220% auto;color:transparent;background-clip:text;-webkit-background-clip:text;animation:prizeShine 2.1s linear infinite}.prize-reveal b{font:700 clamp(20px,2.5vw,32px) 'Noto Serif SC',serif;letter-spacing:.12em;color:#8a3938}.draw-stage.revealed .prize-reveal{animation:prizeRise .9s .15s both cubic-bezier(.18,1.35,.25,1)}@keyframes prizeShine{to{background-position:220% center}}@keyframes prizeSpark{to{transform:rotate(90deg) scale(1.35);filter:drop-shadow(0 0 7px #efc878)}}@keyframes prizeRise{from{opacity:0;transform:translateY(18px) scale(.72)}to{opacity:1;transform:none}}@media(max-height:800px){.prize-reveal strong{font-size:45px}.prize-reveal b{font-size:21px}.draw-reveal .reveal-number{font-size:58px}.draw-reveal img{max-height:85px}}
.winner-handwriting{position:relative;min-height:118px;margin:8px auto 0;padding:20px 16px 10px;border:1px solid #d8bd91;border-radius:10px;background:#fffdf8;box-shadow:inset 0 0 22px #b98b4b12;width:min(540px,100%);overflow:hidden}.winner-handwriting>span{position:absolute;left:12px;top:6px;color:#a27c5c;font-size:10px;letter-spacing:.12em}.draw-reveal .winner-handwriting img{max-width:100%;max-height:112px;margin:2px auto 0;filter:contrast(1.08);animation:inkReveal .9s .35s both ease}.draw-reveal .winner-handwriting img.blessing{max-height:72px;margin-top:2px}@keyframes inkReveal{from{opacity:0;transform:scale(.86);filter:blur(4px)}to{opacity:1;transform:none;filter:contrast(1.08)}}@media(max-height:800px){.winner-handwriting{min-height:88px;padding-top:16px}.draw-reveal .winner-handwriting img{max-height:72px}.draw-reveal .winner-handwriting img.blessing{max-height:45px}}
.live-prize{display:inline-block;margin-top:15px;padding:9px 28px;border:1px solid #d6b78a;border-radius:999px;background:#fff9ee;color:#923c43;font:600 clamp(18px,2vw,27px) 'Noto Serif SC',serif}.draw-status{position:absolute;bottom:4%;left:0;right:0;color:#986d5b;font-size:15px;letter-spacing:.16em}.draw .draw-reveal{top:52%;width:min(900px,86vw);max-height:79dvh;padding:24px 30px;border-radius:20px}.draw .draw-reveal h2{font-size:clamp(20px,2.5vw,34px);margin:3px 0 8px}.draw .prize-reveal strong,.draw .prize-reveal b{white-space:nowrap}.draw .prize-reveal{flex-wrap:wrap;gap:12px}.draw .draw-reveal .reveal-number{font-size:clamp(48px,8vh,96px)}.draw .winner-handwriting{width:100%;min-height:140px}.draw .draw-reveal .winner-handwriting img{width:100%;height:clamp(100px,23vh,240px);max-height:240px;object-fit:contain}.draw .draw-reveal .winner-handwriting img.blessing{height:65px}.draw-stage.revealed .draw-title{opacity:0}.draw .draw-reveal .reveal-caption{font-size:13px}@media(max-width:600px){.draw .draw-reveal{width:92vw;padding:18px 16px}.draw .prize-reveal strong{font-size:42px}.draw .prize-reveal b{font-size:22px}.draw .prize-reveal:before,.draw .prize-reveal:after{display:none}.draw .winner-handwriting{min-height:110px}.draw .draw-reveal .winner-handwriting img{height:140px}.draw-title h1{font-size:25px}}@media(max-height:600px){.draw .draw-reveal{padding:12px 22px}.draw .draw-reveal .winner-handwriting img{height:90px}.draw .winner-handwriting{min-height:100px}.draw .prize-reveal strong{font-size:36px}.draw .draw-reveal .reveal-number{font-size:44px}}@media(prefers-reduced-motion:reduce){.prize-reveal,.prize-reveal strong,.prize-reveal:before,.prize-reveal:after,.confetti,.winner-handwriting img{animation:none!important}}
