/* Identitas contoh: Kopi Bukit. Dipakai Basic, UMKM, dan Custom.
   Alasan tiap pilihan ada di contoh/README.md. */
:root{
  --paper:#faf3e6; --paper-2:#f2e8d5; --paper-3:#e7dac2;
  --ink:#241a12; --ink-70:#5b4a3a; --moss:#38452f; --terra:#a8410f;
  --line:#d9cab0; --line-strong:#b9a689;
  --f-display:"Fraunces",Georgia,"Times New Roman",serif;
  --f-body:"Karla",system-ui,-apple-system,sans-serif;
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --s6:32px; --s7:48px; --s8:64px; --s9:96px;
  --gutter:20px; --max:1080px;
  --ease:cubic-bezier(.22,1,.36,1);
}
@media (min-width:768px){:root{--gutter:40px}}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;border-radius:0}
html{scroll-behavior:smooth}
body{background:var(--paper);color:var(--ink);font:400 17px/1.65 var(--f-body);-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;height:auto;display:block}
/* kelas seperti .cart .total memasang display:grid/flex, dan itu mengalahkan
   display:none bawaan [hidden]. Tanpa aturan ini, panel yang seharusnya
   tersembunyi tetap tampil (keranjang kosong tapi total dan formulir muncul). */
[hidden]{display:none!important}
a{color:inherit}
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--gutter)}
.skip{position:absolute;left:var(--gutter);top:-80px;z-index:90;background:var(--ink);color:var(--paper);padding:12px 16px;text-decoration:none;min-height:44px;display:inline-flex;align-items:center}
.skip:focus{top:12px}
:focus-visible{outline:3px solid var(--terra);outline-offset:3px}

h1,h2,h3{font-family:var(--f-display);font-weight:600;line-height:1.08;letter-spacing:-.015em}
h1{font-size:clamp(36px,7vw,64px)}
h2{font-size:clamp(26px,3.6vw,40px)}
h3{font-size:clamp(19px,1.8vw,22px);line-height:1.2}
.lead{font-size:clamp(17px,1.4vw,19px);line-height:1.6;color:var(--ink-70);max-width:46ch}
.eyebrow{font:700 12px/1.4 var(--f-body);letter-spacing:.18em;text-transform:uppercase;color:var(--terra)}
.muted{color:var(--ink-70)}

/* tombol: satu bentuk, dua bobot. Sudut kotak supaya terbaca seperti papan menu,
   bukan pil. Aksen terra hanya di aksi utama. */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);min-height:48px;padding:0 22px;
  font:700 16px/1 var(--f-body);letter-spacing:.01em;text-decoration:none;border:2px solid var(--ink);
  background:transparent;color:var(--ink);cursor:pointer;transition:transform 140ms var(--ease),background-color 140ms}
