/* ============================================================
   木梨润坊工艺 · 前台样式
   当代编辑风：冷白纸面 / 近黑排印 / 单一信号红
   无衬线为主 · 紧字距大字标题 · 粗分割线代替发丝线 · 去装饰
   ============================================================ */

:root{
  /* 纸与墨 */
  --paper:#fafafa; --paper-2:#f2f2f1; --card:#ffffff;
  --ink:#141414; --ink-2:#4a4a4a; --ink-3:#6b6b6b;
  /* 线 */
  --rule:#e4e4e4; --rule-2:#c9c9c9;
  /* 信号色（唯一强调色；取到白底 4.5:1 以上） */
  --signal:#d1301f; --signal-2:#b0231a;
  /* 状态 */
  --ok:#1f7a4d; --warn:#c0392b;
  /* 影 */
  --lift:0 1px 2px rgba(0,0,0,.04),0 8px 24px rgba(0,0,0,.05);
  --lift-2:0 2px 6px rgba(0,0,0,.06),0 22px 54px rgba(0,0,0,.10);
  /* 排版 */
  --f-sans:"Inter","Noto Sans SC","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  --f-latin:"Inter","Helvetica Neue",Arial,sans-serif;
  /* 半角标签字距 */
  --track-wide:.14em;
}

/* ---------- 底 ---------- */
*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
html,body{max-width:100%;overflow-x:hidden}
body{
  font-family:var(--f-sans); font-size:15.5px; font-weight:400; line-height:1.75;
  color:var(--ink-2); background:var(--paper);
  letter-spacing:-.006em; -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
button,input,select,textarea{font:inherit;color:inherit}
::selection{background:var(--signal);color:#fff}
h1,h2,h3,h4{font-weight:700;line-height:1.12;letter-spacing:-.02em;color:var(--ink)}

.sheet{width:min(1240px,100% - 64px);margin:0 auto}
.page{max-width:1440px;margin:0 auto;padding:0 40px}

/* ---------- 通用小件 ---------- */
.kicker{display:block;font-family:var(--f-latin);font-size:11.5px;font-weight:600;letter-spacing:var(--track-wide);text-transform:uppercase;color:var(--signal)}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin-bottom:38px}
.sec-head h2{font-size:clamp(26px,3.3vw,40px);font-weight:750}
.sec-sub{margin-top:12px;font-size:14.5px;color:var(--ink-3);letter-spacing:0}
.sec-more{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;font-weight:600;color:var(--ink);white-space:nowrap;border-bottom:2px solid var(--ink);padding-bottom:3px;transition:all .2s}
.sec-more:hover{color:var(--signal);border-color:var(--signal)}

/* ---------- 按钮 ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:14px 30px;border:1px solid var(--ink);background:var(--ink);color:#fff;
  font-size:14px;font-weight:600;letter-spacing:0;transition:all .2s;cursor:pointer;
}
.btn:hover{background:#000;border-color:#000}
.btn-seal{background:var(--ink);border-color:var(--ink);color:#fff}
.btn-line{background:transparent;border-color:var(--ink-2);color:var(--ink)}
.btn-line:hover{background:var(--ink);border-color:var(--ink);color:#fff}
.btn-quiet{background:transparent;border-color:var(--rule-2);color:var(--ink-2)}
.btn-quiet:hover{border-color:var(--ink);color:var(--ink);background:transparent}
.btn[disabled]{opacity:.4;cursor:not-allowed}

/* ---------- 通告带 ---------- */
.band{background:var(--ink);color:#f0f0f0;font-size:12.5px;letter-spacing:.02em}
.band-in{display:flex;justify-content:space-between;align-items:center;min-height:38px;gap:20px}
.band-msg{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.band-tel{font-family:var(--f-latin);font-weight:600;white-space:nowrap;letter-spacing:.04em}

/* ---------- 页头 ---------- */
.masthead{background:var(--paper);border-bottom:1px solid var(--rule)}
.masthead-top{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:22px 0}
.masthead-brand{display:flex;align-items:center;gap:12px;min-width:0}
.masthead-seal{width:34px;height:34px;flex:none}
.masthead-name{display:block;font-size:19px;font-weight:800;letter-spacing:-.02em;color:var(--ink)}
.masthead-tag{display:block;margin-top:2px;font-size:11.5px;color:var(--ink-3);letter-spacing:0}
.masthead-tools{display:flex;align-items:center;gap:12px}
.cart-mark{position:relative;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;color:var(--ink);transition:opacity .2s}
.cart-mark:hover{opacity:.6}
.cart-mark b{
  position:absolute;top:0;right:0;min-width:17px;height:17px;padding:0 4px;
  background:var(--signal);color:#fff;font-size:10.5px;font-weight:700;line-height:17px;text-align:center;
}
.nav-toggle{display:none;width:40px;height:40px;border:1px solid var(--rule);background:transparent;align-items:center;justify-content:center;flex-direction:column;gap:4px}
.nav-toggle span{display:block;width:16px;height:1.5px;background:var(--ink)}

.scroll-nav{display:flex;gap:30px;position:relative}
.scroll-nav a{
  position:relative;padding:0 0 18px;font-size:14.5px;font-weight:600;color:var(--ink-2);transition:color .2s;
}
.scroll-nav a em{font-family:var(--f-latin);font-style:normal;font-size:11px;font-weight:600;letter-spacing:.06em;color:var(--ink-3);margin-right:6px}
.scroll-nav a::after{content:"";position:absolute;left:0;right:100%;bottom:-1px;height:2px;background:var(--signal);transition:right .25s}
.scroll-nav a:hover{color:var(--ink)}
.scroll-nav a:hover::after,.scroll-nav a.on::after{right:0}
.scroll-nav a.on{color:var(--ink)}

/* ---------- 封面 ---------- */
.cover{padding-top:26px}
.cover-plate{position:relative;overflow:hidden;background:#1a1a1a}
.cover-figure{position:absolute;inset:0;background-size:cover;background-position:center;animation:drift 26s ease-out forwards}
@keyframes drift{to{transform:scale(1.06)}}
.cover-scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,10,10,.18) 0%,rgba(10,10,10,.55) 55%,rgba(10,10,10,.86) 100%)}
.cover-inner{position:relative;z-index:2;min-height:min(620px,74vh);display:flex;flex-direction:column;justify-content:flex-end;padding:0 56px 60px}
.cover-brandmark{font-family:var(--f-latin);font-size:11.5px;font-weight:600;letter-spacing:var(--track-wide);text-transform:uppercase;color:rgba(255,255,255,.7)}
.cover-title{
  font-size:clamp(40px,7.4vw,96px);font-weight:800;line-height:1;letter-spacing:-.035em;
  color:#fff;margin:20px 0 20px;max-width:16ch;
}
.cover-sub{font-size:16px;font-weight:400;color:rgba(255,255,255,.78);max-width:52ch;line-height:1.7}
.cover-act{margin-top:32px;display:flex;gap:12px;flex-wrap:wrap}
.cover-act .btn{background:var(--signal);border-color:var(--signal)}
.cover-act .btn:hover{background:var(--signal-2);border-color:var(--signal-2)}
.cover-act .btn-quiet{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.5);color:#fff;backdrop-filter:blur(6px)}
.cover-act .btn-quiet:hover{background:rgba(255,255,255,.2);border-color:#fff}
.cover-foot{display:flex;flex-wrap:wrap;border-bottom:1px solid var(--rule);background:var(--paper)}
.cover-foot div{flex:1 1 25%;min-width:150px;padding:22px 0}
.cover-foot div + div{padding-left:26px;border-left:1px solid var(--rule)}
.cover-foot b{display:block;font-family:var(--f-latin);font-size:30px;font-weight:700;letter-spacing:-.03em;color:var(--ink);line-height:1}
.cover-foot span{display:block;margin-top:8px;font-size:12.5px;color:var(--ink-3)}

/* ---------- 卷首语 ---------- */
.preface{padding:96px 0 88px;border-bottom:1px solid var(--rule)}
.preface .kicker{margin-bottom:28px}
.preface-lead{font-size:clamp(24px,3.2vw,42px);font-weight:750;line-height:1.28;letter-spacing:-.03em;color:var(--ink);margin-bottom:28px;max-width:20ch}
.preface-lead b{color:var(--signal);font-weight:750}
.preface-text{font-size:15.5px;line-height:1.85;color:var(--ink-2);max-width:62ch}
.preface-text + .preface-text{margin-top:16px}
.preface-note{margin-top:28px;padding-left:22px;border-left:3px solid var(--ink);font-size:15px;line-height:1.8;color:var(--ink);max-width:62ch}

/* ---------- 目录 ---------- */
.catalog{padding:92px 0;border-bottom:1px solid var(--rule)}
.catalog-list{border-top:2px solid var(--ink)}
.catalog-row{
  display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:28px;
  padding:30px 0;border-bottom:1px solid var(--rule);transition:padding-left .25s;
}
.catalog-row:hover{padding-left:12px}
.catalog-no{font-family:var(--f-latin);font-size:13px;font-weight:700;letter-spacing:.08em;color:var(--signal)}
.catalog-name{font-size:clamp(20px,2.4vw,30px);font-weight:750;letter-spacing:-.025em;color:var(--ink)}
.catalog-name i{display:inline;margin-left:14px;font-family:var(--f-latin);font-style:normal;font-size:12px;font-weight:500;letter-spacing:var(--track-wide);text-transform:uppercase;color:var(--ink-3);vertical-align:2px}
.catalog-cnt{font-size:13.5px;font-weight:600;color:var(--ink-2);white-space:nowrap;display:inline-flex;align-items:center;gap:8px}
.catalog-row:hover .catalog-cnt{color:var(--signal)}
.catalog-desc{margin-top:12px;font-size:14px;line-height:1.75;color:var(--ink-3);grid-column:2 / 4}

/* ---------- 在售 ---------- */
.roll{padding:92px 0;border-bottom:1px solid var(--rule)}
.roll-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:52px 40px}
.roll-item{display:flex;flex-direction:column}
.roll-figure{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--paper-2)}
.roll-figure img{width:100%;height:100%;object-fit:cover;transition:transform .8s cubic-bezier(.2,.7,.2,1)}
.roll-item:hover .roll-figure img{transform:scale(1.045)}
.roll-mark{
  position:absolute;left:0;top:0;padding:8px 14px;background:var(--signal);color:#fff;
  font-size:11.5px;font-weight:700;letter-spacing:.06em;
}
.roll-body{padding:22px 0 0;display:flex;flex-direction:column;gap:10px;flex:1}
.roll-name{font-size:19px;font-weight:700;letter-spacing:-.02em;color:var(--ink)}
.roll-name:hover{color:var(--signal)}
.roll-spec{font-size:13.5px;color:var(--ink-3);line-height:1.65}
.roll-foot{margin-top:auto;padding-top:18px;display:flex;align-items:baseline;justify-content:space-between;gap:14px}
.roll-price{font-family:var(--f-latin);font-size:24px;font-weight:700;letter-spacing:-.03em;color:var(--ink)}
.roll-price i{font-size:14px;font-style:normal;margin-right:2px}
.roll-price del{font-size:13px;font-weight:400;color:var(--ink-3);margin-left:10px;letter-spacing:0}
.roll-act{font-size:13.5px;font-weight:600;color:var(--ink);border-bottom:2px solid var(--rule-2);padding-bottom:2px;transition:all .2s}
.roll-act:hover{color:var(--signal);border-color:var(--signal)}

