:root{--ink: #071a20;--panel: rgba(8, 26, 32, .82);--teal: #2fb5a0;--denim: #3a7490;--mag: #b030d0;--cream: #f3e9dc}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--ink);color:var(--cream);font-family:ui-rounded,Nunito,Segoe UI,system-ui,sans-serif}canvas{display:block;touch-action:none}.reset{position:absolute;top:12px;right:12px;background:var(--panel);color:var(--cream);border:1px solid rgba(47,181,160,.5);border-radius:99px;padding:8px 14px;font:inherit;font-size:13px;font-weight:700;cursor:pointer}.hint{position:absolute;left:50%;top:14px;transform:translate(-50%);background:var(--panel);border-radius:99px;padding:8px 16px;font-size:13px;white-space:nowrap;animation:fade 6s forwards;pointer-events:none}@keyframes fade{0%,75%{opacity:1}to{opacity:0}}.bottom{position:absolute;left:0;right:0;bottom:0;padding:0 16px 12px;display:flex;flex-direction:column;gap:10px;align-items:center;pointer-events:none}.bottom>*{pointer-events:auto}.card{width:min(480px,100%);background:var(--panel);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(47,181,160,.45);border-radius:18px;padding:16px 18px;animation:rise .35s ease-out}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.card .area{color:var(--mag);font-weight:800;font-size:11px;text-transform:uppercase;letter-spacing:1.4px;filter:brightness(1.7)}.card h2{margin:2px 0 6px;font-size:22px}.card p{margin:0 0 12px;line-height:1.45;font-size:15px}.nav{display:flex;align-items:center;gap:10px;font-size:13px}.nav button{background:transparent;border:1px solid rgba(243,233,220,.3);color:var(--cream);border-radius:99px;padding:6px 12px;font:inherit;font-weight:700;cursor:pointer}.nav .close{margin-left:auto;background:var(--teal);color:var(--ink);border-color:var(--teal)}.chips{display:flex;gap:8px;max-width:100%;overflow-x:auto;padding:2px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.chip{flex:none;background:var(--panel);color:var(--cream);border:1px solid rgba(47,181,160,.4);border-radius:99px;padding:9px 14px;font:inherit;font-size:13px;font-weight:700;cursor:pointer;white-space:nowrap}.chip.on{background:var(--teal);color:var(--ink);border-color:var(--teal)}.foot{font-size:11px;color:#f3e9dc8c;text-align:center}.pulse{position:relative;width:34px;height:34px;background:none;border:0;padding:0;cursor:pointer}.pulse .dot{position:absolute;top:9px;right:9px;bottom:9px;left:9px;border-radius:50%;background:var(--mag);box-shadow:0 0 0 2px var(--cream),0 0 14px 3px #b030d0cc}.pulse .ring{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:2px solid var(--mag);animation:ping 1.8s ease-out infinite}.pulse.on .dot{background:var(--teal);box-shadow:0 0 0 2px var(--cream),0 0 14px 3px #2fb5a0e6}.pulse.on .ring{border-color:var(--teal)}@keyframes ping{0%{transform:scale(.5);opacity:1}to{transform:scale(1.5);opacity:0}}@media(max-width:600px){.reset{top:70px}.card h2{font-size:19px}}.explorer{position:relative;width:100%;height:100%;min-height:360px;overflow:hidden;background:#0b2630}.explorer canvas{touch-action:pan-y!important}.bottom .foot{display:none}.full .explorer .bottom .foot{display:block}.site{min-height:100%;display:flex;flex-direction:column}.mock-bar{background:var(--mag);color:#fff;font-size:12px;font-weight:700;text-align:center;padding:6px 12px}.nav{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 18px;background:#0a2129;border-bottom:1px solid rgba(47,181,160,.25);flex-wrap:wrap;position:sticky;top:0;z-index:30}.brandlink{display:flex;align-items:center;gap:10px;color:var(--cream);text-decoration:none}.brandlink img{width:42px;height:42px;border-radius:50%;background:#0f2c33;padding:3px;border:2px solid var(--teal);object-fit:contain}.brandlink span{display:flex;flex-direction:column;line-height:1.15}.brandlink small{color:var(--teal);font-weight:700;font-size:12px}.nav nav{display:flex;gap:4px;flex-wrap:wrap}.nav nav a{color:var(--cream);text-decoration:none;font-weight:700;font-size:14px;padding:8px 12px;border-radius:99px}.nav nav a.on{background:var(--teal);color:var(--ink)}.badge{font-style:normal;background:var(--mag);color:#fff;border-radius:99px;padding:1px 7px;margin-left:6px;font-size:11px}main{flex:1;width:100%}main.full{height:calc(100vh - 100px)}.block,.intro{max-width:980px;margin:0 auto;padding:22px 18px}.intro{padding-top:34px;padding-bottom:8px}h1{font-size:clamp(28px,6vw,44px);line-height:1.08;margin:6px 0 10px}h2{font-size:21px;margin:4px 0 10px}h3{margin:6px 0}p{line-height:1.5}.muted{color:#f3e9dc9e;font-size:14px}.loading{padding:80px 0;text-align:center;color:var(--teal)}.hero-3d{height:min(66vh,620px);min-height:380px;border-top:1px solid rgba(47,181,160,.25);border-bottom:1px solid rgba(47,181,160,.25);margin-top:18px}.btn{display:inline-block;font:inherit;font-weight:800;font-size:15px;text-decoration:none;cursor:pointer;padding:11px 18px;border-radius:99px;border:1px solid rgba(243,233,220,.35);background:transparent;color:var(--cream)}.btn.primary{background:var(--teal);border-color:var(--teal);color:var(--ink)}.btn.big{width:100%;padding:15px;font-size:17px;margin:14px 0 8px}.btn:disabled{opacity:.45;cursor:not-allowed}.cta-row{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0}.link{background:none;border:0;color:var(--teal);font:inherit;font-weight:700;text-decoration:underline;cursor:pointer;padding:6px 0}.back{color:var(--teal);text-decoration:none;font-weight:700;display:inline-block;margin-bottom:8px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}.session-card{display:flex;flex-direction:column;gap:4px;padding:14px 16px;border-radius:16px;background:#0e2c35;border:1px solid rgba(47,181,160,.3);color:var(--cream);text-decoration:none;font-size:14px}.session-card strong{font-size:17px}.session-card:hover{border-color:var(--teal)}.tag{align-self:flex-start;font-size:11px;font-weight:800;letter-spacing:1px;text-transform:uppercase;padding:3px 9px;border-radius:99px}.tag.bus{background:var(--mag);color:#fff}.tag.club{background:var(--denim);color:#fff}h1 .tag{vertical-align:middle;margin-left:8px}.status{font-weight:800;font-size:13px;padding:6px 10px;border-radius:10px;margin-top:6px;align-self:flex-start}.status.good{background:#2fb5a033;color:#7fe3d0}.status.full{background:#ff5d7333;color:#ff9aa8}.status.wait{background:#ffd23f33;color:#ffd23f}.day h2{margin-top:18px}.today{margin-left:10px;font-size:12px;background:var(--teal);color:var(--ink);padding:2px 8px;border-radius:99px}.filters,.date-row{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.filters input,.form input,.form select,.inline select{font:inherit;padding:11px 14px;border-radius:12px;border:1px solid rgba(243,233,220,.3);background:#0b242c;color:var(--cream)}.chip.small{padding:6px 11px;font-size:12px}.date-row .chip,.filters .chip{cursor:pointer}.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}.step{background:#0e2c35;border-radius:16px;padding:16px;border:1px solid rgba(47,181,160,.25)}.step b{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--mag);color:#fff}.door{border-radius:18px;padding:16px 18px;margin:12px 0;border:1px solid}.door.good{background:#2fb5a01f;border-color:#2fb5a08c}.door.wait{background:#ffd23f1a;border-color:#ffd23f8c}.door.full{background:#ff5d731f;border-color:#ff5d738c}.door-head h2{margin:4px 0 8px;font-size:24px}.live{font-size:11px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;color:var(--teal)}.meter{height:12px;background:#ffffff1a;border-radius:99px;overflow:hidden}.meter div{height:100%;background:var(--teal);border-radius:99px;transition:width .4s}.door.wait .meter div{background:#ffd23f}.door.full .meter div{background:#ff5d73}.meter-labels{display:flex;justify-content:space-between;font-size:12px;margin-top:4px;color:#f3e9dcb3}.demo-switch{border-top:1px dashed rgba(243,233,220,.25);margin-top:10px;padding-top:8px}.form{background:#0e2c35;border:1px solid rgba(47,181,160,.35);border-radius:18px;padding:16px 18px;display:flex;flex-direction:column;gap:12px;margin:12px 0}.form label,.inline{display:flex;flex-direction:column;gap:5px;font-weight:700;font-size:14px}.check{flex-direction:row!important;align-items:flex-start;gap:10px!important;font-weight:500!important}.check input{margin-top:3px;width:18px;height:18px}.confirm{background:#2fb5a01f;border:1px solid var(--teal);border-radius:18px;padding:16px 18px;margin:12px 0}.ticket{display:flex;gap:16px;align-items:center;background:#0e2c35;border:2px dashed var(--teal);border-radius:18px;padding:14px 16px;margin:12px 0}.qr{display:grid;grid-template-columns:repeat(7,1fr);width:84px;height:84px;gap:2px;background:#fff;padding:6px;border-radius:8px;flex:none}.qr i{background:#fff}.qr i.on{background:#0b1a20}.code{font-size:28px;font-weight:800;letter-spacing:3px;color:var(--teal)}.rule-box{margin-top:22px;padding:16px 18px;border-radius:16px;background:#0e2c35;border-left:4px solid var(--mag)}.rule-box ol{padding-left:20px;line-height:1.6;margin:6px 0}.empty{padding:30px 0}.course{background:#0e2c35;border:1px solid rgba(47,181,160,.3);border-radius:18px;padding:16px 18px;display:flex;flex-direction:column;gap:4px}.grid.courses{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.counts{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0}.counts div{background:#0e2c35;border-radius:14px;padding:12px;text-align:center;border:1px solid rgba(47,181,160,.3)}.counts b{display:block;font-size:34px}.counts span{font-size:12px;color:#f3e9dcb3}.counts .good b{color:#7fe3d0}.counts .full b{color:#ff9aa8}.list{list-style:none;padding:0;columns:2 200px;gap:10px}.list li{padding:6px 0;break-inside:avoid}.list em{color:var(--mag);filter:brightness(1.8);font-style:normal;font-weight:800;margin-left:4px}.inline{max-width:320px;margin:10px 0}footer{padding:24px 18px 34px;border-top:1px solid rgba(47,181,160,.2);text-align:center;font-size:13px;color:#f3e9dcbf}footer p{margin:4px 0}body{overflow:auto}@media(max-width:600px){.nav nav a{padding:7px 9px;font-size:13px}.ticket{flex-direction:column;align-items:flex-start}}.zoom{position:absolute;right:12px;top:56px;display:flex;flex-direction:column;gap:6px}.zoom button{width:40px;height:40px;border-radius:50%;border:1px solid rgba(47,181,160,.55);background:var(--panel);color:var(--cream);font:inherit;font-size:22px;font-weight:800;line-height:1;cursor:pointer}.zoom button:hover{background:var(--teal);color:var(--ink)}
