/* Wing, Shot & Fall -- brand overrides layered on top of Source's screen.css.
   Loaded after built/screen.css in default.hbs, so these rules win on
   equal-specificity selectors via CSS source order -- no need to touch or
   rebuild screen.css itself. */

@font-face {
    font-family: "Archivo";
    font-style: normal;
    font-weight: 700 800;
    font-display: swap;
    src: url("../fonts/archivo-variable-latin.woff2") format("woff2");
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
    --gh-font-heading: "Archivo", var(--font-sans);
    --wsf-black: #1A1A1A;
    --wsf-amber: #B9762A;
    --wsf-brown: #8B5A2B;
    --wsf-green: #2F6B36;
    --wsf-grey: #9C9C9C;
}

/* The site logo is a detailed illustrated badge (dog head, hunter silhouette,
   wordmark banner) that reads as an illegible blob at Source's default 40px
   navbar height. Render it larger so the artwork is actually recognizable. */
.gh-navigation-logo img,
.gh-footer-logo img {
    max-height: 72px;
}

/* Tag pills -- Source hides .gh-card-tag by default outside header carousels,
   and .gh-article-tag has no background by default. We want a colored pill
   everywhere a tag appears. */
.gh-card-tag,
.gh-article-tag {
    display: inline-block;
    padding: 3px 9px;
    font-size: 1.1rem;
    font-weight: 600;
    text-decoration: none;
    color: #fff;
    background-color: var(--wsf-grey);
}

[data-tag="hunts"] { background-color: var(--wsf-amber); }
[data-tag="training"] { background-color: var(--wsf-green); }
[data-tag="gear"] { background-color: var(--wsf-black); }
[data-tag="conservation"] { background-color: #3E6B6B; }
[data-tag="care"] { background-color: #8A6D3B; }
[data-tag="testing"] { background-color: #4A5A6B; }
[data-tag="uncategorized"] { background-color: #6B6B6B; }

/* Text-only cards (no feature_image) get a slightly larger title since
   there's no image to anchor the card visually. */
.gh-card.no-post-image .gh-card-title {
    font-size: calc(2.1rem * var(--factor, 1));
}

/* home.hbs places .gh-feed/.gh-more directly inside .gh-container-inner
   (a 16-column CSS grid) without the .gh-main wrapper upstream Source
   normally uses there -- which is what carries the grid-column:1/-1 full-
   width span. Without it, .gh-feed auto-placed into a single 1-of-16-wide
   column, explaining the narrow-column layout collapse. */
.gh-container.is-grid .gh-feed,
.gh-container.is-grid .gh-more {
    grid-column: 1 / -1;
}

/* Homepage hero (latest post) -- "blurred fill": the full photo is always
   shown via object-fit:contain, backed by a blurred/scaled copy of the same
   photo filling the rest of the banner. Guarantees the subject is never
   cropped, regardless of the source photo's aspect ratio. */
.wsf-hero {
    display: block;
    margin-bottom: calc(var(--grid-gap) * 1.5);
}

.wsf-hero-image {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    background-color: var(--wsf-black);
}

.wsf-hero-image-blur,
.wsf-hero-image-full {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.wsf-hero-image-blur {
    object-fit: cover;
    filter: blur(20px) brightness(0.7);
    transform: scale(1.1);
}

.wsf-hero-image-full {
    object-fit: contain;
}

.wsf-hero-caption {
    padding: 24px max(4vmin, 20px) 0;
}

.wsf-hero-title {
    font-size: clamp(2.8rem, 1.36vw + 2.25rem, 4rem);
    margin: 8px 0 12px;
}

/* Single post hero -- same blurred-fill technique, taller, on its own class
   (gh-article-feature, not gh-article-image) so it doesn't collide with
   .gh-article-image, which upstream Source also uses for the round author
   avatar on /author/ pages. */
.gh-article-feature {
    position: relative;
    grid-column: wide;
    margin-top: 40px;
    aspect-ratio: 21 / 9;
    overflow: hidden;
    background-color: var(--wsf-black);
}

.gh-archive .gh-article-feature {
    grid-column: auto;
    margin-top: 0;
}

.gh-article-feature-blur,
.gh-article-feature-full {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.gh-article-feature-blur {
    object-fit: cover;
    filter: blur(24px) brightness(0.7);
    transform: scale(1.1);
}

.gh-article-feature-full {
    object-fit: contain;
}

.gh-article-feature figcaption {
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    padding: 8px 16px;
    font-size: 1.3rem;
    color: #fff;
    background: rgb(0 0 0 / 0.5);
}

/* Author bio box at the end of a post */
.wsf-author-bio {
    display: flex;
    gap: 16px;
    align-items: flex-start;
    margin-top: 48px;
    padding-top: 32px;
    border-top: 1px solid var(--color-border);
}

.wsf-author-bio img,
.wsf-author-bio svg {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    flex-shrink: 0;
}

.wsf-author-bio-name {
    font-weight: 700;
    margin-bottom: 4px;
}

.wsf-author-bio-text {
    color: var(--color-secondary-text);
    font-size: 1.5rem;
    line-height: 1.5;
}
