/* UniPass: a practical campus noticeboard, with restrained institutional typography. */
:root {
  --ink:#22322f;
  --muted:#67716b;
  --accent:#a5432b;
  --accent-soft:#f6eee9;
  --line:#e1e3dc;
  --bg:#f7f7f2;
  --paper:#fff;
  --green:#2d6a50;
  --radius:7px;
  --purple:var(--accent);
}

* {
  box-sizing:border-box;
}

html {
  scroll-behavior:smooth;
  scroll-padding-top:24px;
}

body {
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;
  font-size:14px;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
}

a {
  color:inherit;
  text-decoration:none;
}

button,input,select,textarea {
  font:inherit;
}

button {
  cursor:pointer;
}

button:disabled {
  opacity:.5;
  cursor:not-allowed;
}

a,button,input,select,textarea,summary {
  outline-offset:4px;
}

a:focus-visible,button:focus-visible,summary:focus-visible {
  outline:2px solid var(--accent);
}

[hidden] {
  display:none!important;
}

h1,h2,h3,p {
  margin-top:0;
}

h1 {
  font-family:Georgia,"Times New Roman",serif;
  font-size:38px;
  font-weight:400;
  line-height:1.15;
  letter-spacing:-1.1px;
  margin-bottom:14px;
}

h1 em {
  font-style:normal;
}

h2 {
  font-size:20px;
  font-weight:600;
  letter-spacing:-.4px;
  line-height:1.3;
  margin-bottom:12px;
}

h3 {
  font-size:16px;
  font-weight:600;
  line-height:1.4;
  margin-bottom:10px;
}

p {
  color:var(--muted);
  font-size:13px;
  line-height:1.75;
  margin-bottom:20px;
}

small {
  font-size:12px;
}

.icon {
  width:19px;
  height:19px;
  flex-shrink:0;
  vertical-align:middle;
}

.skip-link {
  position:fixed;
  top:-60px;
  left:20px;
  z-index:50;
  padding:10px 18px;
  background:var(--ink);
  color:white;
}

.skip-link:focus {
  top:10px;
}

/* Application frame */
.app-shell {
  display:flex;
  min-height:100vh;
}

.sidebar {
  position:fixed;
  inset:0 auto 0 0;
  width:216px;
  background:#fff;
  border-right:1px solid var(--line);
  display:flex;
  flex-direction:column;
  padding:31px 17px 21px;
  z-index:10;
  overflow-y:auto;
}

.brand {
  display:flex;
  align-items:center;
  gap:10px;
  padding:0 10px;
  font-size:25px;
  font-weight:650;
  letter-spacing:-1px;
}

.brand-symbol {
  width:32px;
  height:33px;
  background:var(--ink);
  color:#fff;
  border-radius:4px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-family:Georgia,serif;
  font-style:italic;
  font-size:24px;
  letter-spacing:-2px;
  padding:0 4px 4px 0;
}

.brand-dot {
  color:var(--accent);
}

.sidebar nav {
  margin-top:36px;
}

.nav-label {
  color:var(--muted);
  font-size:9px;
  letter-spacing:1.2px;
  font-weight:600;
  margin:27px 12px 11px;
}

.nav-label:first-child {
  margin-top:0;
}

.nav-link {
  display:flex;
  align-items:center;
  gap:11px;
  color:#657069;
  font-size:12px;
  font-weight:500;
  border-radius:4px;
  padding:12px 11px;
  margin-bottom:4px;
  white-space:nowrap;
}

.nav-link .icon {
  width:17px;
  height:17px;
}

.nav-link:hover {
  background:#f5f5f0;
  color:var(--ink);
}

.nav-link.active {
  color:var(--accent);
  background:var(--accent-soft);
  position:relative;
}

.nav-link.active:before {
  content:'';
  position:absolute;
  left:-17px;
  top:11px;
  bottom:11px;
  width:3px;
  background:var(--accent);
}

.sidebar-bottom {
  margin-top:auto;
  padding-top:38px;
}


.network-dot {
  width:6px;
  height:6px;
  border-radius:50%;
  background:#4b805c;
  display:inline-block;
  flex-shrink:0;
}

.account {
  display:flex;
  align-items:center;
  gap:10px;
  padding:20px 9px 0;
  border-top:1px solid var(--line);
}

.avatar {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex-shrink:0;
  width:33px;
  height:33px;
  background:#e8eee8;
  color:#41594a;
  border-radius:50%;
  font-weight:600;
  font-size:12px;
}

.account strong {
  font-size:11px;
  font-weight:600;
  display:block;
}

.account small {
  font-size:10px;
  display:block;
  color:var(--muted);
  margin-top:3px;
}

.main-shell {
  margin-left:216px;
  width:calc(100% - 216px);
  display:flex;
  flex-direction:column;
}

.topbar {
  height:74px;
  min-height:74px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:0 42px;
  border-bottom:1px solid var(--line);
  background:#fff;
}

.breadcrumb {
  font-size:11px;
  color:#788077;
}

.breadcrumb span {
  padding:0 10px;
  color:var(--muted);
}

.topbar-right {
  margin-left:auto;
  display:flex;
  align-items:center;
  gap:16px;
}

.topbar-right form {
  margin:0;
}

.topbar-name {
  font-size:11px;
  color:#697469;
}

.icon-button {
  border:0;
  background:transparent;
  padding:8px;
  color:#7f897e;
}

.topbar-right .text-link {
  display:flex;
  gap:9px;
  align-items:center;
}

.topbar-right .icon {
  width:14px;
  height:14px;
}

main {
  padding:40px 42px 45px;
  width:100%;
  max-width:1540px;
  margin:0 auto;
  flex:1;
  min-width:0;
}

footer {
  border-top:1px solid var(--line);
  font-size:10px;
  color:var(--muted);
  display:flex;
  justify-content:space-between;
  gap:15px;
  padding:23px 42px;
}

.eyebrow {
  display:block;
  color:#738071;
  font-size:9px;
  font-weight:650;
  letter-spacing:1.6px;
  margin-bottom:12px;
}

.page-heading {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:25px;
  margin-bottom:30px;
}

.page-heading p {
  margin:0;
  font-size:12px;
}

.page-heading h1 {
  margin-bottom:12px;
}

.title-period {
  color:var(--accent);
}

/* Shared controls */
.button {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  border:1px solid transparent;
  border-radius:4px;
  min-height:42px;
  padding:10px 16px;
  font-size:11px;
  font-weight:600;
  line-height:1.5;
  white-space:nowrap;
  transition:background .15s,border-color .15s;
}

.button .icon {
  width:15px;
  height:15px;
}

.primary {
  background:var(--ink);
  color:#fff;
}

.primary:hover {
  background:#365047;
}

.secondary {
  background:#fff;
  border-color:#d9ded5;
  color:#536052;
}

.secondary:hover {
  background:#f3f5ed;
  border-color:#bac7b6;
}

.light {
  background:#fff;
  color:var(--ink);
}

.danger {
  background:#fff1ec;
  border-color:#edcbbb;
  color:#993d27;
}

.full {
  width:100%;
}

.small {
  font-size:10px;
  min-height:33px;
  padding:7px 12px;
}

.text-link,.text-button {
  color:var(--accent);
  font-size:11px;
  font-weight:500;
}

.text-link:hover {
  text-decoration:underline;
  text-underline-offset:4px;
}

.text-button {
  background:transparent;
  border:0;
  padding:11px 0;
}

.text-link .icon {
  width:14px;
  height:14px;
}

.panel {
  background:#fff;
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:27px;
  min-width:0;
}

.panel>p {
  font-size:12px;
}

.muted {
  font-size:11px;
  line-height:1.7;
  color:#7f877d;
}

.badge {
  display:inline-block;
  border:1px solid #dce2d5;
  border-radius:3px;
  padding:4px 7px;
  font-size:9px;
  line-height:1.4;
  color:#697663;
  background:#f4f5ef;
  white-space:nowrap;
  font-weight:500;
}

.badge.confirmed,.badge.verified,.badge.checked_in,.badge.active,.badge.published {
  color:#356a4b;
  background:#edf4e9;
  border-color:#dbe8d0;
}

.badge.held,.badge.pending {
  color:#916c2d;
  background:#fcf7e8;
  border-color:#e9dfbc;
}

.badge.cancelled,.badge.rejected,.badge.inactive {
  color:#9d5142;
  background:#fbefea;
  border-color:#efd5c9;
}

.badge.expired,.badge.draft {
  color:#7a8175;
  background:#f2f3ed;
  border-color:#e1e4d8;
}

.category-tag {
  display:inline-block;
  font-size:9px;
  color:#68745f;
  border:1px solid #e2e7d9;
  border-radius:3px;
  padding:3px 7px;
  font-weight:500;
  background:#f8f9f3;
}

.stack-form {
  display:flex;
  flex-direction:column;
  gap:20px;
  margin-top:23px;
}

label,.field-label {
  font-size:11px;
  font-weight:500;
  color:#53614f;
  display:flex;
  flex-direction:column;
  gap:8px;
}

input,select,textarea {
  width:100%;
  border:1px solid #dce1d4;
  background:#fff;
  border-radius:4px;
  font-size:12px;
  padding:11px 12px;
  color:#3e4e3b;
  min-width:0;
}

input::placeholder,textarea::placeholder {
  color:var(--muted);
}

input:focus,select:focus,textarea:focus {
  outline:2px solid #ccdac1;
  border-color:#849679;
}

input[type=checkbox],input[type=radio] {
  accent-color:var(--accent);
}

textarea {
  resize:vertical;
  line-height:1.7;
}

.form-row {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:20px;
}

.form-bottom {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
}

.check-label {
  display:flex!important;
  flex-direction:row!important;
  align-items:center;
  font-size:11px!important;
  font-weight:400!important;
  gap:7px;
}

.check-label input {
  width:14px!important;
  height:14px!important;
  padding:0;
  margin:0;
}

.info-box {
  background:#f3f5ec;
  border:1px solid #e3e8d9;
  color:#728166;
  border-radius:4px;
  padding:15px 17px;
  font-size:11px;
  line-height:1.85;
  margin:20px 0;
}

.flash-stack {
  margin-bottom:24px;
}

.flash {
  display:flex;
  align-items:center;
  gap:10px;
  padding:13px 17px;
  font-size:12px;
  border:1px solid #d7e6d0;
  background:#f0f7ed;
  border-radius:5px;
  color:#446e36;
  margin-bottom:10px;
}

.flash .icon {
  width:17px;
}

.flash.error {
  border-color:#ebcbbf;
  background:#fff1eb;
  color:#a65339;
}

.back-link {
  display:block;
  font-size:11px;
  color:var(--muted);
  margin-bottom:24px;
}

.back-link:hover {
  color:var(--accent);
}

/* Noticeboard and festival cards */
.noticeboard-heading {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:35px;
  padding:2px 0 32px;
  border-bottom:1px solid var(--line);
  margin-bottom:27px;
}

