:root{
  --ink:#161616; --ink-2:#4b4b4b; --ink-3:#85817a;
  --paper:#f1eee7; --paper-2:#e8e3d9; --white:#fbfaf7; --rule:#c9c2b5;
  --navy:#24407a; --line-green:#06c755;
  --serif:"Noto Serif TC",serif;
  --num:"Barlow Condensed","Noto Sans TC",sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:"Noto Sans TC",system-ui,sans-serif;line-height:1.75;-webkit-font-smoothing:antialiased}
a{color:inherit}
button{font:inherit;cursor:pointer;color:inherit}
img,canvas{display:block}
.wrap{max-width:1200px;margin:0 auto;padding:0 24px}

.demo-bar{background:var(--ink);color:#cfc9bd;font-size:13px;text-align:center;padding:6px 16px}
.demo-bar b{color:#fff;font-weight:500}

/* 按鈕：方正 */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:0 22px;border:1.5px solid var(--ink);border-radius:2px;background:transparent;font-weight:700;font-size:15px;text-decoration:none;letter-spacing:.04em;transition:background .15s,color .15s}
.btn-ink{background:var(--ink);color:var(--white)}
.btn-ink:hover{background:#333}
.btn:not(.btn-ink):not(.btn-line):hover{background:var(--ink);color:var(--white)}
.btn-line{background:var(--line-green);border-color:var(--line-green);color:#fff}
.btn-sm{min-height:36px;padding:0 12px;font-size:13.5px}

/* 頂欄 */
header{position:sticky;top:0;z-index:30;background:var(--paper);border-bottom:1.5px solid var(--ink)}
.nav{display:flex;align-items:center;height:62px;gap:28px}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none}
.brand-mark{font-family:var(--num);font-weight:700;font-size:26px;letter-spacing:.06em;color:var(--navy);line-height:1}
.brand-name{font-family:var(--serif);font-weight:900;font-size:18px;letter-spacing:.12em}
.nav-links{display:flex;gap:26px;margin-left:auto;font-size:15px}
.nav-links a{text-decoration:none}
.nav-links a:hover{text-decoration:underline;text-underline-offset:6px}

/* 圖位：沒放照片時顯示斜紋與說明 */
.ph{position:relative;overflow:hidden;background:repeating-linear-gradient(135deg,#ddd7cb 0 9px,#e7e2d8 9px 18px);aspect-ratio:var(--r,4/3)}
.ph>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.06)}
.ph.color>img{filter:none}
.ph>canvas{position:absolute;inset:0;width:100%;height:100%}
.ph-tag{position:absolute;left:8px;right:8px;bottom:8px;background:rgba(251,250,247,.92);border:1px dashed #8d8577;padding:5px 9px;font-size:12px;line-height:1.45;color:var(--ink-2)}
.ph-tag b{font-family:var(--num);font-size:14px;color:var(--ink);margin-right:6px;letter-spacing:.04em}
.ph-tag code{font-family:var(--num);font-size:12.5px;color:var(--navy)}
.ph.has-img .ph-tag{display:none}
body.hide-tags .ph-tag{display:none}

/* 主視覺 */
.hero{position:relative;border-bottom:1.5px solid var(--ink);background-color:var(--paper);overflow:hidden}
.hero::before{content:"";position:absolute;inset:0;background-image:var(--backing);background-size:620px auto;opacity:.07;pointer-events:none}
.hero-grid{position:relative;display:grid;grid-template-columns:1fr 1.1fr;align-items:center;gap:20px;min-height:600px;padding-top:40px;padding-bottom:40px}
.co{font-size:14px;letter-spacing:.2em;color:var(--ink-2)}
.hero h1{font-family:var(--serif);font-weight:900;font-size:clamp(38px,5.4vw,66px);line-height:1.18;margin:16px 0 20px;letter-spacing:.03em}
.hero p{font-size:17px;color:var(--ink-2);max-width:28em;margin:0 0 30px}
.hero-actions{display:flex;flex-wrap:wrap;gap:12px}
.stage{position:relative}
#belt{width:100%;height:470px;touch-action:pan-y;cursor:grab}
#belt:active{cursor:grabbing}
.belt-fallback{display:none;height:470px;align-items:center;justify-content:center;color:var(--ink-3)}
/* 捲料標籤 */
.roll-label{position:absolute;right:4%;top:6%;width:210px;background:var(--white);border:1.5px solid var(--ink);padding:12px 14px 10px;font-size:12.5px;box-shadow:4px 4px 0 var(--ink);transform:rotate(1.5deg)}
.roll-label .rl-code{font-family:var(--num);font-weight:700;font-size:34px;line-height:1;letter-spacing:.03em}
.roll-label .rl-name{font-weight:700;margin:2px 0 6px}
.roll-label dl{display:grid;grid-template-columns:auto 1fr;gap:0 10px;margin:0 0 8px;color:var(--ink-2)}
.roll-label dt{color:var(--ink-3)}
.roll-label dd{margin:0}
.barcode{height:22px;background:repeating-linear-gradient(90deg,var(--ink) 0 2px,transparent 2px 4px,var(--ink) 4px 5px,transparent 5px 8px,var(--ink) 8px 11px,transparent 11px 12px)}
.series-switch{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-top:6px}
.sw{min-height:36px;padding:0 12px;border:1.5px solid var(--ink);border-radius:2px;background:var(--white);font-family:var(--num);font-weight:600;font-size:16px;letter-spacing:.04em;display:inline-flex;align-items:center;gap:8px}
.sw i{width:12px;height:12px;border:1px solid rgba(0,0,0,.35)}
.sw[aria-pressed="true"]{background:var(--ink);color:var(--white)}
.stage-hint{text-align:center;font-size:12px;color:var(--ink-3);margin-top:6px}

/* 番號尺 */
.ruler{background:var(--ink);color:var(--white);border-bottom:1.5px solid var(--ink)}
.ruler-in{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}
.ruler-in::-webkit-scrollbar{display:none}
.tick{flex:1 0 auto;min-width:92px;scroll-snap-align:start;border:0;border-right:1px solid #3a3a3a;background:none;color:inherit;padding:16px 10px 14px;text-align:center;position:relative}
.tick:last-child{border-right:0}
.tick b{display:block;font-family:var(--num);font-weight:700;font-size:44px;line-height:1;color:transparent;-webkit-text-stroke:1.2px #e9e4da;transition:color .15s}
.tick:hover b{color:#e9e4da}
.tick span{font-size:11.5px;color:#8f8a80;letter-spacing:.1em}
.tick canvas{width:34px;height:8px;margin:8px auto 0}

/* 區塊標題 */
section{scroll-margin-top:66px}
.sec{padding:88px 0}
.sec-head{display:grid;grid-template-columns:auto 1fr;gap:6px 22px;align-items:end;border-bottom:1.5px solid var(--ink);padding-bottom:16px;margin-bottom:34px}
.sec-no{font-family:var(--num);font-weight:700;font-size:64px;line-height:.82;color:var(--navy)}
.sec-head h2{font-family:var(--serif);font-weight:900;font-size:clamp(26px,3.3vw,38px);line-height:1.2;margin:0}
.sec-head p{grid-column:2;margin:0;color:var(--ink-2);max-width:42em}

/* 年份 */
.since{display:grid;grid-template-columns:1.2fr 1fr;border-bottom:1.5px solid var(--ink)}
.since .ph{--r:auto;aspect-ratio:auto;min-height:420px}
.since-txt{padding:56px 48px;display:flex;flex-direction:column;justify-content:center;border-left:1.5px solid var(--ink)}
.big-year{font-family:var(--serif);font-weight:900;font-size:clamp(90px,13vw,170px);line-height:.9;letter-spacing:-.02em}
.big-year small{font-family:"Noto Sans TC";font-size:18px;font-weight:500;letter-spacing:.1em;display:block;margin-top:14px;color:var(--ink-3)}
.since-txt p{color:var(--ink-2);font-size:16px;margin:22px 0 0;max-width:26em}

/* 要磨什麼 */
.uses{display:grid;grid-template-columns:repeat(3,1fr);border-top:1.5px solid var(--ink);border-left:1.5px solid var(--ink)}
.use{border-right:1.5px solid var(--ink);border-bottom:1.5px solid var(--ink);background:var(--white);display:flex;flex-direction:column}
.use .ph{--r:16/9}
.use-body{padding:18px 20px 20px;display:flex;flex-direction:column;flex:1}
.use h3{font-family:var(--serif);font-size:21px;margin:0 0 4px}
.use .why{color:var(--ink-2);font-size:14.5px;margin:0 0 14px;flex:1}
.recs{display:flex;flex-wrap:wrap;gap:6px}
.rec{border:1px solid var(--ink);background:none;border-radius:2px;padding:3px 10px;font-size:13.5px}
.rec:hover{background:var(--ink);color:var(--white)}
.rec em{font-style:normal;font-family:var(--num);font-weight:600;font-size:15px;margin-right:4px}

/* 產品型錄：標籤卡 */
.tabs{display:flex;gap:0;margin-bottom:22px;border:1.5px solid var(--ink);width:max-content;max-width:100%;overflow-x:auto}
.tab{border:0;background:none;padding:8px 18px;font-size:15px;border-right:1.5px solid var(--ink);white-space:nowrap}
.tab:last-child{border-right:0}
.tab[aria-pressed="true"]{background:var(--ink);color:var(--white)}
.catalog{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:20px}
.label{background:var(--white);border:1.5px solid var(--ink);display:flex;flex-direction:column}
.label[hidden]{display:none}
.label-top{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:10px 14px;border-bottom:1.5px solid var(--ink)}
.label-code{font-family:var(--num);font-weight:700;font-size:30px;line-height:1;letter-spacing:.03em}
.label-origin{font-size:12px;border:1px solid var(--ink);padding:0 7px;white-space:nowrap}
.label .ph{--r:16/9;border-bottom:1.5px solid var(--ink)}
.label-body{padding:12px 14px 14px;display:flex;flex-direction:column;flex:1}
.label h3{margin:0 0 8px;font-size:17px}
.spec{width:100%;border-collapse:collapse;font-size:13.5px;margin-bottom:10px}
.spec th{text-align:left;font-weight:400;color:var(--ink-3);width:4.2em;padding:3px 0;vertical-align:top;border-top:1px solid #e3ddd2}
.spec td{padding:3px 0;border-top:1px solid #e3ddd2}
.tbc{display:inline-block;font-size:11px;border:1px dashed #b04a2a;color:#b04a2a;padding:0 5px;margin-left:4px;vertical-align:1px}
.label .desc{font-size:14px;color:var(--ink-2);margin:0 0 12px;flex:1}
.label .btn{align-self:flex-start}

/* 規格詢價 */
.quote{background:var(--paper-2);border-top:1.5px solid var(--ink);border-bottom:1.5px solid var(--ink)}
.picker{display:grid;grid-template-columns:1.08fr 1fr;gap:24px;align-items:start}
.panel{background:var(--white);border:1.5px solid var(--ink);padding:24px}
.step{padding-bottom:20px;margin-bottom:18px;border-bottom:1px solid #e3ddd2}
.step:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0}
.step[hidden]{display:none}
.step-t{font-weight:700;margin-bottom:10px;display:flex;align-items:baseline;gap:10px}
.step-t span{font-family:var(--num);font-size:22px;color:var(--navy);line-height:1}
.opts{display:flex;flex-wrap:wrap;gap:6px}
.opt{min-height:40px;padding:0 13px;border:1.5px solid #bdb6a8;border-radius:2px;background:var(--white);font-size:14.5px}
.opt.recd{border-color:var(--navy);color:var(--navy);font-weight:700}
.opt[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--white)}
.hint{font-size:13px;color:var(--ink-3);margin-top:8px}
.grit-row{display:flex;align-items:center;gap:16px}
.grit-val{font-family:var(--num);font-weight:700;font-size:44px;line-height:1;min-width:92px}
.grit-val small{font-size:16px;color:var(--ink-3);margin-left:3px;font-family:"Noto Sans TC";font-weight:400}
input[type=range]{flex:1;accent-color:var(--ink);height:30px}
.grit-scale{display:flex;justify-content:space-between;font-size:12px;color:var(--ink-3)}
.size-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.field label{display:block;font-size:13px;color:var(--ink-3);margin-bottom:6px}
.num-in{display:flex;align-items:center;border:1.5px solid #bdb6a8;background:var(--white)}
.num-in input{border:0;flex:1;min-width:0;height:44px;padding:0 12px;font:inherit;font-size:17px;font-family:var(--num);background:transparent}
.num-in span{padding:0 12px;color:var(--ink-3);font-size:14px}
.presets{display:flex;gap:4px;flex-wrap:wrap;margin-top:8px}
.presets button{border:1px solid #d6cfc2;background:var(--paper);padding:2px 9px;font-size:13px;font-family:var(--num);border-radius:2px}
.preview{position:sticky;top:82px}
.zoom{--r:16/9;border:1.5px solid var(--ink)}
.zoom .ph-tag{right:auto}
.zoom-label{position:absolute;right:8px;top:8px;background:var(--ink);color:var(--white);font-size:12px;padding:2px 9px;font-family:var(--num);letter-spacing:.06em}
.spec-line{display:flex;flex-wrap:wrap;column-gap:.9em;font-size:19px;font-weight:700;margin:16px 0 2px;line-height:1.5}
.spec-line span{white-space:nowrap}
.spec-sub{color:var(--ink-3);font-size:13px}
.list{list-style:none;margin:16px 0 0;padding:0;border-top:1.5px solid var(--ink)}
.list li{display:flex;align-items:center;gap:8px;padding:9px 0;border-bottom:1px solid #e3ddd2;font-size:14.5px}
.list li span{flex:1}
.list li button{border:0;background:none;width:32px;height:32px;font-size:20px;color:var(--ink-3)}
.list .empty{color:var(--ink-3)}
.send{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px}

/* 加工流程 */
.flow{display:grid;grid-template-columns:repeat(5,1fr);border-left:1.5px solid var(--ink);border-top:1.5px solid var(--ink)}
.flow-step{border-right:1.5px solid var(--ink);border-bottom:1.5px solid var(--ink);background:var(--white)}
.flow-step .ph{--r:1/1;border-bottom:1.5px solid var(--ink)}
.flow-step div.t{padding:14px 16px 16px}
.flow-step b{font-family:var(--num);font-size:26px;color:var(--navy);line-height:1;display:block}
.flow-step h3{margin:4px 0 4px;font-size:17px}
.flow-step p{margin:0;font-size:13.5px;color:var(--ink-2)}

/* 照片牆：散落 ↔ 環繞 */
.wall-sec{background:#0f0f0f;color:#e9e4da;border-top:1.5px solid var(--ink)}
.wall-sec .sec-head{border-color:#e9e4da}
.wall-sec .sec-no{color:#e9e4da}
.wall-sec .sec-head p{color:#a29c90}
.wall{position:relative;height:560px;perspective:1300px;overflow:hidden;touch-action:pan-y;user-select:none}
.wall-in{position:absolute;left:50%;top:50%;transform-style:preserve-3d}
.shot{position:absolute;width:190px;left:-95px;top:-67px;transition:transform .9s cubic-bezier(.65,0,.35,1),opacity .9s;cursor:pointer}
.shot .ph{--r:4/3;background:repeating-linear-gradient(135deg,#222 0 9px,#2a2a2a 9px 18px)}
.shot .ph-tag{background:rgba(15,15,15,.85);color:#bbb;border-color:#555}
.shot .ph-tag b{color:#eee}
.shot .ph-tag code{color:#8fb0ff}
.wall.ring .shot{transition-duration:1s;backface-visibility:hidden}
.wall.ring.dragging .shot{transition:none}
.wall-ctrl{display:flex;gap:10px;justify-content:center;margin-top:18px}
.wall-ctrl .btn{border-color:#e9e4da;color:#e9e4da}
.wall-ctrl .btn[aria-pressed="true"]{background:#e9e4da;color:#0f0f0f}

/* 聯絡 */
.contact-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1.5px solid var(--ink);border-left:1.5px solid var(--ink)}
.c-card{border-right:1.5px solid var(--ink);border-bottom:1.5px solid var(--ink);padding:24px;background:var(--white)}
.c-card h3{margin:0 0 6px;font-size:13px;color:var(--ink-3);font-weight:500;letter-spacing:.12em}
.c-card b{display:block;font-size:22px;font-family:var(--serif);margin-bottom:4px}
.c-card p{margin:0;font-size:14px;color:var(--ink-2)}
footer{background:var(--ink);color:#8f8a80;font-size:13px;padding:26px 0}
footer .wrap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px}
footer button{border:1px solid #555;background:none;color:#cfc9bd;padding:2px 10px;font-size:12px}

.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,16px);background:var(--ink);color:var(--white);padding:10px 18px;font-size:14px;opacity:0;pointer-events:none;transition:.25s;z-index:60}
.toast.show{opacity:1;transform:translate(-50%,0)}

@media (max-width:980px){
  .nav-links{display:none}
  .nav .btn{margin-left:auto}
  .hero-grid{grid-template-columns:1fr;min-height:0;padding-top:32px;padding-bottom:24px}
  #belt,.belt-fallback{height:330px}
  .roll-label{width:170px;top:2%;right:0;font-size:11.5px;padding:9px 11px 8px}
  .roll-label .rl-code{font-size:26px}
  .since{grid-template-columns:1fr}
  .since .ph{min-height:260px}
  .since-txt{border-left:0;border-top:1.5px solid var(--ink);padding:36px 24px}
  .uses{grid-template-columns:1fr 1fr}
  .picker{grid-template-columns:1fr}
  .preview{position:static}
  .flow{grid-template-columns:1fr 1fr}
  .contact-grid{grid-template-columns:1fr}
  .sec{padding:60px 0}
  .wall{height:440px}
  .shot{width:140px;left:-70px;top:-50px}
}
@media (max-width:560px){
  .wrap{padding:0 16px}
  .uses{grid-template-columns:1fr}
  .sec-no{font-size:46px}
  .sec-head{gap:4px 14px}
  .sec-head p{grid-column:1 / -1}
  .size-grid{grid-template-columns:1fr}
  .brand-name{font-size:16px}
  .nav .btn{padding:0 14px;min-height:40px}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .shot{transition:none}
}

/* 常見問題 */
.faq{border-top:1.5px solid var(--ink)}
.faq details{border-bottom:1.5px solid var(--ink);background:var(--white)}
.faq summary{list-style:none;cursor:pointer;padding:18px 56px 18px 20px;font-weight:700;font-size:17px;position:relative}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";position:absolute;right:20px;top:50%;transform:translateY(-50%);font-family:var(--num);font-size:28px;font-weight:500;line-height:1}
.faq details[open] summary::after{content:"−"}
.faq details p{margin:0;padding:0 20px 20px;color:var(--ink-2);max-width:48em}
.faq a,.sec-head p a,.prose a{color:var(--navy);text-underline-offset:3px}

/* 選擇指南 */
.page-hero{border-bottom:1.5px solid var(--ink);padding:56px 0 40px}
.page-hero h1{font-family:var(--serif);font-weight:900;font-size:clamp(34px,5vw,56px);line-height:1.2;margin:10px 0 14px}
.page-hero p{color:var(--ink-2);font-size:17px;max-width:36em;margin:0}
.toc{display:flex;flex-wrap:wrap;gap:6px;margin-top:26px}
.toc a{border:1.5px solid var(--ink);padding:4px 12px;font-size:14px;text-decoration:none;background:var(--white)}
.toc a:hover{background:var(--ink);color:var(--white)}
.prose{max-width:46em;color:var(--ink-2);font-size:16px}
.prose p{margin:0 0 14px}
.prose strong{color:var(--ink)}
.bands{display:grid;grid-template-columns:repeat(4,1fr);border-top:1.5px solid var(--ink);border-left:1.5px solid var(--ink);margin-top:10px}
.band{border:0;border-right:1.5px solid var(--ink);border-bottom:1.5px solid var(--ink);background:var(--white);text-align:left;padding:0;display:flex;flex-direction:column}
.band canvas{width:100%;height:90px;border-bottom:1.5px solid var(--ink)}
.band .bt{padding:14px 16px 16px}
.band b{font-family:var(--num);font-size:30px;line-height:1;display:block}
.band h3{margin:4px 0 6px;font-size:17px}
.band p{margin:0;font-size:14px;color:var(--ink-2)}
.band[aria-pressed="true"]{background:var(--ink);color:var(--white)}
.band[aria-pressed="true"] p{color:#cfc9bd}
.ladder{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:18px 0 6px;font-family:var(--num);font-size:24px;font-weight:700}
.ladder span{border:1.5px solid var(--ink);padding:2px 12px;background:var(--white)}
.ladder i{font-style:normal;color:var(--ink-3);font-size:18px}
.compare{display:grid;grid-template-columns:1fr 1fr;border-top:1.5px solid var(--ink);border-left:1.5px solid var(--ink);margin-top:10px}
.compare>div{border-right:1.5px solid var(--ink);border-bottom:1.5px solid var(--ink);background:var(--white);padding:20px 22px}
.compare h3{font-family:var(--serif);font-size:22px;margin:0 0 4px}
.compare svg{width:100%;max-width:360px;height:auto;display:block;margin:10px 0 14px}
.compare ul{margin:0;padding-left:1.2em;color:var(--ink-2);font-size:15px}
.compare li{margin-bottom:4px}
.compare .pick{margin-top:12px;font-weight:700;font-size:15px}
.diagram{background:var(--white);border:1.5px solid var(--ink);padding:20px;margin:10px 0 18px}
.diagram svg{width:100%;height:auto;display:block}
.calc{display:flex;flex-wrap:wrap;align-items:end;gap:12px;background:var(--white);border:1.5px solid var(--ink);padding:18px 20px}
.calc .field{width:150px}
.calc output{font-family:var(--num);font-size:34px;font-weight:700;line-height:1}
.calc output small{font-family:"Noto Sans TC";font-size:14px;font-weight:400;color:var(--ink-3);margin-left:4px}
.cta{border:1.5px solid var(--ink);background:var(--ink);color:var(--white);padding:34px 30px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px}
.cta h2{font-family:var(--serif);margin:0;font-size:26px}
.cta .btn{border-color:var(--white);color:var(--white)}
.cta .btn:hover{background:var(--white)!important;color:var(--ink)!important}
@media (max-width:980px){
  .bands{grid-template-columns:1fr 1fr}
  .compare{grid-template-columns:1fr}
}
/* 砂面拼貼（年份區左邊） */
.mosaic{display:grid;grid-template-columns:repeat(4,1fr);background:var(--ink);gap:1.5px}
.tile{position:relative;border:0;padding:0;aspect-ratio:1/1;overflow:hidden;background:none}
.tile canvas{width:100%;height:100%;transition:transform .4s}
.tile:hover canvas{transform:scale(1.08)}
.tile span{position:absolute;left:6px;bottom:6px;background:rgba(251,250,247,.92);border:1px solid var(--ink);font-family:var(--num);font-weight:600;font-size:13px;padding:0 6px;letter-spacing:.03em}
.use-swatch{width:100%;height:64px;border-bottom:1.5px solid var(--ink)}
.flow-step .flow-ico{height:120px;display:flex;align-items:center;justify-content:center;border-bottom:1.5px solid var(--ink);background:var(--paper)}
.flow-step .flow-ico svg{width:46px;height:46px;stroke:var(--ink);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
@media (max-width:980px){ .mosaic{grid-template-columns:repeat(4,1fr)} }
.grains{display:grid;grid-template-columns:repeat(4,1fr);border-top:1.5px solid var(--ink);border-left:1.5px solid var(--ink)}
@media (max-width:980px){ .grains{grid-template-columns:1fr 1fr} }
@media (max-width:560px){ .grains,.bands{grid-template-columns:1fr} }

/* 正面照片與翻面看背面 */
.tile img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ph>img.back-img{opacity:0;transition:opacity .35s}
.ph.show-back>img.back-img{opacity:1}
.flip-btn{position:absolute;right:8px;top:8px;z-index:2;border:1.5px solid var(--ink);background:var(--white);font-size:12.5px;padding:3px 10px;border-radius:2px}
.flip-btn:hover{background:var(--ink);color:var(--white)}