/* ---------- 工艺三格 ---------- */
.craft{padding:92px 0;border-bottom:1px solid var(--rule)}
.craft-row{display:grid;grid-template-columns:repeat(3,1fr);gap:56px}
.craft-cell{border-top:2px solid var(--ink);padding-top:24px}
.craft-no{font-family:var(--f-latin);font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--signal)}
.craft-cell h3{margin:16px 0 12px;font-size:20px;font-weight:750;letter-spacing:-.02em}
.craft-cell p{font-size:14.5px;line-height:1.8;color:var(--ink-2)}

/* ---------- 承诺 ---------- */
.vows{border-bottom:1px solid var(--rule);background:var(--paper-2)}
.vows-grid{display:grid;grid-template-columns:repeat(4,1fr)}
.vow{padding:34px 0}
.vow + .vow{border-left:1px solid var(--rule);padding-left:28px}
.vow-b{display:block;font-size:16.5px;font-weight:750;letter-spacing:-.02em;color:var(--ink)}
.vow-s{display:block;margin-top:8px;font-size:12.5px;color:var(--ink-3)}

/* ---------- 页脚 ---------- */
.colophon{margin-top:0;border-top:2px solid var(--ink);background:var(--paper)}
.colophon-body{display:grid;grid-template-columns:1.7fr 1fr 1fr 1fr;gap:48px;padding:60px 0 52px}
.colophon-brand{display:flex;align-items:center;gap:12px}
.colophon-brand img{width:34px;height:34px}
.colophon-brand b{display:block;font-size:18px;font-weight:800;letter-spacing:-.02em;color:var(--ink)}
.colophon-brand i{display:block;margin-top:2px;font-style:normal;font-size:11.5px;color:var(--ink-3)}
.colophon-note{margin-top:18px;font-size:13.5px;line-height:1.8;color:var(--ink-3);max-width:34ch}
.colophon-col h4{font-family:var(--f-latin);font-size:11.5px;font-weight:700;letter-spacing:var(--track-wide);text-transform:uppercase;color:var(--ink-3);margin-bottom:16px}
.colophon-col a,.colophon-col span{display:block;font-size:14px;color:var(--ink-2);line-height:1.95;transition:color .2s}
.colophon-col a:hover{color:var(--signal)}
.colophon-base{border-top:1px solid var(--rule);padding:20px 0 30px;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:12.5px;color:var(--ink-3)}
.colophon-base a:hover{color:var(--signal)}

