/* ================= Tokens ================= */
/* Light theme only, matched to the Inspix mockup palette. */
:root{
  color-scheme:light;
  --bg:#F7F9FC; --surface:#FFFFFF; --surface-2:#F3F6FA; --ink:#111827; --ink-2:#5B6474; --ink-3:#8B93A3; --line:#E5E9F0;
  --accent:#1D5FE3; --accent-ink:#FFFFFF; --accent-soft:#E8F0FE; --accent-2:#164CC0;
  --blue:#2563EB; --blue-soft:#E6EEFF;
  --amber:#D97706; --amber-soft:#FFF3DF;
  --green:#1E9254; --green-soft:#E4F7EC;
  --purple:#7C3AED; --purple-soft:#F1E9FF;
  --red:#DC2626; --red-soft:#FDE9E9;
  --grey:#4B5563; --grey-soft:#EEF1F5;
  --shadow:0 1px 2px rgba(17,24,39,.04),0 2px 10px rgba(17,24,39,.04);
  --font:"Plus Jakarta Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --radius:12px;
}

/* ================= Base ================= */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:14px;line-height:1.5}
[hidden]{display:none!important}
img{max-width:100%}
h1,h2,h3{margin:0;text-wrap:balance;letter-spacing:-.015em}
p{margin:0}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
a{color:var(--accent)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.num{font-variant-numeric:tabular-nums}
.muted{color:var(--ink-2)}
.ico{width:18px;height:18px;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.ico.sm{width:15px;height:15px}

/* ================= Buttons & inputs ================= */
a.btn{text-decoration:none}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);background:var(--surface);color:var(--ink);padding:9px 14px;border-radius:10px;font-weight:600;font-size:14px;white-space:nowrap}
.btn:hover{border-color:var(--ink-3)}
.btn:disabled{opacity:.6;cursor:default}
.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.btn.primary:hover{background:var(--accent-2);border-color:var(--accent-2)}
.btn.ghost{background:transparent;border-color:transparent;color:var(--ink-2)}
.btn.ghost:hover{color:var(--ink);background:var(--surface-2)}
.btn.sm{padding:6px 10px;font-size:13px;border-radius:8px}
.btn.danger{color:var(--red);border-color:var(--red)}
.linkbtn{background:none;border:none;color:var(--accent);padding:0;font-weight:600;font-size:13px}
.linkbtn:hover{text-decoration:underline}
.f{display:flex;flex-direction:column;gap:5px;min-width:0}
.f label{font-size:12.5px;font-weight:600;color:var(--ink-2)}
.f label em{font-style:normal;color:var(--red)}
.f input,.f select,.f textarea,.input{border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:9px 12px;width:100%;min-width:0}
.f input[readonly]{background:var(--surface-2);color:var(--ink-2)}
.f textarea{min-height:70px;resize:vertical}
.f .hint{font-size:12px;color:var(--ink-3)}
.err{color:var(--red);font-size:13px;min-height:0}
.ok{color:var(--green);font-size:13px}
.pwwrap{position:relative}
.pwwrap input{padding-right:64px}
.pwwrap button{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:none;font-size:12px;font-weight:600;color:var(--ink-2);padding:4px 8px}

/* ================= Auth screens ================= */
.auth{min-height:100vh;display:grid;place-items:center;padding:32px 16px;background:radial-gradient(1200px 500px at 50% -10%,var(--accent-soft),transparent 70%),var(--bg)}
.authcard{width:min(420px,100%);background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);padding:28px 24px;display:flex;flex-direction:column;gap:18px}
.authcard.wide{width:min(720px,100%)}
.authcard h1{font-size:24px;font-weight:800}
.authcard form{display:flex;flex-direction:column;gap:14px}
.authcard form .btn.primary{width:100%;padding:11px}
.authrules{display:flex;gap:6px;flex-wrap:wrap;font-size:11.5px;color:var(--ink-2);border-top:1px solid var(--line);padding-top:14px}
.authrules span{background:var(--surface-2);padding:3px 8px;border-radius:999px}
.loading{min-height:60vh;display:grid;place-items:center;color:var(--ink-2)}

/* Brand */
.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:17px;letter-spacing:-.02em;color:var(--ink);text-decoration:none}
.bname{display:flex;flex-direction:column;line-height:1.15}
.bname small{font-size:11.5px;font-weight:600;color:var(--ink-2);letter-spacing:0}
.brand .mark{width:32px;height:32px;border-radius:9px;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center}
.brand .mark svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2}

