/* Live application behaviours only. Visual components come unchanged from dist/assets/css. */
[hidden] { display:none !important; }
.field-error,.field-validation-error,.validation-summary-errors { display:block;color:var(--st-danger);font-size:var(--t-xs);margin-top:5px; }
.field-error:empty,.field-validation-error:empty,.validation-summary-valid { display:none;margin-top:0; }
.form-section-intro { margin-top:calc(-1 * var(--s-2));margin-bottom:var(--s-4); }
.menu-item-create-form .form-section-intro { margin-top:0;line-height:1.5; }
.menu-item-create-form .form-grid > .field { display:flex;flex-direction:column;align-self:start; }
.menu-item-create-form .form-grid > .field + .field { margin-top:0; }
.menu-item-create-form .field-label { min-height:20px;display:flex;align-items:flex-end; }
.select { accent-color:var(--brass); }
.select option { background:var(--ink-900);color:var(--tx); }
.select option:checked { background:linear-gradient(var(--brass),var(--brass));box-shadow:0 0 0 100vmax var(--brass) inset;color:var(--tx); }
[data-skin="linen"] .select option { background:#fff;color:#1b1710; }
[data-skin="linen"] .select option:checked { background:linear-gradient(var(--brass),var(--brass));box-shadow:0 0 0 100vmax var(--brass) inset;color:#201804; }
.password-input-wrap { position:relative; }
.password-input-wrap .input { padding-right:46px; }
.password-toggle { position:absolute;top:50%;right:6px;transform:translateY(-50%);display:grid;place-items:center;width:34px;height:34px;padding:0;border:0;border-radius:var(--r-tight);background:transparent;color:var(--tx-mute);cursor:pointer; }
.password-toggle:hover,.password-toggle:focus-visible { color:var(--tx);background:var(--ink-750); }
.password-toggle:focus-visible { outline:2px solid var(--brass);outline-offset:1px; }
.password-toggle svg { width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round; }
.password-toggle .password-icon-hide,.password-toggle[aria-pressed="true"] .password-icon-show { display:none; }
.password-toggle[aria-pressed="true"] .password-icon-hide { display:block; }
.report-range-button { color:var(--tx);background:var(--ink-850); }
.report-range-button:hover { color:var(--tx);border-color:var(--brass); }
.report-range-button[aria-pressed="true"] { color:var(--ink-950);background:var(--brass);border-color:var(--brass); }
.item-form-media { gap:var(--s-3);margin-bottom:var(--s-5);padding-bottom:var(--s-4);border-bottom:1px solid var(--line); }
.input-validation-error { border-color:var(--st-danger); }
.inline-form { display:inline-flex; margin:0; }
.modal-open { overflow:hidden; }
.modal-body .modal-foot { margin:var(--s-5) calc(-1 * var(--s-5)) calc(-1 * var(--s-5)); }
.modifier-map-search { margin-bottom:var(--s-4); }
.modifier-map-search .input { width:100%; }
.modifier-map-category + .modifier-map-category { margin-top:var(--s-5); }
.modifier-map-category-title { margin:0 0 var(--s-3);padding-bottom:var(--s-2);border-bottom:1px solid var(--line);color:var(--brass-lit);font-size:var(--t-sm); }
.modifier-map-items { row-gap:var(--s-3); }
.modifier-map-no-results { padding-block:var(--s-5); }
.table-scroll { max-width:100%; }
.qr-page-hidden { display:none; }
.grid-pagination { margin-top:0;border-top:1px solid var(--line); }
.grid-pagination .pager-nav { display:flex;align-items:center;gap:6px;flex-wrap:wrap; }
.grid-pagination button,.pager-nav a[aria-current="page"] { min-width:32px;min-height:32px;display:inline-grid;place-items:center;border:1px solid var(--line);border-radius:var(--r-card);background:transparent;color:var(--tx);font:inherit;text-decoration:none;cursor:pointer; }
.grid-pagination button:hover,.grid-pagination button[aria-current="page"],.pager-nav a[aria-current="page"] { border-color:var(--brass);background:var(--brass);color:var(--ink-950); }
.grid-pagination .grid-page-gap { color:var(--tx-mute);padding:0 2px; }
.cell-actions .row { justify-content:flex-end; }
.cell-actions .toolbar { padding:0; border:0; }
.cell-actions input { max-width:140px; }
.dashboard-notification-bell { position:relative; }
.bell-notification-count { position:absolute;top:-5px;right:-5px;min-width:17px;padding:1px 4px;border-radius:20px;background:var(--st-danger);color:#fff;font:600 10px var(--face-num);text-align:center; }
.nav-notification-count { min-width:17px;text-align:center; }
.qr-global-loader { position:fixed;inset:0;z-index:200;display:none;place-items:center;background:rgba(0,0,0,.3); }
.qr-global-loader.is-visible { display:grid; }
.qr-global-loader-card { display:flex;align-items:center;gap:12px;background:var(--ink-850);border:1px solid var(--line);padding:20px 26px;border-radius:var(--r-card); }
.qr-global-spinner { width:20px;height:20px;border:2px solid var(--line);border-top-color:var(--brass);border-radius:50%;animation:qr-spin .7s linear infinite; }
@keyframes qr-spin { to { transform:rotate(360deg); } }
.badge[data-state="active"],.badge[data-state="published"],.badge[data-state="paid"],.badge[data-state="completed"] { color:var(--st-ready);border-color:var(--st-ready);background:color-mix(in srgb,var(--st-ready) 10%,transparent); }
.badge[data-state="inactive"],.badge[data-state="cancelled"],.badge[data-state="rejected"],.badge[data-state="failed"] { color:var(--st-danger); }
.badge[data-state="pending"],.badge[data-state="unpaid"] { color:var(--brass-lit); }
.builder-side button.cat-item { width:100%;text-align:left;border:0;background:transparent;color:inherit; }
.builder-side button.cat-item[aria-current="true"] { background:rgba(217,172,85,.12);color:var(--brass-lit); }
.item-row .thumb img { width:100%;height:100%;object-fit:cover;border-radius:inherit; }
.item-row .row { flex-wrap:wrap; }
.hours-row { display:grid;grid-template-columns:120px 110px minmax(100px,1fr) 18px minmax(100px,1fr);gap:12px;align-items:center; }
.hours-row + .hours-row { margin-top:12px; }
.invoice-actions { margin-bottom:20px; }
.qr-preview { display:block;width:180px;max-width:100%;background:#fff;padding:10px;border-radius:8px; }
.sr-only { position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0; }
@media(max-width:720px) {
  .g-2,.g-3,.g-4 { grid-template-columns:minmax(0,1fr); }
  .hours-row { grid-template-columns:1fr 1fr; }
  .hours-row > span { display:none; }
  .page-actions,.row-between { flex-wrap:wrap; }
  .app-topbar .btn { padding:6px 8px; }
  .builder { grid-template-columns:minmax(0,1fr); }
  .builder-side { border-right:0;border-bottom:1px solid var(--line); }
  .item-row { grid-template-columns:40px minmax(0,1fr) auto; }
  .item-row > .row { grid-column:2 / -1; }
}
@page { margin:0; }
@media print {
  body { margin:0;padding:12mm; }
  .app-rail,.app-topbar,.invoice-actions,.no-print { display:none !important; }
  .app { display:block; }
  .app-body { padding:0; }
  .invoice-paper { width:100%;max-width:none;margin:0;box-shadow:none; }
}
button.table-tile { color:inherit;font:inherit; }
.thumb img { width:100%;height:100%;object-fit:cover;border-radius:inherit; }
.check > span > small { display:block;font-size:var(--t-xs);color:var(--tx-mute); }

/* Real QR PNGs replace the template's generated .qr cell grid. */
.qr-image { display:block; width:150px; height:150px; max-width:100%; object-fit:contain; padding:0; border-radius:6px; background:#fff; }
.qr-image-sm { width:87.5px; height:87.5px; }
.table-qr-open { display:block; padding:0; border:0; border-radius:6px; background:transparent; cursor:pointer; }
.qr-placeholder { display:grid; place-items:center; background:var(--ink-800); color:var(--tx-mute); font-size:var(--t-xs); }
.table-tile { min-width:0; align-content:start; }
.table-tile .badge { align-self:start; }
.table-tile .table-code { overflow-wrap:anywhere; }
.tables-toolbar > form { margin:0; min-width:0; }
.qr-sheet > .qr-card { min-width:0; align-content:start; break-inside:avoid; }
.qr-card .cut { overflow-wrap:anywhere; }
.qr-sheet img { print-color-adjust:exact; -webkit-print-color-adjust:exact; }
@media print {
  .qr-sheet { grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
  .qr-sheet > .qr-card { border:1px dashed #bbb; box-shadow:none; }
}