/* ---------- 内页头 ---------- */
.page-head{padding:64px 0 34px}
.crumbs{font-size:13px;color:var(--ink-3);margin-bottom:18px;display:flex;align-items:center;flex-wrap:wrap}
.crumbs span{margin:0 8px;color:var(--ink-3)}
.crumbs a:hover{color:var(--ink)}
.crumbs em{font-style:normal;color:var(--ink-2)}
.page-title{font-size:clamp(34px,5vw,64px);font-weight:800;letter-spacing:-.035em;color:var(--ink)}
.page-title i{display:block;margin-top:16px;font-family:var(--f-latin);font-style:normal;font-size:12px;font-weight:600;letter-spacing:var(--track-wide);text-transform:uppercase;color:var(--signal)}
.page-desc{margin-top:20px;font-size:15.5px;line-height:1.75;color:var(--ink-3);max-width:62ch}
.body-block{padding:38px 0 0;border-top:1px solid var(--rule)}

/* ---------- 商品列表 ---------- */
.toolbar{display:flex;flex-wrap:wrap;gap:16px;align-items:center;justify-content:space-between;padding:22px 0;border-bottom:1px solid var(--rule)}
.cats{display:flex;gap:8px;flex-wrap:wrap}
.cats a{padding:9px 18px;font-size:13.5px;font-weight:600;color:var(--ink-2);background:var(--paper-2);transition:all .2s}
.cats a i{font-style:normal;color:var(--ink-3);margin-left:7px;font-weight:500}
.cats a:hover{background:#eaeaea;color:var(--ink)}
.cats a.on{background:var(--ink);color:#fff}
.cats a.on i{color:rgba(255,255,255,.6)}
.seek{display:flex;gap:10px}
.seek input{border:1px solid var(--rule-2);background:var(--card);padding:10px 16px;font-size:14px;min-width:230px;outline:none;transition:border-color .2s}
.seek input:focus{border-color:var(--ink)}
.seek button{border:none;background:var(--ink);color:#fff;padding:0 22px;font-size:13.5px;font-weight:600;cursor:pointer}
.seek button:hover{background:#000}

.ledger{border-top:2px solid var(--ink);margin-top:26px}
.ledger-row{
  display:grid;grid-template-columns:150px 1fr auto;gap:30px;align-items:center;
  padding:24px 0;border-bottom:1px solid var(--rule);transition:padding-left .25s;
}
.ledger-row:hover{padding-left:10px}
.ledger-thumb{position:relative;aspect-ratio:1/1;overflow:hidden;background:var(--paper-2)}
.ledger-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .8s cubic-bezier(.2,.7,.2,1)}
.ledger-row:hover .ledger-thumb img{transform:scale(1.06)}
.ledger-flag{position:absolute;left:0;top:0;padding:5px 10px;background:var(--signal);color:#fff;font-size:10.5px;font-weight:700;letter-spacing:.06em}
.ledger-main{min-width:0}
.ledger-name{display:block;font-size:20px;font-weight:700;letter-spacing:-.025em;color:var(--ink)}
.ledger-name:hover{color:var(--signal)}
.ledger-sub{margin-top:8px;font-size:13.5px;color:var(--ink-3);line-height:1.65}
.ledger-tags{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap}
.ledger-tags span{padding:3px 10px;background:var(--paper-2);font-size:12px;color:var(--ink-2)}
.ledger-side{text-align:right;min-width:180px}
.ledger-price{font-family:var(--f-latin);font-size:26px;font-weight:700;letter-spacing:-.03em;color:var(--ink);line-height:1}
.ledger-price i{font-size:14px;font-style:normal;margin-right:2px}
.ledger-was{display:block;margin-top:6px;font-size:12.5px;color:var(--ink-3)}
.ledger-stock{display:block;margin-top:10px;font-size:12.5px;font-weight:600;color:var(--ok)}
.ledger-stock.out{color:var(--warn)}
.ledger-act{margin-top:14px;display:inline-flex}
.ledger-act .btn{padding:10px 22px;font-size:13px}
.ledger-empty{padding:80px 20px;text-align:center;border-bottom:1px solid var(--rule)}
.ledger-empty b{display:block;font-size:19px;font-weight:750;letter-spacing:-.02em;color:var(--ink);margin-bottom:12px}
.ledger-empty p{font-size:14px;color:var(--ink-3)}
.pager{display:flex;justify-content:center;gap:6px;padding:48px 0 0;flex-wrap:wrap}
.pager a,.pager span{min-width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--rule);font-size:13.5px;font-weight:600;color:var(--ink-2);transition:all .2s}
.pager a:hover{border-color:var(--ink);color:var(--ink)}
.pager .cur{background:var(--ink);border-color:var(--ink);color:#fff}
/* pagination() 由 app/functions.php 输出，类名前后台共用 */
.pagination{display:flex;justify-content:center;gap:6px;padding:48px 0 0;flex-wrap:wrap}
.pagination a,.pagination span{min-width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--rule);font-size:13.5px;font-weight:600;color:var(--ink-2);transition:all .2s}
.pagination a:hover{border-color:var(--ink);color:var(--ink)}
.pagination .cur{background:var(--ink);border-color:var(--ink);color:#fff}

/* ---------- 商品详情 ---------- */
.rubbing{padding:8px 0 0}
.rubbing-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:64px;align-items:start}
.rubbing-plate{background:var(--paper-2)}
.rubbing-plate .plate-in{position:relative;aspect-ratio:1/1;overflow:hidden}
.rubbing-plate img{width:100%;height:100%;object-fit:cover}
.rubbing-dots{display:flex;gap:6px;padding:14px 0 0}
.rubbing-dots button{width:44px;height:3px;border:none;background:var(--rule-2);cursor:pointer;padding:0;transition:background .2s}
.rubbing-dots button.on{background:var(--ink)}
.rubbing-info h1{font-size:clamp(28px,3.6vw,44px);font-weight:800;letter-spacing:-.035em;line-height:1.12;color:var(--ink)}
.rubbing-sub{margin-top:14px;font-size:15.5px;color:var(--ink-3)}
.price-block{margin-top:28px;display:flex;align-items:baseline;gap:16px;padding:24px 0;border-top:2px solid var(--ink);border-bottom:1px solid var(--rule)}
.price-now{font-family:var(--f-latin);font-size:44px;font-weight:700;letter-spacing:-.04em;color:var(--ink);line-height:1}
.price-now i{font-size:18px;font-style:normal;margin-right:3px}
.price-was{font-size:14.5px;color:var(--ink-3)}
.stock-note{margin-left:auto;font-size:13px;font-weight:600;color:var(--ok)}
.stock-note.out{color:var(--warn)}
.spec-table{width:100%;border-collapse:collapse;margin-top:26px}
.spec-table th,.spec-table td{padding:14px 0;border-bottom:1px solid var(--rule);font-weight:400;font-size:14.5px;text-align:left;vertical-align:top}
.spec-table th{width:104px;color:var(--ink-3)}
.spec-table td{color:var(--ink)}
.cert-line{display:inline-flex;align-items:center;gap:8px;margin-top:20px;padding:8px 14px;background:var(--paper-2);font-size:13px;font-weight:600;color:var(--ink)}
.buy-row{margin-top:32px;display:flex;gap:12px;align-items:stretch;flex-wrap:wrap}
.qty{display:inline-flex;border:1px solid var(--ink)}
.qty button{width:46px;border:none;background:transparent;font-size:17px;color:var(--ink);cursor:pointer;transition:background .2s}
.qty button:hover{background:var(--paper-2)}
.qty input{width:58px;border:none;border-left:1px solid var(--ink);border-right:1px solid var(--ink);text-align:center;font-size:15px;font-weight:600;outline:none;background:transparent}
.buy-row .btn{flex:1 1 180px}
.rubbing-note{margin-top:22px;font-size:13.5px;line-height:1.9;color:var(--ink-3)}
.rubbing-body{margin-top:72px;border-top:2px solid var(--ink);padding-top:44px}
.prose-body{font-size:15.5px;line-height:1.85;color:var(--ink-2);max-width:74ch}
.prose-body p{margin-bottom:20px}
.prose-body img{margin:28px 0}
.prose-body .drop::first-letter{float:left;font-size:56px;font-weight:800;line-height:.84;padding:8px 14px 0 0;color:var(--ink)}

/* ---------- 正文页 ---------- */
.prose{max-width:74ch}
.prose h2{font-size:clamp(22px,2.6vw,30px);font-weight:750;letter-spacing:-.025em;color:var(--ink);margin:56px 0 20px}
.prose h2:first-child{margin-top:0}
.prose p{font-size:15.5px;line-height:1.85;color:var(--ink-2);margin-bottom:18px}
.prose b{color:var(--ink);font-weight:700}
.prose figure{margin:32px 0}
.prose figure img{width:100%}
.prose figcaption{margin-top:12px;font-size:13px;color:var(--ink-3)}
.prose-tips{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--rule);margin:28px 0}
.prose-tip{background:var(--paper);padding:26px 26px 28px}
.prose-tip b{display:block;font-size:16px;font-weight:750;letter-spacing:-.02em;color:var(--ink);margin-bottom:10px}
.prose-tip p{font-size:14px;line-height:1.8;color:var(--ink-2);margin:0}
.prose-note{padding:22px 26px;background:var(--paper-2);border-left:3px solid var(--ink);font-size:14.5px;line-height:1.8;color:var(--ink);margin:26px 0}
.prose-cta{margin-top:48px;display:flex;gap:12px;flex-wrap:wrap}
.gloss{border-top:2px solid var(--ink);margin:26px 0}
.gloss-row{display:grid;grid-template-columns:170px 1fr;gap:28px;padding:20px 0;border-bottom:1px solid var(--rule);align-items:baseline}
.gloss-row b{font-size:16px;font-weight:750;letter-spacing:-.02em;color:var(--ink)}
.gloss-row span{font-size:14.5px;line-height:1.8;color:var(--ink-2)}
.make-steps{list-style:none;margin:26px 0;counter-reset:mk}
.make-steps li{counter-increment:mk;position:relative;padding:0 0 22px 52px;font-size:14.5px;line-height:1.8;color:var(--ink-2)}
.make-steps li::before{content:counter(mk,decimal-leading-zero);position:absolute;left:0;top:0;font-family:var(--f-latin);font-size:15px;font-weight:700;letter-spacing:.02em;color:var(--signal)}
.make-steps li b{display:block;margin-bottom:6px;font-size:16px;font-weight:750;letter-spacing:-.02em;color:var(--ink)}

.contact-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:48px;align-items:start}
.contact-media{position:relative;aspect-ratio:4/5;overflow:hidden;background:var(--paper-2)}
.contact-media img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}
.contact-cards{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--rule)}
.contact-card{background:var(--paper);padding:28px 26px}
.contact-card.wide{grid-column:1 / -1}
.contact-card b{display:block;font-family:var(--f-latin);font-size:11.5px;font-weight:700;letter-spacing:var(--track-wide);text-transform:uppercase;color:var(--ink-3);margin-bottom:12px}
.contact-card p{font-size:15px;line-height:1.75;color:var(--ink)}
.contact-note{margin-top:22px;font-size:13.5px;line-height:1.8;color:var(--ink-3)}

