/* ==================================================================
   NOOK — tokens
   ================================================================== */
:root{
  --white:#FFFFFF;
  --ink:#23221F;
  --stone:#77736B;
  --line:#E8E5DF;
  --wall:#F3F1ED;
  --glass:#5E8C86;           /* focus ring, small confirmations */
  --offer:#9C3D2E;           /* offer price — the one "shout" colour */

  --font:"Hanken Grotesk", system-ui, -apple-system, "Segoe UI", sans-serif;
  --s-hero:clamp(2.6rem, 5vw, 4.9rem);
  --s-h2:clamp(1.9rem, 3vw, 2.7rem);
  --s-h3:1.15rem;
  --s-body:1rem;
  --s-small:.875rem;
  --s-micro:.78rem;

  --gutter:clamp(16px, 4vw, 56px);
  --max:1240px;
  --wide:1440px;
  --ease:cubic-bezier(.2,.7,.2,1);

  /* shadows: floating on white vs hung on a wall photo */
  --float-shadow:0 0 0 1px rgba(35,34,31,.05),0 2px 4px rgba(35,34,31,.06),0 10px 22px -6px rgba(35,34,31,.14),0 28px 56px -12px rgba(35,34,31,.20);
  --wall-shadow:3px 9px 14px -5px rgba(20,18,15,.34),1px 2px 4px rgba(20,18,15,.18);
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--white);color:var(--ink);font-family:var(--font);font-size:var(--s-body);line-height:1.55;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
a{color:inherit}
s{text-decoration-thickness:1px}
:focus-visible{outline:2px solid var(--glass);outline-offset:3px}
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--gutter)}
.wide{max-width:var(--wide);margin:0 auto;padding:0 var(--gutter)}
.num{font-feature-settings:"tnum" 1}

/* ==================================================================
   Offer bar + header
   ================================================================== */
