:root{
  --blue:#3B85B5;
  --blue-light:#5FA3CE;
  --blue-dark:#2C6A93;
  --blue-glow:rgba(59,133,181,.55);
  --dark-bg:#12151A;
  --dark-bg-2:#0D0F13;
  --panel:rgba(255,255,255,.07);
  --panel-border:rgba(255,255,255,.14);
  --text:#F3F5F7;
  --text-dim:rgba(243,245,247,.62);
  --text-dimmer:rgba(243,245,247,.4);
  --gray:#A6AEB8;
  --gray-bg:rgba(166,174,184,.16);
  --amber:#D9A441;
  --amber-bg:rgba(217,164,65,.14);
  --radius:22px;
  --radius-lg:28px;
  --nav-h:64px;
  --top-h:56px;
}

*{box-sizing:border-box; -webkit-tap-highlight-color:transparent;}
html,body{
  margin:0; padding:0;
  background:var(--dark-bg);
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
}
body{
  font-family:"Montserrat",-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;
  color:var(--text);
  -webkit-font-smoothing:antialiased;
  width:100%;
}
h1,h2,h3{ font-family:"Montserrat",sans-serif; font-weight:700; margin:0 0 4px; color:var(--text); }
.display-serif{ font-family:"Playfair Display",Georgia,serif; font-weight:600; }
em{ font-style:italic; }
button{ font-family:inherit; }
a{ color:var(--blue-light); text-decoration:none; }

/* The page itself scrolls natively now, no custom full-height wrapper
   fighting the viewport. This sidesteps the iOS standalone-mode viewport
   height bug entirely rather than trying to out-guess it. */
#app-shell{
  max-width:480px;
  margin:0 auto;
  position:relative;
  min-height:100vh;
}

/* ---------- Background glow ----------
   Static (no continuous animation) and absolutely positioned within the
   page flow, not fixed to the viewport, since fixed + animated + blurred
   layers are expensive to keep repainting on iOS during scroll. */
.bg-glow{
  position:absolute; top:0; left:0; right:0; height:100vh;
  overflow:hidden; pointer-events:none; z-index:0;
}
.bg-glow .blob{
  position:absolute; border-radius:50%; filter:blur(50px); opacity:.5;
}
.bg-glow .b1{ width:280px; height:280px; background:var(--blue); top:-90px; left:-60px; }
.bg-glow .b2{ width:240px; height:240px; background:var(--blue-dark); top:35%; right:-80px; }
.bg-glow .b3{ width:200px; height:200px; background:var(--blue-light); top:70%; left:20%; opacity:.3; }

/* ---------- Top bar: floating glass island, overlays content ---------- */
.topbar-wrap{
  position:fixed; top:0; left:50%; transform:translateX(-50%); z-index:20;
  width:100%; max-width:480px;
  padding:calc(env(safe-area-inset-top) + 10px) 14px 0;
  pointer-events:none;
}
.topbar{
  height:60px;
  display:flex; align-items:center;
  padding:0 8px;
  border-radius:100px;
  background:rgba(24,28,34,.88);
  border:1px solid rgba(255,255,255,.18);
  box-shadow:0 12px 32px -10px rgba(0,0,0,.55), inset 0 1.5px 0 rgba(255,255,255,.32), inset 0 0 0 1px rgba(255,255,255,.04);
  pointer-events:auto;
  position:relative; overflow:hidden;
}
.topbar::before{
  content:''; position:absolute; top:0; left:14%; right:14%; height:1px;
  background:linear-gradient(90deg, transparent, rgba(255,255,255,.65), transparent);
  pointer-events:none;
}
.topbar-side{ width:52px; display:flex; align-items:center; flex-shrink:0; }
.topbar-side.right{ justify-content:flex-end; }
.topbar-logo{ flex:1; display:flex; align-items:center; justify-content:center; height:100%; }
.topbar-logo img{ height:38px; width:auto; max-width:260px; object-fit:contain; }
.logo-fallback{ font-family:"Playfair Display",serif; font-weight:600; font-size:18px; }
.back-btn{
  width:38px;height:38px;border-radius:50%;
  border:1px solid rgba(255,255,255,.16); background:rgba(255,255,255,.08);
  display:flex;align-items:center;justify-content:center;
  cursor:pointer; color:var(--text);
}
.back-btn svg{ width:20px; height:20px; }
.country-chip{
  border:1px solid rgba(255,255,255,.16); background:rgba(255,255,255,.08);
  border-radius:100px; width:38px; height:38px; font-size:18px;
  display:flex; align-items:center; justify-content:center; cursor:pointer;
}

