/*
 * SWISO design language for the Frappe desk and web pages.
 * Source: "SWISO Console: design specification" (Console build v0.4.0+78, commit 2623051).
 *
 * Every rule is scoped to :root:not(.swiso-theme-off); the class swiso-theme-off (set from System Settings,
 * "Turn Off SWISO Design") returns the site to Frappe's own look without a deployment.
 * Light and dark are two palettes, not an inversion. Frappe's own variables are mapped onto the tokens so its
 * list, form, report and dialog screens take the language without changes to Frappe, ERPNext or Marley.
 */

/* ---------------------------------------------------------------------------------------------------
 * 1. Tokens
 * ------------------------------------------------------------------------------------------------- */

:root:not(.swiso-theme-off) {
	--sw-surface-base: #ffffff;
	--sw-surface-raised: #ffffff;
	--sw-surface-overlay: #ffffff;
	--sw-surface-sunken: #f7f8fa;

	--sw-border-subtle: rgba(0, 0, 0, 0.06);
	--sw-border-default: rgba(0, 0, 0, 0.1);
	--sw-border-strong: rgba(0, 0, 0, 0.18);
	/* the same borders composited over the raised surface, for places that need an opaque colour */
	--sw-border-subtle-solid: #f0f0f0;
	--sw-border-default-solid: #e6e6e6;
	--sw-border-strong-solid: #d1d1d1;

	--sw-text-primary: #1a1b1e;
	--sw-text-secondary: #484f4d;
	--sw-text-tertiary: #666d6b;
	--sw-text-disabled: #bcbec1;
	--sw-text-inverse: #ffffff;

	--sw-accent: #0b6e5f;
	--sw-accent-hover: #0a5c50;
	--sw-accent-active: #084c42;

	--sw-success: #147a3c;
	--sw-warning: #8a5405;
	--sw-danger: #b91c1c;
	--sw-info: #0369a1;

	--sw-series-0: #526f2a;
	--sw-series-1: #6b7a99;
	--sw-series-2: #4d58cb;
	--sw-series-3: #b82e85;
	--sw-series-4: #8547c2;

	--sw-radius-sm: 6px;
	--sw-radius-md: 12px;
	--sw-radius-lg: 16px;
	--sw-radius-badge: 4px;

	--sw-shadow-medium: 0 1px 2px rgba(0, 0, 0, 0.04);
	--sw-shadow-large: 0 4px 12px rgba(0, 0, 0, 0.06);
	--sw-shadow-tooltip: 0 2px 8px rgba(0, 0, 0, 0.12);
	--sw-shadow-menu: 0 8px 24px rgba(0, 0, 0, 0.12);
	--sw-shadow-modal: 0 24px 48px rgba(0, 0, 0, 0.24);
	--sw-shadow-fullscreen: 0 48px 96px rgba(0, 0, 0, 0.32);

	--sw-duration-fast: 120ms;
	--sw-duration-medium: 200ms;
	--sw-duration-slow: 320ms;
	--sw-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
	--sw-ease-in: cubic-bezier(0.7, 0, 0.84, 0);
	--sw-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);

	--sw-font-latin: "SWISO Inter", "SWISO Inter Fallback", ui-sans-serif, system-ui, sans-serif;
	--sw-font-arabic: "SWISO Plex Arabic", "SWISO Plex Arabic Fallback", ui-sans-serif, system-ui, sans-serif;
	--sw-font-mono: "SWISO Mono", "SWISO Mono Fallback", ui-monospace, SFMono-Regular, Menlo, monospace;
	--sw-font-sans: var(--sw-font-latin);

	/* type scale, Latin (spec section 4) */
	--sw-display-size: 36px; --sw-display-line: 1.1; --sw-display-track: -0.02em;
	--sw-title-size: 24px; --sw-title-line: 1.2; --sw-title-track: -0.01em;
	--sw-heading-size: 18px; --sw-heading-line: 1.3; --sw-heading-track: 0;
	--sw-body-size: 14px; --sw-body-line: 1.5;
	--sw-small-size: 12px; --sw-small-line: 1.4;
	--sw-micro-size: 11px; --sw-micro-line: 1.4; --sw-micro-track: 0.02em;

	color-scheme: light;
}

:root:not(.swiso-theme-off)[data-theme="dark"] {
	--sw-surface-base: #08090a;
	--sw-surface-raised: #101113;
	--sw-surface-overlay: #17181a;
	--sw-surface-sunken: #050506;

	--sw-border-subtle: rgba(255, 255, 255, 0.06);
	--sw-border-default: rgba(255, 255, 255, 0.1);
	--sw-border-strong: rgba(255, 255, 255, 0.18);
	--sw-border-subtle-solid: #1e1f21;
	--sw-border-default-solid: #28292b;
	--sw-border-strong-solid: #3b3c3d;

	--sw-text-primary: #f6f6f7;
	--sw-text-secondary: #b2b8b6;
	--sw-text-tertiary: #8a918f;
	--sw-text-disabled: #3d3f42;
	--sw-text-inverse: #08090a;

	--sw-accent: #3fb9a2;
	--sw-accent-hover: #5cc7b2;
	--sw-accent-active: #34ab95;

	--sw-success: #3fb950;
	--sw-warning: #d29922;
	--sw-danger: #f85149;
	--sw-info: #58a6ff;

	--sw-series-0: #a1c76b;
	--sw-series-1: #a8b8d8;
	--sw-series-2: #8890f2;
	--sw-series-3: #e774bd;
	--sw-series-4: #b889e6;

	--sw-shadow-medium: 0 1px 2px rgba(0, 0, 0, 0.24);
	--sw-shadow-large: 0 4px 12px rgba(0, 0, 0, 0.32);
	--sw-shadow-tooltip: 0 2px 8px rgba(0, 0, 0, 0.4);
	--sw-shadow-menu: 0 8px 24px rgba(0, 0, 0, 0.4);
	--sw-shadow-modal: 0 24px 48px rgba(0, 0, 0, 0.56);
	--sw-shadow-fullscreen: 0 48px 96px rgba(0, 0, 0, 0.64);

	color-scheme: dark;
}

/* Arabic is measured, not matched to the Latin: about 1.1x the size, taller lines, no tracking (spec 4) */
:root:not(.swiso-theme-off)[dir="rtl"] {
	--sw-font-sans: var(--sw-font-arabic);
	--sw-display-size: 40px; --sw-display-line: 1.45; --sw-display-track: 0;
	--sw-title-size: 26px; --sw-title-line: 1.4; --sw-title-track: 0;
	--sw-heading-size: 20px; --sw-heading-line: 1.4;
	--sw-body-size: 16px; --sw-body-line: 1.6;
	--sw-small-size: 13px; --sw-small-line: 1.5;
	--sw-micro-size: 12px; --sw-micro-line: 1.5; --sw-micro-track: 0;
}

@media (prefers-reduced-motion: reduce) {
	:root:not(.swiso-theme-off) {
		--sw-duration-fast: 0ms;
		--sw-duration-medium: 0ms;
		--sw-duration-slow: 0ms;
	}
}

