@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;700&family=Fraunces:opsz,wght@9..144,600;9..144,700&display=swap";:root{color:#fff8e8;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;background:#171224;font-family:DM Sans,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}button,input{font:inherit}button{cursor:pointer}#root{min-height:100svh}:root{--cream:#fff8e8;--muted:#aea5c2;--orange:#ff793d;--purple:#9c65e7;--panel:#231b35;--line:#3a2f50}.shell{background:radial-gradient(circle at 90% 0,#33234f 0,#0000 31%),#171224;max-width:560px;min-height:100svh;margin:auto;padding:0 22px 26px;position:relative;overflow:hidden}.topbar{justify-content:space-between;align-items:center;height:74px;display:flex}.brand{letter-spacing:-.4px;align-items:center;gap:10px;font-size:16px;display:flex}.brand strong{color:var(--orange);font-size:14px;display:block}.brand-mark{color:var(--orange);font-size:26px}.link-button{color:var(--muted);background:0 0;border:0;padding:8px 0;font-size:13px}.offline{color:#24162c;text-align:center;background:#ffbd57;margin:0 -22px;padding:8px 20px;font-size:12px;font-weight:700}.topbar-actions{align-items:center;gap:12px;display:flex}.sound-toggle{border:1px solid var(--line);width:44px;height:44px;color:var(--cream);background:#21182f;border-radius:12px;place-items:center;font-size:18px;display:grid}.sound-toggle:focus-visible,.install-fab:focus-visible,.skip-install:focus-visible{outline-offset:2px;outline:3px solid #ffb64c}.brand-logo{align-items:center;gap:2px;min-width:0;display:grid}.brand-logo img{object-fit:contain;object-position:left center;width:100%;height:100%;display:block}.brand-event{color:var(--orange);letter-spacing:1px;font-size:10px;font-weight:700}.brand-logo-header{width:100px;height:54px}.brand-logo-auth{width:240px;height:76px;margin:0 0 18px}.brand-logo-compact{width:170px;height:48px}.brand-logo-fallback{color:var(--cream);font:700 20px/1.05 Fraunces,serif;display:block}.brand-logo-auth .brand-logo-fallback{font-size:30px}.otp-status{color:#d7c7f4;background:#2b2040;border:1px solid #68448d;border-radius:10px;padding:10px 12px;font-size:12px}.resend-button{color:var(--orange);text-align:center;background:0 0;border:0;padding:11px 0 2px;font-size:13px}.resend-button:disabled{color:var(--muted);opacity:.7}.auth-card{padding:27px 5px 50px}.auth-card.compact{padding-top:50px}.hero-art{height:155px;margin-bottom:22px;position:relative}.moon{background:linear-gradient(140deg,#ffb64c,#ff633b);border-radius:50%;width:150px;height:150px;position:absolute;top:-15px;right:22px;box-shadow:0 0 0 10px #ff793d22}.ghost{filter:drop-shadow(5px 8px #6f43b2);z-index:1;font-size:85px;position:absolute;top:20px;left:25px;transform:rotate(-8deg)}.star{color:#ffba56;font-size:25px;position:absolute}.s1{top:4px;left:0}.s2{bottom:10px;right:0}.eyebrow{color:var(--orange);letter-spacing:2px;margin:0 0 13px;font-size:11px;font-weight:700}.auth-card h1,.passport h1{letter-spacing:-2px;margin:0 0 18px;font:700 48px/1.01 Fraunces,serif}.auth-card h1 em,.passport h1 em{color:var(--orange);font-style:normal}.intro{max-width:390px;color:var(--muted);margin-bottom:28px;font-size:15px;line-height:1.55}.auth-card form{gap:9px;display:grid}.auth-card label{color:var(--cream);font-size:13px;font-weight:700}.auth-card input{border:1px solid var(--line);width:100%;color:var(--cream);background:#21182f;border-radius:12px;outline:0;padding:15px}.auth-card input:focus{border-color:var(--orange);box-shadow:0 0 0 3px #ff793d22}.primary{background:var(--orange);color:#24152a;text-align:left;border:0;border-radius:12px;justify-content:space-between;align-items:center;margin-top:8px;padding:15px 17px;font-weight:700;display:flex}.primary:disabled{opacity:.6}.primary span{font-size:22px}.fine{text-align:center;color:#77708e;margin-top:22px;font-size:13px;line-height:1.5}.icon-disc{color:var(--orange);background:#ff793d22;border-radius:50%;place-items:center;width:64px;height:64px;margin-bottom:33px;font-size:28px;display:grid}.code-input{letter-spacing:8px;text-align:center;font-size:26px}.back{margin-top:18px}.notice{border-radius:10px;margin:60px 0 0;padding:11px 13px;font-size:13px;line-height:1.35}.notice.error{color:#ffb1a3;background:#612f473d;border:1px solid #94475d}.notice.success{color:#b5efc6;background:#315c4b55;border:1px solid #4f9974}.notice.info{color:#d5c6ff;background:#4b3c7055;border:1px solid #755eb1}.loading{text-align:center;color:var(--muted);place-content:center;display:grid}.loading .ghost{position:relative;top:auto;left:auto}.passport{padding:50px 0 55px}.welcome-row{align-items:center;margin-bottom:22px;display:flex}.welcome-row h1{letter-spacing:-1px;margin:0;font-size:32px}.welcome-row h1 span{color:var(--orange);font-size:20px}.progress-card{background:linear-gradient(125deg,#302046,#25203a);border:1px solid #483564;border-radius:18px;margin-bottom:13px;padding:20px}.progress-card.complete{border-color:var(--orange);background:linear-gradient(125deg,#51302e,#302046)}.progress-title{color:var(--muted);justify-content:space-between;align-items:start;font-size:13px;display:flex}.progress-title strong{color:var(--cream);font:700 46px/1 Fraunces}.progress-title small{color:var(--muted);font:18px DM Sans}.progress-bar{background:#171224;border-radius:10px;height:9px;margin:18px 0 12px;overflow:hidden}.progress-bar i{background:linear-gradient(90deg,var(--orange),#ffb550);border-radius:inherit;height:100%;transition:width .5s;display:block}.progress-card p{color:var(--muted);margin:0;font-size:12px}.scan-button{background:var(--orange);text-align:left;color:#27172b;border:0;border-radius:15px;align-items:center;gap:14px;width:100%;margin-bottom:30px;padding:14px 16px;display:flex}.scan-icon{border:2px solid #3d2330;border-radius:12px;place-items:center;width:42px;height:42px;font-size:27px;display:grid}.scan-button span:not(.scan-icon){flex:1;gap:2px;display:grid}.scan-button strong{font-size:15px}.scan-button small{opacity:.7;font-size:13px}.scan-button b{font-size:23px}.section-head{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.section-head h2{margin:0;font:700 20px Fraunces}.section-head span{color:var(--muted);font-size:12px}.visit-list{gap:8px;display:grid}.visit{border:1px solid var(--line);background:#1d162b;border-radius:13px;align-items:center;gap:12px;padding:12px;display:flex}.visit-num{color:var(--orange);width:20px;font:700 13px Fraunces}.visit div{flex:1;gap:3px;display:grid}.visit strong{font-size:13px}.visit small{color:var(--muted);font-size:10px}.check{color:#75d59a;border:1px solid #3b7656;border-radius:50%;place-items:center;width:22px;height:22px;font-size:12px;display:grid}.empty{text-align:center;border:1px dashed var(--line);color:var(--muted);border-radius:13px;padding:24px;font-size:13px}.empty span{font-size:28px}.event-note{color:var(--muted);background:#2b2040;border-radius:13px;gap:12px;margin-top:25px;padding:13px;font-size:13px;line-height:1.45;display:flex}.event-note span{font-size:25px}.event-note p{margin:0}.event-note strong{color:var(--cream);font-size:13px}footer{text-align:center;color:#77708e;z-index:2;background:#171224ee;padding:9px;font-size:12px;position:fixed;bottom:0;left:0;right:0}.status-dot{background:#68d49b;border-radius:50%;width:6px;height:6px;margin-right:5px;display:inline-block}.scanner{z-index:5;background:#0d0a14;flex-direction:column;display:flex;position:fixed;inset:0}.scanner-head{justify-content:space-between;align-items:center;height:70px;padding:0 20px;font-weight:700;display:flex}.scanner-head button{color:#fff;background:0 0;border:0;font-size:32px}.camera{flex:0 0 min(100vw,430px);position:relative;overflow:hidden}.camera video{object-fit:cover;width:100%;height:100%}.corner{border-color:var(--orange);border-style:solid;width:42px;height:42px;position:absolute}.c1{border-width:3px 0 0 3px;top:25%;left:16%}.c2{border-width:3px 3px 0 0;top:25%;right:16%}.c3{border-width:0 0 3px 3px;bottom:25%;left:16%}.c4{border-width:0 3px 3px 0;bottom:25%;right:16%}.scanner-copy{text-align:center;padding:25px}.scan-big{color:var(--orange);font-size:35px}.scanner-copy h2{margin:4px 0 8px;font:700 25px Fraunces}.scanner-copy p{color:var(--muted);max-width:330px;margin:auto;font-size:13px;line-height:1.5}.install-card{padding:10px 5px 42px}.install-kicker{color:#ffba56;background:#2a2040;border:1px solid #69478f;border-radius:12px;place-items:center;width:38px;height:38px;margin:0 0 14px;font-size:22px;display:grid}.install-card h1{letter-spacing:-1px;margin:0 0 12px;font:700 32px/1.08 Fraunces,serif}.install-card h1 em{color:var(--orange);font-style:normal}.install-card .intro{margin-bottom:18px;font-size:16px}.install-button{align-items:center;gap:11px;width:100%;min-height:52px}.install-button span:not(.install-button-icon){flex:1}.install-button-icon{border:2px solid #3d2330;border-radius:10px;place-items:center;width:34px;height:34px;font-size:22px;display:grid}.install-button b{font-size:22px}.install-tip{color:var(--muted);align-items:center;gap:10px;margin:12px 2px 16px;font-size:13px;display:flex}.install-tip span{color:var(--orange);font-size:20px}.install-tip p{margin:0}.ios-instructions{background:#21182f;border:1px solid #68448d;border-radius:15px;margin:0 0 16px;padding:15px}.instruction-lead{color:var(--cream);margin:0 0 8px;font-size:16px;font-weight:700;line-height:1.35}.instruction{border-top:1px solid var(--line);align-items:center;gap:13px;padding:13px 0;display:flex}.instruction:first-of-type{border-top:0}.instruction>span{background:var(--orange);color:#27172b;border-radius:50%;flex:0 0 34px;place-items:center;width:34px;height:34px;font-size:19px;font-weight:700;display:grid}.instruction div{gap:3px;display:grid}.instruction strong{color:var(--cream);font-size:16px;line-height:1.25}.instruction small{color:var(--muted);font-size:13px;line-height:1.35}.install-connectivity{text-align:center;color:#aea5c2;margin:14px 0;font-size:13px;line-height:1.4}.skip-install{width:100%;min-height:46px;color:var(--cream);background:#2a2040;border:0;border-radius:12px;margin:auto;padding:10px;font-size:14px;display:block}.skip-install span{color:var(--orange);margin-left:4px}.install-fab{right:calc(16px + env(safe-area-inset-right));bottom:calc(57px + env(safe-area-inset-bottom));z-index:3;color:var(--cream);background:#2a2040ef;border:1px solid #69478f;border-radius:999px;align-items:center;gap:7px;padding:9px 13px 9px 9px;font-size:11px;display:flex;position:fixed;box-shadow:0 8px 22px #0d0a1466}.install-fab span{background:var(--orange);color:#27172b;border-radius:50%;place-items:center;width:25px;height:25px;font-size:17px;font-weight:700;display:grid}.install-fab strong{font-weight:700}.bat-swarm{z-index:8;pointer-events:none;position:fixed;inset:0;overflow:hidden}.bat{width:var(--bat-size);opacity:0;height:auto;animation:bat-flight var(--bat-duration) cubic-bezier(.2,.7,.3,1) var(--bat-delay) forwards;will-change:transform,opacity;display:block;position:absolute}.bat svg{width:100%;height:auto;fill:var(--bat-color);filter:drop-shadow(0 2px 3px #0d0a1488);transform-origin:50% 55%;animation:.16s ease-in-out infinite alternate bat-flap;display:block}.celebration-static{z-index:8;pointer-events:none;color:var(--orange);text-shadow:0 0 18px #ff793d99;place-items:center;font-size:62px;animation:.7s ease-out forwards celebration-fade;display:grid;position:fixed;inset:0}@keyframes bat-flight{0%{opacity:0;transform:translate3d(0,18px,0) scale(.7) rotate(var(--bat-rotation))}14%{opacity:1}82%{opacity:.9}to{opacity:0;transform:translate3d(var(--bat-x),var(--bat-y),0) scale(1) rotate(0deg)}}@keyframes bat-flap{0%{transform:scaleY(.55)}to{transform:scaleY(1)}}@keyframes celebration-fade{0%{opacity:.9}to{opacity:0}}@media (width>=700px){.shell{border:1px solid #2f2544;border-radius:24px;min-height:calc(100svh - 40px);margin-top:20px}.scanner{border-radius:24px;max-width:560px;margin:auto;inset:20px auto;overflow:hidden}.scanner .camera{flex-basis:430px}}.bat-sound-icon{fill:currentColor;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:25px;height:25px;display:block}.bat-sound-icon .sound-wave{fill:none;stroke:#ffb64c;stroke-width:2px}.bat-sound-icon .mute-line{fill:none;stroke:#ff793d;stroke-width:3px}.participant-number-indicator{white-space:nowrap;color:var(--cream);font-variant-numeric:tabular-nums;background:#2a2040;border:1px solid #68448d;border-radius:999px;align-items:center;padding:7px 9px;font-size:12px;font-weight:700;display:inline-flex}.topbar .participant-number-indicator{margin-left:auto;margin-right:8px}.closed-screen{padding:22px 5px 75px}.completed-route{text-align:center;padding:34px 5px 75px}.completed-route h1{letter-spacing:-1.7px;margin:0 0 12px;font:700 42px/1.03 Fraunces,serif}.completed-route-status{color:#ffd0ae;margin:0 0 8px;font-size:17px;font-weight:700}.completed-route-details{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-top:18px;padding:10px 0}.completed-route-details p{color:var(--muted);margin:7px 0;font-size:14px;line-height:1.45}.completed-route-details strong{color:var(--cream)}.presence-required{font-weight:700;color:var(--orange)!important}.participant-number-card{width:100%;color:var(--cream);cursor:pointer;background:linear-gradient(135deg,#2e1c49,#392335);border:1px solid #8752a6;border-radius:18px;justify-items:center;gap:5px;margin:15px 0 18px;padding:17px 14px;transition:transform .2s,box-shadow .2s;animation:4s ease-in-out infinite participant-number-glow;display:grid;box-shadow:0 0 20px #9c65e733}.participant-number-card:hover,.participant-number-card:focus-visible{outline-offset:3px;outline:2px solid #ffb64c;box-shadow:0 0 30px #ff793d66,0 0 8px #9c65e799}.participant-number-card.activated{transform:scale(1.035)rotate(-1deg);box-shadow:0 0 34px #ff793d99,0 0 12px #9c65e7bb}.participant-number-label{color:#d3b8ee;letter-spacing:1.5px;text-transform:uppercase;font-size:11px}.participant-number-card strong{letter-spacing:3px;color:var(--cream);text-shadow:0 0 15px #ff793d88;font:700 54px/1 Fraunces,serif}.participant-number-card small{color:#ffd0ae;max-width:290px;font-size:12px;line-height:1.35}.closed-date{text-align:center;color:var(--cream);margin:0 0 6px;font-size:15px;font-weight:700}.maps-button,.instagram-button{background:var(--orange);color:#27172b;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;width:100%;margin-top:17px;padding:14px 16px;font-weight:700;text-decoration:none;display:flex}.maps-button span,.instagram-button span{font-size:20px}.farewell-screen{text-align:center;padding:28px 5px 75px}.farewell-screen h1{letter-spacing:-1px;margin:0 0 18px;font:700 35px/1.06 Fraunces,serif}.farewell-screen .participant-number-indicator{margin:0 auto 22px}.farewell-copy{color:var(--muted);max-width:430px;margin:9px auto;font-size:15px;line-height:1.55}.instagram-card{text-align:left;background:#21182f;border:1px solid #68448d;border-radius:16px;margin-top:24px;padding:17px}.instagram-card>strong{color:var(--cream);font:700 22px Fraunces}.instagram-card>p{color:var(--muted);margin:8px 0 0;font-size:13px;line-height:1.45}.instagram-button{margin-top:15px}.instagram-button span{color:#5b3240;font-size:12px}@keyframes participant-number-glow{0%,to{transform:translateY(0);box-shadow:0 0 18px #9c65e733}50%{transform:translateY(-2px);box-shadow:0 0 27px #ff793d55,0 0 12px #9c65e755}}@media (prefers-reduced-motion:reduce){.participant-number-card{transition:none;animation:none}.participant-number-card.activated{transform:none}}.preregistration{padding:50px 5px 58px}.preregistration h1,.closed-screen h1{letter-spacing:-1.7px;margin:0 0 14px;font:700 42px/1.03 Fraunces,serif}.preregistration .intro{margin-bottom:27px;font-size:17px}.start-date{text-align:center;color:var(--cream);margin:18px 0 25px;font-size:15px;font-weight:700}.countdown{color:var(--orange);justify-content:center;align-items:flex-start;gap:7px;margin:13px 0 8px;display:flex}.countdown div{justify-items:center;min-width:58px;display:grid}.countdown strong{letter-spacing:-1px;color:var(--cream);font:700 37px/1 Fraunces,serif}.countdown small{letter-spacing:1px;color:var(--muted);margin-top:6px;font-size:8px}.countdown>b{color:#70518e;padding-top:5px;font:700 25px Fraunces}.pre-details{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-bottom:18px;padding:9px 0}.pre-details p{color:var(--muted);margin:9px 0;font-size:13px;line-height:1.5}.pre-details strong{color:var(--cream)}.pre-install{background:#21182f;border:1px solid #68448d;border-radius:16px;padding:16px}.pre-install h2{margin:0 0 7px;font:700 21px Fraunces}.pre-install>p{color:var(--muted);margin:0 0 13px;font-size:13px;line-height:1.45}.manual-install{border-left:3px solid var(--orange);margin-bottom:14px;padding:4px 0 4px 12px}.manual-install strong{font-size:15px}.manual-install p{color:var(--muted);margin:5px 0 0;font-size:13px;line-height:1.45}.manual-install b{color:var(--cream)}.pre-install .skip-install{color:var(--muted);background:0 0;min-height:38px;margin-top:9px}.time-remaining{color:var(--cream);background:#21182f;border:1px solid #483564;border-radius:11px;gap:2px;margin-bottom:16px;padding:8px 11px;font-size:13px;display:grid}.time-remaining span{font-variant-numeric:tabular-nums;letter-spacing:.3px}.time-remaining.grace{border-color:var(--orange);background:#392533}.time-remaining.grace strong{color:var(--orange);font-size:14px}.time-remaining small{color:#f2c1a8;font-size:11px}.closed-screen{text-align:center;padding:65px 5px 80px}.closed-icon{width:66px;height:66px;color:var(--orange);border:1px solid #80529c;border-radius:50%;place-items:center;margin:0 auto 26px;font-size:30px;display:grid}.closed-screen .intro{margin:0 auto 25px}.closed-details{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-bottom:18px;padding:11px 0}.closed-details p{color:var(--muted);margin:8px 0;font-size:13px;line-height:1.45}.closed-details strong{color:var(--cream)}.eligibility{color:var(--cream);background:#21182f;border:1px solid #68448d;border-radius:12px;padding:14px;font-size:14px;font-weight:700}.eligibility.success{border-color:var(--orange);color:#ffd0ae;background:#3b2930}.closed-progress{color:var(--muted);margin-top:19px;font-size:13px}.closed-progress strong{color:var(--cream);margin-left:4px;font-size:20px}.scanner>.time-remaining{margin:0 20px 10px}.scanner-head button{min-width:44px;min-height:44px}.scan-button:disabled{opacity:.55;cursor:not-allowed}