/* ---------- Content: fills the shell, scrolls beneath the floating bars ---------- */
.content{
  position:relative;
  min-height:100vh;
  padding:calc(env(safe-area-inset-top) + 86px) 16px calc(env(safe-area-inset-bottom) + 108px);
  z-index:2;
}
.content.no-top-offset{ padding-top:calc(env(safe-area-inset-top) + 20px); }
.content.no-bottom-offset{ padding-bottom:calc(env(safe-area-inset-bottom) + 20px); }

.content.nav-forward{ animation: slideInForward .32s cubic-bezier(.22,.9,.3,1); }
.content.nav-back{ animation: slideInBack .32s cubic-bezier(.22,.9,.3,1); }
.content.nav-fade{ animation: fadeInSimple .2s ease; }
.content.nav-none{ animation: none; }
@keyframes slideInForward{ from{ opacity:0; transform:translateX(28px); } to{ opacity:1; transform:translateX(0); } }
@keyframes slideInBack{ from{ opacity:0; transform:translateX(-28px); } to{ opacity:1; transform:translateX(0); } }
@keyframes fadeInSimple{ from{ opacity:0; } to{ opacity:1; } }
@media (prefers-reduced-motion: reduce){
  .content.nav-forward, .content.nav-back, .content.nav-fade{ animation:none !important; }
}

/* ---------- Bottom nav: floating glass pill, overlays content ---------- */
.bottomnav-wrap{
  position:fixed; left:50%; transform:translateX(-50%); bottom:0; z-index:20;
  width:100%; max-width:480px;
  padding:0 14px calc(env(safe-area-inset-bottom) + 14px);
  pointer-events:none;
}
.bottomnav{
  display:flex; align-items:center;
  border-radius:100px;
  padding:8px 6px;
  background:rgba(24,28,34,.88);
  border:1px solid rgba(255,255,255,.18);
  box-shadow:0 16px 36px -10px rgba(0,0,0,.6), inset 0 1.5px 0 rgba(255,255,255,.32), inset 0 0 0 1px rgba(255,255,255,.04);
  pointer-events:auto;
  position:relative; overflow:hidden;
}
.bottomnav::before{
  content:''; position:absolute; top:0; left:8%; right:8%; height:1px;
  background:linear-gradient(90deg, transparent, rgba(255,255,255,.6), transparent);
  pointer-events:none;
}
.navbtn{
  flex:1; border:none; background:none; cursor:pointer;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:3px; color:var(--text-dim); font-size:10.5px; padding:8px 4px; border-radius:100px;
}
.navbtn .icon{ width:26px; height:26px; display:flex; align-items:center; justify-content:center; }
.navbtn .icon svg{ width:26px; height:26px; }
.navbtn.active{ color:var(--text); }
.navbtn.active .icon{ color:var(--blue-light); }
.navbtn .navlabel{ font-weight:600; }

