/* Route-only mechanics. Visual design deliberately remains in the original
   pre-split stylesheet stack (styles, visual-refresh and final-polish). */
body[data-route] [id]{scroll-margin-top:120px}
.nav-item{position:relative;display:flex;align-items:center}
.nav-flyout{position:absolute;top:calc(100% + 14px);left:50%;z-index:70;display:grid;min-width:220px;padding:8px;border:1px solid var(--line);background:var(--paper);box-shadow:6px 6px 0 rgba(17,35,58,.12);opacity:0;visibility:hidden;transform:translate(-50%,-6px);transition:opacity .16s ease,transform .16s ease,visibility .16s ease}
.nav-item:hover .nav-flyout,.nav-item:focus-within .nav-flyout{opacity:1;visibility:visible;transform:translate(-50%,0)}
.nav-flyout a{display:flex;align-items:center;justify-content:space-between;padding:11px 12px;border-bottom:1px solid var(--line);font-size:15px!important}.nav-flyout a:last-child{border-bottom:0}.nav-flyout a:hover,.nav-flyout a:focus-visible{color:var(--orange)}.nav-flyout b{font-size:19px;color:var(--orange)}
.route-menu-button{display:none}.route-menu-group{display:contents}
#route-menu{width:min(480px,calc(100% - 32px));padding:24px;border:1px solid var(--line);background:var(--paper);color:var(--ink);box-shadow:10px 10px 0 rgba(17,35,58,.18)}#route-menu::backdrop{background:rgba(17,35,58,.72)}#route-menu [data-menu-close]{display:block;margin-left:auto;border:1px solid var(--line);background:transparent;font-size:28px}#route-menu nav{display:grid;gap:0}#route-menu nav a{padding:14px 0;border-bottom:1px solid var(--line);font-size:18px}.route-menu-child{margin-left:16px;color:var(--muted)!important;font-size:15px!important}
@media(max-width:1500px){body[data-route]>.site-header .top-cta{display:none}body[data-route]>.site-header>nav{gap:clamp(16px,2vw,30px)}}
@media(max-width:850px){body[data-route]>.site-header>nav{display:none}.route-menu-button{display:block;min-height:44px;padding:10px 18px;border:1px solid var(--ink);background:var(--ink);color:#fff;font:500 16px 'DM Sans',sans-serif}}

/* One display face throughout the split site. The original hero established
   Fraunces as the editorial voice; older fallback rules must not turn later
   route headings into generic Georgia. Body copy deliberately remains DM Sans. */
body[data-route] main :is(h1,h2,h3),body[data-route] main .media>strong,body[data-route] main .price,body[data-route] main .course-route b{font-family:'Fraunces',Georgia,serif!important;font-weight:600}

/* The original hero's lead copy is compact and confident. Use the same DM Sans
   weight, tracking and rhythm for each route's primary explanatory text. */
body[data-route] main .intro,body[data-route] main .finder-heading>p,body[data-route] main .watch-themes p:not(.eyebrow){font-family:'DM Sans',sans-serif!important;font-weight:500;letter-spacing:-.018em;line-height:1.45;color:#263347}

/* Editorial reading hierarchy for every route: display titles carry the page,
   lead copy is purposeful, and supporting copy never falls back to a generic
   browser-text feel. The long-form story remains deliberately calmer. */
body[data-route] main :is(.section:not(.story),.watch,.testimonials--full) :is(h3,h4){font-family:'Fraunces',Georgia,serif;font-weight:600;letter-spacing:-.035em}
body[data-route] main :is(.section:not(.story),.watch,.testimonials--full) :is(.service-grid p,.tutor-grid p,.about-grid p,.boundary-grid p,.watch-themes p:not(.eyebrow),.notice,.disclaimer,.helper){font-family:'DM Sans',sans-serif;font-weight:500;letter-spacing:-.012em;line-height:1.58;color:#34465b}
body[data-route] main :is(.section:not(.story),.watch,.testimonials--full)>.intro{max-width:44rem;font-size:clamp(19px,1.65vw,25px)}
