/* Sano Trailers — clean rental-SaaS design system inspired by Booqable workflows, implemented with original styling. */
/* ABI-341953240: separate company copy addresses from the main email. */
label[data-other-emails], label[data-edit-other-emails], label[data-inline-other-emails]{margin-top:16px}
:root{
  --bg:#edf1f5;
  --surface:#ffffff;
  --surface-soft:#f7f9fc;
  --ink:#121722;
  --ink-2:#263241;
  --muted:#657386;
  --muted-2:#8a97a8;
  --line:#d8e0ea;
  --line-soft:#e8edf3;
  --brand:#1463ff;
  --brand-2:#0e54dc;
  --brand-soft:#eaf1ff;
  --cyan:#1bb7cf;
  --success:#12a66a;
  --success-soft:#e7f8f1;
  --warning:#f59e0b;
  --danger:#d92d20;
  --danger-soft:#fff0ee;
  --shadow-sm:0 1px 2px rgba(15,23,42,.06);
  --shadow-md:0 10px 28px rgba(17,24,39,.08);
  --shadow-lg:0 24px 70px rgba(17,24,39,.14);
  --radius-sm:10px;
  --radius:14px;
  --radius-lg:20px;
  --sidebar:200px;
}
[hidden]{display:none!important}
*{box-sizing:border-box}
html{min-height:100%;background:var(--bg)}
body{margin:0;min-height:100%;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",ui-sans-serif,system-ui,sans-serif;background:var(--bg);color:var(--ink);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit}
input,select,textarea{width:100%;border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff;color:var(--ink);padding:11px 12px;outline:none;transition:border-color .16s ease,box-shadow .16s ease,background .16s ease}
input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 4px rgba(20,99,255,.12)}
textarea{resize:vertical}
label{display:grid;gap:7px;color:var(--ink-2);font-weight:650}
small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
strong,b{font-weight:750}.muted,.hint,.empty{color:var(--muted)}