/* ---------- Generic blocks ---------- */
.card{
  background:var(--panel);
  border:1px solid var(--panel-border);
  border-radius:var(--radius);
  padding:16px;
  margin-bottom:12px;
}
.card:active{ background:rgba(255,255,255,.09); }
.row-card{ display:flex; align-items:center; gap:12px; cursor:pointer; }
.row-card-icon{ font-size:22px; }
.card-title{ font-weight:600; font-size:15px; margin-bottom:2px; color:var(--text); }
.card-sub{ font-size:13px; color:var(--text-dim); }
.section-eyebrow{
  font-size:12.5px; letter-spacing:.03em;
  color:var(--blue-light); font-weight:600; margin-bottom:6px;
}
.eyebrow-dark{ font-size:11.5px; letter-spacing:.03em; color:var(--text-dim); margin-bottom:4px; }
.home-greeting{ font-size:30px; margin-bottom:4px; }
.episode-blurb{ font-size:12.5px; color:var(--text-dim); line-height:1.4; margin-top:1px; }
.quick-square-row{ display:flex; gap:12px; margin-bottom:22px; }
.quick-square{
  position:relative; overflow:hidden;
  flex:1; aspect-ratio:1; border-radius:var(--radius); padding:16px;
  background:linear-gradient(150deg, rgba(59,133,181,.18), rgba(255,255,255,.03));
  border:1px solid var(--panel-border);
  display:flex; flex-direction:column; justify-content:flex-end; cursor:pointer;
}
.quick-square-pattern{
  position:absolute; top:-30px; right:-30px; width:110px; height:110px; border-radius:50%;
  background:radial-gradient(circle, rgba(95,163,206,.28), rgba(95,163,206,0) 70%);
}
.quick-square-community{ background:linear-gradient(150deg, var(--blue), var(--blue-dark)); border-color:rgba(255,255,255,.18); }
.quick-square-community .quick-square-pattern{ background:radial-gradient(circle, rgba(255,255,255,.18), rgba(255,255,255,0) 70%); }
.quick-square-icon-badge{
  width:38px; height:38px; border-radius:12px; margin-bottom:12px;
  background:rgba(95,163,206,.22); color:var(--blue-light);
  display:flex; align-items:center; justify-content:center;
}
.quick-square-icon-badge svg{ width:20px; height:20px; }
.quick-square-icon-badge-light{ background:rgba(255,255,255,.2); color:#fff; }
.quick-square-title{ font-weight:700; font-size:15px; margin-bottom:2px; }
.quick-square-sub{ font-size:11.5px; color:var(--text-dim); }
.quick-square-community .quick-square-sub{ color:rgba(255,255,255,.82); }
.quick-square-arrow{ position:absolute; top:14px; right:14px; color:var(--text-dimmer); font-size:14px; }
.quick-square-community .quick-square-arrow{ color:rgba(255,255,255,.55); }
.muted{ color:var(--text-dim); font-size:13.5px; line-height:1.55; }
.btn{
  display:inline-flex; align-items:center; justify-content:center;
  width:100%; padding:14px 16px; border-radius:100px;
  background:linear-gradient(135deg, var(--blue-light), var(--blue-dark));
  color:#fff; font-weight:600; font-size:15px;
  border:none; cursor:pointer;
  box-shadow:0 8px 22px -8px var(--blue-glow);
}
.btn:disabled{ opacity:.4; box-shadow:none; }
.btn.secondary{ background:var(--panel); color:var(--text); border:1px solid var(--panel-border); box-shadow:none; }
.btn.block{ margin-top:8px; }
.tag{ display:inline-block; font-size:11px; font-weight:600; padding:3px 9px; border-radius:100px; }
.tag.pending{ background:var(--amber-bg); color:var(--amber); }
.tag.ready{ background:rgba(59,133,181,.18); color:var(--blue-light); }
.tag.duration{ background:var(--gray-bg); color:var(--gray); }
.list-item{
  display:flex; align-items:center; gap:10px;
  padding:14px 0; border-bottom:1px solid rgba(255,255,255,.08); cursor:pointer;
}
.list-item:last-child{ border-bottom:none; }
.list-item .chev{ margin-left:auto; color:var(--text-dimmer); }
.chev{ color:var(--text-dimmer); }
.empty-state{ text-align:center; padding:60px 20px; color:var(--text-dim); }
.empty-state .icon{ font-size:36px; margin-bottom:12px; }
.row{ display:flex; align-items:center; justify-content:space-between; gap:10px; }
.mb-0{ margin-bottom:0; }
.card:active, .section-card:active{ transform:scale(.985); }
.card, .section-card, .list-item{ transition:transform .12s ease; }

/* ---------- Onboarding ---------- */
.onboard-center-wrap{
  min-height:calc(100vh - 40px); min-height:calc(100dvh - 40px);
  display:flex; flex-direction:column; justify-content:center;
}
.onboard-hero{ text-align:center; padding:20px 8px 18px; }
.onboard-logo-wide{ margin:0 auto 16px; display:flex; justify-content:center; }
.onboard-logo-wide img{ height:64px; width:auto; max-width:300px; object-fit:contain; }
.onboard-feature-row{ display:flex; gap:10px; margin-bottom:22px; }
.onboard-feature{
  flex:1; text-align:center; padding:16px 10px;
  background:var(--panel); border:1px solid var(--panel-border); border-radius:var(--radius);
}
.onboard-feature-icon{ font-size:24px; margin-bottom:6px; }
.onboard-feature-label{ font-weight:700; font-size:13.5px; margin-bottom:2px; }
.onboard-feature-sub{ font-size:11.5px; color:var(--text-dim); line-height:1.35; }

/* ---- 3D auto-rotating card stack ---- */
.stack-wrap{
  position:relative; height:210px; margin:6px 0 14px; perspective:900px;
}
.stack-card{
  position:absolute; inset:0; border-radius:var(--radius);
  background-size:cover; background-position:center;
  overflow:hidden; transition:transform .6s cubic-bezier(.22,.9,.3,1), opacity .6s ease;
  will-change:transform, opacity;
}
.stack-card-overlay{
  position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(20,60,90,.15) 0%, rgba(15,45,70,.55) 55%, rgba(10,30,55,.92) 100%);
}
.stack-card-content{ position:absolute; left:0; right:0; bottom:0; padding:16px 18px 16px; }
.stack-card-title{ font-family:"Playfair Display",serif; font-weight:600; font-size:19px; color:#fff; margin:2px 0 4px; }
.stack-card-sub{ font-size:12.5px; color:rgba(243,245,247,.85); line-height:1.4; }
.stack-dots{ display:flex; justify-content:center; gap:6px; margin-bottom:18px; }
.stack-dot{ width:6px; height:6px; border-radius:50%; background:rgba(255,255,255,.25); transition:background .3s ease, width .3s ease; }
.stack-dot.active{ background:var(--blue-light); width:16px; border-radius:4px; }

.country-option{
  display:flex; align-items:center; gap:14px;
  border:1.5px solid var(--panel-border); border-radius:var(--radius);
  padding:16px; margin-bottom:10px; cursor:pointer; background:var(--panel);
}
.country-option.selected{ border-color:var(--blue-light); background:rgba(59,133,181,.16); }
.country-option .flag{ font-size:26px; }
.country-option .name{ font-weight:600; }
.country-option .region{ font-size:13px; color:var(--text-dim); }

/* ---------- Section cards ---------- */
.section-hero{
  position:relative; height:230px; border-radius:var(--radius-lg); margin-bottom:18px;
  background-size:cover; background-position:center; overflow:hidden;
}
.section-hero-overlay{
  position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(20,60,90,.1) 0%, rgba(15,45,70,.55) 50%, rgba(10,30,55,.92) 100%);
}
.section-hero-content{
  position:absolute; left:0; right:0; bottom:0; padding:22px 20px 20px; z-index:1;
}
.section-hero-content h2{ font-size:28px; margin:2px 0 8px; line-height:1.15; }
.section-hero-content p{ font-size:14.5px; color:rgba(243,245,247,.85); margin:0; line-height:1.45; }
.section-card{
  position:relative; overflow:hidden;
  border-radius:var(--radius); padding:16px; margin-bottom:12px; cursor:pointer;
  background:linear-gradient(150deg, rgba(59,133,181,.35), rgba(255,255,255,.04));
  border:1px solid var(--panel-border);
  box-shadow:0 12px 28px -16px rgba(59,133,181,.5);
}
.section-card .num{ font-size:12px; opacity:.75; margin-bottom:4px; color:var(--text-dim); }
.section-card h3{ font-size:17px; margin-bottom:4px; }
.section-card p{ font-size:13px; color:var(--text-dim); margin:0; }

