/* 昱森统一品牌层。保留纺织长卷与产品入口，只统一品牌、字级和控件。 */
:root {
  --ink: var(--ys-ink);
  --muted: var(--ys-text-secondary);
  --accent: var(--ys-brand);
  --paper: var(--ys-surface);
  --wash: var(--ys-canvas);
  --line: var(--ys-border);
  --blue: var(--ys-info);
  --green: var(--ys-success);
  font-family: var(--ys-font);
  color: var(--ys-text);
  background: var(--ys-surface);
}
body { font-family: var(--ys-font); color: var(--ys-text); background: var(--ys-surface); line-height: 1.7; }
body::before { content: none; }
button, input, select, textarea { font-family: inherit; }
a, button, input, select, textarea { accent-color: var(--ys-brand); }
:focus-visible { outline: 3px solid var(--ys-brand); outline-offset: 3px; }
.button:focus-visible, a:focus-visible, .scroll-panorama:focus-visible,
.scene-product a:focus-visible { outline-color: var(--ys-brand); }
.site-header, .entry-header, .login-header { background: var(--ys-surface); border-color: var(--ys-border); }
.brand img, .login-brand img { filter: none; border-radius: var(--ys-radius-md); }
.brand strong, .login-brand strong { font-family: var(--ys-font); font-weight: 650; letter-spacing: .08em; }
.brand small, .login-brand small { font-family: var(--ys-font); color: var(--ys-text-secondary); letter-spacing: .1em; }
.nav a[aria-current=page], .nav a:hover, .text-link:hover { color: var(--ys-brand); }
.nav .nav-login, html[data-page=home] .nav .nav-login {
  background: var(--ys-brand); border-color: var(--ys-brand); color: white;
  border-radius: var(--ys-radius-sm); min-height: 44px;
}
.nav .nav-login:hover, html[data-page=home] .nav .nav-login:hover { background: var(--ys-brand-hover); color: white; }
.nav .nav-login span, html[data-page=home] .nav .nav-login span { color: white; }
.button, .login-primary, .product-login {
  background: var(--ys-brand); border-color: var(--ys-brand); color: white;
  border-radius: var(--ys-radius-sm); letter-spacing: 0; font-weight: 550;
}
.button:hover { background: var(--ys-brand-hover); border-color: var(--ys-brand-hover); }
.button.secondary { background: var(--ys-surface); color: var(--ys-text); border-color: var(--ys-border-strong); }
.button.secondary:hover { background: var(--ys-canvas); border-color: var(--ys-brand); }
.button:disabled { background: var(--ys-canvas); color: var(--ys-text-muted); border-color: var(--ys-border); }
.hero-title-area h1, .section-heading h2, .product-row h3, .journey-band h2 {
  font-family: var(--ys-font); font-weight: 600; color: var(--ys-ink); letter-spacing: -.025em;
}
.hand-note { color: var(--ys-brand); }
.hero-description, .section-heading>p, .product-row p, .footer-inner { color: var(--ys-text-secondary); }
.hero-prelude, .chapter-label span, .product-number, .hero-product-link, .text-link { color: var(--ys-brand); }
.journey-band { background: var(--ys-canvas); border-color: var(--ys-border); }
.journey-band .button { background: var(--ys-brand); color: white; border-color: var(--ys-brand); }
.scene-trigger, .scene-close, .scene-switcher button { font-family: var(--ys-font); }
.scene-tag, .scene-products-paper {
  background: var(--ys-surface); border-color: var(--ys-border-strong); border-top-color: var(--ys-brand);
  box-shadow: var(--ys-shadow-overlay); border-radius: var(--ys-radius-md); color: var(--ys-text);
}
.scene-trigger:hover .scene-tag, .scene-trigger[aria-expanded=true] .scene-tag {
  background: var(--ys-surface); border-color: var(--ys-brand);
}
.scene-trigger:focus-visible .scene-tag { outline-color: var(--ys-brand); }
.scene-trigger strong, .scene-scroll-status { color: var(--ys-ink); }
.scene-number, .scene-action, .scene-selected-label, .scene-product a { color: var(--ys-brand); }
.scene-trigger small, .scene-demo-note, .scene-product p, .scene-product-pending, .product-pending { color: var(--ys-text-secondary); }
.scene-product, .product-row { border-color: var(--ys-border); }
.scene-product.is-common { background: var(--ys-brand-soft); border-color: var(--ys-border); }
.scene-product.is-common h3::after { color: var(--ys-brand-hover); border-color: var(--ys-brand-200); border-radius: 3px; }
.scene-close, .scene-scroll-button, .scene-switcher button {
  color: var(--ys-text); background: var(--ys-surface); border-color: var(--ys-border-strong); border-radius: var(--ys-radius-sm);
}
.scene-close:hover, .scene-scroll-button:hover:not(:disabled), .scene-switcher button:hover { background: var(--ys-brand-soft); }
.scene-switcher button[aria-pressed=true] { background: var(--ys-brand); border-color: var(--ys-brand); color: white; }
.scene-close:focus-visible, .scene-scroll-button:focus-visible, .scene-switcher button:focus-visible { outline-color: var(--ys-brand); }
.entry-main, .login-main { color: var(--ys-text); }
.entry-products>article, .login-card { border-color: var(--ys-border); border-radius: var(--ys-radius-lg); background: var(--ys-surface); }
.login-panel, .login-option, .entry-product { border-color: var(--ys-border); border-radius: var(--ys-radius-md); background: var(--ys-surface); box-shadow: var(--ys-shadow-panel); }
.login-option:hover, .entry-product:hover { border-color: var(--ys-brand); background: var(--ys-brand-soft); }
.login-option.is-selected, .entry-product.is-selected { border-color: var(--ys-brand); background: var(--ys-brand-soft); box-shadow: inset 3px 0 var(--ys-brand); }
.login-nav a[aria-current=page] { color: var(--ys-brand); border-color: var(--ys-brand); }
.login-eyebrow, .login-index, .login-option-arrow, .entry-number, .eyebrow { color: var(--ys-brand); }
.login-intro h1, .login-panel h2, .entry-main h1, .entry-product h2 { color: var(--ys-ink); font-weight: 600; letter-spacing: -.02em; }
.login-intro p, .login-option small, .login-product-note, .login-explanation p, .login-footnote, .login-footer, .intro, .entry-product p, .entry-note { color: var(--ys-text-secondary); }
.login-button, .entry-action { background: var(--ys-brand); border: 1px solid var(--ys-brand); border-radius: var(--ys-radius-sm); }
.login-button:hover, .entry-action:hover { background: var(--ys-brand-hover); color: white; }
.login-button.secondary { background: var(--ys-surface); color: var(--ys-text); border-color: var(--ys-border-strong); }
.login-button.secondary:hover { background: var(--ys-canvas); color: var(--ys-text); }
.login-state, .entry-status { background: var(--ys-warning-soft); color: var(--ys-warning); border-color: #e7d2a9; }
.login-state.is-open { background: var(--ys-success-soft); color: var(--ys-success); border-color: #bed9c6; }
.login-explanation, .login-footnote, .login-footer { border-color: var(--ys-border); }
.scene-canvas-shell .scene-products-paper { background: var(--ys-surface); border-color: var(--ys-border-strong); border-top-color: var(--ys-brand); }
.back-link { color: var(--ys-brand-hover); border-color: var(--ys-brand); }
@media (max-width: 720px) {
  .brand strong { font-size: 23px; }
  .nav .nav-login { display: inline-flex; align-items: center; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: 0s !important; animation: none !important; }
}

/* 官网固定署名旁放上疏纱标志。词标文字不改，只补原先没有的标记。 */
.ys-site-signature {
  display: flex; flex-direction: row; align-items: center; justify-content: center; gap: 8px;
  padding: 20px 16px calc(20px + env(safe-area-inset-bottom));
  border-top: 1px solid var(--ys-border, #d9e3e6);
  background: var(--ys-canvas, #f3f6f7);
  color: var(--ys-text-muted, #5d727a);
  font-size: 12px; line-height: 1.4; letter-spacing: .06em;
}
.ys-site-signature span { display: block; }
@media (max-width: 600px) {
  .ys-site-signature { padding-bottom: calc(16px + env(safe-area-inset-bottom)); }
}
/* 页脚文字行与无脚本提示使用同一枚疏纱 SVG，避免纯文字品牌处没有标志。 */
.footer-brand, .login-footer > span, footer > span {
  display: inline-flex; align-items: center; gap: 8px;
}
.footer-brand img, .login-footer img, .ys-site-signature img, footer > span img, .login-noscript img {
  width: 28px; height: 28px; border-radius: 6px; flex: none;
}