.btn,button{border:0;border-radius:10px;padding:10px 15px;font-weight:750;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;transition:transform .12s ease,box-shadow .12s ease,background .12s ease,border-color .12s ease;color:var(--ink)}
.btn:hover,button:hover{transform:translateY(-1px)}
.btn.primary,button.primary{background:var(--brand);color:#fff;box-shadow:0 8px 18px rgba(20,99,255,.22)}
.btn.primary:hover,button.primary:hover{background:var(--brand-2)}
.btn.warning,button.warning{background:var(--warning);color:#fff;box-shadow:0 8px 18px rgba(245,158,11,.26)}
.btn.warning:hover,button.warning:hover{background:#d97706}
.btn.ghost,.logout button{background:#fff;border:1px solid var(--line);color:var(--ink-2);box-shadow:var(--shadow-sm)}
.btn.ghost:hover,.logout button:hover{border-color:#b9c5d6;background:var(--surface-soft)}
.btn.scan-waiting-list{background:#1d4ed8;color:#fff}
.btn.scan-waiting-list:hover:not(:disabled){background:#1e40af}
.btn.scan-waiting-list:focus-visible{outline:3px solid #1e3a8a;outline-offset:3px}
.btn.scan-waiting-list:disabled{background:#475569;color:#fff;cursor:not-allowed;transform:none}
.btn.danger,button.danger{background:var(--danger-soft);color:var(--danger);border:1px solid #ffd2cc}
.badge,.pill{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:5px 9px;background:var(--brand-soft);color:#0b4ccc;font-weight:750;font-size:12px;text-transform:capitalize;white-space:nowrap}
.badge:before{content:"";width:7px;height:7px;border-radius:999px;background:currentColor;opacity:.75}

.login-body{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 20% 20%,#dbeafe 0 28%,transparent 29%),linear-gradient(145deg,#f8fbff,#eaf0f7)}
.login-card{width:min(440px,92vw);background:rgba(255,255,255,.92);border:1px solid rgba(216,224,234,.9);border-radius:24px;padding:34px;box-shadow:var(--shadow-lg);backdrop-filter:blur(18px)}
.brand-logo{display:block;width:200px;max-width:70%;height:auto;margin:0 0 18px}
.login-card h1{margin:0 0 8px;font-size:28px;line-height:1.1;letter-spacing:-.035em}.stack{display:grid;gap:14px;margin-top:22px}

.app-shell{display:grid;grid-template-columns:var(--sidebar) minmax(0,1fr);min-height:100vh;background:var(--bg)}
.sidebar{background:#fff;border-right:1px solid var(--line);height:100vh;position:sticky;top:0;display:flex;flex-direction:column;padding:0;overflow-y:auto;z-index:5}
.logo{height:100px;display:flex!important;align-items:center;padding:0 16px;border-bottom:1px solid var(--line)}
.logo img{height:64px;width:auto;display:block}
.sidebar>a:not(.logo),.logout button{margin:3px 8px;padding:10px 11px;border-radius:10px;display:flex;align-items:center;gap:10px;color:#334155;font-weight:650;border:1px solid transparent;background:transparent;min-height:39px;box-shadow:none;justify-content:flex-start;width:calc(100% - 16px);text-align:left;line-height:1.2}
.sidebar>a:not(.logo)>span:first-child,.logout button>span:first-child{flex:0 0 22px;width:22px;min-width:22px;display:inline-grid;place-items:center;align-self:center;line-height:1;font-size:15px;text-align:center}
.sidebar>a:not(.logo)>span:last-child,.logout button>span:last-child{display:flex;align-items:center;min-width:0;line-height:1.2}
.sidebar>a:not(.logo):hover,.sidebar>a:not(.logo):focus{background:var(--surface-soft);border-color:var(--line-soft);color:var(--brand);transform:none}.sidebar>a:nth-of-type(2){margin-top:12px;color:var(--brand)}
.logout{margin-top:auto;border-top:1px solid var(--line);padding:10px 0}.logout button{color:var(--muted);background:var(--surface-soft)}

.main{min-width:0;padding:0 40px 56px}.trial-banner{height:40px;margin:0 -40px 0;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;gap:14px;font-weight:650;font-size:13.5px;box-shadow:0 1px 0 rgba(0,0,0,.06)}.trial-banner a{background:#fff;color:#111827;border-radius:7px;padding:4px 12px;font-weight:750;box-shadow:0 1px 2px rgba(0,0,0,.18)}
.mobile-nav{display:none}.page-header{min-height:100px;margin:0 -40px 30px;padding:0 40px;display:flex;align-items:center;justify-content:space-between;gap:18px;background:#fff;border-bottom:1px solid var(--line)}
.page-header h1{margin:0;font-size:28px;line-height:1.12;letter-spacing:-.04em;font-weight:760}.page-header p{margin:8px 0 0;color:var(--muted);font-size:15px}.eyebrow{margin:0 0 8px!important;color:var(--brand)!important;text-transform:none;font-size:13px!important;font-weight:760;letter-spacing:.01em}.header-actions,.form-actions,.document-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.inline-form{display:inline-flex}
.flashes{margin:18px 0}.flash{padding:12px 14px;border-radius:var(--radius);border:1px solid #bfdbfe;background:#eff6ff;color:#1d4ed8;font-weight:650}.flash.error{border-color:#fecaca;background:var(--danger-soft);color:var(--danger)}.flash.success{border-color:#bbf7d0;background:var(--success-soft);color:#047857}
/* Ticket ABI-341953249: the day-report over/short reasons pop up as a modal. */
.cash-variance-dialog{width:min(34rem,calc(100% - 2rem));max-width:calc(100% - 2rem);max-height:90dvh;overflow-y:auto;box-sizing:border-box;border:1px solid #fecaca;border-radius:12px;padding:24px;background:var(--surface);color:var(--text)}
.cash-variance-dialog::backdrop{background:rgba(15,23,42,.45)}
.cash-variance-dialog h2{margin:0 0 10px;font-size:20px;font-weight:760;color:var(--danger)}
.cash-variance-dialog p{margin:0 0 12px;color:var(--muted);font-size:15px}
.cash-variance-list{margin:0 0 18px;padding-left:20px;font-weight:650;color:var(--danger)}
.cash-variance-list li{margin:0 0 6px}

.panel,.setup-card,.feature-grid>article,.product-card,.empty-state,.rental-period,.product-detail-card{background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}
.panel{padding:22px}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.panel h2,.setup-card h2{margin:0 0 14px;font-size:16px;letter-spacing:-.02em}.panel h3{margin:16px 0 10px;font-size:14px}.panel-title a{color:var(--brand);font-weight:750}
.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:20px}.metrics>div{background:#fff;border:1px solid var(--line-soft);border-radius:18px;padding:18px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden}.metrics>div:before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:linear-gradient(var(--brand),var(--cyan))}.metrics b{display:block;font-size:28px;letter-spacing:-.04em}.metrics span{color:var(--muted);font-weight:650}.payments-summary-cards{grid-template-columns:repeat(4,minmax(0,1fr));margin-top:18px}.two-col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.form-grid.compact{gap:10px}.span-2{grid-column:1/-1}.settings-form,.order-form,.product-form,.customer-form{display:grid;gap:18px}.form-section{display:grid;gap:14px;padding-top:4px}.two-options,.option-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.choice-card{border:1px solid var(--line);border-radius:14px;padding:14px;background:#fff}.switch,.checkline{display:flex;align-items:center;gap:10px;font-weight:650}.switch input,.checkline input{width:auto;min-width:0;margin:0;accent-color:var(--brand)}

.setup-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:22px;align-items:start}.setup-main{display:grid;gap:14px}.setup-card{padding:0;overflow:hidden}.setup-card-head{display:flex;align-items:center;gap:14px;padding:22px 20px 16px}.setup-icon{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;background:#eadcff;color:#6d28d9;font-size:18px;font-weight:900}.setup-card h2{margin:0}.setup-count{margin-left:auto;color:var(--muted);font-size:13px;font-weight:700}.setup-task-list{border-top:1px solid var(--line-soft)}.check-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:12px;align-items:center;padding:15px 18px;border-bottom:1px solid var(--line-soft);font-weight:720;color:var(--ink);transition:background .12s ease}.check-row:last-child{border-bottom:0}.check-row:hover{background:#fbfdff;color:var(--brand)}.check{width:20px;height:20px;border-radius:999px;border:1.5px solid #bac5d4;display:grid;place-items:center;color:#8a97a8;font-size:12px;font-weight:850}.check.done{background:var(--success);border-color:var(--success);color:#fff}.check-row.active{margin:0 0;border:1.5px solid var(--brand);border-radius:12px;background:#fff;box-shadow:0 0 0 3px rgba(20,99,255,.08)}.task-arrow{color:var(--muted-2)}
.setup-aside{display:grid;gap:16px}.promo-card{background:#fff;border:1px solid var(--line-soft);border-radius:20px;padding:20px;box-shadow:var(--shadow-sm)}.promo-card.blue{background:linear-gradient(145deg,#f4f8ff,#fff);border-color:#d9e7ff}.promo-card h3{margin:0 0 8px;font-size:17px;letter-spacing:-.02em}.promo-card p{margin:0 0 16px;color:var(--muted)}.rating{display:flex;align-items:center;gap:10px;font-weight:800}.rating strong{font-size:26px}.feature-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:22px}.feature-grid>article{padding:20px}.feature-grid h3{margin:0 0 8px;font-size:17px}.feature-grid p{color:var(--muted);margin:0 0 16px}

.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.filters input{flex:1 1 260px}.filters select{flex:0 1 180px}.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:14px 0}.tabs a{padding:9px 12px;border-radius:999px;background:#fff;border:1px solid var(--line);color:var(--muted);font-weight:750}.tabs a:hover{color:var(--brand);border-color:#bcd2ff;background:var(--brand-soft)}.table-wrap{overflow:auto;border:1px solid var(--line-soft);border-radius:16px;background:#fff}.data-table{width:100%;border-collapse:separate;border-spacing:0;min-width:720px}.data-table th{background:#f8fafc;color:#607086;font-size:12px;text-transform:uppercase;letter-spacing:.04em;text-align:left;padding:13px 14px;border-bottom:1px solid var(--line)}.data-table td{padding:14px;border-bottom:1px solid var(--line-soft);vertical-align:middle}.data-table tr:last-child td{border-bottom:0}.data-table tbody tr:hover{background:#fbfdff}.list-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 0;border-bottom:1px solid var(--line-soft)}.list-row:last-child{border-bottom:0}.schedule-list{display:grid;gap:10px}.schedule-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px;border:1px solid var(--line-soft);border-radius:14px;background:#fff}.schedule-row:hover{border-color:#bdd2ff;background:#fbfdff}.payment-form{display:grid;gap:12px;padding:14px;background:var(--surface-soft);border:1px solid var(--line-soft);border-radius:16px;margin:14px 0}.totals{max-width:420px;margin-left:auto;background:var(--surface-soft);border-radius:16px;padding:12px 16px}.total-row{background:var(--brand-soft);margin:6px -8px 0;padding:12px 8px;border-radius:12px;color:var(--brand)}.total-row span,.total-row b{color:var(--brand);font-weight:850}.invoice-logo-row{display:flex;justify-content:flex-start;margin-bottom:18px}.invoice-logo{width:170px;max-width:48vw;height:auto;display:block}.document-head,.document-meta{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.document-type-quote .document-meta{margin-bottom:56px}.document-type-invoice .table-wrap{margin-top:28px}.document-type-quote .table-wrap{margin-top:24px}.document-head.document-head-number-only{justify-content:flex-end}.document-head .invoice-number-block{min-width:220px}.invoice-number-block>strong,.invoice-number-block>span{display:block}.invoice-date-line{color:var(--ink)}.document-page{background:#fff}.invoice-example-layout{display:grid;gap:30px}.invoice-template-layout{padding-top:2px}.invoice-top-grid,.invoice-header-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(150px,.62fr) minmax(225px,.94fr);gap:38px;align-items:start}.document-type-invoice .invoice-logo{width:118px;max-width:36vw;margin-left:-15px}.invoice-logo-address{display:grid;justify-items:start;gap:18px}.invoice-branch-address{max-width:260px}.invoice-branch-address h3,.invoice-detail-stack h3,.invoice-order-block h3{margin:0 0 7px;color:#4b617c;font-size:12px;letter-spacing:.01em;text-transform:none}.invoice-branch-address p,.invoice-detail-stack p,.invoice-order-block p{margin:0;line-height:1.65}.invoice-detail-stack{grid-column:3;display:grid;gap:28px;justify-self:end;max-width:225px}.invoice-number-block{text-align:left;min-width:190px;justify-self:end}.invoice-number-block>strong,.invoice-number-block>span{display:block}.invoice-number-block>strong,.invoice-order-block h3{color:#4b617c}.invoice-number-block>span,.invoice-order-block p>strong:first-child{font-weight:850}.invoice-customer-block{margin-top:4px;justify-self:start;text-align:left;max-width:240px}.invoice-customer-block h3{color:#4b617c}.invoice-footer-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:18px;align-items:start}.invoice-banking-block{justify-self:start;max-width:340px}.invoice-thank-you{font-weight:850;color:var(--ink);margin:0 0 12px}.invoice-order-block{justify-self:end;text-align:left;max-width:225px;margin-top:82px}.totals .list-row b{min-width:130px;text-align:right;font-variant-numeric:tabular-nums}.timeline{display:grid;gap:12px}.timeline-row{display:grid;grid-template-columns:120px minmax(0,1fr) auto;gap:12px;padding:14px;border:1px solid var(--line-soft);border-radius:14px;background:#fff}

.store-header{height:74px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:20px;padding:0 clamp(18px,5vw,64px);position:sticky;top:0;z-index:3}.store-logo{font-weight:850;font-size:20px;letter-spacing:-.03em}.store-header input{max-width:420px;margin-left:auto}.store-main{padding:clamp(22px,5vw,56px);max-width:1180px;margin:0 auto}.store-hero{background:linear-gradient(135deg,#fff,#eef5ff);border:1px solid #dbe8ff;border-radius:28px;padding:34px;margin-bottom:18px;box-shadow:var(--shadow-md)}.store-hero h1{margin:.2rem 0;font-size:clamp(2rem,5vw,3.8rem);letter-spacing:-.055em}.hero-copy{font-size:1.16rem;color:#24364c}.rental-period{display:flex;justify-content:space-between;gap:16px;padding:16px 18px;margin-bottom:18px}.product-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:18px}.product-card{padding:18px;display:grid;gap:10px}.product-card h2{margin:4px 0 0}.product-image{width:100%;aspect-ratio:16/10;border-radius:16px;background:linear-gradient(145deg,#dceaff,#f6f9ff);display:grid;place-items:center;color:#2b5fb7;font-size:32px;font-weight:900}.product-image.large{width:170px;min-width:170px;height:130px}.product-detail-card{padding:22px;display:flex;gap:22px;align-items:center;margin-bottom:18px}.checkout-main{max-width:920px}.checkout-form{display:grid;gap:16px}.confirmation-card{padding:28px}.store-footer{display:flex;gap:12px;justify-content:space-between;flex-wrap:wrap;padding:24px clamp(18px,5vw,64px);color:var(--muted);background:#fff;border-top:1px solid var(--line)}.store-contact-line{font-weight:750;color:var(--ink-2)}
.report-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.report-grid .panel:first-child{grid-column:1/-1}.empty-state{padding:32px;text-align:center}.empty-state h1,.empty-state h2{margin-top:0}

@media(max-width:1100px){.setup-layout{grid-template-columns:1fr}.setup-aside{grid-template-columns:repeat(2,minmax(0,1fr))}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Phone navigation chips (ticket ABI-341953031): every chip is one uniform button
   shape in an auto-fit grid, so Dashboard / Orders / Customers / Inventory /
   Branch / Settings all stay inside the viewport with no sideways clipping. */
@media(max-width:860px){:root{--sidebar:0}.app-shell{display:block}.sidebar{position:relative;height:auto;border-right:0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;gap:0;padding-bottom:8px}.logo{grid-column:1/-1;height:72px}.logo img{height:52px}.sidebar>a:not(.logo),.logout{display:none}.main{padding:0 18px 36px}.trial-banner{margin:0 -18px}.page-header{margin:0 -18px 20px;padding:18px;min-height:auto;align-items:flex-start}.mobile-nav{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:8px;padding:12px 0;overflow:visible}.mobile-nav a{display:block;min-width:0;height:44px;line-height:42px;padding:0 6px;font-size:13px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-radius:10px;background:#fff;border:1px solid var(--line);font-weight:750}.mobile-nav a.branch-context{grid-column:1/-1;background:#fff;color:var(--brand)}.two-col,.form-grid,.feature-grid,.report-grid,.setup-aside{grid-template-columns:1fr}.metrics{grid-template-columns:1fr 1fr}.header-actions{width:100%}.page-header{flex-wrap:wrap}.product-detail-card{display:grid}.product-image.large{width:100%;min-width:0}.store-header{height:auto;padding:14px 18px;flex-wrap:wrap}.store-header input{max-width:none;margin-left:0}.data-table{min-width:680px}}
@media(max-width:520px){.metrics{grid-template-columns:1fr}.setup-card-head{align-items:flex-start}.setup-count{display:none}.check-row{grid-template-columns:24px minmax(0,1fr)}.task-arrow{display:none}.btn,button{width:100%}.toolbar .btn,.toolbar button{width:auto}.rental-period{display:grid}.document-head,.document-meta{display:grid}.invoice-top-grid,.invoice-header-grid,.invoice-footer-grid{grid-template-columns:1fr}.invoice-detail-stack{grid-column:auto;max-width:none}.invoice-number-block,.invoice-order-block{text-align:left;justify-self:start}.invoice-banking-block{justify-self:start;max-width:none}.timeline-row{grid-template-columns:1fr}.estimate-grid{grid-template-columns:1fr}}

/* Dashboard page pass */
.dashboard-header{min-height:60px}.dashboard-header h1{font-size:26px}.dashboard-note{display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:16px;align-items:center;margin-bottom:18px;padding:18px 20px}.dashboard-note p{margin:3px 0 0;color:var(--muted)}.dashboard-note a{color:var(--brand);font-weight:760}.note-icon{width:26px;height:26px;border-radius:999px;display:grid;place-items:center;border:2px solid var(--brand);color:var(--brand);font-weight:900}.dashboard-metrics{margin-bottom:18px}.metric-card small{margin:0 0 8px;color:var(--muted-2);font-weight:760;text-transform:uppercase;letter-spacing:.04em}.dashboard-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:30px;align-items:start}.movement-card{padding:0;overflow:hidden}.movement-head{min-height:66px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 24px;border-bottom:1px solid var(--line)}.movement-head h2{margin:0;font-size:18px;letter-spacing:-.025em}.movement-head .btn{min-height:42px}.movement-body{min-height:88px;padding:0}.movement-body .schedule-list{padding:14px}.movement-row{border-color:var(--line);box-shadow:none}.empty-results{min-height:88px;display:grid;place-items:center;text-align:center;color:var(--muted);font-weight:700}.empty-results span{display:block;font-weight:600;color:var(--muted-2);font-size:13px;margin-top:4px}.movement-foot{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding:14px 24px}.movement-foot a{color:var(--brand);font-weight:700}.dashboard-grid+.panel{margin-top:18px}@media(max-width:1000px){.dashboard-grid{grid-template-columns:1fr;gap:18px}.dashboard-note{grid-template-columns:32px minmax(0,1fr)}}@media(max-width:620px){.dashboard-note{grid-template-columns:1fr}.dashboard-note a{justify-self:start}.movement-head{display:grid}.movement-head .header-actions{width:100%}.movement-head .btn{width:auto}.movement-foot{padding:12px 16px}.dashboard-metrics{grid-template-columns:1fr}}


/* Orders index page pass */
.orders-header{display:grid;grid-template-columns:minmax(190px,1fr) minmax(260px,420px) auto;align-items:center;gap:20px}
.module-title{display:flex;align-items:center;gap:13px}.module-icon{width:46px;height:46px;border:1px solid var(--line);border-radius:12px;display:grid;place-items:center;background:#fff;box-shadow:var(--shadow-sm);color:var(--ink);font-size:20px;font-weight:850}.orders-search{height:43px;border:1px solid var(--line);border-radius:10px;background:#fff;display:flex;align-items:center;gap:10px;padding:0 12px;box-shadow:var(--shadow-sm)}.orders-search span{color:var(--muted);font-weight:850}.orders-search input{border:0;box-shadow:none!important;padding:0;background:transparent}.orders-page-shell{display:grid;grid-template-columns:220px minmax(0,1fr);gap:24px;align-items:start;margin:-30px -40px 0}.orders-filter-rail{border-radius:0;border-left:0;border-top:0;border-bottom:0;min-height:calc(100vh - 140px);padding:0;background:#fff;box-shadow:none}.orders-filter-form{display:grid}.filter-group{border-bottom:1px solid var(--line);padding:15px 16px 17px}.filter-group.compact{padding-bottom:18px}.filter-group-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.filter-group-head strong{font-size:14px}.filter-group-head span{color:var(--brand);font-weight:900}.filter-check{display:grid;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:8px;margin:9px 0;color:var(--ink);font-weight:720}.filter-check input{width:20px;height:20px;margin:0;accent-color:var(--brand);border-radius:6px}.filter-check em{font-style:normal;color:var(--muted);font-weight:650}.filter-check.disabled{opacity:.55}.filter-clear{display:inline-flex;margin-top:8px;color:var(--brand);font-weight:750}.filter-date-line{display:flex;gap:10px;align-items:center;color:var(--muted);font-weight:700}.export-btn{margin:16px}.orders-workspace{min-width:0;padding:26px 40px 42px 0}.orders-tabs-row{display:flex;align-items:center;justify-content:space-between;gap:14px;border-bottom:1px solid var(--line);margin-bottom:16px}.orders-tabs{margin:0}.orders-tabs a{border:0;background:transparent;border-radius:0;padding:12px 0;margin-right:24px;color:var(--muted);position:relative}.orders-tabs a.active,.orders-tabs a:hover{color:var(--ink);background:transparent}.orders-tabs a.active:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;background:var(--brand);border-radius:999px}.metrics-toggle{border:0;box-shadow:none;background:transparent;color:var(--brand);padding-inline:0}.orders-metrics{grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:8px;margin-bottom:10px}.orders-metrics>div{border-color:#ced7e4;border-radius:10px;min-height:66px;padding:10px 12px}.orders-metrics>div:before{display:none}.orders-metrics small{display:flex;align-items:center;gap:5px;margin:0 0 5px;color:var(--ink);font-size:12px;line-height:1.2;text-transform:none;letter-spacing:0}.orders-metrics b{font-size:20px;line-height:1.1;font-weight:500}.orders-list-panel{padding:0;background:transparent;border:0;box-shadow:none}.active-filter-line{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;padding:12px 14px;border:1px solid #bfdbfe;background:#eff6ff;color:#1d4ed8;border-radius:12px;font-weight:700}.active-filter-line a{color:var(--brand)}.orders-table-wrap{border-color:#d4dce8;border-radius:12px}.orders-table th{background:#fff}.orders-table td{background:#fff}.table-primary-text{display:block;font-weight:760}.orders-table .btn{min-height:34px;padding:7px 11px}.status-draft{background:#f1f5f9;color:#475569}.status-reserved{background:#eaf1ff;color:#0b4ccc}.status-started{background:#fff7ed;color:#c2410c}.status-returned{background:#e7f8f1;color:#047857}.status-archived{background:#f8fafc;color:#64748b}.status-canceled{background:#fff0ee;color:#d92d20}.orders-empty-state{min-height:420px;display:grid;place-items:center;text-align:center;align-content:center;padding:50px 22px;position:relative;overflow:hidden}.orders-empty-state h2{font-size:28px;line-height:1.12;margin:0 0 16px;letter-spacing:-.04em}.orders-empty-state h2 span{position:relative}.orders-empty-state h2 span:after{content:"";position:absolute;left:0;right:0;bottom:-8px;height:9px;border:2px solid #86efac;border-color:#86efac transparent transparent transparent;border-radius:50%;transform:rotate(-2deg)}.orders-empty-state p{max-width:640px;margin:0 0 22px;color:var(--muted);font-size:16px}.empty-arrow{position:absolute;width:210px;height:210px;right:60px;top:10px;border-right:2px solid #111827;border-top:2px solid #111827;border-radius:0 80% 0 0;transform:rotate(22deg);opacity:.9}.empty-arrow:after{content:"";position:absolute;right:-10px;top:-7px;width:22px;height:22px;border-right:2px solid #111827;border-top:2px solid #111827;transform:rotate(48deg)}
@media(max-width:1050px){.orders-header{grid-template-columns:1fr auto}.orders-search{grid-column:1/-1;order:3}.orders-page-shell{grid-template-columns:1fr;margin:0}.orders-filter-rail{border:1px solid var(--line-soft);border-radius:var(--radius-lg);min-height:0}.orders-filter-form{grid-template-columns:repeat(2,minmax(0,1fr))}.orders-workspace{padding:0}.export-btn{align-self:end}.empty-arrow{display:none}}
@media(max-width:720px){.orders-header{display:flex;flex-wrap:wrap}.orders-header .btn{width:auto}.orders-search{width:100%}.orders-filter-form{grid-template-columns:1fr}.orders-tabs-row{display:grid;overflow:hidden}.orders-tabs{overflow:auto;flex-wrap:nowrap}.orders-tabs a{white-space:nowrap}.orders-metrics{grid-template-columns:1fr}.orders-page-shell{gap:16px}.orders-empty-state{min-height:300px}}

.orders-table{min-width:940px}.orders-filter-rail .filter-group-head strong,.orders-table thead th{color:var(--danger)}.orders-table th:first-child,.orders-table td:first-child{width:130px}.orders-table td:first-child strong{white-space:nowrap;letter-spacing:.01em}.orders-table th:nth-child(4),.orders-table td:nth-child(4){width:150px}.orders-table th:last-child,.orders-table td:last-child{width:84px;text-align:right}


/* Inventory index page pass */
.inventory-header{display:grid;grid-template-columns:minmax(190px,1fr) minmax(260px,420px) auto;align-items:center;gap:20px}.split-action{display:flex;align-items:center;gap:1px}.split-action .btn.primary{border-radius:10px 0 0 10px}.split-action .split-caret{border-left:1px solid rgba(255,255,255,.35);border-radius:0 10px 10px 0;min-width:46px;padding-inline:12px}.inventory-page-shell{display:grid;grid-template-columns:220px minmax(0,1fr);gap:24px;align-items:start;margin:-30px -40px 0}.inventory-filter-rail{border-radius:0;border-left:0;border-top:0;border-bottom:0;min-height:calc(100vh - 140px);padding:0;background:#fff;box-shadow:none}.inventory-filter-form{display:grid}.select-like{height:42px;border:1px solid var(--line);border-radius:9px;background:#fff;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 12px;color:var(--ink);font-weight:720;margin:8px 0 10px}.select-like em{font-style:normal;color:var(--muted);font-size:12px}.select-like.active{border-color:#c8d5e5;background:#fff}.import-btn,.inventory-filter-rail .export-btn{margin:16px}.import-btn{margin-bottom:0;opacity:.74;cursor:not-allowed}.inventory-workspace{min-width:0;padding:26px 40px 42px 0}.inventory-tabs-row{border-bottom:1px solid var(--line);margin-bottom:16px}.inventory-tabs{margin:0}.inventory-tabs a{border:0;background:transparent;border-radius:0;padding:12px 0;margin-right:24px;color:var(--muted);position:relative}.inventory-tabs a.active,.inventory-tabs a:hover{color:var(--ink);background:transparent}.inventory-tabs a.active:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;background:var(--brand);border-radius:999px}.inventory-metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}.inventory-metrics>div{border-color:#ced7e4;border-radius:10px;min-height:92px;padding:16px}.inventory-metrics>div:before{display:none}.inventory-metrics small{margin:0 0 8px;color:var(--ink);font-size:14px;text-transform:none;letter-spacing:0}.inventory-metrics b{font-size:26px;font-weight:550}.inventory-list-panel{padding:0;background:transparent;border:0;box-shadow:none}.inventory-table-wrap{border-color:#d4dce8;border-radius:12px}.inventory-table{min-width:0;table-layout:auto}.inventory-table th,.inventory-table td{background:#fff}.inventory-table th{font-size:10.5px;padding:8px 7px;letter-spacing:.02em}.inventory-table td{font-size:11px;line-height:1.3;padding:6px 7px}.inventory-table small{font-size:10.5px;line-height:1.25}.inventory-table th:first-child,.inventory-table td:first-child{min-width:120px}.inventory-table td:first-child{overflow-wrap:anywhere}.inventory-table th:last-child,.inventory-table td:last-child{width:66px;text-align:right}.inventory-table .btn{min-height:34px;padding:7px 11px}
/* Live status + revenue columns, with the revenue period filter on the column
   head (ticket ABI-341952990). The select is associated with the rail's filter
   form via form="inventory-filter-form", so it sits in the header but submits
   the normal inventory filters. */
.inventory-table .inventory-revenue-head{width:96px;min-width:96px}
.inventory-table .inventory-revenue-head>span{display:block;white-space:nowrap}
.inventory-table .inventory-revenue-head select{display:block;width:100%;min-width:0;margin-top:5px;height:26px;padding:0 4px;font:inherit;font-size:10.5px;font-weight:600;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:6px}
.inventory-table th:nth-child(6){white-space:nowrap}
.inventory-table th{padding:8px 5px}
.inventory-table td{padding:6px 5px}
.inventory-table td:nth-child(7){white-space:nowrap}.product-type-rental{background:#eaf1ff;color:#0b4ccc}.product-type-sale{background:#fef3c7;color:#b45309}.product-type-service{background:#ecfdf5;color:#047857}.store-dot{display:inline-flex;align-items:center;gap:7px;font-weight:750;color:var(--ink-2)}.store-dot:before{content:"";width:8px;height:8px;border-radius:999px;background:currentColor}.store-dot.visible{color:var(--success)}.store-dot.hidden{color:var(--muted)}.inventory-empty-state{min-height:420px;display:grid;place-items:center;text-align:center;align-content:center;padding:50px 22px;position:relative;overflow:hidden}.inventory-empty-state h2{font-size:28px;line-height:1.12;margin:0 0 16px;letter-spacing:-.04em}.inventory-empty-state h2 span{position:relative}.inventory-empty-state h2 span:after{content:"";position:absolute;left:0;right:0;bottom:-8px;height:9px;border:2px solid #86efac;border-color:#86efac transparent transparent transparent;border-radius:50%;transform:rotate(-2deg)}.inventory-empty-state p{max-width:720px;margin:0 0 22px;color:var(--muted);font-size:16px;line-height:1.55}@media(max-width:1050px){.inventory-header{grid-template-columns:1fr auto}.inventory-search{grid-column:1/-1;order:3}.inventory-page-shell{grid-template-columns:1fr;margin:0}.inventory-filter-rail{border:1px solid var(--line-soft);border-radius:var(--radius-lg);min-height:0}.inventory-filter-form{grid-template-columns:repeat(2,minmax(0,1fr))}.inventory-workspace{padding:0}.inventory-filter-rail .export-btn,.import-btn{align-self:end}.inventory-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.inventory-header{display:flex;flex-wrap:wrap}.inventory-header .split-action .btn{width:auto}.inventory-search{width:100%}.inventory-filter-form{grid-template-columns:1fr}.inventory-tabs{overflow:auto;flex-wrap:nowrap}.inventory-tabs a{white-space:nowrap}.inventory-metrics{grid-template-columns:1fr}.inventory-page-shell{gap:16px}.inventory-empty-state{min-height:300px}.split-action{width:100%}.split-action .btn.primary:first-child{flex:1}}


/* Customers index/detail page pass */
.customers-table .customer-name-cell .customer-blocked-label{display:block;color:#b91c1c;background:none;padding:0;margin:2px 0;font-weight:700}
.customers-header{display:grid;grid-template-columns:minmax(190px,1fr) minmax(260px,420px) auto;align-items:center;gap:20px}.customers-page-shell{display:grid;grid-template-columns:220px minmax(0,1fr);gap:24px;align-items:start;margin:-30px -40px 0}.customers-filter-rail{border-radius:0;border-left:0;border-top:0;border-bottom:0;min-height:calc(100vh - 140px);padding:0;background:#fff;box-shadow:none}.customers-filter-form{display:grid}.customers-filter-rail .import-btn,.customers-filter-rail .export-btn{margin:16px}.customers-filter-rail .import-btn{margin-bottom:0}.customer-help-card{margin:0 16px 16px;padding:16px;border:1px solid var(--line-soft);border-radius:14px;background:linear-gradient(145deg,#f8fbff,#fff)}.customer-help-card h3{margin:0 0 6px;font-size:15px}.customer-help-card p{margin:0 0 12px;color:var(--muted);font-size:13px}.customer-help-card a{color:var(--brand);font-weight:750}.customers-workspace{min-width:0;padding:26px 40px 42px 0}.customers-metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}.customers-metrics>div{border-color:#ced7e4;border-radius:10px;min-height:92px;padding:16px}.customers-metrics>div:before{display:none}.customers-metrics small{margin:0 0 8px;color:var(--ink);font-size:14px;text-transform:none;letter-spacing:0}.customers-metrics b{font-size:26px;font-weight:550}.customers-list-panel{padding:0;background:transparent;border:0;box-shadow:none}.customers-table-toolbar{min-height:76px;display:flex;align-items:center;justify-content:space-between;gap:16px}.bulk-actions,.table-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.bulk-actions span,.table-tools span{color:var(--ink-2);font-weight:650}.bulk-actions a{color:var(--brand);font-weight:750}.customers-table-wrap{border-color:#d4dce8;border-radius:0;background:#fff}.customers-table{min-width:980px}.customers-table th,.customers-table td{background:#fff}.customers-table th:first-child,.customers-table td:first-child{width:46px}.customers-table th:nth-child(2),.customers-table td:nth-child(2){width:64px}.customers-table th:last-child,.customers-table td:last-child{width:84px;text-align:right}.customers-table input[type=checkbox]{width:20px;height:20px;margin:0;accent-color:var(--brand)}.customer-name-cell{display:flex;align-items:center;gap:10px;min-width:210px}.customer-name-cell:hover strong{color:var(--brand)}.avatar{width:28px;height:28px;border-radius:999px;display:inline-grid;place-items:center;background:#18a8e8;color:#fff;font-size:11px;font-weight:850;letter-spacing:.02em;flex:0 0 auto}.avatar.large{width:58px;height:58px;font-size:17px}.table-footer-count{text-align:right;color:var(--ink-2);font-weight:650;margin-top:24px}.customers-empty-state{min-height:420px;display:grid;place-items:center;text-align:center;align-content:center;padding:50px 22px;position:relative;overflow:hidden}.customers-empty-state h2{font-size:28px;line-height:1.12;margin:0 0 16px;letter-spacing:-.04em}.customers-empty-state h2 span{position:relative}.customers-empty-state h2 span:after{content:"";position:absolute;left:0;right:0;bottom:-8px;height:9px;border:2px solid #86efac;border-color:#86efac transparent transparent transparent;border-radius:50%;transform:rotate(-2deg)}.customers-empty-state p{max-width:620px;margin:0 0 22px;color:var(--muted);font-size:16px;line-height:1.55}.customer-detail-header .customer-title-block{display:flex;align-items:center;gap:15px}.customer-profile-grid{display:grid;grid-template-columns:340px minmax(0,1fr);gap:18px;align-items:start}.customer-summary-card{display:grid;gap:18px}.profile-card-head{display:flex;align-items:center;gap:14px}.profile-card-head h2{margin:0 0 4px;font-size:20px}.profile-card-head p{margin:0;color:var(--muted)}.profile-stat-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.profile-stat-row>div{padding:14px;border:1px solid var(--line-soft);border-radius:14px;background:var(--surface-soft)}.profile-stat-row small{margin:0 0 5px;text-transform:uppercase;letter-spacing:.04em;font-weight:760}.profile-stat-row strong{font-size:20px}.contact-stack{display:grid;gap:10px}.contact-line{padding:12px;border:1px solid var(--line-soft);border-radius:12px;background:#fff;font-weight:700;color:var(--ink-2)}.customer-info-card,.customer-orders-card{grid-column:2}.detail-list{display:grid}.detail-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 0;border-bottom:1px solid var(--line-soft)}.detail-row:last-child{border-bottom:0}.detail-row span{color:var(--muted);font-weight:650}.customer-order-list{display:grid;gap:10px}.customer-order-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;align-items:center;padding:14px;border:1px solid var(--line-soft);border-radius:14px;background:#fff}.customer-order-row:hover{border-color:#bdd2ff;background:#fbfdff}.soft-empty{padding:28px;border:1px dashed #c8d5e5;border-radius:18px;text-align:center;background:var(--surface-soft)}.soft-empty h3{margin:0 0 8px}.soft-empty p{margin:0 0 16px;color:var(--muted)}@media(max-width:1050px){.customers-header{grid-template-columns:1fr auto}.customers-search{grid-column:1/-1;order:3}.customers-page-shell{grid-template-columns:1fr;margin:0}.customers-filter-rail{border:1px solid var(--line-soft);border-radius:var(--radius-lg);min-height:0}.customers-filter-form{grid-template-columns:repeat(2,minmax(0,1fr))}.customers-workspace{padding:0}.customers-filter-rail .export-btn,.customers-filter-rail .import-btn{align-self:end}.customers-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.customer-help-card{grid-column:1/-1}.customer-profile-grid{grid-template-columns:1fr}.customer-info-card,.customer-orders-card{grid-column:auto}}@media(max-width:720px){.customers-header{display:flex;flex-wrap:wrap}.customers-header .btn{width:auto}.customers-search{width:100%}.customers-filter-form{grid-template-columns:1fr}.customers-metrics{grid-template-columns:1fr}.customers-table-toolbar{display:grid}.table-tools{justify-content:space-between}.customers-page-shell{gap:16px}.customers-empty-state{min-height:300px}.customer-detail-header .customer-title-block{align-items:flex-start}.customer-order-row{grid-template-columns:1fr}.profile-stat-row{grid-template-columns:1fr}}


/* Documents index page pass */
.documents-header{display:grid;grid-template-columns:minmax(190px,1fr) minmax(260px,420px) auto;align-items:center;gap:20px}.documents-page-shell{display:grid;grid-template-columns:220px minmax(0,1fr);gap:24px;align-items:start;margin:-30px -40px 0}.documents-filter-rail{border-radius:0;border-left:0;border-top:0;border-bottom:0;min-height:calc(100vh - 140px);padding:0;background:#fff;box-shadow:none}.documents-filter-form{display:grid}.documents-filter-rail .filter-group{border-bottom:1px solid var(--line);padding:15px 16px 17px}.documents-filter-rail .filter-group.compact{padding-bottom:18px}.documents-filter-rail .filter-group-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.documents-filter-rail .filter-group-head strong{font-size:14px}.documents-filter-rail .filter-group-head span{color:var(--brand);font-weight:900}.documents-filter-rail .filter-check{display:grid;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:8px;margin:9px 0;color:var(--ink);font-weight:720}.documents-filter-rail .filter-check input{width:20px;height:20px;margin:0;accent-color:var(--brand);border-radius:6px}.documents-filter-rail .filter-check em{font-style:normal;color:var(--muted);font-weight:650}.documents-filter-rail .filter-check.disabled{opacity:.55}.documents-filter-rail .filter-clear{display:inline-flex;margin-top:8px;color:var(--brand);font-weight:750}.documents-filter-rail .filter-date-line{display:flex;gap:10px;align-items:center;color:var(--muted);font-weight:700}.documents-filter-rail .export-btn{margin:16px}.documents-workspace{min-width:0;padding:26px 40px 42px 0}.documents-metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:14px}.documents-metrics>div{border-color:#ced7e4;border-radius:10px;min-height:92px;padding:16px}.documents-metrics>div:before{display:none}.documents-metrics small{margin:0 0 8px;color:var(--ink);font-size:14px;text-transform:none;letter-spacing:0}.documents-metrics b{font-size:26px;font-weight:550}.documents-list-panel{padding:0;background:transparent;border:0;box-shadow:none}.documents-table-wrap{border-color:#d4dce8;border-radius:12px}.documents-table{min-width:820px}.documents-table th,.documents-table td{background:#fff}.documents-table th:first-child,.documents-table td:first-child{width:130px}.documents-table th:nth-child(4),.documents-table td:nth-child(4){width:150px}.documents-table th:last-child,.documents-table td:last-child{width:84px;text-align:right}.documents-table .btn{min-height:34px;padding:7px 11px}.documents-empty-state{min-height:420px;display:grid;place-items:center;text-align:center;align-content:center;padding:50px 22px;position:relative;overflow:hidden}.documents-empty-state h2{font-size:28px;line-height:1.12;margin:0 0 16px;letter-spacing:-.04em}.documents-empty-state h2 span{position:relative}.documents-empty-state h2 span:after{content:"";position:absolute;left:0;right:0;bottom:-8px;height:9px;border:2px solid #86efac;border-color:#86efac transparent transparent transparent;border-radius:50%;transform:rotate(-2deg)}.documents-empty-state p{max-width:640px;margin:0 0 22px;color:var(--muted);font-size:16px;line-height:1.55}@media(max-width:1050px){.documents-header{grid-template-columns:1fr auto}.documents-search{grid-column:1/-1;order:3}.documents-page-shell{grid-template-columns:1fr;margin:0}.documents-filter-rail{border:1px solid var(--line-soft);border-radius:var(--radius-lg);min-height:0}.documents-filter-form{grid-template-columns:repeat(2,minmax(0,1fr))}.documents-workspace{padding:0}.documents-filter-rail .export-btn{align-self:end}.documents-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.documents-header{display:flex;flex-wrap:wrap}.documents-header .btn{width:auto}.documents-search{width:100%}.documents-filter-form{grid-template-columns:1fr}.documents-metrics{grid-template-columns:1fr}.documents-page-shell{gap:16px}.documents-empty-state{min-height:300px}}

/* Sano order customisation pass */
.order-lines-table{min-width:1040px}.order-lines-table td{vertical-align:top}.order-lines-table input,.order-lines-table select{min-width:120px}.order-lines-table td:nth-child(2){min-width:340px}.order-lines-table td:nth-child(2) input{margin-bottom:8px}.line-total-preview{display:block;min-width:92px;padding:12px 0;font-weight:850;color:var(--ink)}.order-estimate-panel{background:linear-gradient(145deg,#fff,#f7fbff)}.estimate-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.estimate-grid>div{border:1px solid var(--line-soft);border-radius:14px;background:#fff;padding:13px;display:grid;gap:5px}.estimate-grid span{color:var(--muted);font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.estimate-grid strong{font-size:20px}.estimate-grand-total{border-color:#bcd2ff!important;background:var(--brand-soft)!important;grid-column:1/-1}.customer-custom-fields{display:grid;gap:12px;padding:14px;border:1px solid var(--line-soft);border-radius:16px;background:var(--surface-soft)}.form-help{margin:0;color:var(--muted);font-weight:600}.filter-check:not(.disabled){cursor:pointer}

/* Calendar trailer availability */
.calendar-availability-panel{display:grid;gap:16px}.calendar-group-list{display:grid;gap:16px}.calendar-group-card{border:1px solid var(--line-soft);border-radius:16px;background:#fff;overflow:hidden}.calendar-group-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:16px;border-bottom:1px solid var(--line-soft);background:linear-gradient(145deg,#f8fbff,#fff)}.calendar-group-head h3{margin:0 0 4px;font-size:16px}.calendar-group-head small,.calendar-availability-table small{display:block;color:var(--muted);margin-top:3px}.availability-totals{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.availability-totals span{border:1px solid var(--line-soft);border-radius:999px;background:#fff;padding:7px 10px;color:var(--muted);font-weight:750}.availability-totals b{color:var(--ink);margin-left:4px}.calendar-availability-wrap{border:0;border-radius:0}.calendar-availability-table{min-width:760px}.reservation-link-list{display:grid;gap:5px}.reservation-link-list a{color:var(--brand);font-weight:750}.muted{color:var(--muted)}
@media(max-width:720px){.calendar-group-head{display:grid}.availability-totals{justify-content:flex-start}.availability-totals span{flex:1 1 auto}}

/* Product group inventory folders */
.inventory-group-row td{background:#f3f6fb!important;color:var(--ink);border-top:2px solid #d5dfec;border-bottom:1px solid #d5dfec}.inventory-group-row strong{display:block;font-size:15px}.inventory-group-row small{display:block;color:var(--muted);margin-top:3px}.inventory-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}

/* Sano typography pass: Inter Regular for text, Semi-Bold for headings, Medium/Semi-Bold for numbers and amounts. */
body{font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",ui-sans-serif,system-ui,sans-serif;font-weight:400}
h1,h2,h3,h4,h5,h6,
.page-header h1,.panel h2,.panel h3,.setup-card h2,.promo-card h3,.feature-grid h3,
.store-hero h1,.product-card h2,.empty-state h1,.empty-state h2,.movement-head h2,
.calendar-group-head h3,.customer-help-card h3,.filter-group-head strong,
.document-head strong,.invoice-number-block strong,.invoice-order-block strong,.invoice-banking-block strong{font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",ui-sans-serif,system-ui,sans-serif;font-weight:600}
input[type="number"],input[type="date"],input[type="datetime-local"],input[type="time"],
.metrics b,.metric-card b,.metric-row b,.totals b,.total-row b,.line-total-preview,
.estimate-grid strong,.availability-totals b,.calendar-availability-table b,
.data-table td:first-child strong,.orders-table td:first-child strong,
.invoice-number-block span,.invoice-date-line,.badge,.pill{font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",ui-sans-serif,system-ui,sans-serif;font-weight:500}
.total-row b,.estimate-grand-total strong,.metrics b,.document-type-invoice .totals .total-row b{font-weight:600}

/* Optional invoice reference: follows the date, never overflows the detail column. */
.document-purchase-order-label{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.document-purchase-order-label input{width:12ch;min-width:0;max-width:100%;padding:4px 0;border:0;border-radius:0;background:transparent;box-shadow:none;font:inherit}
/* Inset screen-only border matches the email field without changing the compact input's box. */
@media screen{
  .document-purchase-order-label input{border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px var(--line)}
}
.document-purchase-order-label input:focus-visible{outline:2px solid var(--brand);outline-offset:3px}
.invoice-detail-stack .invoice-purchase-order{margin:0;font-size:12px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}
@media print{
  .document-view .sidebar,.document-view .main > :not(.document-page){display:none!important}
  .document-view .app-shell{display:block}
  .document-view .main{margin:0;padding:0}
  .document-purchase-order-form{display:none!important}
  .document-type-invoice .invoice-purchase-order + .invoice-order-block{margin-top:0}
}

/* Invoice print/PDF-friendly portrait layout */
@page invoice-portrait{size:A4 portrait;margin:14mm}
@media print{
  .document-date-form{display:none!important}
  .document-type-invoice{page:invoice-portrait;width:100%;max-width:190mm;margin:0 auto;padding:0;border:0;box-shadow:none}
  .document-type-invoice .invoice-header-grid{display:grid;grid-template-columns:minmax(0,1.18fr) minmax(34mm,.56fr) minmax(58mm,.98fr);gap:9mm;align-items:start;break-inside:avoid}
  .document-type-invoice .invoice-detail-stack{grid-column:3;gap:8mm;max-width:58mm;justify-self:end;break-inside:avoid}
  .document-type-invoice .invoice-logo{width:30mm;margin-left:-4mm}
  .document-type-invoice .table-wrap{overflow:visible;border-radius:0;margin-top:5mm}
  .document-type-invoice .data-table{min-width:0;width:100%;table-layout:fixed;font-size:10.5px}
  .document-type-invoice .data-table th,.document-type-invoice .data-table td{padding:6px 7px;white-space:normal;overflow-wrap:anywhere}
  .document-type-invoice .invoice-order-block{justify-self:end;max-width:58mm;margin-top:28mm}
  .document-type-invoice .invoice-footer-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:6mm;align-items:start;break-inside:avoid}
  .document-type-invoice .totals{max-width:72mm;margin-left:auto;break-inside:avoid}
}

/* ---------- Calendar: visual month grid ---------- */
.visual-calendar-panel{padding:22px 24px 18px;margin-bottom:22px}
.visual-calendar-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:16px}
.visual-calendar-head h2{margin:0 0 3px;font-size:19px;font-weight:600;letter-spacing:-.02em}
.visual-calendar-nav{display:flex;gap:8px;flex-wrap:wrap}
.visual-calendar-nav .btn{min-height:38px;padding:8px 14px}
.visual-calendar-nav .btn.is-active{border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}
.visual-calendar-weekdays,.visual-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
.visual-calendar-weekdays{margin-bottom:8px}
.visual-calendar-weekdays span{text-align:center;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.visual-calendar-day{display:grid;align-content:space-between;gap:8px;min-height:74px;padding:9px 10px;border:1px solid var(--line-soft);border-radius:12px;background:#fff;color:var(--ink);text-decoration:none;transition:border-color .15s,box-shadow .15s,background .15s}
.visual-calendar-day:hover{border-color:#b9c9dd;box-shadow:var(--shadow-sm);text-decoration:none}
.visual-calendar-day.is-outside{background:#eef2f7;border-style:dashed;border-color:#cbd5e1;color:#94a3b8}
.visual-calendar-day.is-outside .visual-calendar-number{color:#94a3b8;font-weight:600}
.visual-calendar-day.is-today{border-color:var(--brand);box-shadow:inset 0 0 0 1px var(--brand)}
.visual-calendar-day.is-selected{background:var(--brand-soft);border-color:var(--brand)}
.visual-calendar-number{font-size:13px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums}
.visual-calendar-badges{display:flex;gap:5px;flex-wrap:wrap}
.cal-badge{display:inline-flex;align-items:center;font-size:11px;font-weight:800;border-radius:999px;padding:2px 7px;line-height:1.45;font-variant-numeric:tabular-nums}
.cal-badge.cal-out{background:#eaf1ff;color:#0b4ccc}
.cal-badge.cal-in{background:#e7f8f1;color:#047857}
.visual-calendar-legend{display:flex;align-items:center;gap:7px;margin:14px 0 0;color:var(--muted);font-size:12px;font-weight:650}

/* ---------- Calendar: filter rail beside the results ---------- */
.calendar-page-shell{display:grid;grid-template-columns:minmax(200px,220px) minmax(0,1fr);gap:22px;align-items:start}
.calendar-filter-rail{padding:0;align-self:start}
.calendar-filter-form{display:grid;padding-bottom:6px}
.calendar-filter-rail .filter-group{padding:15px 16px 17px;border-bottom:1px solid var(--line)}
.calendar-filter-rail .filter-group:last-of-type{border-bottom:0}
.calendar-filter-rail .filter-group-head{margin-bottom:10px}
.calendar-filter-rail .filter-group-head strong{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.calendar-filter-form>button{margin:6px 16px}
.calendar-filter-form>.link-muted{margin:0 16px 14px;display:inline-flex}
.calendar-workspace{min-width:0;display:grid;gap:22px;align-content:start}

/* ---------- Reports: client-facing board ---------- */
.reports-page-shell{display:grid;grid-template-columns:minmax(200px,220px) minmax(0,1fr);gap:22px;align-items:start}
.reports-filter-rail{padding:0;align-self:start}
.reports-filter-form{display:grid;padding-bottom:6px}
.reports-filter-rail .filter-group{padding:15px 16px 17px;border-bottom:1px solid var(--line)}
.reports-filter-rail .filter-group-head{margin-bottom:10px}
.reports-filter-rail .filter-group-head strong{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.reports-filter-actions{display:grid;gap:10px;justify-items:start}
.reports-filter-actions .btn{width:100%}
.reports-workspace{min-width:0;display:grid;gap:18px;align-content:start}
.reports-period{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;padding:18px 22px;border:1px solid var(--line-soft);border-radius:var(--radius-lg);background:linear-gradient(135deg,#fff,#f7fbff);box-shadow:var(--shadow-sm)}
.reports-period-label{margin:0 0 5px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}
.reports-period-value{margin:0;font-size:20px;font-weight:600;letter-spacing:-.02em;color:var(--ink)}
.reports-period-stats{display:grid;grid-template-columns:repeat(4,minmax(72px,1fr));gap:20px;justify-items:end;text-align:right}
.reports-period-stats span{display:grid;gap:3px;font-size:11px;font-weight:750;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.reports-period-stats b{font-size:19px;font-weight:600;letter-spacing:-.02em;color:var(--ink);text-transform:none;font-variant-numeric:tabular-nums}
.reports-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.reports-metrics>div{border:1px solid var(--line-soft);border-radius:var(--radius-lg);background:#fff;padding:18px 20px;display:grid;gap:6px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden}
.reports-metrics>div:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--brand);opacity:.85}
.reports-metrics small{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.reports-metrics b{font-size:27px;font-weight:600;letter-spacing:-.03em;color:var(--ink);font-variant-numeric:tabular-nums}
.reports-metrics em{font-style:normal;font-size:12px;font-weight:650;color:var(--muted)}
.reports-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:16px;align-items:stretch}
.reports-grid>.report-card{grid-column:span 2}
.reports-grid>.report-card.product-performance,.reports-grid>.report-card.customer-summary{grid-column:span 3}
.report-card{border:1px solid var(--line-soft);border-radius:var(--radius-lg);background:#fff;box-shadow:var(--shadow-sm);overflow:hidden;display:grid;align-content:start}
.report-card-header{padding:16px 20px 14px;border-bottom:1px solid var(--line-soft);background:#fbfcfe}
.report-card-header h2{margin:0;font-size:15px;font-weight:600;letter-spacing:-.01em;color:var(--ink)}
.report-card-header p{margin:4px 0 0;font-size:12.5px;font-weight:600;color:var(--muted)}
.report-card-body{padding:6px 20px 12px}
.report-card .metric-row{display:flex;align-items:baseline;justify-content:space-between;gap:14px;padding:11px 0;border-bottom:1px solid var(--line-soft)}
.report-card .metric-row:last-child{border-bottom:0}
.report-card .metric-row span{font-weight:650;color:var(--muted);min-width:0;overflow-wrap:anywhere}
.report-card .metric-row b{font-weight:600;color:var(--ink);text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.report-card .metric-row b.is-due{color:#b42318}
.report-card .metric-row.has-bar{position:relative;isolation:isolate}
.report-card .metric-row.has-bar>span,.report-card .metric-row.has-bar>b{position:relative;z-index:1}
.metric-bar{position:absolute;left:-8px;top:3px;bottom:3px;z-index:0;border-radius:6px;background:#d9e6ff;min-width:4px}
.metric-bar.is-green{background:#cdeee0}
.report-empty{margin:14px 0;padding:14px 0;color:var(--muted);font-weight:650;text-align:center}
.filter-fixed{display:block;padding:8px 10px;border:1px dashed var(--line);border-radius:8px;font-size:12.5px;font-weight:700;color:var(--muted);background:#f8fafc}
.orders-metrics.is-hidden{display:none}
/* Ticket ABI-341953032: money that is still owed / still unprocessed is called out
   in the danger colour, and staff (non-main) accounts get a bar of their own for it.
   Ticket ABI-341953034 puts the deposit count and money value beside the red Due
   card, so that bar now holds three cards: auto-fit lays them three-up on a wide
   screen and stacks them down to one on a phone. The track minimum is a real card
   width rather than 0 because .orders-metrics-staff is declared after the
   .orders-metrics phone breakpoints above, so it picks its own column count. */
.metric-card.is-alert b{color:var(--danger)}
/* Refund rows on the payments ledger (ABI-341953051): a refund is a negative
   payment row, so its amount is shown in the danger colour. */
.text-danger{color:var(--danger)}
.orders-metrics-staff{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.report-presets{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.report-preset{display:inline-flex;align-items:center;justify-content:center;text-align:center;padding:6px 8px;border:1px solid var(--line);border-radius:999px;font-size:12px;font-weight:700;color:var(--ink);background:#fff;text-decoration:none;line-height:1.4}
.report-preset:hover{border-color:var(--brand);color:var(--brand);text-decoration:none}
.report-preset.is-active{background:var(--brand-soft);border-color:var(--brand);color:var(--brand)}
.report-split-wrap{margin-top:15px}
.report-split{display:flex;height:9px;border-radius:999px;overflow:hidden;background:#eef2f7}
.report-split-paid{display:block;background:#12b76a}
.report-split-due{display:block;background:#f79009}
.report-split-legend{display:flex;justify-content:space-between;gap:10px;margin:8px 0 0;font-size:11.5px;font-weight:700;color:var(--muted)}
.report-split-legend span{display:inline-flex;align-items:center;gap:6px}
.split-dot{width:8px;height:8px;border-radius:999px;display:inline-block}
.split-dot.paid{background:#12b76a}
.split-dot.due{background:#f79009}

@media(max-width:1050px){
  .calendar-page-shell,.reports-page-shell{grid-template-columns:minmax(0,1fr);gap:16px}
  .reports-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .reports-grid>.report-card,.reports-grid>.report-card.product-performance,.reports-grid>.report-card.customer-summary{grid-column:span 1}
  .reports-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .reports-period-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
}
@media(max-width:720px){
  .reports-grid{grid-template-columns:minmax(0,1fr)}
  .reports-metrics{grid-template-columns:minmax(0,1fr)}
  .reports-period{padding:15px 16px}
  .reports-period-value{font-size:17px}
  .reports-period-stats{grid-template-columns:repeat(2,minmax(0,1fr));justify-items:start;text-align:left}
  .report-card-header{padding:14px 16px 12px}
  .report-card-body{padding:4px 16px 10px}
  .visual-calendar-panel{padding:16px;margin-bottom:16px}
  .visual-calendar-grid,.visual-calendar-weekdays{gap:5px}
  .visual-calendar-day{min-height:54px;padding:6px 7px;border-radius:9px;gap:6px}
  .visual-calendar-number{font-size:12px}
  .cal-badge{font-size:10px;padding:1px 6px}
  .visual-calendar-nav .btn{padding:6px 10px;font-size:12px}
  .visual-calendar-legend{font-size:11px;flex-wrap:wrap}
}

/* PAID stamp on a settled invoice. The screen version mirrors the diagonal stamp
   the PDF draws, so what the client prints is what they see on screen. */
.document-page{position:relative}
/* Document line-items mirror the PDF column intent: compact numeric columns and
   a wider product column. This fixes mobile screenshots where TAX/RATE/SUBTOTAL
   consumed the same width as long product names and forced horizontal scrolling. */
.document-type-invoice .table-wrap{margin-left:-15px;width:calc(100% + 15px)}
.document-line-items{table-layout:fixed;min-width:620px}
.document-line-items th{background:#000;color:#fff}
.document-line-items th,.document-line-items td{padding-left:8px;padding-right:8px}
.document-line-items th:nth-child(1),.document-line-items td:nth-child(1){width:38%;white-space:normal;overflow-wrap:anywhere}
.document-line-items th:nth-child(2),.document-line-items td:nth-child(2){width:6%}
.document-line-items th:nth-child(3),.document-line-items td:nth-child(3){width:7%}
.document-line-items th:nth-child(4),.document-line-items td:nth-child(4){width:10%}
.document-line-items th:nth-child(5),.document-line-items td:nth-child(5){width:12%}
.document-line-items th:nth-child(6),.document-line-items td:nth-child(6){width:10%}
.document-line-items th:nth-child(7),.document-line-items td:nth-child(7){width:17%}
.document-line-items td:first-child strong{display:block;line-height:1.25;white-space:normal;overflow:visible}
.document-line-items td:first-child small{overflow-wrap:anywhere}
/* Ticket ABI-341953151: per-item description printed beneath the product name in
   normal (regular) weight so it reads as detail, not a second product title. */
.line-description{display:block;font-weight:400;color:var(--muted,#667085);line-height:1.35}
@media(max-width:520px){.document-line-items{min-width:560px}.document-line-items th,.document-line-items td{padding-left:6px;padding-right:6px;font-size:11px}}
.document-type-invoice .totals{background:#fff;border:1px solid var(--line);border-radius:12px}
.document-type-invoice .totals .total-row{background:#fff;color:var(--ink);border-radius:0}
.document-type-invoice .totals .total-row span,.document-type-invoice .totals .total-row b{color:var(--ink)}
.paid-stamp{position:absolute;top:32%;right:7%;transform:rotate(-18deg);border:4px solid #128a4d;color:#128a4d;font:800 34px/1 Arial,Helvetica,sans-serif;letter-spacing:.14em;padding:8px 18px;border-radius:6px;opacity:.85;pointer-events:none;z-index:2}
@media print{.paid-stamp{opacity:.95}}
@media (max-width:640px){.paid-stamp{font-size:22px;top:26%;right:4%}}

.choice-card.disabled{opacity:.6;cursor:not-allowed}
.choice-card.disabled input{cursor:not-allowed}


/* Users & access: per-account module + branch ticks (ABI-341952942).
   Each account row carries its own tick sets, so the cell forms stay compact and
   scroll inside the table wrapper rather than stretching the row to 14 rows tall. */
.access-table{min-width:1080px}
.access-cell-form{display:grid;gap:7px;min-width:168px}
.access-ticks{display:grid;gap:4px;max-height:148px;overflow:auto;padding:2px 0}
.access-tick{display:grid;grid-template-columns:17px minmax(0,1fr);align-items:center;gap:7px;font-weight:650;color:var(--ink);font-size:12.5px;line-height:1.25}
.access-tick input{width:16px;height:16px;margin:0;accent-color:var(--brand)}
.access-cell-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.access-cell-actions .btn{min-height:30px;padding:5px 10px;font-size:12px}
.access-note{margin:0;color:var(--muted);font-size:11.5px;font-weight:650}

/* Dashboard "for the day" cards + the session's active branch (ABI-341952946).
   Ten cards: five across on a desktop (two tidy rows), falling back to the
   existing .metrics breakpoints below 1101px, then one column on a phone. */
.dashboard-day .section-heading{margin:0 0 10px;font-size:15px;letter-spacing:-.01em;color:var(--muted);text-transform:uppercase}
.dashboard-day-metrics b{font-size:24px}
@media(min-width:1101px){.dashboard-day-metrics{grid-template-columns:repeat(5,minmax(0,1fr))}}
.branch-context{background:linear-gradient(90deg,rgba(37,99,235,.1),transparent);font-weight:750}
.branch-context span:last-child{font-size:12.5px}

/* --- Dashboard cash up / end of day panel (ticket ABI-341952951) -----------
   The cash-used lines are a simple two-column row rather than a .data-table,
   which carries a 680px min-width and would scroll sideways on a phone. */
.cash-note{margin:0 0 14px;color:var(--muted);font-weight:650}
.cash-used-lines{display:grid;gap:8px;margin:12px 0}
.cash-used-line{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;padding:11px 12px;border:1px solid var(--line-soft);border-radius:12px;background:#fff}
.cash-used-line>span{min-width:0;overflow-wrap:anywhere;font-weight:700}
.cash-used-line small{display:block;margin-top:3px;color:var(--muted);font-weight:650}
.cash-used-line .btn{width:auto;min-height:34px;padding:7px 11px}
.cash-total-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:11px;border-top:1px solid var(--line);font-weight:800}
.cash-branch-picker{display:flex;align-items:center;gap:12px;margin:0 0 14px}
.cash-branch-picker label{display:flex;align-items:center;gap:10px;margin:0;min-width:0;color:var(--muted);font-weight:750}
.cash-branch-picker select{max-width:240px}
.dashboard-report-actions form{display:inline-flex}
.dashboard-report-actions .dashboard-report-action{width:240px;max-width:100%}
@media(max-width:520px){.dashboard-report-actions form,.dashboard-report-actions .dashboard-report-action{width:100%}}

/* --- Dashboard refresh (ticket ABI-341952954): a branded hero with the
   signed-in name, the branch filter for the main profile, and named card
   sections. The .metric-card / .metrics / .dashboard-day rules above are
   untouched, so the dense five-across grid and the single-column phone
   fallback behave exactly as before. ------------------------------------ */
.dashboard-hero{display:flex;align-items:center;justify-content:space-between;gap:22px;flex-wrap:wrap;margin:26px 0 26px;padding:22px 24px;border:1px solid var(--line-soft);border-radius:var(--radius-lg);background:linear-gradient(135deg,#fff,#eef5ff);box-shadow:var(--shadow-sm)}
.dashboard-hero-brand{display:flex;align-items:center;gap:20px;min-width:0}
.dashboard-hero-copy{min-width:0}
.dashboard-hero-copy .eyebrow{margin:0 0 4px!important}
.dashboard-hero-copy h1{margin:0;font-size:27px;line-height:1.12;letter-spacing:-.04em;font-weight:760}
.dashboard-hero-note{margin:6px 0 0;color:var(--muted);font-size:14px;font-weight:600}
.dashboard-hero-side{display:flex;align-items:flex-end;gap:18px;flex-wrap:wrap}
.dashboard-hero-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.dashboard-branch-filter{margin:0;min-width:0}
.dashboard-branch-filter .filter-group{padding:0;margin:0;border:0}
.dashboard-branch-filter .filter-group-head{margin:0 0 8px}
.dashboard-branch-filter .filter-group-head strong{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.dashboard-branch-filter select{min-width:180px;max-width:230px}
.dashboard-branch-filter .filter-fixed{min-width:150px}
.dashboard-branch-filter .filter-clear{display:block;margin-top:7px;font-size:12.5px;font-weight:700;color:var(--brand)}
.dashboard-card-section{margin:0 0 26px}
.dashboard-card-section .section-head{display:flex;align-items:baseline;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:0 0 10px}
.dashboard-card-section .section-heading{margin:0}
@media(max-width:860px){.dashboard-hero{margin:20px 0;padding:18px}.dashboard-hero-brand{gap:14px}.dashboard-hero-copy h1{font-size:22px}.dashboard-hero-side{gap:14px}}
@media(max-width:620px){.dashboard-hero-side,.dashboard-hero-actions{width:100%}.dashboard-hero-actions .btn{width:auto}.dashboard-branch-filter{width:100%}.dashboard-branch-filter select,.dashboard-branch-filter .filter-fixed{width:100%;max-width:none}}

/* --- Dashboard quick ranges for the four headline cards -------------------
   Reuses the reports .report-presets pills, laid across the page instead of
   the rail's two-column grid: auto-fit keeps two pills per row on a phone
   without ever scrolling sideways. --------------------------------------- */
.dashboard-ranges{margin:0 0 12px}
.dashboard-ranges .filter-group-head{display:flex;align-items:baseline;justify-content:flex-start;gap:10px;flex-wrap:wrap;margin:0 0 9px}
.dashboard-ranges .filter-group-head strong{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.dashboard-ranges-note{font-size:12.5px;font-weight:650;color:var(--muted-2)}
.dashboard-ranges .report-presets{grid-template-columns:repeat(auto-fit,minmax(118px,1fr))}
/* Custom date range beside the quick-range pills (ticket ABI-341952990). Reuses
   the rail look so the dashboard gains no new visual language. */
.dashboard-custom-range .filter-group{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;padding:12px 14px;border:1px solid var(--line-soft);border-radius:12px;background:#fff;box-shadow:var(--shadow-sm)}
.dashboard-custom-range .filter-group-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;width:100%;margin:0}
.dashboard-custom-range .filter-group-head strong{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.dashboard-custom-range .dashboard-range-field{display:grid;gap:4px;font-size:12px;font-weight:700;color:var(--muted)}
.dashboard-custom-range input[type="date"]{height:38px;padding:0 10px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font:inherit}
.dashboard-custom-range .btn{height:38px}
.dashboard-custom-range .filter-clear{align-self:center}
@media(max-width:720px){.dashboard-custom-range .dashboard-range-field{flex:1 1 130px;min-width:0}.dashboard-custom-range .filter-group{gap:8px}}

/* ABI-341953061: keep order filters visible above the order list. */
@media(min-width:1051px){
  .orders-filter-rail{position:sticky;top:0;max-height:100vh;overflow:auto;z-index:2}
  .orders-tabs-row{position:sticky;top:0;background:var(--bg);z-index:3;padding-top:10px}
  .orders-table thead th{position:sticky;top:0;z-index:2;background:#fff}
}
.discount-label-wrap{display:inline-flex;align-items:center;gap:4px;min-width:0}
.table-actions{display:flex;justify-content:flex-end;gap:6px;flex-wrap:wrap}

/* Ticket ABI-341953085: "Customer Statement" button plus its optional date range
   on the customer page header. The dates are plain GET args that open the PDF in
   a new tab, so nothing else on the page changes. */
.header-actions .statement-form{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0}
.statement-form label{display:flex;align-items:center;gap:5px;font-size:12px;font-weight:700;color:var(--muted)}
.statement-form input[type=date]{width:auto;min-width:150px;min-height:40px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink)}
.statement-form .btn{width:auto}

/* Ticket ABI-341953098: make the new-order form sections easier to scan. */
.order-form .order-customer-section{padding:18px;border:1px solid var(--line);border-radius:var(--radius-lg);background:linear-gradient(180deg,#fff,#f8fbff);box-shadow:var(--shadow-sm)}
.order-form .order-customer-section + .order-customer-section{margin-top:-6px}
.order-form .order-details-section{padding-top:12px;border-top:2px solid var(--line-soft)}
.order-form .order-section-heading{margin:0;color:#0f766e;font-size:18px;letter-spacing:.04em;text-transform:uppercase}
.order-form .order-details-section>h3{margin:0;font-size:15px;letter-spacing:-.01em}
.order-form .compact-choice-grid{gap:8px;max-width:520px}
.order-form .compact-choice-card{padding:9px 11px;border-radius:10px;min-height:42px;align-items:center}
.order-form .compact-choice-card input{width:auto;margin:0 7px 0 0}
.order-form .compact-choice-card strong{font-size:13px}

/* Legacy balances imported from the old Sano/Booqable system. */
.legacy-balance-card{border-color:#fed7aa;background:linear-gradient(145deg,#fff,#fff7ed)}
.legacy-balance-summary{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:14px 0 16px;border-bottom:1px solid var(--line-soft);margin-bottom:6px}
.legacy-balance-summary small{display:block;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.04em;margin-bottom:5px}
.legacy-balance-summary strong{font-size:24px}
.legacy-balance-summary p{max-width:560px;margin:0;color:var(--muted);font-weight:600;line-height:1.45}
.legacy-balance-row{grid-template-columns:minmax(190px,1.1fr) minmax(220px,1fr) auto}
.legacy-balance-money small{color:var(--muted);font-weight:700}
.balance-owing{color:#b42318}
.owing-customers-table .owing-amount{text-align:right;white-space:nowrap}
@media(max-width:620px){.owing-customers-table{min-width:0;width:100%;table-layout:fixed}.owing-customers-table .owing-status,.owing-customers-table .owing-raised{display:none}.owing-customers-table th,.owing-customers-table td{padding:10px 6px;overflow-wrap:anywhere}.owing-customers-table th:first-child{width:43%}.owing-customers-table th:nth-child(2){width:29%}.owing-customers-table .owing-amount{width:28%;white-space:normal}.owing-customers-panel .panel-title{flex-wrap:wrap;gap:8px}}
@media(max-width:720px){.legacy-balance-summary{display:grid}.legacy-balance-row{grid-template-columns:1fr}.legacy-balance-row>b{justify-self:start}}

/* Legacy balance stat card on the order form, plus the settlement panel on the
   customer page where the money is actually taken. */
.legacy-balance-stat-card{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;white-space:normal;border-color:#fed7aa;background:#fff7ed}
.legacy-balance-stat-card .btn{width:auto;min-height:32px;padding:5px 11px;font-size:12.5px}
.legacy-balance-settled{display:block;margin-top:4px;color:var(--muted);font-weight:700;font-size:12.5px}
.legacy-payment-form{margin-top:16px;padding:16px;border:1px solid #fed7aa;border-radius:14px;background:#fffbeb}
.legacy-payment-form h3{margin:0 0 12px;font-size:15px}
.legacy-payment-form .form-grid{margin-bottom:12px}
.legacy-payment-form .btn{width:auto}
.legacy-payment-list{margin-top:18px}
.legacy-payment-list h3{margin:0 0 10px;font-size:15px}
@media(max-width:720px){.legacy-balance-stat-card{display:grid}.legacy-balance-stat-card .btn{justify-self:start}}

/* Store categories with photos (programme phase 11 / §C1) */
.store-category{margin-bottom:26px}
.store-category-head{display:flex;align-items:center;gap:18px;margin-bottom:14px}
.store-category-image{width:230px;height:140px;object-fit:cover;border-radius:16px;border:1px solid var(--line-soft);background:var(--surface);flex-shrink:0}
.store-category-fallback{display:grid;place-items:center;color:#2b5fb7;font-size:32px;font-weight:900;background:linear-gradient(145deg,#dceaff,#f6f9ff)}
.store-category-copy h2{margin:0 0 4px;font-size:22px;letter-spacing:-.03em}
.store-category-copy p{margin:0;color:var(--muted)}

/* Group form: photo + bulk assign (programme phase 11 / §C1) */
.group-image-preview{width:100%;aspect-ratio:16/9;border-radius:16px;overflow:hidden;border:1px solid var(--line-soft);background:var(--surface);margin-bottom:10px;display:grid}
.group-image-preview img{width:100%;height:100%;object-fit:cover}
.group-image-fallback{width:100%;height:100%;display:grid;place-items:center;color:#2b5fb7;font-size:40px;font-weight:900;background:linear-gradient(145deg,#dceaff,#f6f9ff)}
.group-image-form{flex-wrap:wrap}
.group-image-form input[type=file]{max-width:100%}
.store-category-setup-panel{margin-top:20px}
.store-category-setup-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));gap:14px;margin-top:16px}
.store-category-setup-card{display:grid;grid-template-columns:130px minmax(0,1fr);gap:14px;align-items:start;padding:14px;border:1px solid var(--line-soft);border-radius:18px;background:var(--surface-soft)}
.store-category-setup-card .group-image-preview{margin:0;aspect-ratio:4/3;border-radius:14px}
.store-category-setup-copy h3{margin:0 0 6px;font-size:16px;letter-spacing:-.02em}
.store-category-setup-copy p{margin:0 0 8px}
.store-category-product-list{margin:8px 0 0;padding-left:18px;color:var(--ink-2);font-size:13px}
.store-category-description-form{display:grid;gap:6px;margin:10px 0 0}
.store-category-description-form label{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.store-category-description-form textarea{width:100%;resize:vertical;min-height:56px;font:inherit;font-size:13px;padding:8px 10px;border:1px solid var(--line-soft);border-radius:10px;background:var(--surface);box-sizing:border-box}
.store-category-description-form .btn{justify-self:start}
.store-category-photo-actions{align-items:center;margin-top:10px}
.store-category-photo-actions .inline-form{margin:0}
.store-category-setup-card.is-ungrouped{opacity:.86}
.group-assign-panel{margin-top:18px}
.group-current-products{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:0 0 14px}
.group-search{display:flex;gap:10px;margin-bottom:12px}
.group-search input{flex:1}
.group-assign-list{max-height:340px;overflow:auto;border:1px solid var(--line-soft);border-radius:14px;padding:8px 14px;margin-bottom:12px}
.inventory-group-row-head{display:flex;justify-content:space-between;align-items:center;gap:12px}

@media(max-width:860px){
  .store-category-head{display:grid;gap:10px}
  .store-category-image{width:100%;height:auto;aspect-ratio:16/9}
}

/* --- Public multi-trailer booking (phase 12 / §C2) ---------------------------------- */
.booking-panel{padding:28px}
.booking-form{display:grid;gap:22px}
.booking-section{border-top:1px solid var(--line-soft);padding-top:20px;min-width:0}
.booking-section:first-of-type{border-top:0;padding-top:0}
.booking-section>h2{margin:0 0 12px;font-size:16px;letter-spacing:-.02em}
.booking-category{margin-bottom:22px}
.booking-category .store-category-head{margin-bottom:10px}
.booking-category h3{margin:0 0 4px;font-size:15px;letter-spacing:-.02em;color:var(--ink)}
.booking-trailer-list{display:grid;gap:10px;min-width:0}
.booking-trailer{display:flex;align-items:center;gap:14px;padding:12px 14px;border:1px solid var(--line-soft);border-radius:14px;background:var(--surface-soft);cursor:pointer;min-width:0}
.booking-trailer-copy{display:grid;gap:2px;min-width:0;flex:1}
.booking-trailer-copy strong{overflow-wrap:anywhere;color:var(--ink);font-size:15px}
.booking-qty{width:76px;flex:0 0 auto;padding:10px 8px;border:1px solid var(--line);border-radius:10px;font:inherit;font-size:16px;text-align:center;background:#fff;color:var(--ink);margin:0!important}
.booking-qty:focus{outline:2px solid var(--brand);outline-offset:1px}
.booking-estimate{background:var(--surface-soft);border:1px solid var(--line-soft);border-radius:16px;padding:16px 18px}
.booking-estimate-rows{margin:0;display:grid;gap:8px;min-width:0}
.booking-estimate-rows>div{display:flex;justify-content:space-between;gap:12px;min-width:0}
.booking-estimate-rows dt{color:var(--muted)}
.booking-estimate-rows dd{margin:0;font-weight:750;font-variant-numeric:tabular-nums}
.booking-estimate-total{border-top:1px solid var(--line);padding-top:10px;font-size:17px}
.booking-estimate-total dd{color:var(--brand)}
.booking-form .consent-block{margin-top:14px}
.booking-form>.booking-section .checkline{font-size:14px;color:var(--ink)}
@media(max-width:520px){
  .booking-panel{padding:18px}
  .booking-trailer{flex-direction:column;align-items:stretch;gap:8px}
  .booking-qty{width:100%}
}
/* --- Licence-disk scan screen (programme phase 3, feature A / A3) ---------
   Phone-first: the capture step is one column of two big targets, and the review
   step is the house .form-grid (which already falls to one column at 860px).
   Everything is min-width:0 / overflow-wrap:anywhere so a long VIN, a raw
   payload or a 390px viewport can never push the page sideways. ------------- */
.scan-vehicle-header .module-title p{max-width:760px}
.scan-capture-panel{margin-bottom:18px}
.scan-capture-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:14px}
.scan-capture-grid>label,.scan-camera-card{min-width:0}
.scan-camera-card{display:grid;gap:10px;padding:14px;border:1px solid var(--line-soft);border-radius:var(--radius,12px);background:var(--surface-soft)}
.scan-actions-simple{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.scan-big{min-height:52px;font-size:15px}
.scan-actions-simple .btn{width:auto}
.scan-file-input{position:absolute;width:1px;height:1px;opacity:0}
/* Licence-disk scanner overlay (programme scan-camera work). A fixed, full-screen
   overlay — NOT the Fullscreen API, which iOS Safari does not implement for a <div>.
   Safe-area padding keeps the controls clear of the notch and the home bar in both
   orientations; the video uses object-fit:contain so the FULL camera image is kept
   and the 153/13 guide never crops the barcode ends. ---------------------------- */
body.scan-fs-open{overflow:hidden}
.scan-camera-live{position:fixed;inset:0;z-index:1200;display:grid;grid-template-rows:auto 1fr auto;background:#000;color:#fff;padding:calc(env(safe-area-inset-top) + 8px) calc(env(safe-area-inset-right) + 12px) calc(env(safe-area-inset-bottom) + 12px) calc(env(safe-area-inset-left) + 12px)}
.scan-camera-top{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px}
.scan-camera-title{font-weight:750;font-size:15px}
.scan-camera-close{width:44px;height:44px;flex:0 0 auto;border-radius:50%;border:1px solid rgba(255,255,255,.35);background:rgba(15,23,42,.6);color:#fff;font-size:18px;line-height:1;cursor:pointer}
.scan-camera-close:focus-visible{outline:3px solid #fff;outline-offset:2px}
.scan-camera-stage{position:relative;overflow:hidden;border-radius:14px;background:#0f172a;border:1px solid #111827;min-height:0}
.scan-camera-stage video{width:100%;height:100%;object-fit:contain;display:block}
.scan-barcode-guide{position:absolute;box-sizing:border-box;left:9%;width:82%;right:auto;top:50%;height:auto;aspect-ratio:6/1;max-height:52%;transform:translateY(-50%);border:2px solid rgba(255,255,255,.95);border-radius:3px;box-shadow:0 0 0 999px rgba(15,23,42,.42);pointer-events:none}
.scan-camera-hint{position:absolute;left:0;right:0;top:8px;margin:0;padding:0 12px;text-align:center;color:#f1f5f9;font-weight:650;font-size:12px;line-height:1.35;text-shadow:0 1px 3px rgba(0,0,0,.9)}
.scan-camera-playstart{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);min-height:52px;min-width:170px;padding:0 22px;border-radius:999px;border:0;background:var(--brand,#0ea5e9);color:#fff;font-weight:750;font-size:15px;cursor:pointer}
.scan-camera-bottom{display:grid;gap:8px;justify-items:center;padding-top:12px}
.scan-camera-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:center}
.scan-camera-actions .btn{width:auto}
.scan-camera-status{margin:10px 0 0}
.scan-camera-blocked{display:grid;gap:6px;margin:0 0 14px;padding:12px 14px;border:1px solid #fecaca;border-radius:var(--radius,12px);background:var(--danger-soft,#fff0ee);color:var(--danger,#b42318);font-weight:650;overflow-wrap:anywhere}
.scan-camera-blocked p{margin:0;font-weight:600;color:#7a271a}
/* Short landscape phones: drop the guidance line and pull the controls to the
   bottom bar so the guide keeps as much of the (short) screen as possible. ---- */
@media (orientation:landscape) and (max-height:520px){.scan-camera-hint{display:none}.scan-camera-bottom{padding-top:8px}}
.scan-capture-form textarea{min-height:88px}
.scan-capture-actions{margin-bottom:10px}
.portal-privacy-template,.portal-template-privacy{padding:14px;border:1px solid var(--line-soft);border-radius:14px;background:var(--surface-soft);margin:10px 0}
.portal-privacy-template h2,.portal-template-privacy h3{margin-top:0}
.portal-template-privacy blockquote{margin:10px 0 0;padding:12px 14px;border-left:4px solid var(--brand);background:#fff;border-radius:10px;color:var(--ink-2)}
.scan-review-panel .scan-warning{display:grid;gap:6px;margin:0 0 16px;padding:12px 14px;border:1px solid #fecaca;border-radius:var(--radius,12px);background:var(--danger-soft,#fff0ee);color:var(--danger,#b42318);font-weight:650}
.scan-review-panel .scan-warning p{margin:0;font-weight:600;color:#7a271a}
.scan-transfer-line .scan-transfer-check{display:flex;align-items:center;gap:10px;font-weight:700}
.scan-transfer-line .scan-transfer-check input{width:auto;min-width:0;margin:0;accent-color:var(--brand)}
.scan-details{border:1px solid var(--line-soft);border-radius:12px;background:var(--surface-soft);padding:10px 12px;min-width:0}
.scan-details summary{cursor:pointer;font-weight:700;color:var(--ink-2)}
.scan-details ul{margin:10px 0 2px;padding-left:18px}
.scan-details li{overflow-wrap:anywhere}
.scan-raw-text{margin:10px 0 2px;white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;line-height:1.45;max-height:240px;overflow:auto;background:#fff;border:1px solid var(--line-soft);border-radius:10px;padding:10px}
@media(max-width:860px){.scan-capture-grid{grid-template-columns:1fr}}

/* --- Scan-to-return screen (programme phase 6, feature D / D2) ------------
   Same phone-first shape as the A3 scan screen above: the capture step is one
   column, and the review step is a stack of candidate cards. A candidate card is
   min-width:0 with overflow-wrap:anywhere so a long VIN, an order number or a
   390px viewport can never push the page sideways. The "read off the disk" chips
   wrap instead of scrolling, and the plate box is full width because it is the
   fallback staff reach for when the camera will not read a damaged disk. ------ */
.scan-return-plate{margin:0 0 14px}
.scan-identifiers{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 16px}
.scan-identifiers-label{flex-basis:100%;font-weight:700;color:var(--ink-2);text-transform:uppercase;letter-spacing:.04em;font-size:11px}
.scan-chip{display:inline-flex;flex-direction:column;gap:2px;min-width:0;max-width:100%;padding:6px 10px;border:1px solid var(--line-soft);border-radius:10px;background:var(--surface-soft)}
.scan-chip small{font-size:11px;color:var(--ink-2)}
.scan-chip b{font-size:13px;overflow-wrap:anywhere}
.scan-candidates{display:grid;gap:12px}
.scan-candidate{display:grid;gap:8px;min-width:0;padding:14px;border:1px solid var(--line-soft);border-radius:var(--radius,12px);background:#fff}
.scan-candidate-head{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline;justify-content:space-between}
.scan-candidate-head h3{margin:0;font-size:15px;overflow-wrap:anywhere}
.scan-candidate-evidence{margin:0;overflow-wrap:anywhere;color:var(--ink-2)}
.scan-candidate-evidence code,.scan-identifiers code{overflow-wrap:anywhere}
.scan-candidate-action{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.scan-candidate-blocked{margin:0;padding:10px 12px;border:1px solid #fde68a;border-radius:10px;background:#fffbeb;color:#92400e;font-weight:600;overflow-wrap:anywhere}
.scan-nothing{display:grid;gap:10px}
.scan-returned-hint{display:grid;gap:6px;padding:12px 14px;border:1px solid var(--line-soft);border-radius:var(--radius,12px);background:var(--surface-soft)}
.scan-returned-hint ul{margin:0;padding-left:18px}
.scan-returned-hint li{overflow-wrap:anywhere}
.scan-returned-hint p{margin:0}

/* --- Client page Vehicles panel (programme phase 4, feature A / A4) -------
   The panel sits in the same right-hand column as the contact/orders cards.
   The read table is the house .data-table inside .table-wrap (which scrolls
   itself on a narrow screen instead of pushing the page sideways), and each
   vehicle's edit/remove controls live in a collapsed <details> below it so a
   phone never has to hold a 15-field form inside a table cell. ------------- */
.customer-vehicles-card{grid-column:2;min-width:0}
/* The read table is wider than a phone on purpose (.data-table min-width), so the grid item has to be
   allowed to shrink (min-width:0) and let .table-wrap scroll itself — without this the 390px page
   itself scrolls sideways (measured: profile grid 688px inside a 354px column). */
.customer-vehicles-card .table-wrap{margin:12px 0 0;min-width:0}
.vehicles-table{min-width:640px}
.vehicles-table td:first-child strong{white-space:nowrap;letter-spacing:.01em}
.vehicles-table td:first-child small.vehicle-sub{display:block;color:var(--muted);font-weight:650;margin-top:3px}
.vehicle-manage{display:grid;gap:10px;margin-top:16px;min-width:0}
.vehicle-manage-item{border:1px solid var(--line-soft);border-radius:14px;background:#fff;min-width:0}
.vehicle-manage-item summary{padding:13px 15px;cursor:pointer;font-weight:750;color:var(--brand);list-style:none}
.vehicle-manage-item summary::-webkit-details-marker{display:none}
.vehicle-manage-item summary:before{content:"▸";display:inline-block;margin-right:8px;transition:transform .12s ease}
.vehicle-manage-item[open] summary:before{transform:rotate(90deg)}
.vehicle-manage-item[open] summary{border-bottom:1px solid var(--line-soft)}
.vehicle-edit-form{padding:15px;min-width:0}
.vehicle-edit-form label{min-width:0}
.vehicle-remove-form{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:0 15px 15px;border-top:1px solid var(--line-soft);padding-top:14px;margin-top:4px}
.vehicle-remove-form button{width:auto}
.vehicle-remove-form .form-help{margin:0;flex:1 1 240px}
@media(max-width:1050px){.customer-vehicles-card{grid-column:auto}}
@media(max-width:520px){.vehicle-remove-form button{width:100%}}

/* --- Client portal changes: required-field markers, honeypot, pending self-registrations.
   Scoped to the classes the templates add, and responsive at the end of the sheet so nothing
   above is disturbed. --- */
.field-label{display:inline-flex;align-items:baseline;gap:4px;min-width:0}
.req-star{color:#d4342c;font-weight:900;font-size:12px;line-height:1}
.honeypot{position:absolute!important;left:-9999px!important;top:auto!important;width:1px;height:1px;overflow:hidden;opacity:0;pointer-events:none}
.pending-registration-panel .pending-registration-details{margin:10px 0 14px}
.pending-checklist{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:8px}
.pending-check{display:grid;gap:2px;padding:10px 14px;border:1px solid var(--line);border-left-width:4px;border-radius:10px}
.pending-check strong{font-size:13px;letter-spacing:.02em}
.pending-checklist .pending-check{padding:0}
.pending-check-link{display:grid;gap:4px;padding:12px 14px;min-height:44px;border-radius:8px;color:inherit;text-decoration:none}
a.pending-check-link:hover{background:var(--line-soft)}
a.pending-check-link:focus-visible{outline:3px solid var(--brand);outline-offset:2px}
.pending-check .pending-check-action{display:inline-flex;align-items:center;justify-self:start;min-height:44px;padding:8px 14px;border:1px solid var(--brand);border-radius:8px;background:#f3f8ff;color:var(--brand);font-weight:700}
a.pending-check-link{cursor:pointer}
a.pending-check-link:active{background:#e7f0ff}
#client-verified,#pending-registration{scroll-margin-top:96px}
.pending-check span{color:var(--muted);font-size:13px}
.pending-check.is-done{border-left-color:var(--brand)}
.pending-check.is-open{border-left-color:#d4342c}
.pending-actions{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 14px}
.pending-approve-form{display:flex;flex-wrap:wrap;align-items:center;gap:12px;border-top:1px solid var(--line-soft);padding-top:14px}
.pending-approve-form .form-help{margin:0;flex:1 1 240px}
.pending-approve-form .btn:disabled{opacity:.45;cursor:not-allowed}
.pending-registration-panel .pending-approve-form .btn.portal-approved:disabled{background:#dcfce7;color:#166534;border-color:#86efac;opacity:1;cursor:default}
.portal-order-actions{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin-top:14px}
.pending-delete-form{display:flex;flex-wrap:wrap;align-items:center;gap:12px;border-top:1px solid var(--line-soft);margin-top:16px;padding-top:16px}
.pending-delete-form .form-help{margin:0;flex:1 1 240px}
.pending-queue-card{margin-bottom:18px}
.pending-queue-card .pending-queue-empty{margin:0;padding:18px 24px;text-align:left}
.pending-queue-row .pending-queue-meta{display:grid;justify-items:end;gap:2px;text-align:right}
.pending-queue-age{color:var(--muted-2)}
.pending-queue-card .movement-foot span{color:var(--muted);font-size:13px;font-weight:600}
/* Per-branch waiting queue (ticket ABI-341953235): one heading per depot, with its own n / 3
   counter, so an all-branch viewer can never read a combined total as one branch's cap. */
.schedule-branch-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:14px 0 6px}
.schedule-branch-head:first-child{margin-top:0}
.schedule-branch-head b{color:var(--ink-2);font-weight:850}
@media(max-width:620px){
  /* On a phone the branch label must not push the row wider than the card. */
  .pending-queue-card .movement-row{flex-wrap:wrap;align-items:flex-start;gap:4px}
  .pending-queue-card .movement-row>span{min-width:0}
  .pending-queue-card .movement-row small{display:block;overflow-wrap:anywhere}
  .pending-queue-row{flex-wrap:wrap}
  .pending-queue-row .pending-queue-meta{justify-items:start;text-align:left}
  .pending-actions{flex-direction:column}
  .pending-actions .btn{width:100%}
  .pending-approve-form{flex-direction:column;align-items:stretch}
  .pending-approve-form .btn{width:100%}
}


  /* ABI-341953208: persistent verification warnings on order screens. */
  .customer-not-verified { display:block; width:fit-content; color:#a11212 !important; background:#fee2e2; padding:3px 7px; border-radius:4px; font-weight:800; }
  .customer-verification-warning { display:flex; flex-direction:column; gap:4px; padding:14px 18px; margin-bottom:18px; border:1px solid #dc2626; border-radius:8px; color:#991b1b; background:#fef2f2; }
  .customer-verification-warning[hidden] { display:none; }

/* ABI-341953212: the scan screen's Approve & Save Vehicle / Disapprove Vehicle pair, and the
   vehicle's own unapproved red state. The red badge mirrors the existing "Licence disk expired"
   warning treatment so an unapproved vehicle reads as a warning wherever it is listed. */
.scan-review-panel .scan-disapprove-action { align-items:center; gap:10px; margin-top:4px; }
.scan-review-panel .scan-disapprove-action .form-help { font-weight:600; color:var(--ink-2); }
.badge.vehicle-unapproved-badge { background:#fee2e2; color:#a11212; font-weight:800; }
.scan-review-panel .scan-vehicle-approved-state { display:flex; align-items:center; gap:10px; margin:0 0 14px; padding:12px 14px; border:1px solid #fecaca; border-radius:var(--radius,12px); background:var(--danger-soft,#fff0ee); color:var(--danger,#b42318); font-weight:650; }
