@font-face{font-family:'Noto Serif SC';src:url('assets/noto-serif-sc.woff2') format('woff2');font-display:swap;font-weight:100 900}
/* Sharing uses the approved poster and leaves the game session in place. */
.share-entry{min-height:44px;margin:0 0 14px;padding:8px 18px;background:transparent;border:1px solid #d7b57b66;border-radius:6px;color:#d7b57b;font-size:17px;letter-spacing:1px}
.share-entry span{margin-left:10px}
body.share-open{overflow:hidden}
.share-dialog{width:min(520px,calc(100% - 28px));max-height:calc(100vh - 28px);max-height:calc(100svh - 28px);margin:auto;padding:20px;background:#0b2434;color:#f4ead9;border:1px solid #d7b57b88;border-radius:12px;overflow-y:auto;overscroll-behavior:contain;box-shadow:0 24px 80px #0008}
.share-dialog::backdrop{background:#030e18d9}
.share-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px}
.share-heading h2{font-size:23px;font-weight:500;margin:0}
.share-heading button{flex-shrink:0;width:44px;height:44px;font-size:30px;line-height:1;background:transparent;border:1px solid #d7b57b55;border-radius:50%;color:#d7b57b}
.share-poster{display:block;width:100%;height:auto;max-height:52vh;max-height:52svh;object-fit:contain}
.share-help{font-size:14px;line-height:1.85;color:#9cb3c2;text-align:center;margin:14px 0}
.share-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.share-actions a{text-decoration:none}
.share-actions .primary,.share-actions .secondary{font-size:17px;padding:12px 8px;min-height:48px}
.share-status{font-size:14px;line-height:1.7;color:#d7b57b;text-align:center;margin:10px 0 0;min-height:24px}
.share-url{width:100%;padding:12px;margin-top:8px;border:1px solid #d7b57b66;border-radius:5px;background:#071722;color:#f4ead9;font:17px 'Segoe UI',sans-serif}
:root{color-scheme:dark;--ink:#071722;--navy:#102d42;--gold:#d7b57b;--paper:#f4ead9;--muted:#9cb3c2;--line:#d7b57b38;font-family:'Segoe UI','Noto Serif SC',serif;color:var(--paper);background:var(--ink);font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 78% 12%,#21445985,transparent 52%),var(--ink);min-width:280px}button,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.6}button:focus-visible,textarea:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:5px}button{touch-action:manipulation}.shell{max-width:1080px;margin:auto;padding:28px 44px 18px}.masthead{display:flex;align-items:center;justify-content:space-between;padding-bottom:24px;border-bottom:1px solid var(--line)}.wordmark{font-size:24px;font-weight:650;letter-spacing:4px}.little-star{color:var(--gold);margin-left:12px}.edition{font:11px/1.6 'Segoe UI',sans-serif;letter-spacing:2px;color:var(--gold);text-align:right}.welcome{display:grid;grid-template-columns:1fr 1fr;column-gap:64px;align-items:center;padding:42px 0}.intro{grid-area:1/1}.eyebrow{font-size:14px;letter-spacing:3px;color:var(--gold);margin:0 0 22px}h1{font-weight:500;font-size:64px;line-height:1.25;letter-spacing:3px;margin:0}h1 span{color:var(--gold)}.lead{font-size:22px;line-height:1.85;color:var(--muted);margin:22px 0}.portal{grid-area:1/2/3/3;position:relative;border:1px solid var(--gold);padding:9px;border-radius:200px 200px 14px 14px;box-shadow:0 25px 90px #0007;overflow:hidden;transform:rotate(3deg)}.portal img{display:block;width:100%;height:auto;max-height:570px;object-fit:cover;border-radius:190px 190px 7px 7px}.portal-label{position:absolute;bottom:24px;left:0;right:0;text-align:center;font:10px 'Segoe UI';letter-spacing:3px;background:#071722bb;padding:10px}.start-panel{grid-area:2/1}.rules{font-size:14px;line-height:1.9;color:var(--muted);margin:0 0 22px}.primary,.secondary{display:flex;align-items:center;justify-content:center;gap:18px;width:100%;padding:16px 22px;border:1px solid var(--gold);border-radius:6px;font-weight:600;font-size:18px;min-height:56px;transition:background .2s,transform .2s}.primary{background:var(--gold);color:var(--ink)}.primary:hover{background:#ead0a4}.primary:active{transform:translateY(2px)}.primary span{margin-left:auto}.secondary{background:transparent;color:var(--gold)}.quiet{display:block;margin:14px auto 0;padding:10px 14px;background:none;border:0;color:var(--muted);font-size:14px;min-height:44px}.quiet:hover{color:var(--paper)}.privacy{font-size:12px;color:var(--muted);text-align:center;line-height:1.8;margin:10px 0 0}footer{text-align:center;color:var(--muted);font-size:12px;line-height:1.9;border-top:1px solid var(--line);padding-top:20px}footer>span{font-size:12px}.credit{font:22px 'Segoe UI',sans-serif;margin:15px 0;color:#9cb3c2aa}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}main:focus{outline:none}
@media(max-width:640px){.shell{padding:20px 22px 16px}.masthead{padding-bottom:16px}.wordmark{font-size:21px}.edition{font-size:10px}.welcome{display:grid;grid-template-columns:1fr 1fr;gap:20px 6px;padding:30px 0}.intro{align-self:center}.eyebrow{font-size:12px;letter-spacing:1px;margin-bottom:18px}h1{font-size:37px;letter-spacing:1px;line-height:1.4}.lead{font-size:15px;line-height:1.85;margin:16px 0 0}.portal{grid-area:1/2;transform:rotate(4deg);padding:5px;border-radius:120px 120px 8px 8px}.portal img{min-height:270px;object-fit:cover;object-position:center;border-radius:115px 115px 5px 5px}.portal-label{font-size:7px;letter-spacing:1px;bottom:14px;padding:8px 0}.start-panel{grid-area:2/1/3/3;padding-top:10px}.rules{text-align:center;font-size:14px;margin-bottom:18px}.primary{font-size:18px}footer{padding-top:14px}.privacy{font-size:12px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media(max-width:640px){.welcome h1{font-size:clamp(25px,7.6vw,32px);letter-spacing:0;line-height:1.5}.welcome .intro{min-width:0}.welcome .lead{font-size:14px}.welcome .portal img{min-height:250px}}
.step{max-width:620px;margin:auto;padding:44px 0 50px;min-height:560px}.step h1{font-size:36px;line-height:1.6;letter-spacing:1px}.step-head{display:flex;justify-content:space-between;align-items:center}.step-head .eyebrow{margin:0}.step-count{font:16px 'Segoe UI';color:var(--gold)}.progress{display:flex;gap:8px;margin:20px 0 36px}.progress i{height:2px;flex:1;background:#9cb3c233}.progress .active{background:var(--gold)}.helper{font-size:16px;color:var(--muted);line-height:1.9;margin:16px 0 28px}.options{display:grid;gap:12px;margin-top:32px}.option{display:flex;align-items:center;text-align:left;gap:16px;padding:18px 20px;min-height:68px;border:1px solid #9cb3c244;border-radius:6px;background:#102d4266;color:var(--paper);font-size:18px;line-height:1.6}.option:hover{border-color:var(--gold);background:#17384c}.option-letter{font:13px 'Segoe UI';color:var(--gold);border:1px solid var(--line);width:29px;height:29px;display:grid;place-items:center;flex-shrink:0}.option-mark{margin-left:auto;color:var(--gold)}.draw-room{text-align:center}.draw-count{display:flex;align-items:center;justify-content:center;gap:14px;margin:28px 0}.draw-count strong{font:52px 'Segoe UI';color:var(--gold)}.draw-count span{font-size:16px}.boxes{display:flex;justify-content:center;gap:14px;margin:22px 0 28px}.sealed-box,.opened-box{flex:1;max-width:190px;min-width:0;aspect-ratio:3/4.6;position:relative;border-radius:8px;border:1px solid var(--gold);overflow:hidden}.sealed-box{display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:16px 8px;background:linear-gradient(155deg,#24455a,#0c2538 50%,#071722);color:var(--gold);box-shadow:inset 0 0 0 5px var(--ink),inset 0 0 0 6px var(--line),0 15px 25px #0003;transition:transform .25s}.sealed-box:hover{transform:translateY(-8px)}.box-no{font:9px 'Segoe UI';letter-spacing:1px}.box-star{font-size:65px;line-height:1;margin:10px 0;text-shadow:0 0 25px #d7b57b77}.box-title{font-size:19px;line-height:1.6;letter-spacing:2px}.box-bottom{font-size:12px;margin-top:14px}.opened-box img{width:100%;height:100%;object-fit:cover}.opened-box>span{position:absolute;bottom:0;left:0;right:0;background:#071722dd;padding:10px;font-size:14px}.odds{font-size:12px;line-height:1.9;color:var(--muted)}.opening .sealed-box{animation:shake .85s ease-in-out}.reveal{max-width:510px}.reveal-title{text-align:center;font-size:25px!important;margin-bottom:22px}.reveal>.eyebrow{text-align:center}.prize{background:#102b3c;border:1px solid var(--line);border-radius:9px;overflow:hidden;animation:arrive .55s ease both}.image-wrap{position:relative;aspect-ratio:3/4;background:#102d42}.image-wrap img{display:block;width:100%;height:100%;object-fit:contain}.image-wrap img[hidden],.image-error[hidden]{display:none}.image-error{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px;text-align:center;color:var(--muted)}.prize-copy{padding:24px}.prize-en{font:11px 'Segoe UI';color:var(--gold);letter-spacing:2px}.prize h2{font-size:27px;font-weight:500;margin:10px 0 15px;display:flex;flex-wrap:wrap;align-items:center;gap:12px}.prize h2 span{font-size:14px;border-left:1px solid var(--gold);padding-left:12px;color:var(--gold)}.prize-copy p{font-size:20px;line-height:1.85;margin:0}.actions{display:grid;gap:14px;margin-top:28px}.actions .quiet{margin-top:0}.lucky{text-align:center;margin-bottom:28px}.lucky-seal{display:inline-block;border:1px solid var(--gold);border-radius:30px;font-size:13px;padding:8px 18px;letter-spacing:2px}.lucky h1{font-size:48px;margin-top:20px;line-height:1.35}.lucky h1 span{color:var(--gold)}.lucky-main{font-size:18px;margin-top:22px;color:var(--gold)}.lucky .helper{font-size:14px;margin-bottom:0}.rare{border:1px solid var(--gold);box-shadow:0 0 55px #d7b57b22}.hidden-reveal{position:relative;background:radial-gradient(ellipse at 50% 20%,#d7b57b20,transparent 50%)}.hidden-reveal::before{content:'✦  ·  ✧  ·  ✦';display:block;text-align:center;color:var(--gold);font-size:22px;letter-spacing:18px;margin:0 0 22px;animation:spark 1.5s ease both}.carousel{display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;padding:5px 3px 18px;scrollbar-color:var(--gold) var(--navy)}.carousel .prize{flex:0 0 85%;scroll-snap-align:center}.carousel .prize:only-child{flex-basis:100%}.wish-symbol{font-size:90px;color:var(--gold);line-height:1.3;margin:15px 0;text-align:center}.wish h1,.wish>.eyebrow,.wish>.helper,.blessing,.goodbye{text-align:center}.wish form{margin-top:28px}.wish label{display:block;font-size:16px;margin-bottom:12px}.wish textarea{display:block;width:100%;resize:vertical;min-height:165px;border:1px solid var(--line);background:#102d4277;color:var(--paper);padding:18px;border-radius:8px;font-size:18px;line-height:1.8}.wish textarea::placeholder{color:#9cb3c299}.field-meta{display:flex;gap:15px;justify-content:space-between;color:var(--muted);font-size:12px;line-height:1.8;margin:12px 0 25px}.field-meta>span:last-child{flex-shrink:0}.blessing-text{font-size:22px;line-height:1.85;margin:28px 0}.goodbye .actions,.blessing .actions{margin-top:40px}.safety .blessing-text{text-align:left;font-size:20px}@keyframes shake{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-5deg)}40%,80%{transform:rotate(5deg);box-shadow:0 0 45px #d7b57b77}}@keyframes arrive{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes spark{from{opacity:0;transform:scale(.65)}to{opacity:1;transform:scale(1)}}
@media(max-width:640px){.step{padding:30px 0 35px;min-height:500px}.step h1{font-size:27px;line-height:1.65}.progress{margin:18px 0 28px}.helper{font-size:15px;margin:14px 0 24px}.option{padding:15px 13px;gap:12px;font-size:16px;min-height:65px}.options{margin-top:25px}.boxes{gap:9px}.sealed-box{padding:12px 6px;aspect-ratio:3/5.5}.box-no{font-size:8px;letter-spacing:0}.box-title{font-size:15px;letter-spacing:0}.box-star{font-size:45px;margin:8px 0}.box-bottom{font-size:11px}.boxes:has(.sealed-box:only-child) .sealed-box{max-width:180px;aspect-ratio:3/4.6}.prize-copy{padding:20px}.prize-copy p{font-size:18px}.prize h2{font-size:24px}.carousel{gap:12px}.carousel .prize{flex-basis:94%}.lucky h1{font-size:40px}.lucky-main{font-size:16px}.lucky .helper{font-size:13px}.wish-symbol{font-size:76px}.blessing-text{font-size:20px}.field-meta{gap:8px}.step .eyebrow{font-size:12px;line-height:1.8}.opened-box>span{font-size:12px;padding:8px 2px}}
#start{position:relative}
.site-version{font:12px/1.8 'Segoe UI',sans-serif;letter-spacing:1px;margin-top:12px;color:var(--muted)}
.field-meta #char-count{margin-left:auto}
.prize-copy p,.blessing-text{white-space:pre-line}
.draw-room>h1{text-align:center;letter-spacing:0}
.credit .roy-signature{display:inline-block;width:96px;height:64px;vertical-align:middle;font-size:0;background:currentColor;-webkit-mask:url('assets/roy-signature.png') center/contain no-repeat;mask:url('assets/roy-signature.png') center/contain no-repeat}
#start>span{position:absolute;right:22px;margin-left:0}
@media(min-width:641px){
  .welcome{row-gap:38px}
  .welcome .portal{grid-area:1/2}
  .welcome .start-panel{grid-area:2/1/3/3;padding-top:0}
  .welcome .rules{text-align:center}
}
/* Keep the portrait composition readable across phone and wider previews. */
.welcome .rules{font-size:clamp(17px,2.2vw,22px);margin-bottom:26px}
.welcome #start{font-size:clamp(22px,2.8vw,28px);min-height:clamp(64px,9vw,94px)}
.welcome #direct{font-size:clamp(17px,2.2vw,22px);margin-top:24px}
.question{max-width:none;width:100%}
.question h1{font-size:clamp(26px,4.2vw,44px);line-height:1.65}
.question .helper{font-size:clamp(17px,2.2vw,22px)}
.question .option{font-size:clamp(18px,2.5vw,26px);min-height:clamp(68px,10vw,104px);padding:20px;gap:20px}
.question .options{gap:18px}
.question .option-letter{font-size:clamp(14px,1.8vw,18px);width:clamp(30px,4.5vw,46px);height:clamp(30px,4.5vw,46px)}
.question .quiet{font-size:clamp(17px,2.2vw,22px);margin-top:24px}
.question .privacy{font-size:clamp(14px,1.8vw,18px);margin-top:20px}
.question .eyebrow{font-size:clamp(14px,1.8vw,18px)}
.question .step-count{font-size:clamp(18px,2.4vw,24px)}
/* Carry the same generous portrait scale through the rest of the journey. */
.draw-room,.collection,.wish,.blessing,.goodbye{max-width:none;width:100%}
.reveal{max-width:840px;width:100%}
.step:not(.question) h1{font-size:clamp(28px,4.2vw,44px)}
.step .reveal-title{font-size:clamp(28px,3.6vw,38px)!important}
.step:not(.question) .eyebrow{font-size:clamp(14px,1.8vw,18px)}
.step:not(.question) .helper{font-size:clamp(17px,2.2vw,22px)}
.step:not(.question) .primary,.step:not(.question) .secondary{font-size:clamp(21px,2.8vw,28px);min-height:clamp(64px,9vw,94px)}
.step:not(.question) .quiet{font-size:clamp(17px,2.2vw,22px);margin-top:20px}
.draw-room .draw-count{gap:22px;margin:clamp(28px,4.5vw,48px) 0}
.draw-room .draw-count strong{font-size:clamp(60px,8.2vw,84px)}
.draw-room .draw-count span{font-size:clamp(18px,2.5vw,26px)}
.draw-room .boxes{gap:clamp(9px,1.6vw,18px);margin:30px 0 36px;align-items:stretch}
.draw-room .sealed-box,.draw-room .opened-box{max-width:320px;aspect-ratio:3/5.5}
.draw-room .sealed-box{padding:clamp(14px,2.2vw,24px) 6px}
.draw-room .box-no{font-size:clamp(9px,1.25vw,13px);letter-spacing:0}
.draw-room .box-star{font-size:clamp(48px,7vw,74px)}
.draw-room .box-title{font-size:clamp(16px,2.5vw,26px);letter-spacing:0;line-height:1.75}
.draw-room .box-bottom{font-size:clamp(12px,1.9vw,20px)}
.draw-room .opened-box>span{font-size:clamp(13px,1.8vw,18px)}
.draw-room .odds{font-size:clamp(14px,1.8vw,18px)}
.reveal .prize-copy,.collection .prize-copy{padding:clamp(22px,3.2vw,34px)}
.reveal .prize-en,.collection .prize-en{font-size:clamp(13px,1.6vw,16px)}
.reveal .prize h2,.collection .prize h2{font-size:clamp(28px,3.5vw,36px)}
.reveal .prize h2 span,.collection .prize h2 span{font-size:clamp(17px,2vw,21px)}
.reveal .prize-copy p,.collection .prize-copy p{font-size:clamp(20px,2.6vw,26px)}
.hidden-reveal .lucky h1{font-size:clamp(42px,6vw,60px)}
.hidden-reveal .lucky-main{font-size:clamp(20px,2.6vw,26px)}
.hidden-reveal .lucky-seal{font-size:clamp(15px,1.8vw,18px)}
.collection .carousel .prize{flex-basis:94%}
.collection .carousel .prize:only-child{flex-basis:100%}
.wish form{margin-top:36px}
.wish label{font-size:clamp(19px,2.4vw,24px)}
.wish textarea{font-size:clamp(20px,2.5vw,25px);min-height:clamp(190px,25vw,260px);padding:22px}
.wish .field-meta{font-size:clamp(14px,1.8vw,18px)}
.blessing .blessing-text{font-size:clamp(22px,2.8vw,28px)}
.blessing .privacy{font-size:clamp(16px,2vw,20px)}
@media(max-width:420px){
  .question .option{padding:16px 13px;gap:12px}
  .question .options{gap:12px}
}
