/* ── GRID CARD (used by cogkeys/societies/subjects grids) ──────────────── */
.page-container {
  max-width:1100px;
  margin:0 auto;
  padding:28px 24px 48px;
}
.page-title {
  font-family:'JetBrains Mono', monospace;
  font-size:10px;
  font-weight:600;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--text3);
  margin-bottom:18px;
}

.grid {
  display:grid;
  grid-template-columns:repeat(auto-fill, minmax(260px, 1fr));
  gap:14px;
}
.grid-card {
  display:flex;
  flex-direction:column;
  gap:8px;
  padding:18px 18px 16px;
  border-radius:10px;
  border:1px solid var(--border);
  background:rgba(255,255,255,0.028);
  backdrop-filter:blur(18px) saturate(1.3);
  -webkit-backdrop-filter:blur(18px) saturate(1.3);
  text-decoration:none;
  color:inherit;
  cursor:pointer;
  transition:
    border-color .2s ease,
    background .2s ease,
    transform .24s cubic-bezier(.34,1.4,.64,1),
    box-shadow .24s ease;
  animation:fadeUp .28s cubic-bezier(.4,0,.2,1) both;
  position:relative;
  overflow:hidden;
}
.grid-card::before {
  content:'';
  position:absolute;
  inset:0 auto auto 0;
  width:0; height:2px;
  background:linear-gradient(90deg, var(--accent2), var(--accent), var(--accent3));
  transition:width .32s ease;
}
.grid-card:hover {
  border-color:var(--border2);
  background:rgba(255,255,255,0.055);
  transform:translateY(-3px);
  box-shadow:0 14px 30px rgba(0,0,0,0.35);
}
.grid-card:hover::before { width:100%; }

.grid-card-avatar {
  width:44px; height:44px;
  border-radius:50%;
  background:linear-gradient(135deg, var(--accent2), var(--accent));
  display:flex;
  align-items:center;
  justify-content:center;
  font-family:'JetBrains Mono', monospace;
  font-size:12px;
  font-weight:600;
  color:#fff;
  letter-spacing:.02em;
}
.grid-card-name {
  font-family:'Inter', sans-serif;
  font-weight:600;
  font-size:14px;
  color:var(--text);
  letter-spacing:.01em;
}
.grid-card-desc {
  font-size:11.5px;
  color:var(--text3);
  line-height:1.5;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.grid-card-stats {
  margin-top:auto;
  padding-top:6px;
  font-family:'JetBrains Mono', monospace;
  font-size:9px;
  color:var(--text3);
  letter-spacing:.05em;
}

/* Empty society (no members) card variant */
.grid-card.grid-card-empty { opacity:.55; }
.grid-card.grid-card-empty::before { display:none; }
.grid-card.grid-card-empty:hover {
  transform:none;
  box-shadow:none;
  border-color:var(--border);
  background:rgba(255,255,255,0.028);
}
.grid-card.grid-card-empty .grid-card-stats { color:var(--red); }

/* "+ New" card variant */
.grid-card.grid-card-new {
  border-style:dashed;
  align-items:center;
  justify-content:center;
  min-height:160px;
  color:var(--text3);
  gap:4px;
}
.grid-card.grid-card-new:hover { color:var(--text); }
.grid-card-new-icon {
  font-size:1.6rem;
  line-height:1;
  background:linear-gradient(135deg, var(--accent2), var(--accent3));
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  background-clip:text;
}
.grid-card-new-text {
  font-family:'JetBrains Mono', monospace;
  font-size:10px;
  letter-spacing:.08em;
  text-transform:uppercase;
}

/* ── BUTTON SIZE + VARIANTS ────────────────────────────────────────────── */
.fbtn.fbtn-sm { padding:4px 10px; font-size:9px; }
.fbtn-danger {
  background:var(--red-dim);
  border-color:rgba(224,85,85,0.3);
  color:var(--red);
}
.fbtn-danger:hover {
  background:rgba(224,85,85,0.22);
  border-color:rgba(224,85,85,0.5);
}

/* ── TOOLTIP ───────────────────────────────────────────────────────────── */
#tooltip {
  position:fixed;
  pointer-events:none;
  z-index:1000;
  background:rgba(12,14,22,0.92);
  backdrop-filter:blur(20px) saturate(1.6);
  -webkit-backdrop-filter:blur(20px) saturate(1.6);
  border:1px solid rgba(255,255,255,0.1);
  border-radius:8px;
  padding:8px 12px;
  font-size:12px;
  color:var(--text);
  display:none;
  max-width:260px;
  box-shadow:0 8px 32px rgba(0,0,0,.5);
}
#tooltip .tn {
  font-family:'JetBrains Mono', monospace;
  font-weight:600;
  font-size:11px;
  margin-bottom:2px;
  letter-spacing:.02em;
  color:var(--text);
}
#tooltip .tt {
  font-family:'Inter', sans-serif;
  font-size:10px;
  color:var(--text3);
  line-height:1.45;
}