/* status tints: the status colour at 12% over the raised surface, border at 28% (spec 2.5 and Badge) */
:root:not(.swiso-theme-off) {
	--sw-success-tint: color-mix(in srgb, var(--sw-success) 12%, var(--sw-surface-raised));
	--sw-warning-tint: color-mix(in srgb, var(--sw-warning) 12%, var(--sw-surface-raised));
	--sw-danger-tint: color-mix(in srgb, var(--sw-danger) 12%, var(--sw-surface-raised));
	--sw-info-tint: color-mix(in srgb, var(--sw-info) 12%, var(--sw-surface-raised));
	--sw-accent-tint: color-mix(in srgb, var(--sw-accent) 10%, var(--sw-surface-raised));
	--sw-accent-tint-strong: color-mix(in srgb, var(--sw-accent) 16%, var(--sw-surface-raised));
}

/* ---------------------------------------------------------------------------------------------------
 * 2. Frappe variables mapped onto the tokens (applies to both themes: the tokens change, the map doesn't)
 * ------------------------------------------------------------------------------------------------- */

:root:not(.swiso-theme-off) {
	--font-stack: var(--sw-font-sans);
	/* only 400, 500, 600 and 700 are used (spec 3) */
	--weight-regular: 400;
	--weight-medium: 500;
	--weight-semibold: 600;
	--weight-bold: 700;
	--weight-black: 700;

	--primary: var(--sw-accent);
	--primary-color: var(--sw-accent);
	--brand-color: var(--sw-accent);
	--btn-primary: var(--sw-accent);
	--border-primary: var(--sw-accent);
	--progress-bar-bg: var(--sw-accent);
	--checkbox-color: var(--sw-accent);
	--checkbox-gradient: linear-gradient(var(--sw-accent), var(--sw-accent));
	--checkbox-focus-shadow: 0 0 0 2px var(--sw-accent);
	--focus-default: 0 0 0 2px var(--sw-accent);
	--focus-blue: 0 0 0 2px var(--sw-accent);
	--neutral: var(--sw-text-inverse);

	--bg-color: var(--sw-surface-base);
	--fg-color: var(--sw-surface-raised);
	--card-bg: var(--sw-surface-raised);
	--modal-bg: var(--sw-surface-overlay);
	--toast-bg: var(--sw-surface-overlay);
	--popover-bg: var(--sw-surface-overlay);
	--navbar-bg: var(--sw-surface-base);
	--subtle-accent: var(--sw-surface-sunken);
	--subtle-fg: var(--sw-surface-sunken);
	--fg-hover-color: var(--sw-surface-sunken);
	--highlight-color: var(--sw-surface-sunken);
	--control-bg: var(--sw-surface-sunken);
	--control-bg-on-gray: var(--sw-surface-sunken);
	--awesomebar-focus-bg: var(--sw-surface-overlay);
	--awesomplete-hover-bg: var(--sw-surface-sunken);
	--disabled-control-bg: var(--sw-surface-sunken);
	--input-disabled-bg: var(--sw-surface-sunken);
	--placeholder-color: var(--sw-surface-sunken);
	--skeleton-bg: var(--sw-surface-sunken);
	--date-active-bg: var(--sw-accent);
	--date-active-text: var(--sw-text-inverse);
	--date-range-bg: var(--sw-accent-tint);

	--surface-white: var(--sw-surface-raised);
	--surface-modal: var(--sw-surface-overlay);
	--surface-menu-bar: var(--sw-surface-base);
	--surface-cards: var(--sw-surface-raised);
	--surface-selected: var(--sw-accent-tint);
	--surface-gray-1: var(--sw-surface-sunken);
	--surface-gray-2: var(--sw-surface-sunken);

	--border-color: var(--sw-border-default-solid);
	--dark-border-color: var(--sw-border-strong-solid);
	--table-border-color: var(--sw-border-subtle-solid);
	--btn-group-border-color: var(--sw-border-default-solid);
	--sidebar-border-color: var(--sw-border-subtle-solid);
	--divider-color: var(--sw-border-subtle-solid);
	--outline-gray-1: var(--sw-border-subtle-solid);
	--outline-gray-2: var(--sw-border-default-solid);
	--outline-gray-3: var(--sw-border-strong-solid);
	--outline-gray-modals: var(--sw-border-default-solid);
	--shadow-inset: inset 0 -1px 0 var(--sw-border-subtle-solid);

	--heading-color: var(--sw-text-primary);
	--text-neutral: var(--sw-text-primary);
	--text-color: var(--sw-text-primary);
	--text-muted: var(--sw-text-secondary);
	--text-light: var(--sw-text-tertiary);
	--disabled-text-color: var(--sw-text-disabled);
	--ink-gray-9: var(--sw-text-primary);
	--ink-gray-8: var(--sw-text-primary);
	--ink-gray-7: var(--sw-text-secondary);
	--ink-gray-6: var(--sw-text-secondary);
	--ink-gray-5: var(--sw-text-tertiary);
	--icon-stroke: var(--sw-text-secondary);

	--btn-default-bg: transparent;
	--btn-default-hover-bg: var(--sw-surface-sunken);
	--btn-ghost-hover-bg: var(--sw-surface-sunken);
	--sidebar-select-color: var(--sw-accent-tint);
	--sidebar-hover-color: var(--sw-surface-sunken);
	--sidebar-active-color: var(--sw-accent-tint);
	--sidebar-width: 240px;

	--scrollbar-thumb-color: var(--sw-border-strong-solid);
	--scrollbar-track-color: transparent;

	/* status colours behind Frappe's indicator pills and alerts: always the colour with its word */
	--bg-green: var(--sw-success-tint);        --text-on-green: var(--sw-success);
	--bg-red: var(--sw-danger-tint);           --text-on-red: var(--sw-danger);
	--bg-orange: var(--sw-warning-tint);       --text-on-orange: var(--sw-warning);
	--bg-yellow: var(--sw-warning-tint);       --text-on-yellow: var(--sw-warning);
	--bg-blue: var(--sw-info-tint);            --text-on-blue: var(--sw-info);
	--bg-light-blue: var(--sw-info-tint);      --text-on-light-blue: var(--sw-info);
	--bg-dark-blue: var(--sw-info-tint);       --text-on-dark-blue: var(--sw-info);
	--bg-cyan: var(--sw-info-tint);            --text-on-cyan: var(--sw-info);
	--bg-gray: var(--sw-surface-sunken);       --text-on-gray: var(--sw-text-secondary);
	--bg-grey: var(--sw-surface-sunken);       --text-on-grey: var(--sw-text-secondary);
	--bg-light-gray: var(--sw-surface-sunken); --text-on-light-gray: var(--sw-text-secondary);
	--bg-dark-gray: var(--sw-surface-sunken);  --text-on-dark-gray: var(--sw-text-primary);
	--bg-darkgrey: var(--sw-surface-sunken);   --text-on-darkgrey: var(--sw-text-primary);
	--bg-purple: color-mix(in srgb, var(--sw-series-4) 12%, var(--sw-surface-raised)); --text-on-purple: var(--sw-series-4);
	--bg-pink: color-mix(in srgb, var(--sw-series-3) 12%, var(--sw-surface-raised));   --text-on-pink: var(--sw-series-3);
	--alert-text-danger: var(--sw-danger);   --alert-bg-danger: var(--sw-danger-tint);
	--alert-text-warning: var(--sw-warning); --alert-bg-warning: var(--sw-warning-tint);
	--alert-text-info: var(--sw-info);       --alert-bg-info: var(--sw-info-tint);
	--alert-text-success: var(--sw-success); --alert-bg-success: var(--sw-success-tint);
	--error-bg: var(--sw-danger-tint);
	--error-border: var(--sw-danger);

	--border-radius-tiny: var(--sw-radius-badge);
	--border-radius-sm: var(--sw-radius-sm);
	--border-radius: var(--sw-radius-sm);
	--border-radius-md: var(--sw-radius-md);
	--border-radius-lg: var(--sw-radius-md);
	--border-radius-xl: var(--sw-radius-lg);

	--card-shadow: var(--sw-shadow-medium);
	--modal-shadow: var(--sw-shadow-modal);
	--btn-shadow: none;
	--shadow-xs: none;
	--shadow-sm: var(--sw-shadow-medium);
	--shadow-base: var(--sw-shadow-medium);
	--shadow-md: var(--sw-shadow-large);
	--shadow-lg: var(--sw-shadow-menu);
	--shadow-xl: var(--sw-shadow-menu);
	--shadow-2xl: var(--sw-shadow-modal);
	--custom-shadow-sm: var(--sw-shadow-medium);
	--drop-shadow: var(--sw-shadow-medium);
}

