:root{--color-bg:#f7f5f0;--color-bg-alt:#eeeeea;--color-surface:#ffffff;--color-ink:#1b1e1a;--color-ink-soft:#4a4f49;--color-muted:#7c827a;--color-line:#dedcd4;--color-accent:#8a6d3b;--color-accent-dark:#6f5730;--color-forest:#26352a;--color-white:#ffffff;--color-hero:#101510;--color-hero-text:#f4f1e9;--font-sans:"Inter","Helvetica Neue",-apple-system,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;--font-serif:"Cormorant Garamond","Times New Roman","Songti SC",serif;--sp-1:0.375rem;--sp-2:0.75rem;--sp-3:1rem;--sp-4:1.5rem;--sp-5:2rem;--sp-6:3rem;--sp-7:4rem;--sp-8:6rem;--container:1440px;--container-gut:1.25rem;--img-ratio:4/5;--ease:cubic-bezier(0.22,0.61,0.36,1);--trans-fast:160ms var(--ease);--trans-med:280ms var(--ease);--trans-slow:520ms var(--ease);--z-header:50;--z-banner:1;--z-mobile-nav:60;--z-lightbox:80;--z-toast:90;--radius:6px;--radius-lg:12px}*{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{margin:0;background:var(--color-bg);color:var(--color-ink);font-family:var(--font-sans);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}h1,h2,h3,h4{margin:0 0 .5em;font-weight:600;line-height:1.25}p{margin:0 0 1em}button{font-family:inherit;font-size:inherit;color:inherit;cursor:pointer;background:none;border:0;padding:0}.container{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:var(--container-gut)}.module-title{font-size:clamp(1.5rem,3vw,2rem);font-weight:600;letter-spacing:.02em;margin-bottom:var(--sp-4);color:var(--color-ink)}.module-title .en{display:block;margin-top:.25rem;font-size:.78em;font-weight:500;letter-spacing:.28em;text-transform:uppercase;color:var(--color-muted);font-family:var(--font-serif)}.hero-band{background:var(--color-hero);color:var(--color-hero-text)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.skeleton{background:linear-gradient(90deg,var(--color-bg-alt) 25%,#e8e6df 40%,var(--color-bg-alt) 60%);background-size:800px 100%;animation:shimmer 1.4s var(--ease) infinite;border-radius:var(--radius)}@media (prefers-reduced-motion:reduce){.skeleton{animation:none}}.product-grid{display:grid;grid-gap:var(--sp-4) var(--sp-3);gap:var(--sp-4) var(--sp-3);grid-template-columns:repeat(4,minmax(0,1fr))}@media (max-width:1439px){.product-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-4) var(--sp-3)}}@media (max-width:1023px){.product-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-4) var(--sp-3)}}@media (min-width:768px) and (max-width:1023px){.product-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:767px){.product-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-4) var(--sp-2)}}:root{--swiper-pagination-color:var(--color-accent);--swiper-pagination-bullet-inactive-color:var(--color-muted)}.rich-text{max-width:100%;overflow-wrap:break-word}.rich-text p{margin-bottom:1em}.rich-text img{max-width:100%;height:auto;border-radius:var(--radius)}.rich-text h2,.rich-text h3{margin-top:1.4em}.rich-text ol,.rich-text ul{padding-left:1.4em}.intro-section{padding:var(--sp-8) 0 var(--sp-6)}.intro-body{max-width:860px;margin:0 auto;text-align:center}.intro-en{font-family:var(--font-serif);font-size:.85rem;letter-spacing:.32em;text-transform:uppercase;color:var(--color-muted);margin-bottom:var(--sp-3)}.intro-zh{font-size:clamp(1.15rem,2.4vw,1.6rem);font-weight:500;line-height:1.9;color:var(--color-ink);white-space:pre-line}.page-section{padding:calc(var(--sp-7) + 72px) 0 var(--sp-7)}.products-page{background:#f4f3f0;padding-bottom:var(--sp-8)}.skip-link{position:absolute;left:-9999px;top:0;z-index:200;padding:var(--sp-2) var(--sp-3);background:var(--color-ink);color:var(--color-white)}.skip-link:focus{left:0}.m-reveal{opacity:0;transform:translateY(18px);transition:opacity .62s var(--ease),transform .62s var(--ease);will-change:opacity,transform}.m-reveal-strip>*{transition:none}.m-reveal-in,.m-reveal-strip>*{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.m-reveal{opacity:1;transform:none;transition:none}}