/* Shared application controls. Loaded after page styles so public and workspace
   forms use the same action hierarchy without changing navigation or tool layouts. */
:root {
    --control-accent: #0f766e;
    --control-accent-hover: #115e59;
    --control-tint: #eef7f5;
    --control-ink: #25443d;
    --control-muted: #687c74;
    --control-border: #bdcec6;
    --control-border-hover: #8da99d;
    --control-radius: 6px;
    --control-danger: #b42336;
    --wk-teal-700: #115e59;
    --wk-teal-600: #0f766e;
    --wk-teal-100: #eef7f5;
    --wk-r-action: 6px;
    --wk-r-control: 6px;
    --wk-r-icon: 6px;
}

/* No elevation, including hover, keyboard focus, icon actions and pseudo-elements. */
body :is(button, [role="button"], input[type="submit"], input[type="button"], .btn, a[class*="-btn"], a[class*="-button"], .primary-action, .secondary-action),
body :is(button, [role="button"], .btn, a[class*="-btn"], a[class*="-button"])::before,
body :is(button, [role="button"], .btn, a[class*="-btn"], a[class*="-button"])::after {
    box-shadow: none !important;
    text-shadow: none !important;
}
body :is(button, [role="button"], .btn, a[class*="-btn"], a[class*="-button"], input, select, textarea):focus-visible {
    outline: 2px solid var(--control-accent) !important;
    outline-offset: 3px;
}

/* Explicit action families: calendar cells, tabs, chips, and rich-text toolbar
   controls retain their purpose-built geometry. */
body :is(.mud-button-root:not(.mud-icon-button), .btn:not(.btn-link), .wk-btn,
    .ad-btn, .air-btn, .ar-btn, .ca-btn, .cd-btn, .cd-sub-btn, .cds-btn, .cqi-btn,
    .cr-btn, .ddb-button, .dsa-btn, .frg-btn, .fx-btn, .fxd-btn, .fxs-btn, .fxv-btn,
    .ia-btn, .idoc-btn, .ir-btn, .irs-btn, .irw-btn, .mab-btn, .mat-btn, .maw-btn,
    .mi-btn, .mr-btn, .pl-btn, .plh-btn, .ps-btn, .pst-btn, .rc-btn, .rfd-btn,
    .sa-btn, .sp-btn, .ss-btn, .sw-btn, .primary-action, .secondary-action,
    .primary-btn, .primary-button, .secondary-button, .staff-primary-action,
    .hero-button, .hb-preview-button, .news-secondary-button, .tx-action-button,
    .patients-action-button, .patients-toolbar-button, .personal-data-button,
    .cga-command-button, .crs-next-button, .publish-button, .fped-run-button,
    .platform-create-button, .ird-report-button, .ird-secondary-button,
    .rep-action-button, .rep-run-button, .so-button, .cg-cite-button,
    button.primary, button.secondary, button.ghost, button:not([class]):not([role])) {
    border-radius: var(--control-radius) !important;
    font-family: var(--app-font, Inter), system-ui, sans-serif;
    font-size: 13px;
    font-weight: 600;
    line-height: 1.45;
    letter-spacing: 0;
    text-transform: none !important;
    min-height: 40px;
    padding: 9px 16px;
    transition: background-color 140ms ease, border-color 140ms ease, color 140ms ease;
}

body :is(.ad-btn, .air-btn, .ar-btn, .ca-btn, .cd-btn, .cd-sub-btn, .cds-btn,
    .cqi-btn, .cr-btn, .ddb-button, .dsa-btn, .frg-btn, .fx-btn, .fxd-btn, .fxs-btn,
    .fxv-btn, .ia-btn, .idoc-btn, .ir-btn, .irs-btn, .irw-btn, .mab-btn, .mat-btn,
    .maw-btn, .mi-btn, .mr-btn, .pl-btn, .plh-btn, .ps-btn, .pst-btn, .rc-btn,
    .rfd-btn, .sa-btn, .sp-btn, .ss-btn, .sw-btn, .cga-command-button,
    button:not([class]):not([role])):not(.primary):not(.danger):not(.success):not(.warning):not(.active):not([aria-pressed="true"]):not([style]) {
    background: #fff !important;
    color: var(--control-ink) !important;
    border: 1px solid var(--control-border) !important;
}
body :is(.btn-primary, .wk-btn-primary, .mud-button-filled-primary, .mud-button-filled-secondary,
    .primary-action, .primary-btn, .primary-button, .staff-primary-action, .cd-btn-primary,
    .ddb-btn-primary, .personal-data-button--primary, .publish-button, .fped-run-button,
    .platform-create-button, .ird-report-button, .irw-submit-btn, .rep-run-button,
    .patients-search-button, .pp-start-minor-ailment-btn, .crs-next-button,
    button.primary, a.primary, .hero-button.primary) {
    background: var(--control-accent) !important;
    border-color: var(--control-accent) !important;
    color: #fff !important;
}
body :is(.btn-primary, .wk-btn-primary, .mud-button-filled-primary, .mud-button-filled-secondary,
    .primary-action, .primary-btn, .primary-button, .staff-primary-action, .cd-btn-primary,
    .ddb-btn-primary, .personal-data-button--primary, .publish-button, .fped-run-button,
    .platform-create-button, .ird-report-button, .irw-submit-btn, .rep-run-button,
    .patients-search-button, .pp-start-minor-ailment-btn, .crs-next-button,
    button.primary, a.primary, .hero-button.primary):hover:not(:disabled):not([aria-disabled="true"]) {
    background: var(--control-accent-hover) !important;
    border-color: var(--control-accent-hover) !important;
    transform: none;
}

