.stream-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(330px, 1fr));
    gap: 22px;
}

.stream-grid .stream-card {
    content-visibility: auto;
    contain-intrinsic-size: auto 320px;
}

.stream-card {
    position: relative;
    display: block;
    background: rgba(14, 13, 17, 0.5);
    border: 1px solid var(--line);
    text-decoration: none;
    color: var(--bone);
    transition: transform 0.45s var(--ease), border-color 0.45s var(--ease), box-shadow 0.45s var(--ease);
    isolation: isolate;
}

.stream-card::before,
.stream-card::after {
    content: "";
    position: absolute;
    width: 15px;
    height: 15px;
    z-index: 4;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.4s var(--ease);
}

.stream-card::before { top: 7px; left: 7px; border-top: 2px solid var(--crimson-2); border-left: 2px solid var(--crimson-2); }
.stream-card::after { bottom: 7px; right: 7px; border-bottom: 2px solid var(--crimson-2); border-right: 2px solid var(--crimson-2); }

.stream-card:hover {
    transform: translateY(-6px);
    border-color: rgba(178, 20, 32, 0.6);
    box-shadow: 0 28px 52px rgba(0, 0, 0, 0.62), 0 0 30px rgba(178, 20, 32, 0.16);
}

.stream-card:hover::before,
.stream-card:hover::after { opacity: 1; }

.stream-card__index {
    position: absolute;
    top: 9px;
    right: 13px;
    z-index: 4;
    font-family: var(--mono);
    font-size: 12px;
    letter-spacing: 1px;
    color: rgba(231, 224, 212, 0.34);
    pointer-events: none;
}

.stream-card__frame {
    position: relative;
    width: 100%;
    padding-bottom: 56.25%;
    background: rgba(12, 11, 15, 0.4);
    overflow: hidden;
}

.stream-card__frame iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
    z-index: 1;
    pointer-events: none;
}

.stream-card__offline {
    position: absolute;
    inset: 0;
    z-index: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 16px;
    background:
        radial-gradient(78% 78% at 50% 26%, rgba(178, 20, 32, 0.22), transparent 70%),
        linear-gradient(150deg, rgba(13, 2, 3, 0.88) 0%, rgba(26, 5, 7, 0.8) 55%, rgba(5, 5, 7, 0.94) 100%),
        url('../assets/bg.jpg') center / cover no-repeat;
}

.stream-card__art {
    width: 84px;
    height: 84px;
    object-fit: contain;
    opacity: 0.62;
    filter: drop-shadow(0 6px 18px rgba(0, 0, 0, 0.7)) drop-shadow(0 0 14px rgba(178, 20, 32, 0.32));
    transition: transform 0.5s var(--ease), opacity 0.5s var(--ease);
}

.stream-card:hover .stream-card__art { transform: scale(1.07); opacity: 0.82; }

.stream-card__offline-tag {
    font-family: var(--mono);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 4px;
    color: rgba(231, 224, 212, 0.55);
    text-transform: uppercase;
}

.stream-card__guard { position: absolute; inset: 0; z-index: 2; }

/* per-card sound control bar */
.stream-card__soundbar {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 5;
    display: flex;
    align-items: center;
    gap: 9px;
    width: 100%;
    padding: 8px 12px;
    color: var(--bone);
    text-align: left;
    background: linear-gradient(0deg, rgba(7, 5, 7, 0.92) 0%, rgba(7, 5, 7, 0.5) 58%, rgba(7, 5, 7, 0) 100%);
    border: 0;
    cursor: pointer;
    transition: background 0.25s var(--ease);
}
.stream-card__soundbar:hover { background: linear-gradient(0deg, rgba(64, 12, 17, 0.94) 0%, rgba(7, 5, 7, 0.4) 70%, transparent 100%); }

.stream-card__soundicon { display: inline-flex; flex-shrink: 0; color: var(--ash); transition: color 0.2s var(--ease); }
.stream-card__soundbar:hover .stream-card__soundicon { color: var(--bone); }
.stream-card__soundbar.is-on .stream-card__soundicon { color: var(--crimson-3); }

