:root {
  --paper:#e6dcc2;--ink:#11140f;--red:#7b1715;--red-bright:#bc4038;
  --lamp-white:.52;--lamp-red:.56;--reflection-white:.28;--reflection-red:.34;--scene-brightness:.8;
  --serif:"Cormorant Garamond",Georgia,serif;--type:"Special Elite","Courier New",monospace;
}
*{box-sizing:border-box}html,body{min-height:100%;background:#050705}body{margin:0;color:var(--paper);font-family:var(--serif);overflow-x:hidden}button,input{font:inherit}button{cursor:pointer}
.landing{position:relative;min-height:100svh;isolation:isolate;overflow:hidden}.scene,.scene>div,.scene-frame>div{position:absolute;inset:0;pointer-events:none}.scene{position:fixed;z-index:-1;background:#050705;overflow:hidden}
/* The frame keeps the image's 1672×941 ratio and covers the viewport, so the lamp and reflection overlays stay on the lamps at any screen shape. */
.scene>.scene-frame{inset:auto;left:50%;top:50%;width:max(100vw,177.7vh);height:max(100vh,56.28vw);width:max(100vw,177.7lvh);height:max(100lvh,56.28vw);transform:translate(-50%,-50%)}
.scene-image{inset:-2%!important;background:url("assets/blackthorn-corridor.png") center/cover no-repeat;filter:brightness(var(--scene-brightness)) contrast(1.08) saturate(.88);transform:scale(1.015);transition:filter 90ms linear}
.lightning-flash{opacity:0;mix-blend-mode:screen;background:radial-gradient(circle at 100% 0%,rgba(225,238,255,.98) 0,rgba(168,195,225,.62) 13%,rgba(111,143,180,.23) 31%,transparent 58%),linear-gradient(145deg,transparent 44%,rgba(222,236,255,.25) 50%,transparent 58%);transition:opacity 55ms linear}body.lightning .lightning-flash{opacity:.93}
.scene::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.76),rgba(0,0,0,.2) 52%,rgba(0,0,0,.6)),linear-gradient(0deg,rgba(1,4,2,.88),transparent 48%,rgba(0,0,0,.2))}
.lamp-glow{mix-blend-mode:screen;transition:opacity 80ms linear}.lamp-white{opacity:var(--lamp-white);background:radial-gradient(ellipse at 50% 7%,rgba(255,234,178,.42) 0 1.2%,transparent 5%),radial-gradient(ellipse at 50% 20%,rgba(255,238,194,.2) 0 1.2%,transparent 4%),radial-gradient(ellipse at 50% 31%,rgba(255,238,194,.12) 0 .9%,transparent 3%);filter:blur(3px)}
.lamp-red{opacity:var(--lamp-red);background:radial-gradient(circle at 21.6% 22%,rgba(255,31,22,.9) 0 .8%,rgba(196,17,10,.35) 1.5%,transparent 4%),radial-gradient(circle at 32.7% 33.5%,rgba(255,28,20,.72) 0 .6%,transparent 2.7%),radial-gradient(circle at 67.4% 33.5%,rgba(255,28,20,.72) 0 .6%,transparent 2.7%),radial-gradient(circle at 78.7% 22%,rgba(255,31,22,.9) 0 .8%,rgba(196,17,10,.35) 1.5%,transparent 4%);filter:blur(2px)}
.floor-reflections{inset:43% 0 0!important;mix-blend-mode:screen;background:linear-gradient(103deg,transparent 17%,rgba(208,28,19,var(--reflection-red)) 22%,transparent 28%),linear-gradient(96deg,transparent 32%,rgba(205,28,18,var(--reflection-red)) 35%,transparent 39%),linear-gradient(84deg,transparent 61%,rgba(205,28,18,var(--reflection-red)) 65%,transparent 69%),linear-gradient(77deg,transparent 72%,rgba(208,28,19,var(--reflection-red)) 78%,transparent 84%),radial-gradient(ellipse at 50% 75%,rgba(255,231,174,var(--reflection-white)),transparent 16%);filter:blur(11px);transform:perspective(420px) rotateX(57deg) scaleY(1.8);transform-origin:bottom;transition:opacity 80ms linear}
.fog{inset:auto -18% -14%!important;height:54%;filter:blur(24px);opacity:.46;will-change:transform}.fog-back{background:radial-gradient(ellipse at 12% 55%,rgba(210,219,209,.72),transparent 38%),radial-gradient(ellipse at 50% 65%,rgba(150,167,154,.42),transparent 46%),radial-gradient(ellipse at 88% 48%,rgba(210,219,209,.56),transparent 36%);animation:fog-drift 19s ease-in-out infinite alternate}.fog-front{height:42%;bottom:-10%!important;opacity:.34;background:radial-gradient(ellipse at 30% 62%,rgba(231,236,229,.7),transparent 34%),radial-gradient(ellipse at 76% 66%,rgba(196,209,198,.62),transparent 36%);animation:fog-drift-reverse 27s ease-in-out infinite alternate}
.vignette{box-shadow:inset 0 0 180px 50px rgba(0,0,0,.78)}.grain{opacity:.2;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.32'/%3E%3C/svg%3E")}
header{position:relative;z-index:4;height:82px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(20px,5vw,76px);background:linear-gradient(rgba(3,5,3,.78),transparent)}.clinic-mark{display:flex;align-items:center;color:var(--paper);text-decoration:none;text-transform:uppercase;letter-spacing:.16em;font-size:13px;font-weight:700;text-shadow:0 2px 8px #000}
.controls{display:flex;gap:10px}.icon-button,.language-button{width:42px;height:38px;display:grid;place-items:center;color:var(--paper);border:1px solid rgba(230,220,194,.38);background:rgba(5,7,5,.55)}.language-button{font:11px var(--type)}.sound-bars{height:16px;display:flex;align-items:center;gap:3px}.sound-bars i{width:2px;height:6px;display:block;background:currentColor}.sound-bars i:nth-child(2){height:13px}.sound-bars i:nth-child(3){height:9px}body.sound-on .sound-bars i{animation:sound-bars .75s ease-in-out infinite alternate;color:var(--red-bright)}body.sound-on .sound-bars i:nth-child(2){animation-delay:-.35s}body.sound-on .sound-bars i:nth-child(3){animation-delay:-.55s}
.invitation{width:66.666vw;min-height:calc(100svh - 165px);padding:clamp(36px,6vh,70px) clamp(24px,4vw,70px) 190px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.case-number{margin:0 0 16px;font:11px var(--type);text-transform:uppercase;letter-spacing:.17em;color:#c2b99f}
h1{margin:0;max-width:900px;color:var(--paper);font-size:clamp(50px,6.3vw,96px);font-style:normal;font-weight:600;line-height:.88;letter-spacing:-.035em;text-transform:uppercase;white-space:nowrap;text-shadow:0 9px 35px #000}
.admission-row{width:min(780px,100%);margin-top:clamp(42px,7vh,76px);display:grid;grid-template-columns:minmax(0,1fr) 176px;gap:32px;align-items:center;text-align:left}.summons{margin:0;font-size:clamp(20px,2vw,28px);line-height:1.25;text-shadow:0 3px 12px #000}.summons p{margin:0 0 5px}.bottom-info{position:absolute;z-index:3;left:4.5vw;right:27vw;bottom:40px}.event-details{width:100%;display:grid;grid-template-columns:.8fr .7fr 1.45fr;border-block:1px solid rgba(230,220,194,.48);background:transparent}.event-details div{padding:14px 18px;border-right:1px solid rgba(230,220,194,.25)}.event-details div:nth-child(3){border-right:0}.event-details span{display:block;margin-bottom:5px;font:11px var(--type);text-transform:uppercase;letter-spacing:.14em;color:#c0baa5}.event-details strong{font-size:20px;line-height:1.06}.event-details .costume-detail{grid-column:1/-1;display:grid;grid-template-columns:185px 1fr;align-items:center;border-top:1px solid rgba(230,220,194,.25);border-right:0}.event-details .costume-detail span{margin:0}.event-details .costume-detail strong{font-size:20px}
.admission-stamp{position:relative;z-index:5;width:176px;height:126px;display:grid;place-content:center;gap:3px;text-align:center;color:rgba(216,77,68,.85);border:5px double currentColor;border-radius:50%;background:rgba(10,8,6,.14);text-transform:uppercase;font-family:var(--type);transform:rotate(7deg);transition:color .2s,background .2s,transform .2s}.admission-stamp:hover{color:#ff8176;background:rgba(67,9,7,.2);transform:rotate(4deg) scale(1.04)}.admission-stamp span{font-size:18px}.admission-stamp strong{font-size:13px}.admission-stamp u{margin-top:3px;font-size:13px;text-underline-offset:4px}.footer-line{position:absolute;bottom:13px;left:0;right:0;margin:0;text-align:center;font:9px var(--type);text-transform:uppercase;letter-spacing:.18em;color:#8f8b7c}
.checkin-dialog{width:min(880px,calc(100% - 28px));max-height:calc(100svh - 28px);padding:0;color:var(--ink);border:1px solid #2b2d25;background:var(--paper);box-shadow:0 30px 100px #000;overflow:auto}.checkin-dialog::backdrop{background:rgba(0,0,0,.84);backdrop-filter:blur(6px)}.form-view,.patient-result{position:relative;padding:clamp(32px,6vw,70px)}.close-dialog{position:absolute;z-index:3;top:16px;right:18px;width:36px;height:36px;color:var(--ink);border:1px solid rgba(17,20,15,.4);background:transparent;font-size:24px}
.form-code{margin:0 0 14px;color:var(--red);font:11px var(--type);letter-spacing:.15em}.checkin-dialog h2{max-width:620px;margin:0 0 12px;font-size:clamp(40px,6vw,68px);line-height:.95}.form-view>p:not(.form-code){max-width:620px;font-size:19px}#checkinForm{margin-top:35px;display:grid;grid-template-columns:1fr 1fr;gap:24px}#checkinForm>label:not(.attendance-check) span{display:block;margin-bottom:8px;font:10px var(--type);text-transform:uppercase;letter-spacing:.12em}#checkinForm input[type="text"],#checkinForm input[type="email"],#checkinForm>label>input{width:100%;padding:10px 5px;border:0;border-bottom:1px solid var(--ink);outline:0;background:transparent;border-radius:0}#checkinForm input:focus{border-color:var(--red)}
.form-error{grid-column:1/-1;margin:0;color:var(--red);font:12px/1.5 var(--type)}.confirm-button:disabled{opacity:.6;cursor:wait}.confirm-button{grid-column:1/-1;min-height:52px;padding:14px 22px;color:#fff4dd;border:1px solid #a33a35;background:var(--red);font:12px var(--type);text-transform:uppercase;letter-spacing:.12em}
.patient-result{text-align:center}.assigned-card{position:relative;margin:28px auto 16px;max-width:680px;min-height:330px;display:grid;grid-template-columns:45% 55%;text-align:left;border:8px solid #cec3a7;outline:1px solid #24271f;background:#d8ceb4;box-shadow:0 18px 40px #514a3d80;transform:rotate(-.6deg)}.random-portrait{min-height:330px;background-image:url("assets/patient-portraits.png");background-size:200% 200%;filter:sepia(.4) contrast(1.06);border-right:3px double var(--ink)}.card-copy{padding:35px 28px}.card-copy>span{font:11px var(--type);color:var(--red)}.card-copy h2{margin:18px 0 28px;font-size:clamp(34px,5vw,58px)}.card-copy p{margin:0 0 8px;font:10px var(--type);text-transform:uppercase;letter-spacing:.1em}.card-copy strong{font-size:25px;line-height:1.1}.mini-stamp{position:absolute;right:18px;bottom:18px;padding:8px 13px;color:var(--red);border:3px double var(--red);font:14px var(--type);text-transform:uppercase;transform:rotate(-7deg)}.party-size{margin:0 auto 9px;font:11px var(--type);text-transform:uppercase;letter-spacing:.08em}.result-note{max-width:620px;margin:0 auto 22px;font-size:18px}.patient-result .confirm-button{min-width:240px}
@keyframes fog-drift{from{transform:translate3d(-7%,0,0) scale(1.02)}to{transform:translate3d(9%,-5%,0) scale(1.13)}}@keyframes fog-drift-reverse{from{transform:translate3d(8%,0,0) scale(1.08)}to{transform:translate3d(-9%,-3%,0) scale(1.17)}}@keyframes sound-bars{to{transform:scaleY(.38);opacity:.55}}
@media(max-width:900px),(max-height:560px){.landing{display:flex;flex-direction:column}header{flex:none}.invitation{width:100%;min-height:0;flex:1;padding:clamp(20px,5vh,56px) 24px}.bottom-info{position:relative;left:auto;right:auto;bottom:auto;padding:0 24px 34px}.footer-line{bottom:10px}.event-details{grid-template-columns:1fr 1fr}.event-details div:nth-child(2){border-right:0}.event-details div:nth-child(3){grid-column:1/-1;border-top:1px solid rgba(230,220,194,.22)}.event-details .costume-detail{grid-column:1/-1}}
@media(max-width:900px){.admission-row{grid-template-columns:minmax(0,1fr) 150px}.admission-stamp{width:150px;height:108px}}
@media(max-height:560px) and (min-width:581px){h1{font-size:min(6.3vw,15vh)}.admission-row{margin-top:20px}.summons{font-size:18px}}
@media(max-aspect-ratio:4/5){.scene::after{background:linear-gradient(0deg,rgba(1,4,2,.92),rgba(1,4,2,.45) 38%,rgba(0,0,0,.12) 62%,rgba(0,0,0,.55))}.vignette{box-shadow:inset 0 0 90px 24px rgba(0,0,0,.75)}.scene-image{transform:scale(1.015) translateY(-3%)}}
@media(max-width:580px){.landing{min-height:100dvh}header{height:calc(58px + env(safe-area-inset-top));padding:env(safe-area-inset-top) 16px 0}.clinic-mark{font-size:12px}.icon-button,.language-button{width:40px;height:36px}.invitation{padding:12px 16px;justify-content:center}.case-number{margin-bottom:12px;font-size:10px}h1{font-size:clamp(36px,12vw,56px);white-space:normal}.admission-row{margin-top:clamp(20px,5vh,40px);grid-template-columns:1fr 116px;gap:10px}.summons{font-size:clamp(16px,4.6vw,19px)}.admission-stamp{width:116px;height:86px;border-width:4px}.admission-stamp span{font-size:13px}.admission-stamp strong,.admission-stamp u{font-size:10px}.bottom-info{padding:0 16px calc(16px + env(safe-area-inset-bottom))}.event-details div{padding:9px 10px}.event-details span{margin-bottom:4px;font-size:10px}.event-details strong,.event-details .costume-detail strong{font-size:16px}.event-details .costume-detail{grid-template-columns:1fr}.event-details .costume-detail span{margin-bottom:4px}.footer-line{display:none}#checkinForm{grid-template-columns:1fr}.confirm-button{grid-column:1}.assigned-card{grid-template-columns:1fr}.random-portrait{min-height:240px;border-right:0;border-bottom:3px double var(--ink)}.card-copy{padding:24px 22px 60px}.card-copy h2{margin:12px 0 18px}}
@media(max-width:580px) and (max-height:640px){header{height:calc(50px + env(safe-area-inset-top))}h1{font-size:clamp(32px,10.5vw,44px)}.summons{font-size:15px}.admission-row{margin-top:16px}.admission-stamp{width:104px;height:78px}.event-details div{padding:7px 10px}.event-details strong,.event-details .costume-detail strong{font-size:15px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