.noticeboard-heading h1 {
  font-size:44px;
  letter-spacing:-1.7px;
  line-height:1.12;
  margin-bottom:16px;
}

.noticeboard-heading h1>span {
  color:#798377;
}

.noticeboard-heading p {
  font-size:12px;
  margin-bottom:0;
}

.noticeboard-heading .eyebrow {
  color:var(--accent);
  font-size:8px;
  letter-spacing:1.7px;
  margin-bottom:17px;
}

.directory-callout {
  display:flex;
  align-items:center;
  gap:14px;
  border-left:1px solid var(--line);
  padding-left:25px;
  min-width:210px;
}

.directory-number {
  font-family:Georgia,serif;
  font-size:58px;
  font-weight:400;
  letter-spacing:-3px;
  color:#304634;
  line-height:1;
}

.directory-callout>span:last-child {
  font-size:10px;
  color:#7f8a76;
  line-height:1.8;
}

.directory-callout strong {
  display:block;
  font-size:10px;
  font-weight:500;
  color:var(--accent);
  margin-top:8px;
}

.directory-callout .icon {
  width:13px;
  height:13px;
  margin-left:3px;
}

.discovery-layout {
  display:grid;
  grid-template-columns:minmax(0,1fr) 218px;
  gap:35px;
}

.discovery-main {
  min-width:0;
}

.campus-tabs {
  display:flex;
  align-items:center;
  gap:20px;
  border-bottom:1px solid var(--line);
  margin-bottom:23px;
  overflow:auto;
  scrollbar-width:thin;
}

.campus-tabs>a {
  font-size:11px;
  color:var(--muted);
  white-space:nowrap;
  display:inline-flex;
  align-items:center;
  gap:5px;
  border-bottom:2px solid transparent;
  padding:0 0 13px;
  min-height:39px;
}

.campus-tabs>a.active {
  border-bottom-color:var(--accent);
  color:#a24a32;
  font-weight:600;
}

.campus-tabs>a:hover {
  color:var(--accent);
}

.campus-tabs>a>span {
  font-size:8px;
  color:var(--muted);
  margin-left:1px;
}

.filters {
  display:grid;
  grid-template-columns:minmax(150px,1fr) minmax(110px,145px) minmax(105px,125px);
  gap:9px;
  margin-bottom:22px;
  align-items:start;
}

.filters>input[type=hidden] {
  display:none;
}

.search-field {
  background:#fff;
  display:flex;
  align-items:center;
  gap:9px;
  border:1px solid #dce1d4;
  border-radius:4px;
  padding:0 11px;
  min-width:0;
}

.search-field>.icon {
  width:15px;
  height:15px;
  color:var(--muted);
}

.search-field>input {
  border:0;
  background:transparent;
  font-size:11px;
  padding:12px 0;
  min-width:0;
  height:42px;
}

.search-field:focus-within {
  outline:2px solid #ccdac1;
  border-color:#849679;
}

.search-field>input:focus {
  outline:0;
}

.filters>select {
  height:44px;
  font-size:10px;
  padding:10px 8px;
}

.filters>.button {
  grid-column:3;
  grid-row:2;
  font-size:10px;
  min-height:35px;
  padding:8px 10px;
}

.advanced-filters {
  grid-column:1/3;
  grid-row:2;
  align-self:center;
  color:var(--muted);
  font-size:10px;
}

.advanced-filters summary {
  cursor:pointer;
  padding:9px 0;
  width:fit-content;
}

.filter-secondary {
  display:flex;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
  padding:12px 0;
}

.filter-secondary label {
  font-size:10px;
}

.filter-secondary input[type=date] {
  font-size:10px;
  width:123px;
  padding:6px;
}

.filter-secondary .muted {
  font-size:9px;
}

.section-heading {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:20px;
  margin:28px 0 15px;
}

.section-heading h2 {
  font-size:17px;
  margin-bottom:0;
  letter-spacing:-.3px;
}

.section-heading>span {
  font-size:10px;
  color:var(--muted);
}

.listing-note {
  font-size:10px;
  color:var(--muted);
  margin:-4px 0 19px;
  line-height:1.7;
}

.festival-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:17px;
}

.festival-card {
  display:flex;
  flex-direction:column;
  border:1px solid #dfe3d6;
  background:#fff;
  border-radius:5px;
  padding:23px 21px 0;
  min-width:0;
  transition:border-color .15s;
}

.festival-card:hover {
  border-color:#a7b298;
}

.festival-card-top {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:24px;
}

.institute-mark {
  width:47px;
  height:44px;
  display:flex;
  align-items:center;
  justify-content:center;
  font-family:Georgia,serif;
  font-weight:650;
  font-size:17px;
  letter-spacing:-1px;
  border:1px solid #dce4d4;
  color:#546948;
  background:#f3f6ee;
  border-radius:3px;
}

.vit .institute-mark,.vit.campus-group-mark {
  background:#f3f0e5;
  border-color:#e5dec7;
  color:#8a7441;
}

.srm .institute-mark,.srm.campus-group-mark {
  background:#edf3f8;
  border-color:#d6e4ee;
  color:#426d89;
}

.iit .institute-mark,.iit.campus-group-mark {
  background:#f4ece7;
  border-color:#e7d6ca;
  color:#8a553b;
}

.nit .institute-mark,.nit.campus-group-mark {
  background:#eef3e9;
  border-color:#dce7ce;
  color:#607d41;
}

.iiit .institute-mark,.iiit.campus-group-mark {
  background:#eeeff3;
  border-color:#dbdce6;
  color:#5a6480;
}

.festival-institution {
  font-size:9px;
  letter-spacing:.15px;
  color:var(--muted);
  margin-bottom:5px;
}

.festival-card h3 {
  font-family:Georgia,"Times New Roman",serif;
  font-size:28px;
  letter-spacing:-.7px;
  font-weight:400;
  line-height:1.2;
  margin-bottom:14px;
  color:#30452e;
}

.festival-card h3 a {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}

.festival-card h3 a>span {
  font-family:Arial,sans-serif;
  font-size:18px;
  color:var(--muted);
  font-weight:400;
}

.festival-card>p {
  font-size:11px;
  line-height:1.8;
  color:var(--muted);
  margin-bottom:20px;
  flex:1;
}

.festival-location {
  font-size:9px;
  color:var(--muted);
  display:flex;
  align-items:center;
  gap:6px;
  padding-bottom:20px;
}

.festival-location .icon {
  width:12px;
  height:12px;
}

.festival-card-bottom {
  display:flex;
  align-items:center;
  justify-content:space-between;
  border-top:1px solid #edf0e7;
  margin-top:auto;
  gap:8px;
  padding:14px 0;
  font-size:9px;
  color:var(--muted);
}

.festival-card-bottom a {
  color:var(--accent);
  display:flex;
  align-items:center;
  gap:7px;
  font-size:9px;
}

.festival-card-bottom .icon {
  width:13px;
  height:13px;
}

.bookable-card h3 {
  font-family:inherit;
  font-size:22px;
  line-height:1.3;
  letter-spacing:-.4px;
}

.bookable-card .festival-card-top {
  margin-bottom:23px;
}

.bookable-card>p .icon {
  width:13px;
  height:13px;
  margin-right:5px;
}

.discovery-rail {
  min-width:0;
  padding-top:3px;
}

.rail-section {
  border:1px solid #dfe4d5;
  background:#eef1e8;
  border-radius:5px;
  padding:23px 19px;
  margin-bottom:22px;
}

.rail-section .eyebrow {
  font-size:8px;
  letter-spacing:1.3px;
  color:var(--muted);
}

.rail-section h2 {
  font-family:Georgia,serif;
  font-weight:400;
  font-size:25px;
  letter-spacing:-.65px;
  color:#445b3a;
}

.rail-section>p {
  font-size:10px;
  color:var(--muted);
  line-height:1.8;
}

.vit-campus-list {
  margin:21px 0 18px;
}

.vit-campus-list>a {
  display:flex;
  align-items:center;
  justify-content:space-between;
  border-bottom:1px solid #dce2d2;
  padding:11px 0;
  color:#6a7b5c;
  font-size:10px;
}

.vit-campus-list>a:first-child {
  border-top:1px solid #dce2d2;
}

.vit-campus-list>a>span:last-child {
  font-size:13px;
  color:var(--muted);
}

.vit-campus-list>a:hover {
  color:var(--accent);
}

.rail-link {
  font-size:9px;
}

.rail-link>.icon {
  width:12px;
  height:12px;
}

.organiser-note {
  background:transparent;
  padding:21px 19px;
  border-color:#e0e5d6;
}

.organiser-note>.icon {
  color:var(--muted);
  width:21px;
  height:21px;
  margin-bottom:14px;
}

.organiser-note h3 {
  font-size:13px;
  font-weight:550;
  color:#6d7e5e;
}

.organiser-note .button {
  font-size:9px;
  padding:9px 10px;
  min-height:36px;
}

.organiser-note p {
  margin-bottom:17px;
}

.rail-footnote {
  font-size:9px;
  line-height:1.9;
  color:var(--muted);
  padding:0 7px;
}

/* Institution directory */
.directory-status {
  font-size:10px;
  color:var(--muted);
  white-space:nowrap;
}

.directory-search {
  display:flex;
  gap:10px;
  margin:26px 0 18px;
  max-width:700px;
}

.directory-search .search-field {
  flex:1;
}

.directory-search .button {
  font-size:11px;
}

.directory-meta {
  display:flex;
  justify-content:space-between;
  gap:25px;
  align-items:center;
  margin:22px 0 16px;
  font-size:10px;
  color:var(--muted);
}

.directory-meta p {
  font-size:10px;
  margin:0;
}

.campus-directory {
  border:1px solid var(--line);
  border-radius:5px;
  background:#fff;
  overflow:hidden;
}

.campus-directory-row {
  display:flex;
  gap:20px;
  padding:24px 28px;
  align-items:flex-start;
  border-bottom:1px solid #e9ede1;
}

.campus-directory-row:last-child {
  border-bottom:0;
}

.campus-group-mark {
  width:51px;
  height:48px;
  border:1px solid #dce4d2;
  background:#f0f4e9;
  border-radius:4px;
  flex-shrink:0;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:12px;
  font-family:Georgia,serif;
  font-weight:650;
  margin-top:3px;
}

.campus-directory-info {
  flex:1;
  min-width:0;
}

.campus-directory-info h2 {
  font-size:18px;
  color:#4d653e;
  margin-bottom:5px;
}

.campus-directory-info>span {
  font-size:10px;
  color:var(--muted);
  display:block;
  line-height:1.7;
}

.campus-directory-info p {
  font-size:11px;
  line-height:1.7;
  margin:7px 0 0;
  max-width:690px;
  color:var(--muted);
  overflow-wrap:anywhere;
}

.campus-directory-actions {
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:12px;
  padding-left:15px;
  flex-shrink:0;
}

.campus-directory-actions .text-link {
  font-size:10px;
}

.source-link {
  font-size:9px;
  color:var(--muted);
}

.source-link:hover {
  text-decoration:underline;
}

