/* Floor base styles - extracted from restaurant_floor.html (#decompose).
   The waiter-mode-conditional rules stay inline in the template (they need the waiter_mode flag). */
/* Override admin-main padding for full-bleed floor plan */
.admin-main { padding: 0 !important; overflow-x: hidden; }

:root { --floor-bg: #f2f2f7; }
.floor-wrap { background: var(--floor-bg); min-height: calc(100vh - 60px); }

/* Bigger, finger-friendly payment buttons in the table-detail panel — taller
   tap targets so a waiter doesn't miss them on a phone/tablet. */
.pay-btn {
    min-height: 52px;
    font-size: 0.95rem;
    font-weight: 600;
    border-radius: 0.6rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1.15;
}
/* Card-method submenu (opens under the single "Card" button). */
#cardOptions { border-left: 3px solid #212529; padding-left: 0.5rem; }


/* Top bar */
.floor-toolbar { background:#fff; padding:0.75rem 1rem; border-bottom:1px solid #e9ecef; display:flex; align-items:center; gap:1rem; flex-wrap:wrap; position:sticky; top:0; z-index:10; }
.floor-toolbar .btn-nav { border:none; background:#f0f2f5; border-radius:2rem; padding:0.4rem 1rem; font-size:0.8rem; font-weight:600; cursor:pointer; transition:all 0.15s; }
.floor-toolbar .btn-nav:hover { background:#e2e5ea; }
.floor-toolbar .btn-nav.active { background:#0d6efd; color:#fff; }
.floor-date { font-weight:700; font-size:0.95rem; }


/* Section pills */
.section-pills { display:flex; gap:0.4rem; }
.section-pill { border:1px solid #dee2e6; background:#fff; border-radius:2rem; padding:0.3rem 0.8rem; font-size:0.7rem; font-weight:600; cursor:pointer; transition:all 0.15s; color:#6c757d; display:inline-flex; align-items:center; gap:5px; --sec-color:#0d6efd; }
.section-pill:hover { border-color:var(--sec-color); color:var(--sec-color); }
.section-pill.active { background:var(--sec-color); color:#fff; border-color:var(--sec-color); }
.section-pill.active .section-pill-dot { background:#fff !important; }
.section-pill-dot { width:6px; height:6px; border-radius:50%; flex-shrink:0; }

/* Table grid — default auto-flow mode */
.floor-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(220px, 1fr)); gap:1rem; padding:1rem; align-items:start; }
.floor-grid.layout-mode { display:block; position:relative; min-height:600px; }
.floor-grid.layout-mode .table-card { position:absolute; width:220px; cursor:grab; }
.floor-grid.layout-mode .table-card.is-dragging { cursor:grabbing; z-index:50; box-shadow:0 8px 25px rgba(0,0,0,0.15); }
.floor-grid.edit-mode { background:repeating-linear-gradient(0deg,transparent,transparent 19px,rgba(0,0,0,0.03) 19px,rgba(0,0,0,0.03) 20px),repeating-linear-gradient(90deg,transparent,transparent 19px,rgba(0,0,0,0.03) 19px,rgba(0,0,0,0.03) 20px); }
@media (max-width:575px) { .floor-grid:not(.layout-mode) { grid-template-columns:1fr 1fr; gap:0.6rem; padding:0.6rem; } }

/* Compact mode */
.floor-grid.compact .table-card { padding:0.4rem 0.6rem; }
.floor-grid.compact .tc-guest, .floor-grid.compact .tc-meta, .floor-grid.compact .tc-preorder,
.floor-grid.compact .tc-sale, .floor-grid.compact .tc-timeline, .floor-grid.compact .tc-actions { display:none !important; }
.floor-grid.compact .tc-header { margin-bottom:0; }
.floor-grid.compact .tc-name { font-size:0.8rem; }
.floor-grid.compact .tc-capacity { display:none; }
.floor-grid.compact.layout-mode .table-card { width:140px; }
.floor-grid.compact:not(.layout-mode) { grid-template-columns:repeat(auto-fill, minmax(140px, 1fr)); }

/* Table card */
/* iOS look (owner 25/09/2026): white rounded cards on grouped grey, the status
   as a coloured dot + word, a ring only on tables that need attention. */
.table-card { background:#fff; border-radius:18px; border:0; padding:14px 14px 12px; cursor:pointer; transition:box-shadow 0.2s, transform 0.12s; position:relative; overflow:hidden;
    box-shadow:0 1px 2px rgba(0,0,0,0.04), 0 4px 14px rgba(0,0,0,0.05); }
.table-card:hover { box-shadow:0 2px 4px rgba(0,0,0,0.06), 0 8px 22px rgba(0,0,0,0.08); }
.table-card:active { transform:scale(0.98); }
/* #271 — QR/NFC table service call banner (call waiter / bill / water / cutlery). */
.tc-servicecall { display:flex; flex-wrap:wrap; align-items:center; gap:0.25rem; margin:0.35rem 0; padding:0.3rem 0.45rem; border-radius:0.5rem; background:#dc3545; cursor:pointer; animation:lbCallPulse 1.1s ease-in-out infinite; }
@keyframes lbCallPulse { 0%,100% { box-shadow:0 0 0 0 rgba(220,53,69,0.55); } 50% { box-shadow:0 0 0 5px rgba(220,53,69,0); } }
/* Customer self-order awaiting the staff decision (approve/pay gate). */
.tc-orderhold { display:flex; align-items:center; gap:0.35rem; margin:0.35rem 0; padding:0.5rem 0.55rem; min-height:42px; border-radius:0.5rem; background:#d97706; animation:lbHoldPulse 1.3s ease-in-out infinite; }
.tc-orderhold:active { filter:brightness(0.92); }
.tc-orderhold-pay { background:#6c757d; animation:none; }
.tc-orderhold-btn { border:none; border-radius:0.4rem; color:#fff; font-size:0.75rem; font-weight:800; padding:0.15rem 0.55rem; line-height:1.2; }
@keyframes lbHoldPulse { 0%,100% { box-shadow:0 0 0 0 rgba(217,119,6,0.55); } 50% { box-shadow:0 0 0 5px rgba(217,119,6,0); } }

/* Status colors — a ring only where the table needs attention */
.table-card.s-occupied-order { box-shadow:0 0 0 2px #ff9500, 0 6px 18px rgba(255,149,0,0.18); }
.table-card.s-reserved-soon { box-shadow:0 0 0 2px #ffcc00, 0 4px 14px rgba(0,0,0,0.05); }
.table-card.ready-pulse { box-shadow:0 0 0 3px #34c759; animation:ready-flash 1.1s ease-in-out infinite; }
.tc-ready-corner {
    position:absolute; top:0.4rem; right:0.4rem; z-index:5;
    width:2.1rem; height:2.1rem; padding:0; border:0; border-radius:50%;
    background:#28a745; color:#fff; font-size:0.95rem;
    display:flex; align-items:center; justify-content:center;
    box-shadow:0 2px 8px rgba(40,167,69,0.4); cursor:pointer;
}
.tc-ready-corner:active { filter:brightness(0.9); }
@keyframes ready-flash {
    0%, 100% { box-shadow:0 0 0 3px rgba(52,199,89,0.55); }
    50%      { box-shadow:0 0 0 6px rgba(52,199,89,0.30); }
}
.table-card.s-bill-paid { background:#f3fbf5; }
.table-card.s-cleaning { opacity:0.5; }

/* #288: a reservation past its start + grace with nobody arrived — amber tint +
   pulsing left bar to flag the table for chasing or No-show release. */
.table-card.res-overdue { background:#fffaf0; animation:res-overdue-pulse 1.6s ease-in-out infinite; }
@keyframes res-overdue-pulse { 0%,100%{box-shadow:0 0 0 2px #f59e0b;} 50%{box-shadow:0 0 0 2px rgba(245,158,11,0.35);} }

.tc-header { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:0.5rem; }
.tc-header > div:first-child { min-width:0; }
.tc-name { font-weight:700; font-size:1.15rem; letter-spacing:-0.01em; color:#000; }
.tc-capacity { font-size:0.72rem; color:#8e8e93; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.tc-badge { display:inline-flex; align-items:center; gap:0.3rem; font-size:0.68rem; font-weight:600; white-space:nowrap; }
.tc-badge::before { content:''; width:0.5rem; height:0.5rem; border-radius:50%; background:currentColor; }
.tc-badge.available { color:#34c759; }
.tc-badge.reserved { color:#007aff; }
.tc-badge.reserved-soon { color:#d4a100; }
.tc-badge.seated { color:#ff9500; }
.tc-badge.occupied-order { color:#ff9500; }
.tc-badge.bill-paid { color:#34c759; }
.tc-badge.cleaning { color:#8e8e93; }

/* Fiscal progress/error surface (#progress UX) */
.table-card.fiscal-error { box-shadow:0 0 0 2px #dc3545, 0 6px 18px rgba(220,53,69,0.18) !important; }
.tc-fiscal-chip { display:inline-block; font-size:0.58rem; font-weight:700; padding:1px 7px; border-radius:999px; margin-top:3px; cursor:pointer; white-space:nowrap; }
.tc-fiscal-chip.fiscal-chip-spin i { animation:fiscal-spin 1.2s linear infinite; display:inline-block; }
@keyframes fiscal-spin { to { transform:rotate(360deg); } }
/* Fiscal detail stepper overlay */
.fiscal-ov { position:fixed; inset:0; background:rgba(0,0,0,0.4); z-index:10075; display:none; align-items:center; justify-content:center; padding:1rem; }
.fiscal-ov-box { background:#f2f2f7; border-radius:14px; width:min(440px,94vw); max-height:88vh; overflow-y:auto; padding:0.9rem 1rem 1rem; box-shadow:0 18px 50px rgba(0,0,0,0.3); animation:iosCardIn 0.2s ease-out; font-family:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, sans-serif; }
.fiscal-ov-box .fiscal-steps { background:#fff; border-radius:10px; padding:0.6rem 0.85rem; }
.fiscal-ov-head { position:relative; display:flex; align-items:center; justify-content:center; min-height:30px; margin-bottom:0.8rem; font-size:1.02rem; }
.fiscal-ov-head strong { font-weight:600; }
.fiscal-ov-x { position:absolute; right:0; top:0; width:30px; height:30px; border:0; border-radius:50%; background:#e3e3e8; font-size:1.2rem; line-height:1; color:#8e8e93; cursor:pointer; }
.fiscal-steps { display:flex; flex-direction:column; gap:0; }
.fiscal-step { display:flex; align-items:center; gap:0.55rem; font-size:0.9rem; padding:0.15rem 0; }
.fiscal-step.todo { color:#adb5bd; }
.fiscal-step.done { color:#198754; }
.fiscal-step.active { color:#a06a00; font-weight:600; }
.fiscal-step.error { color:#dc3545; font-weight:700; }
.fiscal-step-bar { width:2px; height:14px; background:#e5e7eb; margin-left:8px; }
.fiscal-step.active .fiscal-step-spin i, .fiscal-step-spin i { animation:fiscal-spin 1.2s linear infinite; display:inline-block; }
.fiscal-err { margin:0.8rem 0 0.4rem; background:rgba(255,59,48,0.12); color:#d70015; border-radius:10px; padding:0.55rem 0.75rem; font-size:0.82rem; }
.fiscal-docs { margin-top:0.9rem; background:#fff; border-radius:10px; padding:0.6rem 0.85rem; }
.fiscal-docs-h { font-size:0.72rem; font-weight:700; text-transform:uppercase; letter-spacing:0.03em; color:#6b7280; margin-bottom:0.4rem; }
.fiscal-doc { display:flex; align-items:center; gap:0.5rem; padding:0.25rem 0; font-size:0.82rem; }
.fiscal-doc-kind { flex:0 0 auto; color:#1f2937; }
.fiscal-doc-mark { flex:1 1 auto; text-align:right; font-variant-numeric:tabular-nums; font-weight:600; }
.fiscal-doc-pdf { flex:0 0 auto; color:#6b7280; text-decoration:none; }
.fiscal-ov-actions { display:flex; gap:0.5rem; justify-content:stretch; margin-top:1rem; flex-wrap:wrap; }
.fiscal-ov-actions > .btn { flex:1 1 auto; }

/* Vision AI occupancy badges */
.vision-badge-new {
    display:inline-flex; align-items:center; gap:0.3rem;
    font-size:0.7rem; font-weight:700; padding:0.2rem 0.6rem; border-radius:2rem;
    background:#0d6efd; color:#fff; margin:0.3rem 0;
    animation: vision-flash 1s ease-in-out infinite;
}
.vision-badge {
    display:inline-flex; align-items:center; gap:0.3rem;
    font-size:0.65rem; font-weight:600; padding:0.15rem 0.5rem; border-radius:2rem;
    background:rgba(13,110,253,0.12); color:#0d6efd; margin:0.3rem 0;
}
.vision-badge-paid {
    display:inline-flex; align-items:center; gap:0.3rem;
    font-size:0.65rem; font-weight:600; padding:0.15rem 0.5rem; border-radius:2rem;
    background:rgba(25,135,84,0.12); color:#198754; margin:0.3rem 0;
}
.vision-badge-left {
    display:inline-flex; align-items:center; gap:0.3rem;
    font-size:0.6rem; font-weight:600; padding:0.15rem 0.5rem; border-radius:2rem;
    background:rgba(108,117,125,0.12); color:#6c757d; margin:0.3rem 0;
}
.vision-new-label { font-size:0.5rem; background:rgba(255,255,255,0.3); padding:0 0.3rem; border-radius:1rem; }
.vision-pulse { box-shadow: 0 0 0 0 rgba(13,110,253,0.5); animation: vision-card-pulse 2s ease-in-out infinite; }

@keyframes vision-flash {
    0%, 100% { opacity:1; }
    50% { opacity:0.5; }
}
@keyframes vision-card-pulse {
    0% { box-shadow: 0 0 0 0 rgba(13,110,253,0.4); }
    50% { box-shadow: 0 0 0 8px rgba(13,110,253,0); }
    100% { box-shadow: 0 0 0 0 rgba(13,110,253,0); }
}

.tc-guest { font-size:0.9rem; font-weight:600; color:#000; margin-top:0.4rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.tc-meta { font-size:0.75rem; color:#8e8e93; margin-top:0.2rem; }
.tc-kitchen-msg { display:inline-flex; align-items:center; gap:0.15rem; font-size:0.6rem; font-weight:800; background:#f59e0b; color:#1f2937; padding:0.1rem 0.4rem; border-radius:1rem; margin-left:0.25rem; vertical-align:middle; animation:kmPulse 1.4s infinite; }
@keyframes kmPulse { 0%,100%{opacity:1;} 50%{opacity:0.5;} }
.tc-preorder { display:flex; flex-wrap:wrap; gap:0.2rem; margin-top:0.4rem; }
.tc-preorder-pill { font-size:0.55rem; padding:0.1rem 0.35rem; border-radius:1rem; background:#e8f4fd; color:#0d6efd; border:1px solid #bde0fe; }
.tc-sale { margin-top:0.6rem; display:flex; flex-wrap:wrap; gap:0.2rem 0.4rem; justify-content:space-between; align-items:baseline; }
.tc-sale-total { font-weight:700; color:#000; font-size:1.45rem; letter-spacing:-0.02em; }
.tc-sale-status { font-size:0.62rem; padding:0.1rem 0.4rem; border-radius:0.4rem; font-weight:600; }

/* Timeline (all reservations for selected table) */
.tc-timeline { margin-top:0.5rem; padding-top:0.4rem; border-top:1px dashed #e9ecef; }
.tc-tl-item { display:flex; align-items:center; gap:0.4rem; font-size:0.65rem; color:#495057; padding:0.15rem 0; }
.tc-tl-time { font-weight:700; min-width:45px; color:#0d6efd; }
.tc-tl-dot { width:6px; height:6px; border-radius:50%; flex-shrink:0; }
.tc-tl-dot.confirmed { background:#198754; }
.tc-tl-dot.pending { background:#ffc107; }
.tc-tl-preorder { color:#0d6efd; font-size:0.55rem; }

/* Detail panel */
.floor-detail { position:fixed; right:0; top:0; bottom:0; width:380px; background:#fff; box-shadow:-4px 0 20px rgba(0,0,0,0.1); z-index:100; transform:translateX(100%); transition:transform 0.3s ease; overflow-y:auto; }
.floor-detail.open { transform:translateX(0); }
.floor-detail-overlay { position:fixed; inset:0; background:rgba(0,0,0,0.3); z-index:99; display:none; }
.floor-detail-overlay.open { display:block; }
@media (max-width:767px) { .floor-detail { width:100%; } }
/* Under 992px the admin's sticky top bar (z-index 1030) covered the sheet's
   header — the table name and its ✕ — in a phone browser; the waiter app
   hides that bar (blossom 05/10). Payment sheets/dialogs sit far above. */
@media (max-width:991.98px) {
    .floor-detail { z-index:1041; }
    .floor-detail-overlay { z-index:1040; }
}

.fd-header { padding:1rem; border-bottom:1px solid #e9ecef; position:sticky; top:0; background:#fff; z-index:1; }
.fd-body { padding:1rem; }
.fd-actions { display:flex; flex-wrap:wrap; gap:0.5rem; margin-top:1rem; }
/* #order-sheet-b (owner 26/09/2026): the table sheet — summary + Μετρητά / Κάρτα
   on top, the frequent actions as tiles (a second set while items are ticked),
   compact item rows, the rest folded into «Περισσότερα». */
.floor-detail { background:#f2f2f7; }
.fd-header { background:rgba(255,255,255,0.94); border-bottom:0.5px solid rgba(60,60,67,0.2); }
.fd-title { font-weight:700; font-size:1.35rem; letter-spacing:-0.02em; color:#000; line-height:1.15; }
.fd-close { border:0; width:32px; height:32px; border-radius:50%; background:rgba(118,118,128,0.12); color:#3c3c43; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.fd-sum { background:#fff; border-radius:16px; padding:14px 14px 12px; margin-bottom:10px; transition:background 0.15s; }
.fd-has-sel .fd-sum { background:#eef5ff; }
.fd-sum-top { display:flex; align-items:flex-start; justify-content:space-between; gap:8px; }
.fd-sum-amt { font-size:2rem; font-weight:700; letter-spacing:-0.03em; line-height:1.1; color:#000; }
.fd-has-sel .fd-sum-amt { color:#8e8e93; font-size:1.1rem; }
.fd-sum-meta { display:flex; flex-direction:column; align-items:flex-end; gap:4px; font-size:0.8rem; font-weight:700; white-space:nowrap; }
.fd-st { font-size:0.72rem; font-weight:600; padding:2px 9px; border-radius:999px; background:#f2f2f7; color:#3c3c43; }
.fd-st-pending { background:#fff4d6; color:#a86b00; }
.fd-st-accepted { background:#e5f1ff; color:#0062cc; }
.fd-st-preparing { background:#fff0e0; color:#c26a00; }
.fd-st-ready { background:#e3f8e9; color:#248a3d; }
.fd-sum-sub { font-size:0.78rem; color:#8e8e93; margin-top:2px; }
.fd-sum-order { font-size:0.75rem; color:#8e8e93; margin-top:4px; }
.fd-pay { margin-top:12px; }
#invoiceModeRow { font-size:0.85rem !important; }
.fd-doclink { padding:0 0 0 10px !important; font-size:0.85rem !important; color:#007aff !important; text-decoration:none !important; }
.fd-pay-done { background:#e3f8e9; border-radius:12px; padding:12px; }
.fd-selinfo { font-size:0.85rem; font-weight:600; color:#0062cc; margin-bottom:8px; display:flex; flex-wrap:wrap; gap:4px 6px; align-items:baseline; }
.fd-selinfo #splitTotalDisplay { font-size:1.35rem; font-weight:700; color:#000; }
.fd-selclear { margin-left:auto; color:#007aff; text-decoration:none; font-weight:600; }
.fd-paybtns { display:flex; gap:8px; }
.fd-paybtns .btn { flex:1 1 0; min-height:52px; border:0; border-radius:13px; font-size:1.02rem; font-weight:600; display:inline-flex; align-items:center; justify-content:center; white-space:nowrap; }
.fd-btn-cash { background:#34c759; color:#fff; }
.fd-btn-cash:hover, .fd-btn-cash:active { background:#2fb350; color:#fff; }
.fd-btn-card { background:#1c1c1e; color:#fff; }
.fd-btn-card:hover, .fd-btn-card:active { background:#000; color:#fff; }
.fd-paylinks { text-align:center; margin-top:8px; font-size:0.82rem; }
.fd-paylinks a { color:#007aff; text-decoration:none; }
.fd-has-sel .fd-paylinks { display:none; }
.fd-tiles { display:grid; grid-template-columns:repeat(3, 1fr); gap:8px; margin-bottom:12px; }
.fd-tiles-sel, .fd-has-sel .fd-tiles-all { display:none; }
.fd-has-sel .fd-tiles-sel { display:grid; }
.fd-tile { border:0; background:#fff; border-radius:14px; padding:12px 4px 10px; display:flex; flex-direction:column; align-items:center; gap:4px; font-size:0.78rem; font-weight:600; color:#1c1c1e; line-height:1.15; min-height:72px; }
.fd-tile i { font-size:1.35rem; }
.fd-tile:active { transform:scale(0.97); }
.fd-t-g { color:#248a3d; } .fd-t-o { color:#c26a00; } .fd-t-p { color:#5856d6; }
.fd-t-b { color:#0062cc; } .fd-t-m { color:#8e8e93; } .fd-t-r { color:#d70015; }
.fd-sec { font-size:0.75rem; color:#8e8e93; text-transform:uppercase; letter-spacing:0.02em; margin:4px 6px 6px; }
.fd-items { background:#fff; border-radius:14px; overflow:hidden; }
.fd-items .list-group-item { padding:10px 12px !important; border-color:rgba(60,60,67,0.12); }
.fd-items .unit-row { font-size:1rem; line-height:1.3; }
.fd-items .unit-sel-icon { font-size:1.35rem !important; margin-top:-2px !important; }
.fd-q { color:#007aff; margin-right:6px; }
.fd-n { font-weight:500; }
.fd-m { font-size:0.78rem; color:#8e8e93; }
.fd-note { font-size:0.78rem; color:#ff9500; font-style:italic; }
.fd-p { white-space:nowrap; color:#3c3c43; }
.fd-more { background:#fff; border-radius:14px; margin-top:12px; overflow:hidden; }
.fd-more-h { width:100%; border:0; background:transparent; display:flex; align-items:center; justify-content:space-between; padding:12px 14px; font-weight:600; font-size:0.95rem; color:#1c1c1e; }
.fd-more-h i { transition:transform 0.2s; color:#8e8e93; }
.fd-more.open .fd-more-h i { transform:rotate(180deg); }
.fd-more-b { display:none; padding:0 14px 14px; }
.fd-more.open .fd-more-b { display:block; }
.fd-more .fd-actions { margin-top:0.25rem; }

.fd-actions .btn { font-size:0.75rem; border-radius:2rem; }
/* Empty-table actions (New order / Seat customer / Book reservation): stacked
   one-under-the-other, finger-friendly — same size as the pay buttons. */
.fd-actions-stack { flex-direction:column; flex-wrap:nowrap; }
.fd-actions-stack .btn {
    width:100%;
    min-height:52px;
    font-size:0.95rem;
    font-weight:600;
    border-radius:0.6rem;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    line-height:1.15;
}

/* Table card quick actions */
.tc-actions { display:flex; gap:0.4rem; margin-top:0.7rem; overflow:hidden; }
.tc-action-btn { border:0; font-size:0.78rem; padding:0.45rem 0.7rem; border-radius:10px; text-decoration:none; font-weight:600; display:inline-flex; align-items:center; justify-content:center; transition:all 0.15s; }
.tc-action-order { flex:1 1 auto; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; background:rgba(52,199,89,0.14); color:#248a3d; }
.tc-action-order:hover { background:rgba(52,199,89,0.24); color:#1e7a35; }
.tc-action-view { background:rgba(118,118,128,0.12); color:#3c3c43; }
.tc-action-view:hover { background:rgba(118,118,128,0.2); color:#3c3c43; }
@media (max-width:600px) {
    .tc-header { flex-wrap:wrap; gap:0.2rem; }
    .tc-sale-total { font-size:1.25rem; }
    .tc-actions .tc-action-order { font-size:0.72rem; padding-left:0.4rem; padding-right:0.4rem; }
    .tc-actions .tc-action-view { font-size:0; padding:0.45rem 0.6rem; flex:0 0 auto; }
    .tc-action-view i { font-size:0.95rem; margin:0 !important; }
}

/* Preview mode — applied when viewing any date other than today.
   Makes it unmistakable that the operator is in a planning view
   (no live orders) so they don't accidentally tap "New Order" thinking
   they're working today. */
.floor-wrap.preview-mode {
    background: linear-gradient(180deg, #e7f0ff 0%, #f5f9ff 100%);
}
.floor-wrap.preview-mode .table-card {
    border: 2px dashed #5c8edb;
    box-shadow: 0 1px 4px rgba(13,110,253,0.08);
}
.floor-wrap.preview-mode .table-card::before {
    content: 'PREVIEW';
    position: absolute;
    top: 4px; right: 4px;
    font-size: 0.5rem;
    font-weight: 800;
    color: #0d6efd;
    background: rgba(255,255,255,0.85);
    padding: 0.1rem 0.35rem;
    border-radius: 0.5rem;
    letter-spacing: 0.08em;
    pointer-events: none;
}
.preview-banner {
    background: linear-gradient(90deg, #0d6efd 0%, #4d8be5 100%);
    color: #fff;
    padding: 0.55rem 1rem;
    border-radius: 0.5rem;
    margin-bottom: 0.75rem;
    display: flex;
    align-items: center;
    gap: 0.6rem;
    font-size: 0.8rem;
    box-shadow: 0 2px 8px rgba(13,110,253,0.25);
}
.preview-banner .pb-jump-today {
    margin-left: auto;
    background: rgba(255,255,255,0.2);
    border: 1px solid rgba(255,255,255,0.4);
    color: #fff;
    padding: 0.2rem 0.7rem;
    border-radius: 2rem;
    font-size: 0.7rem;
    font-weight: 700;
    cursor: pointer;
}
.preview-banner .pb-jump-today:hover {
    background: rgba(255,255,255,0.32);
}

/* ── Waiter iOS sheets (account, shift report) ─────────────────────────
   Grouped rows on the iOS grey, a bottom sheet on phones and a centred card
   on tablets. Scoped to .ios-dialog / .ios-sheet so other modals keep Bootstrap. */
.ios-sheet {
    --ios-bg: #f2f2f7; --ios-row: #ffffff; --ios-ink: #000000; --ios-ink-2: #6d6d72;
    --ios-ink-3: #8e8e93; --ios-sep: rgba(60, 60, 67, 0.22); --ios-blue: #007aff;
    --ios-red: #ff3b30; --ios-green: #34c759;
    background: var(--ios-bg); color: var(--ios-ink); border: 0; border-radius: 14px;
    box-shadow: 0 24px 60px -16px rgba(0, 0, 0, 0.35);
    font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, sans-serif;
}
.ios-dialog { max-width: 440px; }
.ios-grab { display: none; width: 36px; height: 5px; border-radius: 3px; background: #c7c7cc; margin: 6px auto 0; flex-shrink: 0; }
.ios-nav { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; padding: 10px 8px 6px; flex-shrink: 0; }
.ios-nav-title { font-weight: 600; font-size: 1.05rem; text-align: center; }
.ios-nav-side { min-width: 0; }
.ios-nav-btn { justify-self: end; background: none; border: 0; color: var(--ios-blue); font-size: 1.05rem; font-weight: 600; padding: 6px 10px; }
.ios-nav-btn:first-child { justify-self: start; font-weight: 400; }
.ios-body { background: var(--ios-bg); padding: 4px 16px calc(20px + env(safe-area-inset-bottom, 0px)); }
.ios-profile { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 6px 0 4px; }
.ios-avatar { width: 64px; height: 64px; border-radius: 50%; display: grid; place-items: center; font-size: 1.6rem; font-weight: 600; color: #fff;
    background: linear-gradient(180deg, #a5abb8, #858a96); margin-bottom: 8px; }
.ios-profile-name { font-size: 1.25rem; font-weight: 600; line-height: 1.2; }
.ios-profile-sub { font-size: 0.82rem; color: var(--ios-ink-3); margin-top: 2px; }
.ios-chip { display: inline-flex; align-items: center; gap: 6px; margin-top: 10px; padding: 5px 12px; border: 0; border-radius: 999px;
    font-size: 0.82rem; font-weight: 600; background: #e5e5ea; color: #3c3c43; }
.ios-chip .dot { width: 8px; height: 8px; border-radius: 50%; background: #aeaeb2; }
.ios-chip.on { background: rgba(52, 199, 89, 0.16); color: #1c7c38; }
.ios-chip.on .dot { background: var(--ios-green); }
.ios-group-h { font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.02em; color: var(--ios-ink-2); padding: 0 16px; margin: 22px 0 7px; }
.ios-group { background: var(--ios-row); border-radius: 10px; overflow: hidden; }
.ios-group-last { margin-top: 28px; }
.ios-row { position: relative; display: flex; align-items: center; gap: 12px; width: 100%; min-height: 46px; padding: 9px 16px;
    background: var(--ios-row); border: 0; color: var(--ios-ink); font-size: 1rem; text-align: left; text-decoration: none; }
.ios-row:active, .ios-row.pressed { background: #e5e5ea; }
.ios-group > .ios-row + .ios-row::before, .ios-group > .ios-row + .ios-row-block::before {
    content: ""; position: absolute; top: 0; right: 0; left: 57px; height: 1px; background: var(--ios-sep); transform: scaleY(0.5); transform-origin: top; }
.ios-row.danger { color: var(--ios-red); justify-content: center; font-weight: 500; }
.ios-row.danger:hover { color: var(--ios-red); }
.ios-group > .ios-row.danger + .ios-row::before, .ios-group > .ios-row + .ios-row.danger::before { left: 0; }
.ios-row-block { display: block; }
.ios-ico { width: 29px; height: 29px; border-radius: 7px; display: grid; place-items: center; color: #fff; font-size: 0.95rem; flex-shrink: 0; background: #8e8e93; }
.ios-ico.blue { background: #007aff; } .ios-ico.green { background: #34c759; } .ios-ico.orange { background: #ff9500; }
.ios-ico.red { background: #ff3b30; } .ios-ico.gray { background: #8e8e93; } .ios-ico.indigo { background: #5856d6; } .ios-ico.teal { background: #30b0c7; }
.ios-label { flex: 1; min-width: 0; }
.ios-detail { color: var(--ios-ink-3); font-size: 0.95rem; white-space: nowrap; }
.ios-chev { color: #c4c4c7; font-size: 0.8rem; }
.ios-switch { position: relative; width: 51px; height: 31px; border-radius: 16px; background: #e9e9eb; flex-shrink: 0; transition: background 0.2s; }
.ios-switch::after { content: ""; position: absolute; top: 2px; left: 2px; width: 27px; height: 27px; border-radius: 50%; background: #fff;
    box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15), 0 1px 1px rgba(0, 0, 0, 0.12); transition: transform 0.2s; }
.ios-switch.on { background: var(--ios-green); }
.ios-switch.on::after { transform: translateX(20px); }
.ios-field-lbl { display: block; font-size: 0.78rem; color: var(--ios-ink-2); margin: 2px 0 3px; }
.ios-row .form-select { border-radius: 8px; }
.ios-note { font-size: 0.8rem; color: var(--ios-ink-2); padding: 7px 16px 0; }
.ios-dialog-wide { max-width: 520px; }
.ios-card { background: var(--ios-row); border-radius: 10px; padding: 14px; }
.ios-status { display: flex; flex-direction: column; align-items: center; gap: 10px; }
.ios-status:not(:empty) { margin: 2px 0 14px; }
.ios-status .ios-chip { margin-top: 0; }
.ios-cta { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; min-height: 50px; border: 0; border-radius: 12px;
    background: var(--ios-green); color: #fff; font-size: 1.05rem; font-weight: 600; }
.ios-cta:active { filter: brightness(0.92); }
.ios-row .ios-select { width: auto; max-width: 55%; border: 0; background-color: transparent; color: var(--ios-ink-3); text-align: right;
    font-size: 0.95rem; padding: 4px 26px 4px 4px; box-shadow: none; }
.ios-row.ios-action { color: var(--ios-blue); justify-content: center; font-weight: 500; }
.ios-group > .ios-row + .ios-row.ios-action::before { left: 0; }
@media (max-width: 575.98px) {
    .modal-dialog.ios-dialog { display: flex; margin: 0 8px; max-width: none; min-height: 100%; height: 100%; align-items: flex-end; }
    .modal-dialog.ios-dialog .ios-sheet { border-radius: 22px; max-height: 94%; }
    .modal.fade .modal-dialog.ios-dialog { transform: translate(0, 100%); transition: transform 0.28s cubic-bezier(0.2, 0.8, 0.2, 1); }
    .modal.show .modal-dialog.ios-dialog { transform: none; }
    .ios-grab { display: block; }
}

/* ── iOS skin for the other waiter sheets (Phase 2) ─────────────────────
   .ios-skin restyles what Bootstrap puts inside a sheet (buttons, fields,
   lists, tabs, alerts) so the old modals and the JS-built sheets read like
   the account sheet without touching their ids or handlers. */
.ios-skin { --ios-blue: #007aff; --ios-red: #ff3b30; --ios-green: #34c759; --ios-orange: #ff9500; }
.ios-skin .btn { --bs-btn-border-width: 0; --bs-btn-font-weight: 600; --bs-btn-border-radius: 12px; --bs-btn-box-shadow: none;
    --bs-btn-focus-box-shadow: 0 0 0 3px rgba(0, 122, 255, 0.25); min-height: 46px; }
.ios-skin .btn.rounded-pill, .ios-skin .btn.rounded-circle { border-radius: 12px !important; }
.ios-skin .btn.btn-sm { --bs-btn-border-radius: 9px; --bs-btn-font-size: 0.86rem; min-height: 34px; }
.ios-skin .btn.btn-lg { --bs-btn-font-size: 1.05rem; min-height: 52px; }
.ios-skin .btn:active { filter: brightness(0.9); }
.ios-skin .btn:disabled, .ios-skin .btn.disabled { opacity: 0.4; }
.ios-skin .btn-primary { --bs-btn-bg: #007aff; --bs-btn-hover-bg: #007aff; --bs-btn-active-bg: #0062cc; --bs-btn-disabled-bg: #007aff;
    --bs-btn-color: #fff; --bs-btn-hover-color: #fff; --bs-btn-active-color: #fff; --bs-btn-disabled-color: #fff; }
.ios-skin .btn-success { --bs-btn-bg: #34c759; --bs-btn-hover-bg: #34c759; --bs-btn-active-bg: #2a9f47; --bs-btn-disabled-bg: #34c759;
    --bs-btn-color: #fff; --bs-btn-hover-color: #fff; --bs-btn-active-color: #fff; --bs-btn-disabled-color: #fff; }
.ios-skin .btn-danger { --bs-btn-bg: #ff3b30; --bs-btn-hover-bg: #ff3b30; --bs-btn-active-bg: #d70015; --bs-btn-disabled-bg: #ff3b30;
    --bs-btn-color: #fff; --bs-btn-hover-color: #fff; --bs-btn-active-color: #fff; --bs-btn-disabled-color: #fff; }
.ios-skin .btn-warning { --bs-btn-bg: #ff9500; --bs-btn-hover-bg: #ff9500; --bs-btn-active-bg: #c93400; --bs-btn-disabled-bg: #ff9500;
    --bs-btn-color: #fff; --bs-btn-hover-color: #fff; --bs-btn-active-color: #fff; --bs-btn-disabled-color: #fff; }
.ios-skin .btn-info { --bs-btn-bg: #32ade6; --bs-btn-hover-bg: #32ade6; --bs-btn-active-bg: #0071a4; --bs-btn-disabled-bg: #32ade6;
    --bs-btn-color: #fff; --bs-btn-hover-color: #fff; --bs-btn-active-color: #fff; --bs-btn-disabled-color: #fff; }
.ios-skin .btn-dark { --bs-btn-bg: #1c1c1e; --bs-btn-hover-bg: #1c1c1e; --bs-btn-active-bg: #000; --bs-btn-color: #fff; --bs-btn-hover-color: #fff; }
.ios-skin .btn-light, .ios-skin .btn-secondary { --bs-btn-bg: #e5e5ea; --bs-btn-hover-bg: #e5e5ea; --bs-btn-active-bg: #d1d1d6;
    --bs-btn-disabled-bg: #e5e5ea; --bs-btn-color: #000; --bs-btn-hover-color: #000; --bs-btn-active-color: #000; --bs-btn-disabled-color: #000; }
.ios-skin .btn-outline-secondary, .ios-skin .btn-outline-dark { --bs-btn-bg: #fff; --bs-btn-hover-bg: #fff; --bs-btn-active-bg: #e5e5ea;
    --bs-btn-disabled-bg: #fff; --bs-btn-color: #000; --bs-btn-hover-color: #000; --bs-btn-active-color: #000; --bs-btn-disabled-color: #000; }
.ios-skin .btn-outline-primary { --bs-btn-bg: rgba(0, 122, 255, 0.12); --bs-btn-hover-bg: rgba(0, 122, 255, 0.12); --bs-btn-active-bg: rgba(0, 122, 255, 0.24);
    --bs-btn-color: #007aff; --bs-btn-hover-color: #007aff; --bs-btn-active-color: #007aff; --bs-btn-disabled-color: #007aff; }
.ios-skin .btn-outline-success { --bs-btn-bg: rgba(52, 199, 89, 0.14); --bs-btn-hover-bg: rgba(52, 199, 89, 0.14); --bs-btn-active-bg: rgba(52, 199, 89, 0.28);
    --bs-btn-color: #248a3d; --bs-btn-hover-color: #248a3d; --bs-btn-active-color: #248a3d; --bs-btn-disabled-color: #248a3d; }
.ios-skin .btn-outline-danger { --bs-btn-bg: rgba(255, 59, 48, 0.12); --bs-btn-hover-bg: rgba(255, 59, 48, 0.12); --bs-btn-active-bg: rgba(255, 59, 48, 0.24);
    --bs-btn-color: #d70015; --bs-btn-hover-color: #d70015; --bs-btn-active-color: #d70015; --bs-btn-disabled-color: #d70015; }
.ios-skin .btn-outline-warning { --bs-btn-bg: rgba(255, 149, 0, 0.14); --bs-btn-hover-bg: rgba(255, 149, 0, 0.14); --bs-btn-active-bg: rgba(255, 149, 0, 0.28);
    --bs-btn-color: #c93400; --bs-btn-hover-color: #c93400; --bs-btn-active-color: #c93400; --bs-btn-disabled-color: #c93400; }
.ios-skin .btn-outline-info { --bs-btn-bg: rgba(50, 173, 230, 0.16); --bs-btn-hover-bg: rgba(50, 173, 230, 0.16); --bs-btn-active-bg: rgba(50, 173, 230, 0.3);
    --bs-btn-color: #0071a4; --bs-btn-hover-color: #0071a4; --bs-btn-active-color: #0071a4; --bs-btn-disabled-color: #0071a4; }
.ios-skin .btn-link { --bs-btn-color: #007aff; --bs-btn-hover-color: #007aff; --bs-btn-active-color: #0062cc; text-decoration: none; font-weight: 500; }
.ios-skin .btn-link.text-muted { color: #007aff !important; }
.ios-skin .form-control, .ios-skin .form-select { border: 0; border-radius: 10px; background-color: #fff; min-height: 44px; font-size: 1rem; box-shadow: none; }
.ios-skin .form-control-sm, .ios-skin .form-select-sm { min-height: 38px; font-size: 0.95rem; }
.ios-skin .form-control:focus, .ios-skin .form-select:focus { box-shadow: 0 0 0 3px rgba(0, 122, 255, 0.25); }
.ios-skin .input-group > .btn { min-height: 44px; }
.ios-skin .form-label, .ios-skin .form-label.fw-bold { font-size: 0.78rem; font-weight: 500 !important; text-transform: uppercase; letter-spacing: 0.02em;
    color: #6d6d72; margin: 0 0 5px 4px; }
.ios-skin .form-text { color: #8e8e93; margin: 5px 4px 0; }
.ios-skin .form-check-input { border-color: #c7c7cc; }
.ios-skin .form-check-input:checked { background-color: #007aff; border-color: #007aff; }
.ios-skin .list-group { border-radius: 10px; overflow: hidden; }
.ios-skin .list-group-item { border: 0; border-radius: 0 !important; background: #fff; min-height: 44px; box-shadow: inset 0 -0.5px 0 rgba(60, 60, 67, 0.22); }
.ios-skin .list-group-item:last-child { box-shadow: none; }
.ios-skin .list-group-item.active { background: rgba(0, 122, 255, 0.12); color: #007aff; }
.ios-skin .alert { border: 0; border-radius: 10px; }
.ios-skin .nav-pills { background: #e3e3e8; border-radius: 9px; padding: 2px; gap: 2px; flex-wrap: nowrap; }
.ios-skin .nav-pills .nav-link { border-radius: 7px; color: #000; padding: 6px 8px; font-weight: 500; font-size: 0.92rem; }
.ios-skin .nav-pills .nav-link.active { background: #fff; color: #000; font-weight: 600; box-shadow: 0 3px 8px rgba(0, 0, 0, 0.12), 0 0 1px rgba(0, 0, 0, 0.08); }
.ios-sheet .modal-header { position: relative; justify-content: center; border: 0; padding: 14px 52px 8px; min-height: 52px; background: transparent !important; color: #000 !important; }
.ios-sheet .modal-title { font-size: 1.05rem; font-weight: 600 !important; text-align: center; line-height: 1.3; }
.ios-sheet .modal-title > .bi:first-child { display: none; }
.ios-sheet .modal-header .btn-close { position: absolute; right: 12px; top: 12px; width: 30px; height: 30px; padding: 0; margin: 0; border-radius: 50%; opacity: 1;
    background: #e3e3e8 url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%238e8e93'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center / 11px no-repeat;
    filter: none; }
.ios-sheet .modal-body { padding: 6px 16px 16px; }
.ios-sheet .modal-footer { border: 0; padding: 4px 16px calc(14px + env(safe-area-inset-bottom, 0px)); gap: 10px; flex-wrap: nowrap; background: transparent; }
.ios-sheet .modal-footer > * { margin: 0; }
.ios-sheet .modal-footer > .btn { flex: 1 1 0; }
.ios-sheet > form { display: flex; flex-direction: column; min-height: 0; max-height: 100%; }
.ios-sheet > form > .modal-body { overflow-y: auto; }
.ios-hint { font-size: 0.82rem; color: #6d6d72; margin: 0 4px 10px; }
.ios-sub { font-size: 0.8rem; color: #8e8e93; font-weight: 400; }
.ios-row .ios-sub { display: block; margin-top: 1px; }
.ios-row.selected .ios-check { visibility: visible; }
.ios-check { visibility: hidden; color: #007aff; font-size: 1.15rem; }
.ios-seg { display: flex; background: #e3e3e8; border-radius: 9px; padding: 2px; gap: 2px; }
.ios-seg > button { flex: 1 1 0; border: 0; background: transparent; border-radius: 7px; padding: 7px 4px; font-size: 0.86rem; font-weight: 500; color: #000; min-height: 34px; }
.ios-seg > button.on { background: #fff; font-weight: 600; box-shadow: 0 3px 8px rgba(0, 0, 0, 0.12), 0 0 1px rgba(0, 0, 0, 0.08); }
.ios-stepper { display: flex; align-items: center; justify-content: center; gap: 22px; margin: 10px 0 6px; }
.ios-stepper > button { width: 52px; height: 52px; border-radius: 50%; border: 0; background: #fff; color: #007aff; font-size: 1.7rem; line-height: 1; }
.ios-stepper > button:disabled { color: #c7c7cc; }
.ios-stepper-n { min-width: 96px; text-align: center; font-size: 2.3rem; font-weight: 700; line-height: 1; }
.ios-stepper-sub { font-size: 0.75rem; color: #8e8e93; font-weight: 400; margin-top: 4px; }

/* JS-built sheets: overlay + card (z-index stays on each overlay). */
.ios-ov { position: fixed; inset: 0; display: flex; align-items: flex-end; justify-content: center; background: rgba(0, 0, 0, 0.4);
    padding: 12px 8px calc(8px + env(safe-area-inset-bottom, 0px)); }
.ios-ov.ios-ov-center { align-items: center; padding: 16px; }
.ios-card { width: 100%; max-width: 520px; max-height: 90vh; overflow-y: auto; background: #f2f2f7; color: #000; border-radius: 22px;
    padding: 6px 16px 16px; box-shadow: 0 -10px 40px rgba(0, 0, 0, 0.25); animation: iosCardUp 0.26s cubic-bezier(0.2, 0.8, 0.2, 1);
    font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, sans-serif; }
.ios-ov-center .ios-card { max-width: 400px; border-radius: 16px; animation-name: iosCardIn; }
.ios-card > .ios-grab { display: block; }
.ios-card-title { text-align: center; font-size: 1.05rem; font-weight: 600; margin: 10px 0 2px; line-height: 1.3; }
.ios-card-sub { text-align: center; font-size: 0.82rem; color: #8e8e93; margin-bottom: 8px; }
.ios-card .ios-group + .ios-group, .ios-card .ios-group + .d-grid, .ios-card .d-grid + .ios-group { margin-top: 12px; }
.ios-cancel-btn { display: block; width: 100%; min-height: 50px; margin-top: 12px; border: 0; border-radius: 12px; background: #fff; color: #007aff;
    font-size: 1.05rem; font-weight: 600; }
@keyframes iosCardUp { from { transform: translateY(36px); opacity: 0.4; } to { transform: none; opacity: 1; } }
@keyframes iosCardIn { from { transform: scale(1.06); opacity: 0; } to { transform: none; opacity: 1; } }
.ios-sheet .modal-header > h5, .ios-sheet .modal-header > h6 { font-size: 1.05rem; font-weight: 600 !important; text-align: center; margin: 0; line-height: 1.3; }
.ios-sheet .modal-header > h5 > .bi:first-child, .ios-sheet .modal-header > h6 > .bi:first-child { display: none; }
.ios-dialog.ios-dialog-lg { max-width: 800px; }
.ios-group.no-ico > .ios-row + .ios-row::before { left: 16px; }

/* lbAlert / lbConfirm / lbPrompt — iOS alert */
.lbd-back { position: fixed; inset: 0; z-index: 10070; align-items: center; justify-content: center; padding: 1rem; background: rgba(0, 0, 0, 0.4); }
.lbd-card { width: 100%; max-width: 300px; overflow: hidden; text-align: center; border-radius: 14px; background: rgba(250, 250, 250, 0.98);
    box-shadow: 0 20px 50px -12px rgba(0, 0, 0, 0.35); animation: iosCardIn 0.2s ease-out;
    font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, sans-serif; }
.lbd-msg { max-height: 60vh; overflow-y: auto; padding: 19px 16px 15px; font-size: 0.95rem; line-height: 1.4; white-space: pre-line; color: #000; }
.lbd-input { padding: 0 16px 14px; }
.lbd-input input { width: 100%; box-sizing: border-box; border: 0.5px solid #c7c7cc; border-radius: 8px; padding: 7px 9px; font: inherit; background: #fff; color: #000; outline: none; }
.lbd-btns { display: flex; box-shadow: inset 0 0.5px 0 rgba(60, 60, 67, 0.29); }
.lbd-btns button { flex: 1 1 0; min-height: 46px; border: 0; background: transparent; color: #007aff; font-size: 1.05rem; font-family: inherit; cursor: pointer; }
.lbd-btns button + button { box-shadow: inset 0.5px 0 0 rgba(60, 60, 67, 0.29); }
.lbd-btns button:active { background: rgba(0, 0, 0, 0.06); }
#lbDialogOk { font-weight: 600; }
.ios-mini-step { display: inline-flex; align-items: center; gap: 10px; }
.ios-mini-step button { width: 32px; height: 32px; border-radius: 50%; border: 0; background: #e5e5ea; color: #000; font-size: 1.15rem; line-height: 1; padding: 0; }
.ios-mini-step .ms-q, .ios-mini-step b { min-width: 1.4em; text-align: center; font-weight: 600; }
.ms-chk { appearance: none; -webkit-appearance: none; width: 22px; height: 22px; margin: 0; flex-shrink: 0; border: 0; background: transparent; cursor: pointer; }
.ms-chk:checked { background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23007aff'%3e%3cpath d='M13.485 3.431a1 1 0 0 1 .084 1.412l-6.25 7a1 1 0 0 1-1.43.047l-3.25-3a1 1 0 1 1 1.357-1.47l2.5 2.308 5.577-6.245a1 1 0 0 1 1.412-.052z'/%3e%3c/svg%3e") center / 18px no-repeat; }
label.ios-row { cursor: pointer; margin: 0; }
.ios-sub.d-inline { display: inline !important; }
.ios-chipgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(72px, 1fr)); gap: 8px; }
.ios-skin .input-group-text { border: 0; background: #fff; color: #8e8e93; }
.ios-sw { appearance: none; -webkit-appearance: none; flex-shrink: 0; width: 51px; height: 31px; margin: 0; border: 0; border-radius: 16px; cursor: pointer;
    background: #e9e9eb radial-gradient(circle at 15.5px 50%, #fff 12.5px, rgba(0, 0, 0, 0.06) 13.5px, transparent 14px); transition: background 0.2s; }
.ios-sw:checked { background: #34c759 radial-gradient(circle at 35.5px 50%, #fff 12.5px, rgba(0, 0, 0, 0.06) 13.5px, transparent 14px); }
.ios-tile { background: #fff; border: 0; border-radius: 12px; padding: 12px 6px; min-height: 58px; text-align: center; color: #000; cursor: pointer; }
.ios-tile:active { background: #e5e5ea; }
.ios-tile:disabled { opacity: 0.5; }
.ios-seg > button { font-size: 0.82rem; }
.ios-skin .nav-pills .nav-item { flex: 1 1 0; text-align: center; }
/* base_admin paints .admin-main .btn-primary / -outline-primary in the gold
   theme with plain color/background — read the skin's variables instead. */
.ios-skin .btn.btn { color: var(--bs-btn-color); background: var(--bs-btn-bg); border-color: var(--bs-btn-border-color, transparent); }
.ios-skin .btn.btn:hover, .ios-skin .btn.btn:focus { color: var(--bs-btn-hover-color); background: var(--bs-btn-hover-bg); box-shadow: none; }
.ios-skin .btn.btn:active { color: var(--bs-btn-active-color); background: var(--bs-btn-active-bg); }
.ios-skin .btn.btn:disabled { color: var(--bs-btn-disabled-color); background: var(--bs-btn-disabled-bg); }
.lbd-btns button:focus { outline: none; }
.lbd-back { z-index: 23000; }
.lbd-btns button:focus-visible { background: rgba(0, 0, 0, 0.05); }
body.waiter-body #waitlistOverlay { padding-bottom: calc(68px + env(safe-area-inset-bottom, 0px)); }
.ios-card, .ios-skin { --ios-bg: #f2f2f7; --ios-row: #ffffff; --ios-ink: #000000; --ios-ink-2: #6d6d72; --ios-ink-3: #8e8e93;
    --ios-sep: rgba(60, 60, 67, 0.22); --ios-blue: #007aff; --ios-red: #ff3b30; --ios-green: #34c759; }

/* «Περισσότερα» on the table sheet as an iOS grouped list (29/09): the rows the
   sheet builds as coloured Bootstrap pills read as one white list with a
   coloured icon square each. Markup and handlers unchanged. */
.fd-more { background: transparent; }
.fd-more-h { background: #fff; border-radius: 12px; }
.fd-more.open .fd-more-h { border-radius: 12px 12px 0 0; }
.fd-more-b { padding: 0; background: transparent; }
.fd-more .fd-guest { display: flex; align-items: center; gap: 10px; background: #fff; padding: 8px 16px 10px; margin: 0 !important; border-radius: 0 0 12px 12px; }
.fd-more .fd-actions { display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0; margin-top: 12px; background: #fff; border-radius: 12px; overflow: hidden; }
.fd-more .fd-actions > .btn, .fd-more .fd-actions > a.btn {
    position: relative; display: flex; align-items: center; justify-content: flex-start; gap: 12px; width: 100%; min-height: 48px;
    padding: 8px 16px; border: 0 !important; border-radius: 0; background: #fff !important; color: #000 !important;
    font-size: 1rem; font-weight: 400; text-align: left; box-shadow: none !important;
}
.fd-more .fd-actions > .btn:active { background: #e5e5ea !important; }
.fd-more .fd-actions > .btn + .btn::before, .fd-more .fd-actions > .btn + span::before, .fd-more .fd-actions > span + .btn::before {
    content: ""; position: absolute; top: 0; right: 0; left: 57px; height: 1px; background: rgba(60, 60, 67, 0.22); transform: scaleY(0.5); transform-origin: top;
}
.fd-more .fd-actions > .btn > i.bi:first-child {
    width: 29px; height: 29px; flex-shrink: 0; margin: 0 !important; border-radius: 7px; display: grid; place-items: center;
    color: #fff; font-size: 0.95rem; background: #8e8e93;
}
.fd-more .fd-actions > .btn-outline-primary > i.bi:first-child, .fd-more .fd-actions > .btn-primary > i.bi:first-child { background: #007aff; }
.fd-more .fd-actions > .btn-outline-warning > i.bi:first-child, .fd-more .fd-actions > .btn-warning > i.bi:first-child { background: #ff9500; }
.fd-more .fd-actions > .btn-outline-success > i.bi:first-child, .fd-more .fd-actions > .btn-success > i.bi:first-child { background: #34c759; }
.fd-more .fd-actions > .btn-outline-danger > i.bi:first-child { background: #ff3b30; }
.fd-more .fd-actions > .btn-outline-info > i.bi:first-child { background: #32ade6; }
.fd-more .fd-actions > .btn-dark > i.bi:first-child, .fd-more .fd-actions > .btn-outline-dark > i.bi:first-child { background: #1c1c1e; }
.fd-more .fd-actions > .btn .badge { position: static !important; transform: none !important; margin-left: auto; }
.fd-more .fd-actions > span.badge { align-self: stretch !important; margin: 0; padding: 12px 16px 12px 57px; border: 0 !important; border-radius: 0; background: #fff !important; color: #3c3c43; font-size: 0.95rem; font-weight: 500; text-align: left; position: relative; }
.fd-more .mt-3.pt-3.border-top { border: 0 !important; margin-top: 12px !important; padding-top: 0 !important; }
.fd-more .pay-btn.btn-outline-secondary { min-height: 48px; border: 0 !important; border-radius: 12px; background: #fff !important; color: #007aff !important; font-size: 1rem; font-weight: 500; }
.fd-more .fd-guest > span:first-child { flex: 1; font-size: 1rem !important; font-weight: 400 !important; color: #000 !important; }
.fd-more .fd-guest .btn { width: 36px; height: 36px; padding: 0; border: 0 !important; border-radius: 50%; background: rgba(118, 118, 128, 0.12) !important; color: #007aff !important; font-size: 1.2rem; line-height: 1; }
.fd-more .fd-guest #floorGuestCount { width: 56px !important; border: 0 !important; background: rgba(118, 118, 128, 0.12) !important; border-radius: 8px !important; }

/* Phone top bar: secondary buttons fold into «⋯» (openToolbarMore). */
.tb-more-btn { display: none; }
@media (max-width: 600px) {
    body.waiter-body .floor-toolbar .tb-more { display: none !important; }
    body.waiter-body .floor-toolbar .tb-more-btn { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; width: 34px; height: 34px;
        border: 0; border-radius: 50%; background: rgba(118, 118, 128, 0.14); color: #1c1c1e; font-size: 1.15rem; }
}

/* Empty-table sheet (29/09): the stacked actions in iOS fills — they mixed a
   green, a gold gradient and a yellow. */
#detailBody .fd-actions-stack .btn { border: 0 !important; border-radius: 12px; font-size: 1.02rem; box-shadow: none !important; background-image: none !important; }
#detailBody .fd-actions-stack .btn-success { background: #34c759 !important; color: #fff !important; }
#detailBody .fd-actions-stack .btn-primary { background: #007aff !important; color: #fff !important; }
#detailBody .fd-actions-stack .btn-warning { background: rgba(255, 149, 0, 0.16) !important; color: #c93400 !important; }
#detailBody .fd-actions-stack .btn-outline-danger { background: rgba(255, 59, 48, 0.12) !important; color: #d70015 !important; }
#detailBody .fd-actions-stack .btn-outline-secondary, #detailBody .fd-actions-stack .btn-outline-success, #detailBody .fd-actions-stack .btn-outline-dark { background: #fff !important; color: #007aff !important; }
#detailBody > .mt-3.pt-3.border-top { border: 0 !important; padding-top: 0 !important; }
#detailBody .pay-btn.btn-outline-secondary { min-height: 48px; border: 0 !important; border-radius: 12px; background: #fff !important; color: #007aff !important; font-size: 1rem; font-weight: 500; }

/* Phone table cards: the status sat beside the name when the capacity line was
   short («· Bar») and under it when long («· Εσωτερικα») — always under it. */
@media (max-width: 600px) {
    .floor-grid:not(.compact) .tc-header .tc-badge { flex-basis: 100%; margin-top: 2px; }
}

/* #ready-badge — the kitchen's ready dishes on the table card and in the table
   (they used to be a popup over the waiter's screen — symposio 01/10) */
.tc-ready { display:flex; align-items:center; gap:0.35rem; margin:0.35rem 0; padding:0.3rem 0.5rem; border-radius:0.5rem; background:#34c759; color:#fff; font-size:0.68rem; font-weight:700; min-width:0; }
.tc-ready-n { flex-shrink:0; }
.tc-ready-t { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0; }
.fd-ready { background:#e8f8ee; border:1px solid #34c759; border-radius:14px; padding:0.6rem 0.75rem; margin:0 0 0.75rem; display:flex; flex-wrap:wrap; align-items:center; gap:0.35rem 0.6rem; }
.fd-ready-h { font-weight:800; color:#1b7d3a; font-size:0.9rem; }
.fd-ready-items { flex:1 1 100%; color:#14532d; font-size:0.85rem; line-height:1.3; }
.fd-ready-btn { font-weight:700; margin-left:auto; }
