/* ============================================================
   Menu system, cart drawer, forms, gallery lightbox
   ============================================================ */

/* Menu toolbar */
.menu-toolbar{position:sticky;top:var(--header-h);z-index:40;background:color-mix(in srgb,var(--samurai-black) 90%,transparent);backdrop-filter:blur(10px);padding-block:var(--sp-3);border-bottom:1px solid var(--border)}
.menu-search{position:relative}
.menu-search input{width:100%;min-height:50px;padding:0 46px;border-radius:var(--radius-pill);border:1.5px solid var(--border);background:var(--surface);color:var(--text);font-size:var(--fs-400)}
.menu-search input:focus{border-color:var(--samurai-blue)}
.menu-search .s-icon{position:absolute;inset-inline-start:16px;top:50%;transform:translateY(-50%);width:20px;height:20px;color:var(--text-dim)}
.menu-search .s-clear{position:absolute;inset-inline-end:8px;top:50%;transform:translateY(-50%)}
.cat-nav{display:flex;gap:var(--sp-2);overflow-x:auto;scrollbar-width:none;padding-block:var(--sp-3) 2px;margin-top:4px;scroll-snap-type:x proximity}
.cat-nav::-webkit-scrollbar{display:none}
.cat-nav button{white-space:nowrap;padding:8px 16px;border-radius:var(--radius-pill);border:1.5px solid var(--border);font-weight:600;font-size:.9rem;background:var(--surface);color:var(--text);scroll-snap-align:start;min-height:40px}
.cat-nav button[aria-pressed=true]{background:var(--grad-blue);color:var(--on-blue);border-color:transparent}
.filter-row{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-2)}
.chip{padding:7px 13px;border-radius:var(--radius-pill);border:1.5px solid var(--border);font-size:.82rem;font-weight:600;background:var(--surface);color:var(--text);min-height:38px;display:inline-flex;gap:6px;align-items:center}
.chip[aria-pressed=true]{background:var(--hover);border-color:var(--samurai-blue);color:var(--samurai-blue)}

/* Menu categories + grid */
.menu-category{padding-top:var(--sp-6);scroll-margin-top:180px}
.menu-category>h2{display:flex;align-items:baseline;gap:10px;margin-bottom:var(--sp-2)}
.menu-category .count{font-size:var(--fs-400);color:var(--text-dim);font-family:var(--font-body);font-weight:500}
.menu-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--sp-4)}

/* Food card */
.food-card{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:box-shadow var(--dur),border-color var(--dur),transform var(--dur)}
.food-card:hover{box-shadow:var(--shadow);border-color:var(--border-strong)}
.food-card__media{aspect-ratio:16/10;background:var(--surface);overflow:hidden;position:relative}
.food-card__media img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease)}
.food-card:hover .food-card__media img{transform:scale(1.05)}
.food-card__body{display:flex;flex-direction:column;gap:8px;padding:var(--sp-4);flex:1}
.food-card__top{display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.food-card__top h3{font-size:var(--fs-500)}
.food-card__price{font-size:var(--fs-500);color:var(--samurai-blue);white-space:nowrap;font-family:var(--font-display);font-weight:700}
.food-card__desc{font-size:.9rem;color:var(--text-muted);line-height:1.5}
.food-card__tags{display:flex;flex-wrap:wrap;gap:6px}
.food-card__foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:6px}
.food-card.out{opacity:.6}
.badge-soldout{font-size:.72rem;font-weight:700;color:var(--samurai-danger)}
.opt-select{min-height:38px;padding:4px 10px;border:1.5px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:.85rem;width:100%}
.card-actions{display:flex;gap:6px}
.icon-mini{width:38px;height:38px;border-radius:10px;border:1px solid var(--border);display:grid;place-items:center;color:var(--text)}
.icon-mini:hover{border-color:var(--samurai-blue);color:var(--samurai-blue)}
.icon-mini svg{width:18px;height:18px}
.icon-mini.fav[aria-pressed=true]{color:var(--samurai-blue);border-color:var(--samurai-blue);background:var(--hover)}

