:root{--ink:#25283f;--canvas:#f7f8fc;--accent:#e4def8;--line:#e6e7f0;--muted:#655f79;--white:#ffffff;--lab:#dcf0f7;--elective:#eee5f8;--seminar:#faeedf;--danger:#8e302e;color:var(--ink);background:var(--canvas);font:15px/1.5 'Segoe UI',system-ui,sans-serif}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select{font:inherit;color:inherit}button{cursor:pointer;border:1px solid transparent;border-radius:9px;padding:9px 15px;font-weight:650;background:var(--accent)}button:hover{filter:brightness(.96)}button:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid #6559a5;outline-offset:2px}.secondary{background:var(--white);border-color:var(--line)}.rail{position:fixed;inset:0 auto 0 0;width:230px;background:var(--ink);color:#f6faee;padding:27px 18px;display:flex;flex-direction:column;z-index:3}.brand{display:flex;gap:11px;align-items:center}.brand strong{font-family:Georgia,serif;font-size:19px;white-space:nowrap}.brand small,.rail-foot small{display:block;color:#c5d6c1;font-size:11px;letter-spacing:.1em}.mark{display:grid;place-items:center;width:37px;height:37px;border-radius:10px;background:var(--accent);color:var(--ink);font-size:25px}.rail-label{font-size:10px;font-weight:750;letter-spacing:.16em;color:#becdbd;margin:45px 8px 9px}nav button{display:block;width:100%;text-align:left;background:transparent;color:#f7f8fc;padding:11px;margin:3px 0}nav button[aria-current=page]{background:var(--accent);color:var(--ink)}.rail-foot{margin-top:auto;border-top:1px solid #657e69;padding:13px 5px;font-size:12px}.rail-foot span{color:var(--accent);padding-right:5px}.main{margin-left:230px}header{display:flex;justify-content:space-between;align-items:center;gap:10px;background:var(--white);border-bottom:1px solid var(--line);padding:15px 26px;font-size:13px}.slash{color:#839486;margin:0 7px}.term,.chip{border-radius:99px;padding:4px 9px;background:#eee9fa;font-size:11px;white-space:nowrap;font-weight:650}main{max-width:1580px;margin:auto;padding:24px 28px 48px}.hero{background:var(--ink);color:#f7faef;border-radius:17px;padding:25px 29px;display:flex;justify-content:space-between;align-items:center;gap:15px}.hero p{color:#d5e3cd;margin:4px 0 0}.eyebrow{font-size:10px;font-weight:800;letter-spacing:.18em;color:#e4def8}.hero h1{font:38px/1.06 Georgia,serif;margin:6px 0 8px}.hero button{flex-shrink:0;color:var(--ink)}.cohorts{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:16px 0}.cohort{text-align:left;background:var(--white);border:1px solid var(--line);padding:12px 15px;display:flex;flex-direction:column;gap:1px}.cohort.active{border-color:#8b7ac6;background:#ece6fb;box-shadow:inset 0 -3px #a797d9}.cohort span{font-size:11px;color:var(--muted)}.cohort strong{font-size:16px}.panel{background:var(--white);border:1px solid var(--line);border-radius:13px;padding:16px;margin-top:12px}.bar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.bar h2,h2,h3{margin:0;font:700 21px Georgia,serif}.bar p,.sub{font-size:12px;color:var(--muted);margin:4px 0}.actions{display:flex;gap:7px;flex-wrap:wrap}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:12px 0}.stat{padding:12px;background:#f6f4fc;border:1px solid var(--line);border-radius:9px}.stat b{display:block;font-size:20px}.stat span{font-size:11px;color:var(--muted)}.table-scroll,.week-scroll{overflow:auto}table{width:100%;border-collapse:collapse;font-size:13px}th,td{padding:8px 7px;text-align:left;border-bottom:1px solid #efedf5;vertical-align:middle}th{font-size:11px;color:var(--muted);white-space:nowrap}td strong{display:block}td small{display:block;color:var(--muted)}select,input{max-width:100%;border:1px solid #ccc6e2;border-radius:7px;padding:6px 8px;background:#fff}select{min-width:105px}.notice{padding:9px 12px;background:#f7eedc;border-radius:8px;font-size:12px;margin:10px 0}.studio{display:grid;grid-template-columns:minmax(0,1fr) 210px;gap:12px}.week{min-width:822px;display:grid;grid-template-columns:70px repeat(8,minmax(90px,1fr));gap:4px}.time,.day,.slot{min-height:52px;border-radius:6px;padding:5px}.day,.time{font-size:11px;font-weight:700;background:#eeebf7}.day{min-height:28px}.time small{display:block;font-size:9px}.slot{background:#f8f7fc;border:1px dashed #dfd9ed;font-size:10px;position:relative}.slot.lunch{background:#f5efe1}.slot.valid{background:#e0f2c9;border:1px solid #7caa54}.slot.blocked{background:#f9ebea;border-color:#e3bdb9}.slot.over{outline:2px solid #6559a5}.slot-button,.queue-item{display:block;text-align:left;padding:4px 6px;border:1px solid #d9d2ed;border-radius:6px;width:100%;font-size:10px;background:#e9e6fa}.slot-button small,.queue-item small{display:block;font-weight:500}.slot-button.lab,.queue-item.lab{background:var(--lab)}.slot-button.elective,.queue-item.elective{background:var(--elective)}.slot-button.seminar{background:var(--seminar)}.queue{max-height:575px;overflow:auto}.queue-item{margin-top:5px;font-size:11px}.queue-item[aria-pressed=true]{outline:2px solid #6559a5;outline-offset:-2px}.empty{color:var(--muted);font-size:11px}.legend{display:flex;gap:7px;margin:10px 0}.legend span{padding:3px 7px;border-radius:5px;font-size:10px;background:#e9e6fa}.legend .lab{background:var(--lab)}.legend .elective{background:var(--elective)}.legend .seminar{background:var(--seminar)}#toast{position:fixed;z-index:5;right:20px;bottom:18px;background:var(--ink);color:white;padding:12px 16px;max-width:360px;border-radius:9px;box-shadow:0 8px 28px #19322044}dialog{border:1px solid var(--line);border-radius:13px;color:var(--ink);padding:20px;width:min(450px,92vw)}dialog::backdrop{background:#192b23aa}dialog label{display:grid;gap:4px;margin:8px 0}dialog .actions{margin-top:12px}@media(max-width:1000px){.rail{width:180px}.main{margin-left:180px}.brand strong{font-size:14px}.studio{grid-template-columns:1fr}.queue{max-height:180px}}@media(max-width:700px){.rail{position:static;width:auto;padding:12px}.rail-label,.rail-foot{display:none}.rail nav{display:flex;overflow:auto}.rail nav button{white-space:nowrap;font-size:11px}.main{margin:0}main{padding:12px}.hero{padding:17px;align-items:flex-start;flex-direction:column}.hero h1{font-size:29px}.cohorts,.stats{grid-template-columns:repeat(2,1fr)}header{padding:10px}.panel{padding:10px}}

/* Samvaad dashboard colours */
.rail{background:#fcfbff;color:var(--ink);border-right:1px solid var(--line)}.brand strong{color:#45408c}.brand small,.rail-foot small,.rail-label{color:#6e6786}.mark{color:#45408c}.rail-foot{border-color:var(--line)}.rail-foot span{color:#6559a5}nav button{color:#514969}nav button[aria-current=page]{background:#eee9fa;color:#45408c}.hero{background:linear-gradient(110deg,#eee9fb 0%,#f5f1fc 54%,#e3f3fa 100%);color:#292743;border:1px solid #e5dff3}.hero p{color:#655f79}.eyebrow{color:#65568a}.hero button,.bar button:not(.secondary){background:#45408c;color:#fff}.hero button:hover,.bar button:not(.secondary):hover{background:#36316f}.cohort.active{color:#45408c}.slot.valid{background:#e5f4ee;border-color:#7aa690}.slot.blocked{background:#f9ebef;border-color:#e7c6d0}#toast{background:#45408c}.slash{color:#827a96}
.slot-button.fixed{border-left:3px solid #6c558e}.fixed-label{color:#655189;font-weight:700}.fixed-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px}.fixed-form label{display:grid;gap:4px;font-size:12px}.fixed-form select,.fixed-form input{width:100%}.fixed-form .wide{grid-column:span 2}.fixed-form .actions{align-self:end}.table-scroll button.small{font-size:11px;padding:4px 8px}@media(max-width:750px){.fixed-form{grid-template-columns:repeat(2,minmax(0,1fr))}}

.dashboard-tabs{margin:16px 0}
.dashboard-tabs button[aria-pressed="true"]{background:#eae4fa;color:#45408c;border-color:#8b7ac6}
.dashboard-week{margin-top:14px}
.dashboard-week .slot-button+.slot-button{margin-top:4px}
.dashboard-week .slot-button{overflow-wrap:anywhere}

/* Timetable categories and booking status */
:root{--seminar:#f6e2ec}
.legend{flex-wrap:wrap}
.legend span,.slot-button{background:#e8ecfa;border-color:#cdd5ed}
.legend .lab,.slot-button.lab,.queue-item.lab{background:#dff2ed;border-color:#b8ddd1}
.legend .elective,.slot-button.elective,.queue-item.elective{background:#eee5fa;border-color:#d9c6ee}
.legend .seminar,.slot-button.seminar,.queue-item.seminar{background:var(--seminar);border-color:#e7bdcf;color:#633247}
.legend .minor,.slot-button.minor{background:#edf0f4;border-color:#d4dbe5;color:#37465c}
.slot-button.fixed{border-left:3px solid #6c558e}
.slot-button.fixed:not(.lab):not(.elective):not(.seminar):not(.minor){background:#e8ecfa}
.legend .fixed-key,.fixed-tag{background:#ece5f8;color:#4e3672}
.legend .fixed-key{border-left:3px solid #6c558e}
.fixed-tag{display:table;border-radius:4px;padding:0 4px;margin-bottom:3px;font-size:9px;font-weight:700}
.legend .lunch-key,.slot.lunch:not(.valid):not(.blocked){background:#fff3d6;border-color:#e6cf93}
.slot.lunch:not(.valid):not(.blocked){background-image:repeating-linear-gradient(135deg,transparent 0 8px,#ecd59e33 8px 10px)}
.lunch-label{display:inline-block;padding:2px 5px;border-radius:5px;background:#f6e2ae;color:#634715;font-size:10px;font-weight:700}