/* Authentication, membership, and forms */
.auth-layout {
  display:grid;
  grid-template-columns:minmax(0,1fr);
  max-width:440px;
  margin:30px auto 40px;
  align-items:start;
}

.auth-story {
  padding-top:25px;
}

.auth-story h1 {
  font-size:49px;
  line-height:1.08;
  color:#3d5730;
  margin-bottom:24px;
}

.auth-story>p {
  max-width:350px;
  color:var(--muted);
  font-size:12px;
}

.auth-steps {
  list-style:none;
  margin:32px 0;
  padding:0;
}

.auth-steps>li {
  display:flex;
  align-items:flex-start;
  gap:16px;
  margin-bottom:23px;
}

.auth-steps>li>span {
  font-family:Georgia,serif;
  font-size:16px;
  color:var(--muted);
  line-height:1.5;
}

.auth-steps strong {
  font-size:12px;
  font-weight:550;
  color:#658050;
}

.auth-steps p {
  font-size:10px;
  margin:4px 0 0;
  color:var(--muted);
}

.auth-story>.text-link {
  font-size:11px;
}

.auth-panel {
  padding:34px;
  max-width:440px;
}

.auth-panel h1 {
  font-family:Georgia,serif;
  font-size:32px;
  font-weight:400;
  color:#456235;
  margin-bottom:12px;
}

.auth-panel>p {
  font-size:11px;
  color:var(--muted);
}

.auth-panel .stack-form {
  gap:21px;
}

.auth-panel #email-help {
  font-size:9px;
  margin-top:-13px;
  color:var(--muted);
}

.auth-switch {
  font-size:11px;
  margin:25px 0 0;
  text-align:center;
}

.auth-switch .text-link {
  margin-left:3px;
}

.two-column {
  display:grid;
  grid-template-columns:1.2fr 1fr;
  gap:25px;
  align-items:start;
}

.membership-list,.venue-list {
  display:flex;
  flex-direction:column;
  gap:19px;
}

.membership-card {
  display:flex;
  align-items:center;
  gap:21px;
}

.membership-card h2 {
  font-size:20px;
  margin-bottom:6px;
}

.membership-card p {
  font-size:11px;
  margin-bottom:10px;
}

.university-monogram {
  display:flex;
  align-items:center;
  justify-content:center;
  width:52px;
  height:56px;
  flex-shrink:0;
  border:1px solid #dfe6d3;
  background:#f4f7ee;
  color:var(--muted);
  font-family:Georgia,serif;
  font-size:26px;
  border-radius:3px;
}

.event-create-form {
  max-width:900px;
  margin:auto;
  padding:32px;
  gap:23px;
}

.form-section-heading {
  display:flex;
  align-items:center;
  gap:12px;
  padding-bottom:12px;
  border-bottom:1px solid var(--line);
  margin-top:18px;
}

.form-section-heading:first-of-type {
  margin-top:0;
}

.form-section-heading>span {
  font-size:11px;
  font-family:Georgia,serif;
  color:var(--muted);
  border:1px solid #e2e9d8;
  padding:5px 7px;
  border-radius:3px;
}

.form-section-heading h2 {
  font-size:17px;
  margin:0;
}

.form-section-heading small {
  font-size:10px;
  color:var(--muted);
  margin-left:auto;
}

fieldset {
  border:1px solid #dce6ce;
  border-radius:4px;
  padding:17px;
  display:flex;
  flex-direction:column;
  gap:13px;
}

fieldset legend {
  font-size:11px;
  color:var(--muted);
}

/* Event detail and seat reservation */
.detail-layout {
  display:grid;
  grid-template-columns:minmax(0,1.4fr) minmax(300px,1fr);
  gap:35px;
  align-items:start;
}

.poster {
  display:flex;
  align-items:center;
  gap:22px;
  padding:40px;
  background:#e9eee1;
  border:1px solid #dbe4ce;
  border-radius:4px;
  color:#5f7e43;
  min-height:175px;
}

.poster>.icon {
  width:38px;
  height:38px;
  stroke-width:1.15;
}

.poster>span {
  font-family:Georgia,serif;
  font-size:33px;
  letter-spacing:-.8px;
}

.poster small {
  font-family:Arial,sans-serif;
  font-size:10px;
  letter-spacing:1.5px;
  display:block;
  text-transform:uppercase;
  color:var(--muted);
  margin-top:6px;
}

.poster.small {
  padding:20px;
  gap:10px;
  min-height:100px;
}

.poster.small>.icon {
  width:20px;
  height:20px;
}

.poster.small>span {
  font-size:17px;
}

.poster.small small {
  font-size:7px;
  letter-spacing:.7px;
}

.detail-copy {
  padding:28px 2px;
}

.detail-copy h1 {
  font-size:36px;
  margin-top:17px;
}

.host-line {
  font-size:12px;
}

.host-line strong {
  font-weight:500;
  color:var(--muted);
}

.event-facts {
  display:grid;
  gap:21px;
  border-block:1px solid var(--line);
  padding:25px 0;
  margin:26px 0 29px;
}

.event-facts>div {
  display:flex;
  gap:14px;
}

.event-facts .icon {
  color:var(--muted);
  width:19px;
}

.event-facts strong {
  font-size:12px;
  font-weight:500;
  display:block;
  color:#6b8752;
}

.event-facts small {
  font-size:10px;
  color:var(--muted);
  display:block;
  margin-top:6px;
}

.description {
  font-size:12px;
  line-height:1.9;
  white-space:pre-line;
  color:var(--muted);
}

.reservation-panel {
  position:sticky;
  top:25px;
  padding:26px;
}

.reservation-heading {
  display:flex;
  align-items:center;
  justify-content:space-between;
}

.free-label {
  font-size:9px;
  font-weight:600;
  color:#699245;
  background:#eff6e7;
  padding:4px 7px;
  border:1px solid #e1edce;
  border-radius:3px;
}

.reservation-panel h2 {
  font-size:26px;
  margin-top:13px;
}

.reservation-panel p {
  font-size:11px;
}

.seat-map-label {
  font-size:9px;
  letter-spacing:1px;
  text-align:center;
  color:var(--muted);
  font-weight:500;
  margin-top:27px;
}

.stage {
  background:#f0f4e9;
  border:1px solid #e5ecd9;
  border-radius:2px;
  text-align:center;
  letter-spacing:1.4px;
  font-size:8px;
  padding:6px;
  margin:15px 3px 17px;
  color:var(--muted);
}

.seat-grid {
  display:grid;
  grid-template-columns:repeat(10,minmax(0,1fr));
  gap:5px;
  max-height:340px;
  overflow-y:auto;
  padding:3px;
}

.seat {
  position:relative;
  display:block;
  cursor:pointer;
}

.seat input {
  position:absolute;
  opacity:0;
  inset:0;
  width:100%;
  height:100%;
  margin:0;
  cursor:pointer;
}

.seat span {
  aspect-ratio:1;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:8px;
  min-height:21px;
  border:1px solid #cddcba;
  background:#f7faf1;
  color:var(--muted);
  border-radius:3px;
}

.seat input:checked+span {
  background:var(--ink);
  color:#fff;
  border-color:var(--ink);
}

.seat input:focus-visible+span {
  outline:2px solid var(--accent);
  outline-offset:2px;
}

.seat.held span,.seat.confirmed span {
  border-color:#e0e7d7;
  background:#eff3e8;
  color:var(--muted);
}

.seat input:disabled {
  cursor:not-allowed;
}

.seat-legend {
  display:flex;
  justify-content:center;
  gap:15px;
  font-size:8px;
  color:var(--muted);
  margin:19px 0;
}

.seat-legend span {
  display:flex;
  align-items:center;
  gap:5px;
}

.seat-legend i {
  display:inline-block;
  width:8px;
  height:8px;
  border-radius:2px;
}

.seat-legend .available {
  background:#f7faf1;
  border:1px solid #cddcba;
}

.seat-legend .selected {
  background:var(--ink);
}

.seat-legend .unavailable {
  background:#e0e7d7;
}

.selection-summary {
  text-align:center;
  font-size:10px;
  color:var(--muted);
  margin:18px 0;
}

.reservation-note {
  font-size:9px;
  text-align:center;
  display:block;
  line-height:1.9;
  color:var(--muted);
  margin-top:16px;
}

.seat-preview {
  text-align:center;
  padding:28px 10px;
}

.seat-preview .icon {
  width:40px;
  height:40px;
  color:var(--muted);
  margin-bottom:15px;
}

/* Tickets and booking history */
.booking-list {
  display:flex;
  flex-direction:column;
  gap:18px;
}

.booking-list-card {
  display:flex;
  align-items:center;
  gap:24px;
  padding:20px;
}

.booking-list-card:hover {
  border-color:#afc499;
}

.booking-thumbnail {
  width:140px;
  flex-shrink:0;
}

.booking-list-info {
  flex:1;
  min-width:0;
}

.booking-list-info h2 {
  font-size:20px;
  margin:13px 0 8px;
}

.booking-list-info p {
  font-size:11px;
  margin-bottom:8px;
}

.booking-list-info>span {
  font-size:10px;
  color:var(--muted);
}

.booking-list-action {
  display:flex;
  align-items:center;
  gap:12px;
  color:var(--accent);
  font-size:11px;
  padding:0 12px;
}

.ticket-layout {
  display:grid;
  grid-template-columns:1.5fr 1fr;
  gap:30px;
  align-items:start;
  max-width:1100px;
}

.digital-ticket {
  border:1px solid #dbe5cf;
  border-radius:6px;
  background:#fff;
  overflow:hidden;
}

.ticket-header {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:15px;
  background:var(--ink);
  color:var(--muted);
  padding:20px 28px;
  font-size:9px;
  letter-spacing:1px;
}

.ticket-body {
  padding:30px;
}

.ticket-body h2 {
  font-family:Georgia,serif;
  font-size:31px;
  letter-spacing:-.5px;
  font-weight:400;
  margin-top:17px;
}

.ticket-body>p {
  font-size:12px;
}

.ticket-facts {
  display:grid;
  grid-template-columns:1fr 1.2fr .5fr;
  gap:20px;
  padding:20px 0;
}

.ticket-facts>div {
  display:flex;
  flex-direction:column;
  gap:8px;
}

.ticket-facts small,.ticket-person small {
  font-size:8px;
  letter-spacing:1.2px;
  color:var(--muted);
}

.ticket-facts strong {
  font-size:11px;
  font-weight:500;
  color:var(--muted);
}

.ticket-facts span {
  font-size:10px;
  color:var(--muted);
  line-height:1.7;
}

.ticket-facts .big-seat {
  font-size:30px;
  color:var(--accent);
}

.ticket-person {
  display:flex;
  flex-direction:column;
  gap:7px;
  border-top:1px solid var(--line);
  padding-top:20px;
}

.ticket-person strong {
  font-size:13px;
  color:var(--muted);
  font-weight:500;
}

.ticket-person span {
  font-size:10px;
  color:var(--muted);
}