/* Quantity */
.qty{display:inline-flex;align-items:center;border:1.5px solid var(--border);border-radius:var(--radius-pill);overflow:hidden}
.qty button{width:38px;height:38px;display:grid;place-items:center;font-size:1.1rem;font-weight:700;color:var(--text)}
.qty button:hover{background:var(--hover)}
.qty output{min-width:30px;text-align:center;font-variant-numeric:tabular-nums;font-weight:700}

.menu-empty{text-align:center;padding:var(--sp-8) var(--sp-4);color:var(--text-muted);display:grid;place-items:center;gap:10px}
.menu-empty svg{width:40px;height:40px;color:var(--text-dim)}
.table-indicator{display:inline-flex;align-items:center;gap:8px;background:var(--hover);color:var(--samurai-blue);font-weight:700;padding:6px 14px;border-radius:var(--radius-pill);font-size:.85rem}

/* Quick-view modal */
.qv{position:fixed;inset:0;z-index:var(--z-modal);display:none;place-items:center;padding:var(--sp-4);background:var(--overlay)}
.qv[aria-hidden=false]{display:grid}
.qv__panel{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-lg);max-width:520px;width:100%;overflow:hidden;box-shadow:var(--shadow-lg)}
.qv__panel img{width:100%;aspect-ratio:16/10;object-fit:cover}
.qv__body{padding:var(--sp-5);display:grid;gap:10px}
.qv__head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}

/* Cart drawer */
.cart-drawer{position:fixed;inset:0;z-index:var(--z-drawer);visibility:hidden}
.cart-drawer[aria-hidden=false]{visibility:visible}
.cart-drawer__scrim{position:absolute;inset:0;background:var(--overlay);opacity:0;transition:opacity var(--dur)}
.cart-drawer[aria-hidden=false] .cart-drawer__scrim{opacity:1}
.cart-drawer__panel{position:absolute;inset-block:0;inset-inline-end:0;width:min(94vw,440px);background:var(--bg-2);border-inline-start:1px solid var(--border);display:flex;flex-direction:column;transform:translateX(100%);transition:transform var(--dur) var(--ease)}
[dir=rtl] .cart-drawer__panel{transform:translateX(-100%)}
.cart-drawer[aria-hidden=false] .cart-drawer__panel{transform:none}
.cart-drawer__head{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-4);border-bottom:1px solid var(--border)}
.cart-items{flex:1;overflow-y:auto;padding:var(--sp-4);display:grid;gap:var(--sp-3);align-content:start}
.cart-line{display:grid;grid-template-columns:1fr auto;gap:4px 10px;padding-bottom:var(--sp-3);border-bottom:1px solid var(--border)}
.cart-line__name{font-weight:600;color:var(--text-strong)}
.cart-line__opts{grid-column:1/-1;font-size:.8rem;color:var(--text-dim)}
.cart-line__note{grid-column:1/-1}
.cart-line__note input{width:100%;font-size:.85rem;padding:7px 10px;border:1px solid var(--border);border-radius:8px;margin-top:4px;background:var(--surface);color:var(--text)}
.cart-line__foot{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;margin-top:6px}
.cart-line__price{font-weight:700;font-variant-numeric:tabular-nums;color:var(--samurai-blue)}
.link-danger{color:var(--samurai-danger);font-size:.8rem;font-weight:600}
.cart-empty{text-align:center;color:var(--text-muted);padding:var(--sp-7) var(--sp-4);display:grid;gap:8px;place-items:center}
.cart-empty svg{width:48px;height:48px;color:var(--text-dim)}
.cart-drawer__foot{border-top:1px solid var(--border);padding:var(--sp-4);display:grid;gap:var(--sp-3);background:var(--bg-3);max-height:64vh;overflow-y:auto}
.cart-total-row{display:flex;justify-content:space-between;align-items:baseline}
.cart-total-row .price{font-size:var(--fs-600);color:var(--samurai-blue)}