/* ================= App shell ================= */
.shell{display:grid;grid-template-columns:232px minmax(0,1fr);min-height:100vh;background:linear-gradient(to right,var(--surface) 231px,var(--line) 231px,var(--line) 232px,var(--bg) 232px)}
.side{background:var(--surface);border-right:1px solid var(--line);padding:20px 14px;display:flex;flex-direction:column;gap:22px;position:sticky;top:0;height:100vh}
.side .brand{padding:0 8px}
.nav{display:flex;flex-direction:column;gap:4px}
.nav button{display:flex;align-items:center;gap:12px;border:none;background:none;padding:10px 12px;border-radius:10px;color:var(--ink-2);font-weight:600;text-align:left;width:100%;white-space:nowrap;font-size:14px}
.nav button:hover{background:var(--surface-2);color:var(--ink)}
.nav button[aria-current="page"]{background:var(--accent-soft);color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}
.side .foot{margin-top:auto;font-size:12px;color:var(--ink-3);padding:0 8px}
.mainwrap{min-width:0;display:flex;flex-direction:column}
.topbar{display:flex;justify-content:flex-end;align-items:center;gap:12px;padding:12px 24px;border-bottom:1px solid var(--line);background:var(--surface);position:sticky;top:0;z-index:30}
.topbar .brand{display:none;margin-right:auto}
.iconbtn{position:relative;width:40px;height:40px;border-radius:999px;border:1px solid transparent;background:none;display:grid;place-items:center;color:var(--ink-2)}
.iconbtn:hover{background:var(--surface-2);color:var(--ink)}
.iconbtn .dot{position:absolute;top:7px;right:8px;width:9px;height:9px;border-radius:50%;background:var(--red);border:2px solid var(--surface)}
.avatarbtn{display:flex;align-items:center;gap:6px;background:none;border:none;padding:2px;border-radius:999px;color:var(--ink-2)}
.avatar{width:40px;height:40px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font-weight:700;font-size:14px;flex:none}
.avatar.lg{width:76px;height:76px;font-size:26px}
.popover{position:absolute;top:calc(100% + 8px);right:0;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 30px rgba(16,30,60,.12);min-width:220px;padding:6px;z-index:50}
.popover button,.popover .item{display:flex;align-items:center;gap:10px;width:100%;border:none;background:none;padding:9px 10px;border-radius:8px;text-align:left;font-size:14px;color:var(--ink)}
.popover button:hover{background:var(--surface-2)}
.popover .danger{color:var(--red)}
.popover h4{margin:4px 10px 6px;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3)}
.bellpanel{width:min(340px,calc(100vw - 32px))}
.bellpanel .item{flex-direction:column;align-items:flex-start;gap:2px;cursor:default}
.bellpanel .item b{font-weight:600}
.bellpanel .empty{padding:14px 10px;color:var(--ink-2);font-size:13px}
.rel{position:relative}

.content{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px;padding:20px;align-items:start}
.content.full{grid-template-columns:minmax(0,1fr)}
.page{display:flex;flex-direction:column;gap:20px;min-width:0}
.aside{display:flex;flex-direction:column;gap:20px;min-width:0}
.pagehead{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}
.pagehead h1{font-size:30px;font-weight:800}
.pagehead p{color:var(--ink-2);margin-top:4px}
.backlink{display:inline-flex;align-items:center;gap:6px;background:none;border:none;color:var(--accent);font-weight:600;padding:0;margin-bottom:6px}

.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.card.pad{padding:20px}
.cardhead{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px}
.cardhead h2{font-size:19px;font-weight:800}

/* Split button */
.split{position:relative;display:inline-flex}
.split .btn.primary:first-child{border-radius:10px 0 0 10px}
.split .btn.primary.caret{border-radius:0 10px 10px 0;padding:9px 10px;border-left:1px solid rgba(255,255,255,.25)}

