.trout-upcoming{--trout-accent:#64748b;--trout-soft:#f1f5f9}.trout-upcoming__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem}.trout-upcoming__card{--trout-accent:#64748b;--trout-soft:#f1f5f9;position:relative;display:flex;min-width:0;flex-direction:column;overflow:hidden;border:1px solid #dfe5eb;border-top:5px solid var(--trout-accent);border-radius:14px;background:#fff;box-shadow:0 8px 28px rgba(15,23,42,.08);transition:transform .2s ease,box-shadow .2s ease}.trout-upcoming__card:hover{transform:translateY(-4px);box-shadow:0 14px 34px rgba(15,23,42,.14)}.trout-upcoming__card--team{--trout-accent:#2563eb;--trout-soft:#dbeafe}.trout-upcoming__card--individual{--trout-accent:#16a34a;--trout-soft:#dcfce7}.trout-upcoming__card--children{--trout-accent:#ca8a04;--trout-soft:#fef3c7}.trout-upcoming__card--adults{--trout-accent:#64748b;--trout-soft:#f1f5f9}.trout-upcoming__status{align-self:flex-end;margin:.8rem .8rem 0;padding:.3rem .62rem;border-radius:999px;font-size:.72rem;font-weight:800;line-height:1.2}.trout-upcoming__status--open{background:#dcfce7;color:#15803d}.trout-upcoming__status--upcoming{background:#fef3c7;color:#a16207}.trout-upcoming__status--closed{background:#fee2e2;color:#b91c1c}.trout-upcoming__status--unknown{background:#e2e8f0;color:#475569}.trout-upcoming__header{display:flex;gap:1rem;padding:.75rem 1.15rem .9rem}.trout-upcoming__date{display:flex;flex:0 0 72px;flex-direction:column;align-items:center;justify-content:center;padding:.65rem .4rem;border-radius:10px;background:var(--trout-soft);color:var(--trout-accent);font-size:.78rem;line-height:1.2;text-align:center;text-transform:uppercase}.trout-upcoming__day{font-size:1.9rem;font-weight:800;line-height:1}.trout-upcoming__date strong{margin-top:.3rem;font-size:.9rem}.trout-upcoming__heading{min-width:0}.trout-upcoming__heading h3{margin:.35rem 0 0;color:#0f172a;font-size:1.2rem;line-height:1.25}.trout-upcoming__types{display:flex;flex-wrap:wrap;gap:.35rem}.trout-upcoming__types span{padding:.2rem .48rem;border-radius:999px;background:var(--trout-soft);color:var(--trout-accent);font-size:.72rem;font-weight:700}.trout-upcoming__countdown{margin:.5rem 0 0;color:#475569;font-size:.8rem;font-weight:700}.trout-upcoming__registration-warning{margin:0 1.15rem .65rem;padding:.55rem .7rem;border:1px solid #fed7aa;border-radius:8px;background:#fff7ed;color:#c2410c;font-size:.8rem;font-weight:800}.trout-upcoming__details{display:grid;gap:0;margin:0;padding:0 1.15rem}.trout-upcoming__details>div{display:grid;grid-template-columns:minmax(110px,.8fr) minmax(0,1.2fr);gap:.65rem;padding:.55rem 0;border-top:1px solid #eef2f6}.trout-upcoming__details dt{color:#64748b;font-size:.78rem}.trout-upcoming__details dd{margin:0;color:#1e293b;font-size:.86rem;font-weight:600;overflow-wrap:anywhere}.trout-upcoming__description{padding:.9rem 1.15rem 0;color:#475569;font-size:.9rem;line-height:1.5}.trout-upcoming__description>:first-child{margin-top:0}.trout-upcoming__description>:last-child{margin-bottom:0}.trout-upcoming__footer{margin-top:auto;padding:1.15rem}.trout-upcoming__button{display:block;width:100%;box-sizing:border-box;padding:.75rem 1rem;border:0;border-radius:9px;color:#fff!important;font-weight:800;text-align:center;text-decoration:none!important;transition:transform .15s ease,filter .15s ease}.trout-upcoming__button[href]:hover{filter:brightness(.92);transform:translateY(-1px)}.trout-upcoming__button--open{background:#16a34a}.trout-upcoming__button--upcoming{background:#94a3b8;cursor:not-allowed}.trout-upcoming__button--closed{background:#dc2626;cursor:not-allowed}.trout-upcoming__button--default{background:#2563eb}.trout-upcoming__button--disabled{background:#cbd5e1;color:#64748b!important;cursor:not-allowed}.trout-upcoming__empty{padding:1rem;border:1px dashed #cbd5e1;border-radius:10px;color:#64748b;text-align:center}@media(max-width:1000px){.trout-upcoming__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:680px){.trout-upcoming__grid{grid-template-columns:1fr}.trout-upcoming__details>div{grid-template-columns:1fr;gap:.15rem}.trout-upcoming__header{align-items:flex-start}}
.trout-upcoming__registration-timer{margin:0 1.15rem .75rem;padding:.75rem;border:1px solid #fde68a;border-radius:10px;background:#fffbeb;color:#92400e;text-align:center}.trout-upcoming__registration-timer-label{display:block;margin-bottom:.35rem;font-size:.78rem;font-weight:800}.trout-upcoming__registration-timer-value{display:block;font-variant-numeric:tabular-nums;font-size:1.35rem;line-height:1.1;letter-spacing:.06em}.trout-upcoming__registration-timer-units{display:block;margin-top:.3rem;font-size:.64rem;color:#a16207}.trout-upcoming__registration-timer-value{overflow-wrap:anywhere}@media(max-width:420px){.trout-upcoming__registration-timer-value{font-size:1.1rem;letter-spacing:.03em}.trout-upcoming__registration-timer-units{font-size:.58rem}}
.trout-upcoming__registration-timer--closing{border-color:#86efac;background:#f0fdf4;color:#166534}.trout-upcoming__registration-timer--closing .trout-upcoming__registration-timer-units{color:#15803d}

/* Countdown is part of the registration button and inherits its phase color. */
.trout-upcoming__button .trout-upcoming__button-timer{display:block;margin:.65rem 0 0;padding:.55rem 0 0;border:0;border-top:1px solid rgba(255,255,255,.35);border-radius:0;background:transparent;color:inherit}
.trout-upcoming__additional-opening{display:block;font-size:.85rem;line-height:1.4;letter-spacing:normal}
.trout-upcoming__button-timer .trout-upcoming__registration-timer-label{font-size:.75rem;line-height:1.35}
.trout-upcoming__button-timer .trout-upcoming__registration-timer-value{font-size:1.35rem;line-height:1.2}
@media(max-width:420px){.trout-upcoming__button-timer .trout-upcoming__registration-timer-value{font-size:1.1rem}}

/* Full-width regulation action above the registration timer. */
.trout-upcoming__regulation{margin:0 1.15rem .75rem}
.trout-upcoming__regulation>.trout-upcoming__document-button{display:block;width:100%;box-sizing:border-box;background:var(--trout-soft);border-color:var(--trout-accent);color:#1e293b;animation:trout-regulation-colors 8s ease-in-out infinite}
@keyframes trout-regulation-colors{
    0%,100%{background-color:#fef3c7;border-color:#ca8a04}
    25%{background-color:#dcfce7;border-color:#16a34a}
    50%{background-color:#dbeafe;border-color:#2563eb}
    75%{background-color:#f1f5f9;border-color:#64748b}
}
.trout-upcoming__regulation>.trout-upcoming__document-button:hover,
.trout-upcoming__regulation>.trout-upcoming__document-button:focus-visible{animation-play-state:paused;color:#1e293b}
.trout-upcoming__regulation>.trout-upcoming__document-button:focus-visible{outline:3px solid #0f172a;outline-offset:3px}
@media(prefers-reduced-motion:reduce){
    .trout-upcoming__regulation>.trout-upcoming__document-button{animation:none;transition:none;transform:none}
}

/* Location stays above the event countdown, including narrow cards. */
.trout-upcoming__heading{flex:1}
.trout-upcoming__location{display:grid;gap:.25rem;margin:.65rem 0 0;padding:0;font-size:.8rem;line-height:1.4}
.trout-upcoming__location>div{display:flex;flex-wrap:wrap;gap:.15rem .45rem;min-width:0}
.trout-upcoming__location dt{margin:0;color:#64748b;font-weight:600}
.trout-upcoming__location dt::after{content:":"}
.trout-upcoming__location dd{margin:0;min-width:0;color:#1e293b;font-weight:600;overflow-wrap:anywhere}

/* Russian weekday in the competition date badge. */
.trout-upcoming__weekday{display:block;margin-top:.22rem;font-size:.62rem;font-weight:800;line-height:1.1;text-transform:none}
.trout-upcoming__date strong{margin-top:.16rem}

.trout-upcoming__documents{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:.55rem;margin-bottom:.65rem}.trout-upcoming__documents>.trout-upcoming__document-button{width:100%;min-width:0;box-sizing:border-box}.trout-upcoming__document-button{padding:.65rem .7rem;border:1px solid #cbd5e1;border-radius:9px;background:#fff;color:#334155;font:inherit;font-size:.82rem;font-weight:800;cursor:pointer;transition:border-color .15s ease,background .15s ease,transform .15s ease}.trout-upcoming__document-button:hover{border-color:var(--trout-accent);background:var(--trout-soft);color:var(--trout-accent);transform:translateY(-1px)}.trout-upcoming__pdf-modal[hidden]{display:none}.trout-upcoming__pdf-modal{position:fixed;z-index:10050;inset:0;display:flex;align-items:center;justify-content:center;padding:1.25rem}.trout-upcoming__pdf-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.72);backdrop-filter:blur(3px)}.trout-upcoming__pdf-dialog{position:relative;display:flex;width:min(1100px,96vw);height:min(88vh,900px);flex-direction:column;overflow:hidden;border-radius:14px;background:#fff;box-shadow:0 25px 70px rgba(0,0,0,.35)}.trout-upcoming__pdf-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.8rem 1rem;border-bottom:1px solid #e2e8f0;color:#0f172a}.trout-upcoming__pdf-actions{display:flex;align-items:center;gap:.75rem}.trout-upcoming__pdf-actions a{color:#2563eb;font-size:.85rem;font-weight:700;text-decoration:none}.trout-upcoming__pdf-actions button{display:grid;width:36px;height:36px;place-items:center;border:0;border-radius:8px;background:#f1f5f9;color:#334155;font-size:1.6rem;line-height:1;cursor:pointer}.trout-upcoming__pdf-frame{width:100%;height:100%;border:0;background:#e2e8f0}.trout-pdf-open{overflow:hidden}@media(max-width:560px){.trout-upcoming__pdf-modal{padding:0}.trout-upcoming__pdf-dialog{width:100vw;height:100vh;border-radius:0}.trout-upcoming__pdf-header{align-items:flex-start}.trout-upcoming__pdf-actions a{display:inline}}

/* Transparent competition cards (v1.7.0) */
.trout-upcoming .trout-upcoming__card{
    background:transparent!important;
    background-color:transparent!important;
    background-image:none!important;
    border-right:0!important;
    border-bottom:0!important;
    border-left:0!important;
    box-shadow:none!important;
    backdrop-filter:none!important;
    -webkit-backdrop-filter:none!important;
}
.trout-upcoming .trout-upcoming__card:hover{
    box-shadow:none!important;
}
.trout-upcoming .trout-upcoming__header,
.trout-upcoming .trout-upcoming__heading,
.trout-upcoming .trout-upcoming__details,
.trout-upcoming .trout-upcoming__description,
.trout-upcoming .trout-upcoming__footer{
    background:transparent!important;
    background-color:transparent!important;
    background-image:none!important;
    box-shadow:none!important;
}

/* Consolidated title icons and organizer logos (previously separate files). */
.trout-upcoming__title-line{display:flex;align-items:center;gap:.45rem;margin-top:.35rem;min-width:0}.trout-upcoming__title-line .trout-upcoming__competition-icon{display:block;flex:0 0 auto;width:2rem;height:2rem;color:var(--trout-accent)}.trout-upcoming__title-line .trout-upcoming__competition-icon--team{width:2.45rem}.trout-upcoming__title-line .trout-upcoming__competition-icon svg{display:block;width:100%;height:100%}.trout-upcoming__title-line h3{min-width:0;margin:0}.trout-upcoming__organizer-logo{display:block;flex:0 1 auto;max-width:92px;max-height:34px;margin-left:auto;object-fit:contain;opacity:.42;filter:saturate(.78) contrast(.92);mix-blend-mode:multiply}.trout-upcoming__organizer-logo:hover{opacity:.62}@media(max-width:520px){.trout-upcoming__organizer-logo{max-width:72px;max-height:28px}}
.trout-upcoming__button-label{display:block}.trout-upcoming__button-note{display:block;margin-top:.22rem;color:inherit;font-size:.7rem;font-weight:700;line-height:1.25}
.trout-upcoming .trout-upcoming__details dd.trout-upcoming__deadline--red{color:#dc2626!important;font-weight:800}
.trout-upcoming .trout-upcoming__details dd.trout-upcoming__deadline--green{color:#15803d!important;font-weight:800}
.trout-upcoming__registration-warning[hidden]{display:none!important}
.trout-upcoming .trout-upcoming__event-status{display:flex;align-items:center;justify-content:center;gap:.5rem;align-self:stretch;margin:.8rem .8rem 0;padding:.4rem .7rem;border-radius:8px;font-family:inherit;font-size:1rem;font-style:normal;font-weight:800;line-height:1.25;letter-spacing:normal;text-align:center}
.trout-upcoming__event-status-icon{flex:0 0 auto;font-size:1.25em;line-height:1.1}
.trout-upcoming .trout-upcoming__event-scheduled{background:transparent;color:#475569}
.trout-upcoming .trout-upcoming__event-confirmed{background:#dcfce7;color:#166534}
.trout-upcoming .trout-upcoming__event-cancelled{background:#fee2e2;color:#b91c1c}
/* Mark the full cancelled card without intercepting links or PDF controls. */
.trout-upcoming .trout-upcoming__card--cancelled { isolation:isolate; }
.trout-upcoming .trout-upcoming__card--cancelled::after {
    content:"";
    position:absolute;
    inset:8px;
    z-index:4;
    pointer-events:none;
    border-radius:inherit;
    background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cpath d='M0 100L100 0' fill='none' stroke='%23e51e26' stroke-width='3' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
}
/* Only status badges glow; the card itself stays unfilled. */
.trout-upcoming .trout-upcoming__card.trout-upcoming__card--cancelled{background:transparent!important;background-color:transparent!important}
.trout-upcoming .trout-upcoming__event-confirmed:not([data-event-started="true"]){
    --trout-status-glow:22,163,74;
    --trout-status-rest:#dcfce7;
    --trout-status-peak:#86efac;
    animation:trout-status-pulse 3s ease-in-out infinite;
}
.trout-upcoming .trout-upcoming__event-cancelled{
    --trout-status-glow:220,38,38;
    --trout-status-rest:#fee2e2;
    --trout-status-peak:#fecaca;
    animation:trout-status-pulse 3s ease-in-out infinite;
}
@keyframes trout-status-pulse{
    0%,100%{
        background-color:var(--trout-status-rest);
        box-shadow:inset 0 0 0 1px rgba(var(--trout-status-glow),.12),0 0 0 0 rgba(var(--trout-status-glow),0);
    }
    50%{
        background-color:var(--trout-status-peak);
        box-shadow:inset 0 0 0 2px rgba(var(--trout-status-glow),.65),0 0 16px 4px rgba(var(--trout-status-glow),.45);
    }
}
@media(prefers-reduced-motion:reduce){
    .trout-upcoming .trout-upcoming__event-confirmed:not([data-event-started="true"]),
    .trout-upcoming .trout-upcoming__event-cancelled{animation:none;box-shadow:none}
}

/* Event artwork is decorative only: the original header, badges, date,
   organizer logo, borders and registration controls remain unchanged. */
.trout-upcoming__card--spartak .trout-upcoming__spartak-content,
.trout-upcoming__card--brand-battle .trout-upcoming__battle-content{
    display:flex;
    flex:1 0 auto;
    flex-direction:column;
    min-width:0;
}
.trout-upcoming__card--spartak .trout-upcoming__spartak-flag,
.trout-upcoming__card--brand-battle .trout-upcoming__battle-art{
    position:relative;
    flex:0 0 auto;
    width:100%;
    aspect-ratio:3 / 2;
    pointer-events:none;
}
.trout-upcoming__card--spartak .trout-upcoming__spartak-flag{
    /* Fill the same frame as the trout without stretching the emblem. */
    background:#ce0710 url('../images/spartak-flag.png') center / cover no-repeat;
}
.trout-upcoming__card--brand-battle .trout-upcoming__battle-art{
    background:#092136 url('../images/brand-dance-poster.webp') center / contain no-repeat;
}
.trout-upcoming__card--spartak > .trout-upcoming__footer,
.trout-upcoming__card--brand-battle > .trout-upcoming__footer{margin-top:0}

/* Restore only the themed surfaces. No dimensions, borders, typography,
   format colours or organizer-logo rules are changed here. */
.trout-upcoming .trout-upcoming__card.trout-upcoming__card--spartak{
    background:#ce0710!important;
}
.trout-upcoming .trout-upcoming__card.trout-upcoming__card--brand-battle{
    background:#092136!important;
}
.trout-upcoming__card--spartak .trout-upcoming__spartak-content{
    background:linear-gradient(170deg,#fffafa,#fbe8e9);
}
.trout-upcoming__card--brand-battle .trout-upcoming__battle-content{
    background:linear-gradient(145deg,#f8fafc,#e4ecf3);
}
.trout-upcoming__card--spartak .trout-upcoming__spartak-flag::before,
.trout-upcoming__card--brand-battle .trout-upcoming__battle-art::before{
    content:"";
    position:absolute;
    inset:0;
    pointer-events:none;
}
.trout-upcoming__card--spartak .trout-upcoming__spartak-flag::before{
    background:linear-gradient(to bottom,#fbe8e9,transparent 27%);
}
.trout-upcoming__card--brand-battle .trout-upcoming__battle-art::before{
    background:linear-gradient(to bottom,#e4ecf3,transparent 4%);
}

/* Super Plastic uses the same 3:2 artwork frame and original card header. */
.trout-upcoming .trout-upcoming__card.trout-upcoming__card--super-plastic{
    background:#23272c!important;
}
.trout-upcoming__card--super-plastic .trout-upcoming__plastic-content{
    display:flex;flex:1 0 auto;flex-direction:column;min-width:0;
    background:linear-gradient(145deg,#fafafa,#e2e5e8);
}
.trout-upcoming__card--super-plastic .trout-upcoming__plastic-art{
    position:relative;flex:0 0 auto;width:100%;aspect-ratio:3 / 2;
    background:#23272c url('../images/super-plastic-lures.png') center / contain no-repeat;
    pointer-events:none;
}
.trout-upcoming__card--super-plastic .trout-upcoming__plastic-art::before{
    content:"";position:absolute;inset:0;pointer-events:none;
    background:linear-gradient(to bottom,#e2e5e8,transparent 19%);
}
.trout-upcoming__card--super-plastic > .trout-upcoming__footer{margin-top:0}

/* Same frame, header and footer dimensions as the existing event artwork. */
.trout-upcoming .trout-upcoming__card.trout-upcoming__card--lazy-day{background:#536440!important}
.trout-upcoming__card--lazy-day .trout-upcoming__lazy-content{
    display:flex;flex:1 0 auto;flex-direction:column;min-width:0;
    background:linear-gradient(145deg,#fafaf5,#f1f0e5);
}
.trout-upcoming__card--lazy-day .trout-upcoming__lazy-art{
    position:relative;flex:0 0 auto;width:100%;aspect-ratio:3 / 2;
    background:#536440 url('../images/lazy-day-angler.png') center / contain no-repeat;
    pointer-events:none;
}
.trout-upcoming__card--lazy-day .trout-upcoming__lazy-art::before{
    content:"";position:absolute;inset:0;pointer-events:none;
    background:linear-gradient(to bottom,#f1f0e5,transparent 4%);
}
.trout-upcoming__card--lazy-day > .trout-upcoming__footer{margin-top:0}

/* Absolute animation layers never change the existing 3:2 artwork frame. */
.trout-upcoming__battle-art canvas{position:absolute;inset:0;display:block;width:100%;height:100%;z-index:1;pointer-events:none}
.trout-upcoming__battle-art::before{z-index:2}
.trout-upcoming__plastic-art canvas,
.trout-upcoming__spartak-flag canvas{position:absolute;inset:0;display:block;width:100%;height:100%;z-index:1;pointer-events:none}
.trout-upcoming__plastic-art::before,
.trout-upcoming__spartak-flag::before{z-index:2}
.trout-upcoming__plastic-art .trout-upcoming__animation-toggle,
.trout-upcoming__spartak-flag .trout-upcoming__animation-toggle{
    position:absolute;right:8px;bottom:8px;z-index:3;display:grid;place-items:center;
    width:44px;height:44px;padding:0;border:1px solid rgba(255,255,255,.65);border-radius:50%;
    background:rgba(15,23,42,.85);color:#fff;font:700 18px/1 Arial,sans-serif;
    pointer-events:auto;cursor:pointer;
}
.trout-upcoming__animation-toggle:focus-visible{outline:3px solid #fff;outline-offset:2px}
