@font-face{font-family:SaunaEntry;src:url('./assets/fonts/entry-headline-v27.woff') format('woff');font-weight:400;font-display:swap}
@font-face{font-family:SaunaDisplay;src:url("./assets/fonts/BlackHanSans-Regular.woff") format("woff");font-weight:400 900;font-display:swap}
/* Approved white character entrance. These rules do not change in-room controls. */
#welcome.simple-entry[open]{--entry-ink:#101010;position:fixed;inset:0;display:flex;flex-direction:column;width:100vw;height:100dvh;max-width:none;max-height:none;min-height:0;margin:0;padding:0;border:0;border-radius:0;background-color:#fff;background-image:url("./assets/entry-tile-v20.svg");background-repeat:repeat;background-size:144px 144px;color:var(--entry-ink);text-align:left;overflow-x:hidden;overflow-y:auto;box-shadow:none;font-family:var(--font-body)}
#welcome.simple-entry.reveal-ready[open]{background:#fff}
#welcome.simple-entry::backdrop{background:#fff;backdrop-filter:none}
body:has(#welcome[open]),body:has(#loading:not([hidden])){background:#fff}
#welcome .entry-brandbar{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;flex:none;padding:24px clamp(28px,4.5vw,76px) 0;gap:20px}
.entry-logo{display:block;width:clamp(180px,21vw,300px);height:auto;filter:brightness(0);object-fit:contain;margin-left:-12px}
#welcome .entry-open{display:flex;align-items:center;gap:9px;white-space:nowrap;font-size:13px;color:#777}
.entry-open i{display:block;width:8px;height:8px;background:#8bbd50;border-radius:50%;flex:none}
#welcome.simple-entry .welcome-panel{flex:1;min-height:0;width:100%;padding:0 clamp(28px,4.5vw,76px) 36px;background:none;overflow:visible;margin:0}
#welcome #entry-setup{display:grid;grid-template-columns:minmax(290px,.85fr) minmax(0,2fr);grid-template-rows:minmax(0,1fr) auto minmax(24px,.6fr);column-gap:0;height:100%;min-height:500px;max-width:1800px;margin:auto}
#welcome .entry-copy{grid-column:1;grid-row:1;align-self:end;position:relative;z-index:1}
#welcome.simple-entry #welcome-title{font-family:SaunaEntry,SaunaDisplay,var(--font-body);font-size:clamp(54px,6.5vw,104px);font-weight:400;line-height:1.06;letter-spacing:-.045em;-webkit-text-stroke:0;color:#070707;margin:0;word-break:keep-all;text-shadow:none}
#welcome.simple-entry #welcome-title:focus{outline:none}
#welcome .entry-copy p{font-size:clamp(17px,1.6vw,23px);line-height:1.5;letter-spacing:-.045em;color:#777;margin:22px 0 28px}
#welcome .welcome-cast{grid-column:2;grid-row:1/4;min-width:0;min-height:0;display:flex;align-items:center;justify-content:center;margin-left:-3%;margin-right:-4%;pointer-events:none}
#welcome .welcome-cast img{width:100%;height:100%;max-height:calc(100dvh - 150px);object-fit:contain;object-position:center;display:block}
#welcome #entry-form{grid-column:1;grid-row:2;max-width:390px;width:100%;z-index:1;margin:0}
.entry-main-buttons{display:grid;gap:10px}
#welcome.simple-entry #entry-choose,#welcome.simple-entry .dialog-action{display:flex;justify-content:space-between;align-items:center;gap:16px;min-height:62px;padding:17px 22px;width:100%;margin:0;border-radius:9px;font:700 21px/1.3 var(--font-body);box-shadow:none}
#welcome.simple-entry #entry-choose{border:1px solid #d4d4d4;background:#fff;color:#111;backdrop-filter:none}
#welcome.simple-entry #entry-chosen{font:800 21px/1.3 var(--font-body);color:#111;white-space:nowrap;letter-spacing:-.04em}
#welcome.simple-entry #entry-choose>span{display:flex;align-items:center;gap:12px;font-size:14px;font-weight:400;color:#777;white-space:nowrap}
#welcome.simple-entry #entry-choose svg{width:18px;height:18px;flex:none;color:#111}
#welcome.simple-entry .dialog-action{background:#111;color:#fff;border:1px solid #111}
#welcome.simple-entry .dialog-action svg{width:27px;height:27px;flex:none}
#welcome.simple-entry .dialog-action:hover{background:#292929;color:#fff}
#welcome.simple-entry button:focus-visible{outline:3px solid #333!important;outline-offset:4px}
#welcome.simple-entry #entry-error{font-size:13px;line-height:1.6;word-break:keep-all;color:#a12525;margin:0 0 14px;background:none}
#welcome.simple-entry #invite-notice{font-size:13px;margin:0 0 14px;color:#555}
/* The ticket always shows the actual character returned by entry. */
#welcome.simple-entry.reveal-ready .welcome-panel{display:flex;justify-content:center;align-items:center;padding:0 24px 30px}
#welcome.simple-entry #entry-reveal{width:min(410px,100%);padding:0;margin:0 auto;text-align:left}
#welcome .entry-reveal-title{font:400 clamp(48px,5.6vw,76px)/1.15 SaunaDisplay,var(--font-body);letter-spacing:-.045em;-webkit-text-stroke:0;color:#080808;margin:18px 0 22px;white-space:nowrap}
#welcome .sauna-ticket{position:relative;background:#faf9f7;color:#111;border:1px solid #cfcfcd;border-radius:16px;text-align:left;margin-bottom:24px;box-shadow:none}
#welcome .sauna-ticket header{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:21px 23px 0;font-size:14px;font-weight:700;color:#111;letter-spacing:-.025em}
#welcome #entry-ticket-rarity{border-radius:30px;background:#ecebea;color:#555;padding:5px 17px;font-size:12px;font-weight:400;white-space:nowrap}
#welcome .ticket-guest{display:flex;flex-direction:column;align-items:center;padding:8px 22px 24px;gap:0;text-align:center}
#welcome.simple-entry #entry-portrait{display:block;width:min(100%,290px);height:auto;aspect-ratio:1;filter:none;margin:0;animation:ticket-in .35s ease both}
#welcome.simple-entry #entry-character{font:400 34px/1.25 SaunaDisplay,var(--font-body);letter-spacing:-.045em;color:#111;margin:4px 0 0;-webkit-text-stroke:.3px currentColor}
#welcome .ticket-stub{position:relative;border-top:1px dashed #c7c6c4;display:flex;align-items:center;justify-content:space-between;padding:21px 25px;gap:20px;color:#111}
#welcome .ticket-stub:before,#welcome .ticket-stub:after{content:'';position:absolute;top:-13px;width:24px;height:24px;background:#fff;border:1px solid #cfcfcd;border-radius:50%}
#welcome .ticket-stub:before{left:-13px;clip-path:inset(0 0 0 50%)}#welcome .ticket-stub:after{right:-13px;clip-path:inset(0 50% 0 0)}
#welcome .ticket-stub strong{display:block;font-size:30px;line-height:1.2;font-weight:900;letter-spacing:-.055em}
#welcome .ticket-stub small{display:block;margin-top:6px;color:#777;font-size:9px;letter-spacing:.16em}
#welcome .ticket-stub i{height:39px;width:112px;flex:none;background:repeating-linear-gradient(90deg,#111 0 2px,transparent 2px 4px,#111 4px 8px,transparent 8px 10px,#111 10px 11px,transparent 11px 15px)}
#welcome.simple-entry #entry-portrait-status{font-size:13px;line-height:1.6;word-break:keep-all;margin:0 0 12px;color:#555}
#welcome #entry-portrait-retry{border:1px solid #bbb;background:#fff;color:#111;border-radius:9px;min-height:44px;padding:10px 16px;margin-bottom:12px}
/* Branch selection belongs to the same white entry flow. */
#entry-branches{width:min(620px,calc(100vw - 28px));max-height:calc(100dvh - 28px);padding:28px 24px;background:#fff;color:#111;border-radius:18px}
#entry-branches::backdrop{background:#0003;backdrop-filter:blur(5px)}
#entry-branches h2{font:800 26px/1.4 var(--font-body);color:#111;margin:8px 0 24px;letter-spacing:-.05em}
#entry-branches .close{color:#555}
#entry-branches .branch-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
#entry-branches .branch-card{color:#111;background:#fff;border:1px solid #dedede}
#entry-branches .branch-card.selected{background:#111;color:#fff;outline-color:#111}
#entry-branches .branch-summary,#entry-branches .branch-state,#entry-branches .branch-count small{color:#777}
#entry-branches .branch-card.selected .branch-state,#entry-branches .branch-card.selected .branch-count small{color:#ddd}
#entry-branches .branch-pages button{color:#555;background:#f1f1f1}#entry-branches .branch-pages button[aria-current=page]{color:#fff;background:#111}
#entry-branches #entry-choose-done{width:100%;justify-content:center;font-size:15px;min-height:50px;margin-top:20px;background:#111;color:#fff;border-radius:9px}
/* Compact marching group; no fake progress percentage or forced waiting. */
#loading{position:fixed;inset:0;background:#fff;color:#111;gap:0;padding:24px;min-height:0;justify-content:center}
#loading .loading-logo{display:block;width:min(330px,80vw);height:auto;object-fit:contain;flex:none;margin:0 0 38px;filter:brightness(0)}
#loading #loading-title{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
#loading .loading-walk{display:block;width:min(410px,calc(100vw - 48px));height:auto;aspect-ratio:3/1;margin:0 0 24px;padding:6px 0;overflow:visible;flex:none}
#loading .loading-march{display:block;width:100%;height:auto;object-fit:contain;animation:sauna-walk .8s ease-in-out infinite;transform-origin:center}
#loading #loading-detail{margin:0;color:#777;font-family:var(--font-body);font-size:15px;line-height:1.65;letter-spacing:-.025em;white-space:pre-line;word-break:keep-all}
#loading .loading-dots{margin:18px 0 0;gap:8px;height:10px}
#loading .loading-dots i{width:6px;height:6px;background:#b8b8b8}
#loading #loading-retry{margin-top:18px;min-height:44px;padding:10px 18px;background:#f4f4f4;color:#333;border:1px solid #d8d8d8;border-radius:9px}
#loading.loading-error #loading-title{position:static;width:auto;height:auto;clip-path:none;white-space:normal;margin-bottom:10px;font:600 20px/1.5 var(--font-body);color:#333}
#loading.loading-error .loading-march{animation:none}
@keyframes sauna-walk{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-4px) rotate(2deg)}}
@media(max-width:700px){
 #welcome.simple-entry[open]{background-size:80px 80px}
 #welcome .entry-brandbar{padding:15px 24px 0;gap:16px}.entry-logo{width:190px;margin-left:-12px}
 #welcome .entry-open span{display:none}#welcome .entry-open i{width:7px;height:7px}
 #welcome.simple-entry .welcome-panel{padding:8px 24px max(24px,calc(env(safe-area-inset-bottom) + 16px));min-height:0;flex:1}
 #welcome #entry-setup{display:flex;flex-direction:column;min-height:0;height:100%;max-width:450px}
 #welcome .entry-copy{align-self:stretch;flex:none}#welcome.simple-entry #welcome-title{font-size:clamp(45.6px,15.58vw,68.4px);line-height:1.06;letter-spacing:-.045em}
 #welcome .entry-copy p{font-size:16px;margin:12px 0 0;line-height:1.4}
 #welcome .welcome-cast{flex:1;min-height:210px;width:calc(100% + 48px);margin:4px -24px 6px;display:block;position:relative}
 #welcome .welcome-cast img{position:absolute;inset:0;width:100%;height:100%;max-height:none;object-fit:contain;transform:scale(1.06);transform-origin:center 55%}
 #welcome #entry-form{max-width:none;flex:none}
 #welcome.simple-entry #entry-choose,#welcome.simple-entry .dialog-action{min-height:56px;padding:15px 19px;font-size:19px}
 #welcome.simple-entry #entry-chosen{font-size:20px}#welcome.simple-entry #entry-choose>span{font-size:12px;gap:10px}
 #welcome.simple-entry.reveal-ready .welcome-panel{align-items:flex-start;padding:0 24px max(24px,calc(env(safe-area-inset-bottom) + 16px))}
 #welcome .entry-reveal-title{font-size:clamp(38px,14.5vw,60px);margin:8px 0 16px}
 #welcome.simple-entry #entry-portrait{width:min(100%,240px,28dvh)}
 #welcome .ticket-guest{padding-bottom:18px}#welcome.simple-entry #entry-character{font-size:30px}
 #welcome .sauna-ticket header{padding:16px 18px 0;font-size:12px}#welcome #entry-ticket-rarity{font-size:11px;padding:5px 13px}
 #welcome .ticket-stub{padding:16px 20px}#welcome .sauna-ticket{margin-bottom:18px}
 #entry-branches{padding:24px 16px}#entry-branches .branch-card{padding:10px 7px}
}
@media(max-height:650px) and (max-width:700px){
 #welcome .entry-brandbar{padding-top:6px}.entry-logo{width:165px}
 #welcome.simple-entry .welcome-panel{padding-top:0;padding-bottom:16px}
 #welcome.simple-entry #welcome-title{font-size:36.1px}#welcome .entry-copy p{font-size:14px;margin-top:8px}
 #welcome .welcome-cast{min-height:150px;margin-top:0;margin-bottom:2px}
 #welcome.simple-entry #entry-choose,#welcome.simple-entry .dialog-action{min-height:48px;padding:11px 15px;font-size:17px}.entry-main-buttons{gap:8px}
 #welcome .entry-reveal-title{font-size:35px;margin:4px 0 14px}#welcome .sauna-ticket header{padding:14px 16px 0}
 #welcome.simple-entry #entry-portrait{width:min(210px,28dvh)}#welcome.simple-entry #entry-character{font-size:25px}
 #welcome .ticket-guest{padding-bottom:15px}#welcome .ticket-stub{padding:15px 20px}#welcome .ticket-stub strong{font-size:25px}
 #welcome .sauna-ticket{margin-bottom:18px}
}
@media(prefers-reduced-motion:reduce){#welcome.simple-entry #entry-portrait,.loading-march,#loading .loading-dots i{animation:none!important;transform:none!important;opacity:1}}

#welcome.simple-entry[open]{z-index:70}