/* ================= KPIs ================= */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:12px}
.kpi{display:flex;align-items:center;gap:12px;padding:14px 12px;font:inherit;color:inherit;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);text-align:left}
.kpi .ki{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;flex:none}
.kpi .v{font-size:26px;font-weight:800;line-height:1.1;font-variant-numeric:tabular-nums}
.kpi .l{font-size:12.5px;color:var(--ink-2);line-height:1.3;display:inline-block}
button.kpi{cursor:pointer}
button.kpi:hover{border-color:var(--ink-3)}
.t-blue .ki{background:var(--blue-soft);color:var(--blue)} .t-blue .v{color:var(--blue)}
.t-amber .ki{background:var(--amber-soft);color:var(--amber)} .t-amber .v{color:var(--amber)}
.t-green .ki{background:var(--green-soft);color:var(--green)} .t-green .v{color:var(--green)}
.t-purple .ki{background:var(--purple-soft);color:var(--purple)} .t-purple .v{color:var(--purple)}
.t-red .ki{background:var(--red-soft);color:var(--red)} .t-red .v{color:var(--red)}
.t-grey .ki{background:var(--grey-soft);color:var(--grey)}
.rates{display:flex;gap:8px 22px;flex-wrap:wrap;font-size:13px;color:var(--ink-2);margin-top:-6px}
.rates b{color:var(--ink);font-variant-numeric:tabular-nums}

/* Alert strip */
.alert{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:12px 16px;border-radius:12px;font-size:14px}
.alert.red{background:var(--red-soft)} .alert.amber{background:var(--amber-soft)} .alert.blue{background:var(--accent-soft)}
.alert p{flex:1 1 280px}
.alert .ico{color:var(--ink-2)}

