:root{--ivory:#faf7f2;--cream:#f4eee4;--gold:#b8955a;--gold-soft:#d6c096;--blush:#e8d5cf;--blush-deep:#c9a49b;--charcoal:#2e2a26;--charcoal-soft:#6b6259;--white:#fffdf9;--font-serif:"Cormorant Garamond", "Times New Roman", serif;--font-sans:"Jost", "Helvetica Neue", Arial, sans-serif;--shadow-soft:0 10px 40px #2e2a2614;--nav-height:72px}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-sans);color:var(--charcoal);background-color:var(--ivory);-webkit-font-smoothing:antialiased;background-image:radial-gradient(80% 50% at 50% -10%,#e8d5cf59,#0000),radial-gradient(60% 40% at 100% 100%,#d6c0962e,#0000);background-attachment:fixed;font-weight:300;line-height:1.65}#root{flex-direction:column;min-height:100vh;display:flex}main{flex:1}h1,h2,h3,h4{font-family:var(--font-serif);color:var(--charcoal);font-weight:500;line-height:1.2}a{color:inherit}.container{width:100%;max-width:880px;margin:0 auto;padding:0 1.5rem}.page{padding:calc(var(--nav-height) + 3rem) 0 5rem;animation:.7s both fade-up}@keyframes fade-up{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.nav{z-index:100;height:var(--nav-height);-webkit-backdrop-filter:blur(12px);background:#faf7f2d9;border-bottom:1px solid #b8955a2e;align-items:center;display:flex;position:fixed;top:0;left:0;right:0}.nav-inner{justify-content:space-between;align-items:center;gap:1rem;width:100%;max-width:1080px;margin:0 auto;padding:0 1.5rem;display:flex}.nav-brand{font-family:var(--font-serif);letter-spacing:.04em;white-space:nowrap;font-size:1.45rem;font-weight:600;text-decoration:none}.nav-brand span{color:var(--gold);padding:0 .15em;font-style:italic;font-weight:400}.nav-links{scrollbar-width:none;gap:.25rem;list-style:none;display:flex;overflow-x:auto}.nav-links::-webkit-scrollbar{display:none}.nav-links a{letter-spacing:.14em;text-transform:uppercase;color:var(--charcoal-soft);white-space:nowrap;border-radius:999px;padding:.45rem .8rem;font-size:.78rem;font-weight:400;text-decoration:none;transition:color .25s,background-color .25s;display:block}.nav-links a:hover{color:var(--charcoal);background:#b8955a1a}.nav-links a.active{color:var(--gold);background:#b8955a1f}.nav-dropdown{position:relative}.nav-dropdown-trigger{font-family:var(--font-sans);letter-spacing:.14em;text-transform:uppercase;color:var(--charcoal-soft);white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:999px;padding:.45rem .8rem;font-size:.78rem;font-weight:400;transition:color .25s,background-color .25s;display:block}.nav-dropdown-trigger:hover{color:var(--charcoal);background:#b8955a1a}.nav-dropdown-trigger.active{color:var(--gold);background:#b8955a1f}.nav-dropdown-caret{color:var(--gold);margin-left:.35em;font-size:.85em}.nav-dropdown-menu{background:var(--white);min-width:10rem;box-shadow:var(--shadow-soft);opacity:0;visibility:hidden;z-index:110;border:1px solid #b8955a38;border-radius:12px;padding:.5rem;list-style:none;transition:opacity .2s,transform .2s,visibility .2s;position:absolute;top:calc(100% + .5rem);left:50%;transform:translate(-50%)translateY(-4px)}.nav-dropdown-menu:before{content:"";height:.75rem;position:absolute;top:-.75rem;left:0;right:0}.nav-dropdown.open .nav-dropdown-menu,.nav-dropdown:focus-within .nav-dropdown-menu{opacity:1;visibility:visible;transform:translate(-50%)translateY(0)}@media (hover:hover){.nav-dropdown:hover .nav-dropdown-menu{opacity:1;visibility:visible;transform:translate(-50%)translateY(0)}}.nav-dropdown-menu a{letter-spacing:.16em;text-transform:uppercase;color:var(--charcoal-soft);white-space:nowrap;border-radius:8px;padding:.55rem .9rem;font-size:.72rem;text-decoration:none;transition:color .25s,background-color .25s;display:block}.nav-dropdown-menu a:hover{color:var(--charcoal);background:#b8955a1a}.nav-dropdown-menu a.active{color:var(--gold);background:#b8955a1f}.nav.dropdown-open .nav-links{overflow:visible}.nav:has(.nav-dropdown:hover) .nav-links{overflow:visible}.nav:has(.nav-dropdown:focus-within) .nav-links{overflow:visible}.footer{text-align:center;border-top:1px solid #b8955a2e;padding:2.5rem 1.5rem 3rem}.footer .footer-names{font-family:var(--font-serif);color:var(--gold);font-size:1.3rem;font-style:italic}.footer p{letter-spacing:.12em;text-transform:uppercase;color:var(--charcoal-soft);margin-top:.4rem;font-size:.8rem}.footer-links{flex-wrap:wrap;justify-content:center;gap:.4rem 1.4rem;margin-top:1rem;display:flex}.footer-links a{letter-spacing:.14em;text-transform:uppercase;color:var(--charcoal-soft);font-size:.75rem;text-decoration:none;transition:color .25s}.footer-links a:hover{color:var(--gold)}.page-header{text-align:center;margin-bottom:3.5rem}.eyebrow{letter-spacing:.32em;text-transform:uppercase;color:var(--gold);font-size:.78rem;font-weight:400}.page-header h1{margin-top:.6rem;font-size:clamp(2.4rem,6vw,3.6rem)}.page-header .lede{max-width:34rem;color:var(--charcoal-soft);margin:1rem auto 0;font-size:1.02rem}.divider{color:var(--gold);justify-content:center;align-items:center;gap:.9rem;margin:1.6rem auto 0;display:flex}.divider:before,.divider:after{content:"";background:linear-gradient(to right, transparent, var(--gold-soft));width:64px;height:1px}.divider:after{background:linear-gradient(to left, transparent, var(--gold-soft))}.home{text-align:center;min-height:100vh;padding:calc(var(--nav-height) + 2rem) 1.5rem 4rem;flex-direction:column;justify-content:center;align-items:center;display:flex}.home-eyebrow{letter-spacing:.38em;text-transform:uppercase;color:var(--gold);font-size:.8rem;animation:.8s both fade-up}.home-names{margin-top:1.2rem;font-size:clamp(3rem,10vw,6rem);font-weight:500;animation:.8s .1s both fade-up}.home-names .amp{color:var(--gold);padding:0 .12em;font-style:italic;font-weight:400}.home-date{font-family:var(--font-serif);color:var(--charcoal-soft);margin-top:.8rem;font-size:clamp(1.15rem,3.4vw,1.6rem);font-style:italic;animation:.8s .2s both fade-up}.home-venue{letter-spacing:.24em;text-transform:uppercase;color:var(--charcoal-soft);margin-top:.35rem;font-size:.85rem;animation:.8s .25s both fade-up;display:inline-block}.home-venue-link{border-bottom:1px solid #0000;padding-bottom:2px;text-decoration:none;transition:color .25s,border-color .25s}.home-venue-link:hover,.home-venue-link:focus-visible{color:var(--gold);border-color:var(--gold-soft)}.footer-venue-link{border-bottom:1px solid #b8955a59;text-decoration:none;transition:color .25s,border-color .25s}.footer-venue-link:hover,.footer-venue-link:focus-visible{color:var(--gold);border-color:var(--gold)}.countdown{justify-content:center;align-items:flex-start;gap:clamp(.5rem,3vw,2rem);margin-top:3rem;animation:.8s .35s both fade-up;display:flex}.countdown-unit{background:var(--white);min-width:clamp(72px,20vw,140px);box-shadow:var(--shadow-soft);border:1px solid #b8955a38;border-radius:14px;padding:clamp(.9rem,2.5vw,1.6rem) clamp(.4rem,1.5vw,1.2rem)}.countdown-value{font-family:var(--font-serif);font-variant-numeric:tabular-nums;color:var(--charcoal);font-size:clamp(2.4rem,8vw,4.4rem);font-weight:500;line-height:1.05;transition:transform .18s,color .18s;display:block}.countdown-value.tick{color:var(--gold);transform:translateY(-3px)}.countdown-label{letter-spacing:.28em;text-transform:uppercase;color:var(--charcoal-soft);margin-top:.4rem;font-size:.68rem;display:block}.countdown-sep{font-family:var(--font-serif);color:var(--gold-soft);align-self:center;padding-bottom:1.4rem;font-size:clamp(1.6rem,5vw,3rem)}.countdown-note{letter-spacing:.18em;text-transform:uppercase;color:var(--charcoal-soft);margin-top:2.2rem;font-size:.85rem;animation:.8s .45s both fade-up}.celebration{margin-top:3rem;animation:.8s .35s both fade-up}.celebration h2{color:var(--gold);font-size:clamp(2.2rem,7vw,4rem);font-style:italic}.celebration p{color:var(--charcoal-soft);margin-top:.8rem}.home-cta{flex-wrap:wrap;justify-content:center;gap:.8rem;margin-top:3rem;animation:.8s .55s both fade-up;display:flex}.btn{letter-spacing:.2em;text-transform:uppercase;border-radius:999px;padding:.75rem 1.6rem;font-size:.78rem;font-weight:400;text-decoration:none;transition:transform .25s,box-shadow .25s,background-color .25s;display:inline-block}.btn:hover{transform:translateY(-2px)}.btn-primary{background:var(--gold);color:var(--white);box-shadow:0 8px 24px #b8955a59}.btn-primary:hover{background:#a5844b}.btn-ghost{color:var(--gold);background:0 0;border:1px solid #b8955a80}.btn-ghost:hover{background:#b8955a14}.timeline-section{margin-bottom:4rem}.timeline-section>h2{text-align:center;font-size:clamp(1.7rem,4.5vw,2.3rem)}.timeline-section .section-sub{text-align:center;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);margin-top:.5rem;font-size:.82rem}.timeline{flex-direction:column;gap:1.1rem;margin-top:2.5rem;padding-left:2.2rem;list-style:none;display:flex;position:relative}.timeline:before{content:"";background:linear-gradient(to bottom, var(--gold-soft), var(--blush-deep));width:1px;position:absolute;top:6px;bottom:6px;left:7px}.timeline-item{list-style:none;animation:.6s both fade-up;position:relative}.timeline-item::marker{content:none}.timeline-item:before{content:"";background:var(--ivory);border:2px solid var(--gold);border-radius:50%;width:15px;height:15px;position:absolute;top:1.45rem;left:-2.2rem}.timeline-item.highlight:before{background:var(--gold);box-shadow:0 0 0 5px #b8955a2e}.timeline-card{background:var(--white);box-shadow:var(--shadow-soft);border:1px solid #b8955a40;border-radius:14px;padding:1.2rem 1.4rem 1.3rem}.timeline-item.highlight .timeline-card{border-color:#b8955a99;box-shadow:0 10px 40px #b8955a29}.timeline-card-btn{width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;transition:border-color .25s,box-shadow .25s,transform .25s;display:block}.timeline-card-btn:hover{border-color:#b8955a8c;transform:translateY(-1px);box-shadow:0 12px 44px #2e2a261f}.timeline-card-btn:focus-visible{outline:2px solid var(--gold);outline-offset:3px}.timeline-location-cue{letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin-top:.75rem;font-size:.72rem;display:inline-block}.timeline-place{margin-top:.9rem}.timeline-place .places{margin-top:0}.timeline-time{letter-spacing:.2em;text-transform:uppercase;color:var(--gold);font-size:.78rem;font-weight:500}.timeline-title{font-family:var(--font-serif);margin-top:.25rem;font-size:1.4rem;font-weight:600}.timeline-item.highlight .timeline-title{color:var(--gold)}.timeline-detail{color:var(--charcoal-soft);max-width:36rem;margin-top:.35rem;font-size:.95rem}.timeline-meta{letter-spacing:.14em;text-transform:uppercase;color:var(--charcoal-soft);background:var(--cream);border-radius:999px;margin-top:.5rem;padding:.2rem .7rem;font-size:.68rem;display:inline-block}.card-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;margin-top:2rem;display:grid}.card{background:var(--white);box-shadow:var(--shadow-soft);border:1px solid #b8955a33;border-radius:14px;padding:1.4rem 1.5rem}.card h3{font-size:1.25rem;font-weight:600}.card .card-when{letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin-top:.3rem;font-size:.78rem}.chip-list{flex-wrap:wrap;gap:.5rem;margin-top:1.4rem;list-style:none;display:flex}.chip-list li{color:var(--charcoal-soft);background:var(--white);border:1px solid #b8955a40;border-radius:999px;padding:.4rem .95rem;font-size:.82rem}.menu-list{counter-reset:course;margin-top:0;list-style:none}.section-link{text-align:center;margin-top:1.8rem}.section-link a{letter-spacing:.18em;text-transform:uppercase;color:var(--gold);border-bottom:1px solid #b8955a59;font-size:.78rem;text-decoration:none;transition:border-color .25s}.section-link a:hover,.section-link a:focus-visible{border-color:var(--gold)}.menu-item{border-bottom:1px dashed #b8955a4d;align-items:baseline;gap:1rem;padding:.9rem 0;display:flex}.menu-item:last-child{border-bottom:none}.menu-no{width:2.2rem;height:2.2rem;font-family:var(--font-serif);color:var(--gold);border:1px solid #b8955a66;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:1.05rem;font-style:italic;display:inline-flex}.menu-name{font-family:var(--font-serif);flex:1;font-size:1.35rem;font-weight:500}.menu-time{letter-spacing:.16em;text-transform:uppercase;color:var(--charcoal-soft);white-space:nowrap;font-size:.75rem}.menu-note{text-align:center;color:var(--charcoal-soft);margin-top:1.2rem;font-size:.8rem;font-style:italic}.places{gap:1.4rem;margin-top:2.5rem;display:grid}.place-card{background:var(--white);box-shadow:var(--shadow-soft);scroll-margin-top:calc(var(--nav-height) + 1.2rem);border:1px solid #b8955a33;border-radius:14px;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);display:grid;overflow:hidden}.place-map{background:var(--cream);min-height:260px}.place-map iframe{border:0;width:100%;height:100%;min-height:260px;display:block}.place-body{flex-direction:column;align-items:flex-start;padding:1.5rem 1.6rem 1.6rem;display:flex}.place-role{letter-spacing:.22em;text-transform:uppercase;color:var(--gold);font-size:.72rem;font-weight:400}.place-body h3{margin-top:.35rem;font-size:1.45rem;font-weight:600}.place-zh{color:var(--charcoal-soft);margin-top:.15rem;font-size:.95rem}.place-address{color:var(--charcoal-soft);margin-top:.85rem;font-size:.92rem;font-style:normal;line-height:1.55}.place-note{color:var(--charcoal-soft);margin-top:.7rem;font-size:.88rem}.place-body .btn{margin-top:1.25rem}.pickup-times{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;max-width:34rem;margin:0 auto;display:grid}.pickup-time-card{text-align:center;background:var(--white);box-shadow:var(--shadow-soft);border:1px solid #b8955a40;border-radius:14px;padding:1.6rem 1.5rem}.pickup-coach{letter-spacing:.3em;text-transform:uppercase;color:var(--gold);font-size:.75rem;display:block}.pickup-time{font-family:var(--font-serif);color:var(--charcoal);margin-top:.4rem;font-size:clamp(2.4rem,6vw,3.2rem);font-weight:500;line-height:1.1;display:block}.pickup-time-label{letter-spacing:.16em;text-transform:uppercase;color:var(--charcoal-soft);margin-top:.5rem;font-size:.72rem;display:block}.wip{text-align:center}.wip-badge{letter-spacing:.3em;text-transform:uppercase;color:var(--gold);border:1px solid #b8955a73;border-radius:999px;margin-top:1.4rem;padding:.45rem 1.2rem;font-size:.75rem;display:inline-block}.wip-list{text-align:left;max-width:30rem;margin:2.5rem auto 0}.wip-list h2{text-align:center;font-size:1.4rem}.venue-photo{box-shadow:var(--shadow-soft);border:1px solid #b8955a33;border-radius:16px;margin:0 0 2.5rem;overflow:hidden}.venue-photo img{object-fit:cover;width:100%;height:clamp(240px,42vw,460px);display:block}.venue-photo figcaption{letter-spacing:.14em;text-transform:uppercase;color:var(--charcoal-soft);background:var(--white);text-align:center;padding:.75rem 1.2rem;font-size:.8rem}.venue-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);align-items:stretch;gap:1.5rem;display:grid}.venue-info{flex-direction:column;display:flex}.venue-info h2{font-size:1.5rem}.venue-address{color:var(--charcoal);margin-top:.8rem;font-size:1.05rem;font-style:normal;line-height:1.7}.venue-address span{display:block}.venue-address-zh{color:var(--charcoal-soft);margin-top:.4rem;font-size:.98rem}.venue-spaces{color:var(--charcoal-soft);margin-top:1rem;font-size:.92rem}.venue-meta{flex-wrap:wrap;gap:1.2rem 2rem;margin:1.4rem 0;display:flex}.venue-meta dt{letter-spacing:.2em;text-transform:uppercase;color:var(--gold);font-size:.7rem}.venue-meta dd{margin-top:.2rem;font-size:1rem}.venue-meta a{color:var(--charcoal);border-bottom:1px solid #b8955a66;text-decoration:none}.venue-meta a:hover{color:var(--gold)}.venue-info .btn{align-self:flex-start;margin-top:auto}.venue-map{box-shadow:var(--shadow-soft);border:1px solid #b8955a33;border-radius:16px;min-height:320px;overflow:hidden}.venue-map iframe{border:0;width:100%;height:100%;min-height:320px;display:block}.venue-coaches{margin-top:4rem}@media (width<=720px){.venue-grid{grid-template-columns:1fr}.venue-info .btn{text-align:center;align-self:stretch}}@media (width<=640px){:root{--nav-height:60px}.nav-inner{padding:0 1rem}.nav-brand{font-size:1.2rem}.nav-links a,.nav-dropdown-trigger{letter-spacing:.1em;padding:.4rem .6rem;font-size:.7rem}.countdown{flex-wrap:wrap;gap:.7rem}.countdown-sep{display:none}.countdown-unit{min-width:calc(50% - .7rem)}.timeline{padding-left:1.8rem}.timeline-item:before{left:-1.8rem}.menu-name{font-size:1.15rem}.place-card{grid-template-columns:1fr}.place-map,.place-map iframe{min-height:220px}}
