:root{--gold:#d7b579;--cream:#f7eedc;--muted:#c0b39c;--house:#a84532;font-family:'DM Sans',sans-serif;color:var(--cream);background:#15130f;color-scheme:dark}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:wait}button:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:6px}button{transition:background .2s,transform .2s}button:hover:not(:disabled){filter:brightness(1.12)}[hidden]{display:none!important}#stage{height:100svh;min-height:600px;position:relative;overflow:hidden;isolation:isolate}#hall{position:absolute;inset:0;background:url('assets/great-hall.jpg') center/cover;filter:brightness(.58) saturate(.76);transform:scale(1.015);z-index:-5}#hall:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,rgba(12,13,11,.94),rgba(12,13,11,.6) 40%,rgba(12,13,11,.12) 78%),linear-gradient(0deg,#0c0e0ee8,transparent 35%)}#cameraCanvas{position:absolute;inset:0;width:100%;height:100%;z-index:-4}#magic{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none}#hatLayer{position:absolute;inset:0;z-index:-1;pointer-events:none}#hatLayer canvas{display:block}.vignette{position:absolute;inset:0;z-index:-2;pointer-events:none;box-shadow:inset 0 0 200px 50px #07090566}header{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:30px 4.3vw;z-index:5}.brand{display:flex;gap:15px;align-items:center;color:var(--cream);text-decoration:none;font-family:'Cormorant Garamond',Georgia,serif;letter-spacing:3px;font-size:23px}.brand small{display:block;font-family:'DM Sans',sans-serif;font-size:8px;letter-spacing:2.1px;margin-top:5px;color:var(--muted)}.seal{font-size:28px;display:grid;place-items:center;width:43px;height:49px;border:1px solid #b7955666;border-radius:50% 50% 44% 44%;color:var(--gold);letter-spacing:0;font-style:italic}.header-actions{display:flex;align-items:center;gap:13px}.badge{font-size:9px;letter-spacing:2px;padding:11px 15px;border:1px solid #d1b37c33;border-radius:3px;background:#11130f40}.icon-button{border:1px solid #ffffff20;background:#11130f60;color:var(--cream);width:38px;height:38px;border-radius:50%;font-size:21px}.eyebrow{font-size:10px;letter-spacing:3px;color:var(--gold);font-weight:600}.eyebrow span{display:inline-block;width:27px;height:1px;background:var(--gold);vertical-align:middle;margin-right:12px}#welcome{position:absolute;left:9vw;top:50%;transform:translateY(-47%);width:480px;max-width:43vw}h1{font-family:'Cormorant Garamond',Georgia,serif;font-size:clamp(60px,6.4vw,110px);font-weight:400;line-height:.97;letter-spacing:-2px;margin:26px 0 22px}h1 em{font-weight:400;color:var(--gold)}.intro{font-size:14px;line-height:1.9;color:#ddd3c1}.name-label{display:block;font-size:9px;letter-spacing:1.6px;margin:27px 0 10px;color:var(--gold)}.name-label span{font-size:10px;text-transform:none;letter-spacing:0;color:#9d9585;margin-left:7px}#playerName{display:block;width:310px;max-width:100%;background:transparent;border:none;border-bottom:1px solid #c5ac7b55;padding:9px 0 11px;color:var(--cream);font-family:'Cormorant Garamond',Georgia,serif;font-size:23px;outline:none}#playerName:focus{border-color:var(--gold)}#playerName::placeholder{color:#a69c87}.primary{background:var(--gold);border:1px solid var(--gold);padding:16px 23px;color:#242016;border-radius:3px;font-weight:600;font-size:12px;display:flex;align-items:center;justify-content:space-between;gap:32px;box-shadow:0 0 35px #d7b5790a}.primary span{font-size:19px;font-weight:400}#start{margin-top:25px;min-width:310px}button.text-button{border:0;background:transparent;color:var(--cream);padding:12px 0;font-size:11px}button.text-button span{margin-left:18px}#demo{margin-top:7px}.privacy{font-size:9px;letter-spacing:.3px;color:#b6aa94;margin-top:17px}#loadStatus{font-size:12px;max-width:360px;color:var(--gold);line-height:1.6}#hatNote{position:absolute;left:68%;bottom:20%;text-align:center;transform:translateX(-50%);width:300px}#hatNote span{font-size:8px;letter-spacing:3px;color:var(--gold)}#hatNote p{font-family:'Cormorant Garamond',Georgia,serif;font-style:italic;font-size:23px;color:#e6d6bb;line-height:1.3}#houses{position:absolute;left:9vw;right:9vw;bottom:35px;border-top:1px solid #c8b17e33;padding-top:23px;display:flex;justify-content:space-between;font-size:9px;letter-spacing:2px;color:#bdb39d}#houses span{display:flex;align-items:center;gap:12px}#houses i{width:6px;height:6px;transform:rotate(45deg)}.red{background:#ad5145}.green{background:#638b72}.blue{background:#65869f}.yellow{background:#d4b160}body.playing #hall{filter:brightness(.85) saturate(.85)}body.playing #hall:after{background:linear-gradient(0deg,#090b0edb,transparent 33%,transparent 75%,#080b0da8)}body.playing .vignette{box-shadow:inset 0 0 140px 20px #07090566}#sessionTop{position:absolute;top:112px;left:50%;transform:translateX(-50%);text-align:center;z-index:3}#stepDots{display:flex;justify-content:center;gap:14px;margin-top:17px}#stepDots i{width:6px;height:6px;border:1px solid var(--gold);border-radius:50%}#stepDots i.active{background:var(--gold);box-shadow:0 0 10px var(--gold)}#subtitlePanel{position:absolute;bottom:80px;left:10%;right:10%;text-align:center;z-index:4;pointer-events:none}#subtitlePanel button{pointer-events:auto;margin:18px auto 0}#speaker{color:var(--gold);font-size:9px;letter-spacing:3px}#subtitle{font:400 clamp(25px,3vw,45px)/1.16 'Cormorant Garamond',Georgia,serif;margin:10px auto;max-width:850px;text-shadow:0 2px 15px #000}#instruction{color:#e0d6c4;font-size:12px;margin:12px 0;min-height:15px;text-shadow:0 1px 10px #000}#holdTrack{width:160px;height:3px;background:#ffffff33;margin:18px auto}#holdFill{height:100%;width:0;background:var(--gold);box-shadow:0 0 12px #efbd67}#sessionControls{position:absolute;bottom:25px;left:4.3vw;right:4.3vw;display:flex;align-items:center;justify-content:space-between;gap:15px;z-index:5}.glass-button{background:#17191399;border:1px solid #bfa37440;color:#e1d4bd;padding:10px 16px;border-radius:3px;font-size:10px}#liveStatus{font-size:10px;letter-spacing:1px;color:#d2c7b3}#guide{position:absolute;inset:0;pointer-events:none}.face-guide{position:absolute;left:50%;top:51%;transform:translate(-50%,-50%);width:min(22vw,210px);height:min(32vw,290px);border:1px dashed #e0c18a99;border-radius:45%;box-shadow:0 0 35px #d7b57908}#trackingHint{position:absolute;left:20%;right:20%;top:70%;text-align:center;font-size:12px;color:#ffedce}#result{position:absolute;inset:0;z-index:4;background:radial-gradient(ellipse at center,color-mix(in srgb,var(--house) 50%,transparent),#090d10ee 78%);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;animation:reveal 1.2s ease}#result .eyebrow{margin:0 0 20px}#crest{position:relative;width:105px;height:122px;margin:0 0 16px}#crest svg{width:100%;height:100%;fill:color-mix(in srgb,var(--house) 70%,#101215);stroke:var(--gold);stroke-width:1.3;filter:drop-shadow(0 0 25px #d7b57925)}#crestLetter{position:absolute;inset:0;display:grid;place-items:center;padding-bottom:12px;font:60px 'Cormorant Garamond',Georgia,serif;color:var(--gold)}#resultName{font:italic 23px 'Cormorant Garamond',Georgia,serif;margin:0}#houseName{font:500 clamp(50px,8vw,108px)/1.1 'Cormorant Garamond',Georgia,serif;margin:3px 0 6px}#houseTraits{font-size:10px;letter-spacing:3px;text-transform:uppercase;color:#decdb1;margin-bottom:34px}#toast{position:absolute;top:100px;left:50%;transform:translateX(-50%);background:#24231ce8;border:1px solid #d7b57955;padding:15px 22px;max-width:90%;z-index:9;font-size:12px;text-align:center;line-height:1.6}dialog{border:1px solid #bfa37444;background:#191b16;color:var(--cream);border-radius:12px;width:430px;max-width:94vw;padding:26px;box-shadow:0 20px 100px #0008;max-height:90vh}dialog::backdrop{background:#0709099c;backdrop-filter:blur(6px)}.dialog-head{display:flex;justify-content:space-between;align-items:center}.dialog-head .eyebrow{font-size:8px}.dialog-head h2{font:38px 'Cormorant Garamond',Georgia,serif;margin:5px 0 10px}.settings-note{color:#b6ad9b;font-size:11px;line-height:1.7}dialog>label{display:block;font-size:11px;margin:18px 0}select{display:block;width:100%;padding:10px;background:#24271e;color:#eee3d1;border:1px solid #c0ae7933;border-radius:4px;margin-top:8px;font-size:11px}.setting-row{display:flex;align-items:center;justify-content:space-between;margin:18px 0;font-size:11px}input[type=range]{display:block;width:100%;margin-top:12px;accent-color:var(--gold)}input[type=checkbox]{accent-color:var(--gold);width:16px;height:16px}output{float:right;color:var(--gold)}@keyframes reveal{from{opacity:0;transform:scale(1.025)}to{opacity:1;transform:scale(1)}}@media(min-height:950px){#welcome{transform:translateY(-45%)}.intro{font-size:16px}}@media(max-height:760px) and (min-width:800px){#welcome{top:49%}h1{font-size:70px;margin:15px 0}.name-label{margin-top:15px}#start{margin-top:18px}.intro{line-height:1.5}.privacy{margin-top:7px}#houses{bottom:22px;padding-top:18px}#hatNote{bottom:17%}header{padding-top:20px}}@media(max-width:760px){#stage{min-height:650px}header{padding:20px 6vw}.brand{font-size:19px}.brand small{font-size:7px;letter-spacing:1px}.badge{display:none}.seal{width:33px;height:40px;font-size:23px}.header-actions{gap:7px}#welcome{left:8vw;top:46%;max-width:85vw;width:85vw;transform:translateY(-15%)}h1{font-size:54px;line-height:1;max-width:320px;margin:12px 0}#welcome>.eyebrow{font-size:8px;letter-spacing:2px}.intro{font-size:12px;line-height:1.6;margin:12px 0}.name-label{margin:15px 0 3px}#playerName{font-size:19px;width:100%}#start{width:100%;margin-top:14px;padding:13px 18px}#demo{padding:8px 0}.privacy{margin:8px 0;font-size:8px}#hatNote{display:none}#houses{left:8vw;right:8vw;bottom:20px;font-size:6px;letter-spacing:1px;gap:10px}#houses span{gap:5px}#houses i{width:4px;height:4px}#hall:after{background:linear-gradient(0deg,#0b0e0ff5 10%,#0b0e0fc9 65%,#0b0e0f44)}#sessionTop{top:93px}#subtitlePanel{bottom:90px;left:7%;right:7%}#sessionControls{bottom:25px;flex-wrap:wrap}#liveStatus{position:absolute;bottom:44px;width:100%;text-align:center;font-size:8px}#trackingHint{top:65%;left:10%;right:10%}.face-guide{width:37vw;height:52vw}#result{padding:70px 20px}#houseTraits{letter-spacing:2px;font-size:9px}#loadStatus{font-size:10px}.primary{font-size:11px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* Living-room distance: the ceremony is read standing away from the computer. */
.intro{font-size:19px;line-height:1.6}.eyebrow{font-size:13px;letter-spacing:2.5px}.name-label{font-size:13px}.name-label span{font-size:12px}.primary{font-size:17px;min-height:58px}.text-button,#demo{font-size:15px!important}.privacy{font-size:11px}.badge{font-size:11px}.brand small{font-size:10px}#houses{font-size:12px}#hatNote span{font-size:11px}#hatNote p{font-size:28px}#playerName{font-size:27px}#loadStatus{font-size:16px}
#subtitlePanel{left:0;right:0;bottom:70px;padding:30px 7% 18px;background:linear-gradient(0deg,#090c0deb 0%,#090c0dc7 65%,transparent 100%)}#speaker{font-size:14px;letter-spacing:3px}#subtitle{font-size:clamp(36px,4.1vw,72px);line-height:1.12;max-width:1250px;margin:12px auto;text-wrap:balance}#instruction{font-size:clamp(20px,2vw,30px);line-height:1.35;max-width:1100px;margin:15px auto;text-wrap:balance}#holdTrack{width:240px;height:7px;border-radius:5px;margin:18px auto 4px}#holdFill{border-radius:5px}#sessionControls{bottom:19px}.glass-button{font-size:16px;padding:12px 18px}#liveStatus{font-size:15px;letter-spacing:0;background:#090c0d80;padding:7px 12px;border-radius:4px}#sessionTop .eyebrow{font-size:16px;text-shadow:0 2px 10px #000}#stepDots i{width:9px;height:9px}#trackingHint{font-size:20px;top:65%;background:#0c1010b8;padding:12px;border-radius:4px}#result .eyebrow{font-size:17px}#resultName{font-size:32px}#houseTraits{font-size:20px;letter-spacing:2px}#houseName{font-size:clamp(58px,9vw,130px)}#toast{font-size:18px}dialog>label,.setting-row,select{font-size:15px}.settings-note{font-size:14px}.dialog-head .eyebrow{font-size:11px}dialog{width:480px}
@media(min-width:761px) and (max-height:820px){#welcome{top:48%;max-width:46vw}h1{font-size:clamp(60px,6vw,85px);margin:15px 0}.intro{font-size:17px;line-height:1.45}.name-label{margin-top:17px}#start{margin-top:17px}#houses{font-size:10px}.privacy{margin-top:6px}#hatNote p{font-size:25px}#subtitlePanel{padding-top:25px}#subtitle{font-size:clamp(36px,3.6vw,55px)}#instruction{font-size:23px}#trackingHint{top:57%}}
@media(max-width:760px){.intro{font-size:15px}.eyebrow{font-size:11px}.primary{font-size:15px;min-height:52px}.name-label{font-size:11px}#playerName{font-size:23px}#welcome{top:43%;transform:translateY(-10%)}#houses{font-size:7px;letter-spacing:.7px}#subtitlePanel{bottom:95px;padding:22px 5% 12px}#subtitle{font-size:34px}#instruction{font-size:19px}#speaker{font-size:11px}#sessionTop .eyebrow{font-size:12px}#liveStatus{font-size:12px;bottom:51px}#sessionControls{bottom:15px}.glass-button{font-size:13px;padding:11px 12px}#trackingHint{font-size:16px;top:51%}#houseTraits{font-size:14px;line-height:1.8}#resultName{font-size:25px}#result .eyebrow{font-size:12px}.brand small{font-size:7px}#loadStatus{font-size:13px}}
/* V2 — a tall composition, with the camera and hat framed together. */
body{background:#090b0b}#stage{min-height:0;margin:auto;--u:1vw;--v:1vh}body[data-layout=portrait] #stage{width:min(100vw,56.25svh);height:min(100svh,177.7778vw)}body[data-layout=landscape] #stage{width:min(100vw,177.7778svh);height:min(100svh,56.25vw)}
#hall{background-image:url('assets/great-hall-portrait-v2.jpg');filter:brightness(.72) saturate(.8);transform:none;background-position:center 42%}body.playing #hall{filter:brightness(.78) saturate(.88)}#ambience{position:absolute;inset:0;width:100%;height:100%;z-index:-4;pointer-events:none}#cameraCanvas{z-index:-3}#magic{z-index:1}.vignette{box-shadow:inset 0 0 140px 25px #08090855}
#guide .face-guide{display:none}#guide.tracking #trackingHint{display:none}#trackingHint{top:44%;left:15%;right:15%;font-size:23px}#subtitlePanel{padding:20px 6% 15px}#sessionTop{top:100px}#sessionControls{gap:12px}#liveStatus{font-size:15px}header{padding:24px 4%}.settings-note{line-height:1.65}
body.portrait header{padding:calc(var(--v)*2.3) 5%;align-items:center}body.portrait .brand{font-size:clamp(19px,calc(var(--u)*2.8),30px);gap:12px}body.portrait .brand small{font-size:clamp(7px,calc(var(--u)*1.1),12px);letter-spacing:1.4px}body.portrait .seal{width:calc(var(--u)*5);height:calc(var(--u)*6);min-width:30px;min-height:36px}body.portrait .badge{display:none}body.portrait .header-actions{gap:12px}body.portrait .icon-button{width:clamp(36px,calc(var(--u)*5.2),56px);height:clamp(36px,calc(var(--u)*5.2),56px);font-size:clamp(22px,calc(var(--u)*3),30px)}
body.portrait #welcome{top:47%;left:7%;right:7%;transform:none;max-width:none;width:auto;text-align:center}body.portrait #welcome>.eyebrow{font-size:clamp(9px,calc(var(--u)*1.5),17px);letter-spacing:2px}body.portrait #welcome .eyebrow span{display:none}body.portrait h1{font-size:clamp(48px,calc(var(--u)*9.5),108px);line-height:1.02;max-width:none;margin:calc(var(--v)*1.3) 0;letter-spacing:-1px}body.portrait .intro{font-size:clamp(15px,calc(var(--u)*2.7),29px);line-height:1.5;margin:calc(var(--v)*1.3) 0}body.portrait .name-label{font-size:clamp(11px,calc(var(--u)*1.5),17px);margin:calc(var(--v)*1.7) 0 8px}body.portrait .name-label span{font-size:clamp(11px,calc(var(--u)*1.5),15px)}body.portrait #playerName{font-size:clamp(23px,calc(var(--u)*3.5),40px);width:80%;margin:0 auto;text-align:center;padding:10px 0}body.portrait #start{min-width:0;width:90%;margin:calc(var(--v)*2) auto 0}body.portrait .primary{font-size:clamp(15px,calc(var(--u)*2.2),25px);min-height:clamp(52px,calc(var(--v)*4),80px);padding:16px 23px}body.portrait #demo{font-size:clamp(15px,calc(var(--u)*2),22px)!important;margin:calc(var(--v)*.7) 0 0}body.portrait .privacy{font-size:clamp(10px,calc(var(--u)*1.5),16px);margin:calc(var(--v)*1) 0}body.portrait #loadStatus{margin:8px auto;font-size:clamp(13px,calc(var(--u)*1.8),20px);max-width:100%}body.portrait #hatNote{display:none}body.portrait #houses{left:6%;right:6%;bottom:calc(var(--v)*2.5);font-size:clamp(7px,calc(var(--u)*1.3),14px);letter-spacing:1px;padding-top:calc(var(--v)*1.8);gap:8px}body.portrait #houses span{gap:7px}
body.portrait #sessionTop{top:calc(var(--v)*8.4);width:90%}body.portrait #sessionTop .eyebrow{font-size:clamp(12px,calc(var(--u)*2.1),24px);letter-spacing:2px}body.portrait #stepDots{margin-top:calc(var(--v)*1.2);gap:16px}body.portrait #stepDots i{width:9px;height:9px}body.portrait #subtitlePanel{bottom:calc(var(--v)*6.5);padding:calc(var(--v)*2.6) 6% calc(var(--v)*1.1);background:linear-gradient(0deg,#090c0df5,#090c0dc9 72%,transparent)}body.portrait #speaker{font-size:clamp(12px,calc(var(--u)*1.8),21px);letter-spacing:2.5px}body.portrait #subtitle{font-size:clamp(33px,calc(var(--u)*6.1),76px);line-height:1.12;margin:calc(var(--v)*1) auto;max-width:100%;text-wrap:balance}body.portrait #instruction{font-size:clamp(19px,calc(var(--u)*3),34px);line-height:1.4;margin:calc(var(--v)*1.1) auto;max-width:100%;text-wrap:balance}body.portrait #begin{margin:calc(var(--v)*1.5) auto 0}body.portrait #holdTrack{margin:calc(var(--v)*1.5) auto 0;width:35%;height:7px}body.portrait #sessionControls{bottom:calc(var(--v)*1.5);left:5%;right:5%;flex-wrap:nowrap}body.portrait #liveStatus{position:absolute;bottom:calc(var(--v)*4);width:100%;text-align:center;font-size:clamp(11px,calc(var(--u)*1.6),19px);padding:7px 0;background:transparent}body.portrait .glass-button{font-size:clamp(14px,calc(var(--u)*1.8),22px);padding:14px 18px}body.portrait #trackingHint{top:42%;left:8%;right:8%;font-size:clamp(18px,calc(var(--u)*3),32px)}
body.portrait #result{padding:10% 6%}body.portrait #result .eyebrow{font-size:clamp(12px,calc(var(--u)*2),24px)}body.portrait #crest{width:calc(var(--u)*18);height:calc(var(--u)*21);margin-bottom:calc(var(--v)*2)}body.portrait #crestLetter{font-size:calc(var(--u)*10)}body.portrait #resultName{font-size:clamp(25px,calc(var(--u)*4),48px)}body.portrait #houseName{font-size:clamp(54px,calc(var(--u)*11),130px);margin:calc(var(--v)*1.2) 0}body.portrait #houseTraits{font-size:clamp(15px,calc(var(--u)*2.5),29px);letter-spacing:1.4px;line-height:1.6;margin-bottom:calc(var(--v)*3)}
@media(max-height:760px){body.portrait #welcome{top:43%}body.portrait h1{font-size:45px;margin:7px 0}body.portrait .intro{font-size:14px;margin:7px 0}body.portrait .name-label{margin-top:8px}body.portrait .primary{min-height:44px;padding:10px 15px}body.portrait #start{margin-top:10px}body.portrait #houses{bottom:13px}body.portrait #subtitle{font-size:30px}body.portrait #instruction{font-size:17px}}

/* Paper Polaroids, stacked on screen and kept in the local souvenir album. */
#resultSummary{display:flex;flex-direction:column;align-items:center}
#result.has-photos{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;gap:18px 4%;padding:11vh 6% 3vh}
#result.has-photos #resultSummary{grid-column:1;grid-row:1;align-self:center}
#result.has-photos #crest{display:none}
#result.has-photos #houseName{font-size:clamp(40px,5.5vw,90px)}
#resultActions{display:flex;flex-direction:column;align-items:center;gap:8px}
#result.has-photos #resultActions{grid-column:1;grid-row:2}
#photoStrip{grid-column:2;grid-row:1 / 3;align-self:stretch;display:grid;grid-template-rows:repeat(3,minmax(0,1fr));gap:14px;min-height:0;width:100%;justify-items:center}
.portrait-card{margin:0;min-height:0;height:100%;aspect-ratio:1056/1296;max-width:100%;background:#fffdf7;box-shadow:2px 9px 19px #0007;transform:rotate(-2deg)}
.portrait-card:nth-child(2){transform:rotate(2deg)}.portrait-card:nth-child(3){transform:rotate(-1deg)}
.portrait-card canvas{display:block;width:100%;height:100%;object-fit:contain}
.download-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:10px}
#result #next{margin:0}
#saveStatus{font-size:16px;line-height:1.4;margin:0;max-width:600px;color:#e1d3b9}
#saveStatus:empty{display:none}
#archiveButton{font-size:16px;padding:10px 14px}
#photoArchive{width:min(760px,94vw);max-height:85svh;overflow:auto}
#photoArchive h2{font-size:32px}#archiveList{margin-top:22px}
.archive-row{padding:14px 0;border-top:1px solid #d7b57940;display:flex;align-items:center;justify-content:space-between;gap:15px}
.archive-row p{font-size:18px;line-height:1.4}.archive-row button{flex:none;font-size:16px}
body.portrait #result.has-photos{display:flex;flex-direction:column;justify-content:flex-start;gap:calc(var(--v)*.8);padding:calc(var(--v)*8.2) 7% calc(var(--v)*1.5)}
body.portrait #result.has-photos #resultSummary{flex:none;width:100%}
body.portrait #result.has-photos .eyebrow{margin:0 0 calc(var(--v)*.3);font-size:clamp(11px,calc(var(--u)*1.7),20px)}
body.portrait #result.has-photos #resultName{font-size:clamp(20px,calc(var(--u)*2.8),36px)}
body.portrait #result.has-photos #houseName{font-size:clamp(38px,calc(var(--u)*6.8),85px);margin:calc(var(--v)*.2) 0}
body.portrait #result.has-photos #houseTraits{font-size:clamp(12px,calc(var(--u)*1.7),22px);margin:0;line-height:1.3}
body.portrait #photoStrip{flex:1;min-height:0;gap:calc(var(--v)*.9)}
body.portrait #resultActions{flex:none;width:100%;gap:calc(var(--v)*.5)}
body.portrait #saveStatus{font-size:clamp(12px,calc(var(--u)*1.7),20px)}
body.portrait .download-actions .glass-button{font-size:clamp(14px,calc(var(--u)*1.9),23px);padding:10px 15px}
body.portrait #result.has-photos #next{min-height:44px;padding:12px 20px}
body.portrait #archiveButton{font-size:clamp(13px,calc(var(--u)*1.8),22px);padding:10px}
@media(max-width:500px){.archive-row{align-items:flex-start;flex-direction:column}body.portrait #result.has-photos #houseTraits{display:none}body.portrait #result.has-photos .eyebrow{font-size:10px}body.portrait #result.has-photos #houseName{font-size:34px}body.portrait #saveStatus{font-size:11px}body.portrait .download-actions .glass-button{font-size:12px;padding:7px 10px}}

.archive-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
#printPage{display:none}
@page{size:A4 portrait;margin:0}


/* Quiet parchment and offset paper prints, matching the exported A4 souvenir. */
#result{isolation:isolate;background:#f7f3e9;color:#382c20}
#resultPaper{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}
#resultHeading{display:grid;grid-template-columns:1fr 1.15fr;align-items:center;gap:5%;width:100%;text-align:left}
#birthdayTitle span{display:block;font:400 clamp(17px,1.6vw,30px)/1.2 Georgia,serif;color:#6d5940;margin-bottom:6px}
#birthdayTitle strong{display:block;font:500 clamp(26px,2.8vw,48px)/1.1 Georgia,serif}
#souvenirName{margin:0;text-align:right;font:italic 500 clamp(38px,4.6vw,80px)/1.05 Georgia,serif;overflow-wrap:anywhere}
#result.has-photos{grid-template-rows:auto minmax(0,1fr) auto;gap:18px 4%}
#result.has-photos #resultHeading{grid-column:1 / 3;grid-row:1}
#result.has-photos #resultSummary{grid-row:2}
#result.has-photos #photoStrip{grid-row:2 / 4}
#result.has-photos #resultActions{grid-row:3}
#result.has-photos #resultName,#result.has-photos #resultSummary>.eyebrow{display:none}
#result #houseTraits,#result #saveStatus{color:#6d5940}
#result .glass-button{color:#493821;background:#fffaf080;border-color:#9d815650}
#result .portrait-card{box-shadow:3px 10px 19px #3e2b153d;transform:translateX(-9%) rotate(-5deg)}
#result .portrait-card:nth-child(2){transform:translateX(9%) rotate(4deg)}
#result .portrait-card:nth-child(3){transform:translateX(-7%) rotate(-4deg)}
body.result-view header .brand,body.result-view header .seal{color:#493821}
body.result-view header .brand small{color:#7a674e}
body.result-view header .glass-button,body.result-view header .icon-button{background:#fffaf099;color:#493821;border-color:#9d815650}
body.result-view header .badge{color:#493821;background:#fffaf050}
body.portrait #result.has-photos #resultHeading{flex:none;margin-bottom:calc(var(--v)*.5)}
body.portrait #birthdayTitle span{font-size:clamp(15px,calc(var(--u)*2.3),29px)}
body.portrait #birthdayTitle strong{font-size:clamp(23px,calc(var(--u)*3.5),45px)}
body.portrait #souvenirName{font-size:clamp(36px,calc(var(--u)*6.4),84px)}
body.portrait #result.has-photos #houseName{font-size:clamp(29px,calc(var(--u)*4),52px);margin:0}
body.portrait #result.has-photos #houseTraits{font-size:clamp(12px,calc(var(--u)*1.7),20px)}
body.portrait #result.has-photos #photoStrip{gap:calc(var(--v)*1.2)}
/* Keep spoken dialogue available to assistive technology without displaying captions. */
#subtitle,#speaker{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip-path:inset(50%)!important;white-space:nowrap!important}
#subtitlePanel,body.portrait #subtitlePanel{padding-top:12px;background:linear-gradient(0deg,#090c0dbb,transparent)}

/* V9: show the very same composition as the A4 export, without cropping the artwork. */
#souvenirPreview{display:none}
#result.has-photos,body.portrait #result.has-photos{display:flex;flex-direction:column;justify-content:flex-start;gap:12px;padding:clamp(90px,8vh,150px) 4% 20px;background:#e8e2d5}
#result.has-photos #souvenirPreview{display:flex;flex:1;min-height:0;width:100%;align-items:center;justify-content:center}
#result.has-photos #resultPaper{position:static;display:block;width:100%;height:100%;object-fit:contain;z-index:auto;filter:drop-shadow(0 5px 14px #30241530)}
#result.has-photos #resultHeading,#result.has-photos #resultSummary,#result.has-photos #photoStrip{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;overflow:hidden!important;clip-path:inset(50%)!important}
#result.has-photos #resultActions,body.portrait #result.has-photos #resultActions{flex:none;width:100%;gap:8px}
body.result-view #sessionControls{display:none}
@media(min-aspect-ratio:1/1){#result.has-photos{padding:90px 6% 24px;display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,.7fr);grid-template-rows:minmax(0,1fr);gap:5%}#result.has-photos #souvenirPreview{grid-column:1;grid-row:1;height:100%}#result.has-photos #resultActions{grid-column:2;grid-row:1;align-self:center}}

/* Operator setup is separate from the child's uninterrupted ceremony. */
body.oral-entry #playerName,body.oral-entry label[for="playerName"]{display:none}
#voiceAvailability{line-height:1.6;max-width:530px;font-size:13px}
#guestNames,#confirmedName{display:block;width:100%;margin:10px 0 20px;padding:12px;background:#24271e;color:#fff2db;border:1px solid #c0ae7955;border-radius:4px;font:18px/1.4 sans-serif}
#nameHelp h2{font:36px Georgia,serif}#nameHelp button{margin:12px 0}
body.immersive:not(.operator-ui) header,body.immersive:not(.operator-ui) #sessionTop,body.immersive:not(.operator-ui) #guide,body.immersive:not(.operator-ui) #sessionControls,body.immersive:not(.operator-ui) #toast{display:none!important}
body.immersive:not(.operator-ui) #stage{cursor:none}
body.immersive:not(.operator-ui) #result.has-photos{display:flex!important;padding:0!important;gap:0!important;background:#ece6da}
body.immersive:not(.operator-ui) #result.has-photos #souvenirPreview{height:100%;width:100%}
body.immersive:not(.operator-ui) #result.has-photos #resultPaper{filter:none}

/* Souvenirs are prepared off-screen; the live scene continues after the house announcement. */
body.ceremony-finished #sessionTop,body.ceremony-finished #guide{display:none!important}

/* German captions remain readable during automatic operation. */
h1{font-size:clamp(46px,4.6vw,78px);line-height:1.03}
body.portrait h1{font-size:clamp(38px,calc(var(--u)*6.8),78px)}
body.immersive:not(.operator-ui) #result.has-photos{padding:3vh 3vw!important;gap:12px!important}
body.immersive #resultActions{cursor:auto}
body.immersive:not(.operator-ui) #begin{display:none}
#photoArchive{width:800px}
#result:not(.has-photos) #souvenirPreview,#result:not(.has-photos) #resultHeading{display:none}

#stage #result[hidden],#stage #session[hidden]{display:none!important}
