/* ============================================================
   Page-specific modules
   ============================================================ */

/* ---------- Origin / terroir cards ---------- */
.origins{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden}
.origin{background:var(--bg);padding:clamp(28px,3.4vw,46px);position:relative;transition:background .5s var(--ease)}
.origin:hover{background:#271A0A}
.o-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}
.o-name{font-family:var(--f-display);font-size:clamp(1.5rem,2.3vw,2rem);color:var(--cream-100);line-height:1.1}
.o-en{margin-top:6px;font-size:.66rem;letter-spacing:.24em;text-transform:uppercase;color:var(--magic-600)}
.o-flag{font-family:var(--f-display);font-size:.78rem;letter-spacing:.2em;color:var(--fg-mute);border:1px solid var(--line-strong);padding:.42em .85em;border-radius:100px;white-space:nowrap}
.o-flavor{margin-top:26px;font-size:.9rem;color:var(--fg-dim);line-height:1.9}
.o-notes{margin-top:18px;display:flex;flex-wrap:wrap;gap:7px}
.o-notes span{font-size:.72rem;letter-spacing:.05em;color:var(--magic-200);background:rgba(245,213,17,.09);border:1px solid rgba(245,213,17,.2);padding:.32em .8em;border-radius:100px}
.o-meta{margin-top:26px;border-top:1px solid var(--line);padding-top:18px;display:grid;grid-template-columns:repeat(2,1fr);gap:14px 22px}
.o-meta div{font-size:.78rem;color:var(--fg-mute);line-height:1.5}
.o-meta b{display:block;font-weight:600;font-size:.64rem;letter-spacing:.16em;text-transform:uppercase;color:var(--magic-600);margin-bottom:4px}
.o-meta i{font-style:normal;color:var(--cream-200)}
@media(max-width:820px){.origins{grid-template-columns:1fr}.o-meta{grid-template-columns:1fr 1fr}}

/* flavor wheel */
.wheel{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:22px}
.wheel>div{border:1px solid var(--line);border-radius:2px;padding:16px 14px;background:rgba(255,255,255,.017);transition:border-color .4s,transform .4s var(--ease-out)}
.wheel>div:hover{border-color:rgba(245,213,17,.4);transform:translateY(-3px)}
.wheel h5{font-size:.83rem;font-weight:600;color:var(--cream-100)}
.wheel p{margin-top:7px;font-size:.765rem;color:var(--fg-mute);line-height:1.7}
@media(max-width:900px){.wheel{grid-template-columns:repeat(2,1fr)}}

/* ---------- Business matrix (home) ---------- */
.biz{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border-block:1px solid var(--line)}
.biz>a{background:var(--bg);padding:0 0 34px;position:relative;display:flex;flex-direction:column;transition:background .5s}
.biz>a:hover{background:#271A0A}
.biz .ph{aspect-ratio:16/10;overflow:hidden;position:relative;flex:none}
.biz .ph img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease-out);filter:brightness(.9)}
.biz>a:hover .ph img{transform:scale(1.05);filter:brightness(1)}
.biz .ph::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 50%,var(--bg))}
.biz .bd{padding:0 30px;position:relative}
.biz .idx{font-family:var(--f-display);font-size:.8rem;letter-spacing:.24em;color:var(--magic-600);margin-bottom:12px;margin-top:-2px}
.biz h3{font-size:1.28rem;font-weight:600;font-family:var(--f-serif-cn)}
.biz .en{margin-top:5px;font-size:.64rem;letter-spacing:.2em;text-transform:uppercase;color:var(--fg-mute)}
.biz p{margin-top:15px;font-size:.875rem;color:var(--fg-dim);line-height:1.85}
.biz ul{margin-top:17px;display:flex;flex-direction:column;gap:8px}
.biz li{font-size:.815rem;color:var(--cream-300);display:flex;gap:10px;align-items:flex-start}
.biz li::before{content:"";width:4px;height:4px;background:var(--magic-600);transform:rotate(45deg);margin-top:.62em;flex:none}
.biz .go{margin-top:22px}
@media(max-width:960px){.biz{grid-template-columns:1fr}}
/* 业务板块收窄为两项时使用（原为三项） */
.biz--2{grid-template-columns:repeat(2,1fr)}
@media(max-width:960px){.biz--2{grid-template-columns:1fr}}

