:root{--font-sans:"Segoe UI", "Leelawadee UI", "Sarabun", "Noto Sans Thai", system-ui, Tahoma, sans-serif;--color-header-bg:#86bd4a;--color-header-bg-soft:#0c1f061a;--color-header-text:#0c1f06;--color-header-text-dim:#0c1f06;--color-header-border:#0c1f0640;--color-header-active-bg:#2f5233;--color-header-active-text:#fff;--color-primary:#c9873f;--color-primary-hover:#a86d2e;--color-primary-disabled:#e0c4a1;--color-primary-bg:#fbf3e9;--color-danger:#c0392b;--color-danger-text:#8a2f28;--color-danger-border:#f6c6c1;--color-danger-bg:#fdecea;--color-warning:#8a6d00;--color-warning-border:#ecd39a;--color-warning-bg:#fff4d6;--color-success:#256a34;--color-success-bg:#e2f3e5;--color-text:#2a2f36;--color-text-strong:#16191e;--color-text-muted:#5f6875;--color-text-faint:#97a0ab;--color-bg:#f3f4ef;--color-surface:#fbfcf8;--color-surface-accent:#eaeee2;--color-border:#dde1d5;--color-divider:#e8ebe1;--color-border-input:#cdd2c4;--color-border-strong:#b9bfae}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-sans);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-size:15px;line-height:1.55}input,button,select,textarea{font-family:inherit}h1,h2,h3,h4{color:var(--color-text-strong);line-height:1.3}.bill-nav-bar{border:1px solid var(--color-border);background:var(--color-surface);border-radius:8px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;padding:9px 12px;display:flex}.bill-nav-bar__prev-next,.bill-nav-bar__links{gap:8px;display:flex}.bill-nav-bar button{cursor:pointer;border:1px solid var(--color-border-input);color:var(--color-text);white-space:nowrap;background:#fff;border-radius:6px;padding:6px 12px;font-size:12px;font-weight:500;transition:border-color .12s,color .12s}.bill-nav-bar button:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary)}.bill-nav-bar button:disabled{color:var(--color-text-faint);cursor:not-allowed}.bill-form{flex:1;max-width:900px;padding:20px 28px 32px;overflow-y:auto}.bill-form__title{color:var(--color-text-strong);border-left:4px solid var(--color-primary);align-items:center;gap:10px;margin:0 0 16px;padding-left:12px;font-size:19px;font-weight:700;display:flex}.bill-form__cctv-badge{border-radius:999px;padding:3px 9px;font-size:12px;font-weight:600}.bill-form__cctv-badge--online{color:var(--color-success);background:var(--color-success-bg)}.bill-form__cctv-badge--offline{color:var(--color-danger);background:var(--color-danger-bg)}.bill-form__section-title{color:var(--color-text);margin:24px 0 8px;font-size:15px;font-weight:600}.field{color:var(--color-text);flex-direction:column;gap:4px;max-width:320px;margin-bottom:14px;font-size:13px;display:flex}.field input,.field select{border:1px solid var(--color-border-input);border-radius:6px;padding:7px 10px;font-size:14px;transition:border-color .12s}.field input:focus,.field select:focus{border-color:var(--color-primary);outline:none}.field--inline{flex-direction:row;align-items:center;gap:8px;max-width:none;margin-bottom:0;margin-right:16px;display:inline-flex}.field--inline input{width:90px}.bill-table-wrap{border:1px solid var(--color-border);border-radius:10px;overflow:auto}.bill-table{border-collapse:collapse;width:100%;font-size:13px}.bill-table thead th{background:var(--color-surface-accent);color:var(--color-text);text-align:left;border-bottom:1px solid var(--color-border);white-space:nowrap;padding:9px 8px;font-weight:600}.bill-table td{border-bottom:1px solid var(--color-divider);text-align:left;padding:6px 8px}.bill-table tbody tr:hover{background:var(--color-primary-bg)}.bill-table input,.bill-table select{border:1px solid var(--color-border-input);border-radius:5px;width:100%;padding:5px 7px;transition:border-color .12s}.bill-table input:focus,.bill-table select:focus{border-color:var(--color-primary);outline:none}.bill-table input[readonly]{background:var(--color-surface);color:var(--color-text-muted);cursor:pointer}.row-remove{color:var(--color-text-faint);cursor:pointer;white-space:nowrap;background:0 0;border:none;font-size:12px;transition:color .12s}.row-remove:hover{color:var(--color-danger)}.add-row{border:1px dashed var(--color-border-strong);cursor:pointer;color:var(--color-text-muted);background:0 0;border-radius:6px;margin-top:10px;padding:7px 14px;font-size:13px;transition:border-color .12s,color .12s,background-color .12s}.add-row:hover{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-bg)}.bill-form__bottle,.bill-form__split{background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;flex-wrap:wrap;align-items:center;margin-top:18px;padding:12px 14px;display:flex}.bill-form__bottle-amount{color:var(--color-text);font-size:13px;font-weight:600}.bill-form__summary{border:1px solid var(--color-border);border-left:3px solid var(--color-primary);max-width:340px;color:var(--color-text);background:#fff;border-radius:10px;flex-direction:column;gap:5px;margin-top:20px;padding:14px 18px;font-size:14px;display:flex;box-shadow:0 1px 2px #00000008}.bill-form__summary-total{color:var(--color-text-strong);border-top:1px dashed var(--color-border);border-bottom:1px dashed var(--color-border);margin:6px 0;padding:8px 0;font-size:18px;font-weight:700}.bill-form__submit{background:var(--color-primary);color:#fff;cursor:pointer;border:none;border-radius:8px;margin-top:22px;padding:11px 28px;font-size:15px;font-weight:600;transition:background-color .12s}.bill-form__submit:hover:not(:disabled){background:var(--color-primary-hover)}.bill-form__submit:disabled{background:var(--color-primary-disabled);cursor:not-allowed}.bill-form__error{color:var(--color-danger);background:var(--color-danger-bg);border:1px solid var(--color-danger-border);border-radius:6px;margin-top:12px;padding:8px 12px;font-size:13px}.bill-form__debt-warning{background:var(--color-warning-bg);color:var(--color-warning);border:1px solid var(--color-warning-border);border-radius:8px;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:14px;padding:10px 14px;font-size:13px;display:flex}.bill-form__debt-warning .field--inline{margin:0}.bill-form__cctv-lockout{background:var(--color-danger-bg);color:var(--color-danger-text);border:1px solid var(--color-danger-border);border-radius:8px;flex-wrap:wrap;align-items:center;gap:12px;margin-top:12px;padding:12px 14px;font-size:13px;display:flex}.bill-form__cctv-lockout p{margin:0;font-weight:600}.bill-form__cctv-lockout .field--inline{margin:0}.bill-form__cctv-pick-btn{border:1px solid var(--color-primary);background:var(--color-primary-bg);color:var(--color-primary);cursor:pointer;border-radius:8px;padding:8px 16px;font-size:14px;font-weight:600;transition:background-color .12s}.bill-form__cctv-pick-btn:hover:not(:disabled){background:#e2e9fb}.bill-form__cctv-pick-btn:disabled{opacity:.6;cursor:not-allowed}.bill-form__cctv-override{flex-wrap:wrap;align-items:center;gap:8px;width:100%;display:flex}.bill-form__cctv-override-label{color:var(--color-text-muted);width:100%;font-size:12px}.bill-form__cctv-picker{border:1px solid var(--color-primary-disabled);background:var(--color-primary-bg);border-radius:10px;max-width:520px;margin-top:12px;padding:12px 14px}.bill-form__cctv-picker-head{color:var(--color-text);justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;font-size:13px;font-weight:600;display:flex}.bill-form__cctv-picker-close{color:var(--color-text-faint);cursor:pointer;background:0 0;border:none;flex-shrink:0;font-size:15px}.bill-form__cctv-picker-error{color:var(--color-danger);margin:0 0 8px;font-size:12px}.bill-form__cctv-picker-empty{color:var(--color-text-muted);margin:0;font-size:13px}.bill-form__cctv-picker-list{flex-wrap:wrap;gap:8px;display:flex}.bill-form__cctv-reading{border:1px solid var(--color-border-input);background:var(--color-bg);cursor:pointer;border-radius:8px;flex-direction:column;align-items:center;gap:4px;width:96px;padding:8px;transition:border-color .12s,box-shadow .12s;display:flex;position:relative}.bill-form__cctv-reading:hover:not(:disabled){border-color:var(--color-primary);box-shadow:0 1px 4px #2f6fed33}.bill-form__cctv-reading:disabled{opacity:.6;cursor:not-allowed}.bill-form__cctv-reading-thumb{object-fit:cover;background:var(--color-surface);border-radius:5px;width:80px;height:56px}.bill-form__cctv-reading-thumb--placeholder{border:1px dashed var(--color-border-strong);display:block}.bill-form__cctv-reading-weight{color:var(--color-text-strong);font-size:16px;font-weight:700}.bill-form__cctv-reading-time{color:var(--color-text-muted);font-size:11px}.bill-form__cctv-reading-flag{font-size:12px;position:absolute;top:4px;right:6px}.bill-form__debt-warning input{border:1px solid var(--color-border-input);border-radius:5px;width:100px;padding:6px 8px}.bill-form__member-card{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text);border-radius:10px;align-items:center;gap:14px;margin-bottom:14px;padding:10px 14px;font-size:13px;display:flex}.bill-form__member-photo{object-fit:cover;border-radius:8px;flex-shrink:0;width:52px;height:52px;box-shadow:0 1px 3px #00000026}.bill-form__member-card-details{flex-direction:column;gap:3px;display:flex}.bill-form__debt-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;display:flex}.bill-form__debt-actions>button{cursor:pointer;border:1px solid var(--color-border-input);color:var(--color-text);background:#fff;border-radius:6px;padding:6px 14px;font-size:12px;font-weight:500;transition:border-color .12s,color .12s}.bill-form__debt-actions>button:hover{border-color:var(--color-primary);color:var(--color-primary)}.bill-form__debt-mini-form{background:var(--color-surface);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;display:flex}.bill-form__debt-mini-form input{border:1px solid var(--color-border-input);border-radius:5px;width:120px;padding:6px 9px;font-size:12px}.bill-form__debt-mini-form button{cursor:pointer;border:1px solid var(--color-border-input);background:#fff;border-radius:5px;padding:6px 12px;font-size:12px;transition:border-color .12s,color .12s}.bill-form__debt-mini-form button:hover{border-color:var(--color-primary);color:var(--color-primary)}.bill-form__cctv-rescan{flex-wrap:wrap;align-items:center;gap:10px;margin-top:8px;display:flex}.bill-form__cctv-rescan button{border:1px solid var(--color-border-input);cursor:pointer;background:#fff;border-radius:6px;padding:7px 14px;font-size:13px}.bill-form__cctv-rescan button:disabled{opacity:.6;cursor:not-allowed}.bill-form__cctv-rescan-msg{color:var(--color-text-muted);font-size:12px}.receipt-overlay{z-index:100;background:#0006;justify-content:center;align-items:flex-start;padding:24px;display:flex;position:fixed;inset:0;overflow-y:auto}.receipt-modal{background:#fff;border-radius:8px;width:420px;max-width:100%;padding:16px}.receipt-modal__toolbar{justify-content:space-between;margin-bottom:12px;display:flex}.receipt-modal__toolbar button{cursor:pointer;border:1px solid var(--color-border-input);background:#fff;border-radius:6px;padding:6px 14px;font-size:13px}.receipt-modal__print-btn{color:#fff;background:var(--color-primary)!important;border:none!important}.receipt-modal__print-btn:disabled{cursor:not-allowed;background:var(--color-primary-disabled)!important}.receipt-modal__error{color:var(--color-danger);font-size:13px}.receipt{--ink:#000;--rule:#000;--accent:#e8461e;color:var(--ink);background:#fff;font-family:Sarabun,system-ui,sans-serif;font-size:12px;line-height:1.35}.receipt__doc-title{text-align:center;margin-bottom:4px;font-size:12px}.receipt__head{border:1px solid var(--rule);grid-template-columns:1fr 1.7fr 1fr;align-items:start;gap:10px;padding:6px 8px;display:grid}.receipt__head-center{text-align:center}.receipt__shop{color:var(--accent);font-size:19px;font-weight:700;line-height:1.2}.receipt__meta{font-size:10.5px}.receipt__head-row{align-items:baseline;gap:6px;display:flex}.receipt__head-row+.receipt__head-row{margin-top:2px}.receipt__field-label{white-space:nowrap}.receipt__field-value{border-bottom:1px solid var(--rule);flex:1;min-width:40px;padding:0 4px 1px}.receipt__head-left{align-items:baseline;gap:6px;display:flex}.receipt__seller{grid-template-columns:1.3fr 1.4fr 1fr;gap:14px;margin:8px 0;display:grid}.receipt__seller>div{align-items:baseline;gap:6px;display:flex}.receipt__tables{grid-template-columns:1.55fr 1fr;align-items:start;gap:14px;display:grid}.receipt__table{border-collapse:collapse;width:100%;font-size:11.5px}.receipt__table th,.receipt__table td{border:1px solid var(--rule);text-align:center;vertical-align:middle;padding:3px 5px}.receipt__table th{font-weight:400}.receipt__num{text-align:right}.receipt__table tfoot td{border:none;padding-top:4px}.receipt__total-label{text-align:right;font-weight:700}.receipt__num--total{font-weight:700;border-bottom:1px solid var(--rule)!important;border-top:1px solid var(--rule)!important}.receipt__foot{justify-content:space-between;align-items:flex-end;gap:20px;margin-top:10px;display:flex}.receipt__part{grid-template-columns:52px 44px auto;align-items:baseline;gap:8px;display:grid}.receipt__part-name{font-weight:700}.receipt__part-amount{text-align:right;min-width:60px}.receipt__grand{white-space:nowrap;font-size:15px;font-weight:700}.receipt__grand-amount{color:var(--accent);font-size:21px}.receipt__signature{justify-content:center;align-items:baseline;gap:8px;margin-top:26px;display:flex}.receipt__signature-line{border-bottom:1px solid var(--rule);width:200px;display:inline-block}.receipt__print-note{text-align:center;color:#666;margin-top:8px;font-size:9.5px}.receipt-modal--a5{width:820px}@media print{@page{size:A5 landscape;margin:7mm}body *{visibility:hidden}.receipt-overlay,.receipt-overlay *{visibility:visible}.receipt-overlay{background:0 0;padding:0;position:absolute;inset:0;overflow:visible}.receipt-modal,.receipt-modal--a5{border-radius:0;width:100%;padding:0}.receipt-modal__toolbar{display:none}.receipt{font-size:11px}.receipt__shop,.receipt__grand-amount{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.bills-list{flex:1;padding:16px 24px;overflow-y:auto}.bills-list__title{margin:0}.bills-list__header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.bills-list__voided-toggle{color:var(--color-text-muted);cursor:pointer;align-items:center;gap:6px;font-size:13px;display:flex}.bills-table{border-collapse:collapse;width:100%;font-size:13px}.bills-table th,.bills-table td{border-bottom:1px solid var(--color-border);text-align:left;padding:6px 8px}.bills-table__row--pending{background:var(--color-warning-bg)}.bills-list__pending-badge{color:var(--color-warning);background:var(--color-warning-bg);white-space:nowrap;border-radius:4px;padding:2px 6px;font-size:11px;font-weight:600}.bills-table__row--voided{color:var(--color-text-faint);background:var(--color-surface)}.bills-list__voided-label{color:var(--color-danger);white-space:nowrap;align-items:center;gap:8px;font-size:12px;display:flex}.bills-list__void{color:var(--color-danger);cursor:pointer;background:0 0;border:none;font-size:12px}.bills-list__print{color:var(--color-primary);cursor:pointer;background:0 0;border:none;margin-right:10px;font-size:12px}.bills-list__empty{color:var(--color-text-faint);margin-top:12px;font-size:14px}.bills-list__total{margin-top:16px;font-size:16px;font-weight:700}.daily-summary-page{flex:1;max-width:1180px;padding:16px 24px;overflow-y:auto}.daily-summary-page h3{color:var(--color-text);margin-top:24px;font-size:15px}.daily-summary-page__header{align-items:center;gap:16px;display:flex}.daily-summary-page__field{color:var(--color-text);flex-direction:column;gap:4px;max-width:200px;margin-bottom:12px;font-size:13px;display:flex}.daily-summary-page__field input{border:1px solid var(--color-border-input);border-radius:4px;padding:6px 8px}.daily-summary-page__status{border-radius:10px;height:fit-content;padding:3px 10px;font-size:12px}.daily-summary-page__status--open{background:var(--color-success-bg);color:var(--color-success)}.daily-summary-page__status--closed{background:var(--color-border);color:var(--color-text-muted)}.daily-summary-page__open-btn,.daily-summary-page__close-btn,.daily-summary-page__reopen-btn{background:var(--color-primary);color:#fff;cursor:pointer;border:none;border-radius:6px;margin-top:20px;padding:8px 20px;font-size:14px}.daily-summary-page__reopen-btn{background:var(--color-text-faint)}.daily-summary-page__info{flex-direction:column;gap:2px;margin:10px 0;font-size:13px;display:flex}.daily-summary-table{border-collapse:collapse;width:100%;font-size:13px}.daily-summary-table th,.daily-summary-table td{border-bottom:1px solid var(--color-border);text-align:left;padding:5px 8px}.daily-summary-table button{color:var(--color-danger);cursor:pointer;background:0 0;border:none;font-size:12px}.daily-summary-transfers{background:var(--color-warning-bg);border:1px solid var(--color-warning-border);border-radius:8px;margin-bottom:20px;padding:10px 14px}.daily-summary-transfers h3{margin-top:0!important}.daily-summary-transfers .daily-summary-table button{color:var(--color-primary);white-space:nowrap;margin-right:8px}.daily-summary-transfers .daily-summary-table button:last-child{color:var(--color-danger)}.daily-summary-add-row{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.daily-summary-add-row input,.daily-summary-add-row select{border:1px solid var(--color-border-input);border-radius:4px;padding:6px 8px;font-size:13px}.daily-summary-add-row button{border:1px dashed var(--color-text-faint);cursor:pointer;color:var(--color-text-muted);background:0 0;border-radius:6px;padding:6px 12px;font-size:13px}.daily-summary-add-row button:disabled{color:var(--color-text-faint);cursor:not-allowed}.daily-summary-denominations{grid-template-columns:repeat(3,1fr);gap:8px;margin-top:8px;display:grid}.daily-summary-denominations__row{align-items:center;gap:6px;font-size:13px;display:flex}.daily-summary-denominations__row input{border:1px solid var(--color-border-input);border-radius:4px;width:60px;padding:5px 6px}.daily-summary-page__totals{background:var(--color-surface);border-radius:8px;flex-direction:column;gap:4px;margin-top:16px;padding:12px 16px;font-size:14px;display:flex}.daily-summary-page__variance--mismatch{color:var(--color-danger);font-weight:700}.daily-summary-page__error{color:var(--color-danger);font-size:13px}.daily-summary-page__hint{color:var(--color-text-faint);font-size:13px}.daily-summary-page__checkbox-field{color:var(--color-text);align-items:center;gap:6px;margin:10px 0;font-size:13px;display:flex}.daily-summary-checkpoints{flex-direction:column;gap:8px;margin-top:8px;display:flex}.daily-summary-checkpoint-card{background:var(--color-surface);border-radius:8px;padding:10px 14px;font-size:13px}.daily-summary-checkpoint-card__header{align-items:center;gap:8px;margin-bottom:6px;display:flex}.daily-summary-checkpoint-card__seq{color:var(--color-text-faint)}.daily-summary-checkpoint-card__label{font-weight:600}.daily-summary-checkpoint-card__closing-badge{color:var(--color-warning);background:var(--color-warning-bg);border-radius:8px;padding:1px 8px;font-size:11px}.daily-summary-checkpoint-card__time{color:var(--color-text-faint);margin-left:auto;font-size:12px}.daily-summary-checkpoint-card__totals{flex-wrap:wrap;gap:16px;display:flex}.daily-summary-checkpoint-card__report-status{color:var(--color-text-muted);margin-top:6px;font-size:12px}.daily-summary-page__preview-btn{border:1px dashed var(--color-primary);color:var(--color-primary);cursor:pointer;background:0 0;border-radius:6px;margin-top:16px;padding:7px 16px;font-size:13px}.daily-summary-preview{background:var(--color-primary-bg);border-radius:8px;margin-top:12px;padding:12px 16px}.daily-summary-preview__note{color:var(--color-warning);margin:0 0 8px;font-size:12px}.daily-summary-preview__totals{flex-direction:column;gap:3px;margin-bottom:10px;font-size:13px;display:flex}.daily-summary-preview__expected{font-weight:700}.daily-summary-preview h4{color:var(--color-text);margin:12px 0 6px;font-size:13px}.daily-summary-page__save-checkpoint-btn{background:var(--color-primary);color:#fff;cursor:pointer;border:none;border-radius:6px;margin-top:12px;padding:8px 20px;font-size:14px}.daily-summary-page__save-checkpoint-btn:disabled{background:var(--color-text-faint);cursor:not-allowed}.daily-summary-page__send-report{background:var(--color-warning-bg);border:1px solid var(--color-warning-border);border-radius:8px;flex-wrap:wrap;align-items:center;gap:12px;margin-top:16px;padding:10px 14px;font-size:13px;display:flex}.daily-summary-page__send-report button{background:var(--color-primary);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:6px 14px;font-size:13px}.daily-summary-page__send-report-warning{color:var(--color-danger)}.daily-summary-page__send-report-note{color:var(--color-text-muted)}.ds-topbar{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:14px;display:flex}.ds-topbar h2{flex:none;margin:0}.ds-topbar__checkpoint{border:1px solid var(--color-border-input);background:var(--color-surface);border-radius:6px;flex:1;min-width:240px;max-width:420px;padding:7px 10px}.ds-topbar__date{border:1px solid var(--color-border-input);background:var(--color-surface);border-radius:6px;padding:7px 10px}.ds-purchase-table{border-collapse:collapse;background:var(--color-surface);width:100%;margin-bottom:18px}.ds-purchase-table th{background:var(--color-header-active-bg);color:var(--color-header-active-text);text-align:left;padding:9px 12px;font-weight:600}.ds-purchase-table td{border-bottom:1px solid var(--color-divider);padding:8px 12px}.ds-purchase-table tfoot td{background:var(--color-warning-bg);border-bottom:none;font-weight:700}.ds-purchase-table .ds-empty{text-align:center;color:var(--color-text-faint)}.ds-num{text-align:right;font-variant-numeric:tabular-nums}.ds-grid{grid-template-columns:1fr 1fr;align-items:start;gap:18px;display:grid}.ds-col{flex-direction:column;gap:18px;min-width:0;display:flex}@media (width<=1000px){.ds-grid{grid-template-columns:1fr}}.ds-panel{border:1px solid var(--color-border);background:var(--color-surface);border-radius:8px;overflow:hidden}.ds-panel__head{background:var(--color-success-bg);color:var(--color-text-strong);align-items:center;gap:14px;padding:9px 12px;font-weight:700;display:flex}.ds-panel__head>span:first-child{flex:1}.ds-mode{cursor:pointer;align-items:center;gap:5px;font-size:13px;font-weight:500;display:inline-flex}.ds-row{border-bottom:1px solid var(--color-divider);align-items:center;gap:10px;padding:7px 12px;display:flex}.ds-row>span:first-child{flex:1;min-width:0}.ds-row>.ds-num{min-width:110px}.ds-row--auto{color:var(--color-text-muted)}.ds-row--total{background:var(--color-warning-bg);border-bottom:none;font-weight:700}.ds-row--grand{background:var(--color-surface-accent);border-bottom:none;font-weight:700}.ds-row--draft input,.ds-row--draft select{border:1px solid var(--color-border-input);border-radius:5px;min-width:0;padding:6px 9px}.ds-row--draft>input:first-of-type{flex:1}.ds-row--draft input.ds-num{flex:none;width:110px}.ds-tag{color:var(--color-text-faint);margin-left:6px;font-size:12px;font-style:normal}.ds-del{color:var(--color-danger);cursor:pointer;background:0 0;border:none;padding:2px 6px}.ds-denom{border-bottom:1px solid var(--color-divider);align-items:center;gap:10px;padding:6px 12px;display:flex}.ds-denom__face{border:1px solid var(--color-border);background:var(--color-surface-accent);text-align:right;font-variant-numeric:tabular-nums;border-radius:5px;width:70px;padding:6px 9px}.ds-denom input{border:1px solid var(--color-border-input);border-radius:5px;width:110px;padding:6px 9px}.ds-denom__amount{flex:1}.ds-denom--coin .ds-denom__face{background:var(--color-border);color:var(--color-text-muted)}.ds-panel--save{padding-bottom:12px}.ds-actions{justify-content:flex-end;gap:10px;padding:10px 12px 0;display:flex}.ds-btn{border:1px solid var(--color-border-strong);background:var(--color-surface);cursor:pointer;border-radius:6px;padding:8px 18px;font-weight:600}.ds-btn--primary{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.ds-btn--primary:disabled{background:var(--color-primary-disabled);border-color:var(--color-primary-disabled);cursor:not-allowed}.ds-variance{color:var(--color-text-muted);align-items:baseline;gap:12px;margin-top:18px;padding:10px 4px;font-size:15px;display:flex}.ds-variance strong{color:var(--color-text-strong);font-size:22px}.ds-variance--over strong{color:var(--color-success)}.ds-variance--short strong{color:var(--color-danger)}.debt-ledger-page{flex:1;padding:16px 24px;overflow-y:auto}.debt-ledger-page__error{color:var(--color-danger);margin-bottom:12px;font-size:13px}.debt-ledger-page__empty{color:var(--color-text-faint);text-align:center;padding:12px 0;font-size:13px}.debt-record-form{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:20px;display:flex}.debt-record-form select,.debt-record-form input{border:1px solid var(--color-border-input);border-radius:4px;padding:6px 8px;font-size:13px}.debt-record-form select:nth-of-type(2){min-width:260px}.debt-record-form button{background:var(--color-primary);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:7px 16px;font-size:13px}.debt-ledger-page__view-toggle{gap:8px;margin-bottom:12px;display:flex}.debt-ledger-page__view-toggle button{border:1px solid var(--color-border-input);cursor:pointer;background:#fff;border-radius:6px;padding:6px 14px;font-size:13px}.debt-ledger-page__view-toggle button.active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.debt-ledger-table{border-collapse:collapse;width:100%;font-size:13px}.debt-ledger-table th,.debt-ledger-table td{border-bottom:1px solid var(--color-border);text-align:left;padding:6px 8px}.debt-ledger-table__action{color:var(--color-primary);cursor:pointer;background:0 0;border:none;padding:2px 4px;font-size:12px}.dividends-page{flex:1;max-width:700px;padding:16px 24px;overflow-y:auto}.dividends-page__hint{color:var(--color-text-muted);margin:4px 0 16px;font-size:12px}.dividends-upload{align-items:center;gap:10px;margin-bottom:12px;display:flex}.dividends-upload button{background:var(--color-primary);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:7px 16px;font-size:13px}.dividends-upload button:disabled{background:var(--color-primary-disabled);cursor:not-allowed}.dividends-result{background:var(--color-surface);border-radius:8px;margin-bottom:16px;padding:10px 14px;font-size:13px}.dividends-result__warn{color:var(--color-warning)}.dividends-page__error{color:var(--color-danger);margin-bottom:12px;font-size:13px}.dividends-year-filter{margin-bottom:10px;font-size:13px}.dividends-year-filter input{border:1px solid var(--color-border-input);border-radius:4px;width:90px;padding:5px 8px}.dividends-table{border-collapse:collapse;width:100%;font-size:13px}.dividends-table th,.dividends-table td{border-bottom:1px solid var(--color-border);text-align:left;padding:6px 8px}.dividends-page__empty{color:var(--color-text-faint);margin-top:10px;font-size:13px}.dividends-total{margin-top:16px;font-size:15px;font-weight:700}.edit-bill-overlay{z-index:100;background:#0006;justify-content:center;align-items:flex-start;padding:24px;display:flex;position:fixed;inset:0;overflow-y:auto}.edit-bill-modal{background:#fff;border-radius:8px;width:720px;max-width:100%;padding:20px 24px}.edit-bill-modal__toolbar{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.edit-bill-modal__toolbar h2{margin:0;font-size:18px}.edit-bill-modal__toolbar button{cursor:pointer;border:1px solid var(--color-border-input);background:#fff;border-radius:6px;padding:6px 14px;font-size:13px}.edit-bill-modal__section-title{color:var(--color-text);margin:18px 0 8px;font-size:14px}.edit-bill-modal__bottle,.edit-bill-modal__split{align-items:center;gap:16px;margin-top:12px;font-size:13px;display:flex}.edit-bill-modal__summary{margin-top:16px;font-size:16px;font-weight:700}.edit-bill-modal__save{background:var(--color-primary);color:#fff;cursor:pointer;border:none;border-radius:6px;margin-top:16px;padding:10px 20px;font-size:14px}.edit-bill-modal__save:disabled{background:var(--color-text-faint);cursor:not-allowed}.edit-bill-modal__error{color:var(--color-danger);margin-top:10px;font-size:13px}.edit-bill-modal__version-view{margin-top:12px}.edit-bill-modal__version-note{color:var(--color-warning);background:var(--color-warning-bg);border-radius:6px;margin-bottom:10px;padding:8px 10px;font-size:13px}.login-page{background:var(--color-surface);height:100vh;font-family:var(--font-sans);justify-content:center;align-items:center;display:flex}.login-card{background:#fff;border-radius:12px;flex-direction:column;gap:14px;width:320px;padding:32px 36px;display:flex;box-shadow:0 4px 20px #00000014}.login-card h1{text-align:center;margin:0 0 8px;font-size:20px}.login-card .field{color:var(--color-text);flex-direction:column;gap:4px;font-size:13px;display:flex}.login-card .field input{border:1px solid var(--color-border-input);border-radius:6px;padding:8px 10px;font-size:14px}.login-card button{background:var(--color-primary);color:#fff;cursor:pointer;border:none;border-radius:6px;margin-top:8px;padding:10px;font-size:15px}.login-card button:disabled{background:var(--color-primary-disabled);cursor:not-allowed}.login-card__error{color:var(--color-danger);margin:0;font-size:13px}.camera-capture{border:1px solid var(--color-border);background:var(--color-surface);border-radius:8px;flex-direction:column;gap:8px;max-width:420px;padding:12px;display:flex}.camera-capture__label{color:var(--color-text);font-size:13px;font-weight:600}.camera-capture__video{background:#000;border-radius:6px;width:100%}.camera-capture__canvas{display:none}.camera-capture__actions{gap:8px;display:flex}.camera-capture__actions button{cursor:pointer;border:1px solid var(--color-border-input);background:#fff;border-radius:6px;padding:6px 14px;font-size:13px}.camera-capture__actions button:first-child{background:var(--color-primary);color:#fff;border:none}.camera-capture__actions button:disabled{opacity:.5;cursor:not-allowed}.camera-capture__error{color:var(--color-danger);font-size:13px}.members-page{flex:1;padding:16px 24px;overflow-y:auto}.members-page h3{color:var(--color-text);margin-top:28px;font-size:15px}.members-table{border-collapse:collapse;width:100%;font-size:13px}.members-table th,.members-table td{border-bottom:1px solid var(--color-border);text-align:left;padding:6px 8px}.members-table input{border:1px solid var(--color-border-input);border-radius:4px;width:100%;padding:5px 8px}.members-table input:disabled{background:var(--color-surface);color:var(--color-text-faint);border-color:var(--color-border)}.members-table__row--withdrawn{color:var(--color-text-faint)}.members-table__withdraw{color:var(--color-danger);cursor:pointer;white-space:nowrap;background:0 0;border:none;font-size:12px}.members-table__promote{color:var(--color-primary);cursor:pointer;white-space:nowrap;background:0 0;border:none;font-size:12px}.members-table__temp-badge{color:var(--color-warning);background:var(--color-warning-bg);white-space:nowrap;border-radius:8px;margin-left:6px;padding:1px 6px;font-size:11px;display:inline-block}.members-add-form{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.members-add-form input,.members-add-form select{border:1px solid var(--color-border-input);border-radius:4px;padding:6px 8px;font-size:13px}.members-add-form button{border:1px dashed var(--color-text-faint);cursor:pointer;color:var(--color-text-muted);white-space:nowrap;background:0 0;border-radius:6px;padding:6px 12px;font-size:13px}.members-add-form button:disabled{color:var(--color-text-faint);cursor:not-allowed}.members-add-form__cancel{background:0 0;color:var(--color-text-faint)!important;border:none!important}.members-page__error{color:var(--color-danger);font-size:13px}.members-add-form__photos{flex-wrap:wrap;gap:16px;margin-top:10px;display:flex}.members-add-form__photo-slot{color:var(--color-text-muted);flex-direction:column;align-items:flex-start;gap:6px;font-size:12px;display:flex}.members-add-form__photo-slot img{object-fit:cover;border:1px solid var(--color-border-input);border-radius:6px;width:96px;height:96px}.members-add-form__photo-slot button{border:1px dashed var(--color-text-faint);cursor:pointer;color:var(--color-text-muted);white-space:nowrap;background:0 0;border-radius:6px;padding:5px 10px;font-size:12px}.members-add-form__ocr-status{color:var(--color-primary)}.members-add-form__ocr-error{color:var(--color-danger)}.cctv-column{border-left:1px solid var(--color-border);background:var(--color-surface);flex-shrink:0;width:260px;padding:16px 12px;overflow-y:auto}.cctv-column__title{margin:0 0 10px;font-size:15px}.cctv-column__empty,.cctv-column__error{color:var(--color-text-faint);font-size:13px}.cctv-column__error{color:var(--color-danger)}.cctv-column__list{flex-direction:column;gap:10px;display:flex}.cctv-card{border:1px solid var(--color-border-input);background:#fff;border-radius:8px;padding:8px}.cctv-card--flagged{border-color:var(--color-warning-border);background:var(--color-warning-bg)}.cctv-card__snapshot{aspect-ratio:16/9;object-fit:cover;background:#222;border-radius:6px;width:100%;display:block}.cctv-card__snapshot--none{color:var(--color-text-faint);background:var(--color-surface);border:1px dashed var(--color-border-input);justify-content:center;align-items:center;font-size:12px;display:flex}.cctv-card__time{color:var(--color-text-muted);margin-top:6px;font-size:12px}.cctv-card__weight{cursor:pointer;text-align:left;background:0 0;border:none;border-radius:6px;align-items:baseline;gap:6px;width:100%;margin-top:2px;padding:4px 2px;display:flex}.cctv-card__weight:hover{background:var(--color-primary-bg)}.cctv-card__raw{color:var(--color-text-muted);font-variant-numeric:tabular-nums;font-size:13px}.cctv-card__net{color:var(--color-text-strong);font-variant-numeric:tabular-nums;font-size:17px;font-weight:700}.cctv-card__edit-hint{color:var(--color-text-faint);margin-left:auto;font-size:13px}.cctv-card__edit{gap:4px;margin-top:4px;display:flex}.cctv-card__edit input{border:1px solid var(--color-border-input);border-radius:5px;width:70px;padding:4px 6px;font-size:14px}.cctv-card__edit button{border:1px solid var(--color-border-input);cursor:pointer;background:#fff;border-radius:5px;padding:4px 8px;font-size:12px}.cctv-card__flag{color:var(--color-warning);margin-top:4px;font-size:11px;line-height:1.35}.cctv-card__actions{gap:5px;margin-top:8px;display:flex}.cctv-card__actions button{border:1px solid var(--color-border-input);cursor:pointer;white-space:nowrap;background:#fff;border-radius:5px;flex:1;padding:5px 4px;font-size:11.5px}.cctv-card__actions button:disabled{opacity:.55;cursor:wait}.cctv-viewer{z-index:200;background:#000000a6;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.cctv-viewer__box{background:#fff;border-radius:10px;width:100%;max-width:900px;padding:10px}.cctv-viewer__head{justify-content:space-between;align-items:center;margin-bottom:8px;font-size:14px;font-weight:600;display:flex}.cctv-viewer__head button{border:1px solid var(--color-border-input);cursor:pointer;background:#fff;border-radius:6px;padding:5px 14px}.cctv-viewer__media{background:#000;border-radius:6px;width:100%;max-height:70vh;display:block}.cctv-card--used{background:var(--color-surface);border-color:var(--color-border);border-style:dashed}.cctv-card--used .cctv-card__snapshot,.cctv-card--used .cctv-card__weight{opacity:.55}.cctv-card--used .cctv-card__weight{cursor:default}.cctv-card--used .cctv-card__weight:hover{background:0 0}.cctv-card__used-tag{color:var(--color-text-muted);background:var(--color-border);border-radius:4px;margin-bottom:6px;padding:2px 6px;font-size:11px;font-weight:600;display:inline-block}.cctv-viewer__stage{line-height:0;position:relative}.cctv-viewer__pip{background:#000;border:2px solid #ffffffd9;border-radius:6px;width:34%;min-width:150px;max-width:300px;position:absolute;top:10px;left:10px;overflow:hidden;box-shadow:0 2px 12px #0000008c}.cctv-viewer__pip-media{width:100%;display:block}.cctv-viewer__pip-loading{color:#fff;text-align:center;padding:14px 8px;font-size:11.5px;line-height:1.4}.cctv-viewer__pip-pick{color:var(--color-text-muted);align-items:center;gap:5px;margin-left:auto;margin-right:10px;font-size:12.5px;font-weight:400;display:flex}.cctv-viewer__pip-pick select{border:1px solid var(--color-border-input);border-radius:5px;padding:3px 6px;font-size:12.5px}.cctv-column__jump{z-index:5;background:var(--color-primary);color:#fff;cursor:pointer;border:none;border-radius:8px;width:100%;margin-bottom:8px;padding:9px 10px;font-size:12.5px;font-weight:700;position:sticky;bottom:8px;box-shadow:0 2px 10px #00000047}.cctv-column__jump:hover{background:var(--color-primary-hover)}.queue-panel{border-left:1px solid var(--color-border);flex-shrink:0;width:320px;padding:16px;overflow-y:auto}.queue-panel__title{margin:0 0 12px;font-size:16px}.queue-panel__list{flex-direction:column;gap:10px;display:flex}.queue-panel__empty{color:var(--color-text-faint);font-size:14px}.queue-card{border:1px solid var(--color-border-input);background:#fff;border-radius:8px;padding:10px 12px;position:relative}.queue-card--stale{border-color:var(--color-warning-border);background:var(--color-warning-bg)}.queue-card--failed{border-color:var(--color-danger);background:var(--color-danger-bg)}.queue-card__delete{cursor:pointer;color:var(--color-text-faint);background:0 0;border:none;font-size:14px;position:absolute;top:6px;right:8px}.queue-card__header{color:var(--color-text-muted);justify-content:space-between;margin-bottom:4px;font-size:12px;display:flex}.queue-card__name{font-size:14px;font-weight:600}.queue-card__weight{color:var(--color-text);margin:2px 0;font-size:13px}.queue-card__price-row{align-items:center;gap:6px;margin:6px 0;display:flex}.badge{border-radius:10px;padding:2px 6px;font-size:11px}.badge--pending{background:var(--color-warning-bg);color:var(--color-warning)}.badge--suggested{background:var(--color-success-bg);color:var(--color-success)}.badge--duplicate{background:var(--color-danger-bg);color:var(--color-danger);border-radius:10px;margin:4px 0;padding:2px 6px;font-size:11px;display:inline-block}.queue-card__note{color:var(--color-text-faint);font-size:11px}.queue-card__use{background:var(--color-primary);color:#fff;cursor:pointer;border:none;border-radius:6px;width:100%;padding:6px;font-size:13px}.queue-card__thumbs{gap:4px;margin:6px 0;display:flex}.queue-card__thumb{background:var(--color-border);height:40px;color:var(--color-text-muted);cursor:pointer;border:none;border-radius:4px;flex:1;justify-content:center;align-items:center;padding:0;font-size:10px;display:flex;overflow:hidden}.queue-card__thumb img{object-fit:cover;width:100%;height:100%}.queue-card__lock{margin-left:4px;font-size:12px}.queue-card__verify-line{margin:2px 0;font-size:12px}.date-range-picker{gap:12px;display:flex}.date-range-picker__field{color:var(--color-text);flex-direction:column;gap:4px;font-size:13px;display:flex}.date-range-picker__field input{border:1px solid var(--color-border-input);border-radius:4px;padding:6px 8px}.report-page{flex:1;padding:20px 28px 32px;overflow-y:auto}.report-page h2{color:var(--color-text-strong);border-left:4px solid var(--color-primary);margin:0 0 4px;padding-left:12px;font-size:19px;font-weight:700}.report-page h3{color:var(--color-text);margin:24px 0 4px;font-size:15px}.report-page__filters{background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;flex-wrap:wrap;align-items:flex-end;gap:12px;margin:14px 0 18px;padding:12px 14px;display:flex}.report-page__filters select{border:1px solid var(--color-border-input);color:var(--color-text);background:#fff;border-radius:6px;padding:7px 10px;font-size:13px}.report-page__filters select:focus{border-color:var(--color-primary);outline:none}.report-page__print{border:1px solid var(--color-border-input);color:var(--color-text);cursor:pointer;background:#fff;border-radius:6px;padding:7px 16px;font-size:13px;font-weight:500;transition:background-color .12s,border-color .12s}.report-page__print:hover{background:var(--color-primary-bg);border-color:var(--color-primary);color:var(--color-primary)}.report-page__error{color:var(--color-danger);background:var(--color-danger-bg);border:1px solid var(--color-danger-border);border-radius:6px;padding:8px 12px;font-size:13px}.report-page__loading{color:var(--color-text-faint);margin:8px 0;font-size:13px}.report-page__empty{color:var(--color-text-faint);text-align:center;background:var(--color-surface);border:1px dashed var(--color-border-input);border-radius:8px;margin-top:12px;padding:20px;font-size:14px}.report-table-wrap{border:1px solid var(--color-border);border-radius:10px;max-width:100%;overflow:auto}.report-table{border-collapse:collapse;width:100%;font-size:13px}.report-table thead th{background:var(--color-surface-accent);color:var(--color-text);text-align:left;border-bottom:1px solid var(--color-border);white-space:nowrap;padding:9px 10px;font-weight:600;position:sticky;top:0}.report-table td{border-bottom:1px solid var(--color-divider);text-align:left;padding:8px 10px}.report-table tbody tr:hover{background:var(--color-primary-bg)}.report-table__extra-row td{color:var(--color-text-muted);background:var(--color-surface);font-style:italic}.report-page__total{color:var(--color-text-strong);margin-top:16px;font-size:15px;font-weight:700}.report-page__summary-cards{flex-wrap:wrap;gap:12px;margin:14px 0 18px;display:flex}.report-page__summary-card{border:1px solid var(--color-border);border-left:3px solid var(--color-primary);background:#fff;border-radius:8px;min-width:130px;padding:10px 18px;box-shadow:0 1px 2px #00000008}.report-page__summary-card-label{color:var(--color-text-faint);font-size:12px}.report-page__summary-card-value{color:var(--color-text-strong);margin-top:2px;font-size:19px;font-weight:700}.report-table__link{color:var(--color-primary);cursor:pointer;background:0 0;border:none;padding:0;font-size:13px;font-weight:500}.report-table__link:hover{text-decoration:underline}.member-drilldown__info{background:var(--color-surface);border-radius:10px;grid-template-columns:repeat(2,1fr);gap:8px 24px;margin:14px 0 22px;padding:14px 16px;font-size:13px;display:grid}.stock-ledger__balance-col{color:var(--color-warning);background:var(--color-warning-bg);font-weight:700}.stock-ledger__branch-group{margin-bottom:24px}.stock-ledger__branch-title{color:var(--color-text);align-items:center;gap:8px;margin:18px 0 8px;font-size:14px;font-weight:600;display:flex}.stock-ledger__current-balance{color:var(--color-warning);background:var(--color-warning-bg);border-radius:999px;padding:2px 10px;font-size:12px;font-weight:700}.stock-adjust-form{background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;flex-wrap:wrap;align-items:center;gap:8px;margin-top:20px;padding:14px 16px;display:flex}.stock-adjust-form select,.stock-adjust-form input{border:1px solid var(--color-border-input);border-radius:6px;padding:7px 10px;font-size:13px}.stock-adjust-form input[type=number]{width:100px}.stock-adjust-form button{background:var(--color-primary);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:7px 18px;font-size:13px;font-weight:500;transition:background-color .12s}.stock-adjust-form button:hover:not(:disabled){background:var(--color-primary-hover)}.stock-adjust-form button:disabled{background:var(--color-text-faint);cursor:not-allowed}@media print{.app-header,.reports-shell__nav,.report-page__filters,.report-page__print,.stock-adjust-form{display:none!important}}.yoy-chart{background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;margin-top:8px;padding:12px}.reports-shell{flex-direction:column;flex:1;min-height:0;display:flex}.reports-shell__nav{border-bottom:1px solid var(--color-border);flex-wrap:wrap;gap:4px;padding:10px 24px;display:flex}.reports-shell__nav button{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:6px 14px;font-size:13px;font-weight:500}.reports-shell__nav button.active{background:var(--color-primary);color:#fff}.reports-shell__body{flex:1;display:flex;overflow-y:auto}.reports-shell__placeholder{color:var(--color-text-faint);padding:24px}.settings-page{flex:1;padding:16px 24px;overflow-y:auto}.settings-page h3{color:var(--color-text);margin-top:28px;font-size:15px}.settings-table{border-collapse:collapse;width:100%;font-size:13px}.settings-table th,.settings-table td{border-bottom:1px solid var(--color-border);text-align:left;padding:6px 8px}.settings-table input{border:1px solid var(--color-border-input);border-radius:4px;width:100%;padding:5px 8px}.settings-table__num{max-width:90px}.settings-table__remove{color:var(--color-danger);cursor:pointer;white-space:nowrap;background:0 0;border:none;font-size:12px}.settings-add-row{gap:8px;margin-top:10px;display:flex}.settings-add-row input{border:1px solid var(--color-border-input);border-radius:4px;padding:6px 8px;font-size:13px}.settings-add-row button{border:1px dashed var(--color-text-faint);cursor:pointer;color:var(--color-text-muted);white-space:nowrap;background:0 0;border-radius:6px;padding:6px 12px;font-size:13px}.settings-add-row button:disabled{color:var(--color-text-faint);cursor:not-allowed}.settings-field{color:var(--color-text);align-items:center;gap:10px;margin-top:8px;font-size:13px;display:flex}.settings-field input{border:1px solid var(--color-border-input);border-radius:4px;padding:5px 8px}.settings-field--checkbox{align-items:flex-start}.settings-field--checkbox input{border:none;width:auto;margin-top:3px;padding:0}.settings-page__hint{color:var(--color-text-muted);margin:4px 0 8px;font-size:12px}.settings-page__error{color:var(--color-danger);font-size:13px}.settings-page__ok{color:var(--color-success);background:var(--color-success-bg);border-radius:6px;padding:6px 10px;font-size:13px}.settings-page__advanced{margin:6px 0 10px;font-size:13px}.settings-page__advanced summary{cursor:pointer;color:var(--color-text-muted);padding:4px 0}.settings-page__save{background:var(--color-primary);color:#fff;cursor:pointer;border:none;border-radius:6px;margin:10px 0 4px;padding:8px 16px;font-size:14px;font-weight:600}.settings-page__save:disabled{background:var(--color-primary-disabled);cursor:not-allowed}.users-page{flex:1;padding:16px 24px;overflow-y:auto}.users-page h3{color:var(--color-text);margin-top:28px;font-size:15px}.users-table{border-collapse:collapse;width:100%;font-size:13px}.users-table th,.users-table td{border-bottom:1px solid var(--color-border);text-align:left;padding:6px 8px}.users-table input,.users-table select{border:1px solid var(--color-border-input);border-radius:4px;padding:5px 8px}.users-table__row--inactive{color:var(--color-text-faint);background:var(--color-surface)}.users-table__action{color:var(--color-primary);cursor:pointer;white-space:nowrap;background:0 0;border:none;margin-right:8px;font-size:12px}.users-table__action--danger{color:var(--color-danger)}.users-add-form{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.users-add-form input,.users-add-form select{border:1px solid var(--color-border-input);border-radius:4px;padding:6px 8px;font-size:13px}.users-add-form button{border:1px dashed var(--color-text-faint);cursor:pointer;color:var(--color-text-muted);white-space:nowrap;background:0 0;border-radius:6px;padding:6px 12px;font-size:13px}.users-add-form button:disabled{color:var(--color-text-faint);cursor:not-allowed}.users-page__error{color:var(--color-danger);font-size:13px}.users-page__hint{color:var(--color-text-faint);max-width:650px;font-size:13px}.users-table__line-link{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.users-table__line-link select{max-width:140px;font-size:12px}.users-table__line-linked-badge{color:var(--color-success);background:var(--color-success-bg);white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:12px;font-weight:600}.users-table__branch-access{flex-direction:column;gap:2px;display:flex}.users-table__branch-access label{white-space:nowrap;cursor:pointer;align-items:center;gap:4px;font-size:12px;display:flex}.users-table__menu-access{flex-direction:column;gap:2px;display:flex}.users-table__menu-access label{white-space:nowrap;cursor:pointer;align-items:center;gap:4px;font-size:12px;display:flex}.users-table__menu-override{color:var(--color-warning);font-weight:600}.users-branch-list{margin:8px 0;padding-left:20px;font-size:13px}.app-layout{height:100vh;font-family:var(--font-sans);color:var(--color-text);flex-direction:column;display:flex}.app-header{background:var(--color-header-bg);border-bottom:1px solid var(--color-header-bg);color:var(--color-header-text);align-items:center;gap:14px;padding:10px 20px;display:flex;box-shadow:0 2px 8px #1419232e}.app-header__brand{color:var(--color-header-text);letter-spacing:.2px;white-space:nowrap;padding-right:4px;font-size:17px;font-weight:800}.app-header__tabs{background:var(--color-header-bg-soft);border:1px solid var(--color-header-border);border-radius:10px;flex-wrap:wrap;gap:2px;padding:3px;display:flex}.app-header__tabs button{color:var(--color-header-text);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:7px;padding:7px 14px;font-size:14px;font-weight:700;transition:background-color .15s,color .15s,box-shadow .15s}.app-header__tabs button:hover:not(.active){color:var(--color-header-text);background:#ffffff73}.app-header__tabs button.active{background:var(--color-header-active-bg);color:var(--color-header-active-text);font-weight:700;box-shadow:0 1px 4px #1b3a104d}.app-header__banner{color:var(--color-success);background:var(--color-success-bg);border-radius:6px;padding:4px 10px;font-size:13px;font-weight:400}.app-header__spacer{flex:1}.app-header__offline{color:var(--color-danger);background:var(--color-danger-bg);border-radius:6px;padding:4px 10px;font-size:12px;font-weight:600}.app-header__pending{color:var(--color-warning);background:var(--color-warning-bg);border-radius:6px;align-items:center;gap:8px;padding:4px 10px;font-size:12px;display:flex}.app-header__sync{border:1px solid var(--color-warning-border);color:var(--color-warning);cursor:pointer;background:0 0;border-radius:5px;padding:3px 8px;font-size:12px}.app-header__sync:disabled{color:var(--color-text-faint);border-color:var(--color-border-input);cursor:not-allowed}.app-header__branch-switcher{border:1px solid var(--color-header-border);color:var(--color-header-text);cursor:pointer;background:#fff;border-radius:6px;padding:5px 8px;font-size:13px;font-weight:600;transition:box-shadow .15s}.app-header__branch-switcher:focus{outline:none;box-shadow:0 0 0 3px #1b3a1059}.app-header__user{color:var(--color-header-text-dim);font-size:13px;font-weight:500}.app-header__logout{border:1px solid var(--color-header-border);color:var(--color-header-text);cursor:pointer;background:#ffffff8c;border-radius:6px;padding:5px 12px;font-size:13px;font-weight:600;transition:border-color .15s,color .15s}.app-header__logout:hover{border-color:var(--color-danger);color:var(--color-danger)}.app-error{color:var(--color-danger);margin:0;padding:8px 24px;font-size:13px}.app-body{flex:1;min-height:0;display:flex;overflow-x:auto}.app-body--stacked{flex-direction:column}.app-subnav{flex-wrap:wrap;flex:none;gap:4px;padding:10px 24px 0;display:flex}.app-subnav button{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:6px 14px;font-size:13px;font-weight:500}.app-subnav button.active{background:var(--color-primary);color:#fff}.bill-form{min-width:420px}@media (width<=1400px){.queue-panel{width:280px}.cctv-column{width:220px}}@media (width<=1150px){.queue-panel{width:250px}.cctv-column{width:200px}}