/* ---------- Player ---------- */
.player-bento{
  display:flex; align-items:center; gap:14px;
  background:var(--panel); border:1px solid var(--panel-border); border-radius:var(--radius);
  padding:14px; margin-bottom:18px;
}
.player-art-sm{
  width:64px; height:64px; border-radius:16px; flex-shrink:0;
  background:var(--blue);
  box-shadow:inset 0 1.5px 0 rgba(255,255,255,.3), 0 8px 18px -8px rgba(0,0,0,.5);
  display:flex; align-items:center; justify-content:center;
}
.player-art-sm img{ width:32px; height:32px; object-fit:contain; }
.player-bento-text{ min-width:0; }
.player-bento-text h2{ font-size:19px; margin:2px 0 0; line-height:1.25; }

/* ---- Apple-Music-style scrolling lyrics ---- */
.lyrics{
  height:140px; position:relative; overflow:hidden; margin-bottom:4px;
  mask-image:linear-gradient(to bottom, transparent 0%, black 20%, black 80%, transparent 100%);
  -webkit-mask-image:linear-gradient(to bottom, transparent 0%, black 20%, black 80%, transparent 100%);
}
.lyrics-static{ display:flex; align-items:center; justify-content:center; padding:0 12px; }
.coming-soon-line{ text-align:center; color:var(--text-dim); font-size:14.5px; line-height:1.5; }
.lyrics-track{ position:absolute; left:0; right:0; top:0; padding:0 8px; transition:transform .55s cubic-bezier(.22,.9,.3,1); }
.lyric-line{
  font-family:"Montserrat",sans-serif; font-weight:600; font-size:18px; line-height:1.5;
  color:var(--text-dimmer); text-align:center; padding:8px 0;
  filter:blur(1.5px); opacity:.6;
  transition:color .45s ease, opacity .45s ease, filter .45s ease, transform .45s ease;
}
.lyric-line.active{ color:var(--text); opacity:1; filter:blur(0); transform:scale(1.03); }

