/* LNC BB28 Control Room — frontend design system (scoped) */
.bb28{
  --bb-void:#060a0f; --bb-panel:#0c1319; --bb-raised:#101a23;
  --bb-line:#1d2a36; --bb-line-hi:#2a3b4c;
  --bb-text:#e8eef4; --bb-mut:#8ea1b3; --bb-dim:#5c6d7d;
  --bb-cyan:#35e0ff; --bb-cyan-soft:rgba(53,224,255,.12);
  --bb-red:#ff3d4e; --bb-red-soft:rgba(255,61,78,.12);
  --bb-gold:#ffb02e; --bb-gold-soft:rgba(255,176,46,.12);
  --bb-green:#35d98b;
  --bb-disp:'Chakra Petch',sans-serif; --bb-body:'Archivo',sans-serif; --bb-mono:'IBM Plex Mono',monospace;
  font-family:var(--bb-body); color:var(--bb-text); line-height:1.6;
}
.bb28 *{box-sizing:border-box}
.bb28 a{color:var(--bb-cyan);text-decoration:none}
.bb28 a:hover{text-decoration:underline}
.bb28 button{font-family:inherit;cursor:pointer}

/* console / player */
.bb28-console{background:var(--bb-panel);border:1px solid var(--bb-line);border-radius:8px;overflow:hidden}
.bb28-chead{display:flex;align-items:center;gap:12px;padding:11px 14px;border-bottom:1px solid var(--bb-line);min-height:46px}
.bb28-badge{font-family:var(--bb-disp);font-weight:700;font-size:11px;letter-spacing:.16em;text-transform:uppercase;padding:4px 9px;border-radius:4px;display:inline-flex;align-items:center;gap:7px;flex:none}
.bb28-dot{width:6px;height:6px;border-radius:50%}
.bb28-badge-latest{color:var(--bb-cyan);border:1px solid var(--bb-cyan)}
.bb28-badge-latest .bb28-dot{background:var(--bb-cyan)}
.bb28-badge-live{color:#fff;background:var(--bb-red);box-shadow:0 0 16px rgba(255,61,78,.45)}
.bb28-badge-live .bb28-dot{background:#fff;animation:bb28pulse 1.4s infinite}
@keyframes bb28pulse{0%,100%{opacity:1}50%{opacity:.35}}
.bb28-ctitle{font-family:var(--bb-mono);font-size:12px;color:var(--bb-mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bb28-frame16{position:relative;aspect-ratio:16/9;background:#020507}
.bb28-frame16 iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.bb28-cfoot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-top:1px solid var(--bb-line);font-family:var(--bb-mono);font-size:10.5px;letter-spacing:.1em;color:var(--bb-dim);text-transform:uppercase;flex-wrap:wrap}
.bb28-factions{display:flex;gap:14px;align-items:center}
.bb28-linkish{background:none;border:none;color:var(--bb-cyan);font-family:var(--bb-mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;padding:0}

/* status panel */
.bb28-statuspanel{background:var(--bb-panel);border:1px solid var(--bb-line);border-radius:8px;padding:18px;display:flex;flex-direction:column;gap:14px}
.bb28-sp-title{font-family:var(--bb-disp);font-weight:700;font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--bb-mut);display:flex;align-items:center;gap:9px}
.bb28-sp-title::before{content:"";width:8px;height:8px;background:var(--bb-cyan);border-radius:2px;box-shadow:0 0 10px rgba(53,224,255,.6)}
.bb28-srow{display:flex;justify-content:space-between;align-items:baseline;gap:12px;border-bottom:1px dashed var(--bb-line);padding:8px 0}
.bb28-srow .k{font-family:var(--bb-mono);font-size:10.5px;letter-spacing:.16em;color:var(--bb-dim);text-transform:uppercase}
.bb28-srow .v{font-family:var(--bb-disp);font-weight:600;font-size:14px;letter-spacing:.04em;text-align:right}
.bb28-srow .v.gold{color:var(--bb-gold)}.bb28-srow .v.red{color:var(--bb-red)}.bb28-srow .v.green{color:var(--bb-green)}
.bb28-countdown{background:var(--bb-raised);border:1px solid var(--bb-line-hi);border-radius:6px;padding:16px 14px;text-align:center}
.bb28-cd-label{font-family:var(--bb-mono);font-size:10px;letter-spacing:.24em;color:var(--bb-red);text-transform:uppercase;margin-bottom:10px}
.bb28-cd-label.bb28-cyan{color:var(--bb-cyan)}
.bb28-cd-digits{display:flex;justify-content:center;gap:6px}
.bb28-cd-cell{min-width:58px}
.bb28-cd-cell b{display:block;font-family:var(--bb-disp);font-weight:700;font-size:clamp(26px,3.6vw,34px);color:var(--bb-cyan);text-shadow:0 0 22px rgba(53,224,255,.35);font-variant-numeric:tabular-nums;line-height:1}
.bb28-cd-cell span{display:block;font-family:var(--bb-mono);font-size:9px;letter-spacing:.2em;color:var(--bb-dim);margin-top:5px}
.bb28-cd-meta{font-family:var(--bb-mono);font-size:10.5px;color:var(--bb-mut);margin-top:12px;letter-spacing:.06em;line-height:1.7}
.bb28-bigday{display:block;font-family:var(--bb-disp);font-weight:700;font-size:clamp(42px,6.5vw,60px);letter-spacing:.05em;color:var(--bb-cyan);line-height:1;text-shadow:0 0 26px rgba(53,224,255,.35);font-variant-numeric:tabular-nums}

/* feeds alert */
.bb28-feeds-alert{display:flex;gap:11px;align-items:center;padding:11px 16px;border-radius:8px;font-family:var(--bb-mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--bb-line)}
.bb28-feeds-alert.down{background:var(--bb-red-soft);color:var(--bb-red);border-color:rgba(255,61,78,.4)}
.bb28-feeds-alert.blocked{background:var(--bb-gold-soft);color:var(--bb-gold);border-color:rgba(255,176,46,.4)}
.bb28-fa-dot{width:8px;height:8px;border-radius:50%;background:currentColor;animation:bb28pulse 1.4s infinite;flex:none}

/* filters + chips */
.bb28-filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.bb28-fbtn{font-family:var(--bb-disp);font-weight:600;font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--bb-mut);background:var(--bb-panel);border:1px solid var(--bb-line);border-radius:6px;padding:8px 14px;display:inline-flex;gap:8px;align-items:center;transition:all .15s}
.bb28-fbtn .n{font-family:var(--bb-mono);font-size:10px;color:var(--bb-dim)}
.bb28-fbtn:hover{border-color:var(--bb-line-hi);color:var(--bb-text)}
.bb28-fbtn.on{color:var(--bb-cyan);border-color:var(--bb-cyan);background:var(--bb-cyan-soft)}
.bb28-chips{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:20px}
.bb28-chip{font-family:var(--bb-mono);font-size:10.5px;letter-spacing:.08em;color:var(--bb-mut);border:1px dashed var(--bb-line-hi);border-radius:99px;padding:5px 12px;background:none;transition:all .15s}
.bb28-chip.on{color:var(--bb-gold);border-color:var(--bb-gold);border-style:solid;background:var(--bb-gold-soft)}

/* houseguest grid */
.bb28-hg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:13px}
.bb28-hg{position:relative;background:var(--bb-panel);border:1px solid var(--bb-line);border-radius:8px;overflow:hidden;text-align:left;padding:0;transition:transform .16s,border-color .16s}
.bb28-hg:hover{transform:translateY(-3px);border-color:var(--bb-cyan)}
.bb28-hg-face{position:relative;aspect-ratio:1/1;display:grid;place-items:center;overflow:hidden;background:linear-gradient(160deg,#123a4d,#0a1e2c)}
.bb28-hg-face img{width:100%;height:100%;object-fit:cover;margin:0}
.bb28-hg-init{font-family:var(--bb-disp);font-weight:700;font-size:40px;color:rgba(232,238,244,.9)}
.bb28-hg-face::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(0,0,0,.09) 0 1px,transparent 1px 4px);pointer-events:none}
.bb28-hg-cam{position:absolute;top:8px;left:8px;font-family:var(--bb-mono);font-size:9px;letter-spacing:.16em;color:rgba(232,238,244,.75);background:rgba(4,7,10,.55);border:1px solid rgba(255,255,255,.14);border-radius:4px;padding:2px 6px}
.bb28-hg-hoh{position:absolute;top:8px;right:8px;font-family:var(--bb-disp);font-weight:700;font-size:9.5px;letter-spacing:.14em;color:#1a1200;background:var(--bb-gold);border-radius:4px;padding:3px 6px}
.bb28-hg-body{display:block;padding:11px 12px 13px}
.bb28-hg-name{display:block;font-family:var(--bb-disp);font-weight:600;font-size:14.5px;letter-spacing:.03em;line-height:1.2;color:var(--bb-text)}
.bb28-hg-meta{display:block;font-family:var(--bb-mono);font-size:10px;color:var(--bb-dim);letter-spacing:.06em;margin-top:3px;text-transform:uppercase}
.bb28-hg.evicted .bb28-hg-face img,.bb28-hg.evicted .bb28-hg-init{filter:grayscale(1) brightness(.62)}
.bb28-hg.evicted{border-color:rgba(255,61,78,.35)}
.bb28-stamp{position:absolute;top:42%;left:50%;transform:translate(-50%,-50%) rotate(-11deg);border:2.5px solid var(--bb-red);color:var(--bb-red);font-family:var(--bb-disp);font-weight:700;font-size:12px;letter-spacing:.18em;text-transform:uppercase;padding:3px 9px;border-radius:3px;background:rgba(6,10,15,.6);white-space:nowrap}
.bb28-empty{border:1px dashed var(--bb-line-hi);border-radius:8px;padding:34px 20px;text-align:center;color:var(--bb-dim);font-family:var(--bb-mono);font-size:12px;letter-spacing:.08em;background:var(--bb-panel)}

/* modal (created by JS at body level) */
.bb28-modal{position:fixed;inset:0;z-index:99999;display:none;align-items:flex-start;justify-content:center;padding:6vh 16px 16px;background:rgba(3,6,10,.8);backdrop-filter:blur(5px);overflow-y:auto}
.bb28-modal.open{display:flex}
.bb28-modal-card{background:#101a23;border:1px solid #2a3b4c;border-radius:12px;max-width:620px;width:100%;padding:22px;position:relative}
.bb28-modal-x{position:absolute;top:12px;right:12px;width:34px;height:34px;border:1px solid #2a3b4c;background:#0c1319;color:#8ea1b3;border-radius:6px;font-size:15px}
.bb28-m-head{display:flex;gap:16px;align-items:center;margin-bottom:16px}
.bb28-m-ava{width:82px;height:82px;border-radius:10px;flex:none;display:grid;place-items:center;overflow:hidden;border:1px solid #2a3b4c;background:linear-gradient(160deg,#123a4d,#0a1e2c);font-family:var(--bb-disp);font-weight:700;font-size:28px;color:#e8eef4}
.bb28-m-ava img{width:100%;height:100%;object-fit:cover;margin:0}
.bb28-m-name{font-family:var(--bb-disp);font-weight:700;font-size:22px;letter-spacing:.03em;line-height:1.1;color:#e8eef4}
.bb28-m-meta{font-family:var(--bb-mono);font-size:11px;color:#8ea1b3;letter-spacing:.06em;margin-top:5px;text-transform:uppercase}
.bb28-m-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}
.bb28-m-stat{background:#0c1319;border:1px solid #1d2a36;border-radius:6px;padding:11px 8px;text-align:center}
.bb28-m-stat b{display:block;font-family:var(--bb-disp);font-weight:700;font-size:22px;color:#35e0ff}
.bb28-m-stat span{font-family:var(--bb-mono);font-size:8.5px;letter-spacing:.16em;color:#5c6d7d;text-transform:uppercase}
.bb28-m-bio{color:#8ea1b3;font-size:14px}

/* video wall */
.bb28-vid-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.bb28-vid{background:var(--bb-panel);border:1px solid var(--bb-line);border-radius:8px;overflow:hidden;text-align:left;padding:0;transition:transform .16s,border-color .16s}
.bb28-vid:hover{transform:translateY(-3px);border-color:var(--bb-cyan)}
.bb28-vid-thumb{position:relative;aspect-ratio:16/9;background:#020507;display:block}
.bb28-vid-thumb img{width:100%;height:100%;object-fit:cover;margin:0}
.bb28-vid-body{display:block;padding:11px 12px 13px}
.bb28-vid-title{display:block;font-weight:600;font-size:13.5px;line-height:1.35;color:var(--bb-text)}
.bb28-vid-date{display:block;font-family:var(--bb-mono);font-size:10px;color:var(--bb-dim);letter-spacing:.08em;margin-top:6px;text-transform:uppercase}
.bb28-note{font-family:var(--bb-mono);font-size:10.5px;color:var(--bb-dim);letter-spacing:.05em;margin-top:14px}

/* ticker */
.bb28-ticker{display:flex;align-items:center;height:36px;border:1px solid var(--bb-line);border-radius:8px;background:var(--bb-panel);overflow:hidden}
.bb28-ticker-label{flex:none;font-family:var(--bb-mono);font-size:10px;letter-spacing:.18em;color:var(--bb-red);border-right:1px solid var(--bb-line);padding:0 14px;height:100%;display:flex;align-items:center;background:var(--bb-void)}
.bb28-ticker-clip{overflow:hidden;flex:1}
.bb28-ticker-track{display:inline-flex;white-space:nowrap;animation:bb28tick 46s linear infinite;padding-left:100%}
.bb28-ticker:hover .bb28-ticker-track{animation-play-state:paused}
@keyframes bb28tick{to{transform:translateX(-100%)}}
.bb28-tick-item{font-family:var(--bb-mono);font-size:11.5px;color:var(--bb-mut);padding-right:52px}
.bb28-tick-item b{color:var(--bb-text);font-weight:500}
.bb28-tick-item .tk{color:var(--bb-cyan);letter-spacing:.1em}
.bb28-tick-item .tk.rumor{color:var(--bb-gold)}
.bb28-tick-item .tk.spoiler{color:var(--bb-red)}

/* spoiler log */
.bb28-log-tools{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}
.bb28-log-list{display:flex;flex-direction:column;gap:11px}
.bb28-log-item{display:grid;grid-template-columns:96px 1fr;gap:16px;background:var(--bb-panel);border:1px solid var(--bb-line);border-left:3px solid var(--bb-line-hi);border-radius:8px;padding:15px 17px}
.bb28-log-item[data-type="news"]{border-left-color:var(--bb-cyan)}
.bb28-log-item[data-type="rumor"]{border-left-color:var(--bb-gold)}
.bb28-log-item[data-type="spoiler"]{border-left-color:var(--bb-red)}
.bb28-log-rail{font-family:var(--bb-mono);color:var(--bb-dim);font-size:10px;letter-spacing:.1em;text-transform:uppercase;line-height:1.9}
.bb28-log-rail .dt{color:var(--bb-mut);font-size:11px}
.bb28-type-chip{font-family:var(--bb-mono);font-size:9px;letter-spacing:.18em;text-transform:uppercase;border-radius:3px;padding:2.5px 8px;display:inline-block;margin-bottom:7px}
.bb28-type-chip.news{color:var(--bb-cyan);background:var(--bb-cyan-soft)}
.bb28-type-chip.rumor{color:var(--bb-gold);background:var(--bb-gold-soft)}
.bb28-type-chip.spoiler{color:var(--bb-red);background:var(--bb-red-soft)}
.bb28-log-h{font-family:var(--bb-disp);font-weight:600;font-size:16px;letter-spacing:.02em;line-height:1.3;margin:0;color:var(--bb-text)}
.bb28-log-bodywrap{position:relative;margin-top:6px}
.bb28-log-body{color:var(--bb-mut);font-size:13.5px;margin:0;transition:filter .18s}
.bb28-spoiled .bb28-log-body{filter:blur(8px);user-select:none;pointer-events:none}
.bb28-reveal{position:absolute;inset:0;display:none;align-items:center;justify-content:center;font-family:var(--bb-mono);font-size:10px;letter-spacing:.24em;color:var(--bb-red);text-transform:uppercase;background:none;border:none;width:100%}
.bb28-spoiled .bb28-reveal{display:flex}

/* beat squad */
.bb28-tw-embeds{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:14px;margin-bottom:18px}
.bb28-tw-embeds .twitter-timeline{font-family:var(--bb-mono);font-size:11px;color:var(--bb-dim)}
.bb28-tw-embeds iframe{border-radius:8px}
.bb28-tw-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(205px,1fr));gap:12px}
.bb28-tw-card{display:flex;align-items:center;gap:12px;background:var(--bb-panel);border:1px solid var(--bb-line);border-radius:8px;padding:14px;transition:border-color .15s,transform .15s}
.bb28-tw-card.bb28-tw-plain{padding:12px 14px}
.bb28-tw-card:hover{border-color:var(--bb-cyan);transform:translateY(-2px);text-decoration:none}
.bb28-tw-ava{width:40px;height:40px;border-radius:8px;display:grid;place-items:center;font-family:var(--bb-disp);font-weight:700;font-size:16px;color:#eaf6fb;flex:none;background:linear-gradient(160deg,#123a4d,#0a1e2c)}
.bb28-tw-h{font-family:var(--bb-mono);font-size:11.5px;color:var(--bb-cyan);display:block}
.bb28-tw-n{font-size:12px;color:var(--bb-dim);display:block;margin-top:2px}

@media (max-width:560px){
  .bb28-m-stats{grid-template-columns:repeat(2,1fr)}
  .bb28-log-item{grid-template-columns:1fr;gap:8px}
  .bb28-log-rail{display:flex;gap:12px;align-items:center}
}
/* hero grid — player + status side by side on desktop, stacked on mobile.
   Used by [bb28_home]. Also raises overall scale on wide viewports. */
.bb28-hero-grid{display:grid;grid-template-columns:1.65fr 1fr;gap:22px;align-items:stretch;max-width:1500px;margin:0 auto}
@media (max-width:960px){.bb28-hero-grid{grid-template-columns:1fr}}
@media (min-width:1400px){
  .bb28-hero-grid{gap:28px}
  .bb28-ctitle{font-size:14px}
  .bb28-cfoot{font-size:12px;padding:13px 18px}
  .bb28-chead{padding:14px 18px;min-height:54px}
  .bb28-statuspanel{padding:24px}
  .bb28-cd-cell b{font-size:clamp(28px,2.6vw,46px)}
  .bb28-bigday{font-size:clamp(48px,4.5vw,80px)}
  .bb28-srow .v{font-size:16px}
  .bb28-srow .k{font-size:11.5px}
  .bb28-sp-title{font-size:13px}
}

/* social feed — bigger on desktop, contained on mobile */
.bb28-tw-embeds{grid-template-columns:repeat(auto-fit,minmax(360px,1fr))}
.bb28-tw-embeds iframe{width:100% !important}
@media (min-width:900px){.bb28-tw-embeds iframe{height:640px !important}}
@media (max-width:899px){.bb28-tw-embeds iframe{height:440px !important}}

/* articles preview grid — [bb28_articles] */
.bb28-art-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}
.bb28-art-card{background:var(--bb-panel);border:1px solid var(--bb-line);border-radius:8px;overflow:hidden;transition:transform .16s,border-color .16s}
.bb28-art-card:hover{transform:translateY(-3px);border-color:var(--bb-cyan)}
.bb28-art-thumb{position:relative;aspect-ratio:16/9;display:block;overflow:hidden}
.bb28-art-thumb img{width:100%;height:100%;object-fit:cover;margin:0}
.bb28-art-init{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-family:var(--bb-disp);font-weight:700;font-size:44px;color:rgba(232,238,244,.9)}
.bb28-art-chip{position:absolute;top:10px;left:10px;margin:0}
.bb28-art-body{padding:14px 16px 16px}
.bb28-art-title{font-family:var(--bb-disp);font-weight:600;font-size:16px;letter-spacing:.02em;line-height:1.3;margin:0 0 8px;color:var(--bb-text)}
.bb28-art-excerpt{color:var(--bb-mut);font-size:13.5px;margin:0 0 10px}
.bb28-art-link{font-family:var(--bb-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase}
.bb28-art-viewall{margin-top:18px;text-align:center}
.bb28-art-viewall .bb28-fbtn{display:inline-flex}

/* Patreon/Store CTA — [bb28_patreon_cta] */
.bb28-cta{display:flex;align-items:center;justify-content:space-between;gap:20px;background:linear-gradient(135deg,rgba(255,176,46,.14),rgba(53,224,255,.06));border:1px solid var(--bb-gold);border-radius:10px;padding:22px 26px;flex-wrap:wrap}
.bb28-cta-text p{color:var(--bb-mut);font-size:14px;margin-top:4px;max-width:420px}
.bb28-cta-actions{display:flex;gap:12px;flex-wrap:wrap}
.bb28-cta-btn{font-family:var(--bb-disp);font-weight:700;font-size:13px;letter-spacing:.1em;text-transform:uppercase;border-radius:7px;padding:13px 20px;display:inline-flex;align-items:center;gap:8px;transition:transform .15s,filter .15s}
.bb28-cta-btn:hover{transform:translateY(-2px);text-decoration:none;filter:brightness(1.1)}
.bb28-cta-patreon{background:var(--bb-gold);color:#1a1200}
.bb28-cta-shop{background:transparent;border:1.5px solid var(--bb-cyan);color:var(--bb-cyan)}
@media (max-width:640px){.bb28-cta{flex-direction:column;align-items:flex-start}.bb28-cta-actions{width:100%}.bb28-cta-btn{flex:1;justify-content:center}}

@media (prefers-reduced-motion:reduce){
  .bb28 *,.bb28-modal *{animation:none!important;transition:none!important}
}