/* ---------- 表单 ---------- */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px 26px}
.field{display:flex;flex-direction:column;gap:9px}
.field.full{grid-column:1 / -1}
.field label{font-family:var(--f-latin);font-size:11.5px;font-weight:700;letter-spacing:var(--track-wide);text-transform:uppercase;color:var(--ink-3)}
.field input,.field textarea,.field select{
  border:1px solid var(--rule-2);background:var(--card);padding:13px 15px;font-size:15px;
  color:var(--ink);outline:none;transition:border-color .2s;width:100%;
}
.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--ink)}
.field textarea{resize:vertical;line-height:1.75}
.form-actions{margin-top:32px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.panel-block{border:1px solid var(--rule);background:var(--paper);padding:36px 34px}
.two-col{display:grid;grid-template-columns:1.5fr 1fr;gap:40px;align-items:start}

/* ---------- 选项 ---------- */
.pick-list{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule)}
.pick{display:block;background:var(--paper);padding:20px 22px;cursor:pointer;transition:background .2s;position:relative}
.pick:hover{background:var(--paper-2)}
.pick input{position:absolute;opacity:0;pointer-events:none}
.pick b{display:block;font-size:16px;font-weight:750;letter-spacing:-.02em;color:var(--ink)}
.pick span{display:block;margin-top:7px;font-size:13.5px;color:var(--ink-3)}
.pick:has(input:checked){background:var(--paper-2);box-shadow:inset 3px 0 0 var(--signal)}

