/* ===========================================================
   CoachLingua · Club Admin
   Professional admin aesthetic. Mobile-first.
   =========================================================== */
/* Club Admin tokens now MAP onto the shared design system (Gate 5D).
   Professional analytics aesthetic. Executive clarity. */
:root{
  --ca-bg:var(--cl-bg); --ca-card:var(--cl-card); --ca-card2:var(--cl-card-2);
  --ca-line:var(--cl-line);
  --ca-txt:var(--cl-text); --ca-mut:var(--cl-text-muted); --ca-blue:var(--cl-sky);
  --ca-green:var(--cl-green-light); --ca-amber:var(--cl-gold); --ca-red:var(--cl-danger);
  --ca-accent:var(--cl-violet);
}
*{box-sizing:border-box;margin:0;padding:0;}
html,body{background:var(--ca-bg);color:var(--ca-txt);
  font-family:var(--cl-font);
  -webkit-font-smoothing:antialiased;line-height:var(--cl-lh-body);}
#app{max-width:900px;margin:0 auto;padding:16px 16px 60px;}

/* top bar */
.ca-top{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:6px 0 16px;border-bottom:1px solid var(--ca-line);margin-bottom:18px;}
.ca-logo{font-weight:800;font-size:17px;letter-spacing:.2px;display:flex;align-items:center;gap:9px;}
.ca-logo span{color:var(--ca-blue);}
.ca-mark{height:26px;width:auto;display:block;}
.ca-logo em{font-style:normal;color:var(--ca-mut);font-size:13px;font-weight:600;
  border-left:1px solid var(--ca-line);padding-left:9px;}
.ca-status{font-size:12px;font-weight:700;color:var(--ca-mut);white-space:nowrap;}
.ca-status.both{color:var(--ca-green);}
.ca-status.coach{color:var(--ca-blue);}
.ca-status.play{color:var(--ca-amber);}

/* screens */
.screen{display:none;animation:fade var(--cl-dur-med) var(--cl-ease);}
.screen.active{display:block;}
@keyframes fade{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}

.ca-h2{font-size:15px;font-weight:800;margin:24px 0 10px;letter-spacing:.2px;}

/* headline metrics */
.ca-metrics{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:8px;}
.ca-metrics li{background:var(--ca-card);border:1px solid var(--ca-line);border-radius:14px;
  padding:14px 10px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:4px;}
.cm-icon{font-size:20px;}
.cm-val{font-size:24px;font-weight:900;color:var(--ca-blue);line-height:1;
  font-variant-numeric:tabular-nums;}
.cm-lbl{font-size:11px;color:var(--ca-mut);font-weight:600;}

/* cards */
.ca-card{background:var(--ca-card);border:1px solid var(--ca-line);border-radius:16px;padding:6px 16px;}
.ca-row{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:11px 0;border-bottom:1px solid var(--ca-line);font-size:14px;}
.ca-row:last-child{border-bottom:none;}
.ca-row span{color:var(--ca-mut);}
.ca-row b{font-weight:800;font-size:15px;}
.ca-row.warn b{color:var(--ca-amber);}
.ca-muted{color:var(--ca-mut);padding:14px 0;font-size:14px;}

/* mission rows */
.mission-row{padding:12px 0;border-bottom:1px solid var(--ca-line);}
.mission-row:last-child{border-bottom:none;}
.dr-name{font-size:15px;margin-bottom:4px;}
.dr-cat{font-size:12px;color:var(--ca-mut);font-weight:600;}
.dr-lang{font-size:13px;color:var(--ca-blue);margin-top:2px;}
.dr-vocab{color:var(--ca-mut);font-size:12px;}

/* analytics modules */
.session-hero{display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:14px 0;border-bottom:1px solid var(--ca-line);}
.session-hero div{display:flex;flex-direction:column;gap:3px;}
.session-hero b{font-size:18px;font-weight:900;}
.session-hero small,.ca-kicker{color:var(--ca-mut);font-size:12px;font-weight:700;}
.session-hero strong{min-width:54px;height:54px;border-radius:16px;display:grid;place-items:center;
  color:var(--cl-sky);background:hsla(205,100%,65%,.10);font-size:24px;font-weight:900;}
