/* RestoLand Theme SDK v1 core UI (cart, drawers, waiter view). Themes restyle via --rl-* variables. */
:root{--rl-primary:#9a3412;--rl-background:#fffaf5;--rl-text:#1c1917;--rl-surface:#ffffff;--rl-muted:#57534e;--rl-border:#e7e5e4;--rl-radius:14px;--rl-on-primary:#ffffff;--rl-warn:#92400e;--rl-font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}
html{scroll-behavior:smooth}
html.rl-locked,html.rl-locked body{overflow:hidden}
[data-rl-category]{scroll-margin-top:var(--rl-sticky-offset,72px)}
[data-rl-category-tabs] [data-rl-category]{scroll-margin:0}
[hidden]{display:none!important}
.rl-live,.rl-sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.rl-add{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;padding:0 16px;border:0;border-radius:999px;background:var(--rl-primary);color:var(--rl-on-primary);font:600 15px/1 var(--rl-font-family);cursor:pointer;transition:transform .15s ease}
.rl-add:focus-visible,.rl-btn:focus-visible,.rl-icon-btn:focus-visible,.rl-qty__btn:focus-visible,.rl-cartbar:focus-visible,.rl-line__remove:focus-visible{outline:3px solid var(--rl-text);outline-offset:2px}
.rl-add.rl-added{transform:scale(1.08)}
.rl-add.is-sold-out,.rl-add[disabled]{background:var(--rl-border);color:var(--rl-muted);cursor:not-allowed}
.rl-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 18px;border-radius:var(--rl-radius);border:1px solid transparent;font:600 16px/1.2 var(--rl-font-family);cursor:pointer}
.rl-btn--primary{background:var(--rl-primary);color:var(--rl-on-primary)}
.rl-btn--primary[disabled]{background:var(--rl-border);color:var(--rl-muted)}
.rl-btn--ghost{background:transparent;color:var(--rl-text);border-color:var(--rl-control-border,var(--rl-border))}
.rl-icon-btn{width:44px;height:44px;border:0;border-radius:999px;background:transparent;color:var(--rl-text);font-size:28px;line-height:1;cursor:pointer}
.rl-cartbar{position:fixed;z-index:40;left:var(--rl-cartbar-left,var(--rl-cartbar-inset-inline,12px));right:var(--rl-cartbar-right,var(--rl-cartbar-inset-inline,12px));bottom:var(--rl-cartbar-bottom,max(12px,env(safe-area-inset-bottom)));display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:56px;padding:0 18px;border:0;border-radius:var(--rl-radius);background:var(--rl-primary);color:var(--rl-on-primary);font:600 16px/1.2 var(--rl-font-family);box-shadow:0 10px 30px rgba(0,0,0,.25);cursor:pointer;max-width:640px;margin:0 auto}
.rl-backdrop{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.45)}
.rl-drawer{position:fixed;z-index:60;left:0;right:0;bottom:0;max-height:88vh;display:flex;flex-direction:column;background:var(--rl-surface);color:var(--rl-text);border-radius:var(--rl-radius) var(--rl-radius) 0 0;box-shadow:0 -10px 40px rgba(0,0,0,.25);font-family:var(--rl-font-family);max-width:640px;margin:0 auto;animation:rl-up .2s ease-out}
.rl-drawer:focus{outline:none}
.rl-drawer__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 12px 8px 20px;border-bottom:1px solid var(--rl-border)}
.rl-drawer__title{margin:0;min-width:0;font-size:20px;line-height:1.3;overflow-wrap:anywhere}
.rl-drawer__body{overflow:auto;padding:16px 20px;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.rl-drawer__foot{padding:12px 20px max(16px,env(safe-area-inset-bottom));border-top:1px solid var(--rl-border)}
.rl-empty{color:var(--rl-muted);text-align:center;padding:24px 0}
.rl-lines,.rl-waiter__lines,.rl-pd__tags,.rl-pd__allergens ul{list-style:none;margin:0;padding:0}
.rl-line{display:flex;flex-direction:column;gap:8px;padding:12px 0;border-bottom:1px solid var(--rl-border)}
.rl-line__info{display:flex;justify-content:space-between;gap:12px;font-size:16px}
.rl-line__name{min-width:0;font-weight:600;overflow-wrap:anywhere}
.rl-line__price{white-space:nowrap;font-variant-numeric:tabular-nums}
.rl-qty{display:flex;align-items:center;gap:8px}
.rl-qty__btn{width:44px;height:44px;border-radius:999px;border:1px solid var(--rl-control-border,var(--rl-border));background:var(--rl-surface);color:var(--rl-text);font-size:22px;cursor:pointer}
.rl-qty__n{min-width:28px;text-align:center;font-weight:700;font-size:17px}
.rl-line__remove{margin-left:auto;min-height:44px;padding:0 8px;border:0;background:none;color:var(--rl-muted);text-decoration:underline;font:inherit;cursor:pointer}
.rl-total{display:flex;justify-content:space-between;font-size:18px;margin-bottom:6px}
.rl-note{color:var(--rl-muted);font-size:14px;margin:6px 0}
.rl-warn{color:var(--rl-warn);background:#fef3c7;border-radius:8px;padding:8px 10px;font-size:14px}
.rl-actions{display:grid;grid-template-columns:1fr 2fr;gap:10px;margin-top:10px}
.rl-pd__img{display:block;width:100%;height:auto;aspect-ratio:4/3;max-height:min(300px,34vh);object-fit:cover;border-radius:var(--rl-radius);margin-bottom:12px;background:var(--rl-border)}
.rl-pd__desc{margin:0 0 12px;line-height:1.5;overflow-wrap:anywhere}
.rl-pd__portion{margin:0 0 8px;color:var(--rl-muted)}
.rl-pd__price{font-size:20px;font-weight:700;margin:8px 0 16px}
.rl-pd__tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.rl-pd__tags li{padding:4px 10px;border-radius:999px;background:var(--rl-background);border:1px solid var(--rl-border);font-size:14px}
.rl-pd__variants{border:0;margin:0 0 16px;padding:0}
.rl-pd__variants legend{font-weight:600;margin-bottom:8px}
.rl-variant{display:flex;align-items:center;gap:10px;min-height:48px;padding:0 12px;margin-bottom:6px;border:1px solid var(--rl-control-border,var(--rl-border));border-radius:var(--rl-radius);cursor:pointer}
.rl-variant input{flex:none;width:20px;height:20px;accent-color:var(--rl-primary)}
.rl-variant:has(input:checked){border-color:var(--rl-primary);box-shadow:inset 0 0 0 1px var(--rl-primary)}
.rl-variant:has(input:focus-visible){outline:3px solid var(--rl-text);outline-offset:2px}
.rl-variant__name{min-width:0;overflow-wrap:anywhere}
.rl-variant__price{margin-left:auto;font-weight:600;white-space:nowrap}
.rl-pd__allergens h3{font-size:16px;margin:8px 0}
.rl-pd__allergens li{padding:4px 0}
.rl-pd__add{width:100%;margin-top:16px}
.rl-waiter{position:fixed;inset:0;z-index:70;overflow:auto;overscroll-behavior:contain;background:#fff;color:#111;font-family:var(--rl-font-family)}
.rl-waiter__inner{max-width:720px;margin:0 auto;padding:20px 20px max(24px,env(safe-area-inset-bottom))}
.rl-waiter__head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.rl-waiter__head h2{margin:0;font-size:30px}
.rl-waiter__line{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:baseline;padding:14px 0;border-bottom:2px solid #e5e5e5;font-size:24px;line-height:1.3}
.rl-waiter__qty{font-weight:800;min-width:2.2em}
.rl-waiter__name{min-width:0;font-weight:600;overflow-wrap:anywhere}
.rl-waiter__price{white-space:nowrap}
.rl-waiter__total{display:flex;justify-content:space-between;font-size:26px;font-weight:800;margin-top:16px}
.rl-waiter__note{margin-top:20px;font-size:18px;color:#444}
@keyframes rl-up{from{transform:translateY(24px);opacity:.6}to{transform:none;opacity:1}}
@media (min-width:700px){.rl-drawer{bottom:auto;top:50%;transform:translateY(-50%);border-radius:var(--rl-radius);animation:none}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.rl-drawer,.rl-add{animation:none!important;transition:none!important}}
.rl-waiter__brand{margin:0 0 2px;font-size:18px;font-weight:600;color:#444}
.rl-cartbar__count{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0 8px;border-radius:999px;background:var(--rl-on-primary);color:var(--rl-primary);font-weight:800}
.rl-icon-btn:focus-visible{outline-offset:-3px}
.rl-drawer__head .rl-icon-btn{flex:none}
.rl-waiter .rl-btn--ghost{color:#111;border-color:#bbb;background:#fff}
.rl-waiter :focus-visible{outline:3px solid #111;outline-offset:2px}
.rl-waiter .rl-note{color:#444}
/* v1.1: drawer close button gets a softer (2px, inset) but still visible focus ring */
.rl-drawer__head .rl-icon-btn:focus-visible{outline:2px solid var(--rl-focus-ring,currentColor);outline-offset:-2px}
/* v1.1: addButton(["variant"=>"icon"]), decButton(), soldOutBadge(), drawer spice level */
.rl-add--icon{width:44px;padding:0}
.rl-add__icon,.rl-dec__icon{width:20px;height:20px;flex:none}
.rl-dec{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:0;border:1px solid var(--rl-control-border,var(--rl-border));border-radius:999px;background:var(--rl-surface);color:var(--rl-text);font:600 15px/1 var(--rl-font-family);cursor:pointer}
.rl-dec:focus-visible{outline:3px solid var(--rl-text);outline-offset:2px}
.rl-sold-out{display:inline-flex;align-items:center;min-height:28px;padding:0 10px;border-radius:999px;background:var(--rl-border);color:var(--rl-muted);font:600 13px/1 var(--rl-font-family);white-space:nowrap}
.rl-pd__spice{display:inline-flex;align-items:center;gap:6px}
.rl-spice{display:inline-flex;color:var(--rl-spice,#c2410c)}
.rl-spice svg{width:16px;height:16px}