/* Frappe's dark greys, re-based on the dark palette so components that read them directly match */
:root:not(.swiso-theme-off)[data-theme="dark"] {
	--gray-900: #101113;
	--gray-800: #17181a;
	--gray-700: #28292b;
	--gray-600: #3b3c3d;
}

/* Arabic sizes for Frappe's own scale (spec 4: Arabic about 1.1x) */
:root:not(.swiso-theme-off)[dir="rtl"] {
	--text-tiny: 12px;
	--text-2xs: 12px;
	--text-xs: 13px;
	--text-sm: 14px;
	--text-md: 16px;
	--text-base: 16px;
	--text-lg: 18px;
	--text-xl: 20px;
	--text-2xl: 22px;
	--text-3xl: 26px;
	--text-4xl: 28px;
	--text-5xl: 30px;
	--text-6xl: 36px;
	--text-7xl: 44px;
	--text-line-height-3xl: 145%;
	--text-line-height-4xl: 160%;
	--text-line-height-7xl: 150%;
	--text-line-height-12xl: 145%;
	--text-line-height-14xl: 145%;
	--para-line-height-2-xs: 170%;
	--para-line-height-sm: 160%;
	--para-line-height-2xl: 155%;
	--para-line-height-3xl: 150%;
}

/* ---------------------------------------------------------------------------------------------------
 * 3. Base
 * ------------------------------------------------------------------------------------------------- */

:root:not(.swiso-theme-off) body {
	font-family: var(--sw-font-sans);
	font-size: var(--sw-body-size);
	background-color: var(--sw-surface-base);
	color: var(--sw-text-primary);
	-webkit-font-smoothing: antialiased;
}
:root:not(.swiso-theme-off)[dir="rtl"] body { line-height: var(--sw-body-line); }
/* tracking: 0 for body text (spec 4); Frappe's own tracking is removed. Arabic: none at any level (spec 4.3) */
:root:not(.swiso-theme-off) body * { letter-spacing: 0 !important; }
:root:not(.swiso-theme-off)[dir="ltr"] .sw-micro,
:root:not(.swiso-theme-off)[dir="ltr"] .sw-table th,
:root:not(.swiso-theme-off)[dir="ltr"] .sw-badge,
:root:not(.swiso-theme-off)[dir="ltr"] .frappe-list .list-row-head .list-row-col { letter-spacing: 0.02em !important; }
:root:not(.swiso-theme-off)[dir="ltr"] .sw-display { letter-spacing: -0.02em !important; }
:root:not(.swiso-theme-off)[dir="ltr"] .sw-title,
:root:not(.swiso-theme-off)[dir="ltr"] .page-head .title-text { letter-spacing: -0.01em !important; }

:root:not(.swiso-theme-off) code,
:root:not(.swiso-theme-off) kbd,
:root:not(.swiso-theme-off) pre,
:root:not(.swiso-theme-off) .sw-mono { font-family: var(--sw-font-mono); }

:root:not(.swiso-theme-off) ::selection { background: var(--sw-accent-tint-strong); }

/* keyboard focus only: 2px accent outline, offset 2px */
:root:not(.swiso-theme-off) :focus-visible { outline: 2px solid var(--sw-accent); outline-offset: 2px; }
:root:not(.swiso-theme-off) .btn:focus,
:root:not(.swiso-theme-off) .btn.focus { box-shadow: none; }

/* type classes for SWISO pages */
:root:not(.swiso-theme-off) .sw-display { font-size: var(--sw-display-size); line-height: var(--sw-display-line); font-weight: 700; letter-spacing: var(--sw-display-track); font-variant-numeric: tabular-nums; }
:root:not(.swiso-theme-off) .sw-title { font-size: var(--sw-title-size); line-height: var(--sw-title-line); font-weight: 600; letter-spacing: var(--sw-title-track); }
:root:not(.swiso-theme-off) .sw-heading { font-size: var(--sw-heading-size); line-height: var(--sw-heading-line); font-weight: 600; }
:root:not(.swiso-theme-off) .sw-body { font-size: var(--sw-body-size); line-height: var(--sw-body-line); }
:root:not(.swiso-theme-off) .sw-small { font-size: var(--sw-small-size); line-height: var(--sw-small-line); }
:root:not(.swiso-theme-off) .sw-micro { font-size: var(--sw-micro-size); line-height: var(--sw-micro-line); font-weight: 500; letter-spacing: var(--sw-micro-track); text-transform: uppercase; }
:root:not(.swiso-theme-off) .sw-num { font-variant-numeric: tabular-nums; }
:root:not(.swiso-theme-off) .sw-ltr { direction: ltr; unicode-bidi: isolate; display: inline-block; }

/* ---------------------------------------------------------------------------------------------------
 * 4. Frappe shell: sidebar, page head
 * ------------------------------------------------------------------------------------------------- */

