/* IPOS-263 shared theme layer. Body attributes are server-rendered so the
 * selected palette is present on first paint and only one texture is active. */
:root {
	--ipos-ambient-texture: url('ipos-ambient-emerald-light-v1.webp');
	--ipos-canvas: #edf5f0;
	--ipos-surface: rgb(255 255 255 / 72%);
	--ipos-surface-muted: rgb(238 247 241 / 78%);
	--ipos-ink: #14251d;
	--ipos-muted: #5f7066;
	--ipos-line: rgb(80 121 96 / 22%);
	--ipos-line-strong: rgb(58 103 76 / 42%);
	--ipos-brand: #39a751;
	--ipos-action: #137a4d;
	--ipos-action-hover: #0b633e;
	--ipos-focus: rgb(19 122 77 / 32%);
	--ipos-lg-content: rgb(255 255 255 / 78%);
	--ipos-lg-glass: rgb(255 255 255 / 52%);
	--ipos-lg-glass-thick: rgb(255 255 255 / 72%);
	--ipos-lg-edge: rgb(255 255 255 / 82%);
	--ipos-lg-inner-highlight: rgb(255 255 255 / 62%);
	--ipos-lg-shadow: rgb(30 84 57 / 18%);
	--ipos-lg-ink: #14251d;
	--ipos-lg-ink-muted: #5f7066;
	--ipos-lg-selection: #0f6b43;
	--ipos-selection-surface-solid: #f7fbf8;
	--ipos-selection-active-solid: #e5f3e9;
}
body.ipos-app-shell {
	background-color: var(--ipos-canvas) !important;
	background-image: linear-gradient(135deg, rgb(255 255 255 / 24%), transparent 60%), var(--ipos-ambient-texture) !important;
	background-attachment: fixed;
	background-position: center;
	background-size: cover;
	color: var(--ipos-ink);
}
body.ipos-app-shell[data-ipos-palette="emerald"][data-ipos-mode="light"] { --ipos-ambient-texture: url('ipos-ambient-emerald-light-v1.webp'); }
body.ipos-app-shell[data-ipos-palette="emerald"][data-ipos-mode="dark"],
body.ipos-app-shell[data-ipos-palette="custom"][data-ipos-mode="dark"] {
	--ipos-canvas: #0d1b17; --ipos-surface: rgb(20 42 34 / 76%); --ipos-surface-muted: rgb(24 54 42 / 70%); --ipos-ink: #edf8f1; --ipos-muted: #a7c4b3; --ipos-line: rgb(180 235 204 / 20%); --ipos-line-strong: rgb(180 235 204 / 38%); --ipos-brand: #74d995; --ipos-action: #5dd186; --ipos-action-hover: #83e7a4; --ipos-focus: rgb(116 217 149 / 42%); --ipos-ambient-texture: url('ipos-ambient-emerald-dark-v1.webp'); --ipos-lg-content: rgb(19 48 38 / 78%); --ipos-lg-glass: rgb(22 59 45 / 66%); --ipos-lg-glass-thick: rgb(19 52 40 / 84%); --ipos-lg-edge: rgb(181 239 204 / 30%); --ipos-lg-inner-highlight: rgb(221 255 232 / 18%); --ipos-lg-shadow: rgb(0 0 0 / 34%); --ipos-lg-ink: #edf8f1; --ipos-lg-ink-muted: #a7c4b3; --ipos-lg-selection: #74d995;
}
/* Custom selections follow the validated brand accent on an opaque surface. */
body.ipos-app-shell[data-ipos-palette="custom"] {
	--ipos-selection-active-solid: color-mix(in srgb, var(--ipos-action) 10%, var(--ipos-selection-surface-solid));
}
body.ipos-app-shell[data-ipos-palette="custom"][data-ipos-mode="dark"] {
	--ipos-selection-active-solid: color-mix(in srgb, var(--ipos-action) 18%, var(--ipos-selection-surface-solid));
}
body.ipos-app-shell[data-ipos-palette="ocean"][data-ipos-mode="light"] {
	--ipos-canvas: #edf5f8; --ipos-surface: rgb(255 255 255 / 74%); --ipos-surface-muted: rgb(237 246 250 / 82%); --ipos-ink: #14232d; --ipos-muted: #5f7380; --ipos-line: rgb(65 116 145 / 22%); --ipos-line-strong: rgb(65 116 145 / 42%); --ipos-brand: #2c9dcc; --ipos-action: #147ba6; --ipos-action-hover: #0d6288; --ipos-focus: rgb(20 123 166 / 32%); --ipos-ambient-texture: url('ipos-ambient-ocean-light-v1.webp'); --ipos-lg-content: rgb(255 255 255 / 78%); --ipos-lg-glass: rgb(255 255 255 / 54%); --ipos-lg-glass-thick: rgb(255 255 255 / 72%); --ipos-lg-edge: rgb(255 255 255 / 84%); --ipos-lg-inner-highlight: rgb(255 255 255 / 64%); --ipos-lg-shadow: rgb(37 93 123 / 18%); --ipos-lg-ink: #14232d; --ipos-lg-ink-muted: #5f7380; --ipos-lg-selection: #0f6a91;
}
body.ipos-app-shell[data-ipos-palette="ocean"][data-ipos-mode="dark"] {
	--ipos-canvas: #0d1723; --ipos-surface: rgb(18 36 54 / 78%); --ipos-surface-muted: rgb(21 48 70 / 72%); --ipos-ink: #edf7ff; --ipos-muted: #abc6d8; --ipos-line: rgb(176 226 255 / 20%); --ipos-line-strong: rgb(176 226 255 / 38%); --ipos-brand: #71c9f1; --ipos-action: #58b9e7; --ipos-action-hover: #8ad9fb; --ipos-focus: rgb(113 201 241 / 42%); --ipos-ambient-texture: url('ipos-ambient-ocean-dark-v1.webp'); --ipos-lg-content: rgb(17 42 65 / 80%); --ipos-lg-glass: rgb(18 55 83 / 68%); --ipos-lg-glass-thick: rgb(16 46 70 / 86%); --ipos-lg-edge: rgb(187 231 255 / 30%); --ipos-lg-inner-highlight: rgb(220 246 255 / 18%); --ipos-lg-shadow: rgb(0 9 22 / 36%); --ipos-lg-ink: #edf7ff; --ipos-lg-ink-muted: #abc6d8; --ipos-lg-selection: #71c9f1;
}
body.ipos-app-shell[data-ipos-palette="indigo"][data-ipos-mode="light"] {
	--ipos-canvas: #f0effa; --ipos-surface: rgb(255 255 255 / 76%); --ipos-surface-muted: rgb(242 240 251 / 84%); --ipos-ink: #211d35; --ipos-muted: #6d6881; --ipos-line: rgb(91 82 145 / 22%); --ipos-line-strong: rgb(91 82 145 / 42%); --ipos-brand: #8077db; --ipos-action: #5f55bd; --ipos-action-hover: #4d439e; --ipos-focus: rgb(95 85 189 / 32%); --ipos-ambient-texture: url('ipos-ambient-indigo-light-v1.webp'); --ipos-lg-content: rgb(255 255 255 / 80%); --ipos-lg-glass: rgb(255 255 255 / 56%); --ipos-lg-glass-thick: rgb(255 255 255 / 74%); --ipos-lg-edge: rgb(255 255 255 / 86%); --ipos-lg-inner-highlight: rgb(255 255 255 / 66%); --ipos-lg-shadow: rgb(72 63 133 / 18%); --ipos-lg-ink: #211d35; --ipos-lg-ink-muted: #6d6881; --ipos-lg-selection: #5148a7;
}
body.ipos-app-shell[data-ipos-palette="indigo"][data-ipos-mode="dark"] {
	--ipos-canvas: #111226; --ipos-surface: rgb(28 27 57 / 80%); --ipos-surface-muted: rgb(40 37 79 / 72%); --ipos-ink: #f2f0ff; --ipos-muted: #bdb9da; --ipos-line: rgb(214 207 255 / 20%); --ipos-line-strong: rgb(214 207 255 / 38%); --ipos-brand: #a9a1f3; --ipos-action: #968bef; --ipos-action-hover: #c2bcff; --ipos-focus: rgb(169 161 243 / 42%); --ipos-ambient-texture: url('ipos-ambient-indigo-dark-v1.webp'); --ipos-lg-content: rgb(31 29 67 / 82%); --ipos-lg-glass: rgb(45 40 91 / 70%); --ipos-lg-glass-thick: rgb(37 34 78 / 86%); --ipos-lg-edge: rgb(224 219 255 / 30%); --ipos-lg-inner-highlight: rgb(244 241 255 / 18%); --ipos-lg-shadow: rgb(0 0 18 / 38%); --ipos-lg-ink: #f2f0ff; --ipos-lg-ink-muted: #bdb9da; --ipos-lg-selection: #a9a1f3;
}
body.ipos-app-shell[data-ipos-palette="emerald"][data-ipos-mode="dark"],
body.ipos-app-shell[data-ipos-palette="custom"][data-ipos-mode="dark"] { --ipos-selection-surface-solid: #152b23; --ipos-selection-active-solid: #214b38; }
body.ipos-app-shell[data-ipos-palette="ocean"][data-ipos-mode="light"] { --ipos-selection-surface-solid: #f5fafc; --ipos-selection-active-solid: #e2f1f7; }
body.ipos-app-shell[data-ipos-palette="ocean"][data-ipos-mode="dark"] { --ipos-selection-surface-solid: #132b3f; --ipos-selection-active-solid: #1c4864; }
body.ipos-app-shell[data-ipos-palette="indigo"][data-ipos-mode="light"] { --ipos-selection-surface-solid: #f8f7fd; --ipos-selection-active-solid: #ece9fa; }
body.ipos-app-shell[data-ipos-palette="indigo"][data-ipos-mode="dark"] { --ipos-selection-surface-solid: #242142; --ipos-selection-active-solid: #3b356d; }
body.ipos-app-shell .ipos-admin-sidebar,
body.ipos-app-shell .ipos-admin-bar { border-color: var(--ipos-lg-edge) !important; background: var(--ipos-lg-glass-thick) !important; color: var(--ipos-ink); }
body.ipos-app-shell .ipos-admin-sidebar__link { color: var(--ipos-muted) !important; }
body.ipos-app-shell .ipos-admin-sidebar__link:hover { background: color-mix(in srgb, var(--ipos-action) 12%, transparent) !important; color: var(--ipos-ink) !important; }
body.ipos-app-shell .ipos-admin-sidebar__link.is-active { border-color: var(--ipos-lg-edge) !important; background: color-mix(in srgb, var(--ipos-action) 14%, var(--ipos-surface)) !important; color: var(--ipos-action) !important; }
body.ipos-app-shell .ipos-admin-sidebar__brand-mark { background: linear-gradient(145deg, color-mix(in srgb, var(--ipos-action-hover) 72%, white), var(--ipos-action)) !important; }
@media (prefers-reduced-transparency: reduce) { body.ipos-app-shell { background-image: none !important; } }

/* IPOS-268: semantic component contract. Route styles may keep their layout
 * and business-state geometry, but presentation colors resolve through this
 * contract so every staff surface stays legible across all six combinations. */
body.ipos-app-shell {
	--ipos-action-ink: #fff;
	--ipos-button-primary-bg: var(--ipos-action);
	--ipos-button-primary-hover: var(--ipos-action-hover);
	--ipos-button-primary-text: var(--ipos-action-ink);
	--ipos-button-secondary-bg: var(--ipos-surface);
	--ipos-button-secondary-hover: color-mix(in srgb, var(--ipos-action) 10%, var(--ipos-surface));
	--ipos-button-secondary-text: var(--ipos-ink);
	--ipos-button-secondary-hover-text: var(--ipos-action-hover);
	--ipos-button-disabled-bg: color-mix(in srgb, var(--ipos-muted) 20%, var(--ipos-surface));
	--ipos-button-disabled-text: var(--ipos-ink);
	--ipos-field-surface: color-mix(in srgb, var(--ipos-surface) 88%, var(--ipos-canvas));
	--ipos-field-label-surface: color-mix(in srgb, var(--ipos-field-surface) 92%, var(--ipos-surface));
	--ipos-field-surface-hover: color-mix(in srgb, var(--ipos-action) 6%, var(--ipos-field-surface));
	--ipos-field-line: var(--ipos-line-strong);
	--ipos-field-line-hover: color-mix(in srgb, var(--ipos-action) 65%, var(--ipos-line-strong));
	--ipos-field-line-focus: var(--ipos-action);
	--ipos-overlay-backdrop: rgb(6 18 12 / 54%);
	--ipos-overlay-surface: var(--ipos-lg-content);
	--ipos-overlay-line: var(--ipos-lg-edge);
	--ipos-overlay-ink: var(--ipos-lg-ink);
	--ipos-overlay-muted: var(--ipos-lg-ink-muted);
	--ipos-shadow-soft: var(--ipos-lg-shadow);
	--ipos-success: #197a35;
	--ipos-success-soft: color-mix(in srgb, var(--ipos-success) 12%, var(--ipos-surface));
	--ipos-warning: #a15c00;
	--ipos-warning-soft: color-mix(in srgb, var(--ipos-warning) 12%, var(--ipos-surface));
	--ipos-danger: #b42318;
	--ipos-danger-soft: color-mix(in srgb, var(--ipos-danger) 10%, var(--ipos-surface));
	--ipos-info: #175cd3;
	--ipos-info-soft: color-mix(in srgb, var(--ipos-info) 11%, var(--ipos-surface));
	--ipos-scrollbar-track: color-mix(in srgb, var(--ipos-surface) 78%, var(--ipos-line));
	--ipos-scrollbar-thumb: color-mix(in srgb, var(--ipos-action) 58%, var(--ipos-line-strong));
	--ipos-scrollbar-thumb-hover: color-mix(in srgb, var(--ipos-action-hover) 72%, var(--ipos-line-strong));
}

body.ipos-app-shell[data-ipos-mode="dark"] {
	--ipos-action-ink: #071b12;
	--ipos-overlay-backdrop: rgb(0 0 0 / 64%);
	--ipos-success: #8fe0b6;
	--ipos-warning: #f4c274;
	--ipos-danger: #ffadad;
	--ipos-info: #9cbcff;
}
body.ipos-app-shell[data-ipos-palette="ocean"][data-ipos-mode="light"] {
	--ipos-success: #18794e;
	--ipos-warning: #a15c00;
	--ipos-danger: #b42318;
	--ipos-info: #0f6a91;
}
body.ipos-app-shell[data-ipos-palette="ocean"][data-ipos-mode="dark"] {
	--ipos-action-ink: #06202e;
	--ipos-success: #78d6ae;
	--ipos-warning: #f5bd68;
	--ipos-danger: #ff9b9b;
	--ipos-info: #8bd7ff;
}
body.ipos-app-shell[data-ipos-palette="indigo"][data-ipos-mode="light"] {
	--ipos-success: #16764a;
	--ipos-warning: #9c5d00;
	--ipos-danger: #b42318;
	--ipos-info: #3f5fbe;
}
body.ipos-app-shell[data-ipos-palette="indigo"][data-ipos-mode="dark"] {
	--ipos-action-ink: #181537;
	--ipos-success: #8fe0b6;
	--ipos-warning: #f4c274;
	--ipos-danger: #ffadad;
	--ipos-info: #b5c6ff;
}

/* Legacy route aliases: declarations are intentionally important only on the
 * custom properties, allowing existing selectors to retain their semantics
 * while preventing a light-only fallback from winning in dark mode. */
body.ipos-app-shell:not(.ipos-app-view-customer) .ipos-overview,
body.ipos-app-shell:not(.ipos-app-view-customer) .ipos-qr-management,
body.ipos-app-shell:not(.ipos-app-view-customer) .ipos-revenue-report,
body.ipos-app-shell:not(.ipos-app-view-customer) .ipos-activity-history,
body.ipos-app-shell:not(.ipos-app-view-customer) .ipos-cashier,
body.ipos-app-shell:not(.ipos-app-view-customer) .ipos-floor-layout {
	--ipos-overview-paper: var(--ipos-surface) !important;
	--ipos-overview-paper-deep: var(--ipos-surface-muted) !important;
	--ipos-overview-warm-line: var(--ipos-line) !important;
	--ipos-qr-paper: var(--ipos-surface) !important;
	--ipos-qr-paper-deep: var(--ipos-surface-muted) !important;
	--ipos-qr-warm-line: var(--ipos-line) !important;
	--cashier-green: var(--ipos-success) !important;
	--cashier-green-soft: var(--ipos-success-soft) !important;
	--cashier-blue: var(--ipos-info) !important;
	--cashier-blue-soft: var(--ipos-info-soft) !important;
	--cashier-amber: var(--ipos-warning) !important;
	--cashier-amber-soft: var(--ipos-warning-soft) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) .ipos-table-operations {
	--operations-content: var(--ipos-lg-content) !important;
	--operations-glass: var(--ipos-lg-glass) !important;
	--operations-glass-thick: var(--ipos-lg-glass-thick) !important;
	--operations-edge: var(--ipos-lg-edge) !important;
	--operations-shadow: var(--ipos-lg-shadow) !important;
	--operations-selection: var(--ipos-lg-selection) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) .ipos-revenue-report {
	--ipos-report-emerald: var(--ipos-action) !important;
	--ipos-report-teal: color-mix(in srgb, var(--ipos-action) 76%, var(--ipos-info)) !important;
	--ipos-report-amber: var(--ipos-warning) !important;
	--ipos-report-ink: var(--ipos-ink) !important;
	--ipos-report-muted: var(--ipos-muted) !important;
	--ipos-report-paper: var(--ipos-surface) !important;
	--ipos-report-line: var(--ipos-line) !important;
	--ipos-report-glass: var(--ipos-lg-glass) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) .ipos-overview {
	--overview-edge: var(--ipos-lg-edge) !important;
	--overview-glass: var(--ipos-lg-glass) !important;
	--overview-glass-strong: var(--ipos-lg-glass-thick) !important;
	--overview-ink: var(--ipos-lg-ink) !important;
	--overview-muted: var(--ipos-lg-ink-muted) !important;
	--overview-shadow: var(--ipos-lg-shadow) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) .ipos-qr-management {
	--qr-edge: var(--ipos-lg-edge) !important;
	--qr-glass: var(--ipos-lg-glass) !important;
	--qr-glass-strong: var(--ipos-lg-glass-thick) !important;
	--qr-ink: var(--ipos-lg-ink) !important;
	--qr-muted: var(--ipos-lg-ink-muted) !important;
	--qr-shadow: var(--ipos-lg-shadow) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :is(.ipos-activity-history, .ipos-activity-preview) {
	--ipos-activity-accent: var(--ipos-action) !important;
	--ipos-activity-line: var(--ipos-line) !important;
	--ipos-activity-tint: var(--ipos-surface-muted) !important;
	--ipos-activity-ring: var(--ipos-focus) !important;
}

body.ipos-app-shell:not(.ipos-app-view-customer) {
	background-color: var(--ipos-canvas) !important;
	background-image: linear-gradient(135deg, color-mix(in srgb, var(--ipos-lg-inner-highlight) 48%, transparent), transparent 60%), var(--ipos-ambient-texture) !important;
	color: var(--ipos-ink);
}

/* Shared surface and state rules. These selectors are deliberately scoped to
 * staff-owned screens; customer ordering keeps its separate public visual
 * language. */
body.ipos-app-shell:not(.ipos-app-view-customer) [hidden] { display: none !important; }
body.ipos-app-shell:not(.ipos-app-view-customer) :where(input, select, textarea) {
	color: var(--ipos-ink);
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-theme-page__actions [data-ipos-theme-save],
	.ipos-menu-management [data-ipos-menu-save],
	.ipos-menu-management [data-ipos-menu-header-action],
	.ipos-qr-management .is-primary,
	.ipos-qr-management__create-toggle,
	.ipos-qr-management__floor-toggle,
	.ipos-qr-management__areas-toggle,
	.ipos-qr-management [data-ipos-floor-starter-action],
	.ipos-qr-management [data-ipos-qr-print],
	.ipos-floor-layout button.is-primary,
	.ipos-revenue-report__custom-dates button,
	.ipos-revenue-report__export,
	.ipos-revenue-report__preset-indicator,
	.ipos-cashier__actions button.is-primary
) {
	border-color: var(--ipos-button-primary-bg) !important;
	background: var(--ipos-button-primary-bg) !important;
	color: var(--ipos-button-primary-text) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-theme-page__actions [data-ipos-theme-save]:not(:disabled):hover,
	.ipos-menu-management [data-ipos-menu-save]:not(:disabled):hover,
	.ipos-menu-management [data-ipos-menu-header-action]:not(:disabled):hover,
	.ipos-qr-management .is-primary:not(:disabled):hover,
	.ipos-qr-management__create-toggle:not(:disabled):hover,
	.ipos-qr-management__floor-toggle:not(:disabled):hover,
	.ipos-qr-management__areas-toggle:not(:disabled):hover,
	.ipos-qr-management [data-ipos-floor-starter-action]:not(:disabled):hover,
	.ipos-qr-management [data-ipos-qr-print]:not(:disabled):hover,
	.ipos-floor-layout button.is-primary:not(:disabled):hover,
	.ipos-revenue-report__custom-dates button:not(:disabled):hover,
	.ipos-revenue-report__export:not(:disabled):hover,
	.ipos-cashier__actions button.is-primary:not(:disabled):hover
) {
	border-color: var(--ipos-button-primary-hover) !important;
	background: var(--ipos-button-primary-hover) !important;
	color: var(--ipos-button-primary-text) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-theme-page__actions [data-ipos-theme-save]:disabled,
	.ipos-menu-management [data-ipos-menu-save]:disabled,
	.ipos-menu-management [data-ipos-menu-header-action]:disabled,
	.ipos-qr-management .is-primary:disabled,
	.ipos-qr-management__create-toggle:disabled,
	.ipos-qr-management__floor-toggle:disabled,
	.ipos-qr-management__areas-toggle:disabled,
	.ipos-qr-management [data-ipos-floor-starter-action]:disabled,
	.ipos-qr-management [data-ipos-qr-print]:disabled,
	.ipos-floor-layout button.is-primary:disabled,
	.ipos-revenue-report__custom-dates button:disabled,
	.ipos-revenue-report__export:disabled,
	.ipos-cashier__actions button.is-primary:disabled
) {
	border-color: var(--ipos-line) !important;
	background: var(--ipos-button-disabled-bg) !important;
	color: var(--ipos-button-disabled-text) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-overview button,
	.ipos-table-operations button,
	.ipos-menu-management button,
	.ipos-qr-management button,
	.ipos-revenue-report button,
	.ipos-activity-history button,
	.ipos-cashier button,
	.ipos-floor-layout button
):not(.ipos-styled-select__option):not([role="option"]):not(.ipos-qr-management__create-toggle):not(.ipos-table-operations__voucher-option):not(.ipos-table-operations__voucher-close):not(.ipos-table-operations__voucher-manual-toggle):not(.ipos-table-operations__voucher-remove):not(.ipos-table-operations__refund-backdrop):not(.ipos-table-operations__refund-dialog-close):not(.ipos-table-operations__refund-dismiss):not(.ipos-table-operations__refund-request):not(.ipos-table-operations__marker):not(.ipos-table-operations__card):not(.ipos-table-operations__attention-card):not(.ipos-table-operations__counter-queue-main):not(.is-primary):not(.is-danger):not(.is-accent):not([aria-checked]):not([hidden]):not([type="submit"]) {
	color: var(--ipos-button-secondary-text);
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-overview button,
	.ipos-table-operations button,
	.ipos-menu-management button,
	.ipos-qr-management button,
	.ipos-revenue-report button,
	.ipos-activity-history button,
	.ipos-cashier button,
	.ipos-floor-layout button
):not(.ipos-styled-select__option):not([role="option"]):not(.ipos-qr-management__create-toggle):not(.ipos-table-operations__voucher-option):not(.ipos-table-operations__voucher-close):not(.ipos-table-operations__voucher-manual-toggle):not(.ipos-table-operations__voucher-remove):not(.ipos-table-operations__refund-backdrop):not(.ipos-table-operations__refund-dialog-close):not(.ipos-table-operations__refund-dismiss):not(.ipos-table-operations__refund-request):not(.ipos-table-operations__marker):not(.ipos-table-operations__card):not(.ipos-table-operations__attention-card):not(.ipos-table-operations__counter-queue-main):not(.is-primary):not(.is-danger):not(.is-accent):not(.is-active):not([aria-selected="true"]):not([aria-pressed="true"]):not([aria-checked]):not([hidden]):not([type="submit"]) {
	border-color: var(--ipos-line-strong) !important;
	background: var(--ipos-button-secondary-bg) !important;
	color: var(--ipos-button-secondary-text) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-overview button:hover,
	.ipos-table-operations button:hover,
	.ipos-menu-management button:hover,
	.ipos-qr-management button:hover,
	.ipos-revenue-report button:hover,
	.ipos-activity-history button:hover,
	.ipos-cashier button:hover,
	.ipos-floor-layout button:hover
):not(.ipos-styled-select__option):not([role="option"]):not(.ipos-qr-management__create-toggle):not(.ipos-table-operations__voucher-option):not(.ipos-table-operations__voucher-close):not(.ipos-table-operations__voucher-manual-toggle):not(.ipos-table-operations__voucher-remove):not(.ipos-table-operations__refund-backdrop):not(.ipos-table-operations__refund-dialog-close):not(.ipos-table-operations__refund-dismiss):not(.ipos-table-operations__refund-request):not(.ipos-table-operations__marker):not(.ipos-table-operations__card):not(.ipos-table-operations__attention-card):not(.ipos-table-operations__counter-queue-main):not(.is-primary):not(.is-danger):not(.is-accent):not([aria-checked]):not([type="submit"]):not(:disabled):not([hidden]) {
	border-color: var(--ipos-field-line-hover) !important;
	background: var(--ipos-button-secondary-hover) !important;
	color: var(--ipos-button-secondary-hover-text) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-overview button.is-active,
	.ipos-table-operations button.is-active,
	.ipos-menu-management button.is-active,
	.ipos-qr-management button.is-active,
	.ipos-revenue-report button[aria-selected="true"],
	.ipos-floor-layout button[aria-pressed="true"]
) {
	border-color: var(--ipos-action) !important;
	background: color-mix(in srgb, var(--ipos-action) 14%, var(--ipos-surface)) !important;
	color: var(--ipos-action) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-menu-management button.is-danger,
	.ipos-qr-management button.is-danger,
	.ipos-cashier button.is-danger
) {
	border-color: var(--ipos-danger) !important;
	background: var(--ipos-danger-soft) !important;
	color: var(--ipos-danger) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-management button.is-accent {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-accent-surface) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-management button.is-accent:is(:hover, :focus-visible) {
	border-color: var(--ipos-accent) !important;
	background: var(--ipos-accent-surface-strong) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-menu-management [role="dialog"],
	.ipos-qr-management [role="dialog"],
	.ipos-qr-management dialog,
	.ipos-table-operations [role="dialog"],
	.ipos-table-operations dialog,
	.ipos-table-operations__confirm-panel,
	.ipos-table-operations__round-status-menu,
	.ipos-activity-preview[role="dialog"],
	.ipos-activity-history [role="dialog"],
	.ipos-menu-settings-sheet__panel,
	.ipos-qr-management__lifecycle-dialog,
	.ipos-qr-management__batch-print-sheet
) {
	border-color: var(--ipos-overlay-line) !important;
	background: var(--ipos-overlay-surface) !important;
	color: var(--ipos-overlay-ink);
	box-shadow: 0 24px 70px var(--ipos-overlay-backdrop) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-menu-management__discard,
	.ipos-menu-management__delete-dialog,
	.ipos-menu-management__backdrop,
	.ipos-activity-preview__backdrop,
	.ipos-qr-management__detail-backdrop,
	.ipos-qr-management__lifecycle-backdrop,
	.ipos-table-operations__inspector-backdrop,
	.ipos-table-operations__confirm-backdrop,
	.ipos-menu-settings-sheet,
	.ipos-qr-management__batch-print-backdrop
) {
	background: var(--ipos-overlay-backdrop) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-menu-picker__popover,
	.ipos-menu-inspector__overflow-menu,
	.ipos-menu-category-sheet,
	.ipos-activity-preview,
	.ipos-table-operations__attention-drawer,
	.ipos-qr-management__combobox-list
) {
	border-color: var(--ipos-overlay-line) !important;
	background: var(--ipos-selection-surface-solid) !important;
	color: var(--ipos-overlay-ink) !important;
	box-shadow: 0 22px 62px var(--ipos-overlay-backdrop) !important;
	-webkit-backdrop-filter: none !important;
	backdrop-filter: none !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) dialog::backdrop {
	background: var(--ipos-overlay-backdrop) !important;
	-webkit-backdrop-filter: blur(4px);
	backdrop-filter: blur(4px);
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-menu-management input,
	.ipos-menu-management select,
	.ipos-menu-management textarea,
	.ipos-qr-management input,
	.ipos-qr-management select,
	.ipos-qr-management textarea,
	.ipos-revenue-report input,
	.ipos-revenue-report select,
	.ipos-activity-history input,
	.ipos-activity-history select,
	.ipos-cashier input
) {
	background-color: var(--ipos-field-surface) !important;
	border-color: var(--ipos-field-line) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-menu-management input:hover,
	.ipos-menu-management select:hover,
	.ipos-menu-management textarea:hover,
	.ipos-qr-management input:hover,
	.ipos-qr-management select:hover,
	.ipos-qr-management textarea:hover,
	.ipos-revenue-report input:hover,
	.ipos-revenue-report select:hover,
	.ipos-activity-history input:hover,
	.ipos-activity-history select:hover,
	.ipos-cashier input:hover
) {
	background-color: var(--ipos-field-surface-hover) !important;
	border-color: var(--ipos-field-line-hover) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-menu-management input:focus,
	.ipos-menu-management select:focus,
	.ipos-menu-management textarea:focus,
	.ipos-qr-management input:focus,
	.ipos-qr-management select:focus,
	.ipos-qr-management textarea:focus,
	.ipos-revenue-report input:focus,
	.ipos-revenue-report select:focus,
	.ipos-activity-history input:focus,
	.ipos-activity-history select:focus,
	.ipos-cashier input:focus
) {
	border-color: var(--ipos-field-line-focus) !important;
	box-shadow: 0 0 0 3px var(--ipos-focus) !important;
}

/* Shared typography, icon and control states. Route styles can keep layout
 * and status geometry; these semantic rules keep their presentation coherent
 * when a theme changes after the page has already been rendered. */
body.ipos-app-shell:not(.ipos-app-view-customer) {
	--ipos-text-primary: var(--ipos-ink);
	--ipos-text-secondary: var(--ipos-muted);
	--ipos-text-tertiary: color-mix(in srgb, var(--ipos-muted) 76%, var(--ipos-surface));
	--ipos-link: var(--ipos-action);
	--ipos-icon: var(--ipos-action);
	--ipos-icon-muted: var(--ipos-muted);
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-overview,
	.ipos-table-operations,
	.ipos-menu-management,
	.ipos-qr-management,
	.ipos-revenue-report,
	.ipos-activity-history,
	.ipos-cashier,
	.ipos-floor-layout
) :where(h1, h2, h3, h4, h5, h6, legend, th) {
	color: var(--ipos-text-primary) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-overview,
	.ipos-table-operations,
	.ipos-menu-management,
	.ipos-qr-management,
	.ipos-revenue-report,
	.ipos-activity-history,
	.ipos-cashier,
	.ipos-floor-layout
) a:not(.ipos-admin-sidebar__link) {
	color: var(--ipos-link) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-overview,
	.ipos-table-operations,
	.ipos-menu-management,
	.ipos-qr-management,
	.ipos-revenue-report,
	.ipos-activity-history,
	.ipos-cashier,
	.ipos-floor-layout
) svg {
	color: currentColor;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-overview button.is-primary,
	.ipos-table-operations button.is-primary,
	.ipos-menu-management button.is-primary,
	.ipos-qr-management button.is-primary,
	.ipos-revenue-report button.is-primary,
	.ipos-activity-history button.is-primary,
	.ipos-cashier button.is-primary,
	.ipos-floor-layout button.is-primary
):not(.is-danger) {
	border-color: var(--ipos-button-primary-bg) !important;
	background: var(--ipos-button-primary-bg) !important;
	color: var(--ipos-button-primary-text) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-overview button.is-primary,
	.ipos-table-operations button.is-primary,
	.ipos-menu-management button.is-primary,
	.ipos-qr-management button.is-primary,
	.ipos-revenue-report button.is-primary,
	.ipos-activity-history button.is-primary,
	.ipos-cashier button.is-primary,
	.ipos-floor-layout button.is-primary
):not(.is-danger):not(:disabled):hover {
	border-color: var(--ipos-button-primary-hover) !important;
	background: var(--ipos-button-primary-hover) !important;
	color: var(--ipos-button-primary-text) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-overview button:disabled,
	.ipos-table-operations button:disabled,
	.ipos-menu-management button:disabled,
	.ipos-qr-management button:disabled,
	.ipos-revenue-report button:disabled,
	.ipos-activity-history button:disabled,
	.ipos-cashier button:disabled,
	.ipos-floor-layout button:disabled
) {
	border-color: var(--ipos-line) !important;
	background: var(--ipos-button-disabled-bg) !important;
	color: var(--ipos-button-disabled-text) !important;
	opacity: .86;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-overview,
	.ipos-table-operations,
	.ipos-menu-management,
	.ipos-qr-management,
	.ipos-revenue-report,
	.ipos-activity-history,
	.ipos-cashier,
	.ipos-floor-layout
) :where(button, a, input, select, textarea, [tabindex]):focus-visible {
	outline: 3px solid var(--ipos-focus) !important;
	outline-offset: 2px;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-menu-management__toolbar,
	.ipos-menu-directory,
	.ipos-menu-inspector,
	.ipos-menu-management__settings,
	.ipos-qr-management__batch-preview,
	.ipos-table-operations__confirm-panel,
	.ipos-table-operations__round-preview,
	.ipos-revenue-report__chart-panel,
	.ipos-revenue-report__payment-panel,
	.ipos-cashier__map-panel
) {
	border-color: var(--ipos-overlay-line) !important;
	background-color: var(--ipos-surface) !important;
	color: var(--ipos-text-primary) !important;
}

/* Status surfaces keep their operational meaning while following the active
 * palette. */
body.ipos-app-shell:not(.ipos-app-view-customer) .ipos-overview__operation-icon.is-serving { background: var(--ipos-success-soft) !important; }
body.ipos-app-shell:not(.ipos-app-view-customer) .ipos-overview__operation-icon.is-paying { background: var(--ipos-warning-soft) !important; }
body.ipos-app-shell:not(.ipos-app-view-customer) .ipos-overview__operation-icon.is-round { background: var(--ipos-info-soft) !important; }
body.ipos-app-shell:not(.ipos-app-view-customer) .ipos-table-operations__attention-card.is-new { border-color: color-mix(in srgb, var(--ipos-warning) 40%, var(--ipos-line)) !important; background: var(--ipos-warning-soft) !important; color: var(--ipos-warning) !important; }
body.ipos-app-shell:not(.ipos-app-view-customer) .ipos-table-operations__attention-card.is-work { border-color: color-mix(in srgb, var(--ipos-success) 40%, var(--ipos-line)) !important; background: var(--ipos-success-soft) !important; color: var(--ipos-success) !important; }
body.ipos-app-shell:not(.ipos-app-view-customer) .ipos-table-operations__attention-card.is-payment { border-color: color-mix(in srgb, var(--ipos-danger) 40%, var(--ipos-line)) !important; background: var(--ipos-danger-soft) !important; color: var(--ipos-danger) !important; }
body.ipos-app-shell:not(.ipos-app-view-customer) .ipos-table-operations__attention-card.is-cleanup { border-color: color-mix(in srgb, var(--ipos-info) 40%, var(--ipos-line)) !important; background: var(--ipos-info-soft) !important; color: var(--ipos-info) !important; }
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-overview__error,
	.ipos-revenue-report__error,
	.ipos-menu-inspector__notice,
	.ipos-menu-inspector__image-error,
	.ipos-menu-management__status.is-error,
	.ipos-cashier__message[data-state="error"]
) {
	border-color: color-mix(in srgb, var(--ipos-danger) 36%, var(--ipos-line)) !important;
	background: var(--ipos-danger-soft) !important;
	color: var(--ipos-danger) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(.ipos-cashier__message[data-state="success"], .ipos-cashier__settlement-success) {
	border-color: color-mix(in srgb, var(--ipos-success) 36%, var(--ipos-line)) !important;
	background: var(--ipos-success-soft) !important;
	color: var(--ipos-success) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-overview__error,
	.ipos-revenue-report__error,
	.ipos-menu-inspector__notice,
	.ipos-menu-inspector__image-error,
	.ipos-menu-management__status.is-error,
	.ipos-cashier__message[data-state="error"]
) :where(h1, h2, h3, h4, p, span, strong, small, svg, button) {
	color: var(--ipos-danger) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-cashier__message[data-state="success"],
	.ipos-cashier__settlement-success
) :where(h1, h2, h3, h4, p, span, strong, small, svg) {
	color: var(--ipos-success) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-table-operations__attention-card.is-new,
	.ipos-table-operations__attention-card.is-work,
	.ipos-table-operations__attention-card.is-payment,
	.ipos-table-operations__attention-card.is-cleanup,
	.ipos-table-operations__toast.is-order,
	.ipos-table-operations__toast.is-payment
) :where(strong, svg, .ipos-table-operations__attention-icon) {
	color: inherit !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) .ipos-table-operations__toast.is-order {
	border-color: color-mix(in srgb, var(--ipos-warning) 42%, var(--ipos-line)) !important;
	background: var(--ipos-warning-soft) !important;
	color: var(--ipos-warning) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) .ipos-table-operations__toast.is-payment {
	border-color: color-mix(in srgb, var(--ipos-danger) 42%, var(--ipos-line)) !important;
	background: var(--ipos-danger-soft) !important;
	color: var(--ipos-danger) !important;
}

@media (prefers-contrast: more) {
	body.ipos-app-shell:not(.ipos-app-view-customer) {
		--ipos-overlay-surface: var(--ipos-surface);
		--ipos-field-surface: var(--ipos-surface);
	}
}

/* IPOS-269: semantic color ownership audit.
 * Route styles still contain historical Emerald literals. Keep those rules for
 * geometry and operational state meaning, but give brand-owned hierarchy and
 * selection a single palette-owned source of truth. Success/warning/danger/info
 * are deliberately remapped to their semantic tokens instead of inheriting the
 * active brand accent. */
body.ipos-app-shell:not(.ipos-app-view-customer) {
	--ipos-accent: var(--ipos-action);
	--ipos-accent-hover: var(--ipos-action-hover);
	--ipos-accent-soft: color-mix(in srgb, var(--ipos-action) 13%, var(--ipos-surface));
	--ipos-accent-line: color-mix(in srgb, var(--ipos-action) 48%, var(--ipos-line));
	--ipos-accent-ink: var(--ipos-action-ink);
	--ipos-lg-action: var(--ipos-action) !important;
	--ipos-lg-selection: var(--ipos-action) !important;
}

/* AppShell navigation has both legacy sidebar and newer navigation class
 * names. Normalize the non-selected links too; otherwise the profile route's
 * legacy green literals become low-contrast on Ocean/Indigo dark shells. */
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-admin-navigation__parent-link,
	.ipos-admin-navigation__child,
	.ipos-admin-navigation__child-link
) {
	color: var(--ipos-muted) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-admin-navigation__parent-link:hover,
	.ipos-admin-navigation__child:hover,
	.ipos-admin-navigation__child-link:hover
) {
	color: var(--ipos-ink) !important;
}

/* Icons and disclosure chevrons are part of the link foreground, not a
 * second status palette. AppShell's legacy IA rules still carry Emerald
 * literals for these spans, so force them to inherit whichever semantic text
 * color the parent link receives on the active six-theme palette. */
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-admin-navigation__parent-link .ipos-admin-sidebar__icon,
	.ipos-admin-navigation__child .ipos-admin-sidebar__icon,
	.ipos-admin-navigation__child-link .ipos-admin-sidebar__icon,
	.ipos-admin-navigation__toggle
) {
	color: inherit !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-admin-navigation__parent-link .ipos-admin-sidebar__icon svg,
	.ipos-admin-navigation__child .ipos-admin-sidebar__icon svg,
	.ipos-admin-navigation__child-link .ipos-admin-sidebar__icon svg,
	.ipos-admin-navigation__toggle svg
) {
	color: inherit !important;
	fill: none !important;
	stroke: currentColor !important;
}

/* AppShell navigation is brand-owned. A parent group can be active while the
 * child route is selected; both states must use the same accent family. */
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-admin-navigation__group.is-active > .ipos-admin-navigation__parent .ipos-admin-navigation__parent-link,
	.ipos-admin-navigation__group.is-active > .ipos-admin-navigation__parent .ipos-admin-navigation__parent-button,
	.ipos-admin-navigation__child.is-active,
	.ipos-admin-navigation__child-link.is-active
) {
	border-color: var(--ipos-accent-line) !important;
	background: var(--ipos-accent-soft) !important;
	color: var(--ipos-accent) !important;
}

/* Brand-owned hierarchy: eyebrow/section labels are not operational status. */
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-overview__header p,
	.ipos-overview__section-head small,
	.ipos-table-operations__header .ipos-table-operations__eyebrow,
	.ipos-menu-management__eyebrow,
	.ipos-menu-directory header > div > small,
	.ipos-qr-management__eyebrow,
	.ipos-activity-history__eyebrow,
	.ipos-revenue-report__crumb,
	.ipos-revenue-report__crumb a,
	.ipos-cashier__section-title small
) {
	color: var(--ipos-accent) !important;
}

/* Selected controls and charts are brand-owned; status badges remain below. */
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-menu-management__sections button[aria-pressed="true"],
	.ipos-qr-management__create-modes button.is-active,
	.ipos-qr-management__table.is-selected,
	.ipos-table-operations__area-tab.is-active,
	.ipos-table-operations__round-tab.is-active,
	.ipos-table-operations__card.is-selected,
	.ipos-table-operations__marker.is-selected,
	.ipos-table-operations__payment-choice.is-selected,
	.ipos-cashier__filters button.is-active,
	.ipos-cashier__queue-item.is-selected,
	.ipos-cashier__actions .ipos-cashier__payment-choice.is-selected,
	.ipos-revenue-report__presets button[aria-selected="true"]
) {
	border-color: var(--ipos-accent) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-menu-management__sections button[aria-pressed="true"],
	.ipos-qr-management__create-modes button.is-active,
	.ipos-table-operations__round-tab.is-active,
	.ipos-cashier__filters button.is-active,
	.ipos-revenue-report__presets button[aria-selected="true"]
) {
	background: var(--ipos-accent-soft) !important;
	box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--ipos-accent) 18%, transparent) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-revenue-report__chart .ipos-revenue-chart__line,
	.ipos-revenue-report__chart .ipos-revenue-chart__point
) {
	stroke: var(--ipos-accent) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report__chart .ipos-revenue-chart__area {
	fill: color-mix(in srgb, var(--ipos-accent) 14%, transparent) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-revenue-report__header-actions button:hover,
	.ipos-revenue-report__presets button:hover,
	.ipos-revenue-report__all-bills-link:hover
) {
	color: var(--ipos-accent-hover) !important;
}

/* Route-local variable aliases prevent a late legacy rule from reintroducing
 * the old green accent, while preserving status-specific color variables. */
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report {
	--ipos-report-emerald: var(--ipos-accent) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-activity-history {
	--ipos-activity-accent: var(--ipos-accent) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile {
	--profile-emerald: var(--ipos-accent) !important;
	--profile-emerald-dark: var(--ipos-accent-hover) !important;
	/* The profile form and its field labels are intentionally matte/light
	 * reading surfaces in every theme. Keep their ink dark enough to read while
	 * letting the surrounding shell and brand-owned controls follow the palette. */
	--profile-surface: rgb(255 255 255 / 90%) !important;
	--profile-line: color-mix(in srgb, var(--ipos-accent) 18%, #d5e1d9) !important;
	--profile-ink: #15231d !important;
	--profile-muted: #66746d !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile :where(
	input[type="text"],
	input[type="tel"],
	textarea
) {
	color: var(--profile-ink) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile :where(
	input[type="text"],
	input[type="tel"],
	textarea
)::placeholder {
	color: color-mix(in srgb, var(--profile-muted) 78%, #fff) !important;
}
body.ipos-app-shell[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-table-operations__inspector-head p,
	.ipos-table-operations__stats > div > span,
	.ipos-table-operations__attention-drawer-head h2,
	.ipos-table-operations__attention-drawer-head p,
	.ipos-table-operations__session-state-copy strong,
	.ipos-table-operations__session-state-eyebrow,
	.ipos-table-operations__round-preview > div > span,
	.ipos-table-operations__round-note,
	.ipos-table-operations__data-gap
) {
	color: var(--ipos-lg-ink-muted) !important;
}
body.ipos-app-shell[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__inspector {
	background: var(--ipos-lg-content) !important;
	border-color: var(--ipos-lg-edge) !important;
	box-shadow: 0 18px 42px var(--ipos-lg-shadow) !important;
}
/* Cashier has a late iPad layout layer with matte-light literals. Rebind its
 * shell and reading surfaces for dark themes so white text never lands on a
 * white panel; status chips keep their own semantic colors. */
body.ipos-app-shell[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-cashier {
	background: var(--ipos-canvas) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-cashier__header,
	.ipos-cashier__venue,
	.ipos-cashier__sync,
	.ipos-cashier__header button
) {
	background: var(--ipos-surface) !important;
	color: var(--ipos-ink) !important;
	border-color: var(--ipos-line) !important;
}
body.ipos-app-shell[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-cashier__queue,
	.ipos-cashier__detail,
	.ipos-cashier__rounds,
	.ipos-cashier__summary
) {
	background: var(--ipos-lg-content) !important;
	color: var(--ipos-ink) !important;
	border-color: var(--ipos-line) !important;
}
body.ipos-app-shell[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-cashier__detail-head,
	.ipos-cashier-round
) {
	background: var(--ipos-lg-content) !important;
	color: var(--ipos-ink) !important;
	border-color: var(--ipos-line) !important;
}
body.ipos-app-shell[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-cashier__queue-item:not(.is-selected),
	.ipos-cashier__filters button,
	.ipos-cashier__search input,
	.ipos-cashier__search button,
	.ipos-cashier__queue-empty,
	.ipos-cashier__queue-empty button,
	.ipos-cashier__empty,
	.ipos-cashier__summary
) {
	background: var(--ipos-field-surface) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-cashier__queue-item.is-selected {
	background: var(--ipos-accent-soft) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-cashier__queue-item.is-selected :where(
	.ipos-cashier__queue-meta > span,
	.ipos-cashier__queue-meta > time,
	.ipos-cashier__queue-total > span:first-child
) {
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-cashier__queue-item:not(.is-selected):hover,
	.ipos-cashier__filters button:hover,
	.ipos-cashier__filters button.is-active
) {
	background: var(--ipos-accent-soft) !important;
	border-color: var(--ipos-accent) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-cashier__rounds,
	.ipos-cashier__summary,
	.ipos-cashier__detail
) :where(input, select, textarea) {
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-cashier__message[data-state="info"] {
	background: var(--ipos-surface-muted) !important;
	color: var(--ipos-muted) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-store-profile__crumb,
	.ipos-store-profile__crumb a,
	.ipos-store-profile__eyebrow
) {
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-store-profile__history:hover,
	.ipos-store-profile__upload:hover,
	.ipos-store-profile__logo-actions button:hover,
	.ipos-store-profile__actions button:hover
) {
	border-color: var(--ipos-accent-hover) !important;
	color: var(--ipos-accent-hover) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-store-profile__segmented button[aria-pressed="true"],
	.ipos-store-profile__preview-tabs button[aria-pressed="true"]
) {
	border-color: color-mix(in srgb, var(--ipos-accent) 38%, var(--ipos-line)) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile :where(input[type="checkbox"], input[type="radio"]) {
	accent-color: var(--ipos-accent) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile__field :where(input, textarea):focus {
	border-color: var(--ipos-accent) !important;
	box-shadow: 0 0 0 3px var(--ipos-focus) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile__actions button.is-primary {
	border-color: var(--ipos-accent) !important;
	background: var(--ipos-accent) !important;
	color: var(--ipos-accent-ink) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile__actions button.is-primary:hover {
	border-color: var(--ipos-accent-hover) !important;
	background: var(--ipos-accent-hover) !important;
	color: var(--ipos-accent-ink) !important;
}

/* Semantic status ownership. These selectors intentionally do not include
 * selected/active controls, which are brand-owned above. */
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-overview__operation-icon.is-serving,
	.ipos-table-operations__badge.is-serving,
	.ipos-table-operations__badge.is-available,
	.ipos-table-operations__round-detail summary span.is-ready,
	.ipos-table-operations__round-detail summary span.is-served,
	.ipos-cashier__queue-top > span.is-paid,
	.ipos-cashier-round__head > span.is-served,
	.ipos-revenue-report__paid,
	.ipos-cashier__settlement-success,
	.ipos-store-profile__feedback:not(.is-error)
) {
	border-color: color-mix(in srgb, var(--ipos-success) 38%, var(--ipos-line)) !important;
	background: var(--ipos-success-soft) !important;
	color: var(--ipos-success) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report__finance-main strong {
	color: var(--ipos-success) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-store-profile__save-state.is-success,
	.ipos-store-profile__receipt-status
) {
	color: var(--ipos-success) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-activity-history__item[data-activity-event*="paid"],
	.ipos-activity-history__item[data-activity-event*="served"],
	.ipos-activity-history__item[data-activity-event*="resumed"],
	.ipos-activity-history__item[data-activity-event*="restored"],
	.ipos-activity-history__item[data-activity-event*="published"]
) {
	--ipos-activity-accent: var(--ipos-success) !important;
	--ipos-activity-tint: var(--ipos-success-soft) !important;
	--ipos-activity-line: color-mix(in srgb, var(--ipos-success) 28%, var(--ipos-line)) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-activity-history__item[data-activity-event*="updated"],
	.ipos-activity-history__item[data-activity-event*="reassigned"],
	.ipos-activity-history__item[data-activity-event*="reordered"],
	.ipos-activity-history__item[data-activity-event*="saved"]
) {
	--ipos-activity-accent: var(--ipos-info) !important;
	--ipos-activity-tint: var(--ipos-info-soft) !important;
	--ipos-activity-line: color-mix(in srgb, var(--ipos-info) 28%, var(--ipos-line)) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-activity-history__item[data-activity-event*="paused"],
	.ipos-activity-history__item[data-activity-event*="closing_started"],
	.ipos-activity-history__item[data-activity-event*="revoked"]
) {
	--ipos-activity-accent: var(--ipos-warning) !important;
	--ipos-activity-tint: var(--ipos-warning-soft) !important;
	--ipos-activity-line: color-mix(in srgb, var(--ipos-warning) 28%, var(--ipos-line)) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-activity-history__item[data-activity-event*="cancelled"],
	.ipos-activity-history__item[data-activity-event*="trashed"],
	.ipos-activity-history__item[data-activity-event*="archived"],
	.ipos-activity-history__item[data-activity-event*="removed"]
) {
	--ipos-activity-accent: var(--ipos-danger) !important;
	--ipos-activity-tint: var(--ipos-danger-soft) !important;
	--ipos-activity-line: color-mix(in srgb, var(--ipos-danger) 28%, var(--ipos-line)) !important;
}

/* Focus and primary action ownership includes route-specific links and
 * hidden/revealed dialog controls without changing their visibility logic. */
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-menu-management__history-link,
	.ipos-table-operations__history-link,
	.ipos-qr-management__history-link,
	.ipos-revenue-report__custom-dates button,
	.ipos-revenue-report__all-bills-link
) {
	border-color: color-mix(in srgb, var(--ipos-accent) 42%, var(--ipos-line)) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-revenue-report__custom-dates button,
	.ipos-qr-management .is-primary,
	.ipos-menu-management [data-ipos-menu-header-action],
	.ipos-menu-management [data-ipos-menu-save]
):not(:disabled):hover {
	border-color: var(--ipos-accent-hover) !important;
	background: var(--ipos-accent-hover) !important;
	color: var(--ipos-accent-ink) !important;
}

/* IPOS-269R: contextual composition ownership. A token can be correct on an
 * element while its parent, pseudo-element or selection halo still paints a
 * legacy Emerald surface. These rules deliberately audit the full visual
 * tuple (surface, border, ink, icon, shadow and revealed state) at the
 * component boundary instead of recolouring every semantic status. */
body.ipos-app-shell:not(.ipos-app-view-customer) {
	--ipos-accent-surface: color-mix(in srgb, var(--ipos-accent) 8%, var(--ipos-surface));
	--ipos-accent-surface-strong: color-mix(in srgb, var(--ipos-accent) 14%, var(--ipos-surface));
	--ipos-accent-border: color-mix(in srgb, var(--ipos-accent) 48%, var(--ipos-line));
	--ipos-accent-shadow: color-mix(in srgb, var(--ipos-accent) 18%, transparent);
	--ipos-nav-edge: var(--ipos-accent-border) !important;
	--ipos-nav-surface: var(--ipos-accent-surface) !important;
	--ipos-nav-ink: var(--ipos-accent) !important;
	--ipos-text-primary: var(--ipos-ink) !important;
	--team-glass: var(--ipos-surface) !important;
}

/* Navigation: the active parent is a container of the active link. Both must
 * belong to the same accent family, including the mobile marker and connector
 * pseudo-elements that are otherwise left Emerald by AppShell CSS. */
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-admin-navigation__group.is-active > .ipos-admin-navigation__parent,
	.ipos-admin-navigation__group.is-panel-target > .ipos-admin-navigation__parent
) {
	border-color: var(--ipos-accent-border) !important;
	background: linear-gradient(140deg, var(--ipos-lg-inner-highlight), var(--ipos-accent-surface)) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 8px 18px var(--ipos-accent-shadow) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-admin-navigation__group.is-active > .ipos-admin-navigation__parent .ipos-admin-navigation__parent-link,
	.ipos-admin-navigation__group.is-panel-target > .ipos-admin-navigation__parent .ipos-admin-navigation__parent-link,
	.ipos-admin-navigation__group.is-active > .ipos-admin-navigation__parent .ipos-admin-navigation__toggle
) {
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-admin-navigation__group.is-active > .ipos-admin-navigation__parent::after,
	.ipos-admin-navigation__group.is-panel-target > .ipos-admin-navigation__parent::after
) {
	border-top-color: var(--ipos-accent) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-admin-navigation__children::before,
	.ipos-admin-navigation__child::before
) {
	background: var(--ipos-line-strong) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-admin-navigation__child.is-active,
	.ipos-admin-navigation.is-sheet-open .ipos-admin-navigation__child.is-active
) {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-accent-surface) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) .ipos-admin-navigation__child.is-active::before {
	background: var(--ipos-accent) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer) :where(
	.ipos-admin-navigation__sheet-head p,
	.ipos-admin-navigation.is-sheet-open .ipos-admin-navigation__sheet-head button
) {
	color: var(--ipos-accent) !important;
}

/* Selected controls: the active surface and its immediate control group must
 * agree. The group remains glass-neutral; only the selected control receives
 * the accent tint. */
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-table-operations__area-tab.is-active,
	.ipos-table-operations__round-tab.is-active,
	.ipos-menu-management__sections button[aria-pressed="true"],
	.ipos-qr-management__create-modes button.is-active,
	.ipos-cashier__filters button.is-active,
	.ipos-revenue-report__presets button[aria-selected="true"]
) {
	background: var(--ipos-accent-surface-strong) !important;
	box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--ipos-accent) 18%, transparent) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-table-operations__area-tab:hover,
	.ipos-table-operations__round-tab:not(.is-active):hover,
	.ipos-menu-management__sections button[aria-pressed="false"]:hover,
	.ipos-cashier__filters button:not(.is-active):hover
) {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-accent-surface) !important;
	color: var(--ipos-accent-hover) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__round-tabs {
	border-color: var(--ipos-line) !important;
	background: color-mix(in srgb, var(--ipos-accent) 4%, var(--ipos-surface)) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight) !important;
}

/* The late Operations stylesheet paints the selected area tab with a
 * separate moving indicator. Own that pseudo-surface too; changing only the
 * button leaves a hidden Emerald gradient visible underneath an Indigo/Ocean
 * label. */
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__area-tab-indicator {
	border-color: var(--ipos-accent-border) !important;
	background: linear-gradient(135deg, color-mix(in srgb, var(--ipos-accent) 22%, var(--ipos-surface)), color-mix(in srgb, var(--ipos-accent) 14%, var(--ipos-surface-muted))) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 8px 18px var(--ipos-accent-shadow) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-table-operations__area-tab.is-active,
	.ipos-table-operations__area-tab.is-active:hover
) {
	border-color: transparent !important;
	background: transparent !important;
	color: var(--ipos-accent) !important;
}

/* Operations section surfaces are parents of the controls above. Rebind the
 * legacy green gradients at this boundary so an Indigo/Ocean page is not
 * visually anchored to Emerald just because the map/floor stylesheet was
 * authored before the theme engine existed. */
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations :where(
	.ipos-table-operations__toolbar,
	.ipos-table-operations__map,
	.ipos-table-operations__floor,
	.ipos-table-operations__inspector
) {
	border-color: var(--ipos-lg-edge) !important;
	background: linear-gradient(145deg, var(--ipos-lg-inner-highlight), color-mix(in srgb, var(--ipos-accent) 3%, var(--ipos-lg-content))) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 18px 42px var(--ipos-lg-shadow) !important;
}

/* Operations inspector metrics are neutral reading data, not brand or
 * success states. Rebind the late route literals here so empty-session text
 * remains readable and does not pull an Ocean/Indigo surface back to Emerald. */
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__stats :where(
	span,
	strong
) {
	color: var(--ipos-lg-ink-muted) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__stats strong {
	color: var(--ipos-lg-ink) !important;
}

/* Operations table status surfaces: the operational state must be scannable
 * without becoming a flat white card. Keep the material glassic, but let the
 * semantic family tint the card and its state label. Selection is applied in
 * the following block and intentionally wins over these status surfaces. */
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-table-operations__card.is-new,
	.ipos-table-operations__marker.is-new
) {
	--ipos-table-status: var(--ipos-warning) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-table-operations__card.is-preparing,
	.ipos-table-operations__marker.is-preparing
) {
	--ipos-table-status: var(--ipos-info) !important;
	--ipos-table-status-soft: var(--ipos-info-soft) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-table-operations__card.is-ready,
	.ipos-table-operations__marker.is-ready
) {
	--ipos-table-status: var(--ipos-success) !important;
	--ipos-table-status-soft: var(--ipos-success-soft) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__card.is-serving {
	--ipos-table-status: var(--ipos-success) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__card.is-paying {
	--ipos-table-status: var(--ipos-info) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__card.is-payment_requested {
	--ipos-table-status: var(--ipos-danger) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-table-operations__card.is-work,
	.ipos-table-operations__card.is-cleanup_pending
) {
	--ipos-table-status: var(--ipos-warning) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__fallback-list .ipos-table-operations__card:not(.is-selected):is(
	.is-new,
	.is-serving,
	.is-paying,
	.is-payment_requested,
	.is-work,
	.is-cleanup_pending
) {
	border-color: color-mix(in srgb, var(--ipos-table-status) 48%, var(--ipos-line)) !important;
	background: linear-gradient(145deg,
		color-mix(in srgb, var(--ipos-table-status) 20%, var(--ipos-surface)),
		color-mix(in srgb, var(--ipos-table-status) 10%, var(--ipos-surface-muted))) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight),
		0 6px 16px color-mix(in srgb, var(--ipos-table-status) 10%, transparent) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__fallback-list .ipos-table-operations__card:not(.is-selected):is(
	.is-new,
	.is-serving,
	.is-paying,
	.is-payment_requested,
	.is-work,
	.is-cleanup_pending
) .ipos-table-operations__card-state {
	color: var(--ipos-table-status) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__fallback-list .ipos-table-operations__card:not(.is-selected):is(
	.is-new,
	.is-serving,
	.is-paying,
	.is-payment_requested,
	.is-work,
	.is-cleanup_pending
) .ipos-table-operations__table-glyph {
	color: var(--ipos-table-status) !important;
	stroke: currentColor !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__fallback-list .ipos-table-operations__card:not(.is-selected):is(
	.is-new,
	.is-serving,
	.is-paying,
	.is-payment_requested,
	.is-work,
	.is-cleanup_pending
):hover {
	border-color: color-mix(in srgb, var(--ipos-table-status) 68%, var(--ipos-line)) !important;
	background: linear-gradient(145deg,
		color-mix(in srgb, var(--ipos-table-status) 27%, var(--ipos-surface)),
		color-mix(in srgb, var(--ipos-table-status) 14%, var(--ipos-surface-muted))) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__map .ipos-table-operations__marker:not(.is-selected).is-new {
	border-color: color-mix(in srgb, var(--ipos-table-status) 58%, var(--ipos-line)) !important;
	background: linear-gradient(145deg,
		color-mix(in srgb, var(--ipos-table-status) 22%, var(--ipos-surface)),
		color-mix(in srgb, var(--ipos-table-status) 11%, var(--ipos-surface-muted))) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight),
		0 7px 18px color-mix(in srgb, var(--ipos-table-status) 12%, transparent) !important;
	color: var(--ipos-table-status) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__map .ipos-table-operations__marker:not(.is-selected).is-new:hover {
	border-color: color-mix(in srgb, var(--ipos-table-status) 72%, var(--ipos-line)) !important;
	background: linear-gradient(145deg,
		color-mix(in srgb, var(--ipos-table-status) 29%, var(--ipos-surface)),
		color-mix(in srgb, var(--ipos-table-status) 15%, var(--ipos-surface-muted))) !important;
}

/* Floor handoff/progress states. `ready` means the order is waiting for a
 * service handoff, while `preparing` is work in progress. They intentionally
 * use success and info semantics instead of inheriting the active brand, so
 * the distinction survives Emerald, Ocean and Indigo in both modes. Counter
 * order cards keep their separate ticket treatment. */
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__fallback-list .ipos-table-operations__card:not(.ipos-table-operations__counter-order-card):not(.is-selected):is(
	.is-preparing,
	.is-ready
) {
	border-color: color-mix(in srgb, var(--ipos-table-status) 52%, var(--ipos-line)) !important;
	background: linear-gradient(145deg,
		color-mix(in srgb, var(--ipos-table-status) 18%, var(--ipos-surface)),
		color-mix(in srgb, var(--ipos-table-status) 8%, var(--ipos-surface-muted))) !important;
	box-shadow: inset 4px 0 0 color-mix(in srgb, var(--ipos-table-status) 84%, transparent),
		inset 0 1px 0 var(--ipos-lg-inner-highlight),
		0 8px 20px color-mix(in srgb, var(--ipos-table-status) 11%, transparent) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__fallback-list .ipos-table-operations__card:not(.ipos-table-operations__counter-order-card):not(.is-selected):is(
	.is-preparing,
	.is-ready
) :where(
	.ipos-table-operations__card-name strong,
	.ipos-table-operations__table-glyph
) {
	color: color-mix(in srgb, var(--ipos-table-status) 82%, var(--ipos-ink)) !important;
	stroke: currentColor !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__fallback-list .ipos-table-operations__card:not(.ipos-table-operations__counter-order-card):is(
	.is-preparing,
	.is-ready
) .ipos-table-operations__card-state {
	display: inline-flex;
	min-height: 27px;
	align-items: center;
	justify-content: center;
	gap: 7px;
	justify-self: center;
	padding: 5px 9px;
	border: 1px solid color-mix(in srgb, var(--ipos-table-status) 38%, var(--ipos-line));
	border-radius: 999px;
	background: color-mix(in srgb, var(--ipos-table-status) 11%, var(--ipos-surface));
	color: var(--ipos-table-status) !important;
	font-size: 12px;
	font-weight: 820;
	line-height: 1;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight);
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__fallback-list .ipos-table-operations__card:not(.ipos-table-operations__counter-order-card):is(
	.is-preparing,
	.is-ready
) .ipos-table-operations__card-state::before {
	width: 7px;
	height: 7px;
	flex: 0 0 7px;
	border-radius: 50%;
	background: currentColor;
	box-shadow: 0 0 0 4px color-mix(in srgb, currentColor 13%, transparent);
	content: "";
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__fallback-list .ipos-table-operations__card:not(.ipos-table-operations__counter-order-card):not(.is-selected):is(
	.is-preparing,
	.is-ready
):hover {
	border-color: color-mix(in srgb, var(--ipos-table-status) 72%, var(--ipos-line)) !important;
	background: linear-gradient(145deg,
		color-mix(in srgb, var(--ipos-table-status) 24%, var(--ipos-surface)),
		color-mix(in srgb, var(--ipos-table-status) 11%, var(--ipos-surface-muted))) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__map .ipos-table-operations__marker:not(.is-selected):is(
	.is-preparing,
	.is-ready
) {
	border-color: color-mix(in srgb, var(--ipos-table-status) 58%, var(--ipos-line)) !important;
	background: linear-gradient(145deg,
		color-mix(in srgb, var(--ipos-table-status) 19%, var(--ipos-surface)),
		color-mix(in srgb, var(--ipos-table-status) 8%, var(--ipos-surface-muted))) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight),
		0 7px 18px color-mix(in srgb, var(--ipos-table-status) 11%, transparent) !important;
	color: var(--ipos-table-status) !important;
}

/* Operations table selection: selection is brand-owned; service status stays
 * an isolated semantic label. This removes the old green ring/shadow from the
 * selected card while preserving green/amber/blue meaning in the label. */
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-table-operations__card.is-selected,
	.ipos-table-operations__marker.is-selected
) {
	border-color: var(--ipos-ink) !important;
	background: linear-gradient(145deg, var(--ipos-accent-surface-strong), var(--ipos-accent-surface)) !important;
	box-shadow: inset 0 0 0 1px var(--ipos-lg-inner-highlight), 0 0 0 3px var(--ipos-accent-shadow), 0 14px 26px color-mix(in srgb, var(--ipos-accent) 14%, transparent) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__card.is-selected {
	border-left-color: var(--ipos-ink) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__card.is-selected :where(
	.ipos-table-operations__card-name strong,
	.ipos-table-operations__table-glyph
) {
	color: var(--ipos-ink) !important;
	stroke: currentColor;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__card.is-selected :where(
	.ipos-table-operations__card-state.is-empty,
	.ipos-table-operations__card-state.is-serving
) {
	color: var(--ipos-success) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__card-state.is-empty {
	color: var(--ipos-lg-ink-muted) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__card.is-selected .ipos-table-operations__card-state.is-work {
	color: var(--ipos-warning) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__card.is-selected .ipos-table-operations__card-state.is-payment_requested {
	color: var(--ipos-danger) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__card.is-selected .ipos-table-operations__card-state.is-paying {
	color: var(--ipos-info) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__card.is-selected .ipos-table-operations__card-state.is-preparing {
	color: var(--ipos-info) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__card.is-selected .ipos-table-operations__card-state.is-ready {
	color: var(--ipos-success) !important;
}

/* IPOS-360: the list fallback can reach 120px cards before the phone media
 * query activates. Compact only the status typography inside a narrow floor
 * container so operational labels stay on one deliberate line without
 * changing their copy or widening the cards. */
@container ipos-floor (max-width: 620px) {
	body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__floor .ipos-table-operations__fallback-list .ipos-table-operations__card:not(.ipos-table-operations__counter-order-card) .ipos-table-operations__card-state {
		max-width: 100%;
		font-size: 11px;
		line-height: 1.1;
		white-space: nowrap;
	}
	body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__floor .ipos-table-operations__fallback-list .ipos-table-operations__card:not(.ipos-table-operations__counter-order-card):is(.is-preparing, .is-ready) .ipos-table-operations__card-state {
		gap: 4px;
		padding: 4px 6px;
		font-size: 11px;
	}
	body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__floor .ipos-table-operations__fallback-list .ipos-table-operations__card:not(.ipos-table-operations__counter-order-card):is(.is-preparing, .is-ready) .ipos-table-operations__card-state::before {
		width: 6px;
		height: 6px;
		flex-basis: 6px;
	}
}

/* Operations status badge: “Sẵn sàng phục vụ” is a real success/available
 * state, not a muted Indigo control. Keep it semantic while the selected round
 * tabs and table card remain brand-owned. */
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-table-operations__badge.is-empty,
	.ipos-table-operations__badge.is-available
) {
	border-color: color-mix(in srgb, var(--ipos-success) 38%, var(--ipos-line)) !important;
	background: var(--ipos-success-soft) !important;
	color: var(--ipos-success) !important;
}

/* Profile: logo actions are brand-owned controls; the preview stage is a
 * theme-owned glass context around an intentionally neutral receipt paper. */
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-store-profile__upload,
	.ipos-store-profile__preview-tabs
) {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-accent-surface) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile__preview-tabs {
	overflow: hidden;
}
@media (max-width: 1100px) {
	body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile__preview-indicator {
		display: none !important;
	}
	body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile__preview-tabs button[aria-pressed="true"] {
		background: var(--ipos-accent-surface-strong) !important;
	}
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile__upload:hover {
	border-color: var(--ipos-accent-hover) !important;
	background: var(--ipos-accent-hover) !important;
	color: var(--ipos-accent-ink) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile__logo-preview {
	border-color: var(--ipos-accent-border) !important;
	background: linear-gradient(145deg, color-mix(in srgb, var(--ipos-accent) 6%, var(--ipos-surface)), color-mix(in srgb, var(--ipos-accent) 12%, var(--ipos-surface-muted))) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile__preview-tabs button[aria-pressed="true"] {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-lg-content) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile__preview-indicator {
	box-shadow: 0 3px 10px color-mix(in srgb, var(--ipos-accent) 18%, transparent) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile__paper-stage {
	border-color: color-mix(in srgb, var(--ipos-accent) 32%, var(--ipos-line)) !important;
	background: linear-gradient(145deg, color-mix(in srgb, var(--ipos-accent) 8%, var(--ipos-surface)), color-mix(in srgb, var(--ipos-accent) 2%, var(--ipos-surface-muted))) !important;
}

/* Coupon guidance is informational chrome, not a fixed Emerald surface. */
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-coupons__guide > span {
	background: var(--ipos-accent-surface-strong) !important;
	color: var(--ipos-accent) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 6px 16px var(--ipos-accent-shadow) !important;
}

/* Primary controls must carry the same accent through their resting and hover
 * shadows; the route fix styles otherwise leave a literal Emerald shadow. */
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-team__primary,
	.ipos-coupons__primary
) {
	box-shadow: 0 8px 18px var(--ipos-accent-shadow) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-team__primary:hover,
	.ipos-coupons__primary:hover
) {
	box-shadow: 0 10px 22px color-mix(in srgb, var(--ipos-accent) 20%, transparent) !important;
}

/* Coupon drawer/backdrop are hidden until interaction, so they need the same
 * contextual audit as the visible page. The route fix stylesheet previously
 * painted a green gradient and green overlay regardless of the active theme. */
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-coupons__backdrop {
	background: var(--ipos-overlay-backdrop) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-coupons__drawer {
	border-color: var(--ipos-overlay-line) !important;
	background: linear-gradient(145deg, color-mix(in srgb, var(--ipos-overlay-surface) 92%, var(--ipos-accent) 8%), color-mix(in srgb, var(--ipos-overlay-surface) 86%, var(--ipos-accent) 14%)) !important;
	color: var(--ipos-overlay-ink) !important;
	box-shadow: -24px 0 80px var(--ipos-overlay-backdrop) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-coupons__drawer > header {
	border-color: var(--ipos-line) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-coupons__drawer > header button {
	border-color: var(--ipos-line-strong) !important;
	background: var(--ipos-button-secondary-bg) !important;
	color: var(--ipos-button-secondary-text) !important;
}

/* Light-mode overlays should be neutral within their own canvas family; the
 * original green-black backdrop was a hidden cross-theme leak. */
body.ipos-app-shell[data-ipos-palette="ocean"][data-ipos-mode="light"] {
	--ipos-overlay-backdrop: rgb(7 22 30 / 54%);
}
body.ipos-app-shell[data-ipos-palette="indigo"][data-ipos-mode="light"] {
	--ipos-overlay-backdrop: rgb(18 15 40 / 54%);
}

/* Team: initials and role metadata are not success states. Only the active or
 * revoked status badge keeps semantic colour; avatars and role labels stay in
 * the current theme/neutral family. */
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-team__avatar {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-accent-surface-strong) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-team__badge--ipos_owner,
	.ipos-team__badge--ipos_store_manager,
	.ipos-team__badge--ipos_cashier,
	.ipos-team__badge--ipos_service_staff
) {
	border-color: var(--ipos-line) !important;
	background: var(--ipos-surface-muted) !important;
	color: var(--ipos-muted) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-team__badge--active {
	border-color: color-mix(in srgb, var(--ipos-success) 32%, var(--ipos-line)) !important;
	background: var(--ipos-success-soft) !important;
	color: var(--ipos-success) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-team__primary
) {
	border-color: var(--ipos-button-primary-bg) !important;
	background: var(--ipos-button-primary-bg) !important;
	color: var(--ipos-button-primary-text) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-team__primary:hover {
	border-color: var(--ipos-button-primary-hover) !important;
	background: var(--ipos-button-primary-hover) !important;
	color: var(--ipos-button-primary-text) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-team__member:hover {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-accent-surface) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-team__credential {
	border-color: color-mix(in srgb, var(--ipos-success) 36%, var(--ipos-line)) !important;
	background: var(--ipos-success-soft) !important;
	color: var(--ipos-success) !important;
}

/* IPOS-269R-FU3: contextual harmony for the remaining staff routes. The
 * report, activity and menu stylesheets predate the shared theme engine and
 * still paint Emerald gradients, borders and shadows at the route boundary.
 * Rebind the complete visual tuple (parent surface, child control, semantic
 * state, hover/focus and hidden overlay) without changing data behaviour. */

/* Revenue report: range selection is brand-owned; finance/payment meaning is
 * semantic. The moving preset indicator and its shadow must follow the active
 * palette, including dark mode where its text uses the action ink. */
body.ipos-app-shell.ipos-app-view-report:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report :where(
	.ipos-revenue-report__filters,
	.ipos-revenue-report__finance
) {
	border-color: var(--ipos-lg-edge) !important;
	background: linear-gradient(145deg, var(--ipos-lg-inner-highlight), color-mix(in srgb, var(--ipos-accent) 3%, var(--ipos-lg-content))) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 18px 38px var(--ipos-lg-shadow) !important;
}
body.ipos-app-shell.ipos-app-view-report:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report__presets {
	border-color: var(--ipos-line) !important;
	background: color-mix(in srgb, var(--ipos-surface) 78%, transparent) !important;
}
body.ipos-app-shell.ipos-app-view-report:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report__presets button {
	border-right-color: var(--ipos-line) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-report:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report__presets button[aria-selected="true"] {
	color: var(--ipos-accent-ink) !important;
}
body.ipos-app-shell.ipos-app-view-report:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report__preset-indicator {
	border: 1px solid var(--ipos-accent-border) !important;
	background: var(--ipos-accent) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 7px 16px var(--ipos-accent-shadow) !important;
}
body.ipos-app-shell.ipos-app-view-report:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report__range-label svg {
	stroke: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-report:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report__custom-dates input {
	border-color: var(--ipos-field-line) !important;
	background: var(--ipos-field-surface) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-report:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report__custom-dates input:focus {
	border-color: var(--ipos-field-line-focus) !important;
	box-shadow: 0 0 0 3px var(--ipos-focus) !important;
}
body.ipos-app-shell.ipos-app-view-report:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report__error {
	border-color: color-mix(in srgb, var(--ipos-warning) 38%, var(--ipos-line)) !important;
	background: var(--ipos-warning-soft) !important;
	color: var(--ipos-warning) !important;
}
body.ipos-app-shell.ipos-app-view-report:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report__stat-strip > div {
	border-left-color: var(--ipos-line) !important;
}
body.ipos-app-shell.ipos-app-view-report:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-revenue-report__chart-panel,
	.ipos-revenue-report__payment-panel,
	.ipos-revenue-report__top-products,
	.ipos-revenue-report__recent-bills,
	.ipos-revenue-report__all-bills,
	.ipos-revenue-report__empty
) {
	border-color: var(--ipos-line) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 10px 24px var(--ipos-lg-shadow) !important;
}
body.ipos-app-shell.ipos-app-view-report:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-chart__grid {
	stroke: var(--ipos-line) !important;
}
body.ipos-app-shell.ipos-app-view-report:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report__payment-bar {
	background: color-mix(in srgb, var(--ipos-line) 46%, var(--ipos-surface-muted)) !important;
}
body.ipos-app-shell.ipos-app-view-report:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-revenue-report__payment-bar .is-cash,
	.ipos-revenue-report__payment-list > .is-cash .ipos-revenue-report__payment-dot,
	.ipos-revenue-report__method.is-cash::before
) {
	background: var(--ipos-success) !important;
}
body.ipos-app-shell.ipos-app-view-report:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-revenue-report__payment-bar .is-transfer,
	.ipos-revenue-report__payment-list > .is-transfer .ipos-revenue-report__payment-dot,
	.ipos-revenue-report__method.is-transfer::before
) {
	background: var(--ipos-info) !important;
}
body.ipos-app-shell.ipos-app-view-report:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-revenue-report__payment-bar .is-card,
	.ipos-revenue-report__payment-list > .is-card .ipos-revenue-report__payment-dot,
	.ipos-revenue-report__method.is-card::before
) {
	background: var(--ipos-warning) !important;
}
body.ipos-app-shell.ipos-app-view-report:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report__payment-bar span {
	border-right-color: var(--ipos-report-paper) !important;
}
body.ipos-app-shell.ipos-app-view-report:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) [data-report-comparison]:not(.is-down) {
	color: var(--ipos-success) !important;
}
body.ipos-app-shell.ipos-app-view-report:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) [data-report-comparison].is-down {
	color: var(--ipos-warning) !important;
}

/* Activity history: the event icon keeps its semantic role, while the page,
 * timeline, filters and links belong to the active glassic theme. */
body.ipos-app-shell.ipos-app-view-activity:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-activity-history :where(
	.ipos-activity-history__header,
	.ipos-activity-history__filters
) {
	border-color: var(--ipos-lg-edge) !important;
	background: linear-gradient(145deg, var(--ipos-lg-inner-highlight), color-mix(in srgb, var(--ipos-accent) 3%, var(--ipos-lg-content))) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 18px 38px var(--ipos-lg-shadow) !important;
}
body.ipos-app-shell.ipos-app-view-activity:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-activity-history__back,
body.ipos-app-shell.ipos-app-view-activity:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-activity-history__load-more {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-button-secondary-bg) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-activity:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-activity-history__back:hover,
	.ipos-activity-history__load-more:hover
) {
	border-color: var(--ipos-accent-hover) !important;
	background: var(--ipos-button-secondary-hover) !important;
	color: var(--ipos-accent-hover) !important;
}
body.ipos-app-shell.ipos-app-view-activity:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-activity-history__filters :where(
	input,
	select,
	.ipos-styled-select__trigger
),
body.ipos-app-shell.ipos-app-view-activity:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-activity-history__filters > button {
	border-color: var(--ipos-field-line) !important;
	background: var(--ipos-field-surface) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-activity:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-activity-history__filters > button:hover {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-accent-surface) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-activity:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-activity-history__filters .ipos-styled-select__option {
	border-color: transparent !important;
	background: var(--ipos-selection-surface-solid) !important;
	color: var(--ipos-overlay-ink) !important;
}
body.ipos-app-shell.ipos-app-view-activity:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-activity-history__filters .ipos-styled-select__option:is(:hover, :focus-visible, [aria-selected="true"]) {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-selection-active-solid) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-activity:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-activity-history__filters :where(
	input,
	select,
	.ipos-styled-select__trigger
):focus {
	border-color: var(--ipos-field-line-focus) !important;
	box-shadow: 0 0 0 3px var(--ipos-focus) !important;
}
body.ipos-app-shell.ipos-app-view-activity:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-activity-history__filters .ipos-styled-select__menu {
	border-color: var(--ipos-overlay-line) !important;
	background: var(--ipos-selection-surface-solid) !important;
	box-shadow: 0 16px 34px var(--ipos-overlay-backdrop), inset 0 1px 0 var(--ipos-lg-inner-highlight) !important;
	color: var(--ipos-overlay-ink) !important;
}
body.ipos-app-shell.ipos-app-view-activity:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-activity-history__timeline {
	border-color: var(--ipos-line) !important;
	background: var(--ipos-lg-content) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 14px 36px var(--ipos-lg-shadow) !important;
}
body.ipos-app-shell.ipos-app-view-activity:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-activity-history__day + .ipos-activity-history__day,
	.ipos-activity-history__item
) {
	border-top-color: var(--ipos-activity-line) !important;
}
body.ipos-app-shell.ipos-app-view-activity:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-activity-history__item {
	background: color-mix(in srgb, var(--ipos-surface) 72%, transparent) !important;
}
body.ipos-app-shell.ipos-app-view-activity:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-activity-history__item:hover {
	background: color-mix(in srgb, var(--ipos-accent) 7%, var(--ipos-surface)) !important;
}
body.ipos-app-shell.ipos-app-view-activity:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-activity-history__item a {
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-activity:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-activity-history__icon {
	border-color: var(--ipos-activity-line) !important;
	background: var(--ipos-activity-tint) !important;
	color: var(--ipos-activity-accent) !important;
}

/* Menu management: tabs, list/editor containers and controls use the active
 * brand family; selling/draft/paused/stock and default-size states retain
 * their semantic ownership. Hidden inspector/category/discard layers are
 * themed too so the first reveal does not flash the old Emerald palette. */
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-management__sections {
	border-color: var(--ipos-line) !important;
	background: color-mix(in srgb, var(--ipos-accent) 4%, var(--ipos-surface)) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-management__section-indicator {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-accent-surface-strong) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 4px 11px var(--ipos-accent-shadow) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-management__sections button {
	color: var(--ipos-muted) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-management__sections button[aria-pressed="true"] {
	border-color: transparent !important;
	background: transparent !important;
	box-shadow: none !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-management__sections button[aria-pressed="false"]:hover {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-accent-surface) !important;
	color: var(--ipos-accent-hover) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-menu-management__toolbar,
	.ipos-menu-directory,
	.ipos-menu-management__settings,
	.ipos-menu-inspector
) {
	border-color: var(--ipos-lg-edge) !important;
	background: linear-gradient(145deg, var(--ipos-lg-inner-highlight), color-mix(in srgb, var(--ipos-accent) 3%, var(--ipos-lg-content))) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 16px 38px var(--ipos-lg-shadow) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-menu-management__header-actions > [data-ipos-menu-header-action],
	.ipos-menu-inspector__actions .is-primary,
	.ipos-menu-category-sheet footer button,
	.ipos-menu-settings__form button
) {
	border-color: var(--ipos-button-primary-bg) !important;
	background: var(--ipos-button-primary-bg) !important;
	color: var(--ipos-button-primary-text) !important;
	box-shadow: 0 8px 18px var(--ipos-accent-shadow) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-menu-management__header-actions > [data-ipos-menu-header-action]:hover,
	.ipos-menu-inspector__actions .is-primary:hover,
	.ipos-menu-category-sheet footer button:hover,
	.ipos-menu-settings__form button:hover
) {
	border-color: var(--ipos-button-primary-hover) !important;
	background: var(--ipos-button-primary-hover) !important;
	color: var(--ipos-button-primary-text) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-management__history-link {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-button-secondary-bg) !important;
	color: var(--ipos-accent) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 8px 18px var(--ipos-accent-shadow) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-management__history-link:hover {
	border-color: var(--ipos-accent-hover) !important;
	background: var(--ipos-button-secondary-hover) !important;
	color: var(--ipos-accent-hover) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-menu-management__search input,
	.ipos-menu-picker:not(.ipos-field--floating) > button,
	.ipos-menu-picker.ipos-field--floating > button,
	.ipos-menu-management__refresh,
	.ipos-menu-inspector input:not([type="file"]):not([type="hidden"]),
	.ipos-menu-inspector textarea,
	.ipos-menu-inspector__price-input,
	.ipos-menu-inspector__image-action,
	.ipos-menu-directory__actions button,
	.ipos-menu-directory footer button,
	.ipos-menu-variation-row__toggle,
	.ipos-menu-variation-row__default,
	.ipos-menu-inspector__add-size
) {
	border-color: var(--ipos-field-line) !important;
	background: var(--ipos-field-surface) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-menu-management__search input:focus,
	.ipos-menu-picker > button:focus,
	.ipos-menu-inspector input:not([type="file"]):not([type="hidden"]):focus,
	.ipos-menu-inspector textarea:focus,
	.ipos-menu-inspector__price-input:focus-within
) {
	border-color: var(--ipos-field-line-focus) !important;
	box-shadow: 0 0 0 3px var(--ipos-focus) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-menu-picker__popover,
	.ipos-menu-inspector__overflow-menu,
	.ipos-menu-category-sheet,
	.ipos-menu-management__discard > div
) {
	border-color: var(--ipos-overlay-line) !important;
	background: var(--ipos-selection-surface-solid) !important;
	color: var(--ipos-overlay-ink) !important;
	box-shadow: 0 20px 52px var(--ipos-overlay-backdrop), inset 0 1px 0 var(--ipos-lg-inner-highlight) !important;
	-webkit-backdrop-filter: none !important;
	backdrop-filter: none !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-picker__popover button {
	border-color: transparent !important;
	background: var(--ipos-selection-surface-solid) !important;
	color: var(--ipos-overlay-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-picker__popover button:hover,
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-picker__popover button:focus-visible {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-selection-active-solid) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-picker__popover button[aria-selected="true"] {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-selection-active-solid) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-picker__popover button[aria-selected="true"]::before {
	border-color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-category-sheet__option {
	color: var(--ipos-overlay-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-category-sheet__option:hover,
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-category-sheet__option:focus-visible {
	background: var(--ipos-accent-surface) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-category-sheet__option[aria-checked="true"] {
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-category-sheet__option[aria-checked="true"] .ipos-menu-category-sheet__check {
	border-color: var(--ipos-accent) !important;
	background: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-menu-management__backdrop,
	.ipos-menu-management__discard
) {
	background: var(--ipos-overlay-backdrop) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory > header,
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector > header,
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector__actions {
	border-color: var(--ipos-line) !important;
	background: color-mix(in srgb, var(--ipos-surface) 72%, transparent) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory__item {
	border-bottom-color: var(--ipos-line) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory__item:hover {
	background: var(--ipos-accent-surface) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory__media,
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector__identity-image {
	border-color: var(--ipos-accent-border) !important;
	background: linear-gradient(145deg, var(--ipos-accent-surface-strong), var(--ipos-surface-muted)) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory__open span,
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory > header > span {
	color: var(--ipos-muted) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory__price {
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory__badge.is-active {
	border-color: color-mix(in srgb, var(--ipos-success) 38%, var(--ipos-line)) !important;
	background: var(--ipos-success-soft) !important;
	color: var(--ipos-success) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory__badge.is-paused {
	border-color: color-mix(in srgb, var(--ipos-warning) 38%, var(--ipos-line)) !important;
	background: var(--ipos-warning-soft) !important;
	color: var(--ipos-warning) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory__badge.is-draft {
	border-color: var(--ipos-line) !important;
	background: var(--ipos-surface-muted) !important;
	color: var(--ipos-muted) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory__badge.is-stock {
	border-color: color-mix(in srgb, var(--ipos-danger) 38%, var(--ipos-line)) !important;
	background: var(--ipos-danger-soft) !important;
	color: var(--ipos-danger) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-segmented {
	border-color: var(--ipos-line) !important;
	background: color-mix(in srgb, var(--ipos-accent) 4%, var(--ipos-surface)) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-segmented__indicator {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-accent-surface-strong) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 4px 11px var(--ipos-accent-shadow) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-segmented button {
	color: var(--ipos-muted) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-segmented button[aria-checked="true"] {
	border-color: transparent !important;
	background: transparent !important;
	box-shadow: none !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-variation-row__default[aria-pressed="true"] {
	border-color: color-mix(in srgb, var(--ipos-warning) 55%, var(--ipos-line)) !important;
	background: var(--ipos-warning-soft) !important;
	color: var(--ipos-warning) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector__status-row [role="switch"][aria-checked="true"] {
	border-color: color-mix(in srgb, var(--ipos-success) 38%, var(--ipos-line)) !important;
	background: var(--ipos-success-soft) !important;
	color: var(--ipos-success) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector__status-row [role="switch"][aria-checked="false"] {
	border-color: var(--ipos-field-line) !important;
	background: var(--ipos-field-surface) !important;
	color: var(--ipos-muted) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector__group {
	border-color: var(--ipos-line) !important;
	background: color-mix(in srgb, var(--ipos-surface) 52%, transparent) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector__group--selling .ipos-menu-inspector__variable:not([hidden]) {
	border-color: var(--ipos-line) !important;
	background: var(--ipos-field-surface) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector__group--selling .ipos-menu-inspector__pricing-head::before {
	background: var(--ipos-accent) !important;
	box-shadow: 0 0 0 3px var(--ipos-accent-surface) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector__group--selling .ipos-menu-inspector__pricing-head > span {
	color: var(--ipos-accent) !important;
}

/* Keep the header CTA explicit: the legacy route rule targets every header
 * button and can otherwise leave “Thêm món” on a neutral glass surface. */
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-management .ipos-menu-management__header-actions > button[data-ipos-menu-header-action]:not(.is-primary):not(.is-danger):not(.is-active):not([aria-selected="true"]):not([aria-pressed="true"]):not([hidden]):not([type="submit"]) {
	border-color: var(--ipos-button-primary-bg) !important;
	background: var(--ipos-button-primary-bg) !important;
	background-color: var(--ipos-button-primary-bg) !important;
	background-image: none !important;
	color: var(--ipos-button-primary-text) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-management .ipos-menu-management__header-actions > button[data-ipos-menu-header-action]:not(.is-primary):not(.is-danger):not(.is-active):not([aria-selected="true"]):not([aria-pressed="true"]):not([hidden]):not([type="submit"]):hover {
	border-color: var(--ipos-button-primary-hover) !important;
	background-color: var(--ipos-button-primary-hover) !important;
	color: var(--ipos-button-primary-text) !important;
}

body.ipos-app-shell.ipos-app-view-activity:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-activity-history__item {
	border-inline-color: var(--ipos-line) !important;
}

/* Report route still contains a few late fixed Emerald literals. Rebind them
 * to the active text family so dark Ocean/Indigo reports do not mix green
 * values with a blue/purple surface. */
body.ipos-app-shell.ipos-app-view-report:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report__range-label {
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-report:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report__range-label svg {
	stroke: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-report:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report__stat-strip dd {
	color: var(--ipos-ink) !important;
}

/* IPOS-269R-FU7: dark-theme contrast and contextual harmony remediation.
 * The earlier ownership audit correctly separated brand and semantic roles,
 * but several route-local light surfaces still won at the rendered component
 * boundary. This layer owns the complete tuple: parent surface, child ink,
 * border, state tint, overlay and interaction feedback. Receipt paper remains
 * deliberately neutral because it represents a physical print result. */
body.ipos-app-shell:not(.ipos-app-view-customer) {
	/* The palette already supplies verified on-accent ink. Reuse it for every
	 * primary control instead of inheriting the legacy always-white label. */
	--ipos-button-primary-text: var(--ipos-accent-ink);
}
body.ipos-app-shell[data-ipos-mode="dark"]:not(.ipos-app-view-customer) {
	--ipos-control-surface: color-mix(in srgb, var(--ipos-lg-glass-thick) 86%, var(--ipos-canvas));
	--ipos-control-surface-hover: color-mix(in srgb, var(--ipos-accent) 12%, var(--ipos-control-surface));
	--ipos-control-surface-selected: color-mix(in srgb, var(--ipos-accent) 20%, var(--ipos-control-surface));
	--ipos-elevated-surface: color-mix(in srgb, var(--ipos-lg-glass-thick) 92%, var(--ipos-canvas));
	--ipos-success-soft: color-mix(in srgb, var(--ipos-success) 17%, var(--ipos-elevated-surface));
	--ipos-warning-soft: color-mix(in srgb, var(--ipos-warning) 17%, var(--ipos-elevated-surface));
	--ipos-danger-soft: color-mix(in srgb, var(--ipos-danger) 16%, var(--ipos-elevated-surface));
	--ipos-info-soft: color-mix(in srgb, var(--ipos-info) 17%, var(--ipos-elevated-surface));
	--ipos-overlay-surface: color-mix(in srgb, var(--ipos-lg-glass-thick) 94%, var(--ipos-canvas));
	--ipos-field-surface: color-mix(in srgb, var(--ipos-lg-glass-thick) 90%, var(--ipos-canvas));
	--ipos-field-surface-hover: color-mix(in srgb, var(--ipos-accent) 9%, var(--ipos-field-surface));
}

/* Navigation hierarchy: neutral hover, branded selection. They must remain
 * visibly different when the sidebar is dark and translucent. */
body.ipos-app-shell.ipos-nav-ia[data-ipos-mode="dark"]:not(.ipos-app-view-customer) .ipos-admin-navigation__parent:not(:has(.ipos-admin-navigation__parent-link[aria-current="page"])):hover,
body.ipos-app-shell.ipos-nav-ia[data-ipos-mode="dark"]:not(.ipos-app-view-customer) .ipos-admin-navigation__child:not(.is-active):hover {
	border-color: var(--ipos-line-strong) !important;
	background: linear-gradient(145deg, var(--ipos-lg-inner-highlight), var(--ipos-control-surface-hover)) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 7px 18px var(--ipos-lg-shadow) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-nav-ia[data-ipos-mode="dark"]:not(.ipos-app-view-customer) .ipos-admin-navigation__child.is-active {
	border-color: var(--ipos-accent-border) !important;
	background: linear-gradient(145deg, color-mix(in srgb, var(--ipos-accent) 24%, var(--ipos-control-surface)), var(--ipos-accent-surface-strong)) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 8px 20px var(--ipos-accent-shadow) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-nav-ia[data-ipos-mode="dark"]:not(.ipos-app-view-customer) .ipos-admin-sidebar.is-collapsed .ipos-admin-navigation__tooltip {
	border-color: var(--ipos-overlay-line) !important;
	background: var(--ipos-overlay-surface) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 14px 32px var(--ipos-overlay-backdrop) !important;
	color: var(--ipos-overlay-ink) !important;
	-webkit-backdrop-filter: blur(20px) saturate(1.14);
	backdrop-filter: blur(20px) saturate(1.14);
}

/* Operations attention rail and drawer. Semantic hue carries meaning while
 * the number badge and copy stay legible on their immediate surface. */
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__attention-card.is-new {
	--ipos-attention-role: var(--ipos-warning);
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__attention-card.is-work {
	--ipos-attention-role: var(--ipos-success);
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__attention-card.is-payment {
	--ipos-attention-role: var(--ipos-danger);
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__attention-card.is-cleanup {
	--ipos-attention-role: var(--ipos-info);
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__attention-card {
	border-color: color-mix(in srgb, var(--ipos-attention-role) 48%, var(--ipos-line)) !important;
	background: linear-gradient(145deg,
		color-mix(in srgb, var(--ipos-attention-role) 19%, var(--ipos-control-surface)),
		color-mix(in srgb, var(--ipos-attention-role) 10%, var(--ipos-elevated-surface))) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight) !important;
	color: var(--ipos-attention-role) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__attention-card strong {
	border: 1px solid color-mix(in srgb, var(--ipos-attention-role) 42%, var(--ipos-line)) !important;
	background: color-mix(in srgb, var(--ipos-attention-role) 16%, var(--ipos-elevated-surface)) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight) !important;
	color: var(--ipos-attention-role) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__attention-drawer {
	border-color: var(--ipos-overlay-line) !important;
	background: var(--ipos-overlay-surface) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 22px 60px var(--ipos-overlay-backdrop) !important;
	color: var(--ipos-overlay-ink) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__attention-drawer-head {
	border-bottom-color: var(--ipos-line) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__attention-drawer-head :where(strong, h2) {
	color: var(--ipos-overlay-ink) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__attention-drawer-head button {
	border-color: var(--ipos-line-strong) !important;
	background: var(--ipos-control-surface) !important;
	color: var(--ipos-overlay-ink) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__attention-item {
	border-color: color-mix(in srgb, var(--ipos-warning) 36%, var(--ipos-line)) !important;
	background: var(--ipos-warning-soft) !important;
	color: var(--ipos-overlay-ink) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__attention-item:is(.is-payment, .is-payment_requested) {
	border-color: color-mix(in srgb, var(--ipos-danger) 40%, var(--ipos-line)) !important;
	background: var(--ipos-danger-soft) !important;
	color: var(--ipos-overlay-ink) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-table-operations__attention-resolved-title,
	.ipos-table-operations__attention-resolved-item
) {
	border-color: var(--ipos-line) !important;
	color: var(--ipos-overlay-muted) !important;
}

/* Operations table cards: status surfaces become scannable without turning
 * the grid into flat saturated tiles. Empty remains neutral. */
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__fallback-list .ipos-table-operations__card:not(.is-selected):is(
	.is-new,
	.is-serving,
	.is-paying,
	.is-payment_requested,
	.is-work,
	.is-cleanup_pending
) {
	border-color: color-mix(in srgb, var(--ipos-table-status) 58%, var(--ipos-line)) !important;
	background: linear-gradient(145deg,
		color-mix(in srgb, var(--ipos-table-status) 27%, var(--ipos-control-surface)),
		color-mix(in srgb, var(--ipos-table-status) 13%, var(--ipos-elevated-surface))) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 8px 20px color-mix(in srgb, var(--ipos-table-status) 13%, transparent) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__fallback-list .ipos-table-operations__card:not(.is-selected):is(
	.is-new,
	.is-serving,
	.is-paying,
	.is-payment_requested,
	.is-work,
	.is-cleanup_pending
) .ipos-table-operations__card-state {
	color: var(--ipos-table-status) !important;
	font-weight: 800 !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__map .ipos-table-operations__marker:not(.is-selected).is-new {
	border-color: color-mix(in srgb, var(--ipos-table-status) 66%, var(--ipos-line)) !important;
	background: linear-gradient(145deg,
		color-mix(in srgb, var(--ipos-table-status) 28%, var(--ipos-control-surface)),
		color-mix(in srgb, var(--ipos-table-status) 14%, var(--ipos-elevated-surface))) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight),
		0 8px 20px color-mix(in srgb, var(--ipos-table-status) 15%, transparent) !important;
	color: var(--ipos-table-status) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__fallback-list .ipos-table-operations__card:not(.ipos-table-operations__counter-order-card):not(.is-selected):is(
	.is-preparing,
	.is-ready
) {
	border-color: color-mix(in srgb, var(--ipos-table-status) 66%, var(--ipos-line)) !important;
	background: linear-gradient(145deg,
		color-mix(in srgb, var(--ipos-table-status) 24%, var(--ipos-control-surface)),
		color-mix(in srgb, var(--ipos-table-status) 12%, var(--ipos-elevated-surface))) !important;
	box-shadow: inset 4px 0 0 color-mix(in srgb, var(--ipos-table-status) 92%, transparent),
		inset 0 1px 0 var(--ipos-lg-inner-highlight),
		0 9px 22px color-mix(in srgb, var(--ipos-table-status) 15%, transparent) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__fallback-list .ipos-table-operations__card:not(.ipos-table-operations__counter-order-card):is(
	.is-preparing,
	.is-ready
) .ipos-table-operations__card-state {
	border-color: color-mix(in srgb, var(--ipos-table-status) 54%, var(--ipos-line));
	background: color-mix(in srgb, var(--ipos-table-status) 17%, var(--ipos-control-surface));
	color: var(--ipos-table-status) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__map .ipos-table-operations__marker:not(.is-selected):is(
	.is-preparing,
	.is-ready
) {
	border-color: color-mix(in srgb, var(--ipos-table-status) 68%, var(--ipos-line)) !important;
	background: linear-gradient(145deg,
		color-mix(in srgb, var(--ipos-table-status) 25%, var(--ipos-control-surface)),
		color-mix(in srgb, var(--ipos-table-status) 12%, var(--ipos-elevated-surface))) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight),
		0 8px 20px color-mix(in srgb, var(--ipos-table-status) 15%, transparent) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__card.is-selected {
	--ipos-selected-accent-readable: var(--ipos-ink);
	color: var(--ipos-selected-accent-readable) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__card.is-selected :where(
	.ipos-table-operations__card-name strong,
	.ipos-table-operations__table-glyph
) {
	color: var(--ipos-selected-accent-readable) !important;
	stroke: currentColor !important;
}

/* Operations inspector: replace late matte-light literals with a hierarchy of
 * dark glass, neutral data ink and isolated semantic action panels. */
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__bill-summary {
	border-color: var(--ipos-line-strong) !important;
	background: radial-gradient(100% 130% at 100% 0%, var(--ipos-accent-surface-strong), transparent 64%), var(--ipos-control-surface) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 9px 22px var(--ipos-lg-shadow) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__bill-summary :where(span, strong, small, b) {
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__bill-summary :where(span, small) {
	color: var(--ipos-muted) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__bill-summary small b {
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations :where(
	.ipos-table-operations__stats,
	.ipos-table-operations__stats > div,
	.ipos-table-operations__round-history
) {
	border-color: var(--ipos-line) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__round-history > h3 {
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__round-history > h3::before {
	background: linear-gradient(180deg, var(--ipos-accent), var(--ipos-accent-hover)) !important;
	box-shadow: 0 0 0 3px var(--ipos-accent-shadow) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__round-detail {
	border-color: var(--ipos-line) !important;
	background: color-mix(in srgb, var(--ipos-control-surface) 72%, transparent) !important;
	box-shadow: inset 0 1px 0 color-mix(in srgb, var(--ipos-lg-inner-highlight) 58%, transparent) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__round-detail:is(:hover, .is-open) {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-control-surface-hover) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 8px 20px var(--ipos-lg-shadow) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__round-summary :where(strong, .ipos-table-operations__round-summary-total) {
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__round-summary-meta strong {
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__round-number {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-accent-surface-strong) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__round-detail-note {
	border-color: color-mix(in srgb, var(--ipos-warning) 36%, var(--ipos-line)) !important;
	background: var(--ipos-warning-soft) !important;
	color: var(--ipos-warning) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__operation-panel.is-payment-request {
	border-color: color-mix(in srgb, var(--ipos-danger) 40%, var(--ipos-line)) !important;
	background: var(--ipos-danger-soft) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__operation-panel.is-paying {
	border-color: color-mix(in srgb, var(--ipos-info) 40%, var(--ipos-line)) !important;
	background: var(--ipos-info-soft) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__operation-panel.is-ready-payment {
	border-color: color-mix(in srgb, var(--ipos-success) 40%, var(--ipos-line)) !important;
	background: var(--ipos-success-soft) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__operation-panel.is-cleanup {
	border-color: color-mix(in srgb, var(--ipos-action) 44%, var(--ipos-line)) !important;
	background: linear-gradient(145deg, color-mix(in srgb, var(--ipos-action) 10%, var(--ipos-surface)), color-mix(in srgb, var(--ipos-action) 4%, var(--ipos-canvas))) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations :where(
	.ipos-table-operations__operation-panel small,
	.ipos-table-operations__operation-panel .ipos-table-operations__hint,
	.ipos-table-operations__round-empty
) {
	color: var(--ipos-muted) !important;
}

/* Glassic primary actions: one interaction contract for payment, acceptance,
 * completion and confirmation buttons, including reduced-motion fallback. */
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-table-operations__actions .is-primary,
	.ipos-table-operations__round-detail-actions .is-primary,
	.ipos-table-operations__operation-panel > .is-primary,
	.ipos-table-operations__confirm-panel .is-primary
) {
	position: relative;
	overflow: hidden;
	isolation: isolate;
	color: var(--ipos-accent-ink) !important;
	box-shadow: inset 0 1px 0 rgb(255 255 255 / 32%), 0 10px 24px var(--ipos-accent-shadow) !important;
	transition: transform 180ms cubic-bezier(.2, .8, .2, 1), border-color 180ms ease, background 180ms ease, box-shadow 180ms ease !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-table-operations__actions .is-primary,
	.ipos-table-operations__round-detail-actions .is-primary,
	.ipos-table-operations__operation-panel > .is-primary,
	.ipos-table-operations__confirm-panel .is-primary
)::before {
	position: absolute;
	z-index: 0;
	inset: -55% -24%;
	background: linear-gradient(105deg, transparent 30%, rgb(255 255 255 / 34%) 47%, rgb(255 255 255 / 8%) 57%, transparent 72%);
	content: "";
	opacity: .5;
	pointer-events: none;
	transform: translate3d(-54%, 0, 0) rotate(-4deg);
	transition: transform 420ms cubic-bezier(.2, .8, .2, 1), opacity 180ms ease;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-table-operations__actions .is-primary,
	.ipos-table-operations__round-detail-actions .is-primary,
	.ipos-table-operations__operation-panel > .is-primary,
	.ipos-table-operations__confirm-panel .is-primary
):not(:disabled):hover {
	color: var(--ipos-accent-ink) !important;
	box-shadow: inset 0 1px 0 rgb(255 255 255 / 42%), 0 14px 30px color-mix(in srgb, var(--ipos-accent) 24%, transparent) !important;
	transform: translateY(-2px);
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-table-operations__actions .is-primary,
	.ipos-table-operations__round-detail-actions .is-primary,
	.ipos-table-operations__operation-panel > .is-primary,
	.ipos-table-operations__confirm-panel .is-primary
):not(:disabled):hover::before {
	opacity: .92;
	transform: translate3d(46%, 0, 0) rotate(-4deg);
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-table-operations__actions .is-primary,
	.ipos-table-operations__round-detail-actions .is-primary,
	.ipos-table-operations__operation-panel > .is-primary,
	.ipos-table-operations__confirm-panel .is-primary
):not(:disabled):active {
	box-shadow: inset 0 2px 5px rgb(0 0 0 / 22%), 0 6px 14px var(--ipos-accent-shadow) !important;
	transform: translateY(0) scale(.985);
}

/* Revenue report: selected range uses a luminous brand surface and verified
 * on-accent ink; surrounding filters remain neutral dark glass. */
body.ipos-app-shell.ipos-app-view-report[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report__presets {
	border-color: var(--ipos-line-strong) !important;
	background: var(--ipos-control-surface) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight) !important;
}
body.ipos-app-shell.ipos-app-view-report[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report__preset-indicator {
	border-color: color-mix(in srgb, var(--ipos-accent-hover) 68%, var(--ipos-line)) !important;
	background: linear-gradient(145deg, color-mix(in srgb, var(--ipos-accent) 88%, white), var(--ipos-accent)) !important;
	box-shadow: inset 0 1px 0 rgb(255 255 255 / 38%), 0 9px 22px var(--ipos-accent-shadow) !important;
}
body.ipos-app-shell.ipos-app-view-report[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report__presets button[aria-selected="true"] {
	background: transparent !important;
	color: var(--ipos-accent-ink) !important;
	text-shadow: 0 1px 0 rgb(255 255 255 / 12%);
}
body.ipos-app-shell.ipos-app-view-report:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report__presets button[aria-selected="true"] {
	background: transparent !important;
	color: var(--ipos-accent-ink) !important;
}
body.ipos-app-shell.ipos-app-view-report[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report__presets button:not([aria-selected="true"]):hover {
	background: var(--ipos-control-surface-hover) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-report[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report__finance-main {
	background: radial-gradient(circle at 92% 12%, var(--ipos-accent-surface-strong), transparent 38%), color-mix(in srgb, var(--ipos-success) 6%, var(--ipos-control-surface)) !important;
	box-shadow: inset -1px 0 0 var(--ipos-line), inset 0 1px 0 var(--ipos-lg-inner-highlight) !important;
}
body.ipos-app-shell.ipos-app-view-report[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report__finance-main > span {
	color: var(--ipos-muted) !important;
}
body.ipos-app-shell.ipos-app-view-report[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-revenue-report__finance-main strong {
	color: var(--ipos-success) !important;
}

/* Store profile: application chrome adapts to dark mode. The receipt itself
 * stays paper-white with print-safe ink, clearly isolated inside the stage. */
body.ipos-app-shell.ipos-app-view-profile[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile {
	--profile-surface: var(--ipos-elevated-surface) !important;
	--profile-line: var(--ipos-line-strong) !important;
	--profile-ink: var(--ipos-ink) !important;
	--profile-muted: var(--ipos-muted) !important;
}
body.ipos-app-shell.ipos-app-view-profile[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-store-profile__form-panel,
	.ipos-store-profile__preview-panel
) {
	border-color: var(--ipos-lg-edge) !important;
	background: linear-gradient(145deg, var(--ipos-lg-inner-highlight), var(--ipos-lg-content)) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 20px 48px var(--ipos-lg-shadow) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-profile[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile :where(h1, h2, strong, label) {
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-profile[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile :where(
	.ipos-store-profile__heading > p,
	.ipos-store-profile__logo-copy p,
	.ipos-store-profile__preview-note,
	.ipos-store-profile__save-state
) {
	color: var(--ipos-muted) !important;
}
body.ipos-app-shell.ipos-app-view-profile[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile__field :where(input, textarea) {
	border-color: var(--ipos-field-line) !important;
	background: var(--ipos-field-surface) !important;
	color: var(--ipos-ink) !important;
	box-shadow: inset 0 1px 0 color-mix(in srgb, var(--ipos-lg-inner-highlight) 62%, transparent) !important;
}
body.ipos-app-shell.ipos-app-view-profile[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile__field :where(input, textarea):hover {
	border-color: var(--ipos-field-line-hover) !important;
	background: var(--ipos-field-surface-hover) !important;
}
body.ipos-app-shell.ipos-app-view-profile[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile__field span,
body.ipos-app-shell.ipos-app-view-profile[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile__field span::after {
	background: var(--profile-surface) !important;
	color: var(--ipos-muted) !important;
}
body.ipos-app-shell.ipos-app-view-profile[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-store-profile__segmented,
	.ipos-store-profile__preview-tabs,
	.ipos-store-profile__actions button:not(.is-primary),
	.ipos-store-profile__history,
	.ipos-store-profile__logo-actions button
) {
	border-color: var(--ipos-line-strong) !important;
	background: var(--ipos-control-surface) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-profile[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-store-profile__segmented button[aria-pressed="true"],
	.ipos-store-profile__preview-tabs button[aria-pressed="true"]
) {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-accent-surface-strong) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-profile[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile__preview-indicator {
	background: var(--ipos-accent-surface-strong) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 5px 14px var(--ipos-accent-shadow) !important;
}
body.ipos-app-shell.ipos-app-view-profile[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile__paper-stage {
	border-color: var(--ipos-accent-border) !important;
	background: radial-gradient(90% 80% at 50% 0%, var(--ipos-accent-surface-strong), transparent 70%), color-mix(in srgb, var(--ipos-elevated-surface) 92%, black) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight) !important;
}
body.ipos-app-shell.ipos-app-view-profile[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile__receipt {
	background: var(--profile-paper) !important;
	color: #171b18 !important;
	box-shadow: 0 18px 36px rgb(0 0 0 / 36%), 0 1px 0 rgb(255 255 255 / 82%) !important;
}
/* Receipt paper is a print artifact, not application chrome. Keep every ink
 * role stable and legible even when the surrounding profile page is dark. */
body.ipos-app-shell.ipos-app-view-profile[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile__receipt :where(
	strong,
	h3,
	b,
	footer
) {
	color: #171b18 !important;
}
body.ipos-app-shell.ipos-app-view-profile[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile__receipt :where(
	header > span,
	.ipos-store-profile__receipt-lines small,
	.ipos-store-profile__receipt-payment,
	.ipos-store-profile__receipt-note
) {
	color: #5d675f !important;
}
body.ipos-app-shell.ipos-app-view-profile[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile__receipt-status {
	color: #176b45 !important;
}
body.ipos-app-shell.ipos-app-view-profile[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-store-profile__receipt-status span:first-child {
	border-color: #176b45 !important;
}

/* Team controls and hidden option menu: route CSS forces white surfaces, so
 * override the complete control/menu tuple before it is revealed. */
body.ipos-app-shell.ipos-app-view-team[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-team__bootstrap,
	.ipos-team__summary,
	.ipos-team__tools,
	.ipos-team__member
) {
	border-color: var(--ipos-lg-edge) !important;
	background: var(--ipos-lg-content) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 12px 28px var(--ipos-lg-shadow) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-team[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-team__tools :where(
	input,
	select,
	.ipos-styled-select__trigger
) {
	border-color: var(--ipos-field-line) !important;
	background: var(--ipos-field-surface) !important;
	box-shadow: inset 0 1px 0 color-mix(in srgb, var(--ipos-lg-inner-highlight) 62%, transparent) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-team[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-team__tools input::placeholder {
	color: var(--ipos-muted) !important;
	opacity: 1;
}
body.ipos-app-shell.ipos-app-view-team[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-team .ipos-styled-select__menu {
	border-color: var(--ipos-overlay-line) !important;
	background: var(--ipos-selection-surface-solid) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 20px 56px var(--ipos-overlay-backdrop) !important;
	color: var(--ipos-overlay-ink) !important;
}
body.ipos-app-shell.ipos-app-view-team[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-team .ipos-styled-select__option {
	border-color: transparent !important;
	background: var(--ipos-selection-surface-solid) !important;
	color: var(--ipos-overlay-ink) !important;
}
body.ipos-app-shell.ipos-app-view-team[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-team .ipos-styled-select__option:is(:hover, :focus-visible) {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-selection-active-solid) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-team[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-team .ipos-styled-select__option[aria-selected="true"] {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-selection-active-solid) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-team[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-team__drawer :where(input, select, textarea, .ipos-styled-select__trigger) {
	border-color: var(--ipos-field-line) !important;
	background: var(--ipos-field-surface) !important;
	color: var(--ipos-ink) !important;
}

@media (prefers-reduced-motion: reduce) {
	body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
		.ipos-table-operations__actions .is-primary,
		.ipos-table-operations__round-detail-actions .is-primary,
		.ipos-table-operations__operation-panel > .is-primary,
		.ipos-table-operations__confirm-panel .is-primary,
		.ipos-table-operations__actions .is-primary::before,
		.ipos-table-operations__round-detail-actions .is-primary::before,
		.ipos-table-operations__operation-panel > .is-primary::before,
		.ipos-table-operations__confirm-panel .is-primary::before
	) {
		transition: none !important;
	}
	body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
		.ipos-table-operations__actions .is-primary,
		.ipos-table-operations__round-detail-actions .is-primary,
		.ipos-table-operations__operation-panel > .is-primary,
		.ipos-table-operations__confirm-panel .is-primary
	):not(:disabled):hover {
		transform: none;
	}
}

/* IPOS-269R-FU8: contextual material ownership.
 *
 * These rules deliberately live in the shared engine rather than in page CSS:
 * legacy route sheets still contain light-only literals, while a palette/mode
 * change is a cross-route concern. Each group owns a full reading tuple
 * (surface, edge, foreground and interaction), never just a foreground color.
 */
body.ipos-app-shell:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) {
	/* A route-local `background:` shorthand must never restart or tile ambient. */
	background-repeat: no-repeat !important;
	background-position: center !important;
	background-size: cover !important;
	background-attachment: fixed !important;
}

/* Overview is operating content: dense data uses a stable content surface,
 * while hover is a tinted lift rather than a grey overlay. */
body.ipos-app-shell.ipos-app-view-overview:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-overview {
	--overview-reading-surface: color-mix(in srgb, var(--ipos-lg-content) 92%, var(--ipos-canvas));
	--overview-reading-hover: color-mix(in srgb, var(--ipos-accent) 11%, var(--ipos-lg-content));
}
body.ipos-app-shell.ipos-app-view-overview:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-overview__finance,
	.ipos-overview__secondary-kpis > div,
	.ipos-overview__operations,
	.ipos-overview__products,
	.ipos-overview__activity,
	.ipos-overview__shortcuts a
) {
	border-color: var(--ipos-lg-edge) !important;
	background: var(--overview-reading-surface) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 14px 30px var(--ipos-lg-shadow) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-overview:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-overview__finance-main {
	background: radial-gradient(72% 92% at 94% 6%, color-mix(in srgb, var(--ipos-accent) 15%, transparent), transparent 64%), var(--overview-reading-surface) !important;
}
body.ipos-app-shell.ipos-app-view-overview:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-overview__finance-main strong,
	.ipos-overview__finance-main small b,
	.ipos-overview__finance-breakdown dd,
	.ipos-overview__secondary-kpis strong,
	.ipos-overview__section-head h2,
	.ipos-overview__operation-list b,
	.ipos-overview__operation-list strong,
	.ipos-overview__products li b,
	.ipos-overview__activity li b
) { color: var(--ipos-ink) !important; }
body.ipos-app-shell.ipos-app-view-overview:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-overview__finance-main small b,
	.ipos-overview__operation-list strong
) { color: var(--ipos-accent) !important; }
body.ipos-app-shell.ipos-app-view-overview:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-overview__finance-main > span,
	.ipos-overview__finance-main small,
	.ipos-overview__finance-breakdown dt,
	.ipos-overview__secondary-kpis :is(span, small),
	.ipos-overview__operation-list small,
	.ipos-overview__products li strong,
	.ipos-overview__activity li small
) { color: var(--ipos-muted) !important; opacity: 1 !important; }
body.ipos-app-shell.ipos-app-view-overview:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-overview__products li span {
	border: 1px solid color-mix(in srgb, var(--ipos-accent) 38%, var(--ipos-line)) !important;
	background: color-mix(in srgb, var(--ipos-accent) 15%, var(--overview-reading-surface)) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-overview:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-overview__operation-list a,
	.ipos-overview__products li,
	.ipos-overview__activity li,
	.ipos-overview__shortcuts a
):is(:hover, :focus-visible) {
	border-color: var(--ipos-accent-border) !important;
	background: var(--overview-reading-hover) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 12px 25px var(--ipos-accent-shadow) !important;
	color: var(--ipos-ink) !important;
	transform: translateY(-1px);
}

/* Menu list cells are intentional compact controls, not unpadded white blocks.
 * The same material works in both modes and preserves the semantic badges. */
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-menu-directory__open,
	.ipos-menu-directory__price
) {
	padding: 7px 10px !important;
	border: 1px solid color-mix(in srgb, var(--ipos-line) 82%, transparent) !important;
	border-radius: 11px !important;
	background: color-mix(in srgb, var(--ipos-field-surface) 82%, transparent) !important;
	box-shadow: inset 0 1px 0 color-mix(in srgb, var(--ipos-lg-inner-highlight) 62%, transparent) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-management__header-actions > span {
	color: var(--ipos-muted) !important;
	opacity: 1 !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-menu-directory__open,
	.ipos-menu-directory__price
):is(:hover, :focus-visible) {
	border-color: var(--ipos-field-line-hover) !important;
	background: var(--ipos-field-surface-hover) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-segmented {
	background: color-mix(in srgb, var(--ipos-accent) 6%, var(--ipos-control-surface)) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-segmented button {
	color: var(--ipos-muted) !important;
	text-shadow: none !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-segmented button[aria-checked="true"] {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-accent-surface-strong) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 5px 13px var(--ipos-accent-shadow) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector__more {
	border: 1px solid var(--ipos-line) !important;
	border-radius: 14px !important;
	background: color-mix(in srgb, var(--ipos-control-surface) 88%, transparent) !important;
	padding: 0 12px !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector__more :where(b, small, summary, summary::after) {
	color: var(--ipos-ink) !important;
	opacity: 1 !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector__more small { color: var(--ipos-muted) !important; }
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector__more :where(
	.ipos-menu-modifiers__empty,
	.ipos-menu-inspector__more-content > p
) { color: var(--ipos-muted) !important; opacity: 1 !important; }
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector__actions {
	background: color-mix(in srgb, var(--ipos-lg-glass-thick) 92%, transparent) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 -10px 24px var(--ipos-lg-shadow) !important;
}

/* Setup guidance: primary link and progress steps follow the active theme. */
body.ipos-app-shell.ipos-app-view-overview .ipos-overview__guidance-head small {
	color: var(--ipos-action) !important;
}
body.ipos-app-shell.ipos-app-view-overview .ipos-overview .ipos-overview__guidance-cta {
	justify-content: center;
	gap: 8px;
	border: 1px solid var(--ipos-button-primary-bg);
	background: var(--ipos-button-primary-bg) !important;
	color: var(--ipos-button-primary-text) !important;
	text-decoration: none;
}
body.ipos-app-shell.ipos-app-view-overview .ipos-overview .ipos-overview__guidance-cta:is(:hover, :focus-visible) {
	border-color: var(--ipos-button-primary-hover);
	background: var(--ipos-button-primary-hover) !important;
	color: var(--ipos-button-primary-text) !important;
}
body.ipos-app-shell.ipos-app-view-overview .ipos-overview .ipos-overview__guidance-cta:focus-visible {
	outline: 3px solid var(--ipos-focus);
	outline-offset: 3px;
}
body.ipos-app-shell.ipos-app-view-overview .ipos-overview__guidance-step {
	border-color: var(--ipos-line) !important;
	background: var(--ipos-surface) !important;
	color: var(--ipos-muted) !important;
}
body.ipos-app-shell.ipos-app-view-overview .ipos-overview__guidance-step span {
	background: var(--ipos-surface-muted) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-overview .ipos-overview__guidance-step.is-done,
body.ipos-app-shell.ipos-app-view-overview .ipos-overview__guidance-step.is-done span {
	color: var(--ipos-success) !important;
}
body.ipos-app-shell.ipos-app-view-overview .ipos-overview__guidance-step.is-current {
	border-color: var(--ipos-action) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-overview .ipos-overview__guidance-step.is-current span {
	background: var(--ipos-button-primary-bg) !important;
	color: var(--ipos-button-primary-text) !important;
}

/* QR management: content must remain readable before a table is selected.
 * Primary, neutral and destructive controls keep separate interaction tuples. */
body.ipos-app-shell.ipos-app-view-qr:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__header-actions > .ipos-qr-management__create-toggle {
	border-color: var(--ipos-button-primary-bg) !important;
	background: var(--ipos-button-primary-bg) !important;
	background-color: var(--ipos-button-primary-bg) !important;
	background-image: none !important;
	box-shadow: inset 0 1px 0 color-mix(in srgb, var(--ipos-button-primary-text) 34%, transparent), 0 10px 22px color-mix(in srgb, var(--ipos-button-primary-bg) 24%, transparent) !important;
	color: var(--ipos-button-primary-text) !important;
}
body.ipos-app-shell.ipos-app-view-qr:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__header-actions > .ipos-qr-management__create-toggle:is(:hover, :focus-visible) {
	border-color: var(--ipos-button-primary-hover) !important;
	background: var(--ipos-button-primary-hover) !important;
	background-color: var(--ipos-button-primary-hover) !important;
	background-image: none !important;
	color: var(--ipos-button-primary-text) !important;
}
body.ipos-app-shell.ipos-app-view-qr:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-qr-management__table,
	.ipos-qr-management__table-view,
	.ipos-qr-management__detail,
	.ipos-qr-management__table-list,
	.ipos-qr-management__table-grid
) {
	border-color: var(--ipos-lg-edge) !important;
	background: var(--ipos-lg-content) !important;
	color: var(--ipos-ink) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 14px 30px var(--ipos-lg-shadow) !important;
}
body.ipos-app-shell.ipos-app-view-qr:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management :where(
	input::placeholder,
	.ipos-qr-management__head,
	[class^="ipos-qr-management__head-"],
	.ipos-qr-management__table-code,
	.ipos-qr-management__table small,
	.ipos-qr-management__detail small,
	.ipos-qr-management__detail label
) { color: var(--ipos-muted) !important; opacity: 1 !important; }
body.ipos-app-shell.ipos-app-view-qr:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__table-action {
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-qr:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management :where(
	.ipos-qr-management__history-link,
	.ipos-qr-management__floor-toggle,
	.ipos-qr-management__areas-toggle,
	.ipos-qr-management__qr-actions button:not(.is-danger):not(.is-primary)
) {
	border-color: var(--ipos-button-secondary-bg) !important;
	background: var(--ipos-button-secondary-bg) !important;
	color: var(--ipos-button-secondary-text) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 6px 15px var(--ipos-lg-shadow) !important;
}
body.ipos-app-shell.ipos-app-view-qr:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management :where(
	.ipos-qr-management__history-link,
	.ipos-qr-management__floor-toggle,
	.ipos-qr-management__areas-toggle,
	.ipos-qr-management__qr-actions button:not(.is-danger):not(.is-primary)
):is(:hover, :focus-visible) {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-button-secondary-hover) !important;
	color: var(--ipos-button-secondary-hover-text) !important;
}
body.ipos-app-shell.ipos-app-view-qr:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management button.is-danger {
	border-color: color-mix(in srgb, var(--ipos-danger) 60%, var(--ipos-line)) !important;
	background: var(--ipos-danger-soft) !important;
	color: var(--ipos-danger) !important;
}
body.ipos-app-shell.ipos-app-view-qr:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management button.is-danger:is(:hover, :focus-visible) {
	border-color: var(--ipos-danger) !important;
	background: color-mix(in srgb, var(--ipos-danger) 22%, var(--ipos-surface)) !important;
	color: var(--ipos-danger) !important;
}

/* Dark-mode direct readings: route CSS uses explicit legacy ink in expanded
 * rounds, QR labels and dashboards. Reassert the foreground on the leaf nodes
 * rather than lowering parent opacity, so hierarchy remains clear. */
body.ipos-app-shell[data-ipos-mode="dark"].ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations :where(
	.ipos-table-operations__round-items li,
	.ipos-table-operations__round-items li strong,
	.ipos-table-operations__round-item-name,
	.ipos-table-operations__round-summary-total,
	.ipos-table-operations__round-chevron
) { color: var(--ipos-ink) !important; opacity: 1 !important; }
body.ipos-app-shell[data-ipos-mode="dark"].ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations :where(
	.ipos-table-operations__round-items li span:nth-child(2),
	.ipos-table-operations__round-item-name small,
	.ipos-table-operations__round-summary-meta small
) { color: var(--ipos-muted) !important; opacity: 1 !important; }
body.ipos-app-shell[data-ipos-mode="dark"].ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__round-detail-body {
	background: color-mix(in srgb, var(--ipos-lg-content) 92%, var(--ipos-canvas)) !important;
}

@media (prefers-reduced-motion: reduce) {
	body.ipos-app-shell.ipos-app-view-overview:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
		.ipos-overview__operation-list a,
		.ipos-overview__products li,
		.ipos-overview__activity li,
		.ipos-overview__shortcuts a
	):is(:hover, :focus-visible) { transform: none; }
}

/* IPOS-269R-FU9: dark control harmony for the four screenshot-reported
 * surfaces. Each rule owns the complete local tuple (surface, edge, ink,
 * icon/placeholder and interaction) so a pale legacy child cannot fight its
 * dark parent. Semantic operation hues remain meaning-bearing; they are not
 * replaced with the active brand accent. */
body.ipos-app-shell[data-ipos-mode="dark"]:not(.ipos-app-view-customer) {
	--ipos-dark-control-surface: color-mix(in srgb, var(--ipos-lg-glass-thick) 88%, var(--ipos-canvas));
	--ipos-dark-control-hover: color-mix(in srgb, var(--ipos-accent) 12%, var(--ipos-dark-control-surface));
	--ipos-dark-control-line: color-mix(in srgb, var(--ipos-lg-edge) 72%, var(--ipos-accent));
}

/* Sidebar footer: identity and collapse affordance are palette-tinted glass,
 * not the light-theme mint/white chips that previously leaked into Dark. */
body.ipos-app-shell.ipos-nav-ia[data-ipos-mode="dark"]:not(.ipos-app-view-customer) .ipos-admin-sidebar__footer {
	border-top-color: var(--ipos-line) !important;
}
body.ipos-app-shell.ipos-nav-ia[data-ipos-mode="dark"]:not(.ipos-app-view-customer) :where(
	.ipos-admin-sidebar__identity > span,
	.ipos-admin-sidebar__collapse
) {
	border-color: var(--ipos-accent-border) !important;
	background: linear-gradient(145deg, var(--ipos-accent-surface-strong), var(--ipos-dark-control-surface)) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 7px 18px var(--ipos-accent-shadow) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-nav-ia[data-ipos-mode="dark"]:not(.ipos-app-view-customer) .ipos-admin-sidebar__lock {
	border-color: rgb(52 178 120 / 48%) !important;
	background: linear-gradient(145deg, rgb(10 84 55 / 72%), var(--ipos-dark-control-surface)) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 7px 18px rgb(5 103 59 / 28%) !important;
	color: #3dd68c !important;
}
body.ipos-app-shell.ipos-nav-ia[data-ipos-mode="dark"]:not(.ipos-app-view-customer) .ipos-admin-sidebar__logout {
	border-color: rgb(248 113 113 / 42%) !important;
	background: linear-gradient(145deg, rgb(127 29 29 / 55%), var(--ipos-dark-control-surface)) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 7px 18px rgb(127 29 29 / 28%) !important;
	color: #f97066 !important;
}
body.ipos-app-shell.ipos-nav-ia[data-ipos-mode="dark"]:not(.ipos-app-view-customer) :where(
	.ipos-admin-sidebar__identity strong,
	.ipos-admin-sidebar__identity small
) {
	color: var(--ipos-ink) !important;
	opacity: 1 !important;
}
body.ipos-app-shell.ipos-nav-ia[data-ipos-mode="dark"]:not(.ipos-app-view-customer) .ipos-admin-sidebar__identity small {
	color: var(--ipos-muted) !important;
}
body.ipos-app-shell.ipos-nav-ia[data-ipos-mode="dark"]:not(.ipos-app-view-customer) .ipos-admin-sidebar__collapse:is(:hover, :focus-visible) {
	border-color: var(--ipos-accent) !important;
	background: var(--ipos-dark-control-hover) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 10px 22px var(--ipos-accent-shadow) !important;
	color: var(--ipos-accent-hover) !important;
}
body.ipos-app-shell.ipos-nav-ia[data-ipos-mode="dark"]:not(.ipos-app-view-customer) .ipos-admin-sidebar__lock:is(:hover, :focus-visible) {
	border-color: #3dd68c !important;
	background: rgb(10 84 55 / 82%) !important;
	color: #6ee7b7 !important;
}
body.ipos-app-shell.ipos-nav-ia[data-ipos-mode="dark"]:not(.ipos-app-view-customer) .ipos-admin-logout-dialog {
	border-color: var(--ipos-line) !important;
	background: var(--ipos-surface) !important;
	box-shadow: 0 28px 80px rgb(0 0 0 / 45%) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-nav-ia[data-ipos-mode="dark"]:not(.ipos-app-view-customer) .ipos-admin-logout-dialog::backdrop {
	background: rgb(0 0 0 / 58%) !important;
}
body.ipos-app-shell.ipos-nav-ia[data-ipos-mode="dark"]:not(.ipos-app-view-customer) .ipos-admin-logout-dialog > header,
body.ipos-app-shell.ipos-nav-ia[data-ipos-mode="dark"]:not(.ipos-app-view-customer) .ipos-admin-logout-dialog > footer {
	border-color: var(--ipos-line) !important;
}
body.ipos-app-shell.ipos-nav-ia[data-ipos-mode="dark"]:not(.ipos-app-view-customer) .ipos-admin-logout-dialog__eyebrow {
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-nav-ia[data-ipos-mode="dark"]:not(.ipos-app-view-customer) .ipos-admin-logout-dialog > header > button,
body.ipos-app-shell.ipos-nav-ia[data-ipos-mode="dark"]:not(.ipos-app-view-customer) .ipos-admin-logout-dialog > footer button:not(.is-danger) {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-dark-control-surface) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-nav-ia[data-ipos-mode="dark"]:not(.ipos-app-view-customer) .ipos-admin-logout-dialog > footer button.is-danger {
	border-color: #f97066 !important;
	background: #b42318 !important;
	color: #fff !important;
}

/* Bàn & QR toolbar: the search field, search glyph and area select share one
 * dark field material; the open menu keeps the same ownership when revealed. */
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management :where(
	.ipos-qr-management__search input,
	.ipos-qr-management__area-filter .ipos-styled-select__trigger
) {
	border-color: var(--ipos-field-line) !important;
	background: var(--ipos-field-surface) !important;
	box-shadow: inset 0 1px 0 color-mix(in srgb, var(--ipos-lg-inner-highlight) 72%, transparent) !important;
	color: var(--ipos-ink) !important;
	opacity: 1 !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management :where(
	.ipos-qr-management__search input,
	.ipos-qr-management__area-filter .ipos-styled-select__trigger
):is(:hover, :focus-visible) {
	border-color: var(--ipos-field-line-hover) !important;
	background: var(--ipos-field-surface-hover) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management__search input::placeholder {
	color: var(--ipos-muted) !important;
	opacity: 1 !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management__search-icon {
	stroke: color-mix(in srgb, var(--ipos-accent) 72%, var(--ipos-muted)) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management__area-filter .ipos-styled-select {
	--ipos-styled-select-surface: var(--ipos-field-surface);
	--ipos-styled-select-line: var(--ipos-field-line);
	--ipos-styled-select-ink: var(--ipos-ink);
	--ipos-qr-area-menu-surface: color-mix(in srgb, var(--ipos-accent) 8%, #172126);
	--ipos-qr-area-option-surface: color-mix(in srgb, var(--ipos-accent) 11%, #1b272c);
	--ipos-qr-area-option-active-surface: color-mix(in srgb, var(--ipos-accent) 24%, #1b272c);
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management__area-filter :where(.ipos-styled-select__menu, .ipos-qr-management__combobox-list) {
	border-color: var(--ipos-overlay-line) !important;
	background: var(--ipos-qr-area-menu-surface) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 18px 42px var(--ipos-overlay-backdrop) !important;
	color: var(--ipos-overlay-ink) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management__area-filter .ipos-styled-select__option {
	background: var(--ipos-qr-area-option-surface) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management__area-filter .ipos-styled-select__option:is(:hover, :focus-visible, [aria-selected="true"]) {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-qr-area-option-active-surface) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management :where(
	.ipos-qr-management__combobox > input,
	.ipos-qr-management__combobox > button
) {
	border-color: var(--ipos-field-line) !important;
	background: var(--ipos-field-surface) !important;
	box-shadow: inset 0 1px 0 color-mix(in srgb, var(--ipos-lg-inner-highlight) 72%, transparent) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__combobox > button {
	background: transparent !important;
	box-shadow: none !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__combobox > button::before {
	background: color-mix(in srgb, var(--ipos-accent) 18%, var(--ipos-field-surface)) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 3px 10px var(--ipos-accent-shadow) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__combobox > button:hover:not(:disabled)::before {
	background: color-mix(in srgb, var(--ipos-accent) 28%, var(--ipos-field-surface-hover)) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__combobox > button svg {
	stroke: currentColor !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__combobox > button[data-ipos-settings-area-toggle],
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__combobox > button[data-ipos-create-area-toggle] {
	background: transparent !important;
	box-shadow: none !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__combobox > button[data-ipos-settings-area-toggle]::before,
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__combobox > button[data-ipos-create-area-toggle]::before {
	background: color-mix(in srgb, var(--ipos-accent) 18%, var(--ipos-field-surface)) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__combobox > button:is(:hover, :focus-visible)::before {
	background: color-mix(in srgb, var(--ipos-accent) 28%, var(--ipos-field-surface-hover)) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__combobox > button {
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management :where(
	.ipos-qr-management__combobox > input,
	.ipos-qr-management__combobox > button
):is(:hover, :focus-visible) {
	border-color: var(--ipos-field-line-hover) !important;
	background: var(--ipos-field-surface-hover) !important;
	color: var(--ipos-accent-hover) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management :where(
	.ipos-qr-management__combobox-list,
	.ipos-qr-management__combobox-list [role="option"]
) {
	border-color: var(--ipos-overlay-line) !important;
	background: var(--ipos-selection-surface-solid) !important;
	color: var(--ipos-overlay-ink) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__combobox-list [role="option"]:is(:hover, :focus-visible, [aria-selected="true"]) {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-selection-active-solid) !important;
	color: var(--ipos-accent) !important;
}

/* Overview operation icons: preserve serving/waiting/payment semantics with
 * visible tinted chips instead of neutral gray squares on dark glass. */
body.ipos-app-shell.ipos-app-view-overview[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-overview__operation-icon {
	border: 1px solid var(--ipos-line-strong) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 6px 14px var(--ipos-lg-shadow) !important;
}
body.ipos-app-shell.ipos-app-view-overview[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-overview__operation-icon.is-serving {
	border-color: color-mix(in srgb, var(--ipos-success) 58%, var(--ipos-line)) !important;
	background: color-mix(in srgb, var(--ipos-success) 22%, var(--ipos-dark-control-surface)) !important;
	color: var(--ipos-success) !important;
}
body.ipos-app-shell.ipos-app-view-overview[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-overview__operation-icon.is-paying {
	border-color: color-mix(in srgb, var(--ipos-warning) 58%, var(--ipos-line)) !important;
	background: color-mix(in srgb, var(--ipos-warning) 22%, var(--ipos-dark-control-surface)) !important;
	color: var(--ipos-warning) !important;
}
body.ipos-app-shell.ipos-app-view-overview[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-overview__operation-icon.is-round {
	border-color: color-mix(in srgb, var(--ipos-info) 58%, var(--ipos-line)) !important;
	background: color-mix(in srgb, var(--ipos-info) 22%, var(--ipos-dark-control-surface)) !important;
	color: var(--ipos-info) !important;
}

/* IPOS-271: the QR route has a late legacy layer with light-only state chips,
 * inspector surfaces and QR issue cards. Keep semantic status hues, but let
 * every dark palette own the local surface, border and foreground tuple. */
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management :where(
	.ipos-qr-management__table,
	.ipos-qr-management__detail,
	.ipos-qr-management__issue
) {
	border-color: var(--ipos-lg-edge) !important;
	background: var(--ipos-lg-content) !important;
	color: var(--ipos-ink) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 16px 34px var(--ipos-lg-shadow) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management :where(
	.ipos-qr-management__table:hover,
	.ipos-qr-management__table.is-selected
) {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-dark-control-hover) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management :where(
	.ipos-qr-management__table-code,
	.ipos-qr-management__table-name,
	.ipos-qr-management__detail h2,
	.ipos-qr-management__detail-area
) {
	color: var(--ipos-ink) !important;
	opacity: 1 !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management :where(
	.ipos-qr-management__table-area,
	.ipos-qr-management__table-activity,
	.ipos-qr-management__detail small
) {
	color: var(--ipos-muted) !important;
	opacity: 1 !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management :where(
	.ipos-qr-management__table-status,
	.ipos-qr-management__detail-status
) {
	background: transparent !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management :where(
	.ipos-qr-management__state-icon
) {
	border: 1px solid color-mix(in srgb, currentColor 58%, var(--ipos-line)) !important;
	border-radius: 9px;
	background: transparent !important;
	box-shadow: none !important;
	color: currentColor !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__state-icon svg {
	stroke: currentColor !important;
	color: currentColor !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management :where(
	.ipos-qr-management__table-status.is-open,
	.ipos-qr-management__detail-status.is-open
) { color: var(--ipos-success) !important; }
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management :where(
	.ipos-qr-management__table-status.is-work,
	.ipos-qr-management__detail-status.is-work,
	.ipos-qr-management__table-status.is-payment_requested,
	.ipos-qr-management__detail-status.is-payment_requested,
	.ipos-qr-management__table-status.is-paused,
	.ipos-qr-management__detail-status.is-paused
) { color: var(--ipos-warning) !important; }
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management :where(
	.ipos-qr-management__table-status.is-closing,
	.ipos-qr-management__detail-status.is-closing,
	.ipos-qr-management__table-status.is-idle,
	.ipos-qr-management__detail-status.is-idle,
	.ipos-qr-management__table-status.is-archived,
	.ipos-qr-management__detail-status.is-archived
) { color: var(--ipos-muted) !important; }
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management :where(
	.ipos-qr-management__table-status.is-cleanup_pending,
	.ipos-qr-management__detail-status.is-cleanup_pending
) { color: var(--ipos-info) !important; }
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management :where(
	.ipos-qr-management__table-status.is-inactive,
	.ipos-qr-management__detail-status.is-inactive,
	.ipos-qr-management__table-status.is-removed,
	.ipos-qr-management__detail-status.is-removed
) { color: var(--ipos-danger) !important; }

body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management__settings-heading {
	border-top-color: var(--ipos-line) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management__ordering-toggle {
	border-color: var(--ipos-line-strong) !important;
	background: var(--ipos-dark-control-surface) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 8px 18px var(--ipos-lg-shadow) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management__ordering-toggle strong {
	color: var(--ipos-ink) !important;
	opacity: 1 !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management__ordering-toggle small {
	color: var(--ipos-muted) !important;
	opacity: 1 !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management__ordering-toggle input {
	accent-color: var(--ipos-accent) !important;
}

body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management__issue {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-lg-content) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management__issue-head {
	border-bottom-color: var(--ipos-line) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management__issue-head > span {
	border: 1px solid var(--ipos-accent-border) !important;
	background: var(--ipos-accent-surface-strong) !important;
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management__issue-head p {
	color: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management__issue-head h2 {
	color: var(--ipos-ink) !important;
	opacity: 1 !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management__issue-url > span {
	color: var(--ipos-muted) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management__issue textarea {
	border-color: var(--ipos-field-line) !important;
	background: var(--ipos-field-surface) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-qr[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management__issue-private {
	border-left-color: var(--ipos-info) !important;
	background: color-mix(in srgb, var(--ipos-info) 13%, var(--ipos-lg-content)) !important;
	color: var(--ipos-muted) !important;
}

/* COUNTER ticket matrix: selection belongs to the active brand, while each
 * operational state keeps its semantic family across all six theme branches.
 * The legacy route authored these accents as Emerald literals, which made
 * Ocean/Indigo tickets and the focused Inspector look partly unthemed. */
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations :where(
	.ipos-table-operations__counter-order-card.is-new,
	.ipos-table-operations__counter-order-card.is-work
) {
	--ipos-operations-state-accent: var(--ipos-warning) !important;
	--ipos-counter-ticket-state-soft: var(--ipos-warning-soft);
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__counter-order-card.is-preparing {
	--ipos-operations-state-accent: var(--ipos-info) !important;
	--ipos-counter-ticket-state-soft: var(--ipos-info-soft);
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__counter-order-card.is-ready {
	--ipos-operations-state-accent: var(--ipos-success) !important;
	--ipos-counter-ticket-state-soft: var(--ipos-success-soft);
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__counter-order-card.is-empty {
	--ipos-operations-state-accent: var(--ipos-muted) !important;
	--ipos-counter-ticket-state-soft: var(--ipos-surface-muted);
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__fallback-list.is-counter-orders button.ipos-table-operations__counter-order-card:not(.is-selected):is(
	.is-new,
	.is-work,
	.is-preparing,
	.is-ready
) {
	border-color: color-mix(in srgb, var(--ipos-operations-state-accent) 50%, var(--ipos-line)) !important;
	background: linear-gradient(145deg,
		color-mix(in srgb, var(--ipos-operations-state-accent) 18%, var(--ipos-surface)),
		color-mix(in srgb, var(--ipos-operations-state-accent) 8%, var(--ipos-surface-muted))) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight),
		0 8px 20px color-mix(in srgb, var(--ipos-operations-state-accent) 11%, transparent) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__counter-order-card .ipos-table-operations__card-state {
	border-color: color-mix(in srgb, var(--ipos-operations-state-accent) 38%, var(--ipos-line)) !important;
	background: var(--ipos-counter-ticket-state-soft, var(--ipos-surface-muted)) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight);
	color: var(--ipos-operations-state-accent) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__counter-order-card.is-selected::after {
	border-color: color-mix(in srgb, var(--ipos-accent) 34%, transparent) !important;
}

body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__inspector.is-counter-ticket-focus {
	--ipos-counter-ticket-accent: var(--ipos-accent) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__inspector.is-counter-ticket-focus:is(
	[data-counter-ticket-visual="new"],
	[data-counter-ticket-visual="work"]
) {
	--ipos-counter-ticket-accent: var(--ipos-warning) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__inspector.is-counter-ticket-focus[data-counter-ticket-visual="preparing"] {
	--ipos-counter-ticket-accent: var(--ipos-info) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__inspector.is-counter-ticket-focus[data-counter-ticket-visual="ready"] {
	--ipos-counter-ticket-accent: var(--ipos-success) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__inspector.is-counter-ticket-focus[data-counter-ticket-visual="empty"] {
	--ipos-counter-ticket-accent: var(--ipos-muted) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__inspector.is-counter-ticket-focus .ipos-table-operations__badge {
	border-color: color-mix(in srgb, var(--ipos-counter-ticket-accent) 38%, var(--ipos-line)) !important;
	background: color-mix(in srgb, var(--ipos-counter-ticket-accent) 12%, var(--ipos-surface)) !important;
	color: var(--ipos-counter-ticket-accent) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight);
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__fallback-list.is-counter-orders button.ipos-table-operations__counter-order-card:not(.is-selected):is(
	.is-new,
	.is-work,
	.is-preparing,
	.is-ready
) {
	border-color: color-mix(in srgb, var(--ipos-operations-state-accent) 64%, var(--ipos-line)) !important;
	background: linear-gradient(145deg,
		color-mix(in srgb, var(--ipos-operations-state-accent) 25%, var(--ipos-control-surface)),
		color-mix(in srgb, var(--ipos-operations-state-accent) 12%, var(--ipos-elevated-surface))) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight),
		0 9px 22px color-mix(in srgb, var(--ipos-operations-state-accent) 15%, transparent) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__counter-order-card .ipos-table-operations__card-state {
	background: color-mix(in srgb, var(--ipos-operations-state-accent) 17%, var(--ipos-control-surface)) !important;
}
body.ipos-app-shell.ipos-app-view-operations[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__inspector.is-counter-ticket-focus .ipos-table-operations__badge {
	background: color-mix(in srgb, var(--ipos-counter-ticket-accent) 17%, var(--ipos-control-surface)) !important;
}

/* IPOS-322: Menu is a reading workspace, not a transparent color wash. The
 * route owns one complete material tuple so all three palettes inherit the
 * same hierarchy while light/dark decide opacity and ink. Business badges keep
 * the global success/warning/danger meanings defined above. */
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) {
	--ipos-menu-panel: color-mix(in srgb, var(--ipos-lg-content) 90%, var(--ipos-canvas));
	--ipos-menu-panel-strong: var(--ipos-menu-popover-solid);
	--ipos-menu-row: color-mix(in srgb, var(--ipos-surface) 86%, var(--ipos-canvas));
	--ipos-menu-row-hover: color-mix(in srgb, var(--ipos-accent) 8%, var(--ipos-menu-row));
	--ipos-menu-field: color-mix(in srgb, var(--ipos-field-surface) 94%, var(--ipos-canvas));
	--ipos-menu-ink: var(--ipos-ink);
	--ipos-menu-muted: color-mix(in srgb, var(--ipos-muted) 76%, var(--ipos-ink));
	--ipos-menu-disabled-bg: color-mix(in srgb, var(--ipos-muted) 12%, var(--ipos-menu-field));
	--ipos-menu-disabled-ink: color-mix(in srgb, var(--ipos-muted) 82%, var(--ipos-ink));
	--ipos-menu-sheet-shadow: color-mix(in srgb, var(--ipos-lg-shadow) 88%, transparent);
	--ipos-menu-popover-solid: #f7fbf8;
}
body.ipos-app-shell.ipos-app-view-menu[data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) {
	--ipos-menu-panel: color-mix(in srgb, var(--ipos-lg-content) 82%, var(--ipos-canvas));
	--ipos-menu-panel-strong: var(--ipos-menu-popover-solid);
	--ipos-menu-row: color-mix(in srgb, var(--ipos-surface) 72%, var(--ipos-canvas));
	--ipos-menu-row-hover: color-mix(in srgb, var(--ipos-accent) 12%, var(--ipos-menu-row));
	--ipos-menu-field: color-mix(in srgb, var(--ipos-field-surface) 88%, var(--ipos-canvas));
	--ipos-menu-muted: color-mix(in srgb, var(--ipos-muted) 82%, var(--ipos-ink));
	--ipos-menu-disabled-bg: color-mix(in srgb, var(--ipos-muted) 14%, var(--ipos-menu-field));
	--ipos-menu-disabled-ink: color-mix(in srgb, var(--ipos-muted) 88%, var(--ipos-ink));
}
body.ipos-app-shell.ipos-app-view-menu[data-ipos-palette="emerald"][data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) {
	--ipos-menu-popover-solid: #152b23;
}
body.ipos-app-shell.ipos-app-view-menu[data-ipos-palette="ocean"][data-ipos-mode="light"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) {
	--ipos-menu-popover-solid: #f5fafc;
}
body.ipos-app-shell.ipos-app-view-menu[data-ipos-palette="ocean"][data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) {
	--ipos-menu-popover-solid: #132b3f;
}
body.ipos-app-shell.ipos-app-view-menu[data-ipos-palette="indigo"][data-ipos-mode="light"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) {
	--ipos-menu-popover-solid: #f8f7fd;
}
body.ipos-app-shell.ipos-app-view-menu[data-ipos-palette="indigo"][data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) {
	--ipos-menu-popover-solid: #242142;
}

body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-menu-management,
	.ipos-menu-management h1,
	.ipos-menu-management h2,
	.ipos-menu-management h3
) {
	color: var(--ipos-menu-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-menu-management__header > div:first-child > p:last-child,
	.ipos-menu-management__header-actions > span,
	.ipos-menu-directory > header > span,
	.ipos-menu-directory__open span,
	.ipos-menu-directory__stock,
	.ipos-menu-directory footer,
	.ipos-menu-management__status
) {
	color: var(--ipos-menu-muted) !important;
	opacity: 1 !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-menu-management__eyebrow,
	.ipos-menu-directory header small,
	.ipos-menu-settings__header > div > small,
	.ipos-menu-inspector > header small,
	.ipos-menu-category-sheet header small
) {
	color: var(--ipos-accent) !important;
	opacity: 1 !important;
}

body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-menu-management__toolbar,
	.ipos-menu-directory,
	.ipos-menu-management__settings,
	.ipos-menu-inspector
) {
	border-color: var(--ipos-lg-edge) !important;
	background: var(--ipos-menu-panel) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 18px 42px var(--ipos-menu-sheet-shadow) !important;
	color: var(--ipos-menu-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-menu-directory > header,
	.ipos-menu-inspector > header,
	.ipos-menu-inspector__actions,
	.ipos-menu-settings__header
) {
	border-color: var(--ipos-line) !important;
	background: color-mix(in srgb, var(--ipos-menu-panel-strong) 94%, transparent) !important;
	color: var(--ipos-menu-ink) !important;
}

body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-menu-management__search input,
	.ipos-menu-picker > button,
	.ipos-menu-management__refresh,
	.ipos-menu-inspector input:not([type="file"]):not([type="hidden"]),
	.ipos-menu-inspector textarea,
	.ipos-menu-inspector__field > button,
	.ipos-menu-inspector__price-input,
	.ipos-menu-segmented,
	.ipos-menu-inspector__image-action,
	.ipos-menu-inspector__add-size,
	.ipos-menu-variation-row__toggle,
	.ipos-menu-variation-row__default
) {
	border-color: var(--ipos-field-line) !important;
	background: var(--ipos-menu-field) !important;
	color: var(--ipos-menu-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-menu-management__search,
	.ipos-menu-picker,
	.ipos-menu-picker > span,
	.ipos-menu-inspector__property > span,
	.ipos-menu-inspector__property > label > span,
	.ipos-menu-inspector__pricing small,
	.ipos-menu-inspector__pricing-head > span,
	.ipos-menu-inspector__group > h3,
	.ipos-menu-inspector__more summary small,
	.ipos-menu-inspector__identity p,
	.ipos-menu-inspector__price-input b
) {
	color: var(--ipos-menu-muted) !important;
	opacity: 1 !important;
}

body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory__item {
	border-bottom-color: var(--ipos-line) !important;
	background: transparent !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory__item:hover {
	background: var(--ipos-menu-row-hover) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-menu-directory__open,
	.ipos-menu-directory__price
) {
	border-color: color-mix(in srgb, var(--ipos-line) 78%, transparent) !important;
	background: color-mix(in srgb, var(--ipos-menu-row) 82%, transparent) !important;
	color: var(--ipos-menu-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory__open strong {
	color: var(--ipos-menu-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory__media {
	background: var(--ipos-menu-row) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory__actions button {
	border-color: var(--ipos-field-line) !important;
	background: var(--ipos-menu-field) !important;
	color: var(--ipos-menu-ink) !important;
	opacity: .9;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory__actions button:hover {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-accent-surface) !important;
	color: var(--ipos-accent) !important;
	opacity: 1;
}

/* Taxonomy workspaces use calm rows with explicit readable ink. */
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-settings__header p,
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-settings__empty {
	color: var(--ipos-menu-muted) !important;
	opacity: 1 !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-settings__item {
	border-bottom-color: var(--ipos-line) !important;
	background: var(--ipos-menu-row) !important;
	color: var(--ipos-menu-ink) !important;
	transition: background .18s ease, border-color .18s ease;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-settings__item:hover {
	background: var(--ipos-menu-row-hover) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-settings__item-main strong {
	color: var(--ipos-menu-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-settings__item span {
	color: var(--ipos-menu-muted) !important;
	opacity: 1 !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-settings__item .ipos-menu-settings__item-actions button {
	border-color: var(--ipos-field-line) !important;
	background: var(--ipos-menu-field) !important;
	color: var(--ipos-menu-ink) !important;
	opacity: .9;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-settings__item .ipos-menu-settings__item-actions button:hover {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-accent-surface) !important;
	color: var(--ipos-accent) !important;
	opacity: 1;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-settings__item .ipos-menu-settings__item-actions button:disabled {
	border-color: var(--ipos-line) !important;
	background: var(--ipos-menu-disabled-bg) !important;
	color: var(--ipos-menu-disabled-ink) !important;
	opacity: .58 !important;
}

/* Category and size sheets share one theme-aware, app-native material. */
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-settings-sheet {
	background: var(--ipos-overlay-backdrop) !important;
	backdrop-filter: blur(8px) saturate(92%);
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-settings-sheet__panel {
	border-color: var(--ipos-overlay-line) !important;
	background: var(--ipos-menu-panel-strong) !important;
	box-shadow: inset 0 1px 0 var(--ipos-lg-inner-highlight), 0 26px 68px var(--ipos-overlay-backdrop) !important;
	color: var(--ipos-menu-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-settings-sheet header {
	border-bottom-color: var(--ipos-line) !important;
	background: color-mix(in srgb, var(--ipos-accent) 4%, var(--ipos-menu-panel-strong)) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-settings-sheet :where(h2, label, strong) {
	color: var(--ipos-menu-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-settings-sheet :where(small, .ipos-menu-settings-sheet__switch-field small) {
	color: var(--ipos-menu-muted) !important;
	opacity: 1 !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-settings-sheet input {
	border-color: var(--ipos-field-line) !important;
	background: var(--ipos-menu-field) !important;
	color: var(--ipos-menu-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-settings-sheet input:focus {
	border-color: var(--ipos-field-line-focus) !important;
	box-shadow: 0 0 0 3px var(--ipos-focus) !important;
	outline: 0;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-menu-settings-sheet__close,
	.ipos-menu-settings-sheet footer button:not(.is-primary):not(.ipos-menu-settings-sheet__delete)
) {
	border-color: var(--ipos-field-line) !important;
	background: var(--ipos-menu-field) !important;
	color: var(--ipos-menu-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-settings-sheet__switch-field {
	border-color: var(--ipos-line) !important;
	background: var(--ipos-menu-row) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-settings-sheet__switch {
	border-color: var(--ipos-field-line) !important;
	background: var(--ipos-menu-disabled-bg) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-settings-sheet__switch[aria-checked="true"] {
	border-color: var(--ipos-button-primary-bg) !important;
	background: var(--ipos-button-primary-bg) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-settings-sheet__impact {
	border-left-color: var(--ipos-warning) !important;
	background: var(--ipos-warning-soft) !important;
	color: var(--ipos-warning) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-settings-sheet footer .is-primary {
	border-color: var(--ipos-button-primary-bg) !important;
	background: var(--ipos-button-primary-bg) !important;
	color: var(--ipos-button-primary-text) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-settings-sheet__delete {
	border-color: color-mix(in srgb, var(--ipos-danger) 52%, var(--ipos-line)) !important;
	background: var(--ipos-danger-soft) !important;
	color: var(--ipos-danger) !important;
}

/* Inspector and inventory remain one shell. Matte inner groups and explicit
 * disabled tuples keep controls readable without implying editability. */
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector form {
	background: transparent !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
	.ipos-menu-inspector__state,
	.ipos-menu-inspector__group,
	.ipos-menu-inspector__more,
	.ipos-menu-inspector__group--selling .ipos-menu-inspector__variable:not([hidden])
) {
	border-color: var(--ipos-line) !important;
	background: color-mix(in srgb, var(--ipos-menu-row) 92%, transparent) !important;
	color: var(--ipos-menu-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector__status-row :where(span, strong),
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector__more summary b {
	color: var(--ipos-menu-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector__status-row small,
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector__more summary small {
	color: var(--ipos-menu-muted) !important;
	opacity: 1 !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-variation-row {
	border-bottom-color: var(--ipos-line) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector__overflow-trigger,
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector__close {
	border-color: var(--ipos-field-line) !important;
	background: var(--ipos-menu-field) !important;
	color: var(--ipos-menu-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector .ipos-styled-select__menu {
	border-color: var(--ipos-field-line) !important;
	background: var(--ipos-selection-surface-solid) !important;
	box-shadow: 0 16px 34px var(--ipos-lg-shadow) !important;
	color: var(--ipos-menu-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector .ipos-styled-select__option {
	border-color: transparent !important;
	background: var(--ipos-selection-surface-solid) !important;
	color: var(--ipos-menu-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector .ipos-styled-select__option:is(:hover, :focus-visible) {
	border-color: var(--ipos-accent-border) !important;
	background: color-mix(in srgb, var(--ipos-action) 10%, var(--ipos-selection-surface-solid)) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector .ipos-styled-select__option[aria-selected="true"] {
	border-color: var(--ipos-accent-border) !important;
	background: var(--ipos-selection-active-solid) !important;
	color: var(--ipos-accent) !important;
}

body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector[data-mode="inventory"] .ipos-menu-inventory-card {
	border-color: var(--ipos-line) !important;
	background: var(--ipos-menu-row) !important;
	color: var(--ipos-menu-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector[data-mode="inventory"] .ipos-menu-inventory-card :where(strong, label) {
	color: var(--ipos-menu-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector[data-mode="inventory"] :where(
	.ipos-menu-inspector__group-heading p,
	.ipos-menu-inventory-card > header span,
	.ipos-menu-inventory-card > header small,
	.ipos-menu-inventory-card__fields > label,
	.ipos-menu-inventory-card > footer small
) {
	color: var(--ipos-menu-muted) !important;
	opacity: 1 !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector[data-mode="inventory"] .ipos-menu-inventory-card__tracking {
	color: var(--ipos-menu-ink) !important;
	opacity: 1 !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector[data-mode="inventory"] :where(
	.ipos-menu-inventory-card__tracking > span,
	.ipos-menu-inventory-card__fields > label > span:first-child
) {
	color: var(--ipos-menu-muted) !important;
	opacity: 1 !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector[data-mode="inventory"] :where(
	.ipos-menu-inventory-card__fields input[type="number"],
	.ipos-menu-inventory-card__fields select,
	.ipos-menu-inventory-card__reason .ipos-styled-select__trigger
) {
	border-color: var(--ipos-field-line) !important;
	background: var(--ipos-menu-field) !important;
	color: var(--ipos-menu-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector[data-mode="inventory"] :where(input, select):disabled {
	border-color: var(--ipos-line) !important;
	background: var(--ipos-menu-disabled-bg) !important;
	color: var(--ipos-menu-disabled-ink) !important;
	opacity: 1 !important;
	-webkit-text-fill-color: var(--ipos-menu-disabled-ink) !important;
}
body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-inspector[data-mode="inventory"] .ipos-menu-inventory-card > footer button {
	border-color: var(--ipos-button-primary-bg) !important;
	background: var(--ipos-button-primary-bg) !important;
	color: var(--ipos-button-primary-text) !important;
}

/* The Golden Slice originally hid all product utilities below 700px. That
 * made the responsive catalogue look tidy, but removed the only inventory
 * entry point. Keep the native handlers and expose compact POS icon actions
	* as a dedicated third row instead. */
@media (max-width: 700px) {
	body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-management__toolbar {
		background: var(--ipos-menu-panel-strong) !important;
		-webkit-backdrop-filter: none !important;
		backdrop-filter: none !important;
	}
	body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-picker__popover {
		position: fixed !important;
		top: auto !important;
		right: 13px !important;
		bottom: calc(88px + env(safe-area-inset-bottom)) !important;
		left: 13px !important;
		width: auto !important;
		max-height: min(56dvh, 420px) !important;
		overflow-y: auto;
	}
	body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory__list {
		grid-auto-rows: minmax(132px, auto) !important;
	}
	body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory__item {
		grid-template-columns: 44px minmax(0, 1fr) auto !important;
		grid-template-rows: auto auto auto;
		min-height: 168px;
		column-gap: 9px;
	}
	body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory__media {
		grid-column: 1 !important;
		grid-row: 1;
	}
	body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory__open {
		grid-column: 2 / -1 !important;
		grid-row: 1;
	}
	body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory__price {
		grid-column: 2 / -1 !important;
		grid-row: 2 !important;
		justify-self: start;
	}
	body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory__badge {
		grid-column: 2 !important;
		grid-row: 3 !important;
		align-self: center;
		justify-self: start;
	}
	body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory__actions {
		display: flex !important;
		grid-column: 3 !important;
		grid-row: 3 !important;
		flex-direction: row;
		align-self: center;
		justify-self: end;
		gap: 8px;
	}
	body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-directory__actions button {
		width: 40px;
		min-width: 40px;
		height: 40px;
		min-height: 40px;
		flex: 0 0 40px;
		border-color: var(--ipos-field-line) !important;
		background: var(--ipos-menu-field) !important;
	}
}

@media (prefers-reduced-transparency: reduce) {
	body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(
		.ipos-menu-management__toolbar,
		.ipos-menu-directory,
		.ipos-menu-management__settings,
		.ipos-menu-inspector,
		.ipos-menu-settings-sheet__panel
	) {
		background: var(--ipos-menu-panel-strong) !important;
		backdrop-filter: none !important;
	}
}

/* IPOS-325: permission-filtered mobile docks may contain three to five
 * primary groups. Keep inactive labels close to semantic ink so a dark glass
 * dock never turns them into low-contrast decoration; active groups retain
 * their palette accent and motion from AppShell. */
@media (max-width: 700px) {
	body.ipos-app-shell.ipos-nav-ia:not(.ipos-app-view-customer) .ipos-admin-navigation:not(.is-sheet-open) {
		display: flex !important;
		grid-template-columns: none !important;
		align-items: stretch;
		justify-content: center;
		gap: 3px;
	}
	body.ipos-app-shell.ipos-nav-ia:not(.ipos-app-view-customer) .ipos-admin-navigation:not(.is-sheet-open) > .ipos-admin-navigation__group:not(.is-active) .ipos-admin-navigation__parent-link {
		color: color-mix(in srgb, var(--ipos-ink) 82%, var(--ipos-muted)) !important;
	}
}

/* IPOS-326: Inspector round groups are operational states, not brand-colored
 * decoration. Keep their meaning stable across all six palettes while every
 * surface, line and text color follows the active theme. This also removes the
 * light-only white/green literals previously exposed by dark themes. */
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__round-state-group {
	--ipos-round-group-accent: var(--ipos-muted);
	--ipos-round-group-soft: color-mix(in srgb, var(--ipos-round-group-accent) 10%, var(--ipos-surface));
	--ipos-round-group-panel: color-mix(in srgb, var(--ipos-round-group-accent) 5%, var(--ipos-elevated-surface, var(--ipos-surface)));
	--ipos-round-group-line: color-mix(in srgb, var(--ipos-round-group-accent) 28%, var(--ipos-line));
	border-color: var(--ipos-round-group-line) !important;
	background:
		radial-gradient(120% 140% at 100% 0%, color-mix(in srgb, var(--ipos-round-group-accent) 13%, transparent), transparent 58%),
		linear-gradient(145deg, var(--ipos-round-group-soft), var(--ipos-round-group-panel)) !important;
	box-shadow: inset 0 1px 0 color-mix(in srgb, var(--ipos-ink) 10%, transparent), 0 9px 24px color-mix(in srgb, var(--ipos-canvas) 18%, transparent) !important;
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__round-state-group::after {
	background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--ipos-ink) 18%, transparent), transparent) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__round-state-group.is-waiting { --ipos-round-group-accent: var(--ipos-warning); }
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__round-state-group.is-preparing { --ipos-round-group-accent: var(--ipos-info); }
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__round-state-group.is-ready { --ipos-round-group-accent: var(--ipos-success); }
/* Served is terminal, but it must still scan as completed when this group
 * dominates the inspector. Keep success as the semantic anchor and temper it
 * with the active theme's muted text colour so it stays quieter than ready
 * without falling back to disabled-looking grey. */
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__round-state-group.is-served {
	--ipos-round-group-accent: color-mix(in srgb, var(--ipos-success) 82%, var(--ipos-muted) 18%);
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) button.ipos-table-operations__round-state-toggle {
	background: color-mix(in srgb, var(--ipos-round-group-accent) 10%, transparent) !important;
	color: var(--ipos-round-group-accent) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :where(.ipos-table-operations__round-state-icon, .ipos-table-operations__round-state-count, .ipos-table-operations__round-number) {
	border-color: color-mix(in srgb, var(--ipos-round-group-accent) 34%, var(--ipos-line)) !important;
	background: color-mix(in srgb, var(--ipos-round-group-accent) 13%, var(--ipos-field-surface)) !important;
	box-shadow: inset 0 1px 0 color-mix(in srgb, var(--ipos-ink) 9%, transparent) !important;
	color: var(--ipos-round-group-accent) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__round-state-group .ipos-table-operations__round-detail {
	border-color: color-mix(in srgb, var(--ipos-round-group-accent) 22%, var(--ipos-line)) !important;
	background: color-mix(in srgb, var(--ipos-round-group-accent) 4%, var(--ipos-control-surface, var(--ipos-surface))) !important;
	box-shadow: inset 0 1px 0 color-mix(in srgb, var(--ipos-ink) 8%, transparent) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__round-state-group .ipos-table-operations__round-detail.is-open {
	border-color: color-mix(in srgb, var(--ipos-round-group-accent) 36%, var(--ipos-line)) !important;
	background: color-mix(in srgb, var(--ipos-round-group-accent) 7%, var(--ipos-elevated-surface, var(--ipos-surface))) !important;
	box-shadow: inset 0 1px 0 color-mix(in srgb, var(--ipos-ink) 10%, transparent), 0 8px 18px color-mix(in srgb, var(--ipos-canvas) 24%, transparent) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__round-state-group :where(.ipos-table-operations__round-summary-total, .ipos-table-operations__round-item-product, .ipos-table-operations__round-item-price) {
	color: var(--ipos-ink) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__round-state-group .ipos-table-operations__round-summary-meta small {
	color: color-mix(in srgb, var(--ipos-round-group-accent) 74%, var(--ipos-muted)) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations .ipos-table-operations__round-state-group.is-served .ipos-table-operations__round-summary-meta strong {
	color: var(--ipos-round-group-accent) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__round-state-group .ipos-table-operations__round-items,
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__round-state-group .ipos-table-operations__round-items li {
	border-color: color-mix(in srgb, var(--ipos-round-group-accent) 18%, var(--ipos-line)) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__round-state-group .ipos-table-operations__round-item-option {
	border-color: color-mix(in srgb, var(--ipos-round-group-accent) 30%, var(--ipos-line)) !important;
	background: color-mix(in srgb, var(--ipos-round-group-accent) 12%, var(--ipos-field-surface)) !important;
	color: color-mix(in srgb, var(--ipos-round-group-accent) 82%, var(--ipos-ink)) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__round-state-group .ipos-table-operations__round-item-quantity {
	border-color: var(--ipos-line) !important;
	background: var(--ipos-field-surface) !important;
	color: var(--ipos-ink-muted, var(--ipos-muted)) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__round-state-group .ipos-table-operations__round-item-name small.is-note {
	color: var(--ipos-warning) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__round-state-group .ipos-table-operations__round-item-cancel {
	border-color: color-mix(in srgb, var(--ipos-danger) 38%, var(--ipos-line)) !important;
	background: var(--ipos-danger-soft) !important;
	box-shadow: inset 0 1px 0 color-mix(in srgb, var(--ipos-ink) 8%, transparent) !important;
	color: var(--ipos-danger) !important;
}

/* IPOS-422: selection popovers are reading surfaces. Keep their rows opaque
 * even when broad route button rules are declared later in the cascade. */
html body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-management .ipos-menu-picker__popover > button[role="option"] {
	background: var(--ipos-selection-surface-solid) !important;
}
html body.ipos-app-shell.ipos-app-view-menu:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-menu-management .ipos-menu-picker__popover > button[role="option"]:is(:hover, :focus-visible, [aria-selected="true"]) {
	background: var(--ipos-selection-active-solid) !important;
}
body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__round-state-group .ipos-table-operations__round-primary-action {
	border-color: var(--ipos-round-group-accent) !important;
	background: var(--ipos-round-group-accent) !important;
	box-shadow: 0 9px 20px color-mix(in srgb, var(--ipos-round-group-accent) 24%, transparent), inset 0 1px 0 color-mix(in srgb, white 24%, transparent) !important;
	color: var(--ipos-action-ink) !important;
}
@media (hover: hover) and (pointer: fine) {
	body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) button.ipos-table-operations__round-state-toggle:hover {
		background: color-mix(in srgb, var(--ipos-round-group-accent) 15%, transparent) !important;
	}
	body.ipos-app-shell.ipos-app-view-operations:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-table-operations__round-state-group .ipos-table-operations__round-item-cancel:hover {
		border-color: color-mix(in srgb, var(--ipos-danger) 58%, var(--ipos-line)) !important;
		background: color-mix(in srgb, var(--ipos-danger) 16%, var(--ipos-surface)) !important;
		color: var(--ipos-danger) !important;
	}
}

/* Custom accents keep their validated on-action ink in both modes. The
 * neutral dark material above is shared with Emerald; inline brand tokens
 * still retain the customer's HEX. */
body.ipos-app-shell[data-ipos-palette="custom"] {
	--ipos-action-ink: var(--ipos-on-action, #fff);
}
body.ipos-app-shell[data-ipos-palette="custom"][data-ipos-mode="dark"] {
	--ipos-nav-ink: var(--ipos-ink) !important;
	--ipos-button-secondary-hover-text: var(--ipos-ink);
}
/* Low-luminance custom colors are accents, never dark-mode label ink. */
body.ipos-app-shell.ipos-app-view-operations[data-ipos-palette="custom"][data-ipos-mode="dark"]:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) :is(
	.ipos-admin-navigation__group.is-active .ipos-admin-navigation__parent-link,
	.ipos-admin-navigation__child.is-active,
	.ipos-table-operations__area-tab.is-active,
	.ipos-table-operations__round-tab.is-active,
	.ipos-table-operations__counter-category.is-active
) {
	color: var(--ipos-ink) !important;
}

/* IPOS-441: retain rounded modal surfaces and scroll long settings forms. */
body.ipos-app-shell .ipos-menu-settings-sheet__panel {
 max-height: calc(100dvh - 24px);
 overflow-y: auto;
}
/* Printing already has its own page heading. */
body.ipos-app-shell.ipos-app-view-printing .ipos-admin-bar {
 display: none;
}
@media (max-width: 700px) {
 body.ipos-app-shell.ipos-app-view-activity:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-activity-history .ipos-activity-history__header {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
 }
}

/* IPOS-441: QR actions follow the brand in every interaction state. */
body.ipos-app-shell.ipos-app-view-qr:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__create > button[type="submit"],
body.ipos-app-shell.ipos-app-view-qr:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__settings > button,
body.ipos-app-shell.ipos-app-view-qr:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__detail-actions .is-primary,
body.ipos-app-shell.ipos-app-view-qr:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__detail-primary-actions > .is-primary,
body.ipos-app-shell.ipos-app-view-qr:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__issue-actions button[data-ipos-qr-print] {
 border-color: var(--ipos-button-primary-bg) !important;
 background: var(--ipos-button-primary-bg) !important;
 color: var(--ipos-button-primary-text) !important;
 box-shadow: 0 8px 18px color-mix(in srgb, var(--ipos-accent) 16%, transparent) !important;
}
body.ipos-app-shell.ipos-app-view-qr:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__create > button[type="submit"]:not(:disabled):is(:hover, :focus-visible),
body.ipos-app-shell.ipos-app-view-qr:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__settings > button:not(:disabled):is(:hover, :focus-visible),
body.ipos-app-shell.ipos-app-view-qr:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__detail-actions .is-primary:not(:disabled):is(:hover, :focus-visible),
body.ipos-app-shell.ipos-app-view-qr:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__detail-primary-actions > .is-primary:not(:disabled):is(:hover, :focus-visible),
body.ipos-app-shell.ipos-app-view-qr:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__issue-actions button[data-ipos-qr-print]:not(:disabled):is(:hover, :focus-visible) {
 border-color: var(--ipos-button-primary-hover) !important;
 background: var(--ipos-button-primary-hover) !important;
 color: var(--ipos-button-primary-text) !important;
 box-shadow: 0 8px 18px color-mix(in srgb, var(--ipos-accent) 16%, transparent) !important;
}
body.ipos-app-shell.ipos-app-view-qr:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__create > button[type="submit"]:disabled,
body.ipos-app-shell.ipos-app-view-qr:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__settings > button:disabled,
body.ipos-app-shell.ipos-app-view-qr:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__detail-actions .is-primary:disabled,
body.ipos-app-shell.ipos-app-view-qr:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__detail-primary-actions > .is-primary:disabled,
body.ipos-app-shell.ipos-app-view-qr:not(.ipos-app-view-customer):not(.ipos-app-view-kitchen) .ipos-qr-management .ipos-qr-management__issue-actions button[data-ipos-qr-print]:disabled {
 border-color: var(--ipos-button-disabled-bg) !important;
 background: var(--ipos-button-disabled-bg) !important;
 color: var(--ipos-button-disabled-text) !important;
 box-shadow: 0 8px 18px color-mix(in srgb, var(--ipos-accent) 16%, transparent) !important;
}