.ticket-perforation {
  border-top:2px dashed #dde8cf;
  height:0;
  position:relative;
}

.ticket-bottom {
  padding:25px 28px;
  display:flex;
  align-items:center;
  gap:20px;
}

.qr {
  width:117px;
  height:117px;
  object-fit:contain;
}

.ticket-bottom strong {
  font-size:12px;
  font-weight:500;
  color:var(--muted);
}

.ticket-bottom p {
  font-size:10px;
  margin:8px 0;
  color:var(--muted);
}

.ticket-bottom>.icon {
  width:32px;
  height:32px;
  color:var(--muted);
}

.ticket-bottom summary {
  font-size:10px;
  color:var(--accent);
  cursor:pointer;
}

.ticket-token {
  display:block;
  max-width:250px;
  overflow-wrap:anywhere;
  font-size:10px;
  margin-top:10px;
}

.ticket-actions {
  padding:28px;
}

.ticket-actions h2 {
  font-size:24px;
  margin-top:15px;
}

.ticket-actions p {
  font-size:12px;
}

.countdown {
  font-variant-numeric:tabular-nums;
  font-family:Georgia,serif;
  font-size:60px;
  letter-spacing:-2px;
  font-weight:400;
  color:var(--accent);
  margin:19px 0;
}

.cancel-details {
  border-top:1px solid var(--line);
  padding-top:22px;
  margin-top:23px;
  font-size:11px;
  color:var(--muted);
}

.cancel-details summary {
  cursor:pointer;
}

.cancel-details p {
  font-size:11px;
  margin-top:14px;
}

/* Staff workspaces, tables and reporting */
.tab-bar {
  display:flex;
  gap:25px;
  border-bottom:1px solid var(--line);
  margin-bottom:25px;
  overflow-x:auto;
}

.tab {
  background:transparent;
  border:0;
  border-bottom:2px solid transparent;
  padding:13px 2px;
  color:var(--muted);
  font-size:12px;
  white-space:nowrap;
}

.tab.active {
  color:var(--accent);
  border-bottom-color:var(--accent);
  font-weight:500;
}

.tab span {
  font-size:9px;
  margin-left:6px;
  background:#eff5e7;
  padding:3px 5px;
  border-radius:3px;
  color:var(--muted);
}

.table-panel {
  padding:0;
  overflow-x:auto;
}

table {
  width:100%;
  border-collapse:collapse;
  text-align:left;
  font-size:12px;
}

th {
  background:#f8faf4;
  border-bottom:1px solid #e3ebd8;
  font-weight:500;
  color:var(--muted);
  font-size:9px;
  letter-spacing:.2px;
  padding:17px 21px;
  white-space:nowrap;
}

td {
  font-size:11px;
  color:var(--muted);
  padding:20px 21px;
  border-bottom:1px solid #edf2e7;
}

td strong {
  font-size:12px;
  color:var(--muted);
  display:block;
  font-weight:500;
  line-height:1.5;
}

td small {
  display:block;
  font-size:9px;
  color:var(--muted);
  margin-top:5px;
}

tr:last-child td {
  border-bottom:0;
}

.empty-cell {
  text-align:center;
  padding:50px 20px;
  color:var(--muted);
}

.review-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:22px;
}

.review-card {
  padding:23px;
}

.review-heading {
  display:flex;
  align-items:center;
  gap:12px;
}

.review-heading>div {
  flex:1;
  min-width:0;
}

.review-heading h3 {
  font-size:14px;
  margin-bottom:4px;
}

.review-heading p {
  font-size:10px;
  overflow-wrap:anywhere;
  margin:0;
}

.review-heading>.badge {
  margin-left:auto;
}

.review-card>p {
  font-size:10px;
  margin:16px 0;
}

.compact {
  gap:14px;
}

.compact label {
  font-size:10px;
}

.compact input,.compact select {
  font-size:11px;
  padding:9px;
}

.venue-list p {
  font-size:11px;
  margin:13px 0;
}

.venue-list summary {
  font-size:11px;
  color:var(--accent);
  cursor:pointer;
}

.heading-actions {
  display:flex;
  align-items:center;
  gap:10px;
}

.stats-grid {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:17px;
  margin-bottom:29px;
}

.stat-card {
  background:#fff;
  border:1px solid #dce8d0;
  border-radius:5px;
  padding:23px;
}

.stat-card>span {
  font-size:11px;
  color:var(--muted);
}

.stat-card>strong {
  font-family:Georgia,serif;
  font-size:36px;
  color:var(--muted);
  font-weight:400;
  letter-spacing:-1px;
  display:block;
  margin:15px 0 7px;
}

.stat-card strong small {
  font-family:Arial,sans-serif;
  font-size:13px;
  letter-spacing:0;
  color:var(--muted);
  font-weight:400;
}

.stat-card p {
  font-size:9px;
  color:var(--muted);
  margin-bottom:0;
}

.stat-card.accent {
  background:#edf5e6;
}

.stat-card.accent>strong {
  color:var(--green);
}

.seat-label {
  display:inline-flex;
  align-items:center;
  padding:4px 7px;
  background:#f0f6e8;
  border:1px solid #dfebd2;
  color:var(--muted);
  border-radius:3px;
  font-size:11px;
}

.scanner-controls {
  display:flex;
  gap:10px;
  align-items:center;
  flex-wrap:wrap;
}

.scanner-controls span {
  font-size:10px;
  color:var(--muted);
  flex:1;
}

#scanner-video {
  width:100%;
  max-height:270px;
  border-radius:5px;
  background:var(--ink);
  margin-top:17px;
}

.heatmap-panel {
  margin-bottom:30px;
}

.heatmap-panel .section-heading {
  margin-top:0;
}

.heatmap-panel .section-heading h2 {
  font-size:22px;
}

.heatmap-panel .section-heading p {
  font-size:11px;
  margin-top:10px;
  margin-bottom:0;
}

.heatmap-panel .section-heading>.icon {
  width:27px;
  height:27px;
  color:var(--muted);
}

.table-scroll {
  overflow:auto;
  margin:24px 0 0;
}

.heatmap {
  table-layout:fixed;
  min-width:550px;
}

.heatmap th {
  background:#fff;
  border:0;
  text-align:center;
  font-size:10px;
  white-space:normal;
  color:var(--muted);
  width:auto;
}

.heatmap th:first-child {
  width:170px;
  text-align:left;
  padding-left:0;
}

.heatmap td {
  border:0;
  padding:6px;
}

.heatmap tbody th {
  padding:6px 15px 6px 0;
}

.heat-cell {
  text-align:center;
  border-radius:3px;
  padding:19px 10px;
  font-size:16px;
  font-weight:500;
}

.heat-zero {
  background:#f2f6ec;
  color:var(--muted);
}

.heat-low {
  background:#e0ebd3;
  color:var(--muted);
}

.heat-medium {
  background:#a6c58a;
  color:#fff;
}

.heat-high {
  background:#4b7650;
  color:#fff;
}

.heatmap-legend {
  display:flex;
  justify-content:flex-end;
  align-items:center;
  gap:5px;
  color:var(--muted);
  font-size:9px;
  margin-top:21px;
}

.heatmap-legend span {
  margin-inline:7px;
}

.heatmap-legend i {
  width:17px;
  height:10px;
  border-radius:2px;
}

.utilisation {
  display:flex;
  align-items:center;
  gap:9px;
}

progress {
  width:70px;
  height:6px;
  border:0;
  accent-color:#73945d;
  border-radius:2px;
}

progress::-webkit-progress-bar {
  background:#eaf1e1;
  border-radius:2px;
}

progress::-webkit-progress-value {
  background:#96b67c;
  border-radius:2px;
}

.report-footnote {
  font-size:10px;
  margin:19px 0;
}

.account-actions {
  display:flex;
  align-items:flex-start;
  gap:22px;
}

.account-actions summary {
  font-size:11px;
  color:var(--accent);
  cursor:pointer;
  padding:11px 0;
}

.inline-form {
  display:flex;
  align-items:center;
  gap:8px;
  min-width:220px;
}

.inline-form input {
  font-size:11px;
}

.report-breakdown {
  margin-bottom:29px;
}

.category-report-row {
  display:flex;
  align-items:center;
  gap:16px;
  padding:13px 0;
  border-top:1px solid var(--line);
  font-size:12px;
  color:var(--muted);
}

.category-report-row>span {
  width:100px;
}

.category-report-row progress {
  flex:1;
  height:6px;
}

.category-report-row strong {
  font-size:14px;
  font-weight:500;
  color:var(--muted);
}

.demand-row {
  display:flex;
  align-items:center;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:8px;
  padding:13px 0;
  border-top:1px solid var(--line);
  font-size:11px;
  color:var(--muted);
}

.demand-row strong {
  font-size:11px;
  font-weight:500;
  color:var(--muted);
}

.demand-row small {
  font-size:10px;
  width:100%;
  color:var(--muted);
}

.empty-state {
  grid-column:1/-1;
  text-align:center;
  padding:55px 25px;
  background:#fff;
  border:1px dashed #d8e2cb;
  border-radius:5px;
}

.empty-state>.icon {
  width:35px;
  height:35px;
  color:var(--muted);
  margin-bottom:20px;
}

.empty-state h2,.empty-state h3 {
  font-family:Georgia,serif;
  font-weight:400;
  font-size:25px;
  color:var(--muted);
  margin-bottom:14px;
}

.empty-state p {
  font-size:12px;
}

.error-panel {
  max-width:650px;
  margin:65px auto;
}

.error-panel .eyebrow {
  font-size:22px;
}

code {
  font-family:ui-monospace,SFMono-Regular,Consolas,monospace;
}

/* Legible secondary text across all screens; do not rely on pale decoration for hierarchy. */
.festival-card>p,.festival-location,.listing-note,.rail-section>p,.rail-footnote,.festival-institution {
  color:#717d65;
}

.festival-card-bottom {
  color:var(--muted);
}

.rail-section h2,.organiser-note h3 {
  color:#445b3a;
}

.vit-campus-list>a {
  color:#64775a;
}

.directory-meta,.directory-status,.source-link {
  color:#7b896b;
}

.campus-directory-info p {
  color:var(--muted);
}

.campus-directory-info>span {
  color:#6d825c;
}

.auth-story>p,.auth-steps p,.auth-panel>p,.auth-panel #email-help {
  color:var(--muted);
}

.host-line strong,.event-facts strong,.description {
  color:#677f52;
}

.event-facts small,.reservation-note,.selection-summary {
  color:var(--muted);
}

.ticket-facts strong,.ticket-person strong,.ticket-bottom strong {
  color:#5d7a46;
}

.ticket-facts small,.ticket-person small,.ticket-facts span,.ticket-person span,.ticket-bottom p {
  color:var(--muted);
}

.stat-card>span,.stat-card p,.stat-card strong small {
  color:#718b5d;
}

.stat-card>strong {
  color:#4b6c34;
}

th {
  color:#71895d;
}

td,td strong {
  color:#627e4d;
}

td small {
  color:var(--muted);
}