:root:not(.swiso-theme-off) .body-sidebar,
:root:not(.swiso-theme-off) .body-sidebar-container {
	background: var(--sw-surface-base);
	border-inline-end-color: var(--sw-border-subtle-solid);
}
:root:not(.swiso-theme-off) .body-sidebar .standard-sidebar-item,
:root:not(.swiso-theme-off) .body-sidebar .sidebar-item-container > .item-anchor,
:root:not(.swiso-theme-off) .body-sidebar a.item-anchor {
	color: var(--sw-text-secondary);
	border-radius: var(--sw-radius-sm);
	transition: background-color var(--sw-duration-fast) var(--sw-ease-out), color var(--sw-duration-fast) var(--sw-ease-out);
}
:root:not(.swiso-theme-off) .body-sidebar .sidebar-item-label { color: inherit; }
:root:not(.swiso-theme-off) .body-sidebar a.item-anchor:hover,
:root:not(.swiso-theme-off) .body-sidebar .standard-sidebar-item:hover { color: var(--sw-text-primary); }
/* selected: the accent as text on a 10% accent tint (spec, Sidebar item) */
:root:not(.swiso-theme-off) .active-sidebar,
:root:not(.swiso-theme-off) .body-sidebar .selected {
	background: var(--sw-accent-tint) !important;
	box-shadow: none !important;
	border-radius: var(--sw-radius-sm);
	--icon-stroke: var(--sw-accent);
}
:root:not(.swiso-theme-off) .active-sidebar,
:root:not(.swiso-theme-off) .active-sidebar *,
:root:not(.swiso-theme-off) .body-sidebar .selected,
:root:not(.swiso-theme-off) .body-sidebar .selected * { color: var(--sw-accent) !important; }

:root:not(.swiso-theme-off) .page-head {
	background: var(--sw-surface-base);
	border-bottom: 1px solid var(--sw-border-subtle-solid);
}
:root:not(.swiso-theme-off) .page-head .page-title .title-text,
:root:not(.swiso-theme-off) .page-head .title-text {
	font-weight: 600;
	letter-spacing: var(--sw-title-track);
	color: var(--sw-text-primary);
}

/* ---------------------------------------------------------------------------------------------------
 * 5. Components
 * ------------------------------------------------------------------------------------------------- */

/* Button: 6px radius, 1px border, weight 500 (spec, Button) */
:root:not(.swiso-theme-off) .btn {
	border-radius: var(--sw-radius-sm);
	font-weight: 500;
	transition: background-color var(--sw-duration-fast) var(--sw-ease-out), border-color var(--sw-duration-fast) var(--sw-ease-out), color var(--sw-duration-fast) var(--sw-ease-out);
}
:root:not(.swiso-theme-off) .btn.btn-primary {
	background-color: var(--sw-accent);
	border: 1px solid transparent;
	color: var(--sw-text-inverse);
	--icon-stroke: currentColor;
	--icon-fill-bg: var(--sw-accent);
}
:root:not(.swiso-theme-off) .btn.btn-primary:hover { background-color: var(--sw-accent-hover); color: var(--sw-text-inverse); }
:root:not(.swiso-theme-off) .btn.btn-primary:active,
:root:not(.swiso-theme-off) .btn.btn-primary.active {
	background-color: var(--sw-accent-active) !important;
	color: var(--sw-text-inverse) !important;
}
:root:not(.swiso-theme-off) .btn.btn-default,
:root:not(.swiso-theme-off) .btn.btn-secondary {
	background-color: transparent;
	border: 1px solid var(--sw-border-default-solid);
	color: var(--sw-text-primary);
	box-shadow: none;
}
:root:not(.swiso-theme-off) .btn.btn-default:hover,
:root:not(.swiso-theme-off) .btn.btn-secondary:hover { border-color: var(--sw-border-strong-solid); background-color: transparent; }
:root:not(.swiso-theme-off) .btn.btn-default:active,
:root:not(.swiso-theme-off) .btn.btn-default.active,
:root:not(.swiso-theme-off) .btn.btn-secondary:active { background-color: var(--sw-surface-sunken); }
:root:not(.swiso-theme-off) .btn.btn-ghost,
:root:not(.swiso-theme-off) .btn.btn-link-default { color: var(--sw-text-secondary); }
:root:not(.swiso-theme-off) .btn.btn-ghost:hover { background-color: var(--sw-surface-sunken); color: var(--sw-text-primary); }
:root:not(.swiso-theme-off) .btn.btn-danger { background-color: var(--sw-danger); color: var(--sw-text-inverse); border: 1px solid transparent; }
:root:not(.swiso-theme-off) .btn:disabled,
:root:not(.swiso-theme-off) .btn.disabled { opacity: 0.5; }
@media (max-width: 767px) {
	:root:not(.swiso-theme-off) .btn.btn-icon,
	:root:not(.swiso-theme-off) .page-head .btn.icon-btn { min-width: 44px; min-height: 44px; }
}

/* Input: sunken fill, 1px default border, 6px radius; focus: strong border and the accent outline */
:root:not(.swiso-theme-off) .form-control,
:root:not(.swiso-theme-off) .frappe-control input:not([type="checkbox"]):not([type="radio"]),
:root:not(.swiso-theme-off) .frappe-control select,
:root:not(.swiso-theme-off) .frappe-control textarea {
	background-color: var(--sw-surface-sunken);
	border: 1px solid var(--sw-border-default-solid);
	border-radius: var(--sw-radius-sm);
	color: var(--sw-text-primary);
	transition: border-color var(--sw-duration-fast) var(--sw-ease-out);
}
:root:not(.swiso-theme-off) .form-control::placeholder { color: var(--sw-text-tertiary); }
:root:not(.swiso-theme-off) .form-control:focus,
:root:not(.swiso-theme-off) .frappe-control input:focus,
:root:not(.swiso-theme-off) .frappe-control select:focus,
:root:not(.swiso-theme-off) .frappe-control textarea:focus {
	border-color: var(--sw-border-strong-solid);
	box-shadow: 0 0 0 2px var(--sw-accent);
	background-color: var(--sw-surface-sunken);
}
:root:not(.swiso-theme-off) .has-error .form-control,
:root:not(.swiso-theme-off) .has-error input,
:root:not(.swiso-theme-off) .frappe-control.has-error input { border-color: var(--sw-danger); }
:root:not(.swiso-theme-off) .like-disabled-input,
:root:not(.swiso-theme-off) .form-control:disabled { background-color: var(--sw-surface-sunken); color: var(--sw-text-secondary); }
:root:not(.swiso-theme-off) .control-label,
:root:not(.swiso-theme-off) .frappe-control .control-label { color: var(--sw-text-secondary); font-weight: 500; }
:root:not(.swiso-theme-off) .help-box,
:root:not(.swiso-theme-off) .frappe-control .help-box { color: var(--sw-text-secondary); }
:root:not(.swiso-theme-off) input[type="checkbox"]:checked { background-color: var(--sw-accent); border-color: var(--sw-accent); }

/* links inside values point somewhere: the accent */
:root:not(.swiso-theme-off) .control-value a,
:root:not(.swiso-theme-off) .like-disabled-input a,
:root:not(.swiso-theme-off) .frappe-control .link-btn,
:root:not(.swiso-theme-off) .timeline-content a,
:root:not(.swiso-theme-off) .sw-link { color: var(--sw-accent); }

/* Card (medium material) */
:root:not(.swiso-theme-off) .frappe-card,
:root:not(.swiso-theme-off) .widget,
:root:not(.swiso-theme-off) .number-widget-box,
:root:not(.swiso-theme-off) .dashboard-widget-box,
:root:not(.swiso-theme-off) .form-dashboard-section .section-body > .row > div > .card,
:root:not(.swiso-theme-off) .sw-card {
	background: var(--sw-surface-raised);
	border: 1px solid var(--sw-border-default-solid);
	border-radius: var(--sw-radius-md);
	box-shadow: var(--sw-shadow-medium);
}

