/*
 * Opal Work Station – Global Radius Design System
 * All visual components derive their corner geometry from html[data-radius].
 */
:root,
html[data-radius="corporate"] {
  --radius-page: 14px;
  --radius-card: 12px;
  --radius-panel: 12px;
  --radius-modal: 14px;
  --radius-control: 10px;
  --radius-button: 10px;
  --radius-badge: 8px;
  --radius-icon: 10px;
  --radius-menu: 10px;
  --radius-row: 8px;
  --radius-small: 7px;
  --radius-tiny: 5px;
  --radius-pill: 9px;
  --radius-circle: 10px;

  --radius: var(--radius-page);
  --opal-radius: var(--radius-card);
  --opal-radius-sm: var(--radius-small);
  --component-radius: var(--radius-control);
  --card-radius: var(--radius-card);
  --input-radius: var(--radius-control);
  --button-radius: var(--radius-button);
  --badge-radius: var(--radius-badge);
  --icon-radius: var(--radius-icon);
  --modal-radius: var(--radius-modal);
  --table-radius: var(--radius-row);
}

html[data-radius="sharp"] {
  --radius-page: 0px;
  --radius-card: 0px;
  --radius-panel: 0px;
  --radius-modal: 0px;
  --radius-control: 0px;
  --radius-button: 0px;
  --radius-badge: 0px;
  --radius-icon: 0px;
  --radius-menu: 0px;
  --radius-row: 0px;
  --radius-small: 0px;
  --radius-tiny: 0px;
  --radius-pill: 0px;
  --radius-circle: 0px;
}

html[data-radius="rounded"] {
  --radius-page: 30px;
  --radius-card: 24px;
  --radius-panel: 22px;
  --radius-modal: 28px;
  --radius-control: 18px;
  --radius-button: 18px;
  --radius-badge: 999px;
  --radius-icon: 18px;
  --radius-menu: 20px;
  --radius-row: 16px;
  --radius-small: 14px;
  --radius-tiny: 10px;
  --radius-pill: 999px;
  --radius-circle: 999px;
}

/* Page and application surfaces */
.opal-app,
.opal-sidebar,
.opal-main,
.opal-content,
.opal-content-card,
.page-card,
.page-shell,
.page-panel,
.workspace-shell,
.workspace-panel,
.dashboard-shell,
.module-shell,
[class$="-shell"],
[class*="-shell "],
[class$="-workspace"],
[class*="-workspace "] {
  border-radius: var(--radius-page) !important;
}

/* Cards, panels, tiles and bordered content blocks */
.company-card,
.sidebar-bottom-card,
.opal-topbar,
.notification-dropdown,
.profile-grid-menu,
.profile-button,
.stat-card,
.metric-card,
.inner-card,
.opal-card,
.opal-table-card,
.kanban-card,
.empty-state,
.settings-hub-card,
.settings-panel-title,
.settings-content-card,
.profile-photo-panel,
.secure-package-summary,
.theme-settings-section,
.quick-action-card,
.action-tile,
.switch-row,
.closed-workorder-item,
.notify-item,
.timeline-row,
.status-list > div,
[class$="-card"],
[class*="-card "],
[class$="-panel"],
[class*="-panel "],
[class$="-tile"],
[class*="-tile "],
[class$="-surface"],
[class*="-surface "],
[class$="-section"],
[class*="-section "] {
  border-radius: var(--radius-card) !important;
}

/* Modals and dialogs */
.modal-card,
.modal-card.wide,
.modal-shell .modal-card,
.opal-global-dialog-card,
.swal2-popup,
.swal2-toast,
.settings-hub-card,
.drawer-card,
.sheet-card,
[class$="-modal"],
[class*="-modal "],
[class$="-dialog"],
[class*="-dialog "] {
  border-radius: var(--radius-modal) !important;
}

/* Inputs and all form controls */
input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]),
select,
textarea,
.form-control,
.form-select,
.input-control,
.select-control,
.search-control,
.date-control,
.time-control,
.number-control,
.search-input-wrap,
.global-search,
.table-toolbar input,
.modal-body input,
.modal-body select,
.modal-body textarea,
.swal2-input,
.swal2-select,
.swal2-textarea,
.choices__inner,
.tom-select .ts-control,
.ts-control,
.flatpickr-input,
.ql-toolbar,
.ql-container,
.dropzone {
  border-radius: var(--radius-control) !important;
}

