/* home-sections.css — the home page's text below the opening: the welcome, every course, 关于我们.
 * Author: [ASTRO-T1] helper of the 命理学 iMac window — a17 supervisor (Claude Opus 5.5), 2026-11-15. New file.
 *
 * The owner, on the staging preview (N188): "please restore some of the text to at least allow people to understand
 * what they're looking at (an astrology school), course descriptions, what does each course do".
 * A typographic page in the openings' look: ink ground, the Song display face for headings, the system sans for
 * running text, lamp-gold hairlines and numerals. Everything is visible: no accordion, tab or "read more".
 * Every selector is under .astro-home. Static first: .is-enhanced / .is-pending are set only by
 * assets/js/motion/home-sections.js, and only on blocks still below the screen.
 *
 * Running text: 17px / 1.9 (16px / 1.85 at 600px and below), measure 34em (34 Han), colour #DDD3BE on #0A0907
 * (contrast 13.9:1); the dimmest text, #B3A994, 8.5:1 (text-restore/README.md, contrast).
 *
 * Co-written: [ASTRO-H2] helper of the 命理学 iMac window — a17 supervisor (Claude Opus 5.5), 2026-11-15 — the teaching
 * map in place of the row of four groups, the school's charts beside their courses and their viewer, 观星台 and 学院,
 * the quotation as a moment over its photograph, the pictures' one-by-one rollback; the old quotation and group-row
 * rules removed (text-restore/README.md, section [ASTRO-H2]).
 *
 * Co-written: [ASTRO-H5] helper of the 命理学 iMac window — a17 supervisor (Claude Opus 5.5), 2026-11-15 — every anchor
 * target lands below the fixed site header without JavaScript: scroll-margin-top from the header's own custom property
 * --astro-header-h (64px, 56px under 820px; 0 without the header). The sections (#welcome, #courses, #guanxingtai,
 * #academy, #care, #about) get exactly the header's height — the gap the header's scripted scroll uses
 * (site-header.js: the target's top at the header's bottom, 0 px more); a group (#courses-*) and a course (#course-NN)
 * keep the 24 px of breathing room they had over the header (88px = 64 + 24), now from the property.
 */

/* ---------- isolation from the page's other stylesheets (Bricks, WordPress) ----------
 * The technique of the openings' stylesheets ([ASTRO-F6], build/fixes/bricks-css/README.md):
 * 1. the root starts from initial values (nothing inherited from Bricks' <body>: 15px / 1.7 / #363636), and is not
 *    shrunk as a flex item of Bricks' column-flex <body>;
 * 2. every descendant except SVG is rolled back to the browser's own defaults at (0,1,1), before this file's own
 *    rules, which are all at (0,2,0) or more; SVG keeps its presentational attributes, and the few outside rules that
 *    reach it are rolled back one by one (border colour, minimum size, and box-sizing: Bricks' `*{box-sizing:border-box}`);
 * 3. Bricks' `body.bricks-is-frontend :focus {outline:auto}` (0,2,1) is rolled back at (0,3,0). */
.astro-home { all: initial; min-width: 0; min-height: 0; }
.astro-home *:not(svg, svg *, img, canvas),
.astro-home :where(*:not(svg, svg *, img, canvas))::before,
.astro-home :where(*:not(svg, svg *, img, canvas))::after,
.astro-home :where(*:not(svg, svg *, img, canvas))::marker { all: revert; box-sizing: border-box; }
.astro-home svg, .astro-home svg * { border-color: revert; min-width: revert; min-height: revert; box-sizing: revert; }
/* [ASTRO-H2]: pictures keep their width / height attributes (so they are not rolled back as a whole); the outside rules
 * that reach them are rolled back one by one — found by the comparison under the real Bricks stylesheets. */
.astro-home img { border-color: revert; box-sizing: revert; vertical-align: revert; max-width: revert; max-inline-size: revert; }
.astro-home.astro-home :focus { outline: revert; outline-offset: revert; }