/* Form layout: sections sit on the raised surface divided by subtle rules */
:root:not(.swiso-theme-off) .form-layout,
:root:not(.swiso-theme-off) .form-page { background: var(--sw-surface-raised); }
:root:not(.swiso-theme-off) .layout-main-section-wrapper .form-layout,
:root:not(.swiso-theme-off) .layout-main-section.frappe-card {
	border: 1px solid var(--sw-border-default-solid);
	border-radius: var(--sw-radius-md);
	box-shadow: var(--sw-shadow-medium);
}
:root:not(.swiso-theme-off) .form-section .section-head { font-weight: 600; color: var(--sw-text-primary); }
:root:not(.swiso-theme-off) .form-section,
:root:not(.swiso-theme-off) .form-tabs-list { border-color: var(--sw-border-subtle-solid) !important; }
:root:not(.swiso-theme-off) .form-tabs .nav-link.active { color: var(--sw-accent); border-bottom-color: var(--sw-accent); }

/* Dialogs (modal material), menus (menu material), tooltips */
:root:not(.swiso-theme-off) .modal-content {
	background: var(--sw-surface-overlay);
	border: 1px solid var(--sw-border-default-solid);
	border-radius: var(--sw-radius-md);
	box-shadow: var(--sw-shadow-modal);
}
:root:not(.swiso-theme-off) .modal-header,
:root:not(.swiso-theme-off) .modal-footer { border-color: var(--sw-border-subtle-solid); }
:root:not(.swiso-theme-off) .modal-title { font-weight: 600; }
:root:not(.swiso-theme-off) .dropdown-menu,
:root:not(.swiso-theme-off) .awesomplete > ul,
:root:not(.swiso-theme-off) .popover {
	background: var(--sw-surface-overlay);
	border: 1px solid var(--sw-border-default-solid);
	border-radius: var(--sw-radius-md);
	box-shadow: var(--sw-shadow-menu);
}
:root:not(.swiso-theme-off) .dropdown-item { border-radius: var(--sw-radius-sm); color: var(--sw-text-primary); }
:root:not(.swiso-theme-off) .dropdown-item:hover,
:root:not(.swiso-theme-off) .dropdown-item:focus { background: var(--sw-surface-sunken); }
:root:not(.swiso-theme-off) .tooltip-inner {
	background: var(--sw-surface-overlay);
	color: var(--sw-text-primary);
	border-radius: var(--sw-radius-sm);
	box-shadow: var(--sw-shadow-tooltip);
}
:root:not(.swiso-theme-off) .modal-backdrop.show { opacity: 0.4; }

/* Badge: status colour as text on its 12% tint, 28% border, 4px radius, 6px dot (spec, Badge) */
:root:not(.swiso-theme-off) .indicator-pill,
:root:not(.swiso-theme-off) .indicator-pill-right {
	border-radius: var(--sw-radius-badge);
	border: 1px solid color-mix(in srgb, currentColor 28%, transparent);
	font-weight: 500;
	height: auto;
	min-height: 22px;
	white-space: nowrap;
}
:root:not(.swiso-theme-off)[dir="rtl"] .indicator-pill,
:root:not(.swiso-theme-off)[dir="rtl"] .indicator-pill-right { min-height: 28px; }
:root:not(.swiso-theme-off) .indicator-pill.gray,
:root:not(.swiso-theme-off) .indicator-pill.grey,
:root:not(.swiso-theme-off) .indicator-pill.light-gray,
:root:not(.swiso-theme-off) .indicator-pill.darkgrey {
	border-color: var(--sw-border-subtle-solid);
}
:root:not(.swiso-theme-off) .indicator-pill:not(.no-indicator-dot)::before { margin-inline-end: 6px; margin-right: 0; }
:root:not(.swiso-theme-off)[dir="ltr"] .indicator-pill:not(.no-indicator-dot)::before { margin-right: 6px; }
:root:not(.swiso-theme-off) .badge { border-radius: var(--sw-radius-badge); }

/* Alerts carry the status with its word */
:root:not(.swiso-theme-off) .alert { border-radius: var(--sw-radius-sm); border: 1px solid color-mix(in srgb, currentColor 28%, transparent); }

/* Table: list view, report view, grids */
:root:not(.swiso-theme-off) .frappe-list,
:root:not(.swiso-theme-off) .report-wrapper,
:root:not(.swiso-theme-off) .frappe-list .result {
	background: var(--sw-surface-raised);
}
:root:not(.swiso-theme-off) .frappe-list .list-row-head,
:root:not(.swiso-theme-off) .frappe-list .list-row-head .list-row-col,
:root:not(.swiso-theme-off) .frappe-list .list-row-head .list-subject {
	color: var(--sw-text-tertiary);
	font-weight: 400;
	font-size: var(--sw-micro-size);
	letter-spacing: var(--sw-micro-track);
	text-transform: uppercase;
	background: var(--sw-surface-raised);
}
:root:not(.swiso-theme-off) .frappe-list .list-row-container { border-color: var(--sw-border-subtle-solid); }
:root:not(.swiso-theme-off) .frappe-list .list-row:hover,
:root:not(.swiso-theme-off) .frappe-list .list-row-container:hover .list-row { background: var(--sw-surface-sunken); }
:root:not(.swiso-theme-off) .frappe-list .list-row .list-row-col,
:root:not(.swiso-theme-off) .dt-cell__content,
:root:not(.swiso-theme-off) .grid-static-col,
:root:not(.swiso-theme-off) .frappe-list .list-count { font-variant-numeric: tabular-nums; }
:root:not(.swiso-theme-off) .frappe-list .list-row-container.selected .list-row,
:root:not(.swiso-theme-off) .dt-row--highlight .dt-cell { background: var(--sw-accent-tint); }
:root:not(.swiso-theme-off) .dt-cell--header,
:root:not(.swiso-theme-off) .dt-cell--header .dt-cell__content {
	color: var(--sw-text-tertiary);
	background: var(--sw-surface-raised);
	font-weight: 400;
}
:root:not(.swiso-theme-off) .dt-cell,
:root:not(.swiso-theme-off) .dt-scrollable,
:root:not(.swiso-theme-off) .datatable { border-color: var(--sw-border-subtle-solid); background: var(--sw-surface-raised); color: var(--sw-text-primary); }
:root:not(.swiso-theme-off) .dt-row:hover .dt-cell { background: var(--sw-surface-sunken); }
:root:not(.swiso-theme-off) .form-grid,
:root:not(.swiso-theme-off) .form-grid-container { border-color: var(--sw-border-default-solid); border-radius: var(--sw-radius-md); }
:root:not(.swiso-theme-off) .form-grid .grid-heading-row { background: var(--sw-surface-raised); color: var(--sw-text-tertiary); border-color: var(--sw-border-subtle-solid); }
:root:not(.swiso-theme-off) .form-grid .grid-row { border-color: var(--sw-border-subtle-solid); }

