/* ---------- today ---------- */
.today-card{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow),var(--sh);}
.today-card .card-head{background:linear-gradient(90deg,var(--accent-glow),transparent 70%);}

/* ---------- sessions ---------- */
.session{
  display:flex;align-items:flex-start;gap:var(--s3);padding:11px 0;
  border-top:1px solid var(--line-soft);cursor:pointer;transition:opacity var(--dur);
}
.session:first-child{border-top:none;}
.tick{
  width:21px;height:21px;border-radius:6px;border:1.5px solid var(--line);flex:0 0 auto;margin-top:1px;
  display:grid;place-items:center;transition:var(--dur) var(--ease);
}
.tick svg{width:12px;height:12px;stroke-width:3.5;opacity:0;transform:scale(.5);transition:var(--dur) var(--ease);}
.session:hover .tick{border-color:var(--accent);background:var(--accent-glow);}
.session.done .tick{background:var(--teal);border-color:var(--teal);}
.session.done .tick svg{opacity:1;transform:none;color:var(--accent-ink);}
[data-theme="light"] .session.done .tick svg{color:#fff;}
.s-main{flex:1;min-width:0;}
.s-top{display:flex;align-items:center;gap:7px;flex-wrap:wrap;}
.s-time{
  font-family:var(--f-mono);font-size:9.5px;letter-spacing:.06em;border:1px solid var(--line);
  border-radius:5px;padding:1.5px 6px;color:var(--dim);
}
.s-unit{font-weight:600;font-size:14px;}
.s-unit.physics{color:var(--accent);} .s-unit.maths{color:var(--violet);}
.s-action{font-size:13.5px;color:var(--dim);margin-top:3px;line-height:1.45;}
.session.done .s-unit,.session.done .s-action{color:var(--faint);text-decoration:line-through;}

/* ---------- phases ---------- */
details.phase{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  margin-bottom:var(--s3);overflow:hidden;box-shadow:var(--sh-sm);
}
details.phase[open]>summary{border-bottom:1px solid var(--line-soft);}
summary{list-style:none;cursor:pointer;padding:var(--s4) var(--s5);display:flex;align-items:center;gap:var(--s3);
  transition:background var(--dur);}
summary:hover{background:var(--surface-2);}
summary::-webkit-details-marker{display:none;}
summary:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;}
.chev{width:16px;height:16px;color:var(--faint);transition:transform var(--dur) var(--ease);flex:0 0 auto;stroke-width:2.5;}
details[open] .chev{transform:rotate(90deg);}
.ph-num{font-family:var(--f-mono);font-size:9.5px;letter-spacing:.1em;color:var(--faint);flex:0 0 auto;}
.ph-t{flex:1;min-width:0;}
.ph-title{font-family:var(--f-display);font-weight:600;font-size:18px;line-height:1.2;}
.ph-dates{font-family:var(--f-mono);font-size:10.5px;color:var(--dim);margin-top:1px;}
.ph-body{padding:var(--s3) var(--s5) var(--s4);}
.ph-building{font-size:13px;color:var(--dim);margin-bottom:var(--s3);}
.ph-building b{color:var(--text);font-weight:600;}

.day{display:flex;gap:var(--s4);padding:10px 0;border-top:1px solid var(--line-soft);}
.day:first-of-type{border-top:none;}
.day.is-today{
  background:linear-gradient(90deg,var(--accent-glow),transparent 75%);
  margin:0 calc(var(--s5) * -1);padding-left:var(--s5);padding-right:var(--s5);
}
.day-when{flex:0 0 56px;padding-top:2px;}
.day-dow{font-family:var(--f-mono);font-size:9.5px;color:var(--faint);text-transform:uppercase;}
.day-date{font-family:var(--f-display);font-weight:600;font-size:15px;}
.day-main{flex:1;min-width:0;}
.tag-today{
  display:inline-block;font-family:var(--f-mono);font-size:8.5px;letter-spacing:.06em;
  background:var(--accent);color:var(--accent-ink);border-radius:4px;padding:1.5px 5px;margin-top:4px;
}
.rest{font-family:var(--f-mono);font-size:12px;color:var(--faint);padding-top:5px;}
.exam-strip{
  background:var(--coral-glow);border:1px solid var(--coral);border-radius:var(--r-sm);
  padding:10px 13px;margin-bottom:var(--s2);
}
.ex-l{font-family:var(--f-mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--coral);font-weight:600;}
.ex-t{font-family:var(--f-display);font-weight:700;font-size:16.5px;line-height:1.2;margin-top:2px;}
.ex-s{font-size:12px;color:var(--dim);}