/* ---------- 支付方式 ---------- */
.pay-opt{
  display:block;width:100%;text-align:left;background:var(--paper);border:1px solid var(--rule-2);
  padding:20px 22px;margin-bottom:12px;cursor:pointer;transition:all .2s;
}
.pay-opt:hover{border-color:var(--ink)}
.pay-opt b{display:block;font-size:17px;font-weight:750;letter-spacing:-.02em;color:var(--ink)}
.pay-opt span{display:block;margin-top:7px;font-size:13.5px;color:var(--ink-3)}
.pulse{width:6px;height:6px;background:var(--signal);border-radius:50%;display:inline-block;animation:blip 1.2s infinite}
.pulse:nth-child(2){animation-delay:.2s}
.pulse:nth-child(3){animation-delay:.4s}
@keyframes blip{0%,100%{opacity:.25}50%{opacity:1}}

/* ---------- 购物车 ---------- */
.cart-wrap{border-top:2px solid var(--ink)}
.cart-table{width:100%;border-collapse:collapse}
.cart-table th{padding:16px 0;border-bottom:1px solid var(--rule);font-family:var(--f-latin);font-size:11.5px;font-weight:700;letter-spacing:var(--track-wide);text-transform:uppercase;color:var(--ink-3);text-align:left}
.cart-table td{padding:20px 0;border-bottom:1px solid var(--rule);font-size:15px;color:var(--ink);vertical-align:middle}
.cart-table img{width:84px;height:84px;object-fit:cover;background:var(--paper-2)}
.cart-sum{display:flex;justify-content:flex-end;align-items:center;gap:24px;padding:26px 0}
.cart-sum b{font-family:var(--f-latin);font-size:30px;font-weight:700;letter-spacing:-.03em;color:var(--ink)}
.link-del{background:none;border:none;padding:0;color:var(--ink-3);font-size:13.5px;cursor:pointer;transition:color .2s}
.link-del:hover{color:var(--signal)}

