/* 页面规范：@scys/design-ui 0.23.0；规则与用户覆盖见 docs/design-adoption.md。 */
@font-face { font-family: "MiSans"; src: url("assets/MiSans-Heading-700-0.woff2") format("woff2"); font-weight: 700; font-style: normal; font-display: swap; unicode-range: U+20,U+2013-2014,U+2018-2019,U+201c-201d,U+2026,U+3001-3002,U+3008-3011,U+3014-3015,U+4e00,U+4e09-4e0b,U+4e0d-4e0e,U+4e1a,U+4e24,U+4e2a,U+4e2d,U+4e3a-4e3b,U+4e48,U+4e4b,U+4e5f,U+4e86,U+4e8b-4e8c,U+4e8e,U+4e9b,U+4ea7,U+4eba,U+4ec0,U+4ece,U+4ed6,U+4ee5,U+4eec,U+4f1a,U+4f46,U+4f53,U+4f5c,U+4f60,U+4f7f,U+5168,U+516c,U+5173,U+5176,U+519b,U+51fa,U+5206,U+5229,U+5230,U+5236,U+524d,U+529b,U+52a0,U+52a8,U+5341,U+53bb,U+53c8,U+53d1,U+53ea,U+53ef,U+5408,U+540c,U+540e,U+5411,U+548c,U+56e0,U+56fd,U+5728,U+5730,U+5916,U+591a,U+5927,U+5929,U+5934,U+5979,U+597d,U+5982,U+5b50,U+5b66,U+5b83,U+5b9a,U+5b9e,U+5bb6,U+5bf9,U+5c06,U+5c0f,U+5c31,U+5de5,U+5df1-5df2,U+5e74,U+5e76,U+5e94,U+5f00,U+5f53,U+5f88,U+5f97,U+5fc3,U+6027,U+60c5,U+60f3,U+610f,U+6210-6211,U+6216,U+6218,U+6240,U+624b,U+628a,U+653f,U+6587,U+65af-65b0,U+65b9,U+65e0,U+65e5,U+65f6,U+660e,U+662f,U+6700,U+6708-6709,U+672c,U+673a,U+6765,U+679c,U+6837,U+6b63-6b64,U+6c11,U+6ca1,U+6cd5,U+70b9,U+7136,U+7269,U+73b0,U+7406,U+751f,U+7528,U+7531,U+7684,U+76f8,U+770b,U+7740,U+77e5,U+79cd,U+7b2c,U+7b49,U+7ecf,U+7f8e,U+8005,U+800c,U+80fd,U+81ea,U+884c,U+88ab,U+897f,U+8981,U+89c1,U+8bdd,U+8bf4,U+8d77,U+8eab,U+8fc7,U+8fd8-8fd9,U+8fdb,U+9053,U+90a3,U+90e8,U+90fd,U+91cc-91cd,U+957f,U+95ee,U+95f4,U+9762,U+9ad8,U+ff01,U+ff08-ff09,U+ff0c,U+ff0e,U+ff1a-ff1b; }
@font-face { font-family: "MiSans"; src: url("assets/MiSans-Heading-700-1.woff2") format("woff2"); font-weight: 700; font-style: normal; font-display: swap; unicode-range: U+4e07,U+4e14,U+4e16,U+4e1c,U+4e49,U+4e66,U+4e89,U+4e94,U+4ea4,U+4eb2,U+4eca,U+4ee3,U+4ef6,U+4efb,U+4f20,U+4f4d,U+4f4f,U+4f55,U+4fbf,U+4fdd,U+4fe1,U+5019,U+505a,U+50cf,U+513f,U+5143,U+5148-5149,U+514b,U+5165,U+5171,U+5185,U+518d,U+51b3,U+51e0,U+5207,U+5219,U+522b,U+529e,U+52a1,U+5316-5317,U+533a,U+5357,U+5373-5374,U+539f,U+53ca,U+53cd,U+53d6-53d8,U+53e3,U+53f8,U+5404,U+540d,U+542c,U+544a,U+5458,U+547d,U+54c1,U+56db,U+56de,U+573a,U+57fa,U+58f0,U+5904,U+592a,U+5973,U+5b89,U+5b8c,U+5bfc,U+5c11,U+5c14,U+5c55,U+5c71,U+5e02,U+5e08,U+5e26,U+5e38,U+5e72-5e73,U+5ea6,U+5efa,U+5f0f,U+5f20,U+5f3a,U+5f62,U+5f80,U+5fb7,U+5fc5,U+5feb,U+601d,U+603b,U+611f,U+624d,U+6253,U+62a5,U+62c9,U+6301,U+6307,U+636e,U+63a5,U+63d0,U+6536,U+6539,U+653e,U+6559,U+6570,U+66f4,U+670d,U+671b,U+671f,U+672f,U+6743,U+6761,U+6781,U+6797,U+6839,U+683c,U+6b21,U+6b65,U+6b7b,U+6bcf,U+6bd4,U+6c14,U+6c34,U+6c42,U+6cbb,U+6d3b,U+6d4e,U+6d77,U+6e05,U+7279,U+738b,U+7535,U+754c,U+767d,U+76ee,U+76f4,U+771f,U+773c,U+786e,U+793e,U+795e,U+79d1,U+7a0b,U+7a7a,U+7acb,U+7b11,U+7ba1,U+7c7b,U+7cfb,U+7ec4,U+7ed3,U+7ed9,U+7edf,U+8001,U+8054,U+81f3,U+8272,U+82f1,U+8868,U+89c2,U+89c4,U+89c9,U+89e3,U+8a00,U+8ba1,U+8ba4,U+8ba9,U+8bae,U+8bb0,U+8bb8,U+8bba,U+8bbe,U+8bc6,U+8be5,U+8c61,U+8d44,U+8d70,U+8def,U+8f66,U+8fb9,U+8fbe,U+8fd0,U+901a,U+9020,U+91cf,U+91d1,U+95e8,U+961f,U+9662,U+96be,U+975e,U+9886,U+9898,U+98ce,U+98de,U+9a6c; }
@font-face { font-family: "MiSans"; src: url("assets/MiSans-Heading-700-2.woff2") format("woff2"); font-weight: 700; font-style: normal; font-display: swap; unicode-range: U+4e03,U+4e13,U+4e25,U+4e4e,U+4e5d,U+4e9a,U+4eac,U+4ec5,U+4ee4,U+4ef7,U+4f01,U+4f17,U+4f3c,U+4f8b,U+4f9b,U+4f9d,U+515a,U+516b,U+516d,U+5174-5175,U+5177,U+5199,U+519c,U+51b5,U+51c6,U+51fb,U+5212,U+5217,U+529f,U+52bf,U+5305,U+533b,U+534a,U+534e,U+5355,U+5386,U+53c2,U+53e4,U+53e6,U+53eb,U+53f0,U+53f2,U+53f7,U+5403,U+5417,U+5427,U+5462,U+5468,U+54cd,U+5546,U+5668,U+56e2,U+56fe,U+571f,U+578b,U+57ce,U+589e,U+58eb,U+5907,U+590d,U+591f,U+592b,U+5931,U+5947,U+59cb,U+59d4,U+5b57-5b58,U+5b69,U+5b98,U+5bb9,U+5bdf,U+5c3d,U+5c40,U+5df4,U+5e03,U+5e0c,U+5e7f,U+5e95,U+5e9c,U+5f15,U+5f71,U+5f8b,U+5fd7,U+5ff5,U+6001,U+600e,U+606f,U+623f,U+6279,U+627e,U+6280,U+6295,U+62a4,U+63a8,U+652f,U+6548,U+654c,U+6574,U+6599,U+65ad,U+65bd,U+65cf,U+65e9,U+6613,U+661f,U+663e,U+66fe,U+672a,U+674e,U+6784,U+67d0,U+67e5,U+6807,U+6848,U+6b66,U+6bb5,U+6bcd,U+6ce8,U+6d3e,U+6d41,U+6d88,U+6df1,U+6ee1,U+706b,U+7167,U+7231,U+7247,U+7559,U+75c5,U+767e,U+77f3,U+7814,U+793a,U+79bb,U+79f0,U+7a76,U+7a81,U+7ad9,U+7ae0,U+7b54,U+7b97,U+7cbe,U+7d27,U+7ea2,U+7ea6-7ea7,U+7ebf,U+7ec8,U+7edd,U+7eed,U+7ef4,U+7f57,U+7fa4,U+8003,U+81f4,U+8282,U+82b1,U+8425,U+843d,U+867d,U+88c5,U+89c6,U+8bb2,U+8bc1,U+8bed,U+8bf7,U+8c03,U+8c08,U+8d23,U+8d28,U+8d39,U+8d8a,U+8db3,U+8ddf,U+8f6c,U+8f7b,U+8f83,U+8fd1,U+8fdc,U+8fde,U+9009,U+9632,U+963f,U+9645,U+9648,U+9664,U+968f,U+96c6,U+9700,U+9752,U+9769,U+97f3,U+9879,U+987b,U+9996,U+9a8c,U+9ec4,U+9ed1; }
@font-face { font-family: "MiSans"; src: url("assets/MiSans-Heading-700-4.woff2") format("woff2"); font-weight: 700; font-style: normal; font-display: swap; unicode-range: U+4e34,U+4e3d,U+4e61,U+4e88,U+4e92,U+4ea1,U+4ea6,U+4eae,U+4ecb,U+4ed8,U+4efd,U+4f18,U+4f26,U+4f2f,U+51cf,U+5251,U+5267,U+52d2,U+5347,U+535a,U+5371,U+5382,U+53bf,U+53f3,U+53f6,U+5409,U+542b,U+5438,U+5440,U+5473,U+547c,U+54e5,U+56f0,U+56fa,U+5723,U+5747,U+574f,U+5757,U+57df,U+592e,U+5987,U+59d0,U+5a18,U+5a5a,U+5b88,U+5b9d,U+5bfb,U+5c01,U+5c1a,U+5c4b,U+5c81,U+5c9b,U+5cb8,U+5de6,U+5de8,U+5e2d,U+5e78,U+5e8f,U+5ea7,U+5ead,U+5eb7,U+5f1f,U+5f52,U+5f55,U+5fd9,U+5ffd,U+602a,U+6050,U+6069,U+6076,U+6162,U+6237,U+6258,U+62db,U+62e9,U+62ec,U+635f,U+6362,U+6388-6389,U+638c,U+63a2,U+63a7,U+6447,U+6551,U+6562-6563,U+65c5,U+65e7,U+6625,U+666f,U+667a,U+6697,U+670b,U+6742,U+6750,U+677e-677f,U+67aa,U+67b6,U+6838,U+68a6,U+695a,U+697c,U+6982,U+6b27,U+6b3e,U+6bd2,U+6beb,U+6c38,U+6c99,U+6cb9,U+6cfd,U+6d0b,U+6d4b,U+6e10,U+6e29,U+6e2f,U+6e56,U+6e7e,U+706d,U+70ae,U+70c8,U+70df,U+7248,U+73ed,U+7530,U+753b,U+7597,U+767b,U+76d1,U+775b,U+7761,U+7763,U+77ed,U+793c,U+7968,U+79d8,U+79fb,U+7a0e,U+7a7f,U+7aef,U+7b14,U+7d22,U+7f16,U+7f3a,U+8033,U+80af,U+80cc,U+80e1,U+811a,U+8131,U+822a,U+8230,U+826f,U+827a,U+8349,U+83ab,U+8457,U+85cf,U+8651,U+8865,U+8ba8,U+8bc4,U+8bcd,U+8bd7,U+8bef,U+8bfa,U+8c13,U+8c22,U+8d25,U+8d27,U+8d35,U+8d76,U+8dd1,U+8f93,U+9010,U+9047,U+9057,U+9152,U+91ca,U+91ce,U+949f,U+94c1,U+9500,U+95fb,U+9635,U+9644,U+96e8,U+9732,U+9760,U+987a,U+987e-987f,U+989d,U+996d,U+9999,U+9c7c,U+9c81,U+9c9c; }
@font-face { font-family: "MiSans"; src: url("assets/MiSans-Heading-700-50.woff2") format("woff2"); font-weight: 700; font-style: normal; font-display: swap; unicode-range: U+20-7e,U+a0-108; }
:root {
  --space-scale: .8;
  --brand: var(--sc-color-brand);
  --brand-deep: var(--sc-color-text-primary);
  --paper: var(--sc-color-surface-canvas);
  --ink: var(--sc-color-text-primary);
  --campaign-muted: var(--sc-color-text-tertiary);
  --line: var(--sc-color-border-default);
  --font-sans: var(--sc-typography-family-ui);
  --campaign-recruit: var(--sc-color-info-surface);
  --campaign-coach: var(--sc-color-surface-control);
  --campaign-signup: var(--sc-color-warning-surface);
  --campaign-prep: var(--campaign-recruit);
  --campaign-sailing: #dcefe6;
  --campaign-recruit-line: var(--campaign-prep-line);
  --campaign-prep-line: #9bbad0;
  --campaign-coach-line: #c2c6cb;
  --campaign-signup-line: #ddc18d;
  --campaign-sailing-line: #94b9ac;
  --route-art-size: 48px;
  --hero-art-width: min(750px, 100vw);
  --hero-art-height: calc(var(--hero-art-width) * 1080 / 750);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: var(--font-sans); font-size: 14px; line-height: 22px; font-weight: 400; letter-spacing: 0; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
a { color: inherit; text-decoration: none; }
a:focus-visible { outline: var(--sc-interaction-focus-ring-width) solid var(--sc-color-focus); outline-offset: var(--sc-interaction-focus-ring-offset); }
h1, h2, h3, h4, p { margin-top: 0; }
.site-shell { position: relative; z-index: var(--sc-layer-base); min-height: 100vh; }
.hero { background: linear-gradient(#00796d 0%, #8bcfc1 40%, #f7f7f3 78%); }
.hero-media { display: block; width: var(--hero-art-width); height: var(--hero-art-height); overflow: hidden; margin: 0 auto; }
.hero-image { display: block; width: 100%; height: auto; }

/* G004/G005/G006：页面、分组、对象标题与说明各用自己的角色。 */
.poster-section { padding: var(--sc-space-5) var(--sc-space-6); scroll-margin-top: var(--launch-height, 140px); }
.routes-section { padding-top: var(--sc-space-5); }
.poster-heading { width: min(700px, 100%); margin: 0 auto var(--sc-space-5); text-align: center; }
.poster-heading h2 { font-family: "MiSans", var(--font-sans); margin: 0; color: var(--brand); font-size: 36px; line-height: 1.3; font-weight: 700; letter-spacing: 0; }
.poster-heading h2::before, .poster-heading h2::after { color: var(--brand); font-weight: 600; }
.poster-heading h2::before { content: "»"; margin-right: var(--sc-space-4); }
.poster-heading h2::after { content: "«"; margin-left: var(--sc-space-4); }
.poster-heading p { margin: calc(var(--sc-space-4) * var(--space-scale)) auto 0; color: var(--sc-color-text-secondary); font-size: 14px; line-height: 22px; font-weight: 400; }
.route-grid { display: grid; grid-template-columns: minmax(0, 1fr); row-gap: calc(var(--sc-space-5) * var(--space-scale)); column-gap: var(--sc-space-5); width: min(1120px, 100%); margin: 0 auto; }
.route-group-label { grid-column: 1 / -1; margin: calc(var(--sc-space-5) * var(--space-scale)) 0 0; padding: 0; color: var(--brand); background: transparent; border: 0; font-size: var(--sc-ui-text-section-title); line-height: var(--sc-ui-text-section-title-line-height); font-weight: 600; letter-spacing: 0; text-align: left; }
.route-group-label:first-child { margin-top: 0; }

/* ScSurface：公开 class 只调整布局和项目卡片圆角，不改内部结构。 */
.route-card.sc-ui { position: relative; display: flex; flex-direction: column; min-width: 0; gap: calc(var(--sc-space-4) * var(--space-scale)); padding-block: calc(var(--sc-space-5) * var(--space-scale)); }
.card-link { position: absolute; inset: 0; z-index: 1; display: block; margin: 0; padding: 0; border: 0; border-radius: inherit; background: transparent; cursor: pointer; touch-action: manipulation; }
.card-link:focus-visible { outline: 2px solid var(--brand); outline-offset: 3px; }
.card-link:active { background: rgb(0 112 98 / .06); }
@media (hover: hover) { .card-link:hover { box-shadow: inset 0 0 0 1px rgb(0 112 98 / .22); } }
.card-main { display: grid; grid-template-columns: var(--route-art-size) minmax(0, 1fr); align-items: start; gap: var(--sc-space-4); }
.route-art.sc-ui { max-width: 100%; flex-shrink: 0; }
.route-icon { display: inline-flex; align-items: center; justify-content: center; color: var(--brand); }
.route-icon svg { width: var(--sc-icon-size-compact); height: var(--sc-icon-size-compact); }
.route-icon svg { fill: none; stroke: currentColor; stroke-width: var(--sc-icon-stroke-default); stroke-linecap: round; stroke-linejoin: round; }
.card-content { min-width: 0; }
.card-content h3 { display: flex; align-items: center; gap: var(--sc-space-3); margin: 0 0 var(--sc-space-2); color: var(--ink); font-size: 15px; line-height: 22px; font-weight: var(--sc-ui-text-object-title-weight); letter-spacing: 0; }
.card-title { min-width: 0; text-wrap: balance; }
.card-content p { margin: 0; color: var(--sc-color-text-secondary); font-size: 13px; line-height: 20px; font-weight: 400; }
/* NEW 与卡片右上圆弧共边，独立于标题排版。 */
.route-card .new-badge.sc-ui { position: absolute; top: -1px; right: -1px; height: 20px; margin: 0; padding: 0 7px; border: 0; border-radius: 0 var(--sc-radius-large) 0 8px; color: #fff; background: linear-gradient(180deg, #ff805f 0%, #ff532b 100%); font-size: 11px; line-height: 20px; font-weight: 400; letter-spacing: 0; }
.route-card.has-new .card-content h3 { padding-right: 22px; }
.card-output { display: flex; align-items: center; gap: var(--sc-space-3); margin-top: auto; padding-top: calc(var(--sc-space-3) * var(--space-scale)); border-top: var(--sc-border-width-default) solid var(--line); }
.output-copy { min-width: 0; color: var(--campaign-muted); font-size: 12px; line-height: 18px; font-weight: 400; }
.output-label { white-space: nowrap; font-weight: 400; }
.card-output .output-copy { flex: 1 1 auto; }
.card-footer { position: relative; z-index: 2; flex: none; margin-left: auto; display: flex; justify-content: flex-end; align-items: center; pointer-events: none; }
.card-footer :is(a, button) { pointer-events: auto; }
.card-hint { display: inline-flex; align-items: center; gap: 3px; color: var(--campaign-muted); font-size: 12px; line-height: 18px; white-space: nowrap; }
.card-hint--ready { color: var(--brand); font-weight: 600; }
.card-hint-arrow { display: inline-flex; }
.card-hint-arrow svg { width: 12px; height: 12px; fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.card-cta { display: inline-flex; align-items: center; min-height: var(--sc-interaction-target-minimum); padding-inline: var(--sc-space-4); color: var(--sc-color-text-link); font-size: 14px; line-height: 20px; text-decoration: underline; text-underline-offset: var(--sc-space-2); }
.card-cta:hover { color: var(--sc-color-text-link-hover); }

/* 生财品牌绿实底；文字、数字和单位统一白色。 */
.launch-strip { position: sticky; top: 0; z-index: var(--sc-layer-sticky); isolation: isolate; overflow: hidden; color: #fff; background: var(--brand); box-shadow: 0 4px 18px rgb(0 112 98 / .12); }
.launch-strip[hidden] { display: none; }
.launch-inner { position: relative; z-index: 2; width: min(700px, calc(100% - 40px)); margin: 0 auto; padding-block: 13px; }
.countdown-wrap { display: flex; align-items: center; justify-content: center; gap: 14px; }
.countdown-wrap[hidden] { display: none; }
.countdown-label { color: inherit; font-size: 14px; line-height: 22px; font-weight: 500; white-space: nowrap; }
.countdown[hidden] { display: none; }
.countdown { display: flex; align-items: baseline; gap: 12px; font-variant-numeric: tabular-nums; }
.time-cell { display: flex; align-items: baseline; gap: 3px; flex: 0 0 auto; padding-block: calc(var(--sc-space-2) * var(--space-scale)); }
.time-cell:first-child { padding-left: 0; }
.time-cell + .time-cell { border-left: 0; }
.time-cell strong { color: inherit; font-size: 26px; line-height: 34px; font-weight: 700; }
.time-cell span { color: inherit; font-size: 12px; line-height: 18px; }
@media (max-width: 360px) {
  .countdown-wrap { gap: 8px; }
  .countdown-label { font-size: 12px; line-height: 18px; }
  .countdown { gap: 8px; }
  .time-cell strong { font-size: 24px; line-height: 32px; }
  .time-cell:first-child { padding-left: 0; }
}

.calendar-wrap { width: min(700px, 100%); margin: 0 auto; }
/* 仅覆盖主页；历史日历预览页继续使用自己的样式。日历不是日期选择控件。 */
#calendarStack { padding: 0; border: 0; border-radius: 0; background: transparent; color: var(--ink); font: inherit; }
#calendarStack .calendar-card { padding: calc(var(--sc-space-5) * var(--space-scale)) var(--sc-space-5); border: 0; border-radius: var(--sc-radius-large); background: var(--sc-color-surface-primary); box-shadow: none; }
#calendarStack .calendar-windows { gap: var(--sc-space-3); margin-bottom: calc(var(--sc-space-4) * var(--space-scale)); }
.calendar-window { gap: var(--sc-space-2); }
.calendar-window b { font-weight: 600; }
#calendarStack .calendar-timeline { gap: var(--sc-space-3); margin-bottom: calc(var(--sc-space-5) * var(--space-scale)); }
#calendarStack .timeline-bar { gap: 0; padding: calc(var(--sc-space-3) * var(--space-scale)) var(--sc-space-4); color: var(--ink); background: var(--campaign-recruit); border: 0; border-radius: var(--sc-radius-medium); }
#calendarStack .timeline-coach { background: var(--campaign-prep); }
#calendarStack .timeline-bar b { font-size: 12px; line-height: 18px; font-weight: 600; }
#calendarStack .timeline-bar small { color: var(--campaign-muted); font-size: 12px; line-height: 18px; }
#calendarStack .calendar-months { gap: calc(var(--sc-space-5) * var(--space-scale)); }
#calendarStack .calendar-month--main { padding: 0; border: 0; background: transparent; border-radius: 0; }
#calendarStack .calendar-month--edge { opacity: 1; }
#calendarStack .calendar-month-title { padding-bottom: calc(var(--sc-space-3) * var(--space-scale)); border-bottom: 0; color: var(--brand); font-size: 14px; line-height: 22px; font-weight: 600; }
#calendarStack .calendar-month--edge .calendar-month-title { color: var(--brand); font-size: 14px; }
#calendarStack .calendar-weekdays { padding: calc(var(--sc-space-2) * var(--space-scale)) 0; color: var(--campaign-muted); font-size: 12px; line-height: 18px; font-weight: 500; }
#calendarStack .calendar-days { gap: var(--sc-space-1) 0; }
#calendarStack .calendar-day { min-height: 40px; padding: var(--sc-space-1) 0; border-radius: var(--sc-radius-small); color: var(--day-ink, var(--ink)); font-size: 12px; line-height: 18px; font-weight: 400; }
#calendarStack :is(button, a).calendar-day { appearance: none; min-height: 44px; margin: 0; border: 0; font-family: inherit; letter-spacing: inherit; text-align: center; text-decoration: none; overflow: visible; cursor: pointer; touch-action: manipulation; }
/* 跨格文字只展示信息，点击命中其下方实际日期。 */
#calendarStack :is(button, a).calendar-day > * { pointer-events: none; }
#calendarStack :is(button, a).calendar-day:focus-visible { outline: 2px solid var(--brand); outline-offset: -2px; }
#calendarStack :is(button, a).calendar-day:active { box-shadow: inset 0 0 0 2px rgb(0 112 98 / .3); }
@media (hover: hover) { #calendarStack :is(button, a).calendar-day:hover { box-shadow: inset 0 0 0 1px rgb(0 112 98 / .25); } }
#calendarStack .calendar-day.is-muted { min-height: 24px; }
#calendarStack .calendar-day:is(.range-recruitment, .range-prep, .range-signup, .range-boarding, .range-sailing) { min-height: 56px; }
#calendarStack .calendar-day.has-event { min-height: 72px; }
#calendarStack .calendar-day.range-recruitment { background: var(--campaign-recruit); }
#calendarStack .calendar-day.range-prep { background: var(--campaign-prep); }
#calendarStack .calendar-day.range-signup { background: var(--campaign-signup); }
#calendarStack .calendar-day.audience-crew { background: var(--campaign-signup); }
#calendarStack .calendar-day.audience-sailing { background: var(--campaign-sailing); }
#calendarStack .calendar-day.is-edge-date:not([class*="range-"]) .day-number { color: var(--campaign-muted); }
#calendarStack .day-heading { min-height: 20px; }
#calendarStack .day-number { width: 24px; height: 20px; font-size: 12px; line-height: 18px; font-weight: 600; }
#calendarStack .day-marker { min-height: 18px; color: var(--brand); font-size: 12px; line-height: 18px; }
#calendarStack .day-event-label { gap: 0; margin-top: var(--sc-space-1); padding: var(--sc-space-1) 0; color: inherit; font-size: 12px; line-height: 18px; font-weight: 700; }
#calendarStack .period-event-label { position: relative; z-index: 1; align-self: flex-start; width: 200%; max-width: none; padding-inline: 4px; }
/* 合并招募起点借用同周后四格展示，不增加第二行色带。 */
#calendarStack .is-wide-event > .day-event-label { position: relative; z-index: 1; align-self: flex-start; width: 500%; max-width: none; align-items: flex-start; padding-inline: var(--sc-space-2); }
#calendarStack .is-wide-event > .day-event-label > span { white-space: nowrap; text-wrap: nowrap; }
/* 圈贴着文字，使用不对称椭圆与轻微倾斜，避免整格拉成长胶囊。 */
#calendarStack .calendar-day:is(.is-start, .is-end, .is-departure, .is-arrival) .day-event-label { position: relative; z-index: 2; outline: none; }
#calendarStack .calendar-day:is(.is-start, .is-end, .is-departure, .is-arrival) .day-event-label > span { position: relative; max-width: none; white-space: nowrap; text-wrap: nowrap; }
#calendarStack .calendar-day:is(.is-start, .is-end, .is-departure, .is-arrival) .day-event-label > span::after { content: ""; position: absolute; inset: -4px -5px; border: solid currentColor; border-width: 1.7px 1.3px 1.9px 1.5px; border-radius: 52% 47% 55% 46% / 49% 56% 45% 53%; transform: rotate(-3deg); pointer-events: none; }
#calendarStack .calendar-day.is-today .day-number { color: var(--sc-color-on-primary); background: var(--brand); }
#calendarStack .calendar-day.is-today .day-heading { display: flex; align-items: center; justify-content: center; gap: 2px; }
#calendarStack .calendar-day.is-today .day-number { width: 20px; height: 20px; flex-shrink: 0; }
#calendarStack .calendar-day.is-today .day-marker { min-height: 0; font-size: 10px; line-height: 14px; }
@media (max-width: 374px) {
  #calendarStack .calendar-day.is-today .day-heading { gap: 1px; }
  #calendarStack .calendar-day.is-today .day-number { width: 18px; height: 18px; }
  #calendarStack .calendar-day.is-today .day-marker { font-size: 9px; }
}

@media (min-width: 480px) {
  #calendarStack .day-event-label { font-size: 13px; line-height: 20px; }
  #calendarStack .day-number { font-size: 13px; line-height: 20px; }
}

.notes-list { margin-bottom: 0; width: min(700px, 100%); margin: 0 auto; padding-left: var(--sc-space-6); color: var(--sc-color-text-secondary); }
.notes-list li { padding: calc(var(--sc-space-3) * var(--space-scale)) 0; font-size: 14px; line-height: 22px; }
.notes-list li::marker { color: var(--brand); }
.footer { display: flex; align-items: center; justify-content: space-between; gap: var(--sc-space-4); padding: calc(var(--sc-space-5) * var(--space-scale)) var(--sc-space-6); color: var(--campaign-muted); border-top: var(--sc-border-width-default) solid var(--line); font-size: 12px; line-height: 18px; }
.footer a { display: inline-flex; align-items: center; min-height: var(--sc-interaction-target-minimum); color: var(--brand); }

/* G055：取消旧的 550ms 过渡与逐项延迟，进入使用 200ms，减少动态效果时关闭。 */
.reveal-enabled .reveal-item { opacity: 0; transform: translateY(var(--sc-space-3)); transition: opacity var(--sc-motion-standard) var(--sc-motion-easing-standard), transform var(--sc-motion-standard) var(--sc-motion-easing-standard); }
.reveal-item.is-visible { opacity: 1; transform: none; }
@media (min-width: 721px) {
  :root { --hero-art-width: min(750px, 100vw, calc(90vh * 750 / 1509)); }
  .poster-heading h2 { font-size: 44px; }
  .card-content h3 { font-size: 16px; line-height: 24px; }
  .poster-section { padding-block: var(--sc-space-7); }
  .routes-section { padding-top: var(--sc-space-7); }
}
@media (min-width: 600px) and (orientation: landscape), (min-width: 1100px) {
  .route-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
  .hero-image { height: auto; }
  .launch-inner { width: calc(100% - 32px); padding-block: 11px; }
  .card-content p, .output-copy { text-wrap: pretty; }
  .footer { display: grid; gap: var(--sc-space-2); }
}
@media (max-width: 374px) {
  :root { --route-art-size: 44px; }
  .card-main { gap: var(--sc-space-3); }
  .card-content h3 { column-gap: var(--sc-space-2); }
}

/* 海报参考：淡海图经纬线、青绿水色与少量暖金光；正文卡片沿用官方白色表面。 */
.site-shell { background-color: #f2f7f5; background-image: linear-gradient(rgb(0 112 98 / .025) 1px, transparent 1px), linear-gradient(90deg, rgb(0 112 98 / .025) 1px, transparent 1px); background-size: 56px 56px; }
.poster-section { position: relative; isolation: isolate; }
.routes-section::before { content: ""; position: absolute; z-index: -1; inset: 0; pointer-events: none; background: radial-gradient(ellipse 380px 270px at 100% 0%, rgb(244 198 100 / .13), transparent), radial-gradient(ellipse 520px 420px at 0% 12%, rgb(0 160 134 / .08), transparent); }
.calendar-section { background: linear-gradient(180deg, transparent, rgb(213 233 224 / .35) 45%, transparent); }
.poster-heading h2::before, .poster-heading h2::after { text-shadow: 0 2px 12px rgb(0 112 98 / .12); }
@media (max-width: 620px) {
  #calendarStack .calendar-card { padding-inline: var(--sc-space-3); }
  #calendarStack .calendar-timeline { grid-template-columns: 1fr; }
  #calendarStack .timeline-bar { grid-template-columns: 1fr; }
  #calendarStack .timeline-bar small { text-align: left; }
}
@media (max-width: 420px) {
  #calendarStack .calendar-card { padding-inline: var(--sc-space-2); }
}
@media (max-width: 420px) {
  #calendarStack .calendar-day:is(.is-start, .is-end, .is-departure, .is-arrival) .day-event-label > span::after { left: -1px; right: -1px; }
}
@media (max-width: 340px) {
  #calendarStack .is-departure + .calendar-day .day-event-label > span { max-width: 2em; text-wrap: wrap; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .reveal-enabled .reveal-item { opacity: 1; transform: none; transition: none; }
}

/* 本轮确认：日历快捷入口与按人群／阶段的颜色说明。 */
.calendar-jump { display: flex; justify-content: center; margin: -8px auto 12px; }
.calendar-jump a { display: inline-flex; gap: 6px; align-items: center; justify-content: center; min-height: 44px; padding-inline: 12px; color: var(--brand); font-size: 14px; line-height: 20px; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; }
.calendar-jump a:hover { color: #004f46; }
.calendar-jump { align-items: center; gap: 12px; flex-wrap: wrap; }
.theme-toggle { min-height: 44px; padding: 8px 14px; border: 1px solid var(--line); border-radius: 22px; color: var(--ink); background: var(--sc-color-surface-primary); font: inherit; font-size: 13px; cursor: pointer; touch-action: manipulation; }
.theme-toggle:hover { border-color: var(--brand); }
.theme-toggle:focus-visible { outline: 2px solid var(--brand); outline-offset: 3px; }
/* 保留原海报色值；报名与指定节点用橙色，进群用蓝色，旧试色参数不改变主页面。 */
#calendar {
  --poster-yellow: #fffac2;
  --poster-orange: #ffe7c5;
  --poster-blue: #c5f5ff;
  --poster-green: #caf5e1;
  --poster-yellow-ink: #c3b401;
  --poster-orange-ink: #d98500;
  --poster-blue-ink: #00a5a1;
  --poster-green-ink: #128576;
  --campaign-recruit: var(--poster-yellow);
  --campaign-prep: var(--poster-yellow);
  --campaign-signup: var(--poster-orange);
  --campaign-sailing: var(--poster-green);
}
#calendarStack .calendar-day:is(.range-recruitment, .range-prep) { --day-ink: var(--poster-yellow-ink); }
#calendarStack .calendar-day.range-signup { --day-ink: var(--poster-orange-ink); }
#calendarStack .calendar-day.audience-sailing { --day-ink: var(--poster-green-ink); }
#calendarStack .calendar-day.range-boarding { --day-ink: var(--poster-blue-ink); background: var(--poster-blue); }
#calendarStack .calendar-day:is(.is-departure, .is-arrival, [data-date="2026-11-10"]) { --day-ink: var(--poster-orange-ink); background: var(--poster-orange); }
#calendarStack .calendar-day:is(.is-start, .is-end) .day-event-label > span::after { border-color: #d65e5f; }

/* 海报原图荧光青绿 #26FFD4：深色字配亮色衬底与标记。 */
.poster-fluorescent { --poster-fluoro: #26ffd4; }
.poster-fluorescent .poster-heading h2::before,
.poster-fluorescent .poster-heading h2::after { color: var(--poster-fluoro); text-shadow: none; }
.poster-fluorescent .heading-text { background: none; }
.poster-fluorescent #calendarStack .calendar-month-title { width: fit-content; margin-bottom: 4px; padding: 1px 7px; border-radius: 4px; color: #006d60; background: var(--poster-fluoro); }

/* 对齐 sphere-search-mobile 的 css-vars.less 暗色层级；组件包已提供相同中性色。 */
html[data-sc-theme="dark"] {
  --brand: var(--sc-color-action-primary);
  --sc-color-border-default: var(--sc-color-border-hairline);
}
[data-sc-theme="dark"] .site-shell { background-color: var(--paper); background-image: none; }
[data-sc-theme="dark"] .hero { background: var(--paper); }
[data-sc-theme="dark"] .launch-strip { background: #007062; }
[data-sc-theme="dark"] .routes-section::before { background: none; }
[data-sc-theme="dark"] .calendar-section { background: none; }
[data-sc-theme="dark"] .heading-text { background: none; }
[data-sc-theme="dark"] .poster-heading h2::before,
[data-sc-theme="dark"] .poster-heading h2::after { color: var(--brand); }
[data-sc-theme="dark"] #calendarStack .calendar-month-title { padding-inline: 0; color: var(--brand); background: transparent; }
[data-sc-theme="dark"] .route-card .new-badge.sc-ui { background: var(--campaign-accent-orange, #ff9a2f); color: #242528; }
[data-sc-theme="dark"] .calendar-jump a:hover { color: #c5ebde; }
[data-sc-theme="dark"] #calendar {
  --poster-yellow-ink: #feebbf;
  --poster-orange-ink: #ff9a2f;
  --poster-blue-ink: #c3e1fe;
  --poster-green-ink: var(--brand);
  --poster-yellow: color-mix(in srgb, var(--poster-yellow-ink) 12%, var(--sc-color-surface-primary));
  --poster-orange: color-mix(in srgb, var(--poster-orange-ink) 15%, var(--sc-color-surface-primary));
  --poster-blue: color-mix(in srgb, var(--poster-blue-ink) 12%, var(--sc-color-surface-primary));
  --poster-green: color-mix(in srgb, var(--poster-green-ink) 15%, var(--sc-color-surface-primary));
}
[data-sc-theme="dark"] #calendarStack .calendar-day.is-today .day-number { background: #007062; color: #fff; }
[data-sc-theme="dark"] #calendarStack .calendar-day:is(.is-start, .is-end) .day-event-label > span::after { border-color: #e7a288; }

/* 非会员弹窗：优惠券购会员与鱼丸客服同时可见；未配置链接时保持占位，不伪造入口。 */
.membership-dialog { position: fixed; width: min(92vw, 380px); max-height: 86vh; margin: auto; padding: 24px 22px 20px; border: 1px solid var(--line); border-radius: 16px; color: var(--ink); background: var(--sc-color-surface-primary); box-shadow: 0 18px 48px rgb(0 0 0 / .18); }
.membership-dialog::backdrop { background: rgb(0 0 0 / .42); }
.membership-close-form { position: absolute; top: 10px; right: 10px; margin: 0; }
.membership-close { width: 36px; height: 36px; border: 0; border-radius: 50%; color: var(--campaign-muted); background: transparent; font-size: 22px; line-height: 1; cursor: pointer; }
.membership-close:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }
.membership-dialog h2 { margin: 0 24px 10px 0; color: var(--brand); font-size: 20px; line-height: 28px; font-weight: 700; }
.membership-lead { margin: 0 0 4px; color: var(--campaign-muted); font-size: 14px; line-height: 22px; }
.membership-step { display: grid; gap: 8px; padding: 14px 0; border-top: 1px solid var(--line); }
.membership-step-label { color: var(--ink); font-size: 14px; font-weight: 600; line-height: 20px; }
.membership-step p { margin: 0; color: var(--campaign-muted); font-size: 13px; line-height: 20px; }
.membership-action { display: inline-flex; justify-content: center; align-items: center; min-height: 44px; padding-inline: 16px; border-radius: 22px; color: #fff; background: var(--brand); font-size: 14px; font-weight: 600; text-decoration: none; }
.membership-action:hover { filter: brightness(.94); }
.membership-action[aria-disabled="true"] { color: var(--campaign-muted); background: var(--sc-color-surface-control); cursor: default; }
.membership-poster { display: block; width: 100%; height: auto; border-radius: 10px; }
.membership-poster[hidden] { display: none; }
.membership-dialog [hidden] { display: none !important; }
.membership-qr { width: 160px; max-width: 100%; height: auto; border-radius: 8px; }

.membership-dialog h2:focus { outline: none; }

.membership-coupon-ended { color: var(--campaign-muted); font-size: 14px; line-height: 22px; margin: 14px 0; }

/* 本期长图按宽等比铺开；超出图片长度时衔接原图末尾纯色，不拉伸文字与人物。 */
.site-shell,
[data-sc-theme="dark"] .site-shell {
  background-color: #029987;
  background-image: url("assets/november-page-background.webp?v=20261028-latest");
  background-repeat: no-repeat;
  background-size: 100% auto;
  background-position: center calc(var(--launch-height, 78px) - 12px);
}
.site-shell .hero { background: transparent; }
.hero-media { width: 100%; height: auto; aspect-ratio: 941 / 1700; }
.hero-image { display: block; width: 100%; height: auto; }
.routes-section::before, .calendar-section { background: none; }
.site-shell .poster-heading h2,
.site-shell .poster-heading p,
.site-shell .route-group-label,
.site-shell .calendar-jump a { color: #073b32; }
/* 竖屏下注意事项和页脚落在 #029987 纯色区，正文需更深的墨绿才达到 4.5:1。 */
.site-shell .notes-list li,
.site-shell .footer,
.site-shell .footer a { color: #00241e; }
/* 横屏只显示横版头图，正文恢复纯色画布，不加载竖版长底图。 */
@media (orientation: landscape), (min-width: 1100px) {
  .hero-media { aspect-ratio: 2970 / 836; }
  .hero-image { width: 100%; height: 100%; object-fit: contain; }
  .site-shell,
  [data-sc-theme="dark"] .site-shell {
    background-image: none;
    background-color: var(--paper);
  }
  .site-shell .poster-heading h2,
  .site-shell .route-group-label,
  .site-shell .calendar-jump a,
  .site-shell .footer a { color: var(--brand); }
  .site-shell .poster-heading p { color: var(--sc-color-text-secondary); }
  .site-shell .notes-list li { color: var(--ink); }
  .site-shell .footer { color: var(--campaign-muted); }
}

/* 2026-10-28 视觉更新：倒计时定色，今天采用本期橙色强调。 */
:root {
  --campaign-countdown: #f77a39;
  --today-fill: #f77a39;
  --today-ink: #522307;
  --today-label: #a63d00;
}
.launch-strip,
[data-sc-theme="dark"] .launch-strip { background: var(--campaign-countdown); color: #fff; }
.launch-inner { padding-block: 6px; }
@media (max-width: 720px) {
  .launch-inner { padding-block: 5px; }
}
.footer { border-top: 0; justify-content: center; }
.card-title, .card-content p, .output-copy { letter-spacing: 0; word-spacing: normal; text-align: left; white-space: normal; }
#calendarStack .calendar-day.is-today .day-heading { flex-direction: row; gap: 2px; }
#calendarStack .calendar-day.is-today .day-number {
  width: 20px;
  height: 20px;
  color: var(--today-ink);
  background: var(--today-fill);
  font-size: 12px;
  line-height: 18px;
  font-weight: 600;
}
#calendarStack .calendar-day.is-today .day-marker {
  color: var(--today-label);
  font-size: 10px;
  line-height: 14px;
  font-weight: 700;
}
@media (max-width: 374px) {
  #calendarStack .calendar-day.is-today .day-heading { gap: 1px; }
  #calendarStack .calendar-day.is-today .day-number { width: 18px; height: 18px; }
  #calendarStack .calendar-day.is-today .day-marker { font-size: 9px; }
}
/* 仅竖版换白色章节标题与箭头；横版沿用原配色。 */
@media (orientation: portrait) and (max-width: 1099px) {
  .hero-media { aspect-ratio: 941 / 1300; }
  .site-shell .poster-heading h2,
  .site-shell .poster-heading p,
  .poster-fluorescent .poster-heading h2::before,
  .poster-fluorescent .poster-heading h2::after { color: #fff; }
  .poster-fluorescent .heading-text { background: none; }
  .site-shell .route-group-label:nth-of-type(-n + 2) { color: #fff; }
  .site-shell .notes-list li,
  .site-shell .notes-list li::marker,
  .site-shell .footer a { color: #fff; }
}
@media (orientation: landscape), (min-width: 1100px) {
  .site-shell,
  [data-sc-theme="dark"] .site-shell { background-color: #f2f3f5; }
  .site-shell .route-card.sc-ui,
  #calendarStack .calendar-card {
    background-color: #fff;
    background-image: none;
  }
}
@media (min-width: 1100px) {
  .calendar-wrap { width: min(1120px, 100%); }
  #calendarStack .calendar-months { grid-template-columns: minmax(0, 1fr); gap: 24px; }
}
@media (max-width: 720px) {
  #calendarStack .calendar-day { min-height: 32px; padding-block: 2px; }
  #calendarStack .calendar-day:is(.range-recruitment, .range-prep, .range-signup, .range-boarding, .range-sailing) { min-height: 48px; }
  #calendarStack .calendar-day.has-event { min-height: 60px; }
  #calendarStack .day-event-label { margin-top: 2px; padding-block: 2px; }
}