/* ---- vibrating waveform line ---- */
.waveform-line{ width:100%; height:34px; margin-bottom:8px; display:block; }
.waveform-line path{ fill:none; stroke:var(--blue-light); stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; filter:drop-shadow(0 0 6px var(--blue-glow)); }

/* ---- glass control panel ---- */
.glass-panel{
  border-radius:28px; padding:16px 18px 14px; margin-bottom:6px;
  background:rgba(255,255,255,.07);
  border:1px solid rgba(255,255,255,.18);
  box-shadow:0 16px 34px -14px rgba(0,0,0,.55), inset 0 1.5px 0 rgba(255,255,255,.3), inset 0 0 0 1px rgba(255,255,255,.05);
  backdrop-filter:blur(16px) saturate(160%); -webkit-backdrop-filter:blur(16px) saturate(160%);
}
.progress{ height:4px; border-radius:4px; background:rgba(255,255,255,.14); position:relative; margin-bottom:6px; }
.progress.disabled{ opacity:.4; }
.progress-fill{ position:absolute; top:0; left:0; bottom:0; background:var(--blue-light); border-radius:4px; box-shadow:0 0 10px var(--blue-glow); }
.time-row{ display:flex; justify-content:space-between; font-size:12px; color:var(--text-dim); margin-bottom:12px; }
.player-controls{ display:flex; align-items:center; justify-content:center; gap:26px; }
.play-btn{
  width:58px; height:58px; border-radius:50%;
  background:radial-gradient(60% 60% at 35% 30%, rgba(255,255,255,.3), var(--blue));
  color:#fff; border:1px solid rgba(255,255,255,.25);
  font-size:20px; cursor:pointer; display:flex; align-items:center; justify-content:center;
  box-shadow:0 10px 26px -6px var(--blue-glow);
}
.play-btn.disabled{ opacity:.35; box-shadow:none; }
.play-btn-sm{ width:44px; height:44px; font-size:16px; flex-shrink:0; }
.icon-btn{
  width:40px; height:40px; border-radius:50%; border:1px solid var(--panel-border); background:var(--panel);
  cursor:pointer; font-size:15px; display:flex; align-items:center; justify-content:center; color:var(--text-dim);
}
.icon-btn.active{ color:var(--blue-light); border-color:var(--blue-light); }
.next-action{ margin-top:18px; padding:14px; background:var(--panel); border:1px solid var(--panel-border); border-radius:var(--radius); font-size:13.5px; color:var(--text-dim); }
.next-action .label{ font-weight:600; margin-bottom:4px; font-size:12px; color:var(--blue-light); }