/* ── GLASS UTILITIES ───────────────────────────────────────────────────── */
.glass {
  background:rgba(255,255,255,0.04);
  backdrop-filter:blur(18px) saturate(1.4);
  -webkit-backdrop-filter:blur(18px) saturate(1.4);
  border:1px solid rgba(255,255,255,0.09);
}
.glass-strong {
  background:rgba(255,255,255,0.07);
  backdrop-filter:blur(28px) saturate(1.6);
  -webkit-backdrop-filter:blur(28px) saturate(1.6);
  border:1px solid rgba(255,255,255,0.12);
}

/* ── LIGHT THEME COMPONENT OVERRIDES ───────────────────────────────────── */

/* Toolbar */
html[data-theme="light"] #toolbar {
  background:var(--bg);
}

/* Nav menu dropdown */
html[data-theme="light"] #nav-menu {
  background:linear-gradient(180deg, rgba(250,250,252,0.99), rgba(244,245,250,0.99));
  border-color:rgba(0,0,0,0.12);
  box-shadow:0 20px 60px rgba(0,0,0,0.12), 0 1px 0 rgba(255,255,255,0.9) inset, 0 30px 80px -20px rgba(0,102,255,0.08);
}
html[data-theme="light"] .nav-item:hover {
  background:rgba(0,0,0,0.05);
}
html[data-theme="light"] .nav-sep {
  background:rgba(0,0,0,0.08);
}

