/* Semester data cards and site footer. */
/* ── semester cards ───────────────────────────────────── */
  .term-grid{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:15px;
  }
  .term-card{
    position:relative;
    overflow:hidden;
    padding:20px 21px 18px;
    border:1px solid rgba(255,255,255,.075);
    border-radius:20px;
    background:
      linear-gradient(158deg,rgba(14,20,35,.70),rgba(6,9,17,.62)),
      radial-gradient(circle at 80% 0%,rgba(232,192,122,.035),transparent 48%);
    box-shadow:0 1px 0 rgba(255,255,255,.045) inset;
    transition:
      transform .55s var(--ease),
      border-color .35s ease,
      background .35s ease,
      box-shadow .45s ease;
    isolation:isolate;
  }
  .term-card::before{
    content:"";
    position:absolute; inset:0; z-index:-1;
    background:radial-gradient(280px circle at var(--mx,50%) var(--my,0%),rgba(232,192,122,.075),transparent 56%);
    opacity:0; transition:opacity .35s ease;
    pointer-events:none;
  }
  .term-card:hover{
    transform:translateY(-4px);
    border-color:rgba(232,192,122,.20);
    background:
      linear-gradient(158deg,rgba(18,25,42,.82),rgba(7,10,19,.72)),
      radial-gradient(circle at 80% 0%,rgba(232,192,122,.06),transparent 55%);
    box-shadow:0 24px 60px rgba(0,0,0,.26), 0 1px 0 rgba(255,255,255,.06) inset;
  }
  .term-card:hover::before{ opacity:1; }
  .card-top{
    display:flex; align-items:flex-start; gap:12px;
  }
  .card-no{
    font:8px/1 var(--font-mono); letter-spacing:.06em;
    color:rgba(232,192,122,.58);
    padding-top:4px;
  }
  .card-title{ display:flex; flex-direction:column; gap:4px; min-width:0; }
  .card-title h3{
    margin:0;
    font-size:15px; font-weight:500; letter-spacing:.10em; color:rgba(242,245,250,.94);
  }
  .card-title span{ font:8px/1 var(--font-mono); letter-spacing:.10em; color:var(--dim); }
  .card-n{
    margin-left:auto;
    font:8px/1.5 var(--font-mono); letter-spacing:.05em; color:rgba(120,131,149,.9);
    text-align:right; white-space:nowrap; padding-top:3px;
  }
  .card-gpa{
    display:flex; align-items:baseline; gap:7px;
    margin-top:18px;
  }
  .card-gpa strong{
    font:400 35px/1 var(--font-display);
    letter-spacing:-.015em; color:rgba(244,220,169,.95);
    font-variant-numeric:tabular-nums;
  }
  .card-gpa span{ font:8px/1 var(--font-mono); color:var(--dim); letter-spacing:.04em; }
  .card-gpa span.label{
    font-family:var(--font-sans); font-size:9px; color:rgba(152,162,181,.75);
    letter-spacing:.10em; margin-left:2px;
  }
  .card-gpa-meta{
    display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap;
    gap:6px 10px;
    margin-top:10px;
    font:8px/1.4 var(--font-mono);
    color:rgba(120,131,149,.92);
    letter-spacing:.04em;
  }
  .card-gpa-meta > span{
    display:inline-flex; align-items:center; gap:5px;
  }
  .card-gpa-meta b{
    font:400 11px/1 var(--font-display);
    color:rgba(196,205,220,.9);
    font-variant-numeric:tabular-nums;
    letter-spacing:.01em;
  }
  .card-gpa-meta .round-chip{
    padding:3px 7px;
    border:1px solid rgba(232,192,122,.18);
    border-radius:999px;
    background:rgba(232,192,122,.05);
    color:rgba(232,192,122,.78);
  }
  .card-gpa-meta .round-chip b{ color:var(--gold-2); }
  .gpa-scale{
    width:100%; height:2px; margin-top:10px;
    background:rgba(255,255,255,.075);
    border-radius:2px; overflow:hidden;
  }
  .gpa-scale i{
    display:block; height:100%;
    background:linear-gradient(90deg,rgba(232,192,122,.32),var(--gold));
    border-radius:2px;
    box-shadow:0 0 9px rgba(232,192,122,.22);
  }
  .card-ranks{
    display:grid; grid-template-columns:1fr 1fr;
    margin-top:18px; padding-top:14px;
    border-top:1px solid rgba(255,255,255,.065);
    gap:14px;
  }
  .card-ranks > div{ display:flex; flex-direction:column; gap:6px; }
  .card-ranks span{ font:8px/1 var(--font-mono); letter-spacing:.10em; color:var(--dim); }
  .card-ranks strong{
    font:400 21px/1 var(--font-display); letter-spacing:.01em;
    color:rgba(232,238,247,.92);
    font-variant-numeric:tabular-nums;
  }
  .card-ranks strong em{
    font:8px/1 var(--font-mono); font-style:normal; color:var(--dim); margin-left:3px;
  }
  .card-cum{
    display:flex; align-items:center; flex-wrap:wrap; gap:6px 10px;
    margin-top:16px; padding-top:12px;
    border-top:1px solid rgba(255,255,255,.055);
    font-size:9px; color:rgba(120,131,149,.95);
  }
  .card-cum .cum-label{
    font:8px/1 var(--font-mono); letter-spacing:.10em;
    color:rgba(119,216,208,.62);
  }
  .card-cum strong{
    font:400 13px/1 var(--font-display); color:rgba(196,205,220,.88);
    font-variant-numeric:tabular-nums;
  }
  .card-cum span:not(.cum-label){ letter-spacing:.02em; }
  .card-cum .empty{ color:rgba(120,131,149,.58); }
  .card-cum .sep{
    width:1px; height:9px; background:rgba(255,255,255,.09);
  }

  /* ── footer ───────────────────────────────────────────── */
  .site-footer{
    position:relative; z-index:3;
    margin-top:clamp(82px,10vw,116px);
    border-top:1px solid rgba(255,255,255,.065);
  }
  .footer-inner{
    display:flex; align-items:flex-start; justify-content:space-between; flex-wrap:wrap; gap:20px;
    padding:26px 0 42px;
    font:8.5px/1.7 var(--font-mono); letter-spacing:.09em; color:rgba(120,131,149,.9);
  }
  .footer-inner b{
    font-weight:400; color:rgba(196,205,220,.8);
  }
  .footer-meta{ display:flex; flex-wrap:wrap; gap:8px 24px; }
  .footer-meta span{ display:inline-flex; align-items:center; gap:7px; }
  .footer-meta i{
    width:3px; height:3px; border-radius:50%; background:rgba(119,216,208,.55);
  }
  .footer-links{ display:flex; flex-wrap:wrap; gap:8px 18px; }
  .footer-links[hidden]{ display:none; }
  .footer-links a{
    color:rgba(196,205,220,.82);
    border-bottom:1px solid rgba(232,192,122,.22);
    transition:color .25s ease,border-color .25s ease;
  }
  .footer-links a:hover{
    color:var(--gold-2);
    border-bottom-color:rgba(232,192,122,.62);
  }

  .noscript-note{
    position:fixed; left:50%; bottom:22px; z-index:80;
    transform:translateX(-50%);
    margin:0; padding:10px 16px;
    border:1px solid rgba(255,255,255,.12);
    border-radius:999px;
    background:rgba(7,11,20,.92);
    color:var(--muted);
    font:10px/1.4 var(--font-sans);
    white-space:nowrap;
  }