.category-report-row,.demand-row {
  color:var(--muted);
}

.demand-row strong {
  color:#5e7d47;
}

.demand-row small {
  color:var(--muted);
}

/* Responsive layouts */
@media(min-width:1600px) {
  main {
    padding:48px 52px;
  }

  .discovery-layout {
    grid-template-columns:minmax(0,1fr) 245px;
    gap:42px;
  }

  .festival-grid {
    grid-template-columns:repeat(3,minmax(0,1fr));
  }

  .festival-card {
    padding-inline:23px;
  }

  .filters {
    grid-template-columns:minmax(180px,1fr) 160px 135px 120px;
  }

  .filters>.button {
    grid-row:1;
    grid-column:4;
  }

  .advanced-filters {
    grid-row:2;
    grid-column:1/-1;
  }

  .noticeboard-heading h1 {
    font-size:50px;
  }

  .rail-section {
    padding:25px 22px;
  }

}

@media(max-width:1250px) {
  .sidebar {
    width:200px;
    padding-inline:13px;
  }

  .main-shell {
    margin-left:200px;
    width:calc(100% - 200px);
  }

  .nav-link {
    font-size:11px;
    padding-inline:9px;
    gap:9px;
  }

  .nav-link.active:before {
    left:-13px;
  }

  main {
    padding:33px 28px;
  }

  .topbar {
    padding-inline:28px;
  }

  .discovery-layout {
    grid-template-columns:minmax(0,1fr) 196px;
    gap:25px;
  }

  .noticeboard-heading h1 {
    font-size:38px;
  }

  .directory-number {
    font-size:48px;
  }

  .directory-callout {
    padding-left:19px;
    gap:12px;
    min-width:185px;
  }

  .directory-callout>span:last-child {
    font-size:9px;
  }

  .directory-callout strong {
    font-size:9px;
  }

  .festival-card {
    padding:20px 17px 0;
  }

  .festival-card h3 {
    font-size:26px;
  }

  .festival-card>p {
    font-size:10px;
  }

  .rail-section {
    padding:21px 16px;
  }

  .rail-section h2 {
    font-size:24px;
  }

  .campus-tabs {
    gap:17px;
  }

  .filters {
    grid-template-columns:1fr 1fr;
  }

  .search-field {
    grid-column:1/-1;
  }

  .filters>.button {
    grid-column:2;
    grid-row:3;
  }

  .advanced-filters {
    grid-column:1;
    grid-row:3;
  }

  .filters>select {
    max-width:none;
  }

  .stats-grid {
    gap:13px;
  }

  .stat-card {
    padding:20px 17px;
  }

  .stat-card>span {
    font-size:10px;
  }

  .auth-layout {
    gap:40px;
  }

  .detail-layout {
    gap:25px;
    grid-template-columns:minmax(0,1.2fr) minmax(280px,1fr);
  }

  .ticket-layout {
    grid-template-columns:1.3fr 1fr;
  }

  .ticket-facts {
    grid-template-columns:1fr 1fr;
  }

  .ticket-facts>div:last-child {
    grid-column:1/-1;
  }

  .reservation-panel {
    padding:22px;
  }

  .campus-directory-row {
    padding:23px;
  }

  .campus-directory-actions .button {
    font-size:9px;
  }

  .directory-status {
    white-space:normal;
    text-align:right;
  }

  .review-grid {
    grid-template-columns:1fr;
  }

}

@media(max-width:1050px) {
  .discovery-layout {
    grid-template-columns:1fr;
  }

  .discovery-rail {
    display:grid;
    grid-template-columns:1.2fr 1fr;
    gap:20px;
    padding-top:30px;
  }

  .rail-section {
    margin-bottom:0;
  }

  .rail-footnote {
    grid-column:1/-1;
  }

  .vit-campus-list {
    display:grid;
    grid-template-columns:1fr 1fr;
    column-gap:20px;
  }

  .vit-campus-list>a:nth-child(2) {
    border-top:1px solid #dce2d2;
  }

  .filters {
    grid-template-columns:1fr 150px 125px;
  }

  .filters .search-field {
    grid-column:1;
  }

  .filters>.button {
    grid-column:3;
    grid-row:2;
  }

  .advanced-filters {
    grid-column:1/3;
    grid-row:2;
  }

  .detail-layout {
    grid-template-columns:1fr;
  }

  .reservation-panel {
    position:static;
    max-width:580px;
  }

  .seat-grid {
    gap:7px;
  }

  .seat span {
    font-size:11px;
  }

  .ticket-layout {
    grid-template-columns:1fr;
  }

  .ticket-actions {
    max-width:580px;
  }

  .two-column {
    grid-template-columns:1fr;
  }

  .stats-grid {
    grid-template-columns:1fr 1fr;
  }

  .auth-layout {
    grid-template-columns:1fr;
    max-width:460px;
    margin-top:0;
  }

  .auth-story {
    display:none;
  }

  .booking-thumbnail {
    width:115px;
  }

  .booking-list-card {
    gap:18px;
  }

  .booking-list-info h2 {
    font-size:18px;
  }

  .booking-list-action {
    font-size:10px;
    padding-right:0;
  }

  .booking-list-action .icon {
    width:15px;
  }

  .campus-directory-actions {
    padding-left:0;
  }

  .directory-meta {
    align-items:flex-start;
  }

  .directory-meta>span {
    white-space:nowrap;
  }

  .campus-directory-info h2 {
    font-size:16px;
  }

  .campus-directory-info>span {
    font-size:9px;
  }

}

@media(max-width:760px) {
  .app-shell {
    display:block;
  }

  .sidebar {
    position:static;
    width:100%;
    padding:19px 22px 0;
    border-right:0;
    border-bottom:1px solid var(--line);
    overflow:visible;
  }

  .brand {
    font-size:24px;
    padding:0;
  }

  .brand-symbol {
    height:30px;
    width:30px;
    font-size:23px;
  }

  .workspace-label,.sidebar-bottom,.nav-label {
    display:none;
  }

  .sidebar nav {
    margin-top:0;
    display:flex;
    gap:7px;
    overflow-x:auto;
    padding:17px 0 11px;
    scrollbar-width:thin;
  }

  .nav-link {
    font-size:10px;
    gap:6px;
    margin-bottom:0;
    padding:9px 10px;
    min-height:34px;
  }

  .nav-link .icon {
    width:14px;
    height:14px;
  }

  .nav-link.active:before {
    display:none;
  }

  .main-shell {
    margin-left:0;
    width:100%;
  }

  .topbar {
    height:48px;
    min-height:48px;
    padding-inline:23px;
  }

  .breadcrumb {
    font-size:10px;
  }

  .topbar-name {
    font-size:10px;
  }

  .topbar-right .text-link {
    font-size:10px;
  }

  main {
    padding:29px 23px 35px;
  }

  .noticeboard-heading {
    margin-bottom:23px;
    gap:20px;
    padding-bottom:25px;
  }

  .noticeboard-heading h1 {
    font-size:36px;
    letter-spacing:-1px;
  }

  .noticeboard-heading .eyebrow {
    font-size:7px;
    letter-spacing:1.4px;
  }

  .noticeboard-heading p {
    font-size:11px;
  }

  .directory-callout {
    display:none;
  }

  .discovery-layout {
    display:block;
  }

  .campus-tabs {
    gap:23px;
  }

  .campus-tabs>a {
    font-size:11px;
  }

  .filters {
    grid-template-columns:minmax(120px,1fr) minmax(110px,145px) minmax(100px,125px);
  }

  .filters .search-field {
    grid-column:1/-1;
  }

  .filters>select {
    font-size:11px;
  }

  .filters>.button {
    grid-column:3;
    grid-row:2;
    min-height:44px;
  }

  .advanced-filters {
    grid-column:1/-1;
    grid-row:3;
  }

  .festival-grid {
    gap:15px;
  }

  .festival-card {
    padding:22px 20px 0;
  }

  .festival-card-top {
    margin-bottom:23px;
  }

  .festival-card h3 {
    font-size:28px;
  }

  .festival-card>p {
    font-size:11px;
  }

  .festival-location,.festival-card-bottom,.festival-card-bottom a {
    font-size:9px;
  }

  .section-heading h2 {
    font-size:18px;
  }

  .section-heading>span {
    font-size:10px;
  }

  .listing-note {
    font-size:10px;
  }

  .discovery-rail {
    display:grid;
    gap:18px;
  }

  .page-heading h1 {
    font-size:34px;
  }

  .page-heading p {
    font-size:11px;
  }

  .page-heading {
    gap:16px;
    align-items:flex-start;
  }

  .page-heading>.button {
    font-size:10px;
    min-height:35px;
    padding:8px 12px;
  }

  footer {
    padding:21px 23px;
    font-size:9px;
  }

  .panel {
    padding:23px;
  }

  .table-panel {
    padding:0;
  }

  .form-row {
    gap:15px;
  }

  .heading-actions {
    flex-direction:column;
    align-items:stretch;
    gap:8px;
  }

  .heading-actions .button {
    font-size:10px;
    min-height:35px;
    padding:8px 11px;
  }

  .stat-card {
    padding:21px;
  }

  .stats-grid {
    gap:13px;
  }

  .stat-card>strong {
    font-size:34px;
  }

  .stat-card>span {
    font-size:10px;
  }

  .stat-card p {
    font-size:9px;
  }

  .detail-copy h1 {
    font-size:33px;
  }

  .detail-copy {
    padding-top:25px;
  }

  .reservation-panel {
    max-width:none;
  }

  .poster {
    min-height:160px;
    padding:30px;
  }

  .poster>span {
    font-size:31px;
  }

  .seat-grid {
    gap:7px;
  }

  .ticket-facts {
    grid-template-columns:1fr 1.2fr .5fr;
    gap:15px;
  }

  .ticket-facts>div:last-child {
    grid-column:auto;
  }

  .ticket-body {
    padding:26px;
  }

  .ticket-body h2 {
    font-size:28px;
  }

  .ticket-bottom {
    padding:23px;
    gap:17px;
  }

  .qr {
    width:105px;
    height:105px;
  }

  .ticket-header {
    padding:19px 24px;
    font-size:8px;
  }

  .booking-list-card {
    flex-wrap:wrap;
  }

  .booking-list-action {
    margin-left:auto;
    font-size:10px;
  }

  .booking-list-info {
    min-width:150px;
  }

  .event-create-form {
    padding:23px;
  }

  .auth-panel {
    padding:28px;
  }

  .account-actions {
    flex-direction:column;
    gap:0;
  }

  .campus-directory-row {
    gap:16px;
    padding:22px;
  }

  .campus-group-mark {
    width:43px;
    height:43px;
    font-size:11px;
  }

  .campus-directory-actions {
    gap:12px;
  }

  .directory-status {
    font-size:9px;
    max-width:115px;
  }

  .directory-search .button {
    font-size:10px;
  }

  .directory-meta p {
    font-size:9px;
  }

  .campus-directory-info p {
    font-size:10px;
  }

  .source-link {
    font-size:8px;
  }

  .heatmap-panel .section-heading h2 {
    font-size:20px;
  }

  .heatmap-panel .section-heading p {
    font-size:10px;
  }

}