body :is(.btn-outline-primary, .btn-outline-secondary, .wk-btn-secondary,
    .mud-button-outlined-default, .mud-button-outlined-primary, .mud-button-outlined-secondary,
    .secondary-action, .secondary-button, .hb-preview-button, .news-secondary-button,
    .tx-secondary, .patients-action-button, .patients-reset-button, .ird-secondary-button,
    button.secondary, a.secondary, button.ghost, a.ghost, .hero-button.secondary,
    .btn.secondary, .cds-btn-ghost) {
    background: #fff !important;
    color: var(--control-ink) !important;
    border: 1px solid var(--control-border) !important;
}
body :is(.btn-outline-primary, .btn-outline-secondary, .wk-btn-secondary,
    .mud-button-outlined-default, .mud-button-outlined-primary, .mud-button-outlined-secondary,
    .secondary-action, .secondary-button, .hb-preview-button, .news-secondary-button,
    .tx-secondary, .patients-action-button, .patients-reset-button, .ird-secondary-button,
    button.secondary, a.secondary, button.ghost, a.ghost, .hero-button.secondary,
    .btn.secondary, .cds-btn-ghost):hover:not(:disabled):not([aria-disabled="true"]) {
    background: var(--control-tint) !important;
    border-color: var(--control-border-hover) !important;
    color: var(--control-accent-hover) !important;
    transform: none;
}
body :is(.mud-button-text-primary, .mud-button-text-secondary, .mud-icon-button-color-primary,
    .mud-icon-button-color-secondary, .btn-link) { color: var(--control-accent) !important; }
/* Destructive actions and clinical warnings keep their explicit semantic colors. */
body :is(.btn-danger, .mud-button-filled-error, .personal-data-button--danger) {
    background: var(--control-danger) !important;
    border-color: var(--control-danger) !important;
    color: #fff !important;
}
body :is(.mud-button-root, .btn, .wk-btn, button.primary, .staff-primary-action):disabled,
body :is(.mud-button-root, .btn, .wk-btn)[aria-disabled="true"] {
    opacity: .5;
    cursor: not-allowed;
    transform: none;
}

/* Native fields. Mud inputs are styled on their outer container below so labels,
   adornments, validation messages and picker buttons keep working correctly. */