/* Filters, search, tags */
:root:not(.swiso-theme-off) .filter-selector .btn,
:root:not(.swiso-theme-off) .sort-selector .btn { border-color: var(--sw-border-default-solid); }
:root:not(.swiso-theme-off) .standard-filter-section .form-control { background: var(--sw-surface-sunken); }
:root:not(.swiso-theme-off) .tag-pill,
:root:not(.swiso-theme-off) .filter-pill {
	background: var(--sw-surface-sunken);
	color: var(--sw-text-secondary);
	border: 1px solid var(--sw-border-subtle-solid);
	border-radius: var(--sw-radius-badge);
}

/* Timeline and comments */
:root:not(.swiso-theme-off) .timeline-item .timeline-content,
:root:not(.swiso-theme-off) .comment-box .frappe-control .ql-editor { color: var(--sw-text-primary); }
:root:not(.swiso-theme-off) .timeline-dot { border-color: var(--sw-border-strong-solid); background: var(--sw-surface-raised); }

/* Progress bars */
:root:not(.swiso-theme-off) .progress { background: var(--sw-surface-sunken); border-radius: 999px; }
:root:not(.swiso-theme-off) .progress-bar { background: var(--sw-accent); }

/* Charts: axis labels 11px (spec 4), series colours supplied per chart */
:root:not(.swiso-theme-off) .frappe-chart .chart-label,
:root:not(.swiso-theme-off) .frappe-chart .axis text,
:root:not(.swiso-theme-off) .frappe-chart text { fill: var(--sw-text-tertiary); font-size: 11px; font-family: var(--sw-font-sans); }
:root:not(.swiso-theme-off) .frappe-chart .line-horizontal,
:root:not(.swiso-theme-off) .frappe-chart .line-vertical { stroke: var(--sw-border-subtle-solid); }
:root:not(.swiso-theme-off) .graph-svg-tip { background: var(--sw-surface-overlay); color: var(--sw-text-primary); box-shadow: var(--sw-shadow-tooltip); border-radius: var(--sw-radius-sm); font-size: 12px; }
:root:not(.swiso-theme-off) .graph-svg-tip .title,
:root:not(.swiso-theme-off) .graph-svg-tip ul { color: var(--sw-text-primary); }
:root:not(.swiso-theme-off) .graph-svg-tip.comparison li { color: var(--sw-text-secondary); }
:root:not(.swiso-theme-off) .graph-svg-tip .svg-pointer { border-top-color: var(--sw-surface-overlay); }

/* Workspace and desktop */
:root:not(.swiso-theme-off) .desk-page,
:root:not(.swiso-theme-off) .layout-main,
:root:not(.swiso-theme-off) .page-container { background: var(--sw-surface-base); }
:root:not(.swiso-theme-off) .widget .widget-title,
:root:not(.swiso-theme-off) .ce-header { color: var(--sw-text-primary); font-weight: 600; }
:root:not(.swiso-theme-off) .shortcut-widget-box:hover,
:root:not(.swiso-theme-off) .links-widget-box .link-item:hover { background: var(--sw-surface-sunken); }

/* Toasts */
:root:not(.swiso-theme-off) .desk-alert {
	background: var(--sw-surface-overlay);
	border: 1px solid var(--sw-border-default-solid);
	border-radius: var(--sw-radius-md);
	box-shadow: var(--sw-shadow-menu);
	color: var(--sw-text-primary);
}

/* Motion: colour changes on hover and focus are fast */
:root:not(.swiso-theme-off) a,
:root:not(.swiso-theme-off) .list-row,
:root:not(.swiso-theme-off) .dropdown-item { transition: background-color var(--sw-duration-fast) var(--sw-ease-out), color var(--sw-duration-fast) var(--sw-ease-out); }

/* ---------------------------------------------------------------------------------------------------
 * 6. SWISO page components (Command Centre, dashboards, Ask the Hospital, Theatre Board)
 * ------------------------------------------------------------------------------------------------- */