/* ---------- Process ribbon ---------- */
.b2b{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden}
.b2b>div{background:var(--bg-card);padding:26px 20px 28px;position:relative;transition:background .4s}
.b2b>div:hover{background:#33240F}
.b2b .st{font-family:var(--f-display);font-size:1.5rem;color:var(--magic-display);line-height:1;opacity:.85}
.b2b h4{margin-top:14px;font-size:.94rem;font-weight:600;font-family:var(--f-serif-cn)}
.b2b .en{margin-top:4px;font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-mute)}
.b2b p{margin-top:11px;font-size:.79rem;color:var(--fg-dim);line-height:1.75}
@media(max-width:1100px){.b2b{grid-template-columns:repeat(3,1fr)}}
@media(max-width:640px){.b2b{grid-template-columns:repeat(2,1fr)}}

/* ---------- Cert grid ---------- */
.certs{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.cert{background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;transition:border-color .4s,transform .4s var(--ease-out)}
.cert:hover{border-color:rgba(245,213,17,.42);transform:translateY(-3px)}
.cert .ph{background:#FAF6E9;padding:16px;aspect-ratio:4/3;display:grid;place-items:center}
.cert .ph img{max-height:100%;max-width:100%;width:auto;height:auto;object-fit:contain;filter:contrast(1.04)}
.cert .bd{padding:18px 20px 22px;border-top:1px solid var(--line)}
.cert .bd strong{display:block;font-size:.9rem;font-weight:600}
.cert .bd span{display:block;margin-top:6px;font-size:.765rem;color:var(--fg-mute);line-height:1.7}
@media(max-width:820px){.certs{grid-template-columns:1fr 1fr}}
@media(max-width:540px){.certs{grid-template-columns:1fr}}

/* ---------- Experience / study-tour ---------- */
.exp{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,2vw,26px)}
.exp-card{border:1px solid var(--line);border-radius:var(--radius-lg);padding:30px 26px 32px;background:linear-gradient(180deg,rgba(245,213,17,.055),rgba(245,213,17,0) 60%),var(--bg-card)}
.exp-card .n{font-family:var(--f-display);font-size:2.3rem;line-height:1;color:rgba(245,213,17,.62)}
.exp-card h3{margin-top:16px;font-size:1.05rem;font-weight:600;font-family:var(--f-serif-cn)}
.exp-card p{margin-top:12px;font-size:.855rem;color:var(--fg-dim);line-height:1.85}
.feat{display:flex;flex-direction:column}
.feat .spec-list{margin-top:auto!important;padding-top:6px}
.feat h3{flex:none}
@media(max-width:820px){.exp{grid-template-columns:1fr}}

/* ---------- Gallery strip ---------- */
.gal{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.gal figure{margin:0;overflow:hidden;border-radius:var(--radius-lg);position:relative;aspect-ratio:4/3;border:1px solid var(--line)}
.gal img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease-out)}
.gal figure:hover img{transform:scale(1.06)}
@media(max-width:760px){.gal{grid-template-columns:repeat(2,1fr)}}

