:root{
  --bg:#0a0a0b; --bg-2:#111113; --panel:#161618; --panel-2:#1d1d20; --panel-3:#232327;
  --line:rgba(255,255,255,.08); --line-strong:rgba(212,175,55,.35);
  --text:#f4f1ea; --muted:#a7a29a; --muted-2:#7d7871;
  --gold:#d4af37; --gold-2:#f0d67a; --gold-deep:#b8912b;
  --green:#4ec97a; --red:#e0603a;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  background:radial-gradient(900px 500px at 50% -260px, rgba(212,175,55,.10), transparent 60%), var(--bg);
  color:var(--text);-webkit-font-smoothing:antialiased;min-height:100vh;
}
.app{max-width:480px;margin:0 auto;padding:0 18px calc(40px + env(safe-area-inset-bottom))}

/* Header */
.top{display:flex;align-items:center;gap:11px;padding:calc(env(safe-area-inset-top) + 18px) 0 14px}
.hubback{
  width:38px;height:38px;border-radius:11px;flex:none;border:1px solid var(--line);
  background:var(--panel-2);color:var(--gold-2);font-size:22px;font-weight:700;
  display:flex;align-items:center;justify-content:center;text-decoration:none;
}
.shield{
  width:38px;height:38px;border-radius:11px;flex:none;
  background:linear-gradient(160deg,var(--gold-2),var(--gold-deep));
  display:flex;align-items:center;justify-content:center;color:#1a1206;font-weight:900;font-size:16px;
  box-shadow:0 6px 20px -6px rgba(212,175,55,.6);
}
.brand h1{font-size:16px;margin:0;font-weight:800;letter-spacing:.01em}
.brand p{font-size:11px;margin:1px 0 0;color:var(--muted-2);letter-spacing:.04em}

.page-title{font-size:24px;font-weight:800;margin:8px 0 2px;letter-spacing:-.01em}
.page-sub{font-size:13.5px;color:var(--muted);margin:0 0 22px}

.card{background:linear-gradient(180deg,var(--panel),var(--bg-2));border:1px solid var(--line);border-radius:18px;padding:20px;margin-bottom:16px}
.card h3{margin:0 0 3px;font-size:15px;font-weight:700}
.card .cap{font-size:12px;color:var(--muted-2);margin:0 0 14px}

/* ===== Module cards (hub) ===== */
.mod{
  position:relative;display:flex;align-items:center;gap:15px;
  background:linear-gradient(180deg,var(--panel),var(--bg-2));
  border:1px solid var(--line);border-radius:18px;padding:18px;margin-bottom:14px;
  text-decoration:none;color:var(--text);overflow:hidden;
  transition:transform .12s ease, border-color .15s ease;
}
.mod.unlocked{border-color:var(--line-strong)}
.mod.unlocked:active{transform:scale(.99)}
.mod .mic{
  width:58px;height:58px;flex:none;border-radius:15px;font-size:26px;
  display:flex;align-items:center;justify-content:center;
  background:rgba(212,175,55,.1);border:1px solid var(--line-strong);
}
.mod.locked .mic{background:var(--panel-2);border-color:var(--line);filter:grayscale(.6) opacity(.7)}
.mod .mtxt{flex:1;min-width:0}
.mod .mtxt .mbadge{font-size:9.5px;font-weight:800;letter-spacing:.14em;color:var(--gold);text-transform:uppercase}
.mod .mtxt h3{margin:2px 0 2px;font-size:17px;font-weight:800}
.mod .mtxt p{margin:0;font-size:12.5px;color:var(--muted)}
.mod .mstate{flex:none;text-align:right}
.mod .arrow{font-size:22px;color:var(--gold-2)}
.mod .locktag{
  display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:800;
  color:var(--muted-2);background:var(--panel-2);border:1px solid var(--line);
  padding:6px 10px;border-radius:99px;
}
.mod .opentag{font-size:11px;font-weight:800;color:var(--green);background:rgba(78,201,122,.1);padding:6px 10px;border-radius:99px}
.mod.locked .mtxt h3, .mod.locked .mtxt p{color:var(--muted-2)}