@media(max-width:500px) {
  .sidebar {
    padding:17px 17px 0;
  }

  .brand {
    font-size:23px;
  }

  .topbar {
    padding-inline:18px;
  }

  main {
    padding:27px 18px 30px;
  }

  .noticeboard-heading h1 {
    font-size:35px;
  }

  .noticeboard-heading p {
    font-size:11px;
  }

  .noticeboard-heading .eyebrow {
    font-size:7px;
  }

  .campus-tabs {
    gap:23px;
    margin-bottom:19px;
  }

  .campus-tabs>a {
    font-size:10px;
  }

  .campus-tabs>a>span {
    font-size:8px;
  }

  .filters {
    grid-template-columns:1fr 1fr;
  }

  .filters>.button {
    grid-column:2;
    grid-row:3;
    min-height:36px;
  }

  .advanced-filters {
    grid-column:1;
    grid-row:3;
  }

  .search-field>input {
    font-size:11px;
  }

  .festival-grid {
    grid-template-columns:1fr;
  }

  .festival-card {
    padding:25px 25px 0;
  }

  .festival-card-top {
    margin-bottom:25px;
  }

  .institute-mark {
    width:49px;
    height:46px;
    font-size:18px;
  }

  .festival-institution {
    font-size:10px;
  }

  .festival-card h3 {
    font-size:32px;
  }

  .festival-card>p {
    font-size:12px;
  }

  .festival-location {
    font-size:10px;
    padding-bottom:23px;
  }

  .festival-card-bottom,.festival-card-bottom a {
    font-size:10px;
  }

  .festival-card-bottom {
    padding:17px 0;
  }

  .discovery-rail {
    grid-template-columns:1fr;
  }

  .rail-section {
    padding:24px;
  }

  .rail-section h2 {
    font-size:27px;
  }

  .rail-section>p {
    font-size:12px;
  }

  .vit-campus-list>a {
    font-size:11px;
  }

  .rail-section .eyebrow {
    font-size:9px;
  }

  .rail-link {
    font-size:11px;
  }

  .organiser-note h3 {
    font-size:16px;
  }

  .organiser-note .button {
    font-size:11px;
  }

  .rail-footnote {
    font-size:10px;
    padding:0 2px;
  }

  .section-heading h2 {
    font-size:17px;
  }

  .section-heading {
    gap:12px;
  }

  .page-heading h1 {
    font-size:31px;
  }

  .form-row {
    grid-template-columns:1fr;
  }

  .ticket-facts {
    grid-template-columns:1fr 1fr;
  }

  .ticket-facts>div:last-child {
    grid-column:1/-1;
  }

  .ticket-facts .big-seat {
    font-size:27px;
  }

  .ticket-bottom {
    flex-wrap:wrap;
  }

  .ticket-body h2 {
    font-size:27px;
  }

  .stats-grid {
    gap:10px;
  }

  .stat-card {
    padding:19px 16px;
  }

  .stat-card>strong {
    font-size:32px;
  }

  .stat-card>span {
    font-size:9px;
  }

  .stat-card p {
    font-size:8px;
  }

  .reservation-panel {
    padding:23px;
  }

  .seat-grid {
    gap:5px;
  }

  .seat span {
    font-size:9px;
  }

  .booking-thumbnail {
    display:none;
  }

  .booking-list-info h2 {
    font-size:20px;
  }

  .membership-card {
    gap:15px;
  }

  .membership-card h2 {
    font-size:18px;
  }

  .university-monogram {
    width:42px;
    height:47px;
    font-size:22px;
  }

  .directory-search {
    flex-wrap:wrap;
  }

  .directory-search .search-field {
    min-width:100%;
  }

  .directory-search .button {
    margin-left:auto;
    font-size:11px;
  }

  .directory-meta {
    flex-direction:column;
    gap:7px;
  }

  .directory-meta p {
    font-size:10px;
  }

  .campus-directory-row {
    flex-wrap:wrap;
    gap:14px;
    padding:23px 20px;
  }

  .campus-directory-info {
    flex-basis:calc(100% - 61px);
  }

  .campus-directory-info h2 {
    font-size:19px;
  }

  .campus-directory-info>span {
    font-size:10px;
  }

  .campus-directory-info p {
    font-size:11px;
  }

  .campus-directory-actions {
    width:100%;
    display:grid;
    grid-template-columns:1fr 1fr;
    align-items:center;
    padding-top:10px;
  }

  .campus-directory-actions .text-link {
    justify-self:end;
    font-size:11px;
  }

  .source-link {
    font-size:9px;
    grid-column:1/-1;
  }

  .directory-status {
    display:none;
  }

  .auth-panel {
    padding:25px;
  }

  .auth-panel h1 {
    font-size:30px;
  }

  footer {
    padding-inline:18px;
    font-size:8px;
  }

  .report-footnote {
    font-size:9px;
  }

  .review-card .form-bottom {
    align-items:flex-start;
    flex-direction:column;
  }

}

@media(prefers-reduced-motion:reduce) {
  html {
    scroll-behavior:auto;
  }

  * {
    transition:none!important;
  }

}

.ticket-header {
  color:#e4ebdf;
}

.festival-card>p,.festival-location,.listing-note,.rail-section>p,.rail-footnote,.festival-institution {
  color:var(--muted);
}

.campus-directory-info p {
  color:var(--muted);
}

.festival-card h3,.campus-directory-info h2,.auth-story h1,.auth-panel h1 {
  color:var(--ink);
}

/* The primary screen favours content over a marketing header. */
.noticeboard-heading h1 {
  font-size:43px;
  margin-bottom:13px;
}

.noticeboard-heading h1>.title-period {
  color:var(--accent);
}

.noticeboard-heading {
  padding-bottom:27px;
}

.noticeboard-heading p {
  font-size:13px;
}

.festival-card>p {
  font-size:12px;
}

.festival-institution,.festival-location,.festival-card-bottom,.festival-card-bottom a {
  font-size:10px;
}

.campus-tabs>a {
  font-size:12px;
}

.campus-tabs>a>span {
  font-size:9px;
}

.listing-note {
  font-size:11px;
}

.rail-section>p,.vit-campus-list>a {
  font-size:11px;
}

.rail-footnote {
  font-size:10px;
}

.rail-section .eyebrow {
  font-size:9px;
}

.breadcrumb {
  font-size:12px;
}

.category-tag {
  font-size:10px;
}

.nav-link {
  font-size:12px;
}

@media(max-width:1250px) {
  .noticeboard-heading h1 {
    font-size:38px;
  }

  .festival-card>p {
    font-size:11px;
  }

  .campus-tabs>a {
    font-size:11px;
  }

}

@media(max-width:760px) {
  .noticeboard-heading h1 {
    font-size:36px;
  }

  .noticeboard-heading p {
    font-size:12px;
  }

  .nav-link {
    font-size:10px;
  }

  .breadcrumb {
    font-size:10px;
  }

}

@media(max-width:500px) {
  .noticeboard-heading h1 {
    font-size:33px;
  }

  .noticeboard-heading p {
    font-size:11px;
  }

  .festival-card>p {
    font-size:12px;
  }

  .festival-institution,.festival-location,.festival-card-bottom,.festival-card-bottom a {
    font-size:11px;
  }

  .rail-section>p,.vit-campus-list>a {
    font-size:12px;
  }

}

@media(max-width:760px) {
  .sidebar nav {
    scrollbar-width:none;
  }

  .sidebar nav::-webkit-scrollbar {
    display:none;
  }

}

@media(max-width:500px) {
  .campus-tabs {
    gap:15px;
    scrollbar-width:none;
  }

  .campus-tabs::-webkit-scrollbar {
    display:none;
  }

}