.coverage-head{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:14px 0 18px;border-bottom:1px solid var(--ca-line);overflow:hidden;}
.coverage-head span{color:var(--ca-mut);font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;}
.coverage-head b{font-size:24px;color:var(--cl-sky);font-weight:900;}
.coverage-head i{position:absolute;left:0;bottom:0;height:4px;border-radius:99px;
  background:linear-gradient(90deg,var(--cl-sky),var(--cl-green));}
.mission-stats{display:flex;flex-wrap:wrap;gap:8px;margin-top:7px;}
.mission-stats span{font-size:12px;color:var(--ca-mut);font-weight:700;border:1px solid var(--ca-line);
  border-radius:999px;padding:4px 8px;background:var(--ca-card2);}
.mission-row.done .dr-name b{color:var(--cl-green);}
.insight-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:12px 0;}
.insight-grid div{border:1px solid var(--ca-line);background:var(--ca-card2);border-radius:14px;padding:12px;}
.insight-grid span{display:block;color:var(--ca-mut);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.35px;margin-bottom:6px;}
.insight-grid b{font-size:14px;font-weight:900;}
.insight-grid .warn b{color:var(--ca-amber);}
.ca-h3{font-size:13px;font-weight:900;margin:10px 0;color:var(--ca-mut);text-transform:uppercase;letter-spacing:.5px;}
.xp-chart{width:100%;height:auto;display:block;padding:4px 0 10px;}
.chart-label,.chart-value{fill:var(--ca-mut);font:700 13px var(--cl-font);}
.chart-value{fill:var(--ca-txt);font-variant-numeric:tabular-nums;}
.chart-bar{fill:var(--cl-sky);filter:drop-shadow(0 6px 14px hsla(205,100%,50%,.16));}
.rank{color:var(--ca-mut);font-size:12px;margin-right:5px;}
.ca-table td small{display:block;color:var(--ca-mut);font-size:11px;margin-top:2px;}
.ca-table td.ok{color:var(--cl-green);font-weight:800;}

/* roster table */
.ca-table{width:100%;border-collapse:collapse;font-size:14px;}
.ca-table th{text-align:left;color:var(--ca-mut);font-size:11px;font-weight:700;
  text-transform:uppercase;letter-spacing:.5px;padding:10px 8px;
  border-bottom:2px solid var(--ca-line);}
.ca-table td{padding:10px 8px;border-bottom:1px solid var(--ca-line);}
.ca-table tr:last-child td{border-bottom:none;}
.ca-table td.warn{color:var(--ca-amber);font-weight:700;}
.ca-table td b{font-weight:700;}

.ca-note{margin-top:26px;color:var(--ca-mut);font-size:12px;text-align:center;
  border-top:1px solid var(--ca-line);padding-top:16px;}

/* toast */
.ca-toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(20px);
  background:var(--ca-card);border:1px solid var(--ca-line);color:var(--ca-txt);padding:10px 18px;
  border-radius:12px;font-size:14px;font-weight:700;opacity:0;pointer-events:none;
  transition:opacity .2s ease,transform .2s ease;z-index:50;}
.ca-toast.show{opacity:1;transform:translateX(-50%) translateY(0);}

/* ============================================================
   GATE 5D — premium club analytics/trust polish
   Read-only admin surface. Professional. No kid-zone energy.
   ============================================================ */

/* metric cards: lift + border glow on hover */
.ca-metrics li{transition:transform var(--cl-dur-med) var(--cl-ease),
  border-color var(--cl-dur-med) var(--cl-ease),box-shadow var(--cl-dur-med) var(--cl-ease);}
.ca-metrics li:hover{transform:translateY(-2px);border-color:var(--cl-line-strong);
  box-shadow:var(--cl-e2);}

/* section headings use display font */
.ca-h2{font-family:var(--cl-font-display);}

/* card elevation */
.ca-card{box-shadow:var(--cl-e1);}

/* info rows: hover affordance */
.ca-row b{transition:color var(--cl-dur-fast) var(--cl-ease);}
.ca-row:hover b{color:var(--cl-sky);}

/* engagement accent rail (matches parent summary style) */
#engagementCard{position:relative;overflow:hidden;}
#engagementCard::before{content:"";position:absolute;inset:0 auto 0 0;width:4px;
  background:linear-gradient(180deg,var(--cl-sky),var(--cl-green));}

/* warn rows glow */
.ca-row.warn{background:hsla(42,100%,65%,.04);border-radius:var(--cl-r-sm);}
.ca-row.warn b{color:var(--ca-amber);}
.ca-table td.warn{color:var(--ca-amber);font-weight:800;
  background:hsla(42,100%,65%,.06);}

