/* SnipePrice brand layer for the Admin panel (Blazor Server, stock AntDesign light theme).
   Loaded after ant-design-blazor.css in App.razor, so equal-specificity rules here win without !important.
   Values mirror the App tokens (App/wwwroot/css/app.css :root, design-tokens/tokens.json):
   AntD's default blue primary (#1890ff) becomes the SnipePrice orange family. Semantic colours
   (success green, warning gold, error red, info blue) stay AntD's, so the brand orange is never read
   as an error or a price delta. */

:root {
    --color-primary: #ed7200;
    --color-primary-light: #ff9934;
    --color-primary-dark: #cc6400;
    --color-primary-rgb: 237, 114, 0;
    --color-primary-50: #fff5eb;
    --color-primary-100: #ffe6cc;
    --color-primary-200: #ffcb94;
    --color-primary-700: #a34f00;
    --color-ink: #171820;
    --color-ink-2: #22232d;
    --color-ink-3: #101117;
    /* Text on a primary fill: ink (5.9:1 on #ed7200). White would be 3.0:1. */
    --text-on-primary: #171820;
    /* Orange text on white needs the 700 step: #a34f00 is 5.7:1 (AA); #ed7200 is only 3.0:1. */
    --color-primary-text: #a34f00;
    --color-primary-text-hover: #cc6400;
    --color-primary-glow: rgba(237, 114, 0, 0.2);
    --admin-page-bg: #f5f5f7;
}

/* ---------- Links ---------- */
a,
.ant-typography a,
a.ant-typography {
    color: var(--color-primary-text);
}

a:hover,
a:focus-visible,
.ant-typography a:hover {
    color: var(--color-primary-text-hover);
}

a:active {
    color: var(--color-primary-dark);
}

/* ---------- Buttons ---------- */
.ant-btn-primary {
    color: var(--text-on-primary);
    background: var(--color-primary);
    border-color: var(--color-primary);
    font-weight: 600;
    text-shadow: none;
}

.ant-btn-primary:hover,
.ant-btn-primary:focus {
    color: var(--text-on-primary);
    background: var(--color-primary-light);
    border-color: var(--color-primary-light);
}

.ant-btn-primary:active {
    color: var(--text-on-primary);
    background: var(--color-primary-dark);
    border-color: var(--color-primary-dark);
}

.ant-btn-primary:focus-visible {
    box-shadow: 0 0 0 3px var(--color-primary-glow);
}

.ant-btn-primary[disabled],
.ant-btn-primary[disabled]:hover,
.ant-btn-primary.ant-btn-disabled {
    color: rgba(0, 0, 0, 0.25);
    background: #f5f5f5;
    border-color: #d9d9d9;
}

.ant-btn-primary.ant-btn-dangerous {
    color: #fff;
    background: #ff4d4f;
    border-color: #ff4d4f;
}

.ant-btn-default:not(.ant-btn-dangerous):hover,
.ant-btn-default:not(.ant-btn-dangerous):focus,
.ant-btn-dashed:not(.ant-btn-dangerous):hover,
.ant-btn-dashed:not(.ant-btn-dangerous):focus {
    color: var(--color-primary-text);
    border-color: var(--color-primary);
}

.ant-btn-link:not(.ant-btn-dangerous) {
    color: var(--color-primary-text);
}

.ant-btn-link:not(.ant-btn-dangerous):hover,
.ant-btn-link:not(.ant-btn-dangerous):focus {
    color: var(--color-primary-text-hover);
}

/* ---------- Inputs, selects, pickers ---------- */
.ant-input:hover,
.ant-input-affix-wrapper:hover,
.ant-input-number:hover,
.ant-picker:hover,
.ant-select:not(.ant-select-disabled):hover .ant-select-selector {
    border-color: var(--color-primary-light);
}

.ant-input:focus,
.ant-input-focused,
.ant-input-affix-wrapper:focus,
.ant-input-affix-wrapper-focused,
.ant-input-number:focus,
.ant-input-number-focused,
.ant-picker-focused,
.ant-select-focused:not(.ant-select-disabled).ant-select:not(.ant-select-customize-input) .ant-select-selector {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 2px var(--color-primary-glow);
}

.ant-select-item-option-selected:not(.ant-select-item-option-disabled) {
    background-color: var(--color-primary-50);
}

.ant-select-item-option-selected:not(.ant-select-item-option-disabled) .ant-select-item-option-state {
    color: var(--color-primary-text);
}

.ant-picker-cell-in-view.ant-picker-cell-selected .ant-picker-cell-inner,
.ant-picker-cell-in-view.ant-picker-cell-range-start .ant-picker-cell-inner,
.ant-picker-cell-in-view.ant-picker-cell-range-end .ant-picker-cell-inner {
    color: var(--text-on-primary);
    background: var(--color-primary);
}

.ant-picker-cell-in-view.ant-picker-cell-today .ant-picker-cell-inner::before {
    border-color: var(--color-primary);
}

.ant-picker-cell-in-view.ant-picker-cell-in-range::before {
    background: var(--color-primary-50);
}

.ant-picker-today-btn,
.ant-picker-header-view button:hover {
    color: var(--color-primary-text);
}

.ant-picker-range .ant-picker-active-bar {
    background: var(--color-primary);
}

/* ---------- Checkbox, radio, switch ---------- */
.ant-checkbox-checked .ant-checkbox-inner,
.ant-checkbox-indeterminate .ant-checkbox-inner::after {
    background-color: var(--color-primary);
    border-color: var(--color-primary);
}

