:root{--sb-parchment: #ffffff;--sb-ivory: #ffffff;--sb-warm-sand: #f4f4f5;--sb-border-cream: #f0f0f0;--sb-border-warm: #e5e5e5;--sb-ring-warm: #d4d4d4;--sb-ink: #111111;--sb-charcoal: #3f3f46;--sb-olive: #52525b;--sb-stone: #8e8e93;--sb-terracotta: #2563eb;--sb-coral: #1d4ed8;--sb-moss: #16a34a;--sb-success: #16a34a;--sb-warning: #d97706;--sb-danger: #dc2626;--sb-info: #52525b;--sb-font-serif: "Noto Serif SC", "Newsreader", Georgia, "Songti SC", "STSong", "SimSun", serif;--sb-shadow-card: 0 0 0 1px var(--sb-border-cream);--sb-shadow-card-hover: 0 0 0 1px var(--sb-ring-warm), 0 6px 24px rgba(17, 17, 17, .05);--sb-shadow-emboss: 0 0 0 1px var(--sb-border-warm), 0 2px 16px rgba(17, 17, 17, .03);--sb-shadow-cta: 0 0 0 1px var(--sb-ink);--sb-shadow-cta-hover: 0 0 0 1px #27272a, 0 6px 20px rgba(17, 17, 17, .16)}.sb-btn-brand{background:var(--sb-ink);color:#fff;box-shadow:var(--sb-shadow-cta)}.sb-btn-brand:hover{background:#27272a;box-shadow:var(--sb-shadow-cta-hover)}.sb-btn{border-radius:8px}.sb-nav-blur{background:#ffffffd9}.sb-input:focus{border-color:var(--sb-ink);box-shadow:0 0 0 3px #11111114}.sb-underline-warm{background-image:linear-gradient(transparent 60%,#1111111f 60%)}.sb-pulse-dot{background:var(--sb-terracotta)}@keyframes sb-pulse-warm{0%,to{box-shadow:0 0 #2563eb66}50%{box-shadow:0 0 0 6px #2563eb00}}.fx-reveal{opacity:0;transform:translateY(22px);transition:opacity .75s cubic-bezier(.16,1,.3,1),transform .75s cubic-bezier(.16,1,.3,1);transition-delay:var(--reveal-delay, 0ms)}.fx-reveal.is-revealed{opacity:1;transform:none}@keyframes fx-enter{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}.fx-enter{animation:fx-enter .85s cubic-bezier(.16,1,.3,1) both;animation-delay:var(--enter-delay, 0ms)}.fx-lift{transition:transform .35s cubic-bezier(.16,1,.3,1),border-color .35s ease,box-shadow .35s ease}.fx-lift:hover{transform:translateY(-3px);border-color:var(--sb-ring-warm);box-shadow:0 12px 32px #1111110f}.fx-arrow{display:inline-block;transition:transform .3s cubic-bezier(.16,1,.3,1)}a:hover>.fx-arrow,.fx-arrow-host:hover .fx-arrow{transform:translate(4px)}@keyframes fx-breathe{0%,to{box-shadow:0 0 #16a34a59}55%{box-shadow:0 0 0 5px #16a34a00}}.fx-breathe{animation:fx-breathe 2.6s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.fx-reveal,.fx-enter,.fx-lift,.fx-arrow{animation:none;transition:none;opacity:1;transform:none}.fx-breathe{animation:none}}
