/* Restrained navy, slate and muted teal. Shared public/staff design tokens. */
:root { --ink:#263746; --muted:#617180; --accent:#315e69; --accent-dark:#244852; --navy:#203646; --surface:#fff; --canvas:#f4f6f7; --line:#dce4e7; --soft:#edf2f3; font-family:system-ui,-apple-system,"Segoe UI",sans-serif; color:var(--ink); background:var(--canvas); color-scheme:light; }
body { line-height:1.5; }
[hidden] { display:none !important; }
a {color:var(--accent);}
button,.button { display:inline-flex; justify-content:center; align-items:center; gap:8px; border:1px solid transparent; border-radius:7px; background:var(--accent); color:white; padding:10px 16px; min-height:42px; font-weight:600; text-decoration:none; touch-action:manipulation; }
button:hover,.button:hover {background:var(--accent-dark);text-decoration:none;}
button.secondary,.button.secondary {background:white; color:var(--ink); border-color:#cbd6dc;}
button.secondary:hover,.button.secondary:hover {background:var(--soft);}
button.danger {background:#fff; color:#93443e; border-color:#e4cfcb;}
button.danger:hover {background:#faf0ee;}
button:disabled {opacity:.5;cursor:not-allowed;}
input,select,textarea {color:var(--ink); background:white; border:1px solid #bdcbd2; min-height:42px; border-radius:6px; font:inherit;}
input[type=checkbox] {min-height:18px; accent-color:var(--accent);}
input[type=file] {padding:10px;}
input::placeholder {color:#71818e;}
:focus-visible {outline:3px solid #567d8e;outline-offset:3px;}
h1,h2,h3 {color:var(--navy);line-height:1.25;text-wrap:balance;}
h1 {font-size:clamp(25px,3vw,34px);margin-bottom:10px;letter-spacing:-.6px;}
h2 {font-size:20px;} h3 {font-size:16px;}
p {text-wrap:pretty;}
.muted,.helper-text,.eyebrow {color:var(--muted);}
.helper-text {font-size:13px; margin:8px 0;}
.eyebrow {font-size:12px;text-transform:uppercase;letter-spacing:1.2px;font-weight:700;margin-bottom:12px;}
.skip-link {position:fixed;left:14px;top:-100px;padding:12px;background:white;color:var(--ink);z-index:20;}
.skip-link:focus {top:10px;}
.app-header {height:76px;padding:0 28px;background:white;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:16px;}
.brand {display:flex;gap:12px;align-items:center;color:var(--navy);font-weight:750;text-decoration:none;line-height:1.2;}
.brand:hover {text-decoration:none;}
.brand-symbol {display:grid;place-items:center;width:40px;height:40px;border-radius:9px;background:var(--navy);color:white;font-size:15px;}
.brand small {display:block;font-size:11px;font-weight:500;color:var(--muted);margin-top:5px;}
.header-start,.header-links {display:flex;align-items:center;gap:22px;min-width:0;}
.header-links a {font-size:14px;color:var(--ink);}
.header-links a[aria-current=page] {color:var(--accent);font-weight:700;}
.account-name {font-size:13px;color:var(--muted);}
.workspace {display:grid;grid-template-columns:220px minmax(0,1fr);min-height:calc(100vh - 76px);}
.app-navigation {background:white;border-right:1px solid var(--line);padding:20px 14px;position:sticky;top:0;height:calc(100vh - 76px);overflow-y:auto;}
.nav-group {margin-bottom:20px;}
.nav-group h2 {font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--muted);margin:8px 12px;}
.nav-group a {display:block;padding:8px 12px;border-radius:6px;color:#425566;font-size:14px;margin:3px 0;}
.nav-group a:hover {background:var(--soft);text-decoration:none;}
.nav-group a[aria-current=page] {background:#e7eff0;color:#244f58;font-weight:700;box-shadow:inset 3px 0 #476d76;}
.menu-button {display:none;}
.content {padding:30px;min-width:0;max-width:1500px;width:100%;margin:0 auto;}
.public-content {max-width:1150px;padding:42px 28px;margin:0 auto;}
.page-heading {display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:25px;}
.page-heading p {max-width:680px;margin:0;color:var(--muted);}
.breadcrumbs {font-size:12px;color:var(--muted);margin-bottom:12px;}
.panel,.card {border-color:var(--line);border-radius:10px;box-shadow:none;}
.panel {padding:22px;margin-bottom:22px;}
.panel-heading,.section-heading {display:flex;justify-content:space-between;gap:16px;align-items:center;flex-wrap:wrap;margin-bottom:16px;}
.panel-heading h2,.section-heading h2 {margin:0;}
.cards {grid-template-columns:repeat(auto-fit,minmax(160px,1fr));margin-bottom:24px;}
.card h2 {font-size:28px;margin:0;font-variant-numeric:tabular-nums;}
.card p {margin-bottom:0;color:var(--muted);font-size:13px;}
.list-toolbar {display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap;margin:18px 0;}
.list-toolbar .search-field {flex:1;min-width:190px;}
.list-toolbar label:not(.search-field) {min-width:130px;}
.list-toolbar .page-size {min-width:95px;}
.list-meta {display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:13px;color:var(--muted);margin:14px 0;}
.pager {display:flex;gap:8px;} .pager button {min-height:36px;padding:6px 12px;font-size:13px;}
.table-wrap {border-radius:6px;overflow-x:auto;}
table {font-variant-numeric:tabular-nums;}
th {font-size:11px;text-transform:uppercase;letter-spacing:.4px;background:#f4f7f8;color:#596c7c;white-space:nowrap;}
td {font-size:13px;padding:13px 10px;vertical-align:top;}
tbody tr:hover {background:#fafcfc;}
td .secondary,td button {font-size:12px;padding:5px 9px;min-height:32px;}
.row-actions {white-space:nowrap;position:relative;}
.row-actions summary {padding:5px 8px;cursor:pointer;font-size:12px;}
.row-actions[open] {white-space:normal;}
.row-actions .action-links {display:flex;flex-wrap:wrap;gap:7px;max-width:210px;padding:6px 0;}
.status-badge {display:inline-block;border:1px solid #d2dde1;background:#f2f5f6;color:#526674;border-radius:5px;padding:3px 8px;font-size:11px;font-weight:650;}
.status-scheduled,.status-accessible {background:#edf4f2;border-color:#c9ddd6;color:#365f53;}
.status-cancelled {background:#faf0ee;border-color:#e7d4cf;color:#8a4e44;}
.status-completed {background:#edf0f6;border-color:#d3dae6;color:#4f607a;}
.editor {background:white;border:1px solid var(--line);border-radius:10px;margin:20px 0;}
.editor > summary {padding:18px 22px;color:var(--navy);font-weight:650;cursor:pointer;}
.editor > .editor-body {padding:0 22px 22px;}
.editor[open] > summary {border-bottom:1px solid var(--line);margin-bottom:22px;}
.grid-form {gap:18px;}
.toolbar {align-items:flex-end;}
.toolbar > label:not(.check-label) {min-width:200px;max-width:100%;}
.toolbar > button,.toolbar > .button {flex-shrink:0;min-height:44px;}
.grid-form {align-items:start;}
.grid-form > .check-label {align-self:end;min-height:44px;}
.grid-form > button {align-self:end;justify-self:start;}
.grid-form input:not([type=checkbox]),.grid-form select,.toolbar select {height:44px;}
.grid-form label {font-weight:600;font-size:13px;}
.full {grid-column:1/-1;}
.option-search-wrap {margin-top:-10px;}
.option-search {font-size:12px;background:#f6f9fa;min-height:34px;padding:7px 10px;}
.grid-form .option-search-wrap {grid-column:auto;}
.select-field {min-width:0;}
.select-field .option-search-wrap {margin-top:7px;}
.public-content:has(.auth-shell) {padding:0;max-width:none;}
.quick-links {display:flex;gap:10px;flex-wrap:wrap;margin:18px 0 26px;}
.quick-links a {padding:9px 14px;border:1px solid var(--line);border-radius:7px;background:white;font-size:13px;}
.success-box {background:#eff6f2;border-color:#cadfd2;color:#355a44;font-size:14px;}
.error-box {background:#fbf1ef;border-color:#e5cdc7;color:#874a41;font-size:14px;}
.hero {display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:36px;align-items:center;margin:12px 0 42px;}
.hero h1 {font-size:clamp(28px,3vw,40px);letter-spacing:-.6px;max-width:520px;}
.hero-copy p {color:var(--muted);max-width:440px;font-size:16px;}
.hero-note {display:inline-flex;gap:10px;align-items:center;padding:8px 12px;background:#e9eff0;border-radius:6px;color:#476570;font-size:12px;margin-top:12px;}
.finder {margin:0;padding:28px;border-top:3px solid #577c84;}
.finder h2 {margin-bottom:10px;}
.finder .stack-form {margin-top:20px;}
.result-header {display:flex;justify-content:space-between;gap:12px;align-items:center;}
.result-grid {display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px;}
.seat-result {background:#fff;border:1px solid var(--line);border-radius:10px;padding:24px;}
.seat-result h3 {margin-bottom:6px;}
.location-pair {display:flex;gap:12px;margin-top:20px;}
.location-pair div {flex:1;border:1px solid #d7e1e5;padding:12px;border-radius:6px;background:#f4f8f8;}
.location-pair small {display:block;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.8px;}
.location-pair strong {font-size:24px;color:var(--navy);}
.exam-preview {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;}
.exam-preview .card h3 {margin-bottom:8px;}
.exam-preview .card {border-left:3px solid #9aafb6;}
.empty-state {padding:28px;text-align:center;background:#f7f9fa;border:1px dashed #cbd7dc;border-radius:8px;color:var(--muted);}
.public-footer {padding:28px;text-align:center;border-top:1px solid var(--line);font-size:12px;color:var(--muted);}
.segmented {display:flex;gap:4px;padding:4px;border:1px solid var(--line);border-radius:7px;background:#edf1f3;}
.segmented button {background:transparent;color:var(--muted);min-height:34px;padding:6px 14px;}
.segmented button[aria-pressed=true] {background:#fff;color:var(--navy);border-color:#dbe4e7;}
.seat-grid {grid-template-columns:repeat(var(--columns),minmax(100px,1fr));gap:8px;}
button.seat {display:flex;align-items:flex-start;justify-content:flex-start;text-align:left;color:var(--ink);font-weight:400;background:#f6f8f9;border:1px solid #d7e0e4;min-height:100px;font-size:11px;padding:10px;}
button.seat.occupied {background:#eaf0f3;border-color:#a7bbc5;}
button.seat.accessible {border:2px solid #537365;}
button.seat.blocked {background:#eeeff0;color:#6d7980;border:1px dashed #c5cdd1;}
button.seat:hover {background:#dde8ec;}
button.seat strong {font-size:12px;color:var(--navy);}
button.seat span {overflow-wrap:anywhere;max-width:100%;}
.seat.muted-seat {opacity:.35;}
.seat-manual {font-size:10px;background:#eee9dc;color:#706344;border-radius:3px;padding:2px 4px;}
.seat-requirement {font-size:10px;background:#e2eee8;color:#345448;border-radius:3px;padding:2px 4px;}
button.seat.source-seat {outline:3px solid #284d62;outline-offset:2px;}
button.seat.target-seat {outline:3px dashed #6d6244;outline-offset:2px;}
#operationDialog {width:min(700px,calc(100vw - 32px));max-height:85vh;overflow:auto;padding:24px;border:1px solid var(--line);border-radius:10px;color:var(--ink);background:white;box-sizing:border-box;}
#operationDialog::backdrop {background:rgba(23,40,50,.48);}
#operationDialog h2 {margin-top:0;}
#operationDialog label {margin-top:16px;}
.preview-changes {max-height:260px;overflow:auto;margin:16px 0;}
.legend {display:flex;gap:16px;flex-wrap:wrap;color:var(--muted);font-size:12px;margin:14px 0;}
.legend span::before {content:'';display:inline-block;width:10px;height:10px;border-radius:2px;border:1px solid #a7bbc5;background:#eaf0f3;margin-right:6px;}
.legend .accessible-key::before {border:2px solid #537365;background:white;}
.legend .spacing-key::before {background:#eeeff0;border-style:dashed;}
.legend .manual-key::before {background:#eee9dc;}
.legend .requirement-key::before {background:#e2eee8;border-color:#537365;}
.room-picker {display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;max-height:230px;overflow-y:auto;}
.room-option {display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:7px;padding:12px;cursor:pointer;font-size:13px;}
.room-option:has(input:checked) {background:#edf3f4;border-color:#7d9da7;}
.room-option input {width:18px;height:18px;}
.room-option small {display:block;color:var(--muted);font-weight:400;}
.import-steps {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-bottom:25px;}
.import-steps .card {padding:20px;}
.import-steps small {font-size:12px;color:var(--accent);font-weight:650;}
.auth-body {display:block;padding:0;}
.auth-shell {display:grid;place-items:center;min-height:calc(100vh - 155px);padding:32px 20px;}
.auth-card {padding:34px;box-shadow:none;border-color:var(--line);border-radius:12px;}
.password-control {position:relative;}
.password-control input {padding-right:75px;}
.password-control button {position:absolute;right:6px;top:5px;min-height:32px;padding:3px 9px;font-size:12px;}
.auth-links {font-size:13px;flex-wrap:wrap;gap:12px;}
.print-only {display:none;}
@media(max-width:1050px) {.account-name {display:none;} .content {padding:24px;} .header-links {gap:14px;} .exam-preview {grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:800px) {.workspace {grid-template-columns:minmax(0,1fr);} .app-navigation {display:none;height:auto;position:static;border-bottom:1px solid var(--line);} .navigation-open .app-navigation {display:block;} .menu-button {display:inline-flex;padding:8px 12px;font-size:18px;} .app-header {padding:0 16px;height:70px;} .content {padding:20px 16px;} .public-content {padding:28px 18px;} .hero {grid-template-columns:1fr;gap:24px;} .hero h1 {max-width:600px;} .hero-copy p {max-width:600px;} .grid-form {grid-template-columns:1fr;} .page-heading {flex-direction:column;gap:12px;} .import-steps {grid-template-columns:1fr;} .brand small {display:none;} .quiet-link {display:none;} .header-links {gap:12px;} .header-links a {font-size:12px;} .brand {font-size:14px;gap:8px;} .brand-symbol {width:32px;height:32px;} .header-links .button {padding:7px 10px;min-height:36px;} }
@media(max-width:480px) {.header-links a[href$="timetable.html"] {display:none;} .exam-preview {grid-template-columns:1fr;} .list-toolbar {gap:10px;} .list-toolbar label {flex:1;} .list-meta {align-items:flex-start;} .panel {padding:17px;} .finder {padding:22px;} .auth-links {flex-direction:column;} }
@media(prefers-reduced-motion:reduce) {* {scroll-behavior:auto !important;} }
@media print {.app-header,.app-navigation,.skip-link,.list-toolbar,.pager,.hero-copy,.finder,.public-footer,.quick-links,button,.button,.editor,.breadcrumbs {display:none !important;} .workspace,.hero {display:block;} .content,.public-content {padding:0;max-width:none;} .panel,.card,.seat-result {break-inside:avoid;box-shadow:none;} .print-only {display:block;} body {background:white;color:black;} .table-wrap {overflow:visible;} }