/* ---------- 查单 ---------- */
.track-box{border-top:2px solid var(--ink);padding-top:32px}
.track-result{margin-top:36px;border-top:1px solid var(--rule);padding-top:30px}
.track-head{display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;align-items:center;padding-bottom:18px;border-bottom:1px solid var(--rule)}
.track-head b{font-family:var(--f-latin);font-size:20px;font-weight:700;letter-spacing:-.02em;color:var(--ink)}
.chip{display:inline-block;padding:5px 13px;background:var(--paper-2);font-size:12.5px;font-weight:600;color:var(--ink-2)}
.chip-ok{background:rgba(31,122,77,.1);color:var(--ok)}
.chip-wait{background:rgba(230,59,46,.1);color:var(--signal)}
.steps{display:flex;align-items:center;flex-wrap:wrap;margin:26px 0 30px}
.step{display:inline-flex;align-items:center;gap:9px;font-size:13px;font-weight:600;color:var(--ink-3)}
.step i{width:10px;height:10px;background:var(--rule-2);display:inline-block}
.step.on{color:var(--ink)}
.step.on i{background:var(--signal)}
.step-line{flex:1 1 34px;min-width:22px;height:1px;background:var(--rule);margin:0 12px}
.step-line.on{background:var(--ink)}
.track-timeline{border-top:1px solid var(--rule);padding-top:22px}
.tt-head{display:flex;align-items:center;gap:14px;padding-bottom:16px}
.tt-nu{font-family:var(--f-latin);font-size:13px;color:var(--ink-3)}
.st{display:inline-block;padding:4px 12px;background:var(--paper-2);font-family:var(--f-latin);font-size:11.5px;font-weight:700;letter-spacing:.06em;color:var(--ink-2)}
.st-1{background:var(--paper-2);color:var(--ink)}
.st-2{background:rgba(230,59,46,.1);color:var(--signal)}
.st-3{background:rgba(31,122,77,.1);color:var(--ok)}
.st-4{background:rgba(192,57,43,.1);color:var(--warn)}
.tt-list{margin-top:20px}
.tt-item{position:relative;padding:0 0 20px 24px;border-left:1px solid var(--rule)}
.tt-item::before{content:"";position:absolute;left:-4px;top:7px;width:7px;height:7px;background:var(--rule-2)}
.tt-item:first-child::before{background:var(--signal)}
.tt-item b{display:block;font-size:14.5px;font-weight:600;color:var(--ink)}
.tt-item span{font-size:13px;color:var(--ink-3)}
.tt-empty{font-size:14px;color:var(--ink-3);line-height:1.8}