.ant-checkbox-wrapper:hover .ant-checkbox-inner,
.ant-checkbox:hover .ant-checkbox-inner,
.ant-checkbox-input:focus + .ant-checkbox-inner,
.ant-checkbox-checked::after {
    border-color: var(--color-primary);
}

.ant-radio-checked .ant-radio-inner,
.ant-radio-wrapper:hover .ant-radio,
.ant-radio:hover .ant-radio-inner,
.ant-radio-input:focus + .ant-radio-inner {
    border-color: var(--color-primary);
}

.ant-radio-inner::after {
    background-color: var(--color-primary);
}

.ant-radio-button-wrapper:hover {
    color: var(--color-primary-text);
}

.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
    color: var(--color-primary-text);
    border-color: var(--color-primary);
}

.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before {
    background-color: var(--color-primary);
}

.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
    color: var(--text-on-primary);
    background: var(--color-primary);
    border-color: var(--color-primary);
}

.ant-switch-checked {
    background-color: var(--color-primary);
}

/* ---------- Navigation: tabs, pagination, steps, menu (light) ---------- */
.ant-tabs-tab:hover,
.ant-tabs-tab-btn:focus,
.ant-tabs-tab-btn:active,
.ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn {
    color: var(--color-primary-text);
}

.ant-tabs-ink-bar {
    background: var(--color-primary);
}

.ant-pagination-item:hover,
.ant-pagination-item-active {
    border-color: var(--color-primary);
}

.ant-pagination-item:hover a,
.ant-pagination-item-active a,
.ant-pagination-prev:hover .ant-pagination-item-link,
.ant-pagination-next:hover .ant-pagination-item-link {
    color: var(--color-primary-text);
    border-color: var(--color-primary);
}

.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-icon {
    background: var(--color-primary);
    border-color: var(--color-primary);
}

.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-icon .ant-steps-icon {
    color: var(--text-on-primary);
}

.ant-steps-item-finish .ant-steps-item-icon {
    border-color: var(--color-primary);
}

.ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon {
    color: var(--color-primary-text);
}

.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-tail::after {
    background-color: var(--color-primary);
}

.ant-menu-light .ant-menu-item-selected,
.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected {
    background-color: var(--color-primary-50);
}

.ant-menu-light .ant-menu-item-selected,
.ant-menu-light .ant-menu-item:hover,
.ant-menu-light .ant-menu-item-selected a {
    color: var(--color-primary-text);
}

.ant-menu-inline .ant-menu-item::after {
    border-right-color: var(--color-primary);
}

/* ---------- Feedback: spin, progress, badge, slider ---------- */
.ant-spin {
    color: var(--color-primary);
}

.ant-spin-dot-item {
    background-color: var(--color-primary);
}

.ant-progress-bg {
    background-color: var(--color-primary);
}

.ant-progress-status-success .ant-progress-bg {
    background-color: #52c41a;
}

.ant-slider-track,
.ant-slider:hover .ant-slider-track {
    background-color: var(--color-primary);
}

.ant-slider-handle,
.ant-slider:hover .ant-slider-handle:not(.ant-tooltip-open) {
    border-color: var(--color-primary);
}

.ant-table-thead th.ant-table-column-has-sorters:hover,
.ant-table-column-sorter-up.active,
.ant-table-column-sorter-down.active,
.ant-table-filter-trigger.active {
    color: var(--color-primary-text);
}

.ant-table-tbody > tr.ant-table-row-selected > td {
    background: var(--color-primary-50);
}

/* ---------- Shell: dark sider in brand ink ---------- */
.ant-layout {
    background: var(--admin-page-bg);
}

.ant-layout-sider.admin-sider,
.ant-layout-sider.admin-sider .ant-layout-sider-trigger,
.admin-sider .ant-menu-dark,
.admin-sider .ant-menu-dark .ant-menu-sub {
    background: var(--color-ink);
}

.admin-sider .ant-menu-dark .ant-menu-inline.ant-menu-sub {
    background: var(--color-ink-3);
}

.admin-sider .ant-menu-dark .ant-menu-item:hover,
.admin-sider .ant-menu-dark .ant-menu-submenu-title:hover {
    color: #fff;
}

.admin-sider .ant-menu-dark .ant-menu-item-selected,
.admin-sider .ant-menu-dark.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-item-selected {
    background-color: rgba(var(--color-primary-rgb), 0.16);
    color: var(--color-primary-light);
    box-shadow: inset 3px 0 0 var(--color-primary);
}

.admin-sider .ant-menu-dark .ant-menu-item-selected .anticon,
.admin-sider .ant-menu-dark .ant-menu-item-selected a,
.admin-sider .ant-menu-dark .ant-menu-item-selected .ant-menu-item-icon + span {
    color: var(--color-primary-light);
}

.admin-sider .ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title {
    color: #fff;
}

.admin-sider .logo-img {
    display: block;
    height: 22px;
    width: auto;
    max-width: 100%;
}

/* ---------- Auth layout ---------- */
.admin-auth {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
    background:
        radial-gradient(ellipse at 15% 0%, rgba(var(--color-primary-rgb), 0.12) 0%, transparent 55%),
        radial-gradient(ellipse at 85% 100%, rgba(var(--color-primary-rgb), 0.08) 0%, transparent 55%),
        var(--admin-page-bg);
}

.admin-auth__card.ant-card {
    width: 400px;
    max-width: calc(100vw - 32px);
    border-radius: 12px;
    box-shadow: 0 8px 32px rgba(23, 24, 32, 0.08);
}

.admin-auth__brand {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    margin-bottom: 24px;
}

.admin-auth__logo {
    height: 32px;
    width: auto;
}

.admin-auth__eyebrow {
    margin: 0;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: rgba(0, 0, 0, 0.55);
}
