@font-face{font-family:Display;src:url('/assets/display.ttf') format('truetype');font-display:swap;font-weight:900}@font-face{font-family:Body;src:url('/assets/body.ttf') format('truetype');font-display:swap;font-weight:400}
:root{--paper:#FEF7EE;--pink:#FC38A7;--ink:#560216;--black:#000;--muted:#3A3937;--line:2px solid var(--ink);--shadow:4px 5px 0 var(--ink)}*{box-sizing:border-box}html{background:var(--paper);color:var(--ink);font:16px/1.45 Body,Arial,sans-serif}body{margin:0}button,input,select{font:inherit;color:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:wait;opacity:.6}a{color:inherit;text-underline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #000;outline-offset:4px}button:focus:not(:focus-visible){outline:0}h1,h2,h3,p{margin:0}h1,h2,h3,.display,.logo{font-family:Display,Impact,sans-serif;font-weight:900;text-transform:uppercase;line-height:.94}h1{font-size:clamp(44px,12.5vw,62px);letter-spacing:-1.1px;text-wrap:balance}h2{font-size:32px}h3{font-size:25px}p{max-width:60ch}small{font-size:14px;line-height:1.4}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}#app{min-height:100svh}.shell{max-width:480px;margin:auto;min-height:100svh;position:relative;background:var(--paper)}.chrome{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:calc(12px + env(safe-area-inset-top)) 20px 8px;min-height:72px}.logo{font-size:24px;text-decoration:none;white-space:nowrap}.chrome-actions{display:flex;align-items:center;gap:5px}.pill{min-height:48px;border:var(--line);border-radius:99px;background:var(--paper);padding:8px 11px;font-weight:bold;white-space:nowrap}.pill.pink{background:var(--pink);color:var(--black)}.lang{border:1.5px solid var(--ink);border-radius:99px;background:var(--paper);min-height:40px;padding:6px 11px;font-weight:bold;font-size:14px;white-space:nowrap;display:inline-flex;align-items:center;gap:5px}.lang span{font-size:15px;line-height:1}.screen{padding:16px 22px 24px;display:flex;flex-direction:column;gap:22px;min-height:calc(100svh - 138px);animation:enter .38s cubic-bezier(.16,1,.3,1) both}.screen>*{min-width:0}.screen>header{display:grid;gap:10px}.eyebrow{font-size:13px;letter-spacing:1.8px;font-weight:bold;text-transform:uppercase}.muted{color:var(--muted)}.actions{display:grid;gap:12px;margin-top:auto;padding-top:10px}.btn{display:flex;align-items:center;justify-content:space-between;gap:16px;text-align:left;border:var(--line);border-radius:12px;min-height:58px;padding:14px 18px;text-decoration:none;font-weight:bold;background:var(--pink);color:var(--black);box-shadow:0 5px 0 var(--ink);transition:transform .15s,box-shadow .15s}.btn::after{content:'↗';font-size:24px;line-height:1}.btn:active{transform:translateY(4px);box-shadow:0 1px 0 var(--ink)}.btn.secondary{background:var(--paper);box-shadow:none;color:var(--ink)}.btn.plain{border:0;box-shadow:none;justify-content:center;background:transparent;text-align:center;text-decoration:underline;color:var(--ink)}.btn.plain::after{display:none}.footer{position:sticky;bottom:0;z-index:5;background:var(--paper);display:flex;justify-content:center;padding-bottom:env(safe-area-inset-bottom);border-top:1px solid #56021620}.footer button{min-height:48px;border:0;background:none;font-size:14px;text-decoration:underline}.card{padding:20px;border:var(--line);border-radius:16px;background:var(--paper);display:grid;gap:12px}.card.pink{background:var(--pink);color:var(--black)}.card.dark{background:var(--ink);color:var(--paper)}.card.dark .eyebrow{color:var(--paper)}.sticker{box-shadow:var(--shadow);transform:rotate(-1.5deg)}.burst{display:flex;align-items:center;justify-content:center;text-align:center;width:114px;height:114px;flex-shrink:0;background:var(--pink);color:var(--black);clip-path:polygon(50% 0%,57% 8%,66% 3%,70% 13%,80% 10%,81% 21%,92% 21%,90% 32%,100% 37%,94% 46%,100% 55%,91% 61%,94% 72%,83% 74%,81% 85%,71% 84%,66% 95%,57% 91%,50% 100%,43% 92%,34% 97%,30% 87%,20% 90%,19% 79%,8% 79%,10% 68%,0% 63%,6% 54%,0% 45%,9% 39%,6% 28%,17% 26%,19% 15%,29% 16%,34% 5%,43% 9%);font-family:Display;font-size:25px;line-height:1;transform:rotate(10deg)}.hero-title{font-size:clamp(110px,32vw,154px);line-height:.77;letter-spacing:-5px;margin:10px 0 18px;position:relative;z-index:1}.hero-title span{display:block}.hero-title .outline{color:var(--ink)}.cover{position:relative;margin-top:-5px}.cover .burst{position:absolute;right:-4px;top:-65px;z-index:2}.photo{height:215px;overflow:hidden;border:var(--line);border-radius:90px 90px 14px 14px;position:relative;isolation:isolate;background:var(--ink)}.photo img{width:100%;height:100%;display:block;object-fit:cover;object-position:center 37%;filter:grayscale(1)}.photo figcaption{position:absolute;bottom:8px;left:12px;padding:3px 8px;background:var(--ink);color:var(--paper);font-size:12px}.photo.small{height:150px;border-radius:14px;margin:0}.ribbon{background:var(--ink);color:var(--paper);padding:12px 10px;font-family:Display;font-size:24px;text-align:center;text-transform:uppercase;transform:rotate(-2deg)}.welcome{gap:18px}.welcome .promise{font-size:16px}.welcome .photo{margin:0}.row{display:flex;justify-content:space-between;align-items:center;gap:12px}.stack{display:grid;gap:12px}.steps{display:grid;gap:18px;counter-reset:steps}.step{display:grid;grid-template-columns:48px 1fr;gap:12px;align-items:start}.step b{font:40px/.9 Display;color:var(--ink);border-bottom:4px solid var(--pink)}.step h2{font-size:29px;margin-bottom:5px}.chips{display:flex;flex-wrap:wrap;gap:7px}.chip{display:inline-flex;border:1px solid var(--ink);border-radius:99px;padding:5px 10px;font-size:13px;font-weight:bold}.fields{display:grid;gap:18px}label.field{display:grid;gap:8px;font-weight:bold}input:not([type=checkbox]){width:100%;border:var(--line);background:#fffdf8;border-radius:10px;min-height:58px;padding:12px 14px}input[type=checkbox]{width:25px;height:25px;flex-shrink:0;accent-color:var(--ink);margin:2px 0}.check{display:flex;align-items:flex-start;gap:12px;cursor:pointer;line-height:1.5}.check span{font-size:16px}.otp-box{position:relative;display:block}.otp-cells{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;border:var(--line);border-radius:14px;background:#fffdf8;overflow:hidden;box-shadow:var(--shadow)}.otp-cells i{display:flex;align-items:center;justify-content:center;height:68px;font:normal 900 clamp(32px,11vw,46px)/1 Display,Impact,sans-serif;color:var(--ink);border-left:2px solid var(--ink);letter-spacing:0;transition:background .12s}.otp-cells i:first-child{border-left:0}.otp-cells i.on{background:#ffe3f3;box-shadow:inset 0 -5px 0 var(--pink)}.otp-box:focus-within .otp-cells{outline:3px solid #000;outline-offset:4px}.otp{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;opacity:0;font-size:16px!important;letter-spacing:0!important;padding:0!important;border:0!important;background:transparent!important;caret-color:transparent;outline:0!important}.error{border-left:4px solid #D6264F;padding:12px;background:#ffe2e8;color:var(--ink);font-weight:bold}.success{border-left:4px solid #1F9D55;padding:12px;background:#e5f5e9;color:var(--ink);font-weight:bold}.notice{background:var(--ink);color:var(--paper);padding:10px 14px;font-size:14px}.timer-wrap{display:flex;align-items:center;gap:18px}.timer{width:120px;height:120px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--ink) calc(var(--remaining,1)*360deg),#56021622 0);position:relative;flex-shrink:0}.timer::before{content:'';position:absolute;inset:8px;border-radius:50%;background:var(--paper)}.timer strong{font:76px/.9 Display;position:relative}.timer.urgent{background:conic-gradient(#D6264F calc(var(--remaining)*360deg),#56021622 0)}.timer.urgent strong{color:#a31434}.question-title{font-size:clamp(31px,9vw,42px);line-height:1.02;letter-spacing:-.4px}.options{display:grid;gap:11px}.option{min-height:64px;display:flex;align-items:center;gap:14px;text-align:left;background:var(--paper);border:var(--line);border-radius:12px;padding:12px;font-weight:bold}.option b{width:32px;height:32px;display:grid;place-items:center;border:1px solid var(--ink);border-radius:50%;flex-shrink:0}.option.selected{background:var(--pink);color:#000}.dots{display:flex;gap:7px}.dots i{width:14px;height:14px;border:2px solid var(--ink);border-radius:50%}.dots i.on{background:var(--ink)}.big-symbol{font:130px/.9 Display;text-align:center}.countdown{font-size:220px;line-height:.9;text-align:center;font-family:Display;animation:pop .4s both}.score{font:150px/.85 Display;letter-spacing:-4px}.score small{font:42px/1 Display;letter-spacing:0}.result-dots{display:flex;gap:9px}.result-dot{display:grid;place-items:center;width:46px;height:46px;border:var(--line);border-radius:50%;font-size:24px;background:var(--pink);color:#000}.ticket{border:var(--line);border-radius:18px;padding:24px 20px;position:relative;background:var(--paper);box-shadow:var(--shadow);display:grid;gap:20px}.ticket::before,.ticket::after{content:'';position:absolute;top:57%;width:20px;height:30px;border:var(--line);background:var(--paper);border-radius:50%;left:-12px}.ticket::after{left:auto;right:-12px}.ticket-code{border-top:2px dashed var(--ink);padding-top:22px;font:bold clamp(25px,8vw,36px)/1.1 monospace;letter-spacing:.05em;overflow-wrap:anywhere}.ticket h2{font-size:39px;line-height:1}.live-stripe{padding:10px;background:repeating-linear-gradient(120deg,var(--pink) 0 16px,#fcb4d7 16px 32px);background-size:74px 100%;color:#000;border-radius:8px;font-weight:bold;animation:stripe 1.3s linear infinite;display:flex;justify-content:space-between;gap:8px;font-size:13px}.inactive{filter:grayscale(1)}.map-art{height:150px;border:var(--line);border-radius:14px;background:linear-gradient(35deg,transparent 40%,var(--paper) 40% 45%,transparent 45%),linear-gradient(-30deg,#f8decb 40%,var(--paper) 40% 46%,#f8decb 46%);display:grid;place-items:center;position:relative;overflow:hidden}.map-art::before{content:'WIESBADEN';position:absolute;bottom:8px;left:10px;font-size:12px;letter-spacing:3px}.map-dot{font:52px/1 Display;background:var(--pink);border:var(--line);padding:10px 18px;border-radius:60% 60% 60% 0;transform:rotate(-8deg)}.stamps{display:grid;grid-template-columns:1fr 1fr;gap:12px}.stamp{min-height:132px;background:none;border:2px dashed #56021688;border-radius:16px;padding:14px;display:flex;flex-direction:column;justify-content:space-between;text-align:left;gap:10px}.stamp.filled{border:2px solid var(--ink);background:var(--pink);color:#000;transform:rotate(-2deg);box-shadow:2px 3px 0 var(--ink)}.stamp:last-child{grid-column:span 2}.stamp strong{font:26px/.95 Display;text-transform:uppercase}.stamp em{font-style:normal;font-size:14px}.table{display:grid;gap:0}.table-row{display:grid;grid-template-columns:32px 1fr 50px 45px;gap:8px;align-items:center;padding:16px 8px;border-bottom:1px solid #56021644}.table-row.me{background:var(--pink);color:#000;border-radius:10px;font-weight:bold}.ticket-stubs{display:flex;gap:6px}.stub{flex:1;min-width:0;border:2px dashed var(--ink);border-radius:7px;padding:12px 0;text-align:center;font-family:Display;font-size:26px}.stub.on{background:var(--pink);color:#000;border-style:solid;transform:rotate(-4deg)}.prize-number{font:156px/.8 Display;letter-spacing:-4px}.raffle-head{position:relative}.raffle-head .burst{position:absolute;right:0;top:5px;width:110px;height:110px;font-size:28px}.reveal-orb{width:230px;height:230px;margin:10px auto;border:3px solid var(--ink);border-radius:50%;background:var(--pink);box-shadow:8px 8px 0 var(--ink);display:grid;place-items:center;font:130px/1 Display;color:#000;animation:float 3s ease-in-out infinite}.reveal-orb.working{animation:wobble .16s infinite alternate}.winner{background:var(--pink);color:#000}.winner .card,.winner .ticket{color:var(--ink)}.claim-code{font:bold 41px/1.2 monospace;letter-spacing:.12em;text-align:center;background:linear-gradient(110deg,var(--ink) 30%,#c82a59 45%,var(--ink) 60%);background-size:240% 100%;background-clip:text;-webkit-text-fill-color:transparent;animation:shine 2s linear infinite}.legal{line-height:1.6}.legal h2{margin:28px 0 12px;font-size:25px}.legal p,.legal li{margin-bottom:12px}.legal ul,.legal ol{padding-left:24px}.hash{font:14px/1.6 monospace;overflow-wrap:anywhere;white-space:pre-wrap}.dialog-backdrop{position:fixed;inset:0;background:#26000baa;z-index:20;display:flex;align-items:flex-end;justify-content:center}.sheet{max-width:480px;width:100%;max-height:92svh;overflow:auto;background:var(--paper);border:var(--line);border-bottom:0;border-radius:24px 24px 0 0;padding:24px 22px calc(24px + env(safe-area-inset-bottom));animation:sheet-in .3s ease-out}.sheet header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:22px}.sheet .close{border:var(--line);background:transparent;border-radius:50%;width:48px;height:48px;flex-shrink:0}.sheet.staff{background:var(--ink);color:var(--paper)}.sheet.staff .close{border-color:var(--paper)}.sheet.staff input{color:var(--ink);font:36px monospace;letter-spacing:12px;text-align:center}.sheet.staff .btn{border-color:var(--paper);box-shadow:none}.sheet.staff .error{color:var(--ink)}.spinner{width:64px;height:64px;border:6px solid #56021633;border-top-color:var(--ink);border-radius:50%;animation:spin .8s linear infinite;margin:20px auto}.confetti{pointer-events:none;position:fixed;inset:0;z-index:40;overflow:hidden}.confetti i{position:absolute;top:-20px;left:var(--x);width:10px;height:18px;background:var(--c);animation:fall var(--dur) var(--delay) ease-in both}.gallery{max-width:1500px;margin:auto;padding:30px}.gallery-head{display:grid;grid-template-columns:1fr auto;gap:24px;border-bottom:3px solid var(--ink);padding-bottom:30px}.gallery-head h1{font-size:80px;max-width:800px}.gallery-controls{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:24px 0;position:sticky;top:0;z-index:6;background:var(--paper);padding:10px 0}.gallery-controls select{min-height:48px;padding:10px;background:var(--paper);border:var(--line);border-radius:8px}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:36px 24px}.preview-card{min-width:0}.preview-card>header{display:flex;gap:10px;align-items:center;justify-content:space-between;margin-bottom:12px}.preview-card h2{font:25px/1 Display}.preview-card iframe{width:100%;height:844px;border:2px solid var(--ink);border-radius:22px;background:var(--paper);box-shadow:5px 7px 0 #56021622}.preview-card select{max-width:140px;min-height:48px;border:var(--line);border-radius:8px;background:var(--paper)}.preview-note{text-align:center;font-size:11px;background:var(--ink);color:var(--paper);padding:3px;letter-spacing:2px}.wireframe{filter:grayscale(1)}.proof-rows{max-height:240px;overflow:auto;font-size:12px}.proof-row{border-bottom:1px solid #56021644;padding:8px;overflow-wrap:anywhere}.small-link{font-size:14px}.gallery-link{padding:14px;text-align:center}.no-motion *{animation:none!important;transition:none!important}
@keyframes enter{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:none}}@keyframes pop{from{transform:scale(.6) rotate(-8deg);opacity:0}to{transform:none;opacity:1}}@keyframes sheet-in{from{transform:translateY(100%)}to{transform:none}}@keyframes stripe{to{background-position:74px 0}}@keyframes float{50%{transform:translateY(-9px) rotate(3deg)}}@keyframes shine{to{background-position:-240% 0}}@keyframes wobble{to{transform:rotate(6deg) scale(.97)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fall{to{transform:translate3d(var(--drift),105vh,0) rotate(720deg)}}
@media(min-width:600px){body:not(.gallery-body){background:#e9d4c5}.shell{box-shadow:0 0 0 1px #56021622,0 25px 90px #56021622}h1{font-size:60px}}@media(max-width:380px){.chrome{padding-left:16px;padding-right:16px}.screen{padding-left:18px;padding-right:18px;gap:18px}.logo{font-size:21px}.pill{padding:8px}.hero-title{font-size:112px}.photo{height:185px}.timer{width:96px;height:96px}.timer strong{font-size:66px}.gallery{padding:18px}.gallery-head{grid-template-columns:1fr}.gallery-head h1{font-size:58px}.gallery-grid{grid-template-columns:1fr}.claim-code{font-size:34px}.prize-number{font-size:135px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.confetti{display:none}}
/* Keep entrance motion inside the phone frame; long legal words/URLs may wrap. */
.shell{overflow-x:clip}h1,h2,h3,.legal{overflow-wrap:anywhere}.gallery-grid>[hidden]{display:none}
.winner .burst{background:var(--paper)}.legal p{font-family:Body,Arial,sans-serif;font-size:16px;text-transform:none;letter-spacing:normal}
.legal-back{position:sticky;top:8px;z-index:4;background:var(--paper);border-radius:12px}
.back-nav{padding:0 22px;display:flex;align-items:center}.back-nav button{border:0;border-bottom:1px solid #56021644;border-radius:0;background:none;min-height:48px;display:flex;gap:9px;align-items:center;padding:8px 0;font-weight:bold}.back-nav span{font-size:24px}.back-nav+.screen{min-height:calc(100svh - 186px)}.back-nav button:disabled{cursor:default;opacity:.5}
.scan-card{display:grid;grid-template-columns:116px 1fr;gap:16px;align-items:center;border:var(--line);border-radius:18px;background:var(--pink);box-shadow:var(--shadow);padding:16px;margin:2px 0 4px}
.scan-card{width:100%;text-align:left;color:var(--ink)}.scan-card:active{transform:translate(2px,3px);box-shadow:1px 1px 0 var(--ink)}.scan-card .scan-frame,.scan-card .scan-copy{display:block}.scan-card .eyebrow{display:block;margin:0 0 4px}.scan-h{display:block;font:900 26px/1 Display,Impact,sans-serif;text-transform:uppercase;margin:0 0 6px}.scan-p{display:block}.scan-cta{display:inline-block;margin-top:10px;background:#fffdf8;border:var(--line);border-radius:999px;padding:6px 14px;font-weight:700;box-shadow:2px 3px 0 var(--ink)}
.scan-frame{position:relative;width:116px;height:116px;border-radius:14px;background:#fffdf8;border:var(--line);padding:16px;color:var(--ink);animation:scan-pulse 2.8s ease-in-out infinite}
.scan-qr{display:block;width:100%;height:100%}
.scan-qr .m{animation:scan-blink 2.4s ease-in-out infinite}
.scan-frame .c{position:absolute;width:20px;height:20px;border:4px solid var(--ink);animation:scan-corner 2.4s ease-in-out infinite}
.scan-frame .tl{left:5px;top:5px;border-right:0;border-bottom:0;border-top-left-radius:9px}.scan-frame .tr{right:5px;top:5px;border-left:0;border-bottom:0;border-top-right-radius:9px}
.scan-frame .bl{left:5px;bottom:5px;border-right:0;border-top:0;border-bottom-left-radius:9px}.scan-frame .br{right:5px;bottom:5px;border-left:0;border-top:0;border-bottom-right-radius:9px}
.scan-frame .beam{position:absolute;left:8px;right:8px;top:12px;height:4px;border-radius:3px;background:var(--pink);box-shadow:0 0 12px 3px rgba(252,56,167,.85);animation:scan-beam 2.4s ease-in-out infinite}
@keyframes scan-beam{0%{transform:translateY(0);opacity:0}12%{opacity:1}50%{transform:translateY(84px);opacity:1}62%{transform:translateY(84px);opacity:0}100%{transform:translateY(0);opacity:0}}
@keyframes scan-pulse{0%,100%{transform:scale(1) rotate(-1deg)}50%{transform:scale(1.04) rotate(1deg)}}
@keyframes scan-corner{0%,100%{border-color:var(--ink)}55%,62%{border-color:var(--pink)}}
@keyframes scan-blink{0%,40%,100%{opacity:1}52%{opacity:.25}64%{opacity:1}}
@media (prefers-reduced-motion:reduce){.scan-frame,.scan-qr .m,.scan-frame .c,.scan-frame .beam{animation:none}.scan-frame .beam{top:50%;opacity:.9}}

.here-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:100%;text-align:left;background:#fffdf8;border:var(--line);border-radius:18px;box-shadow:var(--shadow);padding:16px;margin:2px 0 4px;color:var(--ink)}
.here-card .eyebrow{margin:0}.here-name{font:34px/.95 Display;text-transform:uppercase}.here-sub{font-size:15px}
.here-cta{margin-top:6px;background:var(--pink);color:#000;border:var(--line);border-radius:999px;padding:8px 16px;font-weight:700;box-shadow:2px 3px 0 var(--ink)}
.here-card:active{transform:translate(2px,3px);box-shadow:1px 1px 0 var(--ink)}
.stamp.here{border:2px solid var(--ink);background:#fffdf8;box-shadow:2px 3px 0 var(--pink)}
.stamp.here em{color:var(--pink);font-size:18px;animation:scan-blink 1.6s ease-in-out infinite}
@media (prefers-reduced-motion:reduce){.stamp.here em{animation:none}}

.scanner{position:fixed;inset:0;z-index:200;background:#000;color:#fff}
.scanner-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.scanner-ui{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:max(16px,env(safe-area-inset-top)) 16px max(24px,env(safe-area-inset-bottom));background:radial-gradient(circle at 50% 50%,transparent 0,transparent 34%,rgba(0,0,0,.55) 62%)}
.scanner-ui header{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px}
.scanner-ui header strong{font:900 24px/1 Display,Impact,sans-serif;text-transform:uppercase;background:var(--pink);color:#000;border:var(--line);border-radius:12px;padding:8px 12px;box-shadow:2px 3px 0 var(--ink)}
.scanner-close{width:48px;height:48px;border-radius:50%;border:var(--line);background:var(--paper);color:var(--ink);font-size:20px;font-weight:700}
.scanner-frame{position:relative;width:min(72vw,320px);aspect-ratio:1;border-radius:22px}
.scanner-frame .c{position:absolute;width:44px;height:44px;border:6px solid var(--pink)}
.scanner-frame .tl{left:0;top:0;border-right:0;border-bottom:0;border-top-left-radius:22px}.scanner-frame .tr{right:0;top:0;border-left:0;border-bottom:0;border-top-right-radius:22px}
.scanner-frame .bl{left:0;bottom:0;border-right:0;border-top:0;border-bottom-left-radius:22px}.scanner-frame .br{right:0;bottom:0;border-left:0;border-top:0;border-bottom-right-radius:22px}
.scanner-frame .beam{position:absolute;left:8%;right:8%;top:8%;height:4px;border-radius:2px;background:var(--pink);box-shadow:0 0 14px 3px var(--pink);animation:scanner-beam 2.2s ease-in-out infinite}
@keyframes scanner-beam{0%,100%{top:8%}50%{top:90%}}
.scanner-msg{margin:0;text-align:center;font-weight:700;background:var(--paper);color:var(--ink);border:var(--line);border-radius:14px;padding:10px 14px;max-width:92vw}
@media (prefers-reduced-motion:reduce){.scanner-frame .beam{animation:none;top:50%}}
