*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}body{font-family:var(--font-body);font-size:var(--text-sm);background:var(--color-paper);color:var(--color-ink);min-height:100vh;line-height:1.55}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.015em;text-wrap:balance;font-weight:400;line-height:1.15}h1{font-size:var(--text-xl);margin-bottom:.5rem}h2{font-size:var(--text-lg);margin-bottom:.45rem}h3{font-size:var(--text-md);margin-top:1.2rem;margin-bottom:.45rem}.app-shell{flex-direction:column;min-height:100vh;display:flex}.env-banner{z-index:20;background:var(--color-surface);color:var(--color-danger);border-bottom:2px solid var(--color-danger);font-size:var(--text-sm);align-items:baseline;gap:.75rem;padding:.55rem 2rem;line-height:1.35;display:flex;position:sticky;top:0}.env-banner strong{letter-spacing:.18em;text-transform:uppercase;flex:none}.app-header{background:var(--color-chrome);color:var(--color-ink);border-bottom:1px solid var(--color-line);justify-content:space-between;align-items:baseline;gap:1rem;padding:1.15rem 2rem 1rem;display:flex}.brand-mark{font-family:var(--font-display);font-size:var(--text-md);letter-spacing:.2em;text-transform:uppercase;font-weight:500}.brand-meta{font-size:var(--text-xs);color:var(--color-muted);letter-spacing:.06em}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.brand-logo{background-image:var(--brand-logo);background-position:0;background-repeat:no-repeat;background-size:contain;width:11rem;max-width:40vw;height:1.6rem;display:block}.app-main{flex:1;width:100%;max-width:62rem;margin:0 auto;padding:2.25rem 2rem 4rem}.app-nav{background:var(--color-chrome);border-bottom:1px solid var(--color-line);flex-wrap:wrap;align-items:center;gap:.3rem;padding:.5rem 2rem;display:flex}.app-nav a{color:var(--color-ink);font-size:var(--text-xs);letter-spacing:.07em;text-transform:uppercase;transition:background var(--motion-fast) var(--motion-ease);border-radius:999px;padding:.34rem .7rem;text-decoration:none}.app-nav a:hover{background:var(--color-surface)}.credits-chip{border:1px solid var(--color-edge);background:var(--color-surface);color:var(--color-ink);font-size:var(--text-xs);white-space:nowrap;font-variant-numeric:tabular-nums;border-radius:999px;align-items:baseline;gap:.4rem;margin-left:auto;padding:.2rem .8rem;display:inline-flex}.credits-chip strong{font-family:var(--font-display);font-size:var(--text-sm);letter-spacing:.01em;font-weight:500}.card{background:var(--color-surface);border:1px solid var(--color-line);box-shadow:var(--elevation);border-radius:.75rem;margin-bottom:1.4rem;padding:1.5rem 1.7rem}.card h1,.card h2{color:var(--color-ink)}.card p{max-width:var(--measure)}.muted{color:var(--color-muted)}.btn{border:1px solid var(--color-brand);background:var(--color-brand);color:var(--color-on-brand);font-family:var(--font-body);font-size:var(--text-xs);letter-spacing:.07em;text-transform:uppercase;cursor:pointer;transition:transform var(--motion-fast) var(--motion-ease), opacity var(--motion-fast) var(--motion-ease);border-radius:999px;padding:.5rem 1.25rem;text-decoration:none;display:inline-block}.btn:hover:not(:disabled){transform:translateY(-1px)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-link{border:1px solid var(--color-edge);background:var(--color-surface);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-xs);letter-spacing:.07em;text-transform:uppercase;transition:border-color var(--motion-fast) var(--motion-ease);border-radius:999px;padding:.4rem 1.05rem;text-decoration:none;display:inline-block}.btn-link:hover:not(:disabled){border-color:var(--color-ink)}.btn-link:disabled{opacity:.4;cursor:not-allowed}.field{margin-bottom:1rem;display:block}.field span{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--color-muted);margin-bottom:.3rem;display:block}.field input,.field select,.field textarea{box-sizing:border-box;text-overflow:ellipsis;border:1px solid var(--color-edge);background:var(--color-surface);width:100%;max-width:22rem;color:var(--color-ink);font-size:var(--text-sm);transition:border-color var(--motion-fast) var(--motion-ease);border-radius:.45rem;padding:.55rem .7rem;font-family:inherit}.field textarea{max-width:34rem}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--color-ink)}.flash-error{border-left:3px solid var(--color-danger);background:var(--color-surface);color:var(--color-danger);font-size:var(--text-sm);margin-bottom:1rem;padding:.7rem 1rem}.flash-ok{border-left:3px solid var(--color-success);background:var(--color-surface);color:var(--color-success);font-size:var(--text-sm);margin-bottom:1rem;padding:.7rem 1rem}.section-grid{flex-wrap:wrap;align-items:stretch;gap:1.2rem;display:flex}.section-grid>*{flex:14rem;margin-bottom:0}.search-row{flex-wrap:wrap;align-items:flex-end;gap:.7rem;display:flex}.data-table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}.data-table th{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.1em;color:var(--color-muted);font-weight:600}.data-table th,.data-table td{text-align:left;border-bottom:1px solid var(--color-line);padding:.6rem .75rem}.data-table td{font-variant-numeric:tabular-nums}.data-table a{color:var(--color-brand);font-weight:600}.data-table a.btn{color:var(--color-on-brand)}.data-table a.btn-link{color:var(--color-ink)}.status-pill{border:1px solid var(--color-brand-accent);color:var(--color-brand-accent);font-size:var(--text-xs);letter-spacing:.06em;text-transform:lowercase;white-space:nowrap;border-radius:999px;padding:.06rem .6rem;display:inline-block}.scarce-pill{border:1px solid var(--color-brand);color:var(--color-brand);font-size:var(--text-xs);letter-spacing:.06em;white-space:nowrap;font-variant-numeric:tabular-nums;border-radius:999px;padding:.06rem .6rem;display:inline-block}.metric{font-family:var(--font-display);font-size:var(--text-lg);letter-spacing:-.015em;white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:500}.metric-label{white-space:nowrap;color:var(--color-muted);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;display:inline-block}.note-list{margin-top:1rem;list-style:none}.note-list li{border-left:3px solid var(--color-line);margin-bottom:.7rem;padding:.4rem .9rem}.profile-list{grid-template-columns:max-content 1fr;gap:.5rem 1.4rem;margin:1rem 0;display:grid}.profile-list dt{color:var(--color-muted);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em}.review-panel{border:1px solid var(--color-line);border-radius:.75rem;overflow:hidden}.review-headline{font-family:var(--font-display);font-size:var(--text-lg);margin:0}.review-meta{flex-wrap:wrap;gap:1rem 1.6rem;margin:1.2rem 0;display:flex}.review-meta>*{flex:10rem}.review-meta dt{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.1em;color:var(--color-muted)}.review-meta dd{font-size:var(--text-md);font-family:var(--font-display);font-variant-numeric:tabular-nums;margin-top:.15rem}.cost-line{font-family:var(--font-display);font-size:var(--text-md);border-top:1px solid var(--color-line);margin:1rem 0;padding-top:1rem}.offer-card{border:1px solid var(--color-line);border-radius:.6rem;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.9rem;padding:1rem 1.2rem;display:flex}.offer-name{font-family:var(--font-display);font-size:var(--text-md)}.offer-price{color:var(--color-muted);font-variant-numeric:tabular-nums}.day-heading{font-size:var(--text-md);margin-bottom:.2rem}.day-meta{font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--color-muted)}.class-list,.class-list tbody{display:block}.class-list tbody{max-width:46rem;padding-left:3.9rem;position:relative}.class-list tbody:before{content:"";background:var(--color-line);width:1px;position:absolute;top:.6rem;bottom:.6rem;left:3.1rem}.class-list thead{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.class-list tbody tr{margin-top:var(--row-gap,1.1rem);animation:rise var(--motion-settle) var(--motion-ease) both;flex-wrap:wrap;align-items:baseline;gap:.1rem .45rem;display:flex;position:relative}.class-list tbody tr:first-child{animation-delay:calc(var(--motion-stagger) * 0)}.class-list tbody tr:nth-child(2){animation-delay:calc(var(--motion-stagger) * 1)}.class-list tbody tr:nth-child(3){animation-delay:calc(var(--motion-stagger) * 2)}.class-list tbody tr:nth-child(4){animation-delay:calc(var(--motion-stagger) * 3)}.class-list tbody tr:nth-child(5){animation-delay:calc(var(--motion-stagger) * 4)}.class-list tbody tr:nth-child(6){animation-delay:calc(var(--motion-stagger) * 5)}.class-list tbody tr:nth-child(n+7){animation-delay:calc(var(--motion-stagger) * 6)}.class-list tbody tr:before{content:"";background:var(--color-surface);border:1px solid var(--color-edge);border-radius:50%;width:.44rem;height:.44rem;position:absolute;top:.5rem;left:-.99rem}.class-list tbody tr[data-scarce="1"]:before{background:var(--color-brand);border-color:var(--color-brand)}.class-list tbody tr[data-quiet]:after{content:attr(data-quiet);left:-3.9rem;top:calc(-.5 * var(--row-gap,1.1rem) - .55em);font-size:var(--text-xs);letter-spacing:.07em;text-transform:uppercase;color:var(--color-muted);background:var(--color-surface);white-space:nowrap;padding:0 .4rem;position:absolute}.class-list td{border-bottom:0;padding:0;display:block}.class-list td[data-label=Time]{text-align:right;width:2.6rem;font-size:var(--text-md);font-variant-numeric:tabular-nums;letter-spacing:-.01em;position:absolute;top:.05rem;left:-3.9rem}.class-list td[data-label=Time] time{font-family:var(--font-body)}.class-list td[data-label=Class]{flex:1 0 100%;font-weight:600}.class-list td[data-label=Instructor],.class-list td[data-label=Duration]{color:var(--color-muted);font-size:var(--text-xs)}.class-list td[data-label=Duration]{flex:1 0 auto}.class-list td[data-label=Duration]:before{content:"· "}.class-list td[data-label=Cost]{font-size:var(--text-xs);flex:1 0 100%;margin-top:.15rem}.class-list td[data-label=Seats]{flex:0 auto;margin-top:.35rem}.class-list td[data-label=Booking]{text-align:right;flex:1 0 auto;margin-top:.35rem}.class-list td[data-label=Booking] p{text-align:left;font-size:var(--text-xs);margin-top:.25rem}.class-list td[data-label=Booking] form{display:inline-block}.app-main:has(>.arrival){justify-content:center;align-items:center;min-height:calc(100dvh - 9rem);display:flex}.arrival{border:1px solid var(--color-line);background:var(--color-surface);border-radius:.9rem;grid-template-columns:1fr;width:100%;max-width:58rem;min-height:26rem;margin:0 auto;display:grid;overflow:hidden}.arrival-identity{background:var(--color-chrome);flex-direction:column;justify-content:space-between;gap:1.8rem;padding:2.4rem 2.1rem;display:flex;position:relative;overflow:hidden}.arrival-identity:after{content:"";pointer-events:none;opacity:.4;background:repeating-linear-gradient(to bottom, transparent 0 3.9rem, var(--color-line) 3.9rem 4rem);position:absolute;inset:0;-webkit-mask-image:linear-gradient(#0000 4%,#000 22% 82%,#0000 98%);mask-image:linear-gradient(#0000 4%,#000 22% 82%,#0000 98%)}.arrival-identity>*{z-index:1;position:relative}.arrival-mark{font-family:var(--font-display);font-size:var(--text-2xl);letter-spacing:-.02em;overflow-wrap:anywhere;margin:0;font-weight:400;line-height:1.02}.arrival-logo{background-image:var(--brand-logo);background-position:0;background-repeat:no-repeat;background-size:contain;width:17rem;max-width:100%;height:4.4rem;display:block}.arrival-hero{border:1px solid var(--color-line);background-color:var(--color-surface);background-image:var(--brand-hero);background-position:50%;background-repeat:no-repeat;background-size:cover;border-radius:.6rem;height:8.5rem}.arrival-eyebrow{font-family:var(--font-body);font-size:var(--text-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--color-muted);margin-bottom:.8rem;font-weight:400;display:block}.arrival-voice{font-family:var(--font-display);font-size:var(--text-md);max-width:24ch;color:var(--color-ink);margin-top:1rem;line-height:1.4}.arrival-next{border-top:1px solid var(--color-line);padding-top:.9rem}.arrival-next .k{font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--color-muted);display:block}.arrival-next .v{flex-wrap:wrap;align-items:baseline;gap:.6rem;margin-top:.35rem;display:flex}.arrival-next time{font-family:var(--font-body);font-size:var(--text-lg);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.arrival-signin{background:var(--color-surface);flex-direction:column;justify-content:center;padding:2.4rem 2.1rem;display:flex}.arrival-signin .field input{max-width:none}.arrival-signin .btn{text-align:center;width:100%}.arrival-note{font-size:var(--text-xs);color:var(--color-muted);margin-top:.8rem}a{color:var(--color-ink);-webkit-text-decoration-color:var(--color-edge);text-decoration-color:var(--color-edge);text-underline-offset:.16em}a:hover{-webkit-text-decoration-color:var(--color-ink);text-decoration-color:var(--color-ink)}@media (min-width:860px){.arrival{grid-template-columns:1.08fr .92fr}}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.rise>*{animation:rise var(--motion-settle) var(--motion-ease) both}.rise>:first-child{animation-delay:calc(var(--motion-stagger) * 0)}.rise>:nth-child(2){animation-delay:calc(var(--motion-stagger) * 1)}.rise>:nth-child(3){animation-delay:calc(var(--motion-stagger) * 2)}.rise>:nth-child(4){animation-delay:calc(var(--motion-stagger) * 3)}.rise>:nth-child(5){animation-delay:calc(var(--motion-stagger) * 4)}.rise>:nth-child(n+6){animation-delay:calc(var(--motion-stagger) * 5)}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.app-nav a:focus-visible{background:var(--color-surface)}@media (min-width:993px){.app-main{max-width:75rem}}@media (max-width:640px){.app-main{padding:1.2rem 1rem 3rem}.app-header{flex-direction:row;justify-content:space-between;align-items:baseline;gap:.6rem;padding:.75rem 1rem .7rem}.app-header .brand-meta{font-size:var(--text-xs);text-align:right;min-width:0}.app-nav{scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-wrap:nowrap;padding:.45rem 1rem;overflow-x:auto}.app-nav::-webkit-scrollbar{display:none}.app-nav>*{scroll-snap-align:start;white-space:nowrap;flex:none}.card{padding:1.1rem 1rem}.data-table:not(.class-list){width:100%;max-width:100%;display:block;overflow-x:auto}.data-table:not(.class-list) th{white-space:nowrap}.arrival-identity,.arrival-signin{padding:1.8rem 1.3rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