/* Preserved team components: static styles comply with the site CSP. */
.component-style-1 { margin-bottom:35px }
.component-style-2 { margin-top:20px }
.component-style-3 { margin-bottom:18px }
.component-style-4 { display:flex;justify-content:space-between;align-items:center;margin-bottom:14px }
.component-style-5 { margin-bottom:4px }
.component-style-6 { font-size:10px;color:var(--muted) }
.component-style-7 { font-size:11px }
.component-style-8 { display:flex;gap:8px;margin-top:12px }
.component-style-9 { flex:1;font-size:11px }
.component-style-10 { margin-top:10px }
.component-style-11 { margin-top:24px }
.component-style-12 { margin-top:0 }
.component-style-13 { margin:0;font-size:12px;color:var(--ink) }
.component-style-14 { font-size:9px;color:var(--muted) }
.component-style-15 { margin-bottom:24px }
.component-style-16 { margin-top:14px }
.component-style-17 { font-size:11px;color:var(--purple);cursor:pointer }
.component-style-18 { margin-top:12px }
.component-style-19 { margin-bottom:28px }
.component-style-20 { margin-bottom:14px }
.component-style-21 { flex:1 }
.component-style-22 { font-size:10px;color:#b06f73 }
.component-style-23 { grid-column:1/-1 }
/* Team event tools use the same noticeboard visual language. */
:root { --purple-soft:var(--accent-soft); }
.event-grid { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px; }
.event-card { display:flex;flex-direction:column;border:1px solid var(--line);background:var(--paper);border-radius:5px;overflow:hidden; }
.event-card:hover { border-color:#9fac92; }
.event-card .poster { min-height:115px;padding:23px;border:0;border-bottom:1px solid var(--line);border-radius:0; }
.event-card .poster>span { font-size:23px; }
.card-content { padding:20px;display:flex;flex-direction:column;flex:1; }
.card-meta,.card-bottom { display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:10px;color:var(--muted); }
.card-meta { margin-bottom:15px; }
.card-content h3 { font-size:18px; }
.card-university,.card-venue { font-size:11px;color:var(--muted);margin-bottom:10px; }
.card-university .icon,.card-venue .icon { width:14px;height:14px;margin-right:5px; }
.card-bottom { margin-top:auto;padding-top:16px;border-top:1px solid var(--line); }
.card-action { color:var(--accent);font-size:10px; }
.card-action .icon { width:13px;height:13px; }
.save-btn,.share-btn { display:inline-flex;align-items:center;justify-content:center;width:33px;height:33px;border:1px solid var(--line);border-radius:4px;background:var(--paper);color:var(--muted);cursor:pointer;flex-shrink:0; }
.save-btn svg,.share-btn svg { width:15px;height:15px; }
.save-btn.saved { color:var(--accent);border-color:#b78270;background:var(--accent-soft); }
.event-title-row,.event-actions { display:flex;align-items:flex-start;justify-content:space-between;gap:12px; }
.event-title-row h1 { flex:1; }
.event-actions { padding-top:16px; }
.search-autocomplete { position:relative; }
.autocomplete-dropdown { position:absolute;inset:calc(100% + 5px) 0 auto;z-index:30;background:var(--paper);border:1px solid var(--line);border-radius:4px;overflow:hidden; }
.autocomplete-item { display:flex;align-items:center;gap:9px;padding:12px;font-size:11px;border-bottom:1px solid var(--line); }
.autocomplete-item:hover { background:var(--accent-soft); }
.autocomplete-item-category,.autocomplete-item-uni { font-size:9px;color:var(--muted); }
.autocomplete-item-uni { margin-left:auto; }
.countdown-wrap { position:relative;display:flex;align-items:center;justify-content:center;width:120px;height:120px;margin:20px auto; }
.countdown-ring { position:absolute;inset:0;transform:rotate(-90deg); }
.countdown-ring-bg { fill:none;stroke:var(--line);stroke-width:3px; }
.countdown-ring-progress { fill:none;stroke:var(--green);stroke-width:3px;stroke-linecap:round;transition:stroke-dashoffset .9s linear; }
.countdown-wrap .countdown { margin:0;z-index:1;font-size:31px; }
.countdown-ring-progress.urgent { stroke:var(--accent); }
.seat-grid:has(.seat-row-label) { grid-template-columns:18px repeat(10,minmax(0,1fr)); }
.seat-row-label { grid-column:1;display:flex;align-items:center;justify-content:center;font-size:9px;color:var(--muted); }
.notif-dot { display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent);margin-left:auto; }
#toast-container { position:fixed;top:20px;right:20px;z-index:100;display:flex;flex-direction:column;gap:10px;max-width:360px;pointer-events:none; }
.toast { display:flex;align-items:center;gap:10px;background:var(--paper);border:1px solid var(--line);border-left:3px solid var(--green);padding:14px 17px;font-size:12px;pointer-events:auto;box-shadow:0 3px 18px #00000012; }
.toast.error { border-left-color:var(--accent); }
.toast-close { border:0;background:transparent;color:inherit;font-size:20px;margin-left:auto; }
.toast.out { animation:toast-dismiss .15s forwards; }
@keyframes toast-dismiss { to { opacity:0; } }
.bottom-nav { display:none; }
.feedback-panel,.waitlist-section { border-top:1px solid var(--line);margin-top:24px;padding-top:22px; }
.star-rating { display:flex;gap:7px;margin:10px 0; }
.star-label { position:relative;cursor:pointer; }
.star-label input { position:absolute;opacity:0;inset:0;width:100%;height:100%; }
.star-label input:focus-visible+.star-btn { outline:2px solid var(--accent); }
.star-btn,.stars-static .star { font-size:25px;color:#c5c9bf; }
.star-btn.lit,.stars-static .star.full,.stars-static .star.half { color:#a77f23; }
.stars-static { display:flex;gap:4px; }
.rating-display { display:flex;align-items:center;gap:13px;margin:15px 0; }
.rating-label,.feedback-comment { font-size:11px;color:var(--muted); }
.peer-notice,.series-badge { border:1px solid var(--line);background:#eff3e9;padding:11px 14px;border-radius:4px;font-size:11px;margin:16px 0; }
.peer-notice .icon { width:15px;height:15px;margin-right:6px; }
.announcement-card { display:flex;align-items:flex-start;gap:13px;margin-bottom:14px; }
.announcement-card>.icon { color:var(--accent); }
.attendance-wall { display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:17px; }
.attendance-thumb { border:1px solid var(--line);border-radius:4px;overflow:hidden;background:var(--paper); }
.attendance-thumb .poster { border:0;border-radius:0;min-height:100px; }
.attendance-label { padding:12px;font-size:11px; }
:root[data-theme="dark"] { --ink:#ededed;--muted:#aaa;--line:#333;--bg:#0b0b0b;--paper:#161616;--accent:#e2aa89;--accent-soft:#2a211d;--green:#91b58a; }
:root[data-theme="dark"] .sidebar,:root[data-theme="dark"] .topbar,:root[data-theme="dark"] .panel,:root[data-theme="dark"] .festival-card,:root[data-theme="dark"] .campus-directory,:root[data-theme="dark"] .search-field,:root[data-theme="dark"] input,:root[data-theme="dark"] select,:root[data-theme="dark"] textarea,:root[data-theme="dark"] .digital-ticket,:root[data-theme="dark"] .stat-card,:root[data-theme="dark"] .empty-state { background:var(--paper);color:var(--ink);border-color:var(--line); }
:root[data-theme="dark"] main h1,:root[data-theme="dark"] main h2,:root[data-theme="dark"] main h3,:root[data-theme="dark"] .festival-card h3,:root[data-theme="dark"] .campus-directory-info h2 { color:var(--ink); }
:root[data-theme="dark"] .primary { background:#ededed;color:#161616; }
:root[data-theme="dark"] .secondary { background:var(--paper);color:var(--ink);border-color:var(--line); }
:root[data-theme="dark"] .rail-section,:root[data-theme="dark"] .poster,:root[data-theme="dark"] .info-box,:root[data-theme="dark"] .peer-notice,:root[data-theme="dark"] .series-badge,:root[data-theme="dark"] .heat-zero { background:#202020;border-color:var(--line);color:#bdbdbd; }
:root[data-theme="dark"] p,:root[data-theme="dark"] label,:root[data-theme="dark"] small,:root[data-theme="dark"] td,:root[data-theme="dark"] td strong,:root[data-theme="dark"] .festival-institution,:root[data-theme="dark"] .festival-location,:root[data-theme="dark"] .listing-note,:root[data-theme="dark"] .rail-footnote,:root[data-theme="dark"] .campus-directory-info>span { color:#aaa; }
:root[data-theme="dark"] .nav-link { color:#bcbcbc; }
:root[data-theme="dark"] .nav-link.active,:root[data-theme="dark"] .nav-link:hover { background:var(--accent-soft);color:var(--accent); }
:root[data-theme="dark"] .brand-symbol,:root[data-theme="dark"] .ticket-header { background:#303030;color:#f5f5f5; }
:root[data-theme="dark"] .category-tag,:root[data-theme="dark"] .stage,:root[data-theme="dark"] th { background:#202020;color:#bdbdbd;border-color:var(--line); }
:root[data-theme="dark"] .institute-mark,:root[data-theme="dark"] .campus-group-mark { background:#303030;color:#ededed;filter:none; }
:root[data-theme="dark"] .heat-low { background:#425b39; }
:root[data-theme="dark"] .heat-medium { background:#5c7b50; }
@media(max-width:1250px) { .event-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:760px) { .bottom-nav { position:fixed;bottom:0;left:0;right:0;z-index:20;display:flex;background:var(--paper);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom); }.bottom-nav-item { display:flex;flex:1;flex-direction:column;align-items:center;gap:5px;padding:10px 5px;font-size:9px;color:var(--muted); }.bottom-nav~* { margin-bottom:60px; }.main-shell:has(+.bottom-nav) { padding-bottom:60px; }.app-shell:has(~.bottom-nav) .main-shell { padding-bottom:60px; } }
@media(max-width:500px) { .event-grid { grid-template-columns:1fr; } }

:root[data-theme="dark"] .ticket-facts strong,:root[data-theme="dark"] .ticket-facts span,:root[data-theme="dark"] .ticket-facts small,:root[data-theme="dark"] .ticket-person strong,:root[data-theme="dark"] .ticket-person span,:root[data-theme="dark"] .ticket-person small,:root[data-theme="dark"] .ticket-bottom strong,:root[data-theme="dark"] .ticket-bottom p { color:#bfbfbf; }
:root[data-theme="dark"] .ticket-facts .big-seat { color:var(--accent); }
/* Match light-mode legibility in the team's retained dark theme. */
:root[data-theme="dark"] .directory-number { color:#dedede; }
:root[data-theme="dark"] .breadcrumb,:root[data-theme="dark"] .topbar-name,:root[data-theme="dark"] .workspace-label,:root[data-theme="dark"] .nav-label,:root[data-theme="dark"] .eyebrow { color:#aaa; }
:root[data-theme="dark"] .noticeboard-heading .eyebrow { color:var(--accent); }
:root[data-theme="dark"] .directory-callout>span:last-child,:root[data-theme="dark"] .section-heading>span,:root[data-theme="dark"] .campus-tabs>a,:root[data-theme="dark"] .vit-campus-list>a,:root[data-theme="dark"] .advanced-filters { color:#bcbcbc; }
:root[data-theme="dark"] .campus-tabs>a.active { color:var(--accent); }
:root[data-theme="dark"] .vit-campus-list>a,:root[data-theme="dark"] .festival-card-bottom,:root[data-theme="dark"] .campus-directory-row { border-color:var(--line); }
:root[data-theme="dark"] .festival-card-bottom,:root[data-theme="dark"] .directory-meta,:root[data-theme="dark"] .directory-status,:root[data-theme="dark"] .source-link { color:#aaa; }

/* Show the destination theme with a recognisable icon and a visible label. */
.theme-toggle { display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:36px;padding:7px 10px;border:1px solid var(--line);border-radius:5px;background:transparent;color:var(--muted);font-size:11px;white-space:nowrap; }
.theme-toggle:hover { background:var(--accent-soft);color:var(--accent); }
.topbar-right .theme-toggle .icon { width:17px;height:17px; }
.theme-toggle .sun-icon { display:none; }
:root[data-theme="dark"] .theme-toggle .sun-icon { display:block; }
:root[data-theme="dark"] .theme-toggle .moon-icon { display:none; }
.festival-card-bottom { justify-content:flex-end; }
.bookable-card .festival-card-bottom { justify-content:space-between; }
:root[data-theme="dark"] { color-scheme:dark; }
:root[data-theme="light"] { color-scheme:light; }
:root[data-theme="dark"] footer,:root[data-theme="dark"] .icon-button { color:var(--muted); }
:root[data-theme="dark"] .avatar { background:#303030;color:var(--ink); }

.programme-layout { grid-template-columns:minmax(0,1fr); }
.practice-notice { display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;padding:12px 16px;margin:0 0 24px;background:var(--accent-soft);border-left:3px solid var(--accent);color:var(--ink);font-size:12px; }
.practice-notice strong { color:var(--accent); }
.badge.practice { background:var(--accent-soft);color:var(--accent);border-color:var(--line); }
.source-details { border-block:1px solid var(--line);padding:14px 0;margin:20px 0; }
.source-details summary { cursor:pointer;font-size:12px;color:var(--muted); }
.source-details p { margin:12px 0; }

/* Keep the remaining search controls together after removing advanced filters. */
.filters { grid-template-columns:minmax(0,1fr) 145px 125px auto; }
.filters .search-field { grid-column:auto; }
.filters>.button { grid-column:auto;grid-row:auto; }
@media(max-width:1150px) {
 .filters { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
 .filters .search-field { grid-column:1/-1; }
 .filters>.button { grid-column:1/-1;justify-self:end; }
}
@media(max-width:480px) {
 .filters { grid-template-columns:minmax(0,1fr); }
 .filters .search-field,.filters>.button { grid-column:1; }
 .filters>.button { justify-self:stretch; }
}

.filters.programme-filters { grid-template-columns:minmax(0,1fr) 145px auto; }
.programme-filters .search-field { grid-column:auto; }
.programme-filters>.button { grid-column:auto;grid-row:auto; }
@media(max-width:600px) {
 .filters.programme-filters { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
 .programme-filters .search-field { grid-column:1/-1; }
}
:root[data-theme="dark"] .event-facts strong,:root[data-theme="dark"] .event-facts small,:root[data-theme="dark"] .back-link,:root[data-theme="dark"] .seat-preview,:root[data-theme="dark"] .seat-map-label { color:var(--muted); }
:root[data-theme="dark"] .free-label { background:#252525;color:var(--ink); }
:root[data-theme="dark"] .seat span { background:#202820;color:#e0eed9;border-color:#7c9870; }
:root[data-theme="dark"] .seat.available:not(:has(input:checked)):hover span { background:#30402d;border-color:#abc99a; }
:root[data-theme="dark"] .seat input:checked+span { background:var(--accent);color:#17120f;border-color:var(--accent);font-weight:700; }
:root[data-theme="dark"] .seat input:focus-visible+span { outline-color:#f4c6a8; }
:root[data-theme="dark"] .seat.held span,:root[data-theme="dark"] .seat.confirmed span { background:#303030;color:#bcbcbc;border-color:#656565;border-style:dashed; }
:root[data-theme="dark"] .seat-legend .available { background:#202820;border:1px solid #7c9870; }
:root[data-theme="dark"] .seat-legend .selected { background:var(--accent);border:1px solid var(--accent); }
:root[data-theme="dark"] .seat-legend .unavailable { background:#303030;border:1px dashed #858585; }

:root[data-theme="dark"] .primary:hover { background:#d3d3d3;color:#111; }
:root[data-theme="dark"] .secondary:hover { background:#252525;color:var(--ink);border-color:#555; }

/* University administration */
.admin-heading p { margin-bottom:0; }
.admin-stats .stat-card { display:block; }
.admin-stats .stat-card:hover { border-color:var(--accent); }
.admin-section-heading { display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px; }
.admin-section-heading h2 { margin:0;font-size:17px; }
.admin-section-heading>.text-link { font-size:11px;white-space:nowrap; }
.admin-count { display:inline-flex;align-items:center;justify-content:center;min-width:23px;padding:2px 7px;margin-left:5px;border:1px solid var(--line);border-radius:4px;color:var(--muted);font-size:11px;font-weight:500; }
.admin-search { display:flex;align-items:center;gap:10px;margin:0 0 16px; }
.admin-search .search-field { flex:1;max-width:430px; }
.admin-requests { margin-bottom:25px; }
.admin-request-table th { white-space:nowrap; }
.admin-request-table td { vertical-align:middle; }
.admin-review-actions { display:flex;gap:8px; }
.admin-review-actions form { margin:0; }
.admin-detail-grid { display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:25px;align-items:start; }
.admin-event-row { display:flex;align-items:center;gap:14px;padding:16px 0;border-top:1px solid var(--line); }
.admin-event-row:hover .admin-event-info>strong { color:var(--accent); }
.admin-event-date { width:41px;flex-shrink:0;text-align:center;border:1px solid var(--line);border-radius:4px;padding:5px 3px; }
.admin-event-date strong { display:block;font-size:18px;font-weight:500;line-height:1.2; }
.admin-event-date small { font-size:10px;color:var(--muted); }
.admin-event-info { flex:1;min-width:0; }
.admin-event-info>strong { display:block;font-size:12px;font-weight:550; }
.admin-event-info>small { display:block;font-size:10px;color:var(--muted);margin-top:5px; }
.admin-booking-row { display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:17px 0;border-top:1px solid var(--line); }
.admin-booking-row strong { font-size:12px;font-weight:550; }
.admin-booking-row p { font-size:11px;margin:4px 0; }
.admin-booking-row small { color:var(--muted);font-size:10px; }
.admin-empty { display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:36px 15px;color:var(--muted);text-align:center; }
.admin-empty p { margin:0; }
@media(max-width:1100px) { .admin-detail-grid { grid-template-columns:minmax(0,1fr); } }
@media(max-width:760px) { .admin-heading { align-items:flex-start; }.admin-heading .heading-actions { flex-wrap:wrap; }.admin-section-heading { flex-wrap:wrap; }.admin-event-row { gap:10px; }.admin-event-row .badge { font-size:8px; }.admin-search { flex-wrap:wrap; }.admin-search .search-field { min-width:180px; } }

:root[data-theme="dark"] .stat-card>strong { color:var(--ink); }
:root[data-theme="dark"] .stat-card>span { color:var(--muted); }
.sidebar:has(.admin-nav-link) nav { margin-top:25px; }
.sidebar:has(.admin-nav-link) .nav-link { padding-block:8px;margin-bottom:2px; }
.sidebar:has(.admin-nav-link) .nav-label { margin:18px 12px 8px; }
.sidebar:has(.admin-nav-link) .nav-label:first-child { margin-top:0; }
.sidebar:has(.admin-nav-link) .sidebar-bottom { padding-top:20px; }
.sidebar:has(.admin-nav-link) .account { padding-top:14px; }
@media(max-width:760px) { .sidebar:has(.admin-nav-link) nav { margin-top:0; } }

.live-controls { display:flex;justify-content:flex-end;align-items:center;gap:14px;margin:-8px 0 14px; }
.live-controls small { color:var(--muted);font-size:10px; }
.live-controls .text-button { font-size:11px; }
.live-controls .icon { width:13px;height:13px;margin-left:4px; }

/* Keep report intensities legible within the neutral dark palette. */
:root[data-theme="dark"] td { border-color:var(--line); }
:root[data-theme="dark"] .heat-cell { color:var(--ink); }
:root[data-theme="dark"] .heat-low { background:#353535; }
:root[data-theme="dark"] .heat-medium { background:#4a4a4a; }
:root[data-theme="dark"] .heat-high { background:#666;color:#fff; }
:root[data-theme="dark"] progress { background:#303030;accent-color:#bdbdbd; }
:root[data-theme="dark"] progress::-webkit-progress-bar { background:#303030; }
:root[data-theme="dark"] progress::-webkit-progress-value { background:#bdbdbd; }
:root[data-theme="dark"] progress::-moz-progress-bar { background:#bdbdbd; }
:root[data-theme="dark"] .demand-row>span,:root[data-theme="dark"] .demand-row>strong,:root[data-theme="dark"] .category-report-row>strong { color:var(--ink); }

/* Shared dark surfaces and readable semantic states across student/staff screens. */
:root[data-theme="dark"] { --line:#505050; }
:root[data-theme="dark"] .muted,
:root[data-theme="dark"] .auth-story>p,
:root[data-theme="dark"] .auth-steps p,
:root[data-theme="dark"] .auth-panel>p,
:root[data-theme="dark"] .auth-panel #email-help,
:root[data-theme="dark"] .stat-card p,
:root[data-theme="dark"] .stat-card strong small,
:root[data-theme="dark"] .campus-tabs>a>span { color:var(--muted); }
:root[data-theme="dark"] .host-line strong,
:root[data-theme="dark"] .event-facts strong,
:root[data-theme="dark"] .description,
:root[data-theme="dark"] .rail-section h2,
:root[data-theme="dark"] .organiser-note h3 { color:var(--ink); }
:root[data-theme="dark"] input::placeholder,
:root[data-theme="dark"] textarea::placeholder { color:#aaa;opacity:1; }
:root[data-theme="dark"] :is(input,select,textarea):focus { outline-color:var(--accent);border-color:var(--accent); }
:root[data-theme="dark"] :is(a,button,summary):focus-visible { outline:2px solid var(--accent);outline-offset:3px; }
:root[data-theme="dark"] .badge,
:root[data-theme="dark"] .tab span,
:root[data-theme="dark"] .seat-label { background:#272727;color:#dedede;border-color:#626262; }
:root[data-theme="dark"] :is(.badge.confirmed,.badge.verified,.badge.checked_in,.badge.active,.badge.published,.flash) { background:#1d3025;color:#b6e3bd;border-color:#6d9e76; }
:root[data-theme="dark"] :is(.badge.held,.badge.pending) { background:#352b18;color:#f0d08b;border-color:#a58a4e; }
:root[data-theme="dark"] :is(.badge.cancelled,.badge.rejected,.badge.inactive,.flash.error,.danger) { background:#38221f;color:#ffc2b3;border-color:#ad786c; }
:root[data-theme="dark"] .badge.practice { background:var(--accent-soft);color:var(--accent);border-color:var(--accent); }
:root[data-theme="dark"] .flash :is(p,small,strong),
:root[data-theme="dark"] .danger :is(span,small) { color:inherit; }
:root[data-theme="dark"] .light { background:#303030;color:var(--ink); }
:root[data-theme="dark"] .star-btn.lit,
:root[data-theme="dark"] .stars-static :is(.star.full,.star.half) { color:#edc365; }

:root[data-theme="dark"] .skip-link { background:var(--accent);color:#17120f; }

/* Restrained glass on navigation, the reservation card and transient notices. */
:root {
  --glass-surface:rgba(255,255,255,.88);
  --glass-highlight:rgba(255,255,255,.65);
  --glass-edge:rgba(64,76,69,.22);
  --glass-shadow:0 8px 28px rgba(30,40,32,.06);
}
:root[data-theme="dark"] {
  --glass-surface:rgba(24,24,24,.92);
  --glass-highlight:rgba(255,255,255,.055);
  --glass-edge:rgba(255,255,255,.25);
  --glass-shadow:0 8px 28px rgba(0,0,0,.18);
}
@supports ((backdrop-filter:blur(16px)) or (-webkit-backdrop-filter:blur(16px))) {
  :root .topbar,
  :root .bottom-nav,
  :root .reservation-panel,
  :root .toast {
    background:linear-gradient(135deg,var(--glass-highlight),transparent 58%),var(--glass-surface);
    -webkit-backdrop-filter:blur(16px) saturate(115%);
    backdrop-filter:blur(16px) saturate(115%);
    border-color:var(--glass-edge);
    box-shadow:inset 0 1px 0 var(--glass-highlight),var(--glass-shadow);
  }
  :root .reservation-panel { border-radius:14px; }
  :root .toast { border-radius:12px;border-left-color:var(--green); }
  :root .toast.error { border-left-color:var(--accent); }
  :root[data-theme="dark"] .topbar,
  :root[data-theme="dark"] .reservation-panel {
    background:linear-gradient(135deg,var(--glass-highlight),transparent 58%),var(--glass-surface);
    border-color:var(--glass-edge);
  }
}
@media (prefers-reduced-transparency:reduce) {
  :root[data-theme] :is(.topbar,.bottom-nav,.reservation-panel,.toast) {
    background:var(--paper);
    -webkit-backdrop-filter:none;
    backdrop-filter:none;
    border-color:var(--line);
    box-shadow:none;
  }
}
@media print {
  :root[data-theme] :is(.reservation-panel,.toast) { background:#fff;-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none; }
}
