/* ═══════════════════════════════════════════════════════
   ANDA RENO HUB — styles.css
   CX Immersive dark base · Liquid Glass · Sith Synthwave
   ═══════════════════════════════════════════════════════ */

/* ─── Accessibility ──────────────────────────────────── */
.skip-link {
  position: absolute;
  top: -100%;
  left: 0;
  padding: 10px 18px;
  background: #0a0a12;
  color: #00e5ff;
  font-size: 0.9rem;
  font-weight: 600;
  border-bottom-right-radius: 8px;
  z-index: 99999;
  text-decoration: none;
  transition: top 0.15s;
}
.skip-link:focus {
  top: 0;
}

/* ─── Aurebesh Web Font ─────────────────────────────── */
@font-face {
  font-family: 'Aurebesh';
  src: url('https://cdn.jsdelivr.net/gh/LogicismDev/aurebesh-discord-font/fonts/AurebeshAF-Canon.woff2') format('woff2');
  font-weight: 400;
  font-display: swap;
}

/* ─── Reset ─────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { font-size: 16px; scroll-behavior: smooth; }
body {
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Helvetica, Arial, sans-serif;
  background: #050b14; color: #e8eaf0;
  min-height: 100vh; overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}
a { text-decoration: none; color: inherit; }
h1, h2, h3, h4, h5, h6 {
  font-family: 'Poppins', sans-serif;
  font-weight: 900;
  text-transform: uppercase;
}

/* ─── Tokens ─────────────────────────────────────────── */
:root {
  --bg:            #050b14;
  --surface:       rgba(10, 18, 32, 0.55);
  --surface-hover: rgba(16, 26, 46, 0.70);
  --border:        rgba(255,255,255,0.08);
  --border-hover:  rgba(255,255,255,0.16);

  /* Sith Synthwave palette */
  --sith-red:    #cc1034;
  --sith-glow:   rgba(204,16,52,0.35);
  --sith-dim:    rgba(204,16,52,0.12);
  --cyan:        #00e5ff;
  --cyan-dim:    rgba(0,229,255,0.15);
  --cyan-glow:   rgba(0,229,255,0.35);
  --magenta:     #ff2d78;
  --magenta-dim: rgba(255,45,120,0.15);
  --magenta-glow:rgba(255,45,120,0.35);
  --purple:      #b44dff;
  --purple-dim:  rgba(180,77,255,0.15);
  --purple-glow: rgba(180,77,255,0.35);
  --orange:      #e5a500;
  --orange-dim:  rgba(229,165,0,0.15);
  --orange-glow: rgba(229,165,0,0.35);
  --green:       #00ff9f;
  --green-dim:   rgba(0,255,159,0.15);
  --green-glow:  rgba(0,255,159,0.35);
  --red:         #ff4444;
  --red-dim:     rgba(255,68,68,0.15);

  --font-display: 'Poppins', sans-serif;
  --font-body:    'Inter', -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Helvetica, Arial, sans-serif;
  --font-mono:    'JetBrains Mono', 'Fira Code', 'Inter Mono', 'Courier New', monospace;
  --font-aurebesh:'Aurebesh', monospace;
  --radius-card:  22px;
  --radius-btn:   12px;
  --blur:         40px;
  --ease:         cubic-bezier(0.2, 0.8, 0.2, 1);
}