/* ================= Filters & table ================= */
.toolbar{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:16px 16px 12px}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chipbtn{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:7px 16px;font-weight:500;font-size:13.5px;color:var(--ink)}
.chipbtn:hover{border-color:var(--ink-3)}
.chipbtn[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}
.tools{display:flex;gap:8px;flex-wrap:wrap}
.tools .input{width:auto}
.tools input.input{width:220px}
.tablewrap{overflow-x:auto;border-top:1px solid var(--line)}
table.apps{border-collapse:collapse;width:100%;min-width:780px}
.loctype{display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.apps th{background:var(--surface-2);text-align:left;font-weight:600;font-size:13px;color:var(--ink-2);padding:12px 8px;white-space:nowrap;border-bottom:1px solid var(--line)}
.apps td{padding:14px 8px;border-bottom:1px solid var(--line);vertical-align:middle}
.apps tbody tr:last-child td{border-bottom:none}
.apps tbody tr:hover{background:color-mix(in srgb,var(--surface-2) 60%,transparent)}
.apps tr.overdue td:first-child{box-shadow:inset 3px 0 0 var(--red)}
.apps tr.duetoday td:first-child{box-shadow:inset 3px 0 0 var(--amber)}
.co{display:flex;gap:10px;align-items:center;min-width:160px}
.mono{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;font-weight:800;font-size:15px;flex:none;letter-spacing:-.02em}
.co .t b{display:block;font-size:14.5px;font-weight:700;line-height:1.3}
.co .t span{display:block;color:var(--ink-2);font-size:13px}
.co .t i{display:block;color:var(--ink-3);font-size:12px;font-style:normal;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.loc{display:flex;gap:5px;color:var(--ink-2);font-size:13px;min-width:90px}
.loc .ico{margin-top:2px}
.tag{display:inline-block;background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:3px 9px;font-size:12.5px;color:var(--ink-2);white-space:nowrap}
select.status{appearance:none;-webkit-appearance:none;border:1px solid transparent;border-radius:8px;padding:6px 24px 6px 10px;background-position:right 8px center;font-size:13px;font-weight:600;background-repeat:no-repeat;background-position:right 9px center;background-size:10px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23888' stroke-width='1.6'/%3E%3C/svg%3E")}
select.status:disabled{opacity:1;cursor:default;background-image:none;padding-right:12px}
.s-Applied{background-color:var(--blue-soft);color:var(--blue)}
.s-InProgress{background-color:var(--amber-soft);color:var(--amber)}
.s-Interview{background-color:var(--green-soft);color:var(--green)}
.s-Offer{background-color:var(--purple-soft);color:var(--purple)}
.s-Rejected{background-color:var(--red-soft);color:var(--red)}
.s-Withdrawn{background-color:var(--grey-soft);color:var(--grey)}
.date b{display:block;font-weight:500;white-space:nowrap;font-variant-numeric:tabular-nums}
.fu{display:inline-block;margin-top:4px;font-size:12px;font-weight:600;padding:2px 7px;border-radius:6px;white-space:nowrap;background:var(--surface-2);color:var(--ink-2)}
.fu.overdue{background:var(--red-soft);color:var(--red)}
.fu.duetoday{background:var(--amber-soft);color:var(--amber)}
.docs{display:flex;flex-direction:column;gap:5px;min-width:120px}
.doc{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:7px;padding:4px 8px;font-size:12.5px;color:var(--ink);text-decoration:none;background:var(--surface);max-width:126px}
.doc span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.doc:hover{border-color:var(--accent);color:var(--accent)}
.doc .x{border:none;background:none;color:var(--ink-3);padding:0 2px;font-size:14px;line-height:1}
.doc .x:hover{color:var(--red)}
.adddoc{display:flex;align-items:center;gap:6px;border:1px dashed var(--line);border-radius:7px;padding:4px 8px;font-size:12.5px;color:var(--ink-2);background:none;max-width:126px;cursor:pointer}
.adddoc:hover{border-color:var(--accent);color:var(--accent)}
.adddoc input{display:none}
.joblink{display:inline-flex;font-size:13.5px;align-items:center;gap:6px;color:var(--accent);font-weight:600;text-decoration:none;white-space:nowrap}
.joblink:hover{text-decoration:underline}
.rowmenu{position:relative}
.rowmenu .popover{min-width:160px}
.empty{padding:36px 16px;text-align:center;color:var(--ink-2)}
.tablefoot{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 16px;border-top:1px solid var(--line);font-size:12.5px;color:var(--ink-3)}

/* ================= Aside: profile & recommended ================= */
.profilecard .who{display:flex;gap:16px;align-items:center;padding:6px 0 18px;border-bottom:1px solid var(--line)}
.profilecard .who h3{font-size:19px;font-weight:800}
.profilecard .who p{color:var(--ink-2)}
.profilecard .who .loc{margin-top:4px}
.plinks{display:flex;flex-direction:column}
.plink{display:flex;gap:12px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line);text-decoration:none;color:var(--ink)}
.plink:last-child{border-bottom:none}
.plink .pi{width:36px;height:36px;border-radius:8px;display:grid;place-items:center;flex:none;font-weight:800}
.plink .pt{min-width:0;flex:1}
.plink .pt b{display:block;font-size:14px}
.plink .pt span{display:block;color:var(--accent);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.plink.missing .pt span{color:var(--ink-3)}
.plink .ext{color:var(--ink-3)}
a.plink:hover .ext,a.plink:hover b{color:var(--accent)}
.pfacts{display:flex;flex-wrap:wrap;gap:6px;padding-top:12px}
.jobs{display:flex;flex-direction:column}
.job{display:flex;gap:12px;align-items:flex-start;padding:14px 0;border-bottom:1px solid var(--line)}
.job:last-child{border-bottom:none}
.job .jt{flex:1;min-width:0}
.job .jt b{display:block;font-size:14.5px}
.job .jt span{display:block;color:var(--ink-2);font-size:13px}
.job .meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:4px;font-size:12.5px;color:var(--ink-2)}
.job .acts{display:flex;flex-direction:column;gap:6px;align-items:stretch;flex:none}
.viewall{display:flex;justify-content:center;align-items:center;gap:8px;width:100%;margin-top:10px;background:var(--accent-soft);color:var(--accent);border:none;border-radius:10px;padding:11px;font-weight:600}
.viewall:hover{filter:brightness(.97)}
.jobgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.jobgrid .job{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}
.job .note{font-size:12.5px;color:var(--ink-2);margin-top:6px}
.badge-inactive{font-size:11px;font-weight:700;color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em}

/* ================= Forms in pages / drawer ================= */
.formgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px 16px}
.formgrid .full{grid-column:1/-1}
.checks{display:flex;flex-wrap:wrap;gap:8px 18px}
.checks label{display:flex;gap:7px;align-items:center;font-size:14px}
.checks input{width:16px;height:16px;accent-color:var(--accent)}
.formacts{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.meter{height:6px;background:var(--grey-soft);border-radius:3px;overflow:hidden}
.meter i{display:block;height:100%;width:0;background:var(--accent)}
.meterlabel{font-size:12px;color:var(--ink-2)}
.scrim{position:fixed;inset:0;background:rgba(10,20,40,.35);z-index:60}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(560px,100%);background:var(--surface);z-index:61;display:flex;flex-direction:column;box-shadow:-10px 0 40px rgba(10,20,40,.15)}
.drawer header{display:flex;justify-content:space-between;align-items:center;padding:18px 20px;border-bottom:1px solid var(--line)}
.drawer header h2{font-size:19px;font-weight:800}
.drawer .body{padding:20px;overflow-y:auto;flex:1}
.drawer footer{padding:14px 20px calc(14px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line);display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.flabel{font-size:12.5px;font-weight:600;color:var(--ink-2)}
.filepick{display:flex;align-items:center;gap:8px;border:1px dashed #C9D3E3;border-radius:10px;padding:10px 12px;color:var(--ink-2);background:var(--surface-2);cursor:pointer;min-width:0}
.filepick:hover{border-color:var(--accent);color:var(--accent)}
.filepick input{display:none}
.filepick .fpname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px}
.filepick.has{border-style:solid;border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:600}
.fpclear{border:none;background:none;color:var(--ink-2);font-size:18px;line-height:1;padding:0 2px}
.fpclear:hover{color:var(--red)}
.docs-existing{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.docs-existing .lbl{font-size:12.5px;color:var(--ink-2);width:100%}
.section-label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);grid-column:1/-1;margin-top:6px}

/* Admin */
table.students{min-width:900px}
table.students tbody tr{cursor:pointer}
.contact{display:flex;flex-direction:column;gap:2px;font-size:13px}
.contact .links{display:flex;gap:10px}
.contact a{font-weight:600;font-size:12.5px;text-decoration:none}
.created{background:var(--green-soft);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:6px;font-size:14px;margin-top:12px}
.created code{background:var(--surface);padding:2px 6px;border-radius:4px;user-select:all;font-size:13px}
.inlineform{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.inlineform input{border:1px solid var(--line);background:var(--surface);border-radius:6px;padding:5px 8px;font-size:12.5px;width:140px}
.rowbtns{display:flex;gap:6px}

.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:10px 18px;border-radius:10px;font-size:14px;z-index:80;box-shadow:0 8px 24px rgba(0,0,0,.2)}

/* ================= Responsive ================= */
@media (max-width:1460px){
  .content{grid-template-columns:minmax(0,1fr)}
  .aside{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
}
@media (max-width:860px){
  .shell{grid-template-columns:minmax(0,1fr);background:var(--bg)}
  .side{position:fixed;left:0;right:0;bottom:0;top:auto;height:auto;flex-direction:row;padding:6px 8px calc(6px + env(safe-area-inset-bottom,0px));border-right:none;border-top:1px solid var(--line);z-index:40;gap:0}
  .side .brand,.side .foot{display:none}
  .nav{flex-direction:row;width:100%;justify-content:space-around}
  .nav button{flex-direction:column;gap:2px;font-size:11px;padding:6px 4px;align-items:center;text-align:center}
  .nav button[aria-current="page"]{box-shadow:none}
  .topbar{padding:10px 16px}
  .topbar .brand{display:flex}
  .content{padding:16px 16px 96px}
  .pagehead h1{font-size:24px}
  .tools input.input{width:100%}
  .tools{width:100%}
  .tools>*{flex:1 1 140px}
  /* table becomes cards */
  table.apps{min-width:0}
  .apps thead{display:none}
  .apps,.apps tbody,.apps tr{display:block;width:100%}
  .apps td{display:block;min-width:0}
  .apps tbody tr{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,auto);gap:8px 12px;padding:14px 16px;border-bottom:1px solid var(--line)}
  .apps td{padding:0;border:none}
  .apps td[data-c="co"]{grid-column:1/2}
  .apps td[data-c="act"]{grid-column:2/3;grid-row:1/2;justify-self:end}
  .apps td[data-c="loc"],.apps td[data-c="status"],.apps td[data-c="date"],.apps td[data-c="link"]{grid-column:span 1}
  .apps td[data-c="docs"]{grid-column:1/-1}
  .apps tr.overdue td:first-child,.apps tr.duetoday td:first-child{box-shadow:none}
  .apps tr.overdue{box-shadow:inset 3px 0 0 var(--red)}
  .apps tr.duetoday{box-shadow:inset 3px 0 0 var(--amber)}
  .docs{flex-direction:row;flex-wrap:wrap}
  .co{min-width:0}
  .tablewrap{overflow-x:visible}
  .tablewrap.students-wrap{overflow-x:auto}
}
@media (prefers-reduced-motion:no-preference){.btn,.chipbtn,.nav button{transition:background-color .15s,border-color .15s,color .15s}}
