/* Production homepage editorial layer. Keep selectors scoped to .home-editorial. */
.home-editorial {
    --home-paper: #f4eddd;
    --home-paper-deep: #e9dfc9;
    --home-ink: #171914;
    --home-green: #264b35;
    --home-green-dark: #173523;
    --home-gold: #bd8e28;
    --home-gold-dark: #765715;
    --home-rule: rgba(23, 25, 20, 0.24);
    background: var(--home-paper);
    color: var(--home-ink);
}

.home-editorial a:focus-visible,
.home-editorial button:focus-visible,
.home-editorial input:focus-visible {
    outline: 3px solid var(--home-gold-dark);
    outline-offset: 3px;
}

.home-editorial .homepage-masthead {
    background: rgba(244, 237, 221, 0.96);
    border-color: var(--home-rule);
}

.editorial-intro {
    position: relative;
    max-width: 80rem;
    margin: 0 auto;
    padding: clamp(2.2rem, 5vw, 4.8rem) clamp(1rem, 4vw, 3rem) clamp(2rem, 4vw, 3.6rem);
    overflow: hidden;
}

.editorial-intro::after {
    position: absolute;
    right: -0.07em;
    bottom: -0.33em;
    color: rgba(38, 75, 53, 0.055);
    content: "PDX";
    font: 800 clamp(8rem, 25vw, 22rem)/1 "League Spartan", sans-serif;
    letter-spacing: -0.09em;
    pointer-events: none;
}

.editorial-intro-inner {
    position: relative;
    z-index: 1;
    min-width: 0;
}

.editorial-front-page {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: minmax(0, 3fr) minmax(20rem, 2fr);
    gap: clamp(2rem, 5vw, 4.5rem);
    align-items: start;
}

.editorial-kicker,
.feed-kicker,
.area-kicker {
    margin: 0 0 0.8rem;
    color: var(--home-green);
    font: 700 0.72rem/1.25 "Courier Prime", monospace;
    letter-spacing: 0.13em;
    text-transform: uppercase;
}

.editorial-intro h1 {
    max-width: 10ch;
    margin: 0;
    font: 800 clamp(3.2rem, 7vw, 6.8rem)/0.86 "League Spartan", sans-serif;
    letter-spacing: -0.06em;
}

.editorial-deck {
    max-width: 47rem;
    margin: 1.4rem 0 0;
    font: 500 clamp(1rem, 1.8vw, 1.25rem)/1.55 Inter, sans-serif;
}

.editorial-deck strong {
    color: var(--home-green-dark);
    font-family: "League Spartan", sans-serif;
    font-size: 1.12em;
}

.editorial-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.7rem;
    margin-top: 1.5rem;
}

.editorial-actions a,
.editorial-actions button {
    display: inline-flex;
    min-height: 46px;
    align-items: center;
    justify-content: center;
    padding: 0.75rem 1.1rem;
    border: 1px solid var(--home-green);
    border-radius: 0;
    font: 750 0.8rem/1 "League Spartan", sans-serif;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    transition: background-color 150ms ease, color 150ms ease, border-color 150ms ease;
}

.editorial-actions button {
    color: #fff;
    background: var(--home-green);
}

