/* night-haze list：由画布 List 组件的样式机械转换而来（scratchpad nh/build_assets.mjs），之后按生产需要手改。
   分类页、标签页（product_list/default、grid_compact）和搜索结果页（search）共用。页面根、背景、版心在 base.css。 */
.pg [hidden]{display:none!important}
/* category head */
.ch{padding:64px 0 38px;background:linear-gradient(180deg,rgba(8,9,11,.6),rgba(8,9,11,.3) 70%,rgba(8,9,11,0));transition:padding-bottom .28s ease}
.crumb{display:flex;flex-wrap:wrap;gap:10px;font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;color:#d5d8dc;margin:0 0 30px;padding:0;list-style:none}
.crumb a{color:var(--ink2);text-decoration:none}
.crumb li+li::before{content:"/";margin-right:10px;color:#5d6168}
.ch-row{display:grid;grid-template-columns:minmax(0,1fr) 420px;gap:48px;align-items:end}
.ch h1{font-family:Marcellus,serif;font-weight:400;font-size:clamp(56px,8vw,118px);line-height:.9;letter-spacing:.04em;text-transform:uppercase;margin:0;overflow-wrap:break-word}
.ch h1 span{color:transparent;-webkit-text-stroke:1px rgba(236,238,241,.7)}
/* 名称里有 9 个字母以上的长词（Tooth&Bone、Labradorite）：桌面、手机标题缩一档，免得一个词被拆成两行 */
@media (min-width:1024px){.ch h1.lw{font-size:clamp(44px,5.2vw,76px)}}
.ch p{font-size:17px;line-height:1.7;color:#e3e5e8;margin:0;text-shadow:0 1px 14px rgba(0,0,0,.7)}
.series{display:flex;flex-wrap:wrap;gap:10px;margin-top:44px}
.chipf{height:42px;padding:0 18px;border:1px solid rgba(255,255,255,.26);background:rgba(10,11,13,.45);color:#e4e6e9;font-size:12px;letter-spacing:.18em;text-transform:uppercase;display:inline-flex;align-items:center;gap:10px;transition:border-color .25s,background .25s;text-decoration:none}
.chipf:hover{border-color:#fff;color:#fff}
.chipf em{font-style:normal;color:var(--ink3);font-size:11px;letter-spacing:.06em}
.chipf.on{background:#f1f2f4;color:#0b0c0e;border-color:#f1f2f4}
.chipf.on em{color:#55595f}
/* 第二行：点了有下级的一级后展开（高度靠 grid 0fr → 1fr 过渡）。通栏暗条接在工具条上面，选中样式同头部导航（白字 + 1px 红线） */
.ch.has-sub{padding-bottom:18px}
.subw{display:grid;grid-template-rows:0fr;opacity:0;visibility:hidden;transition:grid-template-rows .28s ease,opacity .2s ease,visibility 0s linear .28s}
.subw.open{grid-template-rows:1fr;opacity:1;visibility:visible;transition:grid-template-rows .28s ease,opacity .25s ease .05s,visibility 0s}
.subw-in{min-height:0;overflow:hidden}
.band{background:rgba(9,10,12,.72);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--line)}
.s2b{display:flex;flex-wrap:wrap;column-gap:26px}
.tab2{position:relative;height:46px;padding:0;background:none;border:0;color:var(--ink2);font-size:14px;font-weight:300;letter-spacing:.02em;display:inline-flex;align-items:center;gap:7px;white-space:nowrap;transition:color .2s}
.tab2 em{font-style:normal;color:var(--ink3);font-size:11.5px;letter-spacing:.04em;font-variant-numeric:tabular-nums}
.tab2:hover,.tab2.on{color:#fff}
.tab2::after{content:"";position:absolute;left:0;right:0;bottom:9px;height:1px;background:var(--acc);transform:scaleX(0);transition:transform .25s}
.tab2.on::after{transform:scaleX(1)}
@media (min-width:1024px){.s2b{column-gap:18px}.tab2{font-size:13px}}
/* toolbar */
.bar{position:sticky;top:76px;z-index:20;background:rgba(9,10,12,.72);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.bar-in{display:flex;align-items:center;justify-content:space-between;gap:20px;height:64px}
.count{font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink2)}
.count b{color:#fff;font-weight:400}
.bar-r{display:flex;align-items:center;gap:18px}
.sortw{display:flex;align-items:center;gap:10px;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink3)}
.sortw select{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.26);height:40px;padding:0 34px 0 12px;font-size:13px;letter-spacing:.06em;appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,#fff 50%),linear-gradient(135deg,#fff 50%,transparent 50%);background-position:calc(100% - 17px) 17px,calc(100% - 12px) 17px;background-size:5px 5px;background-repeat:no-repeat;border-radius:0}
.sortw select option{color:#0b0c0e}
.vt{display:flex;border:1px solid rgba(255,255,255,.26)}
.vt button{width:40px;height:38px;background:none;border:0;color:var(--ink3);display:flex;align-items:center;justify-content:center}
.vt button.on{background:#f1f2f4;color:#0b0c0e}
.vt svg{width:16px;height:16px}
/* grid */
.lg{display:grid;gap:26px 22px;padding:40px 0 30px}
.lg.c3{grid-template-columns:repeat(3,minmax(0,1fr))}
.lg.c4{grid-template-columns:repeat(4,minmax(0,1fr))}
/* grid_compact（画稿没单独画）：同一套卡片，桌面一行 4 / 5 张，字小一号 */
.lg.c5{grid-template-columns:repeat(5,minmax(0,1fr));gap:20px 16px}
.lg.c5 .nm{font-size:17px}.lg.c5 .meta{padding:12px 12px 14px;flex-direction:column;gap:4px}
.lg.c5 .sub{font-size:12px}
.card{position:relative;background:rgba(12,13,16,.86);border:1px solid var(--line);transition:border-color .3s,transform .4s;animation:fadeUp .5s ease both}
@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}}
.card:hover{border-color:rgba(255,255,255,.34);transform:translateY(-4px)}
.ph{position:relative;aspect-ratio:4/5;overflow:hidden;background:#1d1e21}
.ph a{position:absolute;inset:0;display:block}
.ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity .6s,transform 1.4s}
.ph img.alt{opacity:0}
.card:hover .ph img.alt{opacity:1}
.card:hover .ph img.main{transform:scale(1.04)}
.badge{position:absolute;left:12px;top:12px;z-index:2;background:var(--acc);color:#fff;font-size:10px;line-height:1;font-weight:500;letter-spacing:.2em;text-transform:uppercase;padding:7px 9px}
/* 售罄（现网的 Retired）：角标换成中性色，图压暗，不出加购 */
.badge.out{background:rgba(236,238,241,.9);color:#0b0c0e}
.card.is-out .ph img.main{filter:grayscale(.55) brightness(.72)}
.wish{position:absolute;right:10px;top:10px;z-index:3;width:38px;height:38px;border-radius:50%;background:rgba(10,11,13,.45);border:0;color:#fff;display:flex;align-items:center;justify-content:center}
.wish svg{width:19px;height:19px}
.wish.on svg{fill:var(--acc);stroke:var(--acc)}
.wish[aria-busy="true"],.add[aria-busy="true"]{opacity:.55;pointer-events:none}
.add{position:absolute;left:12px;right:12px;bottom:12px;z-index:3;height:46px;background:rgba(247,248,249,.95);color:#0b0c0e;border:0;font-size:11.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;opacity:0;transform:translateY(8px);transition:opacity .3s,transform .3s}
.add:hover{background:#fff}
.card:hover .add,.add:focus-visible{opacity:1;transform:none}
.meta{display:flex;justify-content:space-between;gap:12px;padding:18px 18px 20px;text-decoration:none;color:#eceef1}
.meta > div{min-width:0}
.nm{font-family:Marcellus,serif;font-weight:400;font-size:21px;margin:0;color:#fff;line-height:1.2}
.sub{font-size:13px;color:var(--ink3);margin:6px 0 0;line-height:1.4}
.pr{font-size:16px;font-weight:400;letter-spacing:.04em;margin:0;color:#fff;white-space:nowrap;font-variant-numeric:tabular-nums;text-align:right}
/* 划线价：名称和价格左右排时叠在现价上面，上下排时（手机、平板 4 列、紧凑版）回到同一行 */
.pr s{display:block;margin:0 0 3px;color:var(--ink3);font-size:.86em}
.lg.c5 .pr{text-align:left}.lg.c5 .pr s{display:inline;margin:0 8px 0 0}
.st{display:block;margin-top:5px;font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--acc-t)}
.series-l{font-size:10.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--acc-t);margin:0 0 8px}
.edit{position:relative;overflow:hidden;border:1px solid var(--line);background:#0e0f12;min-height:100%;display:flex;flex-direction:column;justify-content:flex-end;padding:34px;text-decoration:none;color:#fff;animation:fadeUp .5s ease both}
.edit:hover{color:#fff}
.edit.span2{grid-column:span 2}
.edit img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.62;transition:transform 1.6s}
.edit:hover img{transform:scale(1.04)}
.edit::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,9,11,0) 30%,rgba(8,9,11,.92))}
.edit > *:not(img){position:relative;z-index:1}
.edit small{font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:var(--acc-t);margin-bottom:14px;display:block}
.edit b{font-family:Marcellus;font-weight:400;font-size:clamp(28px,2.6vw,40px);line-height:1.1;display:block;max-width:520px}
.edit span{display:inline-flex;align-items:center;gap:10px;margin-top:22px;font-size:12px;letter-spacing:.22em;text-transform:uppercase}
.edit svg{width:18px;height:18px}
.empty{grid-column:1/-1;padding:80px 0;text-align:center;color:var(--ink2)}
.pager{display:flex;flex-direction:column;align-items:center;gap:14px;padding:20px 0 110px}
.pager p{margin:0;font-size:12.5px;letter-spacing:.16em;text-transform:uppercase;color:#e6e8eb;background:rgba(9,10,12,.72);padding:9px 16px}
.pbar{width:220px;height:2px;background:rgba(255,255,255,.18)}
.pbar i{display:block;height:100%;width:100%;background:var(--acc);transition:width .4s ease}
/* ---------- 搜索结果页（search.blade.php，画稿没画，版式照列表页） ---------- */
.ch h1.q{font-size:clamp(44px,5.6vw,84px);line-height:.95;overflow-wrap:anywhere}
.sform{display:flex;align-items:center;gap:8px;height:58px;border-bottom:1px solid rgba(255,255,255,.5);transition:border-color .25s}
.sform:focus-within{border-color:#fff}
.sform input{flex:1;min-width:0;height:100%;padding:0;background:none;border:0;border-radius:0;color:#fff;font:300 20px/1.2 Jost,system-ui,sans-serif;letter-spacing:.02em;-webkit-appearance:none;appearance:none}
.sform input::placeholder{color:#8a8f97}
.sform input:focus{outline:none}
.sform input::-webkit-search-cancel-button{-webkit-appearance:none}
.sform button{flex:0 0 auto;width:46px;height:46px;border:0;border-radius:50%;background:none;color:#fff;display:flex;align-items:center;justify-content:center}
.sform button:hover{background:rgba(255,255,255,.08)}
.sform svg{width:21px;height:21px}
.more{height:52px;padding:0 32px;border:1px solid rgba(255,255,255,.45);background:rgba(10,11,13,.45);color:#fff;font-size:12px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;transition:border-color .25s}
.more:hover{border-color:#fff}
.more[aria-busy="true"]{opacity:.55;pointer-events:none}
.nores{padding:72px 0 110px;max-width:720px}
.nores h2{font-family:Marcellus,serif;font-weight:400;font-size:clamp(30px,3.2vw,44px);line-height:1.15;margin:0 0 16px;color:#fff;overflow-wrap:anywhere}
.nores p{font-size:16px;line-height:1.7;color:var(--ink2);margin:0 0 26px}
.sugg{display:flex;flex-wrap:wrap;gap:10px}
@media (max-width:1023px){
  .bar{top:64px}
  .ch-row{grid-template-columns:minmax(0,1fr)}.lg.c3,.lg.c4{grid-template-columns:repeat(2,minmax(0,1fr))}.edit.span2{grid-column:span 2}
  .lg.c5{grid-template-columns:repeat(2,minmax(0,1fr))}
}
/* tablet only (641–1023, designed at 834) */
@media (min-width:641px) and (max-width:1023px){
  /* the 3 / 4 across switch works as on desktop */
  .lg{gap:20px 16px;padding:32px 0 26px}
  .lg.c3{grid-template-columns:repeat(3,minmax(0,1fr))}
  .lg.c4{grid-template-columns:repeat(4,minmax(0,1fr))}
  .lg.c5{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px 12px}
  .nm{font-size:18px}.meta{padding:14px 14px 16px}
  .lg.c4 .nm,.lg.c5 .nm{font-size:16px}.lg.c4 .meta,.lg.c5 .meta{padding:12px;flex-direction:column;gap:4px}
  .lg.c4 .pr{text-align:left}.lg.c4 .pr s{display:inline;margin:0 8px 0 0}
  .edit{padding:26px}
  /* touch screens have no hover: the add button stays visible, as on phones */
  .card .add{opacity:1;transform:none;left:auto;right:8px;bottom:8px;width:40px;height:40px;border-radius:50%;font-size:0;padding:0;display:flex;align-items:center;justify-content:center}
  .card .add::before{content:"+";font-size:22px;font-weight:300}
}
@media (max-width:640px){
  /* 列表页手机边距 8、卡片间隙 6，图更大。这份 css 只有列表页、搜索页加载；页脚的 .ftw .wrap 优先级更高，还是 16 */
  .wrap{padding:0 8px}
  .lg{gap:6px}.nm{font-size:17px}.meta{padding:12px;flex-direction:column}.vt{display:none}.sortw span{display:none}
  .pr{text-align:left}.pr s{display:inline;margin:0 8px 0 0}
  .edit{padding:20px}
  .ch{padding:40px 0 26px}.ch h1{font-size:50px}.crumb{margin-bottom:18px}.ch p{font-size:15px}
  .ch h1.q{font-size:40px}
  .ch h1.lw{font-size:40px}
  .series{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:30px -8px 0;padding:0 8px;scroll-padding-inline:8px}
  .series::-webkit-scrollbar{display:none}
  .ch.has-sub{padding-bottom:14px}
  /* 第二行一行横滑，两端渐隐提示还有（fl / fe 由页面脚本按滚动位置切） */
  .s2b{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;column-gap:22px;margin:0 -8px;padding:0 44px 0 8px;--fl:0px;--fr:40px;-webkit-mask-image:linear-gradient(90deg,transparent,#000 var(--fl),#000 calc(100% - var(--fr)),transparent);mask-image:linear-gradient(90deg,transparent,#000 var(--fl),#000 calc(100% - var(--fr)),transparent)}
  .s2b.fl{--fl:28px}
  .s2b.fe{--fr:0px}
  .s2b::-webkit-scrollbar{display:none}
  .tab2{flex:0 0 auto;height:44px}
  .chipf{flex:0 0 auto;height:38px;padding:0 14px;font-size:11px}
  .bar-in{height:56px}
  .sortw select{height:36px;font-size:12px;padding:0 28px 0 10px;background-position:calc(100% - 15px) 15px,calc(100% - 10px) 15px}
  .lg{padding-top:22px}
  .lg.c5{gap:6px}.lg.c5 .meta{padding:12px}
  .edit,.edit.span2{grid-column:1/-1;min-height:220px;padding:22px}
  .card .add{opacity:1;transform:none;left:auto;right:8px;bottom:8px;width:40px;height:40px;border-radius:50%;font-size:0;padding:0;display:flex;align-items:center;justify-content:center}
  .card .add::before{content:"+";font-size:22px;font-weight:300}
  .wish{width:34px;height:34px;right:6px;top:6px}
  .sub{font-size:12px}
  .series-l{font-size:9.5px;margin-bottom:6px}
  .pager{padding-bottom:70px}
  .sform input{font-size:18px}
  .nores{padding:48px 0 70px}
}
@media (prefers-reduced-motion:reduce){
  .card,.edit{animation:none}
  .ch,.subw,.subw.open{transition:none}
}
