
    :root{
      --bg:#ffffff;--text:#111418;--muted:#637588;--line:#dce0e5;--line-2:#f0f2f4;--brand:#1466b8;--brand-2:#0e4a87;
      --radius:14px;--radius-sm:10px;--shadow:0 6px 20px rgba(17,20,24,.06);
    }
    *{box-sizing:border-box}
    html,body{height:100%}
    body{
      margin:0;background:var(--bg);color:var(--text);
      font-family:'Public Sans','Noto Sans',system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
    }
    .app{min-height:100dvh;display:flex;flex-direction:column}
    header{
      display:flex;align-items:center;justify-content:space-between;
      gap:16px;padding:12px 28px;border-bottom:1px solid var(--line-2);background:#fff;position:sticky;top:0;z-index:50;
    }
    .brand{display:flex;align-items:center;gap:10px}
    .brand svg{width:20px;height:20px;color:var(--text)}
    .brand h1{margin:0;font-size:18px;font-weight:800;letter-spacing:-.01em}
    .icon-btn{
      display:inline-flex;align-items:center;justify-content:center;height:40px;min-width:40px;
      padding:0 10px;border-radius:10px;background:#f0f2f4;border:none;color:var(--text);cursor:pointer;font-weight:700
    }
    .layout{display:flex;gap:16px;padding:20px}
    aside{
      width:300px;min-height:680px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);
      padding:16px;box-shadow:var(--shadow)
    }
    nav a{
      display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;color:var(--text);
      text-decoration:none;font-size:14px;font-weight:600
    }
    nav a[aria-current="page"]{background:#f0f2f4}
    main{
      flex:1;max-width:980px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);
      box-shadow:var(--shadow);overflow:hidden
    }
    .main-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;padding:18px 20px;border-bottom:1px solid var(--line-2)}
    h2{margin:0;font-size:30px;font-weight:800;letter-spacing:-.02em}
    .filters{display:flex;flex-wrap:wrap;gap:16px;padding:16px 20px;border-bottom:1px solid var(--line-2)}
    .field{display:flex;flex-direction:column;gap:8px;min-width:240px;flex:1}
    label{font-size:13px;font-weight:700;color:var(--text)}
    select{
      height:48px;border:1px solid var(--line);border-radius:12px;padding:0 14px;font-size:16px;
      outline:none;transition:.2s;border-color:var(--line);background:#fff;color:var(--text)
    }
    select:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(20,102,184,.15)}
    .btn{
      display:inline-flex;align-items:center;justify-content:center;height:40px;padding:0 16px;border-radius:10px;border:0;
      font-weight:800;font-size:14px;cursor:pointer;transition:.2s
    }
    .btn-primary{background:var(--brand);color:#fff}
    .btn-primary:hover{background:var(--brand-2)}
    .btn-muted{background:#f0f2f4;color:var(--text)}
    .btn[disabled]{opacity:.6;cursor:not-allowed}
    .actions{display:flex;gap:10px;padding:14px 20px;border-top:1px solid var(--line-2)}
    .section-title{padding:10px 20px 0;font-size:20px;font-weight:900}
    .results{padding:16px 16px 22px}
    .grid{
      display:grid;gap:12px;
      grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
    }
    .card{
      display:flex;gap:10px;align-items:center;border:1px solid var(--line);border-radius:12px;background:#fff;padding:14px
    }
    .avatar{width:28px;height:28px;color:var(--text)}
    .t-name{font-weight:800;margin:0;line-height:1.2}
    .t-sub{font-size:12px;color:var(--muted);margin:4px 0 0}
    .empty,.hint{grid-column:1/-1;font-size:14px;color:var(--muted);padding:4px 6px}
    .sr-only{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}
    .pill{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;padding:6px 10px;font-size:12px;color:var(--muted)}
    .footer-note{padding:0 20px 18px;color:var(--muted);font-size:12px}
    @media (max-width: 980px){aside{display:none}}
    
    /* Scrollable live table */
.table-card{display:block; padding:0; overflow:hidden;}
.scroll-area{max-height:50vh; overflow:auto;}          /* only this area scrolls */
.table-live{width:100%; min-width:720px; border-collapse:collapse; font-size:14px;}
.table-live th, .table-live td{padding:10px; border-bottom:1px solid var(--line-2); text-align:left;}
.table-live thead th{position:sticky; top:0; background:#fff; z-index:1;} /* sticky header */
.table-live tbody tr:nth-child(even){background:#fafbfc;}
.table-live thead th{ z-index: 10; }

.tt-wrap{margin-top:8px;border:1px solid var(--line-2);border-radius:10px}
.tt-scroll{max-height:55vh;overflow:auto;border-radius:10px}
.mini-tt{width:100%;border-collapse:collapse;table-layout:fixed}
.mini-tt th,.mini-tt td{border:1px solid #e6e8eb;padding:6px;vertical-align:top}
.mini-tt thead th{background:#f7f8fa}
.mini-tt .time{font-size:11px;color:#7a7f86}
.mini-tt .day{font-weight:800;text-align:center}
.mini-tt .subj{font-weight:700}
.mini-tt .teacher{font-size:12px;margin-top:2px}
.mini-tt .room{font-size:11px;color:#7a7f86}
.mini-tt .badge{display:inline-block;border:1px solid #ffd88a;background:#fff4d6;color:#7a4c00;border-radius:999px;padding:1px 6px;font-size:11px;margin-left:4px}
.mini-tt .now{background:#fff8d6}
  .ttm-modal{
  position: fixed;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 4000;              /* key: higher than any sticky headers */
}
  .ttm-backdrop{
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.45);
}
.ttm-dialog{
  position: relative;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 14px;
  width: min(1100px, 96vw);
  max-height: 88vh;
  box-shadow: var(--shadow);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

.ttm-modal[hidden] { display: none !important; }

  .ttm-head{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line-2)}
  .ttm-x{background:transparent;border:0;font-size:18px;cursor:pointer}
  .ttm-bar{display:flex;gap:10px;align-items:center;padding:10px 16px;border-bottom:1px solid var(--line-2)}
  .ttm-label{font-size:13px;font-weight:700}
  .ttm-select{height:36px;border:1px solid var(--line);border-radius:10px;padding:0 10px}
  .ttm-gap{flex:1}
 .ttm-body{ flex: 1; overflow: auto; }
  .ttm-scroll{ overflow: auto; }
  body.modal-open{ overflow: hidden; }

   .mini-tt{width:1300px; border-collapse:collapse; table-layout:fixed;} /* wider grid; will scroll */
  .mini-tt th,.mini-tt td{
    border:1px solid #e6e8eb;
    padding:8px;
    vertical-align:top;
    min-width:120px;                     /* prevent ultra-narrow columns */
  }
  .mini-tt thead th{background:#f7f8fa;font-weight:800;font-size:12px}

  /* ✅ readable wrapping (no character-by-character breaks) */
  .mini-tt td{
    white-space:normal;
    word-break:normal;
    overflow-wrap:break-word;            /* break on spaces/long words only */
    hyphens:auto;                        /* add hyphen if needed */
  }

  /* stacked entries per cell */
  .mini-tt .cell{display:block}
.mini-tt .entry{
  display:block;
  line-height:1.28;
  padding-bottom:6px;
  margin-bottom:6px;
  border-bottom:1px dashed #e6e8eb; /* thin divider UNDER each entry */
}
.mini-tt .entry:last-child{
  border-bottom:0;
  padding-bottom:0;
  margin-bottom:0;
}
  /* font sizes */
 .mini-tt .teacher{display:block; font-weight:700; font-size:12.5px}
.mini-tt .subj   {display:block; font-size:11.5px; color:#3a3f46; margin-top:2px}
.mini-tt .room   {display:block; font-size:10.5px; color:#7a7f86; margin-top:2px}

  .mini-tt .time{display:block; font-size:10.5px; color:#7a7f86}
  .mini-tt .day{font-weight:800; text-align:center; white-space:nowrap; width:64px}
  .mini-tt .now{background:#fff8d6}
  
  
  
  header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 20px;
  background: #ffffff;
  border-bottom: 1px solid var(--line);
  box-shadow: 0 1px 6px rgba(0,0,0,0.04);
}

.brand {
  display: flex;
  align-items: center;
  gap: 12px;
}

.brand-logo {
  height: 40px;
  width: auto;
}

.brand-text h1 {
  margin: 0;
  font-size: 18px;
  font-weight: 700;
  line-height: 1.2;
}

.brand-sub {
  font-size: 12px;
  color: var(--muted);
  font-weight: 500;
}
.user-pill {
  display: flex;
  align-items: center;
  gap: 10px;
  background: linear-gradient(180deg, #f8fafc, #eef2f7);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 6px 12px;
}

.user-pill span {
  font-size: 13px;
}