/* ---- resources panel ---- */
.resource-card{ display:flex; align-items:center; justify-content:space-between; gap:10px; }
.pending-card{ display:flex; align-items:center; }
.directory-link{ display:inline-flex; align-items:center; gap:6px; color:var(--text); }
.directory-link:hover{ color:var(--blue-light); }
.link-arrow{ color:var(--blue-light); font-size:13px; }
.apply-btn{ width:auto; display:inline-flex; padding:9px 16px; font-size:13px; margin-top:2px; }
.link-btn{
  background:none; border:none; color:var(--blue-light); font-size:13.5px; font-weight:600;
  cursor:pointer; padding:8px; font-family:inherit;
}
.whatsapp-btn{
  display:flex; align-items:center; justify-content:center; gap:8px;
  background:linear-gradient(135deg, #25D366, #1DA851);
  box-shadow:0 8px 22px -8px rgba(37,211,102,.5);
}
.ai-tool-card{ padding:14px 16px; }
.ai-tool-explain{ font-size:12.5px; color:var(--text-dim); line-height:1.45; margin-top:8px; padding-top:8px; border-top:1px solid rgba(255,255,255,.08); }
.ai-tool-explain-label{ color:var(--blue-light); font-weight:600; }

/* ---------- Continue listening ---------- */
.continue-card{
  position:relative; height:140px; border-radius:var(--radius); margin-bottom:20px;
  background-size:cover; background-position:center; overflow:hidden; cursor:pointer;
}
.continue-card-overlay{
  position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(15,20,28,.25) 0%, rgba(12,16,22,.68) 60%, rgba(10,13,18,.92) 100%);
  backdrop-filter:blur(2px);
}
.continue-card-content{ position:absolute; inset:0; padding:16px; display:flex; flex-direction:column; justify-content:space-between; }
.continue-card-title{ font-weight:700; font-size:16px; color:#fff; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.continue-card-sub{ font-size:12.5px; color:rgba(243,245,247,.8); margin-top:2px; }
.continue-card-row{ display:flex; align-items:center; gap:14px; }
.waveform-line-sm{ flex:1; height:28px; }
.waveform-line-sm path{ fill:none; stroke:var(--blue-light); stroke-width:2; stroke-linecap:round; stroke-linejoin:round; filter:drop-shadow(0 0 5px var(--blue-glow)); }

/* ---------- Community ---------- */
.community-banner{
  border-radius:var(--radius); padding:16px; margin-bottom:16px; cursor:pointer;
  background:linear-gradient(135deg, var(--blue), var(--blue-dark));
  border:1px solid rgba(255,255,255,.12);
  box-shadow:0 12px 28px -14px var(--blue-glow);
}
.community-banner h3{ margin-bottom:4px; }
.community-banner p{ margin:0; font-size:13px; color:rgba(255,255,255,.85); }
.community-detail-card{ background:linear-gradient(135deg, rgba(59,133,181,.28), rgba(255,255,255,.04)); }

.form-field{ margin-bottom:14px; }
.form-field label{ display:block; font-size:13px; font-weight:600; margin-bottom:6px; color:var(--text); }
.form-field input, .form-field textarea{
  width:100%; padding:12px 13px; border:1px solid var(--panel-border); border-radius:16px;
  font-size:16px; font-family:inherit; background:rgba(255,255,255,.05); color:var(--text);
}
.form-field input::placeholder, .form-field textarea::placeholder{ color:var(--text-dimmer); }
.step-list{ counter-reset:step; margin:16px 0; padding:0; }
.step-list li{
  list-style:none; counter-increment:step; position:relative;
  padding-left:32px; margin-bottom:14px; font-size:14px; color:var(--text-dim);
}
.step-list li::before{
  content:counter(step); position:absolute; left:0; top:-1px;
  width:22px; height:22px; border-radius:50%; background:var(--blue); color:#fff;
  font-size:12px; font-weight:700; display:flex; align-items:center; justify-content:center;
}

/* ---------- Settings ---------- */
.settings-group{ margin-bottom:22px; }
.settings-group .group-label{ font-size:12px; color:var(--text-dim); margin:0 0 8px 4px; letter-spacing:.03em; }
.toggle{ width:44px; height:26px; border-radius:100px; background:rgba(255,255,255,.15); position:relative; cursor:pointer; flex-shrink:0; }
.toggle.on{ background:var(--blue); }
.toggle::after{ content:''; position:absolute; top:3px; left:3px; width:20px; height:20px; border-radius:50%; background:#fff; transition:left .15s ease; box-shadow:0 1px 3px rgba(0,0,0,.3); }
.toggle.on::after{ left:21px; }

/* ---------- Search ---------- */
.search-input{
  width:100%; padding:12px 14px; border:1px solid var(--panel-border); border-radius:100px;
  font-size:16px; margin-bottom:16px; background:var(--panel); color:var(--text);
}
.search-input::placeholder{ color:var(--text-dimmer); }

/* ---------- Modal ---------- */
.modal-overlay{
  position:fixed; inset:0; background:rgba(5,7,10,.65);
  display:flex; align-items:center; justify-content:center;
  padding:20px;
  z-index:50; animation:fadeIn .18s ease;
}
.modal-overlay.hidden{ display:none; }
@keyframes fadeIn{ from{opacity:0;} to{opacity:1;} }
.modal-card{
  width:100%; max-width:400px; background:var(--dark-bg-2);
  border:1px solid var(--panel-border);
  border-radius:var(--radius-lg); padding:24px 22px;
  animation:modalPop .22s cubic-bezier(.22,.9,.3,1);
  max-height:85vh; overflow-y:auto;
}
@keyframes modalPop{ from{ transform:scale(.92); opacity:0; } to{ transform:scale(1); opacity:1; } }
.rules-list{ margin:12px 0 16px; padding-left:20px; }
.rules-list li{ font-size:13.5px; color:var(--text-dim); margin-bottom:8px; line-height:1.45; }
.agree-row{ display:flex; align-items:center; gap:10px; padding:10px 0 16px; cursor:pointer; font-size:14px; font-weight:600; }
#confirm-join-btn:disabled{ opacity:.35; box-shadow:none; }

/* ---------- About ---------- */
.about-hero{
  background:linear-gradient(150deg, var(--blue), var(--blue-dark));
  border-radius:var(--radius); padding:22px 18px; margin-bottom:16px;
  border:1px solid rgba(255,255,255,.12);
}
.about-hero .eyebrow-dark{ color:rgba(255,255,255,.7); }
.about-hero h2{ font-size:21px; line-height:1.35; margin:0; }
.about-body{ padding:0 2px; }

/* ---------- Add to Home Screen prompt ---------- */
.add-home-card{ text-align:center; }
.add-home-icon{ width:56px; height:56px; margin:0 auto 14px; background:var(--blue); border-radius:16px; display:flex; align-items:center; justify-content:center; }
.add-home-icon img{ width:30px; height:30px; object-fit:contain; }
.add-home-steps{ text-align:left; margin:16px 0 20px; }
.add-home-step{ display:flex; align-items:flex-start; gap:10px; font-size:13.5px; color:var(--text-dim); margin-bottom:10px; line-height:1.4; }
.add-home-step-num{ width:20px; height:20px; border-radius:50%; background:var(--panel); border:1px solid var(--panel-border); display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:700; color:var(--blue-light); flex-shrink:0; }

/* ---------- Partners ---------- */
.partner-card{ text-align:left; }
.partner-logo-wrap{
  height:56px; display:flex; align-items:center; margin-bottom:12px;
}
.partner-logo{ max-height:56px; max-width:160px; object-fit:contain; }