:root{
  --paper:#FBF7F2;
  --paper-raised:#FFFFFF;
  --ink:#231517;
  --ink-soft:#6b5a5c;
  --rule:#ecdcd6;
  --maroon:#B72330;
  --maroon-deep:#961E27;
  --gold:#F59D69;
  --stamp:#e3c2b3;
}

*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:var(--paper);
  background-image:
    radial-gradient(circle at 1px 1px, rgba(30,36,56,0.05) 1px, transparent 0);
  background-size: 22px 22px;
  color:var(--ink);
  font-family:'Inter',sans-serif;
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
}

a{color:inherit;}

/* ---------- HEADER ---------- */
header.masthead{
  border-bottom:3px solid var(--ink);
  padding:28px 24px 18px;
  max-width:1180px;
  margin:0 auto;
  position:relative;
  overflow:hidden;
}
.masthead-watermark{
  position:absolute;
  top:50%;
  right:-40px;
  transform:translateY(-50%);
  width:260px;
  height:260px;
  opacity:0.07;
  object-fit:contain;
  pointer-events:none;
  filter:grayscale(1);
}
@media (max-width:820px){ .masthead-watermark{ width:170px; height:170px; right:-30px; } }
.eyebrow{
  font-family:'Space Mono',monospace;
  font-size:11px;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--maroon);
  display:flex;
  align-items:center;
  gap:10px;
  margin-bottom:6px;
}
.eyebrow::before{
  content:"";
  width:8px;height:8px;
  background:var(--maroon);
  display:inline-block;
  transform:rotate(45deg);
}
h1.title{
  font-family:'Fraunces', serif;
  font-optical-sizing:auto;
  font-weight:700;
  font-size:clamp(32px,5vw,54px);
  line-height:1.02;
  margin:0 0 6px;
  letter-spacing:-0.01em;
}
h1.title em{
  font-style:italic;
  color:var(--maroon);
  font-weight:600;
}
.subtitle{
  font-size:14.5px;
  color:var(--ink-soft);
  max-width:640px;
  line-height:1.5;
}
.ticket-stub{
  position:absolute;
  top:26px; right:24px;
  border:1.5px dashed var(--stamp);
  border-radius:6px;
  padding:10px 16px;
  font-family:'Space Mono',monospace;
  font-size:11px;
  text-align:right;
  color:var(--ink-soft);
  background:var(--paper-raised);
  line-height:1.6;
}
.ticket-stub b{color:var(--ink); font-size:12px;}
@media (max-width:820px){ .ticket-stub{display:none;} }

/* ---------- MILESTONES (optional info note, e.g. UEC) ---------- */
.milestones{
  max-width:1180px;
  margin:0 auto;
  padding:16px 24px 0;
}
.milestones details{
  border:1.5px solid var(--rule);
  border-radius:8px;
  background:var(--paper-raised);
  padding:10px 14px;
}
.milestones summary{
  cursor:pointer;
  font-family:'Space Mono',monospace;
  font-size:11.5px;
  text-transform:uppercase;
  letter-spacing:.08em;
  color:var(--maroon);
}
.milestones ul{
  margin:10px 0 2px;
  padding-left:18px;
  font-size:13px;
  line-height:1.7;
  color:var(--ink-soft);
}
.milestones ul b{color:var(--ink);}

/* ---------- CONTROLS ---------- */
.controls-wrap{
  max-width:1180px;
  margin:0 auto;
  padding:20px 24px 0;
}
.view-toggle{
  display:inline-flex;
  border:1.5px solid var(--ink);
  border-radius:999px;
  overflow:hidden;
  background:var(--paper-raised);
  margin-bottom:18px;
}
.view-toggle button{
  border:none;
  background:transparent;
  padding:9px 22px;
  font-family:'Space Mono',monospace;
  font-size:12.5px;
  text-transform:uppercase;
  letter-spacing:.08em;
  cursor:pointer;
  color:var(--ink);
  transition:background .15s, color .15s;
}
.view-toggle button.active{
  background:var(--ink);
  color:var(--paper);
}