/* ---------- 空态 / 提示 ---------- */
.empty{padding:96px 22px;text-align:center;border-top:2px solid var(--ink)}
.empty-en{font-family:var(--f-latin);font-size:12px;font-weight:700;letter-spacing:var(--track-wide);text-transform:uppercase;color:var(--signal);margin-bottom:16px}
.empty p{font-size:15px;line-height:1.8;color:var(--ink-3)}
.empty .acts{margin-top:26px;display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.toast-rack{position:fixed;left:50%;bottom:36px;transform:translateX(-50%) translateY(14px);z-index:900;opacity:0;transition:all .25s;pointer-events:none}
.toast-rack.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast-rack div{background:var(--ink);color:#fff;padding:13px 28px;font-size:14px;font-weight:600;box-shadow:var(--lift-2)}

/* ---------- 结果页 ---------- */
.result-card{border-top:2px solid var(--ink);padding:56px 0 0;max-width:640px}
.result-card h1{font-size:clamp(28px,3.6vw,44px);font-weight:800;letter-spacing:-.035em;color:var(--ink);margin-bottom:18px}
.result-card p{font-size:15.5px;color:var(--ink-2);line-height:1.8}
.result-card .acts{margin-top:30px;display:flex;gap:12px;flex-wrap:wrap}

/* ---------- 抽屉 ---------- */
.mask{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:70;opacity:0;pointer-events:none;transition:opacity .25s}
body.drawer-open .mask{opacity:1;pointer-events:auto}
body.drawer-open{overflow:hidden}
body.drawer-open .scroll-nav{
  position:fixed;top:0;left:0;bottom:0;width:min(300px,82vw);z-index:80;background:var(--card);
  flex-direction:column;gap:0;padding:88px 0 20px;overflow-y:auto;box-shadow:var(--lift-2);
}
body.drawer-open .scroll-nav a{display:block;padding:16px 30px;font-size:17px;font-weight:600}
body.drawer-open .scroll-nav a::after{display:none}

/* ---------- 响应式 ---------- */
@media (max-width:1240px){
  .sheet{width:calc(100% - 48px)}
  .page{padding:0 28px}
  .roll-grid{grid-template-columns:1fr;gap:44px}
  .craft-row{grid-template-columns:1fr;gap:34px}
  .vows-grid{grid-template-columns:1fr 1fr}
  .vow{padding:26px 0}
  .vow + .vow{padding-left:0;border-left:none}
  .vow:nth-child(even){padding-left:26px;border-left:1px solid var(--rule)}
  .rubbing-grid{grid-template-columns:1fr;gap:36px}
  .contact-grid{grid-template-columns:1fr;gap:32px}
  .contact-media{aspect-ratio:16/10}
  .colophon-body{grid-template-columns:1fr 1fr;gap:34px}
  .cover-inner{padding:0 32px 44px}
}
@media (max-width:980px){
  .nav-toggle{display:inline-flex}
  .scroll-nav{display:none}
  .ledger-row{grid-template-columns:110px 1fr;gap:20px}
  .ledger-side{grid-column:2;text-align:left;min-width:0}
  .catalog-row{grid-template-columns:auto 1fr;gap:16px}
  .catalog-cnt{grid-column:2}
  .catalog-desc{grid-column:2}
  .form-grid{grid-template-columns:1fr}
  .two-col{grid-template-columns:1fr;gap:24px}
  .prose-tips{grid-template-columns:1fr}
}
@media (max-width:640px){
  .sheet,.page{width:calc(100% - 32px);padding:0}
  .band-in{flex-direction:column;align-items:flex-start;gap:2px;padding:9px 0}
  .masthead-top{padding:16px 0}
  .masthead-name{font-size:17px}
  .cover-inner{padding:0 20px 30px;min-height:62vh}
  .cover-foot div{flex:1 1 50%;padding:18px 0}
  .cover-foot div + div{padding-left:16px}
  .cover-foot div:nth-child(3){border-left:none;padding-left:0}
  .preface{padding:60px 0 54px}
  .catalog,.roll,.craft{padding:60px 0}
  .page-head{padding:40px 0 26px}
  .ledger-row{grid-template-columns:92px 1fr;gap:14px;padding:18px 0}
  .ledger-name{font-size:17px}
  .ledger-thumb{aspect-ratio:1/1}
  .cart-table th:nth-child(2),.cart-table td:nth-child(2){display:none}
  .panel-block{padding:24px 18px}
  .contact-cards{grid-template-columns:1fr}
  .colophon-body{grid-template-columns:1fr;gap:26px;padding:40px 0 34px}
  .vows-grid{grid-template-columns:1fr}
  .vow + .vow{border-left:none;padding-left:0;border-top:1px solid var(--rule)}
}
