/* ============================================================
   DFIA Maharat — shared stylesheet (mobile-first, dark theme)
   Palette: deep indigo-teal night sky + saffron/gold verification
   ============================================================ */
@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Fraunces:opsz,wght@9..144,600;9..144,700&display=swap');

:root{
  --bg-0:#0b1220;          /* night base */
  --bg-1:#101a2e;
  --card:#16233c;
  --card-2:#1c2c4a;
  --line:#28395c;
  --ink:#eaf0fb;
  --ink-dim:#9db0d0;
  --teal:#2dd4bf;          /* progress / action */
  --teal-deep:#0d9488;
  --gold:#f5b942;          /* verified */
  --gold-soft:rgba(245,185,66,.14);
  --red:#f47174;
  --green:#4ade80;
  --radius:16px;
  --shadow:0 10px 30px rgba(0,0,0,.35);
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  font-family:'Manrope',system-ui,-apple-system,sans-serif;
  background:
    radial-gradient(1200px 600px at 80% -10%, rgba(45,212,191,.10), transparent 60%),
    radial-gradient(900px 500px at -10% 110%, rgba(245,185,66,.07), transparent 60%),
    linear-gradient(160deg,var(--bg-0),var(--bg-1) 60%,#0d1526);
  min-height:100vh;color:var(--ink);line-height:1.55;
}
a{color:var(--teal);text-decoration:none}
.wrap{max-width:760px;margin:0 auto;padding:16px 14px 90px}
.wrap-wide{max-width:980px}

/* ---------- top bar ---------- */
.topbar{position:sticky;top:0;z-index:20;backdrop-filter:blur(12px);
  background:rgba(11,18,32,.82);border-bottom:1px solid var(--line)}
.topbar-in{max-width:760px;margin:0 auto;display:flex;align-items:center;gap:10px;padding:12px 14px}
.topbar-in.wide{max-width:980px}
.brand{font-family:'Fraunces',serif;font-weight:700;font-size:1.15rem;letter-spacing:.2px}
.brand small{display:block;font-family:'Manrope';font-weight:500;font-size:.62rem;
  color:var(--ink-dim);letter-spacing:.14em;text-transform:uppercase}
.spacer{flex:1}
.pill{font-size:.72rem;font-weight:700;padding:5px 11px;border-radius:99px;border:1px solid var(--line);color:var(--ink-dim)}
.pill.gold{color:var(--gold);border-color:rgba(245,185,66,.4);background:var(--gold-soft)}

/* ---------- cards & layout ---------- */
.card{background:linear-gradient(170deg,var(--card),var(--card-2));border:1px solid var(--line);
  border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}
.card + .card{margin-top:12px}
.grid{display:grid;gap:12px}
@media(min-width:640px){.grid.cols-2{grid-template-columns:1fr 1fr}}
h1.page{font-family:'Fraunces',serif;font-size:1.5rem;margin:18px 2px 4px}
p.sub{color:var(--ink-dim);font-size:.88rem;margin:0 2px 16px}
.muted{color:var(--ink-dim)}
.small{font-size:.8rem}

/* ---------- category card ---------- */
.cat{display:flex;gap:12px;align-items:center;transition:transform .15s ease}
.cat:active{transform:scale(.985)}
.cat .ico{font-size:1.6rem;width:52px;height:52px;display:grid;place-items:center;
  background:rgba(45,212,191,.08);border:1px solid rgba(45,212,191,.22);border-radius:14px;flex-shrink:0}
.cat .meta{flex:1;min-width:0}
.cat .meta b{display:block;font-size:.95rem}
.cat .meta span{font-size:.76rem;color:var(--ink-dim)}
.lv-badge{font-family:'Fraunces',serif;font-weight:700;font-size:1.05rem;text-align:center;
  min-width:64px;padding:8px 6px;border-radius:12px;background:var(--gold-soft);
  border:1px solid rgba(245,185,66,.35);color:var(--gold)}
.lv-badge small{display:block;font-family:'Manrope';font-weight:700;font-size:.55rem;
  letter-spacing:.12em;text-transform:uppercase;opacity:.8}
.lv-badge.none{background:rgba(157,176,208,.08);border-color:var(--line);color:var(--ink-dim)}

/* ---------- status chips ---------- */
.chip{display:inline-flex;align-items:center;gap:5px;font-size:.68rem;font-weight:800;
  letter-spacing:.05em;text-transform:uppercase;padding:3px 9px;border-radius:99px}
.chip.pending{background:rgba(245,185,66,.15);color:var(--gold)}
.chip.verified{background:rgba(74,222,128,.13);color:var(--green)}
.chip.rejected{background:rgba(244,113,116,.13);color:var(--red)}
.chip.draft{background:rgba(157,176,208,.12);color:var(--ink-dim)}

/* ---------- progress rail (signature element) ---------- */
.rail{display:flex;gap:6px;margin-top:8px}
.rail i{flex:1;height:6px;border-radius:99px;background:rgba(157,176,208,.16)}
.rail i.done{background:linear-gradient(90deg,var(--gold),#ffd97a)}
.rail i.part{background:linear-gradient(90deg,var(--teal-deep),var(--teal))}

/* ---------- level accordion ---------- */
details.level{border:1px solid var(--line);border-radius:var(--radius);
  background:linear-gradient(170deg,var(--card),var(--card-2));margin-bottom:12px;overflow:hidden}
details.level summary{list-style:none;cursor:pointer;display:flex;align-items:center;
  gap:10px;padding:14px 16px;font-weight:700;font-size:.9rem}
details.level summary::-webkit-details-marker{display:none}
details.level summary .lno{font-family:'Fraunces',serif;color:var(--gold);font-size:1rem;min-width:26px}
details.level summary .st{margin-left:auto;font-size:.7rem;font-weight:800;color:var(--ink-dim)}
details.level[open] summary{border-bottom:1px solid var(--line)}
.skill{padding:12px 16px;border-bottom:1px solid rgba(40,57,92,.6)}
.skill:last-child{border-bottom:none}
.skill .sname{font-size:.86rem;font-weight:600;margin-bottom:8px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.skill .vtag{font-size:.62rem;font-weight:800;color:var(--gold);background:var(--gold-soft);
  padding:2px 7px;border-radius:99px;border:1px solid rgba(245,185,66,.3)}

/* rating selector: 7 segmented chips */
.rate{display:flex;flex-wrap:wrap;gap:6px}
.rate label{position:relative}
.rate input{position:absolute;opacity:0;pointer-events:none}
.rate span{display:inline-block;font-size:.68rem;font-weight:700;padding:6px 10px;border-radius:99px;
  border:1px solid var(--line);color:var(--ink-dim);cursor:pointer;user-select:none;transition:all .12s}
.rate input:checked + span{background:linear-gradient(135deg,var(--teal-deep),var(--teal));
  color:#04241f;border-color:transparent}
.rate input:focus-visible + span{outline:2px solid var(--teal);outline-offset:2px}
.rate.readonly span{opacity:.55;cursor:default}

/* ---------- buttons / forms ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;
  padding:14px 18px;border:none;border-radius:14px;font-family:'Manrope';font-weight:800;
  font-size:.92rem;cursor:pointer;transition:transform .12s,filter .15s}
.btn:active{transform:scale(.98)}
.btn-primary{background:linear-gradient(135deg,var(--teal-deep),var(--teal));color:#04241f}
.btn-gold{background:linear-gradient(135deg,#d99a1f,var(--gold));color:#2b1c00}
.btn-ghost{background:transparent;border:1px solid var(--line);color:var(--ink)}
.btn-danger{background:rgba(244,113,116,.14);border:1px solid rgba(244,113,116,.4);color:var(--red)}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.btn-row{display:flex;gap:10px}
.btn-row .btn{flex:1}
input[type=text],input[type=password],input[type=number],select,textarea{
  width:100%;padding:13px 14px;border-radius:12px;border:1px solid var(--line);
  background:rgba(11,18,32,.55);color:var(--ink);font-family:'Manrope';font-size:.95rem}
input:focus,select:focus,textarea:focus{outline:2px solid var(--teal);outline-offset:1px;border-color:transparent}
label.f{display:block;font-size:.74rem;font-weight:800;letter-spacing:.08em;
  text-transform:uppercase;color:var(--ink-dim);margin:14px 0 6px}

/* ---------- alerts ---------- */
.alert{padding:12px 14px;border-radius:12px;font-size:.86rem;font-weight:600;margin-bottom:14px}
.alert.ok{background:rgba(74,222,128,.12);color:var(--green);border:1px solid rgba(74,222,128,.3)}
.alert.err{background:rgba(244,113,116,.12);color:var(--red);border:1px solid rgba(244,113,116,.3)}
.alert.info{background:rgba(45,212,191,.1);color:var(--teal);border:1px solid rgba(45,212,191,.3)}

/* ---------- login hero ---------- */
.login-wrap{max-width:420px;margin:0 auto;padding:12vh 18px 40px}
.login-logo{text-align:center;margin-bottom:26px}
.login-logo .mark{font-size:2.4rem}
.login-logo h1{font-family:'Fraunces',serif;font-size:1.9rem;margin-top:6px}
.login-logo p{color:var(--ink-dim);font-size:.82rem;letter-spacing:.12em;text-transform:uppercase;margin-top:4px}

/* ---------- tables (admin) ---------- */
.tbl{width:100%;border-collapse:collapse;font-size:.84rem}
.tbl th{color:var(--ink-dim);font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;
  text-align:left;padding:10px 10px;border-bottom:1px solid var(--line)}
.tbl td{padding:11px 10px;border-bottom:1px solid rgba(40,57,92,.5);vertical-align:middle}
.tbl tr:last-child td{border-bottom:none}

/* ---------- sticky action bar ---------- */
.sticky-actions{position:fixed;left:0;right:0;bottom:0;z-index:30;
  background:rgba(11,18,32,.92);backdrop-filter:blur(12px);border-top:1px solid var(--line)}
.sticky-actions .in{max-width:760px;margin:0 auto;padding:12px 14px;display:flex;gap:10px}
.sticky-actions .btn{flex:1}

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

/* ============================================================
   Litera Card — animated competency card on the dashboard
   ============================================================ */
.lcard{position:relative;overflow:hidden;border-radius:20px;padding:18px 18px 16px;
  border:1px solid rgba(45,212,191,.3);box-shadow:var(--shadow);
  background:
    radial-gradient(500px 220px at 110% -20%, rgba(45,212,191,.16), transparent 60%),
    linear-gradient(135deg,#12203a 0%,#173052 55%,#0f1c33 100%);
  animation:lcard-in .6s ease both}
.lcard.earned{border-color:rgba(245,185,66,.55);
  background:
    radial-gradient(520px 240px at 110% -20%, rgba(245,185,66,.2), transparent 60%),
    linear-gradient(135deg,#1c1704 0%,#3a2c0a 50%,#1a1403 100%)}
@keyframes lcard-in{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}

/* moving shine sweep, like light over a plastic card */
.lcard-shine{position:absolute;top:-60%;left:-40%;width:45%;height:220%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.09),transparent);
  transform:rotate(18deg);animation:shine 3.6s ease-in-out infinite}
.lcard.earned .lcard-shine{background:linear-gradient(100deg,transparent,rgba(255,220,130,.16),transparent)}
@keyframes shine{0%{left:-50%}55%{left:120%}100%{left:120%}}

.lcard-top{display:flex;justify-content:space-between;align-items:flex-start}
.lcard-brand{font-family:'Fraunces',serif;font-weight:700;font-size:1rem;letter-spacing:.14em}
.lcard-type{font-size:.6rem;font-weight:800;letter-spacing:.2em;color:var(--teal);margin-top:2px}
.lcard.earned .lcard-type{color:var(--gold)}
.lcard-chip{width:38px;height:28px;border-radius:6px;
  background:linear-gradient(135deg,#e8c877,#b98d34 60%,#e8c877);
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.25), inset 0 6px 0 -3px rgba(255,255,255,.35)}

.lcard-mid{display:flex;align-items:center;gap:16px;margin-top:14px}
.ring{position:relative;width:96px;height:96px;flex-shrink:0}
.ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.ring-bg{fill:none;stroke:rgba(157,176,208,.18);stroke-width:9}
.ring-fg{fill:none;stroke:url(#nograd);stroke:var(--teal);stroke-width:9;stroke-linecap:round;
  filter:drop-shadow(0 0 6px rgba(45,212,191,.5))}
.lcard.earned .ring-fg{stroke:var(--gold);filter:drop-shadow(0 0 8px rgba(245,185,66,.55))}
.ring-num{position:absolute;inset:0;display:grid;place-items:center;white-space:nowrap;
  font-family:'Fraunces',serif;font-weight:700;font-size:1.2rem}
.lcard-info{min-width:0;display:flex;flex-direction:column;gap:2px}
.lcard-info b{font-size:1rem}
.lcard-info span{font-size:.76rem;color:var(--ink-dim)}
.lcard-info em{font-style:normal;font-size:.76rem;color:var(--ink-dim);margin-top:4px}
.lcard-info em.ok-line{color:var(--gold);font-weight:700}
.lcard-stats{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.lcard-stats i{font-style:normal;font-size:.66rem;font-weight:800;padding:4px 9px;border-radius:99px;
  border:1px solid var(--line);color:var(--ink-dim);background:rgba(11,18,32,.35)}

.lcard-rail{display:flex;gap:6px;margin-top:14px}
.lcard-rail i{flex:1;height:7px;border-radius:99px;background:rgba(157,176,208,.16)}
.lcard-rail i.done{background:linear-gradient(90deg,var(--teal-deep),var(--teal));
  animation:seg-pop .5s ease both}
.lcard.earned .lcard-rail i.done{background:linear-gradient(90deg,#d99a1f,var(--gold))}
@keyframes seg-pop{from{transform:scaleX(.2);opacity:0}to{transform:none;opacity:1}}

@media (prefers-reduced-motion:reduce){
  .lcard,.lcard-shine,.lcard-rail i.done{animation:none!important}
}