.stream-card__eq { display: inline-flex; align-items: flex-end; gap: 2.5px; height: 15px; flex: 1 1 auto; min-width: 0; }
.stream-card__eq i { display: block; width: 3px; height: 26%; background: var(--ash-2); border-radius: 1px; transition: background 0.2s var(--ease); }
.stream-card__soundbar.is-on .stream-card__eq i {
    background: linear-gradient(180deg, var(--crimson-3), var(--crimson));
    animation: eqBounce 0.85s ease-in-out infinite;
}
.stream-card__soundbar.is-on .stream-card__eq i:nth-child(2) { animation-delay: 0.13s; }
.stream-card__soundbar.is-on .stream-card__eq i:nth-child(3) { animation-delay: 0.28s; }
.stream-card__soundbar.is-on .stream-card__eq i:nth-child(4) { animation-delay: 0.06s; }
.stream-card__soundbar.is-on .stream-card__eq i:nth-child(5) { animation-delay: 0.2s; }
.stream-card__soundbar.is-on .stream-card__eq i:nth-child(6) { animation-delay: 0.34s; }
@keyframes eqBounce { 0%, 100% { height: 22%; } 50% { height: 100%; } }

.stream-card__soundlabel {
    flex-shrink: 0;
    font-family: var(--mono);
    font-size: 9.5px;
    font-weight: 700;
    letter-spacing: 1.3px;
    text-transform: uppercase;
    color: var(--ash);
    transition: color 0.2s var(--ease);
}
.stream-card__soundbar.is-on .stream-card__soundlabel { color: var(--crimson-2); }

.stream-card.has-sound { border-color: rgba(178, 20, 32, 0.6); }

@media (prefers-reduced-motion: reduce) {
    .stream-card__soundbar.is-on .stream-card__eq i { animation: none; height: 80%; }
}

.watch-main { max-width: 1280px; margin: 0 auto; padding: clamp(20px, 4vw, 48px) clamp(16px, 4vw, 40px) 60px; }
.watch-back {
    display: inline-block;
    margin-bottom: 22px;
    font-family: var(--mono);
    font-size: 12px;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--ash);
    text-decoration: none;
    border-bottom: 1px solid transparent;
    transition: color 0.2s var(--ease), border-color 0.2s var(--ease);
}
.watch-back:hover { color: var(--bone); border-color: var(--line-2); }
.watch-stage { max-width: 1180px; margin: 0 auto; }
.watch-player {
    position: relative;
    width: 100%;
    padding-bottom: 56.25%;
    background: rgba(8, 7, 10, 0.6);
    border: 1px solid var(--line);
    overflow: hidden;
    box-shadow: 0 30px 80px rgba(0, 0, 0, 0.55);
}
.watch-player__frame, .watch-player iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; pointer-events: none; }
.watch-empty {
    position: absolute; inset: 0;
    display: flex; align-items: center; justify-content: center;
    font-family: var(--serif); color: var(--ash); font-size: 1rem;
}
.watch-bar { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 20px; flex-wrap: wrap; }
.watch-id { display: flex; align-items: center; gap: 12px; }
.watch-platform { font-family: var(--mono); font-size: 11px; letter-spacing: 1px; color: #fff; background: var(--crimson); padding: 4px 9px; }
.watch-name { font-family: var(--display); font-size: clamp(1.3rem, 3vw, 2rem); letter-spacing: 2px; color: var(--bone); }
.watch-kick { white-space: nowrap; }

.stream-card__bar {
    position: relative;
    z-index: 3;
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 13px 16px;
    background: rgba(8, 6, 9, 0.55);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    border-top: 1px solid rgba(178, 20, 32, 0.32);
}

.stream-card__platform {
    font-family: var(--mono);
    font-size: 9px;
    font-weight: 700;
    letter-spacing: 2px;
    color: #0a0203;
    background: var(--crimson);
    padding: 4px 8px;
    text-transform: uppercase;
}

.stream-card__name {
    flex: 1;
    font-family: var(--display);
    font-size: 15px;
    font-weight: 600;
    font-stretch: 90%;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.stream-card__status {
    display: flex;
    align-items: center;
    gap: 7px;
    font-family: var(--mono);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 2px;
    color: var(--ash);
    text-transform: uppercase;
    transition: color 0.3s var(--ease);
}

.stream-card__status::before {
    content: "";
    width: 7px;
    height: 7px;
    background: var(--ash-2);
    transform: rotate(45deg);
    transition: background 0.3s var(--ease), box-shadow 0.3s var(--ease);
}

.stream-card:hover .stream-card__status { color: var(--crimson-2); }
.stream-card:hover .stream-card__status::before { background: var(--crimson-2); box-shadow: 0 0 10px var(--crimson-2); }

.stream-card__live {
    position: absolute;
    top: 10px;
    left: 10px;
    z-index: 6;
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 5px 10px;
    font-family: var(--mono);
    font-size: 9px;
    font-weight: 700;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: #fff;
    background: var(--crimson);
    box-shadow: 0 6px 16px rgba(178, 20, 32, 0.5);
    clip-path: polygon(0 0, 100% 0, 100% calc(100% - 6px), calc(100% - 6px) 100%, 0 100%);
}

.stream-card__live i {
    width: 7px;
    height: 7px;
    background: #fff;
    transform: rotate(45deg);
    animation: livePulse 1.3s ease-in-out infinite;
}

@keyframes livePulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.25; } }

