@import"https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Outfit:wght@300;400;500;600;700&family=JetBrains+Mono:wght@500;600&display=swap";*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #07070B;--surface: #0B0B12;--surface-2: #11111A;--surface-3: #181822;--text: #F5F7FA;--text-muted: #9CA3AF;--text-dim: #5C6173;--border: #1E1E2A;--border-strong: #2A2A3A;--neon-pink: #FF00C8;--neon-purple: #8B5CFF;--neon-cyan: #00D9FF;--neon-blue: #246BFF;--radius: 14px;--radius-sm: 6px;--font-display: "Bebas Neue", sans-serif;--font: "Outfit", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace}html{scroll-behavior:smooth;background:var(--bg)}body{background:var(--bg);color:var(--text);font-family:var(--font);min-height:100vh;-webkit-font-smoothing:antialiased;position:relative;overflow-x:hidden}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:-2;background:radial-gradient(ellipse 70% 50% at 85% -10%,rgba(139,92,255,.22),transparent 60%),radial-gradient(ellipse 60% 40% at 10% 5%,rgba(255,0,200,.16),transparent 60%),radial-gradient(ellipse 80% 60% at 50% 110%,rgba(0,217,255,.1),transparent 60%)}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:-1;background-image:linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.018) 1px,transparent 1px);background-size:44px 44px;mask-image:radial-gradient(ellipse 100% 80% at 50% 30%,black,transparent 80%);-webkit-mask-image:radial-gradient(ellipse 100% 80% at 50% 30%,black,transparent 80%)}.app{max-width:640px;margin:0 auto;padding:1.75rem 1rem 4rem}.site-header{text-align:center;margin-bottom:1.5rem;position:relative}.site-header h1{font-family:var(--font-display);font-size:clamp(3.25rem,17.5vw,6rem);letter-spacing:.03em;line-height:.88;background:linear-gradient(100deg,#ff00c8,#c24cff 30%,#8b5cff,#2e8bff 80%,#00d9ff);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 18px rgba(255,0,200,.22)) drop-shadow(0 0 36px rgba(139,92,255,.15))}.site-subtitle{margin-top:.7rem;font-size:.66rem;font-weight:500;letter-spacing:.32em;text-transform:uppercase;color:var(--text-muted);display:inline-flex;align-items:center;gap:.7rem}.site-subtitle:before,.site-subtitle:after{content:"";width:22px;height:1px;background:linear-gradient(90deg,transparent,var(--neon-purple),transparent);opacity:.7}.filter-bar{display:flex;justify-content:center;margin-bottom:.5rem}.toggle-label{display:inline-flex;align-items:center;gap:.7rem;cursor:pointer;-webkit-user-select:none;user-select:none;min-height:44px;padding:0 .5rem}.toggle-input{position:absolute;opacity:0;pointer-events:none;width:0;height:0}.toggle-track{position:relative;width:42px;height:24px;border-radius:999px;background:var(--surface-2);border:1px solid var(--border-strong);flex-shrink:0;transition:background .2s ease,border-color .2s ease,box-shadow .25s ease}.toggle-input:checked+.toggle-track{background:linear-gradient(90deg,var(--neon-pink),var(--neon-purple));border-color:transparent;box-shadow:0 0 0 1px #ff00c866,0 0 18px #ff00c859}.toggle-thumb{position:absolute;left:3px;top:50%;transform:translateY(-50%);width:16px;height:16px;border-radius:50%;background:var(--text-dim);transition:left .2s ease,background .2s ease}.toggle-input:checked+.toggle-track .toggle-thumb{left:calc(100% - 19px);background:var(--text)}.toggle-input:focus-visible+.toggle-track{outline:2px solid var(--neon-cyan);outline-offset:3px}.toggle-text{font-size:.78rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--text)}.month-nav{display:flex;gap:.4rem;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;padding-bottom:.15rem;padding-right:2rem;margin-top:1rem;margin-bottom:1.5rem;mask-image:linear-gradient(to right,black 0%,black calc(100% - 2.5rem),transparent 100%);-webkit-mask-image:linear-gradient(to right,black 0%,black calc(100% - 2.5rem),transparent 100%)}.month-nav::-webkit-scrollbar{display:none}.month-nav-btn{flex-shrink:0;font-family:var(--font-mono);font-size:.66rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;padding:.5rem .95rem;border-radius:999px;border:1px solid var(--border-strong);color:var(--text-muted);text-decoration:none;background:#0b0b1299;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);min-height:32px;display:flex;align-items:center;white-space:nowrap;transition:color .15s,border-color .15s,background .15s,box-shadow .2s}@media (hover: hover){.month-nav-btn:hover{color:var(--text);border-color:color-mix(in srgb,var(--neon-purple) 60%,transparent);background:#8b5cff14;box-shadow:0 0 16px #8b5cff33}}.month-nav-btn:focus-visible{outline:2px solid var(--neon-cyan);outline-offset:2px}.timeline{display:flex;flex-direction:column}.timeline-empty{text-align:center;color:var(--text-muted);font-size:.9rem;padding:3rem 0}.month-section{scroll-margin-top:1rem}.month-heading{display:flex;align-items:center;gap:.9rem;padding:1.6rem 0 .85rem}.month-heading:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--border-strong) 0%,var(--border-strong) 30%,transparent 100%)}.month-heading-label{font-family:var(--font-display);font-size:clamp(1.7rem,6.5vw,2.1rem);letter-spacing:.06em;line-height:1;color:var(--text);white-space:nowrap}.month-section:first-child .month-heading{padding-top:0}.concert-item{margin-bottom:.7rem;animation:fadeUp .4s ease both;animation-delay:calc(var(--i, 0) * 55ms)}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.concert-item{animation:none}}.ticket{--accent-rgba-25: color-mix(in srgb, var(--accent, #8B5CFF) 25%, transparent);--accent-rgba-45: color-mix(in srgb, var(--accent, #8B5CFF) 45%, transparent);--accent-rgba-12: color-mix(in srgb, var(--accent, #8B5CFF) 12%, transparent);display:grid;grid-template-columns:92px 1px 1fr;align-items:stretch;border-radius:var(--radius);background:linear-gradient(135deg,color-mix(in srgb,var(--accent, #8B5CFF) 10%,var(--surface)) 0%,var(--surface) 55%,var(--surface-2) 100%);border:1px solid var(--border-strong);box-shadow:inset 0 1px #ffffff08,0 1px #0006;position:relative;overflow:hidden;transition:transform .2s ease,box-shadow .25s ease,border-color .2s ease}.ticket:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;pointer-events:none;background:linear-gradient(90deg,var(--accent-rgba-25) 0%,transparent 40%);opacity:.7;mix-blend-mode:screen}.ticket:after{content:"";position:absolute;left:0;top:12%;bottom:12%;width:2px;border-radius:0 2px 2px 0;background:var(--accent, var(--neon-purple));box-shadow:0 0 12px var(--accent-rgba-45),0 0 24px var(--accent-rgba-25)}@media (hover: hover){.ticket:hover{transform:translateY(-2px);border-color:var(--accent-rgba-45);box-shadow:inset 0 1px #ffffff0a,0 12px 28px -8px var(--accent-rgba-25),0 0 32px -8px var(--accent-rgba-25)}}.ticket-stub{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:.95rem .6rem;gap:.15rem;position:relative;z-index:1}.stub-month{font-family:var(--font-mono);font-size:.62rem;font-weight:600;letter-spacing:.18em;color:var(--text-muted);text-transform:uppercase}.stub-day{font-family:var(--font-display);font-size:2.65rem;line-height:1;letter-spacing:.02em;color:var(--accent, var(--neon-purple));text-shadow:0 0 12px var(--accent-rgba-45),0 0 24px var(--accent-rgba-25);margin-top:.05rem}.stub-day.is-range{font-size:1.6rem;letter-spacing:0}.stub-weekday{font-family:var(--font-mono);font-size:.56rem;font-weight:500;letter-spacing:.18em;color:var(--text-dim);text-transform:uppercase;margin-top:.2rem}.stub-weekday.is-multi{font-size:.52rem;letter-spacing:.1em;color:color-mix(in srgb,var(--accent, var(--neon-pink)) 60%,var(--text-muted))}.ticket-perf{position:relative;background-image:radial-gradient(circle,color-mix(in srgb,var(--accent, #8B5CFF) 30%,var(--border-strong)) .9px,transparent 1.2px);background-size:1px 7px;background-repeat:repeat-y;background-position:center;margin:14px 0;width:1px}.ticket-perf:before,.ticket-perf:after{content:"";position:absolute;left:50%;width:14px;height:14px;border-radius:50%;background:var(--bg);border:1px solid var(--border-strong);transform:translate(-50%)}.ticket-perf:before{top:-21px}.ticket-perf:after{bottom:-21px}.ticket-body{padding:.95rem 1.05rem 1rem 1.15rem;display:flex;flex-direction:column;position:relative;z-index:1;min-width:0}.ticket-meta{display:flex;align-items:center;gap:.4rem;margin-bottom:.45rem;flex-wrap:wrap}.status{font-family:var(--font-mono);font-size:.56rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;padding:.28rem .55rem .25rem;border-radius:var(--radius-sm);display:inline-flex;align-items:center;gap:.35rem;white-space:nowrap}.status:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;box-shadow:0 0 6px currentColor}.status-upcoming{color:var(--accent, var(--neon-pink));background:color-mix(in srgb,var(--accent, var(--neon-pink)) 12%,rgba(0,0,0,.4));border:1px solid color-mix(in srgb,var(--accent, var(--neon-pink)) 35%,transparent)}.status-past{color:var(--text-dim);background:#ffffff08;border:1px solid var(--border-strong)}.status-past:before{box-shadow:none;opacity:.6}.status-cancelled{color:#f44;background:#ff44441a;border:1px solid rgba(255,68,68,.28)}.status-cancelled:before{box-shadow:0 0 6px #f44}.festival-badge{font-family:var(--font-mono);font-size:.56rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;padding:.28rem .55rem .25rem;border-radius:var(--radius-sm);color:#fff;background:linear-gradient(95deg,var(--neon-pink),var(--neon-purple));box-shadow:0 0 14px #ff00c859}.lineup-artists{font-size:.76rem;font-weight:500;color:var(--text-dim);letter-spacing:.04em;margin-bottom:.35rem;line-height:1.4}.artist-name{font-family:var(--font-display);font-size:clamp(1.55rem,6.5vw,2rem);letter-spacing:.03em;line-height:.98;color:var(--text);margin-bottom:.4rem;word-break:break-word}.artist-name.is-cancelled{text-decoration:line-through;text-decoration-color:#ff444480;text-decoration-thickness:2px;color:var(--text-muted)}.ticket-location{font-size:.84rem;line-height:1.3}.venue{color:var(--text);font-weight:600}.loc-sep{color:var(--text-dim);margin:0 .35em}.city{color:var(--text-muted);font-weight:400}.concert-item.is-past .ticket{opacity:.78}.concert-item.is-past .ticket:after{opacity:.55;box-shadow:none}.concert-item.is-past .stub-day{color:var(--text-muted);text-shadow:none}.concert-item.is-past .artist-name{color:color-mix(in srgb,var(--text) 75%,var(--text-muted))}.ticket.is-cancelled{opacity:.65}.ticket.is-cancelled:after{background:#f44;box-shadow:0 0 12px #f446}@media (min-width: 640px){.app{padding:2.25rem 1.5rem 5rem}.ticket{grid-template-columns:110px 1px 1fr}.ticket-stub{padding:1.1rem .75rem}.stub-day{font-size:3rem}.stub-day.is-range{font-size:1.85rem}.ticket-body{padding:1.1rem 1.25rem 1.15rem 1.35rem}}