/* Buttons and clickable controls */
button,
.btn,
[role="button"],
input[type="button"],
input[type="submit"],
input[type="reset"],
.search-button,
.search-icon-submit,
.recent-workorders-button,
.topbar-icon-button,
.opal-icon-button,
.opal-action-button,
.opal-button,
.opal-mini-button,
.modal-head button,
.dropdown-head button,
.settings-drawer-toggle,
.password-toggle,
.sidebar-mobile-close,
.swal2-actions button,
.swal2-confirm,
.swal2-cancel,
.swal2-deny,
.pagination button,
.pagination a,
.page-link,
.dataTables_paginate a,
.opal-pagination button,
.opal-pagination a {
  border-radius: var(--radius-button) !important;
}

/* Badge, pill, status and tag system */
.badge,
[class~="badge"],
[class$="-badge"],
[class*="-badge "],
[class$="-pill"],
[class*="-pill "],
[class$="-chip"],
[class*="-chip "],
[class$="-tag"],
[class*="-tag "],
.status-pill,
.user-status-pill,
.table-status,
.state-badge,
.count-badge,
.channel-badge,
.permission-badge,
.role-badge,
.live-badge,
.filter-badge {
  border-radius: var(--radius-badge) !important;
}

/* Icon containers and avatars */
.company-logo,
.avatar,
.opal-avatar,
.profile-photo-preview,
.stat-icon,
.metric-icon,
.modal-icon,
.card-icon,
.section-icon,
.opal-global-dialog-symbol,
.opal-context-icon,
.settings-nav-brand .brand-dot,
[class$="-icon-box"],
[class*="-icon-box "],
[class$="-icon-wrap"],
[class*="-icon-wrap "],
[class$="-icon-tile"],
[class*="-icon-tile "],
[class$="-avatar"],
[class*="-avatar "] {
  border-radius: var(--radius-icon) !important;
}

/* Menus, popovers and context surfaces */
.opal-context-menu,
.profile-grid-menu,
.notification-dropdown,
.dropdown-menu,
.context-menu,
.popover,
.tooltip-inner,
.autocomplete-menu,
.select-dropdown,
.ts-dropdown,
.choices__list--dropdown {
  border-radius: var(--radius-menu) !important;
}

.opal-context-item,
.profile-grid-menu button,
.profile-grid-menu a,
.settings-hub-nav button,
.theme-options button,
.sidebar-order-row,
.nav-link,
.closed-workorder-item .closed-code {
  border-radius: var(--radius-small) !important;
}

/* Tables and row geometry */
.opal-table,
.opal-data-table,
.table-responsive,
.table-wrap,
.opal-table-wrap,
.opal-data-table-wrap,
.dataTables_wrapper,
.table-container {
  border-radius: var(--table-radius) !important;
}

.opal-table tbody td:first-child,
.opal-data-table tbody td:first-child {
  border-radius: var(--radius-row) 0 0 var(--radius-row) !important;
}

.opal-table tbody td:last-child,
.opal-data-table tbody td:last-child {
  border-radius: 0 var(--radius-row) var(--radius-row) 0 !important;
}

[dir="rtl"] .opal-table tbody td:first-child,
[dir="rtl"] .opal-data-table tbody td:first-child {
  border-radius: 0 var(--radius-row) var(--radius-row) 0 !important;
}

[dir="rtl"] .opal-table tbody td:last-child,
[dir="rtl"] .opal-data-table tbody td:last-child {
  border-radius: var(--radius-row) 0 0 var(--radius-row) !important;
}

/* Progress, tabs and segmented controls */
.progress,
.progress-track,
.progress-bar-wrap,
.storage-progress,
.strength-bar,
.tab-list,
.tabbar,
.segmented-control,
.view-switch,
.filter-tabs,
.module-tabs {
  border-radius: var(--radius-pill) !important;
}

.progress-bar,
.progress-fill,
.strength-bar > span,
.tab-list > *,
.tabbar > *,
.segmented-control > *,
.view-switch > *,
.filter-tabs > *,
.module-tabs > * {
  border-radius: var(--radius-pill) !important;
}

/* Native checkbox/radio and custom toggles */
input[type="checkbox"],
input[type="radio"],
.checkbox-box,
.radio-box,
.toggle-track,
.switch-track,
.switch-control,
.form-check-input {
  border-radius: var(--radius-tiny) !important;
}

html[data-radius="rounded"] input[type="radio"],
html[data-radius="rounded"] .radio-box {
  border-radius: 999px !important;
}

/* Notification dots and small indicators also follow the selected geometry */
.status-dot,
.notification-dot,
.opal-notification-dot,
.has-dot::after,
.notify-item > span,
.live-dot,
.online-dot,
.activity-dot {
  border-radius: var(--radius-circle) !important;
}

