/* Coordinated motion, with exact data text retained by the count-up helper. */
:root { --motion-ease: cubic-bezier(.22,1,.36,1); }
.view.active { animation: none; }
.reveal-item { opacity: 0; transform: translateY(16px); transition: opacity var(--reveal-duration,540ms) var(--motion-ease), transform var(--reveal-duration,540ms) var(--motion-ease)!important; }
.reveal-item.reveal-visible { opacity: 1; transform: none; }
.reveal-item:focus-within { opacity: 1; transform: none; }
.loading-handoff { position: fixed; z-index: 45; pointer-events: none; overflow: hidden; animation: loading-handoff 180ms ease-out forwards; }
@keyframes loading-handoff { from { opacity: .65; } to { opacity: 0; } }
.tab, .btn, .select, .clickable:not(.reveal-item), .basis-row, .range-day { transition: background-color 180ms ease, border-color 180ms ease, color 180ms ease, box-shadow 180ms ease, transform 120ms var(--motion-ease)!important; }
.tab:hover, .btn:hover, .clickable:not(.reveal-item):hover { transform: translateY(-1px)!important; }
.btn:active, .tab:active, .range-calendar-head button:active { transform: scale(.985)!important; transition-duration: 100ms!important; }
:is(.tab,.btn,.select,.clickable,.range-day):focus-visible { outline: 2px solid var(--blue); outline-offset: 3px; }
.range-calendar { position: fixed; max-height: calc(100dvh - 24px); overflow-y: auto; box-shadow: 0 12px 32px rgba(15,23,42,.16); animation: calendar-open 220ms var(--motion-ease); }
@keyframes calendar-open { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
.range-calendar-grid { gap: 4px 0; }
.range-day { position: relative; isolation: isolate; border-radius: 0; min-height: 39px; font-variant-numeric: tabular-nums; }
.range-day::before { content: ''; position: absolute; inset: 0; z-index: -1; border-radius: inherit; background: transparent; transition: background-color 160ms ease; }
.range-day:hover { background: color-mix(in srgb,var(--blue) 8%,var(--card)); outline: none; border-radius: 8px; }
.range-day.in-range { background: color-mix(in srgb,var(--blue) 18%,var(--card)); color: var(--text); }
.range-day.in-range:hover { border-radius: 0; background: color-mix(in srgb,var(--blue) 24%,var(--card)); }
.range-day.range-start { border-radius: 10px 0 0 10px; }
.range-day.range-end { border-radius: 0 10px 10px 0; }
.range-day.range-single { border-radius: 10px; }
.range-day.range-edge, .range-day.range-pending, .range-day.range-edge:hover { background: var(--blue); color: #fff; font-weight: 800; }
.range-day.range-preview { background: color-mix(in srgb,var(--blue) 12%,var(--card)); color: var(--text); }
.range-day.range-preview-end { border-radius: 0 10px 10px 0; background: color-mix(in srgb,var(--blue) 24%,var(--card)); }
.range-day.range-preview-start { border-radius: 10px 0 0 10px; }
.range-day.range-pending { background: var(--blue); color: #fff; }
.range-day.today::after { content: ''; position: absolute; bottom: 4px; left: calc(50% - 2px); width: 4px; height: 4px; border-radius: 50%; background: var(--blue); }
.range-day.today { box-shadow: inset 0 0 0 1px var(--blue); }
.range-day.today.range-edge::after, .range-day.today.range-pending::after { background: #fff; }
.range-day:focus-visible { outline-offset: -3px; outline: 2px solid var(--blue-hover); z-index: 1; }
.range-day.range-edge:focus-visible { outline-color: #fff; }
.range-day:disabled { opacity: .35; cursor: not-allowed; background: transparent; }
.range-day.outside:not(.in-range):not(.range-edge):not(.range-pending) { color: var(--muted); }
@media (prefers-reduced-motion: reduce) {
  .reveal-item, .reveal-item.reveal-visible { opacity: 1; transform: none; transition: none!important; }
  .range-calendar, .loading-handoff, .skeleton, .spinner { animation: none; }
  .loading-handoff { display: none; }
  .tab, .btn, .select, .clickable, .range-day, .range-day::before { transition: none!important; }
  .tab:hover, .btn:hover, .clickable:hover, .btn:active, .tab:active, .range-calendar-head button:active { transform: none!important; }
}
@media print { .reveal-item { opacity: 1!important; transform: none!important; transition: none!important; } .loading-handoff { display: none!important; } }
