/* Approved bespoke lettering and Severn descender: one indivisible wordmark. */
.osm-brand {
    position: relative;
    display: inline-block;
    width: 228px;
    max-width: 100%;
    vertical-align: middle;
    line-height: 1;
    color: var(--osm-navy, #163F5B);
}
.osm-brand__image {
    display: block;
    width: 100%;
    max-width: 100%;
    height: auto;
    aspect-ratio: 3 / 1;
    object-fit: contain;
    font-family: Georgia, serif;
    font-size: 18px;
}
.osm-brand--light { color: var(--osm-cream, #FBF7F0); }
.osm-brand--compact { width: 174px; }
.osm-brand__filter { position: absolute; width: 0; height: 0; pointer-events: none; }

/* A 4.2-second reflection, then 1.8 seconds of rest on every screen size.
   Source-alpha/terracotta masking keeps the soft layers inside the existing ink. */
.osm-brand__river {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
    pointer-events: none;
}
.osm-brand__current {
    opacity: 0;
}
.osm-brand__current path {
    opacity: 0;
    stroke-dashoffset: var(--osm-current-from, 24);
}
.osm-brand__current-wash {
    stroke: #F9D5AD;
    stroke-width: 18;
    stroke-opacity: 0.1;
    stroke-dasharray: 20 200;
}
.osm-brand__current-soft {
    --osm-current-from: 21;
    --osm-current-to: -123;
    stroke: #FFE8CE;
    stroke-width: 12;
    stroke-opacity: 0.14;
    stroke-dasharray: 14 206;
}
.osm-brand__current-core {
    --osm-current-from: 18;
    --osm-current-to: -126;
    stroke: #FFF2DF;
    stroke-width: 6;
    stroke-opacity: 0.18;
    stroke-dasharray: 8 212;
}
@keyframes osm-brand-river-current {
    0% { stroke-dashoffset: var(--osm-current-from, 24); opacity: 0; }
    8.4%, 57.4% { opacity: 1; }
    70%, 100% { stroke-dashoffset: var(--osm-current-to, -120); opacity: 0; }
}
@media (prefers-reduced-motion: no-preference) and (forced-colors: none) {
    .osm-brand__current { opacity: 1; }
    .osm-brand__current path {
        animation: osm-brand-river-current 6s cubic-bezier(0.37, 0, 0.4, 1) 0.2s infinite;
    }
}
/* These pages also use this stylesheet without the site's animation bundle. */
@media (prefers-reduced-motion: reduce), (forced-colors: active) {
    .osm-brand__river { display: none; }
    .osm-brand__current { opacity: 0; }
    .osm-brand__current path { animation: none; opacity: 0; }
}

@media (max-width: 600px) {
    .osm-logo .osm-brand { width: 210px; }
}
@media (forced-colors: active) {
    .osm-brand, .osm-brand--light { color: LinkText; }
}

/* Town colours are UI accents only, never replacements for the logo or the
   Customizer's cream/navy/terracotta foundation and per-venue identities. */
:root {
    --osm-town-blue: #245A91;
    --osm-town-blue-deep: #194775;
    --osm-town-blue-wash: #EDF3F9;
    --osm-town-amber: #E3B044;
    --osm-town-amber-wash: #FFF4D8;
    --osm-town-ink: #163F5B;
    --osm-town-light: #FBF7F0;
}

.osm-nav__list a:is(:hover, :focus-visible),
.osm-nav__list :is(.current-menu-item, .current-menu-ancestor) > a,
.osm-nav__list a[aria-current="page"] {
    color: var(--osm-town-blue);
    text-decoration: underline;
    text-decoration-color: var(--osm-town-amber);
    text-decoration-thickness: 2px;
    text-underline-offset: 7px;
}
.osm-section__link { color: var(--osm-town-blue); }
.osm-section__link:is(:hover, :focus-visible) {
    color: var(--osm-town-blue-deep);
    text-decoration: underline;
    text-underline-offset: 4px;
}

/* A fine inset accent, not an outside bar or a change to the card geometry. */
.osm-stats__item:nth-child(4n + 1) { box-shadow: inset 0 2px var(--osm-town-blue); }
.osm-stats__item:nth-child(4n + 2) { box-shadow: inset 0 2px var(--osm-town-amber); }
.osm-btn--yellow { background: var(--osm-town-amber); color: var(--osm-town-ink); }
.osm-footer__heading { color: var(--osm-town-amber); }
.osm-footer__menu a:is(:hover, :focus-visible) { color: var(--osm-town-amber); }

/* Blue = selected view/filter. Amber = today. Existing labels remain in place,
   so colour is never the only way to identify the state. */
.osm-cal-tab.is-active,
.osm-bands-pill.is-active {
    background: var(--osm-town-blue);
    border-color: var(--osm-town-blue);
    color: var(--osm-town-light);
}
.osm-cal-tab:hover:not(.is-active),
.osm-bands-pill:hover:not(.is-active) {
    background: var(--osm-town-blue-wash);
    color: var(--osm-town-blue-deep);
}
.osm-cal-arrow:is(:hover, :focus-visible),
.osm-cal-today,
.osm-cal-today:hover {
    background: var(--osm-town-amber);
    color: var(--osm-town-ink);
}
.osm-month-cell.is-today {
    background: var(--osm-town-amber-wash);
    border-color: var(--osm-town-blue);
}
.osm-month-cell.is-today .osm-month-cell__num { color: var(--osm-town-blue-deep); }
.osm-month-cell__today-badge,
.osm-week-day.is-today .osm-week-day__head {
    background: var(--osm-town-amber);
    color: var(--osm-town-ink);
}
.osm-week-day.is-today { border-color: var(--osm-town-blue); }
.osm-map-list__item:is(:hover, :focus-visible) { background: var(--osm-town-blue-wash); }
.osm-night-save[aria-pressed="true"] {
    background: var(--osm-town-blue);
    border-color: var(--osm-town-blue);
    color: var(--osm-town-light);
}

/* Public pages and the standalone artist/venue workspace share these tokens. */
.osm-dash__nav-item.is-active {
    background: var(--osm-town-blue-deep);
    color: var(--osm-town-light);
    box-shadow: inset 3px 0 var(--osm-town-amber);
}
.osm-dash-tab.is-active {
    background: var(--osm-town-blue-wash);
    color: var(--osm-town-blue-deep);
    box-shadow: inset 0 -2px var(--osm-town-amber);
}
:is(.osm-filter input, .osm-filter select, .osm-bands-search input,
    .osm-dash-field input, .osm-dash-field select, .osm-dash-field textarea):focus-visible {
    outline: 2px solid var(--osm-town-blue);
    outline-offset: 3px;
}
.osm-dash__sidebar a:focus-visible {
    outline: 2px solid var(--osm-town-amber);
    outline-offset: 3px;
}

/* Keep the login's accent inside its existing clipped card; no logo tinting. */
body.osm-branded-login :is(#loginform, #registerform, #lostpasswordform, #resetpassform)::before {
    background: var(--osm-town-blue);
    box-shadow: inset -56px 0 var(--osm-town-amber);
}

/* Preserve system focus/state colours in Windows High Contrast mode. */
@media (forced-colors: active) {
    .osm-cal-tab.is-active,
    .osm-bands-pill.is-active,
    .osm-night-save[aria-pressed="true"],
    .osm-dash__nav-item.is-active {
        background: Highlight;
        color: HighlightText;
        border-color: Highlight;
    }
    .osm-nav__list a:is(:hover, :focus-visible),
    .osm-nav__list :is(.current-menu-item, .current-menu-ancestor) > a,
    .osm-nav__list a[aria-current="page"],
    .osm-section__link,
    .osm-section__link:is(:hover, :focus-visible),
    .osm-footer__menu a:is(:hover, :focus-visible) { color: LinkText; }
}
