:root{--blue:#0b57d0;--navy:#0a2a6b;--red:#d62839;--bg:#f5f7fb;--card:#fff;--line:#e6eaf2}
*{-webkit-tap-highlight-color:transparent}
body.mobile-ui{font-family:'Inter',sans-serif;background:var(--bg);max-width:480px;margin:0 auto;min-height:100vh;
  padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}
.app-shell{padding:20px}
.brand{font-weight:700;font-style:italic;color:var(--navy)} .brand span{color:var(--red)}
.btn-primary{background:var(--blue);border-color:var(--blue);border-radius:10px;padding:12px;font-weight:600}
.form-control,.form-select{border-radius:10px;padding:12px;border-color:var(--line)}
.card-ui{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px}

/* auth */
.logo-wrap{margin:8px 0 18px}.logo-img{max-width:190px;height:auto}.brand-lg{font-size:2.2rem}
.page-title{font-weight:700;font-size:1.45rem;margin:0;color:#0f1a33}.page-sub{color:#6b7488;margin-bottom:18px}
.field{position:relative;margin-bottom:12px}
.field>i{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:#6b7488;z-index:2;pointer-events:none}
.field .form-control,.field .form-select{padding-left:42px;background-color:#fff;min-height:48px}
.field .eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:0;background:none;padding:10px;color:#6b7488;z-index:3}
.field .is-invalid{border-color:var(--red)}
.field .err{color:var(--red);font-size:.78rem;margin:3px 4px 0}
.link-blue{color:var(--blue);text-decoration:none}
.btn-primary:disabled{opacity:.75}

/* activation + purchase */
.info-card,.notice{display:flex;gap:12px;background:#eef3fc;border:1px solid var(--line);border-radius:12px;padding:14px;font-size:.85rem;color:#44506a;margin-bottom:14px}
.info-card>i,.notice>i{font-size:2rem;color:var(--navy)}.info-card strong,.notice strong{color:#0f1a33}
.notice-warn{background:#fff7e6;border-color:#f6dfa8}.notice-warn>i{color:#c98a00;font-size:1.6rem}
.notice-ok{background:#eaf8f0;border-color:#bfe6cf}.notice-ok>i{color:#1e9e5a;font-size:1.6rem}
.page-header{display:flex;align-items:center;gap:12px;font-weight:600;font-size:1.05rem;margin:-4px 0 18px}.page-header a{color:#0f1a33;font-size:1.3rem;text-decoration:none}
.pay-row{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px dashed var(--line);font-size:.9rem}.pay-row span{color:#6b7488}
.steps{list-style:none;padding:0;margin:0;position:relative}
.steps li{display:flex;gap:14px;padding-bottom:20px;position:relative}
.steps li:not(:last-child)::before{content:'';position:absolute;left:15px;top:32px;bottom:2px;border-left:2px solid #c9d6ef}
.steps .num{flex:0 0 32px;height:32px;border-radius:50%;background:var(--blue);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.9rem}
.steps small{color:#6b7488}

/* dashboard + bottom nav */
.app-shell.has-nav{padding-bottom:96px}
.dash-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.brand-sm{font-size:1.25rem}
.bell{color:#0f1a33;font-size:1.3rem;text-decoration:none}
.avatar{width:36px;height:36px;border-radius:50%;background:var(--blue);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;overflow:hidden;text-decoration:none}
.avatar img{width:100%;height:100%;object-fit:cover}
.welcome{font-weight:700;line-height:1.2;margin:4px 0 4px;color:#0f1a33}.welcome span{color:var(--blue)}
.hero{background:linear-gradient(120deg,#0a2a6b,#0b57d0);border-radius:16px;padding:22px 18px;display:flex;justify-content:space-between;align-items:center;color:#fff;margin-bottom:16px;overflow:hidden}
.hero .h1{font-weight:700;font-size:1.15rem}.hero .h2{font-weight:700;font-size:1.15rem;color:#ff6b7a}
.hero>i{font-size:3.6rem;opacity:.35}
.stat{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px;display:flex;gap:10px;align-items:center;height:100%}
.stat .ico{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:1.2rem;flex:0 0 40px}
.bg-blue{background:#e3edff;color:#0b57d0}.bg-green{background:#e0f6e9;color:#1e9e5a}.bg-purple{background:#ece6fb;color:#6a4bd8}.bg-gold{background:#fff1cc;color:#d99a00}
.stat-val{font-weight:700;font-size:1.2rem;line-height:1.1;color:#0f1a33}.stat-val.sm{font-size:.95rem}
.stat-lbl{font-size:.72rem;color:#6b7488}
.qa{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;height:84px;border-radius:14px;font-weight:600;font-size:.85rem;text-decoration:none;color:#0f1a33}
.qa i{font-size:1.5rem}
.qa-blue{background:#e3edff}.qa-blue i{color:#0b57d0}.qa-pink{background:#ffe3e8}.qa-pink i{color:#e0364f}
.qa-orange{background:#fff0d6}.qa-orange i{color:#f08a00}.qa-purple{background:#ece6fb}.qa-purple i{color:#6a4bd8}
.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:480px;background:#fff;border-top:1px solid var(--line);
  display:flex;justify-content:space-around;padding:8px 0 calc(8px + env(safe-area-inset-bottom));z-index:50}
.bottom-nav a{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:.68rem;color:#6b7488;text-decoration:none;flex:1}
.bottom-nav a i{font-size:1.3rem}.bottom-nav a.active{color:var(--blue);font-weight:600}

/* tests */
.cat-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin-bottom:12px}
.cat-head{display:flex;align-items:center;gap:12px;text-decoration:none;color:#0f1a33}
.cat-head>.bi-chevron-right,.sec-row>.bi-chevron-right{color:#6b7488}
.cat-ico{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.4rem;flex:0 0 44px}
.cat-name{display:block;font-weight:700;font-size:1.02rem}
.cat-soon{display:block;font-size:.75rem;color:#6b7488}
.cat-subs{list-style:none;margin:6px 0 2px;padding:0 0 0 56px}
.cat-subs li{font-size:.8rem;line-height:1.7}.cat-subs a{color:#44506a;text-decoration:none}
.cat-subs li::before{content:'•';color:#6b7488;margin-right:6px}
.sec-row{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin-bottom:10px;text-decoration:none;color:#0f1a33}
.test-row{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:10px 12px;margin-bottom:10px}
.test-ico{width:40px;height:40px;border-radius:10px;background:#e3edff;color:var(--blue);display:flex;align-items:center;justify-content:center;font-size:1.3rem;flex:0 0 40px}
.test-name{font-weight:600}.test-meta{font-size:.75rem;color:#6b7488}
.btn-start{border-radius:8px;padding:6px 16px;font-weight:600}
.chip{font-weight:700;font-size:.8rem;padding:4px 10px;border-radius:8px}.chip-ok{background:#e0f6e9;color:#157347}.chip-bad{background:#ffe3e8;color:#c02a3f}
.test-result{font-size:.75rem;font-weight:600;margin-top:2px}.txt-ok{color:#157347}.txt-bad{color:#c02a3f}

/* exam */
.exam-top{display:flex;align-items:center;gap:12px;margin:-4px 0 14px}.exam-top>a{color:#0f1a33;font-size:1.3rem;text-decoration:none}
.exam-title{font-weight:700;line-height:1.15}.exam-sub{font-size:.8rem;color:#6b7488}
.exam-bar{display:flex;justify-content:space-between;align-items:center;font-size:.85rem;color:#44506a;margin-bottom:6px}
.timer{font-weight:700;color:#0f1a33;font-variant-numeric:tabular-nums}.timer.timer-low{color:var(--red)}
.exam-progress{height:6px;border-radius:6px;background:#dfe6f4;margin-bottom:14px}.exam-progress .progress-bar{background:var(--blue);transition:width .25s}
.q-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:14px}
.q-text{font-weight:600;margin-bottom:14px;white-space:pre-line;line-height:1.4}
.opt-row{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:10px;padding:12px;margin-bottom:10px;cursor:pointer;background:#fff}
.opt-row .radio{width:20px;height:20px;border:2px solid #b8c3da;border-radius:50%;flex:0 0 20px;position:relative}
.opt-row.sel{border-color:var(--blue);background:#eef3fc}
.opt-row.sel .radio{border-color:var(--blue)}.opt-row.sel .radio::after{content:'';position:absolute;inset:3px;background:var(--blue);border-radius:50%}
.opt-text{font-size:.92rem}
.exam-nav{display:flex;gap:12px}.exam-nav .btn{flex:1}
.btn-prev{background:#e3edff;color:var(--blue);border-radius:10px;padding:12px;font-weight:600}.btn-prev:disabled{opacity:.5}
.exam-nav .btn-primary{border-radius:10px}
/* completed */
.done-wrap{text-align:center;position:relative;padding:26px 0 8px}
.done-check{width:92px;height:92px;border-radius:50%;background:#1fae5b;color:#fff;font-size:3rem;display:flex;align-items:center;justify-content:center;margin:0 auto 14px;box-shadow:0 8px 20px rgba(31,174,91,.3)}
.done-title{font-weight:700;color:#0f1a33;margin:0}.done-sub{color:#6b7488;margin:2px 0 8px}
.done-card{margin-top:16px}.done-row{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line)}.done-row:last-child{border:0}.done-row span{color:#6b7488}
.btn-soft{background:#eef3fc;color:var(--blue);font-weight:600;border-radius:10px;padding:12px}
.confetti i{position:absolute;width:8px;height:8px;border-radius:2px;opacity:.9}
.confetti i:nth-child(1){left:8%;top:10%;background:#e83e8c;transform:rotate(20deg)}.confetti i:nth-child(2){left:18%;top:40%;background:#f6b400}
.confetti i:nth-child(3){left:28%;top:6%;background:#0b57d0;transform:rotate(45deg)}.confetti i:nth-child(4){left:40%;top:22%;background:#1fae5b}
.confetti i:nth-child(5){left:60%;top:8%;background:#f6b400;transform:rotate(30deg)}.confetti i:nth-child(6){left:72%;top:30%;background:#e83e8c}
.confetti i:nth-child(7){left:84%;top:12%;background:#0b57d0;transform:rotate(60deg)}.confetti i:nth-child(8){left:92%;top:42%;background:#1fae5b}
.confetti i:nth-child(9){left:12%;top:62%;background:#0b57d0}.confetti i:nth-child(10){left:88%;top:68%;background:#f6b400;transform:rotate(15deg)}
.confetti i:nth-child(11){left:4%;top:28%;background:#1fae5b;transform:rotate(70deg)}.confetti i:nth-child(12){left:50%;top:2%;background:#e83e8c;transform:rotate(35deg)}

/* results / resit / profile */
.fchips{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px;margin-bottom:12px;scrollbar-width:none}.fchips::-webkit-scrollbar{display:none}
.fchips a{white-space:nowrap;padding:6px 16px;border-radius:20px;background:#fff;border:1px solid var(--line);color:#44506a;text-decoration:none;font-size:.82rem;font-weight:600}
.fchips a.active{background:var(--blue);border-color:var(--blue);color:#fff}
.res-row{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:10px 12px;margin-bottom:10px;text-decoration:none;color:#0f1a33}
.pct{font-weight:700;font-size:.85rem;padding:5px 10px;border-radius:8px;white-space:nowrap}.pct-ok{background:#e0f6e9;color:#157347}.pct-mid{background:#fff1cc;color:#b27800}.pct-bad{background:#ffe3e8;color:#c02a3f}
.rev-q{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;margin-bottom:12px}
.rev-opt{display:flex;gap:10px;align-items:center;border:1px solid var(--line);border-radius:10px;padding:9px 10px;margin-bottom:8px;font-size:.88rem;color:#44506a}
.rev-opt>i{color:#b8c3da}.rev-correct{background:#eaf8f0;border-color:#bfe6cf;color:#157347}.rev-correct>i{color:#1fae5b}
.rev-wrong{background:#ffe9ed;border-color:#f5c2cb;color:#c02a3f}.rev-wrong>i{color:#e0364f}
.rev-none{font-size:.8rem;color:#b27800;margin:2px 0 6px}.rev-exp{font-size:.82rem;color:#44506a;background:#f4f7fd;border-radius:10px;padding:10px;margin-top:6px}
.prof-avatar-wrap{position:relative;width:104px;margin:4px auto 18px}
.prof-avatar{width:104px;height:104px;border-radius:50%;background:var(--blue);color:#fff;font-size:2.4rem;font-weight:700;display:flex;align-items:center;justify-content:center;overflow:hidden;border:3px solid #fff;box-shadow:0 4px 14px rgba(11,87,208,.25)}
.prof-avatar img{width:100%;height:100%;object-fit:cover}
.prof-cam{position:absolute;right:0;bottom:0;width:34px;height:34px;border-radius:50%;border:2px solid #fff;background:var(--blue);color:#fff;display:flex;align-items:center;justify-content:center}
.prof-table{padding:6px 14px}.prof-row{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);font-size:.9rem}.prof-row:last-child{border:0}
.prof-row span{color:#6b7488}.prof-row b{font-weight:600;text-align:right;word-break:break-word}

/* NMC Excellence branding */
.logo-wrap{margin:4px 0 16px}.logo-img{max-width:240px;width:72%;height:auto}
.brand-link{display:flex;align-items:center;gap:8px;text-decoration:none;color:#0a6b35}
.brand-mark{height:34px;width:auto}.brand-name{white-space:nowrap;font-size:.95rem;font-weight:500;letter-spacing:.01em;color:#0a6b35}.brand-name b{font-weight:800}