/* Forms */
.field{display:grid;gap:6px;margin-bottom:var(--sp-4)}
.field>label{font-weight:600;font-size:.9rem}
.field .req{color:var(--samurai-blue)}
.field input,.field select,.field textarea{min-height:48px;padding:10px 14px;border:1.5px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:1rem;width:100%}
.field textarea{min-height:92px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--samurai-blue)}
.field input[aria-invalid=true],.field select[aria-invalid=true]{border-color:var(--samurai-danger)}
.field .hint{font-size:.8rem;color:var(--text-dim)}
.field .error-msg{font-size:.82rem;color:var(--samurai-danger);font-weight:600}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-4)}
@media (max-width:560px){.field-row{grid-template-columns:1fr}}
.checkbox{display:flex;gap:10px;align-items:flex-start;font-size:.9rem}
.checkbox input{width:22px;height:22px;min-height:22px;flex:none;margin-top:2px;accent-color:var(--samurai-blue)}
.form-error-summary{border:1.5px solid var(--samurai-danger);background:rgba(215,104,104,.1);border-radius:var(--radius-sm);padding:var(--sp-4);margin-bottom:var(--sp-4)}
.form-error-summary h3{font-size:var(--fs-500);color:var(--samurai-danger);margin-bottom:6px}
.form-error-summary a{color:var(--samurai-danger);text-decoration:underline}

/* Stepper */
.stepper{display:flex;gap:6px;margin-bottom:var(--sp-5)}
.stepper li{flex:1;height:6px;border-radius:3px;background:var(--surface)}
.stepper li[data-state=done],.stepper li[data-state=active]{background:var(--grad-blue)}
.step{display:none}
.step.active{display:block}
.step h3{margin-bottom:var(--sp-4)}
.review-list{display:grid;gap:8px}
.review-list div{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px dashed var(--border)}
.review-list dt{color:var(--text-muted)}
.review-list dd{font-weight:600;text-align:end;color:var(--text-strong)}

/* Gallery */
.gallery-grid{columns:3 240px;column-gap:var(--sp-3)}
.gallery-grid figure{break-inside:avoid;margin-bottom:var(--sp-3);border-radius:var(--radius);overflow:hidden;position:relative;background:var(--surface)}
.gallery-grid img{width:100%;height:auto;display:block;transition:transform .5s var(--ease)}
.g-item{display:block;width:100%}
.g-item:hover img{transform:scale(1.04)}
.gallery-filter{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:var(--sp-5)}
.lightbox{position:fixed;inset:0;z-index:var(--z-modal);background:rgba(3,3,3,.94);display:none;place-items:center;padding:var(--sp-4)}
.lightbox[aria-hidden=false]{display:grid}
.lightbox img{max-width:92vw;max-height:80vh;border-radius:var(--radius)}
.lightbox__cap{color:var(--text);text-align:center;margin-top:var(--sp-3)}
.lightbox__close,.lightbox__nav{position:absolute;background:rgba(255,255,255,.12);color:#fff;width:48px;height:48px;border-radius:50%;display:grid;place-items:center}
.lightbox__close{top:16px;inset-inline-end:16px}
.lightbox__nav.prev{inset-inline-start:12px;top:50%;transform:translateY(-50%)}
.lightbox__nav.next{inset-inline-end:12px;top:50%;transform:translateY(-50%)}

/* AYCE editorial */
.ayce-cat{margin-bottom:var(--sp-6)}
.ayce-cat h3{display:flex;align-items:baseline;gap:10px;margin-bottom:var(--sp-3)}
.ayce-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--sp-2) var(--sp-5)}
.ayce-list li{padding:10px 0;border-bottom:1px solid var(--border)}
.ayce-list .n{font-weight:600;color:var(--text-strong)}
.ayce-list .d{font-size:.85rem;color:var(--text-muted)}

/* Breadcrumbs */
.breadcrumbs ol{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:.85rem;color:var(--text-dim)}
.breadcrumbs a:hover{color:var(--samurai-blue)}
.breadcrumbs svg{width:14px;height:14px;opacity:.5}
.breadcrumbs [aria-current=page]{color:var(--text);font-weight:600}