.astro-home {
  --ah-ink: #0A0907;
  --ah-text: #ECE3D0;      /* headings, 15.6:1 */
  --ah-body: #DDD3BE;      /* running text, 13.9:1 */
  --ah-dim: #B3A994;       /* summaries, labels, 8.5:1 */
  --ah-lamp: #E2A847;      /* numerals, the line, links, 9.6:1 */
  --ah-line: rgba(226, 168, 71, .28);
  --ah-line-2: rgba(226, 168, 71, .55);
  --ah-cinnabar: #C2462F;  /* focus only */
  --ah-song: "Songti SC", "STSong", "Source Han Serif SC", "Noto Serif CJK SC", "Source Han Serif", "Noto Serif SC", serif;
  --ah-sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Microsoft YaHei", sans-serif;
  --ah-mono: "SF Mono", ui-monospace, Menlo, "IBM Plex Mono", Consolas, monospace;
  --ah-ease: cubic-bezier(.2, 0, 0, 1);
  --ah-x: clamp(20px, 4vw, 48px);
  display: block;
  position: relative;
  box-sizing: border-box;
  background: var(--ah-ink);
  color: var(--ah-body);
  font-family: var(--ah-sans);
  font-size: 17px;
  line-height: 1.9;
  text-align: start;
  -webkit-font-smoothing: antialiased;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  overflow-wrap: break-word;
  overflow-x: clip;
}

/* ---------- the seam: a graduated edge where the opening's paper ends ---------- */
.astro-home .ah-seam {
  display: block;
  height: 7px;
  border-top: 1px solid var(--ah-line-2);
  background: repeating-linear-gradient(90deg, var(--ah-line-2) 0 1px, transparent 1px 12px) top left / 100% 6px no-repeat;
}

/* ---------- the shared grid: heading on the left, text on the right ---------- */
.astro-home .ah-sec { display: block; padding-top: clamp(88px, 15vh, 168px); scroll-margin-top: var(--astro-header-h, 0px); }
.astro-home .ah-grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  column-gap: 24px;
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 var(--ah-x);
}
.astro-home .ah-head { grid-column: 1 / 6; display: block; padding-right: 8px; }
.astro-home .ah-body { grid-column: 6 / 13; display: block; max-width: 34em; }

.astro-home .ah-label {
  display: block; margin: 0 0 1.4em; padding-top: .9em; border-top: 1px solid var(--ah-line-2);
  font-family: var(--ah-song); font-size: 15px; line-height: 1.6; letter-spacing: .3em; color: var(--ah-lamp);
}
.astro-home .ah-h2 {
  display: block; margin: 0;
  font-family: var(--ah-song); font-weight: 600; font-size: clamp(27px, 2.5vw, 36px); line-height: 1.4; letter-spacing: .08em;
  color: var(--ah-text); text-wrap: balance;
}
.astro-home .ah-line {
  display: block; margin: 1.1em 0 0;
  font-family: var(--ah-song); font-size: 18px; line-height: 1.7; letter-spacing: .16em; color: var(--ah-lamp);
}
.astro-home .ah-p {
  display: block; margin: 0 0 1.05em;
  font-size: 17px; line-height: 1.9; color: var(--ah-body);
  text-align: justify; text-justify: inter-ideograph; line-break: strict;
}
.astro-home .ah-p:last-child { margin-bottom: 0; }
.astro-home .ah-num {
  font-family: var(--ah-mono); font-size: 13px; line-height: 1.6; letter-spacing: .08em; color: var(--ah-lamp);
  font-variant-numeric: tabular-nums;
}

.astro-home.astro-home .ah-link:focus-visible { outline: 2px solid var(--ah-cinnabar); outline-offset: 3px; }

/* ---------- one group: its name and summary held on the left, its courses on the right ---------- */
.astro-home .ah-group { display: block; margin-top: clamp(88px, 14vh, 152px); scroll-margin-top: calc(var(--astro-header-h, 0px) + 24px); }
.astro-home .ah-group > .ah-grid::before {
  content: ""; display: block; grid-column: 1 / -1; height: 7px; margin-bottom: clamp(40px, 6vh, 64px);
  border-top: 1px solid var(--ah-line-2);
  background: repeating-linear-gradient(90deg, var(--ah-line) 0 1px, transparent 1px 12px) top left / 100% 6px no-repeat;
}
.astro-home .ah-group__head { grid-column: 1 / 6; display: block; padding-right: 8px; }
.astro-home .ah-group__sticky { display: block; position: sticky; top: 9vh; }
.astro-home .ah-group__meta { display: flex; align-items: center; gap: 14px; margin: 0 0 22px; color: var(--ah-lamp); }
.astro-home .ah-group__name {
  display: block; margin: 0 0 .7em;
  font-family: var(--ah-song); font-weight: 600; font-size: clamp(32px, 3.3vw, 48px); line-height: 1.25; letter-spacing: .12em;
  color: var(--ah-text);
}
.astro-home .ah-group__summary {
  display: block; margin: 0;
  font-size: 16px; line-height: 1.9; color: var(--ah-dim);
  text-align: justify; text-justify: inter-ideograph; line-break: strict;
}

