/* Shared button materials; preserve layout/navigation and icon-only controls. */
:root :where(button:not(.nav-item):not(.customer-card):not(.sidebar-backdrop)){border-radius:12px;touch-action:manipulation;transition:background-color .15s ease,box-shadow .15s ease}
:root :is(.primary-action,.primary-button,.auth-submit,.save-trip,.reservation-lookup-submit,.contract-workspace .primary){background:#0071e3;color:#fff;border:1px solid transparent;border-radius:999px;min-height:44px;box-shadow:0 2px 5px #0071e326}
/* [id=…] rather than #…: an ID inside :is() lifts the whole rule above the ".primary is blue" rule below, which left primaries grey. */
:root :is(.contract-actions,.contract-step-tabs,.reservation-operation-tabs,[id="reservationDrivers"],.modal-actions)>button{min-height:44px;padding:10px 20px;border:1px solid #e0e2e8;border-radius:999px;background:#efeff4;color:#242426;font:inherit;font-weight:700;cursor:pointer}
:root .contract-actions>button.primary,:root [role="tab"][aria-selected="true"]{background:#0071e3;color:white;border-color:transparent}
:root :is(.icon-action,.app-icon-action,.language-icon-button,.menu-button){border-radius:12px;min-width:44px;min-height:44px}
:root button:focus-visible{outline:3px solid #0071e3;outline-offset:3px}
:root button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}
@media(hover:hover){:root button:not(:disabled):not(.nav-item):not(.customer-card):hover{filter:brightness(.97)}}
:root button:not(:disabled):not(.sidebar-backdrop):active{filter:brightness(.92)}
@media(prefers-reduced-motion:reduce){:root button{transition:none!important}}

/* One action language for booking, administration and reservation forms.
   Keep picker options, navigation and inline field triggers lightweight. */
:root :is(.modal-actions,.contract-actions,.loyalty-actions,.driver-action-row){display:flex;align-items:center;gap:10px;flex-wrap:wrap}
:root :is(.modal-actions,.contract-actions,.loyalty-actions,.driver-action-row)>:is(button,a){margin:0;width:auto;flex:0 1 auto}
:root :is(
  .primary-action,.primary-button,.auth-submit,.save-trip,.show-cars-button,.continue-button,.change-button,
  .reservation-lookup-submit,.danger-action,.secondary-action,
  form button[type="submit"],
  .modal-actions>button,.contract-actions>button,.contract-actions>a,
  .loyalty-actions>button,.driver-action-row>button,
  .contract-step-tabs>button,.reservation-operation-tabs>button,
  .contract-step-panel>button,.confirmation-actions>button,.confirmation-actions>a,
  .cal-confirm-bar>button,.cal-details-actions>button
):not([data-preserve-button-style]){
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  min-height:44px;height:auto;padding:10px 20px;border:1px solid #e1e4eb;
  border-radius:999px;background:#f0f1f5;color:#1d1d1f;
  font-family:inherit;font-size:16px;font-weight:600;line-height:1.4;
  text-decoration:none;cursor:pointer;touch-action:manipulation;
  box-shadow:0 1px 2px #00000008;transition:background-color .15s ease,box-shadow .15s ease;
}
:root :is(form button[type="submit"],.primary-action,.primary-button,.auth-submit,.save-trip,.show-cars-button,.continue-button,.reservation-lookup-submit,.driver-save-action,.contract-workspace .primary,[role="tab"][aria-selected="true"]):not([data-preserve-button-style]){background:#0071e3;border-color:#0071e3;color:#fff}
:root :is(.danger-action,button[data-action-icon="delete"]){color:#b42318;background:#fff1f0;border-color:#f4c7c3}
/* Show meaningful captions on form actions, even when icon enhancement runs. */
:root :is(form button[type="submit"],.modal-actions>button,.loyalty-actions>button,.cal-details-actions>button,.cal-confirm-bar>button)>.app-action-label{position:static;width:auto;height:auto;margin:0;padding:0;overflow:visible;clip-path:none;white-space:normal}
/* …and let the button grow to fit that caption; .app-icon-action otherwise pins it to a 44px circle. */
:root :is(form button[type="submit"],.loyalty-actions>button,.cal-details-actions>button,.cal-confirm-bar>button).app-icon-action{width:auto;flex:0 1 auto;gap:8px;padding-inline:18px}
:root :is(.contract-actions,.loyalty-actions,.driver-action-row) a:focus-visible{outline:3px solid #0071e3;outline-offset:3px}
:root :is(button,a)[hidden]{display:none!important}
@media(max-width:400px){
  :root :is(.modal-actions,.loyalty-actions,.driver-action-row){gap:8px}
  :root :is(.modal-actions,.loyalty-actions,.driver-action-row)>button{min-width:0;padding-inline:14px}
}
@media(prefers-contrast:more){:root :is(.modal-actions,.contract-actions,.loyalty-actions,.driver-action-row)>button{border-color:currentColor}}
/* Semantic colors for compact actions; captions/tooltips still identify each action. */
:root .app-icon-action[data-action-icon="delete"]{color:#b42318;background:#fff1f0;border-color:#f4c7c3}
:root button[data-delete-vehicle]{color:#b42318;background:#fff1f0;border-color:#f4c7c3}
:root button.icon-action[data-edit-vehicle]{color:#92400e;background:#fffbeb;border-color:#f5d693}
/* Row actions in tables are icons only: no box or border at rest, the 44px tap area kept, and the tint
   returning on hover / keyboard focus so the target is still easy to see. */
:root .table-actions>button.icon-action{background:transparent;border-color:transparent;box-shadow:none;transition:background-color .16s ease,border-color .16s ease,transform .16s ease}
:root .table-actions>button.icon-action svg{width:20px;height:20px}
:root .table-actions>button.icon-action[data-edit-vehicle]:is(:hover,:focus-visible){background:#fffbeb;border-color:#f5d693}
:root .table-actions>button.icon-action[data-delete-vehicle]:is(:hover,:focus-visible){background:#fff1f0;border-color:#f4c7c3}
:root .table-actions>button.icon-action:active{transform:scale(.92)}
:root .app-icon-action[data-action-icon="edit"]{color:#92400e;background:#fffbeb;border-color:#f5d693}
:root .app-icon-action[data-action-icon="view"]{color:#0055b3;background:#eff6ff;border-color:#bfdbfe}
:root .app-icon-action[data-action-icon="copy"]{color:#6d28d9;background:#f5f3ff;border-color:#ddd6fe}
.confirm-dialog { width:min(420px,calc(100vw - 32px)); padding:24px; border:0; border-radius:20px; background:var(--surface,#fff); color:var(--ink,#0b0c0e); box-shadow:0 24px 64px rgba(0,0,0,.24); }
.confirm-dialog::backdrop { background:rgba(11,12,14,.48); }
.confirm-dialog p { margin:0 0 24px; font-size:16px; line-height:1.6; overflow-wrap:anywhere; }
.confirm-dialog-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:12px; }
.confirm-dialog-actions button { min-height:44px; min-width:96px; padding:10px 20px; border-radius:999px; border:1px solid var(--control-border,#868d97); background:transparent; color:inherit; font:inherit; font-weight:700; cursor:pointer; }
.confirm-dialog-actions button.primary { border-color:var(--blue,#075ce5); background:var(--blue,#075ce5); color:#fff; }
.confirm-dialog-actions button.danger { border-color:#b3261e; background:#b3261e; color:#fff; }
.confirm-dialog-actions button:focus-visible { outline:2px solid var(--blue,#075ce5); outline-offset:3px; }
@media (max-width:480px) { .confirm-dialog-actions { flex-direction:column-reverse; } .confirm-dialog-actions button { width:100%; } }
/* Secondary icon buttons are icons only: no box or border at rest, 44px tap area kept. On hover / keyboard focus
   a tint of the icon's own colour returns, so one rule serves view, edit, copy, delete and add alike. Filled
   primary actions, captioned buttons (form submits, modal and loyalty actions) and header chrome are left alone. */
:root :is(.app-icon-action:not(.primary-action):not(.customer-reservation-link):not([type="submit"]),.reservation-card-actions :is(.reservation-open,.contract-link,.reservation-delete)):not(.modal-actions>*):not(.loyalty-actions>*):not(.cal-details-actions>*):not(.cal-details-actions>*){background:transparent;border-color:transparent;box-shadow:none;transition:background-color .16s ease,transform .16s ease}
:root :is(.app-icon-action:not(.primary-action):not(.customer-reservation-link):not([type="submit"]),.reservation-card-actions :is(.reservation-open,.contract-link,.reservation-delete)):not(.modal-actions>*):not(.loyalty-actions>*):not(.cal-details-actions>*):not(.cal-details-actions>*):is(:hover,:focus-visible):not(:disabled){background:color-mix(in srgb,currentColor 12%,transparent)}
:root :is(.app-icon-action:not(.primary-action):not(.customer-reservation-link):not([type="submit"]),.reservation-card-actions :is(.reservation-open,.contract-link,.reservation-delete)):not(.modal-actions>*):not(.loyalty-actions>*):not(.cal-details-actions>*):not(.cal-details-actions>*):active:not(:disabled){transform:scale(.92)}
:root .app-icon-action:not(.primary-action):not(.customer-reservation-link):not([type="submit"]):not(.modal-actions>*):not(.loyalty-actions>*):not(.cal-details-actions>*):not(.cal-details-actions>*)>svg{width:20px;height:20px}
/* The reservation page's copy and print buttons carry ID-level rules of their own, so they are named here. */
:root #copyReservationCode,:root #printConfirmation{background:transparent;border-color:transparent;box-shadow:none;transition:background-color .16s ease,transform .16s ease}
:root #copyReservationCode:is(:hover,:focus-visible),:root #printConfirmation:is(:hover,:focus-visible){background:color-mix(in srgb,currentColor 12%,transparent)}
:root #copyReservationCode:active,:root #printConfirmation:active{transform:scale(.92)}
:root .app-icon-action[data-action-icon="check"]{color:#0a6b3d}
:root .app-icon-action:is([data-action-icon="retry"],[data-action-icon="calculate"]){color:#0055b3}
:root .app-icon-action[data-action-icon="close"]:not(.primary-action){color:var(--ink,#1c2426)}