/* Buy button inside a locked card */
.unlock-cta{
  display:block;text-align:center;text-decoration:none;
  background:linear-gradient(180deg,var(--gold-2),var(--gold-deep));color:#1a1206;font-weight:900;
  font-size:14px;padding:14px;border-radius:12px;margin-top:12px;text-transform:uppercase;letter-spacing:.02em;
  box-shadow:0 10px 26px -12px rgba(212,175,55,.7);
}

/* Code entry (hub) */
.codebox{display:flex;gap:10px}
.codebox input{
  flex:1;background:var(--panel-2);border:1px solid var(--line);color:var(--text);font-family:inherit;
  font-size:14px;padding:13px 14px;border-radius:12px;text-transform:uppercase;letter-spacing:.05em;text-align:center;
}
.codebox input:focus{outline:none;border-color:var(--line-strong)}
.codebox button{
  background:var(--panel-3);border:1px solid var(--line-strong);color:var(--gold-2);font-weight:800;
  font-size:13.5px;padding:0 18px;border-radius:12px;cursor:pointer;font-family:inherit;white-space:nowrap;
}
.codemsg{font-size:12.5px;font-weight:700;margin-top:10px;min-height:16px}
.codemsg.ok{color:var(--green)}.codemsg.err{color:var(--red)}

/* ===== Content reader (miracle / tboost) ===== */
.hero{
  border-radius:20px;padding:26px 22px;margin-bottom:20px;text-align:center;
  background:radial-gradient(400px 200px at 50% 0,rgba(212,175,55,.16),transparent 60%),linear-gradient(180deg,#161510,#0e0e0f);
  border:1px solid var(--line-strong);
}
.hero .hic{font-size:44px}
.hero h2{font-size:24px;margin:8px 0 4px;font-weight:800}
.hero p{margin:0;color:var(--muted);font-size:13.5px}

.lesson{background:linear-gradient(180deg,var(--panel),var(--bg-2));border:1px solid var(--line);border-radius:16px;padding:16px;margin-bottom:14px}
.lesson .lhead{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.lesson .lnum{width:30px;height:30px;flex:none;border-radius:9px;background:rgba(212,175,55,.12);border:1px solid var(--line-strong);color:var(--gold-2);font-weight:800;display:flex;align-items:center;justify-content:center;font-size:14px}
.lesson .lhead .lt b{display:block;font-size:15px}
.lesson .lhead .lt span{font-size:11.5px;color:var(--muted-2)}
.video{
  position:relative;width:100%;max-width:300px;aspect-ratio:9/16;margin:0 auto 14px;
  border-radius:14px;overflow:hidden;
  background:linear-gradient(160deg,#1a1a1d,#0c0c0e);border:1px solid var(--line);
  display:flex;align-items:center;justify-content:center;
}
.video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.video .play{width:56px;height:56px;border-radius:50%;background:rgba(212,175,55,.15);border:1px solid var(--line-strong);display:flex;align-items:center;justify-content:center;font-size:22px;color:var(--gold-2)}
.video .vnote{position:absolute;bottom:10px;font-size:10.5px;color:var(--muted-2)}
.lesson .ltext{font-size:14px;color:var(--text);line-height:1.6;margin:0}
.lesson .ltext.muted{color:var(--muted)}

.slot{
  border:1px dashed var(--line-strong);border-radius:14px;padding:20px;text-align:center;color:var(--muted-2);
  background:rgba(212,175,55,.03);font-size:13px;line-height:1.6;
}
.slot b{color:var(--gold-2)}

.btn-ghost{background:var(--panel-2);border:1px solid var(--line-strong);color:var(--gold-2);font-weight:700;font-size:12.5px;padding:9px 13px;border-radius:10px;cursor:pointer;font-family:inherit;text-decoration:none;display:inline-block}

/* Toast */
.toast{
  position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(20px);
  background:var(--panel-3);border:1px solid var(--line-strong);color:var(--text);
  padding:12px 18px;border-radius:12px;font-size:13.5px;font-weight:600;z-index:60;opacity:0;pointer-events:none;
  transition:all .3s ease;box-shadow:0 10px 30px -8px rgba(0,0,0,.7);white-space:nowrap;
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