.astro-home .ah-list { grid-column: 6 / 13; display: block; margin: 0; padding: 0; list-style: none; }
.astro-home .ah-course {
  display: grid; grid-template-columns: 3.4em minmax(0, 34em); column-gap: 0;
  margin: 0; padding: 0 0 52px; scroll-margin-top: calc(var(--astro-header-h, 0px) + 24px);
}
.astro-home .ah-course + .ah-course { padding-top: 44px; border-top: 1px solid var(--ah-line); }
.astro-home .ah-course:last-child { padding-bottom: 0; }
.astro-home .ah-course__no { grid-column: 1; grid-row: 1; margin: 0; padding-top: .55em; }
.astro-home .ah-course__name {
  grid-column: 2; grid-row: 1; display: block; margin: 0 0 .65em;
  font-family: var(--ah-song); font-weight: 600; font-size: 25px; line-height: 1.45; letter-spacing: .06em;
  color: var(--ah-text);
}
.astro-home .ah-course > .ah-p { grid-column: 2; }

/* ---------- 关于我们: the contact line ---------- */
.astro-home .ah-contact { display: block; margin-top: 52px; padding-top: 22px; border-top: 1px solid var(--ah-line-2); }
.astro-home .ah-contact__h {
  display: block; margin: 0 0 .5em;
  font-family: var(--ah-song); font-weight: 400; font-size: 15px; line-height: 1.6; letter-spacing: .3em; color: var(--ah-lamp);
}
.astro-home .ah-contact__p { display: block; margin: 0; font-size: 17px; line-height: 1.9; color: var(--ah-body); }
.astro-home .ah-link {
  color: var(--ah-lamp); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .28em;
  cursor: pointer;
}
.astro-home .ah-link:hover { color: var(--ah-text); }

/* ---------- the end ---------- */
.astro-home .ah-end { display: block; margin: clamp(120px, 18vh, 184px) 0 0; padding: 0 var(--ah-x) clamp(72px, 12vh, 120px); text-align: center; }
.astro-home .ah-chart { display: block; width: 56px; height: 56px; margin: 0 auto 20px; color: var(--ah-lamp); opacity: .8; }
.astro-home .ah-end__name { display: block; margin: 0; font-family: var(--ah-song); font-size: 15px; line-height: 1.6; letter-spacing: .4em; padding-left: .4em; color: var(--ah-dim); }

/* ---------- 课程: the teaching map (教学地图) — [ASTRO-H2] ----------
 * A South-Indian square chart: in each outer cell the real bright stars of its sign; the four groups are the four
 * sides (基础 top, 核心 right, 高阶 bottom, 选修 left, clockwise as the signs run); each group's seal sits at the
 * inner corner of its side; the courses are the bright stars, every one a link. Lines only where the school's text
 * states a relation (text-restore/README.md, "[ASTRO-H2]", the table of lines). The list underneath is what a
 * screen reader gets: the four groups, each with its courses. Below 900px a simpler column form, not a shrunken map. */
.astro-home .ah-map { display: block; max-width: 1180px; margin: clamp(56px, 9vh, 96px) auto 0; padding: 0 var(--ah-x); }
.astro-home .ah-map__frame { display: block; perspective: 2200px; }
.astro-home .ah-map__stage {
  display: block; position: relative; aspect-ratio: 3 / 2;
  transform: rotateX(var(--ah-rx, 0deg)) rotateY(var(--ah-ry, 0deg));
  transform-style: preserve-3d; transition: transform .9s var(--ah-ease);
  touch-action: pan-y; user-select: none; -webkit-user-select: none;
}
.astro-home .ah-map.is-turnable .ah-map__stage { cursor: grab; }
.astro-home .ah-map.is-dragging .ah-map__stage { cursor: grabbing; transition: transform .08s linear; }
.astro-home .ah-map__sky { position: absolute; inset: 0; display: block; width: 100%; height: 100%; overflow: visible; }