.stream-card.is-live { border-color: rgba(178, 20, 32, 0.55); }

.stream-card__status.is-live { color: var(--crimson-2); }
.stream-card__status.is-live::before {
    background: var(--crimson-2);
    box-shadow: 0 0 9px var(--crimson-2);
    animation: livePulse 1.3s ease-in-out infinite;
}

.stream-card.is-offline { opacity: 0.78; }
.stream-card.is-offline .stream-card__offline { filter: grayscale(72%) brightness(0.62); transition: filter 0.4s var(--ease); }
.stream-card.is-offline .stream-card__art { opacity: 0.4; }
.stream-card.is-offline .stream-card__name { color: var(--ash); }
.stream-card.is-offline .stream-card__platform { background: var(--ash-2); color: #0a0a0a; }
.stream-card.is-offline:hover { opacity: 1; border-color: var(--line-2); transform: translateY(-4px); }
.stream-card.is-offline:hover .stream-card__offline { filter: grayscale(40%) brightness(0.78); }
.stream-card.is-offline::before, .stream-card.is-offline::after { display: none; }

.grid-empty--scan { animation: scanPulse 1.2s ease-in-out infinite; border-style: solid; border-color: rgba(178, 20, 32, 0.25); }
@keyframes scanPulse { 0%, 100% { opacity: 0.45; } 50% { opacity: 0.95; } }

.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 14px 30px;
    font-family: var(--display);
    font-size: 14px;
    font-weight: 600;
    font-stretch: 92%;
    letter-spacing: 2.5px;
    text-transform: uppercase;
    color: #0b0203;
    background: var(--crimson);
    border: none;
    text-decoration: none;
    transition: background 0.3s var(--ease), transform 0.3s var(--ease), box-shadow 0.3s var(--ease);
    clip-path: polygon(11px 0, 100% 0, 100% calc(100% - 11px), calc(100% - 11px) 100%, 0 100%, 0 11px);
}

.btn:hover { background: var(--crimson-2); box-shadow: 0 14px 30px rgba(178, 20, 32, 0.3); }
.btn:active { transform: translateY(1px); }
.btn:disabled { opacity: 0.5; }

.ghost-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 11px 22px;
    font-family: var(--mono);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--bone);
    background: transparent;
    border: 1px solid var(--line-2);
    transition: border-color 0.3s var(--ease), color 0.3s var(--ease), background 0.3s var(--ease);
}

.ghost-btn:hover { border-color: var(--crimson-2); color: var(--crimson-2); background: rgba(178, 20, 32, 0.06); }

.row-remove {
    padding: 8px 15px;
    font-family: var(--mono);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: var(--crimson-2);
    background: transparent;
    border: 1px solid rgba(178, 20, 32, 0.42);
    transition: background 0.25s var(--ease), color 0.25s var(--ease);
}

.row-remove:hover { background: var(--crimson); color: #0b0203; }

.field {
    width: 100%;
    padding: 13px 15px;
    font-family: var(--sans);
    font-size: 14px;
    letter-spacing: 0.4px;
    color: var(--bone);
    background: var(--panel-2);
    border: 1px solid var(--line);
    transition: border-color 0.25s var(--ease), box-shadow 0.25s var(--ease);
}

textarea.field { resize: vertical; line-height: 1.6; min-height: 84px; }

.field:focus {
    outline: none;
    border-color: var(--crimson);
    box-shadow: 0 0 0 1px rgba(178, 20, 32, 0.4), inset 0 0 22px rgba(178, 20, 32, 0.05);
}

.field::placeholder { color: var(--ash-2); }

.field-label {
    display: flex;
    flex-direction: column;
    gap: 8px;
    font-family: var(--mono);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 2.5px;
    color: var(--ash);
    text-transform: uppercase;
}

.form-msg {
    min-height: 16px;
    font-family: var(--mono);
    font-size: 11px;
    letter-spacing: 1px;
    color: var(--ash);
}

.form-msg--err { color: #f0606e; }
.form-msg--muted { color: var(--ash); }
.form-msg--warn { color: #d98a3c; }

.file-btn {
    display: inline-flex;
    align-items: center;
    padding: 11px 20px;
    font-family: var(--mono);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--bone);
    border: 1px dashed var(--line-2);
    transition: border-color 0.25s var(--ease), color 0.25s var(--ease);
}

.file-btn:hover { border-color: var(--crimson-2); color: var(--crimson-2); }