:root:not(.swiso-theme-off) .sw-page { max-width: 1280px; margin: 0 auto; padding: 24px 0 32px; color: var(--sw-text-primary); }
:root:not(.swiso-theme-off) .sw-header { padding-bottom: 20px; margin-bottom: 32px; border-bottom: 1px solid var(--sw-border-subtle-solid); }
:root:not(.swiso-theme-off) .sw-overline { font-size: var(--sw-small-size); line-height: var(--sw-small-line); color: var(--sw-text-secondary); }
:root:not(.swiso-theme-off) .sw-header h1 { margin: 4px 0 6px; }
:root:not(.swiso-theme-off) .sw-lead { font-size: var(--sw-body-size); line-height: var(--sw-body-line); color: var(--sw-text-secondary); max-width: 42rem; }
:root:not(.swiso-theme-off) .sw-block {
	background: var(--sw-surface-raised);
	border: 1px solid var(--sw-border-default-solid);
	border-radius: var(--sw-radius-md);
	box-shadow: var(--sw-shadow-medium);
	padding: 24px;
	display: flex;
	flex-direction: column;
	gap: 20px;
	min-width: 0;
}
@media (max-width: 639px) { :root:not(.swiso-theme-off) .sw-block { padding: 16px; } }
:root:not(.swiso-theme-off) .sw-block-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
:root:not(.swiso-theme-off) .sw-block-head h2 { margin: 0; font-size: var(--sw-heading-size); line-height: var(--sw-heading-line); font-weight: 600; }
:root:not(.swiso-theme-off) .sw-block-note { font-size: var(--sw-small-size); color: var(--sw-text-secondary); }
:root:not(.swiso-theme-off) .sw-stack { display: flex; flex-direction: column; gap: 32px; }
:root:not(.swiso-theme-off) .sw-grid { display: grid; gap: 24px; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 1024px) {
	:root:not(.swiso-theme-off) .sw-grid-8-4 { grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); }
	:root:not(.swiso-theme-off) .sw-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	:root:not(.swiso-theme-off) .sw-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (min-width: 768px) and (max-width: 1023px) {
	:root:not(.swiso-theme-off) .sw-grid-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
/* a headline figure and its unit */
:root:not(.swiso-theme-off) .sw-figure { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
:root:not(.swiso-theme-off) .sw-figure-unit { font-size: var(--sw-body-size); color: var(--sw-text-secondary); }
/* Caveat: small, secondary, with an info glyph; sits at the bottom of its card (spec, Caveat) */
:root:not(.swiso-theme-off) .sw-caveat {
	display: flex; gap: 6px; align-items: flex-start;
	font-size: var(--sw-small-size); line-height: var(--sw-small-line); color: var(--sw-text-secondary);
	margin-top: auto;
}
:root:not(.swiso-theme-off) .sw-caveat svg { flex: none; width: 13px; height: 13px; margin-top: 0.2em; }
/* Needs-action row */
:root:not(.swiso-theme-off) .sw-act { display: grid; grid-template-columns: 64px 4px minmax(0, 1fr) auto; gap: 16px; align-items: center; padding: 16px 0; border-top: 1px solid var(--sw-border-subtle-solid); }
:root:not(.swiso-theme-off) .sw-act:first-child { border-top: 0; padding-top: 0; }
:root:not(.swiso-theme-off) .sw-act-count { font-size: var(--sw-title-size); line-height: var(--sw-title-line); font-weight: 600; text-align: center; font-variant-numeric: tabular-nums; }
:root:not(.swiso-theme-off) .sw-act-rule { align-self: stretch; border-radius: 2px; background: var(--sw-warning); min-height: 40px; }
:root:not(.swiso-theme-off) .sw-act-rule.danger { background: var(--sw-danger); }
:root:not(.swiso-theme-off) .sw-act-rule.info { background: var(--sw-info); }
:root:not(.swiso-theme-off) .sw-act-rule.neutral { background: var(--sw-border-strong-solid); }
:root:not(.swiso-theme-off) .sw-act-what { font-weight: 600; font-size: var(--sw-body-size); line-height: var(--sw-body-line); }
:root:not(.swiso-theme-off) .sw-act-why { font-size: var(--sw-small-size); line-height: var(--sw-small-line); color: var(--sw-text-secondary); }
:root:not(.swiso-theme-off) .sw-link { font-weight: 500; white-space: nowrap; text-decoration: none; }
:root:not(.swiso-theme-off) .sw-link:hover { color: var(--sw-accent-hover); text-decoration: underline; }
:root:not(.swiso-theme-off) .sw-quiet { font-size: var(--sw-small-size); line-height: var(--sw-small-line); color: var(--sw-text-secondary); display: flex; flex-direction: column; gap: 6px; padding-top: 16px; border-top: 1px solid var(--sw-border-subtle-solid); }
@media (max-width: 639px) {
	:root:not(.swiso-theme-off) .sw-act { grid-template-columns: 48px 4px minmax(0, 1fr); }
	:root:not(.swiso-theme-off) .sw-act .sw-link { grid-column: 3; }
}
/* Proportion bar */
:root:not(.swiso-theme-off) .sw-proportion { display: flex; gap: 1px; height: 12px; border-radius: 999px; overflow: hidden; background: var(--sw-surface-sunken); }
:root:not(.swiso-theme-off) .sw-proportion > span { display: block; min-width: 2px; }
:root:not(.swiso-theme-off) .sw-legend { display: grid; grid-template-columns: repeat(auto-fill, minmax(12rem, 1fr)); gap: 8px 24px; }
:root:not(.swiso-theme-off) .sw-legend-row { display: grid; grid-template-columns: 8px minmax(0, 1fr) auto 3.2em; gap: 8px; align-items: center; font-size: var(--sw-small-size); line-height: var(--sw-small-line); }
:root:not(.swiso-theme-off) .sw-legend-row i { width: 8px; height: 8px; border-radius: 50%; }
:root:not(.swiso-theme-off) .sw-legend-row .l { color: var(--sw-text-secondary); }
:root:not(.swiso-theme-off) .sw-legend-row b { font-weight: 600; font-variant-numeric: tabular-nums; }
:root:not(.swiso-theme-off) .sw-legend-row .p { color: var(--sw-text-secondary); text-align: end; font-variant-numeric: tabular-nums; }
:root:not(.swiso-theme-off) .sw-legend-row.empty .l,
:root:not(.swiso-theme-off) .sw-legend-row.empty b,
:root:not(.swiso-theme-off) .sw-legend-row.empty .p { color: var(--sw-text-tertiary); font-weight: 400; }
/* Bar list (one neutral hue at 0.4 / 0.7 / 1.0 for ordered, non-evaluative scales; status colours only for status) */
:root:not(.swiso-theme-off) .sw-bars { display: flex; flex-direction: column; gap: 10px; }
:root:not(.swiso-theme-off) .sw-bar-row { display: grid; grid-template-columns: minmax(6rem, 1fr) minmax(0, 1.6fr) 3.5em; gap: 12px; align-items: center; font-size: var(--sw-small-size); line-height: var(--sw-small-line); }
:root:not(.swiso-theme-off) .sw-bar-row .l { color: var(--sw-text-secondary); }
:root:not(.swiso-theme-off) .sw-bar-row b { text-align: end; font-weight: 600; font-variant-numeric: tabular-nums; }
:root:not(.swiso-theme-off) .sw-track { height: 8px; border-radius: 999px; background: var(--sw-surface-sunken); overflow: hidden; }
:root:not(.swiso-theme-off) .sw-track > span { display: block; height: 100%; border-radius: 999px; background: var(--sw-text-secondary); }
/* Status badge for SWISO pages */
:root:not(.swiso-theme-off) .sw-badge {
	display: inline-flex; align-items: center; gap: 6px; white-space: nowrap;
	padding: 2px 8px; border-radius: var(--sw-radius-badge); border: 1px solid var(--sw-border-subtle-solid);
	background: var(--sw-surface-sunken); color: var(--sw-text-secondary);
	font-size: var(--sw-micro-size); line-height: var(--sw-micro-line); font-weight: 500;
}
:root:not(.swiso-theme-off) .sw-badge::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
:root:not(.swiso-theme-off) .sw-badge.plain::before { display: none; }
:root:not(.swiso-theme-off) .sw-badge.success { color: var(--sw-success); background: var(--sw-success-tint); border-color: color-mix(in srgb, var(--sw-success) 28%, transparent); }
:root:not(.swiso-theme-off) .sw-badge.warning { color: var(--sw-warning); background: var(--sw-warning-tint); border-color: color-mix(in srgb, var(--sw-warning) 28%, transparent); }
:root:not(.swiso-theme-off) .sw-badge.danger { color: var(--sw-danger); background: var(--sw-danger-tint); border-color: color-mix(in srgb, var(--sw-danger) 28%, transparent); }
:root:not(.swiso-theme-off) .sw-badge.info { color: var(--sw-info); background: var(--sw-info-tint); border-color: color-mix(in srgb, var(--sw-info) 28%, transparent); }
/* Table for SWISO pages */
:root:not(.swiso-theme-off) .sw-table-wrap { overflow-x: auto; border: 1px solid var(--sw-border-default-solid); border-radius: var(--sw-radius-md); position: relative; }
:root:not(.swiso-theme-off) .sw-table { width: 100%; border-collapse: collapse; }
:root:not(.swiso-theme-off) .sw-table th { font-size: var(--sw-micro-size); line-height: var(--sw-micro-line); letter-spacing: var(--sw-micro-track); text-transform: uppercase; font-weight: 400; color: var(--sw-text-tertiary); padding: 12px 16px; text-align: start; white-space: nowrap; }
:root:not(.swiso-theme-off) .sw-table td { font-size: var(--sw-body-size); line-height: var(--sw-body-line); padding: 12px 16px; border-top: 1px solid var(--sw-border-subtle-solid); white-space: nowrap; }
:root:not(.swiso-theme-off) .sw-table tbody tr:hover td { background: var(--sw-surface-sunken); }
:root:not(.swiso-theme-off) .sw-table td.num,
:root:not(.swiso-theme-off) .sw-table th.num { text-align: right; direction: ltr; font-variant-numeric: tabular-nums; }
:root:not(.swiso-theme-off) .sw-table td.name { font-weight: 600; }
:root:not(.swiso-theme-off) .sw-secondary { color: var(--sw-text-secondary); }
:root:not(.swiso-theme-off) .sw-tertiary { color: var(--sw-text-tertiary); }
:root:not(.swiso-theme-off) .sw-danger-text { color: var(--sw-danger); }
:root:not(.swiso-theme-off) .sw-warning-text { color: var(--sw-warning); }
:root:not(.swiso-theme-off) .sw-success-text { color: var(--sw-success); }
/* Empty state: say what will appear and when */
:root:not(.swiso-theme-off) .sw-empty { max-width: 400px; margin: 0 auto; padding: 40px 0; text-align: center; display: flex; flex-direction: column; gap: 12px; align-items: center; }
:root:not(.swiso-theme-off) .sw-empty-title { font-size: var(--sw-heading-size); font-weight: 600; }
:root:not(.swiso-theme-off) .sw-empty-text { color: var(--sw-text-secondary); font-size: var(--sw-body-size); }
:root:not(.swiso-theme-off) .sw-empty-inline { color: var(--sw-text-secondary); font-size: var(--sw-small-size); }
/* List rows inside a block */
:root:not(.swiso-theme-off) .sw-rows > * { padding: 12px 0; border-top: 1px solid var(--sw-border-subtle-solid); }
:root:not(.swiso-theme-off) .sw-rows > *:first-child { border-top: 0; padding-top: 0; }
/* Line chart (SVG): plot stays left-to-right in both directions */
:root:not(.swiso-theme-off) .sw-chart { width: 100%; height: auto; direction: ltr; display: block; }
:root:not(.swiso-theme-off) .sw-chart text { fill: var(--sw-text-tertiary); font-size: 11px; font-family: var(--sw-font-sans); }
:root:not(.swiso-theme-off) .sw-chart .grid { stroke: var(--sw-border-subtle-solid); stroke-width: 1; }
:root:not(.swiso-theme-off) .sw-chart .series { fill: none; stroke: var(--sw-accent); stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }

/* Frappe renders an empty status pill next to some page titles; with a border it would show as an empty box */
:root:not(.swiso-theme-off) .indicator-pill:empty,
:root:not(.swiso-theme-off) .indicator-pill-right:empty { display: none; }

/* page side padding for SWISO pages: 16px, 24px from 640px, 32px from 1024px (spec 5) */
:root:not(.swiso-theme-off) .swiso-cc,
:root:not(.swiso-theme-off) .md-page,
:root:not(.swiso-theme-off) .swiso-board,
:root:not(.swiso-theme-off) .ask-wrap,
:root:not(.swiso-theme-off) .sw-page { padding-inline: 16px; }
@media (min-width: 640px) {
	:root:not(.swiso-theme-off) .swiso-cc,
	:root:not(.swiso-theme-off) .md-page,
	:root:not(.swiso-theme-off) .swiso-board,
	:root:not(.swiso-theme-off) .ask-wrap,
	:root:not(.swiso-theme-off) .sw-page { padding-inline: 24px; }
}
@media (min-width: 1024px) {
	:root:not(.swiso-theme-off) .swiso-cc,
	:root:not(.swiso-theme-off) .md-page,
	:root:not(.swiso-theme-off) .swiso-board,
	:root:not(.swiso-theme-off) .ask-wrap,
	:root:not(.swiso-theme-off) .sw-page { padding-inline: 32px; }
}

/* numbers that must read left-to-right inside Arabic lists and forms: phone numbers, IDs, record numbers (spec 4.4) */
:root:not(.swiso-theme-off)[dir="rtl"] .list-row-col [data-filter^="mobile,"],
:root:not(.swiso-theme-off)[dir="rtl"] .list-row-col [data-filter^="phone,"],
:root:not(.swiso-theme-off)[dir="rtl"] .list-row-col [data-filter^="mobile_no,"],
:root:not(.swiso-theme-off)[dir="rtl"] .list-row-col [data-filter^="national_id,"],
:root:not(.swiso-theme-off)[dir="rtl"] .list-row-col [data-filter^="mrn,"],
:root:not(.swiso-theme-off)[dir="rtl"] .frappe-control[data-fieldtype="Phone"] input,
:root:not(.swiso-theme-off)[dir="rtl"] .frappe-control[data-fieldname="mobile"] input,
:root:not(.swiso-theme-off)[dir="rtl"] .frappe-control[data-fieldname="phone"] input,
:root:not(.swiso-theme-off)[dir="rtl"] .frappe-control[data-fieldname="national_id"] input,
:root:not(.swiso-theme-off)[dir="rtl"] .frappe-control[data-fieldname="mrn"] input {
	direction: ltr;
	unicode-bidi: isolate;
	text-align: right;
}

/* ---------------------------------------------------------------------------------------------------
 * 7. Web pages: sign-in, portal and the secure results page
 * ------------------------------------------------------------------------------------------------- */

:root:not(.swiso-theme-off) .page-card .page-card-actions .btn-login,
:root:not(.swiso-theme-off) .page-card .page-card-actions .btn-primary {
	background-color: var(--sw-accent);
	color: var(--sw-text-inverse);
	border: 1px solid transparent;
	border-radius: var(--sw-radius-sm);
	font-weight: 500;
}
:root:not(.swiso-theme-off) .page-card .page-card-actions .btn-login:hover { background-color: var(--sw-accent-hover); }
:root:not(.swiso-theme-off) .page-card .page-card-actions .btn-default:not(.btn-login) {
	background: transparent; border: 1px solid var(--sw-border-default-solid); color: var(--sw-text-primary);
}
:root:not(.swiso-theme-off) .page-card { border-radius: var(--sw-radius-md); }
:root:not(.swiso-theme-off) .page-card-head h4,
:root:not(.swiso-theme-off) .web-page-content h1,
:root:not(.swiso-theme-off) .web-page-content h2,
:root:not(.swiso-theme-off) .web-page-content h3 { color: var(--sw-text-primary); }
:root:not(.swiso-theme-off) .for-login a,
:root:not(.swiso-theme-off) .forgot-password-message a { color: var(--sw-accent); }

/* web pages in the dark theme (the results page follows the reader's system theme) */
:root:not(.swiso-theme-off)[data-theme="dark"] .navbar,
:root:not(.swiso-theme-off)[data-theme="dark"] .web-footer {
	background: var(--sw-surface-base) !important;
	border-color: var(--sw-border-subtle-solid) !important;
}
:root:not(.swiso-theme-off)[data-theme="dark"] .navbar .nav-link,
:root:not(.swiso-theme-off)[data-theme="dark"] .navbar .navbar-brand,
:root:not(.swiso-theme-off)[data-theme="dark"] .web-footer,
:root:not(.swiso-theme-off)[data-theme="dark"] .web-footer a { color: var(--sw-text-secondary) !important; }
:root:not(.swiso-theme-off)[data-theme="dark"] .navbar .navbar-toggler-icon { filter: invert(1); }
:root:not(.swiso-theme-off) h1,
:root:not(.swiso-theme-off) h2,
:root:not(.swiso-theme-off) h3,
:root:not(.swiso-theme-off) h4 { color: var(--sw-text-primary); }