.flyer{background:var(--ink);color:#fff;text-align:center;font-size:var(--s-small);padding:10px var(--gutter)}
.flyer a{color:#fff;text-underline-offset:3px;margin-left:8px;white-space:nowrap}
.head{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.94);backdrop-filter:saturate(1.2) blur(10px)}
.head.scrolled{box-shadow:0 1px 0 var(--line)}
.head .wide{display:flex;align-items:center;justify-content:space-between;height:68px;gap:24px}
.mark{text-decoration:none;display:flex;align-items:baseline;gap:10px}
.mark b{font-weight:600;font-size:1.3rem;letter-spacing:.28em}
.mark span{font-size:var(--s-micro);color:var(--stone)}
.nav{display:flex;gap:28px;font-size:var(--s-small)}
.nav a{text-decoration:none;color:var(--stone);padding:6px 0;border-bottom:1px solid transparent;transition:color .2s,border-color .2s}
.nav a:hover{color:var(--ink);border-color:var(--ink)}
.nav a.hot{color:var(--offer)}
.bagbtn{font-size:var(--s-small);display:flex;align-items:center;gap:8px;padding:8px 0}
.bagbtn .count{min-width:22px;height:22px;border-radius:11px;background:var(--ink);color:#fff;font-size:.72rem;display:grid;place-items:center;padding:0 6px}
.bagbtn .count.zero{background:var(--line);color:var(--stone)}
@media (max-width:900px){.nav{display:none}.mark span{display:none}}

/* ==================================================================
   Pieces. Every piece image already includes its frame; a group is
   sized in inches and each piece is a % of the group span.
   ================================================================== */
.group{display:flex;align-items:center}
.piece{flex:none;display:block;background:center/100% 100% no-repeat var(--wall);transition:width .55s var(--ease),margin .55s var(--ease)}
.float .piece{box-shadow:var(--float-shadow)}
button.piece{cursor:zoom-in}
.scene{position:relative;overflow:hidden;background:var(--wall)}
.scene > img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.scene .group{position:absolute;transition:left .55s var(--ease),top .55s var(--ease),width .55s var(--ease)}
.scene .piece{box-shadow:var(--wall-shadow)}
.dim{position:relative;height:14px;transition:margin .55s var(--ease),width .55s var(--ease)}
.dim::before{content:"";position:absolute;left:0;right:0;top:7px;border-top:1px solid #B9B4AA}
.dim::after{content:"";position:absolute;inset:0;border-left:1px solid #B9B4AA;border-right:1px solid #B9B4AA}
.dim span{position:absolute;left:50%;top:0;transform:translate(-50%,-3px);background:var(--white);padding:0 10px;font-size:var(--s-micro);color:var(--stone);line-height:20px;white-space:nowrap}

/* ==================================================================
   Hero — the photograph carries the page, the words sit inside it
   ================================================================== */
.hero{position:relative;height:clamp(480px, 46vw, 900px);overflow:hidden;color:#fff;background:#3a3631}
.hero picture,.hero picture img{position:absolute;inset:0;width:100%;height:100%}
.hero picture img{object-fit:cover;object-position:50% 12%}
.hero .shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(18,17,15,.66) 0%,rgba(18,17,15,.42) 30%,rgba(18,17,15,0) 56%)}
.hero .copy{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;max-width:var(--wide);margin:0 auto;padding:0 var(--gutter)}
.hero h1{font-weight:300;font-size:var(--s-hero);line-height:1.03;letter-spacing:-.025em;margin:0;max-width:10.5ch;text-shadow:0 1px 24px rgba(0,0,0,.18)}
.hero .sub{font-size:1.1rem;margin:22px 0 0;max-width:30ch;color:rgba(255,255,255,.88)}
.hero .ctas{display:flex;flex-wrap:wrap;align-items:center;gap:22px;margin-top:34px}
.hero .label{position:absolute;right:var(--gutter);bottom:20px;font-size:var(--s-micro);color:rgba(255,255,255,.92);text-decoration:none;background:rgba(18,17,15,.35);padding:6px 11px;border-radius:2px;backdrop-filter:blur(4px)}
.hero .label:hover{background:rgba(18,17,15,.55)}
.btn{display:inline-flex;align-items:center;height:52px;padding:0 26px;background:var(--ink);color:#fff;text-decoration:none;border-radius:2px;font-weight:500;transition:background .2s,color .2s}
.btn:hover{background:#000}
.btn.light{background:#fff;color:var(--ink)}
.btn.light:hover{background:var(--wall)}
.link{font-size:var(--s-small);text-underline-offset:4px}
.hero .link{color:#fff}
@media (max-width:760px){
  .hero{height:auto;aspect-ratio:4/5;min-height:0}
  .hero picture img{object-position:50% 30%}
  .hero .shade{background:linear-gradient(0deg,rgba(18,17,15,.74) 0%,rgba(18,17,15,.34) 42%,rgba(18,17,15,0) 64%)}
  .hero .copy{justify-content:flex-end;padding-bottom:28px}
  .hero .sub{font-size:1rem;margin-top:12px}
  .hero .ctas{margin-top:20px;gap:18px}
  .hero .label{display:none}
}

/* ==================================================================
   This week at NOOK
   ================================================================== */
.week{padding:clamp(64px,8vw,112px) 0;scroll-margin-top:68px}
.week .wrap{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(32px,5vw,80px);align-items:center}
.week .show{display:flex;justify-content:center;padding:clamp(16px,3vw,40px) 0 clamp(40px,5vw,64px)}
.week .show .group{width:58%}
.week .kicker{font-size:var(--s-small);color:var(--offer);margin:0 0 10px}
.week h2{font-weight:300;font-size:var(--s-h2);letter-spacing:-.02em;line-height:1.08;margin:0}
.week .detail{color:var(--stone);margin:8px 0 0}
.week .ctas{display:flex;flex-wrap:wrap;gap:22px;align-items:center;margin-top:28px}
@media (max-width:900px){.week .wrap{grid-template-columns:1fr}.week .show .group{width:66%}}

.price{margin:24px 0 0;display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.price strong{font-weight:400;font-size:1.85rem;letter-spacing:-.01em}
.price strong.on{color:var(--offer)}
.price s{color:var(--stone);font-size:1.05rem}
.terms{margin:6px 0 0;font-size:var(--s-small);color:var(--stone)}
.terms b{font-weight:500;color:var(--ink)}

/* ==================================================================
   Index — three ways to fill a wall
   ================================================================== */
.index{padding:clamp(56px,7vw,96px) 0 clamp(72px,9vw,120px);text-align:center;border-top:1px solid var(--line)}
.index h2{font-weight:300;font-size:var(--s-h2);letter-spacing:-.02em;margin:0}
.lineup{margin:clamp(40px,6vw,72px) auto 0;display:flex;align-items:flex-start;justify-content:space-between}
.lineup a{display:block;text-decoration:none;flex:none}
.lineup .hang{display:flex;align-items:center;height:var(--hang-h)}
.lineup .group{width:100%}
.lineup .cap{margin-top:34px;font-size:var(--s-small);color:var(--stone);line-height:1.35}
.lineup .cap b{display:block;color:var(--ink);font-weight:500;font-size:var(--s-body)}
@media (max-width:760px){.lineup{flex-wrap:wrap;justify-content:center;gap:40px 8%}.lineup .cap{font-size:var(--s-micro);margin-top:24px}.lineup .cap b{font-size:var(--s-small)}}

/* ==================================================================
   Collections
   ================================================================== */
.collection{padding:clamp(56px,7vw,104px) 0 0;scroll-margin-top:68px;border-top:1px solid var(--line)}
.collection .grid{display:grid;grid-template-columns:minmax(0,8fr) minmax(320px,4fr);gap:clamp(32px,4.5vw,72px);align-items:start}
@media (max-width:980px){.collection .grid{grid-template-columns:1fr}}
.stage{position:sticky;top:88px}
.stage .clip{overflow:hidden}
.stage .sized{width:100%}
.stage .dim{margin-top:18px}
.stage .hint{margin:14px 0 0;font-size:var(--s-micro);color:var(--stone)}
@media (max-width:980px){
  .stage{position:static;margin:0 calc(var(--gutter) * -1)}
  .stage .sized{width:118%;margin-left:-9%}
  .stage .hint{padding:0 var(--gutter)}
}
.panel h2{font-weight:400;font-size:var(--s-h2);line-height:1.06;letter-spacing:-.02em;margin:0}
.panel .thesis{display:block;font-weight:300;color:var(--stone)}
.panel .lede{color:var(--stone);margin:16px 0 0;max-width:42ch;font-size:var(--s-small)}
.row{margin-top:26px}
.row .label{display:flex;justify-content:space-between;gap:12px;font-size:var(--s-small);margin-bottom:10px}
.row .label span{color:var(--stone)}
.seg{display:flex;flex-wrap:wrap;gap:8px}
.seg button{border:1px solid var(--line);border-radius:2px;padding:10px 14px;font-size:var(--s-small);transition:border-color .2s;text-align:left;line-height:1.3}
.seg button small{display:block;font-size:.72rem;color:var(--stone)}
.seg button small em{font-style:normal;color:var(--glass)}
.seg button:hover{border-color:#BDB8AE}
.seg button[aria-pressed="true"]{border-color:var(--ink);box-shadow:inset 0 0 0 .5px var(--ink)}
.seg button.solo{cursor:default}
.thumbs{display:flex;flex-wrap:wrap;gap:10px}
.thumbs button{position:relative;padding:3px;border:1px solid transparent;border-radius:2px;transition:border-color .2s}
.thumbs button:hover{border-color:var(--line)}
.thumbs button[aria-pressed="true"]{border-color:var(--ink)}
.thumbs .t{display:flex;gap:3px}
.thumbs .t i{display:block;background:center/100% 100% no-repeat var(--wall)}
.thumbs .order{position:absolute;top:-8px;right:-8px;width:20px;height:20px;border-radius:50%;background:var(--ink);color:#fff;font-size:.68rem;font-style:normal;display:none;place-items:center}
.thumbs button[aria-pressed="true"] .order{display:grid}
.thumbs .name{display:block;font-size:var(--s-micro);color:var(--stone);margin-top:6px;text-align:left}
.add{margin-top:30px;width:100%;height:56px;background:var(--ink);color:#fff;border-radius:2px;display:flex;align-items:center;justify-content:space-between;padding:0 22px;font-weight:500;transition:background .2s}
.add:hover{background:#000}
.add:disabled{background:#BDB8AE;cursor:default}
.add .num{font-weight:400;opacity:.85}
.facts{list-style:none;margin:18px 0 0;padding:0;font-size:var(--s-small);color:var(--stone);display:grid;gap:6px}
.facts li{display:flex;gap:10px}
.facts li::before{content:"";width:5px;height:5px;margin-top:.62em;border-radius:50%;background:#B9B4AA;flex:none}
details.more{margin-top:26px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
details.more summary{list-style:none;cursor:pointer;padding:16px 0;font-size:var(--s-small);display:flex;justify-content:space-between}
details.more summary::-webkit-details-marker{display:none}
details.more summary::after{content:"+";color:var(--stone)}
details.more[open] summary::after{content:"–"}
details.more dl{margin:0 0 18px;display:grid;grid-template-columns:auto 1fr;gap:8px 20px;font-size:var(--s-small)}
details.more dt{color:var(--stone)}
details.more dd{margin:0}

/* ==================================================================
   Rooms — endless cinema reel
   ================================================================== */
.rooms{padding:clamp(64px,8vw,112px) 0 clamp(56px,7vw,96px);--rh:clamp(320px,60vh,640px)}
@media (max-width:760px){.rooms{--rh:min(68vw,520px)}}
.rooms h3{font-weight:400;font-size:var(--s-h3);margin:0 0 26px;text-align:center}
.reel{position:relative}
.track{display:flex;gap:clamp(12px,1.6vw,24px);overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain}
.track::-webkit-scrollbar{display:none}
.slide{flex:none;scroll-snap-align:center;margin:0;cursor:pointer}
.slide.on{cursor:default}
.slide img{height:var(--rh);width:auto;background:var(--wall);filter:brightness(.84) saturate(.8);transition:filter .45s var(--ease)}
.slide.on img{filter:none}
@media (hover:hover){.slide:not(.on):hover img{filter:brightness(.94)}}
.slide figcaption{margin:14px auto 0;font-size:var(--s-small);color:var(--stone);text-align:center;opacity:0;transition:opacity .45s;width:0;min-width:100%}
.slide.on figcaption{opacity:1}
.slide figcaption b{color:var(--ink);font-weight:500}
.arrow{position:absolute;top:calc(var(--rh) / 2 - 22px);width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.94);display:grid;place-items:center;box-shadow:0 2px 12px rgba(35,34,31,.16)}
.arrow.prev{left:var(--gutter)}
.arrow.next{right:var(--gutter)}
.pos{text-align:center;margin-top:10px;font-size:var(--s-micro);color:var(--stone)}
@media (max-width:760px){.arrow{display:none}}

/* ==================================================================
   Arrival, questions, footer
   ================================================================== */
.arrive{padding:clamp(72px,9vw,128px) 0;border-top:1px solid var(--line)}
.arrive h2,.faq h2{font-weight:300;font-size:var(--s-h2);letter-spacing:-.02em;margin:0;line-height:1.08;max-width:18ch}
.cols{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,4vw,56px);margin-top:48px}
.cols h3{font-weight:500;font-size:var(--s-body);margin:0 0 8px}
.cols p{margin:0;color:var(--stone);font-size:var(--s-small);max-width:34ch}
@media (max-width:760px){.cols{grid-template-columns:1fr}}
.faq{padding:0 0 clamp(72px,9vw,128px)}
.faq .wrap{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(24px,5vw,80px)}
@media (max-width:860px){.faq .wrap{grid-template-columns:1fr}}
.faq details{border-top:1px solid var(--line)}
.faq details:last-child{border-bottom:1px solid var(--line)}
.faq summary{list-style:none;cursor:pointer;padding:20px 0;display:flex;justify-content:space-between;gap:20px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";color:var(--stone)}
.faq details[open] summary::after{content:"–"}
.faq details p{margin:0 0 20px;color:var(--stone);font-size:var(--s-small);max-width:60ch}
footer{border-top:1px solid var(--line);padding:40px 0 calc(96px + env(safe-area-inset-bottom));font-size:var(--s-small);color:var(--stone)}
footer .wide{display:flex;flex-wrap:wrap;justify-content:space-between;gap:20px}
footer nav{display:flex;gap:24px;flex-wrap:wrap}
footer a{text-decoration:none}
footer a:hover{color:var(--ink)}

/* ==================================================================
   Bag drawer, zoom, mobile bar
   ================================================================== */
.scrim{position:fixed;inset:0;background:rgba(35,34,31,.32);opacity:0;pointer-events:none;transition:opacity .3s;z-index:50}
.scrim.on{opacity:1;pointer-events:auto}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(440px,100%);background:var(--white);z-index:51;transform:translateX(100%);transition:transform .38s var(--ease);display:flex;flex-direction:column}
.drawer.on{transform:none}
.drawer header{display:flex;justify-content:space-between;align-items:center;padding:22px 24px;border-bottom:1px solid var(--line)}
.drawer header h2{font-weight:400;font-size:1.15rem;margin:0}
.x{width:40px;height:40px;display:grid;place-items:center;border-radius:50%}
.x:hover{background:var(--wall)}
.items{flex:1;overflow-y:auto;padding:8px 24px}
.item{display:grid;grid-template-columns:88px 1fr auto;gap:16px;padding:18px 0;border-bottom:1px solid var(--line)}
.item .mini{height:88px;background:var(--wall);display:flex;align-items:center;justify-content:center;gap:3px;padding:10px}
.item .mini i{display:block;background:center/100% 100% no-repeat;box-shadow:0 2px 5px -2px rgba(0,0,0,.35)}
.item h3{font-size:var(--s-small);font-weight:500;margin:0}
.item p{margin:3px 0 0;font-size:var(--s-micro);color:var(--stone)}
.item p.deal{color:var(--offer)}
.qty{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:2px;margin-top:10px}
.qty button{width:30px;height:30px;color:var(--stone)}
.qty button:hover{color:var(--ink)}
.qty span{min-width:22px;text-align:center;font-size:var(--s-small)}
.item .right{text-align:right;font-size:var(--s-small)}
.item .rm{display:block;margin-top:10px;font-size:var(--s-micro);color:var(--stone);text-decoration:underline;text-underline-offset:3px}
.empty{padding:56px 0;text-align:center;color:var(--stone);font-size:var(--s-small)}
.empty b{display:block;color:var(--ink);font-weight:500;font-size:var(--s-body);margin-bottom:6px}
.sum{border-top:1px solid var(--line);padding:20px 24px calc(20px + env(safe-area-inset-bottom))}
.sum dl{margin:0;display:grid;grid-template-columns:1fr auto;gap:6px 0;font-size:var(--s-small)}
.sum dt{color:var(--stone)}
.sum dd{margin:0;text-align:right}
.sum .saved{color:var(--offer)}
.sum .total{font-size:var(--s-body);color:var(--ink);padding-top:10px;margin-top:6px;border-top:1px solid var(--line)}
.sum .add{margin-top:18px}
.sum .msg{margin:12px 0 0;font-size:var(--s-micro);color:var(--glass);display:none}
.sum .msg.on{display:block}
dialog.zoom{border:0;padding:0;max-width:none;max-height:none;width:100vw;height:100vh;background:rgba(255,255,255,.97)}
dialog.zoom::backdrop{background:rgba(255,255,255,.9)}
dialog.zoom .in{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;padding:56px var(--gutter)}
dialog.zoom img{max-height:calc(100vh - 170px);max-width:100%;box-shadow:var(--float-shadow)}
dialog.zoom p{margin:0;font-size:var(--s-small);color:var(--stone)}
dialog.zoom .x{position:absolute;top:16px;right:16px}
.bar{position:fixed;left:0;right:0;bottom:0;z-index:40;background:var(--white);border-top:1px solid var(--line);padding:10px var(--gutter) calc(10px + env(safe-area-inset-bottom));display:none;align-items:center;justify-content:space-between;gap:14px;transform:translateY(100%);transition:transform .3s var(--ease)}
.bar.on{transform:none}
.bar .what{font-size:var(--s-small);line-height:1.3;min-width:0}
.bar .what span{display:block;color:var(--stone);font-size:var(--s-micro);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar .add{margin:0;width:auto;height:46px;padding:0 18px;gap:12px;flex:none}
@media (max-width:980px){.bar{display:flex}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;scroll-behavior:auto!important}}

/* ==================================================================
   WordPress-only (not part of v3.1)
   ================================================================== */
.admin-bar .head{top:32px}
@media (max-width:782px){.admin-bar .head{top:46px}}

/* ==================================================================
   Frame finishes (added after v3.1): swatches + frame guide
   ================================================================== */
.swatches{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.swatch{width:32px;height:32px;border-radius:50%;border:1px solid rgba(35,34,31,.22);background-size:cover;background-position:center;transition:box-shadow .2s,transform .2s}
.swatch:hover{transform:translateY(-1px)}
.swatch[aria-pressed="true"]{box-shadow:0 0 0 2px var(--white),0 0 0 3.5px var(--ink)}
.swatch[data-frame="white"],.fcard i[data-frame="white"]{background-image:linear-gradient(145deg,#fff 0%,#f4f2ee 55%,#e6e3dc 100%);box-shadow:inset 0 1px 2px rgba(255,255,255,.9),inset 0 -2px 3px rgba(35,34,31,.08)}
.swatch[data-frame="whitewash"],.fcard i[data-frame="whitewash"]{background-image:repeating-linear-gradient(98deg,rgba(120,108,90,.22) 0 1px,transparent 1px 4px),repeating-linear-gradient(82deg,rgba(255,255,255,.55) 0 2px,transparent 2px 7px),linear-gradient(145deg,#efebe2,#d8d1c3)}
.swatch[data-frame="black"],.fcard i[data-frame="black"]{background-image:radial-gradient(circle at 30% 25%,rgba(255,255,255,.22),transparent 45%),linear-gradient(145deg,#3b3b3a 0%,#1d1d1c 48%,#0e0e0d 100%)}
.swatch[data-frame="silver"],.fcard i[data-frame="silver"]{background-image:repeating-linear-gradient(100deg,rgba(255,255,255,.28) 0 1px,transparent 1px 3px),linear-gradient(135deg,#f3f4f5 0%,#b8bdc3 28%,#eef0f2 52%,#9da3aa 78%,#d6d9dc 100%)}
.swatch[data-frame="gold"],.fcard i[data-frame="gold"]{background-image:repeating-linear-gradient(100deg,rgba(255,255,255,.22) 0 1px,transparent 1px 3px),linear-gradient(135deg,#f4e4b2 0%,#c8a14e 30%,#f1dc96 52%,#ad8838 78%,#e4c36f 100%)}
.swatch.photo,.fcard i.photo{background-image:var(--photo)!important}
.frame-line{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:12px;font-size:var(--s-small)}
.frame-line .fname{color:var(--stone)}
.frame-line .link{margin-left:auto}
dialog.frame-guide .in{justify-content:flex-start;overflow-y:auto;gap:28px;padding-top:72px}
dialog.frame-guide h2{font-weight:300;font-size:var(--s-h2);letter-spacing:-.02em;margin:0;text-align:center}
dialog.frame-guide .spec{margin:0;text-align:center}
dialog.frame-guide .guide-img{max-height:46vh;max-width:min(100%,900px)}
.fcards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px;width:min(100%,1100px)}
.fcard{border:1px solid var(--line);border-radius:2px;padding:20px;display:flex;flex-direction:column;gap:12px;text-align:left}
.fcard i{display:block;width:100%;aspect-ratio:3/2;border-radius:2px;border:1px solid rgba(35,34,31,.12);background-size:cover;background-position:center}
.fcard b{font-weight:500}
.fcard p{margin:0;color:var(--stone);font-size:var(--s-small)}

/* ==================================================================
   Complete your wall (bag drawer)
   ================================================================== */
.cross{margin:22px 0 8px;padding:16px 18px;border:1px solid var(--line);border-radius:2px;background:var(--wall)}
.cross .ck{margin:0;font-size:var(--s-micro);color:var(--stone)}
.cross .ct{margin:6px 0 12px;font-size:var(--s-small);line-height:1.4}
.cross .ghost{height:40px;padding:0 18px;border:1px solid var(--ink);border-radius:2px;background:var(--white);font-size:var(--s-small);font-weight:500;transition:background .2s,color .2s}
.cross .ghost:hover{background:var(--ink);color:#fff}

.cross .crow{display:flex;gap:16px;align-items:center}
.cross .cbody{min-width:0}
.cross .ghost{margin-top:14px}
.cthumb{flex:none;width:132px;height:96px;background:var(--white);display:flex;align-items:center;justify-content:center}
.cthumb .float .piece{box-shadow:0 0 0 1px rgba(35,34,31,.05),0 3px 7px -1px rgba(35,34,31,.28)}
.item .mini svg{color:var(--stone)}

.cross .clabel{margin:0 0 4px;font-size:var(--s-micro);color:var(--offer)}
.cross .ct{margin:0;font-size:var(--s-small);font-weight:500;line-height:1.3}
.cross .cd{margin:2px 0 0;font-size:var(--s-micro);color:var(--stone);line-height:1.35}
.cross .cprice{margin:8px 0 0;font-size:var(--s-small)}
.cross .cprice s{color:var(--stone)}
.cross .cprice b{font-weight:500;color:var(--offer)}
.cross .cnote{color:var(--stone);font-size:var(--s-micro)}
.cross .ctotal{margin:12px 0 0;font-size:var(--s-small);color:var(--stone);border-top:1px solid var(--line);padding-top:10px}
.fmtup{margin-top:10px;font-size:var(--s-micro);color:var(--stone);text-decoration:underline;text-underline-offset:3px;text-align:left}
.fmtup:hover{color:var(--ink)}
.fmtup[hidden]{display:none}

.cross .cact{display:flex;align-items:center;gap:18px;margin-top:14px}
.cross .cact .ghost{margin-top:0}
.cross .nothanks{font-size:var(--s-micro);color:var(--stone);text-decoration:underline;text-underline-offset:3px}
.cross .nothanks:hover{color:var(--ink)}
