*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-bg: #0d0a2a;--color-deep-blue: #1a1150;--color-purple: #2d1b69;--color-gold: #f0c040;--color-gold-dark: #d4a830;--color-white: #ffffff;--color-light: #e8e0f0;--color-muted: #9e95b0;--color-card-bg: rgba(255, 255, 255, .05);--color-card-border: rgba(240, 192, 64, .15);--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--space-3xl: 4rem;--radius-sm: 12px;--radius-md: 18px;--radius-lg: 24px;--radius-pill: 50px;font-family:-apple-system,SF Pro Display,Segoe UI,system-ui,sans-serif;line-height:1.5;font-weight:400;color:var(--color-light);background-color:var(--color-bg);background-image:radial-gradient(ellipse at 50% 0%,rgba(45,27,105,.5) 0%,transparent 50%),radial-gradient(ellipse at 80% 80%,rgba(26,10,48,.6) 0%,transparent 40%),radial-gradient(ellipse at 20% 90%,rgba(13,10,42,.5) 0%,transparent 40%);background-attachment:fixed;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html{scroll-behavior:smooth}body{margin:0;min-width:320px;min-height:100vh;min-height:100dvh;position:relative;overflow-x:hidden}::selection{background:#f0c04040;color:var(--color-white)}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#f0c04026;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#f0c0404d}body:before{content:"";position:fixed;top:0;left:0;width:1px;height:1px;pointer-events:none;z-index:0;box-shadow:3vw 5vh 0 .5px #fff3,8vw 14vh #ffffff1f,14vw 7vh 0 .5px #ffffff4d,4vw 32vh #ffffff26,21vw 3vh #fff3,34vw 9vh 0 .5px #ffffff1f,47vw 4vh #ffffff2e,57vw 7vh 0 .5px #ffffff26,71vw 5vh #ffffff40,84vw 10vh 0 .5px #ffffff1f,91vw 8vh #fff3,95vw 16vh #ffffff26,2vw 50vh 0 .5px #ffffff26,6vw 67vh #ffffff38,3vw 84vh 0 .5px #ffffff1f,5vw 94vh #ffffff2e,92vw 27vh #ffffff26,87vw 44vh 0 .5px #ffffff40,95vw 60vh #ffffff1f,90vw 77vh #ffffff2e,84vw 91vh 0 .5px #ffffff26,94vw 96vh #ffffff1f,27vw 93vh #ffffff26,49vw 97vh 0 .5px #fff3,71vw 94vh #ffffff1f}body:after{content:"";position:fixed;top:0;left:0;width:1px;height:1px;pointer-events:none;z-index:0;box-shadow:11vw 19vh 0 .5px #ffffff4d,87vw 15vh #ffffff59,5vw 56vh 0 .5px #ffffff40,93vw 51vh #fff3,19vw 73vh #ffffff47,79vw 79vh 0 .5px #ffffff40,16vw 39vh #ffffff26,86vw 36vh 0 .5px #ffffff47,41vw 6vh #ffffff38,64vw 96vh #fff3,74vw 3vh 0 .5px #ffffff47,54vw 91vh #ffffff26;animation:twinkle 5s ease-in-out infinite alternate}@keyframes twinkle{0%{opacity:.25}to{opacity:1}}#root{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;position:relative;z-index:1}:root{--c-bg-dark: #0f1020;--c-bg-card: #1a1b2e;--c-primary: #ffd700;--c-primary-dim: #cca800;--c-accent: #ff6b6b;--c-text-main: #ffffff;--c-text-muted: #8f90a0;--g-background: radial-gradient(circle at 50% 0%, #2a2c4e 0%, #0f1020 70%);--g-gold: linear-gradient(135deg, #ffd700 0%, #fdb931 100%);--g-gold-text: linear-gradient(to bottom, #fff8cc 0%, #ffd700 100%);--g-ticket-value: linear-gradient(180deg, #d4af37 0%, #a67c00 100%);--c-on-primary: #3e2c00;--c-primary-edge: #b38f00;--c-primary-glow: rgba(255, 215, 0, .3);--c-accent-soft: rgba(255, 215, 0, .12);--c-accent-border: rgba(255, 215, 0, .45);--c-accent-border-dim: rgba(255, 215, 0, .2);--c-accent-faint: rgba(255, 215, 0, .08);--gap-xs: .5rem;--gap-sm: 1rem;--gap-md: 1.5rem;--gap-lg: 2.5rem;--r-card: 16px;--r-pill: 999px;--ease-spring: cubic-bezier(.175, .885, .32, 1.275)}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background-color:var(--c-bg-dark);color:var(--c-text-main);overflow:hidden}.app-container.theme-thrill{--c-bg-dark: #071f3d;--c-bg-card: #0d3264;--c-primary: #ffd200;--c-primary-dim: #d4ae00;--g-background: radial-gradient(circle at 50% 0%, #0e3a6e 0%, #071f3d 70%);--g-gold: linear-gradient(135deg, #ff5a4d 0%, #e4002b 100%);--g-gold-text: linear-gradient(to bottom, #ffffff 0%, #ffd200 100%);--g-ticket-value: linear-gradient(180deg, #ff4d5a 0%, #c8102e 100%);--c-on-primary: #ffffff;--c-primary-edge: #9e0020;--c-primary-glow: rgba(228, 0, 43, .35);--c-accent-soft: rgba(255, 210, 0, .14);--c-accent-border: rgba(255, 210, 0, .5);--c-accent-border-dim: rgba(255, 210, 0, .25);--c-accent-faint: rgba(255, 210, 0, .09)}.app-container.theme-universal{--c-bg-dark: #05070f;--c-bg-card: #101528;--c-primary: #4da3ff;--c-primary-dim: #2f7ad4;--g-background: radial-gradient(circle at 50% 0%, #101c3a 0%, #05070f 70%);--g-gold: linear-gradient(135deg, #4da3ff 0%, #1f5fd6 100%);--g-gold-text: linear-gradient(to bottom, #ffffff 0%, #4da3ff 100%);--g-ticket-value: linear-gradient(180deg, #4da3ff 0%, #1f5fd6 100%);--c-on-primary: #ffffff;--c-primary-edge: #16408f;--c-primary-glow: rgba(77, 163, 255, .35);--c-accent-soft: rgba(77, 163, 255, .14);--c-accent-border: rgba(77, 163, 255, .5);--c-accent-border-dim: rgba(77, 163, 255, .25);--c-accent-faint: rgba(77, 163, 255, .09)}.app-container{display:flex;flex-direction:column;height:100vh;height:100dvh;width:100%;max-width:100%;margin:0 auto;position:relative;background:var(--g-background);box-shadow:0 0 50px #00000080}.background-ambient{position:absolute;inset:0;background-image:radial-gradient(circle at 10% 20%,rgba(100,50,255,.05) 0%,transparent 40%),radial-gradient(circle at 90% 80%,rgba(255,215,0,.03) 0%,transparent 40%);pointer-events:none;z-index:0}.app-header{z-index:10;padding:var(--gap-md) var(--gap-sm) var(--gap-sm);text-align:center;flex-shrink:0}.logo-container{display:flex;align-items:center;justify-content:center;gap:var(--gap-xs);margin-bottom:.25rem}.app-header h1{font-size:1.75rem;font-weight:800;letter-spacing:-.02em;background:var(--g-gold-text);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;filter:drop-shadow(0 2px 10px var(--c-accent-border-dim))}.beta-badge{font-size:.6rem;font-weight:700;background:#ffffff1a;color:var(--c-primary);padding:2px 6px;border-radius:4px;letter-spacing:.05em;border:1px solid var(--c-accent-border-dim)}.subtitle{font-size:.9rem;color:var(--c-text-muted)}.park-filter{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin-top:10px}.wait-filter{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin-top:6px}.park-chip,.wait-chip{font-size:.7rem;font-weight:700;letter-spacing:.03em;padding:5px 12px;border-radius:var(--r-pill);border:1px solid rgba(255,255,255,.15);background:#ffffff0f;color:var(--c-text-muted);cursor:pointer;transition:all .2s}.park-chip.selected,.wait-chip.selected{background:var(--c-accent-soft);border-color:var(--c-accent-border);color:var(--c-primary)}.park-chip:active,.wait-chip:active{transform:scale(.96)}.wait-chip{font-size:.65rem;padding:4px 10px}.stats-strip{margin-top:8px;font-size:.7rem;font-weight:600;color:var(--c-text-muted)}.excluded-note{margin-top:8px;font-size:.65rem;color:var(--c-text-muted);background:none;border:none;cursor:pointer;text-decoration:underline dotted}.excluded-note:hover{color:var(--c-accent)}.exclude-btn{font-size:1.1rem}.app-content{z-index:5;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:0 var(--gap-md);position:relative;overflow-y:auto;overflow-x:hidden}.wheel-section{flex-shrink:0;margin-top:1rem;margin-bottom:var(--gap-md);transform:scale(.95);transition:transform .5s var(--ease-spring)}.result-section.visible~.wheel-section{transform:scale(.85)}.action-section{width:100%;display:flex;flex-direction:column;align-items:center;min-height:80px}.mickey-wheel.no-ears{padding-top:17%}.wheel-ornament{position:absolute;top:0;left:50%;transform:translate(-50%);width:88%;height:auto;color:var(--c-primary);opacity:.35;z-index:1}.spin-button{background:var(--g-gold);border:none;font-size:1.1rem;font-weight:700;color:var(--c-on-primary);padding:18px 40px;border-radius:var(--r-pill);cursor:pointer;box-shadow:0 4px 0 var(--c-primary-edge),0 8px 20px var(--c-primary-glow);transition:all .2s cubic-bezier(.25,1,.5,1);width:100%;max-width:280px;display:flex;align-items:center;justify-content:center}.spin-button:active:not(:disabled){transform:translateY(4px);box-shadow:0 0 0 var(--c-primary-edge),0 4px 10px var(--c-accent-border-dim)}.spin-button:disabled{opacity:.7;filter:grayscale(.5);cursor:not-allowed}.spin-button.loading .loading-text{opacity:.8;font-size:.95rem}.result-section{display:none}.result-section.visible{display:flex}.ticket-header{background:var(--c-bg-card);padding:12px 20px;display:flex;justify-content:space-between;align-items:center}.ticket-type{color:var(--c-primary);font-size:.7rem;letter-spacing:.15em;font-weight:800}.ticket-id{color:#ffffff4d;font-family:monospace;font-size:.8rem}.ticket-header-right{display:flex;align-items:center;gap:10px}.share-btn{background:none;border:none;color:#ffffff8c;cursor:pointer;padding:2px;line-height:1;display:flex;align-items:center;transition:transform .15s,color .15s}.share-btn:hover{color:#fff;transform:scale(1.15)}.ticket-body{padding:24px 20px 16px;text-align:center}.ride-title{font-size:1.6rem;line-height:1.1;font-weight:800;color:var(--c-bg-card);margin-bottom:8px}.ride-location{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}.park-tag,.land-tag{font-size:.75rem;font-weight:600;padding:4px 8px;border-radius:4px;text-transform:uppercase}.park-tag{background:#e0e2ff;color:#3d428a}.land-tag{background:#f0f0f5;color:#666}.spotify-link{display:inline-flex;align-items:center;gap:6px;margin-top:12px;max-width:100%;padding:6px 14px;border-radius:var(--r-pill);background:#1ed7601f;border:1px solid rgba(30,215,96,.4);color:#12833b;font-size:.72rem;font-weight:700;text-decoration:none;transition:background .15s,color .15s}.spotify-link:hover{background:#1ed76038;color:#0d6a2f}.spotify-link svg{flex-shrink:0}.spotify-link-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ticket-divider{position:relative;height:20px;display:flex;align-items:center;justify-content:center;margin:0 10px}.dashed-line{width:100%;height:1px;border-top:2px dashed #ddd}.notch-left,.notch-right{position:absolute;width:20px;height:20px;background:var(--c-bg-dark);border-radius:50%;top:0}.notch-left{left:-20px}.notch-right{right:-20px}.ticket-footer{padding:12px 24px 24px;display:flex;justify-content:space-between;align-items:center}.wait-time-container{display:flex;flex-direction:column}.wait-label{font-size:.65rem;color:#888;font-weight:700;letter-spacing:.05em}.wait-value{font-size:2.8rem;font-weight:900;background:var(--g-ticket-value);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;color:#b8860b;line-height:.9;letter-spacing:-.05em;filter:drop-shadow(0 2px 4px rgba(166,124,0,.2))}.walk-estimate{margin-top:4px;font-size:.7rem;font-weight:600;color:#888}.wait-value small{font-size:1rem;font-weight:700;vertical-align:baseline;margin-left:4px;color:#666;text-transform:uppercase}.ticket-actions{display:flex;gap:12px;align-items:center}.action-icon-btn,.play-btn{width:44px;height:44px;border-radius:50%;border:2px solid #eee;background:transparent;font-size:1.5rem;color:var(--c-bg-card);cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}.play-btn{background:#2e7d32;border-color:#2e7d32;color:#fff;padding-left:4px}.play-btn.active{background:#f4eda2;border-color:#d4af37;color:var(--c-on-primary);padding-left:0}.action-icon-btn:hover{background:#f5f5f5;border-color:#ddd}.play-btn:hover{transform:scale(1.05)}.timer-active{font-family:Roboto Mono,monospace;letter-spacing:-2px}.passport-btn{position:absolute;top:14px;right:14px;width:38px;height:38px;border-radius:50%;border:1px solid var(--c-accent-border-dim);background:#ffffff0f;font-size:1.1rem;cursor:pointer;transition:all .2s;z-index:15}.passport-btn:hover{background:var(--c-accent-soft)}.sound-btn{position:absolute;top:14px;left:14px;width:38px;height:38px;border-radius:50%;border:1px solid rgba(255,255,255,.15);background:#ffffff0f;font-size:1rem;cursor:pointer;transition:all .2s;z-index:15}.sound-btn:hover{background:#ffffff1f}.resort-btn{position:absolute;top:14px;left:60px;width:38px;height:38px;border-radius:50%;border:1px solid rgba(255,255,255,.15);background:#ffffff0f;font-size:1rem;cursor:pointer;transition:all .2s;z-index:15}.resort-btn:hover{background:var(--c-accent-soft)}.resort-list{display:flex;flex-direction:column;gap:8px}.resort-option{display:flex;flex-direction:column;gap:2px;text-align:left;padding:12px 14px;border-radius:10px;border:1px solid rgba(255,255,255,.1);background:#ffffff0a;cursor:pointer;transition:all .15s}.resort-option.selected{border-color:var(--c-accent-border);background:var(--c-accent-faint)}.resort-option:hover{background:#ffffff14}.resort-option.selected:hover{background:var(--c-accent-soft)}.resort-name{font-size:.85rem;font-weight:700;color:var(--c-text-main)}.resort-option.selected .resort-name{color:var(--c-primary)}.resort-parks{font-size:.65rem;color:var(--c-text-muted)}.favorite-section{margin-top:var(--gap-sm);padding-top:var(--gap-sm);border-top:1px solid rgba(255,255,255,.08)}.favorite-section h3{font-size:.8rem;font-weight:700;color:var(--c-text-main);margin-bottom:4px}.favorite-hint{font-size:.65rem;color:var(--c-text-muted);margin-bottom:8px}.favorite-list{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.favorite-option{font-size:.7rem;font-weight:700;padding:6px 12px;border-radius:var(--r-pill);border:1px solid rgba(255,255,255,.15);background:#ffffff0f;color:var(--c-text-muted);cursor:pointer;transition:all .15s}.favorite-option.selected{background:var(--c-accent-soft);border-color:var(--c-accent-border);color:var(--c-primary)}.favorite-option:hover{background:#ffffff1a}.favorite-option.selected:hover{background:var(--c-accent-soft)}.passport-overlay{position:fixed;inset:0;background:#0009;z-index:200;display:flex;align-items:center;justify-content:center;padding:var(--gap-sm)}.passport-sheet{background:var(--c-bg-card);border:1px solid var(--c-accent-border-dim);border-radius:var(--r-card);width:100%;max-width:420px;max-height:85dvh;overflow-y:auto;padding:var(--gap-md);box-shadow:0 25px 50px -12px #0009}.passport-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--gap-sm)}.passport-header h2{font-size:1.2rem;font-weight:800;background:var(--g-gold-text);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.passport-close{background:none;border:none;color:var(--c-text-muted);font-size:1.1rem;cursor:pointer;padding:4px 8px}.passport-close:hover{color:var(--c-text-main)}.passport-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--gap-xs);margin-bottom:var(--gap-sm)}.passport-stats>div{background:#ffffff0a;border-radius:10px;padding:10px 4px;text-align:center;display:flex;flex-direction:column;gap:2px}.passport-stats strong{font-size:1.2rem;font-weight:800;color:var(--c-primary)}.passport-stats span{font-size:.6rem;color:var(--c-text-muted);text-transform:uppercase;letter-spacing:.05em}.badge-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap-xs);margin-bottom:var(--gap-sm)}.badge{background:#ffffff0a;border:1px solid transparent;border-radius:10px;padding:10px 6px;text-align:center;display:flex;flex-direction:column;gap:4px;opacity:.35;filter:grayscale(1)}.badge.earned{opacity:1;filter:none;border-color:var(--c-accent-border);background:var(--c-accent-faint)}.badge-icon{font-size:1.3rem}.badge-label{font-size:.6rem;font-weight:700;color:var(--c-text-main)}.passport-rides{display:flex;flex-direction:column;gap:6px}.passport-ride{display:flex;justify-content:space-between;align-items:baseline;gap:var(--gap-xs);background:#ffffff08;border-radius:8px;padding:8px 12px}.passport-ride-name{font-size:.8rem;font-weight:600}.passport-ride-meta{font-size:.65rem;color:var(--c-text-muted);white-space:nowrap}.passport-empty{font-size:.8rem;color:var(--c-text-muted);text-align:center;padding:var(--gap-sm) 0}.app-footer{text-align:center;padding:var(--gap-md);color:#fff3;font-size:.75rem;display:flex;flex-direction:column;gap:4px;margin-top:auto}.app-footer a{color:inherit;text-decoration:none;transition:color .2s}.app-footer a:hover{color:var(--c-primary)}.status-message{border-radius:8px;padding:10px 16px;font-size:.9rem;margin-top:1rem}.status-message.error{background:#ff6b6b26;color:#ff6b6b;border:1px solid rgba(255,107,107,.3)}.mickey-wheel{position:relative;width:100%;max-width:320px;padding-top:24%;margin:0 auto}.mickey-ear{position:absolute;width:36%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 38% 38%,var(--c-bg-card),#0f1020);border:2px solid var(--c-accent-border-dim);box-shadow:inset 0 0 20px #00000080,0 4px 12px #00000080;z-index:1;top:0}.mickey-ear:after{content:"";position:absolute;top:14%;left:18%;width:32%;height:22%;background:radial-gradient(ellipse,rgba(255,255,255,.05) 0%,transparent 70%);border-radius:50%}.mickey-ear-left{left:4%}.mickey-ear-right{right:4%}.wheel-container{position:relative;width:100%;aspect-ratio:1;z-index:2}.wheel-canvas{display:block;width:100%;height:100%;border-radius:50%;filter:drop-shadow(0 10px 30px rgba(0,0,0,.5))}.wheel-pointer{position:absolute;top:-12px;left:50%;transform:translate(-50%);width:0;height:0;border-left:14px solid transparent;border-right:14px solid transparent;border-top:28px solid var(--c-primary);filter:drop-shadow(0 4px 6px rgba(0,0,0,.4));z-index:10}.app-content.has-result .wheel-section{transform:scale(.7) translateY(-20px)}.app-content.has-result .action-section{display:none}@media(min-width:380px){.mickey-wheel{max-width:380px}}@media(min-width:600px){.mickey-wheel{max-width:420px}.app-content.has-result .wheel-section{transform:scale(.8) translateY(-40px)}}@media(min-width:900px){.mickey-wheel{max-width:480px}.app-content{justify-content:center;justify-content:safe center;padding-bottom:4rem}.app-content.has-result .wheel-section{transform:scale(.9) translateY(-60px)}}.result-section{width:100%;display:none;flex-direction:column;align-items:center;justify-content:center;margin-top:-40px;margin-bottom:40px;z-index:20;opacity:0;transform:translateY(50px);transition:all .5s var(--ease-spring)}.result-section.visible{display:flex;opacity:1;transform:translateY(0)}.ticket-card{background:#fff;color:var(--c-bg-card);width:90%;max-width:400px;border-radius:16px;overflow:hidden;box-shadow:0 25px 50px -12px #0006,0 10px 15px -3px #0000001a;position:relative}.ticket-card .ride-title,.ticket-card .wait-value{color:var(--c-bg-card)}.ticket-card .ticket-id{color:#0006}.ticket-card .ticket-header{background:var(--c-bg-card)}@media(max-height:700px)and (min-width:769px){.app-content.has-result .wheel-section{margin-top:0;transform:scale(.65) translateY(-20px)}.result-section{margin-top:-60px}}@media(max-width:768px){.result-section{position:fixed!important;inset:0;margin:0!important;padding:var(--gap-md);z-index:100;display:flex!important;flex-direction:column;align-items:center;justify-content:center;background:#0000;opacity:1!important;transform:none!important;visibility:hidden;pointer-events:none;transition:background .35s ease,visibility 0s linear .4s}.result-section.visible{background:#00000080;visibility:visible;pointer-events:auto;opacity:1!important;transform:none!important;transition:background .35s ease,visibility 0s linear 0s}.result-section .ticket-card{transform:translateY(40px);opacity:0;transition:transform .4s var(--ease-spring),opacity .3s ease;width:90%;max-width:400px;border-radius:16px}.result-section.visible .ticket-card{transform:translateY(0);opacity:1}.app-content.has-result .wheel-section{transform:scale(.95);margin-top:1rem}.app-content.has-result .action-section{display:flex}}