/* roster table: row hover */
.ca-table tbody tr{transition:background var(--cl-dur-fast) var(--cl-ease);}
.ca-table tbody tr:hover{background:hsla(205,100%,65%,.04);}

/* drill rows: hover + language cue highlight */
.drill-row{transition:background var(--cl-dur-fast) var(--cl-ease);}
.drill-row:hover{background:hsla(205,100%,65%,.03);}

/* focus-visible (a11y) */
:focus-visible{outline:3px solid var(--cl-sky);outline-offset:3px;}

/* entrance: metrics stagger on dashboard load */
#screenDash.active .ca-metrics li{animation:cl-fade-up var(--cl-dur-med) var(--cl-ease) both;}
#screenDash.active .ca-metrics li:nth-child(2){animation-delay:40ms;}
#screenDash.active .ca-metrics li:nth-child(3){animation-delay:80ms;}
#screenDash.active .ca-metrics li:nth-child(4){animation-delay:120ms;}
#screenDash.active .ca-metrics li:nth-child(5){animation-delay:160ms;}
#screenDash.active .ca-metrics li:nth-child(6){animation-delay:200ms;}

/* mobile */
@media (max-width:600px){
  #app{padding:14px 13px 56px;}
  .ca-metrics{grid-template-columns:repeat(2,1fr);}
  .insight-grid{grid-template-columns:1fr;}
  .cm-val{font-size:20px;}
  .ca-table{font-size:12px;}
  .ca-table th,.ca-table td{padding:8px 5px;}
  /* horizontal scroll for table on small screens */
  #rosterCard{overflow-x:auto;-webkit-overflow-scrolling:touch;}
}

/* ============================================================
   LIGHT THEME — admin analytics contrast overrides
   ============================================================ */
[data-theme="light"] #engagementCard::before {
  background: linear-gradient(180deg, hsl(205, 86%, 42%), hsl(145, 60%, 34%));
}

[data-theme="light"] .ca-row.warn {
  background: hsla(42, 95%, 44%, 0.09);
}

[data-theme="light"] .ca-row.warn b,
[data-theme="light"] .ca-table td.warn {
  color: hsl(38, 92%, 34%);
}

[data-theme="light"] .ca-table td.warn {
  background: hsla(42, 95%, 44%, 0.10);
}

[data-theme="light"] .ca-table tbody tr:hover,
[data-theme="light"] .drill-row:hover {
  background: hsla(205, 86%, 42%, 0.07);
}


/* Step 5/6 — signature live club data viz */
.ca-hicon,.cm-icon-img{width:24px;height:24px;object-fit:contain;vertical-align:middle;filter:drop-shadow(0 0 10px rgba(77,220,132,.24));}
.ca-h2{display:flex;align-items:center;gap:10px}.cm-icon-img{width:30px;height:30px;margin-bottom:8px}.total-xp-live .cm-val{color:var(--cl-gold);text-shadow:0 0 18px rgba(255,199,0,.24)}
.coverage-heatmap{display:grid;grid-template-columns:repeat(auto-fit,minmax(54px,1fr));gap:8px;margin:16px 0 18px}.heat-cell{display:grid;place-items:center;min-height:42px;border-radius:12px;background:color-mix(in srgb,var(--cl-green) var(--heat),rgba(255,255,255,.05));border:1px solid rgba(255,255,255,.09);font-size:12px;font-weight:900;text-transform:uppercase}.leaderboard-bars{display:grid;gap:12px}.leaderbar{display:grid;grid-template-columns:110px 1fr 72px;align-items:center;gap:10px;font-size:13px}.leaderbar i{height:18px;border-radius:99px;background:linear-gradient(90deg,var(--cl-sky),var(--cl-green),var(--cl-gold));width:0;box-shadow:0 0 20px rgba(77,220,132,.2);animation:leader-grow 900ms var(--cl-ease) forwards;animation-delay:var(--d)}.leaderbar i::after{content:"";display:block;width:var(--w);height:100%;}.leaderbar b{color:var(--cl-gold)}@keyframes leader-grow{to{width:var(--w)}}.retention-canvas{width:100%;max-height:170px;border-radius:18px;background:rgba(255,255,255,.035);border:1px solid var(--ca-line);margin-top:8px}@media (prefers-reduced-motion:reduce){.leaderbar i{animation:none;width:var(--w)}}