/* Images inherit the shape of their owning box */
.company-logo img,
.avatar img,
.opal-avatar img,
.profile-photo-preview img,
.company-logo-preview img,
.preview-image,
.thumbnail,
.file-thumb {
  border-radius: inherit !important;
}

/* Cloud, agenda, PTS, sales, stock, route and communication module components */
.cloud-item,
.cloud-card,
.cloud-preview,
.cloud-upload-row,
.agenda-event,
.agenda-template-item,
.agenda-day,
.pts-permission-card,
.pts-policy-card,
.pts-map-card,
.sales-summary,
.sales-cart,
.stock-filter-card,
.inventory-filter-card,
.route-step-card,
.route-summary-card,
.route-map-card,
.route-stop-card,
.communication-template-card,
.offer-line,
.invoice-line,
.payment-card-preview {
  border-radius: var(--radius-card) !important;
}

/* SweetAlert icon itself follows the design mode instead of remaining permanently circular */
.swal2-icon {
  border-radius: var(--radius-icon) !important;
}


/* Specificity guard: this stylesheet is loaded last and must override legacy module rules. */
html[data-radius] body :is(
  .page-card,.modal-card,.enterprise-modal-card,.enterprise-metric,.stat-card,.inner-card,.opal-table-card,
  .kanban-card,.theme-settings-section,.settings-content-card,.settings-panel-title,.company-card,.opal-topbar,
  .notification-dropdown,.profile-grid-menu,.route-metric,.route-jobs-card,.route-preview-card,.route-filter-card,
  .route-settings-card,.route-location-card,.route-check-card,.account-full-modal,.settings-hub-card,
  [class$="-card"],[class*="-card "],[class$="-panel"],[class*="-panel "],[class$="-tile"],[class*="-tile "]
) {
  border-radius: var(--radius-card) !important;
}

html[data-radius] body :is(
  button,.btn,[role="button"],input[type="button"],input[type="submit"],input[type="reset"],
  .search-button,.topbar-icon-button,.profile-button,.sidebar-edit-button,.opal-table-edit,.opal-page-btn,
  .enterprise-head-actions .btn,.head-actions .btn
) {
  border-radius: var(--radius-button) !important;
}

html[data-radius] body :is(
  input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]),
  select,textarea,.form-control,.form-select,.global-search,.select-wrap select,.table-toolbar input,
  .modal-body input,.modal-body select,.modal-body textarea,.opal-table-search input,
  .enterprise-filter-row input:not([type="checkbox"]):not([type="radio"]),
  .enterprise-filter-row select,.enterprise-form input:not([type="checkbox"]):not([type="radio"]),
  .enterprise-form select,.enterprise-form textarea,.sales-summary input:not([type="checkbox"]):not([type="radio"]),
  .sales-summary select,.sales-summary textarea,.sales-cart-table input:not([type="checkbox"]):not([type="radio"]),
  .cloud-folder-form input
) {
  border-radius: var(--radius-control) !important;
}

html[data-radius] body :is(
  .company-logo,.avatar,.opal-avatar,.enterprise-page-icon,.enterprise-metric-icon,.stat-icon,.metric-icon,
  .nav-icon,.modal-icon,.card-icon,.section-icon,.opal-global-dialog-symbol,.opal-context-icon,
  [class$="-icon"]:not(.o-icon),[class*="-icon "]:not(.o-icon),
  [class$="-avatar"],[class*="-avatar "]
) {
  border-radius: var(--radius-icon) !important;
}

html[data-radius] body :is(
  .badge,.opal-status-badge,.route-location-state,.route-live-badge,.status-pill,.user-status-pill,
  [class$="-badge"],[class*="-badge "],[class$="-pill"],[class*="-pill "],[class$="-chip"],[class*="-chip "],
  [class$="-tag"],[class*="-tag "]
) {
  border-radius: var(--radius-badge) !important;
}

html[data-radius] body :is(
  .modal-card,.modal-card.wide,.enterprise-modal-card,.opal-global-dialog-card,.swal2-popup,.swal2-toast
) {
  border-radius: var(--radius-modal) !important;
}

/* Even mobile full-screen components follow the selected corner mode. */
html[data-radius] body .modal-shell.mobile-full .modal-card,
html[data-radius] body .settings-hub-card,
html[data-radius] body .enterprise-modal-card,
html[data-radius] body .account-full-modal {
  border-radius: var(--radius-modal) !important;
}