/* ---------- Contact blocks ---------- */
.cgrid{display:grid;grid-template-columns:1.25fr 1fr;gap:clamp(28px,4vw,64px);align-items:start}
@media(max-width:980px){.cgrid{grid-template-columns:1fr}}
.cbox{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg-card);padding:30px}
.cbox+.cbox{margin-top:20px}
.cbox h4{font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--magic-600);font-weight:600}
.cbox .big{margin-top:12px;font-family:var(--f-display);font-size:clamp(1.5rem,2.6vw,2.05rem);color:var(--cream-100);letter-spacing:.03em}
.cbox p{margin-top:10px;font-size:.875rem;color:var(--fg-dim);line-height:1.85}
.map{border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;background:#1E1408;aspect-ratio:16/10;position:relative;display:grid;place-items:center;text-align:center;padding:30px}
.map-deco{position:absolute;inset:0;opacity:.5;background:
  repeating-linear-gradient(0deg,transparent 0 39px,rgba(245,213,17,.09) 39px 40px),
  repeating-linear-gradient(90deg,transparent 0 39px,rgba(245,213,17,.09) 39px 40px)}
.map .pin{width:14px;height:14px;border-radius:50%;background:var(--magic-500);position:relative;margin:0 auto 18px;box-shadow:0 0 0 0 rgba(245,213,17,.5);animation:ping 2.6s infinite}
@keyframes ping{0%{box-shadow:0 0 0 0 rgba(245,213,17,.45)}70%{box-shadow:0 0 0 22px rgba(245,213,17,0)}100%{box-shadow:0 0 0 0 rgba(245,213,17,0)}}
.map h4{font-family:var(--f-serif-cn);font-size:1.05rem;position:relative;color:var(--cream-100)}
.map p{margin-top:8px;font-size:.83rem;color:var(--fg-dim);position:relative;line-height:1.8;max-width:34ch}

/* ---------- Product family hero row ---------- */
.family{display:grid;grid-template-columns:repeat(6,1fr);gap:14px}
.family figure{margin:0;position:relative;overflow:hidden;border-radius:var(--radius-lg);border:1px solid var(--line);background:#1A1209}
.family img{aspect-ratio:1;object-fit:cover;width:100%;transition:transform 1s var(--ease-out)}
.family figure:hover img{transform:scale(1.08)}
.family figcaption{position:absolute;left:0;right:0;bottom:0;padding:12px 13px;background:linear-gradient(0deg,rgba(20,14,7,.93),transparent);font-size:.75rem;color:var(--cream-200);letter-spacing:.05em}
.family figcaption b{display:block;font-size:.6rem;letter-spacing:.2em;color:var(--magic-600);text-transform:uppercase;margin-bottom:3px}
@media(max-width:900px){.family{grid-template-columns:repeat(3,1fr)}}
@media(max-width:480px){.family{grid-template-columns:repeat(2,1fr)}}
/* 品类缩略条收窄为五项时使用（原为六项） */
.family--5{grid-template-columns:repeat(5,1fr)}
@media(max-width:900px){.family--5{grid-template-columns:repeat(3,1fr)}}
@media(max-width:480px){.family--5{grid-template-columns:repeat(2,1fr)}}

.spec-list{display:grid;gap:0;border-top:1px solid var(--line)}
.spec-list li{display:grid;grid-template-columns:minmax(120px,168px) 1fr;gap:18px;padding:14px 0;border-bottom:1px solid var(--line);font-size:.875rem;align-items:baseline}
.pcard .card-body{padding-bottom:30px}
.pcard .specs{margin-top:auto}
.spec-list li b{font-weight:600;color:var(--magic-500);font-size:.78rem;letter-spacing:.08em}
.spec-list li span{color:var(--cream-300);line-height:1.75}
@media(max-width:600px){.spec-list li{grid-template-columns:1fr;gap:5px}}

/* ---- Magic Factory: origin flavor coding ---- */
.origin{border-top:2px solid rgba(var(--fl-rgb),.55)}
.origin::before{content:"";position:absolute;inset:0 0 auto;height:120px;pointer-events:none;
  background:radial-gradient(120% 90% at 0% 0%,rgba(var(--fl-rgb),.14),transparent 62%)}
.o-flag{color:rgba(var(--fl-rgb),1);border-color:rgba(var(--fl-rgb),.45);background:rgba(var(--fl-rgb),.09)}
.o-en{color:rgba(var(--fl-rgb),.92)}
.o-notes span{color:rgba(var(--fl-rgb),1);background:rgba(var(--fl-rgb),.1);border-color:rgba(var(--fl-rgb),.28)}
.origin>*{position:relative;z-index:1}
.wheel>div{border-color:rgba(var(--fl-rgb),.26)}
.wheel>div:hover{border-color:rgba(var(--fl-rgb),.6)}
.wheel h5{color:rgba(var(--fl-rgb),1)}
.sec--light .wheel>div{background:rgba(var(--fl-rgb),.05)}

/* ---- Magic Factory: business line coding ---- */
.biz>a{border-top:2px solid rgba(var(--fl-rgb),.6);transition:background .5s,border-color .5s}
.biz>a:hover{border-top-color:rgba(var(--fl-rgb),1)}
.biz .idx{color:rgba(var(--fl-rgb),1)}
.biz .ph::after{background:linear-gradient(180deg,transparent 46%,var(--bg))}
.biz .en{color:rgba(var(--fl-rgb),1);opacity:.92}
.biz li::before{background:rgba(var(--fl-rgb),.9)}
.biz .go{color:var(--magic-400)}
.biz .go:hover{color:var(--magic-500)}

/* ---- Magic Factory: product family chips ---- */
.family figcaption b{color:rgba(var(--fl-rgb),1)}
.family figure{border-color:rgba(var(--fl-rgb),.3)}
.family figure:hover{border-color:rgba(var(--fl-rgb),.7)}

/* ---- Magic Factory: spec list labels ---- */
.spec-list li b{color:rgba(var(--fl-rgb),1)}

/* 证照可点击放大 */
.cert .ph.zoom{display:grid;place-items:center;text-decoration:none;position:relative;transition:background .4s}
.cert .ph.zoom::after{content:"查看大图";position:absolute;right:10px;bottom:10px;
  font-size:.6rem;letter-spacing:.16em;padding:.34em .7em;border-radius:100px;
  background:rgba(20,14,7,.82);color:#F8EC94;opacity:0;transform:translateY(4px);
  transition:opacity .35s var(--ease),transform .35s var(--ease)}
.cert .ph.zoom:hover::after{opacity:1;transform:none}
.cert .ph.zoom img{transition:transform .6s var(--ease-out)}
.cert .ph.zoom:hover img{transform:scale(1.05)}
