  /* ---------- Student ID Card ---------- */
  .id-card-grid{display:flex;flex-wrap:wrap;gap:24px;justify-content:flex-start;}
  .idcard{
    width:270px;border-radius:18px;overflow:hidden;border:1px solid var(--line);
    box-shadow:var(--shadow-sm);background:#fff;position:relative;page-break-inside:avoid;
    break-inside:avoid;
  }
  .idcard .id-top{
    background:linear-gradient(135deg,var(--oxford-blue),var(--navy-800));
    padding:16px 16px 42px;color:#fff;text-align:center;
  }
  .idcard .id-top .schoolname{font-family:var(--serif);font-weight:700;font-size:1.02rem;margin-top:6px;}
  .idcard .id-top .cardtitle{font-size:.64rem;letter-spacing:2.5px;text-transform:uppercase;color:var(--gold-light);margin-top:2px;}
  .idcard .id-photo{
    width:96px;height:96px;border-radius:50%;border:4px solid #fff;overflow:hidden;
    background:#eef1f7;margin:-48px auto 0;position:relative;z-index:2;
    box-shadow:0 4px 12px rgba(10,31,68,0.28);display:flex;align-items:center;justify-content:center;
  }
  .idcard .id-photo img{width:100%;height:100%;object-fit:cover;}
  .idcard .id-photo .ph-fallback{font-size:1.9rem;color:var(--gold);}
  .idcard .id-body{padding:12px 20px 16px;text-align:center;}
  .idcard .id-name{font-family:var(--serif);font-weight:700;font-size:1.08rem;color:var(--oxford-blue);margin-bottom:2px;}
  .idcard .id-sub{font-size:.74rem;color:var(--gold);font-weight:700;margin-bottom:14px;}
  .idcard .id-info{text-align:right;font-size:.74rem;border-top:1px dashed var(--line);padding-top:10px;}
  .idcard .id-info .row{display:flex;justify-content:space-between;padding:4px 0;gap:8px;}
  .idcard .id-info .row .lbl{color:var(--muted);flex-shrink:0;}
  .idcard .id-info .row .val{font-weight:700;color:var(--ink);text-align:left;word-break:break-word;}
  .idcard .id-foot{background:var(--navy-800);color:#fff;text-align:center;font-size:.62rem;padding:7px;letter-spacing:1.2px;}
  .idcard .id-strip{position:absolute;top:0;left:0;width:6px;height:100%;background:var(--gold);}

  /* ---------- Student Full Profile ---------- */
  .profile-header{display:flex;gap:24px;align-items:flex-start;flex-wrap:wrap;}
  .profile-photo{width:130px;height:160px;border-radius:12px;overflow:hidden;border:2px solid var(--gold);background:#fbfbfa;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
  .profile-photo img{width:100%;height:100%;object-fit:cover;}
  .profile-photo .ph-fallback{font-size:2.4rem;color:var(--gold);}
  .profile-name{font-family:var(--serif);font-weight:700;font-size:1.5rem;color:var(--oxford-blue);margin-bottom:4px;}
  .profile-badges{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 14px;}
  .attend-table-wrap{max-height:340px;overflow-y:auto;border:1px solid var(--line);border-radius:10px;}
  .attend-table-wrap table{border:none;}
  .attend-table-wrap thead th{position:sticky;top:0;z-index:2;}

  /* ---------- Account Manage — day chart ---------- */
  .day-chart{display:flex;align-items:flex-end;gap:14px;height:220px;padding:20px 10px 0;border-bottom:2px solid var(--navy-800);}
  .day-chart .bar-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;min-width:0;}
  .day-chart .bar-val{font-size:.72rem;font-weight:800;color:var(--navy-800);margin-bottom:6px;white-space:nowrap;}
  .day-chart .bar{width:100%;max-width:46px;background:linear-gradient(180deg,var(--blue-500),var(--oxford-blue));border-radius:8px 8px 0 0;transition:height .3s ease;min-height:2px;}
  .day-chart .bar.today{background:linear-gradient(180deg,var(--gold-light),var(--gold));}
  .day-chart .bar-label{font-size:.68rem;color:var(--muted);font-weight:700;margin-top:8px;text-align:center;}
  .chart-card{overflow-x:auto;}
  .chart-card .day-chart{min-width:900px;}