body :is(input:not([type]), input[type="text"], input[type="email"], input[type="password"],
    input[type="search"], input[type="tel"], input[type="url"], input[type="number"],
    input[type="date"], input[type="time"], input[type="datetime-local"], input[type="month"],
    select, textarea):not(.mud-input-root):not(.mud-select-input):not([hidden]) {
    min-width: 0;
    max-width: 100%;
    min-height: 42px;
    border: 1px solid var(--control-border) !important;
    border-radius: var(--control-radius) !important;
    background-color: #fff;
    color: var(--control-ink);
    padding: 10px 12px;
    font-size: 14px;
    line-height: 1.5;
    box-shadow: none !important;
    transition: border-color 140ms ease, background-color 140ms ease;
}
body select:not(.mud-input-root) { padding-right: 30px; }
body textarea:not(.mud-input-root) { resize: vertical; }
body :is(input, textarea)::placeholder { color: #778980; opacity: 1; }
body :is(input, select, textarea):not(.mud-input-root):hover:not(:disabled):not([readonly]) {
    border-color: var(--control-border-hover) !important;
}
body :is(input, select, textarea):not(.mud-input-root):focus {
    border-color: var(--control-accent) !important;
    box-shadow: none !important;
}
body :is(input, select, textarea):disabled,
body :is(input, textarea)[readonly]:not(.mud-input-root) {
    background-color: #f3f6f4;
    color: #667970;
}
body :is(input, select, textarea)[aria-invalid="true"],
body :is(input, select, textarea).invalid {
    border-color: var(--control-danger) !important;
}
body :is(input[type="checkbox"], input[type="radio"], input[type="range"]) { accent-color: var(--control-accent); }
body .form-check-input:checked { background-color: var(--control-accent); border-color: var(--control-accent); }
body .form-control:focus { box-shadow: none !important; }
body .mud-input-control { min-width: 0; }
body .mud-input { border-radius: var(--control-radius); box-shadow: none !important; }
body .mud-input-outlined { background-color: #fff; }
body .mud-input-outlined .mud-input-outlined-border {
    border-color: var(--control-border);
    border-radius: var(--control-radius) !important;
}
body .mud-input-outlined:hover:not(.mud-disabled) .mud-input-outlined-border { border-color: var(--control-border-hover); }
body .mud-input-outlined.mud-focused:not(.mud-input-error) .mud-input-outlined-border { border-color: var(--control-accent) !important; border-width: 2px; }
body .mud-input-filled { background-color: #f5f8f6; border-radius: var(--control-radius) var(--control-radius) 0 0; }
body .mud-input-underline::after { border-bottom-color: var(--control-accent); }
body .mud-input-control > .mud-input-control-input-container > .mud-input-label.mud-input-label-inputcontrol.mud-input-label-shrink.mud-focused:not(.mud-input-error) { color: var(--control-accent); }
body .mud-input-root { font-size: 14px; color: var(--control-ink); }
body .mud-input.mud-disabled { background-color: #f3f6f4; }
body .mud-input-error .mud-input-outlined-border { border-color: var(--control-danger) !important; }
/* The enclosing Mud field already has a visible focus border; avoid a second
   outline around the inner input, which crosses floating labels. */
body .mud-input-root:focus-visible { outline: none !important; }
body .mud-input-control:focus-within .mud-input-underline::before { border-bottom-color: var(--control-accent); }

body nav[aria-label="Breadcrumb"] a { color: var(--control-accent); text-underline-offset: 3px; }
body nav[aria-label="Breadcrumb"] a:focus-visible { outline: 2px solid var(--control-accent); outline-offset: 4px; }
#modules, [id^="modules-"], #business-settings-title { scroll-margin-top: 90px; }
@media (prefers-reduced-motion: reduce) {
    body :is(button, .btn, input, select, textarea) { transition: none !important; }
}
@media (max-width: 600px) {
    /* Prevent mobile browsers from zooming into controls while typing. */
    body :is(input, select, textarea):not([type="checkbox"]):not([type="radio"]),
    body .mud-input-root { font-size: 16px !important; }
}

/* Brand accents are shared across both shells; action colors stay predictable. */
:root {
    --brand-navy: #16324f;
    --brand-gold: #bc944c;
    --brand-gold-ink: #8b682d;
    --brand-gold-wash: #f7efdd;
    --brand-orange: #ba642e;
    --brand-orange-wash: #fcebdc;
    --brand-teal: #0f766e;
}
body .public-account-header { border-bottom: 2px solid #c6ad77; }
body .platform-appbar { border-bottom: 2px solid #bc944c; box-shadow: none; }
body .platform-appbar .mud-icon-button { color: inherit; }
body :is(.profile-hero h1, .staff-header h1, .catalogue-hero h1,
    .home-tabs-head h2, .home-section-heading h2, .news-page h1) { color: var(--brand-navy); }
body :is(.home-section-kicker, .profile-page .eyebrow) { color: var(--brand-gold-ink); }
body .home-tabs-rail button.active {
    border-left: 3px solid var(--brand-gold);
    background: #edf4f1;
    color: var(--brand-navy);
}
body .profile-page .section-number {
    color: var(--brand-gold-ink);
    background: var(--brand-gold-wash);
    padding: 4px 7px;
    border-radius: 4px;
}
body .profile-page .owner-tools { border-top: 3px solid var(--brand-gold); background: #fbf6ec; }
body .profile-page .avatar-large { color: var(--brand-navy); background: #f7efdd; border-color: #ddc797; }
body .profile-page .role-label { color: #945022; background: #fcebdc; border-color: #efd1b4; }
body .home-tabs-body { border-top-color: var(--brand-gold); }
body input[type="file"]::file-selector-button {
    background: var(--control-accent);
    color: #fff;
    border: 1px solid var(--control-accent);
    border-radius: 6px;
    padding: 9px 14px;
    margin-right: 12px;
    min-height: 40px;
    font: 600 13px/1.45 var(--app-font, Inter), system-ui, sans-serif;
    box-shadow: none;
    cursor: pointer;
}
body input[type="file"]::file-selector-button:hover { background: var(--control-accent-hover); }
body .public-account-register-link { border-radius: 6px !important; min-height: 40px; box-shadow: none; }
body :is(.components-reconnect-failed-visible, .components-pause-visible.components-resume-failed-visible) {
    background: var(--control-accent);
    border-radius: 6px;
    box-shadow: none;
}

/* A destructive primary action must retain its warning color. */
body button.primary.danger { background: var(--control-danger) !important; border-color: var(--control-danger) !important; color: #fff !important; }
body button.primary.danger:hover:not(:disabled) { background: #951d2c !important; border-color: #951d2c !important; }
