:root { --navy:#06294d; --blue:#073a6a; --sky:#8ed3ef; --ink:#102d46; --muted:#61788d; --line:#dce6ed; --surface:#fff; --canvas:#f1f3f4; --cream:#fbfaf6; --orange:#ee9f36; --danger:#e84e53; }
 * { box-sizing:border-box; }
 html { background:var(--canvas); }
 body { margin:0; color:var(--ink); background:var(--canvas); font-family:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-size:16px; }
 button, input { font:inherit; }
 button { cursor:pointer; }
 .customer-app { width:min(100%, 760px); min-height:100vh; margin:0 auto; padding:0 20px 130px; background:var(--cream); }
 .customer-header { height:82px; display:flex; align-items:center; justify-content:space-between; gap:18px; }
 .customer-brand { display:block; width:132px; height:44px; overflow:hidden; border-radius:8px; background:var(--navy); }
 .customer-brand img { display:block; width:100%; height:100%; object-fit:cover; object-position:center; }
 .header-actions { display:flex; align-items:center; gap:8px; }
 .header-icon, .help-link, .table-banner button { border:0; background:transparent; color:var(--blue); font-weight:750; }
 .header-icon { width:42px; height:42px; border:1px solid var(--line); border-radius:50%; font-size:22px; }
 .help-link { padding:10px 4px; }
 .table-banner { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 14px; color:#dceefa; background:linear-gradient(120deg,var(--navy),#0c4d87); border-radius:14px; box-shadow:0 10px 22px rgba(6,41,77,.12); }
 .table-banner div { display:grid; grid-template-columns:auto 1fr; gap:1px 8px; align-items:center; }
 .live-dot { width:8px; height:8px; grid-row:span 2; border-radius:50%; background:#8ad6a2; box-shadow:0 0 0 4px rgba(138,214,162,.16); }
 .table-banner span:not(.live-dot) { font-size:14px; font-weight:750; }
 .table-banner small { color:#bdd7e9; font-size:12px; }
 .table-banner button { padding:7px 8px; color:#fff; border:1px solid rgba(255,255,255,.35); border-radius:8px; font-size:13px; }
 .menu-hero { padding:30px 4px 19px; }
 .eyebrow { margin:0; color:#6385a0; font-size:12px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
 .menu-hero h1 { margin:7px 0 9px; color:var(--navy); font-size:clamp(28px,7vw,42px); letter-spacing:-.055em; line-height:1; }
 .menu-hero p:not(.eyebrow) { max-width:470px; margin:0; color:var(--muted); font-size:15px; line-height:1.55; }
 .customer-categories { display:flex; gap:9px; padding:4px 0 18px; overflow-x:auto; scrollbar-width:none; }
 .customer-categories::-webkit-scrollbar { display:none; }
 .customer-categories button { flex:0 0 auto; padding:10px 15px; color:#42627a; border:1px solid var(--line); border-radius:999px; background:#fff; font-size:14px; font-weight:750; }
 .customer-categories button.active { color:#fff; border-color:var(--blue); background:var(--blue); box-shadow:0 7px 16px rgba(7,58,106,.17); }
.customer-menu { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:13px; }
.customer-product { position:relative; min-width:0; padding:13px; overflow:hidden; text-align:left; color:var(--ink); border:1px solid #e4e9ed; border-radius:18px; background:#fff; box-shadow:0 5px 12px rgba(12,40,62,.05); transition:transform .16s ease, box-shadow .16s ease; }
.customer-product:hover { transform:translateY(-2px); box-shadow:0 12px 24px rgba(12,40,62,.1); }
.customer-product:active { transform:scale(.985); }
.product-media { position:relative; display:block; margin-bottom:9px; }
.customer-product .customer-photo { display:block; width:100%; aspect-ratio:1/1; margin:0; background-color:#f1f2f2; background-repeat:no-repeat; background-size:400% 400%; }
 .customer-product .customer-photo.house-0, .customer-product .customer-photo.house-1, .customer-product .customer-photo.house-2, .customer-product .customer-photo.house-3 { background-size:200% 200%; }
 .sprite { background-repeat:no-repeat; background-color:#f1f2f2; }
.legacy-0,.legacy-1,.legacy-2,.legacy-3,.legacy-4,.legacy-5,.legacy-6,.legacy-7,.legacy-8,.legacy-9,.legacy-10,.legacy-11,.legacy-12,.legacy-13 { background-image:url("assets/legacy-cups-sprite.png"); background-size:400% 400%; }
.legacy-0{background-position:0% 0%;}
.legacy-1{background-position:33.333% 0%;}
.legacy-2{background-position:66.667% 0%;}
.legacy-3{background-position:100% 0%;}
.legacy-4{background-position:0% 33.333%;}
.legacy-5{background-position:33.333% 33.333%;}
.legacy-6{background-position:66.667% 33.333%;}
.legacy-7{background-position:100% 33.333%;}
.legacy-8{background-position:0% 66.667%;}
.legacy-9{background-position:33.333% 66.667%;}
.legacy-10{background-position:66.667% 66.667%;}
.legacy-11{background-position:100% 66.667%;}
.legacy-12{background-position:0% 100%;}
.legacy-13{background-position:33.333% 100%;}
.house-0,.house-1,.house-2,.house-3 { background-image:url("assets/house-blend-cups-sprite.png"); background-size:200% 200%; }
.house-0{background-position:0% 0%;}
.house-1{background-position:100% 0%;}
.house-2{background-position:0% 100%;}
.house-3{background-position:100% 100%;}
.customer-product .product-tag { position:relative; display:table; max-width:92%; margin:-4px 0 0 auto; padding:5px 7px; overflow:hidden; color:#8d5214; border-radius:999px; background:#fff2d8; font-size:10px; font-weight:800; white-space:nowrap; text-overflow:ellipsis; }
.customer-product .menu-star { position:absolute; top:8px; left:8px; display:inline-flex; align-items:center; gap:3px; max-width:calc(100% - 16px); padding:5px 7px; color:#fff; border-radius:999px; background:#0b5a9f; box-shadow:0 4px 10px rgba(1,43,79,.2); font-size:10px; font-weight:850; line-height:1; }
.customer-product .menu-star b { overflow:hidden; font-size:10px; white-space:nowrap; text-overflow:ellipsis; }
.customer-product .menu-star.recommended { color:#6d4600; background:#ffe4a8; }
 .customer-product small { display:block; overflow:hidden; color:#758a9c; font-size:11px; font-weight:700; white-space:nowrap; text-overflow:ellipsis; }
 .customer-product strong { display:block; min-height:40px; margin-top:4px; color:#143450; font-size:15px; line-height:1.25; }
 .customer-product .product-price { margin-top:7px; min-height:0; color:#063a6a; font-size:14px; }
 .customer-cart-bar { position:fixed; z-index:20; right:max(16px,calc((100vw - 728px)/2)); bottom:16px; left:max(16px,calc((100vw - 728px)/2)); display:flex; align-items:center; gap:11px; min-height:68px; padding:11px 14px; color:#fff; border:0; border-radius:17px; background:linear-gradient(115deg,#063a6a,#095798); box-shadow:0 16px 35px rgba(2,34,67,.29); text-align:left; }
 .cart-bag { position:relative; display:grid; width:36px; height:36px; place-items:center; color:#063a6a; border-radius:12px; background:#a9ddf3; font-size:22px; }
 .cart-bag b { position:absolute; right:-5px; top:-6px; display:grid; width:18px; height:18px; place-items:center; color:#fff; border:2px solid #073a6a; border-radius:50%; background:#ed9a32; font-size:10px; }
 .customer-cart-bar small,.customer-cart-bar strong { display:block; }
.customer-cart-bar small { color:#b9d9eb; font-size:11px; }
.customer-cart-bar strong:not(#cart-bar-total) { font-size:14px; }
.customer-cart-bar #cart-bar-total { margin-left:auto; font-size:16px; }
.arrow { font-size:28px; line-height:1; }
.customer-backdrop { position:fixed; z-index:29; inset:0; background:rgba(1,25,48,.48); }
.customer-cart-sheet { position:fixed; z-index:30; right:0; bottom:0; left:0; display:flex; flex-direction:column; width:min(100%,760px); height:min(83dvh,760px); margin:0 auto; overflow:hidden; border-radius:24px 24px 0 0; background:#fff; box-shadow:0 -12px 38px rgba(2,25,48,.26); transform:translateY(105%); transition:transform .25s ease; }
.customer-cart-sheet.open { transform:translateY(0); }
.sheet-head { display:flex; align-items:center; gap:13px; padding:18px 20px 15px; border-bottom:1px solid var(--line); }
.sheet-head h2 { margin:3px 0 0; font-size:21px; }
.sheet-close { flex:0 0 auto; width:35px; height:35px; color:var(--navy); border:1px solid var(--line); border-radius:50%; background:#fff; font-size:25px; line-height:1; }
.customer-cart-items { flex:1; padding:4px 20px; overflow:auto; }
.customer-cart-item { display:grid; grid-template-columns:57px minmax(0,1fr) auto; gap:12px; align-items:center; padding:14px 0; border-bottom:1px solid #edf1f3; }
.customer-cart-item .thumb { width:57px; aspect-ratio:1; background-size:400% 400%; }
.customer-cart-item .thumb.house-0,.customer-cart-item .thumb.house-1,.customer-cart-item .thumb.house-2,.customer-cart-item .thumb.house-3 { background-size:200% 200%; }
.customer-cart-item strong,.customer-cart-item small { display:block; }
.customer-cart-item strong { font-size:14px; }
.customer-cart-item small { margin-top:3px; color:var(--muted); font-size:11px; line-height:1.3; }
.cart-item-side { text-align:right; }
.cart-item-side > strong { margin-bottom:7px; color:var(--blue); font-size:13px; }
.cart-quantity { display:flex; align-items:center; justify-content:flex-end; gap:9px; }
.cart-quantity button { width:25px; height:25px; color:var(--blue); border:1px solid #cbdce6; border-radius:8px; background:#fff; font-weight:800; }
.cart-quantity span { min-width:12px; font-size:13px; font-weight:750; text-align:center; }
.customer-empty { padding:60px 20px; color:var(--muted); text-align:center; }
.customer-empty span,.customer-empty strong,.customer-empty p { display:block; }
.customer-empty span { margin-bottom:9px; font-size:31px; }
.customer-empty strong { color:#31506a; }
.customer-empty p { margin:6px 0; font-size:13px; }
.customer-cart-footer { padding:14px 20px 19px; border-top:1px solid var(--line); background:#fff; }
.order-note { display:grid; grid-template-columns:auto 1fr; align-items:center; gap:10px; padding:9px 10px; color:#6e879b; border:1px solid var(--line); border-radius:9px; font-size:12px; }
.order-note input,.member-field input { width:100%; min-width:0; color:var(--ink); border:0; outline:0; background:transparent; }
.customer-totals { margin:13px 0; }
.customer-totals div { display:flex; justify-content:space-between; padding:4px 0; color:#61778a; font-size:13px; }
.customer-totals dd { margin:0; font-weight:700; }
.customer-totals .customer-grand { margin-top:6px; padding-top:11px; color:var(--navy); border-top:1px solid var(--line); font-size:17px; font-weight:800; }
.customer-primary { display:flex; align-items:center; justify-content:space-between; width:100%; min-height:52px; padding:0 17px; color:#fff; border:0; border-radius:12px; background:linear-gradient(110deg,#073a6a,#0b5a9f); box-shadow:0 9px 18px rgba(7,58,106,.18); font-weight:800; }
.customer-primary:disabled { cursor:not-allowed; opacity:.45; box-shadow:none; }
.customer-primary span { font-size:20px; }
.customer-dialog { width:min(100% - 30px,570px); max-height:min(90dvh,850px); padding:22px; overflow:auto; color:var(--ink); border:0; border-radius:20px; background:#fff; box-shadow:0 24px 60px rgba(1,25,48,.3); }
.customer-dialog::backdrop { background:rgba(1,25,48,.48); }
.dialog-close { float:right; display:grid; width:35px; height:35px; place-items:center; color:var(--navy); border:1px solid var(--line); border-radius:50%; background:#fff; font-size:25px; line-height:1; }
.product-dialog-top { display:grid; grid-template-columns:132px minmax(0,1fr); gap:17px; align-items:center; clear:both; padding:10px 0 17px; }
.dialog-product-photo { width:132px; aspect-ratio:1; background-size:400% 400%; }
.dialog-product-photo.house-0,.dialog-product-photo.house-1,.dialog-product-photo.house-2,.dialog-product-photo.house-3 { background-size:200% 200%; }
.product-dialog-top h2,.customer-dialog h2 { margin:5px 0; color:var(--navy); letter-spacing:-.035em; }
.product-dialog-top p:not(.eyebrow) { margin:0 0 9px; color:var(--muted); font-size:13px; line-height:1.45; }
.product-dialog-top strong { color:#063a6a; }
.modifier-section { padding:15px 0; border-top:1px solid var(--line); }
.modifier-section h3 { margin:0 0 10px; color:#183d58; font-size:15px; }
.choice-grid { display:grid; gap:7px; }
.choice-grid.five { grid-template-columns:repeat(5,1fr); }
.choice-grid.three { grid-template-columns:repeat(3,1fr); }
.choice-grid label { position:relative; display:grid; place-items:center; min-height:39px; padding:5px; color:#557187; border:1px solid var(--line); border-radius:9px; background:#fff; font-size:12px; font-weight:750; text-align:center; }
.choice-grid input { position:absolute; opacity:0; }
.choice-grid label:has(input:checked) { color:#fff; border-color:var(--blue); background:var(--blue); }
.addon-list { display:grid; gap:8px; }
.addon-list label { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 11px; border:1px solid var(--line); border-radius:9px; color:#45647b; font-size:13px; }
.addon-list b { color:var(--blue); white-space:nowrap; }
.addon-list input { accent-color:var(--blue); }
.payment-dialog h2 { clear:both; }
.payment-order-line { display:flex; justify-content:space-between; gap:12px; padding:12px 0 15px; color:#678096; border-bottom:1px solid var(--line); font-size:13px; }
.payment-order-line strong { color:var(--navy); font-size:17px; }
.member-field { display:block; padding:14px 0 8px; color:#507087; font-size:13px; font-weight:700; }
.member-field input { display:block; margin-top:7px; padding:11px 12px; border:1px solid var(--line); border-radius:9px; }
.point-toggle { display:flex; align-items:center; justify-content:space-between; gap:8px; margin:7px 0 15px; padding:10px 11px; color:#345a75; border-radius:9px; background:#eff8fc; font-size:13px; }
.point-toggle input { accent-color:var(--blue); }
.point-toggle b { color:#0f6497; }
.payment-methods { display:grid; gap:8px; }
.payment-methods label { display:grid; grid-template-columns:34px minmax(0,1fr) auto; gap:10px; align-items:center; min-height:66px; padding:10px; color:#4e6b82; border:1px solid var(--line); border-radius:11px; }
.payment-methods label.active { border-color:#62b8df; background:#f1faff; box-shadow:inset 0 0 0 1px #bce3f4; }
.payment-methods input { position:absolute; opacity:0; }
.payment-method-icon { display:grid; width:34px; height:34px; place-items:center; color:#063a6a; border-radius:9px; background:#dceefa; font-size:18px; }
.payment-methods b,.payment-methods small { display:block; }
.payment-methods b { color:#234861; font-size:14px; }
.payment-methods small { margin-top:2px; font-size:11px; }
.payment-methods i { display:none; color:#fff; font-style:normal; }
.payment-methods label.active i { display:grid; width:19px; height:19px; place-items:center; border-radius:50%; background:#0b7d53; font-size:12px; }
.qris-panel { display:flex; align-items:center; gap:15px; margin:15px 0; padding:13px; border:1px dashed #88bed7; border-radius:13px; background:#f2faff; }
.qris-art { position:relative; flex:0 0 96px; width:96px; aspect-ratio:1; overflow:hidden; background:repeating-linear-gradient(90deg,#0d304c 0 7px,transparent 7px 12px),repeating-linear-gradient(#0d304c 0 7px,transparent 7px 12px),#fff; background-blend-mode:multiply; border:7px solid #fff; box-shadow:0 0 0 1px #cedee7; }
.qr-corner { position:absolute; z-index:1; width:28px; height:28px; border:6px solid #0b2e49; background:#fff; }
.qr-corner::after { content:""; position:absolute; inset:5px; background:#0b2e49; }
.qr-corner.one{top:0;left:0;}
.qr-corner.two{top:0;right:0;}
.qr-corner.three{bottom:0;left:0;}
.qr-bits { position:absolute; right:8px; bottom:9px; width:25px; height:25px; background:linear-gradient(90deg,#0b2e49 45%,transparent 45% 60%,#0b2e49 60%),linear-gradient(#0b2e49 45%,transparent 45% 60%,#0b2e49 60%); }
.qris-panel strong,.qris-panel small { display:block; }
.qris-panel strong { margin:4px 0; color:var(--navy); font-size:20px; }
.qris-panel small { color:#5d7a8e; font-size:11px; line-height:1.4; }
.payment-note { margin:0 0 13px; color:#71899a; font-size:12px; line-height:1.5; }
.qr-dialog { max-width:390px; text-align:center; }
.qr-dialog h2 { margin-top:7px; }
.qr-dialog p:not(.eyebrow) { color:var(--muted); line-height:1.5; }
.menu-qr-image { display:block; width:220px; max-width:80%; min-height:220px; margin:20px auto 13px; image-rendering:pixelated; border:8px solid #fff; box-shadow:0 5px 20px rgba(5,41,72,.12); }
.qr-dialog code { display:block; padding:10px; overflow:hidden; color:#48647a; border-radius:8px; background:#f0f5f7; font-size:11px; overflow-wrap:anywhere; }
.secondary-action { width:100%; margin-top:11px; min-height:44px; color:var(--blue); border:1px solid #a7cae0; border-radius:10px; background:#fff; font-weight:800; }
.order-status { max-width:440px; padding:30px 25px; text-align:center; }
.status-orb { display:grid; width:65px; height:65px; place-items:center; margin:0 auto 14px; color:#fff; border-radius:50%; background:#0c9b65; box-shadow:0 9px 20px rgba(12,155,101,.2); font-size:28px; }
.order-status h2 { margin-top:5px; }
.order-status > p:not(.eyebrow) { margin:10px auto 21px; color:var(--muted); line-height:1.55; }
.order-timeline { display:grid; gap:0; margin:0 0 21px; text-align:left; }
.order-timeline div { position:relative; display:grid; grid-template-columns:30px 1fr; gap:0 10px; min-height:55px; }
.order-timeline div:not(:last-child)::before { content:""; position:absolute; left:14px; top:29px; bottom:0; width:2px; background:#dce7ec; }
.order-timeline i { z-index:1; display:grid; width:30px; height:30px; place-items:center; grid-row:span 2; color:#6d8698; border-radius:50%; background:#e5edf1; font-size:12px; font-style:normal; font-weight:800; }
.order-timeline .complete i { color:#fff; background:#0c9b65; }
.order-timeline .current i { color:#fff; background:#0e76b9; }
.order-timeline span { color:#254761; font-size:13px; font-weight:800; }
.order-timeline small { color:#758b9c; font-size:11px; }
.customer-toast { position:fixed; z-index:50; top:18px; left:50%; max-width:calc(100vw - 32px); padding:11px 15px; color:#fff; border-radius:10px; background:#073a6a; box-shadow:0 9px 23px rgba(2,33,62,.22); font-size:13px; font-weight:700; opacity:0; pointer-events:none; transform:translate(-50%,-10px); transition:.2s ease; }
.customer-toast.show { opacity:1; transform:translate(-50%,0); }
 @media (min-width:761px) { body { background:linear-gradient(135deg,#e8eef1,#f8f8f5 46%,#dbe8ee); }
.customer-app { box-shadow:0 0 40px rgba(3,31,55,.12); }
.customer-cart-bar { width:calc(min(100%,760px) - 40px); left:50%; right:auto; transform:translateX(-50%); }
 }
 @media (max-width:410px) { .customer-app { padding-right:14px; padding-left:14px; }
.customer-header { height:72px; }
.customer-brand { width:118px; height:40px; }
.customer-menu { gap:10px; }
.customer-product { padding:10px; border-radius:14px; }
.customer-product strong { min-height:36px; font-size:14px; }
.choice-grid.five { gap:4px; }
.choice-grid label { font-size:11px; }
.customer-dialog { padding:18px; }
.product-dialog-top { grid-template-columns:106px minmax(0,1fr); gap:13px; }
.dialog-product-photo { width:106px; }
.qris-art { flex-basis:82px; width:82px; }
 }
 @media (min-width:600px) { .customer-menu { grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.customer-product { padding:15px; }
.customer-cart-sheet { border-radius:24px; bottom:24px; max-width:600px; height:min(760px,82dvh); }
 }
