    .tp-page       { display:none; }
    .tp-page.active{ display:block; }
    .tp-grid {
      display:grid;
      grid-template-columns:repeat(auto-fill,minmax(260px,1fr));
      gap:9px;
      margin-bottom:9px;
    }
    .tp-grid-wide {
      display:grid;
      grid-template-columns:repeat(2,1fr);
      gap:9px;
    }
    @media(max-width:900px){ .tp-grid-wide{ grid-template-columns:1fr; } }
    .tp-widget {
      background:rgba(255,255,255,.85);
      backdrop-filter:blur(14px);
      border:1.5px solid var(--border);
      border-radius:11px;
      padding:9px 12px;
      box-shadow:0 1px 6px rgba(80,100,140,.04);
    }
    .tp-wtitle {
      font-size:10px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;
      color:var(--tx3);margin-bottom:6px;display:flex;align-items:center;gap:6px;
    }
    .tp-wtitle .sync-dot { width:6px;height:6px;border-radius:50%;margin-left:auto;flex-shrink:0; }
    .tp-empty { font-size:11px;color:var(--tx3);padding:8px 0;text-align:center; }
    .ms-placeholder { text-align:center;padding:16px 12px;display:flex;flex-direction:column;align-items:center;gap:5px; }
    .ms-ph-icon  { font-size:22px;opacity:.5; }
    .ms-ph-title { font-size:11px;font-weight:700;color:var(--tx2); }
    .ms-ph-desc  { font-size:10px;color:var(--tx3);max-width:180px;line-height:1.4; }
    .tev-row { display:flex;align-items:center;gap:8px;padding:4px 0;border-bottom:1px solid rgba(0,0,0,.04); }
    .tev-row:last-child { border-bottom:none; }
    .tev-dot { width:7px;height:7px;border-radius:50%;flex-shrink:0; }
    .tev-name { font-size:11px;font-weight:600;color:var(--tx);overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
    .tev-meta { font-size:10px;color:var(--tx3);margin-top:1px; }
    .email-split { display:grid;grid-template-columns:1fr 1fr;gap:10px; }
    .email-col-head { font-size:9px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;color:var(--tx3);margin-bottom:5px; }
    @media(max-width:640px){ .email-split{ grid-template-columns:1fr; } }
    .tev-dayhead { font-size:10px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--tx3);padding:4px 0 2px; }
    .tev-section-head { font-size:11px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--tx3);margin-bottom:10px; }
    .tev-card { display:flex;gap:14px;background:rgba(255,255,255,.85);border:1.5px solid var(--border);border-radius:13px;padding:13px 15px;margin-bottom:8px;box-shadow:0 1px 6px rgba(80,100,140,.05); }
    .tev-card.past { opacity:.55; }
    .tev-card-left { display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:70px; }
    .tev-card-date { font-size:12px;font-weight:700;color:var(--tx);white-space:nowrap; }
    .tev-card-body { flex:1;min-width:0; }
    .tev-card-name { font-size:14px;font-weight:700;color:var(--tx);margin-bottom:5px; }
    .tev-card-meta { display:flex;flex-wrap:wrap;gap:10px;font-size:11px;color:var(--tx3); }
    .ev-v { background:#0ea5e9; }
    .ev-s { background:#f59e0b; }
    .ev-k { background:#8b5cf6; }
    .ev-i { background:#6b7280; }
    .ev-m { background:#10b981; }
    .badge { display:inline-block;font-size:9px;font-weight:800;letter-spacing:.7px;text-transform:uppercase;padding:2px 7px;border-radius:20px; }
    .badge.ev-v { background:#e0f2fe;color:#0369a1; }
    .badge.ev-s { background:#fef3c7;color:#b45309; }
    .badge.ev-k { background:#ede9fe;color:#6d28d9; }
    .badge.ev-i { background:#f1f5f9;color:#475569; }
    .badge.ev-m { background:#d1fae5;color:#065f46; }
    .av { border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;flex-shrink:0; }
    .topbar-actions { display:flex;align-items:center;gap:8px;margin-left:auto;margin-right:10px; }
    .btn-outline { background:transparent;border:1.5px solid var(--border);color:var(--tx2); }
    .btn-outline:hover { background:rgba(255,255,255,.8);color:var(--tx); }
    .btn-sm { font-size:12px;padding:5px 13px;border-radius:10px;border:none;cursor:pointer;font-family:inherit;font-weight:700;transition:all .15s; }
    @keyframes tsdpulse { 0%,100%{opacity:1}50%{opacity:.35} }
    .tpfb { display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px; }
    .tpfb input, .tpfb select {
      font-size:12px;padding:6px 10px;border:1.5px solid var(--border);border-radius:9px;
      background:rgba(255,255,255,.75);color:var(--tx);font-family:inherit;outline:none;
    }
    .tpfb input:focus,.tpfb select:focus { border-color:var(--acc); }
    /* ── Loading pulse ────────────────────────── */
    @keyframes loadpulse{0%,100%{opacity:1}50%{opacity:.35}}
    @keyframes dotbounce{0%,100%{transform:scale(.7);opacity:.4}50%{transform:scale(1.2);opacity:1}}
    .load-pulse{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 0;gap:12px}
    .load-pulse-txt{font-size:13px;font-weight:700;color:var(--acc);animation:loadpulse 1.15s ease-in-out infinite}
    .load-dots{display:flex;gap:5px}
    .load-dot{width:7px;height:7px;border-radius:50%;background:var(--acc);animation:dotbounce 1.15s ease-in-out infinite}
    .load-dot:nth-child(2){animation-delay:.18s}.load-dot:nth-child(3){animation-delay:.36s}
    /* ── Reminders widget ──────────────────────── */
    .rem-widget{background:rgba(37,99,235,.05);border:1px solid rgba(37,99,235,.14);border-radius:9px;padding:7px 12px;margin-bottom:8px;display:flex;align-items:center;gap:10px}
    .rem-badge{display:inline-flex;align-items:center;gap:4px;font-size:9px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;padding:2px 7px;border-radius:20px;background:rgba(37,99,235,.1);color:var(--acc);white-space:nowrap;flex-shrink:0}
    .rem-pulse{width:6px;height:6px;border-radius:50%;background:var(--acc);animation:loadpulse 1.4s ease-in-out infinite;display:inline-block}
    /* ── PGR Table ─────────────────────────────── */
    .pgr-qtabs{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:12px}
    .pgr-qtab{padding:5px 14px;border-radius:20px;font-size:12px;font-weight:700;border:1.5px solid var(--border);background:rgba(255,255,255,.7);color:var(--tx2);cursor:pointer;transition:all .15s}
    .pgr-qtab.active{background:var(--acc);color:#fff;border-color:var(--acc)}
    .pgr-filters{display:flex;gap:7px;flex-wrap:wrap;align-items:center;margin-bottom:8px}
    .pgr-filters input,.pgr-filters select{padding:5px 9px;border:1.5px solid var(--border);border-radius:8px;font-size:12px;font-family:inherit;background:rgba(255,255,255,.75);color:var(--tx);outline:none}
    .pgr-filters input:focus,.pgr-filters select:focus{border-color:var(--acc)}
    .pgr-status-chips{display:flex;gap:5px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
    .pgr-schip-lbl{font-size:11px;color:var(--tx3);margin-right:2px}
    .pgr-schip{padding:3px 10px;border-radius:20px;font-size:11px;font-weight:600;border:1.5px solid var(--border);background:rgba(255,255,255,.75);color:var(--tx2);cursor:pointer;transition:all .15s}
    .pgr-schip.active{background:var(--acc);color:#fff;border-color:var(--acc)}
    .pgr-wrap{overflow-x:auto;border-radius:12px;border:1.5px solid var(--border);box-shadow:0 2px 10px rgba(80,100,140,.06)}
    .pgr-tbl{width:100%;border-collapse:collapse;font-size:11px;min-width:580px;table-layout:fixed}
    .pgr-tbl thead th{background:rgba(37,99,235,.07);padding:8px 10px;text-align:left;border-bottom:2px solid rgba(37,99,235,.14);font-size:10px;font-weight:700;letter-spacing:.3px;color:var(--tx2);position:sticky;top:0;z-index:2;white-space:nowrap}
    .pgr-tbl thead th:first-child{position:sticky;left:0;z-index:3;background:rgba(240,245,255,.97)}
    .pgr-tbl tbody tr:hover{background:rgba(37,99,235,.025)}
    .pgr-tbl td{padding:5px 8px;border-bottom:1px solid rgba(226,232,240,.5);vertical-align:top}
    .pgr-tbl td:first-child{font-weight:700;font-size:12px;white-space:nowrap;position:sticky;left:0;background:rgba(248,250,252,.97);z-index:1;width:160px;max-width:200px}
    .pgr-tbl th:nth-child(1){width:160px}.pgr-tbl th:nth-child(2){width:58px}.pgr-tbl td:nth-child(2){width:58px}
    .pgr-tbl td{overflow:hidden}
    .pgr-tbl td:first-child:hover .pgr-std-name{text-decoration:underline}
    .pgr-bubbles{display:flex;flex-wrap:wrap;gap:3px;min-height:24px}
    .pgr-bub{background:rgba(37,99,235,.07);border:1px solid rgba(37,99,235,.15);border-radius:6px;padding:2px 6px;font-size:9.5px;color:var(--tx2);cursor:pointer;max-width:130px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3;transition:background .12s;position:relative}
    .pgr-bub:hover{background:rgba(37,99,235,.13)}.pgr-bub.imp{background:rgba(239,68,68,.08);border-color:rgba(239,68,68,.25);color:#b91c1c}
    .pgr-bub.bpos{background:rgba(16,185,129,.07);border-color:rgba(16,185,129,.25);color:#065f46}
    .pgr-bub.acad{background:rgba(245,158,11,.08);border-color:rgba(245,158,11,.25);color:#92400e}
    .pgr-bub.expanded{max-width:none;-webkit-line-clamp:unset;display:block;white-space:pre-wrap;word-break:break-word}
    .pgr-add{display:inline-flex;align-items:center;gap:3px;padding:2px 7px;border-radius:5px;font-size:9.5px;font-weight:700;border:1.5px dashed rgba(37,99,235,.3);background:none;color:var(--acc);cursor:pointer;margin-top:2px;transition:all .15s}
    .pgr-add:hover{background:rgba(37,99,235,.07);border-style:solid}
    .pgr-form{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:430px;max-width:95vw;background:#fff;border:1.5px solid var(--acc);border-radius:14px;padding:18px 20px;z-index:9999;box-shadow:0 20px 60px rgba(37,99,235,.18)}
    #pgr-form-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.25);z-index:9998;backdrop-filter:blur(1px)}
    .pgr-form textarea{width:100%;border:1px solid var(--border);border-radius:6px;padding:6px 9px;font-size:12px;font-family:inherit;resize:vertical;min-height:90px;outline:none;box-sizing:border-box}
    .pgr-form-row{display:flex;gap:4px;align-items:center;margin-top:5px;flex-wrap:wrap}
    .pgr-imp-btn{padding:2px 7px;border-radius:5px;font-size:10px;font-weight:700;border:1.5px solid rgba(239,68,68,.3);background:rgba(239,68,68,.05);color:#b91c1c;cursor:pointer}
    .pgr-imp-btn.on{background:rgba(239,68,68,.15);border-color:#ef4444}
    .pgr-sv-btn{padding:2px 9px;border-radius:5px;font-size:10px;font-weight:700;background:var(--acc);color:#fff;border:none;cursor:pointer}
    .pgr-cx-btn{padding:2px 7px;border-radius:5px;font-size:10px;background:rgba(107,114,128,.1);color:var(--tx2);border:1px solid var(--border);cursor:pointer}
    .pgr-act-dot{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;background:rgba(99,102,241,.12);color:#6366f1;font-size:9px;cursor:pointer;border:1px solid rgba(99,102,241,.2);vertical-align:middle;margin-left:3px}
    .pgr-act-dot:hover{background:rgba(99,102,241,.22)}
    .pgr-adv-sub-btn{padding:5px 13px;border-radius:20px;font-size:12px;font-weight:600;border:1.5px solid var(--border);background:rgba(255,255,255,.75);color:var(--tx2);cursor:pointer;transition:all .15s}
    .pgr-adv-sub-btn.active{background:rgba(217,119,6,.12);border-color:rgba(217,119,6,.5);color:#92400e;font-weight:800}
    /* ── Calendar week view ─────────────────────── */
    .cal-view-tog{display:flex;border:1.5px solid var(--border);border-radius:9px;overflow:hidden;background:rgba(255,255,255,.65)}
    .cal-view-btn{padding:4px 13px;font-size:11px;font-weight:700;border:none;background:none;cursor:pointer;color:var(--tx3);transition:all .12s}
    .cal-view-btn.active{background:var(--acc);color:#fff}
    .week-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:5px}
    .week-day{background:rgba(255,255,255,.7);border:1.5px solid var(--border);border-radius:10px;padding:8px 6px;min-height:80px}
    .week-day.today{border-color:var(--acc);background:rgba(37,99,235,.04)}
    .week-ev{background:rgba(37,99,235,.09);border-left:3px solid var(--acc);border-radius:4px;padding:2px 5px;font-size:9.5px;font-weight:600;color:var(--acc);margin-bottom:3px;cursor:pointer;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    /* ── Month calendar grid ─────────────────────────── */
    .cal-grid {
      display:grid;
      grid-template-columns:repeat(7,1fr);
      gap:3px;
    }
    .cal-dow {
      text-align:center;font-size:10px;font-weight:800;letter-spacing:.8px;
      text-transform:uppercase;color:var(--tx3);padding:4px 0 6px;
    }
    .cal-cell {
      min-height:100px;background:rgba(255,255,255,.7);border:1.5px solid var(--border);
      border-radius:9px;padding:5px 6px;position:relative;transition:background .15s;
    }
    .cal-cell:hover { background:rgba(255,255,255,.95); }
    .cal-cell.other-month { opacity:.35; }
    .cal-cell.is-today { border-color:var(--acc);background:rgba(37,99,235,.04); }
    .cal-day-num {
      font-size:12px;font-weight:700;color:var(--tx2);margin-bottom:4px;display:block;
    }
    .cal-cell.is-today .cal-day-num { color:var(--acc);font-weight:800; }
    .cal-ev-dot {
      display:flex;align-items:center;gap:4px;margin-bottom:2px;
      font-size:10px;color:var(--tx2);line-height:1.25;
      overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
    }
    .cal-ev-pip { width:6px;height:6px;border-radius:50%;flex-shrink:0; }
    .cal-more { font-size:9px;font-weight:700;color:var(--tx3);margin-top:2px; }
    /* ── Timetable ─────────────────────────── */
    .sch-table { width:100%;border-collapse:collapse;font-size:12px; }
    .sch-table th {
      background:rgba(255,255,255,.75);border:1.5px solid var(--border);
      padding:7px 10px;text-align:center;font-size:11px;font-weight:800;
      letter-spacing:.6px;text-transform:uppercase;color:var(--tx3);
    }
    .sch-table td {
      border:1.5px solid var(--border);padding:5px 8px;vertical-align:top;
      background:rgba(255,255,255,.55);min-width:100px;
    }
    .sch-table td.period-num {
      background:rgba(255,255,255,.8);text-align:center;font-weight:800;
      color:var(--tx3);font-size:11px;min-width:32px;
    }
    .sch-entry {
      background:rgba(37,99,235,.07);border:1px solid rgba(37,99,235,.18);
      border-radius:6px;padding:4px 7px;margin-bottom:3px;
    }
    .sch-entry:last-child { margin-bottom:0; }
    .sch-entry-subj { font-weight:700;color:var(--tx);font-size:12px; }
    .sch-entry-meta { font-size:10px;color:var(--tx3);margin-top:1px; }
    /* ── Left menu narrower ──────────────────────────────── */
    aside { width:200px; }
    /* ── Academic Dishonesty module ──────────────────────── */
    .ad-form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;align-items:start}
    .ad-fg{display:flex;flex-direction:column;gap:4px;position:relative}
    .ad-fg-wide{grid-column:1/-1}
    .ad-lbl{font-size:10px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:var(--tx3)}
    .ad-inp{padding:7px 10px;border:1.5px solid var(--border);border-radius:9px;font-size:12px;font-family:inherit;background:rgba(255,255,255,.75);color:var(--tx);outline:none;width:100%;box-sizing:border-box}
    .ad-inp:focus{border-color:var(--acc)}
    .ad-inp[readonly]{background:rgba(0,0,0,.04);color:var(--tx3);cursor:default}
    .ad-tog{padding:5px 13px;border-radius:20px;font-size:11px;font-weight:700;border:1.5px solid var(--border);background:transparent;color:var(--tx2);cursor:pointer;transition:all .15s}
    .ad-tog.active{background:var(--acc);color:#fff;border-color:var(--acc)}
    .ad-drop{position:absolute;top:calc(100% + 2px);left:0;right:0;z-index:200;background:#fff;border:1.5px solid var(--acc);border-radius:9px;max-height:180px;overflow-y:auto;box-shadow:0 8px 24px rgba(37,99,235,.15)}
    .ad-drop-item{padding:7px 11px;font-size:12px;font-weight:600;cursor:pointer;border-bottom:1px solid rgba(0,0,0,.06);color:var(--tx)}
    .ad-drop-item:last-child{border-bottom:none}
    .ad-drop-item:hover{background:rgba(37,99,235,.07)}
    .ad-row-2nd td{background:rgba(245,158,11,.07)!important}
    .ad-row-3rd td{background:rgba(239,68,68,.08)!important}
    .ad-badge-2nd{display:inline-block;font-size:9px;font-weight:800;padding:1px 6px;border-radius:10px;background:rgba(245,158,11,.18);color:#92400e;border:1px solid rgba(245,158,11,.3);margin-left:4px;white-space:nowrap;vertical-align:middle}
    .ad-badge-3rd{display:inline-block;font-size:9px;font-weight:800;padding:1px 6px;border-radius:10px;background:rgba(239,68,68,.15);color:#b91c1c;border:1px solid rgba(239,68,68,.3);margin-left:4px;white-space:nowrap;vertical-align:middle}
    .ad-cons-inp{width:100%;border:1px solid transparent;border-radius:6px;padding:3px 6px;font-size:11px;font-family:inherit;background:transparent;color:var(--tx);outline:none;box-sizing:border-box;transition:border .15s;min-width:90px}
    .ad-cons-inp:hover,.ad-cons-inp:focus{border-color:var(--acc);background:rgba(255,255,255,.9)}
    /* ── loadbar ─────────────────────────────────────────── */
    @keyframes loadbar-slide{0%{background-position:200% 0}100%{background-position:-200% 0}}
    #tp-loadbar{height:3px;background:linear-gradient(90deg,var(--acc),#818cf8,var(--acc));background-size:300%;animation:loadbar-slide 1.4s linear infinite;display:none;flex-shrink:0}
    /* ── PGR table — bneg (problematic behaviour) ─────────── */
    .pgr-bub.bneg{background:rgba(239,68,68,.06);border-color:rgba(239,68,68,.18);color:#b91c1c}
    /* ── PGR flag icon buttons + TBD row highlight ─────────── */
    .pgr-flag-btn{display:inline-flex;align-items:center;justify-content:center;padding:0 4px;height:18px;border-radius:4px;font-size:11px;border:1px solid var(--border);background:rgba(255,255,255,.6);cursor:pointer;opacity:.5;transition:all .15s;line-height:1}
    .pgr-flag-btn:hover{opacity:1;background:rgba(255,255,255,.9)}
    .pgr-flag-btn.pgr-flag-on{opacity:1;background:rgba(239,68,68,.12);border-color:rgba(239,68,68,.4);box-shadow:0 0 0 2px rgba(239,68,68,.15)}
    .pgr-flag-btn.pgr-adv-on{opacity:1;background:rgba(245,158,11,.12);border-color:rgba(245,158,11,.4);box-shadow:0 0 0 2px rgba(245,158,11,.15)}
    .pgr-iup-btn{display:inline-flex;align-items:center;justify-content:center;padding:0 5px;height:18px;border-radius:4px;font-size:9px;font-weight:800;letter-spacing:.3px;border:1.5px dashed #cbd5e1;background:transparent;color:#94a3b8;cursor:pointer;opacity:.55;transition:all .15s;line-height:1}
    .pgr-iup-btn:hover{opacity:1;border-style:solid;border-color:#6366f1;color:#6366f1;background:rgba(99,102,241,.06)}
    .pgr-iup-btn.on{opacity:1;border-style:solid;border-color:#6366f1;background:rgba(99,102,241,.14);color:#4f46e5;box-shadow:0 0 0 2px rgba(99,102,241,.18);font-weight:900}
    .pgr-tbd-row td{background:rgba(254,242,242,.55)!important}
    .pgr-tbl td:first-child.pgr-tbd-row,.pgr-tbd-row td:first-child{background:rgba(254,242,242,.97)!important;border-left:3px solid #ef4444!important}
    /* ── Enhanced Week View (Google Calendar style) ───────── */
    .tp-week-wrap{border:1.5px solid var(--border);border-radius:14px;overflow:hidden;background:rgba(255,255,255,.7);box-shadow:0 2px 12px rgba(80,100,140,.08);display:flex;flex-direction:column}
    .tp-week-sticky{position:sticky;top:0;z-index:5;background:rgba(255,255,255,.95);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
    .tp-week-hdr{display:grid;grid-template-columns:52px repeat(5,1fr);border-bottom:1.5px solid var(--border)}
    .tp-week-corner{border-right:1px solid var(--border)}
    .tp-week-whdr{padding:8px 6px;text-align:center;border-right:.5px solid var(--border)}
    .tp-week-whdr:last-child{border-right:none}
    .tp-week-whdr.today{background:rgba(37,99,235,.05)}
    .tp-week-wdn{font-size:9px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;color:var(--tx3)}
    .tp-week-wdate{font-size:20px;font-family:'Instrument Serif',serif;color:var(--tx);line-height:1.1;margin-top:1px}
    .tp-week-whdr.today .tp-week-wdate{color:#fff;background:var(--acc);width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:2px auto 0;font-size:14px}
    .tp-week-allday{display:grid;grid-template-columns:52px repeat(5,1fr);border-bottom:2px solid var(--border);background:rgba(255,255,255,.8);min-height:26px}
    .tp-week-adlbl{font-size:7.5px;color:var(--tx4);font-weight:800;padding:3px;border-right:1px solid var(--border);display:flex;align-items:flex-start;justify-content:center;padding-top:5px;letter-spacing:.5px;text-align:center;line-height:1.2}
    .tp-week-adcell{padding:2px;border-right:.5px solid rgba(180,200,220,.25);min-height:24px;display:flex;flex-direction:column;gap:1px;overflow:hidden}
    .tp-week-adcell:last-child{border-right:none}
    .tp-week-aditem{font-size:9px;font-weight:700;padding:2px 5px;border-radius:4px;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-left:3px solid}
    .tp-week-body{display:flex;overflow-y:auto;flex:1;max-height:calc(100vh - 300px)}
    .tp-week-tc{width:52px;flex-shrink:0;border-right:1px solid var(--border)}
    .tp-week-ts{height:50px;display:flex;align-items:flex-start;padding:2px 4px 0}
    .tp-week-tl{font-size:9px;color:var(--tx3);font-weight:600;white-space:nowrap}
    .tp-week-days{flex:1;display:grid;grid-template-columns:repeat(5,1fr);position:relative}
    .tp-week-col{border-right:.5px solid rgba(180,200,220,.22);position:relative}
    .tp-week-col:last-child{border-right:none}
    .tp-week-col.today{background:rgba(37,99,235,.015)}
    .tp-week-slot{height:50px;border-bottom:.5px solid rgba(180,200,220,.13);transition:background .1s}
    .tp-week-slot:hover{background:rgba(255,255,255,.5)}
    .tp-week-ev{position:absolute;border-radius:7px;padding:3px 6px;font-size:10px;font-weight:600;line-height:1.3;overflow:hidden;cursor:pointer;z-index:3;border-left:3px solid;box-shadow:0 1px 4px rgba(0,0,0,.08)}
    .tp-week-ev:hover{opacity:.85;z-index:4}
    .tp-week-sch{position:absolute;left:1px;right:1px;border-radius:6px;padding:3px 5px;font-size:9px;line-height:1.3;overflow:hidden;z-index:1;background:rgba(100,116,139,.07);border:1.5px dashed rgba(100,116,139,.28);color:var(--tx3);cursor:default}
    .tp-week-now{position:absolute;left:0;right:0;height:2px;background:#ef4444;z-index:10;pointer-events:none}
    .tp-week-now::before{content:'';position:absolute;left:-4px;top:-4px;width:10px;height:10px;border-radius:50%;background:#ef4444}
    /* ── Riaditeľský termín ───────────────────────────────── */
    .rt-th{padding:8px 10px;text-align:left;border-bottom:2px solid rgba(37,99,235,.14);font-size:10px;font-weight:700;letter-spacing:.3px;color:var(--tx2);white-space:nowrap}
    .rt-td{padding:6px 10px;border-bottom:1px solid rgba(226,232,240,.5);font-size:12px;vertical-align:top}
    .rt-chk{display:flex;align-items:center;gap:4px;font-size:10px;font-weight:600;color:var(--tx);cursor:pointer;user-select:none}
    .rt-chk input{width:12px;height:12px;cursor:pointer;accent-color:var(--acc);flex-shrink:0}
    .rt-needs-badge{display:inline-block;font-size:9px;font-weight:700;padding:1px 6px;border-radius:5px;background:rgba(37,99,235,.08);color:var(--acc);border:1px solid rgba(37,99,235,.18);margin:1px}
    /* ── RT Form inputs ─────────────────────────────────── */
    .tp-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
    .tp-htitle{font-size:14px;font-weight:800;color:var(--tx)}
    .tp-wt{font-size:9px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--tx2)}
    .tp-lbl{display:block;font-size:8.5px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:var(--tx3);margin-bottom:2px}
    .tp-inp{display:block;width:100%;background:rgba(255,255,255,.75);border:1.5px solid rgba(200,212,228,.85);border-radius:7px;padding:4px 9px;font-size:11px;font-weight:600;color:var(--tx);font-family:inherit;outline:none;box-sizing:border-box;transition:border-color .15s,background .15s}
    .tp-inp:focus{border-color:var(--acc);background:#fff;box-shadow:0 0 0 3px rgba(37,99,235,.07)}
    select.tp-inp{appearance:auto}
    #rt-deadline-banner{display:none;padding:10px 14px;border-radius:10px;font-size:12px;font-weight:600;margin-bottom:14px}
    #rt-deadline-banner.warn{display:block;background:rgba(251,191,36,.12);border:1px solid rgba(251,191,36,.4);color:#92400e}
    #rt-deadline-banner.error{display:block;background:rgba(239,68,68,.08);border:1px solid rgba(239,68,68,.3);color:#991b1b}
    #rt-stud-dropdown{position:absolute;z-index:50;background:#fff;border:1.5px solid var(--border);border-radius:9px;box-shadow:0 8px 24px rgba(0,0,0,.12);max-height:180px;overflow-y:auto;width:100%}
    .rt-stud-opt{padding:5px 10px;cursor:pointer;font-size:11px;font-weight:600}
    .rt-stud-opt:hover{background:rgba(37,99,235,.07)}