.btn:hover{transform:translateY(-2px)}
.btn:active{transform:translateY(0)}
.btn-solid{background:var(--terra);border-color:var(--terra);color:var(--paper)}
.btn-solid:hover{background:#8f370c;border-color:#8f370c}
.btn-ink{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.btn-ink:hover{background:#3a2a1e;border-color:#3a2a1e}
.btn-sm{min-height:44px;padding:0 16px;font-size:15px}

/* bilah contoh: bukan bagian desain klien. Menjelaskan bahwa halaman ini contoh. */
.demo-bar{background:var(--ink);color:var(--paper);font:400 13px/1.5 var(--f-body)}
.demo-bar .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s4);padding-top:10px;padding-bottom:10px}
.demo-bar b{font-weight:700;letter-spacing:.14em;text-transform:uppercase;font-size:11px;color:#ffb98f}
.demo-bar span{color:#d9cbb6}
.demo-bar a{color:var(--paper);text-decoration:none;border-bottom:1px solid #8a7a67;display:inline-flex;align-items:center;min-height:44px}
.demo-bar a:hover{border-bottom-color:#ffb98f}

/* header klien */
.site-head{border-bottom:1px solid var(--line-strong);position:sticky;top:0;z-index:40;background:var(--paper)}
.site-head .wrap{display:flex;align-items:center;justify-content:space-between;gap:var(--s4);min-height:64px}
.logo{display:inline-flex;align-items:baseline;gap:8px;text-decoration:none;min-height:44px;align-content:center;flex-wrap:wrap}
.logo b{font:600 21px/1 var(--f-display);letter-spacing:-.02em}
.logo span{font:700 10px/1 var(--f-body);letter-spacing:.16em;text-transform:uppercase;color:var(--terra)}
.site-nav{display:none;gap:var(--s5);align-items:center}
@media (min-width:820px){.site-nav{display:flex}}
.site-nav a{display:inline-flex;align-items:center;min-height:44px;font-weight:700;font-size:15px;text-decoration:none;border-bottom:2px solid transparent}
.site-nav a:hover,.site-nav a[aria-current="page"]{border-bottom-color:var(--terra)}
.head-cta{display:none}
@media (min-width:820px){.head-cta{display:inline-flex}}
/* menu HP tanpa JS: <details>, supaya tetap jalan walau skrip gagal */
.menu-mob{position:relative}
@media (min-width:820px){.menu-mob{display:none}}
.menu-mob summary{list-style:none;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;border:2px solid var(--ink);cursor:pointer;font:700 14px/1 var(--f-body)}
.menu-mob summary::-webkit-details-marker{display:none}
.menu-mob summary::after{content:"";width:10px;height:10px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-2px) rotate(45deg)}
.menu-mob[open] summary::after{transform:translateY(2px) rotate(-135deg)}
.menu-mob nav{position:absolute;right:0;top:calc(100% + 8px);min-width:210px;background:var(--paper);border:2px solid var(--ink);display:grid;box-shadow:6px 6px 0 var(--paper-3);z-index:50}
.menu-mob nav a{display:flex;align-items:center;min-height:48px;padding:0 16px;text-decoration:none;font-weight:700;border-bottom:1px solid var(--line)}
.menu-mob nav a:last-child{border-bottom:none}
.menu-mob nav a:hover{background:var(--paper-2)}

/* seksi: ritme berganti antara kertas dan blok tinta, bukan kartu seragam */
.sec{padding:clamp(48px,7vw,88px) 0}
.sec-paper2{background:var(--paper-2)}
.sec-ink{background:var(--ink);color:var(--paper)}
.sec-ink .lead,.sec-ink .muted{color:#d9cbb6}
.sec-ink .eyebrow{color:#ffb98f}
.sec-head{display:grid;gap:var(--s3);margin-bottom:clamp(24px,4vw,40px)}
.rule{border:0;border-top:1px solid var(--line-strong);margin:0}
.sec-ink .rule{border-top-color:#4a3a2d}

/* motif identitas: semua daftar (menu, jam buka, keranjang) memakai baris garis
   rambut dengan nama di kiri dan angka di kanan, seperti papan menu kedai. */
.menu-list{list-style:none;display:grid;gap:0}
.menu-list li{display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:4px var(--s3);padding:var(--s4) 0;border-bottom:1px solid var(--line)}
.menu-list .nm{font:600 19px/1.3 var(--f-display)}
.menu-list .pr{font:700 17px/1.3 var(--f-body);white-space:nowrap}
.menu-list .ds{grid-column:1/-1;font-size:15px;color:var(--ink-70);max-width:52ch}
.menu-list .tag{grid-column:1/-1;font:700 11px/1.4 var(--f-body);letter-spacing:.14em;text-transform:uppercase;color:var(--terra)}
.sec-ink .menu-list li{border-bottom-color:#4a3a2d}
.sec-ink .menu-list .ds{color:#d9cbb6}

/* papan jam & lokasi */
.facts{display:grid;gap:0;border-top:1px solid var(--line-strong)}
.facts div{display:grid;grid-template-columns:1fr;gap:2px;padding:var(--s4) 0;border-bottom:1px solid var(--line)}
@media (min-width:640px){.facts div{grid-template-columns:200px 1fr;gap:var(--s4);align-items:baseline}}
.facts dt,.facts .k{font:700 11px/1.6 var(--f-body);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-70)}
.facts .v{font:600 18px/1.4 var(--f-display)}
.sec-ink .facts{border-top-color:#4a3a2d}
.sec-ink .facts div{border-bottom-color:#4a3a2d}
.sec-ink .facts .k{color:#d9cbb6}

/* catatan kaki contoh */
.foot{border-top:1px solid var(--line-strong);padding:var(--s7) 0 var(--s8);font-size:15px;color:var(--ink-70)}
.foot .wrap{display:grid;gap:var(--s4)}
.foot b{color:var(--ink);font-weight:700}
.foot a{display:inline-flex;align-items:center;min-height:44px}
.foot-links{display:flex;flex-wrap:wrap;gap:0 var(--s5)}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}
