/* Movement is isolated from layout and runs only when JavaScript is ready. */
.learning-handnote, .learning-sticky, .learning-feedback-note,
.reviews-handnote, .review-notebook-caption { font-family: var(--font-hand); font-style: normal; }
@media (min-width: 901px) { .reviews-handnote { font-size: 1.375rem; line-height: .95; } }
@keyframes hero-reveal {
    from { opacity: 0; transform: translate3d(0, 1.5rem, 0); }
    to { opacity: 1; transform: translate3d(0, 0, 0); }
}
@keyframes stamp-float {
    0%, 100% { transform: translateY(0) rotate(-3deg); }
    50% { transform: translateY(-0.375rem) rotate(1deg); }
}
/* Individual transform properties leave each illustration's original rotation intact. */
@keyframes illustration-float {
    0%, 100% { translate: 0 0; }
    50% { translate: 0 -0.3125rem; }
}
@keyframes heart-float {
    0%, 100% { translate: 0 0; }
    50% { translate: 0 -0.375rem; }
}
@keyframes margin-star-twinkle {
    0%, 100% { opacity: .62; scale: .94; }
    50% { opacity: 1; scale: 1.04; }
}
@keyframes scroll-line {
    0% { transform: translateX(-100%); }
    50% { transform: translateX(0); }
    100% { transform: translateX(100%); }
}
@keyframes orbit-turn { to { transform: rotate(360deg); } }
/* A small illustrated constellation, not a particle field over the content. */
.hero-orbit { position: absolute; z-index: 5; top: 0; right: -0.75rem; width: 11.25rem; height: 9.375rem; color: var(--rose); stroke: currentColor; stroke-width: 1.15; stroke-linecap: round; stroke-linejoin: round; pointer-events: none; --ink-duration: 2.1s; --ink-delay: .7s; }
.hero-orbit-trail { opacity: .45; }
.hero-orbit-star { transform-box: fill-box; transform-origin: center; }
@keyframes moon-drift {
    0%, 100% { translate: 0 0; rotate: 0deg; }
    50% { translate: -0.25rem -0.625rem; rotate: 9deg; }
}
@keyframes open-book-sway {
    0%, 100% { translate: 0 0; rotate: 0deg; }
    50% { translate: 0 -0.4375rem; rotate: 1.6deg; }
}
@keyframes orbit-star-drift {
    0%, 100% { translate: 0 0; rotate: -8deg; opacity: .6; }
    50% { translate: 0 -0.4375rem; rotate: 8deg; opacity: 1; }
}
@keyframes ink-draw { from { stroke-dashoffset: 1; } to { stroke-dashoffset: 0; } }
@keyframes ink-tip-reveal {
    from { opacity: 0; stroke-dashoffset: 1; }
    to { opacity: 1; stroke-dashoffset: 0; }
}
@keyframes chevron-ink {
    from { stroke-dasharray: 20; stroke-dashoffset: 20; opacity: .2; }
    to { stroke-dasharray: 20; stroke-dashoffset: 0; opacity: 1; }
}
.hero-moon { animation: moon-drift 7s ease-in-out infinite paused; }
.hero-open-book { transform-origin: center 75%; animation: open-book-sway 8s ease-in-out -2s infinite paused; }
.hero-orbit-star { animation: orbit-star-drift 5.5s ease-in-out infinite paused; }
.hero-orbit-star--two { animation-delay: -2.3s; animation-duration: 6.5s; }
.hero-orbit-dot { animation: margin-star-twinkle 4.5s ease-in-out -1.5s infinite paused; }
.hero.motion-in-view .hero-moon, .hero.motion-in-view .hero-open-book,
.hero.motion-in-view .hero-orbit-star, .hero.motion-in-view .hero-orbit-dot { animation-play-state: running; }
.ink-ready [data-ink] { stroke-dasharray: 1; stroke-dashoffset: 1; }
.ink-ready .is-drawn [data-ink] { animation: ink-draw var(--ink-duration, 2.2s) ease-in-out var(--ink-delay, 0s) both; }
.learning-path { --ink-duration: 3.2s; }
.ink-ready .learning-path-tip, .ink-ready .kitten-arrow-tip { opacity: 0; stroke-dasharray: 1; stroke-dashoffset: 1; }
.ink-ready .learning-path.is-drawn .learning-path-tip { animation: ink-tip-reveal 300ms ease-out var(--ink-duration) both; }
.ink-ready .education-kitten.is-drawn .kitten-arrow-tip { animation: ink-tip-reveal 300ms ease-out 2.7s both; }
.hero-enter { animation: hero-reveal 1s var(--ease-out) both; animation-delay: var(--enter-delay, 0ms); }
.hero-stamp { animation: stamp-float 6s ease-in-out 1s infinite paused; }
.hero.motion-in-view .hero-stamp { animation-play-state: running; }
.learning-decoration[aria-hidden="true"] > img,
.reviews-decoration[aria-hidden="true"] > img {
    animation: illustration-float 8.5s ease-in-out infinite paused;
}
.reviews-decoration[aria-hidden="true"] > img { animation-delay: -2.8s; }
.heart-location[alt=""] { animation: heart-float 7.8s ease-in-out -1.5s infinite paused; }
.learning-decoration[aria-hidden="true"] .learning-spark,
.reviews-decoration[aria-hidden="true"] .reviews-spark {
    transform-box: fill-box; transform-origin: center;
    animation: margin-star-twinkle 7s ease-in-out infinite paused;
}
.learning-decoration[aria-hidden="true"] .learning-spark--small,
.reviews-decoration[aria-hidden="true"] .reviews-spark--two { animation-delay: -3.3s; }
.learning-decoration.motion-in-view > img,
.reviews-decoration.motion-in-view > img,
.heart-location.motion-in-view,
.learning-decoration.motion-in-view .learning-spark,
.reviews-decoration.motion-in-view .reviews-spark { animation-play-state: running; }
.course-art { translate: 0 0; rotate: 0deg; transform-origin: center 70%; transition: translate 550ms var(--ease-out), rotate 650ms var(--ease-out); }
@media (hover: hover) and (pointer: fine) {
    .course-card:hover .course-art, .course-card:focus-within .course-art { translate: 0 -0.5rem; rotate: -2deg; }
    .course-link:hover svg path, .course-link:focus-visible svg path { animation: chevron-ink 900ms ease-in-out both; }
}
.reveal-ready [data-reveal] {
    opacity: 0; transform: translate3d(0, 1.5rem, 0);
    transition: opacity 800ms var(--ease-out) var(--reveal-delay, 0ms), transform 900ms var(--ease-out) var(--reveal-delay, 0ms);
}
.reveal-ready [data-reveal].is-visible { opacity: 1; transform: none; }
/* Off-screen slides fade in without creating vertical scrollable overflow. */
.reveal-ready .course-card[data-reveal] { transform: none; transition: opacity 650ms ease, border-color 300ms, box-shadow 400ms var(--ease-out); }
.mobile-menu { opacity: 0; transform: translateY(-0.625rem); transition: opacity 230ms, transform 280ms var(--ease-out); }
.is-menu-open .mobile-menu { opacity: 1; transform: none; }
.hero.is-in-view .hero-copy, .hero.is-in-view .hero-visual-depth,
.hero.is-in-view .hero-portrait, .hero.is-in-view .hero-moon { will-change: transform; }
@media (max-width: 640px) {
    .hero-orbit { width: 8.5rem; height: 7.0625rem; right: 0; top: -0.5rem; }
}
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
    .reveal-ready [data-reveal], .hero-enter { opacity: 1; transform: none; }
    .hero-copy, .hero-visual-depth, .hero-portrait, .portrait-backdrop, .hero::before, .guide-art img { transform: none !important; }
    .portrait-caption { transform: rotate(-9deg) !important; }
    .hero-moon { transform: rotate(-14deg) !important; }
    .course-art { translate: none !important; rotate: none !important; }
    .hero-moon, .hero-open-book, .hero-orbit-star { translate: none !important; rotate: none !important; }
    .ink-ready [data-ink] { stroke-dashoffset: 0; }
    .ink-ready .learning-path-tip, .ink-ready .kitten-arrow-tip { opacity: 1; stroke-dashoffset: 0; }
    .scroll-cue { opacity: 1 !important; }
}
@media print {
    .hero-orbit { display: none; }
    .ink-ready [data-ink] { stroke-dashoffset: 0; animation: none; }
    .ink-ready .learning-path-tip, .ink-ready .kitten-arrow-tip { opacity: 1; stroke-dashoffset: 0; animation: none; }
    .site-header, .paper-grain, .scroll-progress, .scroll-cue, .course-carousel-footer { display: none; }
    .reveal-ready [data-reveal], .hero-enter { opacity: 1; transform: none; }
    .hero-layout { padding-top: 0; }
    .course-grid { display: grid; grid-template-columns: 1fr 1fr; grid-auto-flow: row; overflow: visible; padding: 0; margin: 0; }
    .course-card { break-inside: avoid; }
    body { padding: 0; }
    .hero-visual-depth, .hero-copy, .hero-portrait, .portrait-backdrop { transform: none !important; }
    .course-grid { grid-auto-columns: auto; }
}