.toolbar{
  display:flex;
  flex-wrap:wrap;
  gap:14px;
  align-items:flex-start;
  justify-content:space-between;
  padding-bottom:16px;
  border-bottom:1px solid var(--rule);
  margin-bottom:20px;
}
.search-box{
  flex:1 1 220px;
  max-width:320px;
}
.search-box input{
  width:100%;
  padding:10px 14px;
  border:1.5px solid var(--ink);
  border-radius:8px;
  background:var(--paper-raised);
  font-family:'Inter',sans-serif;
  font-size:13.5px;
  color:var(--ink);
}
.search-box input:focus{outline:2px solid var(--maroon); outline-offset:1px;}

.filter-panel{
  flex:1 1 640px;
}
.filter-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom:8px;
}
.filter-head span{
  font-family:'Space Mono',monospace;
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:.1em;
  color:var(--ink-soft);
}
.filter-head .toggles{
  display:flex; gap:10px;
}
.filter-head button{
  background:none;border:none;
  font-family:'Space Mono',monospace;
  font-size:11px;
  text-decoration:underline;
  cursor:pointer;
  color:var(--maroon);
  padding:0;
}
.chip-row{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}
.chip{
  display:inline-flex;
  align-items:center;
  gap:7px;
  border:1.5px solid var(--chip-color, var(--ink));
  border-radius:999px;
  padding:6px 13px 6px 10px;
  font-size:12.5px;
  font-weight:500;
  cursor:pointer;
  background:var(--paper-raised);
  color:var(--ink);
  user-select:none;
  transition:background .15s,color .15s;
}
.chip .dot{
  width:9px;height:9px;
  border-radius:50%;
  background:var(--chip-color, var(--ink));
  flex:none;
}
.chip.active{
  background:var(--chip-color, var(--ink));
  color:#fff;
}
.chip.active .dot{background:#fff;}
.chip .count{
  font-family:'Space Mono',monospace;
  font-size:10.5px;
  opacity:.75;
}

main{
  max-width:1180px;
  margin:0 auto;
  padding:0 24px 80px;
}

.empty-state{
  padding:60px 20px;
  text-align:center;
  color:var(--ink-soft);
  font-size:14px;
  border:1.5px dashed var(--rule);
  border-radius:10px;
}

/* ---------- LIST VIEW ---------- */
.day-group{
  margin-bottom:30px;
}
.day-head{
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  gap:8px 14px;
  margin-bottom:12px;
  position:sticky;
  top:0;
  background:var(--paper);
  padding:6px 0;
  z-index:5;
}
.day-head .dow{
  font-family:'Space Mono',monospace;
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:.1em;
  color:var(--maroon);
  background:rgba(139,38,53,0.08);
  padding:4px 9px;
  border-radius:5px;
  white-space:nowrap;
}
.day-head .date{
  font-family:'Fraunces',serif;
  font-weight:600;
  font-size:20px;
  white-space:nowrap;
}
.day-head .count{
  font-size:12px;
  color:var(--ink-soft);
  font-family:'Space Mono',monospace;
  white-space:nowrap;
}
.day-head hr{
  flex:1;
  border:none;
  border-top:1px solid var(--rule);
}

.holiday-banner{
  border:1.5px solid var(--gold);
  background:rgba(201,150,44,0.08);
  border-radius:8px;
  padding:10px 16px;
  font-size:13px;
  color:#7a5a10;
  margin-bottom:30px;
}

.event-list{
  display:grid;
  gap:8px;
}
.event-card{
  display:grid;
  grid-template-columns:96px 3px 1fr auto;
  gap:14px;
  align-items:center;
  background:var(--paper-raised);
  border:1px solid var(--rule);
  border-radius:8px;
  padding:12px 16px;
  transition:box-shadow .15s, transform .15s;
}
.event-card:hover{
  box-shadow:0 3px 12px rgba(30,36,56,0.08);
  transform:translateY(-1px);
}
.event-time{
  font-family:'Space Mono',monospace;
  font-size:12px;
  color:var(--ink-soft);
  line-height:1.4;
}
.event-time b{
  display:block;
  font-size:13.5px;
  color:var(--ink);
}
.event-bar{
  align-self:stretch;
  border-radius:3px;
  background:var(--bar-color,var(--ink));
  min-height:34px;
}
.event-main .code{
  font-family:'Space Mono',monospace;
  font-size:11.5px;
  color:var(--ink-soft);
  letter-spacing:.02em;
}
.event-main .name{
  font-size:14.5px;
  font-weight:600;
  margin-top:1px;
}
.event-tag{
  font-size:10.5px;
  text-transform:uppercase;
  letter-spacing:.06em;
  padding:5px 10px;
  border-radius:999px;
  color:#fff;
  background:var(--bar-color,var(--ink));
  white-space:nowrap;
  font-weight:600;
}
@media (max-width:640px){
  .event-card{grid-template-columns:78px 3px 1fr; }
  .event-tag{grid-column:1/-1; justify-self:start; margin-top:6px;}
}

/* ---------- CALENDAR VIEW ---------- */
.month-block{ margin-bottom:44px; }
.month-title{
  font-family:'Fraunces',serif;
  font-weight:700;
  font-size:26px;
  margin:0 0 4px;
  display:flex;
  align-items:baseline;
  gap:10px;
}
.month-title span{
  font-family:'Space Mono',monospace;
  font-size:12px;
  color:var(--ink-soft);
  font-weight:400;
}
.cal-grid{
  display:grid;
  grid-template-columns:repeat(7,minmax(0,1fr));
  gap:6px;
  margin-top:14px;
}
.cal-dow{
  font-family:'Space Mono',monospace;
  font-size:10.5px;
  text-transform:uppercase;
  letter-spacing:.08em;
  color:var(--ink-soft);
  text-align:left;
  padding-bottom:4px;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
}
.cal-cell{
  background:var(--paper-raised);
  border:1px solid var(--rule);
  border-radius:8px;
  min-height:96px;
  min-width:0;
  padding:6px 6px 8px;
  position:relative;
  display:flex;
  flex-direction:column;
  gap:4px;
  overflow:hidden;
}
.cal-cell.empty{
  background:transparent;
  border:none;
}
.cal-cell.weekend{ background:#f0ece1; }
.cal-cell.holiday{ background:rgba(201,150,44,0.12); border-color:var(--gold); }
.cal-daynum{
  font-family:'Space Mono',monospace;
  font-size:12px;
  font-weight:700;
  color:var(--ink-soft);
}
.cal-pill{
  font-size:9.5px;
  line-height:1.25;
  padding:2.5px 6px;
  border-radius:4px;
  background:var(--bar-color,var(--ink));
  color:#fff;
  font-weight:600;
  cursor:pointer;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  max-width:100%;
  box-sizing:border-box;
}
.cal-pill.more{
  background:transparent;
  color:var(--ink-soft);
  border:1px dashed var(--rule);
  font-weight:500;
  cursor:pointer;
}
/* ---- Compact dot mode (mobile) ---- */
.cal-dots{
  display:flex;
  flex-wrap:wrap;
  gap:3px;
  align-items:center;
}
.cal-dot{
  width:7px;height:7px;
  border-radius:50%;
  background:var(--dot-color,var(--ink));
  flex:none;
}
.cal-count{
  font-family:'Space Mono',monospace;
  font-size:9px;
  font-weight:700;
  color:var(--ink-soft);
  margin-left:1px;
}
@media (max-width:640px){
  .cal-grid{ gap:3px; }
  .cal-dow{ font-size:9px; letter-spacing:.02em; padding-bottom:3px; }
  .cal-cell{ min-height:46px; padding:4px 3px 5px; border-radius:6px; gap:3px; }
  .cal-daynum{ font-size:10.5px; }
  .month-title{ font-size:21px; }
}
.cal-holiday-label{
  font-size:9.5px;
  color:#7a5a10;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.03em;
}

/* ---------- MODAL ---------- */
.modal-backdrop{
  position:fixed; inset:0;
  background:rgba(20,20,28,0.45);
  display:none;
  align-items:center;
  justify-content:center;
  z-index:100;
  padding:20px;
}
.modal-backdrop.open{display:flex;}
.modal{
  background:var(--paper-raised);
  border-radius:12px;
  max-width:480px;
  width:100%;
  max-height:80vh;
  overflow-y:auto;
  padding:22px 22px 18px;
  border:1.5px solid var(--ink);
}
.modal-head{
  display:flex; justify-content:space-between; align-items:baseline;
  margin-bottom:14px;
}
.modal-head h3{
  font-family:'Fraunces',serif;
  font-size:20px;
  margin:0;
}
.modal-close{
  background:none;border:none;
  font-size:20px;
  cursor:pointer;
  color:var(--ink-soft);
  line-height:1;
}
.modal .event-list{gap:8px;}

/* ---- Slim strip (above the fold) ---- */
.sponsor-strip-wrap{
  max-width:1180px;
  margin:0 auto;
  padding:0 24px;
}
.sponsor-strip{
  display:flex;
  align-items:center;
  gap:10px;
  background:var(--maroon);
  border-radius:9px;
  padding:8px 12px;
  margin:14px 0 4px;
  color:#fff;
}
.sponsor-strip img{
  width:26px;height:26px;
  border-radius:6px;
  background:#fff;
  padding:2px;
  flex:none;
  object-fit:contain;
}
.sponsor-strip .txt{
  flex:1;
  min-width:0;
  font-size:12px;
  line-height:1.3;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
}
.sponsor-strip .txt b{ color:var(--gold); font-weight:700; }
.sponsor-strip a.strip-cta{
  flex:none;
  color:var(--gold);
  font-weight:700;
  font-size:12px;
  text-decoration:none;
  white-space:nowrap;
}
.sponsor-strip a.strip-cta:hover{ text-decoration:underline; }

/* ---- Counsellor CTA card (last "event" on the calendar, list view) ---- */
.cta-event-card{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  background:linear-gradient(120deg, var(--maroon) 0%, var(--maroon-deep) 100%);
  border-radius:12px;
  padding:20px 24px;
  margin:6px 0 26px;
  color:#fff;
  border:1.5px solid var(--gold);
  animation: cta-glow-card 2.4s ease-in-out infinite;
}
.cta-event-text{ flex:1; min-width:220px; }
.cta-event-eyebrow{
  font-family:'Space Mono',monospace;
  font-size:10.5px;
  text-transform:uppercase;
  letter-spacing:.12em;
  color:var(--gold);
  display:block;
  margin-bottom:5px;
}
.cta-event-heading{
  font-family:'Fraunces',serif;
  font-weight:700;
  font-size:19px;
  margin-bottom:5px;
}
.cta-event-card p{
  margin:0;
  font-size:13px;
  line-height:1.55;
  color:rgba(255,255,255,0.88);
  max-width:420px;
}
@media (max-width:700px){
  .cta-event-card{ flex-direction:column; align-items:flex-start; }
  .cta-event-card .cta-button-el{ width:100%; text-align:center; }
}

/* ---- Counsellor CTA markers (calendar view) — gold glow to draw the eye ---- */
@keyframes cta-glow-card{
  0%,100%{ box-shadow:0 0 0 0 rgba(245,157,105,0.45); }
  50%{ box-shadow:0 0 22px 3px rgba(245,157,105,0.55); }
}
@keyframes cta-glow-dot{
  0%,100%{ box-shadow:0 0 0 0 rgba(245,157,105,0.55); transform:scale(1); }
  50%{ box-shadow:0 0 0 6px rgba(245,157,105,0); transform:scale(1.12); }
}
@keyframes cta-glow-pill{
  0%,100%{ box-shadow:0 0 0 0 rgba(245,157,105,0.5); }
  50%{ box-shadow:0 0 10px 2px rgba(245,157,105,0.65); }
}
.cal-cell.cta-cell{
  background:linear-gradient(135deg, rgba(245,157,105,0.20), rgba(183,35,48,0.12));
  border-color:var(--gold);
}
.cal-cta-dot{
  width:11px;height:11px;
  border-radius:50%;
  background:linear-gradient(135deg, var(--gold), var(--maroon));
  animation: cta-glow-dot 1.8s ease-in-out infinite;
}
.cal-pill.cta-pill{
  background:linear-gradient(120deg, var(--gold), var(--maroon-deep));
  color:#fff;
  font-weight:700;
  animation: cta-glow-pill 1.8s ease-in-out infinite;
}
@media (prefers-reduced-motion: reduce){
  .cta-event-card, .cal-cta-dot, .cal-pill.cta-pill{ animation:none; }
}

/* ---- Full card (dropped into content flow, between items) ---- */
.sponsor-card{
  display:flex;
  align-items:center;
  gap:18px;
  background:linear-gradient(120deg, var(--maroon) 0%, var(--maroon-deep) 100%);
  border-radius:12px;
  padding:18px 22px;
  margin:6px 0 26px;
  color:#fff;
}
.sponsor-badge{
  flex:none;
  width:44px;height:44px;
  border-radius:10px;
  background:#fff;
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  padding:6px;
}
.sponsor-badge img{
  width:100%;
  height:100%;
  object-fit:contain;
}
.sponsor-text{
  flex:1;
  font-size:13.5px;
  line-height:1.55;
}
.sponsor-text .sponsor-label{
  font-family:'Space Mono',monospace;
  font-size:10px;
  text-transform:uppercase;
  letter-spacing:.12em;
  color:var(--gold);
  display:block;
  margin-bottom:4px;
}
.sponsor-text a{
  color:#fff;
  font-weight:700;
  text-decoration:underline;
  text-underline-offset:2px;
}
.sponsor-cta{
  flex:none;
  background:var(--gold);
  color:var(--maroon-deep);
  font-weight:700;
  font-size:12.5px;
  padding:10px 18px;
  border-radius:999px;
  text-decoration:none;
  white-space:nowrap;
  transition:filter .15s;
}
.sponsor-cta:hover{ filter:brightness(1.05); }
@media (max-width:700px){
  .sponsor-card{ flex-wrap:wrap; }
  .sponsor-cta{ width:100%; text-align:center; }
}

footer{
  max-width:1180px;
  margin:0 auto;
  padding:20px 24px 50px;
  font-size:11.5px;
  color:var(--ink-soft);
  border-top:1px solid var(--rule);
  font-family:'Space Mono',monospace;
}

/* ---------- LANDING PAGE ---------- */
.exam-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
  gap:18px;
  margin-top:28px;
}
.exam-card{
  display:block;
  background:var(--paper-raised);
  border:1.5px solid var(--rule);
  border-radius:12px;
  padding:22px;
  text-decoration:none;
  color:var(--ink);
  transition:box-shadow .15s, transform .15s, border-color .15s;
}
.exam-card:hover{
  box-shadow:0 6px 20px rgba(30,36,56,0.1);
  transform:translateY(-2px);
  border-color:var(--maroon);
}
.exam-card .eyebrow{ margin-bottom:10px; }
.exam-card h2{
  font-family:'Fraunces',serif;
  font-size:22px;
  margin:0 0 8px;
}
.exam-card p{
  font-size:13.5px;
  color:var(--ink-soft);
  line-height:1.55;
  margin:0 0 14px;
}
.exam-card .meta{
  font-family:'Space Mono',monospace;
  font-size:11px;
  color:var(--maroon);
  text-transform:uppercase;
  letter-spacing:.06em;
}

/* ---------- LANGUAGE SWITCHER ---------- */
.lang-switch{
  display:flex;
  gap:6px;
  font-family:'Space Mono',monospace;
  font-size:12px;
  position:absolute;
  top:28px;
  right:24px;
}
.lang-switch a{
  padding:4px 11px;
  border-radius:999px;
  border:1.5px solid var(--rule);
  color:var(--ink-soft);
  text-decoration:none;
  background:var(--paper-raised);
}
.lang-switch a.active{
  border-color:var(--ink);
  background:var(--ink);
  color:var(--paper);
}
@media (max-width:820px){
  .lang-switch{ position:static; margin-bottom:14px; }
}

/* ---------- CTA BANNER (Typeform counsellor popup) ---------- */
.cta-banner{
  max-width:1180px;
  margin:22px auto 0;
  padding:0 24px;
}
.cta-banner-inner{
  background:linear-gradient(120deg, var(--maroon) 0%, var(--maroon-deep) 100%);
  border-radius:14px;
  padding:26px 30px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:22px;
  flex-wrap:wrap;
  color:#fff;
}
.cta-banner h2{
  font-family:'Fraunces',serif;
  font-size:23px;
  margin:0 0 6px;
}
.cta-banner p{
  margin:0;
  font-size:13.5px;
  line-height:1.5;
  color:rgba(255,255,255,0.85);
  max-width:480px;
}
.cta-button-el{
  flex:none;
  background:var(--gold);
  color:var(--maroon-deep);
  font-weight:700;
  font-size:14px;
  padding:14px 26px;
  border-radius:999px;
  border:none;
  cursor:pointer;
  white-space:nowrap;
  font-family:'Inter',sans-serif;
  transition:filter .15s;
}
.cta-button-el:hover{ filter:brightness(1.05); }
@media (max-width:700px){
  .cta-banner-inner{ flex-direction:column; align-items:flex-start; }
  .cta-button-el{ width:100%; text-align:center; }
}
