/* Open Sans is bundled locally so the interface uses the same type on every device. */
@font-face {
  font-family: "Open Sans";
  src: url("/assets/open-sans-latin.woff2") format("woff2");
  font-style: normal;
  font-weight: 300 800;
  font-display: swap;
}

:root {
  --font-ui: "Open Sans", Arial, sans-serif;
  --text: #f5f5f5;
  --muted: #b4b5b8;
  --faint: #96999e;
  font-family: var(--font-ui);
}
:root[data-theme="light"] { --text: #1b1c1e; --muted: #55595f; --faint: #666b72; }
body { font-size: 16px; line-height: 1.65; }
h1, h2, h3 { font-family: var(--font-ui); }
h2, h3 { font-weight: 700; }
.eyebrow, .tag, .event-chip, .log-date, .log-summary, .table-pagination,
.meeting-date strong, .meeting-date>span, .agenda-header p, .agenda-time,
.calendar-table th, .day-number, .more-events, .agenda-date-heading, .schedule-time,
.integration-status small, .map-count, .map-details-header small,
.map-details>header small { font-family: var(--font-ui); }

/* Shared identity and navigation. */
.portal-header .portal-topbar { min-height: 92px; padding-top: 19px; padding-bottom: 19px; }
.portal-header .portal-topbar .community-logo { width: 46px; height: 46px; }
.portal-header .portal-topbar .brand { gap: 13px; }
.portal-header .portal-topbar .brand-title, .login-header .brand-title {
  font-size: 20px; font-weight: 700; line-height: 1.35; letter-spacing: -.5px;
}
.portal-header .portal-topbar .brand-subtitle, .login-header .brand-subtitle {
  font-size: 13px; line-height: 1.6; margin-top: 4px;
}
.portal-header .portal-topbar .command-trigger { font-size: 14px; height: 46px; }
.portal-header .portal-topbar .command-trigger kbd { font-size: 11px; }
.portal-actions .notifications-button, .portal-account .account-name { font-size: 14px; font-weight: 600; }
.portal-header .portal-nav { gap: 24px; }
.portal-header .portal-nav-link { font-size: 15px; font-weight: 600; min-height: 53px; margin-right: 2px; }
.portal-header .category-subnav-link { font-size: 14px; font-weight: 600; }

/* Clear titles, ordinary sentence case, and legible supporting copy. */
.portal-shell .main { padding-top: 36px; }
.portal-shell .page-heading h1, .category-heading h1, .home-heading h1 {
  font-size: 38px; line-height: 1.2; font-weight: 800; letter-spacing: -1.2px;
}
.portal-shell .page-heading p, .portal-shell .page-heading .page-date,
.category-heading>p:not(.eyebrow), .home-heading p {
  font-size: 16px; line-height: 1.7; letter-spacing: 0; margin-top: 10px;
}
.home-heading { padding-bottom: 24px; }
.home-status, .portal-shell .connection-line { font-size: 13px; }
.home-status { margin-bottom: 24px; }
.portal-shell .panel-header h2, .home-section-head h2,
.staff-search-panel h2, .preferences-panel>h2, .map-details h2 { font-size: 20px; font-weight: 700; letter-spacing: -.4px; }
.home-section-head { min-height: 78px; padding: 14px 24px; }
.home-section-head>a, .portal-shell .text-link { font-size: 14px; font-weight: 600; }
.home-log-links { padding: 7px 24px; gap: 26px; }
.home-log-links>a, .home-game-links>a { font-size: 15px; font-weight: 600; }
.home-log-links>a>svg, .home-game-links>a>svg:first-child { color: var(--accent); }
.home-record { padding: 20px 24px; gap: 14px; }
.home-record .avatar, .home-record-symbol { width: 36px; height: 36px; font-size: 12px; }
.home-record-copy strong { font-size: 16px; font-weight: 700; line-height: 1.55; }
.home-record-channel { font-size: 13px; margin-left: 9px; }
.home-record-detail { font-size: 15px; line-height: 1.7; margin-top: 5px; }
.home-record>time { font-size: 12px; padding-top: 4px; }
.home-agenda .upcoming-meeting { padding: 21px 24px; gap: 16px; }
.portal-shell .upcoming-copy strong, .home-agenda .upcoming-copy>strong { font-size: 16px; font-weight: 700; line-height: 1.5; }
.portal-shell .upcoming-copy>span, .home-agenda .upcoming-copy>span { font-size: 13px; line-height: 1.65; color: var(--muted); }
.home-agenda .meeting-date { min-width: 38px; }
.meeting-date>strong, .home-agenda .meeting-date>strong { font-size: 26px; font-weight: 700; }
.meeting-date>span, .home-agenda .meeting-date>span { font-size: 12px; font-weight: 600; }
.home-game-links { padding: 17px 24px; gap: 5px; }
.home-game-links>.home-section-head { min-height: 47px; }
.portal-shell .workspace-foot, .home-main>.workspace-foot, .login-bottom { font-size: 12px; line-height: 1.7; }
.category-card { padding: 25px; gap: 18px; }
.category-card-copy>strong { font-size: 18px; font-weight: 700; }
.category-card-copy>span, .staff-search-panel>p, .preference-row p { font-size: 15px; line-height: 1.7; }
.preference-row strong { font-size: 16px; font-weight: 600; }
.category-notice { font-size: 14px; }
.portal-shell .stat-top { font-size: 14px; }
.portal-shell .stat-number { font-family: var(--font-ui); font-size: 38px; font-weight: 700; letter-spacing: -1px; }
.portal-shell .stat-bottom { font-family: var(--font-ui); font-size: 13px; }
.portal-shell .activity-line, .portal-shell .activity-excerpt { font-size: 15px; line-height: 1.65; }
.activity-line strong { font-weight: 700; }
.channel-inline { font-size: 14px; }
.portal-shell .activity-time { font-size: 12px; }
.portal-shell .empty-state h3, .home-agenda .empty-state h3, .home-records .empty-state h3 { font-size: 17px; font-weight: 700; }
.portal-shell .empty-state p, .home-agenda .empty-state p, .home-records .empty-state p,
.home-load-error, .notification-empty p, .map-empty p { font-size: 15px; line-height: 1.7; }

/* Buttons, filters and data keep the same scale throughout the dashboard. */
.btn, .form-actions .btn, .pagination-controls .btn, .log-toolbar>#export-logs,
.log-toolbar-actions .btn, button.density-toggle, .home-heading-actions>.btn,
.portal-shell .log-toolbar>.btn, .staff-search-actions>.btn,
.portal-shell .month-controls .btn, .portal-shell .view-switch button,
.portal-shell .feed-tabs button, .portal-shell .event-tabs button {
  font-size: 14px; font-weight: 600; line-height: 1.5; min-height: 44px;
}
.home-heading-actions>.btn { padding: 11px 17px; }
.portal-shell .search-wrap input, .portal-shell .map-search input,
.portal-shell .filter-select { font-size: 15px; }
.portal-shell .filter-chip { font-size: 13px; }
.portal-shell .log-summary, .portal-shell .table-pagination,
.portal-shell .pagination-controls>span { font-size: 13px; }
.portal-shell .log-table th { font-size: 13px; font-weight: 600; text-transform: none; letter-spacing: 0; }
.portal-shell .log-table .table-member .user-label { font-size: 15px; font-weight: 700; }
.portal-shell .message-preview, .erlc-detail { font-size: 15px; line-height: 1.75; }
.portal-shell .member-search, .portal-shell button.channel-chip, .portal-shell .attachment-preview,
.portal-shell .log-time, .event-chip, .erlc-event-chip, .erlc-detail small { font-size: 13px; }
.portal-shell .log-date { font-size: 14px; }
.portal-shell .table-member .tag { font-size: 10px; }
body[data-density="compact"] .channel-chip, body[data-density="compact"] .event-chip { font-size: 12px; }
.integration-status { font-size: 14px; }
.integration-status small { font-size: 12px; }

/* Calendar, search and record details. Monospace is reserved for record IDs. */
.portal-shell .calendar-toolbar h2, .agenda-header h2, .drawer-header h2 { font-size: 22px; font-weight: 700; letter-spacing: -.5px; }
.portal-shell .calendar-table th { font-size: 13px; text-transform: none; font-weight: 600; }
.day-number { font-size: 14px; width: 28px; height: 28px; }
.day-event { font-size: 12px; }
.more-events { font-size: 11px; }
.portal-shell .calendar-zone, .calendar-note, .agenda-header p, .agenda-time,
.agenda-location, .agenda-edit, .agenda-date-heading, .schedule-time { font-size: 13px; letter-spacing: 0; text-transform: none; }
.agenda-event>strong, .schedule-copy strong { font-size: 16px; font-weight: 700; }
.agenda-description, .schedule-copy>span, .schedule-location { font-size: 14px; line-height: 1.65; }
.drawer .eyebrow, .drawer-section>.eyebrow { font: 600 13px/1.6 var(--font-ui); letter-spacing: 0; text-transform: none; }
.drawer-author .user-label { font-size: 18px; font-weight: 700; }
.drawer-author .user-sub { font-size: 14px; }
.drawer-message { font-size: 16px; line-height: 1.8; }
.drawer-meta, .profile-panel .drawer-meta { font-size: 15px; line-height: 1.7; }
.drawer-note, .detail-context, .detail-context .detail-timestamp,
.form-hint, .meeting-created, .meeting-preview, .form-field small { font-size: 13px; }
.form-field>span { font-size: 15px; font-weight: 600; }
.form-field input, .form-field textarea { font-size: 16px; }
.voice-event-title h3 { font-size: 17px; font-weight: 700; }
.command-dialog .drawer-header h2 { font: 600 14px/1.5 var(--font-ui); text-transform: none; letter-spacing: 0; }
.command-copy strong { font-size: 16px; font-weight: 600; }
.command-copy span, .command-footer { font-size: 13px; }
.map-player-row strong, .map-selected .player-meta { font-size: 14px; }
.map-player-row small, .map-player-row>small, .map-count, .map-footnote,
.map-details-header small, .map-details>header small, .map-legend { font-size: 12px; }
.map-selected-header h3 { font-size: 18px; }
.map-selected-header>div>span, .map-selected .map-player-status { font-size: 13px; }

/* Sign-in uses the same bold heading and open, easy-to-read body type. */
.login-content { max-width: 470px; }
.login-identity h1 { font-size: 44px; font-weight: 800; line-height: 1.15; letter-spacing: -1.5px; }
.login-community { font-size: 19px; line-height: 1.65; margin-top: 16px; }
.login-content .discord-login { min-height: 52px; font-size: 16px; font-weight: 700; margin-top: 32px; }
.login-content .login-notice { font-size: 14px; }

@media(max-width:1100px) {
  .portal-header .portal-topbar { gap: 18px; }
  .portal-header .portal-topbar .brand-title { font-size: 18px; }
  .home-section-head { flex-wrap: wrap; gap: 0 12px; }
  .home-section-head h2 { font-size: 18px; }
  .home-record { flex-wrap: wrap; }
  .home-record-copy { flex-basis: calc(100% - 54px); }
  .home-record>time { margin-left: 50px; padding-top: 0; }
}
@media(max-width:700px) {
  .portal-shell .main { padding-top: 28px; }
  .portal-shell .page-heading h1, .category-heading h1, .home-heading h1 { font-size: 32px; letter-spacing: -.8px; }
  .portal-shell .page-heading p, .portal-shell .page-heading .page-date, .home-heading p { font-size: 15px; }
  .home-record { padding: 19px 18px; gap: 8px 12px; }
  .home-record-copy { flex-basis: calc(100% - 50px); }
  .home-record-channel { display: block; margin: 2px 0 0; }
  .home-record-detail { font-size: 15px; }
  .home-record>time { margin-left: 48px; font-size: 12px; }
  .home-section-head { padding: 13px 18px; }
  .home-log-links { padding: 6px 18px; gap: 20px; }
  .home-log-links>a>svg:last-child { display: none; }
  .home-agenda .upcoming-meeting { padding: 21px 18px; }
  .home-game-links { padding: 17px 18px; }
  .category-card { padding: 22px 18px; }
  .portal-shell .workspace-foot { flex-direction: column; gap: 5px; }
  .portal-shell .workspace-foot>span:last-child { text-align: left; max-width: none; }
  .portal-shell .stat-number { font-size: 30px; }
  .portal-shell .stat-top, .portal-shell .stat-bottom { font-size: 12px; }
  .drawer-meta { grid-template-columns: 92px minmax(0,1fr); gap: 15px; }
  .login-identity h1 { font-size: 38px; }
  .login-community { font-size: 17px; }
}
@media(max-width:600px) {
  .portal-header .portal-topbar { padding-top: 18px; padding-bottom: 12px; row-gap: 16px; }
  .portal-header .portal-topbar .brand-title, .login-header .brand-title { font-size: 18px; }
  .portal-header .portal-topbar .brand-subtitle, .login-header .brand-subtitle { font-size: 12px; }
  .portal-header .portal-topbar .community-logo { width: 40px; height: 40px; }
  .portal-header .portal-nav { gap: 20px; }
  .portal-header .portal-nav-link { font-size: 14px; min-height: 50px; }
  .portal-header .category-subnav-link { font-size: 13px; }
  .login-header .brand-title { font-size: 16px; }
}
