/* Halfmoon Coffee · bespoke module styles. Everything scoped to .b-coffee */
.b-coffee{font-size:14px;line-height:1.5}
.b-coffee *{box-sizing:border-box}
.b-coffee img{display:block;width:100%;height:100%;object-fit:cover}
.b-coffee h1,.b-coffee h2,.b-coffee h3{font-family:var(--hf);font-weight:var(--hw);letter-spacing:var(--hl);line-height:1.06;margin:0}
.b-coffee p{margin:0}
.b-coffee button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0}
.b-coffee a{cursor:pointer}
.b-coffee .cf-k{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;font-weight:700;color:var(--acc)}
.b-coffee .cf-lbl{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--mut);margin:14px 0 8px}
.b-coffee .cf-lbl:first-child{margin-top:0}
.b-coffee .cf-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:11px 18px;border-radius:var(--br);background:var(--acc);color:var(--on);font-weight:600;font-size:13px;white-space:nowrap;cursor:pointer;border:1.5px solid transparent;transition:transform .2s,filter .2s}
.b-coffee .cf-btn:hover{filter:brightness(1.06);transform:translateY(-1px)}
.b-coffee .cf-btn.cf-sm{padding:8px 14px;font-size:12px}
.b-coffee .cf-btn.cf-gh{background:transparent;color:var(--ink);border-color:var(--line2)}
.b-coffee .cf-btn.cf-off{opacity:.4;pointer-events:none}
.b-coffee .cf-th{display:block;overflow:hidden;flex:none;position:relative}
.b-coffee .cf-sec{padding:38px 30px;border-top:1px solid var(--line)}
.b-coffee .cf-sh{display:flex;gap:14px;align-items:baseline;margin-bottom:18px}
.b-coffee .cf-sh .cf-ix{font-size:12px;font-weight:600;color:var(--mut)}
.b-coffee .cf-sh .cf-ix:empty{display:none}
.b-coffee .cf-sh h2{font-size:26px}
.b-coffee .cf-sh p{color:var(--mut);font-size:13px;margin-top:6px;max-width:460px}
.b-coffee .cf-foot{display:flex;justify-content:space-between;gap:10px;padding:22px 30px 28px;font-size:11.5px;color:var(--mut);border-top:1px solid var(--line);flex-wrap:wrap}
/* nav */
.b-coffee .cf-nv{display:flex;align-items:center;gap:18px;padding:18px 30px;font-size:12.5px;position:sticky;top:0;z-index:3;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.b-coffee .cf-nv nav{display:flex;gap:18px;color:var(--mut)}
.b-coffee .cf-nv .cf-lg{font-family:var(--hf);font-weight:var(--hw);font-size:20px;letter-spacing:var(--hl);display:flex;align-items:center;gap:8px;white-space:nowrap}
.b-coffee .cf-nv .cf-lg i{font-style:normal;color:var(--acc)}
/* tabs / options / chips */
.b-coffee .cf-tabs{display:flex;gap:6px;margin-bottom:16px}
.b-coffee .cf-tb,.b-coffee .cf-op{padding:8px 14px;border-radius:var(--br);background:var(--soft);font-size:12.5px;font-weight:600;border:1.5px solid transparent;transition:.2s}
.b-coffee .cf-tb.on,.b-coffee .cf-op.on{background:var(--acc);color:var(--on)}
.b-coffee .cf-opts{display:flex;flex-wrap:wrap;gap:6px}
.b-coffee .cf-add{width:30px;height:30px;border-radius:50%;background:var(--ink);color:var(--bg);font-weight:700;font-size:16px;line-height:1;flex:none;transition:transform .15s}
.b-coffee .cf-add:active{transform:scale(.9)}
/* menu variants */
.b-coffee .cf-mn-cards{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.b-coffee .cf-mn-cards>div{display:flex;align-items:center;gap:12px;padding:10px 12px 10px 10px;border-radius:var(--r);background:var(--soft)}
.b-coffee .cf-mn-cards .cf-th{width:54px;height:54px;border-radius:50%}
.b-coffee .cf-mn-cards b{display:block;font-size:14px}.b-coffee .cf-mn-cards small{color:var(--mut);font-size:12px}
.b-coffee .cf-mn-cards>div>span:nth-child(2){flex:1}
.b-coffee .cf-mn-cards em{font-style:normal;font-weight:700}
.b-coffee .cf-mn-lux>div{display:flex;align-items:center;gap:14px;padding:14px 0;border-bottom:1px solid var(--line)}
.b-coffee .cf-mn-lux i{font-family:var(--hf);color:var(--acc);font-size:13px;width:26px;font-style:normal}
.b-coffee .cf-mn-lux .cf-th{width:48px;height:48px;border-radius:0;filter:saturate(.8)}
.b-coffee .cf-mn-lux b{font-family:var(--hf);font-weight:400;font-size:19px;display:block}
.b-coffee .cf-mn-lux small{color:var(--mut);font-size:11.5px;letter-spacing:.04em}
.b-coffee .cf-mn-lux u{flex:1;border-bottom:1px dotted color-mix(in srgb,var(--acc) 55%,transparent);transform:translateY(-6px)}
.b-coffee .cf-mn-lux em{font-style:normal;font-family:var(--hf);font-size:19px;color:var(--acc)}
.b-coffee .cf-mn-lux .cf-add{background:transparent;border:1px solid var(--acc);color:var(--acc);border-radius:0;font-weight:400}
.b-coffee .cf-mn-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.b-coffee .cf-mn-tiles .cf-tile{position:relative;background:var(--bg);border:2px solid var(--ink);border-radius:20px;padding:10px 10px 44px;box-shadow:4px 4px 0 var(--ink)}
.b-coffee .cf-mn-tiles .cf-tile:nth-child(odd){transform:rotate(-.8deg)}.b-coffee .cf-mn-tiles .cf-tile:nth-child(even){transform:rotate(.8deg)}
.b-coffee .cf-mn-tiles .cf-ph{aspect-ratio:4/3;border-radius:12px;overflow:hidden;position:relative;margin-bottom:10px}
.b-coffee .cf-mn-tiles .cf-tag{position:absolute;left:8px;top:8px;background:var(--acc2);color:var(--ink);font-size:10.5px;font-weight:700;padding:4px 8px;border-radius:999px;border:2px solid var(--ink)}
.b-coffee .cf-mn-tiles em{position:absolute;top:-10px;right:10px;background:var(--acc);color:var(--on);font-style:normal;font-weight:700;font-size:12px;padding:3px 9px;border-radius:999px;border:2px solid var(--ink)}
.b-coffee .cf-mn-tiles b{display:block;font-family:var(--hf);font-size:16px}.b-coffee .cf-mn-tiles small{color:var(--mut);font-size:11.5px}
.b-coffee .cf-mn-tiles .cf-add{position:absolute;right:10px;bottom:10px;border:2px solid var(--ink);background:var(--acc);color:var(--on)}
.b-coffee .cf-mn-rows>div{display:grid;grid-template-columns:56px 1fr auto auto;gap:0 14px;align-items:center;padding:12px 10px;border-bottom:1px solid var(--line);transition:background .2s,color .2s}
.b-coffee .cf-mn-rows>div:hover{background:var(--acc);color:var(--on)}
.b-coffee .cf-mn-rows>div:hover small{color:var(--on)}
.b-coffee .cf-mn-rows .cf-th{width:56px;height:56px;grid-row:1/3;filter:grayscale(.4) contrast(1.1)}
.b-coffee .cf-mn-rows b{font-family:var(--hf);font-stretch:75%;font-weight:900;text-transform:uppercase;font-size:24px;line-height:1}
.b-coffee .cf-mn-rows small{grid-column:2;color:var(--mut);font-size:11px;text-transform:uppercase;letter-spacing:.08em}
.b-coffee .cf-mn-rows em{grid-row:1/3;grid-column:3;font-style:normal;font-weight:800;font-size:20px}
.b-coffee .cf-mn-rows .cf-add{grid-row:1/3;grid-column:4;border-radius:0;background:var(--acc);color:var(--on)}
.b-coffee .cf-mn-table{width:100%;border-collapse:collapse;font-size:13px}
.b-coffee .cf-mn-table td{padding:10px 8px 10px 0;border-top:1px solid var(--line);vertical-align:middle}
.b-coffee .cf-mn-table tr:last-child td{border-bottom:1px solid var(--line)}
.b-coffee .cf-mn-table .cf-th{width:40px;height:40px;border-radius:2px}
.b-coffee .cf-mn-table .cf-d{color:var(--mut)}.b-coffee .cf-mn-table .cf-p{text-align:right;font-weight:600;white-space:nowrap}
.b-coffee .cf-mn-table td:last-child{width:40px;text-align:right}
.b-coffee .cf-mn-table .cf-add{border-radius:4px;width:28px;height:28px}
/* order */
.b-coffee .cf-ord{display:grid;grid-template-columns:1.2fr 1fr;gap:18px;align-items:start}
.b-coffee .cf-ln{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.b-coffee .cf-ln .cf-th{width:46px;height:46px;border-radius:calc(var(--r) * .6)}
.b-coffee .cf-ln>span:nth-child(2){flex:1}
.b-coffee .cf-ln b{display:block;font-size:14px}.b-coffee .cf-ln small{color:var(--mut);font-size:12px}
.b-coffee .cf-qty{display:flex;align-items:center;gap:8px}
.b-coffee .cf-qty button{width:28px;height:28px;border-radius:50%;background:var(--soft);font-size:16px;line-height:1}
.b-coffee .cf-qty b{min-width:14px;text-align:center}
.b-coffee .cf-empty{color:var(--mut);font-size:13px;padding:16px;border:1.5px dashed var(--line2);border-radius:var(--r)}
.b-coffee .cf-quick{margin-top:14px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.b-coffee .cf-quick small{width:100%;color:var(--mut);font-size:11px;text-transform:uppercase;letter-spacing:.1em;font-weight:700;margin-bottom:2px}
.b-coffee .cf-quick button{padding:7px 12px;border-radius:var(--br);border:1.5px solid var(--line2);font-size:12px;font-weight:600}
.b-coffee .cf-ord .cf-side{background:var(--soft);border-radius:var(--r);padding:16px}
.b-coffee .cf-slots{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.b-coffee .cf-slots button{padding:9px 6px;border-radius:calc(var(--r) * .7);background:var(--bg);font-weight:600;font-size:12px;line-height:1.2;border:1.5px solid transparent}
.b-coffee .cf-slots button small{display:block;font-weight:500;color:var(--mut);font-size:11px}
.b-coffee .cf-slots button.on{border-color:var(--acc);color:var(--acc)}
.b-coffee .cf-sum{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.b-coffee .cf-sum>div{display:flex;justify-content:space-between;align-items:baseline;font-size:13px}
.b-coffee .cf-sum>div b{font-family:var(--hf);font-weight:var(--hw);font-size:26px}
.b-coffee .cf-sum small{display:block;color:var(--mut);font-size:12px;margin:4px 0 12px}
.b-coffee .cf-sum .cf-btn{width:100%}
.b-coffee .cf-done{text-align:center;padding:28px 20px;border-radius:var(--r);background:var(--soft);max-width:460px;margin:0 auto}
.b-coffee .cf-done .cf-tick{width:60px;height:60px;border-radius:50%;background:var(--acc);color:var(--on);display:grid;place-items:center;font-size:28px;margin:0 auto 12px}
.b-coffee .cf-done small{color:var(--mut);text-transform:uppercase;letter-spacing:.12em;font-size:10.5px;font-weight:700}
.b-coffee .cf-done b{display:block;font-family:var(--hf);font-size:48px;line-height:1.1;margin:4px 0 10px}
.b-coffee .cf-done p{color:var(--mut);font-size:13px;margin-bottom:16px}
/* builder */
.b-coffee .cf-bld{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start}
.b-coffee .cf-bld .cf-pic{position:relative;border-radius:var(--r);overflow:hidden;aspect-ratio:1;background:var(--soft)}
.b-coffee .cf-bld .cf-cap{position:absolute;left:12px;bottom:12px;background:var(--bg);color:var(--ink);border-radius:calc(var(--r) * .6);padding:8px 12px;font-size:11.5px}
.b-coffee .cf-bld .cf-cap b{display:block;font-size:13px}
.b-coffee .cf-res{margin-top:14px;padding:14px;border-radius:var(--r);background:var(--soft);display:flex;flex-direction:column;gap:6px}
.b-coffee .cf-res small{color:var(--mut);font-size:12px}
.b-coffee .cf-res b{font-family:var(--hf);font-weight:var(--hw);font-size:19px}
.b-coffee .cf-res .cf-btn{align-self:flex-start;margin-top:4px}
/* beans */
.b-coffee .cf-bn{display:grid;grid-template-columns:1fr 1.2fr;gap:18px;align-items:start}
.b-coffee .cf-bn .cf-list{display:flex;flex-direction:column;gap:6px}
.b-coffee .cf-bean{display:grid;grid-template-columns:1fr auto;text-align:left;padding:12px 14px;border-radius:var(--r);background:var(--soft);border:1.5px solid transparent;gap:0 10px}
.b-coffee .cf-bean.on{border-color:var(--acc)}
.b-coffee .cf-bean b{font-size:14px}.b-coffee .cf-bean small{grid-column:1;color:var(--mut);font-size:12px}
.b-coffee .cf-bean em{grid-row:1/3;grid-column:2;font-style:normal;font-weight:600;font-size:12px;align-self:center;white-space:nowrap}
.b-coffee .cf-detail h3{font-size:24px;margin:4px 0 14px}
.b-coffee .cf-bars>div{display:grid;grid-template-columns:72px 1fr 34px;gap:8px;align-items:center;font-size:12px;margin:6px 0}
.b-coffee .cf-bars i{display:block;height:6px;border-radius:6px;background:var(--line2);overflow:hidden}
.b-coffee .cf-bars i b{display:block;height:100%;background:var(--acc);border-radius:6px;transition:width .5s}
.b-coffee .cf-bars small{color:var(--mut);text-align:right}
.b-coffee .cf-brew{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.b-coffee .cf-specs{display:flex;gap:16px;margin:12px 0 8px;flex-wrap:wrap}
.b-coffee .cf-specs span small{display:block;color:var(--mut);font-size:11px}.b-coffee .cf-specs span b{font-size:14px}
.b-coffee .cf-brew ol{margin:0;padding-left:18px;font-size:13px;color:var(--mut)}
.b-coffee .cf-brew li{margin:3px 0}
/* stamp card */
.b-coffee .cf-stamp{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:center}
.b-coffee .cf-stamp .cf-card{background:var(--ink);color:var(--bg);border-radius:var(--r);padding:18px;box-shadow:0 20px 40px -22px rgba(0,0,0,.5)}
.b-coffee .cf-stamp .cf-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:14px}
.b-coffee .cf-stamp .cf-head b{font-family:var(--hf);font-size:18px}.b-coffee .cf-stamp .cf-head small{opacity:.7;font-size:12px}
.b-coffee .cf-stamp .cf-dots{display:grid;grid-template-columns:repeat(9,1fr);gap:6px}
.b-coffee .cf-stamp .cf-dots i{aspect-ratio:1;border-radius:50%;border:1.5px dashed rgba(255,255,255,.35);display:grid;place-items:center;font-style:normal;font-size:14px;transition:.3s}
.b-coffee .cf-stamp .cf-dots i.on{background:var(--acc);border-color:var(--acc);color:var(--on)}
.b-coffee .cf-stamp .cf-foot2{display:flex;justify-content:space-between;align-items:center;margin-top:16px;font-size:13px}
.b-coffee .cf-stamp .cf-why{display:flex;flex-direction:column;gap:10px}
.b-coffee .cf-stamp .cf-why div{padding:12px 14px;border-radius:var(--r);background:var(--soft)}
.b-coffee .cf-stamp .cf-why b{display:block;font-size:14px}.b-coffee .cf-stamp .cf-why small{color:var(--mut);font-size:12px}
/* space */
.b-coffee .cf-sp{display:grid;grid-template-columns:1.3fr 1fr;gap:12px}
.b-coffee .cf-sp .cf-big{position:relative;border-radius:var(--r);overflow:hidden;min-height:300px}
.b-coffee .cf-sp .cf-big span{position:absolute;left:12px;bottom:12px;background:var(--bg);color:var(--ink);font-size:12px;font-weight:600;padding:7px 11px;border-radius:calc(var(--r) * .6)}
.b-coffee .cf-sp .cf-cells{display:grid;grid-template-rows:1fr 1fr auto;gap:12px}
.b-coffee .cf-sp .cf-cells>div{position:relative;border-radius:var(--r);overflow:hidden;min-height:120px;background:var(--soft);padding:12px;display:flex;flex-direction:column;justify-content:flex-end}
.b-coffee .cf-sp .cf-cells img{position:absolute;inset:0;z-index:0;filter:brightness(.7)}
.b-coffee .cf-sp .cf-cells b,.b-coffee .cf-sp .cf-cells small{position:relative;z-index:1;color:#fff}
.b-coffee .cf-sp .cf-cells .cf-txt b,.b-coffee .cf-sp .cf-cells .cf-txt small{color:inherit}
.b-coffee .cf-sp .cf-cells .cf-txt small{color:var(--mut)}
.b-coffee .cf-sp .cf-cells small{font-size:12px}
/* hours */
.b-coffee .cf-hrs{display:grid;grid-template-columns:1fr 1.3fr;gap:18px}
.b-coffee .cf-hrs .cf-list div{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px dashed var(--line);font-size:13px}
.b-coffee .cf-hrs .cf-list .cf-today{font-weight:700;color:var(--acc)}
.b-coffee .cf-hrs .cf-st{margin-top:12px;font-size:12.5px;font-weight:600;display:flex;align-items:center;gap:8px}
.b-coffee .cf-hrs .cf-st i,.b-coffee .cf-pill i,.b-coffee .cf-nv .cf-open i{width:8px;height:8px;border-radius:50%;background:#c0392b;display:inline-block}
.b-coffee .cf-hrs .cf-st i.on,.b-coffee .cf-pill i.on,.b-coffee .cf-nv .cf-open i{background:#2e9d58}
.b-coffee .cf-hrs .cf-map{position:relative;border-radius:var(--r);overflow:hidden;min-height:200px}
.b-coffee .cf-hrs .cf-map svg{position:absolute;inset:0;width:100%;height:100%}
.b-coffee .cf-hrs .cf-map span{position:absolute;left:12px;top:12px;background:var(--bg);color:var(--ink);font-size:11.5px;font-weight:600;padding:7px 11px;border-radius:var(--br)}

/* ================= HEROES ================= */
.b-coffee .cf-hero{position:relative}
.b-coffee .cf-btns{display:flex;gap:8px;flex-wrap:wrap}
/* calm */
.b-coffee .cf-hero-calm{text-align:center;padding:36px 30px 0}
.b-coffee .cf-hero-calm h1{font-size:clamp(36px,7.2cqi,62px);margin:12px auto 14px;max-width:640px}
.b-coffee .cf-hero-calm h1 em{font-style:italic;color:var(--acc)}
.b-coffee .cf-hero-calm p{color:var(--mut);max-width:440px;margin:0 auto 20px;font-size:14.5px}
.b-coffee .cf-hero-calm .cf-btns{justify-content:center}
.b-coffee .cf-hero-calm .cf-arch{position:relative;max-width:620px;height:clamp(200px,38cqi,320px);margin:30px auto 0;border-radius:999px 999px 0 0;overflow:hidden}
.b-coffee .cf-hero-calm .cf-pill{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);background:var(--bg);color:var(--ink);font-size:12px;font-weight:600;padding:7px 12px;border-radius:999px;display:flex;align-items:center;gap:7px;white-space:nowrap}
.b-coffee .cf-hero-calm .cf-facts{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;padding:18px 0 28px;border-bottom:1px solid var(--line)}
.b-coffee .cf-hero-calm .cf-facts span{font-size:12px;font-weight:600;padding:7px 12px;border-radius:999px;background:var(--soft)}
/* luxe */
.b-coffee .cf-topline{display:flex;justify-content:space-between;padding:7px 30px;font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--mut);border-bottom:1px solid var(--line)}
.b-coffee .v-luxe .cf-nv{display:grid;grid-template-columns:1fr auto 1fr}
.b-coffee.v-luxe .cf-nv{display:grid;grid-template-columns:1fr auto 1fr;padding:20px 30px}
.b-coffee.v-luxe .cf-nv nav{font-size:10.5px;letter-spacing:.18em;text-transform:uppercase}
.b-coffee.v-luxe .cf-nv .cf-lg{font-family:"Inter",sans-serif;font-weight:300;letter-spacing:.34em;font-size:20px}
.b-coffee.v-luxe .cf-nv .cf-btn{justify-self:end}
.b-coffee .cf-hero-luxe{min-height:520px;display:flex;align-items:flex-end;overflow:hidden}
.b-coffee .cf-hero-luxe>img{position:absolute;inset:0;filter:brightness(.5) saturate(.75)}
.b-coffee .cf-hero-luxe::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(10,9,8,.9),rgba(10,9,8,.15) 70%)}
.b-coffee .cf-hero-luxe .cf-in{position:relative;z-index:1;padding:50px 30px;max-width:560px}
.b-coffee .cf-hero-luxe h1{font-size:clamp(40px,7.4cqi,76px);color:#f4ecdf;line-height:1.02}
.b-coffee .cf-hero-luxe h1 em{display:block;font-style:italic;color:var(--acc)}
.b-coffee .cf-hero-luxe .cf-rule{display:block;width:56px;height:1px;background:var(--acc);margin:20px 0}
.b-coffee .cf-hero-luxe p{color:#cfc6b6;font-size:13.5px;max-width:380px;margin-bottom:24px}
.b-coffee .cf-hero-luxe .cf-side{position:absolute;right:26px;top:50%;transform:rotate(90deg) translateX(50%);transform-origin:right center;font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:rgba(244,236,223,.6);z-index:1;white-space:nowrap}
.b-coffee.v-luxe .cf-btn{background:transparent;border:1px solid var(--acc);color:var(--acc);border-radius:0;text-transform:uppercase;letter-spacing:.18em;font-size:10.5px;padding:12px 20px}
.b-coffee.v-luxe .cf-btn.cf-fill{background:var(--acc);color:var(--on)}
.b-coffee.v-luxe .cf-btn.cf-gh{border-color:var(--line2);color:var(--ink)}
/* playful */
.b-coffee.v-playful .cf-nv .cf-lg i{width:30px;height:30px;border-radius:50% 46% 52% 44%;background:var(--acc);color:var(--on);display:grid;place-items:center;font-size:16px;transform:rotate(-8deg)}
.b-coffee.v-playful .cf-nv nav{margin-left:auto;font-weight:600;color:var(--ink)}
.b-coffee .cf-hero-playful{display:grid;grid-template-columns:1.1fr 1fr;gap:20px;align-items:center;padding:24px 30px 40px}
.b-coffee .cf-hero-playful .cf-badge{display:inline-block;background:var(--acc2);color:var(--ink);font-weight:700;font-size:11px;padding:6px 12px;border-radius:999px;transform:rotate(-2deg);border:2px solid var(--ink)}
.b-coffee .cf-hero-playful h1{font-size:clamp(34px,6.6cqi,58px);margin:14px 0 26px;line-height:1.12}
.b-coffee .cf-hero-playful .cf-wavy{color:var(--acc);text-decoration:underline wavy var(--acc2);text-decoration-thickness:3px;text-underline-offset:7px}
.b-coffee .cf-hero-playful p{color:var(--mut);font-size:14px;max-width:360px;margin-bottom:18px}
.b-coffee.v-playful .cf-btn{border:2px solid var(--ink);box-shadow:3px 3px 0 var(--ink)}
.b-coffee.v-playful .cf-btn:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--ink)}
.b-coffee.v-playful .cf-btn.cf-gh{background:var(--bg)}
.b-coffee .cf-hero-playful .cf-stack{position:relative;height:clamp(250px,42cqi,330px)}
.b-coffee .cf-hero-playful .cf-pol{position:absolute;background:#fff;padding:8px 8px 30px;border:2px solid var(--ink);box-shadow:6px 6px 0 var(--ink)}
.b-coffee .cf-hero-playful .cf-pol img{aspect-ratio:1;height:auto}
.b-coffee .cf-hero-playful .cf-pol small{position:absolute;left:0;right:0;bottom:7px;text-align:center;font-family:var(--hf);font-weight:600;font-size:12px;color:#222}
.b-coffee .cf-hero-playful .cf-pol.cf-a{left:6%;top:4%;width:58%;transform:rotate(-5deg)}
.b-coffee .cf-hero-playful .cf-pol.cf-b{right:2%;top:40%;width:40%;transform:rotate(6deg)}
.b-coffee .cf-hero-playful .cf-stk{position:absolute;right:4%;top:0;width:80px;height:80px;border-radius:50%;background:var(--acc);color:var(--on);display:grid;place-items:center;text-align:center;font-family:var(--hf);font-weight:700;font-size:12px;line-height:1.1;transform:rotate(12deg);border:2px solid var(--ink);z-index:2}
.b-coffee .cf-wave{display:block;width:100%;height:18px;color:var(--soft)}
.b-coffee.v-playful .cf-sec{border-top:0;background:var(--soft)}
.b-coffee.v-playful .cf-sec:nth-of-type(even){background:var(--bg)}
.b-coffee.v-playful .cf-tb,.b-coffee.v-playful .cf-op,.b-coffee.v-playful .cf-slots button,.b-coffee.v-playful .cf-quick button{border:2px solid var(--ink);background:var(--bg)}
.b-coffee.v-playful .cf-tb.on,.b-coffee.v-playful .cf-op.on{background:var(--acc);color:var(--on)}
.b-coffee.v-playful .cf-ord .cf-side,.b-coffee.v-playful .cf-res,.b-coffee.v-playful .cf-stamp .cf-why div,.b-coffee.v-playful .cf-bean{border:2px solid var(--ink);background:var(--bg);box-shadow:4px 4px 0 var(--ink)}
.b-coffee.v-playful .cf-stamp .cf-card{transform:rotate(-2deg)}
/* edgy */
.b-coffee.v-edgy .cf-nv{border-bottom:1px solid var(--line);text-transform:uppercase}
.b-coffee.v-edgy .cf-nv .cf-lg{font-stretch:75%;font-size:22px;letter-spacing:.01em}
.b-coffee.v-edgy .cf-nv .cf-lg span{color:var(--acc);margin:0 4px}
.b-coffee.v-edgy .cf-nv nav{margin-left:auto;font-size:11px;letter-spacing:.12em;color:var(--ink)}
.b-coffee .cf-hero-edgy{padding:26px 30px 0}
.b-coffee .cf-hero-edgy h1{font-size:clamp(52px,12.5cqi,124px);font-stretch:75%;text-transform:uppercase;line-height:.86}
.b-coffee .cf-hero-edgy h1 span{color:var(--acc)}
.b-coffee .cf-hero-edgy .cf-row{display:grid;grid-template-columns:1fr auto;gap:20px;align-items:end;margin:22px 0}
.b-coffee .cf-hero-edgy p{color:var(--mut);font-size:13px;max-width:420px}
.b-coffee .cf-hero-edgy .cf-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:2px}
.b-coffee .cf-hero-edgy .cf-strip div{position:relative;aspect-ratio:1}
.b-coffee .cf-hero-edgy .cf-strip img{filter:grayscale(.5) contrast(1.15)}
.b-coffee .cf-hero-edgy .cf-strip b,.b-coffee .cf-hero-edgy .cf-strip em{position:absolute;left:10px;font-family:var(--hf);font-stretch:75%;text-transform:uppercase;font-size:18px;color:#fff;font-style:normal}
.b-coffee .cf-hero-edgy .cf-strip b{bottom:30px}.b-coffee .cf-hero-edgy .cf-strip em{bottom:10px;color:var(--acc)}
.b-coffee .cf-mq{overflow:hidden;white-space:nowrap;border-block:1px solid var(--line);padding:12px 0}
.b-coffee .cf-mq div{display:inline-block;animation:cfmq 20s linear infinite}
.b-coffee .cf-mq span{font-family:var(--hf);font-stretch:75%;font-weight:900;text-transform:uppercase;font-size:22px;margin-right:20px}
.b-coffee .cf-mq b{color:var(--acc);margin-left:20px}
@keyframes cfmq{to{transform:translateX(-50%)}}
.b-coffee.v-edgy .cf-btn,.b-coffee.v-edgy .cf-tb,.b-coffee.v-edgy .cf-op,.b-coffee.v-edgy .cf-slots button,.b-coffee.v-edgy .cf-quick button,.b-coffee.v-edgy .cf-add,.b-coffee.v-edgy .cf-qty button{border-radius:0;text-transform:uppercase;letter-spacing:.06em;font-weight:800;font-size:11.5px}
.b-coffee.v-edgy .cf-tb,.b-coffee.v-edgy .cf-op{background:transparent;border:1px solid var(--line2)}
.b-coffee.v-edgy .cf-tb.on,.b-coffee.v-edgy .cf-op.on{background:var(--acc);color:var(--on);border-color:var(--acc)}
.b-coffee.v-edgy .cf-ord .cf-side,.b-coffee.v-edgy .cf-res,.b-coffee.v-edgy .cf-bean,.b-coffee.v-edgy .cf-stamp .cf-why div,.b-coffee.v-edgy .cf-done{background:transparent;border:1px solid var(--line2);border-radius:0}
.b-coffee.v-edgy .cf-sh h2{font-stretch:75%;text-transform:uppercase;font-size:34px}
.b-coffee.v-edgy .cf-sh .cf-ix{color:var(--acc)}
.b-coffee.v-edgy .cf-res b,.b-coffee.v-edgy .cf-sum>div b{font-stretch:75%;text-transform:uppercase}
.b-coffee.v-edgy .cf-stamp .cf-card{border-radius:0;background:var(--acc);color:var(--on)}
.b-coffee.v-edgy .cf-stamp .cf-dots i.on{background:#000;color:var(--acc)}
/* natural */
.b-coffee.v-natural{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.cf-w3.cf-org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .3 0 0 0 0 .25 0 0 0 0 .2 0 0 0 .07 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E")}
.b-coffee.v-natural .cf-nv .cf-lg{font-style:italic}
.b-coffee.v-natural .cf-nv nav{margin-left:auto}
.b-coffee .cf-nv .cf-open{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;padding:6px 11px;border-radius:999px;background:var(--soft);white-space:nowrap}
.b-coffee .cf-hero-natural{display:grid;grid-template-columns:1fr 1fr;gap:26px;align-items:center;padding:26px 30px 40px}
.b-coffee .cf-hero-natural .cf-blob{height:clamp(240px,42cqi,340px);border-radius:58% 42% 52% 48%/46% 56% 44% 54%;overflow:hidden}
.b-coffee .cf-hero-natural h1{font-size:clamp(34px,6.4cqi,56px);margin:12px 0 26px;line-height:1.1}
.b-coffee .cf-hero-natural h1 em{font-style:italic;color:var(--acc)}
.b-coffee .cf-hero-natural p{color:var(--mut);font-size:14px;max-width:360px;margin-bottom:18px}
.b-coffee .cf-bean-peek{margin-top:18px;padding:12px 14px;border-radius:18px;background:var(--soft);display:inline-block}
.b-coffee .cf-bean-peek small{display:block;color:var(--mut);font-size:11px}.b-coffee .cf-bean-peek b{font-family:var(--hf);font-weight:500;font-size:16px;display:block}.b-coffee .cf-bean-peek span{font-size:12px;color:var(--mut);font-style:italic}
.b-coffee.v-natural .cf-sh h2{font-style:italic}
.b-coffee.v-natural .cf-tb,.b-coffee.v-natural .cf-op{background:none;padding:4px 0;margin-right:12px;font-family:var(--hf);font-style:italic;font-size:15px;font-weight:500;color:var(--mut);display:inline-flex;align-items:center;gap:7px}
.b-coffee.v-natural .cf-tb::before,.b-coffee.v-natural .cf-op::before{content:"";width:12px;height:12px;border-radius:50%;border:1.5px solid var(--acc)}
.b-coffee.v-natural .cf-tb.on,.b-coffee.v-natural .cf-op.on{color:var(--ink);background:none}
.b-coffee.v-natural .cf-tb.on::before,.b-coffee.v-natural .cf-op.on::before{background:var(--acc);box-shadow:inset 0 0 0 2px var(--bg)}
.b-coffee.v-natural .cf-mn-cards .cf-th{border-radius:48% 52% 44% 56%/52% 46% 54% 48%}
.b-coffee.v-natural .cf-bld .cf-pic{border-radius:46% 54% 42% 58%/52% 44% 56% 48%}
/* minimal */
.b-coffee.v-minimal .cf-nv{border-bottom:1px solid var(--line)}
.b-coffee.v-minimal .cf-nv .cf-lg{font-size:17px}
.b-coffee .cf-nv .cf-dot{width:7px;height:7px;border-radius:50%;background:var(--acc);display:inline-block;margin-left:2px;transform:translateY(-6px)}
.b-coffee.v-minimal .cf-nv nav{margin-left:auto}
.b-coffee .cf-nv .cf-lnk{font-weight:600;color:var(--acc);font-size:12.5px}
.b-coffee .cf-hero-minimal{padding:22px 30px 34px}
.b-coffee .cf-hero-minimal .cf-wide{aspect-ratio:21/9;overflow:hidden;border-radius:2px}
.b-coffee .cf-hero-minimal .cf-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:28px;margin-top:22px;align-items:end}
.b-coffee .cf-hero-minimal h1{font-size:clamp(32px,6cqi,56px);letter-spacing:-.05em;line-height:1.02}
.b-coffee .cf-hero-minimal p{color:var(--mut);font-size:13.5px;margin-bottom:14px}
.b-coffee .cf-hero-minimal .cf-meta{display:flex;gap:16px;margin-top:14px;font-size:12px;color:var(--mut)}
.b-coffee.v-minimal .cf-sh h2{font-size:22px}
.b-coffee.v-minimal .cf-tb,.b-coffee.v-minimal .cf-op{background:none;border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 10px;color:var(--mut)}
.b-coffee.v-minimal .cf-tabs,.b-coffee.v-minimal .cf-opts{gap:0;border-bottom:1px solid var(--line)}
.b-coffee.v-minimal .cf-tb.on,.b-coffee.v-minimal .cf-op.on{color:var(--ink);border-bottom-color:var(--ink);background:none}
.b-coffee.v-minimal .cf-ord .cf-side,.b-coffee.v-minimal .cf-res,.b-coffee.v-minimal .cf-bean,.b-coffee.v-minimal .cf-stamp .cf-why div,.b-coffee.v-minimal .cf-done,.b-coffee.v-minimal .cf-mn-cards>div{background:transparent;border:1px solid var(--line2);border-radius:2px}
.b-coffee.v-minimal .cf-slots button{border:1px solid var(--line2);border-radius:2px;background:transparent}
.b-coffee.v-minimal .cf-slots button.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.b-coffee.v-minimal .cf-stamp .cf-card{border-radius:4px}
/* luxe section treatments */
.b-coffee.v-luxe .cf-sh{flex-direction:column;align-items:center;text-align:center;margin-bottom:26px}
.b-coffee.v-luxe .cf-sh h2{font-size:30px;font-style:italic}
.b-coffee.v-luxe .cf-sh::after{content:"";width:40px;height:1px;background:var(--acc);margin-top:12px}
.b-coffee.v-luxe .cf-sec{padding:48px 40px}
.b-coffee.v-luxe .cf-tabs{justify-content:center;gap:28px}
.b-coffee.v-luxe .cf-tb,.b-coffee.v-luxe .cf-op{background:none;border:0;border-bottom:1px solid transparent;border-radius:0;padding:4px 0 6px;font-family:var(--hf);font-size:17px;font-weight:400;color:var(--mut)}
.b-coffee.v-luxe .cf-tb.on,.b-coffee.v-luxe .cf-op.on{color:var(--acc);border-bottom-color:var(--acc);background:none}
.b-coffee.v-luxe .cf-opts{gap:2px 22px}
.b-coffee.v-luxe .cf-lbl{letter-spacing:.3em;font-size:9.5px;color:var(--acc);font-weight:500}
.b-coffee.v-luxe .cf-ord .cf-side,.b-coffee.v-luxe .cf-res,.b-coffee.v-luxe .cf-bean,.b-coffee.v-luxe .cf-stamp .cf-why div,.b-coffee.v-luxe .cf-done,.b-coffee.v-luxe .cf-bean-peek{background:transparent;border:1px solid color-mix(in srgb,var(--acc) 50%,transparent);border-radius:0}
.b-coffee.v-luxe .cf-bean.on{border-color:var(--acc);background:color-mix(in srgb,var(--acc) 8%,transparent)}
.b-coffee.v-luxe .cf-slots button{background:transparent;border:1px solid var(--line2);border-radius:0;font-family:var(--hf);font-weight:400;font-size:14px}
.b-coffee.v-luxe .cf-slots button.on{border-color:var(--acc);color:var(--acc)}
.b-coffee.v-luxe .cf-res b,.b-coffee.v-luxe .cf-sum>div b,.b-coffee.v-luxe .cf-detail h3{font-style:italic}
.b-coffee.v-luxe .cf-bld .cf-pic,.b-coffee.v-luxe .cf-sp .cf-big,.b-coffee.v-luxe .cf-sp .cf-cells>div,.b-coffee.v-luxe .cf-hrs .cf-map,.b-coffee.v-luxe .cf-ln .cf-th{border-radius:0}
.b-coffee.v-luxe .cf-bld .cf-pic img,.b-coffee.v-luxe .cf-sp img{filter:saturate(.8)}
.b-coffee.v-luxe .cf-stamp .cf-card{background:transparent;border:1px solid var(--acc);color:var(--ink);box-shadow:none}
.b-coffee.v-luxe .cf-stamp .cf-dots i{border-color:var(--line2)}
.b-coffee.v-luxe .cf-add{background:transparent;border:1px solid var(--acc);color:var(--acc);border-radius:0;font-weight:400}
.b-coffee.v-luxe .cf-qty button{border-radius:0;background:transparent;border:1px solid var(--line2)}
.b-coffee.v-luxe .cf-mn-lux .cf-add{margin-left:10px}
/* calm section treatments */
.b-coffee.v-calm .cf-sh{flex-direction:column;align-items:center;text-align:center}
.b-coffee.v-calm .cf-sh p{margin-inline:auto}
.b-coffee.v-calm .cf-tabs{justify-content:center;background:var(--soft);border-radius:18px;padding:4px;display:inline-flex;margin:0 auto 18px;position:relative;left:50%;transform:translateX(-50%)}
.b-coffee.v-calm .cf-tb{background:none;color:var(--mut);border-radius:14px}
.b-coffee.v-calm .cf-tb.on{background:var(--bg);color:var(--ink);box-shadow:0 2px 8px -3px rgba(0,0,0,.18)}
.b-coffee.v-calm .cf-opts{display:inline-flex;background:var(--soft);border-radius:16px;padding:3px;gap:2px}
.b-coffee.v-calm .cf-op{background:none;color:var(--mut);border-radius:12px;padding:7px 12px}
.b-coffee.v-calm .cf-op.on{background:var(--bg);color:var(--ink);box-shadow:0 2px 8px -3px rgba(0,0,0,.18)}
.b-coffee.v-calm .cf-bld .cf-pic{border-radius:200px 200px 26px 26px}

/* ================= phone frame ================= */
@container mock (max-width:560px){
  .b-coffee .cf-nv{padding:46px 18px 12px;gap:10px}
  .b-coffee .cf-nv nav{display:none}
  .b-coffee.v-luxe .cf-nv{grid-template-columns:1fr auto}
  .b-coffee.v-luxe .cf-nv nav{display:none}
  .b-coffee .cf-topline{display:none}
  .b-coffee.v-calm .cf-nv{display:flex}.b-coffee.v-calm .cf-nv nav.cf-r{display:flex}.b-coffee.v-calm .cf-nv nav.cf-r a{display:none}
  .b-coffee .cf-sec{padding:28px 18px}
  .b-coffee.v-luxe .cf-sec{padding:34px 20px}
  .b-coffee .cf-hero-calm,.b-coffee .cf-hero-playful,.b-coffee .cf-hero-natural,.b-coffee .cf-hero-minimal,.b-coffee .cf-hero-edgy{padding-left:18px;padding-right:18px}
  .b-coffee .cf-hero-playful,.b-coffee .cf-hero-natural,.b-coffee .cf-hero-minimal .cf-grid,.b-coffee .cf-hero-edgy .cf-row,.b-coffee .cf-ord,.b-coffee .cf-bld,.b-coffee .cf-bn,.b-coffee .cf-stamp,.b-coffee .cf-sp,.b-coffee .cf-hrs{grid-template-columns:1fr}
  .b-coffee .cf-hero-playful .cf-stack,.b-coffee .cf-hero-natural .cf-blob{order:-1}
  .b-coffee .cf-hero-luxe{min-height:440px}.b-coffee .cf-hero-luxe .cf-in{padding:30px 18px}.b-coffee .cf-hero-luxe .cf-side{display:none}
  .b-coffee .cf-mn-cards,.b-coffee .cf-mn-tiles{grid-template-columns:1fr 1fr}
  .b-coffee .cf-mn-tiles{gap:14px 10px}
  .b-coffee .cf-mn-table .cf-d{display:none}
  .b-coffee .cf-mn-rows>div{grid-template-columns:48px 1fr auto}
  .b-coffee .cf-mn-rows .cf-add{grid-column:3;grid-row:2}
  .b-coffee .cf-mn-lux u{display:none}
  .b-coffee .cf-sp .cf-cells{grid-template-rows:auto}
  .b-coffee .cf-stamp .cf-dots{gap:4px}
  .b-coffee .cf-foot{padding:18px;flex-direction:column}
}

/* phone refinements */
.b-coffee .cf-sh .cf-ix{white-space:nowrap}
@container mock (max-width:560px){
  .b-coffee .cf-mn-cards{grid-template-columns:1fr}
  .b-coffee.v-luxe .nv .cf-lg,.b-coffee.v-luxe .cf-nv .cf-lg{letter-spacing:.2em;font-size:16px}
  .b-coffee.v-luxe .cf-nv .cf-btn{padding:9px 12px;letter-spacing:.1em}
  .b-coffee.v-calm .cf-nv{justify-content:space-between}
  .b-coffee .cf-mn-rows>div{grid-template-columns:48px 1fr 72px}
  .b-coffee .cf-mn-rows em{grid-row:1;grid-column:3;font-size:16px;text-align:right}
  .b-coffee .cf-mn-rows .cf-add{grid-row:2;grid-column:3;justify-self:end}
  .b-coffee .cf-mn-rows b{font-size:20px}
  .b-coffee .cf-hero-edgy .cf-strip b,.b-coffee .cf-hero-edgy .cf-strip em{font-size:13px}
  .b-coffee .cf-hero-edgy .cf-strip b{bottom:24px}
  .b-coffee .cf-hero-edgy h1{font-size:clamp(44px,15cqi,70px)}
}