/* Modals */
html[data-theme="light"] .modal-overlay.open {
  background:rgba(0,0,0,0.28);
  backdrop-filter:blur(16px) brightness(0.94) saturate(1.2);
  -webkit-backdrop-filter:blur(16px) brightness(0.94) saturate(1.2);
}
html[data-theme="light"] .modal-shell {
  background:rgba(255,255,255,0.98);
  border-color:rgba(0,0,0,0.10);
  box-shadow:0 40px 100px rgba(0,0,0,0.15), 0 0 0 1px rgba(0,0,0,0.04) inset;
}
html[data-theme="light"] .modal-badge {
  color:#0052CC;
  background:rgba(0,102,255,0.08);
  border-color:rgba(0,102,255,0.22);
}
html[data-theme="light"] .modal-nav-arrow {
  background:linear-gradient(180deg, rgba(255,255,255,0.96), rgba(245,245,247,0.96));
  border-color:rgba(0,0,0,0.14);
  color:rgba(10,10,10,0.72);
  box-shadow:0 8px 28px rgba(0,0,0,0.10);
}
html[data-theme="light"] .modal-nav-arrow:hover {
  background:linear-gradient(180deg, #fff, rgba(245,245,247,1));
  border-color:rgba(0,0,0,0.25);
  color:rgba(10,10,10,0.95);
}

/* Form controls */
html[data-theme="light"] .finput {
  background:#ffffff;
  border-color:rgba(0,0,0,0.14);
}
html[data-theme="light"] .finput:focus {
  background:#ffffff;
}
html[data-theme="light"] input[type="checkbox"] {
  background:linear-gradient(180deg, #fff, #f0f0f5);
  border-color:rgba(0,0,0,0.22);
  box-shadow:0 1px 0 rgba(255,255,255,0.9) inset, 0 1px 2px rgba(0,0,0,0.08);
}
html[data-theme="light"] input[type="checkbox"]:hover {
  border-color:rgba(0,0,0,0.35);
  background:linear-gradient(180deg, #fff, rgba(230,235,250,1));
}
html[data-theme="light"] input[type="checkbox"]:focus-visible {
  border-color:rgba(0,102,255,0.55);
  box-shadow:0 0 0 3px rgba(0,102,255,0.14);
}

/* Buttons */
html[data-theme="light"] .fbtn-save {
  background:rgba(0,102,255,0.10);
  color:#0052CC;
  border-color:rgba(0,102,255,0.28);
}
html[data-theme="light"] .fbtn-save:hover {
  background:rgba(0,102,255,0.18);
  border-color:rgba(0,102,255,0.40);
  box-shadow:0 0 20px rgba(0,102,255,0.10);
}
html[data-theme="light"] .fbtn-save-alt {
  background:rgba(0,102,255,0.07);
  color:#0066FF;
  border-color:rgba(0,102,255,0.20);
}
html[data-theme="light"] .fbtn-save-alt:hover {
  background:rgba(0,102,255,0.14);
  border-color:rgba(0,102,255,0.32);
  color:#0052CC;
}
html[data-theme="light"] .fbtn-cancel {
  border-color:rgba(0,0,0,0.12);
}
html[data-theme="light"] .fbtn-danger {
  background:rgba(224,85,85,0.07);
  border-color:rgba(224,85,85,0.25);
}
html[data-theme="light"] .fbtn-danger:hover {
  background:rgba(224,85,85,0.14);
  border-color:rgba(224,85,85,0.40);
}

/* Cards */
html[data-theme="light"] .card {
  background:rgba(255,255,255,0.85);
}
html[data-theme="light"] .grid-card {
  background:rgba(255,255,255,0.88);
}
html[data-theme="light"] .grid-card:hover {
  background:#fff;
  box-shadow:0 14px 30px rgba(0,0,0,0.10);
}

/* Table row hover */
html[data-theme="light"] table.data-table tr:hover td {
  background:rgba(0,0,0,0.025);
}

/* Tooltip */
html[data-theme="light"] #tooltip {
  background:rgba(255,255,255,0.98);
  border-color:rgba(0,0,0,0.12);
  box-shadow:0 8px 32px rgba(0,0,0,0.12);
}

/* Glass utilities */
html[data-theme="light"] .glass {
  background:rgba(255,255,255,0.65);
  border-color:rgba(0,0,0,0.08);
}
html[data-theme="light"] .glass-strong {
  background:rgba(255,255,255,0.90);
  border-color:rgba(0,0,0,0.12);
}

/* ── v2 COMPONENT SYSTEM (design handoff 2026-04-28) ───────────────────── */

/* Buttons — pill shape, Inter, clean semantic colours */
.ts-btn {
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  font-family:var(--font-body); font-weight:var(--fw-medium); font-size:15px;
  letter-spacing:-0.005em; padding:12px 20px; border-radius:999px;
  border:1px solid transparent; cursor:pointer;
  transition:background var(--dur-sm) var(--ease-io),
             color var(--dur-sm) var(--ease-io),
             border-color var(--dur-sm) var(--ease-io);
  text-decoration:none; user-select:none;
}
.ts-btn--primary { background:var(--accent); color:#fff; }
.ts-btn--primary:hover { background:var(--accent-hover); }
.ts-btn--primary:active { background:var(--accent-press); }
.ts-btn--secondary { background:transparent; color:var(--fg); border-color:var(--border-soft); }
.ts-btn--secondary:hover { border-color:var(--fg); }
.ts-btn--ghost { background:transparent; color:var(--fg); }
.ts-btn--ghost:hover { color:var(--accent); }
.ts-btn--danger { background:var(--red-dim); border-color:rgba(224,85,85,0.3); color:var(--red); }
.ts-btn--danger:hover { background:rgba(224,85,85,0.22); border-color:rgba(224,85,85,0.5); }
.ts-btn--sm { padding:5px 11px; font-size:12px; }
.ts-btn--lg { padding:16px 28px; font-size:17px; }

/* Input — clean border, no glass */
.ts-input {
  font-family:var(--font-body); font-size:14px; color:var(--fg);
  background:var(--bg-card); border:1px solid var(--border-soft);
  border-radius:var(--r-sm); padding:9px 12px; width:100%; outline:none;
  transition:border-color var(--dur-sm) var(--ease-io),
             box-shadow var(--dur-sm) var(--ease-io);
}
.ts-input:focus { border-color:var(--accent); box-shadow:0 0 0 3px var(--ts-blue-wash); }
.ts-input::placeholder { color:var(--fg-muted); }
select.ts-input { cursor:pointer; }
select.ts-input option { background:var(--bg-secondary); }

/* Label — mono uppercase kicker */
.ts-label {
  font-family:var(--font-mono); font-size:10px; letter-spacing:0.18em;
  text-transform:uppercase; color:var(--fg-muted); display:block; margin-bottom:6px;
}

/* Card — cleaner than .card; uses border-hair for a hairline border */
.ts-card {
  background:var(--bg-card); border:1px solid var(--border-hair);
  border-radius:var(--r-lg); padding:22px 24px 20px; margin-bottom:14px;
}

/* Kicker — section heading in mono */
.ts-kicker {
  font-family:var(--font-mono); font-size:10px; font-weight:600;
  letter-spacing:0.14em; text-transform:uppercase; color:var(--fg-muted);
  margin-bottom:14px;
}

/* Tag / chip */
.ts-tag {
  display:inline-flex; align-items:center; gap:6px; font-family:var(--font-mono);
  font-size:10px; letter-spacing:0.14em; text-transform:uppercase;
  color:var(--fg-secondary); background:var(--bg-secondary);
  padding:4px 8px; border-radius:var(--r-xs);
}
.ts-tag--accent { color:var(--accent); background:var(--ts-blue-wash); }

/* Light-theme overrides for new components */
html[data-theme="light"] .ts-input {
  background:#fff; border-color:rgba(0,0,0,0.18);
}
html[data-theme="light"] .ts-input:focus {
  border-color:var(--accent); background:#fff;
}
html[data-theme="light"] .ts-btn--secondary { border-color:rgba(0,0,0,0.18); }
html[data-theme="light"] .ts-btn--secondary:hover { border-color:rgba(0,0,0,0.50); }
html[data-theme="light"] .ts-btn--danger {
  background:rgba(224,85,85,0.07); border-color:rgba(224,85,85,0.25);
}
html[data-theme="light"] .ts-btn--danger:hover {
  background:rgba(224,85,85,0.14); border-color:rgba(224,85,85,0.40);
}
html[data-theme="light"] .ts-card { background:#fff; }

/* ── KEYFRAMES ─────────────────────────────────────────────────────────── */
@keyframes dropdownIn {
  from { opacity:0; transform:translateY(-8px) scaleY(0.92); }
  to   { opacity:1; transform:translateY(0) scaleY(1); }
}
@keyframes nodeSlideIn {
  from { opacity:0; transform:translateX(-10px); }
  to   { opacity:1; transform:translateX(0); }
}
@keyframes panelFadeIn {
  from { opacity:0; transform:translateX(8px); }
  to   { opacity:1; transform:translateX(0); }
}
@keyframes fadeUp {
  from { opacity:0; transform:translateY(8px); }
  to   { opacity:1; transform:translateY(0); }
}
