:root{--ink:#253b35;--green:#315e50;--paper:#f3eedf;--white:#fffaf0;--cream:#e8d7b8;--orange:#cb7048;--sage:#9eb69b;--line:rgba(37,59,53,.2);--muted:#6c776f}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Noto Sans SC",sans-serif;line-height:1.75}img{display:block;max-width:100%}a{color:inherit;text-decoration:none}.skip-link{position:fixed;top:-80px;left:15px;z-index:999;background:var(--cream);padding:10px 15px}.skip-link:focus{top:15px}.soap-header{height:80px;display:flex;align-items:center;gap:28px;padding:0 32px;border-bottom:2px solid;background:rgba(243,238,223,.96);position:sticky;top:0;z-index:80;backdrop-filter:blur(10px)}.soap-logo img{width:160px}.soap-header nav{display:flex;gap:14px;margin-left:auto;font-size:13px;font-weight:600;list-style:none;padding:0}.soap-header nav>li{position:relative}.soap-header nav>li>a{display:block;padding:10px 4px}.soap-header nav>li>a:hover{color:var(--orange)}.soap-header nav .soap-sub{display:none;position:absolute;top:100%;left:0;min-width:190px;max-height:360px;overflow-y:auto;background:var(--white);border:2px solid var(--ink);box-shadow:0 8px 20px rgba(0,0,0,.12);padding:6px 0;list-style:none;margin:0;z-index:400}.soap-header nav .soap-sub a{display:block;padding:9px 16px;font-size:13px;font-weight:600;color:var(--ink)}.soap-header nav .soap-sub a:hover{background:var(--cream);color:var(--orange)}.soap-header nav>li:hover>.soap-sub{display:block}.batch-code{font:11px "IBM Plex Mono";background:var(--green);color:#fff;padding:7px 10px}.nav-toggle{display:none;margin-left:auto;border:2px solid;background:transparent;padding:7px 10px;font-weight:700}.soap-hero{display:grid;grid-template-columns:1fr 1.1fr;min-height:720px;background:var(--cream)}.hero-copy{padding:9vw 5vw 7vw max(6vw,38px);align-self:center}.hero-copy>span,.section-head>span,.botanical-section>div>span,.eco-section>div>span,.formula-detail>div>span{font:12px "IBM Plex Mono";letter-spacing:.12em}.hero-copy h1,.section-head h2,.botanical-section h2,.eco-section h2,.closing-soap h2,.page-hero h1,.formula-detail h1{font-weight:700;line-height:1.03;letter-spacing:-.04em}.hero-copy h1{font-size:clamp(60px,8vw,112px);margin:25px 0}.hero-copy p{font-size:18px;max-width:580px}.hero-copy>div{display:flex;gap:16px;margin-top:30px}.hero-copy a:first-child{background:var(--green);color:#fff;padding:12px 18px}.hero-copy a:last-child{padding:12px 4px;border-bottom:2px solid}.hero-visual{position:relative;background:var(--sage)}.hero-visual>img{width:100%;height:720px;object-fit:cover}.formula-slip{position:absolute;right:25px;bottom:25px;width:190px;background:var(--white);border:2px solid;padding:17px;transform:rotate(-2deg);font:11px "IBM Plex Mono"}.formula-slip b,.formula-slip span{display:block;padding:4px 0}.lab-strip{display:flex;justify-content:center;gap:28px;padding:15px;background:var(--green);color:#fff;font:12px "IBM Plex Mono";white-space:nowrap;overflow:hidden}.lab-strip i{width:7px;height:7px;border-radius:50%;background:var(--orange);align-self:center}.soap-section{width:min(1280px,calc(100% - 64px));margin:auto;padding:120px 0}.section-head{display:grid;grid-template-columns:1.2fr .8fr;gap:60px;align-items:end;margin-bottom:50px}.section-head>span{grid-column:1/-1;color:var(--orange)}.section-head h2{font-size:clamp(48px,6vw,80px);margin:0}.section-head p{font-size:17px;margin:0}.formula-board{display:grid;grid-template-columns:1.35fr .85fr;border:2px solid;background:var(--white)}.formula-board>img{width:100%;height:650px;object-fit:contain;background:#dce6d8;border-right:2px solid}.formula-grid{display:grid;grid-template-columns:repeat(2,1fr)}.formula-grid article{padding:24px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.formula-grid b{font:38px "IBM Plex Mono";color:var(--orange)}.formula-grid span{display:block;font-weight:700;font-size:20px}.process-section{padding:120px max(5vw,32px);background:var(--green);color:#fff}.process-section .section-head{max-width:1280px;margin:0 auto 50px}.section-head.light p{color:#c1d0c9}.process-line{max-width:1280px;margin:auto;display:flex;align-items:center}.process-line article{flex:1;border:1px solid #779186;padding:26px;min-height:260px}.process-line>i{width:40px;height:2px;background:var(--cream)}.process-line b{font:35px "IBM Plex Mono";color:var(--cream)}.process-line span{display:block;font:11px "IBM Plex Mono";margin-top:40px}.ingredient-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.ingredient-grid article{background:var(--white);border:2px solid;padding:20px}.ingredient-grid img{width:100%;aspect-ratio:1;object-fit:contain;background:#e5ddc8}.ingredient-grid span{font:11px "IBM Plex Mono";color:var(--orange)}.ingredient-grid h3{font-size:23px}.botanical-section{display:grid;grid-template-columns:1fr 1fr;background:var(--orange)}.botanical-section>img{width:100%;height:720px;object-fit:cover;background:#d9b790}.botanical-section>div{padding:9vw}.botanical-section h2,.eco-section h2{font-size:clamp(50px,6vw,86px);margin:20px 0}.botanical-section li{padding:12px 0;border-bottom:1px solid rgba(37,59,53,.3)}.cure-rack{display:grid;grid-template-columns:1.3fr .7fr;background:var(--white);border:2px solid}.cure-rack>img{width:100%;height:610px;object-fit:contain;background:#dce6d8;border-right:2px solid}.cure-weeks{display:grid}.cure-weeks article{padding:23px;border-bottom:1px solid var(--line)}.cure-weeks b{font:28px "IBM Plex Mono";color:var(--orange)}.cure-weeks span,.cure-weeks small{display:block}.cure-weeks span{font-weight:700;font-size:20px}.eco-section{display:grid;grid-template-columns:1fr 1fr;background:var(--sage)}.eco-section>div{padding:9vw}.eco-section>img{width:100%;height:700px;object-fit:cover;background:#e6ddc8}.eco-list{margin-top:30px}.eco-list article{display:grid;grid-template-columns:55px 1fr;padding:12px 0;border-top:1px solid}.eco-list b{grid-row:1/3;font:24px "IBM Plex Mono";color:var(--orange)}.eco-list small{color:var(--muted)}.closing-soap{text-align:center;padding:150px 25px;background:var(--cream)}.closing-soap h2{font-size:clamp(58px,8vw,108px);margin:25px 0}.closing-soap a{font-weight:700;border-bottom:2px solid}.soap-footer{background:var(--green);color:#fff;padding:70px 5vw 25px;display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:50px}.soap-footer img{width:160px;background:#fff;border-radius:8px;padding:8px}.soap-footer p,.soap-footer a{color:#c1d0c9}.soap-footer a{display:block;margin:8px 0}.soap-footer small{grid-column:1/-1;padding-top:20px;border-top:1px solid #779186}#back-to-top{position:fixed;right:20px;bottom:20px;width:46px;height:46px;border:2px solid;background:var(--orange);font-size:20px;opacity:0;pointer-events:none;z-index:90}#back-to-top.is-visible{opacity:1;pointer-events:auto}.page-hero{padding:110px max(5vw,28px);background:var(--sage)}.page-hero span{font:12px "IBM Plex Mono"}.page-hero h1{font-size:clamp(58px,8vw,105px);margin:20px 0}.page-hero p{max-width:720px;font-size:18px}.content-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:60px}.paper-article{background:var(--white);border:2px solid;padding:45px;font-size:17px;background-image:linear-gradient(transparent 31px,rgba(37,59,53,.07) 32px);background-size:100% 32px}.paper-article h2{font-size:38px}.note-card,.batch-card{background:var(--white);border:2px solid;padding:25px;margin-bottom:20px}.note-card>span{font:11px "IBM Plex Mono";color:var(--orange)}.warning-card{background:#f2c8b2}.oil-card{background:#dce6d8}.cure-card{background:#e8d7b8}.note-card dl div{padding:9px 0;border-top:1px solid}.note-card dd{margin:3px 0}.batch-card{background:var(--cream);display:grid;gap:3px}.batch-card b{font:42px "IBM Plex Mono"}.journal-list{border-top:2px solid}.journal-list article{display:grid;grid-template-columns:70px 1fr;gap:20px;padding:32px 0;border-bottom:1px solid}.journal-list article>b{font:32px "IBM Plex Mono";color:var(--orange)}.journal-list span{font:11px "IBM Plex Mono";color:var(--orange)}.journal-list h2{font-size:28px;margin:5px 0}.soap-gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.soap-gallery figure{margin:0;background:var(--white);border:2px solid}.soap-gallery img{width:100%;aspect-ratio:1.15;object-fit:contain;background:#e5ddc8}.soap-gallery figcaption{padding:14px;font-weight:700}.article-page{width:min(950px,calc(100% - 48px));margin:auto;padding:100px 0}.article-page header{text-align:center}.article-page header span{font:11px "IBM Plex Mono";color:var(--orange)}.article-page h1{font-size:clamp(48px,6vw,76px);line-height:1.1}.article-cover{width:100%;margin:45px 0}.article-body{max-width:760px;margin:auto;font-size:17px}.article-body h2{font-size:32px;margin-top:45px}.article-body blockquote{padding:22px 28px;background:#f2c8b2;border-left:6px solid var(--orange);margin:35px 0}.soap-types{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.soap-types article{background:var(--white);border:2px solid;padding:20px}.soap-types img{aspect-ratio:1.15;object-fit:contain;background:#e5ddc8}.soap-types span{font:11px "IBM Plex Mono";color:var(--orange)}.soap-types h2{font-size:27px}.formula-detail{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:70px}.formula-detail h1{font-size:clamp(54px,7vw,90px)}.formula-detail img{background:#dce6d8}.prose-page{max-width:850px;font-size:18px}.prose-page h2{font-size:34px;margin-top:45px}.contact-layout{display:grid;grid-template-columns:1fr 1fr;gap:80px}.contact-layout dl div{padding:15px 0;border-top:1px solid}.contact-layout dd{margin:4px 0}.contact-layout form{display:grid;gap:16px}.contact-layout input,.contact-layout textarea{display:block;width:100%;padding:12px;margin-top:6px;border:2px solid;background:var(--white)}.contact-layout button{background:var(--orange);border:2px solid;padding:13px;font-weight:700}.search-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;background:var(--green)}.search-grid a{background:var(--white);padding:32px;display:grid;gap:7px}.search-grid b{font:34px "IBM Plex Mono";color:var(--orange)}.search-grid span{font-size:23px;font-weight:700}@media(max-width:980px){.nav-toggle{display:block}.batch-code{display:none}.soap-header nav{display:none;position:absolute;top:80px;left:0;right:0;background:var(--paper);padding:20px;grid-template-columns:repeat(2,1fr);border-bottom:2px solid}.soap-header nav .soap-sub{position:static;min-width:0;max-height:none;overflow:visible;border:0;box-shadow:none;padding:0 0 4px 16px}.soap-header nav .soap-sub a{padding:7px 0;font-size:12px}.soap-header nav .soap-sub.is-open{display:block}.soap-header nav.is-open{display:grid}.soap-hero,.botanical-section,.eco-section,.content-layout,.formula-detail,.contact-layout{grid-template-columns:1fr}.hero-visual>img,.botanical-section>img,.eco-section>img{height:550px}.section-head{grid-template-columns:1fr}.formula-board,.cure-rack{grid-template-columns:1fr}.formula-board>img,.cure-rack>img{border-right:0;border-bottom:2px solid}.ingredient-grid,.soap-gallery,.soap-types{grid-template-columns:repeat(2,1fr)}.process-line{display:grid;grid-template-columns:repeat(2,1fr)}.process-line>i{display:none}.soap-footer{grid-template-columns:1fr 1fr}}@media(max-width:620px){.soap-header{padding:0 18px}.soap-logo img{width:140px}.soap-hero{display:block}.hero-copy{padding:75px 22px}.hero-copy h1{font-size:54px}.hero-visual>img{height:420px}.formula-slip{display:none}.lab-strip{justify-content:flex-start}.soap-section{width:calc(100% - 36px);padding:75px 0}.section-head h2,.botanical-section h2,.eco-section h2{font-size:45px}.botanical-section>div,.eco-section>div{padding:70px 24px}.formula-grid,.ingredient-grid,.soap-gallery,.soap-types,.search-grid,.process-line{grid-template-columns:1fr}.process-section{padding:75px 18px}.soap-footer{grid-template-columns:1fr}.soap-footer>div:not(:first-child){display:none}.page-hero{padding-top:75px;padding-bottom:75px}.page-hero h1{font-size:55px}}

/* 数据库模块标题缩小 */
.db-mod .section-head{margin-bottom:26px}.db-mod .section-head h2{font-size:32px}.db-mod .section-head p{font-size:14px}.db-mod .section-head>span{font-size:11px}.db-mod .soap-types h2,.db-mod .search-grid span{font-size:18px}.db-mod .soap-types img,.db-mod .soap-types article>span{height:auto}
/* 列表/详情 banner 缩小 */
.page-hero{padding:60px max(5vw,28px)}.page-hero h1{font-size:clamp(30px,4vw,44px);margin:12px 0}.page-hero p{font-size:15px}

/* 详情页侧边栏适配 */
.content-layout .article-page{width:100%;max-width:100%;margin:0;padding:0 0 30px}
.content-layout .note-card h3{font-size:18px;margin:6px 0 12px}
