/* Shared product tokens. Motion affects only transform and opacity. */
:root{--brand:#4c7dff;--brand-dark:#273854;--surface:#fff;--page:#f5f7ff;--text:#273854;--muted:#7b8eaa;--border:#e1e9f5;--ease:cubic-bezier(.2,.75,.25,1);--accent:var(--brand);--ink:var(--text);--ink2:#576e91;--dim:var(--muted);--line:var(--border);--product-font:'Times New Roman','FangSong','仿宋','STFangsong','FangSong_GB2312',serif}
@keyframes productEnter{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
.reveal{animation:productEnter .35s var(--ease) both}
button,a,input,textarea,summary{ -webkit-tap-highlight-color:transparent }
button,a{transition:transform .24s var(--ease),opacity .24s var(--ease),background-color .2s,color .2s,border-color .2s}
button:active,a:active{transform:scale(.97)}
button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--brand);outline-offset:4px}
@media(hover:hover){button:not(:disabled):hover,a.cta:hover{transform:translateY(-2px)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.reveal{animation:none}}

html,body{font-family:var(--product-font)}

/* Bright liquid glass: opaque fallback, double edge, clear text. */
:root{--glass-bg:rgba(255,255,255,.67);--glass-edge:rgba(255,255,255,.9);--glass-shadow:0 12px 36px rgba(82,119,184,.1),inset 0 1px 0 rgba(255,255,255,.95),inset 0 -1px 0 rgba(153,186,230,.13);--glass-filter:blur(20px) saturate(1.35)}
.glass{background:var(--glass-bg);border:1px solid var(--glass-edge);backdrop-filter:var(--glass-filter);-webkit-backdrop-filter:var(--glass-filter);box-shadow:var(--glass-shadow)}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.glass{background:#fff}}
