/* ═══════════════════════════════════════════════════════════════════════════
   Sirona Date Picker
   · sirona-date-picker        — custom calendar web component (Date type)
   · sirona-month-year-picker  — sirona-date-picker subclass, month/year only
   · sirona-datetime-picker    — calendar + time spinner web component
   · sirona-time-picker        — time spinner web component
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Native picker wrapper (datetime-local / time) ──────────────────────── */

.sirona-native-picker {
    position: relative;
    display: flex;
    align-items: center;
    width: 100%;
    background-color: var(--bg-secondary, #fff);
    border: 1px solid var(--border-color, #e5e7eb);
    border-radius: 0.375rem;
    transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
}

.sirona-native-picker:hover:not(:has(.sirona-native-picker__field:disabled)) {
    border-color: var(--blueteq-blue, #186fb5);
}

.sirona-native-picker:focus-within {
    border-color: var(--blueteq-blue, #186fb5);
    box-shadow: 0 0 0 2px rgba(24, 111, 181, 0.18);
}

.sirona-native-picker__icon {
    position: absolute;
    left: 0.75rem;
    display: flex;
    align-items: center;
    pointer-events: none;
    color: var(--text-secondary, #6b7280);
    font-size: 0.875rem;
    z-index: 1;
    transition: color 0.2s ease;
}

.sirona-native-picker:focus-within .sirona-native-picker__icon {
    color: var(--blueteq-blue, #186fb5);
}

.sirona-native-picker__field {
    flex: 1;
    min-width: 0;
    width: 100%;
    padding: 0.5rem 0.75rem 0.5rem 2.25rem;
    border: none !important;
    outline: none !important;
    box-shadow: none !important;
    background: transparent !important;
    color: var(--text-primary, #1f2937);
    font-size: 0.95rem;
    line-height: 1.5;
    border-radius: 0.375rem;
    transition: color 0.2s ease;
    cursor: pointer;
    font-family: inherit;
}

.sirona-native-picker__field::-webkit-calendar-picker-indicator {
    opacity: 0.5;
    cursor: pointer;
    transition: opacity 0.15s ease;
}

.sirona-native-picker__field::-webkit-calendar-picker-indicator:hover {
    opacity: 1;
}

.sirona-native-picker:has(.sirona-native-picker__field:disabled) {
    background-color: var(--bg-tertiary, #f3f4f6);
    opacity: 0.7;
    cursor: not-allowed;
}

[data-theme="dark"] .sirona-native-picker {
    background-color: var(--input-bg, #334155);
    border-color: var(--input-border, #475569);
}

[data-theme="dark"] .sirona-native-picker__field {
    color: var(--text-primary, #f1f5f9);
    color-scheme: dark;
}

[data-theme="dark"] .sirona-native-picker__field::-webkit-calendar-picker-indicator {
    filter: invert(1);
    opacity: 0.6;
}

[data-theme="high-contrast"] .sirona-native-picker {
    border: 2px solid #ffffff;
    border-radius: 0;
    background: #000000;
}

[data-theme="high-contrast"] .sirona-native-picker__field {
    color: #ffffff;
    color-scheme: dark;
}

[data-theme="high-contrast"] .sirona-native-picker__icon {
    color: #ffffff;
}


/* ═══════════════════════════════════════════════════════════════════════════
   Custom calendar web component
   ═══════════════════════════════════════════════════════════════════════════ */

sirona-date-picker {
    position: relative;
    display: block;
    width: 100%;
}

/* ─── Trigger / wrapper ───────────────────────────────────────────────────── */

.sdp-wrapper {
    position: relative;
    display: flex;
    align-items: center;
    width: 100%;
    background-color: var(--bg-secondary, #fff);
    border: 1px solid var(--border-color, #e5e7eb);
    border-radius: 0.375rem;
    cursor: pointer;
    transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
}

.sdp-wrapper:hover:not(.sdp-wrapper--disabled) {
    border-color: var(--blueteq-blue, #186fb5);
}

sirona-date-picker.sdp--open .sdp-wrapper {
    border-color: var(--blueteq-blue, #186fb5);
    box-shadow: 0 0 0 2px rgba(24, 111, 181, 0.18);
}

.sdp-wrapper--disabled {
    background-color: var(--bg-tertiary, #f3f4f6);
    opacity: 0.7;
    cursor: not-allowed;
}

.sdp-icon {
    position: absolute;
    left: 0.75rem;
    display: flex;
    align-items: center;
    pointer-events: none;
    color: var(--text-secondary, #6b7280);
    font-size: 0.875rem;
    z-index: 1;
    transition: color 0.2s ease;
}

sirona-date-picker.sdp--open .sdp-icon {
    color: var(--blueteq-blue, #186fb5);
}

.sdp-display {
    flex: 1;
    width: 100%;
    padding: 0.5rem 0.75rem 0.5rem 2.25rem;
    border: none !important;
    outline: none !important;
    box-shadow: none !important;
    background: transparent !important;
    color: var(--text-primary, #1f2937);
    font-size: 0.95rem;
    line-height: 1.5;
    border-radius: 0.375rem;
    cursor: pointer;
    font-family: inherit;
    caret-color: transparent;
}

.sdp-display::placeholder {
    color: var(--text-tertiary, #9ca3af);
}

.sdp-display:disabled {
    cursor: not-allowed;
}

/* ─── Calendar panel ──────────────────────────────────────────────────────── */

.sdp-panel {
    /* Positioned via JS (positionPanel()) once moved to <body> on open — see sirona-date-picker.ts —
       so it isn't clipped by a scrollable ancestor (e.g. a wide grid). top/left/bottom set inline. */
    position: fixed;
    z-index: 2000;
    min-width: 280px;
    background-color: var(--bg-secondary, #fff);
    border: 1px solid var(--border-color, #e5e7eb);
    border-radius: 0.625rem;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.06);
    overflow: hidden;
    animation: sdp-appear 0.15s ease;
}

@keyframes sdp-appear {
    from { opacity: 0; transform: translateY(-6px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ─── Header ──────────────────────────────────────────────────────────────── */

.sdp-header {
    display: flex;
    align-items: center;
    padding: 0.5rem 0.375rem;
    border-bottom: 1px solid var(--border-color, #e5e7eb);
    gap: 0.25rem;
}

.sdp-nav {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    flex-shrink: 0;
    border: none;
    border-radius: 0.375rem;
    background: transparent;
    color: var(--text-secondary, #6b7280);
    cursor: pointer;
    font-size: 0.75rem;
    transition: background-color 0.15s ease, color 0.15s ease;
}

.sdp-nav:hover {
    background-color: var(--hover-bg, #f3f4f6);
    color: var(--blueteq-blue, #186fb5);
}

.sdp-header-btn {
    flex: 1;
    border: none;
    background: transparent;
    color: var(--text-primary, #1f2937);
    font-size: 0.9rem;
    font-weight: 600;
    cursor: pointer;
    padding: 0.25rem 0.5rem;
    border-radius: 0.375rem;
    text-align: center;
    transition: background-color 0.15s ease, color 0.15s ease;
    font-family: inherit;
}

.sdp-header-btn:hover {
    background-color: var(--hover-bg, #f3f4f6);
    color: var(--blueteq-blue, #186fb5);
}

/* ─── Day grid ────────────────────────────────────────────────────────────── */

.sdp-body {
    padding: 0.5rem;
}

.sdp-weekdays {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    margin-bottom: 0.25rem;
}

.sdp-weekdays span {
    text-align: center;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--text-tertiary, #9ca3af);
    padding: 0.25rem 0;
}

.sdp-days {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 2px;
}

.sdp-day {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 2rem;
    border: none;
    border-radius: 0.375rem;
    background: transparent;
    color: var(--text-primary, #1f2937);
    font-size: 0.875rem;
    cursor: pointer;
    transition: background-color 0.1s ease, color 0.1s ease;
    font-family: inherit;
}

.sdp-day:hover:not(:disabled):not(.sdp-day--selected) {
    background-color: var(--hover-bg, #f3f4f6);
    color: var(--blueteq-blue, #186fb5);
}

.sdp-day--today {
    font-weight: 700;
    color: var(--blueteq-blue, #186fb5);
}

.sdp-day--today:not(.sdp-day--selected)::after {
    content: '';
    position: absolute;
    bottom: 3px;
    left: 50%;
    transform: translateX(-50%);
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background: var(--blueteq-blue, #186fb5);
}

.sdp-day--today {
    position: relative;
}

.sdp-day--selected {
    background-color: var(--blueteq-blue, #186fb5) !important;
    color: #ffffff !important;
    font-weight: 600;
}

.sdp-day--filler {
    color: var(--text-tertiary, #9ca3af);
    cursor: default;
}

.sdp-day--disabled {
    color: var(--text-tertiary, #9ca3af);
    cursor: not-allowed;
    opacity: 0.5;
}

/* ─── Month grid ──────────────────────────────────────────────────────────── */

.sdp-months {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 4px;
}

.sdp-month {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 2.5rem;
    border: none;
    border-radius: 0.375rem;
    background: transparent;
    color: var(--text-primary, #1f2937);
    font-size: 0.875rem;
    cursor: pointer;
    transition: background-color 0.1s ease, color 0.1s ease;
    font-family: inherit;
}

.sdp-month:hover:not(.sdp-month--selected) {
    background-color: var(--hover-bg, #f3f4f6);
    color: var(--blueteq-blue, #186fb5);
}

.sdp-month--current {
    font-weight: 700;
    color: var(--blueteq-blue, #186fb5);
}

.sdp-month--selected {
    background-color: var(--blueteq-blue, #186fb5) !important;
    color: #ffffff !important;
    font-weight: 600;
}

/* ─── Year grid ───────────────────────────────────────────────────────────── */

.sdp-years {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 4px;
}

.sdp-year {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 2.5rem;
    border: none;
    border-radius: 0.375rem;
    background: transparent;
    color: var(--text-primary, #1f2937);
    font-size: 0.875rem;
    cursor: pointer;
    transition: background-color 0.1s ease, color 0.1s ease;
    font-family: inherit;
}

.sdp-year:hover:not(.sdp-year--selected) {
    background-color: var(--hover-bg, #f3f4f6);
    color: var(--blueteq-blue, #186fb5);
}

.sdp-year--current {
    font-weight: 700;
    color: var(--blueteq-blue, #186fb5);
}

.sdp-year--selected {
    background-color: var(--blueteq-blue, #186fb5) !important;
    color: #ffffff !important;
    font-weight: 600;
}

/* ─── Dark mode ───────────────────────────────────────────────────────────── */

[data-theme="dark"] .sdp-wrapper {
    background-color: var(--input-bg, #334155);
    border-color: var(--input-border, #475569);
}

[data-theme="dark"] .sdp-display {
    color: var(--text-primary, #f1f5f9);
}

[data-theme="dark"] .sdp-icon {
    color: var(--text-secondary, #cbd5e1);
}

[data-theme="dark"] .sdp-wrapper--disabled {
    background-color: var(--bg-tertiary, #334155);
}

[data-theme="dark"] .sdp-panel {
    background-color: var(--bg-secondary, #1e293b);
    border-color: var(--input-border, #475569);
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.4);
}

[data-theme="dark"] .sdp-header {
    border-bottom-color: var(--input-border, #475569);
}

[data-theme="dark"] .sdp-header-btn {
    color: var(--text-primary, #f1f5f9);
}

[data-theme="dark"] .sdp-nav {
    color: var(--text-secondary, #cbd5e1);
}

[data-theme="dark"] .sdp-nav:hover {
    background-color: var(--hover-bg, #334155);
}

[data-theme="dark"] .sdp-header-btn:hover {
    background-color: var(--hover-bg, #334155);
}

[data-theme="dark"] .sdp-weekdays span {
    color: var(--text-secondary, #94a3b8);
}

[data-theme="dark"] .sdp-day {
    color: var(--text-primary, #f1f5f9);
}

[data-theme="dark"] .sdp-day:hover:not(:disabled):not(.sdp-day--selected) {
    background-color: var(--hover-bg, #334155);
}

[data-theme="dark"] .sdp-day--filler,
[data-theme="dark"] .sdp-day--disabled {
    color: var(--text-tertiary, #64748b);
}

[data-theme="dark"] .sdp-month,
[data-theme="dark"] .sdp-year {
    color: var(--text-primary, #f1f5f9);
}

[data-theme="dark"] .sdp-month:hover:not(.sdp-month--selected),
[data-theme="dark"] .sdp-year:hover:not(.sdp-year--selected) {
    background-color: var(--hover-bg, #334155);
}

/* ─── High contrast ───────────────────────────────────────────────────────── */

[data-theme="high-contrast"] .sdp-wrapper {
    background: #000000;
    border: 2px solid #ffffff;
    border-radius: 0;
}

[data-theme="high-contrast"] sirona-date-picker.sdp--open .sdp-wrapper {
    outline: 2px solid #ffffff;
    outline-offset: 2px;
    box-shadow: none;
}

[data-theme="high-contrast"] .sdp-display {
    color: #ffffff;
}

[data-theme="high-contrast"] .sdp-icon {
    color: #ffffff;
}

[data-theme="high-contrast"] .sdp-panel {
    background: #000000;
    border: 2px solid #ffffff;
    border-radius: 0;
    box-shadow: none;
}

[data-theme="high-contrast"] .sdp-header {
    border-bottom: 2px solid #ffffff;
}

[data-theme="high-contrast"] .sdp-header-btn,
[data-theme="high-contrast"] .sdp-nav,
[data-theme="high-contrast"] .sdp-day,
[data-theme="high-contrast"] .sdp-month,
[data-theme="high-contrast"] .sdp-year {
    color: #ffffff;
}

[data-theme="high-contrast"] .sdp-day--selected,
[data-theme="high-contrast"] .sdp-month--selected,
[data-theme="high-contrast"] .sdp-year--selected {
    background-color: #0066ff !important;
    border: 2px solid #ffffff !important;
}

[data-theme="high-contrast"] .sdp-day:hover:not(:disabled):not(.sdp-day--selected),
[data-theme="high-contrast"] .sdp-month:hover:not(.sdp-month--selected),
[data-theme="high-contrast"] .sdp-year:hover:not(.sdp-year--selected),
[data-theme="high-contrast"] .sdp-nav:hover,
[data-theme="high-contrast"] .sdp-header-btn:hover {
    background-color: #0066ff;
    color: #ffffff;
}

/* ─── Validation states ───────────────────────────────────────────────────── */

sirona-date-picker.invalid .sdp-wrapper {
    border-color: #de1f1f !important;
    background-color: #ffe3e3 !important;
    box-shadow: none !important;
}

sirona-date-picker.corrected .sdp-wrapper {
    border-color: #0ecc29 !important;
    background-color: #d4ffda !important;
}

[data-theme="dark"] sirona-date-picker.invalid .sdp-wrapper {
    background-color: #401c1c !important;
}

[data-theme="dark"] sirona-date-picker.corrected .sdp-wrapper {
    background-color: #075412 !important;
}


/* ═══════════════════════════════════════════════════════════════════════════
   Sirona Month/Year Picker — sirona-month-year-picker (extends sirona-date-picker)
   Same wrapper/panel/header/month-grid/year-grid markup and .sdp-* classes as
   sirona-date-picker above — only the root display rule and validation states
   need their own selector since the tag name differs.
   ═══════════════════════════════════════════════════════════════════════════ */

sirona-month-year-picker {
    position: relative;
    display: block;
    width: 100%;
}

sirona-month-year-picker.invalid .sdp-wrapper {
    border-color: #de1f1f !important;
    background-color: #ffe3e3 !important;
    box-shadow: none !important;
}

sirona-month-year-picker.corrected .sdp-wrapper {
    border-color: #0ecc29 !important;
    background-color: #d4ffda !important;
}

[data-theme="dark"] sirona-month-year-picker.invalid .sdp-wrapper {
    background-color: #401c1c !important;
}

[data-theme="dark"] sirona-month-year-picker.corrected .sdp-wrapper {
    background-color: #075412 !important;
}


/* ═══════════════════════════════════════════════════════════════════════════
   Sirona DateTime Picker — sirona-datetime-picker
   ═══════════════════════════════════════════════════════════════════════════ */

sirona-datetime-picker {
    position: relative;
    display: block;
    width: 100%;
}

.sdtp-wrapper {
    position: relative;
    display: flex;
    align-items: center;
    width: 100%;
    background-color: var(--bg-secondary, #fff);
    border: 1px solid var(--border-color, #e5e7eb);
    border-radius: 0.375rem;
    cursor: pointer;
    transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
}

.sdtp-wrapper:hover:not(.sdtp-wrapper--disabled) {
    border-color: var(--blueteq-blue, #186fb5);
}

sirona-datetime-picker.sdtp--open .sdtp-wrapper {
    border-color: var(--blueteq-blue, #186fb5);
    box-shadow: 0 0 0 2px rgba(24, 111, 181, 0.18);
}

.sdtp-wrapper--disabled {
    background-color: var(--bg-tertiary, #f3f4f6);
    opacity: 0.7;
    cursor: not-allowed;
}

.sdtp-icon {
    position: absolute;
    left: 0.75rem;
    display: flex;
    align-items: center;
    pointer-events: none;
    color: var(--text-secondary, #6b7280);
    font-size: 0.875rem;
    z-index: 1;
    transition: color 0.2s ease;
}

sirona-datetime-picker.sdtp--open .sdtp-icon {
    color: var(--blueteq-blue, #186fb5);
}

.sdtp-display {
    flex: 1;
    width: 100%;
    padding: 0.5rem 0.75rem 0.5rem 2.25rem;
    border: none !important;
    outline: none !important;
    box-shadow: none !important;
    background: transparent !important;
    color: var(--text-primary, #1f2937);
    font-size: 0.95rem;
    line-height: 1.5;
    border-radius: 0.375rem;
    cursor: pointer;
    font-family: inherit;
    caret-color: transparent;
}

.sdtp-display::placeholder {
    color: var(--text-tertiary, #9ca3af);
}

.sdtp-display:disabled {
    cursor: not-allowed;
}

/* ─── Panel ───────────────────────────────────────────────────────────────── */

.sdtp-panel {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    z-index: 1050;
    min-width: 280px;
    background-color: var(--bg-secondary, #fff);
    border: 1px solid var(--border-color, #e5e7eb);
    border-radius: 0.625rem;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.06);
    overflow: hidden;
    animation: sdtp-appear 0.15s ease;
}

@keyframes sdtp-appear {
    from { opacity: 0; transform: translateY(-6px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ─── Header ──────────────────────────────────────────────────────────────── */

.sdtp-header {
    display: flex;
    align-items: center;
    padding: 0.5rem 0.375rem;
    border-bottom: 1px solid var(--border-color, #e5e7eb);
    gap: 0.25rem;
}

.sdtp-nav {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    flex-shrink: 0;
    border: none;
    border-radius: 0.375rem;
    background: transparent;
    color: var(--text-secondary, #6b7280);
    cursor: pointer;
    font-size: 0.75rem;
    transition: background-color 0.15s ease, color 0.15s ease;
}

.sdtp-nav:hover {
    background-color: var(--hover-bg, #f3f4f6);
    color: var(--blueteq-blue, #186fb5);
}

.sdtp-header-btn {
    flex: 1;
    border: none;
    background: transparent;
    color: var(--text-primary, #1f2937);
    font-size: 0.9rem;
    font-weight: 600;
    cursor: pointer;
    padding: 0.25rem 0.5rem;
    border-radius: 0.375rem;
    text-align: center;
    transition: background-color 0.15s ease, color 0.15s ease;
    font-family: inherit;
}

.sdtp-header-btn:hover {
    background-color: var(--hover-bg, #f3f4f6);
    color: var(--blueteq-blue, #186fb5);
}

/* ─── Calendar body ───────────────────────────────────────────────────────── */

.sdtp-body {
    padding: 0.5rem;
}

.sdtp-weekdays {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    margin-bottom: 0.25rem;
}

.sdtp-weekdays span {
    text-align: center;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--text-tertiary, #9ca3af);
    padding: 0.25rem 0;
}

.sdtp-days {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 2px;
}

.sdtp-day {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 2rem;
    border: none;
    border-radius: 0.375rem;
    background: transparent;
    color: var(--text-primary, #1f2937);
    font-size: 0.875rem;
    cursor: pointer;
    transition: background-color 0.1s ease, color 0.1s ease;
    font-family: inherit;
}

.sdtp-day:hover:not(:disabled):not(.sdtp-day--selected) {
    background-color: var(--hover-bg, #f3f4f6);
    color: var(--blueteq-blue, #186fb5);
}

.sdtp-day--today {
    position: relative;
    font-weight: 700;
    color: var(--blueteq-blue, #186fb5);
}

.sdtp-day--today:not(.sdtp-day--selected)::after {
    content: '';
    position: absolute;
    bottom: 3px;
    left: 50%;
    transform: translateX(-50%);
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background: var(--blueteq-blue, #186fb5);
}

.sdtp-day--selected {
    background-color: var(--blueteq-blue, #186fb5) !important;
    color: #ffffff !important;
    font-weight: 600;
}

.sdtp-day--filler {
    color: var(--text-tertiary, #9ca3af);
    cursor: default;
}

.sdtp-day--disabled {
    color: var(--text-tertiary, #9ca3af);
    cursor: not-allowed;
    opacity: 0.5;
}

.sdtp-months {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 4px;
}

.sdtp-month {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 2.5rem;
    border: none;
    border-radius: 0.375rem;
    background: transparent;
    color: var(--text-primary, #1f2937);
    font-size: 0.875rem;
    cursor: pointer;
    transition: background-color 0.1s ease, color 0.1s ease;
    font-family: inherit;
}

.sdtp-month:hover:not(.sdtp-month--selected) {
    background-color: var(--hover-bg, #f3f4f6);
    color: var(--blueteq-blue, #186fb5);
}

.sdtp-month--current {
    font-weight: 700;
    color: var(--blueteq-blue, #186fb5);
}

.sdtp-month--selected {
    background-color: var(--blueteq-blue, #186fb5) !important;
    color: #ffffff !important;
    font-weight: 600;
}

.sdtp-years {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 4px;
}

.sdtp-year {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 2.5rem;
    border: none;
    border-radius: 0.375rem;
    background: transparent;
    color: var(--text-primary, #1f2937);
    font-size: 0.875rem;
    cursor: pointer;
    transition: background-color 0.1s ease, color 0.1s ease;
    font-family: inherit;
}

.sdtp-year:hover:not(.sdtp-year--selected) {
    background-color: var(--hover-bg, #f3f4f6);
    color: var(--blueteq-blue, #186fb5);
}

.sdtp-year--current {
    font-weight: 700;
    color: var(--blueteq-blue, #186fb5);
}

.sdtp-year--selected {
    background-color: var(--blueteq-blue, #186fb5) !important;
    color: #ffffff !important;
    font-weight: 600;
}

/* ─── Time row ────────────────────────────────────────────────────────────── */

.sdtp-time-row {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    padding: 0.5rem 0.75rem;
    border-top: 1px solid var(--border-color, #e5e7eb);
}

.sdtp-time-label {
    color: var(--text-secondary, #6b7280);
    font-size: 0.9rem;
}

.sdtp-time-selector {
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

.sdtp-col {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.125rem;
}

.sdtp-spin {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 1.5rem;
    border: none;
    border-radius: 0.25rem;
    background: transparent;
    color: var(--text-secondary, #6b7280);
    cursor: pointer;
    font-size: 0.7rem;
    transition: background-color 0.15s ease, color 0.15s ease;
}

.sdtp-spin:hover {
    background-color: var(--hover-bg, #f3f4f6);
    color: var(--blueteq-blue, #186fb5);
}

.sdtp-val {
    width: 2.75rem;
    min-width: 2.75rem;
    max-width: 2.75rem;
    box-sizing: border-box;
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--text-primary, #1f2937);
    text-align: center;
    line-height: 1;
    padding: 0.25rem 0;
    /* input resets */
    border: 1px solid transparent;
    border-radius: 0.375rem;
    background: transparent;
    font-family: inherit;
    appearance: none;
    -moz-appearance: textfield;
}

    .sdtp-val::-webkit-outer-spin-button,
    .sdtp-val::-webkit-inner-spin-button {
        -webkit-appearance: none;
        margin: 0;
    }

    .sdtp-val:hover {
        border-color: var(--border-color, #e5e7eb);
    }

    .sdtp-val:focus {
        outline: none;
        border-color: var(--blueteq-blue, #186fb5);
        box-shadow: 0 0 0 2px rgba(24, 111, 181, 0.18);
        background-color: var(--bg-secondary, #fff);
    }

    .sdtp-val::selection {
        background: rgba(24, 111, 181, 0.25);
    }

.sdtp-colon {
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--text-primary, #1f2937);
    padding-bottom: 0.125rem;
    align-self: center;
}

/* ─── Footer ──────────────────────────────────────────────────────────────── */

.sdtp-footer {
    display: flex;
    justify-content: space-between;
    padding: 0.5rem 0.75rem;
    border-top: 1px solid var(--border-color, #e5e7eb);
}

.sdtp-btn {
    padding: 0.25rem 0.75rem;
    border: 1px solid var(--border-color, #e5e7eb);
    border-radius: 0.375rem;
    background: transparent;
    color: var(--text-secondary, #6b7280);
    font-size: 0.875rem;
    cursor: pointer;
    font-family: inherit;
    transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.sdtp-btn:hover {
    background-color: var(--hover-bg, #f3f4f6);
    color: var(--text-primary, #1f2937);
}

.sdtp-confirm {
    background-color: var(--blueteq-blue, #186fb5);
    color: #ffffff;
    border-color: var(--blueteq-blue, #186fb5);
}

.sdtp-confirm:hover {
    background-color: #1560a0;
    border-color: #1560a0;
    color: #ffffff;
}

/* ─── Dark mode ───────────────────────────────────────────────────────────── */

[data-theme="dark"] .sdtp-wrapper {
    background-color: var(--input-bg, #334155);
    border-color: var(--input-border, #475569);
}

[data-theme="dark"] .sdtp-display {
    color: var(--text-primary, #f1f5f9);
}

[data-theme="dark"] .sdtp-icon {
    color: var(--text-secondary, #cbd5e1);
}

[data-theme="dark"] .sdtp-wrapper--disabled {
    background-color: var(--bg-tertiary, #334155);
}

[data-theme="dark"] .sdtp-panel {
    background-color: var(--bg-secondary, #1e293b);
    border-color: var(--input-border, #475569);
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.4);
}

[data-theme="dark"] .sdtp-header,
[data-theme="dark"] .sdtp-time-row,
[data-theme="dark"] .sdtp-footer {
    border-color: var(--input-border, #475569);
}

[data-theme="dark"] .sdtp-header-btn,
[data-theme="dark"] .sdtp-day,
[data-theme="dark"] .sdtp-month,
[data-theme="dark"] .sdtp-year,
[data-theme="dark"] .sdtp-val,
[data-theme="dark"] .sdtp-colon {
    color: var(--text-primary, #f1f5f9);
}

[data-theme="dark"] .sdtp-nav,
[data-theme="dark"] .sdtp-spin,
[data-theme="dark"] .sdtp-time-label {
    color: var(--text-secondary, #cbd5e1);
}

[data-theme="dark"] .sdtp-nav:hover,
[data-theme="dark"] .sdtp-spin:hover,
[data-theme="dark"] .sdtp-header-btn:hover {
    background-color: var(--hover-bg, #334155);
}

[data-theme="dark"] .sdtp-day:hover:not(:disabled):not(.sdtp-day--selected),
[data-theme="dark"] .sdtp-month:hover:not(.sdtp-month--selected),
[data-theme="dark"] .sdtp-year:hover:not(.sdtp-year--selected) {
    background-color: var(--hover-bg, #334155);
}

[data-theme="dark"] .sdtp-weekdays span,
[data-theme="dark"] .sdtp-day--filler,
[data-theme="dark"] .sdtp-day--disabled {
    color: var(--text-tertiary, #64748b);
}

[data-theme="dark"] .sdtp-btn {
    border-color: var(--input-border, #475569);
    color: var(--text-secondary, #cbd5e1);
}

[data-theme="dark"] .sdtp-btn:hover {
    background-color: var(--hover-bg, #334155);
    color: var(--text-primary, #f1f5f9);
}

[data-theme="dark"] .sdtp-val:hover {
    border-color: var(--input-border, #475569);
}

[data-theme="dark"] .sdtp-val:focus {
    background-color: var(--input-bg, #334155);
    border-color: var(--blueteq-blue, #186fb5);
}

/* ─── High contrast ───────────────────────────────────────────────────────── */

[data-theme="high-contrast"] .sdtp-wrapper {
    background: #000000;
    border: 2px solid #ffffff;
    border-radius: 0;
}

[data-theme="high-contrast"] sirona-datetime-picker.sdtp--open .sdtp-wrapper {
    outline: 2px solid #ffffff;
    outline-offset: 2px;
    box-shadow: none;
}

[data-theme="high-contrast"] .sdtp-display,
[data-theme="high-contrast"] .sdtp-icon {
    color: #ffffff;
}

[data-theme="high-contrast"] .sdtp-panel {
    background: #000000;
    border: 2px solid #ffffff;
    border-radius: 0;
    box-shadow: none;
}

[data-theme="high-contrast"] .sdtp-header,
[data-theme="high-contrast"] .sdtp-time-row,
[data-theme="high-contrast"] .sdtp-footer {
    border-color: #ffffff;
}

[data-theme="high-contrast"] .sdtp-header-btn,
[data-theme="high-contrast"] .sdtp-nav,
[data-theme="high-contrast"] .sdtp-day,
[data-theme="high-contrast"] .sdtp-month,
[data-theme="high-contrast"] .sdtp-year,
[data-theme="high-contrast"] .sdtp-val,
[data-theme="high-contrast"] .sdtp-colon,
[data-theme="high-contrast"] .sdtp-time-label,
[data-theme="high-contrast"] .sdtp-spin {
    color: #ffffff;
}

[data-theme="high-contrast"] .sdtp-day--selected,
[data-theme="high-contrast"] .sdtp-month--selected,
[data-theme="high-contrast"] .sdtp-year--selected {
    background-color: #0066ff !important;
    border: 2px solid #ffffff !important;
}

[data-theme="high-contrast"] .sdtp-day:hover:not(:disabled):not(.sdtp-day--selected),
[data-theme="high-contrast"] .sdtp-month:hover:not(.sdtp-month--selected),
[data-theme="high-contrast"] .sdtp-year:hover:not(.sdtp-year--selected),
[data-theme="high-contrast"] .sdtp-nav:hover,
[data-theme="high-contrast"] .sdtp-spin:hover,
[data-theme="high-contrast"] .sdtp-header-btn:hover {
    background-color: #0066ff;
    color: #ffffff;
}

[data-theme="high-contrast"] .sdtp-btn {
    border: 2px solid #ffffff;
    border-radius: 0;
    color: #ffffff;
}

[data-theme="high-contrast"] .sdtp-confirm {
    background-color: #0066ff;
    border-color: #ffffff;
}

[data-theme="high-contrast"] .sdtp-val {
    border: 2px solid #ffffff;
    border-radius: 0;
    background: #000000;
}

    [data-theme="high-contrast"] .sdtp-val:focus {
        outline: 2px solid #0066ff;
        outline-offset: 1px;
        box-shadow: none;
    }

/* ─── Validation states ───────────────────────────────────────────────────── */

sirona-datetime-picker.invalid .sdtp-wrapper {
    border-color: #de1f1f !important;
    background-color: #ffe3e3 !important;
    box-shadow: none !important;
}

sirona-datetime-picker.corrected .sdtp-wrapper {
    border-color: #0ecc29 !important;
    background-color: #d4ffda !important;
}

[data-theme="dark"] sirona-datetime-picker.invalid .sdtp-wrapper {
    background-color: #401c1c !important;
}

[data-theme="dark"] sirona-datetime-picker.corrected .sdtp-wrapper {
    background-color: #075412 !important;
}


/* ═══════════════════════════════════════════════════════════════════════════
   Sirona Time Picker — sirona-time-picker
   ═══════════════════════════════════════════════════════════════════════════ */

sirona-time-picker {
    position: relative;
    display: block;
    width: 100%;
}

.stp-wrapper {
    position: relative;
    display: flex;
    align-items: center;
    width: 100%;
    background-color: var(--bg-secondary, #fff);
    border: 1px solid var(--border-color, #e5e7eb);
    border-radius: 0.375rem;
    cursor: pointer;
    transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
}

.stp-wrapper:hover:not(.stp-wrapper--disabled) {
    border-color: var(--blueteq-blue, #186fb5);
}

sirona-time-picker.stp--open .stp-wrapper {
    border-color: var(--blueteq-blue, #186fb5);
    box-shadow: 0 0 0 2px rgba(24, 111, 181, 0.18);
}

.stp-wrapper--disabled {
    background-color: var(--bg-tertiary, #f3f4f6);
    opacity: 0.7;
    cursor: not-allowed;
}

.stp-icon {
    position: absolute;
    left: 0.75rem;
    display: flex;
    align-items: center;
    pointer-events: none;
    color: var(--text-secondary, #6b7280);
    font-size: 0.875rem;
    z-index: 1;
    transition: color 0.2s ease;
}

sirona-time-picker.stp--open .stp-icon {
    color: var(--blueteq-blue, #186fb5);
}

.stp-display {
    flex: 1;
    width: 100%;
    padding: 0.5rem 0.75rem 0.5rem 2.25rem;
    border: none !important;
    outline: none !important;
    box-shadow: none !important;
    background: transparent !important;
    color: var(--text-primary, #1f2937);
    font-size: 0.95rem;
    line-height: 1.5;
    border-radius: 0.375rem;
    cursor: pointer;
    font-family: inherit;
    caret-color: transparent;
}

.stp-display::placeholder {
    color: var(--text-tertiary, #9ca3af);
}

.stp-display:disabled {
    cursor: not-allowed;
}

/* ─── Panel ───────────────────────────────────────────────────────────────── */

.stp-panel {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    z-index: 1050;
    background-color: var(--bg-secondary, #fff);
    border: 1px solid var(--border-color, #e5e7eb);
    border-radius: 0.625rem;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.06);
    overflow: hidden;
    animation: stp-appear 0.15s ease;
}

@keyframes stp-appear {
    from { opacity: 0; transform: translateY(-6px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ─── Time selector ───────────────────────────────────────────────────────── */

.stp-time-selector {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.25rem;
    padding: 0.75rem 1.5rem;
}

.stp-col {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.125rem;
}

.stp-spin {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 1.75rem;
    border: none;
    border-radius: 0.25rem;
    background: transparent;
    color: var(--text-secondary, #6b7280);
    cursor: pointer;
    font-size: 0.75rem;
    transition: background-color 0.15s ease, color 0.15s ease;
}

.stp-spin:hover {
    background-color: var(--hover-bg, #f3f4f6);
    color: var(--blueteq-blue, #186fb5);
}

.stp-val {
    font-size: 1.75rem;
    font-weight: 600;
    color: var(--text-primary, #1f2937);
    min-width: 2.5rem;
    width: 3rem;
    text-align: center;
    line-height: 1;
    padding: 0.25rem 0;
    border: none;
    outline: none;
    background: transparent;
    font-family: inherit;
}

.stp-colon {
    font-size: 1.75rem;
    font-weight: 600;
    color: var(--text-primary, #1f2937);
    padding: 0 0.125rem 0.25rem;
    align-self: center;
}

/* ─── Footer ──────────────────────────────────────────────────────────────── */

.stp-footer {
    display: flex;
    justify-content: space-between;
    padding: 0.5rem 0.75rem;
    border-top: 1px solid var(--border-color, #e5e7eb);
}

.stp-btn {
    padding: 0.25rem 0.75rem;
    border: 1px solid var(--border-color, #e5e7eb);
    border-radius: 0.375rem;
    background: transparent;
    color: var(--text-secondary, #6b7280);
    font-size: 0.875rem;
    cursor: pointer;
    font-family: inherit;
    transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.stp-btn:hover {
    background-color: var(--hover-bg, #f3f4f6);
    color: var(--text-primary, #1f2937);
}

.stp-confirm {
    background-color: var(--blueteq-blue, #186fb5);
    color: #ffffff;
    border-color: var(--blueteq-blue, #186fb5);
}

.stp-confirm:hover {
    background-color: #1560a0;
    border-color: #1560a0;
    color: #ffffff;
}

/* ─── Dark mode ───────────────────────────────────────────────────────────── */

[data-theme="dark"] .stp-wrapper {
    background-color: var(--input-bg, #334155);
    border-color: var(--input-border, #475569);
}

[data-theme="dark"] .stp-display {
    color: var(--text-primary, #f1f5f9);
}

[data-theme="dark"] .stp-icon {
    color: var(--text-secondary, #cbd5e1);
}

[data-theme="dark"] .stp-wrapper--disabled {
    background-color: var(--bg-tertiary, #334155);
}

[data-theme="dark"] .stp-panel {
    background-color: var(--bg-secondary, #1e293b);
    border-color: var(--input-border, #475569);
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.4);
}

[data-theme="dark"] .stp-footer {
    border-color: var(--input-border, #475569);
}

[data-theme="dark"] .stp-val,
[data-theme="dark"] .stp-colon {
    color: var(--text-primary, #f1f5f9);
}

[data-theme="dark"] .stp-spin {
    color: var(--text-secondary, #cbd5e1);
}

[data-theme="dark"] .stp-spin:hover {
    background-color: var(--hover-bg, #334155);
}

[data-theme="dark"] .stp-btn {
    border-color: var(--input-border, #475569);
    color: var(--text-secondary, #cbd5e1);
}

[data-theme="dark"] .stp-btn:hover {
    background-color: var(--hover-bg, #334155);
    color: var(--text-primary, #f1f5f9);
}

/* ─── High contrast ───────────────────────────────────────────────────────── */

[data-theme="high-contrast"] .stp-wrapper {
    background: #000000;
    border: 2px solid #ffffff;
    border-radius: 0;
}

[data-theme="high-contrast"] sirona-time-picker.stp--open .stp-wrapper {
    outline: 2px solid #ffffff;
    outline-offset: 2px;
    box-shadow: none;
}

[data-theme="high-contrast"] .stp-display,
[data-theme="high-contrast"] .stp-icon {
    color: #ffffff;
}

[data-theme="high-contrast"] .stp-panel {
    background: #000000;
    border: 2px solid #ffffff;
    border-radius: 0;
    box-shadow: none;
}

[data-theme="high-contrast"] .stp-footer {
    border-color: #ffffff;
}

[data-theme="high-contrast"] .stp-val,
[data-theme="high-contrast"] .stp-colon,
[data-theme="high-contrast"] .stp-spin {
    color: #ffffff;
}

[data-theme="high-contrast"] .stp-spin:hover {
    background-color: #0066ff;
    color: #ffffff;
}

[data-theme="high-contrast"] .stp-btn {
    border: 2px solid #ffffff;
    border-radius: 0;
    color: #ffffff;
}

[data-theme="high-contrast"] .stp-confirm {
    background-color: #0066ff;
    border-color: #ffffff;
}

/* ─── Validation states ───────────────────────────────────────────────────── */

sirona-time-picker.invalid .stp-wrapper {
    border-color: #de1f1f !important;
    background-color: #ffe3e3 !important;
    box-shadow: none !important;
}

sirona-time-picker.corrected .stp-wrapper {
    border-color: #0ecc29 !important;
    background-color: #d4ffda !important;
}

[data-theme="dark"] sirona-time-picker.invalid .stp-wrapper {
    background-color: #401c1c !important;
}

[data-theme="dark"] sirona-time-picker.corrected .stp-wrapper {
    background-color: #075412 !important;
}
