.weekly-shell .card-body{display:grid;gap:16px}
.weekly-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:end}
.weekly-toolbar>strong{flex:1 1 260px;text-align:center;color:#173a56;align-self:center}
.weekly-campus-filter{min-width:190px;margin:0}
.weekly-campus-filter label{font-size:12px}
.weekly-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:start}
.weekly-day{--weekly-day-accent:#2f6fa3;--weekly-day-soft:#eef6fb;border:1px solid #d6e1e8;border-top:4px solid var(--weekly-day-accent);border-radius:16px;background:#fff;overflow:hidden;box-shadow:0 4px 14px rgba(28,60,82,.08);transition:box-shadow .18s ease,transform .18s ease}
.weekly-day:nth-child(1){--weekly-day-accent:#2b6cb0;--weekly-day-soft:#eef6ff}
.weekly-day:nth-child(2){--weekly-day-accent:#147d75;--weekly-day-soft:#edf9f6}
.weekly-day:nth-child(3){--weekly-day-accent:#6b5b95;--weekly-day-soft:#f5f1fb}
.weekly-day:nth-child(4){--weekly-day-accent:#946a1d;--weekly-day-soft:#fff7e8}
.weekly-day:nth-child(5){--weekly-day-accent:#2f7a4f;--weekly-day-soft:#eef8f1}
.weekly-day:nth-child(6){--weekly-day-accent:#a65b2b;--weekly-day-soft:#fff3e9}
.weekly-day:nth-child(7){--weekly-day-accent:#9b3b4d;--weekly-day-soft:#fff0f3}
.weekly-day-current{box-shadow:0 0 0 2px color-mix(in srgb,var(--weekly-day-accent) 28%,transparent),0 8px 22px rgba(28,60,82,.14)}
.weekly-day>header{display:flex;gap:10px;align-items:center;padding:12px 14px;background:var(--weekly-day-soft);border-bottom:1px solid #dce6ec;color:#173a56}
.weekly-day>header::before{display:inline-flex;width:34px;height:34px;flex:0 0 34px;align-items:center;justify-content:center;border-radius:10px;background:var(--weekly-day-accent);color:#fff;font-size:12px;font-weight:800;letter-spacing:.02em}
.weekly-day:nth-child(1)>header::before{content:"T2"}
.weekly-day:nth-child(2)>header::before{content:"T3"}
.weekly-day:nth-child(3)>header::before{content:"T4"}
.weekly-day:nth-child(4)>header::before{content:"T5"}
.weekly-day:nth-child(5)>header::before{content:"T6"}
.weekly-day:nth-child(6)>header::before{content:"T7"}
.weekly-day:nth-child(7)>header::before{content:"CN"}
.weekly-day-name{flex:1 1 auto;font-size:17px;line-height:1.2;color:#173a56}
.weekly-day-date{font-size:13px;font-weight:750;color:#52697a;white-space:nowrap}
.weekly-today-badge{display:inline-flex;align-items:center;border:1px solid color-mix(in srgb,var(--weekly-day-accent) 38%,#fff);border-radius:999px;background:#fff;padding:3px 7px;color:var(--weekly-day-accent);font-size:11px;font-weight:800;white-space:nowrap}
.weekly-session{padding:14px 15px 16px}
.weekly-session+.weekly-session{border-top:3px solid #eef2f5}
.weekly-session-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px 10px;align-items:center;margin-bottom:10px;padding-bottom:9px;border-bottom:1px solid #e5ecef}
.weekly-session-head h3{margin:0;font-size:16px;color:#244860;white-space:nowrap}
.weekly-session-head>.btn[data-weekly-add]{justify-self:end}
.weekly-events{display:grid;gap:8px}
.weekly-event{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:start;padding:9px 0;border-top:1px dashed #e1e8ed}
.weekly-event:first-child{border-top:0}
.weekly-event-auto{background:#f7fafc;border-radius:10px;padding:9px 8px}
.weekly-time{display:inline-block;min-width:52px;font-weight:800;color:#0d416c;white-space:nowrap}
.weekly-event-main{min-width:0;line-height:1.4}
.weekly-event-title{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.weekly-auto-badge,.weekly-campus-badge{display:inline-flex;align-items:center;border-radius:999px;padding:2px 7px;font-size:11px;font-weight:750;white-space:nowrap}
.weekly-auto-badge{background:#e8f2f8;color:#0d527d}
.weekly-campus-badge{background:#f1f3f5;color:#526574}
.weekly-event-meta{display:grid;gap:2px;margin-top:4px;color:#617482;font-size:12px}
.weekly-event-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.weekly-duty{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-top:10px;padding-top:10px;border-top:1px solid #edf1f4;color:#445d6e}
.weekly-session-head .weekly-duty{min-width:0;margin:0;padding:0;border:0;justify-content:flex-start;gap:7px;color:#36566d}
.weekly-session-head .weekly-duty span{display:inline-flex;min-width:0;gap:5px;align-items:center;flex-wrap:wrap;border:1px solid #dce7ed;border-radius:999px;background:#f4f8fa;padding:5px 9px;line-height:1.25}
.weekly-session-head .weekly-duty span b{color:#244860}
.weekly-session-head .weekly-duty .btn{padding:5px 8px;font-size:12px;line-height:1.2;white-space:nowrap}
.weekly-empty{padding:8px 0}
.weekly-form-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.weekly-import-dialog{width:min(900px,90vw);max-height:78vh;overflow:auto}
.weekly-preview-grid{display:grid;gap:9px;margin:12px 0}
.weekly-preview-day{display:grid;gap:3px;padding:10px 12px;border:1px solid #e0e8ed;border-radius:10px}
.weekly-preview-day small{line-height:1.35}
@media(max-width:900px){.weekly-grid{grid-template-columns:1fr}}
@media(max-width:680px){
  .weekly-toolbar>strong{order:-2;flex-basis:100%;text-align:left}
  .weekly-campus-filter{order:-1;flex:1 1 100%;min-width:0}
  .weekly-toolbar .btn{flex:1 1 auto}
  .weekly-grid{gap:14px}
  .weekly-day{border-radius:14px;box-shadow:0 3px 11px rgba(28,60,82,.08)}
  .weekly-day-current{box-shadow:0 0 0 2px color-mix(in srgb,var(--weekly-day-accent) 24%,transparent),0 6px 16px rgba(28,60,82,.13)}
  .weekly-day>header{gap:8px;padding:11px 12px;flex-wrap:wrap}
  .weekly-day>header::before{width:30px;height:30px;flex-basis:30px;border-radius:9px}
  .weekly-day-name{font-size:16px}
  .weekly-day-date{font-size:12px}
  .weekly-today-badge{margin-left:38px}
  .weekly-session{padding:12px}
  .weekly-session-head{grid-template-columns:auto minmax(0,1fr);align-items:start;gap:8px;margin-bottom:8px}
  .weekly-session-head h3{grid-column:1;grid-row:1;padding-top:5px}
  .weekly-session-head .weekly-duty{grid-column:2;grid-row:1;align-items:flex-start;flex-wrap:wrap}
  .weekly-session-head .weekly-duty span{border-radius:10px}
  .weekly-session-head>.btn[data-weekly-add]{grid-column:1/-1;grid-row:2;width:100%;justify-self:stretch}
  .weekly-event{grid-template-columns:auto minmax(0,1fr)}
  .weekly-event-actions{grid-column:1/-1;justify-content:flex-start}
  .weekly-duty{align-items:flex-start}
  .weekly-form-row{grid-template-columns:1fr}
}
