html{scroll-behavior:smooth}:root{--font-display: "Instrument Serif", Georgia, serif;--font-mono: "DM Mono", "Courier New", monospace;--font-body: "Outfit", system-ui, sans-serif;--bg-deep: #06060c;--bg-surface: #0c0c16;--accent: #3b82f6;--accent-glow: #5b9cff;--accent-soft: #7db4ff;--thames: #3d8bfd;--accent-warm: #d4903a;--accent-warm-glow: #e8a84c;--accent-warm-soft: #f0c078;--accent-warm-muted: rgba(212, 144, 58, .15);--accent-warm-deep: #1a1206;--text-primary: rgba(255, 255, 255, .92);--text-secondary: rgba(255, 255, 255, .55);--text-muted: rgba(255, 255, 255, .3);font-family:var(--font-body);line-height:1.5;font-weight:400;color-scheme:dark;color:var(--text-primary);background-color:var(--bg-deep);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:before,*:after{box-sizing:border-box}a{font-weight:500;color:var(--accent);text-decoration:none}a:hover{color:var(--accent-soft)}body{margin:0;min-width:320px;min-height:100vh;overflow-x:hidden}h1,h2,h3,p{margin:0}.landing{position:relative;min-height:100vh;display:flex;flex-direction:column;overflow-x:hidden;padding-bottom:6rem}.hero-image-wrap{position:absolute;inset:0;z-index:0}.hero-image{width:100%;height:100%;object-fit:cover;object-position:center 30%;display:block;opacity:0;transform:scale(1.06);transition:opacity 1.4s ease,transform 8s ease-out}.is-loaded .hero-image{opacity:1;transform:scale(1)}.hero-image-grain{position:absolute;inset:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E");background-repeat:repeat;pointer-events:none;mix-blend-mode:overlay}.hero-image-fade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(6,6,12,.2) 0%,rgba(6,6,12,.55) 20%,rgba(6,6,12,.8) 38%,rgba(6,6,12,.95) 52%,var(--bg-deep) 65%);pointer-events:none}.hero-content{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;text-align:center;margin-top:auto;padding:0 2rem 4rem}.hero-eyebrow{display:flex;align-items:center;gap:1rem;font-family:var(--font-mono);font-size:.72rem;font-weight:500;text-transform:uppercase;letter-spacing:.2em;color:var(--accent);text-shadow:0 1px 20px rgba(6,6,12,.9);margin-bottom:1.5rem;opacity:0;transform:translateY(12px);transition:opacity .8s ease .2s,transform .8s ease .2s}.is-loaded .hero-eyebrow{opacity:1;transform:translateY(0)}.hero-eyebrow-line{display:block;width:2rem;height:1px;background:var(--accent);opacity:.5}.hero-title{display:flex;flex-direction:column;align-items:center;margin-bottom:2.5rem}.hero-title-line{display:block;font-family:var(--font-display);font-weight:400;line-height:1;opacity:0;transform:translateY(30px);transition:opacity .9s ease,transform .9s ease}.hero-title-line--1{font-size:clamp(2.5rem,6vw,4rem);color:var(--text-secondary);font-style:italic;text-shadow:0 2px 30px rgba(6,6,12,.9);transition-delay:.3s}.hero-title-line--2{font-size:clamp(4rem,10vw,7.5rem);color:var(--text-primary);letter-spacing:-.02em;text-shadow:0 2px 40px rgba(6,6,12,.95),0 0 80px rgba(6,6,12,.6);transition-delay:.45s}.is-loaded .hero-title-line{opacity:1;transform:translateY(0)}.countdown{display:flex;align-items:center;justify-content:center;margin-bottom:3rem;position:relative;padding:1rem 0}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.countdown-glow{position:absolute;width:600px;height:200px;top:50%;left:50%;transform:translate(-50%,-50%);background:radial-gradient(ellipse at center,rgba(59,130,246,.12) 0%,rgba(59,130,246,.04) 40%,transparent 70%);pointer-events:none;animation:glowPulse 4s ease-in-out infinite}@keyframes glowPulse{0%,to{opacity:.6;transform:translate(-50%,-50%) scale(1)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}}.countdown-group{display:flex;align-items:center;opacity:0;animation:countReveal .9s cubic-bezier(.16,1,.3,1) forwards}@keyframes countReveal{0%{opacity:0;transform:translateY(40px) scale(.92);filter:blur(8px)}to{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}.countdown-colon{font-family:var(--font-mono);font-size:clamp(2.5rem,7vw,5rem);font-weight:300;color:var(--accent);opacity:0;animation:colonPulse 1.5s ease-in-out infinite,countReveal .9s cubic-bezier(.16,1,.3,1) forwards;margin:0 clamp(.25rem,1vw,.75rem);line-height:1;position:relative;top:-.15em;text-shadow:0 0 20px rgba(59,130,246,.5)}@keyframes colonPulse{0%,to{opacity:.9}50%{opacity:.3}}.countdown-cell{display:flex;flex-direction:column;align-items:center;padding:.5rem clamp(.5rem,1.5vw,1.25rem);position:relative}.countdown-value{font-family:var(--font-mono);font-size:clamp(3.5rem,9vw,6.5rem);font-weight:400;color:#fff;line-height:1;letter-spacing:-.03em;text-shadow:0 0 10px rgba(59,130,246,.3),0 0 40px rgba(59,130,246,.15),0 0 80px rgba(59,130,246,.08),0 4px 30px rgba(6,6,12,.9);position:relative}.countdown-cell--sec .countdown-value{animation:secTick 1s ease-in-out infinite}@keyframes secTick{0%,to{text-shadow:0 0 10px rgba(59,130,246,.3),0 0 40px rgba(59,130,246,.15),0 0 80px rgba(59,130,246,.08),0 4px 30px rgba(6,6,12,.9)}50%{text-shadow:0 0 15px rgba(59,130,246,.5),0 0 60px rgba(59,130,246,.25),0 0 100px rgba(59,130,246,.12),0 4px 30px rgba(6,6,12,.9)}}.countdown-label{font-family:var(--font-mono);font-size:.85rem;font-weight:500;text-transform:uppercase;letter-spacing:.22em;color:var(--accent);opacity:.7;margin-top:.75rem}.hero-description{max-width:480px;font-size:.95rem;font-weight:300;line-height:1.75;color:var(--text-secondary);margin-bottom:2.5rem;opacity:0;animation:fadeSlideUp .8s ease forwards;animation-delay:.9s}.event-meta{display:flex;align-items:stretch;gap:2rem;margin-bottom:2.5rem;opacity:0;animation:fadeSlideUp .8s ease forwards;animation-delay:1s}.event-meta-item{display:flex;align-items:flex-start;gap:.75rem;text-align:left}.event-meta-icon{color:var(--accent);font-size:.5rem;margin-top:.35rem;opacity:.7}.event-meta-primary{display:block;font-family:var(--font-body);font-weight:600;font-size:.9rem;color:var(--text-primary);margin-bottom:.15rem}.event-meta-secondary{display:block;font-size:.78rem;color:var(--text-muted);font-weight:300}.event-meta-divider{width:1px;background:#ffffff14;align-self:stretch}.hero-ctas{display:flex;flex-direction:column;align-items:center;gap:1rem;opacity:0;animation:fadeSlideUp .8s ease forwards;animation-delay:1.1s}.ticket-status{display:flex;align-items:center;gap:1rem;margin-bottom:.25rem}.ticket-status-label{font-family:var(--font-display);font-style:italic;font-size:1.05rem;color:var(--text-secondary);white-space:nowrap}.ticket-status-line{display:block;width:2.5rem;height:1px;background:linear-gradient(90deg,transparent,var(--accent),transparent);opacity:.35}.notify-prompt{font-family:var(--font-mono);font-size:.7rem;text-transform:uppercase;letter-spacing:.14em;color:var(--text-muted);margin-bottom:.15rem}.notify-form{display:flex;align-items:stretch;border:1px solid var(--accent);border-radius:2px;overflow:hidden}.notify-input{background:#3b82f60f;border:none;color:var(--text-primary);font-family:var(--font-mono);font-size:.8rem;padding:.85rem 1.25rem;outline:none;width:240px;letter-spacing:.02em}.notify-input::placeholder{color:var(--text-muted)}.notify-input:focus{background:#3b82f61a}.notify-btn{display:inline-flex;align-items:center;gap:.5rem;padding:.85rem 1.5rem;background:var(--accent);border:none;color:#fff;font-family:var(--font-mono);font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:.14em;cursor:pointer;transition:background .3s ease}.notify-btn:hover{background:var(--accent-glow)}.notify-btn-text,.notify-btn-arrow{position:relative}.notify-btn-arrow{transition:transform .3s ease;font-size:.9rem}.notify-btn:hover .notify-btn-arrow{transform:translate(3px)}.notify-success{display:flex;align-items:center;gap:.6rem;font-family:var(--font-mono);font-size:.78rem;color:var(--accent-soft);letter-spacing:.04em;padding:.85rem 1.5rem;border:1px solid rgba(59,130,246,.25);border-radius:2px;background:#3b82f60f}.notify-success-icon{color:var(--accent);font-size:1rem}.event-btn{display:inline-flex;align-items:center;gap:.75rem;padding:.7rem 1.75rem;background:transparent;border:1px solid rgba(255,255,255,.12);color:var(--text-secondary);font-family:var(--font-mono);font-size:.72rem;font-weight:500;text-transform:uppercase;letter-spacing:.14em;text-decoration:none;transition:all .35s ease;position:relative;overflow:hidden}.event-btn:before{content:"";position:absolute;inset:0;background:#ffffff14;transform:scaleX(0);transform-origin:left;transition:transform .4s cubic-bezier(.23,1,.32,1);z-index:0}.event-btn:hover:before{transform:scaleX(1)}.event-btn:hover{color:var(--text-primary);border-color:#fff3}.event-btn-text,.event-btn-arrow{position:relative;z-index:1}.event-btn-arrow{transition:transform .3s ease;font-size:.85rem}.event-btn:hover .event-btn-arrow{transform:translate(4px)}.footer{position:relative;z-index:1;padding:2rem 2rem 1.5rem;text-align:center}.footer-credit{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--font-mono);font-size:.7rem;color:var(--text-muted);text-decoration:none;letter-spacing:.04em;transition:color .3s}.footer-credit:hover{color:var(--text-secondary)}.footer-logo{width:20px;height:20px;object-fit:contain;border-radius:3px}@media(max-width:640px){.hero-content{padding:0 1.25rem 3rem}.countdown-cell{padding:.25rem .15rem}.countdown-colon{margin:0 .1rem}.countdown-glow{width:100%;height:140px}.event-meta{flex-direction:column;gap:1rem;align-items:center}.event-meta-item{text-align:center;flex-direction:column;align-items:center}.event-meta-divider{width:2rem;height:1px}.notify-form{flex-direction:column}.notify-input{width:100%}}.pub-card{position:fixed;bottom:2rem;right:2rem;z-index:100;width:340px;background:linear-gradient(135deg,#1e180eeb,#14100af5);border:1px solid rgba(212,144,58,.2);border-radius:12px;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:0 8px 32px #0006,0 0 60px #d4903a0f,inset 0 1px #d4903a14;overflow:hidden;opacity:0;transform:translateY(20px) translate(10px);animation:pubCardIn .8s ease forwards;animation-delay:1.4s}@keyframes pubCardIn{0%{opacity:0;transform:translateY(20px) translate(10px)}to{opacity:1;transform:translateY(0) translate(0)}}.pub-card-toggle{position:absolute;top:.75rem;right:.75rem;width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:#d4903a1a;border:1px solid rgba(212,144,58,.15);border-radius:6px;color:var(--accent-warm);font-size:.5rem;cursor:pointer;transition:background .2s,border-color .2s;z-index:2;padding:0}.pub-card-toggle:hover{background:#d4903a33;border-color:#d4903a4d}.pub-card-toggle-icon{display:block;line-height:1}.pub-card--collapsed{width:auto;min-width:0}.pub-card--collapsed .pub-card-inner{display:none}.pub-card--collapsed .pub-card-toggle{position:relative;top:0;right:0;width:auto;padding:.6rem 1rem;border-radius:12px;font-size:.7rem;font-family:var(--font-mono);letter-spacing:.06em;gap:.4rem;display:flex;align-items:center}.pub-card-toggle-label{font-family:var(--font-mono);font-size:.75rem;text-transform:uppercase;letter-spacing:.1em;color:var(--accent-warm)}.pub-card-inner{padding:1.25rem}.pub-card-header{margin-bottom:.75rem}.pub-card-badge{display:inline-block;font-family:var(--font-mono);font-size:.6rem;font-weight:500;text-transform:uppercase;letter-spacing:.16em;color:var(--accent-warm);background:var(--accent-warm-muted);padding:.2rem .6rem;border-radius:4px;margin-bottom:.5rem}.pub-card-title{font-family:var(--font-display);font-size:1.2rem;font-weight:400;color:var(--accent-warm-soft);line-height:1.2}.pub-card-description{font-size:.78rem;font-weight:300;line-height:1.65;color:var(--text-secondary);margin-bottom:1rem}.pub-card-description strong{color:var(--accent-warm-glow);font-weight:600}.pub-route{display:flex;align-items:center;gap:0;margin-bottom:1rem;padding:.75rem;background:#d4903a0d;border-radius:8px;border:1px solid rgba(212,144,58,.08)}.pub-route-point{display:flex;flex-direction:column;align-items:center;gap:.35rem;flex-shrink:0}.pub-route-dot{display:block;width:10px;height:10px;border-radius:50%;border:2px solid var(--accent-warm)}.pub-route-dot--start{background:transparent}.pub-route-dot--end{background:var(--accent-warm)}.pub-route-label{font-family:var(--font-mono);font-size:.58rem;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);text-align:center}.pub-route-path{flex:1;display:flex;flex-direction:column;align-items:center;gap:.25rem;padding:0 .5rem}.pub-route-line{display:block;width:100%;height:2px;background:repeating-linear-gradient(90deg,var(--accent-warm) 0px,var(--accent-warm) 4px,transparent 4px,transparent 8px);opacity:.5}.pub-route-walk{display:flex;align-items:center;gap:.25rem;font-family:var(--font-mono);font-size:.62rem;color:var(--accent-warm-glow);letter-spacing:.05em}.pub-route-walk-icon{font-size:.85rem}.pub-card-link{display:inline-flex;align-items:center;gap:.5rem;padding:.55rem 1.25rem;background:transparent;border:1px solid var(--accent-warm);color:var(--accent-warm);font-family:var(--font-mono);font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.12em;text-decoration:none;transition:all .3s ease;position:relative;overflow:hidden;border-radius:6px}.pub-card-link:before{content:"";position:absolute;inset:0;background:var(--accent-warm);transform:scaleX(0);transform-origin:left;transition:transform .35s cubic-bezier(.23,1,.32,1);z-index:0}.pub-card-link:hover:before{transform:scaleX(1)}.pub-card-link:hover{color:var(--accent-warm-deep);border-color:var(--accent-warm)}.pub-card-link-text,.pub-card-link-arrow{position:relative;z-index:1}.pub-card-link-arrow{transition:transform .3s ease;font-size:.85rem}.pub-card-link:hover .pub-card-link-arrow{transform:translate(3px)}@media(max-width:640px){.pub-card{bottom:1rem;right:1rem;left:1rem;width:auto}.pub-card--collapsed{left:auto}}.hotel-card{flex:0 0 260px;scroll-snap-align:start;background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:10px;padding:1.5rem;display:flex;flex-direction:column;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:border-color .3s,transform .3s}.hotel-card:hover{border-color:#3b82f633;transform:translateY(-2px)}.hotel-card-top{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.hotel-badge{font-family:var(--font-mono);font-size:.6rem;font-weight:500;text-transform:uppercase;letter-spacing:.12em;color:var(--accent);background:#3b82f61a;padding:.2rem .6rem;border-radius:3px}.hotel-note{font-family:var(--font-mono);font-size:.58rem;color:var(--accent-warm);letter-spacing:.06em}.hotel-name{font-family:var(--font-body);font-size:1rem;font-weight:600;color:var(--text-primary);line-height:1.3;margin-bottom:.5rem}.hotel-meta{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem}.hotel-price{font-family:var(--font-mono);font-size:.72rem;color:var(--text-secondary);letter-spacing:.02em}.hotel-distance{font-family:var(--font-mono);font-size:.65rem;color:var(--text-muted);letter-spacing:.04em}.hotel-distance:before{content:"•";margin-right:.75rem}.hotel-description{font-size:.8rem;font-weight:300;line-height:1.6;color:var(--text-secondary);margin-bottom:auto;padding-bottom:1rem}.hotel-book{font-family:var(--font-mono);font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.12em;color:var(--accent);text-decoration:none;transition:color .3s}.hotel-book:hover{color:var(--accent-soft)}.section{position:relative;padding:5rem 2.5rem;z-index:1}.section--deep{background:var(--bg-deep)}.section--surface{background:var(--bg-surface)}.section:before{content:"";position:absolute;top:0;left:10%;right:10%;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.08),transparent)}.section:first-of-type:before{display:none}.section-header{text-align:center;margin-bottom:3rem}.section-eyebrow{display:flex;align-items:center;justify-content:center;gap:1rem;font-family:var(--font-mono);font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.18em;color:var(--accent);margin-bottom:.75rem}.section-eyebrow-line{display:block;width:2rem;height:1px;background:var(--accent);opacity:.4}.section-title{font-family:var(--font-display);font-style:italic;font-size:clamp(1.8rem,4vw,2.8rem);font-weight:400;color:var(--text-primary);line-height:1.2}.section-cards{display:flex;gap:1.25rem;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding-bottom:.5rem}.section-cards::-webkit-scrollbar{height:4px}.section-cards::-webkit-scrollbar-track{background:#ffffff08;border-radius:2px}.section-cards::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.section-columns{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem}@media(max-width:640px){.section{padding:3rem 1.25rem}.section-columns{grid-template-columns:1fr;gap:2.5rem}}.travel-col-title{font-family:var(--font-mono);font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.14em;color:var(--accent);margin-bottom:1.25rem;padding-bottom:.75rem;border-bottom:1px solid rgba(59,130,246,.15)}.travel-list{display:flex;flex-direction:column;gap:0}.travel-row{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;padding:.85rem 0;border-bottom:1px solid rgba(255,255,255,.04)}.travel-row:last-child{border-bottom:none}.travel-row-main{display:flex;flex-direction:column;gap:.2rem}.travel-station{font-family:var(--font-body);font-weight:600;font-size:.88rem;color:var(--text-primary)}.travel-lines{font-size:.75rem;font-weight:300;color:var(--text-muted)}.travel-distance{font-family:var(--font-mono);font-size:.65rem;color:var(--text-secondary);white-space:nowrap;margin-top:.15rem}.travel-row-meta{display:flex;flex-direction:column;align-items:flex-end;gap:.15rem;white-space:nowrap}.travel-time{font-family:var(--font-mono);font-size:.68rem;color:var(--text-secondary)}.travel-cost{font-family:var(--font-mono);font-size:.62rem;color:var(--accent);letter-spacing:.04em}.travel-tip{text-align:center;font-family:var(--font-mono);font-size:.7rem;color:var(--text-muted);margin-top:2.5rem;letter-spacing:.04em}.explore-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:2rem}.explore-col-title{font-family:var(--font-mono);font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.14em;color:var(--accent);margin-bottom:1.25rem;padding-bottom:.75rem;border-bottom:1px solid rgba(59,130,246,.15)}.explore-list{display:flex;flex-direction:column;gap:1.25rem}.explore-item{padding:1rem;background:#ffffff05;border:1px solid rgba(255,255,255,.05);border-radius:8px;transition:border-color .3s}.explore-item:hover{border-color:#3b82f626}.explore-name{font-family:var(--font-body);font-size:.9rem;font-weight:600;color:var(--text-primary);margin-bottom:.25rem}.explore-tag{display:block;font-family:var(--font-mono);font-size:.6rem;text-transform:uppercase;letter-spacing:.1em;color:var(--accent);opacity:.7;margin-bottom:.5rem}.explore-note{font-size:.78rem;font-weight:300;line-height:1.5;color:var(--text-secondary);margin-bottom:.5rem}.explore-distance{font-family:var(--font-mono);font-size:.6rem;color:var(--text-muted);letter-spacing:.04em}@media(max-width:640px){.explore-grid{grid-template-columns:repeat(2,1fr);gap:1.5rem}}.about{max-width:600px;margin:0 auto;padding:6rem 2rem 2rem}.about h1{margin-bottom:1rem}.about p{color:#ffffffb3;line-height:1.8;margin-bottom:1rem}.navbar{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 2.5rem;position:fixed;top:0;left:0;right:0;z-index:100;background:linear-gradient(180deg,rgba(6,6,12,.85) 0%,transparent 100%);pointer-events:none}.navbar>*{pointer-events:auto}.navbar-brand{font-family:var(--font-display);font-size:1.35rem;font-style:italic;color:var(--text-primary);display:flex;align-items:center;gap:.5rem;transition:color .3s}.navbar-brand:hover{color:var(--accent)}.navbar-brand-icon{color:var(--accent);font-size:.75rem;font-style:normal}.navbar-links{display:flex;align-items:center;gap:2rem}.navbar-links a{font-family:var(--font-body);font-size:.85rem;font-weight:500;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.08em;transition:color .3s}.navbar-links a:hover{color:var(--text-primary)}.navbar-ticket{background:var(--accent);color:#fff!important;padding:.45rem 1.15rem;border-radius:4px;font-weight:600!important;letter-spacing:.06em!important;transition:background .3s,transform .2s!important}.navbar-ticket:hover{background:var(--accent-glow)!important;color:#fff!important;transform:translateY(-1px)}#root{width:100%}