.editorial-actions a { color: var(--home-green-dark); background: transparent; }
.editorial-actions button:hover { background: var(--home-green-dark); }
.editorial-actions a:hover { color: var(--home-ink); background: #e7d7af; border-color: var(--home-gold); }

.editorial-submission-note {
    max-width: 44rem;
    margin: 0.8rem 0 0;
    color: #5e5b50;
    font: 700 0.68rem/1.5 "Courier Prime", monospace;
    letter-spacing: 0.055em;
    text-transform: uppercase;
}

.editorial-submission-note strong { color: var(--home-green-dark); }

.editorial-event-rail {
    position: relative;
    min-width: 0;
    border-top: 5px solid var(--home-ink);
    border-bottom: 1px solid var(--home-ink);
    background: rgba(251, 248, 240, 0.66);
}

.editorial-rail-heading {
    display: flex;
    min-height: 42px;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.55rem 0.7rem;
    border-bottom: 1px solid var(--home-ink);
}

.editorial-rail-heading p,
.editorial-rail-heading a {
    margin: 0;
    color: var(--home-green-dark);
    font: 800 0.68rem/1.2 "Courier Prime", monospace;
    letter-spacing: 0.11em;
    text-transform: uppercase;
}

.editorial-rail-heading a { text-decoration: underline; text-underline-offset: 0.18em; }
.editorial-rail-list { display: grid; }

.hero-rail-event {
    display: grid;
    grid-template-columns: 4.7rem minmax(0, 1fr);
    gap: 0.9rem;
    padding: 1rem 0.75rem;
    border-bottom: 1px solid var(--home-rule);
}

.hero-rail-event:last-child { border-bottom: 0; }
.hero-rail-date {
    align-self: start;
    padding: 0.55rem 0.35rem 0.45rem;
    border: 1px solid var(--home-ink);
    background: var(--home-paper);
    box-shadow: 3px 3px 0 var(--home-gold);
    color: var(--home-ink);
    text-align: center;
}

.hero-rail-date span { display: block; font: 800 0.72rem/1 "League Spartan", sans-serif; letter-spacing: 0.1em; }
.hero-rail-date strong { display: block; font: 800 2.6rem/0.85 "League Spartan", sans-serif; letter-spacing: -0.07em; }
.hero-rail-copy { min-width: 0; }
.hero-rail-position { margin: 0 0 0.35rem; color: var(--home-green); font: 800 0.62rem/1.2 "Courier Prime", monospace; letter-spacing: 0.11em; text-transform: uppercase; }
.hero-rail-title { margin: 0; font: 800 clamp(1.35rem, 2.4vw, 2rem)/0.97 "League Spartan", sans-serif; letter-spacing: -0.035em; }
.hero-rail-title a { color: var(--home-ink); text-decoration-thickness: 2px; text-underline-offset: 0.14em; }
.hero-rail-title a:hover { color: var(--home-green-dark); text-decoration-line: underline; }
.hero-rail-meta { display: flex; flex-wrap: wrap; gap: 0.3rem 0.65rem; margin: 0.65rem 0 0; color: #4f5048; font: 700 0.67rem/1.35 "Courier Prime", monospace; text-transform: uppercase; }
.hero-rail-meta span:not(:last-child)::after { margin-left: 0.65rem; color: var(--home-gold); content: "•"; }
.hero-rail-actions { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-top: 0.75rem; }
.hero-rail-actions a {
    display: inline-flex;
    min-height: 40px;
    align-items: center;
    justify-content: center;
    padding: 0.55rem 0.7rem;
    border: 1px solid var(--home-green);
    color: var(--home-green-dark) !important;
    font: 800 0.62rem/1 "League Spartan", sans-serif;
    letter-spacing: 0.055em;
    text-transform: uppercase;
}
.hero-rail-actions .hero-rail-action-primary,
.hero-rail-actions .hero-rail-action-primary:visited { background: var(--home-green); color: #fff !important; }
.hero-rail-actions a:hover { border-color: var(--home-gold); background: #ead9b1; color: var(--home-ink) !important; }
.hero-rail-actions .hero-rail-action-primary:hover,
.hero-rail-actions .hero-rail-action-primary:focus-visible { border-color: var(--home-green-dark); background: var(--home-green-dark); color: #fff !important; }
.editorial-rail-fallback { padding: 1.25rem; color: #4f5048; font: 500 0.85rem/1.5 Inter, sans-serif; }
.editorial-rail-fallback p { margin: 0 0 0.6rem; }
.editorial-rail-fallback a { color: var(--home-green-dark); font-weight: 750; text-decoration: underline; text-underline-offset: 0.2em; }

.editorial-feed {
    width: 100%;
    padding: clamp(2.2rem, 5vw, 4.5rem) 0 clamp(4rem, 8vw, 7rem);
    border-top: 1px solid var(--home-ink);
    background: #fbf8f0;
}

.editorial-feed-shell { max-width: 80rem; margin: 0 auto; padding: 0 clamp(0.9rem, 3vw, 2.5rem); }

.editorial-feed-heading {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: 1.25rem;
    margin-bottom: 1.2rem;
    padding-bottom: 0.85rem;
    border-bottom: 3px solid var(--home-ink);
}

.editorial-feed-heading h2,
.area-discovery h2 {
    margin: 0;
    color: var(--home-ink);
    font: 800 clamp(2rem, 4.5vw, 4rem)/0.95 "League Spartan", sans-serif;
    letter-spacing: -0.045em;
}

.editorial-feed-heading p:last-child {
    max-width: 30rem;
    margin: 0;
    color: #59584f;
    font: 400 0.75rem/1.45 "Courier Prime", monospace;
    text-align: right;
}

.home-editorial .editorial-filter-bar { width: 100%; max-width: none; margin: 0 0 1.25rem; padding: 0 0 1rem; border-bottom: 1px solid var(--home-rule); overflow-x: clip; }
.home-editorial .filter-pill,
.home-editorial #more-tags-btn {
    min-height: 44px;
    border-radius: 0;
    border-color: var(--home-rule);
    background: transparent;
    color: var(--home-ink);
    font-size: 0.76rem;
    white-space: nowrap;
}
.home-editorial .filter-pill:not([data-category="all"])::after {
    display: inline-grid;
    width: 0.72rem;
    margin-left: 0.35rem;
    content: "×";
    opacity: 0;
    place-items: center;
    transition: opacity 120ms ease;
}
.home-editorial .filter-pill.active:not([data-category="all"])::after { opacity: 1; }
.home-editorial .filter-pill:hover,
.home-editorial #more-tags-btn:hover { border-color: var(--home-gold); background: #f1e6cd; color: var(--home-green-dark); }
.home-editorial .filter-pill.active { border-color: var(--home-green) !important; background: var(--home-green) !important; box-shadow: none; }

.promotion-module {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 1.25rem;
    align-items: center;
    overflow: hidden;
    margin: 0 0 clamp(1.6rem, 3vw, 2.4rem);
    padding: clamp(1.1rem, 3vw, 1.65rem);
    border: 1px solid var(--home-gold-dark);
    border-left: 0.55rem solid var(--home-gold-dark);
    background: #eadcba;
}

.promotion-module::after {
    position: absolute;
    right: -0.03em;
    bottom: -0.35em;
    color: rgba(38, 75, 53, 0.07);
    content: "PDX";
    font: 800 clamp(4.5rem, 12vw, 8rem)/1 "League Spartan", sans-serif;
    pointer-events: none;
}

.promotion-module > * { position: relative; z-index: 1; }
.promotion-label { margin: 0 0 0.4rem; color: var(--home-green-dark); font: 800 0.62rem/1.2 "Courier Prime", monospace; letter-spacing: 0.12em; text-transform: uppercase; }
.promotion-module h2 { margin: 0; color: var(--home-ink); font: 800 clamp(1.45rem, 3vw, 2.35rem)/0.98 "League Spartan", sans-serif; letter-spacing: -0.035em; }
.promotion-module p:not(.promotion-label) { max-width: 48rem; margin: 0.55rem 0 0; color: #484940; font: 500 0.86rem/1.5 Inter, sans-serif; }
.promotion-module > a,
.promotion-module nav a,
.promotion-module nav button {
    display: inline-flex;
    min-height: 44px;
    align-items: center;
    justify-content: center;
    padding: 0.72rem 0.9rem;
    border: 1px solid var(--home-green-dark);
    background: var(--home-green);
    color: #fff !important;
    font: 800 0.68rem/1 "League Spartan", sans-serif;
    letter-spacing: 0.055em;
    text-transform: uppercase;
    white-space: nowrap;
}
.promotion-module > a:hover,
.promotion-module nav a:hover,
.promotion-module nav button:hover,
.promotion-module > a:focus-visible,
.promotion-module nav a:focus-visible,
.promotion-module nav button:focus-visible { background: var(--home-green-dark); color: #fff !important; }
.promotion-module-compact { margin-top: clamp(2.5rem, 6vw, 4.5rem); margin-bottom: 0; background: var(--home-paper); }
.promotion-module nav { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 0.4rem; }
.promotion-module-compact nav a,
.promotion-module-compact nav a:visited { background: transparent; color: var(--home-green-dark) !important; }
.promotion-module-compact nav a:hover,
.promotion-module-compact nav a:focus-visible { background: var(--home-green-dark); color: #fff !important; }
.promotion-module[data-promotion-kind="underwriting"] { border-color: var(--home-ink); border-left-color: var(--home-ink); background: #f0ece2; }

.home-editorial #event-grid {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: clamp(1.2rem, 2.4vw, 2rem);
    align-items: stretch;
}

.home-editorial .feed-card {
    width: auto !important;
    max-width: none !important;
    margin: 0;
}

.editorial-event-card {
    position: relative;
    display: flex;
    min-width: 0;
    flex-direction: column;
    overflow: hidden;
    border: 1px solid var(--home-rule);
    border-top: 4px solid var(--home-green-dark);
    border-radius: 0;
    background: var(--home-paper);
    box-shadow: 6px 6px 0 rgba(38, 75, 53, 0.11);
}

.editorial-media-stage {
    position: relative;
    width: 100%;
    aspect-ratio: 1 / 1;
    overflow: hidden;
    border-bottom: 1px solid var(--home-rule);
    background: #142019;
}

.home-editorial .card-blur-bg { filter: blur(22px) brightness(0.48) saturate(0.85); }
.home-editorial .card-inset-img {
    max-width: calc(100% - 1.7rem);
    max-height: calc(100% - 1.7rem);
    border-radius: 0;
    box-shadow: 0 10px 28px rgba(0, 0, 0, 0.42);
}

.event-date-lockup {
    position: absolute;
    z-index: 6;
    top: 0.75rem;
    left: 0.75rem;
    display: flex;
    width: 4.25rem;
    min-height: 4.8rem;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 0.35rem 0.4rem 0.25rem;
    border: 1px solid var(--home-ink);
    background: rgba(244, 237, 221, 0.96);
    color: var(--home-ink);
    box-shadow: 3px 3px 0 var(--home-gold);
    text-decoration: none;
}

.event-date-lockup span { font: 800 0.9rem/1 "League Spartan", sans-serif; letter-spacing: 0.1em; }
.event-date-lockup strong { font: 800 2.75rem/0.86 "League Spartan", sans-serif; letter-spacing: -0.07em; }

.event-age-badge {
    position: absolute;
    z-index: 6;
    right: 0.75rem;
    bottom: 0.75rem;
    min-height: 34px;
    padding: 0.45rem 0.65rem;
    border: 1px solid var(--home-ink);
    border-radius: 999px;
    background: var(--home-gold);
    color: var(--home-ink);
    font: 800 0.7rem/1 "Courier Prime", monospace;
}

.event-price-badge {
    position: absolute;
    z-index: 6;
    top: 0.75rem;
    right: 0.75rem;
    max-width: calc(100% - 6.25rem);
    padding: 0.45rem 0.65rem;
    border: 1px solid var(--home-ink);
    background: rgba(244, 237, 221, 0.96);
    color: var(--home-ink);
    font: 800 0.66rem/1.15 "Courier Prime", monospace;
    text-align: right;
    text-transform: uppercase;
}

.card-poster-wrap { background: var(--poster-bg); }
.card-poster-aura { background: radial-gradient(circle, var(--poster-accent), var(--poster-bg) 68%); }
.home-editorial .card-inset-poster {
    justify-content: space-between;
    border: 1px solid color-mix(in srgb, var(--poster-accent) 65%, white);
    border-radius: 0;
    background: var(--poster-bg);
    color: white;
}
.generated-poster-category { color: var(--poster-accent); font: 700 0.65rem/1.25 "Courier Prime", monospace; letter-spacing: 0.13em; text-transform: uppercase; }
.generated-poster-title { display: -webkit-box; overflow: hidden; color: #fff; font: 800 2rem/0.94 "League Spartan", sans-serif; letter-spacing: -0.045em; -webkit-box-orient: vertical; -webkit-line-clamp: 4; }
.poster-title-short { font-size: clamp(1.9rem, 4vw, 3.1rem); }
.poster-title-medium { font-size: clamp(1.55rem, 3vw, 2.35rem); }
.poster-title-long { font-size: clamp(1.2rem, 2.3vw, 1.8rem); }
.generated-poster-details { display: grid; gap: 0.22rem; color: var(--poster-detail); font: 700 0.73rem/1.3 "Courier Prime", monospace; text-transform: uppercase; }

.editorial-card-copy { display: flex; flex: 1; flex-direction: column; padding: 1rem 1rem 0.8rem; cursor: pointer; }
.event-category { margin: 0 0 0.5rem; color: var(--home-green); font: 700 0.66rem/1.2 "Courier Prime", monospace; letter-spacing: 0.1em; text-transform: uppercase; }
.editorial-event-title { margin: 0; font: 800 clamp(1.35rem, 2.4vw, 2rem)/0.98 "League Spartan", sans-serif; letter-spacing: -0.035em; }
.editorial-event-title a { color: var(--home-ink); text-decoration-thickness: 2px; text-underline-offset: 0.15em; }
.editorial-event-title a:hover { color: var(--home-green-dark); text-decoration-line: underline; }
.event-venue { margin: 0.7rem 0 0; color: var(--home-green-dark); font: 750 0.9rem/1.25 "League Spartan", sans-serif; }
.event-facts { display: flex; flex-wrap: wrap; gap: 0.35rem 0.75rem; margin-top: auto; padding-top: 0.75rem; color: #57574f; font: 700 0.68rem/1.35 "Courier Prime", monospace; text-transform: uppercase; }

.event-actions { display: flex; flex-wrap: wrap; gap: 0.45rem; padding: 0 1rem 1rem; }
.event-action {
    display: inline-flex;
    min-height: 44px;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    padding: 0.7rem 0.8rem;
    border: 1px solid var(--home-green);
    color: var(--home-green-dark);
    font: 800 0.68rem/1 "League Spartan", sans-serif;
    letter-spacing: 0.055em;
    text-transform: uppercase;
}
.event-action-primary,
.event-action-primary:visited { color: #fff !important; background: var(--home-green); }
.event-action-primary:hover,
.event-action-primary:focus-visible { border-color: var(--home-green-dark); background: var(--home-green-dark); color: #fff !important; }
.event-action-secondary:hover { border-color: var(--home-gold); background: #ead9b1; }

.area-discovery { margin-top: clamp(3.8rem, 8vw, 7rem); padding-top: 1.25rem; border-top: 3px solid var(--home-ink); }
.area-discovery-header { display: flex; align-items: end; justify-content: space-between; gap: 1rem; margin-bottom: 1.25rem; }
.area-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.8rem; }
.area-tile {
    position: relative;
    display: flex;
    min-height: 108px;
    align-items: end;
    overflow: hidden;
    padding: 1rem 3.2rem 0.9rem 1rem;
    border: 1px solid var(--home-rule);
    background: var(--home-paper);
    color: var(--home-ink);
    transition: transform 150ms ease, background-color 150ms ease, border-color 150ms ease;
}
.area-tile:hover { transform: translateY(-2px); border-color: var(--home-gold); background: #eadcba; }
.area-name { position: relative; z-index: 2; font: 800 clamp(1rem, 1.8vw, 1.35rem)/1 "League Spartan", sans-serif; }
.area-direction { display: block; margin-top: 0.45rem; color: #5e5b50; font: 700 0.58rem/1.2 "Courier Prime", monospace; letter-spacing: 0.1em; text-transform: uppercase; }
.area-abbreviation { position: absolute; right: 0.2rem; bottom: -0.22em; color: rgba(38, 75, 53, 0.13); font: 800 4.6rem/1 "League Spartan", sans-serif; letter-spacing: -0.08em; }
.area-arrow { position: absolute; top: 0.65rem; right: 0.7rem; color: var(--home-green); font-weight: 800; }

.home-editorial footer { background: var(--home-paper); border-color: var(--home-rule); }

@media (max-width: 900px) {
    .editorial-front-page { grid-template-columns: minmax(0, 1fr); gap: 2.5rem; }
    .editorial-intro h1 { max-width: 12ch; }
    .editorial-event-rail { max-width: 44rem; }
    .home-editorial #event-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .promotion-module { grid-template-columns: minmax(0, 1fr); }
    .promotion-module > a { justify-self: start; }
    .promotion-module nav { justify-content: flex-start; }
    .area-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 620px) {
    .home-editorial .homepage-masthead #area-dropdown-wrapper { display: none; }
    .editorial-intro { padding-top: 2rem; }
    .editorial-intro h1 { width: 100%; max-width: none; font-size: clamp(2.75rem, 14vw, 4.15rem); }
    .editorial-actions { display: grid; grid-template-columns: 1fr; }
    .editorial-actions a, .editorial-actions button { width: 100%; }
    .hero-rail-event { grid-template-columns: 4.15rem minmax(0, 1fr); gap: 0.75rem; padding: 0.9rem 0.65rem; }
    .hero-rail-date strong { font-size: 2.25rem; }
    .hero-rail-actions a { min-height: 44px; }
    .editorial-feed-heading { display: block; }
    .editorial-feed-heading p:last-child { margin-top: 0.65rem; text-align: left; }
    .home-editorial .editorial-filter-bar > div:first-child { justify-content: flex-start; }
    .home-editorial .filter-pill,
    .home-editorial #more-tags-btn { padding-right: 0.75rem; padding-left: 0.75rem; font-size: 0.72rem; }
    .promotion-module { padding: 1rem; }
    .promotion-module > a { width: 100%; }
    .promotion-module nav { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; }
    .promotion-module nav a,
    .promotion-module nav button { width: 100%; white-space: normal; }
    .home-editorial #event-grid { grid-template-columns: minmax(0, 1fr); gap: 1.5rem; }
    .event-date-lockup { top: 0.6rem; left: 0.6rem; width: 3.85rem; min-height: 4.35rem; }
    .event-date-lockup strong { font-size: 2.45rem; }
    .area-discovery-header { display: block; }
    .area-grid { gap: 0.6rem; }
    .area-tile { min-height: 92px; padding: 0.75rem 2.4rem 0.7rem 0.75rem; }
    .area-name { font-size: 0.92rem; }
    .area-direction { font-size: 0.5rem; }
    .area-abbreviation { font-size: 3.65rem; }
}

@media (prefers-reduced-motion: reduce) {
    .home-editorial *, .home-editorial *::before, .home-editorial *::after { scroll-behavior: auto !important; transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; }
}