.astro-home .ah-map__ground circle { fill: #E9DEC4; opacity: .42; }
.astro-home .ah-map__ground circle.b { fill: #F6EBCF; opacity: .85; }
.astro-home .ah-map__grid { fill: none; stroke: rgba(226, 168, 71, .34); stroke-width: 1; vector-effect: non-scaling-stroke; }
.astro-home .ah-map__line {
  fill: none; stroke: var(--ah-lamp); stroke-width: 1; vector-effect: non-scaling-stroke; stroke-linecap: round;
  opacity: .5; transition: opacity .25s var(--ah-ease), stroke-width .25s var(--ah-ease);
}
.astro-home .ah-map__line--order { opacity: .9; stroke-width: 1.6; }
.astro-home .ah-map__line--ref { stroke-dasharray: 2 5; opacity: .55; }
.astro-home .ah-map.is-focus .ah-map__line { opacity: .1; }
.astro-home .ah-map.is-focus .ah-map__line.is-lit { opacity: 1; stroke-width: 2; }
.astro-home .ah-map__seals rect { fill: var(--ah-ink); stroke: var(--ah-lamp); stroke-width: 1.2; vector-effect: non-scaling-stroke; }
.astro-home .ah-map__lights circle { fill: #FFE7B0; }
.astro-home .ah-map__lights circle.h { fill: #E2A847; opacity: .34; }

.astro-home .ah-map__groups,
.astro-home .ah-map__stars { display: block; margin: 0; padding: 0; list-style: none; }
.astro-home .ah-map__group, .astro-home .ah-map__item { display: block; margin: 0; padding: 0; }

/* a course: its star on the point, its name to the right */
.astro-home .ah-map__star {
  position: absolute; left: var(--ah-mx); top: var(--ah-my); z-index: 2;
  display: flex; align-items: center; gap: 9px;
  padding: 6px 8px 6px 0; transform: translate(-6px, -50%);
  font-family: var(--ah-song); font-size: 16px; line-height: 1.3; letter-spacing: .04em; white-space: nowrap;
  color: var(--ah-text); text-decoration: none; cursor: pointer;
  transition: color .2s var(--ah-ease);
}
.astro-home .ah-map__dot {
  display: block; flex: none; width: 12px; height: 12px; border-radius: 50%;
  background: radial-gradient(circle, #FFF3D2 0 2.5px, #E2A847 3px 4.5px, rgba(226, 168, 71, .22) 5px 6px);
  box-shadow: 0 0 12px rgba(226, 168, 71, .45);
  transition: transform .25s var(--ah-ease), box-shadow .25s var(--ah-ease);
}
.astro-home .ah-map__no { font-size: 11px; color: var(--ah-dim); }
.astro-home .ah-map__star:hover, .astro-home .ah-map__star:focus-visible, .astro-home .ah-map__star.is-lit { color: var(--ah-lamp); }
.astro-home .ah-map__star:hover .ah-map__dot, .astro-home .ah-map__star:focus-visible .ah-map__dot,
.astro-home .ah-map__star.is-lit .ah-map__dot { transform: scale(1.5); box-shadow: 0 0 20px rgba(255, 214, 140, .8); }
.astro-home .ah-map.is-focus .ah-map__star:not(.is-lit) { color: rgba(236, 227, 208, .5); }
.astro-home .ah-map__star.is-here .ah-map__dot { box-shadow: 0 0 0 4px var(--ah-ink), 0 0 0 5px var(--ah-lamp), 0 0 18px rgba(226, 168, 71, .7); }
.astro-home.astro-home .ah-map__star:focus-visible,
.astro-home.astro-home .ah-map__seal:focus-visible { outline: 2px solid var(--ah-cinnabar); outline-offset: 2px; }

/* a group's seal: at the inner corner of its side, its label inside the empty centre */
.astro-home .ah-map__seal {
  position: absolute; left: var(--ah-mx); top: var(--ah-my); z-index: 1;
  display: grid; grid-template-columns: auto auto; align-items: baseline; gap: 8px 12px;
  padding: 8px 12px; background: var(--ah-ink);
  color: var(--ah-text); text-decoration: none; cursor: pointer;
  transition: color .2s var(--ah-ease);
}
.astro-home .ah-map__seal .ah-marks { grid-column: 1 / 3; color: var(--ah-lamp); }
.astro-home .ah-map__seal--tl { transform: translate(22px, 14px); }
.astro-home .ah-map__seal--tr { transform: translate(calc(-100% - 22px), 14px); justify-items: end; }
.astro-home .ah-map__seal--br { transform: translate(calc(-100% - 22px), calc(-100% - 14px)); justify-items: end; }
.astro-home .ah-map__seal--bl { transform: translate(22px, calc(-100% - 14px)); }
.astro-home .ah-map__gname { font-family: var(--ah-song); font-weight: 600; font-size: 21px; line-height: 1.3; letter-spacing: .14em; }
.astro-home .ah-map__seal:hover, .astro-home .ah-map__seal.is-lit { color: var(--ah-lamp); }

/* the map below 900px: one column — the four groups in the order of study, their joins drawn as hairlines */
@media (max-width: 900px) {
  .astro-home .ah-map__frame { perspective: none; }
  .astro-home .ah-map__stage { aspect-ratio: auto; transform: none; transition: none; touch-action: auto; }
  .astro-home .ah-map.is-turnable .ah-map__stage { cursor: auto; }
  .astro-home .ah-map__sky { display: none; }
  .astro-home .ah-map__groups {
    display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 48px 22px;
    grid-template-areas: "f f" "c a" "e e";
  }
  .astro-home .ah-map__group { position: relative; padding-top: 14px; border-top: 1px solid var(--ah-line-2); }
  .astro-home .ah-map__group--foundation { grid-area: f; }
  .astro-home .ah-map__group--core { grid-area: c; }
  .astro-home .ah-map__group--advanced { grid-area: a; }
  .astro-home .ah-map__group--electives { grid-area: e; }
  /* 基础 → 核心, 基础 → 高阶 (the joins above the two middle groups); 核心 → 选修, 高阶 → 选修 (below them);
   * 基础 → 选修 (the line between the two middle groups) */
  .astro-home .ah-map__group--core::before, .astro-home .ah-map__group--advanced::before,
  .astro-home .ah-map__group--core::after, .astro-home .ah-map__group--advanced::after {
    content: ""; position: absolute; left: 5px; width: 1px; height: 48px; background: var(--ah-line-2);
  }
  .astro-home .ah-map__group--core::before, .astro-home .ah-map__group--advanced::before { top: -49px; }
  .astro-home .ah-map__group--core::after, .astro-home .ah-map__group--advanced::after { bottom: -48px; }
  .astro-home .ah-map__group--core > .ah-map__stars::after {
    content: ""; position: absolute; top: -49px; bottom: -48px; right: -11px; width: 1px; background: var(--ah-line-2);
  }
  .astro-home .ah-map__seal, .astro-home .ah-map__star { position: static; transform: none; }
  .astro-home .ah-map__seal { display: grid; padding: 0; background: none; justify-items: start; justify-content: start; }
  .astro-home .ah-map__gname { font-size: 19px; letter-spacing: .1em; }
  .astro-home .ah-map__stars { margin-top: 10px; }
  .astro-home .ah-map__group--foundation .ah-map__stars,
  .astro-home .ah-map__group--electives .ah-map__stars { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 22px; }
  .astro-home .ah-map__star { min-height: 44px; padding: 6px 0; white-space: normal; font-size: 16px; }

}

/* ---------- the school's own charts beside their courses — [ASTRO-H2] ---------- */
.astro-home .ah-course > .ah-fig { grid-column: 2; }
.astro-home .ah-fig { display: block; margin: 30px 0 36px; }
.astro-home .ah-course > .ah-fig:last-child { margin-bottom: 0; }
.astro-home .ah-fig__open {
  display: block; position: relative; padding: 10px; border: 1px solid var(--ah-line-2); background: #13100B;
  cursor: zoom-in; transition: border-color .25s var(--ah-ease);
}
.astro-home .ah-fig__open::before, .astro-home .ah-fig__open::after {
  content: ""; position: absolute; width: 14px; height: 14px; border: 0 solid var(--ah-lamp); pointer-events: none;
}
.astro-home .ah-fig__open::before { left: -4px; top: -4px; border-left-width: 1px; border-top-width: 1px; }
.astro-home .ah-fig__open::after { right: -4px; bottom: -4px; border-right-width: 1px; border-bottom-width: 1px; }
.astro-home .ah-fig__img {
  display: block; width: 100%; height: auto; max-width: 100%;
  filter: sepia(.22) saturate(.78) brightness(.88); transition: filter .35s var(--ah-ease);
}
.astro-home .ah-fig__open:hover { border-color: var(--ah-lamp); }
.astro-home .ah-fig__open:hover .ah-fig__img, .astro-home .ah-fig__open:focus-visible .ah-fig__img { filter: none; }
.astro-home.astro-home .ah-fig__open:focus-visible { outline: 2px solid var(--ah-cinnabar); outline-offset: 3px; }

/* the viewer: one dialog, made by the module only when a picture is opened */
.astro-home .ah-viewer {
  box-sizing: border-box; width: 100vw; height: 100vh; max-width: none; max-height: none; margin: 0; padding: 0;
  border: 0; background: transparent; color: var(--ah-text); overflow: auto; overscroll-behavior: contain;
}
.astro-home .ah-viewer::backdrop { background: rgba(6, 5, 4, .93); }
.astro-home .ah-viewer__wrap { display: grid; place-items: center; min-width: 100%; min-height: 100%; padding: 56px 24px 32px; box-sizing: border-box; }
.astro-home .ah-viewer__img { display: block; max-width: 100%; max-height: calc(100vh - 96px); width: auto; height: auto; cursor: zoom-in; }
.astro-home .ah-viewer.is-actual .ah-viewer__wrap { place-items: start; }
.astro-home .ah-viewer.is-actual .ah-viewer__img { max-width: none; max-height: none; cursor: zoom-out; }
.astro-home .ah-viewer__close {
  position: fixed; top: 12px; right: 12px; width: 44px; height: 44px; padding: 0; margin: 0;
  display: grid; place-items: center; border: 1px solid var(--ah-line-2); background: var(--ah-ink);
  color: var(--ah-lamp); font: 24px/1 var(--ah-sans); cursor: pointer;
}
.astro-home .ah-viewer__close:hover { border-color: var(--ah-lamp); }
.astro-home.astro-home .ah-viewer__close:focus-visible { outline: 2px solid var(--ah-cinnabar); outline-offset: 2px; }

/* ---------- 观星台 and 学院: two short introductions with their way in — [ASTRO-H2] ---------- */
.astro-home .ah-portal .ah-label { font-family: var(--ah-mono); font-size: 13px; letter-spacing: .12em; }
.astro-home .ah-portal__fig { display: block; width: 168px; height: 168px; margin: 44px 0 0; color: var(--ah-lamp); overflow: visible; }
.astro-home .ah-gxt circle, .astro-home .ah-gxt path { fill: none; stroke: currentColor; stroke-width: 1; vector-effect: non-scaling-stroke; }
.astro-home .ah-gxt__wheel { opacity: .55; }
.astro-home .ah-gxt__square { opacity: .9; }
.astro-home .ah-gxt__diamond { opacity: .5; }
.astro-home .ah-gxt .ah-gxt__you { fill: #FFF0CC; stroke: none; }
.astro-home .ah-gxt__wheel, .astro-home .ah-gxt__square, .astro-home .ah-gxt__diamond { transform-box: fill-box; transform-origin: center; }
.astro-home .ah-lamp__body { fill: none; stroke: currentColor; stroke-width: 1.2; vector-effect: non-scaling-stroke; }
.astro-home .ah-lamp__flame { fill: #F3C46C; }
.astro-home .ah-lamp__glow { fill: #E2A847; opacity: .08; }
.astro-home .ah-lamp__flame, .astro-home .ah-lamp__glow { transform-box: fill-box; transform-origin: 50% 100%; }
.astro-home .ah-lamp__glow { transform-origin: 50% 50%; }
.astro-home.is-live .ah-gxt__wheel { animation: ah-turn 80s linear infinite; }
.astro-home.is-live .ah-gxt__diamond { animation: ah-turn 120s linear infinite reverse; }
.astro-home.is-live .ah-lamp__flame { animation: ah-flame 3.4s ease-in-out infinite; }
.astro-home.is-live .ah-lamp__glow { animation: ah-glow 3.4s ease-in-out infinite; }
@keyframes ah-turn { to { transform: rotate(360deg); } }
@keyframes ah-flame { 0%, 100% { transform: scale(1, 1); } 35% { transform: scale(.94, 1.07); } 70% { transform: scale(1.03, .95); } }
@keyframes ah-glow { 0%, 100% { opacity: .08; transform: scale(1); } 40% { opacity: .14; transform: scale(1.06); } }

.astro-home .ah-portal__trad { display: block; margin: 1.5em 0 0; font-family: var(--ah-song); font-size: 15px; line-height: 1.7; letter-spacing: .24em; color: var(--ah-lamp); }
.astro-home .ah-portal__features { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 24px 32px; margin: 1.8em 0 0; padding: 0; }
.astro-home .ah-portal__feature { display: block; padding-top: 14px; border-top: 1px solid var(--ah-line); }
.astro-home .ah-portal__ft { display: block; margin: 0 0 .4em; font-family: var(--ah-song); font-weight: 600; font-size: 18px; line-height: 1.5; letter-spacing: .1em; color: var(--ah-text); }
.astro-home .ah-portal__fd { display: block; margin: 0; font-size: 16px; line-height: 1.85; color: var(--ah-body); }
.astro-home .ah-portal__go { display: block; margin: 2.2em 0 0; }
.astro-home .ah-go {
  display: inline-flex; align-items: center; gap: 12px; min-height: 48px; padding: 0 22px 0 24px; box-sizing: border-box;
  border: 1px solid var(--ah-lamp); color: var(--ah-lamp); background: transparent;
  font-family: var(--ah-song); font-size: 17px; line-height: 1.4; letter-spacing: .2em; text-decoration: none; cursor: pointer;
  transition: background-color .2s var(--ah-ease), color .2s var(--ah-ease);
}
.astro-home .ah-go__arrow { display: block; transition: transform .2s var(--ah-ease); }
.astro-home .ah-go:hover { background: var(--ah-lamp); color: var(--ah-ink); }
.astro-home .ah-go:hover .ah-go__arrow { transform: translate(2px, -2px); }
.astro-home.astro-home .ah-go:focus-visible { outline: 2px solid var(--ah-cinnabar); outline-offset: 3px; }
.astro-home .ah-portal__note { display: block; margin: 1.1em 0 0; font-size: 14px; line-height: 1.7; color: var(--ah-dim); }

/* ---------- the quotation as a moment, over its night-sky photograph — [ASTRO-H2] ---------- */
.astro-home .ah-moment {
  display: grid; place-items: center; position: relative; isolation: isolate; overflow: hidden;
  min-height: 92vh; margin: clamp(120px, 20vh, 200px) 0 0; padding: 18vh var(--ah-x);
}
.astro-home .ah-moment__sky { position: absolute; inset: -10% 0; z-index: -2; display: block; }
.astro-home .ah-moment__img {
  display: block; width: 100%; height: 100%; object-fit: cover; object-position: 50% 40%;
  filter: saturate(.5) sepia(.2) brightness(.6);
  transform: translate3d(0, var(--ah-par, 0px), 0); will-change: transform;
}
.astro-home .ah-moment::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background:
    radial-gradient(ellipse 58% 46% at 50% 50%, rgba(10, 9, 7, .62), rgba(10, 9, 7, 0) 72%),
    linear-gradient(var(--ah-ink), rgba(10, 9, 7, 0) 24%, rgba(10, 9, 7, 0) 70%, var(--ah-ink));
}
.astro-home .ah-quote { display: block; width: 100%; max-width: 760px; margin: 0; padding: 0; text-align: center; }
.astro-home .ah-quote::before,
.astro-home .ah-quote::after { content: ""; display: block; width: 72px; height: 1px; margin: 0 auto; background: var(--ah-line-2); }
.astro-home .ah-quote__p {
  display: block; margin: 44px 0;
  font-family: var(--ah-song); font-size: clamp(25px, 2.4vw, 34px); line-height: 1.8; letter-spacing: .06em; color: var(--ah-text);
  text-wrap: pretty; text-shadow: 0 1px 22px rgba(0, 0, 0, .7);
}

/* ---------- phone and narrow windows ---------- */
@media (max-width: 820px) {
  .astro-home .ah-head, .astro-home .ah-body, .astro-home .ah-group__head, .astro-home .ah-list { grid-column: 1 / -1; padding-right: 0; }
  .astro-home .ah-head { margin-bottom: 28px; }
  .astro-home .ah-group__sticky { position: static; }
  .astro-home .ah-group__head { margin-bottom: 44px; }
}
@media (max-width: 600px) {
  .astro-home { font-size: 16px; line-height: 1.85; }
  .astro-home .ah-p, .astro-home .ah-contact__p { font-size: 16px; line-height: 1.85; }
  .astro-home .ah-group__summary { font-size: 15px; line-height: 1.85; }
  .astro-home .ah-h2 { font-size: 26px; }
  .astro-home .ah-line { font-size: 16px; letter-spacing: .1em; }
  .astro-home .ah-group__name { font-size: 32px; }
  .astro-home .ah-course { grid-template-columns: minmax(0, 1fr); }
  .astro-home .ah-course__no { grid-column: 1; grid-row: auto; padding-top: 0; margin-bottom: 4px; }
  .astro-home .ah-course__name { grid-column: 1; grid-row: auto; font-size: 22px; }
  .astro-home .ah-course > .ah-p, .astro-home .ah-course > .ah-fig { grid-column: 1; }
  .astro-home .ah-fig__open { padding: 6px; }
  .astro-home .ah-quote__p { font-size: 21px; line-height: 1.85; }
  .astro-home .ah-moment { min-height: 80vh; padding: 14vh var(--ah-x); }
  .astro-home .ah-portal__features { grid-template-columns: minmax(0, 1fr); }
  .astro-home .ah-portal__fig { width: 132px; height: 132px; margin-top: 28px; }
}

/* ---------- the reveal (only with the module; never with reduced motion) ---------- */
.astro-home.is-enhanced .ah-reveal { transition: opacity .36s var(--ah-ease), transform .36s var(--ah-ease); }
.astro-home.is-enhanced .ah-reveal.is-pending { opacity: 0; transform: translateY(8px); }
.astro-home.is-enhanced .ah-fig.ah-reveal { transition: opacity .7s var(--ah-ease), transform .9s var(--ah-ease); }
.astro-home.is-enhanced .ah-fig.ah-reveal.is-pending { opacity: 0; transform: translateY(22px) scale(.97); }
.astro-home.is-enhanced .ah-map.ah-reveal { transition: opacity .9s var(--ah-ease), transform 1.1s var(--ah-ease); }
.astro-home.is-enhanced .ah-map.ah-reveal.is-pending { opacity: 0; transform: translateY(28px); }
@media (prefers-reduced-motion: reduce) {
  .astro-home.is-enhanced .ah-reveal, .astro-home.is-enhanced .ah-reveal.is-pending { opacity: 1; transform: none; transition: none; }
  .astro-home.is-live .ah-gxt__wheel, .astro-home.is-live .ah-gxt__diamond,
  .astro-home.is-live .ah-lamp__flame, .astro-home.is-live .ah-lamp__glow { animation: none; }
  .astro-home .ah-map__stage { transform: none; transition: none; }
}
@media print {
  .astro-home.is-enhanced .ah-reveal.is-pending { opacity: 1; transform: none; }
}

/* ---------- forced colours: the hairlines are borders, the ticks drop out ---------- */
@media (forced-colors: active) {
  .astro-home .ah-seam, .astro-home .ah-group > .ah-grid::before { background: none; }
  .astro-home .ah-map__dot { forced-color-adjust: none; background: CanvasText; box-shadow: none; }
  .astro-home .ah-moment__sky { display: none; }
}

/* [ASTRO-S1] 2026-11-15 (co-written note) — several pages (N196, N197): on 首页 the map is followed by one way on to 课程,
   and the newest three articles stand before the quotation. */
.astro-home .ah-onward { max-width: 1180px; margin: clamp(40px, 6vh, 64px) auto 0; padding: 0 var(--ah-x); box-sizing: border-box; text-align: center; }
.astro-home .ah-news__list { list-style: none; margin: 0; padding: 0; display: block; border-top: 1px solid var(--ah-line); }
.astro-home .ah-news__item { display: block; margin: 0; border-bottom: 1px solid var(--ah-line); }
.astro-home .ah-news__link { display: flex; justify-content: space-between; align-items: baseline; gap: 24px; padding: 18px 0; color: var(--ah-text); text-decoration: none; }
.astro-home .ah-news__title { font-family: var(--ah-song); font-size: 18px; line-height: 1.6; }
.astro-home .ah-news__date { flex: none; }
.astro-home .ah-news__link:hover .ah-news__title { color: var(--ah-lamp); }
.astro-home.astro-home .ah-news__link:focus-visible { outline: 2px solid var(--ah-cinnabar); outline-offset: 3px; }
.astro-home .ah-news .ah-onward { padding: 0; text-align: left; }
@media (max-width: 599.98px) { .astro-home .ah-news__link { flex-direction: column; gap: 4px; } }