/* ─── Background ─────────────────────────────────────── */
.bg-base {
  position:fixed; inset:0; z-index:-4;
  background: radial-gradient(ellipse 80% 50% at 50% -10%, #0d1a2e 0%, #050b14 60%);
}
.bg-grid {
  position:fixed; inset:0; z-index:-3;
  background-image:
    linear-gradient(rgba(0,229,255,0.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0,229,255,0.04) 1px, transparent 1px);
  background-size: 48px 48px;
  mask-image: radial-gradient(ellipse 100% 100% at 50% 0%, black 30%, transparent 80%);
}
.bg-glow { position:fixed; z-index:-2; border-radius:50%; filter:blur(120px); pointer-events:none; }
.bg-glow--cyan    { width:600px; height:400px; top:-100px; left:-150px; background:rgba(0,229,255,0.12); }
.bg-glow--magenta { width:500px; height:350px; top:20%; right:-100px; background:rgba(255,45,120,0.10); }
.bg-glow--purple  { width:700px; height:500px; bottom:-150px; left:50%; transform:translateX(-50%); background:rgba(180,77,255,0.08); }
.scanlines {
  position:fixed; inset:0; z-index:-1; pointer-events:none;
  background: repeating-linear-gradient(0deg, transparent, transparent 2px, rgba(0,0,0,0.03) 2px, rgba(0,0,0,0.03) 4px);
}

/* ─── Aurebesh Ticker (ambient decoration) ──────────── */
.aurebesh-ticker {
  position:fixed; bottom:0; left:0; right:0; z-index:-1;
  height:24px; overflow:hidden; pointer-events:none;
  opacity:0.08;
}
.aurebesh-ticker__track {
  display:flex; white-space:nowrap;
  font-family:var(--font-aurebesh); font-size:0.75rem;
  color:rgba(204,16,52,0.35); letter-spacing:0.3em;
  animation:ticker 80s linear infinite;
}
@keyframes ticker {
  from { transform:translateX(0); }
  to   { transform:translateX(-50%); }
}

/* ─── Header ─────────────────────────────────────────── */
.site-header {
  position:sticky; top:0; z-index:100;
  height:68px; padding:0 24px;
  display:flex; align-items:center;
  background:rgba(5,11,20,0.78);
  -webkit-backdrop-filter:blur(var(--blur)) saturate(1.4);
  backdrop-filter:blur(var(--blur)) saturate(1.4);
  border-bottom:1px solid var(--border);
}
.header-inner { width:100%; max-width:1200px; margin:0 auto; display:flex; align-items:center; justify-content:space-between; }

.wordmark { display:flex; align-items:center; gap:10px; text-decoration:none; }
.wordmark__icon { height:32px; width:auto; display:block; }
.wordmark__text {
  font-family:var(--font-display); font-size:1.15rem; font-weight:900;
  text-transform:uppercase; letter-spacing:0.08em;
  background:linear-gradient(135deg, var(--cyan), var(--purple));
  -webkit-background-clip:text; -webkit-text-fill-color:transparent;
  background-clip:text;
}

.header-right { display:flex; align-items:center; gap:14px; }
.header-tagline {
  font-family:var(--font-body); font-size:0.75rem; letter-spacing:0.18em;
  color:rgba(255,255,255,0.25); text-transform:uppercase;
}

/* ─── Auth Button/Menu — now in auth-widget.css ────── */

/* ─── Announcement Banner ────────────────────────────── */
.announcement-banner {
  position:relative; z-index:90;
  padding:0 24px;
  animation:fadeDown 0.4s var(--ease) both;
}
.announcement-banner[hidden] { display:none; }
@keyframes fadeDown { from{opacity:0;transform:translateY(-8px)} to{opacity:1;transform:translateY(0)} }

.banner__inner {
  max-width:1200px; margin:0 auto;
  display:flex; align-items:center; gap:12px;
  padding:11px 18px; border-radius:var(--radius-card);
  -webkit-backdrop-filter:blur(var(--blur));
  backdrop-filter:blur(var(--blur));
  border:1px solid var(--border);
  margin-top:12px;
}
.announcement-banner--info    .banner__inner { background:rgba(0,229,255,0.08);  border-color:rgba(0,229,255,0.25); }
.announcement-banner--warning .banner__inner { background:rgba(229,165,0,0.08); border-color:rgba(229,165,0,0.25); }
.announcement-banner--critical .banner__inner{ background:rgba(204,16,52,0.10); border-color:rgba(204,16,52,0.35); }
.banner__icon { font-size:1.1rem; flex-shrink:0; line-height:1; }
.banner__message { flex:1; font-size:0.82rem; line-height:1.5; color:rgba(255,255,255,0.85); }
.banner__link {
  font-family:var(--font-body); font-size:0.75rem; letter-spacing:0.08em;
  color:var(--cyan); white-space:nowrap; flex-shrink:0;
  padding:3px 10px; border-radius:999px;
  border:1px solid rgba(0,229,255,0.3); transition:background 0.2s;
}
.banner__link:hover { background:var(--cyan-dim); }
.banner__link[hidden] { display:none; }
.banner__dismiss {
  background:none; border:none; cursor:pointer; padding:0; flex-shrink:0;
  min-width:44px; min-height:44px;
  color:rgba(255,255,255,0.35); display:flex; align-items:center; justify-content:center;
  border-radius:6px; transition:all 0.2s;
}
.banner__dismiss:hover { color:rgba(255,255,255,0.75); background:rgba(255,255,255,0.08); }
.banner__dismiss svg { width:14px; height:14px; }

/* ─── Main Layout ────────────────────────────────────── */
.hub { max-width:1200px; margin:0 auto; padding:40px 24px 100px; display:flex; flex-direction:column; gap:56px; animation:page-in 0.6s ease both; }
@keyframes page-in { from{opacity:0;transform:translateY(12px)} to{opacity:1;transform:translateY(0)} }

/* ─── Welcome Hero (unauthenticated visitors) ────────── */
.welcome-hero {
  position:relative;
  text-align:center;
  padding:36px 16px 32px;
  border-radius:var(--radius-card);
  background:linear-gradient(135deg, rgba(0,229,255,0.06) 0%, rgba(180,77,255,0.06) 50%, rgba(255,45,120,0.04) 100%);
  border:1px solid rgba(0,229,255,0.12);
  overflow:hidden;
  animation:fadeUp 0.5s var(--ease) both;
}
.welcome-hero[hidden] { display:none; }
.welcome-hero__glow {
  position:absolute; inset:0; z-index:0; pointer-events:none;
  background:radial-gradient(ellipse 60% 80% at 50% 0%, rgba(0,229,255,0.12) 0%, transparent 70%);
}
.welcome-hero__content { position:relative; z-index:1; }
.welcome-hero__logo {
  width:64px; height:64px; margin:0 auto 18px;
  filter:drop-shadow(0 0 20px rgba(0,229,255,0.4));
  animation:pulse-glow 3s ease-in-out infinite alternate;
}
@keyframes pulse-glow {
  from { filter:drop-shadow(0 0 16px rgba(0,229,255,0.3)); }
  to   { filter:drop-shadow(0 0 28px rgba(180,77,255,0.5)); }
}
.welcome-hero__title {
  font-family:var(--font-display); font-size:1.4rem; font-weight:900;
  background:linear-gradient(135deg, var(--cyan), var(--purple));
  -webkit-background-clip:text; -webkit-text-fill-color:transparent;
  background-clip:text; margin-bottom:10px;
}
.welcome-hero__subtitle {
  font-family:var(--font-body); font-size:0.82rem; font-weight:400;
  color:rgba(255,255,255,0.55); max-width:500px; margin:0 auto 28px;
  line-height:1.6;
}
.welcome-hero__actions {
  display:flex; justify-content:center; gap:14px; flex-wrap:wrap;
}
.welcome-hero__btn {
  display:inline-flex; align-items:center; gap:8px;
  padding:11px 22px; border-radius:var(--radius-btn);
  font-family:var(--font-body); font-size:0.82rem; font-weight:700;
  letter-spacing:0.04em; cursor:pointer;
  transition:all 0.25s var(--ease);
  border:none; min-height:44px;
}
.welcome-hero__btn svg { width:18px; height:18px; }
.welcome-hero__btn--primary {
  background:linear-gradient(135deg, var(--cyan), var(--purple));
  color:#050b14;
  box-shadow:0 4px 24px rgba(0,229,255,0.25);
}
.welcome-hero__btn--primary:hover {
  box-shadow:0 6px 32px rgba(0,229,255,0.4);
  transform:translateY(-1px);
}
.welcome-hero__btn--secondary {
  background:rgba(255,255,255,0.06);
  color:var(--cyan);
  border:1px solid rgba(0,229,255,0.25);
}
.welcome-hero__btn--secondary:hover {
  background:rgba(0,229,255,0.12);
  box-shadow:0 4px 20px rgba(0,229,255,0.2);
  transform:translateY(-1px);
}
.welcome-hero__dismiss {
  position:absolute; top:14px; right:14px; z-index:2;
  width:44px; height:44px; border-radius:50%;
  background:rgba(255,255,255,0.06); border:1px solid rgba(255,255,255,0.1);
  color:rgba(255,255,255,0.35); cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  transition:all 0.2s var(--ease);
}
.welcome-hero__dismiss svg { width:14px; height:14px; }
.welcome-hero__dismiss:hover {
  color:rgba(255,255,255,0.7); background:rgba(255,255,255,0.1);
  border-color:rgba(255,255,255,0.2);
}
@keyframes fadeUp { from{opacity:0;transform:translateY(12px)} to{opacity:1;transform:translateY(0)} }
/* Mobile-first Welcome Hero scale-up */
@media (min-width:481px) {
  .welcome-hero { padding:48px 24px 44px; }
  .welcome-hero__title { font-size:1.8rem; }
  .welcome-hero__subtitle { font-size:0.92rem; }
  .welcome-hero__btn { padding:12px 28px; font-size:0.88rem; }
}

/* ─── Section Labels ─────────────────────────────────── */
.section-label-row { display:flex; align-items:center; gap:16px; margin-bottom:20px; }
.section-label { display:flex; align-items:center; gap:14px; margin-bottom:20px; }
.section-label--inline { flex:1; margin-bottom:0; }
.section-label__text {
  font-family:var(--font-display); font-size:0.78rem; font-weight:900; letter-spacing:0.22em;
  text-transform:uppercase; color:var(--cyan); white-space:nowrap;
}
.section-label__line { flex:1; height:1px; background:linear-gradient(90deg,transparent,var(--cyan-dim),transparent); }

.details-toggle {
  display:flex; align-items:center; gap:6px;
  padding:6px 14px; border-radius:999px;
  background:var(--cyan-dim); border:1px solid rgba(0,229,255,0.2);
  color:var(--cyan); cursor:pointer; flex-shrink:0;
  font-family:var(--font-body); font-size:0.75rem; letter-spacing:0.1em;
  transition:all 0.25s var(--ease);
}
.details-toggle:hover { background:rgba(0,229,255,0.22); box-shadow:0 0 16px var(--cyan-glow); }
.app-btn:focus-visible, .details-toggle:focus-visible { outline:2px solid var(--cyan); outline-offset:2px; }
.details-toggle__chevron { width:13px; height:13px; transition:transform 0.3s var(--ease); }
.details-toggle[aria-expanded="true"] .details-toggle__chevron { transform:rotate(180deg); }

/* ═══════════════════════════════════════════════════════
   LIQUID GLASS BASE
   ═══════════════════════════════════════════════════════ */
.card, .app-card, .status-bar {
  position:relative; border-radius:var(--radius-card); overflow:hidden;
  background:linear-gradient(135deg, rgba(255,255,255,0.05), rgba(255,255,255,0.01)), var(--surface);
  -webkit-backdrop-filter:blur(var(--blur)) saturate(1.8) brightness(1.08);
  backdrop-filter:blur(var(--blur)) saturate(1.8) brightness(1.08);
  border:1px solid var(--border);
  box-shadow: 0 8px 32px rgba(0,0,0,0.35), inset 0 1px 0 rgba(255,255,255,0.10), inset 0 -1px 0 rgba(0,0,0,0.15);
  transition: transform 0.35s var(--ease), box-shadow 0.35s var(--ease), border-color 0.35s var(--ease);
}
.card__glow, .app-card__glow {
  position:absolute; inset:0; z-index:0; border-radius:inherit; pointer-events:none;
  background:radial-gradient(ellipse 80% 60% at 50% 0%, rgba(255,255,255,0.05), transparent 70%);
}
.card__glow--cyan    { background:radial-gradient(ellipse 80% 60% at 50% 0%, var(--cyan-dim), transparent 70%); }
.card__glow--orange  { background:radial-gradient(ellipse 80% 60% at 50% 0%, var(--orange-dim), transparent 70%); }
.card__glow--purple  { background:radial-gradient(ellipse 80% 60% at 50% 0%, var(--purple-dim), transparent 70%); }
.card__glow--magenta { background:radial-gradient(ellipse 80% 60% at 50% 0%, var(--magenta-dim), transparent 70%); }
.card__glow--green   { background:radial-gradient(ellipse 80% 60% at 50% 0%, var(--green-dim), transparent 70%); }

/* Neon border accents per card type */
.card--cyan   { border-color:rgba(0,229,255,0.2); }
.card--cyan:hover   { border-color:rgba(0,229,255,0.4);   box-shadow:0 14px 40px rgba(0,0,0,0.5), 0 0 35px rgba(0,229,255,0.1),  inset 0 1px 0 rgba(255,255,255,0.12); }
.card--orange { border-color:rgba(229,165,0,0.2); }
.card--orange:hover { border-color:rgba(229,165,0,0.4); box-shadow:0 14px 40px rgba(0,0,0,0.5), 0 0 35px rgba(229,165,0,0.1), inset 0 1px 0 rgba(255,255,255,0.12); }
.card--purple { border-color:rgba(180,77,255,0.2); }
.card--purple:hover { border-color:rgba(180,77,255,0.4); box-shadow:0 14px 40px rgba(0,0,0,0.5), 0 0 35px rgba(180,77,255,0.1), inset 0 1px 0 rgba(255,255,255,0.12); }
.card--magenta { border-color:rgba(255,45,120,0.2); }
.card--magenta:hover { border-color:rgba(255,45,120,0.4); box-shadow:0 14px 40px rgba(0,0,0,0.5), 0 0 35px rgba(255,45,120,0.1), inset 0 1px 0 rgba(255,255,255,0.12); }
.card--green  { border-color:rgba(0,255,159,0.15); }
.card--green:hover  { border-color:rgba(0,255,159,0.3);  box-shadow:0 14px 40px rgba(0,0,0,0.5), 0 0 30px rgba(0,255,159,0.08), inset 0 1px 0 rgba(255,255,255,0.12); }

/* ═══════════════════════════════════════════════════════
   APP CARDS  (hero)
   ═══════════════════════════════════════════════════════ */
.hub-section--hero .apps-grid { gap:24px; }
.apps-grid { display:grid; grid-template-columns:1fr; gap:20px; }
@media (min-width:700px) {
  .apps-grid { grid-template-columns:repeat(2,1fr); }
  /* Only stretch the last item if it is a direct odd child AND is itself an app-card.
     Using > * to count all direct children, not just .app-card elements, so the
     media-toggle-container (slot 1) is counted correctly and Tesoro (slot 3) is
     not incorrectly stretched. Remove the full-width override entirely — a 3-item
     2-col grid looks better with the third card in column 1, normal size. */
}
@media (min-width:960px) {
  .apps-grid { grid-template-columns:repeat(3,1fr); }
}

.app-card {
  padding:32px;
  display:flex; flex-direction:column; gap:28px;
  cursor:default;
}
.app-card:hover {
  transform:translateY(-3px);
  border-color:var(--border-hover);
  box-shadow:0 20px 60px rgba(0,0,0,0.55), inset 0 1px 0 rgba(255,255,255,0.10);
}

/* Jellyfin — neon purple retrowave */
.app-card--jellyfin { border-color:rgba(180,77,255,0.18); }
.app-card--jellyfin .app-card__glow { background:radial-gradient(ellipse 90% 50% at 50% 0%, rgba(180,77,255,0.14), transparent 65%); }
.app-card--jellyfin:hover { border-color:rgba(180,77,255,0.35); box-shadow:0 20px 60px rgba(0,0,0,0.55), 0 0 50px rgba(180,77,255,0.18), inset 0 1px 0 rgba(255,255,255,0.10); }

/* Plex accent */
.app-card--plex { border-color:rgba(229,165,0,0.18); }
.app-card--plex .app-card__glow { background:radial-gradient(ellipse 90% 50% at 50% 0%, rgba(229,165,0,0.12), transparent 65%); }
.app-card--plex:hover { border-color:rgba(229,165,0,0.35); box-shadow:0 20px 60px rgba(0,0,0,0.55), 0 0 50px rgba(229,165,0,0.15), inset 0 1px 0 rgba(255,255,255,0.10); }

/* Pepino — neon green */
.app-card--pepino { border-color:rgba(0,255,159,0.18); }
.app-card--pepino .app-card__glow { background:radial-gradient(ellipse 90% 50% at 50% 0%, rgba(0,255,159,0.10), transparent 65%); }
.app-card--pepino:hover { border-color:rgba(0,255,159,0.35); box-shadow:0 20px 60px rgba(0,0,0,0.55), 0 0 50px rgba(0,255,159,0.12), inset 0 1px 0 rgba(255,255,255,0.10); }
.app-card--pepino .app-card__logo { color:var(--green); background:var(--green-dim); border-color:rgba(0,255,159,0.28); }
.app-card__logo--pepino { color:var(--green); background:var(--green-dim); border-color:rgba(0,255,159,0.28); }
.app-card--pepino .app-card__name { color:#66ffb2; }
.app-btn--pepino { background:linear-gradient(135deg,var(--green) 0%,#00cc7f 100%); color:#050b14; box-shadow:0 4px 24px rgba(0,255,159,0.45), inset 0 1px 0 rgba(255,255,255,0.22); }
.app-btn--pepino:hover { box-shadow:0 8px 32px rgba(0,255,159,0.65),0 0 50px rgba(0,255,159,0.22); transform:translateY(-2px); filter:brightness(1.08); }

/* Tesoro — neon cyan */
.app-card--rewards { border-color:rgba(0,229,255,0.18); }
.app-card--rewards .app-card__glow { background:radial-gradient(ellipse 90% 50% at 50% 0%, rgba(0,229,255,0.10), transparent 65%); }
.app-card--rewards:hover { border-color:rgba(0,229,255,0.35); box-shadow:0 20px 60px rgba(0,0,0,0.55), 0 0 50px rgba(0,229,255,0.12), inset 0 1px 0 rgba(255,255,255,0.10); }
.app-card--rewards .app-card__logo { color:var(--cyan); background:var(--cyan-dim); border-color:rgba(0,229,255,0.28); }
.app-card__logo--rewards { color:var(--cyan); background:var(--cyan-dim); border-color:rgba(0,229,255,0.28); }
.app-card--rewards .app-card__name { color:#66f0ff; }
.app-btn--rewards { background:linear-gradient(135deg,var(--cyan) 0%,#00b8cc 100%); color:#050b14; box-shadow:0 4px 24px rgba(0,229,255,0.45), inset 0 1px 0 rgba(255,255,255,0.22); }
.app-btn--rewards:hover { box-shadow:0 8px 32px rgba(0,229,255,0.65),0 0 50px rgba(0,229,255,0.22); transform:translateY(-2px); filter:brightness(1.08); }

/* ── Media Toggle (Jellyfin / Plex — single slot crossfade) ── */
.media-toggle-container {
  position:relative;
  display:grid;             /* single-cell grid so both cards overlap */
  grid-template-columns:1fr;
  grid-template-rows:1fr;
}
.media-toggle-container > .media-card {
  grid-area:1 / 1;
  transition:opacity 0.4s ease, transform 0.4s cubic-bezier(0.4,0,0.2,1), visibility 0s 0.4s;
  opacity:0;
  visibility:hidden;
  transform:translateY(8px) scale(0.98);
  pointer-events:none;
}
.media-toggle-container > .media-card--active {
  opacity:1;
  visibility:visible;
  transform:translateY(0) scale(1);
  pointer-events:auto;
  transition:opacity 0.4s ease, transform 0.4s cubic-bezier(0.4,0,0.2,1), visibility 0s 0s;
}
/* Switch button — shows alternate service wordmark inline with actions */
.media-switch-btn {
  display:inline-flex; align-items:center; justify-content:center;
  min-width:90px; min-height:44px; border-radius:var(--radius-btn);
  background:rgba(255,255,255,0.06); border:1px solid rgba(255,255,255,0.12);
  cursor:pointer; transition:all 0.25s; flex-shrink:0;
  backdrop-filter:blur(8px); padding:6px 16px;
}
.media-switch-btn:hover { background:rgba(255,255,255,0.16); border-color:rgba(255,255,255,0.30); transform:scale(1.05); }
.media-switch-btn__icon { height:18px; width:auto; max-width:100px; object-fit:contain; filter:brightness(1.1); }
/* Icon logos inside tile header — generous padding + colored tint */
.app-card--jellyfin .app-card__logo img,
.app-card--plex .app-card__logo img {
  width:60%; height:60%; object-fit:contain; border-radius:0;
}
.app-card--jellyfin .app-card__logo {
  background:var(--purple-dim); border-color:rgba(180,77,255,0.28); padding:10px;
}
.app-card--plex .app-card__logo {
  background:var(--orange-dim); border-color:rgba(229,165,0,0.28); padding:10px;
}

.app-card__header { position:relative; z-index:1; display:flex; align-items:center; gap:18px; }

.app-card__logo {
  width:62px; height:62px; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
  border-radius:18px; border:1px solid var(--border); background:rgba(255,255,255,0.05);
  overflow:hidden;
}
.app-card__logo img { width:100%; height:100%; object-fit:cover; border-radius:inherit; }
.app-card__logo svg { width:32px; height:32px; }
.app-card--jellyfin .app-card__logo { background:var(--purple-dim); border-color:rgba(180,77,255,0.28); }
.app-card--plex .app-card__logo,
.app-card__logo--plex { color:var(--orange); background:var(--orange-dim); border-color:rgba(229,165,0,0.28); }

.app-card__title-wrap { flex:1; }
.app-card__server-tag { font-family:var(--font-body); font-size:0.75rem; letter-spacing:0.22em; text-transform:uppercase; color:rgba(255,255,255,0.28); margin-bottom:5px; }
.app-card__name { font-family:var(--font-display); font-size:1.55rem; font-weight:900; line-height:1.1; text-transform:uppercase; text-shadow:0 0 30px currentColor; }
.app-card--jellyfin .app-card__name { color:#d4a3ff; }
.app-card--plex .app-card__name     { color:#f5c842; }
.app-card__desc { font-size:0.75rem; color:rgba(255,255,255,0.32); font-family:var(--font-body); margin-top:4px; }

/* Sith glyph decoration — faint Aurebesh watermark */
.app-card--jellyfin::after {
  content:'sith archives';
  position:absolute; bottom:16px; right:20px; z-index:0;
  font-family:var(--font-aurebesh); font-size:1.1rem; letter-spacing:0.2em;
  color:rgba(180,77,255,0.04); pointer-events:none;
}

/* Status dot on app card header */
.app-card__status-dot {
  width:10px; height:10px; border-radius:50%; flex-shrink:0;
  background:rgba(255,255,255,0.2); transition:all 0.4s;
}
.app-card__status-dot--online   { background:var(--green); box-shadow:0 0 8px rgba(0,255,159,0.7); animation:pulse-dot 2.5s infinite; }
.app-card__status-dot--offline  { background:var(--red);   box-shadow:0 0 8px rgba(255,68,68,0.7); }
.app-card__status-dot--degraded { background:var(--orange); box-shadow:0 0 8px rgba(229,165,0,0.5); }

/* App Buttons */
.app-card__actions { position:relative; z-index:1; display:flex; gap:10px; flex-wrap:nowrap; }
.app-btn {
  display:inline-flex; align-items:center; gap:8px;
  padding:13px 24px; border-radius:14px;
  font-family:var(--font-body); font-size:0.82rem; letter-spacing:0.07em; font-weight:800; text-transform:uppercase;
  transition:all 0.22s var(--ease); cursor:pointer; white-space:nowrap; flex:1; justify-content:center;
  min-height:48px; min-width:0; overflow:hidden; text-overflow:ellipsis;
  border:none;
}
.app-btn svg { width:15px; height:15px; flex-shrink:0; }

.app-btn--primary {
  background:linear-gradient(135deg,var(--purple) 0%,#7b2fff 100%);
  color:#fff; border:1px solid rgba(255,255,255,0.12);
  box-shadow:0 4px 24px rgba(180,77,255,0.45), inset 0 1px 0 rgba(255,255,255,0.14);
}
.app-btn--primary:hover { box-shadow:0 8px 32px rgba(180,77,255,0.65),0 0 50px rgba(180,77,255,0.22); transform:translateY(-2px); filter:brightness(1.08); }
/* Jellyfin neon purple button */
.app-btn--jellyfin {
  background:linear-gradient(135deg,#aa5dff 0%,#7b2fff 50%,#b44dff 100%);
  box-shadow:0 4px 24px rgba(180,77,255,0.5), inset 0 1px 0 rgba(255,255,255,0.14);
}
.app-btn--jellyfin:hover { box-shadow:0 8px 32px rgba(180,77,255,0.7),0 0 50px rgba(180,77,255,0.28); transform:translateY(-2px); filter:brightness(1.08); }
.app-btn--plex { background:linear-gradient(135deg,var(--orange) 0%,#ff9900 100%); box-shadow:0 4px 24px rgba(229,165,0,0.45), inset 0 1px 0 rgba(255,255,255,0.14); }
.app-btn--plex:hover { box-shadow:0 8px 32px rgba(229,165,0,0.65),0 0 50px rgba(229,165,0,0.22); transform:translateY(-2px); filter:brightness(1.08); }
.app-btn--secondary {
  background:rgba(0,229,255,0.10); border:2px solid rgba(0,229,255,0.35); color:var(--cyan);
  box-shadow:0 2px 12px rgba(0,229,255,0.12);
}
.app-btn--secondary:hover { background:rgba(0,229,255,0.20); border-color:rgba(0,229,255,0.6); box-shadow:0 4px 24px var(--cyan-glow); transform:translateY(-2px); }
.app-btn--ghost {
  background:rgba(255,255,255,0.06); border:2px solid rgba(255,255,255,0.14); color:rgba(255,255,255,0.65);
}
.app-btn--ghost:hover { background:rgba(255,255,255,0.12); border-color:rgba(255,255,255,0.28); color:rgba(255,255,255,0.92); transform:translateY(-2px); }
.app-btn:active { transform:translateY(0) scale(0.96); }

/* ═══════════════════════════════════════════════════════
   STATUS BAR  (glance)
   ═══════════════════════════════════════════════════════ */
.status-bar {
  display:flex; align-items:center; flex-wrap:wrap;
  gap:0; padding:16px 20px; cursor:default;
  border-color:rgba(0,255,159,0.12);
}
.status-bar:hover { border-color:rgba(0,255,159,0.25); box-shadow:0 8px 32px rgba(0,0,0,0.45), 0 0 25px rgba(0,255,159,0.06), inset 0 1px 0 rgba(255,255,255,0.12); }
.status-chip {
  display:flex; align-items:center; gap:8px;
  padding:6px 12px; flex:1; min-width:100px;
  position:relative; z-index:1;
}
.status-chip__name { font-family:var(--font-body); font-size:0.75rem; letter-spacing:0.06em; color:rgba(255,255,255,0.55); white-space:nowrap; }
.status-chip__value { font-family:var(--font-body); font-size:0.75rem; color:rgba(255,255,255,0.30); margin-left:auto; white-space:nowrap; transition:color 0.3s, opacity 0.3s; }
.status-chip-divider { width:1px; height:28px; flex-shrink:0; background:linear-gradient(to bottom, transparent, var(--border), transparent); }
.status-bar { gap:4px; }
.status-chip { min-width:calc(50% - 4px); flex:0 0 calc(50% - 4px); }
.status-chip-divider { display:none; }
@media (min-width:600px) {
  .status-bar { gap:0; }
  .status-chip { min-width:100px; flex:1; }
  .status-chip-divider { display:block; }
}

/* ─── Expanded Status Details ────────────────────────── */
.status-details {
  overflow:hidden; max-height:0; opacity:0;
  transition: max-height 0.45s var(--ease), opacity 0.3s 0.05s var(--ease), margin-top 0.3s var(--ease);
  margin-top:0;
}
.status-details.is-open { max-height:1400px; opacity:1; margin-top:16px; }

.status-grid { display:grid; grid-template-columns:1fr; gap:14px; }
@media (min-width:600px) { .status-grid { grid-template-columns:repeat(2,1fr); } }
@media (min-width:960px) { .status-grid { grid-template-columns:repeat(2,1fr); } }

/* ─── Status Card Internals ──────────────────────────── */
.card:hover { transform:translateY(-3px); border-color:var(--border-hover); box-shadow:0 14px 40px rgba(0,0,0,0.5), inset 0 1px 0 rgba(255,255,255,0.08); }
.card--status .card__inner { position:relative; z-index:1; padding:20px; display:flex; flex-direction:column; gap:14px; }
.card__header { display:flex; align-items:center; gap:11px; }

.card__icon {
  width:38px; height:38px; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
  border-radius:11px; background:rgba(255,255,255,0.06); border:1px solid rgba(255,255,255,0.08);
  color:rgba(255,255,255,0.5); overflow:hidden;
}
.card__icon svg { width:20px; height:20px; }
.card__icon-img { width:100%; height:100%; object-fit:cover; }
.card__icon--cyan   { color:var(--cyan);   background:var(--cyan-dim);   border-color:rgba(0,229,255,0.2); }
.card__icon--orange { color:var(--orange); background:var(--orange-dim); border-color:rgba(229,165,0,0.2); }
.card__icon--purple { color:var(--purple); background:var(--purple-dim); border-color:rgba(180,77,255,0.2); }

.card__title-group { flex:1; min-width:0; }
.card__title { font-family:var(--font-display); font-size:0.92rem; font-weight:900; text-transform:uppercase; }
.card__subtitle { font-size:0.75rem; color:rgba(255,255,255,0.32); font-family:var(--font-body); letter-spacing:0.04em; }

/* Status Badge */
.status-badge { display:flex; align-items:center; gap:5px; padding:3px 9px; border-radius:999px; background:rgba(255,255,255,0.06); border:1px solid rgba(255,255,255,0.08); flex-shrink:0; }
.status-badge--cyan   { border-color:rgba(0,229,255,0.2); }
.status-badge--orange { border-color:rgba(229,165,0,0.2); }
.status-badge--purple { border-color:rgba(180,77,255,0.2); }
.status-text { font-family:var(--font-body); font-size:0.75rem; letter-spacing:0.04em; }

/* Status dots */
.status-dot { width:7px; height:7px; border-radius:50%; background:rgba(255,255,255,0.2); flex-shrink:0; }
.status-dot--online  { background:var(--green);  box-shadow:0 0 6px rgba(0,255,159,0.7); animation:pulse-dot 2.5s infinite; }
.status-dot--offline { background:var(--red);    box-shadow:0 0 6px rgba(255,68,68,0.7); }
.status-dot--loading   { background:var(--orange); animation:blink 1s step-start infinite; }
.status-dot--degraded  { background:var(--orange); }
.status-dot--disabled { background:rgba(255,255,255,0.12); }

/* Disabled / Coming Soon states */
.status-chip--disabled { opacity:0.4; }
.card--disabled { opacity:0.45; pointer-events:none; }
.card--disabled:hover { transform:none; }
.card__icon--disabled { color:rgba(255,255,255,0.25); background:rgba(255,255,255,0.03); border-color:rgba(255,255,255,0.06); }
.status-badge--disabled { border-color:rgba(255,255,255,0.06); }

@keyframes pulse-dot {
  0%, 100% { opacity:1; transform:scale(1); }
  50% { opacity:0.6; transform:scale(1.3); }
}
@keyframes blink { 50%{opacity:0} }

/* Metrics */
.card__metrics { display:flex; flex-direction:column; gap:9px; }
.card__coming-soon { font-size:0.75rem; font-family:var(--font-body); color:rgba(255,255,255,0.2); text-align:center; padding:2px 0; }
.metric { display:flex; align-items:center; gap:9px; }
.metric__label { font-size:0.75rem; font-family:var(--font-body); color:rgba(255,255,255,0.38); min-width:48px; }
.metric__bar-wrap { flex:1; height:3px; border-radius:2px; background:rgba(255,255,255,0.08); overflow:hidden; }
.metric__bar { height:100%; border-radius:2px; background:linear-gradient(90deg,var(--cyan),var(--magenta)); transition:width 0.8s var(--ease); }
.metric__bar--ram { background:linear-gradient(90deg,var(--purple),var(--magenta)); }
.metric__value { font-family:var(--font-body); font-size:0.75rem; color:rgba(255,255,255,0.55); min-width:36px; text-align:right; }

/* Speed Display */
.speed-display { display:flex; align-items:center; justify-content:space-around; gap:12px; }
.speed-stat { text-align:center; display:flex; flex-direction:column; align-items:center; gap:1px; }
.speed-stat__icon { font-family:var(--font-body); font-size:1rem; line-height:1; }
.speed-stat__icon--down { color:var(--cyan); }
.speed-stat__icon--up   { color:var(--magenta); }
.speed-stat__value { font-family:var(--font-body); font-size:1.75rem; font-weight:700; line-height:1; color:#fff; }
.speed-stat__unit  { font-size:0.75rem; color:rgba(255,255,255,0.32); font-family:var(--font-body); letter-spacing:0.1em; }
.speed-stat__label { font-size:0.75rem; color:rgba(255,255,255,0.38); }
.speed-divider { width:1px; height:44px; background:linear-gradient(to bottom,transparent,var(--border),transparent); }

/* Ping row */
.speed-ping {
  display:flex; align-items:center; justify-content:center; gap:6px;
  font-family:var(--font-body); font-size:0.75rem; color:rgba(255,255,255,0.35);
  padding:4px 0 0;
}
.speed-ping svg { width:12px; height:12px; color:var(--cyan); opacity:0.6; }

/* Status Detail — merged Plex section divider */
.card__section-divider {
  height:1px;
  background:linear-gradient(90deg, transparent, var(--border), transparent);
  margin:4px 0;
}
.status-detail { display:flex; flex-direction:column; gap:7px; }
.status-detail__heading {
  font-family:var(--font-body); font-size:0.75rem; letter-spacing:0.18em;
  text-transform:uppercase; color:rgba(255,255,255,0.25); margin-bottom:2px;
}
.status-detail__row { display:flex; align-items:center; justify-content:space-between; font-size:0.75rem; color:rgba(255,255,255,0.42); font-family:var(--font-body); }
.status-pill { padding:2px 9px; border-radius:999px; font-size:0.75rem; font-family:var(--font-body); background:rgba(255,255,255,0.06); border:1px solid rgba(255,255,255,0.08); }
.status-pill--ok       { background:var(--green-dim);  border-color:rgba(0,255,159,0.3);  color:var(--green); }
.status-pill--down     { background:var(--red-dim);    border-color:rgba(255,68,68,0.3);  color:var(--red); }
.status-pill--degraded { background:var(--orange-dim); border-color:rgba(229,165,0,0.3);  color:var(--orange); }

/* ─── Token Settings (Plex inline config) ────────────── */
.status-detail__heading-row { display:flex; align-items:center; gap:8px; margin-bottom:2px; }
.token-settings-btn {
  background:none; border:none; cursor:pointer; padding:3px;
  color:rgba(255,255,255,0.22); display:flex; align-items:center; justify-content:center;
  border-radius:5px; transition:all 0.2s;
}
.token-settings-btn:hover { color:var(--orange); background:rgba(229,165,0,0.1); }
.token-settings-btn.is-active { color:var(--orange); }
.token-settings-btn svg { width:13px; height:13px; }

.token-settings {
  padding:10px 12px; border-radius:10px; margin-bottom:4px;
  background:rgba(229,165,0,0.04); border:1px solid rgba(229,165,0,0.12);
  animation:fadeDown 0.25s var(--ease) both;
}
.token-settings[hidden] { display:none; }
.token-settings__row { display:flex; gap:6px; align-items:center; }
.token-settings__input {
  flex:1; padding:7px 10px; border-radius:8px; min-width:0;
  background:rgba(0,0,0,0.3); border:1px solid rgba(255,255,255,0.1);
  color:#fff; font-family:var(--font-body); font-size:0.75rem;
  outline:none; transition:border-color 0.2s;
}
.token-settings__input::placeholder { color:rgba(255,255,255,0.2); }
.token-settings__input:focus { border-color:rgba(229,165,0,0.4); }
.token-settings__save {
  padding:7px 14px; border-radius:8px; border:none; cursor:pointer;
  background:var(--orange-dim); color:var(--orange);
  font-family:var(--font-body); font-size:0.75rem; font-weight:700;
  transition:all 0.2s; white-space:nowrap;
}
.token-settings__save:hover { background:rgba(229,165,0,0.25); }
.token-settings__clear {
  background:none; border:none; cursor:pointer;
  color:rgba(255,255,255,0.3); font-size:0.9rem;
  padding:4px 2px; transition:color 0.2s; line-height:1;
}
.token-settings__clear:hover { color:var(--red); }
.token-settings__clear[hidden] { display:none; }
.token-settings__hint {
  font-size:0.75rem; color:rgba(255,255,255,0.2); margin-top:7px;
  font-family:var(--font-body); line-height:1.55;
}
.token-settings__hint code {
  background:rgba(229,165,0,0.1); padding:1px 5px; border-radius:3px;
  color:var(--orange); font-size:0.75rem;
}

/* ═══════════════════════════════════════════════════════
   GLASS MODALS
   ═══════════════════════════════════════════════════════ */
.modal-overlay {
  position:fixed; inset:0; z-index:1000;
  display:flex; align-items:center; justify-content:center;
  background:rgba(0,0,0,0.6);
  -webkit-backdrop-filter:blur(4px);
  backdrop-filter:blur(4px);
  animation:modalOverlayIn 0.25s var(--ease) both;
  padding:20px;
  overflow-y:auto;
}
.modal-overlay[hidden] { display:none; }
@keyframes modalOverlayIn { from{opacity:0} to{opacity:1} }

.glass-modal {
  position:relative; width:100%; max-width:440px;
  padding:36px 32px;
  background:linear-gradient(135deg, rgba(255,255,255,0.05), rgba(255,255,255,0.01)), var(--surface);
  -webkit-backdrop-filter:blur(var(--blur)) saturate(1.8) brightness(1.08);
  backdrop-filter:blur(var(--blur)) saturate(1.8) brightness(1.08);
  border:1px solid rgba(0,229,255,0.2);
  border-radius:var(--radius-card);
  box-shadow:0 24px 80px rgba(0,0,0,0.65), 0 0 50px rgba(0,229,255,0.08),
    inset 0 1px 0 rgba(255,255,255,0.12), inset 0 -1px 0 rgba(0,0,0,0.2);
  animation:modalCardIn 0.3s var(--ease) both;
  max-height:90vh; overflow-y:auto;
}
.glass-modal--sm { max-width:380px; }
.glass-modal textarea.glass-input { resize:vertical; min-height:60px; }
.glass-modal select.glass-input { cursor:pointer; appearance:none; background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' stroke='rgba(255,255,255,0.4)' stroke-width='2.5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 10px center; background-size:16px; padding-right:32px; }
@keyframes modalCardIn {
  from { opacity:0; transform:translateY(16px) scale(0.96); }
  to   { opacity:1; transform:translateY(0) scale(1); }
}
.modal-close {
  position:absolute; top:14px; right:16px;
  background:none; border:none; cursor:pointer;
  color:rgba(255,255,255,0.3); font-size:1.6rem; line-height:1;
  padding:4px 8px; border-radius:8px;
  transition:all 0.2s; z-index:1;
}
.modal-close:hover { color:rgba(255,255,255,0.7); background:rgba(255,255,255,0.06); }

.modal-title {
  font-family:var(--font-display); font-size:1.1rem; font-weight:900; text-transform:uppercase;
  color:#f1f5f9; margin-bottom:20px; text-align:center;
}

/* ─── Glass Form Elements (used by banner admin modal) ── */
.form-group { display:flex; flex-direction:column; gap:5px; }
.form-group--half { flex:1; min-width:0; }
.form-row { display:flex; gap:16px; }

.glass-label {
  font-family:var(--font-body); font-size:0.75rem; letter-spacing:0.14em;
  text-transform:uppercase; color:rgba(255,255,255,0.35);
}
.glass-input {
  padding:10px 14px; border-radius:var(--radius-btn);
  background:rgba(0,0,0,0.35); border:1px solid rgba(255,255,255,0.1);
  color:#f1f5f9; font-family:var(--font-body); font-size:0.82rem;
  outline:none; transition:border-color 0.25s, box-shadow 0.25s;
  width:100%;
}
.glass-input::placeholder { color:rgba(255,255,255,0.18); }
.glass-input:focus {
  border-color:rgba(0,229,255,0.45);
  box-shadow:0 0 12px rgba(0,229,255,0.1);
}
.glass-input:disabled {
  opacity:0.4; cursor:not-allowed;
}

.glass-btn {
  display:flex; align-items:center; justify-content:center; gap:8px;
  padding:12px 24px; border-radius:var(--radius-btn);
  background:linear-gradient(135deg, rgba(0,229,255,0.18), rgba(0,229,255,0.08));
  border:1px solid rgba(0,229,255,0.35);
  color:var(--cyan); cursor:pointer; width:100%;
  font-family:var(--font-body); font-size:0.78rem; font-weight:700; letter-spacing:0.08em;
  transition:all 0.25s var(--ease); margin-top:6px;
}
.glass-btn:hover {
  background:linear-gradient(135deg, rgba(0,229,255,0.28), rgba(0,229,255,0.14));
  box-shadow:0 0 20px rgba(0,229,255,0.2);
  transform:translateY(-1px);
}
.glass-btn:disabled {
  opacity:0.5; cursor:not-allowed; transform:none;
}

.form-error {
  padding:8px 12px; border-radius:8px;
  background:var(--red-dim); border:1px solid rgba(255,68,68,0.25);
  color:var(--red); font-family:var(--font-body); font-size:0.75rem;
}
.form-error[hidden] { display:none; }
.form-success {
  padding:8px 12px; border-radius:8px;
  background:rgba(0,255,159,0.08); border:1px solid rgba(0,255,159,0.25);
  color:var(--green); font-family:var(--font-body); font-size:0.75rem;
}
.form-success[hidden] { display:none; }


/* ─── Checkbox ────────────────────────────────────────── */
.glass-checkbox {
  display:flex; align-items:center; gap:8px; cursor:pointer;
  font-family:var(--font-body); font-size:0.75rem; color:rgba(255,255,255,0.55);
}
.glass-checkbox input { display:none; }
.glass-checkbox__mark {
  width:18px; height:18px; border-radius:5px; flex-shrink:0;
  background:rgba(0,0,0,0.35); border:1px solid rgba(255,255,255,0.15);
  display:flex; align-items:center; justify-content:center;
  transition:all 0.2s;
}
.glass-checkbox input:checked + .glass-checkbox__mark {
  background:rgba(0,229,255,0.2); border-color:rgba(0,229,255,0.5);
}
.glass-checkbox input:checked + .glass-checkbox__mark::after {
  content:'\2713'; color:var(--cyan); font-size:0.75rem; font-weight:700;
}
.glass-checkbox__hint { color:rgba(255,255,255,0.25); font-size:0.75rem; }

/* ─── Rating/PIN/Avatar — now in auth-widget.css ───── */

/* ─── Body scroll lock when modal open ────────────────── */
body.modal-open { overflow:hidden; }

/* ─── Footer ─────────────────────────────────────────── */
.site-footer { border-top:1px solid var(--border); padding:18px 24px; background:rgba(5,11,20,0.6); -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px); }
.footer-inner { max-width:1200px; margin:0 auto; display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:8px; font-family:var(--font-body); font-size:0.75rem; color:rgba(255,255,255,0.22); letter-spacing:0.1em; }
.footer-inner--stacked { flex-direction:column; gap:4px; }
.footer-secured { font-size:0.75rem; font-weight:700; letter-spacing:0.2em; text-transform:uppercase; color:rgba(255,255,255,0.25); }
.footer-row { display:flex; align-items:center; flex-wrap:wrap; justify-content:center; gap:8px; }
.footer-row--links { gap:10px; margin-top:2px; }
.footer-logo { height:16px; width:auto; opacity:0.35; margin-right:2px; }
.footer-brand { color:rgba(255,255,255,0.42); font-weight:700; letter-spacing:0.15em; }
.footer-sep   { color:var(--cyan); opacity:0.35; }
.footer-time  { color:var(--cyan); opacity:0.5; }
.footer-link  { color:rgba(255,255,255,0.3); text-decoration:none; letter-spacing:0.08em; transition:color 0.2s; min-height:44px; display:inline-flex; align-items:center; padding:0 2px; }
.footer-link:hover { color:var(--cyan); }

/* ═══════════════════════════════════════════════════════
   PUBLIC ANNOUNCEMENTS FEED
   ═══════════════════════════════════════════════════════ */
.announcements-feed {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.announcement-card {
  position: relative;
  border-radius: var(--radius-card);
  overflow: hidden;
  background: linear-gradient(135deg, rgba(255,255,255,0.05), rgba(255,255,255,0.01)), var(--surface);
  -webkit-backdrop-filter: blur(var(--blur)) saturate(1.8) brightness(1.08);
  backdrop-filter: blur(var(--blur)) saturate(1.8) brightness(1.08);
  border: 1px solid var(--border);
  box-shadow: 0 8px 32px rgba(0,0,0,0.45), inset 0 1px 0 rgba(255,255,255,0.12), inset 0 -1px 0 rgba(0,0,0,0.2);
  padding: 18px 20px;
  transition: border-color 0.3s, box-shadow 0.3s;
}
.announcement-card:hover {
  border-color: var(--border-hover);
  box-shadow: 0 14px 40px rgba(0,0,0,0.5), inset 0 1px 0 rgba(255,255,255,0.08);
}
.announcement-card--info   { border-color: rgba(0,229,255,0.18); }
.announcement-card--update { border-color: rgba(0,255,159,0.18); }
.announcement-card--alert  { border-color: rgba(255,68,68,0.18); }
.announcement-card--pinned { border-color: rgba(229,165,0,0.25); }

.announcement-card__header {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 6px;
}
.announcement-card__icon {
  font-size: 1rem;
  line-height: 1;
  flex-shrink: 0;
}
.announcement-card__title {
  font-family: var(--font-body);
  font-size: 0.92rem;
  font-weight: 700;
  color: rgba(255,255,255,0.9);
  flex: 1;
}
.announcement-card__pin {
  font-size: 0.8rem;
  flex-shrink: 0;
}
.announcement-card__body {
  font-family: var(--font-body);
  font-size: 0.82rem;
  color: rgba(255,255,255,0.55);
  line-height: 1.6;
  margin-bottom: 6px;
}
.announcement-card__date {
  font-family: var(--font-body);
  font-size: 0.75rem;
  color: rgba(255,255,255,0.2);
}

/* ═══════════════════════════════════════════════════════
   PUBLIC FAQ ACCORDION
   ═══════════════════════════════════════════════════════ */
.faq-accordion {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.faq-item {
  border-radius: var(--radius-card);
  overflow: hidden;
  background: linear-gradient(135deg, rgba(255,255,255,0.05), rgba(255,255,255,0.01)), var(--surface);
  -webkit-backdrop-filter: blur(var(--blur)) saturate(1.8) brightness(1.08);
  backdrop-filter: blur(var(--blur)) saturate(1.8) brightness(1.08);
  border: 1px solid var(--border);
  box-shadow: 0 8px 32px rgba(0,0,0,0.45), inset 0 1px 0 rgba(255,255,255,0.12), inset 0 -1px 0 rgba(0,0,0,0.2);
  transition: border-color 0.3s;
}
.faq-item:hover { border-color: var(--border-hover); }

.faq-item__question {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  width: 100%;
  padding: 16px 20px;
  background: none;
  border: none;
  color: rgba(255,255,255,0.85);
  font-family: var(--font-body);
  font-size: 0.88rem;
  font-weight: 600;
  text-align: left;
  cursor: pointer;
  transition: color 0.2s;
}
.faq-item__question:hover { color: var(--cyan); }
.faq-item__chevron {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
  color: rgba(255,255,255,0.3);
  transition: transform 0.3s var(--ease);
}
.faq-item--open .faq-item__chevron { transform: rotate(180deg); }

.faq-item__answer {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.35s var(--ease), padding 0.35s var(--ease);
  padding: 0 20px;
}
.faq-item--open .faq-item__answer {
  max-height: 600px;
  padding: 0 20px 16px;
}
.faq-item__answer p {
  font-family: var(--font-body);
  font-size: 0.82rem;
  color: rgba(255,255,255,0.55);
  line-height: 1.65;
}

/* ─── Holocron Decode (Aurebesh → English loading) ───── */
@keyframes holocron-decode {
  0%   { font-family:var(--font-aurebesh); opacity:0.5; }
  55%  { font-family:var(--font-aurebesh); opacity:1; }
  75%  { font-family:inherit; opacity:0.6; }
  100% { font-family:inherit; opacity:1; }
}
.holocron-decode { animation:holocron-decode 1.5s var(--ease) both; }

/* ─── Entrance Animations ────────────────────────────── */
@keyframes fadeUp { from{opacity:0;transform:translateY(18px)} to{opacity:1;transform:translateY(0)} }
@keyframes card-in { from{opacity:0;transform:translateY(18px)} to{opacity:1;transform:translateY(0)} }
.app-card   { animation:card-in 0.55s var(--ease) both; }
.status-bar { animation:fadeUp 0.55s var(--ease) 0.15s both; }
.apps-grid .app-card:nth-child(1) { animation-delay:0ms; }
.apps-grid .app-card:nth-child(2) { animation-delay:80ms; }
.apps-grid .app-card:nth-child(3) { animation-delay:160ms; }
.apps-grid .app-card:nth-child(4) { animation-delay:240ms; }
.status-grid .card:nth-child(1) { animation-delay:0.00s; }
.status-grid .card:nth-child(2) { animation-delay:0.06s; }
.status-grid .card:nth-child(3) { animation-delay:0.12s; }
.status-grid .card:nth-child(4) { animation-delay:0.18s; }

/* ─── Mobile base ────────────────────────────────────── */
.hub { padding:20px 12px 60px; gap:28px; }
.app-card { padding:18px; }
/* Keep bold button sizing on mobile — just tighten horizontal padding slightly */
.app-btn  { padding:12px 18px; font-size:0.80rem; min-height:48px; }
.speed-stat__value { font-size:1.4rem; }
.wordmark__text { display:none; }
.wordmark__icon { height:30px; }
.header-tagline { display:none; }
.glass-modal { padding:20px 16px; max-width:calc(100vw - 24px); }
.form-row { flex-direction:column; gap:14px; }
.modal-close { min-width:44px; min-height:44px; display:flex; align-items:center; justify-content:center; padding:0; }
@media (min-width:481px) {
  .hub { padding:40px 24px 100px; gap:56px; }
  .app-card { padding:32px; }
  /* Full bold padding restored at wider breakpoint */
  .app-btn  { padding:13px 24px; font-size:0.82rem; min-height:48px; }
  .speed-stat__value { font-size:1.75rem; }
  .wordmark__text { display:unset; }
  .wordmark__icon { height:32px; }
  .header-tagline { display:unset; }
  .glass-modal { padding:36px 32px; max-width:440px; }
  .form-row { flex-direction:row; gap:16px; }
  .modal-close { min-width:unset; min-height:unset; display:block; padding:4px 8px; }
}

/* Safe area support for notched devices */
@supports (padding: env(safe-area-inset-bottom)) {
  body { padding-bottom:env(safe-area-inset-bottom); }
  .hub { padding-top:env(safe-area-inset-top); }
}

/* ─── Family Activity Digest ──────────────────── */
.digest-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:16px; }
.digest-card {
  background:var(--card-bg); border:1px solid var(--card-border); border-radius:16px;
  padding:20px; position:relative; overflow:hidden;
  animation:card-in 0.4s ease both;
}
.digest-card__header { display:flex; align-items:center; gap:12px; margin-bottom:14px; }
.digest-card__icon {
  width:36px; height:36px; border-radius:10px; display:flex;
  align-items:center; justify-content:center; font-size:18px;
}
.digest-card__icon--tesoro { background:var(--cyan-dim); color:var(--cyan); }
.digest-card__icon--pepino { background:rgba(168,85,247,0.12); color:#c084fc; }
.digest-card__title { font-family:var(--font-display); font-size:0.8125rem; font-weight:700; color:var(--text-primary); letter-spacing:0.04em; text-transform:uppercase; }
.digest-card__subtitle { font-size:0.75rem; color:var(--text-muted); margin-top:1px; }
.digest-kid { display:flex; align-items:center; gap:10px; padding:10px 0; border-top:1px solid rgba(255,255,255,0.08); }
.digest-kid:first-child { border-top:none; padding-top:4px; }
.digest-kid__avatar { font-size:1.25rem; width:28px; text-align:center; }
.digest-kid__name { flex:1; font-size:0.8125rem; font-weight:500; color:var(--text-primary); }
.digest-kid__stat { font-size:0.75rem; color:var(--cyan); font-weight:600; }
.digest-empty { text-align:center; padding:12px; color:var(--text-muted); font-size:0.75rem; }

/* ─── Accessibility: Reduced Motion ──────────────────── */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.15s !important;
  }
  .aurebesh-ticker, .scanlines, .bg-grid { display: none; }
  .app-card:hover { transform: none; }
  .card:hover { transform: none; }
}
