/* Royal Library and shared student reading surfaces. */
.student-library-heading-actions { display: grid; justify-items: end; gap: 8px; }
.student-library-heading-actions > a { color: #8a6513; font-size: .82rem; font-weight: 850; }
.student-section-heading > div > p:last-child:not(.eyebrow) { max-width: 720px; margin: 8px 0 0; color: var(--muted); }

.student-library-grid { grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); }
.student-library-book {
  grid-template-columns: 72px minmax(0, 1fr);
  gap: 0;
  padding: 0;
  overflow: hidden;
  border: 1px solid #d8cba9;
  border-top-width: 1px;
  border-radius: 15px;
  background: #fffdf8;
}
.student-library-spine {
  display: flex;
  align-items: center;
  flex-direction: column;
  gap: 12px;
  padding: 22px 8px;
  color: #f5d778;
  background: linear-gradient(180deg, #0b2947, #07172b);
  box-shadow: inset -7px 0 rgba(255,255,255,.045), inset 1px 0 rgba(255,255,255,.16);
}
.student-library-spine span { font: 700 .72rem Georgia, serif; letter-spacing: .08em; writing-mode: vertical-rl; }
.student-library-spine strong { display: grid; width: 48px; height: 48px; margin-top: auto; place-items: center; border: 1px solid rgba(242,210,115,.62); border-radius: 50%; font-size: 1.2rem; }
.student-library-spine small { font-weight: 900; }
.student-library-book-body { display: grid; align-content: start; gap: 14px; min-width: 0; padding: 20px; }
.student-library-book .student-subject-head { grid-template-columns: 46px minmax(0,1fr); }
.student-library-book .student-subject-icon { width: 46px; height: 56px; border-radius: 3px 9px 9px 3px; box-shadow: inset 5px 0 rgba(184,134,24,.09); }

.student-library-reading-hero {
  position: relative;
  display: grid;
  align-content: center;
  min-height: 430px;
  margin: -24px -24px 24px;
  overflow: hidden;
  border-radius: 13px 13px 0 0;
  background: #07172b;
}
.student-library-reading-hero > img,
.student-library-reading-shade { position: absolute; inset: 0; width: 100%; height: 100%; }
.student-library-reading-hero > img { object-fit: cover; object-position: 64% 50%; }
.student-library-reading-shade { background: linear-gradient(90deg,rgba(2,11,23,.98),rgba(3,16,31,.88) 45%,rgba(3,16,31,.16) 82%); }
.student-library-reading-copy { position: relative; z-index: 2; width: min(620px, 70%); padding: clamp(30px,5vw,58px); }
.student-library-reading-copy .eyebrow { color: #f1cf6b; }
.student-library-reading-copy h1 { margin: 7px 0 12px; color: #fff; font: 700 clamp(2.8rem,6vw,5.4rem)/.9 Georgia,serif; letter-spacing: -.05em; }
.student-library-reading-copy > p:not(.eyebrow) { margin: 0 0 20px; color: #dbe4eb; }
.student-library-bookplate { position: absolute; z-index: 3; right: 22px; bottom: 22px; display: flex; align-items: center; gap: 10px; padding: 13px 16px; border: 1px solid rgba(241,207,105,.58); border-radius: 12px; color: #fff; background: rgba(4,17,33,.88); }
.student-library-bookplate > span { color: #f1cf6b; font-size: 1.5rem; }
.student-library-bookplate strong,
.student-library-bookplate small { display: block; }
.student-library-bookplate small { margin-top: 2px; color: #cfdae4; font-size: .72rem; }
.student-royal-reading-room .student-roadmap-heading { padding: 24px 0 14px; border-top: 1px solid #e0d4b9; }
.student-royal-reading-room .student-term-block { border-color: #d9c793; background: #fffdf7; }
.student-royal-reading-room .student-term-heading { background: linear-gradient(90deg,#fff8e8,#fff); }
.student-royal-reading-room .student-week-card { border-color: #dfd4bd; background: #fff; box-shadow: 0 10px 24px rgba(7,23,43,.05); }

@media (max-width: 700px) {
  .student-library-grid { grid-template-columns: 1fr; }
  .student-library-reading-hero { min-height: 520px; }
  .student-library-reading-shade { background: linear-gradient(0deg,rgba(2,11,23,.99),rgba(3,16,31,.75) 72%,rgba(3,16,31,.2)); }
  .student-library-reading-copy { width: 100%; padding: 190px 23px 110px; }
  .student-library-reading-copy h1 { font-size: clamp(2.5rem,12vw,4.2rem); }
  .student-library-bookplate { right: 15px; bottom: 15px; left: 15px; }
  .student-section-heading { align-items: flex-start; flex-direction: column; }
  .student-library-heading-actions { justify-items: start; }
}

@media (max-width: 440px) {
  .student-library-book { grid-template-columns: 54px minmax(0,1fr); }
  .student-library-spine { padding: 17px 5px; }
  .student-library-spine strong { width: 40px; height: 40px; font-size: 1rem; }
  .student-library-book-body { padding: 16px 13px; }
  .student-library-book .student-subject-head { grid-template-columns: 1fr; }
  .student-library-book .student-subject-icon { display: none; }
}

/* Course accounts and administration */
.auth-page,
.admin-area,
.student-area {
  min-height: 100vh;
  background: #f3f5f7;
}

.admin-area {
  overflow-x: clip;
}

.auth-shell {
  width: min(100% - 28px, 520px);
  margin: 0 auto;
  padding: 42px 0 72px;
}

.auth-brand {
  display: flex;
  justify-content: center;
  margin-bottom: 24px;
}

.auth-brand img {
  width: 200px;
  height: auto;
  border-radius: 8px;
  box-shadow: 0 10px 30px rgba(7, 23, 43, 0.18);
}

.auth-page .login-panel {
  margin: 0;
  padding: 28px;
}

.student-login-shell {
  padding-top: 32px;
}

.student-login-brand {
  justify-content: flex-start;
  margin: 0;
}

.student-login-brand img {
  width: 136px;
  box-shadow: 0 7px 20px rgba(7, 23, 43, 0.14);
}

.student-login-heading-art {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 26px;
}

.student-login-gate {
  width: 112px;
  height: auto;
  flex: 0 0 auto;
  object-fit: contain;
}

.auth-page .login-panel h1 {
  margin: 4px 0 22px;
  font-size: 2rem;
}

.auth-page .login-panel .student-login-verse {
  margin: -10px 0 24px;
  color: #5f6b7a;
  font-family: Georgia, "Times New Roman", serif;
  font-size: 1rem;
  font-style: italic;
  line-height: 1.5;
}

.form-stack {
  display: grid;
  gap: 18px;
}

.contact-page-inner {
  padding-top: 46px;
}

.contact-heading {
  max-width: 760px;
  margin-bottom: 32px;
}

.contact-heading .eyebrow {
  margin-bottom: 10px;
  color: var(--gold-dark);
}

.contact-heading h1 {
  margin: 0;
  color: var(--navy);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(2.25rem, 4vw, 3.55rem);
  line-height: 1.02;
}

.contact-heading > p:last-child {
  max-width: 680px;
  margin: 14px 0 0;
  color: var(--muted);
  font-size: 1.02rem;
  line-height: 1.7;
}

.contact-feedback {
  margin: 0 0 24px;
}

.contact-layout {
  display: grid;
  grid-template-columns: minmax(300px, 0.72fr) minmax(540px, 1.28fr);
  gap: 32px;
  align-items: start;
}

.contact-topic-card {
  position: sticky;
  top: 112px;
  display: grid;
  gap: 20px;
  padding: 24px;
  border-radius: 12px;
  box-shadow: 0 20px 48px rgba(7, 23, 43, 0.08);
}

.contact-topic-card > .eyebrow,
.contact-form-section-heading .eyebrow {
  margin: 0;
  color: var(--gold-dark);
}

.required-label {
  color: #8a5e00;
  font-size: 0.76rem;
  font-weight: 800;
}

.contact-topic-help {
  overflow: hidden;
  color: var(--white);
  background:
    radial-gradient(circle at 100% 0, rgba(209, 164, 54, 0.24), transparent 42%),
    var(--navy);
  border: 1px solid rgba(209, 164, 54, 0.48);
  border-radius: 10px;
}

.contact-topic-help summary {
  position: relative;
  padding: 16px 44px 16px 18px;
  color: var(--white);
  cursor: pointer;
  font-weight: 900;
  line-height: 1.35;
  list-style: none;
}

.contact-topic-help summary::-webkit-details-marker {
  display: none;
}

.contact-topic-help summary::after {
  content: "+";
  position: absolute;
  top: 50%;
  right: 17px;
  color: var(--gold-soft);
  font-size: 1.35rem;
  line-height: 1;
  transform: translateY(-50%);
}

.contact-topic-help[open] summary::after {
  content: "−";
}

.contact-topic-help-content {
  padding: 0 18px 20px;
  border-top: 1px solid rgba(255, 255, 255, 0.14);
}

.contact-topic-help article {
  padding-top: 18px;
}

.contact-topic-help article[hidden] {
  display: none;
}

.contact-topic-help h2 {
  margin: 0;
  color: var(--white);
  font-size: 1.35rem;
}

.contact-topic-help p,
.contact-topic-help li {
  color: rgba(255, 255, 255, 0.9);
  line-height: 1.55;
}

.contact-topic-help article > p {
  margin: 9px 0 0;
}

.contact-topic-help ul {
  display: grid;
  gap: 8px;
  margin: 17px 0 0;
  padding-left: 19px;
}

.contact-topic-help li::marker {
  color: var(--gold);
}

.contact-topic-help .contact-message-example {
  padding: 12px;
  color: var(--navy);
  background: var(--gold-soft);
  border-radius: 8px;
  font-weight: 750;
}

.contact-topic-after {
  padding-top: 16px;
  margin-top: 16px;
  border-top: 1px solid rgba(255, 255, 255, 0.14);
}

.contact-topic-after strong {
  color: var(--gold-soft);
}

.contact-topic-after p {
  margin: 6px 0 0;
}

.contact-form-card {
  padding: 32px;
  border-radius: 12px;
  box-shadow: 0 20px 48px rgba(7, 23, 43, 0.08);
}

.contact-form-section-heading h2 {
  margin: 5px 0 0;
  color: var(--navy);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 1.75rem;
}

.contact-message-heading {
  padding-top: 5px;
  margin-top: 3px;
  border-top: 1px solid var(--line);
}

.contact-topic-fields {
  display: grid;
  gap: 18px;
  padding: 20px;
  background: #fbfcfe;
  border: 1px solid var(--line);
  border-radius: 10px;
}

.contact-topic-fields[hidden] {
  display: none;
}

.field-error {
  min-height: 0;
  margin: 0;
  color: #a82626;
  font-size: 0.82rem;
  font-weight: 750;
}

.field-error:empty {
  display: none;
}

.contact-form-card input[aria-invalid="true"],
.contact-form-card select[aria-invalid="true"],
.contact-form-card textarea[aria-invalid="true"],
.contact-topic-card select[aria-invalid="true"] {
  border-color: #b72f2f;
  box-shadow: 0 0 0 3px rgba(183, 47, 47, 0.12);
}

.contact-message-prompt {
  margin: 0 0 3px;
  color: var(--muted);
  line-height: 1.55;
}

.contact-message-meta {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  align-items: start;
}

.contact-character-count {
  margin: 0 0 0 auto;
  color: var(--muted);
  font-size: 0.8rem;
  white-space: nowrap;
}

.contact-safety-note,
.contact-next-step {
  padding: 15px 17px;
  border-radius: 9px;
}

.contact-safety-note {
  color: #673f00;
  background: #fff7df;
  border-left: 4px solid var(--gold);
}

.contact-next-step {
  color: var(--navy);
  background: #f1f6fb;
  border: 1px solid #cfdae6;
}

.contact-safety-note p,
.contact-next-step p {
  margin: 5px 0 0;
  color: inherit;
  line-height: 1.55;
}

.contact-submit-button {
  width: 100%;
}

.contact-submit-button:disabled {
  cursor: wait;
  opacity: 0.72;
}

.contact-upload-field {
  padding: 18px;
  background: #fffaf0;
  border: 1px dashed rgba(168, 121, 15, 0.58);
  border-radius: 10px;
}

.contact-upload-field input[type="file"] {
  min-height: 50px;
  padding: 8px;
  cursor: pointer;
  background: var(--white);
}

.contact-upload-field input[type="file"]::file-selector-button {
  margin-right: 12px;
  padding: 8px 12px;
  color: var(--navy);
  background: var(--gold-soft);
  border: 0;
  border-radius: 6px;
  font-weight: 800;
  cursor: pointer;
}

@media (max-width: 860px) {
  .contact-layout {
    grid-template-columns: 1fr;
    gap: 22px;
  }

  .contact-topic-card {
    position: static;
  }
}

@media (max-width: 640px) {
  .contact-page-inner {
    padding-top: 28px;
  }

  .contact-heading {
    margin-bottom: 22px;
  }

  .contact-heading h1 {
    font-size: 2.25rem;
  }

  .contact-heading > p:last-child {
    font-size: 0.95rem;
  }

  .contact-topic-card,
  .contact-form-card {
    padding: 20px;
  }

  .contact-topic-card {
    gap: 14px;
  }

  .contact-topic-help summary {
    padding-top: 14px;
    padding-bottom: 14px;
  }

  .contact-topic-help-content {
    padding-bottom: 17px;
  }

  .contact-topic-fields {
    padding: 16px;
  }

  .contact-message-meta {
    display: grid;
  }

  .contact-character-count {
    margin-left: 0;
  }
}

.login-help {
  margin: 20px 0 0;
  color: var(--muted);
  font-size: 0.9rem;
}

.site-access-shell {
  display: grid;
  align-content: center;
  min-height: 100vh;
  padding-top: 32px;
  padding-bottom: 32px;
}

.site-access-panel {
  box-shadow: 0 24px 70px rgba(7, 23, 43, 0.14);
}

.site-access-intro {
  margin: 0 0 8px;
}

.site-access-translation {
  margin: 0 0 22px;
  color: var(--muted);
  font-size: 0.92rem;
}

.site-access-pin input {
  text-align: center;
  letter-spacing: 0.28em;
  font-size: 1.25rem;
  font-weight: 800;
}

.site-access-form .button {
  width: 100%;
}

@media (max-width: 500px) {
  .student-login-shell {
    padding: 18px 0 40px;
  }

  .student-login-shell .login-panel {
    padding: 24px;
  }

  .student-login-brand {
    margin: 0;
  }

  .student-login-brand img {
    width: 124px;
  }

  .student-login-heading-art {
    gap: 12px;
    margin-bottom: 22px;
  }

  .student-login-gate {
    width: 96px;
  }
}

.local-code {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 18px;
  padding: 14px 16px;
  border: 1px solid #9cc5e8;
  border-radius: 6px;
  color: #123f63;
  background: #edf7ff;
}

.local-code strong {
  font-size: 1.35rem;
  letter-spacing: 0.12em;
}

.admin-header,
.student-header {
  position: sticky;
  top: 0;
  z-index: 20;
  border-bottom: 1px solid rgba(255, 255, 255, 0.15);
  color: var(--white);
  background: #07172b;
}

.admin-area .eyebrow,
.student-area .eyebrow {
  color: #000000;
}

.admin-bar,
.student-bar {
  display: flex;
  align-items: center;
  gap: 26px;
  width: min(100% - 32px, 1220px);
  min-height: 76px;
  margin: 0 auto;
}

.admin-brand,
.student-brand {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  color: var(--white);
  font-weight: 900;
}

.admin-brand img,
.student-brand img {
  width: 132px;
  height: auto;
  border-radius: 8px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.22);
}

.admin-nav {
  display: flex;
  align-items: center;
  gap: 6px;
  scrollbar-width: none;
}

.admin-nav-menu {
  margin-left: auto;
}

.admin-nav-menu > summary {
  display: none;
}

.admin-nav-menu:not([open]) > .admin-nav {
  display: flex;
}

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

.admin-nav a {
  padding: 9px 10px;
  border-radius: 5px;
  color: #e8edf4;
  font-size: 0.88rem;
  font-weight: 800;
}

.admin-nav a:hover,
.admin-nav a:focus-visible,
.admin-nav a[aria-current="page"] {
  color: var(--white);
  background: rgba(255, 255, 255, 0.1);
  text-decoration: none;
}

.admin-nav a[aria-current="page"] {
  box-shadow: inset 0 -2px 0 var(--gold);
}

.admin-account,
.student-account {
  display: flex;
  align-items: center;
  gap: 12px;
  padding-left: 18px;
  border-left: 1px solid rgba(255, 255, 255, 0.2);
  font-size: 0.86rem;
}

.student-account-nav {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-left: auto;
}

.student-account-nav a {
  padding: 9px 12px;
  border-radius: 999px;
  color: inherit;
  font-weight: 800;
  text-decoration: none;
}

.student-account-nav a:hover,
.student-account-nav a[aria-current="page"] {
  background: rgba(255, 255, 255, 0.16);
}

@media (max-width: 820px) {
  .student-account-nav {
    order: 3;
    width: 100%;
    justify-content: center;
  }
}

.admin-account a,
.student-account a {
  color: #f5cf69;
  font-weight: 800;
}

.admin-shell,
.student-shell {
  width: min(100% - 32px, 1180px);
  margin: 0 auto;
  padding: 38px 0 78px;
}

.admin-page-heading,
.admin-section-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
}

.admin-page-heading {
  margin-bottom: 26px;
}

.admin-page-heading h1,
.student-welcome h1 {
  margin: 4px 0 0;
  font-size: clamp(1.85rem, 4vw, 2.8rem);
}

.admin-page-heading p:not(.eyebrow),
.student-welcome p:not(.eyebrow) {
  margin: 7px 0 0;
  color: var(--muted);
}

.metric-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 14px;
}

.metric {
  display: grid;
  min-height: 126px;
  padding: 18px;
  border: 1px solid #d7dde5;
  border-radius: 7px;
  color: var(--navy);
  background: var(--white);
}

.metric:hover {
  border-color: var(--gold);
  text-decoration: none;
}

.metric span {
  color: var(--muted);
  font-size: 0.85rem;
  font-weight: 800;
}

.metric strong {
  align-self: end;
  font-size: 2.25rem;
  line-height: 1;
}

.admin-section {
  margin-top: 34px;
}

.admin-section-heading {
  align-items: center;
  margin-bottom: 14px;
}

.admin-section-heading h2,
.decision-panel h2 {
  margin: 0;
}

.table-wrap {
  width: 100%;
  overflow-x: auto;
  border-radius: 8px;
}

.orders-table small {
  color: var(--muted);
}

.compact-button {
  min-height: 38px;
  padding: 8px 12px;
  font-size: 0.82rem;
}

.admin-form {
  max-width: 720px;
}

.admin-message-body p {
  margin: 12px 0 0;
  white-space: normal;
}

.admin-message-reply {
  align-items: start;
}

.admin-message-reply .form-stack {
  min-width: min(520px, 100%);
}

.admin-message-reply-sent {
  margin-top: 24px;
  border-left: 5px solid var(--gold);
}

.admin-message-reply-sent > p:not(.eyebrow) {
  margin: 12px 0;
}

.admin-message-reply-sent small {
  color: var(--muted);
}

.optional {
  color: var(--muted);
  font-size: 0.78rem;
  font-weight: 600;
}

.copy-link-panel {
  margin-bottom: 22px;
  padding: 18px;
  border: 1px solid #9cc5e8;
  border-radius: 7px;
  background: #edf7ff;
}

.copy-link-panel label {
  display: block;
  margin-bottom: 8px;
  color: #123f63;
  font-weight: 900;
}

.copy-link-panel > div {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
}

.copy-link-panel input {
  min-width: 0;
  padding: 12px;
  border: 1px solid #9cc5e8;
  border-radius: 5px;
  background: var(--white);
}

.filter-tabs {
  display: flex;
  gap: 6px;
  margin-bottom: 20px;
  overflow-x: auto;
}

.filter-tabs a {
  padding: 9px 13px;
  border: 1px solid #d7dde5;
  border-radius: 6px;
  color: var(--muted);
  background: var(--white);
  font-weight: 800;
  white-space: nowrap;
}

.filter-tabs a[aria-current="page"] {
  border-color: var(--gold);
  color: var(--navy);
  background: #fff5d9;
}

.status-submitted,
.status-open,
.status-awaiting {
  color: #684508;
  background: #fff0c6;
}

.status-approved,
.status-active,
.status-complete {
  color: #0e5940;
  background: #dff8ec;
}

.status-declined,
.status-disabled,
.status-expired {
  color: #7d1f1f;
  background: #ffe1e1;
}

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

.admin-detail-grid .panel h2 {
  margin-top: 0;
}

.detail-list {
  display: grid;
  gap: 0;
  margin: 0;
}

.detail-list > div {
  display: grid;
  grid-template-columns: 130px minmax(0, 1fr);
  gap: 16px;
  padding: 11px 0;
  border-bottom: 1px solid var(--line);
}

.detail-list dt {
  color: var(--muted);
  font-size: 0.82rem;
  font-weight: 800;
}

.detail-list dd {
  margin: 0;
  overflow-wrap: anywhere;
}

.learner-summary-list,
.credentials-panel {
  display: grid;
  gap: 10px;
}

.learner-summary-list > div,
.credentials-panel > div {
  display: grid;
  gap: 3px;
  padding: 13px 0;
  border-bottom: 1px solid var(--line);
}

.learner-summary-list span,
.credentials-panel span {
  color: var(--muted);
  overflow-wrap: anywhere;
}

.credentials-panel {
  margin-bottom: 22px;
  padding: 20px;
  border: 1px solid #77bd95;
  border-radius: 7px;
  background: #f0fff5;
}

.credentials-panel h2 {
  margin: 0;
}

.decision-panel {
  display: grid;
  grid-template-columns: minmax(220px, 0.7fr) minmax(0, 1.3fr);
  gap: 28px;
  margin-top: 22px;
  padding: 24px;
  border: 1px solid #d7dde5;
  border-left: 5px solid var(--gold);
  border-radius: 7px;
  background: var(--white);
}

.decision-panel p {
  color: var(--muted);
}

.decision-actions,
.decline-form,
.inline-actions {
  display: grid;
  gap: 14px;
}

.inline-actions {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-top: 18px;
}

.inline-actions .button {
  width: 100%;
}

:is(.admin-mark-result, .student-mark-result) {
  margin-top: 20px;
  scroll-margin-top: 110px;
  border: 2px solid;
  border-radius: 10px;
  overflow: hidden;
}

:is(.admin-mark-result, .student-mark-result).is-correct {
  color: #176b3a;
  background: #eef8f1;
  border-color: #75ae89;
}

:is(.admin-mark-result, .student-mark-result).is-wrong {
  color: #9e2722;
  background: #fff1f0;
  border-color: #dc8c87;
}

:is(.admin-mark-result, .student-mark-result) summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  min-height: 64px;
  padding: 10px 14px 10px 20px;
  cursor: pointer;
  list-style: none;
}

:is(.admin-mark-result, .student-mark-result) summary::-webkit-details-marker {
  display: none;
}

:is(.admin-mark-result, .student-mark-result) summary strong {
  font-size: 1.35rem;
}

:is(.admin-mark-help, .student-mark-help) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 42px;
  width: 42px;
  height: 42px;
  border: 2px solid currentColor;
  border-radius: 50%;
  font-size: 1.35rem;
  font-weight: 900;
  line-height: 1;
  background: rgba(255, 255, 255, 0.72);
}

:is(.admin-mark-reason, .student-mark-reason) {
  padding: 16px 20px 18px;
  border-top: 1px solid currentColor;
  color: var(--navy);
  background: var(--white);
}

:is(.admin-mark-reason, .student-mark-reason) p {
  margin: 0;
}

:is(.admin-mark-reason, .student-mark-reason) p + p {
  margin-top: 8px;
}

.admin-area .button.light {
  color: var(--navy);
  background: var(--white);
  border-color: #aeb9c7;
}

.admin-area .button.light:hover,
.admin-area .button.light:focus-visible {
  color: var(--white);
  background: var(--navy);
  border-color: var(--navy);
}

.course-form-hero {
  padding: clamp(42px, 6vw, 68px) 0;
  color: #000000;
  background: var(--white);
  border-top: 1px solid var(--gold);
  border-bottom: 1px solid var(--gold);
}

.course-form-hero .section-inner {
  position: relative;
  padding-left: clamp(46px, 7vw, 88px);
}

.course-form-hero .section-inner::before {
  content: "";
  position: absolute;
  top: 2px;
  bottom: 2px;
  left: 30px;
  width: 4px;
  background: var(--gold);
}

.course-form-hero .eyebrow {
  color: #000000;
  letter-spacing: 0.18em;
}

.course-form-hero .eyebrow::before {
  background: var(--gold);
}

.course-form-hero h1 {
  margin: 8px 0 0;
  color: #000000;
  font-size: clamp(2.35rem, 5vw, 3.6rem);
  letter-spacing: -0.035em;
}

.course-form-hero h1::after {
  content: "";
  display: block;
  width: 72px;
  height: 3px;
  margin-top: 18px;
  background: var(--gold);
}

.course-form-hero p:not(.eyebrow) {
  max-width: 700px;
  margin: 18px 0 0;
  color: #000000;
  font-size: 1.05rem;
  line-height: 1.55;
}

.course-form-page {
  max-width: 900px;
}

.course-information-form {
  display: grid;
  gap: 20px;
}

.form-section {
  display: grid;
  gap: 17px;
  min-width: 0;
  margin: 0;
  padding: 22px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: var(--white);
}

.form-section legend {
  padding: 0 8px;
  color: var(--navy);
  font-size: 1.05rem;
  font-weight: 900;
}

.purchased-course-summary {
  display: grid;
  gap: 5px;
  padding: 18px 20px;
  border: 1px solid var(--gold);
  border-left-width: 4px;
  border-radius: 7px;
  color: #000000;
  background: var(--white);
}

.purchased-course-summary span {
  color: #000000;
  font-size: 0.72rem;
  font-weight: 900;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.purchased-course-summary strong {
  color: #000000;
  font-size: 1.08rem;
}

.purchased-course-summary small {
  color: #000000;
  font-size: 0.84rem;
}

.consent-panel {
  padding: 20px;
  border: 1px solid #d8b152;
  border-radius: 7px;
  background: #fffaf0;
}

.consent-panel p {
  margin: 12px 0 0 30px;
  color: var(--muted);
  font-size: 0.86rem;
}

.submission-complete {
  max-width: 640px;
  margin: 20px auto;
  text-align: center;
}

.submission-complete > span {
  display: grid;
  place-items: center;
  width: 58px;
  height: 58px;
  margin: 0 auto 18px;
  border-radius: 50%;
  color: var(--white);
  background: var(--success);
  font-size: 1.6rem;
  font-weight: 900;
}

.submission-complete h2 {
  margin: 0;
  font-size: 2rem;
}

/* Keyboard learners can bypass the repeated account and Empire navigation. */
.student-skip-link {
  position: fixed;
  z-index: 1000;
  top: 8px;
  left: 8px;
  min-height: 44px;
  padding: 12px 16px;
  border: 3px solid #07172b;
  border-radius: 10px;
  color: #07172b;
  background: #fff4c7;
  font-weight: 900;
  text-decoration: none;
  transform: translateY(-160%);
  transition: none;
}
.student-skip-link:focus { transform: translateY(0); outline: 4px solid #77bdf0; outline-offset: 2px; }
#student-main:focus { outline: none; }
#student-main { scroll-margin-top: 96px; }

.student-bar {
  justify-content: space-between;
}

.student-exclusive-game {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 46px;
  margin-left: 0;
  padding: 9px 18px;
  border: 1px solid #ffe39a;
  border-radius: 8px;
  color: #172033;
  background: linear-gradient(135deg, #ffe8a6, #e3bd5c 55%, #bd852a);
  box-shadow: 0 8px 22px rgba(227, 189, 92, 0.28);
  font-size: 0.86rem;
  letter-spacing: 0.03em;
  text-decoration: none;
  white-space: nowrap;
}

.student-exclusive-game span {
  font-size: 1.15rem;
}

.student-exclusive-game:hover,
.student-exclusive-game:focus-visible,
.student-exclusive-game.is-current {
  color: #07172b;
  background: linear-gradient(135deg, #fff4c7, #f5cf69 58%, #d89d39);
  box-shadow: 0 0 0 3px rgba(245, 207, 105, 0.2), 0 10px 26px rgba(227, 189, 92, 0.35);
  text-decoration: none;
}

@media (max-width: 760px) {
  .student-bar {
    flex-wrap: nowrap;
    gap: 10px;
    padding: 10px 0;
  }

  .student-bar-start {
    flex: 1 1 auto;
  }

  .student-brand img {
    width: min(132px, 29vw);
  }

  .student-brand {
    min-height: 44px;
  }

  .student-header-back {
    flex: 0 0 44px;
  }

  .student-exclusive-game {
    order: initial;
    width: auto;
    height: 44px;
    min-height: 44px;
    margin-left: 0;
    padding: 0 11px;
    box-sizing: border-box;
  }

  .student-exclusive-game strong {
    position: static;
    width: auto;
    height: auto;
    overflow: visible;
    clip: auto;
    white-space: nowrap;
  }
}

@media (max-width: 360px) {
  .student-exclusive-game {
    width: 44px;
    padding: 0;
  }

  .student-exclusive-game strong {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
  }
}

.student-bar-start {
  display: flex;
  align-items: center;
  gap: 14px;
  min-width: 0;
}

.student-header-back {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-height: 44px;
  padding: 8px 10px;
  border: 1px solid rgba(227, 189, 92, 0.58);
  border-radius: 999px;
  color: var(--white);
  font-size: 0.82rem;
  font-weight: 800;
  line-height: 1;
  white-space: nowrap;
}

.student-header-back span[aria-hidden="true"] {
  color: #e3bd5c;
  font-size: 1.15rem;
  line-height: 0.7;
}

.student-header-back:hover,
.student-header-back:focus-visible {
  color: #07172b;
  background: #f5cf69;
  text-decoration: none;
}

.student-header-back:hover span[aria-hidden="true"],
.student-header-back:focus-visible span[aria-hidden="true"] {
  color: #07172b;
}

@media (max-width: 480px) {
  .student-bar-start {
    gap: 10px;
  }

  .student-header-back {
    justify-content: center;
    width: 44px;
    height: 44px;
    padding: 0;
  }

  .student-header-back span:last-child {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
  }
}

.student-welcome {
  margin-bottom: 28px;
}

.student-course-list {
  display: grid;
  gap: 16px;
}

.student-course-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 28px;
  padding: 24px;
  border: 1px solid #d7dde5;
  border-left: 5px solid var(--gold);
  border-radius: 7px;
  background: var(--white);
}

.student-course-row h2 {
  margin: 10px 0 4px;
}

.student-course-row p {
  margin: 0;
  color: var(--muted);
}

.student-course-row .expiry-note {
  margin-top: 8px;
  color: var(--danger);
}

.alert.warning {
  border-color: #d8b152;
  color: #684508;
  background: #fff8e5;
}

.status-badge.status-draft {
  color: #684508;
  background: #fff0c6;
}

.admin-course-week {
  margin-bottom: 12px;
  padding: 0;
  overflow: hidden;
}

.admin-course-week summary {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding: 16px 18px;
  cursor: pointer;
}

.admin-course-week .table-wrap {
  border-top: 1px solid #d7dde5;
}

.admin-course-info,
.admin-course-question {
  margin-bottom: 16px;
}

.admin-course-question-image {
  display: block;
  width: min(100%, 240px);
  height: auto;
  margin: 16px auto;
  border: 1px solid #d7dde5;
  border-radius: 7px;
}

.question-report-summary .admin-message-body {
  border-left: 5px solid #a43d3d;
}

.question-version-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  margin: 24px 0;
}

.question-version-grid .panel {
  min-width: 0;
}

.question-correction-editor,
.question-report-status-panel {
  margin-top: 24px;
}

.question-correction-editor > form,
.question-report-status-panel > form {
  min-width: 0;
}

.locked-question-fields {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.locked-question-fields span {
  display: grid;
  gap: 3px;
  padding: 12px;
  border: 1px solid #d7dde5;
  border-radius: 7px;
  background: #f6f8fa;
  overflow-wrap: anywhere;
}

.locked-question-fields strong {
  color: var(--muted);
  font-size: 0.76rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.question-option-editor {
  display: grid;
  gap: 12px;
  margin: 0;
  padding: 16px;
  border: 1px solid #d7dde5;
  border-radius: 7px;
}

.question-option-editor legend {
  padding: 0 6px;
  color: var(--navy);
  font-weight: 900;
}

.question-option-row {
  display: grid;
  grid-template-columns: 82px minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
}

.correct-option-choice {
  display: flex;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
}

.question-image-editor {
  display: grid;
  grid-template-columns: minmax(180px, 280px) minmax(0, 1fr);
  gap: 18px;
  align-items: start;
  padding: 16px;
  border: 1px solid #d7dde5;
  border-radius: 7px;
  background: #f8fafc;
}

.question-image-editor img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 7px;
}

@media (max-width: 760px) {
  .question-version-grid,
  .question-image-editor {
    grid-template-columns: 1fr;
  }

  .locked-question-fields {
    grid-template-columns: 1fr;
  }

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

.admin-course-options {
  color: var(--navy);
}

.admin-course-row-actions,
.admin-course-test-actions,
.admin-course-test-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.admin-course-test-picker {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 14px;
  align-items: end;
  margin-bottom: 18px;
}

.admin-course-test-picker .field {
  margin: 0;
}

.admin-course-test-jump {
  grid-column: 1 / -1;
  justify-self: start;
  color: var(--navy);
  font-weight: 850;
}

.admin-course-test-hero,
.admin-course-test-info,
.admin-course-test-question {
  max-width: 920px;
  margin-right: auto;
  margin-left: auto;
}

.admin-course-test-info {
  margin-bottom: 18px;
}

.admin-course-test-info summary,
.admin-course-review-checklist summary {
  color: var(--navy);
  font-weight: 900;
  cursor: pointer;
}

.admin-course-test-info-copy {
  display: grid;
  gap: 12px;
  margin-top: 16px;
}

.admin-course-test-info-copy .student-info-block {
  padding: 16px;
}

.admin-course-test-question {
  scroll-margin-top: 96px;
}

.admin-course-test-question > form {
  display: grid;
  gap: 16px;
}

.admin-course-test-solution {
  border-left: 5px solid var(--gold);
  background: #fffaf0;
}

.admin-course-test-solution p {
  margin: 6px 0;
}

.admin-course-test-nav {
  justify-content: space-between;
}

.admin-course-review-checklist {
  max-width: 920px;
  margin: 18px auto 0;
}

.admin-course-review-checklist ul {
  display: grid;
  gap: 8px;
  margin: 16px 0 0;
  padding-left: 22px;
}

@media (max-width: 700px) {
  .admin-course-test-picker {
    grid-template-columns: 1fr;
  }
}

.student-dashboard-hero {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 20px;
}

.student-site-link {
  flex: 0 0 auto;
}

.student-dashboard-overview {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(320px, 0.85fr);
  gap: 18px;
  align-items: stretch;
  margin-bottom: 24px;
}

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

.student-dashboard-stat {
  display: grid;
  gap: 8px;
  min-height: 118px;
  padding: 18px;
  border: 1px solid #d7dde5;
  border-radius: 7px;
  color: var(--navy);
  background: var(--white);
}

.student-dashboard-stat span {
  color: var(--muted);
  font-size: 0.82rem;
  font-weight: 900;
}

.student-dashboard-stat strong {
  align-self: end;
  font-size: clamp(1.7rem, 3vw, 2.3rem);
  line-height: 1.06;
}

.student-dashboard-stat small {
  color: var(--muted);
  font-size: 0.76rem;
  font-weight: 850;
}

.student-dashboard-progress-stat {
  align-content: space-between;
}

.student-dashboard-progress-track {
  position: relative;
  display: grid;
  place-items: center;
  align-self: end;
  height: 48px;
  overflow: hidden;
  border: 2px solid #d4ad4d;
  border-radius: 999px;
  background: #ffffff;
  box-shadow: inset 0 2px 5px rgba(7, 23, 43, 0.08);
}

.student-dashboard-progress-track i {
  position: absolute;
  inset: 0 auto 0 0;
  display: block;
  min-width: 0;
  border-radius: inherit;
  background: linear-gradient(90deg, #b88618, #f5cf69);
  box-shadow: inset 0 2px 0 rgba(255, 255, 255, 0.3);
  transition: width 500ms ease;
}

.student-dashboard-progress-track > strong {
  position: relative;
  z-index: 1;
  align-self: auto;
  color: #07172b;
  font-size: 1.15rem;
  line-height: 1;
  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.72);
}

.student-dashboard-stat.wide strong {
  font-size: clamp(1.15rem, 2.3vw, 1.55rem);
}

.student-dashboard-stat-link {
  color: var(--navy);
  text-decoration: none;
  transition: transform 160ms ease, border-color 160ms ease, box-shadow 160ms ease;
}

.student-dashboard-stat-link:hover,
.student-dashboard-stat-link:focus-visible {
  color: var(--navy);
  border-color: var(--gold);
  box-shadow: 0 10px 22px rgba(7, 23, 43, 0.12);
  text-decoration: none;
  transform: translateY(-3px);
}

.student-dashboard-stat.score-low strong {
  color: #b32929;
}

.student-dashboard-stat.score-medium strong {
  color: #c56c00;
}

.student-dashboard-stat.score-high strong {
  color: #b88618;
}

.student-dashboard-stat.score-good strong,
.student-subject-mark.score-good strong {
  color: #0e5940;
}

.student-dashboard-stat.score-watch strong,
.student-subject-mark.score-watch strong {
  color: #7d1f1f;
}

.student-dashboard-stat.score-empty strong,
.student-subject-mark.score-empty strong {
  color: var(--muted);
}

.student-dashboard-start {
  margin: 0;
}

.student-welcome-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  flex-wrap: wrap;
}

.student-dashboard-start h2,
.student-start-panel h2 {
  margin: 4px 0;
  color: var(--navy);
  font-size: clamp(1.25rem, 2.5vw, 1.6rem);
}

.student-dashboard-section {
  display: grid;
  gap: 14px;
  min-width: 0;
  margin-bottom: 24px;
}

.student-principal-support-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 24px;
  padding: 22px;
  border: 1px solid var(--gold);
  border-left-width: 5px;
  border-radius: 7px;
  color: #000000;
  background: var(--white);
}

.student-principal-support-card h2,
.student-support-form h2 {
  margin: 4px 0 0;
  color: #000000;
}

.student-principal-support-card p:not(.eyebrow) {
  margin: 7px 0 0;
}

.student-support-heading {
  align-items: flex-end;
}

.student-support-layout {
  display: grid;
  grid-template-columns: minmax(300px, 0.8fr) minmax(0, 1.2fr);
  gap: 20px;
  align-items: start;
}

.student-support-form {
  margin: 0;
}

.student-support-history {
  display: grid;
  gap: 14px;
  min-width: 0;
}

.student-support-thread-list {
  display: grid;
  gap: 12px;
}

.student-support-thread {
  padding: 18px;
  border: 1px solid #d7dde5;
  border-top: 4px solid var(--gold);
  border-radius: 7px;
  background: var(--white);
}

.student-support-thread.is-unread {
  border-color: #d4ad4d;
  border-top-color: #b88618;
  background: #fffdf5;
  box-shadow: 0 10px 24px rgba(184, 134, 24, 0.12);
}

.student-support-thread > p {
  margin: 14px 0 0;
}

.student-support-thread-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
}

.student-support-thread-head > div {
  display: grid;
  gap: 3px;
}

.student-support-thread-head span:not(.status-badge) {
  color: var(--muted);
  font-size: 0.78rem;
  font-weight: 900;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.student-support-thread-head strong {
  color: var(--navy);
  font-size: 0.86rem;
}

.student-support-reply {
  margin-top: 16px;
  padding: 16px;
  border-left: 4px solid var(--gold);
  background: #fffaf0;
}

.student-support-reply > span {
  color: var(--navy);
  font-size: 0.78rem;
  font-weight: 900;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.student-support-reply p {
  margin: 7px 0 0;
}

.student-support-read-form {
  margin-top: 14px;
}

.student-support-read-form .button {
  width: 100%;
}

.student-dashboard-content {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(280px, 360px);
  gap: 18px;
  align-items: start;
}

.student-dashboard-side {
  display: grid;
  gap: 16px;
  min-width: 0;
}

.student-section-heading {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 18px;
}

.student-section-count {
  flex: 0 0 auto;
  padding: 7px 10px;
  border: 1px solid #d7dde5;
  border-radius: 999px;
  color: var(--muted);
  background: var(--white);
  font-size: 0.78rem;
  font-weight: 900;
}

.student-section-heading h2,
.student-roadmap-heading h2,
.student-add-subject-panel h2 {
  margin: 4px 0 0;
  color: var(--navy);
  font-size: clamp(1.45rem, 3vw, 2rem);
}

.student-subject-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 16px;
}

.student-subject-card {
  display: grid;
  align-content: start;
  gap: 14px;
  min-width: 0;
  padding: 18px;
  border: 1px solid #d7dde5;
  border-top: 5px solid var(--gold);
  border-radius: 7px;
  background: var(--white);
  box-shadow: 0 18px 44px rgba(7, 23, 43, 0.06);
}

.student-subject-head {
  display: grid;
  grid-template-columns: 56px minmax(0, 1fr);
  gap: 14px;
  align-items: center;
}

.student-subject-icon {
  display: grid;
  place-items: center;
  width: 56px;
  height: 56px;
  border: 1px solid #eadab4;
  border-radius: 7px;
  color: var(--navy);
  background: #fff8e5;
  font-weight: 950;
  text-transform: uppercase;
}

.student-subject-card h3 {
  margin: 9px 0 3px;
  color: var(--navy);
  font-size: 1.45rem;
}

.student-subject-card p,
.student-subject-next span,
.student-add-subject-panel p,
.student-subject-option span {
  margin: 0;
  color: var(--muted);
}

.student-subject-progress {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 8px 12px;
  padding: 14px;
  border: 1px solid #e2e7ee;
  border-radius: 7px;
  background: #f8fafc;
}

.student-subject-progress .student-progress-track {
  grid-column: 1 / -1;
}

.student-subject-next {
  display: grid;
  gap: 4px;
  min-height: 66px;
  padding: 12px 14px;
  border: 1px solid #eadab4;
  border-radius: 7px;
  background: #fffaf0;
}

.student-subject-next strong {
  color: var(--navy);
  font-size: 1.02rem;
  line-height: 1.3;
}

.student-subject-mark {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: 4px 12px;
  padding: 12px 14px;
  border: 1px solid #e2e7ee;
  border-radius: 7px;
  background: var(--white);
}

.student-subject-mark span,
.student-subject-mark small {
  color: var(--muted);
  font-size: 0.78rem;
  font-weight: 850;
}

.student-subject-mark strong {
  color: var(--navy);
  font-size: 1.35rem;
  line-height: 1;
}

.student-subject-mark small {
  grid-column: 1 / -1;
}

.student-subject-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-top: auto;
}

.student-subject-actions .button {
  width: 100%;
}

.student-achievement-preview {
  display: grid;
  grid-template-columns: minmax(0, 0.8fr) minmax(350px, 1.2fr) minmax(170px, 0.44fr);
  gap: 20px;
  align-items: center;
  margin-top: 4px;
  padding: 20px 22px;
  overflow: hidden;
  border: 1px solid #d9bd6b;
  border-radius: 8px;
  color: var(--white);
  background:
    linear-gradient(90deg, rgba(255, 255, 255, 0.04) 1px, transparent 1px),
    linear-gradient(0deg, rgba(255, 255, 255, 0.04) 1px, transparent 1px),
    linear-gradient(135deg, #07172b 0%, #0c2742 62%, #3c2e19 100%);
  background-size: 30px 30px, 30px 30px, auto;
  box-shadow: 0 18px 44px rgba(7, 23, 43, 0.14);
}

.student-achievement-preview h2 {
  margin: 4px 0 0;
  color: #f8dd8b;
  font-size: 1.55rem;
}

.student-achievement-preview-copy > p:not(.eyebrow) {
  margin: 8px 0 0;
  color: #dbe4f0;
  font-size: 0.88rem;
  line-height: 1.45;
}

.student-achievement-preview .eyebrow {
  color: #f3d780;
}

.student-achievement-preview .student-badge-plaque {
  grid-template-columns: 82px minmax(0, 1fr);
  grid-template-rows: 1fr;
  align-items: center;
  gap: 16px;
  min-height: 132px;
  padding: 16px;
}

.student-achievement-preview .student-badge-medal {
  width: 76px;
  height: 76px;
  margin: 0;
}

.student-achievement-preview .student-badge-tier {
  justify-self: start;
  margin-bottom: 8px;
}

.student-achievement-preview .student-badge-plaque strong,
.student-achievement-preview .student-badge-plaque p {
  text-align: left;
}

.student-achievement-preview .student-badge-plaque p {
  margin-top: 4px;
}

.student-achievement-preview .button {
  width: 100%;
}

.student-achievement-preview-action {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.student-achievement-preview-action > strong {
  color: #f8dd8b;
  font-size: 2rem;
  line-height: 1;
}

.student-achievement-preview-action > span {
  margin-bottom: 10px;
  color: #dbe4f0;
  font-size: 0.78rem;
  font-weight: 850;
}

.student-add-subject-card {
  align-content: start;
  border-top-color: #0e6f68;
  background:
    linear-gradient(145deg, rgba(237, 247, 255, 0.86), rgba(255, 250, 240, 0.9)),
    var(--white);
}

.student-add-subject-card h3 {
  margin-top: 4px;
}

.student-add-subject-icon {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  border: 1px solid #9cc5e8;
  border-radius: 50%;
  color: #123f63;
  background: #edf7ff;
  font-size: 1.8rem;
  font-weight: 800;
  line-height: 1;
}

.student-add-subject-meta {
  display: grid;
  gap: 2px;
  padding: 12px 14px;
  border: 1px solid #d7dde5;
  border-radius: 7px;
  background: rgba(255, 255, 255, 0.76);
}

.student-add-subject-meta span {
  color: var(--muted);
  font-size: 0.76rem;
  font-weight: 850;
}

.student-add-subject-meta strong {
  color: var(--navy);
}

.student-add-subject-card .button {
  align-self: end;
  width: 100%;
  margin-top: auto;
}

.student-dashboard-side .student-add-subject-panel {
  grid-template-columns: 1fr;
  margin-top: 0;
  padding: 18px;
}

.student-dashboard-side .student-subject-shelf {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.student-dashboard-side .student-subject-option {
  min-height: 72px;
  padding: 10px;
}

.student-dashboard-side .student-subject-option strong {
  font-size: 0.86rem;
  line-height: 1.15;
}

.student-dashboard-side .student-subject-option span {
  font-size: 0.78rem;
}

.student-achievement-wall {
  position: relative;
  display: grid;
  gap: 18px;
  margin-top: 30px;
  padding: 24px;
  overflow: hidden;
  border: 1px solid #d9bd6b;
  border-radius: 8px;
  color: var(--white);
  background:
    linear-gradient(90deg, rgba(255, 255, 255, 0.04) 1px, transparent 1px),
    linear-gradient(0deg, rgba(255, 255, 255, 0.04) 1px, transparent 1px),
    linear-gradient(135deg, #07172b 0%, #0c2742 58%, #3c2e19 100%);
  background-size: 34px 34px, 34px 34px, auto;
  box-shadow:
    inset 0 0 0 4px rgba(200, 157, 56, 0.16),
    0 22px 52px rgba(7, 23, 43, 0.16);
}

.student-achievements-page {
  margin-top: 0;
}

.student-achievements-page .student-badge-plaque {
  min-height: 300px;
}

.student-achievement-wall::before,
.student-achievement-wall::after {
  position: absolute;
  right: 24px;
  left: 24px;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(239, 224, 182, 0.72), transparent);
  content: "";
}

.student-achievement-wall::before {
  top: 14px;
}

.student-achievement-wall::after {
  bottom: 14px;
}

.student-achievement-heading,
.student-certificate-shelf {
  position: relative;
  z-index: 1;
}

.student-achievement-heading {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 18px;
}

.student-achievement-heading h2,
.student-certificate-shelf h3 {
  margin: 4px 0 0;
  color: #f8dd8b;
}

.student-achievement-heading > span {
  flex: 0 0 auto;
  padding: 8px 12px;
  border: 1px solid rgba(239, 224, 182, 0.42);
  border-radius: 999px;
  color: #f9e8b0;
  background: rgba(255, 255, 255, 0.07);
  font-size: 0.82rem;
  font-weight: 900;
}

.student-achievement-wall .eyebrow {
  color: #f3d780;
}

.student-award-ladder {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 12px;
}

.student-award-ladder span,
.student-badge-tier {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 28px;
  padding: 5px 10px;
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 999px;
  font-size: 0.74rem;
  font-weight: 950;
  text-transform: uppercase;
}

.student-award-ladder .tier-bronze,
.student-badge-plaque.tier-bronze .student-badge-tier {
  color: #ffe0c0;
  background: rgba(161, 98, 43, 0.34);
}

.student-award-ladder .tier-silver,
.student-badge-plaque.tier-silver .student-badge-tier {
  color: #f1f5f9;
  background: rgba(148, 163, 184, 0.3);
}

.student-award-ladder .tier-gold,
.student-badge-plaque.tier-gold .student-badge-tier {
  color: #fff3bc;
  background: rgba(200, 157, 56, 0.34);
}

.student-badge-gallery {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr) 46px;
  align-items: center;
  gap: 12px;
}

.student-badge-window {
  min-width: 0;
  overflow: hidden;
  border-radius: 8px;
}

.student-badge-track {
  display: flex;
  transform: translateX(calc(var(--award-index, 0) * -100%));
  transition: transform 0.24s ease;
}

.student-badge-plaque {
  display: grid;
  grid-template-rows: auto 1fr auto;
  gap: 12px;
  flex: 0 0 100%;
  min-height: 218px;
  padding: 18px;
  border: 1px solid rgba(239, 224, 182, 0.34);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.08);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.05);
}

.student-badge-plaque.is-unlocked {
  border-color: rgba(248, 221, 139, 0.8);
  background: linear-gradient(180deg, rgba(255, 250, 233, 0.16), rgba(255, 255, 255, 0.07));
}

.student-badge-plaque.tier-bronze.is-unlocked {
  border-color: rgba(240, 180, 125, 0.74);
}

.student-badge-plaque.tier-silver.is-unlocked {
  border-color: rgba(226, 232, 240, 0.82);
}

.student-badge-plaque.tier-gold.is-unlocked {
  border-color: rgba(255, 232, 147, 0.95);
  background:
    linear-gradient(180deg, rgba(255, 243, 168, 0.2), rgba(255, 255, 255, 0.08)),
    rgba(255, 255, 255, 0.07);
  box-shadow:
    inset 0 0 0 1px rgba(255, 255, 255, 0.08),
    0 0 28px rgba(248, 221, 139, 0.12);
}

.student-badge-plaque.is-locked {
  opacity: 0.64;
}

.student-badge-plaque.is-active {
  opacity: 1;
}

.student-badge-medal {
  position: relative;
  isolation: isolate;
  display: grid;
  place-items: center;
  width: 86px;
  height: 86px;
  margin: 0 auto;
  overflow: hidden;
  border: 4px solid #f4d477;
  border-radius: 50%;
  color: var(--navy);
  background: #c89d38;
  font-size: 1.18rem;
  font-weight: 950;
  letter-spacing: 0;
  text-shadow:
    0 1px 0 rgba(255, 255, 255, 0.58),
    0 -1px 0 rgba(0, 0, 0, 0.22);
  box-shadow:
    0 14px 24px rgba(0, 0, 0, 0.32),
    inset 0 0 0 3px rgba(255, 255, 255, 0.4),
    inset 0 0 0 9px rgba(0, 0, 0, 0.1),
    inset 0 -14px 22px rgba(0, 0, 0, 0.26);
}

.student-badge-medal::before {
  position: absolute;
  inset: 9px;
  z-index: -1;
  border: 2px solid rgba(255, 255, 255, 0.45);
  border-radius: inherit;
  background:
    radial-gradient(circle at 34% 28%, rgba(255, 255, 255, 0.72), transparent 0 18%, transparent 30%),
    repeating-conic-gradient(from 8deg, rgba(255, 255, 255, 0.18) 0 7deg, rgba(0, 0, 0, 0.08) 7deg 14deg),
    radial-gradient(circle at 50% 58%, rgba(255, 255, 255, 0.18), transparent 48%);
  box-shadow:
    inset 0 0 0 5px rgba(255, 255, 255, 0.12),
    inset 0 -10px 15px rgba(0, 0, 0, 0.2);
  content: "";
}

.student-badge-medal::after {
  position: absolute;
  top: -22px;
  left: -26px;
  width: 62px;
  height: 130px;
  border-radius: 999px;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.48), transparent);
  content: "";
  opacity: 0.7;
  transform: rotate(34deg);
}

.student-badge-plaque.tier-bronze .student-badge-medal {
  border-color: #f0b47d;
  background:
    radial-gradient(circle at 34% 26%, #ffe3c0, transparent 0 22%, transparent 34%),
    conic-gradient(from 18deg, #6f3d1d, #d58a45, #fff0d2, #a85d2d, #6f3d1d, #e7a15d, #6f3d1d);
  box-shadow:
    0 14px 24px rgba(0, 0, 0, 0.32),
    0 0 0 1px rgba(240, 180, 125, 0.3),
    inset 0 0 0 3px rgba(255, 235, 205, 0.42),
    inset 0 0 0 10px rgba(79, 43, 21, 0.16),
    inset 0 -14px 22px rgba(70, 36, 15, 0.32);
}

.student-badge-plaque.tier-silver .student-badge-medal {
  border-color: #f8fafc;
  background:
    radial-gradient(circle at 32% 24%, #ffffff, transparent 0 24%, transparent 36%),
    conic-gradient(from 20deg, #64748b, #dbe4ee, #ffffff, #a6b4c4, #64748b, #f8fafc, #64748b);
  box-shadow:
    0 14px 24px rgba(0, 0, 0, 0.32),
    0 0 0 1px rgba(226, 232, 240, 0.36),
    inset 0 0 0 3px rgba(255, 255, 255, 0.58),
    inset 0 0 0 10px rgba(71, 85, 105, 0.14),
    inset 0 -14px 22px rgba(51, 65, 85, 0.22);
}

.student-badge-plaque.tier-gold .student-badge-medal {
  border-color: #ffe893;
  background:
    radial-gradient(circle at 34% 23%, #fff8c8, transparent 0 24%, transparent 35%),
    conic-gradient(from 18deg, #8b650c, #e7b92d, #fff3a8, #c69218, #8b650c, #ffd96a, #8b650c);
  box-shadow:
    0 16px 28px rgba(0, 0, 0, 0.34),
    0 0 32px rgba(248, 221, 139, 0.34),
    inset 0 0 0 3px rgba(255, 255, 255, 0.54),
    inset 0 0 0 10px rgba(116, 82, 8, 0.14),
    inset 0 -14px 22px rgba(84, 55, 5, 0.28);
}

.student-badge-plaque.is-locked .student-badge-medal {
  border-color: rgba(255, 255, 255, 0.34);
  color: #566170;
  background:
    radial-gradient(circle at 34% 26%, rgba(255, 255, 255, 0.9), transparent 0 22%, transparent 34%),
    conic-gradient(from 18deg, #64748b, #cbd5e1, #f8fafc, #94a3b8, #64748b, #e2e8f0, #64748b);
  filter: grayscale(0.62);
  opacity: 0.62;
  box-shadow:
    0 8px 16px rgba(0, 0, 0, 0.22),
    inset 0 0 0 3px rgba(255, 255, 255, 0.34),
    inset 0 -10px 18px rgba(0, 0, 0, 0.18);
}

.student-badge-plaque strong {
  display: block;
  color: #fff8d8;
  font-size: 1.03rem;
  text-align: center;
}

.student-badge-plaque p {
  margin: 7px 0 0;
  color: #dbe4f0;
  font-size: 0.84rem;
  line-height: 1.42;
  text-align: center;
}

.student-badge-plaque small {
  justify-self: center;
  padding: 5px 9px;
  border: 1px solid rgba(239, 224, 182, 0.36);
  border-radius: 999px;
  color: #f8dd8b;
  font-size: 0.72rem;
  font-weight: 900;
}

.student-badge-nav {
  display: grid;
  place-items: center;
  width: 46px;
  height: 64px;
  border: 1px solid rgba(239, 224, 182, 0.42);
  border-radius: 8px;
  color: #f8dd8b;
  background: rgba(255, 255, 255, 0.08);
  font-size: 2rem;
  font-weight: 900;
  cursor: pointer;
}

.student-badge-nav:hover,
.student-badge-nav:focus-visible {
  border-color: #f8dd8b;
  background: rgba(255, 255, 255, 0.14);
  outline: 0;
}

.student-badge-nav:disabled {
  opacity: 0.42;
  cursor: not-allowed;
}

.student-badge-position {
  grid-column: 1 / -1;
  justify-self: center;
  color: #dbe4f0;
  font-size: 0.8rem;
  font-weight: 900;
}

.student-certificate-shelf {
  display: grid;
  grid-template-columns: minmax(190px, 0.46fr) minmax(0, 1fr);
  gap: 16px;
  align-items: start;
  padding-top: 18px;
  border-top: 1px solid rgba(239, 224, 182, 0.26);
}

.student-certificate-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 12px;
}

.student-certificate-card {
  display: grid;
  gap: 8px;
  min-height: 154px;
  padding: 15px;
  border: 1px solid rgba(239, 224, 182, 0.45);
  border-radius: 8px;
  color: var(--navy);
  background:
    linear-gradient(90deg, rgba(200, 157, 56, 0.1), transparent 34%),
    #fffaf0;
}

.student-certificate-card.is-locked {
  color: #3d4652;
  background: #eef1f5;
}

.student-certificate-card > span {
  justify-self: start;
  padding: 5px 8px;
  border-radius: 999px;
  color: #684508;
  background: #fff0c6;
  font-size: 0.72rem;
  font-weight: 900;
}

.student-certificate-card.is-unlocked > span {
  color: #0e5940;
  background: #dff8ec;
}

.student-certificate-card strong {
  color: inherit;
  font-size: 1.05rem;
}

.student-certificate-card p {
  margin: 0;
  color: var(--muted);
  font-size: 0.84rem;
}

.student-certificate-card .button {
  align-self: end;
  width: 100%;
}

.student-add-subject-panel {
  display: grid;
  grid-template-columns: minmax(240px, 0.8fr) minmax(0, 1.2fr);
  gap: 20px;
  align-items: center;
  margin-top: 30px;
  padding: 22px;
  border: 1px solid #d7dde5;
  border-left: 5px solid var(--gold);
  border-radius: 7px;
  background: var(--white);
}

.student-subject-shelf {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.student-subject-option {
  display: grid;
  gap: 6px;
  min-height: 86px;
  padding: 14px;
  border: 1px solid #e2e7ee;
  border-radius: 7px;
  background: #f8fafc;
}

.student-subject-option strong {
  color: var(--navy);
}

.student-course-topline {
  margin-bottom: 18px;
}

.student-course-focus {
  margin-top: 0;
}

.student-course-summary h1 {
  margin: 10px 0 4px;
  color: var(--navy);
  font-size: clamp(1.7rem, 3vw, 2.4rem);
}

.student-roadmap-heading {
  margin-top: 8px;
}

.student-empty-state {
  max-width: 720px;
}

.student-empty-state h2 {
  margin: 0 0 8px;
}

.student-course-card {
  display: grid;
  gap: 22px;
  padding: 24px;
  border: 1px solid #d7dde5;
  border-left: 5px solid var(--gold);
  border-radius: 7px;
  background: var(--white);
  box-shadow: 0 18px 50px rgba(7, 23, 43, 0.06);
}

.student-course-summary {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
}

.student-course-summary h2 {
  margin: 10px 0 4px;
  font-size: clamp(1.45rem, 3vw, 2rem);
}

.student-course-summary p,
.student-start-panel p,
.student-course-card .expiry-note {
  margin: 0;
  color: var(--muted);
}

.student-course-days {
  display: grid;
  place-items: center;
  min-width: 112px;
  padding: 14px;
  border: 1px solid #eadab4;
  border-radius: 7px;
  color: var(--navy);
  background: #fff8e5;
}

.student-course-days strong {
  font-size: 2rem;
  line-height: 1;
}

.student-course-days span {
  color: var(--muted);
  font-size: 0.78rem;
  font-weight: 800;
}

.student-progress-panel {
  display: grid;
  grid-template-columns: auto minmax(120px, 1fr) auto;
  align-items: center;
  gap: 14px;
  padding: 14px 16px;
  border: 1px solid #e2e7ee;
  border-radius: 7px;
  background: #f8fafc;
}

.student-progress-copy {
  display: grid;
  gap: 1px;
}

.student-progress-copy span,
.student-progress-percent {
  color: var(--muted);
  font-size: 0.82rem;
  font-weight: 800;
}

.student-progress-copy strong {
  color: var(--navy);
}

.student-progress-track {
  height: 10px;
  overflow: hidden;
  border-radius: 999px;
  background: #e2e8f0;
}

.student-progress-track span {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--gold), #1d6f4b);
}

.student-start-panel {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 18px;
  padding: 20px;
  border: 1px solid #eadab4;
  border-left: 5px solid var(--gold);
  border-radius: 7px;
  background:
    linear-gradient(135deg, rgba(255, 248, 229, 0.96), rgba(240, 255, 245, 0.92) 54%, rgba(237, 247, 255, 0.9));
}

.student-start-panel h3 {
  margin: 4px 0 4px;
  color: var(--navy);
  font-size: 1.35rem;
}

.student-start-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 12px;
}

.student-start-pills span {
  padding: 7px 10px;
  border: 1px solid rgba(7, 23, 43, 0.12);
  border-radius: 999px;
  color: var(--navy);
  background: rgba(255, 255, 255, 0.72);
  font-size: 0.8rem;
  font-weight: 900;
}

.student-start-progress {
  display: grid;
  grid-template-columns: auto minmax(120px, 1fr) auto;
  grid-column: 1 / -1;
  align-items: center;
  gap: 14px;
  padding: 14px 16px;
  border: 1px solid #eadab4;
  border-radius: 7px;
  background: rgba(255, 255, 255, 0.68);
}

.student-start-progress p {
  grid-column: 1 / -1;
  margin: -3px 0 0;
  color: #375064;
  font-size: 0.9rem;
  font-weight: 800;
}

.student-roadmap {
  display: grid;
  gap: 12px;
}

.student-term-block {
  display: grid;
  min-width: 0;
  overflow: hidden;
  border: 1px solid #e0e6ee;
  border-left: 5px solid var(--gold);
  border-radius: 7px;
  background: #fbfcfe;
}

.student-term-block:nth-child(2) {
  border-left-color: #0e6f68;
}

.student-term-block:nth-child(3) {
  border-left-color: #4c6fd6;
}

.student-term-block:nth-child(4) {
  border-left-color: #cf6b4a;
}

.student-term-heading {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
  gap: 16px;
  min-height: 66px;
  padding: 14px 16px;
  color: var(--navy);
  cursor: pointer;
  list-style: none;
}

.student-term-heading::-webkit-details-marker {
  display: none;
}

.student-term-heading:hover,
.student-term-heading:focus-visible {
  background: linear-gradient(90deg, #fff8e5, #f0fff5);
  outline: 0;
}

.student-term-copy > span {
  color: var(--gold);
  font-size: 0.82rem;
  font-weight: 900;
  text-transform: uppercase;
}

.student-term-heading strong {
  color: var(--navy);
  font-size: 1.05rem;
}

.student-term-copy {
  display: grid;
  gap: 2px;
}

.student-term-count {
  padding: 6px 10px;
  border: 1px solid #eadab4;
  border-radius: 999px;
  color: var(--muted) !important;
  background: #fffaf0;
  font-size: 0.76rem !important;
  font-weight: 900;
  white-space: nowrap;
  text-transform: none !important;
}

.student-term-chevron {
  position: relative;
  width: 34px;
  height: 34px;
  border: 1px solid #d7dde5;
  border-radius: 6px;
  background: var(--white);
}

.student-term-chevron::before,
.student-term-chevron::after {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 14px;
  height: 2px;
  border-radius: 999px;
  background: var(--navy);
  content: "";
  transform: translate(-50%, -50%);
}

.student-term-chevron::after {
  transform: translate(-50%, -50%) rotate(90deg);
  transition: transform 0.18s ease, opacity 0.18s ease;
}

.student-term-block[open] {
  border-color: #e3c36c;
  background: var(--white);
}

.student-term-block[open] .student-term-heading {
  border-bottom: 1px solid #e7edf5;
}

.student-term-block[open] .student-term-chevron::after {
  opacity: 0;
  transform: translate(-50%, -50%) rotate(0deg);
}

.student-week-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(270px, 1fr));
  gap: 12px;
  padding: 14px;
}

.student-week-card {
  min-width: 0;
  padding: 14px;
  border: 1px solid #e0e6ee;
  border-radius: 7px;
  background: #fbfcfe;
}

.student-week-title {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 10px;
}

.student-week-title strong {
  color: var(--navy);
}

.student-week-title span {
  color: var(--muted);
  font-size: 0.78rem;
  font-weight: 800;
}

.student-lesson-list {
  display: grid;
  gap: 8px;
}

.student-lesson-row {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 12px;
  min-height: 108px;
  padding: 14px 15px 12px;
  border: 1px solid #e3e8ef;
  border-radius: 10px;
  color: var(--muted);
  background: var(--white);
  font-size: 0.86rem;
  font-weight: 800;
}

a.student-lesson-row:hover,
a.student-lesson-row:focus-visible {
  color: var(--navy);
  border-color: var(--gold);
  text-decoration: none;
}

.student-lesson-row .student-lesson-title {
  display: block;
  min-width: 0;
  color: currentColor;
  font-size: 1rem;
  font-weight: 900;
  line-height: 1.3;
  overflow-wrap: anywhere;
}

.student-lesson-row .student-lesson-footer {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 7px;
  min-width: 0;
  margin-top: auto;
  padding-top: 10px;
  border-top: 1px solid rgba(8, 27, 48, 0.12);
}

.student-lesson-row .student-lesson-time,
.student-lesson-row .student-lesson-score {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 4px 8px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.78);
  color: var(--muted);
  font-size: 0.72rem;
  font-weight: 800;
  line-height: 1;
  white-space: nowrap;
}

.student-lesson-row .student-lesson-score {
  border: 1px solid currentColor;
  font-size: 0.76rem;
  font-weight: 950;
}

.student-lesson-row .student-lesson-score.score-low {
  color: #b32929;
}

.student-lesson-row .student-lesson-score.score-medium {
  color: #c56c00;
}

.student-lesson-row .student-lesson-score.score-high {
  color: #9a6b08;
}

.student-lesson-row strong {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 74px;
  margin-left: auto;
  padding: 5px 8px;
  border: 1px solid currentColor;
  border-radius: 999px;
  background: var(--white);
  font-size: 0.76rem;
  white-space: nowrap;
}

.student-lesson-row.state-completed {
  color: #0e5940;
  border-color: #9ed9b5;
  background: #f0fff5;
}

.student-lesson-row.state-completed strong {
  color: #0e5940;
  background: #dff8ec;
}

.student-lesson-row.state-available,
.student-lesson-row.state-in_progress {
  color: #0c4b7c;
  border-color: #9fcaef;
  background: #eef7ff;
}

.student-lesson-row.state-available strong,
.student-lesson-row.state-in_progress strong {
  color: #0c4b7c;
  background: #dfefff;
}

.student-lesson-row.state-locked,
.student-lesson-row.state-coming-soon {
  color: #684508;
  border-color: #ead79a;
  background: #fff9e8;
}

.student-lesson-row.state-locked strong,
.student-lesson-row.state-coming-soon strong {
  color: #684508;
  background: #fff0c6;
}

.student-lesson-topline {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 14px;
}

.student-lesson-hero {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  column-gap: 18px;
  row-gap: 8px;
  width: 100vw;
  max-width: none;
  margin: 0 calc(50% - 50vw) 44px;
  padding: 18px max(24px, calc((100vw - 1180px) / 2));
  border: 0;
  border-top: 2px solid var(--gold);
  border-bottom: 6px solid var(--gold);
  border-radius: 0;
  color: #090909;
  background: #ffffff;
  box-shadow: 0 14px 30px rgba(192, 143, 28, 0.16);
}

.student-shell > .student-lesson-hero:first-child {
  margin-top: -38px;
}

.student-lesson-hero::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -105px;
  height: 112px;
  background:
    linear-gradient(to bottom, rgba(204, 158, 48, 0.24), rgba(204, 158, 48, 0) 82%),
    url("lesson-curls.svg") center 2px / min(900px, 96vw) 108px no-repeat;
  opacity: 0.82;
  filter: drop-shadow(0 9px 12px rgba(184, 134, 24, 0.18));
  -webkit-mask-image: linear-gradient(to bottom, #000 0%, #000 68%, transparent 100%);
  mask-image: linear-gradient(to bottom, #000 0%, #000 68%, transparent 100%);
  transform-origin: 50% 0;
  animation: student-curls-alive 8s ease-in-out infinite;
  will-change: transform, opacity;
  pointer-events: none;
}

@keyframes student-curls-alive {
  0%, 100% {
    opacity: 0.78;
    transform: translateY(0);
  }
  32% {
    opacity: 0.86;
    transform: translateY(3px);
  }
  68% {
    opacity: 0.8;
    transform: translateY(-2px);
  }
}

@media (prefers-reduced-motion: reduce) {
  .student-lesson-hero::after {
    animation: none;
  }
}

.student-lesson-hero .eyebrow {
  grid-column: 1;
  margin: 0;
  color: #9a6b08;
  font-size: 0.78rem;
  line-height: 1.2;
}

.student-lesson-hero h1 {
  grid-column: 1;
  min-width: 0;
  margin: 0;
  color: #080808;
  font-size: clamp(1.3rem, 2.25vw, 1.8rem);
  line-height: 1.15;
}

.student-lesson-meta {
  grid-column: 2;
  grid-row: 1 / span 2;
  align-self: center;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: flex-end;
}

.student-lesson-meta span {
  position: relative;
  padding: 6px 10px;
  border: 1px solid #d4ad4d;
  border-radius: 999px;
  color: #ffffff;
  background: linear-gradient(to bottom, #252525 0%, #090909 48%, #000000 100%);
  font-size: 0.74rem;
  font-weight: 800;
  white-space: nowrap;
  box-shadow:
    inset 0 2px 0 rgba(255, 255, 255, 0.13),
    inset 0 -3px 0 rgba(184, 134, 24, 0.26),
    0 3px 0 #765205,
    0 7px 13px rgba(0, 0, 0, 0.17);
  transform: translateY(0);
  transition: transform 160ms ease, box-shadow 160ms ease, filter 160ms ease;
}

.student-lesson-meta span:hover {
  box-shadow:
    inset 0 3px 0 rgba(255, 255, 255, 0.2),
    inset 0 -4px 0 rgba(184, 134, 24, 0.34),
    0 6px 0 #765205,
    0 13px 20px rgba(0, 0, 0, 0.25);
  filter: brightness(1.12);
  transform: translateY(-4px) scale(1.025);
}

.student-lesson-meta .student-pass-mark-badge.is-below-pass {
  color: #ff6b65;
  border-color: #bd332f;
  box-shadow:
    inset 0 2px 0 rgba(255, 255, 255, 0.13),
    inset 0 -3px 0 rgba(189, 51, 47, 0.32),
    0 3px 0 #7f211f,
    0 7px 13px rgba(127, 33, 31, 0.2);
}

.student-lesson-meta .student-pass-mark-badge.is-below-pass:hover {
  box-shadow:
    inset 0 3px 0 rgba(255, 255, 255, 0.2),
    inset 0 -4px 0 rgba(189, 51, 47, 0.4),
    0 6px 0 #7f211f,
    0 13px 20px rgba(127, 33, 31, 0.28);
}

.student-lesson-meta .student-pass-mark-badge.is-passed {
  color: #f5cf69;
  border-color: #d4ad4d;
}

.student-lesson-meta .student-attempt-number {
  color: #f5cf69;
  font-weight: 950;
}

@media (prefers-reduced-motion: reduce) {
  .student-lesson-meta span {
    transition: none;
  }
}

.student-lesson-objective {
  grid-column: 1 / -1;
  margin: 2px 0 0;
  color: #252525;
  font-size: 0.9rem;
  line-height: 1.45;
}

.student-lesson-objective strong {
  color: #9a6b08;
}

.admin-course-test-hero {
  display: block;
  width: auto;
  max-width: 920px;
  margin: 22px auto 20px;
  padding: 18px 24px;
  border: 0;
  border-top: 3px solid var(--gold);
  border-bottom: 3px solid var(--gold);
  border-radius: 0;
  color: var(--white);
  background: linear-gradient(105deg, #07172b 0%, #102d4b 68%, #173b5f 100%);
  box-shadow: 0 0 0 100vmax #07172b, 0 12px 28px rgba(7, 23, 43, 0.18);
  clip-path: inset(0 -100vmax);
  scroll-margin-top: 96px;
}

.admin-course-test-ribbon-inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px 18px;
  width: min(100%, 920px);
  margin: 0 auto;
}

.admin-course-test-hero .eyebrow {
  color: #f6d778;
}

.admin-course-test-hero h2 {
  margin: 3px 0 0;
  color: var(--white);
  font-size: clamp(1.35rem, 2.25vw, 1.9rem);
  line-height: 1.15;
}

.admin-course-test-hero .student-lesson-meta {
  grid-column: 2;
  grid-row: 1;
}

.admin-course-test-hero .student-lesson-meta span {
  border-color: rgba(246, 215, 120, 0.72);
  color: var(--navy);
  background: #fff8e2;
}

.admin-course-test-hero .student-lesson-objective {
  color: rgba(255, 255, 255, 0.86);
}

.admin-course-test-hero .student-lesson-objective strong {
  color: #f6d778;
}

@media (max-width: 700px) {
  .admin-course-test-hero {
    padding: 16px 18px;
  }

  .admin-course-test-ribbon-inner {
    grid-template-columns: 1fr;
  }

  .admin-course-test-hero .student-lesson-meta {
    grid-column: 1;
    grid-row: auto;
    justify-content: flex-start;
  }
}

.student-lesson-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 0;
  align-items: start;
}

.student-quiz-panel {
  display: grid;
  gap: 16px;
  scroll-margin-top: 22px;
}

.student-info-block,
.student-question-card,
.student-result-panel,
.student-override-panel {
  padding: 22px;
  border: 1px solid #d7dde5;
  border-radius: 7px;
  background: var(--white);
}

.student-info-block {
  border-left: 5px solid var(--gold);
  color: var(--navy);
  font-weight: 700;
}

.student-question-card {
  display: grid;
  gap: 18px;
}

.student-question-step {
  width: fit-content;
  margin: 0;
  padding: 6px 10px;
  border-radius: 999px;
  color: var(--navy);
  background: #fff4cf;
  font-size: 0.88rem;
  font-weight: 900;
}

.student-question-answer-divider {
  position: relative;
  height: 34px;
  margin: 22px 0 10px;
  background: linear-gradient(to right, transparent, rgba(184, 134, 24, 0.48) 10%, rgba(184, 134, 24, 0.48) 90%, transparent) center / 100% 1px no-repeat;
}

.student-question-answer-divider::after {
  content: "↓  ↓  ↓";
  position: absolute;
  top: 50%;
  left: 0;
  width: 128px;
  height: 34px;
  color: #b88618;
  background: #ffffff;
  font-size: 22px;
  font-weight: 900;
  line-height: 34px;
  padding-left: 10px;
  text-align: left;
  text-shadow: 0 3px 8px rgba(184, 134, 24, 0.22);
  transform: translateY(-50%);
}

.student-answer-toast {
  position: fixed;
  top: 96px;
  right: 24px;
  z-index: 100;
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 190px;
  padding: 13px 18px 11px;
  border: 2px solid currentColor;
  border-bottom-width: 5px;
  border-radius: 14px;
  background: #ffffff;
  font-size: 1.05rem;
  line-height: 1.1;
  box-shadow: 0 15px 30px rgba(7, 23, 43, 0.22);
  pointer-events: none;
  animation: student-answer-toast-in 240ms ease-out both;
  transition: opacity 350ms ease, transform 350ms ease;
}

.student-answer-toast > span {
  display: grid;
  place-items: center;
  flex: 0 0 28px;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  color: #ffffff;
  font-weight: 950;
}

.student-answer-toast.is-correct {
  color: #117442;
  background: #effcf4;
}

.student-answer-toast.is-correct > span {
  background: #117442;
}

.student-answer-toast.is-retry {
  color: #b45c00;
  background: #fff5e5;
}

.student-answer-toast.is-retry > span {
  background: #b45c00;
}

.student-answer-toast.is-wrong {
  color: #b32929;
  background: #fff0f0;
}

.student-answer-toast.is-wrong > span {
  background: #b32929;
}

.student-answer-toast.is-leaving {
  opacity: 0;
  transform: translateY(-12px) scale(0.96);
}

@keyframes student-answer-toast-in {
  from {
    opacity: 0;
    transform: translateY(-16px) scale(0.94);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@media (max-width: 640px) {
  .student-answer-toast {
    top: 88px;
    right: 12px;
    left: 12px;
    justify-content: center;
    min-width: 0;
  }
}

.student-visual-support {
  display: grid;
  grid-template-columns: minmax(280px, 480px) minmax(240px, 1fr);
  gap: 18px;
  align-items: start;
}

.student-visual-detail-panel {
  grid-template-columns: minmax(300px, 42%) minmax(0, 1fr);
  gap: 0;
  align-items: stretch;
  overflow: hidden;
  border: 1px solid #d7dde5;
  border-radius: 12px;
  background: var(--white);
  box-shadow: 0 12px 28px rgba(7, 23, 43, 0.08);
}

.student-visual-detail-panel .student-question-visual {
  justify-self: stretch;
  width: 100%;
  background: #fff8fb;
}

.student-visual-detail-panel .student-question-visual img {
  border: 0;
  border-radius: 0;
}

.student-visual-detail-panel .student-question-visual figcaption {
  margin: 0;
  padding: 10px 14px;
  border-top: 1px solid #eadde2;
  background: var(--white);
}

.student-visual-detail-panel .student-visual-transcript {
  align-self: stretch;
  padding: 24px;
  border: 0;
  border-left: 5px solid var(--gold);
  border-radius: 0;
  background: var(--white);
}

@media (max-width: 700px) {
  .student-visual-detail-panel {
    grid-template-columns: 1fr;
  }

  .student-visual-detail-panel .student-visual-transcript {
    border-top: 5px solid var(--gold);
    border-left: 0;
  }
}

.student-question-visual {
  justify-self: center;
  width: min(100%, 480px);
  margin: 0;
}

.student-question-visual img {
  display: block;
  width: 100%;
  height: auto;
  border: 1px solid #d7dde5;
  border-radius: 7px;
}

.student-question-visual figcaption {
  margin-top: 8px;
  text-align: center;
  font-size: 0.9rem;
  font-weight: 800;
}

.student-question-visual figcaption a {
  color: var(--navy);
}

.student-visual-transcript {
  padding: 18px;
  border: 1px solid #d7dde5;
  border-left: 5px solid var(--gold);
  border-radius: 7px;
  color: var(--navy);
  background: #fbfcfe;
  font-size: 1rem;
  line-height: 1.45;
}

.student-visual-transcript > strong {
  display: block;
  margin-bottom: 12px;
  font-size: 0.82rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.student-visual-transcript p {
  margin: 7px 0;
}

.student-visual-transcript .is-heading {
  margin-bottom: 12px;
  font-size: 1.15rem;
  font-weight: 900;
}

.student-visual-transcript .is-emphasis {
  font-weight: 850;
}

.student-question-card h2,
.student-result-panel h2,
.student-override-panel h2,
.student-lesson-aside h2 {
  margin: 0;
  color: var(--navy);
}

.student-question-card h2 {
  font-size: clamp(1.3rem, 2vw, 1.75rem);
  line-height: 1.3;
}

.student-question-progress {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  color: var(--muted);
  font-size: 0.85rem;
  font-weight: 900;
}

.student-question-tools {
  display: flex;
  align-items: center;
  gap: 12px;
}

.student-report-button {
  display: inline-grid;
  place-items: center;
  flex: 0 0 44px;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 2px solid #a43d3d;
  border-radius: 50%;
  color: #8b2525;
  background: #fff5f5;
  font: inherit;
  font-size: 0.9rem;
  font-weight: 950;
  cursor: pointer;
  transition: background 160ms ease, color 160ms ease, transform 160ms ease;
}

.student-report-button:hover,
.student-report-button:focus-visible {
  color: #ffffff;
  background: #9d3030;
  outline: 3px solid rgba(157, 48, 48, 0.22);
  outline-offset: 2px;
  transform: translateY(-1px);
}

.student-report-dialog {
  width: min(92vw, 610px);
  max-height: min(86vh, 760px);
  padding: 0;
  border: 1px solid #d7dde5;
  border-radius: 14px;
  color: var(--navy);
  background: #ffffff;
  box-shadow: 0 24px 70px rgba(7, 23, 43, 0.3);
}

.student-report-dialog::backdrop {
  background: rgba(7, 23, 43, 0.68);
  backdrop-filter: blur(2px);
}

.student-report-dialog form {
  padding: 24px;
}

.student-report-dialog-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
}

.student-report-dialog-heading h2 {
  margin: 3px 0 0;
}

.student-report-close {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 1px solid #cbd3dc;
  border-radius: 50%;
  color: var(--navy);
  background: #f6f8fa;
  font-size: 1.6rem;
  line-height: 1;
  cursor: pointer;
}

.student-report-close:hover,
.student-report-close:focus-visible {
  border-color: var(--navy);
  background: #edf1f5;
}

.student-answer-options {
  display: grid;
  gap: 10px;
}

.student-answer-options.two-options {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.student-answer-options label {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 52px;
  padding: 12px 14px;
  border: 1px solid #d7dde5;
  border-radius: 7px;
  color: var(--navy);
  background: #fbfcfe;
  font-weight: 850;
  cursor: pointer;
}

.student-answer-options label:focus-within,
.student-answer-options label:hover {
  border-color: var(--gold);
  background: #fff8e5;
}

.student-answer-options input {
  width: 18px;
  height: 18px;
  accent-color: var(--gold);
}

.student-written-answer small {
  display: block;
  margin-top: 8px;
  color: var(--muted);
  font-size: 0.82rem;
}

.student-result-panel {
  display: grid;
  gap: 14px;
}

.student-score-card {
  display: grid;
  gap: 3px;
  padding: 16px 18px;
  border: 1px solid #d7dde5;
  border-left: 5px solid var(--gold);
  border-radius: 7px;
  color: var(--navy);
  background: #fffaf0;
}

.student-score-card span {
  color: var(--muted);
  font-size: 0.82rem;
  font-weight: 900;
  text-transform: uppercase;
}

.student-score-card strong {
  color: var(--navy);
  font-size: clamp(2.1rem, 5vw, 3.2rem);
  line-height: 1;
}

.student-score-card .student-score-fraction {
  display: inline-grid;
  justify-items: stretch;
  justify-self: start;
  min-width: 1.35em;
  margin: 5px 0;
  text-align: center;
}

.student-score-fraction b {
  display: block;
  padding: 0.04em 0.18em;
  font: inherit;
}

.student-score-fraction b:first-child {
  padding-bottom: 0.12em;
  border-bottom: 4px solid currentColor;
}

.student-score-fraction b:last-child {
  padding-top: 0.12em;
}

.student-score-card small {
  color: var(--muted);
  font-size: 1rem;
  font-weight: 850;
}

.student-score-card.score-pass {
  border-color: #bfe7cf;
  border-left-color: var(--gold);
  background: #f2fff7;
}

.student-score-card.score-fail {
  border-color: #f0c7c7;
  border-left-color: #b94a48;
  background: #fff7f7;
}

.student-feedback-review {
  padding: 0;
}

.student-feedback-review summary {
  padding: 16px 18px;
  color: var(--navy);
  font-weight: 900;
  cursor: pointer;
}

.student-feedback-review-body {
  display: grid;
  gap: 10px;
  padding: 0 18px 18px;
}

.student-result-panel p,
.student-override-panel p,
.student-lesson-aside p {
  margin: 0;
  color: var(--muted);
}

.student-override-panel {
  display: grid;
  gap: 14px;
  border-left: 5px solid var(--gold);
}

.student-override-panel.pending {
  border-left-color: #d39422;
  background: #fff8e8;
}

.student-override-panel.decision-approved {
  border-left-color: #33845a;
  background: #f0fff5;
}

.student-override-panel.decision-declined {
  border-left-color: #b94a48;
  background: #fff4f4;
}

.student-attempt-list {
  display: grid;
  gap: 10px;
  margin-top: 12px;
}

.student-attempt-list > div {
  display: grid;
  gap: 2px;
  padding: 10px 0;
  border-bottom: 1px solid var(--line);
}

.student-attempt-list > div:last-child {
  border-bottom: 0;
}

.student-attempt-list strong {
  color: var(--navy);
}

.student-attempt-list span {
  color: var(--muted);
  font-size: 0.86rem;
}

@media (max-width: 960px) {
  .student-dashboard-overview,
  .student-dashboard-content,
  .student-support-layout {
    grid-template-columns: 1fr;
  }

  .student-achievement-preview {
    grid-template-columns: minmax(220px, 0.72fr) minmax(0, 1.28fr);
  }

  .student-achievement-preview-action {
    grid-template-columns: auto minmax(0, 1fr) auto;
    grid-column: 1 / -1;
    align-items: center;
    gap: 8px 12px;
  }

  .student-achievement-preview-action > span {
    margin: 0;
  }

  .student-achievement-preview-action .button {
    width: auto;
  }

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

}

@media (max-width: 860px) {
  .student-visual-support {
    grid-template-columns: 1fr;
  }

  .student-question-visual {
    justify-self: stretch;
  }

  .admin-bar {
    flex-wrap: wrap;
    gap: 10px 18px;
    padding: 12px 0;
  }

  .admin-nav-menu {
    order: 3;
    width: 100%;
    margin: 0;
  }

  .admin-nav-menu > summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    min-height: 48px;
    padding: 10px 46px 10px 14px;
    border: 1px solid rgba(245, 207, 105, 0.5);
    border-radius: 8px;
    color: #fff;
    background: #12365c;
    cursor: pointer;
    list-style: none;
    position: relative;
  }

  .admin-nav-menu > summary::-webkit-details-marker {
    display: none;
  }

  .admin-nav-menu > summary::after {
    content: "";
    position: absolute;
    right: 17px;
    top: 50%;
    width: 9px;
    height: 9px;
    border-right: 2px solid #f5cf69;
    border-bottom: 2px solid #f5cf69;
    transform: translateY(-68%) rotate(45deg);
    transition: transform 160ms ease;
  }

  .admin-nav-menu[open] > summary::after {
    transform: translateY(-30%) rotate(225deg);
  }

  .admin-nav-menu > summary span {
    font-size: 0.78rem;
    font-weight: 800;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #bfcde0;
  }

  .admin-nav-menu > summary strong {
    margin-left: auto;
    font-size: 0.9rem;
  }

  details.admin-nav-menu:not([open]) > .admin-nav {
    display: none;
  }

  details.admin-nav-menu[open] > .admin-nav {
    display: flex;
    margin-top: 8px;
    overflow-x: auto;
  }

  .admin-account {
    margin-left: auto;
  }

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

@media (max-width: 640px) {
  .admin-shell,
  .student-shell {
    width: min(100% - 24px, 1180px);
    padding-top: 26px;
  }

  .student-shell > .student-lesson-hero:first-child {
    margin-top: -26px;
  }

  .admin-account span {
    display: none;
  }

  details.admin-nav-menu[open] > .admin-nav {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 4px;
    overflow: visible;
  }

  .admin-nav a {
    display: grid;
    place-items: center;
    min-height: 42px;
    padding: 7px 5px;
    text-align: center;
    font-size: 0.76rem;
    line-height: 1.15;
  }

  .student-principal-support-card,
  .student-support-heading,
  .student-support-thread-head {
    align-items: stretch;
    flex-direction: column;
  }

  .student-principal-support-card .button,
  .student-support-heading .button,
  .student-welcome-actions,
  .student-welcome-actions .button {
    width: 100%;
  }

  .admin-account {
    padding-left: 0;
    border-left: 0;
  }

  .admin-page-heading,
  .admin-section-heading,
  .student-course-row {
    align-items: stretch;
    flex-direction: column;
  }

  .admin-page-heading,
  .admin-section-heading {
    display: flex;
  }

  .metric-grid,
  .admin-detail-grid,
  .decision-panel,
  .student-course-row,
  .inline-actions,
  .copy-link-panel > div {
    grid-template-columns: 1fr;
  }

  .metric {
    min-height: 108px;
  }

  .detail-list > div {
    grid-template-columns: 1fr;
    gap: 4px;
  }

  .form-section {
    padding: 18px 14px;
  }

  .student-course-row .button {
    width: 100%;
  }

  .student-dashboard-hero,
  .student-course-summary,
  .student-start-panel,
  .student-dashboard-overview,
  .student-dashboard-content,
  .student-dashboard-grid,
  .student-progress-panel,
  .student-start-progress,
  .student-add-subject-panel,
  .student-lesson-hero {
    align-items: stretch;
    grid-template-columns: 1fr;
  }

  .student-section-heading {
    align-items: flex-start;
    flex-direction: column;
    gap: 10px;
  }

  .student-dashboard-hero,
  .student-course-summary,
  .student-achievement-heading,
  .student-question-progress {
    flex-direction: column;
  }

  .student-dashboard-hero,
  .student-course-summary,
  .student-achievement-heading {
    display: flex;
  }

  .student-start-panel .button,
  .student-result-panel .button,
  .student-result-panel form,
  .student-answer-options.two-options {
    width: 100%;
  }

  .student-site-link {
    align-self: flex-start;
    width: auto;
    min-height: 42px;
    padding: 8px 13px;
  }

  .student-answer-options.two-options {
    grid-template-columns: 1fr;
  }

  .student-week-grid {
    grid-template-columns: 1fr;
  }

  .student-subject-grid,
  .student-subject-shelf,
  .student-certificate-shelf,
  .student-certificate-grid,
  .student-subject-actions {
    grid-template-columns: 1fr;
  }

  .student-dashboard-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .student-dashboard-stat {
    min-height: 104px;
    padding: 14px;
  }

  .student-start-progress {
    grid-template-columns: minmax(0, 1fr) auto;
  }

  .student-start-progress .student-progress-track,
  .student-start-progress p {
    grid-column: 1 / -1;
  }

  .student-achievement-preview {
    grid-template-columns: 1fr;
  }

  .student-achievement-preview-action {
    grid-template-columns: auto minmax(0, 1fr);
    grid-column: auto;
  }

  .student-achievement-preview-action .button {
    grid-column: 1 / -1;
    width: 100%;
  }

  .student-badge-gallery {
    grid-template-columns: 38px minmax(0, 1fr) 38px;
  }

  .student-badge-nav {
    width: 38px;
    height: 54px;
  }

  .student-badge-plaque {
    min-height: 236px;
    padding: 16px;
  }

  .student-lesson-row {
    min-height: 104px;
  }

  .student-lesson-row strong {
    white-space: normal;
  }

  .student-lesson-hero .eyebrow {
    grid-column: auto;
  }

  .student-lesson-meta {
    grid-column: auto;
    grid-row: auto;
    justify-self: stretch;
    justify-content: center;
  }

  .student-lesson-hero,
  .student-course-card,
  .student-subject-card,
  .student-achievement-preview,
  .student-achievement-wall,
  .student-add-subject-panel,
  .student-info-block,
  .student-question-card,
  .student-result-panel,
  .student-override-panel {
    padding: 18px;
  }

  .student-account span {
    display: none;
  }
}
/* Logout is a CSRF-protected POST while retaining the appearance of a text link. */
.logout-form { display: inline; margin: 0; }
.logout-button { display: inline-flex; min-height: 44px; align-items: center; appearance: none; border: 0; background: transparent; color: #f5cf69; cursor: pointer; font: inherit; font-weight: 800; padding: 10px 4px; text-decoration: underline; }
.logout-button:hover, .logout-button:focus-visible { color: #b8891e; }

/* Learner first-login setup and the same avatar used in the dashboard and game. */
.student-avatar {
  --avatar-skin: #b96f47;
  position: relative;
  display: inline-block;
  width: 54px;
  height: 62px;
  flex: 0 0 auto;
  filter: drop-shadow(0 4px 7px rgba(8, 21, 43, 0.22));
}
.student-avatar.skin-light, .student-skin-swatch.skin-light { --avatar-skin: #f3cfb3; }
.student-avatar.skin-warm, .student-skin-swatch.skin-warm { --avatar-skin: #d99a6c; }
.student-avatar.skin-medium, .student-skin-swatch.skin-medium { --avatar-skin: #b96f47; }
.student-avatar.skin-deep, .student-skin-swatch.skin-deep { --avatar-skin: #825035; }
.student-avatar.skin-dark, .student-skin-swatch.skin-dark { --avatar-skin: #4f2f24; }
.student-avatar-head {
  position: absolute;
  z-index: 2;
  top: 11px;
  left: 12px;
  width: 30px;
  height: 34px;
  border-radius: 46% 46% 48% 48%;
  background: var(--avatar-skin);
}
.student-avatar-head i {
  position: absolute;
  top: 15px;
  width: 3px;
  height: 4px;
  border-radius: 50%;
  background: #17233d;
}
.student-avatar-head i:first-child { left: 8px; }
.student-avatar-head i:nth-child(2) { right: 8px; }
.student-avatar-head b {
  position: absolute;
  left: 11px;
  bottom: 7px;
  width: 9px;
  height: 4px;
  border-bottom: 2px solid rgba(76, 32, 24, 0.72);
  border-radius: 50%;
}
.student-avatar-hair {
  position: absolute;
  z-index: 3;
  top: 5px;
  left: 8px;
  width: 38px;
  height: 23px;
  border-radius: 50% 50% 35% 35%;
  background: #251a19;
}
.student-avatar.is-boy .student-avatar-hair {
  top: 7px;
  left: 11px;
  width: 32px;
  height: 16px;
  border-radius: 50% 55% 30% 25%;
}
.student-avatar.is-girl .student-avatar-hair::before,
.student-avatar.is-girl .student-avatar-hair::after {
  content: "";
  position: absolute;
  top: 12px;
  width: 9px;
  height: 27px;
  border-radius: 8px;
  background: #251a19;
}
.student-avatar.is-girl .student-avatar-hair::before { left: -1px; transform: rotate(8deg); }
.student-avatar.is-girl .student-avatar-hair::after { right: -1px; transform: rotate(-8deg); }
.student-avatar-body {
  position: absolute;
  left: 7px;
  bottom: 0;
  width: 40px;
  height: 24px;
  border-radius: 17px 17px 7px 7px;
  background: linear-gradient(135deg, #d1a437, #916719);
  border: 2px solid rgba(255, 239, 179, 0.52);
}
.student-avatar-header { width: 38px; height: 44px; transform: scale(.72); margin: -8px -7px; }
.student-avatar-dashboard { width: 66px; height: 72px; transform: scale(1.12); margin: 0 10px 0 2px; }

.student-setup-page { min-height: 100vh; padding: 28px 16px; }
.student-setup-shell { width: min(100%, 850px); margin: 0 auto; }
.student-setup-panel { padding: clamp(24px, 5vw, 52px); }
.student-setup-brand { display: inline-flex; margin-bottom: 22px; }
.student-setup-brand img { width: 150px; height: auto; }
.student-setup-panel > h1 { margin-bottom: 8px; font-size: clamp(2rem, 6vw, 3.4rem); }
.student-setup-panel > .eyebrow { font-size: .875rem; }
.student-setup-panel > p:not(.eyebrow) { max-width: 720px; color: #526174; }
.student-setup-form { display: grid; gap: 26px; margin-top: 30px; }
.student-setup-form > .student-setup-step > input[type="email"] { min-height: 48px; width: 100%; }
.student-setup-step { min-width: 0; margin: 0; padding: 0; border: 0; }
.student-setup-step legend { width: 100%; margin-bottom: 13px; color: var(--navy); font-weight: 900; font-size: 1.02rem; }
.student-setup-step legend > span {
  display: inline-grid;
  width: 30px;
  height: 30px;
  margin-right: 8px;
  place-items: center;
  border-radius: 50%;
  color: #fff;
  background: var(--navy);
}
.student-setup-hint { margin: -5px 0 13px 40px; color: #667386; font-size: .9rem; }
.student-choice-grid { display: grid; gap: 12px; }
.language-choice-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.skin-choice-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.gender-choice-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.student-choice-card {
  position: relative;
  display: flex;
  min-height: 64px;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 14px;
  border: 2px solid #d9dfeb;
  border-radius: 16px;
  background: #fff;
  color: var(--navy);
  cursor: pointer;
  text-align: center;
  transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
.student-choice-card:hover { transform: translateY(-2px); border-color: #b8891e; }
.student-choice-card:has(input:checked) { border-color: #b8891e; box-shadow: 0 0 0 3px rgba(200, 157, 56, .2); background: #fffaf0; }
.student-choice-card:has(input:focus-visible) { outline: 3px solid #2968c8; outline-offset: 3px; }
.student-choice-card input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.student-skin-choice { min-height: 78px; }
.student-skin-swatch {
  --avatar-skin: #b96f47;
  display: block;
  width: 46px;
  height: 46px;
  border: 3px solid #fff;
  border-radius: 50%;
  background: var(--avatar-skin);
  box-shadow: 0 0 0 1px rgba(13, 34, 64, .24);
}
.student-character-choice { min-height: 122px; flex-direction: column; }
.student-avatar-choice { transform: scale(1.05); }
.student-setup-submit { width: 100%; min-height: 56px; }

@media (max-width: 640px) {
  .student-setup-page { padding: 12px; }
  .student-setup-panel { padding: 22px 16px; }
  .language-choice-grid { grid-template-columns: 1fr; }
  .skin-choice-grid { grid-template-columns: repeat(5, minmax(48px, 1fr)); gap: 7px; }
  .student-skin-choice { padding: 8px 4px; }
  .student-skin-swatch { width: 38px; height: 38px; }
  .gender-choice-grid { gap: 9px; }
  .student-character-choice { padding-inline: 8px; }
  .student-setup-hint { margin-left: 0; }
}

/* First-party adaptive IP defence and closed-gate review. */
.empire-hero {
  position: relative;
  min-height: 430px;
  display: grid;
  align-items: end;
  overflow: hidden;
  margin-bottom: 24px;
  border: 1px solid rgba(200, 157, 56, 0.75);
  border-radius: 24px;
  background: var(--navy);
  color: var(--white);
  box-shadow: var(--shadow);
}

.empire-hero > img,
.empire-hero-shade { position: absolute; inset: 0; width: 100%; height: 100%; }
.empire-hero > img { object-fit: cover; object-position: 62% 48%; }
.empire-hero-shade { background: linear-gradient(90deg, rgba(2, 12, 25, 0.96) 0%, rgba(4, 19, 37, 0.8) 43%, rgba(4, 19, 37, 0.17) 78%), linear-gradient(0deg, rgba(2, 11, 21, 0.75), transparent 60%); }
.empire-hero-content { position: relative; z-index: 1; width: min(690px, 100%); padding: clamp(28px, 5vw, 64px); }
.empire-hero-content h1 { margin: 8px 0 18px; color: #fff; font: 700 clamp(3rem, 7vw, 6.4rem)/0.88 Georgia, serif; letter-spacing: -0.045em; }
.empire-hero-content > p:last-child { max-width: 650px; color: #d8e2eb; font-size: 1.02rem; }
.empire-status-line { display: flex; align-items: center; gap: 10px; margin: 0 0 8px; color: #f1d477; font-weight: 850; font-size: 1.08rem; }
.empire-status-dot { width: 11px; height: 11px; border-radius: 50%; background: #48c98b; box-shadow: 0 0 0 7px rgba(72, 201, 139, 0.15); }
.empire-mode-guarded .empire-status-dot { background: #efb83f; box-shadow: 0 0 0 7px rgba(239, 184, 63, 0.16); }
.empire-mode-siege .empire-status-dot { background: #ef645b; box-shadow: 0 0 0 7px rgba(239, 100, 91, 0.18); animation: empire-pulse 1.8s infinite; }
@keyframes empire-pulse { 50% { box-shadow: 0 0 0 13px rgba(239, 100, 91, 0); } }

.empire-metrics { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 14px; margin-bottom: 24px; }
.empire-metrics article { min-width: 0; padding: 20px; border: 1px solid #d9cfbc; border-top: 4px solid var(--gold); border-radius: 14px; background: #fff; box-shadow: 0 10px 28px rgba(7, 23, 43, 0.06); }
.empire-metrics span, .empire-metrics small { display: block; color: var(--muted); }
.empire-metrics span { font-size: 0.76rem; font-weight: 850; letter-spacing: 0.07em; text-transform: uppercase; }
.empire-metrics strong { display: block; margin: 8px 0 5px; color: var(--navy); font-size: clamp(1.45rem, 2.4vw, 2.15rem); }
.empire-metrics small { line-height: 1.35; }
.castle-defence-map { margin: 0 0 28px; padding: clamp(22px, 3vw, 32px); border: 1px solid #d9cfbc; border-radius: 18px; background: linear-gradient(135deg, #fffdf7, #f3f6f8); box-shadow: 0 12px 32px rgba(7, 23, 43, .06); }
.castle-defence-map-heading { max-width: 780px; }
.castle-defence-map-heading h2 { margin: 5px 0 8px; color: var(--navy); font: 700 clamp(1.7rem, 3vw, 2.45rem)/1 Georgia, serif; }
.castle-defence-map-heading p:last-child { margin: 0; color: var(--muted); }
.castle-map-stage { position: relative; overflow: hidden; margin-top: 22px; border: 1px solid #203b55; border-radius: 17px; background: #06162a; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .05); }
.castle-map-stage > img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; }
.castle-map-stage::after { position: absolute; inset: 0; pointer-events: none; content: ''; box-shadow: inset 0 0 50px rgba(2, 10, 21, .38); }
.castle-map-hotspot { position: absolute; z-index: 1; display: grid; min-width: 150px; padding: 10px 13px; border: 1px solid rgba(244, 208, 103, .85); border-radius: 12px; background: rgba(5, 21, 39, .9); color: #fff; text-decoration: none; box-shadow: 0 8px 24px rgba(0, 0, 0, .4); backdrop-filter: blur(5px); transition: transform .18s ease, background .18s ease, box-shadow .18s ease; }
.castle-map-hotspot:hover, .castle-map-hotspot:focus-visible { transform: translateY(-3px) scale(1.02); background: rgba(11, 42, 69, .97); box-shadow: 0 12px 30px rgba(0, 0, 0, .5), 0 0 0 4px rgba(244, 208, 103, .2); }
.castle-map-hotspot small { color: #e8c85f; font-size: .62rem; font-weight: 850; letter-spacing: .07em; text-transform: uppercase; }
.castle-map-hotspot strong { margin: 2px 0; font: 700 1.13rem/1 Georgia, serif; }
.castle-map-hotspot span { color: #c7d5e1; font-size: .7rem; font-weight: 800; }
.hotspot-gates { left: 6%; bottom: 15%; }
.hotspot-walls { left: 45%; bottom: 7%; }
.hotspot-watchtowers { right: 7%; top: 8%; }
.castle-map-key { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 9px; margin-top: 10px; }
.castle-map-key a { padding: 12px 14px; border: 1px solid #d8dee5; border-radius: 10px; background: #fff; color: var(--navy); text-decoration: none; }
.castle-map-key strong, .castle-map-key span { display: block; }
.castle-map-key strong { font-family: Georgia, serif; }
.castle-map-key span { margin-top: 3px; color: var(--muted); font-size: .76rem; line-height: 1.35; }
.castle-map-key a:hover, .castle-map-key a:focus-visible { border-color: #bd9131; box-shadow: 0 6px 16px rgba(7, 23, 43, .08); }
.admin-section[id], .ai-defence-panel[id] { scroll-margin-top: 24px; }
.empire-history-prompt { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin: 0 0 28px; border-left: 4px solid var(--gold); }
.empire-history-prompt h2 { margin: 4px 0 7px; }
.empire-history-prompt p:last-child { max-width: 760px; margin: 0; color: var(--muted); }
.empire-history-prompt .button { flex: 0 0 auto; }
.ai-defence-panel { position: relative; overflow: hidden; margin: 0 0 28px; padding: clamp(24px, 4vw, 38px); border: 1px solid #31516d; border-radius: 20px; background: radial-gradient(circle at 92% 0%, rgba(53, 111, 135, .34), transparent 34%), linear-gradient(145deg, #06162a, #0b2740); color: #fff; box-shadow: 0 18px 48px rgba(7, 23, 43, .18); }
.ai-defence-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; }
.ai-defence-heading > div { max-width: 780px; }
.ai-defence-heading .eyebrow { color: #e7c55f; }
.ai-defence-heading h2 { margin: 5px 0 10px; color: #fff; font: 700 clamp(1.9rem, 4vw, 3rem)/1 Georgia, serif; }
.ai-defence-heading p:last-child { margin: 0; color: #c7d5e1; }
.ai-defence-shield { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 8px; padding: 10px 14px; border: 1px solid rgba(104, 210, 154, .42); border-radius: 999px; background: rgba(46, 151, 98, .17); color: #aaf0c8; font-size: .8rem; font-weight: 850; white-space: nowrap; }
.ai-defence-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin: 26px 0 16px; }
.ai-defence-stats article { padding: 17px; border: 1px solid rgba(255, 255, 255, .13); border-radius: 13px; background: rgba(255, 255, 255, .055); }
.ai-defence-stats span, .ai-defence-stats small { display: block; color: #aebdca; }
.ai-defence-stats span { font-size: .7rem; font-weight: 850; letter-spacing: .07em; text-transform: uppercase; }
.ai-defence-stats strong { display: block; margin: 7px 0 4px; color: #f3d777; font-size: 1.85rem; }
.ai-defence-stats small { line-height: 1.35; }
.ai-defence-layers { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.ai-defence-layers article { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 12px; align-items: center; padding: 14px 16px; border: 1px solid rgba(255, 255, 255, .12); border-radius: 12px; background: rgba(2, 12, 23, .42); }
.ai-defence-layers strong, .ai-defence-layers small { display: block; }
.ai-defence-layers small { margin-top: 3px; color: #aebdca; line-height: 1.35; }
.ai-defence-layers b { color: #9be5bc; font-size: .75rem; text-transform: uppercase; }
.ai-defence-layers .needs-attention b { color: #ffd27c; }
.ai-layer-status { width: 11px; height: 11px; border-radius: 50%; background: #55c88b; box-shadow: 0 0 0 5px rgba(85, 200, 139, .13); }
.needs-attention .ai-layer-status { background: #e2a93b; box-shadow: 0 0 0 5px rgba(226, 169, 59, .13); }
.ai-defence-foot { display: flex; justify-content: space-between; gap: 18px; margin-top: 16px; color: #c7d5e1; font-size: .86rem; }
.ai-defence-foot p { margin: 0; }
.ai-defence-limit { margin: 18px 0 0; padding: 13px 15px; border-left: 3px solid #e7c55f; background: rgba(231, 197, 95, .08); color: #d8e2ea; font-size: .88rem; }
.empire-history-page-heading > div { max-width: 760px; }
.empire-history { margin-bottom: 28px; padding: clamp(20px, 3vw, 30px); border: 1px solid #d9cfbc; border-radius: 18px; background: linear-gradient(145deg, #fff 0%, #fffcf4 100%); box-shadow: 0 12px 32px rgba(7, 23, 43, 0.06); }
.empire-history-heading { align-items: flex-end; }
.empire-history-heading > div { max-width: 760px; }
.empire-history-heading h2 { margin-bottom: 7px; }
.empire-history-heading p:last-child { margin: 0; color: var(--muted); }
.empire-history-filters { display: inline-flex; flex-wrap: wrap; gap: 5px; padding: 5px; border-radius: 999px; background: #edf0f3; }
.empire-history-filters a { padding: 8px 13px; border-radius: 999px; color: #425264; font-size: 0.82rem; font-weight: 850; text-decoration: none; }
.empire-history-filters a:hover, .empire-history-filters a:focus-visible { background: #fff; color: var(--navy); }
.empire-history-filters a[aria-current="page"] { background: var(--navy); color: #fff; box-shadow: 0 4px 12px rgba(7, 23, 43, 0.18); }
.empire-history-strip { display: grid; grid-template-columns: repeat(7, minmax(118px, 1fr)); gap: 10px; margin: 22px 0; }
.empire-history-day { min-width: 0; padding: 14px; border: 1px solid #d8dee5; border-top: 4px solid #8b98a5; border-radius: 12px; background: #fff; }
.empire-history-day.history-state-healthy { border-top-color: #36a56d; background: #f5fcf8; }
.empire-history-day.history-state-contained { border-top-color: #dfa72c; background: #fffaf0; }
.empire-history-day.history-state-action { border-top-color: #d14a43; background: #fff6f5; }
.empire-history-day-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 9px; }
.empire-history-day time { color: #566577; font-size: 0.75rem; font-weight: 850; }
.empire-history-day > strong { display: block; color: var(--navy); font-size: 0.92rem; line-height: 1.2; }
.empire-history-day small { display: block; margin-top: 7px; color: var(--muted); line-height: 1.35; }
.history-state-dot { display: inline-block; width: 9px; height: 9px; flex: 0 0 auto; border-radius: 50%; background: #8b98a5; }
.history-state-healthy .history-state-dot { background: #258c59; box-shadow: 0 0 0 4px rgba(37, 140, 89, 0.12); }
.history-state-contained .history-state-dot { background: #c98d12; box-shadow: 0 0 0 4px rgba(201, 141, 18, 0.13); }
.history-state-action .history-state-dot { background: #c43b35; box-shadow: 0 0 0 4px rgba(196, 59, 53, 0.13); }
.empire-history-table-wrap { margin-top: 0; }
.empire-history-table { min-width: 1120px; }
.empire-history-table th:nth-child(7), .empire-history-table td:nth-child(7) { min-width: 340px; }
.history-status { display: inline-flex; align-items: center; gap: 9px; padding: 7px 10px; border-radius: 999px; background: #eef1f4; color: #4d5d6d; font-size: 0.8rem; font-weight: 850; white-space: nowrap; }
.history-status.history-state-healthy { background: #e5f4ec; color: #176743; }
.history-status.history-state-contained { background: #fff0c7; color: #775006; }
.history-status.history-state-action { background: #fee2df; color: #8f2824; }
.history-unknown { color: var(--muted); font-weight: 750; }
.empire-history-details summary { cursor: pointer; color: #24384d; font-weight: 750; line-height: 1.45; }
.empire-history-details summary:hover, .empire-history-details summary:focus-visible { color: #8a6514; }
.empire-history-details[open] { padding: 10px 0 3px; }
.empire-history-details dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; margin: 13px 0; }
.empire-history-details dl > div { padding: 8px 10px; border-radius: 8px; background: #f2f5f7; }
.empire-history-details dt { color: var(--muted); font-size: 0.69rem; font-weight: 850; text-transform: uppercase; }
.empire-history-details dd { margin: 2px 0 0; color: var(--navy); font-weight: 800; }
.empire-history-details ul { margin: 10px 0 0; padding-left: 20px; color: #8f2824; }
.empire-history-note { margin: 14px 0 0; color: var(--muted); font-size: 0.82rem; }
.empire-live-summary-notice { align-items: flex-start; display: flex; flex-direction: column; gap: .3rem; margin: 1rem 0; }
.empire-history-empty { align-items: flex-start; display: flex; flex-direction: column; gap: .3rem; margin-top: 1rem; }
.empire-layout { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(300px, 0.75fr); gap: 22px; margin-bottom: 28px; }
.empire-control-room, .empire-manual-block { margin: 0; }
.empire-control-room .admin-section-heading { align-items: flex-start; }
.empire-mode-badge, .count-badge { display: inline-flex; align-items: center; border-radius: 999px; padding: 8px 12px; background: #e5f4ec; color: #176743; font-size: 0.8rem; font-weight: 850; white-space: nowrap; }
.empire-mode-badge.empire-mode-guarded { background: #fff0c7; color: #775006; }
.empire-mode-badge.empire-mode-siege { background: #fee2df; color: #8f2824; }
.empire-toggle { display: flex; gap: 14px; align-items: flex-start; padding: 17px; border: 1px solid #d9cfbc; border-radius: 13px; background: #fffcf4; cursor: pointer; }
.empire-toggle input { width: 22px; height: 22px; margin-top: 2px; accent-color: var(--gold); }
.empire-toggle span, .empire-toggle small { display: block; }
.empire-toggle small { margin-top: 4px; color: var(--muted); font-weight: 500; }
.empire-petitions { margin-top: 4px; }
.empire-petition-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.empire-petition { margin: 0; border-top: 4px solid var(--gold); }
.empire-petition[data-focused-review] { outline: 3px solid rgba(200, 157, 56, 0.45); outline-offset: 3px; }
.empire-petition-head { display: flex; justify-content: space-between; gap: 18px; }
.empire-petition-head span, .empire-petition-head time { color: var(--muted); font-size: 0.82rem; font-weight: 750; }
.empire-petition h3 { margin: 5px 0 0; }
.empire-petition dl { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.empire-petition dl > div { min-width: 0; padding: 12px; border-radius: 10px; background: #f7f8fa; }
.empire-petition dt { color: var(--muted); font-size: 0.75rem; font-weight: 800; text-transform: uppercase; }
.empire-petition dd { overflow-wrap: anywhere; margin: 4px 0 0; font-weight: 750; }
.empire-petition blockquote { margin: 17px 0; padding: 15px 18px; border-left: 3px solid var(--gold); background: #fffcf4; color: #2b3948; }
.empire-decision-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.empire-empty { display: flex; align-items: center; justify-content: center; gap: 12px; min-height: 100px; padding: 22px; border: 1px dashed #cfc5b2; border-radius: 14px; background: #fffdf8; color: var(--muted); text-align: center; }
.empire-empty span { color: var(--gold); font-size: 2rem; }
.empire-table td { vertical-align: middle; }
.empire-table small { color: var(--muted); }
.empire-inline-action { margin: 0; }
.empire-severity { display: inline-block; width: 9px; height: 9px; margin-right: 8px; border-radius: 50%; background: #7aa59a; }
.empire-severity.severity-3 { background: #d49b25; }.empire-severity.severity-4, .empire-severity.severity-5 { background: #c33d37; }
.empire-lower-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.access-review-page { min-height: 100vh; margin: 0; background: radial-gradient(circle at 82% 8%, #244059 0, #07172b 46%, #030b15 100%); color: #fff; }
.access-review-shell { width: min(900px, calc(100% - 32px)); margin: 0 auto; padding: 28px 0 60px; }
.access-review-brand { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin-bottom: 28px; color: #e5c35f; font-weight: 850; letter-spacing: 0.08em; text-transform: uppercase; }
.access-review-brand img { width: min(220px, 48vw); height: auto; border-radius: 8px; }
.access-review-card { padding: clamp(25px, 6vw, 60px); border: 1px solid rgba(211, 170, 66, 0.72); border-radius: 26px; background: rgba(255, 253, 248, 0.98); color: var(--ink); box-shadow: 0 28px 90px rgba(0, 0, 0, 0.42); }
.access-review-heading { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 24px; align-items: start; }
.access-review-heading h1, .access-review-open h1 { margin: 5px 0 12px; color: var(--navy); font: 700 clamp(2.5rem, 7vw, 4.8rem)/0.96 Georgia, serif; letter-spacing: -0.035em; }
.access-review-crest { width: 74px; height: 74px; display: grid; flex: 0 0 auto; place-items: center; border: 2px solid var(--gold); border-radius: 50%; background: var(--navy); color: #f0ce6b; font-size: 35px; }
.access-review-reference { display: flex; justify-content: space-between; gap: 18px; margin: 25px 0; padding: 16px 18px; border-radius: 12px; background: var(--navy); color: #fff; }
.access-review-reference span { color: #bfcbd8; }
.access-review-reference strong { color: #f1ce68; letter-spacing: 0.08em; }
.access-review-form { margin-top: 26px; }
.access-review-safety, .access-review-next { padding: 18px; border-radius: 12px; background: #fff7df; border: 1px solid #e7cd82; }
.access-review-safety p, .access-review-next p { margin-bottom: 0; }
.access-review-next { margin-top: 22px; background: #f3f6f8; border-color: #d7dfe7; }
.access-review-success { padding: 26px; border-radius: 16px; background: #e9f7ef; border: 1px solid #9dcdb2; }
.access-review-open { text-align: center; }
.access-review-open .access-review-crest { margin: 0 auto 18px; }
.honeypot { position: absolute !important; left: -10000px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }

@media (max-width: 1050px) {
  .empire-metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .empire-history-strip { display: flex; overflow-x: auto; padding-bottom: 8px; scroll-snap-type: x proximity; }
  .empire-history-day { flex: 0 0 165px; scroll-snap-align: start; }
  .empire-layout { grid-template-columns: 1fr; }
  .ai-defence-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .castle-map-key { grid-template-columns: 1fr; }
}

@media (max-width: 760px) {
  .empire-hero { min-height: 510px; border-radius: 17px; }
  .empire-hero > img { object-position: 68% 50%; }
  .empire-hero-shade { background: linear-gradient(0deg, rgba(2, 12, 25, 0.98) 0%, rgba(4, 19, 37, 0.83) 60%, rgba(4, 19, 37, 0.28) 100%); }
  .empire-hero-content { padding: 26px; }
  .empire-hero-content h1 { font-size: clamp(3rem, 15vw, 4.5rem); }
  .empire-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .empire-metrics article:last-child { grid-column: 1 / -1; }
  .empire-history-prompt { align-items: flex-start; flex-direction: column; }
  .empire-history-prompt .button { width: 100%; }
  .ai-defence-heading, .ai-defence-foot { align-items: flex-start; flex-direction: column; }
  .ai-defence-layers { grid-template-columns: 1fr; }
  .castle-map-stage { overflow-x: auto; }
  .castle-map-stage > img { width: 760px; max-width: none; }
  .castle-map-hotspot { min-width: 132px; }
  .hotspot-gates { left: 60px; }
  .hotspot-walls { left: 330px; }
  .hotspot-watchtowers { left: 570px; right: auto; }
  .empire-history-heading { align-items: flex-start; }
  .empire-history-filters { width: 100%; border-radius: 12px; }
  .empire-history-filters a { flex: 1 1 0; text-align: center; }
  .empire-history-details dl { grid-template-columns: 1fr; }
  .empire-petition-grid, .empire-lower-grid { grid-template-columns: 1fr; }
  .empire-petition-head, .access-review-reference { flex-direction: column; }
  .access-review-heading { grid-template-columns: 1fr; }
  .access-review-brand span { display: none; }
  .access-review-card { border-radius: 18px; }
}

@media (max-width: 440px) {
  .empire-metrics { grid-template-columns: 1fr; }
  .ai-defence-stats { grid-template-columns: 1fr; }
  .empire-metrics article:last-child { grid-column: auto; }
  .empire-decision-actions .button { width: 100%; }
  .access-review-shell { width: min(100% - 20px, 900px); padding-top: 14px; }
  .access-review-brand { margin-bottom: 14px; }
}

/* The Grand Course Library */
.library-grand-hero,
.library-subhero {
  position: relative;
  display: grid;
  align-items: end;
  overflow: hidden;
  border: 1px solid rgba(200, 157, 56, 0.78);
  border-radius: 24px;
  background: var(--navy);
  color: #fff;
  box-shadow: var(--shadow);
}

.library-grand-hero { min-height: 530px; margin-bottom: 24px; }
.library-subhero { min-height: 390px; margin-bottom: 22px; }
.library-grand-hero > img,
.library-subhero > img,
.library-grand-shade,
.library-subhero-shade { position: absolute; inset: 0; width: 100%; height: 100%; }
.library-grand-hero > img,
.library-subhero > img { object-fit: cover; object-position: 61% 49%; }
.library-grand-shade { background: linear-gradient(90deg, rgba(2, 11, 23, 0.98) 0%, rgba(4, 17, 33, 0.87) 39%, rgba(4, 17, 33, 0.16) 78%), linear-gradient(0deg, rgba(1, 8, 16, 0.58), transparent 52%); }
.library-subhero-shade { background: linear-gradient(90deg, rgba(2, 11, 23, 0.98) 0%, rgba(4, 17, 33, 0.9) 48%, rgba(4, 17, 33, 0.27) 85%), linear-gradient(0deg, rgba(1, 8, 16, 0.66), transparent 60%); }
.library-grand-copy,
.library-subhero-content { position: relative; z-index: 1; width: min(740px, 100%); padding: clamp(30px, 5vw, 68px); }
.library-grand-copy h1,
.library-subhero-content h1 { margin: 8px 0 18px; color: #fff; font: 700 clamp(3.2rem, 7vw, 6.8rem)/0.88 Georgia, serif; letter-spacing: -0.05em; text-wrap: balance; }
.library-grand-copy .eyebrow,
.library-subhero-content .eyebrow { color: #f0ce68; }
.library-subhero-content h1 { font-size: clamp(2.75rem, 6vw, 5.5rem); }
.library-grand-copy > p:last-of-type,
.library-subhero-content > p { max-width: 650px; color: #d9e2ea; font-size: clamp(1rem, 1.6vw, 1.2rem); }
.library-hero-scroll,
.library-back-link { display: inline-flex; gap: 10px; align-items: center; margin-top: 15px; color: #f0ce68; font-weight: 850; text-decoration: none; }
.library-hero-scroll { padding-bottom: 5px; border-bottom: 1px solid rgba(240, 206, 104, 0.6); }
.library-hero-scroll:hover,
.library-back-link:hover { color: #fff; }
.library-hero-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 18px; margin-top: 24px; }
.library-open-plaque { position: absolute; z-index: 2; right: 24px; bottom: 24px; display: flex; align-items: center; gap: 12px; min-width: 230px; padding: 15px 18px; border: 1px solid rgba(231, 195, 90, 0.75); border-radius: 14px; background: rgba(4, 17, 32, 0.9); backdrop-filter: blur(8px); }
.library-open-plaque > span { display: grid; width: 43px; height: 43px; place-items: center; border-radius: 50%; background: var(--gold); color: var(--navy); font-size: 1.3rem; }
.library-open-plaque strong,
.library-open-plaque small { display: block; }
.library-open-plaque strong { color: #f2d170; }
.library-open-plaque small { margin-top: 2px; color: #ccd7e1; }

.library-ledger { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin-bottom: 28px; }
.library-ledger article { position: relative; overflow: hidden; min-width: 0; padding: 20px; border: 1px solid #d9cfbc; border-radius: 13px; background: linear-gradient(145deg, #fff 0%, #fffaf0 100%); box-shadow: 0 10px 28px rgba(7, 23, 43, 0.06); }
.library-ledger article::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 5px; background: var(--gold); }
.library-ledger span,
.library-ledger small { display: block; color: var(--muted); }
.library-ledger span { font-size: 0.72rem; font-weight: 850; letter-spacing: 0.08em; text-transform: uppercase; }
.library-ledger strong { display: block; margin: 8px 0 5px; color: var(--navy); font: 700 clamp(1.65rem, 2.7vw, 2.45rem)/1 Georgia, serif; }
.library-ledger small { line-height: 1.35; }

.library-catalogue { scroll-margin-top: 30px; margin-top: 34px; padding: clamp(22px, 4vw, 42px); border: 1px solid #ded2bb; border-radius: 22px; background: linear-gradient(180deg, #fffdfa 0%, #f7f1e4 100%); box-shadow: var(--shadow); }
.library-catalogue-heading { display: grid; grid-template-columns: minmax(0, 1fr) minmax(250px, 380px); gap: 25px; align-items: end; }
.library-catalogue-heading h2 { margin: 4px 0 8px; font: 700 clamp(2rem, 4vw, 3.45rem)/1 Georgia, serif; color: var(--navy); }
.library-catalogue-heading p { margin-bottom: 0; color: var(--muted); }
.library-search { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 10px; align-items: center; padding: 0 15px; border: 1px solid #cfc3ac; border-radius: 999px; background: #fff; }
.library-search span { color: var(--gold); font-size: 1.3rem; transform: rotate(-15deg); }
.library-search input { min-width: 0; border: 0; outline: 0; padding: 15px 0; background: transparent; box-shadow: none; }
.library-filter-bar { display: flex; flex-wrap: wrap; gap: 9px; margin: 24px 0; padding-bottom: 20px; border-bottom: 1px solid #ddd2bd; }
.library-filter-bar button { display: inline-flex; gap: 8px; align-items: center; padding: 10px 14px; border: 1px solid #cfc3ac; border-radius: 999px; background: #fff; color: var(--navy); cursor: pointer; font: inherit; font-weight: 800; }
.library-filter-bar button span { min-width: 23px; padding: 2px 6px; border-radius: 999px; background: #edf0f3; font-size: 0.76rem; }
.library-filter-bar button.active { border-color: var(--gold); background: var(--navy); color: #fff; }
.library-filter-bar button.active span { background: var(--gold); color: var(--navy); }
.library-book-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.library-book-card { display: grid; grid-template-columns: 92px minmax(0, 1fr); min-height: 310px; overflow: hidden; border: 1px solid #d4c6aa; border-radius: 15px; background: #fff; box-shadow: 0 15px 35px rgba(7, 23, 43, 0.09); transition: transform 180ms ease, box-shadow 180ms ease; }
.library-book-card:hover { transform: translateY(-4px); box-shadow: 0 22px 42px rgba(7, 23, 43, 0.14); }
.library-book-card[hidden] { display: none; }
.library-book-spine { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: space-between; padding: 22px 10px; border-right: 4px double rgba(255, 255, 255, 0.22); color: #fff; text-align: center; box-shadow: inset -10px 0 18px rgba(0, 0, 0, 0.18); }
.library-book-spine::after { content: ""; position: absolute; inset: 12px 8px; border: 1px solid rgba(229, 190, 76, 0.58); border-radius: 50px; pointer-events: none; }
.library-spine-1 { background: linear-gradient(100deg, #07172b, #163553); }
.library-spine-2 { background: linear-gradient(100deg, #4e1f27, #843f42); }
.library-spine-3 { background: linear-gradient(100deg, #174b46, #25766d); }
.library-spine-4 { background: linear-gradient(100deg, #4c315c, #795083); }
.library-book-spine span { z-index: 1; color: #e9c760; font: 700 0.78rem Georgia, serif; letter-spacing: 0.12em; text-transform: uppercase; writing-mode: vertical-rl; transform: rotate(180deg); }
.library-book-spine strong { z-index: 1; display: grid; width: 56px; height: 56px; place-items: center; border: 1px solid #d6ae46; border-radius: 50%; background: rgba(3, 13, 25, 0.45); color: #f0cf6e; font: 700 1.55rem Georgia, serif; }
.library-book-spine small { z-index: 1; color: #fff; font-weight: 850; letter-spacing: 0.08em; }
.library-book-body { display: flex; min-width: 0; flex-direction: column; padding: 24px; }
.library-book-kicker { display: flex; justify-content: space-between; gap: 12px; color: var(--muted); font-size: 0.76rem; font-weight: 850; letter-spacing: 0.07em; text-transform: uppercase; }
.library-book-status { padding: 5px 8px; border-radius: 999px; background: #e4f4eb; color: #176743; letter-spacing: 0; text-transform: none; }
.is-draft .library-book-status { background: #fff0c7; color: #775006; }
.library-book-body h3 { margin: 16px 0 8px; color: var(--navy); font: 700 clamp(1.45rem, 2.4vw, 2.05rem)/1.05 Georgia, serif; }
.library-book-body > p { margin: 0; color: var(--muted); font-weight: 750; }
.library-book-location { display: flex; gap: 11px; align-items: center; margin: auto 0 18px; padding: 12px; border-radius: 10px; background: #f3f7f5; }
.is-draft .library-book-location { background: #fff9e9; }
.library-book-location > span { display: grid; width: 30px; height: 30px; flex: 0 0 auto; place-items: center; border-radius: 50%; background: #d9efe3; color: #176743; font-weight: 900; }
.is-draft .library-book-location > span { background: #f6df9c; color: #775006; }
.library-book-location p,
.library-book-location small { margin: 0; }
.library-book-location small { display: block; margin-top: 2px; color: var(--muted); }
.library-book-actions { display: flex; flex-wrap: wrap; gap: 9px; }
.library-book-actions .button { flex: 1 1 130px; }
.library-empty-shelf { padding: 50px 20px; text-align: center; color: var(--muted); }
.library-empty-shelf span { color: var(--gold); font-size: 3rem; }
.library-empty-shelf h3 { margin: 8px 0; color: var(--navy); }

.library-notice { display: flex; gap: 16px; align-items: center; margin: 24px 0; padding: 18px 20px; border: 1px solid #b7d8c6; border-radius: 14px; background: #edf8f2; }
.library-notice-draft { border-color: #e0c370; background: #fff7df; }
.library-notice > span { display: grid; width: 43px; height: 43px; flex: 0 0 auto; place-items: center; border-radius: 50%; background: #cfe9da; color: #176743; font-size: 1.2rem; font-weight: 900; }
.library-notice-draft > span { background: #f2d372; color: #604207; }
.library-notice p { margin: 4px 0 0; color: var(--muted); }
.library-term-map { position: sticky; top: 0; z-index: 4; display: flex; flex-wrap: wrap; align-items: center; gap: 9px; margin: 28px 0; padding: 14px; border: 1px solid rgba(205, 166, 65, 0.7); border-radius: 13px; background: rgba(7, 23, 43, 0.96); box-shadow: 0 10px 30px rgba(7, 23, 43, 0.18); }
.library-term-map span { margin-right: auto; color: #c4d0dc; font-size: 0.82rem; font-weight: 800; }
.library-term-map a { padding: 8px 12px; border: 1px solid rgba(233, 197, 95, 0.5); border-radius: 999px; color: #f0cd68; font-weight: 800; text-decoration: none; }
.library-term-map a:hover { background: var(--gold); color: var(--navy); }
.library-term-wing { scroll-margin-top: 80px; }
.library-term-heading { display: flex; align-items: center; gap: 16px; margin-bottom: 17px; }
.library-term-heading h2 { margin: 2px 0; color: var(--navy); font: 700 2.35rem/1 Georgia, serif; }
.library-term-heading p { margin: 0; color: var(--muted); }
.library-term-heading .eyebrow { color: #9b751b; }
.library-term-seal { display: grid; width: 66px; height: 66px; place-items: center; border: 2px solid var(--gold); border-radius: 50%; background: var(--navy); color: #f0ce6b; font: 700 1.8rem Georgia, serif; box-shadow: inset 0 0 0 5px rgba(200, 157, 56, 0.16); }
.library-week-stack { display: grid; gap: 10px; }
.library-week-volume { overflow: hidden; border: 1px solid #d9cfbc; border-radius: 12px; background: #fff; box-shadow: 0 8px 20px rgba(7, 23, 43, 0.05); }
.library-week-volume > summary { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 14px; align-items: center; padding: 13px 16px; cursor: pointer; list-style: none; }
.library-week-volume > summary::-webkit-details-marker { display: none; }
.library-week-volume > summary:hover { background: #fffaf0; }
.library-week-volume > summary small { display: block; margin-top: 3px; color: var(--muted); }
.library-week-spine { display: grid; width: 48px; height: 48px; place-items: center; border-radius: 8px 3px 3px 8px; background: var(--navy); color: #f1cd68; font: 800 0.88rem Georgia, serif; box-shadow: inset -5px 0 rgba(200, 157, 56, 0.25); }
.library-shelf-arrow { display: grid; width: 32px; height: 32px; place-items: center; border: 1px solid #d8c9aa; border-radius: 50%; color: var(--gold); font-size: 1.2rem; transition: transform 160ms ease; }
.library-week-volume[open] .library-shelf-arrow { transform: rotate(45deg); }
.library-lesson-shelf { display: grid; gap: 9px; padding: 0 16px 16px 78px; }
.library-lesson-card { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 15px; align-items: center; padding: 15px; border: 1px solid #e1d8c8; border-left: 4px solid var(--gold); border-radius: 10px; background: #fffdf8; }
.library-lesson-position { display: grid; width: 36px; height: 36px; place-items: center; border-radius: 50%; background: #efe2bc; color: #76550a; font-weight: 900; }
.library-lesson-details h3 { margin: 0 0 5px; color: var(--navy); font-size: 1.03rem; }
.library-lesson-details p { margin: 0 0 5px; color: var(--muted); font-size: 0.9rem; }
.library-lesson-details small { color: #8c7440; font-weight: 750; }
.library-lesson-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 7px; }

.library-lesson-intro { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 16px; align-items: center; margin-bottom: 22px; padding: 18px; border: 1px solid #d9cfbc; border-radius: 14px; background: #fffaf0; }
.library-lesson-intro > span { display: grid; width: 48px; height: 48px; place-items: center; border-radius: 50%; background: var(--navy); color: #f0cd68; font-size: 1.35rem; }
.library-lesson-intro p { margin: 4px 0 0; color: var(--muted); }
.library-parchment { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 18px; border-color: #dcc990; background: linear-gradient(135deg, #fffdf6, #fff6d9); }
.library-parchment-icon { display: grid; width: 46px; height: 46px; place-items: center; border: 2px solid var(--gold); border-radius: 50%; color: #7f5e12; font: italic 700 1.45rem Georgia, serif; }
.library-parchment h2 { margin-top: 3px; }
.library-question-folio { position: relative; overflow: hidden; border-top: 5px solid var(--gold); }
.library-question-folio > header { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 15px; align-items: center; padding-bottom: 16px; border-bottom: 1px solid #e2d8c8; }
.library-question-number { display: grid; width: 50px; height: 50px; place-items: center; border-radius: 50%; background: var(--navy); color: #f0cd68; font: 700 1.35rem Georgia, serif; }
.library-question-folio h2 { margin: 2px 0 0; }
.library-catalogue-code { padding: 7px 9px; border-radius: 6px; background: #eef1f4; color: var(--muted); font-size: 0.76rem; font-weight: 800; }
.library-question-copy { margin: 20px 0; }
.library-question-copy > p > strong { display: block; margin-bottom: 7px; color: #8b6715; font-size: 0.78rem; letter-spacing: 0.08em; text-transform: uppercase; }
.library-answer-drawer { padding: 17px; border: 1px solid #b7d8c6; border-radius: 12px; background: #edf8f2; }
.library-answer-drawer p { margin: 5px 0; }
.library-answer-drawer .eyebrow { color: #176743; }
.library-error-stage { max-width: 720px; margin: 50px auto; padding: 50px; border: 1px solid #d9cfbc; border-radius: 20px; background: #fff; text-align: center; box-shadow: var(--shadow); }
.library-error-stage h1 { color: var(--navy); font: 700 clamp(2.5rem, 6vw, 4.5rem)/0.95 Georgia, serif; }
.library-error-book { display: grid; width: 86px; height: 104px; margin: 0 auto 22px; place-items: center; border: 2px solid var(--gold); border-radius: 4px 12px 12px 4px; background: var(--navy); color: #f0cd68; font: 700 2.5rem Georgia, serif; box-shadow: inset 8px 0 rgba(200, 157, 56, 0.18); }

@media (max-width: 1080px) {
  .library-ledger { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .library-book-grid { grid-template-columns: 1fr; }
}

@media (max-width: 760px) {
  .library-grand-hero { min-height: 600px; }
  .library-subhero { min-height: 500px; }
  .library-grand-hero > img,
  .library-subhero > img { object-position: 70% 50%; }
  .library-grand-shade,
  .library-subhero-shade { background: linear-gradient(0deg, rgba(2, 11, 23, 0.99) 0%, rgba(4, 17, 33, 0.86) 62%, rgba(4, 17, 33, 0.25) 100%); }
  .library-grand-copy,
  .library-subhero-content { padding: 26px; }
  .library-grand-copy h1,
  .library-subhero-content h1 { font-size: clamp(3rem, 14vw, 4.7rem); }
  .library-open-plaque { right: 18px; bottom: 18px; left: 18px; }
  .library-grand-copy { padding-bottom: 130px; }
  .library-catalogue-heading { grid-template-columns: 1fr; align-items: stretch; }
  .library-book-card { grid-template-columns: 70px minmax(0, 1fr); }
  .library-book-body { padding: 19px; }
  .library-term-map { position: static; }
  .library-term-map span { width: 100%; margin-right: 0; }
  .library-lesson-shelf { padding-left: 16px; }
  .library-lesson-card { grid-template-columns: auto minmax(0, 1fr); }
  .library-lesson-actions { grid-column: 1 / -1; justify-content: stretch; }
  .library-lesson-actions .button { flex: 1 1 140px; }
  .library-lesson-intro { grid-template-columns: auto minmax(0, 1fr); }
  .library-lesson-intro .button { grid-column: 1 / -1; width: 100%; }
}

@media (max-width: 500px) {
  .library-ledger { grid-template-columns: 1fr; }
  .library-catalogue { padding: 18px 12px; border-radius: 16px; }
  .library-book-card { grid-template-columns: 54px minmax(0, 1fr); }
  .library-book-spine { padding: 16px 5px; }
  .library-book-spine strong { width: 42px; height: 42px; font-size: 1.15rem; }
  .library-book-body { padding: 17px 14px; }
  .library-book-kicker { align-items: flex-start; flex-direction: column; }
  .library-book-actions .button { width: 100%; flex-basis: 100%; }
  .library-term-heading { align-items: flex-start; }
  .library-term-seal { width: 54px; height: 54px; }
  .library-week-volume > summary { gap: 9px; padding: 11px; }
  .library-week-spine { width: 42px; height: 44px; }
  .library-lesson-card { grid-template-columns: 1fr; }
  .library-lesson-position { width: 32px; height: 32px; }
  .library-lesson-actions { grid-column: auto; }
  .library-question-folio > header { grid-template-columns: auto minmax(0, 1fr); }
  .library-catalogue-code { grid-column: 1 / -1; justify-self: start; }
  .library-parchment { grid-template-columns: 1fr; }
}

/* BEGIN MY LEARNING EMPIRE COMPONENT LAYER
   All learner/admin Empire selectors and responsive overrides belong between these markers. */
.student-empire-welcome-copy .student-avatar-dashboard { float: left; }

.student-empire-language {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
  margin: 0 0 14px;
  color: #42556a;
  font-size: .78rem;
}
.student-empire-language strong {
  margin-right: 3px;
  color: #07172b;
  font-size: .72rem;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.student-empire-language a {
  min-height: 36px;
  padding: 8px 11px;
  border: 1px solid #b9c5d0;
  border-radius: 999px;
  color: #173a5d;
  background: #fff;
  font-weight: 850;
  text-decoration: none;
}
.student-empire-language a:hover,
.student-empire-language a:focus-visible {
  border-color: #9b741c;
  background: #fff7d8;
}
.student-empire-language a:focus-visible {
  outline: 3px solid #77bdf0;
  outline-offset: 2px;
}
.student-empire-language a[aria-current="page"] {
  border-color: #d3a936;
  color: #07172b;
  background: linear-gradient(135deg, #ffedaa, #d3a936);
}
.student-empire-layout {
  --empire-focus-ring: #77bdf0;
  --empire-gold: #d3a936;
  --empire-ink: #07172b;
  display: grid;
  grid-template-columns: 142px minmax(0, 1fr);
  align-items: start;
  gap: 22px;
}
.student-empire-main { min-width: 0; }
.student-empire-layout :where(a, button, summary, input):focus-visible,
.student-empire-reward :where(a, button):focus-visible,
.admin-student-empire :where(a, button, input, select, textarea):focus-visible {
  outline: 3px solid var(--empire-focus-ring, #77bdf0);
  outline-offset: 3px;
}
.student-empire-nav {
  position: sticky;
  top: calc(var(--student-header-height, 81px) + 12px);
  z-index: 12;
  display: grid;
  gap: 7px;
  padding: 10px;
  border: 1px solid rgba(211, 171, 68, .42);
  border-radius: 18px;
  background: #07172b;
  box-shadow: 0 18px 38px rgba(7, 23, 43, .2);
}
.student-empire-nav a {
  display: grid;
  place-items: center;
  gap: 5px;
  min-height: 70px;
  padding: 9px 6px;
  border-radius: 12px;
  color: #dfe8f1;
  text-align: center;
  text-decoration: none;
}
.student-empire-nav a:hover,
.student-empire-nav a:focus-visible { background: rgba(255, 255, 255, .1); }
.student-empire-nav a:focus-visible { outline: 3px solid #77bdf0; outline-offset: 2px; }
.student-empire-nav a.is-current { color: #172238; background: linear-gradient(135deg, #ffedaa, #d3a936); }
.student-empire-nav-more,
.student-empire-nav-more-menu { display: contents; }
.student-empire-nav-more > summary { display: none; }
.student-empire-nav span,
.student-empire-nav-more > summary span { font-size: 1.4rem; }
.student-empire-nav strong,
.student-empire-nav-more > summary strong { font-size: .75rem; line-height: 1.25; }

.student-empire-welcome {
  margin: 0 0 18px;
  padding: 2px 4px 0;
}
.student-empire-welcome .eyebrow {
  margin: 0 0 6px;
  color: #755313;
}
.student-empire-welcome h1 {
  margin: 0;
  color: #07172b;
  font-size: clamp(1.75rem, 4vw, 2.5rem);
  line-height: 1.08;
}
.student-empire-welcome-role {
  margin: 6px 0 0;
  color: #526579;
  font-weight: 800;
}

.student-empire-hero {
  position: relative;
  display: grid;
  align-content: end;
  min-height: 630px;
  margin-bottom: 24px;
  overflow: hidden;
  isolation: isolate;
  border: 1px solid rgba(213, 172, 60, .52);
  border-radius: 26px;
  color: #fff;
  background: #172a3e;
  box-shadow: 0 24px 60px rgba(7, 23, 43, .22);
}
.student-empire-castle-hero { min-height: 700px; scroll-margin-top: 94px; }
.student-empire-hero > img { position: absolute; z-index: -3; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 48%; transition: opacity 240ms ease, transform 800ms ease; }
.student-empire-hero:hover > img { transform: scale(1.018); }
.student-empire-stage-motion { z-index: -2 !important; opacity: 0; pointer-events: none; }
.student-empire-stage-motion[hidden] { display: none !important; }
.student-empire-stage-motion[data-motion-loaded="true"] { opacity: 1; }
.student-empire-shade { position: absolute; z-index: -1; inset: 0; background: linear-gradient(90deg, rgba(4, 15, 28, .92) 0%, rgba(4, 15, 28, .5) 37%, rgba(4, 15, 28, .08) 66%), linear-gradient(0deg, rgba(4, 15, 28, .92), transparent 42%); }
.student-empire-stage-celebration {
  position: absolute;
  z-index: 4;
  inset: 0;
  opacity: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 21% 24%, rgba(255, 238, 165, .9) 0 2px, transparent 3px),
    radial-gradient(circle at 39% 13%, rgba(255, 216, 91, .8) 0 3px, transparent 4px),
    radial-gradient(circle at 58% 19%, rgba(255, 242, 181, .86) 0 2px, transparent 3px),
    radial-gradient(circle at 76% 29%, rgba(255, 209, 74, .78) 0 3px, transparent 4px),
    radial-gradient(ellipse at 56% 42%, rgba(255, 222, 111, .32), transparent 45%);
  transform: scale(.98);
}
.student-empire-stage-celebration::before,
.student-empire-stage-celebration::after {
  position: absolute;
  inset: 0;
  content: "";
  background:
    radial-gradient(circle at 31% 38%, rgba(255,255,225,.95) 0 1px, transparent 2px),
    radial-gradient(circle at 48% 28%, rgba(255,229,133,.88) 0 2px, transparent 3px),
    radial-gradient(circle at 68% 40%, rgba(255,255,225,.9) 0 1px, transparent 2px);
}
.student-empire-stage-celebration::after { transform: scaleX(-1) translateY(11%); }
.student-empire-castle-hero.is-stage-advance-celebrating .student-empire-stage-celebration { animation: empire-stage-advance-glow 2.4s ease-out both; }
.student-empire-castle-hero.is-stage-advance-celebrating .student-empire-stage-celebration::before { animation: empire-stage-advance-sparkles 2.4s ease-out both; }
.student-empire-castle-hero.is-stage-advance-celebrating .student-empire-stage-celebration::after { animation: empire-stage-advance-sparkles 2.4s .12s ease-out both; }
.student-empire-copy { position: absolute; z-index: 5; bottom: 112px; left: clamp(22px, 5vw, 64px); width: min(510px, calc(100% - 44px)); color: #fff; }
.student-empire-copy h1 { max-width: 700px; margin: 8px 0 12px; color: #fff; font: 700 clamp(2.7rem, 6vw, 5.3rem)/.94 Georgia, serif; letter-spacing: -.055em; text-wrap: balance; text-shadow: 0 3px 18px rgba(0,0,0,.35); }
.student-empire-copy > p:not(.eyebrow) { margin: 0 0 20px; color: #eef4fa; font-size: 1.05rem; font-weight: 750; }
.student-empire-copy .eyebrow { color: #f2d16f; }
.student-empire-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.empire-ghost-button { border-color: rgba(255,255,255,.65) !important; color: #fff !important; background: rgba(7,23,43,.58) !important; }
.empire-ghost-button:hover,
.empire-ghost-button:focus-visible { border-color: #f2d273 !important; color: #07172b !important; background: #fff !important; }
.student-empire-wallet {
  position: absolute;
  z-index: 6;
  top: 20px;
  right: 20px;
  display: grid;
  grid-template-columns: repeat(3, minmax(112px, 1fr));
  gap: 7px;
  padding: 8px;
  border: 1px solid rgba(255,255,255,.4);
  border-radius: 16px;
  background: rgba(7, 23, 43, .88);
  box-shadow: 0 12px 34px rgba(7,23,43,.25);
  width: auto;
  backdrop-filter: blur(10px);
}
.student-empire-wallet > div { display: flex; align-items: center; gap: 9px; padding: 7px 10px; border-radius: 10px; background: rgba(255,255,255,.07); color: #fff; }
.student-empire-wallet > div > span { display: grid; width: 38px; height: 38px; place-items: center; flex: 0 0 38px; border-radius: 50%; color: #07172b; background: #d5a931; font-size: 1.05rem; }
.student-empire-wallet p { display: grid; gap: 1px; margin: 0; }
.student-empire-wallet strong { color: #fff; font-size: 1.15rem; line-height: 1; }
.student-empire-wallet small { color: #c9d4df; font-size: .62rem; font-weight: 800; }
.student-empire-level-progress { position: absolute; z-index: 6; right: 22px; bottom: 22px; width: min(470px, calc(100% - 44px)); padding: 13px 15px; border: 1px solid rgba(255,255,255,.34); border-radius: 14px; color: #fff; background: rgba(7,23,43,.86); backdrop-filter: blur(10px); }
.student-empire-level-progress > div:first-child { display: flex; justify-content: space-between; gap: 16px; margin-bottom: 8px; color: #f6dda0; font-size: .75rem; font-weight: 850; }
.student-empire-level-progress span { color: #d7e1ea; }
.student-empire-progress-track { height: 9px; border-radius: 999px; background: rgba(255,255,255,.2); overflow: hidden; }
.student-empire-progress-track i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #ca9125, #f4d66c); box-shadow: 0 0 14px rgba(244,214,108,.5); }

.student-empire-built-layer { position: absolute; z-index: 2; inset: 0; pointer-events: none; }
.empire-castle-piece {
  position: absolute;
  display: block;
  width: 104px;
  height: 112px;
  pointer-events: auto;
  color: #fff4c5;
  text-align: center;
  text-decoration: none;
  filter: drop-shadow(0 10px 9px rgba(4,15,28,.42));
  animation: empire-upgrade-arrive .65s ease both;
}
.empire-castle-piece:focus-visible { outline: 4px solid #8cd1ff; outline-offset: 6px; border-radius: 8px; }
.empire-castle-piece strong { position: absolute; right: 50%; bottom: -26px; padding: 5px 8px; border: 1px solid rgba(255,230,145,.8); border-radius: 999px; background: rgba(7,23,43,.92); font-size: .64rem; white-space: nowrap; transform: translateX(50%); }
.empire-piece-art { position: absolute; display: block; inset: 0; border: 3px solid #e6c05a; border-radius: 12px 12px 5px 5px; background: linear-gradient(135deg,#efe0ba,#b38b49); box-shadow: inset 0 0 0 4px rgba(255,248,218,.3); overflow: visible; }
.empire-piece-art > i { position: absolute; z-index: 3; display: grid; top: 10px; left: 50%; width: 36px; height: 36px; place-items: center; border-radius: 50%; color: #ffe98f; background: #102945; font-style: normal; transform: translateX(-50%); }
.empire-piece-art > b,
.empire-piece-art > em { position: absolute; display: block; content: ""; }
.empire-castle-piece.is-building .empire-piece-art { opacity: .7; filter: grayscale(.35); }
.empire-scaffolding { position: absolute; z-index: 5; inset: -7px; border: 4px solid #7b522a; background: repeating-linear-gradient(90deg,transparent 0 22px,rgba(94,57,24,.95) 23px 27px), repeating-linear-gradient(0deg,transparent 0 28px,rgba(114,72,31,.95) 29px 33px); }
.empire-scaffolding i { position: absolute; top: 50%; left: -9%; width: 118%; height: 4px; background: #c39350; transform: rotate(-35deg); }
.empire-scaffolding i:nth-child(2) { transform: rotate(35deg); }
.empire-scaffolding i:nth-child(3) { top: auto; bottom: 5px; height: 8px; transform: none; }
.empire-castle-piece.is-royal-banner { top: 16%; left: 48%; width: 78px; height: 128px; }
.empire-castle-piece.is-royal-banner .empire-piece-art { border: 0; background: linear-gradient(90deg,transparent 46%,#f5df9a 47% 54%,transparent 55%); box-shadow: none; }
.empire-castle-piece.is-royal-banner .empire-piece-art::after { position: absolute; top: 10px; left: 51%; width: 55px; height: 39px; content: ""; background: linear-gradient(135deg,#ffe38a,#c7931e); clip-path: polygon(0 0,100% 12%,78% 100%,0 86%); }
.empire-castle-piece.is-royal-banner .empire-piece-art > i { top: 14px; left: 73%; background: transparent; }
.empire-castle-piece.is-library-wing { bottom: 31%; left: 19%; width: 132px; height: 86px; }
.empire-castle-piece.is-library-wing .empire-piece-art::before { position: absolute; top: -25px; left: -5px; width: 136px; height: 36px; content: ""; background: #9c7337; clip-path: polygon(0 100%,50% 0,100% 100%); }
.empire-castle-piece.is-library-wing .empire-piece-art > b { right: 10px; bottom: 10px; left: 10px; height: 24px; background: repeating-linear-gradient(90deg,#17334e 0 14px,#d7b75d 15px 18px); }
.empire-castle-piece.is-stone-walls { right: 38%; bottom: 17%; width: 190px; height: 64px; }
.empire-castle-piece.is-stone-walls .empire-piece-art { border-radius: 3px; background: repeating-linear-gradient(0deg,#bca06e 0 20px,#e2cfaa 21px 23px); }
.empire-castle-piece.is-stone-walls .empire-piece-art::before { position: absolute; top: -17px; left: -3px; width: 190px; height: 22px; content: ""; background: repeating-linear-gradient(90deg,#caa96f 0 22px,transparent 23px 34px); }
.empire-castle-piece.is-sun-tower { top: 25%; right: 18%; width: 76px; height: 150px; }
.empire-castle-piece.is-sun-tower .empire-piece-art::before { position: absolute; top: -32px; left: -9px; width: 88px; height: 38px; content: ""; background: #bd8b2c; clip-path: polygon(0 100%,50% 0,100% 100%); }
.empire-castle-piece.is-sun-tower .empire-piece-art > i { color: #fff2a9; box-shadow: 0 0 22px #ffd95e; }
.empire-castle-piece.is-royal-gardens { right: 12%; bottom: 19%; width: 150px; height: 64px; }
.empire-castle-piece.is-royal-gardens .empire-piece-art { border-color: #e4cc70; border-radius: 50%; background: radial-gradient(circle at 22% 45%,#ffe36c 0 6%,transparent 7%),radial-gradient(circle at 62% 32%,#fff3a4 0 7%,transparent 8%),radial-gradient(circle at 78% 60%,#f3b2c5 0 7%,transparent 8%),linear-gradient(#4e9c57,#286c3f); }
.empire-castle-piece.is-royal-gardens .empire-piece-art > i { top: 12px; }
.empire-castle-piece.is-crown-spire { top: 7%; left: 55%; width: 72px; height: 134px; }
.empire-castle-piece.is-crown-spire .empire-piece-art { border: 0; background: linear-gradient(90deg,transparent 38%,#e2c16e 39% 61%,transparent 62%); box-shadow: none; clip-path: polygon(50% 0,79% 45%,66% 45%,70% 100%,30% 100%,34% 45%,21% 45%); }
.empire-castle-piece.is-crown-spire .empire-piece-art > i { top: 48px; }

.empire-command-strip { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 13px; margin: 0 0 24px; scroll-margin-top: 94px; }
.empire-command-strip article { display: flex; align-items: center; gap: 13px; min-height: 112px; padding: 17px; border: 1px solid #ded4be; border-radius: 16px; background: #fff; box-shadow: 0 10px 24px rgba(7,23,43,.06); }
.empire-command-strip article > span { display: grid; width: 42px; height: 42px; flex: 0 0 auto; place-items: center; border-radius: 50%; color: #f1d26f; background: #07172b; font: 800 1.1rem Georgia, serif; }
.empire-command-strip strong { color: var(--navy); font-size: 1.02rem; }
.empire-command-strip p { margin: 4px 0 0; color: var(--muted); font-size: .85rem; line-height: 1.45; }
.empire-support-disclosure { margin: 0 0 24px; border: 1px solid #c8b36c; border-radius: 22px; background: #f8f3df; box-shadow: 0 14px 34px rgba(7,23,43,.07); overflow: clip; }
.empire-support-disclosure > summary { display: grid; gap: 5px; min-height: 72px; padding: 18px 22px; color: var(--navy); cursor: pointer; list-style-position: inside; }
.empire-support-disclosure > summary strong { font: 700 clamp(1.25rem, 2.5vw, 1.7rem)/1.15 Georgia, serif; }
.empire-support-disclosure > summary span { color: var(--muted); font-size: .88rem; line-height: 1.45; }
.empire-support-disclosure[open] > summary { border-bottom: 1px solid #ded4be; background: #fffdf5; }
.empire-support-disclosure-body { padding: 20px 20px 0; }
.empire-support-disclosure-body > .student-empire-section:last-child { margin-bottom: 20px; }
.student-empire-section { margin: 0 0 24px; padding: clamp(20px, 4vw, 34px); border: 1px solid #ded4be; border-radius: 22px; background: #fff; box-shadow: 0 14px 34px rgba(7,23,43,.07); scroll-margin-top: 94px; }
.student-empire-section .student-section-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; margin-bottom: 22px; }
.student-empire-section .student-section-heading h2,
.empire-defence-story h2 { margin: 5px 0 8px; color: var(--navy); font: 700 clamp(2rem, 4vw, 3.1rem)/1 Georgia, serif; }
.student-empire-section .student-section-heading p:not(.eyebrow),
.empire-defence-story p:not(.eyebrow) { max-width: 720px; margin: 0; color: var(--muted); line-height: 1.55; }
.student-section-count { padding: 8px 11px; border: 1px solid #d6b961; border-radius: 999px; color: #6c4e0e; background: #fff4c8; font-size: .75rem; font-weight: 850; white-space: nowrap; }
.student-empire-upgrade-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 13px; }
.student-empire-upgrade { display: grid; grid-template-columns: 50px minmax(0, 1fr); grid-template-rows: auto 1fr auto; align-content: start; gap: 13px; min-width: 0; min-height: 250px; padding: 18px; border: 1px solid #dcd7cb; border-top: 5px solid #d1a43a; border-radius: 16px; background: #fbfcfd; box-shadow: 0 14px 35px rgba(7,23,43,.07); transition: border-color 180ms ease, box-shadow 180ms ease, transform 180ms ease; }
.student-empire-upgrade:not(.is-locked):hover,
.student-empire-upgrade:not(.is-locked):focus-within { border-color: #c9a23c; box-shadow: 0 18px 38px rgba(7,23,43,.12); transform: translateY(-2px); }
.student-empire-upgrade.is-completed { border-color: #b9a04e; background: linear-gradient(145deg, #fff9df, #fff); }
.student-empire-upgrade.is-building { border-color: #c68b38; background: linear-gradient(145deg,#fff4dc,#fff); }
.student-empire-upgrade.is-locked { filter: grayscale(.75); opacity: .68; background: #f0f2f4; }
.student-empire-upgrade:target { outline: 5px solid rgba(224,175,43,.45); outline-offset: 4px; animation: empire-card-focus .7s ease; }
.student-empire-upgrade-icon { display: grid; width: 50px; height: 50px; place-items: center; border-radius: 14px; color: #f1d16d; background: #07172b; font-size: 1.55rem; }
.student-empire-upgrade h3 { margin: 4px 0 7px; color: var(--navy); font: 700 1.35rem/1.05 Georgia, serif; }
.student-empire-upgrade p { margin: 0; color: var(--muted); font-size: .88rem; line-height: 1.5; }
.student-empire-upgrade .empire-upgrade-benefit { margin-top: 9px; color: #3d5469; }
.student-empire-upgrade small { color: #916d17; font-size: .875rem; font-weight: 850; text-transform: uppercase; letter-spacing: .05em; }
.student-empire-upgrade form,
.student-empire-upgrade .empire-built-seal,
.student-empire-upgrade .empire-construction-status { grid-column: 1 / -1; align-self: end; margin-top: auto; }
.student-empire-upgrade form .button { width: 100%; }
.empire-upgrade-preview { position: relative; grid-column: 1/-1; height: 58px; border: 1px solid #d5c79d; border-radius: 10px; background: linear-gradient(#d8ecf4 0 58%,#76915c 59%); overflow: hidden; }
.empire-upgrade-preview span { position: absolute; left: 50%; bottom: 7px; display: grid; width: 48px; height: 43px; place-items: center; border: 3px solid #d7b84e; border-radius: 7px 7px 2px 2px; color: #f8de78; background: #263e55; transform: translateX(-50%); transition: transform 180ms ease, box-shadow 180ms ease; }
.student-empire-upgrade:not(.is-locked):hover .empire-upgrade-preview span,
.student-empire-upgrade:not(.is-locked):focus-within .empire-upgrade-preview span { box-shadow: 0 0 0 4px rgba(245,211,111,.18); transform: translateX(-50%) translateY(-2px); }
.empire-upgrade-preview.is-building span { background: repeating-linear-gradient(45deg,#734c28 0 5px,#c4934f 6px 10px); }
.empire-upgrade-preview.is-locked { filter: grayscale(1); opacity: .6; }
.empire-construction-status { display: grid; gap: 4px; padding: 11px; border: 1px solid #d49b48; border-radius: 10px; color: #613d0e; background: #fff1d3; text-align: center; }
.empire-construction-status span { font-size: 1.08rem; font-weight: 900; font-variant-numeric: tabular-nums; }
.empire-construction-status small { color: #72522b; }
.empire-built-seal { display: block; align-self: end; padding: 10px; border-radius: 10px; color: #2d6745; background: #e4f5eb; text-align: center; font-size: .78rem; }
.empire-mission-section { background: linear-gradient(145deg,#f8fbff,#fff7dd); }
.empire-mission-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 13px; }
.empire-mission-card { display: grid; grid-template-columns: 46px minmax(0,1fr); align-content: start; gap: 13px; min-height: 320px; padding: 18px; border: 1px solid #c7d1dc; border-radius: 16px; background: #fff; }
.empire-mission-card.is-completed { border-color: #77aa8b; background: #f4fbf7; }
.empire-mission-card.is-locked { filter: grayscale(.8); opacity: .66; }
.empire-mission-icon { display: grid; width: 46px; height: 46px; place-items: center; border-radius: 50%; color: #f6d979; background: #101d31; font-size: 1.3rem; }
.empire-mission-card h3,
.empire-learning-grid h3 { margin: 4px 0 8px; color: var(--navy); font: 700 1.3rem/1.08 Georgia,serif; }
.empire-mission-card p { margin: 0; color: var(--muted); font-size: .87rem; line-height: 1.5; }
.empire-mission-card small { color: #87671b; font-weight: 850; }
.empire-mission-result,
.empire-mission-form,
.empire-mission-card > .empire-built-seal,
.empire-mission-card > .empire-mission-lock,
.empire-mission-card > .empire-construction-status { grid-column: 1/-1; align-self: end; margin-top: auto; }
.empire-mission-result { padding: 10px; border-left: 4px solid #327150; border-radius: 6px; background: #eaf7ef; }
.empire-mission-result.is-retreat { border-color: #b87927; background: #fff1dc; }
.empire-mission-lock { padding: 10px; border-radius: 9px; color: #4f5963; background: #e9edf1; text-align: center; font-size: .8rem; }
.empire-mission-form { display: grid; gap: 10px; }
.empire-mission-form fieldset { display: grid; gap: 7px; margin: 0; padding: 10px; border: 1px solid #d7dbe0; border-radius: 10px; }
.empire-mission-form legend { padding: 0 5px; color: var(--navy); font-size: .78rem; font-weight: 850; }
.empire-mission-form label { display: flex; gap: 7px; align-items: center; min-height: 44px; padding: 8px; border-radius: 7px; background: #f3f6f8; font-size: .8rem; }
.empire-mission-form label:has(input:focus-visible) { outline: 4px solid #f6d96b; outline-offset: 2px; }
.empire-combat-arena { grid-column: 1/-1; display: grid; grid-template-columns: minmax(0,1fr) auto minmax(0,1fr); align-items: center; gap: 10px; padding: 12px; border: 1px solid #9fb0c3; border-radius: 12px; background: linear-gradient(145deg,#eef4fa,#fff8e4); }
.empire-combatant { display: grid; justify-items: center; gap: 5px; min-width: 0; text-align: center; }
.empire-combatant > span { display: grid; width: 42px; height: 42px; place-items: center; border-radius: 50%; color: #f4d36d; background: #0a1a2f; font-size: 1.15rem; }
.empire-combatant strong { max-width: 100%; color: var(--navy); font-size: .78rem; overflow-wrap: anywhere; }
.empire-combatant small { color: #5e6874; font-variant-numeric: tabular-nums; }
.empire-combat-versus { color: #7f621b; font-weight: 950; letter-spacing: .08em; }
.empire-health-track { width: 100%; min-width: 74px; height: 12px; border: 1px solid #68798b; border-radius: 999px; background: #d7dde3; overflow: hidden; }
.empire-health-track > span { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg,#3b7952,#8abf6b); }
.empire-combatant.is-opponent .empire-health-track > span { background: linear-gradient(90deg,#8b3540,#d47b55); }
.empire-combat-log { grid-column: 1/-1; display: grid; gap: 5px; margin: 0; padding: 11px 11px 11px 29px; border: 1px solid #c6b77d; border-radius: 10px; color: #34485b; background: #fffaf0; font-size: .78rem; line-height: 1.45; }
.empire-combat-log li::marker { color: #98731c; font-weight: 900; }
.empire-learning-grid { display: grid; gap: 11px; }
.empire-learning-grid article { display: grid; grid-template-columns: auto minmax(0,1fr) auto; align-items: center; gap: 14px; padding: 15px; border: 1px solid #d9d3c4; border-radius: 14px; background: #fbfcfd; }
.empire-learning-grid article > span { display: grid; width: 46px; height: 46px; place-items: center; border-radius: 50%; color: #f3d26d; background: var(--navy); }
.empire-learning-grid p { margin: 0; color: var(--muted); font-size: .86rem; }
.empire-learning-grid small { color: #88691f; font-weight: 850; }
.empire-defence-story { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 30px; padding: clamp(24px,4vw,42px); border: 1px solid #d7b95d; border-radius: 18px; background: linear-gradient(135deg, #f6f8fb, #fff8dd); }
.empire-defence-story .eyebrow { color: #916d17; }
.empire-defence-shield { display: grid; width: 145px; height: 165px; place-items: center; align-content: center; border: 3px solid #d2a936; border-radius: 50% 50% 42% 42%; clip-path: polygon(50% 0,94% 18%,86% 72%,50% 100%,14% 72%,6% 18%); color: #f1d06a; background: #07172b; box-shadow: inset 0 0 0 7px rgba(210,169,54,.16); }
.empire-defence-shield > span { font-size: 1.9rem; }
.empire-defence-shield > strong { color: #fff; font-size: 2rem; }
.empire-defence-shield > small { color: #c8d4df; font-size: .63rem; }
.empire-transaction-list { display: grid; gap: 9px; }
.empire-transaction-list article { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 13px; padding: 13px; border: 1px solid #e0dacc; border-radius: 12px; background: #fbfcfd; }
.empire-transaction-list article div { display: grid; gap: 3px; }
.empire-transaction-list article small { color: var(--muted); }
.empire-transaction-list article b { color: var(--navy); }
.empire-transaction-mark { display: grid; width: 36px; height: 36px; place-items: center; border-radius: 50%; font-weight: 900; }
.empire-transaction-mark.is-earned { color: #176743; background: #dff3e7; }
.empire-transaction-mark.is-spent { color: #7b2731; background: #f9e4e7; }
.student-empire-alert { margin-bottom: 18px; }

@keyframes empire-upgrade-arrive {
  from { opacity: 0; transform: translateY(10px) scale(.9); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes empire-card-focus {
  0%,100% { transform: translateY(0); }
  45% { transform: translateY(-8px); }
}
@keyframes empire-stage-advance-glow {
  0% { opacity: 0; transform: scale(.98); }
  18% { opacity: 1; transform: scale(1); }
  68% { opacity: .5; }
  100% { opacity: 0; transform: scale(1.015); }
}
@keyframes empire-stage-advance-sparkles {
  0% { opacity: 0; transform: translateY(18px) scale(.86); }
  24% { opacity: 1; }
  100% { opacity: 0; transform: translateY(-28px) scale(1.08); }
}

@media (prefers-reduced-motion: reduce) {
  .student-empire-hero > img,
  .empire-room-route a,
  .empire-room-step,
  .empire-room-enter i,
  .student-empire-upgrade,
  .empire-upgrade-preview span,
  .empire-library-quest-record,
  .empire-library-quest-record::after { transition: none; }
  .student-empire-hero:hover > img,
  .empire-room-route a:hover,
  .empire-room-route a:focus-visible,
  .empire-room-route a:hover .empire-room-step,
  .empire-room-route a:focus-visible .empire-room-step,
  .student-empire-upgrade:not(.is-locked):hover,
  .student-empire-upgrade:not(.is-locked):focus-within,
  .student-empire-upgrade:not(.is-locked):hover .empire-upgrade-preview span,
  .student-empire-upgrade:not(.is-locked):focus-within .empire-upgrade-preview span,
  .empire-library-quest-record:hover,
  .empire-library-quest-record:focus-within,
  .empire-library-quest-record:hover::after,
  .empire-library-quest-record:focus-within::after { transform: none; }
  .empire-castle-piece,
  .student-empire-upgrade:target,
  .student-empire-stage-celebration,
  .student-empire-stage-celebration::before,
  .student-empire-stage-celebration::after { animation: none !important; }
  .student-empire-stage-motion { display: none !important; }
  .student-empire-stage-celebration { opacity: 0 !important; }
  .empire-library-result-arrival-glow,
  .student-empire-library-result.is-verified-arrival-glowing .empire-library-result-seal { animation: none !important; }
  .empire-library-result-arrival-glow { opacity: 0 !important; }
}

@media (max-width: 1050px) {
  .student-empire-layout { grid-template-columns: 112px minmax(0, 1fr); gap: 15px; }
  .student-empire-nav a { min-height: 62px; }
  .student-empire-upgrade-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .empire-mission-grid { grid-template-columns: 1fr; }
  .student-empire-wallet { grid-template-columns: 1fr; }
  .student-empire-wallet > div { min-width: 145px; }
}

@media (max-width: 760px) {
  html { scroll-padding-bottom: calc(var(--student-bottom-nav-height, 78px) + 24px + env(safe-area-inset-bottom, 0px)); }
  .student-empire-layout { display: block; padding-bottom: calc(var(--student-bottom-nav-height, 78px) + 42px + env(safe-area-inset-bottom, 0px)); }
  .student-empire-nav {
    position: fixed;
    top: auto;
    right: max(8px, env(safe-area-inset-right, 0px));
    bottom: max(8px, env(safe-area-inset-bottom, 0px));
    left: max(8px, env(safe-area-inset-left, 0px));
    z-index: 90;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 5px;
    width: auto;
    max-width: calc(100% - max(16px, env(safe-area-inset-left, 0px) + env(safe-area-inset-right, 0px)));
    margin: 0;
    padding: 7px;
    box-sizing: border-box;
    overflow: visible;
    border-radius: 18px;
    box-shadow: 0 16px 40px rgba(2, 12, 25, .42), 0 0 0 1px rgba(255, 234, 158, .18);
  }
  .student-empire-castle-hero,
  .empire-command-strip,
  .student-empire-section { scroll-margin-top: 132px; }
  .student-empire-nav a { min-width: 0; min-height: 56px; padding-inline: 4px; overflow: visible; }
  .student-empire-nav span,
  .student-empire-nav-more > summary span { font-size: 1.1rem; }
  .student-empire-nav strong,
  .student-empire-nav-more > summary strong { display: block; min-width: 0; max-width: 100%; font-size: .75rem; line-height: 1.08; white-space: normal; overflow-wrap: anywhere; }
  .student-empire-nav-more { position: relative; display: block; min-width: 0; }
  .student-empire-nav-more > summary {
    display: grid;
    place-items: center;
    gap: 5px;
    min-height: 54px;
    padding: 9px 6px;
    border-radius: 12px;
    color: #dfe8f1;
    text-align: center;
    cursor: pointer;
    list-style: none;
  }
  .student-empire-nav-more > summary::-webkit-details-marker { display: none; }
  .student-empire-nav-more > summary:hover,
  .student-empire-nav-more > summary:focus-visible { background: rgba(255, 255, 255, .1); }
  .student-empire-nav-more[open] > summary,
  .student-empire-nav-more.has-current > summary { color: #172238; background: linear-gradient(135deg, #ffedaa, #d3a936); }
  .student-empire-nav-more-menu {
    position: fixed;
    right: max(8px, env(safe-area-inset-right, 0px));
    bottom: calc(var(--student-bottom-nav-height, 78px) + 16px + env(safe-area-inset-bottom, 0px));
    left: max(8px, env(safe-area-inset-left, 0px));
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px;
    width: auto;
    max-width: calc(100% - 16px);
    padding: 8px;
    box-sizing: border-box;
    border: 1px solid rgba(211, 171, 68, .58);
    border-radius: 16px;
    background: #07172b;
    box-shadow: 0 18px 44px rgba(2, 12, 25, .5);
  }
  .student-empire-nav-more:not([open]) > .student-empire-nav-more-menu { display: none; }
  .student-empire-hero,
  .student-empire-castle-hero { min-height: 720px; border-radius: 18px; }
  .student-empire-hero > img { object-position: 58% 50%; }
  .student-empire-shade { background: linear-gradient(0deg, rgba(4,15,28,.96) 0%, rgba(4,15,28,.7) 46%, rgba(4,15,28,.06) 78%); }
  .student-empire-copy { right: 20px; bottom: 150px; left: 20px; width: auto; }
  .student-empire-copy h1 { font-size: clamp(2.7rem, 12vw, 4.4rem); }
  .student-empire-wallet { top: 13px; right: 13px; left: 13px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .student-empire-wallet > div { min-width: 0; padding: 6px; }
  .student-empire-wallet small { font-size: .55rem; }
  .student-empire-level-progress { right: 14px; bottom: 14px; left: 14px; width: auto; }
  .empire-castle-piece { transform: scale(.82); transform-origin: center bottom; }
  .empire-castle-piece strong { display: none; }
  .student-empire-section .student-section-heading { align-items: flex-start; flex-direction: column; }
  .empire-defence-story { grid-template-columns: 1fr; }
  .empire-defence-shield { justify-self: center; }
}

@media (max-width: 520px) {
  .student-empire-language {
    justify-content: center;
    gap: 4px;
  }
  .student-empire-language strong {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
  }
  .student-empire-language a {
    flex: 1 1 0;
    max-width: 112px;
    padding-inline: 7px;
    text-align: center;
  }
  .student-empire-upgrade-grid { grid-template-columns: 1fr; }
  .student-empire-wallet > div > span { display: none; }
  .student-empire-copy { bottom: 158px; }
  .student-empire-level-progress > div:first-child { align-items: flex-start; flex-direction: column; gap: 3px; }
  .empire-transaction-list article { grid-template-columns: auto minmax(0, 1fr); }
  .empire-transaction-list article b { grid-column: 2; }
  .empire-learning-grid article { grid-template-columns: auto minmax(0,1fr); }
  .empire-learning-grid .button { grid-column: 1/-1; width: 100%; }
}

/* Shared non-castle Empire hero sizing. */
.student-empire-hero:not(.student-empire-castle-hero) .student-empire-copy { bottom: 116px; width: min(570px, calc(100% - 44px)); }
.student-empire-hero:not(.student-empire-castle-hero) .student-empire-copy h1 { font-size: clamp(2.6rem, 5vw, 4.45rem); }
body.student-area .student-library-reading-copy .eyebrow { color: #f1cf6b; }

@media (max-width: 760px) {
  .student-empire-hero:not(.student-empire-castle-hero) .student-empire-copy { bottom: 156px; }
  .student-empire-hero:not(.student-empire-castle-hero) .student-empire-copy h1 { font-size: clamp(2.45rem, 11vw, 3.65rem); }
}

/* Versioned castle entrance and accessible room navigator. */
.empire-room-section {
  position: relative;
  overflow: hidden;
  border-color: #caa84f;
  background:
    radial-gradient(circle at 88% 6%, rgba(245, 211, 111, .24), transparent 28%),
    linear-gradient(145deg, #fffdf5, #f8f0d8);
}

.empire-room-section::after {
  position: absolute;
  top: -74px;
  right: -62px;
  width: 210px;
  height: 210px;
  border: 1px solid rgba(154, 107, 8, .2);
  border-radius: 50%;
  content: "";
  pointer-events: none;
}

.empire-room-explorer {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(210px, .72fr) minmax(0, 1.7fr);
  gap: 16px;
  padding: 16px;
  border: 1px solid rgba(240, 203, 98, .42);
  border-radius: 21px;
  background: linear-gradient(145deg, #07172b, #112d47);
  box-shadow: 0 20px 42px rgba(7, 23, 43, .18);
}

.empire-room-route { min-width: 0; }
.empire-place-route-group,
.empire-place-deck-group { display: grid; gap: 10px; min-width: 0; }
.empire-place-route-group + .empire-place-route-group,
.empire-place-deck-group + .empire-place-deck-group { margin-top: 14px; }
.empire-place-route-group > h3,
.empire-place-deck-group > h3 { margin: 0; color: #f1d16d; font: 800 .78rem/1.2 var(--font-sans); letter-spacing: .08em; text-transform: uppercase; }
.empire-place-deck-group > h3 { color: #6f5318; }
.empire-room-route ol {
  position: relative;
  display: grid;
  gap: 10px;
  height: 100%;
  margin: 0;
  padding: 4px;
  list-style: none;
}

.empire-room-route ol::before {
  position: absolute;
  top: 40px;
  bottom: 40px;
  left: 26px;
  width: 2px;
  background: linear-gradient(#f1d16d, rgba(241, 209, 109, .14));
  content: "";
}

.empire-room-route li { position: relative; z-index: 1; }
.empire-room-route a {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr);
  align-items: center;
  gap: 11px;
  min-height: 72px;
  padding: 10px 12px;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 14px;
  color: #f7fbff;
  background: #102b44;
  text-decoration: none;
  transition: border-color 150ms ease, background 150ms ease, transform 150ms ease;
}

.empire-room-route a:hover,
.empire-room-route a:focus-visible {
  border-color: rgba(241, 209, 109, .72);
  background: #183d5d;
  transform: translateX(2px);
}

.empire-room-route a:focus-visible {
  outline: 3px solid #77bdf0;
  outline-offset: 2px;
}

.empire-room-route a.is-current {
  border-color: #efd16d;
  color: #142238;
  background: linear-gradient(135deg, #fff1b8, #d9b548);
  box-shadow: 0 10px 24px rgba(0,0,0,.18);
}

.empire-room-route a > span:last-child { display: grid; gap: 3px; }
.empire-room-route strong { font: 700 1rem/1.1 Georgia, serif; }
.empire-room-route small { color: #cbd8e4; font-size: .75rem; line-height: 1.4; }
.empire-room-route a.is-current small { color: #5d4b18; }
.empire-room-step {
  display: grid;
  width: 42px;
  height: 42px;
  place-items: center;
  border: 1px solid rgba(241,209,109,.62);
  border-radius: 50%;
  color: #f1d16d;
  background: #07172b;
  font-size: .75rem;
  font-weight: 950;
  letter-spacing: .08em;
  transition: border-color 150ms ease, color 150ms ease, transform 150ms ease;
}
.empire-room-route a:hover .empire-room-step,
.empire-room-route a:focus-visible .empire-room-step { border-color: #fff0a4; color: #fff0a4; transform: rotate(-4deg); }
.empire-room-route a.is-current .empire-room-step { border-color: #07172b; color: #f1d16d; }

.empire-room-deck { display: grid; align-content: start; gap: 10px; min-width: 0; }
.empire-room-deck details {
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.22);
  border-radius: 16px;
  background: #102b44;
}

.empire-room-deck details[open] {
  border-color: #e0bd57;
  background: #fffdf7;
  box-shadow: 0 15px 30px rgba(0,0,0,.2);
}

.empire-room-deck details:target { outline: 4px solid rgba(119, 189, 240, .5); outline-offset: 3px; }
.empire-room-deck summary {
  display: grid;
  grid-template-columns: 52px minmax(0,1fr) auto;
  align-items: center;
  gap: 13px;
  min-height: 82px;
  padding: 13px 15px;
  color: #f7fbff;
  cursor: pointer;
  list-style: none;
}

.empire-room-deck summary::-webkit-details-marker { display: none; }
.empire-room-deck summary:focus-visible { outline: 3px solid #77bdf0; outline-offset: -4px; }
.empire-room-deck details[open] summary { color: #13243a; background: linear-gradient(135deg, #fff7d9, #fff); }
.empire-room-deck summary > span:nth-child(2) { display: grid; gap: 3px; }
.empire-room-deck summary small { color: #cbd8e4; font-size: .75rem; font-weight: 850; }
.empire-room-deck details[open] summary small { color: #86600d; }
.empire-room-deck summary strong { font: 700 1.28rem/1.05 Georgia, serif; }
.empire-room-icon {
  display: grid;
  width: 50px;
  height: 50px;
  place-items: center;
  border: 1px solid #e0bd57;
  border-radius: 14px;
  color: #f1d16d;
  background: #07172b;
  font-size: 1.45rem;
  box-shadow: inset 0 0 0 4px rgba(255,255,255,.04);
}

.empire-room-enter {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: #f1d16d;
  font-size: .75rem;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .06em;
}

.empire-room-deck details[open] .empire-room-enter { color: #8d650d; }
.empire-room-deck details[open] .empire-room-enter i { transform: rotate(90deg); }
.empire-room-enter i { font-style: normal; transition: transform 150ms ease; }
.empire-room-body { padding: 3px 18px 18px 83px; }
.empire-room-body > p { max-width: 720px; margin: 0 0 14px; color: #506477; line-height: 1.55; }
.empire-room-actions { display: flex; flex-wrap: wrap; gap: 9px; align-items: stretch; }
.empire-room-actions .button { min-height: 44px; }
.empire-room-lesson-action { display: grid !important; justify-items: start; gap: 2px; min-width: min(100%, 260px); text-align: left; }
.empire-room-lesson-action small { color: inherit; font-size: .75rem; font-weight: 750; opacity: .86; overflow-wrap: anywhere; }
.empire-room-action-disabled { cursor: not-allowed; opacity: .62; }

@media (max-width: 820px) {
  .empire-room-explorer { grid-template-columns: 1fr; }
  .empire-room-route ol { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .empire-room-route ol::before { top: 25px; right: 15%; bottom: auto; left: 15%; width: auto; height: 2px; }
  .empire-room-route a { grid-template-columns: 38px minmax(0,1fr); min-height: 68px; padding: 8px; }
  .empire-room-step { width: 36px; height: 36px; }
}

@media (max-width: 640px) {
  .empire-room-section { padding: 18px; }
  .empire-room-explorer { padding: 10px; border-radius: 17px; }
  .empire-room-route { overflow: visible; }
  .empire-room-route ol { grid-template-columns: 1fr; min-width: 0; }
  .empire-room-route ol::before { top: 32px; right: auto; bottom: 32px; left: 22px; width: 2px; height: auto; }
  .empire-room-route a { min-height: 68px; }
  .empire-room-route small { font-size: .75rem; }
  .empire-room-deck summary { grid-template-columns: 46px minmax(0,1fr); min-height: 76px; padding: 12px; }
  .empire-room-icon { width: 44px; height: 44px; }
  .empire-room-enter { grid-column: 2; justify-self: start; }
  .empire-room-body { padding: 2px 13px 15px; }
  .empire-room-actions { display: grid; }
  .empire-room-actions .button { width: 100%; }
}

/* Optional renderer-neutral courtyard-to-library movement slice. */
.empire-movement-shell[hidden],
.empire-movement-destination[hidden],
.empire-movement-prompt[hidden],
.empire-movement-prompt [hidden] { display: none !important; }

.empire-movement-shell {
  display: grid;
  gap: 14px;
  margin: 18px 0;
  padding: 16px;
  border: 1px solid rgba(241, 209, 109, .72);
  border-radius: 20px;
  color: #f7fbff;
  background:
    radial-gradient(circle at 82% 12%, rgba(241, 209, 109, .18), transparent 28%),
    linear-gradient(145deg, #07172b, #123653);
  box-shadow: 0 18px 38px rgba(7, 23, 43, .22);
}

.empire-movement-heading {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: 18px;
}

.empire-movement-heading h3 { margin: 2px 0 5px; color: #fff8da; font: 700 clamp(1.35rem, 2vw, 1.75rem)/1.1 Georgia, serif; }
.empire-movement-heading p:not(.eyebrow) { max-width: 760px; margin: 0; color: #ccdae6; line-height: 1.5; }
.empire-movement-heading-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
.empire-movement-heading-actions .button { min-height: 44px; }

.empire-movement-stage {
  position: relative;
  display: grid;
  gap: 10px;
  min-width: 0;
  padding: 10px;
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 17px;
  background: rgba(0,0,0,.18);
  outline: none;
}

.empire-movement-stage:focus-visible { outline: 4px solid var(--empire-focus-ring); outline-offset: 3px; }
.empire-movement-world {
  position: relative;
  isolation: isolate;
  width: 100%;
  aspect-ratio: 1000 / 420;
  min-height: 250px;
  overflow: hidden;
  border: 1px solid #d5b751;
  border-radius: 14px;
  cursor: crosshair;
  touch-action: none;
  background:
    linear-gradient(90deg, transparent 0 29.6%, rgba(255,255,255,.14) 29.8% 30.2%, transparent 30.4% 68.6%, rgba(255,255,255,.14) 68.8% 69.2%, transparent 69.4%),
    radial-gradient(circle at 14% 50%, rgba(93, 159, 111, .34), transparent 22%),
    linear-gradient(#234e43 0 12%, #b78d55 12% 88%, #234e43 88%);
  box-shadow: inset 0 0 0 5px rgba(7, 23, 43, .2), inset 0 -32px 50px rgba(7, 23, 43, .2);
}

.empire-movement-world::before {
  position: absolute;
  z-index: 1;
  top: 45%;
  right: 4%;
  left: 4%;
  height: 20%;
  border: 1px solid rgba(255, 244, 197, .62);
  border-radius: 999px;
  background:
    radial-gradient(ellipse at center, rgba(255,255,255,.38) 0 28%, transparent 30%) 0 0 / 34px 24px,
    #c9ad7d;
  box-shadow: 0 7px 14px rgba(40, 24, 8, .22);
  content: "";
}

.empire-movement-room {
  position: absolute;
  z-index: 0;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.035);
}

.empire-movement-room strong {
  position: absolute;
  top: 9px;
  left: 11px;
  padding: 5px 8px;
  border: 1px solid rgba(255,255,255,.24);
  border-radius: 999px;
  color: #fff8d7;
  background: rgba(7,23,43,.76);
  font: 700 clamp(.75rem, 1.2vw, .82rem)/1.1 Georgia, serif;
  box-shadow: 0 4px 12px rgba(0,0,0,.18);
}

.empire-movement-room[data-room-id="room:courtyard"] { border-radius: 45% 14px 14px 45%; }
.empire-movement-room[data-room-id="room:great-hall"] { background: linear-gradient(rgba(255,255,255,.06), rgba(255,255,255,.015)); }
.empire-movement-room[data-room-id="room:library"] { border-radius: 14px 45% 45% 14px; background: rgba(111, 65, 25, .12); }
.empire-movement-shell[data-current-room-id="room:courtyard"] .empire-movement-room[data-room-id="room:courtyard"],
.empire-movement-shell[data-current-room-id="room:great-hall"] .empire-movement-room[data-room-id="room:great-hall"],
.empire-movement-shell[data-current-room-id="room:library"] .empire-movement-room[data-room-id="room:library"] { border-color: #ffe184; box-shadow: inset 0 0 24px rgba(255, 225, 132, .18); }

.empire-movement-obstacle {
  position: absolute;
  z-index: 3;
  display: block;
  border: 2px solid rgba(70, 43, 19, .74);
  border-radius: 12px;
  background: #79522f;
  box-shadow: 0 7px 12px rgba(40, 24, 8, .28), inset 0 0 0 3px rgba(255,255,255,.1);
  pointer-events: none;
}

.empire-movement-obstacle.is-fountain { border-radius: 50%; background: radial-gradient(circle, #8fd0e0 0 28%, #d8c597 30% 55%, #725235 57%); }
.empire-movement-obstacle.is-table { border-radius: 999px; background: linear-gradient(90deg, #7a4d26, #b57c38, #7a4d26); }
.empire-movement-obstacle.is-shelves { border-radius: 5px; background: repeating-linear-gradient(90deg, #5f361b 0 14px, #d2a84b 14px 18px, #794522 18px 31px); }
.empire-movement-interaction {
  position: absolute;
  z-index: 4;
  width: 50px;
  height: 50px;
  border: 3px solid #ffe184;
  border-radius: 12px;
  transform: translate(-50%, -50%);
  background: linear-gradient(145deg, #fff4c5, #b77d2a);
  box-shadow: 0 0 0 7px rgba(255,225,132,.16), 0 8px 16px rgba(0,0,0,.28);
  pointer-events: none;
}

.empire-movement-interaction::before { display: grid; width: 100%; height: 100%; place-items: center; color: #13243a; content: "▤"; font-size: 1.55rem; font-weight: 900; }
.empire-movement-player {
  position: absolute;
  z-index: 8;
  display: grid;
  width: 38px;
  height: 38px;
  place-items: center;
  border: 3px solid #fff5c5;
  border-radius: 50% 50% 46% 46%;
  transform: translate(-50%, -50%);
  color: #07172b;
  background: linear-gradient(145deg, #ffe687, #c89825);
  box-shadow: 0 0 0 6px rgba(255,230,135,.22), 0 9px 15px rgba(0,0,0,.34);
  pointer-events: none;
  animation: empire-movement-player-glow 1.8s ease-in-out infinite;
}

.empire-movement-player i { font-style: normal; font-size: 1.05rem; }
.empire-movement-destination {
  position: absolute;
  z-index: 7;
  width: 30px;
  height: 18px;
  border: 3px solid #fff2ab;
  border-radius: 50%;
  transform: translate(-50%, -50%);
  box-shadow: 0 0 0 6px rgba(255,242,171,.16);
  pointer-events: none;
  animation: empire-movement-destination-pulse 900ms ease-in-out infinite alternate;
}

@keyframes empire-movement-player-glow {
  0%, 100% { box-shadow: 0 0 0 5px rgba(255,230,135,.16), 0 9px 15px rgba(0,0,0,.34); }
  50% { box-shadow: 0 0 0 9px rgba(255,230,135,.25), 0 9px 15px rgba(0,0,0,.34); }
}

@keyframes empire-movement-destination-pulse {
  from { opacity: .5; transform: translate(-50%, -50%) scale(.82); }
  to { opacity: 1; transform: translate(-50%, -50%) scale(1.08); }
}

.empire-movement-status {
  min-height: 24px;
  margin: 0;
  padding: 4px 7px;
  color: #f8e7a9;
  font-size: .8rem;
  font-weight: 850;
}

.empire-movement-prompt {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  padding: 11px;
  border: 1px solid #d5b751;
  border-radius: 13px;
  color: #13243a;
  background: linear-gradient(135deg, #fff7d7, #fff);
  box-shadow: 0 10px 22px rgba(0,0,0,.2);
}

.empire-movement-prompt > span:first-child { display: grid; width: 40px; height: 40px; place-items: center; border-radius: 10px; color: #f3cf64; background: #07172b; font-size: 1.25rem; }
.empire-movement-prompt > div { display: grid; gap: 2px; }
.empire-movement-prompt small { color: #6a5a31; }
.empire-movement-prompt .button { min-height: 44px; }
.empire-movement-footer { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 16px; }
.empire-movement-footer > p { margin: 0; color: #ccdae6; font-size: .78rem; line-height: 1.45; }
.empire-movement-footer > [data-empire-movement-nojs] { grid-column: 1 / -1; width: 100%; }
.empire-movement-controls {
  display: grid;
  grid-template-columns: repeat(3, 46px);
  grid-template-rows: repeat(2, 46px);
  gap: 5px;
}

.empire-movement-controls button {
  display: grid;
  min-width: 46px;
  min-height: 46px;
  padding: 0;
  place-items: center;
  border: 1px solid #d8bd65;
  border-radius: 12px;
  color: #fff7d1;
  background: #102d47;
  font-size: 1.25rem;
  font-weight: 900;
  cursor: pointer;
  touch-action: none;
}

.empire-movement-controls button:hover,
.empire-movement-controls button:focus-visible { color: #07172b; background: #f2d36f; }
.empire-movement-controls button[data-empire-movement-direction="up"] { grid-column: 2; }
.empire-movement-controls button[data-empire-movement-direction="left"] { grid-column: 1; grid-row: 2; }
.empire-movement-controls button[data-empire-movement-direction="down"] { grid-column: 2; grid-row: 2; }
.empire-movement-controls button[data-empire-movement-direction="right"] { grid-column: 3; grid-row: 2; }
.empire-movement-shell.is-paused .empire-movement-player { opacity: .72; }

@media (max-width: 820px) {
  .empire-movement-heading { grid-template-columns: 1fr; align-items: start; }
  .empire-movement-heading-actions { justify-content: flex-start; }
  .empire-movement-world { min-height: 230px; }
}

@media (max-width: 640px) {
  .empire-movement-shell { margin-inline: -8px; padding: 11px; border-radius: 16px; }
  .empire-movement-heading-actions { display: grid; grid-template-columns: 1fr 1fr; }
  .empire-movement-heading-actions .button { width: 100%; }
  .empire-movement-world { min-height: 170px; aspect-ratio: 1000 / 420; }
  .empire-movement-room strong { top: 5px; left: 5px; max-width: calc(100% - 10px); overflow: hidden; font-size: .75rem; text-overflow: ellipsis; white-space: nowrap; }
  .empire-movement-player { width: 34px; height: 34px; }
  .empire-movement-prompt { grid-template-columns: 38px minmax(0, 1fr); }
  .empire-movement-prompt .button { grid-column: 1 / -1; width: 100%; }
  .empire-movement-footer { grid-template-columns: 1fr; justify-items: center; text-align: center; }
}

@media (prefers-reduced-motion: reduce) {
  .empire-movement-player,
  .empire-movement-destination { animation: none; }
}

/* Bilingual Empire status and ledger refinement. */
.empire-transaction-values {
  display: flex !important;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 6px;
  max-width: 220px;
}

.empire-transaction-values b,
.empire-transaction-values small {
  display: inline-flex;
  align-items: center;
  min-height: 30px;
  margin: 0;
  padding: 5px 9px;
  border: 1px solid #decf9c;
  border-radius: 999px;
  color: #5f4308;
  background: #fff7d8;
  font-size: .75rem;
  font-weight: 900;
  white-space: nowrap;
}

.empire-transaction-values small {
  border-color: #bed7c8;
  color: #155d3e;
  background: #e8f6ed;
}

@media (max-width: 640px) {
  .empire-transaction-values {
    grid-column: 2;
    justify-content: flex-start;
    max-width: none;
  }
}

/* Lesson reward and learner-empty states that visually connect course work to the Empire. */
.student-empty-copy { padding: 22px; color: var(--muted); text-align: center; }
.student-empire-reward {
  display: grid;
  grid-template-columns: auto minmax(0,1fr) auto;
  align-items: center;
  gap: 14px;
  margin: 18px 0;
  padding: 16px;
  overflow: hidden;
  border: 1px solid #d4ad4d;
  border-radius: 12px;
  background: linear-gradient(135deg,#fff9e7,#fff);
}
.student-empire-reward > span { display: grid; width: 46px; height: 46px; place-items: center; border-radius: 50%; color: #f1cf6b; background: #07172b; font-size: 1.25rem; }
.student-empire-reward > img { align-self: stretch; width: 118px; height: 86px; border-radius: 10px; object-fit: cover; }
.student-empire-reward p { margin: 3px 0 0; color: #77550f; }

@media (max-width: 700px) {
  .student-empire-reward { grid-template-columns: auto minmax(0,1fr); }
  .student-empire-reward .button { grid-column: 1/-1; width: 100%; }
}

@media (max-width: 640px) {
  .student-empire-reward { grid-template-columns: 1fr; }
  .student-empire-reward > img { width: 100%; height: 130px; }
}

/* Principal-facing Empire summary. */
.admin-student-empire { max-width: none; padding: 26px; border: 1px solid #d1aa40; border-radius: 18px; background: #fffdf7; }
.admin-empire-overview { display: grid; grid-template-columns: minmax(300px,.8fr) minmax(0,1.2fr); gap: 18px; margin: 22px 0; }
.admin-empire-overview > img { width: 100%; height: 270px; object-fit: cover; border-radius: 13px; }
.admin-empire-metrics { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }
.admin-empire-metrics article { display: grid; align-content: space-between; padding: 18px; border: 1px solid #d9dfe7; border-radius: 12px; background: #fff; }
.admin-empire-metrics span { color: var(--muted); font-size: .78rem; font-weight: 850; }
.admin-empire-metrics strong { color: #07172b; font-size: 2rem; }
.admin-empire-controls { display: grid; grid-template-columns: minmax(0,1fr) minmax(280px,.65fr); gap: 16px; margin-bottom: 20px; }
.admin-empire-controls .panel { margin: 0; }

@media (max-width: 900px) {
  .admin-empire-overview,
  .admin-empire-controls { grid-template-columns: 1fr; }
}

@media (max-width: 700px) {
  .admin-empire-metrics { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 440px) {
  .admin-empire-metrics { grid-template-columns: 1fr; }
}


/* Return-aware Royal Library lesson result. */
.student-empire-library-result {
  position: relative;
  isolation: isolate;
  display: grid;
  gap: 20px;
  margin: 0 0 24px;
  padding: clamp(20px, 3vw, 30px);
  scroll-margin-top: 132px;
  overflow: hidden;
  border: 1px solid #cfa83e;
  border-top: 7px solid #b88618;
  border-radius: 20px;
  background:
    radial-gradient(circle at 92% 8%, rgba(245, 211, 111, .32), transparent 24%),
    linear-gradient(145deg, #fffdf6, #fff5cf);
  box-shadow: 0 20px 46px rgba(73, 52, 10, .15);
}

.student-empire-library-result.is-passed { border-top-color: #1d8453; }
.student-empire-library-result.is-regroup { border-top-color: #c97920; }
.student-empire-library-result :where(a, button):focus-visible { outline: 4px solid var(--empire-focus-ring); outline-offset: 3px; }
.student-area [data-empire-focus-target]:focus { outline:4px solid var(--empire-focus-ring, #77bdf0); outline-offset:4px; }

.student-empire-library-result > :not(.empire-library-result-arrival-glow) { position: relative; z-index: 1; }
.empire-library-result-arrival-glow {
  position: absolute;
  z-index: 0;
  inset: 0;
  opacity: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 10% 16%, rgba(255,255,231,.92) 0 2px, transparent 3px),
    radial-gradient(circle at 22% 8%, rgba(245,211,111,.88) 0 3px, transparent 4px),
    radial-gradient(circle at 88% 18%, rgba(255,245,190,.8) 0 2px, transparent 3px),
    radial-gradient(ellipse at 50% 18%, rgba(245,211,111,.42), transparent 54%);
  transform: scale(.985);
}
.student-empire-library-result.is-verified-arrival-glowing .empire-library-result-arrival-glow { animation: empire-library-verified-arrival 1.8s ease-out both; }
.student-empire-library-result.is-verified-arrival-glowing .empire-library-result-seal { animation: empire-library-seal-arrival 1.8s ease-out both; }

@keyframes empire-library-verified-arrival {
  0% { opacity: 0; transform: scale(.985); }
  22% { opacity: 1; transform: scale(1); }
  72% { opacity: .35; }
  100% { opacity: 0; transform: scale(1.01); }
}

@keyframes empire-library-seal-arrival {
  0%, 100% { box-shadow: 0 9px 20px rgba(7, 23, 43, .2); transform: scale(1); }
  28% { box-shadow: 0 0 0 8px rgba(245,211,111,.22), 0 12px 24px rgba(7,23,43,.24); transform: scale(1.045); }
}

.empire-library-result-heading {
  display: grid;
  grid-template-columns: 58px minmax(0, 1fr) auto;
  align-items: center;
  gap: 16px;
}

.empire-library-result-heading h2 { margin: 2px 0 4px; color: #07172b; font-size: clamp(1.45rem, 3vw, 2.15rem); }
.empire-library-result-heading p { margin: 0; color: #6f5b2d; }

.empire-library-result-seal {
  display: grid;
  width: 58px;
  height: 58px;
  place-items: center;
  border: 2px solid #b88618;
  border-radius: 50%;
  color: #f5d36f;
  background: #07172b;
  font-size: 1.55rem;
  box-shadow: 0 9px 20px rgba(7, 23, 43, .2);
}

.empire-library-result-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.empire-library-result-grid > article {
  display: grid;
  align-content: center;
  min-height: 150px;
  padding: 18px;
  border: 1px solid #dec985;
  border-radius: 15px;
  background: rgba(255, 255, 255, .78);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .85);
}

.empire-library-result-grid small {
  color: #6f5b2d;
  font-size: .72rem;
  font-weight: 900;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.empire-library-result-grid strong { margin: 9px 0 4px; color: #07172b; font-size: 1.8rem; line-height: 1; }
.empire-library-result-grid strong span { font-size: .76rem; }
.empire-library-result-grid p { margin: 0; color: #77550f; font-weight: 850; }
.empire-library-score strong { display: flex; align-items: baseline; gap: 7px; font-size: 2.35rem; }
.empire-library-score strong i { color: #b88618; font-size: 1.1rem; font-style: normal; }
.empire-library-reward-total { background: linear-gradient(145deg, #fff9e1, #fff) !important; }
.empire-library-balance { background: linear-gradient(145deg, #eef8f1, #fff) !important; }

.empire-library-ledger {
  display: grid;
  gap: 9px;
  padding: 14px;
  border: 1px solid #dfcf9e;
  border-radius: 15px;
  background: rgba(255, 255, 255, .66);
}

.empire-library-ledger article {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border-radius: 11px;
  background: #fff;
}

.empire-library-ledger article > span {
  display: grid;
  width: 34px;
  height: 34px;
  place-items: center;
  border-radius: 50%;
  color: #fff;
  background: #1d8453;
  font-weight: 950;
}

.empire-library-ledger strong,
.empire-library-ledger small { display: block; }
.empire-library-ledger strong { color: #07172b; }
.empire-library-ledger small { margin-top: 2px; color: #5f6e63; font-weight: 800; }
.empire-library-ledger > p { margin: 0; color: #6f5b2d; }

@media (max-width: 820px) {
  .empire-library-result-grid { grid-template-columns: 1fr 1fr; }
  .empire-library-balance { grid-column: 1 / -1; }
}

@media (max-width: 620px) {
  .student-empire-library-result { padding: 18px; border-radius: 16px; }
  .empire-library-result-heading { grid-template-columns: 48px minmax(0, 1fr); align-items: start; }
  .empire-library-result-seal { width: 48px; height: 48px; }
  .empire-library-result-heading .status-badge { grid-column: 1 / -1; justify-self: start; }
  .empire-library-result-grid { grid-template-columns: 1fr; }
  .empire-library-balance { grid-column: auto; }
  .empire-library-result-grid > article { min-height: 124px; }
  .student-empire-library-result .inline-actions .button { width: 100%; }
}


/* Read-only Royal Library quest shelf. */
.empire-library-quest-shelf {
  display: grid;
  gap: 16px;
  margin-top: 20px;
  padding: clamp(16px, 2.5vw, 24px);
  border: 1px solid #d7bf74;
  border-radius: 18px;
  background:
    linear-gradient(90deg, rgba(92, 50, 19, .1) 0 9px, transparent 9px),
    radial-gradient(circle at 92% 8%, rgba(245, 211, 111, .25), transparent 28%),
    #fffaf0;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.9), 0 14px 30px rgba(74, 48, 13, .1);
}

.empire-library-quest-shelf :where(a, button):focus-visible {
  outline: 4px solid var(--empire-focus-ring);
  outline-offset: 3px;
}

.empire-library-quest-shelf-heading {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 18px;
}

.empire-library-quest-shelf-heading h3 { margin: 2px 0 5px; color: #07172b; font-size: clamp(1.25rem, 2.6vw, 1.75rem); }
.empire-library-quest-shelf-heading p { max-width: 720px; margin: 0; color: #65552f; }
.empire-library-quest-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }

.empire-library-quest-record {
  position: relative;
  display: grid;
  grid-template-rows: auto 1fr auto;
  gap: 14px;
  min-width: 0;
  padding: 16px;
  overflow: hidden;
  border: 1px solid #d8c68c;
  border-left: 7px solid #c97920;
  border-radius: 14px;
  background:
    repeating-linear-gradient(0deg, transparent 0 31px, rgba(121, 82, 31, .055) 31px 32px),
    #fff;
  box-shadow: 0 8px 18px rgba(58, 37, 9, .08);
  transition: border-color 180ms ease, box-shadow 180ms ease, transform 180ms ease;
}

.empire-library-quest-record:hover,
.empire-library-quest-record:focus-within {
  border-color: #c3a34e;
  box-shadow: 0 14px 26px rgba(58, 37, 9, .14);
  transform: translateY(-2px);
}

.empire-library-quest-record::after {
  position: absolute;
  top: 0;
  right: 15px;
  width: 23px;
  height: 36px;
  clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 76%, 0 100%);
  background: #c97920;
  content: "";
  transition: transform 180ms ease;
}
.empire-library-quest-record:hover::after,
.empire-library-quest-record:focus-within::after { transform: translateY(3px); }

.empire-library-quest-record.is-passed { border-left-color: #1d8453; }
.empire-library-quest-record.is-passed::after { background: #1d8453; }
.empire-library-quest-record.is-current-record { box-shadow: 0 0 0 4px rgba(119, 189, 240, .42), 0 12px 22px rgba(58, 37, 9, .12); }

.empire-library-quest-record-heading {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr);
  align-items: start;
  gap: 10px;
  padding-right: 22px;
}

.empire-library-quest-record-heading > span {
  display: grid;
  width: 42px;
  height: 48px;
  place-items: center;
  border: 1px solid #d0a93c;
  border-radius: 5px 10px 10px 5px;
  color: #f2d16f;
  background: linear-gradient(90deg, #061526 0 8px, #102d47 8px);
  box-shadow: 4px 5px 0 rgba(128, 87, 24, .12);
  font-size: 1.18rem;
}

.empire-library-quest-record-heading small {
  display: block;
  color: #7c642d;
  font-size: .75rem;
  font-weight: 900;
  letter-spacing: .035em;
  text-transform: uppercase;
}

.empire-library-quest-record-heading h4 { margin: 4px 0; overflow-wrap: anywhere; color: #07172b; font-size: 1rem; }
.empire-library-quest-record-heading p { margin: 0; color: #65552f; font-size: .8rem; font-weight: 800; }
.empire-library-quest-metrics { display: grid; grid-template-columns: .75fr 1.25fr; gap: 8px; }

.empire-library-quest-metrics > span {
  display: grid;
  align-content: center;
  min-height: 76px;
  padding: 10px;
  border: 1px solid #e1d6b3;
  border-radius: 10px;
  background: rgba(255, 249, 226, .72);
}

.empire-library-quest-metrics small { color: #7c642d; font-size: .75rem; font-weight: 900; letter-spacing: .03em; text-transform: uppercase; }
.empire-library-quest-metrics strong { margin-top: 4px; color: #07172b; font-size: 1.15rem; }
.empire-library-quest-metrics em { color: #1d6847; font-size: .72rem; font-style: normal; font-weight: 900; }
.empire-library-quest-record > .button { width: 100%; min-height: 44px; }

.empire-library-quest-empty {
  grid-column: 1 / -1;
  margin: 0;
  padding: 24px;
  border: 1px dashed #cbb56f;
  border-radius: 12px;
  color: #65552f;
  background: rgba(255,255,255,.62);
  text-align: center;
  font-weight: 800;
}

.empire-library-quest-next {
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr) minmax(210px, auto);
  align-items: center;
  gap: 12px;
  padding: 14px;
  border: 1px solid #183956;
  border-radius: 13px;
  color: #fff7d1;
  background: linear-gradient(135deg, #07172b, #123653);
}

.empire-library-quest-next > span:first-child { display: grid; width: 44px; height: 44px; place-items: center; border-radius: 50%; color: #07172b; background: #f2d36f; font-size: 1.2rem; }
.empire-library-quest-next strong { display: block; }
.empire-library-quest-next p { margin: 3px 0 0; color: #d2dfeb; font-size: .78rem; }
.empire-library-quest-next .button { display: grid; justify-items: center; min-height: 46px; text-align: center; }
.empire-library-quest-next .button small { display: block; max-width: 260px; font-size: .75rem; line-height: 1.35; overflow-wrap: anywhere; white-space: normal; }

@media (max-width: 980px) {
  .empire-library-quest-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .empire-library-quest-record:last-child:nth-child(odd) { grid-column: 1 / -1; }
  .empire-library-quest-next { grid-template-columns: 46px minmax(0, 1fr); }
  .empire-library-quest-next .button { grid-column: 1 / -1; width: 100%; }
}

@media (max-width: 640px) {
  .empire-library-quest-shelf { margin-inline: -8px; padding: 14px; border-radius: 15px; }
  .empire-library-quest-shelf-heading { display: grid; grid-template-columns: minmax(0, 1fr) auto; }
  .empire-library-quest-shelf-heading p { grid-column: 1 / -1; }
  .empire-library-quest-grid { grid-template-columns: 1fr; }
  .empire-library-quest-record:last-child:nth-child(odd) { grid-column: auto; }
  .empire-library-quest-metrics { grid-template-columns: 1fr 1fr; }
  .empire-library-quest-next { grid-template-columns: 40px minmax(0, 1fr); }
  .empire-library-quest-next > span:first-child { width: 40px; height: 40px; }
}

/* Session 4 Great Hall learning command centre. */
.empire-great-hall-briefing {
  position: relative;
  isolation: isolate;
  display: grid;
  gap: 16px;
  margin: 0 0 16px;
  padding: clamp(16px, 2.5vw, 24px);
  border: 1px solid #d6b74e;
  border-radius: 18px;
  color: #17283a;
  background:
    radial-gradient(circle at 92% 5%, rgba(222, 190, 86, .22), transparent 28%),
    linear-gradient(145deg, #fffdf5, #f4f8fb);
  box-shadow: 0 14px 30px rgba(20, 38, 55, .12);
}
.empire-great-hall-briefing::before {
  content: "";
  position: absolute;
  inset: 10px;
  z-index: -1;
  border: 1px solid rgba(177, 132, 22, .16);
  border-radius: 14px;
  pointer-events: none;
}

.empire-great-hall-briefing:target {
  outline: 4px solid var(--empire-focus-ring, #2375b9);
  outline-offset: 4px;
}

.empire-great-hall-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
}

.empire-great-hall-heading h4,
.empire-great-hall-panel h5,
.empire-great-hall-next h5,
.empire-great-hall-attention h5 {
  margin: 0;
  color: #14283d;
  font-family: Georgia, serif;
  line-height: 1.15;
}

.empire-great-hall-heading h4 { font-size: clamp(1.45rem, 2.5vw, 2rem); }
.empire-great-hall-heading > div > p:last-child { max-width: 720px; margin: 7px 0 0; color: #465d70; line-height: 1.55; }
.empire-great-hall-read-only {
  flex: 0 0 auto;
  padding: 7px 10px;
  border: 1px solid #9bb5c6;
  border-radius: 999px;
  color: #27465d;
  background: #edf6fb;
  font-size: .75rem;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .06em;
}

.empire-great-hall-next {
  display: grid;
  gap: 11px;
  transition: border-color 160ms ease, box-shadow 160ms ease, transform 160ms ease;
  padding: clamp(15px, 2vw, 21px);
  border: 2px solid #b18416;
  border-radius: 16px;
  background: linear-gradient(135deg, #fff5c5, #fffdf5);
}

.empire-great-hall-next.is-paused,
.empire-great-hall-next.is-no-active-subjects,
.empire-great-hall-next.is-complete,
.empire-great-hall-next.is-waiting { border-color: #8ca3b3; background: #f5f8fa; }
.empire-great-hall-next > p { margin: 0; color: #455a6b; line-height: 1.55; }
.empire-great-hall-next:focus-within,
.empire-great-hall-next:hover { box-shadow: 0 12px 26px rgba(20, 38, 55, .14); transform: translateY(-1px); }
.empire-great-hall-panel-heading { display: flex; align-items: center; gap: 11px; }
.empire-great-hall-panel-heading > span {
  display: grid;
  width: 44px;
  height: 44px;
  flex: 0 0 auto;
  place-items: center;
  border-radius: 12px;
  color: #f6d76f;
  background: #102d47;
  font-size: 1.25rem;
}
.empire-great-hall-panel-heading .eyebrow { margin-bottom: 3px; color: #725311; }
.empire-great-hall-panel-heading h5 { font-size: clamp(1.1rem, 2vw, 1.35rem); overflow-wrap: anywhere; }
.empire-great-hall-primary-row { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; }
.empire-great-hall-primary-row .button { min-height: 46px; }
.empire-great-hall-primary-row small { max-width: 520px; color: #5b6873; line-height: 1.4; }

.empire-great-hall-metrics {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin: 0;
}
.empire-great-hall-metrics > div {
  display: grid;
  gap: 5px;
  min-width: 0;
  padding: 13px;
  border: 1px solid #c9d8e2;
  border-radius: 13px;
  background: #fff;
}
.empire-great-hall-metrics dt { color: #536879; font-size: .76rem; font-weight: 850; }
.empire-great-hall-metrics dd { margin: 0; color: #152d43; font: 800 1.55rem/1 Georgia, serif; }

.empire-great-hall-panel {
  min-width: 0;
  transition: border-color 160ms ease, box-shadow 160ms ease;
  padding: 15px;
  border: 1px solid #c8d6df;
  border-radius: 14px;
  background: rgba(255,255,255,.82);
}
.empire-great-hall-panel:focus-within { border-color: #b18416; box-shadow: 0 8px 18px rgba(20, 38, 55, .10); }
.empire-great-hall-panel > h5 { margin-bottom: 12px; font-size: 1.08rem; }
.empire-great-hall-subjects { display: grid; gap: 9px; }
.empire-great-hall-subjects > article {
  display: grid;
  grid-template-columns: minmax(150px, 1fr) minmax(120px, .8fr) auto;
  align-items: center;
  gap: 10px;
  min-width: 0;
  padding: 11px;
  border: 1px solid #d5e0e7;
  border-radius: 12px;
  background: #fff;
}
.empire-great-hall-subjects article > div:first-child { display: grid; gap: 3px; min-width: 0; }
.empire-great-hall-subjects strong { overflow-wrap: anywhere; }
.empire-great-hall-subjects small { color: #5a6e7e; }
.empire-great-hall-subjects .status-badge { max-width: 180px; white-space: normal; text-align: center; }
.empire-great-hall-progress-track {
  height: 12px;
  overflow: hidden;
  border: 1px solid #9fb4c2;
  border-radius: 999px;
  background: #e9f0f4;
}
.empire-great-hall-progress-track i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #2775a7, #d0a52d); }

.empire-great-hall-support-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.empire-great-hall-achievements,
.empire-great-hall-victories { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
.empire-great-hall-achievements li {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr);
  align-items: center;
  gap: 9px;
  min-height: 48px;
  padding: 8px;
  border-radius: 11px;
  color: #314a5d;
  background: #f4f8fa;
}
.empire-great-hall-achievements li strong {
  display: grid;
  width: 38px;
  height: 38px;
  place-items: center;
  border-radius: 50%;
  color: #14283d;
  background: #f0d675;
}
.empire-great-hall-victories li { display: flex; align-items: center; gap: 10px; min-height: 48px; padding: 8px; border-radius: 11px; background: #f4f8fa; }
.empire-great-hall-victories li > span { display: grid; width: 36px; height: 36px; flex: 0 0 auto; place-items: center; border-radius: 50%; color: #fff; background: #246b49; }
.empire-great-hall-victories li > div { display: grid; gap: 2px; min-width: 0; }
.empire-great-hall-victories strong { overflow-wrap: anywhere; }
.empire-great-hall-victories small { color: #586d7d; }

.empire-great-hall-attention {
  padding: 14px 16px;
  border-inline-start: 5px solid #2876a8;
  border-radius: 10px;
  background: #edf6fb;
}
.empire-great-hall-attention .eyebrow { margin-bottom: 4px; color: #1c5f8b; }
.empire-great-hall-attention h5 { font-size: 1.08rem; }
.empire-great-hall-attention > p:last-child { margin: 6px 0 0; color: #425a6c; line-height: 1.5; }
.empire-great-hall-briefing.is-paused .empire-great-hall-attention,
.empire-great-hall-briefing.is-waiting .empire-great-hall-attention { border-inline-start-color: #786a43; background: #f7f3e7; }
.empire-great-hall-briefing.is-complete .empire-great-hall-attention { border-inline-start-color: #2b704d; background: #edf8f1; }

.empire-movement-interaction.is-briefing-table::before { content: "◆"; }
.empire-movement-prompt-copy { display: grid; grid-template-columns: 42px minmax(0, 1fr); align-items: center; gap: 10px; }
.empire-movement-prompt-copy > span { display: grid; width: 40px; height: 40px; place-items: center; border-radius: 10px; color: #f3cf64; background: #07172b; font-size: 1.25rem; }
.empire-movement-prompt-copy > div { display: grid; gap: 2px; }


@media (min-width: 900px) {
  .empire-great-hall-briefing { gap: 18px; }
  .empire-great-hall-support-grid { align-items: stretch; }
}

@media (max-width: 420px) {
  .empire-great-hall-briefing { padding: 14px; border-radius: 14px; }
  .empire-great-hall-panel-heading { align-items: flex-start; }
  .empire-great-hall-panel-heading > span { width: 40px; height: 40px; }
  .empire-great-hall-metrics dd { font-size: 1.35rem; }
}

@media (prefers-reduced-motion: reduce) {
  .empire-great-hall-next,
  .empire-great-hall-panel { transition: none; }
  .empire-great-hall-next:focus-within,
  .empire-great-hall-next:hover { transform: none; }
}

@media (max-width: 760px) {
  .empire-great-hall-heading { display: grid; }
  .empire-great-hall-read-only { justify-self: start; }
  .empire-great-hall-metrics,
  .empire-great-hall-support-grid { grid-template-columns: 1fr; }
  .empire-great-hall-subjects > article { grid-template-columns: 1fr; }
  .empire-great-hall-subjects .status-badge { justify-self: start; max-width: 100%; }
  .empire-great-hall-primary-row { display: grid; }
  .empire-great-hall-primary-row .button { width: 100%; }
  .empire-movement-prompt { grid-template-columns: 1fr; }
  .empire-movement-prompt .button { width: 100%; }
}

/* Unit 40 responsive game-first hierarchy.
   Learner actions stay in the primary flow; internal art-system documentation stays in source for verification only. */
.student-empire-welcome:has(.student-empire-welcome-copy) { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; padding: 8px 4px 4px; }
.student-empire-welcome-copy { min-width: 0; }
.student-empire-welcome-action { flex: 0 0 auto; min-height: 48px; }
.student-empire-hero:not(.student-empire-castle-hero) { min-height: 480px; }
.student-empire-hero:not(.student-empire-castle-hero) > img { object-position: 62% 48%; }
.student-empire-hero:not(.student-empire-castle-hero) .student-empire-shade { background: linear-gradient(0deg, rgba(4,15,28,.9) 0%, rgba(4,15,28,.12) 38%, rgba(4,15,28,.03) 72%); }
.student-empire-hero.student-empire-castle-hero { min-height: 650px; }
.empire-art-signature,
.empire-asset-taxonomy { display: none; }
.student-empire-layout .empire-visual-compass { gap: 12px; padding: 18px; }
.student-empire-layout .empire-visual-compass-heading p:not(.eyebrow) { max-width: 760px; }
.student-empire-layout .empire-visual-compass-card { min-height: 104px; padding: 12px; }
.student-empire-layout .empire-room-explorer { grid-template-columns: minmax(190px, .58fr) minmax(0, 1.8fr); }

@media (max-width: 760px) {
  .student-empire-welcome:has(.student-empire-welcome-copy) { align-items: stretch; gap: 14px; }
  .student-empire-welcome-action { align-self: center; min-width: 154px; }
  .student-empire-hero:not(.student-empire-castle-hero) { min-height: 430px; }
  .student-empire-hero:not(.student-empire-castle-hero) > img { object-position: 66% 48%; }
  .empire-visual-compass { margin-bottom: 16px; padding: 14px; border-radius: 17px; }
  .empire-visual-compass-heading { gap: 3px; }
  .empire-visual-compass-heading h2 { font-size: 1.45rem; }
  .empire-visual-compass-heading p:not(.eyebrow) { display: none; }
  .empire-visual-compass-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .empire-visual-compass-card { grid-template-columns: 36px minmax(0, 1fr); min-height: 72px; padding: 9px; }
  .empire-visual-compass-card > span { width: 36px; height: 36px; border-radius: 11px; }
  .empire-visual-compass-card small { display: none; }
  .empire-room-section { padding: 14px; }
  .empire-room-section .student-section-heading { gap: 8px; margin-bottom: 12px; }
  .empire-room-section .student-section-heading h2 { font-size: 1.75rem; }
  .empire-room-section .student-section-heading p:not(.eyebrow) { display: none; }
  .empire-room-explorer { gap: 10px; padding: 8px; }
  .empire-room-route { width: 100%; min-width: 0; overflow: hidden; }
  .empire-room-route:has(.empire-place-route-group) { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 6px; }
  .empire-place-route-group,
  .empire-place-route-group + .empire-place-route-group { min-width: 0; gap: 5px; margin-top: 0; overflow: hidden; }
  .empire-place-route-group > h3 { max-width: 100%; text-align: center; font-size: .68rem; line-height: 1.1; overflow-wrap: anywhere; }
  .empire-room-route ol,
  .empire-place-route-group:last-child ol { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px; }
  .empire-place-route-group:first-child ol { grid-template-columns: 1fr; }
  .empire-room-route ol::before { display: none; }
  .empire-room-route a { grid-template-columns: 1fr; justify-items: center; gap: 4px; min-height: 64px; padding: 6px 4px; text-align: center; }
  .empire-room-route a > span:last-child { gap: 0; }
  .empire-room-route small { display: none; }
  .empire-room-route strong { font-size: .78rem; }
  .empire-room-step { width: 34px; height: 34px; }
  .empire-room-deck summary { min-height: 68px; }
  .empire-room-body { padding: 2px 10px 12px; }
  .empire-room-body > p { margin-bottom: 10px; line-height: 1.45; }
  .empire-command-strip { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; }
  .empire-command-strip article { display: grid; justify-items: center; gap: 6px; min-height: 82px; padding: 10px 6px; text-align: center; }
  .empire-command-strip article > span { width: 36px; height: 36px; }
  .empire-command-strip p { display: none; }
  .empire-support-disclosure > summary { min-height: 60px; padding: 14px 16px; }
  .empire-support-disclosure-body { padding: 12px 12px 0; }
  .empire-library-quest-grid { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: min(82vw, 292px); overflow-x: auto; overscroll-behavior-inline: contain; scroll-snap-type: inline mandatory; padding: 4px 2px 8px; }
  .empire-library-quest-record,
  .empire-library-quest-record:last-child:nth-child(odd) { grid-column: auto; scroll-snap-align: start; }
}
/* P0 responsive repair and the first layered 2.5D Courtyard slice. */
:root {
  --student-header-height: 81px;
  --student-header-gap: 16px;
  --student-bottom-nav-height: 0px;
}

html { scroll-padding-top: calc(var(--student-header-height) + var(--student-header-gap)); }
#student-main,
.student-empire-castle-hero,
.empire-courtyard-section,
.empire-command-strip,
.student-empire-section,
.empire-support-disclosure { scroll-margin-top: calc(var(--student-header-height) + var(--student-header-gap)); }
.student-area,
.student-area .student-bar,
.student-area .student-shell,
.student-area .student-empire-layout,
.student-area .student-empire-main,
.student-area .student-empire-language,
.student-area .student-empire-nav,
.student-area .empire-courtyard-section,
.student-area .empire-movement-shell,
.student-area .empire-movement-stage,
.student-area .empire-movement-world,
.student-area .empire-room-explorer,
.student-area .empire-room-route,
.student-area .empire-room-deck { box-sizing: border-box; min-width: 0; max-width: 100%; }

.student-area .student-empire-language {
  flex-wrap: wrap;
  max-width: 100%;
  font-size: .875rem;
}
.student-area .student-empire-language strong { font-size: .75rem; }
.student-area .student-empire-language a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  min-height: 44px;
  max-width: 100%;
  overflow-wrap: anywhere;
}

.empire-courtyard-section {
  padding: 0;
  overflow: visible;
  border: 0;
  background: transparent;
  box-shadow: none;
}
.empire-courtyard-section::after { display: none; }
.empire-courtyard-section > .student-section-heading { padding: 0 4px; }
.empire-courtyard-world {
  gap: 16px;
  margin: 14px 0 24px;
  padding: clamp(12px, 2vw, 20px);
  border-radius: clamp(20px, 3vw, 30px);
  background:
    radial-gradient(circle at 82% 8%, rgba(255, 224, 130, .22), transparent 28%),
    linear-gradient(145deg, #07172b, #123b59 68%, #0a2339);
  box-shadow: 0 5px 0 #9f7415, 0 28px 62px rgba(7, 23, 43, .28);
}
.empire-courtyard-world:not([data-empire-movement-ready]) [data-empire-movement-pause],
.empire-courtyard-world:not([data-empire-movement-ready]) .empire-movement-controls { display: none; }
.empire-courtyard-world:not([data-empire-movement-ready]) .empire-movement-heading-actions { justify-content: flex-end; }

.empire-courtyard-world .empire-movement-stage {
  padding: clamp(6px, 1vw, 10px);
  overflow: hidden;
  border-color: rgba(255, 238, 173, .46);
  border-radius: clamp(17px, 2.4vw, 24px);
  background: rgba(2, 12, 25, .48);
}
.empire-courtyard-world .empire-movement-world {
  --empire-camera-scale: 1;
  --empire-camera-origin-x: 50%;
  --empire-camera-origin-y: 50%;
  min-height: clamp(340px, 45vw, 550px);
  aspect-ratio: 16 / 8;
  overflow: hidden;
  border-color: #e7c568;
  border-radius: clamp(15px, 2.2vw, 22px);
  cursor: crosshair;
  background: #7aa2b0;
  box-shadow: inset 0 0 0 6px rgba(7, 23, 43, .24), inset 0 -58px 88px rgba(7, 23, 43, .3);
}
.empire-courtyard-world .empire-movement-world::before { display: none; }
.empire-scene-stage-still,
.empire-scene-stage-motion {
  position: absolute;
  z-index: 2;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 46%;
  pointer-events: none;
}
.empire-scene-stage-still { opacity: .56; filter: saturate(.82) brightness(.9); }
.empire-scene-stage-motion { z-index: 2 !important; opacity: 0; }
.empire-scene-stage-motion[data-motion-loaded="true"] { opacity: .58; }
.empire-courtyard-world .student-empire-stage-celebration { z-index: 20; border-radius: inherit; }
.empire-courtyard-world.is-stage-advance-celebrating .student-empire-stage-celebration { animation: empire-stage-advance-glow 2.4s ease-out both; }
.empire-courtyard-world.is-stage-advance-celebrating .student-empire-stage-celebration::before { animation: empire-stage-advance-sparkles 2.4s ease-out both; }
.empire-courtyard-world.is-stage-advance-celebrating .student-empire-stage-celebration::after { animation: empire-stage-advance-sparkles 2.4s .12s ease-out both; }

.empire-courtyard-layers,
.empire-scene-layer,
.empire-scene-layer > :where(i, b, em) {
  position: absolute;
  inset: 0;
  display: block;
  pointer-events: none;
}
.empire-courtyard-layers {
  z-index: 1;
  inset: -5%;
  transform: scale(var(--empire-camera-scale));
  transform-origin: var(--empire-camera-origin-x) var(--empire-camera-origin-y);
  transition: transform 320ms ease, transform-origin 320ms ease;
}
.empire-scene-layer.is-background {
  z-index: 1;
  background:
    linear-gradient(180deg, rgba(44, 85, 112, .08), rgba(7, 23, 43, .42)),
    var(--empire-courtyard-poster) center 46% / cover no-repeat,
    linear-gradient(#92c7d4, #e7cf91 68%, #728f61);
  filter: saturate(.9) brightness(.92);
}
.empire-scene-layer.is-background::after {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(232, 247, 250, .18), transparent 38%, rgba(7, 23, 43, .28));
  content: "";
}
.empire-scene-layer.is-background i {
  inset: 7% 4% auto;
  height: 30%;
  opacity: .42;
  background:
    radial-gradient(circle at 9% 62%, #eef8f5 0 1.5%, transparent 1.8%),
    radial-gradient(circle at 70% 18%, #eef8f5 0 1.1%, transparent 1.4%),
    radial-gradient(circle at 91% 70%, #eef8f5 0 1.4%, transparent 1.7%);
}
.empire-scene-layer.is-terrain { z-index: 3; }
.empire-scene-layer.is-terrain i {
  inset: 18% 2% 2%;
  clip-path: polygon(50% 4%, 99% 43%, 55% 98%, 1% 56%);
  background:
    linear-gradient(30deg, transparent 0 48%, rgba(255,255,255,.12) 49% 51%, transparent 52%) 0 0 / 42px 42px,
    linear-gradient(150deg, transparent 0 48%, rgba(58,72,47,.16) 49% 51%, transparent 52%) 0 0 / 42px 42px,
    linear-gradient(145deg, #cab37c, #9c8254 62%, #6b704a);
  box-shadow: inset 0 0 0 2px rgba(255, 245, 194, .25), 0 24px 38px rgba(2, 12, 25, .35);
}
.empire-scene-layer.is-terrain b {
  inset: 33% 7% 12% 9%;
  clip-path: polygon(49% 0, 100% 41%, 55% 100%, 0 57%);
  background:
    radial-gradient(ellipse at center, rgba(255,255,255,.56) 0 29%, transparent 31%) 0 0 / 38px 25px,
    #bfa36f;
  opacity: .82;
}
.empire-scene-layer.is-terrain em {
  inset: auto 2% 0 0;
  height: 22%;
  background: linear-gradient(180deg, rgba(31, 82, 54, .05), rgba(31, 82, 54, .9));
  clip-path: polygon(0 58%, 8% 28%, 16% 54%, 25% 18%, 34% 55%, 44% 22%, 55% 57%, 66% 14%, 76% 50%, 87% 20%, 100% 55%, 100% 100%, 0 100%);
}

.empire-scene-layer.is-architecture { z-index: 8; }
.empire-scene-layer.is-architecture > :where(i, b) {
  inset: auto;
  filter: drop-shadow(0 16px 10px rgba(2, 12, 25, .35));
}
.empire-scene-layer.is-architecture .is-courtyard-wall {
  left: 3%;
  top: 30%;
  width: 29%;
  height: 45%;
  clip-path: polygon(8% 28%, 48% 3%, 94% 28%, 94% 83%, 51% 100%, 7% 76%);
  background:
    linear-gradient(90deg, transparent 0 18%, rgba(255,255,255,.12) 19% 21%, transparent 22% 48%, rgba(255,255,255,.1) 49% 51%, transparent 52% 78%, rgba(255,255,255,.1) 79% 81%, transparent 82%),
    linear-gradient(145deg, #d8c18f, #806b4c 72%);
}
.empire-scene-layer.is-architecture .is-great-hall {
  left: 34%;
  top: 17%;
  width: 34%;
  height: 52%;
  clip-path: polygon(50% 0, 94% 24%, 94% 82%, 52% 100%, 5% 76%, 5% 25%);
  background:
    radial-gradient(ellipse at 50% 74%, #1a2b3b 0 12%, #d3af55 13% 16%, transparent 17%),
    linear-gradient(90deg, transparent 0 15%, rgba(243,216,144,.7) 16% 19%, transparent 20% 80%, rgba(243,216,144,.7) 81% 84%, transparent 85%),
    linear-gradient(145deg, #c9a95d, #675138 76%);
}
.empire-scene-layer.is-architecture .is-library {
  right: 3%;
  top: 25%;
  width: 29%;
  height: 47%;
  clip-path: polygon(49% 0, 96% 29%, 94% 82%, 51% 100%, 4% 76%, 5% 28%);
  background:
    radial-gradient(ellipse at 52% 72%, #17283a 0 11%, #dfc36d 12% 15%, transparent 16%),
    repeating-linear-gradient(90deg, transparent 0 12%, rgba(255,235,164,.32) 13% 15%, transparent 16% 28%),
    linear-gradient(145deg, #b98b4d, #58402f 75%);
}
.empire-scene-layer.is-architecture .is-gate {
  left: 46%;
  top: 48%;
  width: 9%;
  height: 27%;
  border: 3px solid rgba(239, 208, 112, .8);
  border-bottom: 0;
  border-radius: 50% 50% 0 0;
  background: linear-gradient(90deg, #273848, #091622 52%, #273848);
}

.empire-scene-layer.is-props { z-index: 14; }
.empire-scene-layer.is-props > :where(i, b) { inset: auto; }
.empire-scene-layer.is-props .is-fountain {
  left: 12%;
  top: 48%;
  width: 11%;
  aspect-ratio: 1;
  border: 4px solid #d6bd7c;
  border-radius: 50%;
  background: radial-gradient(circle, #e6fbff 0 9%, #75c6d8 10% 35%, #5b8c8f 36% 43%, #b59b67 44% 66%, #64543c 67%);
  box-shadow: 0 12px 14px rgba(2,12,25,.32);
}
.empire-scene-layer.is-props .is-lanterns {
  left: 26%;
  top: 54%;
  width: 52%;
  height: 20%;
  background:
    radial-gradient(circle, #fff1a8 0 4px, #b77d2a 5px 7px, transparent 8px) 5% 50% / 16% 100% repeat-x;
  filter: drop-shadow(0 0 7px rgba(255, 225, 132, .74));
}
.empire-scene-layer.is-props .is-upgrade {
  display: grid;
  width: 48px;
  height: 58px;
  place-items: center;
  border: 2px solid #f0d677;
  border-radius: 12px 12px 5px 5px;
  background: linear-gradient(145deg, #fff3b8, #8e6128);
  box-shadow: 0 10px 15px rgba(2,12,25,.32);
}
.empire-scene-layer.is-props .is-upgrade span { font-size: 1.35rem; font-style: normal; }
.empire-scene-layer.is-props .is-upgrade.is-building {
  border-style: dashed;
  opacity: .82;
  background: repeating-linear-gradient(135deg, #d6b24f 0 7px, #614326 7px 13px);
}
.empire-scene-layer.is-props .is-royal-banner { left: 43%; top: 18%; }
.empire-scene-layer.is-props .is-library-wing { right: 9%; top: 32%; }
.empire-scene-layer.is-props .is-stone-walls { left: 6%; top: 42%; }
.empire-scene-layer.is-props .is-sun-tower { right: 4%; top: 17%; }
.empire-scene-layer.is-props .is-royal-gardens { left: 25%; top: 61%; }
.empire-scene-layer.is-props .is-crown-spire { left: 54%; top: 16%; }

.empire-scene-layer.is-light { z-index: 34; mix-blend-mode: screen; }
.empire-scene-layer.is-light i {
  inset: -18% 38% 25% -8%;
  transform: rotate(-14deg);
  background: linear-gradient(100deg, rgba(255,250,212,.38), transparent 72%);
  filter: blur(12px);
}
.empire-scene-layer.is-light b {
  inset: 0;
  background: radial-gradient(circle at 72% 22%, rgba(255,236,159,.27), transparent 28%);
}
.empire-scene-layer.is-foreground { z-index: 40; }
.empire-scene-layer.is-foreground i,
.empire-scene-layer.is-foreground b {
  inset: auto;
  bottom: -4%;
  width: 34%;
  height: 35%;
  background: linear-gradient(160deg, #174d36, #082f2a 75%);
  filter: drop-shadow(0 -8px 14px rgba(2,12,25,.25));
}
.empire-scene-layer.is-foreground i { left: -6%; clip-path: polygon(0 24%, 24% 6%, 42% 38%, 56% 8%, 71% 47%, 100% 20%, 100% 100%, 0 100%); }
.empire-scene-layer.is-foreground b { right: -7%; clip-path: polygon(0 24%, 22% 46%, 38% 8%, 54% 39%, 72% 4%, 100% 30%, 100% 100%, 0 100%); }

.empire-courtyard-hotspots {
  position: absolute;
  z-index: 46;
  inset: 0;
  pointer-events: none;
}
.empire-courtyard-hotspot {
  position: absolute;
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  align-items: center;
  gap: 2px 8px;
  min-width: 150px;
  max-width: min(220px, 30%);
  min-height: 48px;
  padding: 8px 10px;
  border: 1px solid rgba(255, 239, 177, .78);
  border-radius: 14px;
  color: #fff9df;
  background: rgba(7, 23, 43, .88);
  box-shadow: 0 9px 20px rgba(2, 12, 25, .38), 0 0 0 4px rgba(255, 227, 139, .08);
  text-decoration: none;
  pointer-events: auto;
  backdrop-filter: blur(5px);
}
.empire-courtyard-hotspot:hover,
.empire-courtyard-hotspot:focus-visible { color: #07172b; background: #fff0b0; transform: translateY(-2px); }
.empire-courtyard-hotspot > span {
  grid-row: 1 / span 2;
  display: grid;
  width: 34px;
  height: 34px;
  place-items: center;
  border-radius: 10px;
  color: #f5d470;
  background: #102b45;
  font-size: 1.15rem;
}
.empire-courtyard-hotspot:hover > span,
.empire-courtyard-hotspot:focus-visible > span { color: #fff0b0; background: #07172b; }
.empire-courtyard-hotspot strong { min-width: 0; font: 700 .88rem/1.1 Georgia, serif; overflow-wrap: anywhere; }
.empire-courtyard-hotspot small { min-width: 0; color: #d1deea; font-size: .75rem; line-height: 1.15; overflow-wrap: anywhere; }
.empire-courtyard-hotspot:hover small,
.empire-courtyard-hotspot:focus-visible small { color: #594515; }
.empire-courtyard-hotspot.is-courtyard { left: 4%; bottom: 10%; }
.empire-courtyard-hotspot.is-great-hall { top: 6%; left: 40%; }
.empire-courtyard-hotspot.is-library { top: 15%; right: 3%; }

.empire-courtyard-world .empire-movement-room {
  z-index: 13;
  border-color: transparent;
  background: transparent;
  pointer-events: none;
}
.empire-courtyard-world .empire-movement-room strong {
  top: auto;
  bottom: 8px;
  left: 50%;
  max-width: calc(100% - 18px);
  transform: translateX(-50%);
  color: #fff7d6;
  background: rgba(7, 23, 43, .82);
  font-size: .8rem;
  text-align: center;
  white-space: normal;
  overflow-wrap: anywhere;
}
.empire-courtyard-world .empire-movement-obstacle { z-index: 15; opacity: .18; }
.empire-courtyard-world .empire-movement-interaction { z-index: 18; opacity: .38; }
.empire-courtyard-world .empire-movement-player {
  width: 52px;
  height: 58px;
  border: 0;
  border-radius: 50%;
  background: transparent;
  box-shadow: 0 0 0 7px rgba(255, 231, 145, .2), 0 14px 16px rgba(2, 12, 25, .42);
}
.empire-courtyard-world .empire-movement-player::after {
  position: absolute;
  right: 4px;
  bottom: -7px;
  left: 4px;
  height: 13px;
  border-radius: 50%;
  background: rgba(2, 12, 25, .42);
  filter: blur(4px);
  content: "";
}
.empire-movement-avatar { width: 50px; height: 58px; margin: 0; transform: scale(.82); transform-origin: center bottom; }
.empire-courtyard-world .empire-movement-destination { z-index: 19; }
.empire-courtyard-world .empire-movement-status { min-height: 28px; font-size: .875rem; }

.empire-kingdom-status {
  display: grid;
  gap: 12px;
  padding: clamp(14px, 2vw, 20px);
  border: 1px solid rgba(255, 232, 151, .38);
  border-radius: 18px;
  color: #f7fbff;
  background: linear-gradient(135deg, rgba(3, 17, 34, .9), rgba(18, 56, 82, .78));
  box-shadow: inset 0 1px rgba(255,255,255,.08);
}
.empire-kingdom-status-copy {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 16px;
}
.empire-kingdom-status-copy h3 { margin: 2px 0 4px; color: #fff5c9; font: 700 clamp(1.25rem, 2.5vw, 1.8rem)/1.08 Georgia, serif; }
.empire-kingdom-status-copy p:not(.eyebrow) { max-width: 700px; margin: 0; color: #d7e4ed; font-size: .88rem; line-height: 1.45; }
.empire-kingdom-status-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
.empire-kingdom-status-actions .button,
.empire-kingdom-status-actions .student-motion-preference { min-height: 44px; }
.empire-kingdom-status-metrics {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin: 0;
}
.empire-kingdom-status-metrics > div { min-width: 0; padding: 10px 12px; border: 1px solid rgba(255,255,255,.12); border-radius: 13px; background: rgba(255,255,255,.06); }
.empire-kingdom-status-metrics dt { color: #bcd0df; font-size: .72rem; font-weight: 800; line-height: 1.25; }
.empire-kingdom-status-metrics dd { display: flex; align-items: center; gap: 7px; margin: 4px 0 0; color: #fff6cb; font: 800 1.08rem/1.1 Georgia, serif; }
.empire-kingdom-status-progress { display: grid; gap: 7px; }
.empire-kingdom-status-progress > div:first-child { display: flex; justify-content: space-between; gap: 12px; color: #d7e4ed; font-size: .8rem; }
.empire-kingdom-status-progress strong { color: #fff3b7; text-align: right; }
.empire-kingdom-status-progress .student-empire-progress-track { position: static; width: 100%; }
.empire-support-disclosure[data-support-default="closed"]:not([open]) > summary { min-height: 62px; background: #fffdf5; }
.empire-support-disclosure[data-support-default="closed"]:not([open]) > .empire-support-disclosure-body { display: none; }

@media (max-width: 820px) {
  .student-bar {
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 8px;
    width: calc(100% - 20px);
    min-height: 0;
    padding: 8px 0;
  }
  .student-bar-start { flex: 1 1 170px; gap: 8px; min-width: 0; }
  .student-brand { min-width: 0; }
  .student-brand img { width: clamp(82px, 24vw, 112px); max-width: 100%; }
  .student-account {
    flex: 0 1 auto;
    min-width: 0;
    margin-left: auto;
    gap: 5px;
    padding-left: 6px;
    border-left: 0;
  }
  .student-account-nav {
    order: 3;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    width: 100%;
    margin-left: 0;
    gap: 4px;
  }
  .student-account-nav a {
    display: grid;
    min-width: 0;
    min-height: 44px;
    place-items: center;
    padding: 8px 5px;
    font-size: .75rem;
    line-height: 1.15;
    text-align: center;
    white-space: normal;
    overflow-wrap: anywhere;
  }
  .logout-button { min-width: 44px; padding-inline: 4px; font-size: .75rem; line-height: 1.1; white-space: nowrap; }
  .student-avatar-header { flex: 0 0 auto; }
  .student-account .student-avatar span { display: block; }

  .student-empire-language { justify-content: stretch; gap: 5px; }
  .student-empire-language strong { flex: 1 1 100%; margin: 0 0 2px; }
  .student-empire-language a { flex: 1 1 0; max-width: none; padding-inline: 6px; text-align: center; }

  .empire-courtyard-world .empire-movement-world {
    --empire-camera-scale: 1.06;
    --empire-camera-origin-x: 44%;
    --empire-camera-origin-y: 52%;
    min-height: 430px;
    aspect-ratio: 4 / 2.3;
  }
  .empire-courtyard-hotspot { min-width: 132px; max-width: 34%; padding: 7px 8px; }
  .empire-courtyard-hotspot.is-great-hall { top: 5%; left: 34%; }
  .empire-courtyard-hotspot.is-library { top: 17%; right: 2%; }
  .empire-kingdom-status-copy { grid-template-columns: 1fr; align-items: start; }
  .empire-kingdom-status-actions { justify-content: flex-start; }
  .student-empire-wallet small { font-size: .75rem; line-height: 1.1; overflow-wrap: anywhere; }
}

@media (max-width: 640px) {
  .student-shell { width: min(100% - 20px, 1180px); }
  .student-header-back { flex: 0 0 44px; }
  .student-account { gap: 2px; }
  .empire-courtyard-section { padding: 0; }
  .empire-courtyard-section > .student-section-heading p:not(.eyebrow) { display: block; }
  .empire-courtyard-world { padding: 9px; border-radius: 20px; }
  .empire-courtyard-world .empire-movement-heading { grid-template-columns: 1fr; }
  .empire-courtyard-world .empire-movement-heading-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .empire-courtyard-world .empire-movement-world {
    --empire-camera-scale: 1.22;
    --empire-camera-origin-x: 31%;
    --empire-camera-origin-y: 56%;
    min-height: 440px;
    aspect-ratio: auto;
  }
  .empire-courtyard-hotspot {
    grid-template-columns: 30px minmax(0, 1fr);
    min-width: 126px;
    max-width: 42%;
    min-height: 44px;
    border-radius: 12px;
  }
  .empire-courtyard-hotspot > span { width: 30px; height: 30px; }
  .empire-courtyard-hotspot strong { font-size: .78rem; }
  .empire-courtyard-hotspot small { display: none; }
  .empire-courtyard-hotspot.is-courtyard { left: 2%; bottom: 7%; }
  .empire-courtyard-hotspot.is-great-hall { top: 4%; left: 24%; }
  .empire-courtyard-hotspot.is-library { top: 18%; right: 1%; }
  .empire-courtyard-world .empire-movement-room strong { font-size: .75rem; text-overflow: clip; }
  .empire-kingdom-status-metrics { grid-template-columns: 1fr; }
  .empire-kingdom-status-actions { display: grid; grid-template-columns: 1fr; }
  .empire-kingdom-status-actions > * { width: 100%; }
  .empire-kingdom-status-progress > div:first-child { align-items: flex-start; flex-direction: column; gap: 3px; }
  .empire-kingdom-status-progress strong { text-align: left; }
}

@media (max-width: 430px) {
  .student-bar-start { flex-basis: 146px; }
  .student-brand img { width: clamp(78px, 23vw, 94px); }
  .student-account-nav a { padding-inline: 3px; }
  .student-area [data-empire-navigation] { gap: 3px; padding: 5px; }
  .student-empire-nav a,
  .student-empire-nav-more > summary { min-height: 58px; padding-inline: 2px; }
  .student-empire-nav span,
  .student-empire-nav-more > summary span { font-size: 1rem; }
  .empire-courtyard-world .empire-movement-world {
    --empire-camera-scale: 1.28;
    --empire-camera-origin-x: 28%;
    min-height: 430px;
  }
  .empire-courtyard-hotspot { min-width: 116px; max-width: 44%; padding-inline: 6px; }
  .empire-courtyard-hotspot.is-great-hall { left: 21%; }
  .empire-courtyard-hotspot.is-library { right: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .empire-courtyard-layers,
  .empire-courtyard-hotspot { transition: none; }
  .empire-courtyard-hotspot:hover,
  .empire-courtyard-hotspot:focus-visible { transform: none; }
  .empire-scene-layer.is-light { display: none; }
}
@media (max-width: 520px) {
  .student-empire-welcome:has(.student-empire-welcome-copy) { display: grid; padding-inline: 2px; }
  .student-empire-welcome-action { width: 100%; justify-self: stretch; }
  .student-empire-hero:not(.student-empire-castle-hero) { min-height: 410px; }
  .student-empire-layout .empire-castle-arrival ol { align-items: stretch; }
  .student-empire-layout .empire-castle-arrival li { display: flex; min-width: 0; }
  .student-empire-layout .empire-castle-arrival a { width: 100%; min-height: 120px; height: 100%; align-content: start; }
  .student-empire-layout .empire-castle-arrival a > span:last-child { grid-template-rows: minmax(30px, auto) minmax(28px, auto); align-content: start; }
  .student-empire-layout .empire-castle-arrival a small { display: grid; min-height: 30px; align-items: end; }
  .student-empire-layout .empire-castle-arrival a strong { display: grid; min-height: 28px; align-items: start; }
  .student-empire-wallet { padding: 6px; }
  .student-empire-wallet > div { justify-content: center; }
  .student-empire-wallet p { text-align: center; }
  .student-empire-level-progress { padding: 11px 12px; }
}
/* Successful safe-mission return route into the already-authorised Library lesson. */
.empire-mission-library-return {
  position: relative;
  display: grid;
  grid-template-columns: 92px minmax(0,1fr) minmax(190px,auto);
  gap: 16px;
  align-items: center;
  margin: 0 0 14px;
  padding: 15px 16px;
  overflow: hidden;
  border: 1px solid rgba(228,202,111,.58);
  border-radius: 18px;
  color: #f8f1da;
  background: linear-gradient(105deg,rgba(34,78,70,.97),rgba(10,34,48,.98) 48%,rgba(48,35,21,.98));
  box-shadow: inset 0 1px rgba(255,255,255,.06),0 12px 28px rgba(0,0,0,.24);
}
.empire-mission-library-return::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(115deg,transparent 0 34%,rgba(255,239,164,.06) 35% 37%,transparent 38% 100%);
}
.empire-mission-library-route {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: 32px 1fr 32px;
  align-items: center;
  min-width: 0;
}
.empire-mission-library-route i {
  display: grid;
  width: 32px;
  height: 32px;
  place-items: center;
  border: 1px solid rgba(255,239,164,.72);
  border-radius: 50%;
  background: rgba(255,239,164,.12);
  color: #fff1a8;
  font-style: normal;
}
.empire-mission-library-route b { border-top: 2px dotted rgba(255,239,164,.72); }
.empire-mission-library-copy,.empire-mission-library-actions { position: relative; z-index: 1; min-width: 0; }
.empire-mission-library-copy .eyebrow { margin: 0 0 3px; color: #f0d980; font-size: .68rem; overflow-wrap: anywhere; }
.empire-mission-library-copy h4 { margin: 0 0 5px; color: #fff5bc; font-family: var(--font-serif); font-size: 1.06rem; line-height: 1.15; }
.empire-mission-library-copy p { margin: 0; overflow-wrap: anywhere; }
.empire-mission-library-result { color: #e5f3e8; font-size: .78rem; line-height: 1.35; }
.empire-mission-library-authority,.empire-mission-library-waiting { margin-top: 5px!important; color: #cbdce2; font-size: .7rem; line-height: 1.35; }
.empire-mission-library-lesson { display: grid; gap: 2px; align-items: start; min-width: 0; margin-top: 7px!important; color: #fff; }
.empire-mission-library-lesson small { min-width: 0; max-width: 100%; color: #e8c96b; font-size: .66rem; font-weight: 850; text-transform: uppercase; letter-spacing: .05em; overflow-wrap: anywhere; }
.empire-mission-library-lesson strong { min-width: 0; max-width: 100%; font-size: .76rem; overflow-wrap: anywhere; }
.empire-mission-library-actions { display: grid; gap: 7px; }
.empire-mission-library-actions .button { min-height: 42px; padding: 8px 11px; text-align: center; white-space: normal; font-size: .72rem; line-height: 1.2; }
@media (max-width: 760px) {
  .empire-mission-library-return { grid-template-columns: 78px minmax(0,1fr); }
  .empire-mission-library-actions { grid-column: 1 / -1; grid-template-columns: repeat(2,minmax(0,1fr)); }
}
@media (max-width: 430px) {
  .empire-mission-library-return { grid-template-columns: 58px minmax(0,1fr); gap: 10px; padding: 12px; }
  .empire-mission-library-route { grid-template-columns: 25px 1fr 25px; }
  .empire-mission-library-route i { width: 25px; height: 25px; font-size: .78rem; }
  .empire-mission-library-copy h4 { font-size: .92rem; }
  .empire-mission-library-result { font-size: .72rem; }
  .empire-mission-library-authority,.empire-mission-library-waiting { font-size: .66rem; }
  .empire-mission-library-lesson { display: block; }
  .empire-mission-library-lesson small,.empire-mission-library-lesson strong { display: block; }
  .empire-mission-library-actions { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
  .empire-mission-library-return::after { display: none; }
}

/* Draft Armour-Bearer truth introduction inside the canonical castle journey. */
.empire-armour-bearer-intro {
  position: relative;
  display: grid;
  grid-template-columns: 110px minmax(0,1fr) minmax(220px,auto);
  gap: 14px 18px;
  align-items: center;
  margin: 0 0 14px;
  padding: 16px;
  overflow: hidden;
  border: 1px solid rgba(225,199,104,.62);
  border-radius: 20px;
  color: #f8f1d8;
  background: linear-gradient(112deg,rgba(50,39,20,.98),rgba(12,36,48,.98) 44%,rgba(26,61,55,.98));
  box-shadow: inset 0 1px rgba(255,255,255,.07),0 14px 30px rgba(0,0,0,.25);
}
.empire-armour-bearer-intro::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(circle at 12% 28%,rgba(255,229,139,.1),transparent 24%),linear-gradient(120deg,transparent 0 58%,rgba(255,237,166,.05) 59% 61%,transparent 62%);
}
.empire-armour-bearer-route,.empire-armour-bearer-copy,.empire-armour-element-path,.empire-armour-practice,.empire-armour-bearer-safeguards,.empire-armour-bearer-actions { position:relative; z-index:1; min-width:0; }
.empire-armour-bearer-route { display:grid; grid-template-columns:28px 1fr 34px 1fr 28px; align-items:center; }
.empire-armour-bearer-route i { display:grid; width:28px; height:28px; place-items:center; border:1px solid rgba(248,221,126,.72); border-radius:50%; color:#fff0a0; background:rgba(255,230,142,.1); font-style:normal; }
.empire-armour-bearer-route i:nth-of-type(2) { width:34px; height:34px; border-width:2px; box-shadow:0 0 18px rgba(244,210,103,.24); }
.empire-armour-bearer-route b { border-top:2px dotted rgba(248,221,126,.58); }
.empire-armour-bearer-copy .eyebrow { margin:0 0 3px; color:#e8c96b; font-size:.68rem; overflow-wrap:anywhere; }
.empire-armour-bearer-copy h4 { margin:0 0 5px; color:#fff4b3; font-family:var(--font-serif); font-size:1.08rem; line-height:1.15; }
.empire-armour-bearer-copy p { margin:0; color:#d9e5e8; font-size:.76rem; line-height:1.42; overflow-wrap:anywhere; }
.empire-armour-bearer-copy .empire-armour-truth-meaning { margin-top:7px; color:#eef7e9; }
.empire-armour-bearer-copy .empire-armour-truth-meaning strong { color:#ffe28c; }
.empire-armour-element-path { grid-column:1 / -1; display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:7px; margin:0; padding:0; list-style:none; }
.empire-armour-element-path li { display:grid; grid-template-columns:28px minmax(0,1fr); grid-template-rows:auto auto; gap:1px 7px; align-items:center; min-width:0; padding:7px 8px; border:1px solid rgba(216,194,113,.24); border-radius:12px; background:rgba(4,21,31,.48); }
.empire-armour-element-path li > span { grid-row:1 / 3; display:grid; width:28px; height:28px; place-items:center; border:1px solid rgba(225,199,104,.44); border-radius:50%; color:#dbc777; background:rgba(225,199,104,.08); }
.empire-armour-element-path strong,.empire-armour-element-path small { min-width:0; overflow-wrap:anywhere; }
.empire-armour-element-path strong { color:#f7efd2; font-size:.67rem; line-height:1.15; }
.empire-armour-element-path small { color:#9db0b8; font-size:.56rem; line-height:1.1; text-transform:uppercase; letter-spacing:.04em; }
.empire-armour-element-path .is-introduced { border-color:#e8c865; background:linear-gradient(145deg,rgba(108,82,28,.64),rgba(20,49,55,.72)); box-shadow:0 0 0 1px rgba(232,200,101,.15); }
.empire-armour-element-path .is-introduced > span { border-color:#f4da7a; color:#fff3a8; background:rgba(244,218,122,.16); }
.empire-armour-element-path .is-introduced small { color:#f0d77a; }
.empire-armour-practice { align-self:stretch; padding:11px 12px; border-left:3px solid #d7b858; border-radius:10px; background:rgba(5,23,34,.45); }
.empire-armour-practice > strong { color:#f2dc87; font-size:.72rem; text-transform:uppercase; letter-spacing:.05em; }
.empire-armour-practice ol { display:grid; gap:4px; margin:7px 0 0; padding-left:1.2rem; color:#e0eaeb; font-size:.7rem; line-height:1.35; }
.empire-truth-rehearsal { grid-column:1 / -1; display:grid; grid-template-columns:minmax(0,1fr) minmax(260px,.62fr); gap:10px 12px; min-width:0; padding:12px; border:1px solid rgba(137,190,174,.42); border-radius:14px; background:linear-gradient(145deg,rgba(4,27,36,.74),rgba(18,54,48,.68)); }
.empire-truth-rehearsal fieldset { min-width:0; margin:0; padding:0; border:0; }
.empire-truth-rehearsal legend { display:grid; gap:2px; width:100%; padding:0; }
.empire-truth-rehearsal legend small { color:#9fd6c5; font-size:.64rem; font-weight:750; letter-spacing:.04em; text-transform:uppercase; overflow-wrap:anywhere; }
.empire-truth-rehearsal legend strong { color:#f8e69b; font-family:var(--font-serif); font-size:.98rem; line-height:1.18; }
.empire-truth-rehearsal fieldset > p { margin:5px 0 9px; color:#d9e7e6; font-size:.71rem; line-height:1.4; }
.empire-truth-rehearsal-options { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.empire-truth-rehearsal-option { position:relative; display:grid; grid-template-columns:30px minmax(0,1fr); gap:8px; align-items:start; min-width:0; padding:9px; border:1px solid rgba(207,226,215,.28); border-radius:11px; color:#eaf4f0; background:rgba(2,18,27,.48); cursor:pointer; }
.empire-truth-rehearsal-option:has(input:checked) { border-color:#e3c75f; background:rgba(91,76,25,.45); box-shadow:0 0 0 2px rgba(227,199,95,.12); }
.empire-truth-rehearsal-option:has(input:focus-visible) { outline:4px solid var(--empire-focus-ring, #77bdf0); outline-offset:4px; }
.empire-truth-rehearsal-option input { position:absolute; width:1px; height:1px; opacity:0; }
.empire-truth-rehearsal-option > span { display:grid; width:30px; height:30px; place-items:center; border:1px solid rgba(224,205,123,.62); border-radius:50%; color:#ffe98e; background:rgba(255,233,142,.08); font-size:.72rem; font-weight:900; }
.empire-truth-rehearsal-option > strong { min-width:0; color:#e8f0ed; font-size:.69rem; line-height:1.4; overflow-wrap:anywhere; }
.empire-truth-rehearsal .button { min-height:44px; margin-top:9px; padding:8px 14px; white-space:normal; font-size:.72rem; }
.empire-truth-rehearsal-feedback { display:grid; grid-template-columns:32px minmax(0,1fr); gap:9px; align-content:center; min-width:0; padding:10px 11px; border:1px solid rgba(229,204,107,.42); border-radius:11px; background:rgba(9,26,34,.66); }
.empire-truth-rehearsal-feedback > span { display:grid; width:32px; height:32px; place-items:center; border-radius:50%; color:#142d27; background:#d9c66d; font-weight:950; }
.empire-truth-rehearsal-feedback.is-affirming > span { background:#9bd6b2; }
.empire-truth-rehearsal-feedback strong { color:#fff0aa; font-size:.77rem; }
.empire-truth-rehearsal-feedback p { margin:3px 0 5px; color:#e0ece8; font-size:.69rem; line-height:1.4; overflow-wrap:anywhere; }
.empire-truth-rehearsal-feedback small { display:block; color:#b9d2ca; font-size:.63rem; line-height:1.35; overflow-wrap:anywhere; }
.empire-truth-rehearsal-authority { grid-column:1 / -1; display:grid; grid-template-columns:24px minmax(0,1fr); gap:7px; align-items:start; margin:0; color:#bcd0d0; font-size:.65rem; line-height:1.35; overflow-wrap:anywhere; }
.empire-truth-rehearsal-authority > span { display:grid; width:24px; height:24px; place-items:center; border:1px solid rgba(226,199,102,.42); border-radius:50%; color:#ead173; }

.empire-truth-correction { position:relative; z-index:1; grid-column:1 / -1; display:grid; grid-template-columns:minmax(0,1fr) minmax(260px,.58fr); gap:10px 12px; min-width:0; padding:12px; border:1px solid rgba(129,172,209,.48); border-radius:14px; background:linear-gradient(145deg,rgba(8,25,42,.78),rgba(21,50,58,.72)); }
.empire-truth-correction fieldset { min-width:0; margin:0; padding:0; border:0; }
.empire-truth-correction legend { display:grid; gap:2px; width:100%; padding:0; }
.empire-truth-correction legend small { color:#a9cde4; font-size:.64rem; font-weight:750; letter-spacing:.04em; text-transform:uppercase; overflow-wrap:anywhere; }
.empire-truth-correction legend strong { color:#f8e69b; font-family:var(--font-serif); font-size:.98rem; line-height:1.18; }
.empire-truth-correction fieldset > p { margin:5px 0 9px; color:#dce9ef; font-size:.71rem; line-height:1.4; }
.empire-truth-correction-options { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.empire-truth-correction-option { position:relative; display:grid; grid-template-columns:30px minmax(0,1fr); gap:8px; align-items:start; min-width:0; padding:9px; border:1px solid rgba(194,220,235,.28); border-radius:11px; color:#edf5f7; background:rgba(3,17,30,.5); cursor:pointer; }
.empire-truth-correction-option:has(input:checked) { border-color:#e3c75f; background:rgba(79,68,26,.48); box-shadow:0 0 0 2px rgba(227,199,95,.12); }
.empire-truth-correction-option input { position:absolute; width:1px; height:1px; opacity:0; }
.empire-truth-correction-option > span { display:grid; width:30px; height:30px; place-items:center; border:1px solid rgba(164,202,226,.72); border-radius:50%; color:#dff3ff; background:rgba(164,202,226,.1); font-size:.72rem; font-weight:900; }
.empire-truth-correction-option > strong { min-width:0; color:#e8f0f4; font-size:.69rem; line-height:1.4; overflow-wrap:anywhere; }
.empire-truth-correction .button { min-height:44px; margin-top:9px; padding:8px 14px; white-space:normal; font-size:.72rem; }
.empire-truth-correction-feedback { display:grid; grid-template-columns:32px minmax(0,1fr); gap:9px; align-content:center; min-width:0; padding:10px 11px; border:1px solid rgba(229,204,107,.42); border-radius:11px; background:rgba(9,26,34,.7); }
.empire-truth-correction-feedback > span { display:grid; width:32px; height:32px; place-items:center; border-radius:50%; color:#142d27; background:#d9c66d; font-weight:950; }
.empire-truth-correction-feedback.is-affirming > span { background:#9bd6b2; }
.empire-truth-correction-feedback strong { color:#fff0aa; font-size:.77rem; }
.empire-truth-correction-feedback p { margin:3px 0 5px; color:#e0ecef; font-size:.69rem; line-height:1.4; overflow-wrap:anywhere; }
.empire-truth-correction-feedback small { display:block; color:#bdd3dc; font-size:.63rem; line-height:1.35; overflow-wrap:anywhere; }
.empire-truth-correction-authority { grid-column:1 / -1; display:grid; grid-template-columns:24px minmax(0,1fr); gap:7px; align-items:start; margin:0; color:#bfd1d9; font-size:.65rem; line-height:1.35; overflow-wrap:anywhere; }
.empire-truth-correction-authority > span { display:grid; width:24px; height:24px; place-items:center; border:1px solid rgba(164,202,226,.52); border-radius:50%; color:#c8e8f8; }
.empire-truth-correction.is-waiting { display:block; padding:10px 12px; }
.empire-truth-correction-waiting { display:grid; grid-template-columns:28px minmax(0,1fr); gap:1px 9px; align-items:center; margin:0; color:#d9e6eb; }
.empire-truth-correction-waiting > span { grid-row:1 / 3; display:grid; width:28px; height:28px; place-items:center; border:1px solid rgba(164,202,226,.52); border-radius:50%; color:#c8e8f8; }
.empire-truth-correction-waiting strong,.empire-truth-correction-waiting small { min-width:0; overflow-wrap:anywhere; }
.empire-truth-correction-waiting strong { color:#f6e5a0; font-size:.76rem; }
.empire-truth-correction-waiting small { color:#bcd0d8; font-size:.65rem; line-height:1.35; }
.empire-truth-summary { position:relative; z-index:1; grid-column:1 / -1; display:grid; grid-template-columns:minmax(0,1fr) minmax(280px,.72fr); gap:10px 12px; min-width:0; padding:12px; border:1px solid rgba(226,199,102,.52); border-radius:14px; background:linear-gradient(145deg,rgba(28,25,12,.82),rgba(20,45,43,.76)); box-shadow:inset 0 1px 0 rgba(255,255,255,.06); }
.empire-truth-summary-heading { display:grid; grid-template-columns:34px minmax(0,1fr); gap:9px; align-items:start; min-width:0; }
.empire-truth-summary-heading > span { display:grid; width:34px; height:34px; place-items:center; border:1px solid rgba(229,204,107,.68); border-radius:50%; color:#ffe690; background:rgba(229,204,107,.1); font-weight:950; }
.empire-truth-summary-heading .eyebrow { margin:0; color:#c9dbc8; font-size:.64rem; font-weight:750; letter-spacing:.04em; text-transform:uppercase; overflow-wrap:anywhere; }
.empire-truth-summary-heading h4 { margin:2px 0 4px; color:#fff0aa; font-family:var(--font-serif); font-size:1rem; line-height:1.18; }
.empire-truth-summary-heading p:last-child { margin:0; color:#dce8e1; font-size:.7rem; line-height:1.4; overflow-wrap:anywhere; }
.empire-truth-summary-choices { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; min-width:0; }
.empire-truth-summary-choices article { min-width:0; padding:9px 10px; border:1px solid rgba(204,220,208,.28); border-radius:11px; background:rgba(3,19,25,.52); }
.empire-truth-summary-choices article.is-ready { border-color:rgba(145,205,166,.54); }
.empire-truth-summary-choices article.is-review { border-color:rgba(229,204,107,.5); }
.empire-truth-summary-choices small { display:block; color:#a9c9c0; font-size:.61rem; font-weight:750; letter-spacing:.03em; text-transform:uppercase; overflow-wrap:anywhere; }
.empire-truth-summary-choices strong { display:block; margin-top:3px; color:#f6df8f; font-size:.73rem; line-height:1.28; overflow-wrap:anywhere; }
.empire-truth-summary-choices p { margin:5px 0 0; color:#dde9e5; font-size:.67rem; line-height:1.38; overflow-wrap:anywhere; }
.empire-truth-summary-authority { grid-column:1 / -1; display:grid; grid-template-columns:24px minmax(0,1fr); gap:7px; align-items:start; margin:0; color:#c6d6d0; font-size:.65rem; line-height:1.35; overflow-wrap:anywhere; }
.empire-truth-summary-authority > span { display:grid; width:24px; height:24px; place-items:center; border:1px solid rgba(226,199,102,.48); border-radius:50%; color:#ead173; }
.empire-truth-summary-actions { grid-column:1 / -1; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.empire-truth-summary-actions .button { display:grid; justify-items:center; min-height:44px; padding:8px 10px; text-align:center; white-space:normal; font-size:.71rem; line-height:1.2; }
.empire-truth-summary-actions .button small { display:block; max-width:100%; margin-top:2px; font-size:.6rem; font-weight:650; opacity:.84; overflow-wrap:anywhere; }
.empire-armour-bearer-safeguards { display:grid; gap:6px; }
.empire-armour-bearer-safeguards p { display:grid; grid-template-columns:24px minmax(0,1fr); gap:7px; margin:0; color:#cbdbe0; font-size:.68rem; line-height:1.35; overflow-wrap:anywhere; }
.empire-armour-bearer-safeguards span { display:grid; width:24px; height:24px; place-items:center; border:1px solid rgba(226,199,102,.42); border-radius:50%; color:#ead173; }
.empire-armour-bearer-actions { display:grid; gap:8px; }
.empire-armour-bearer-actions .button { display:grid; justify-items:center; min-height:44px; padding:8px 10px; text-align:center; white-space:normal; font-size:.72rem; line-height:1.2; }
.empire-armour-bearer-actions .button small { display:block; max-width:100%; margin-top:2px; font-size:.61rem; font-weight:650; opacity:.84; overflow-wrap:anywhere; }
@media (max-width:900px) {
  .empire-armour-bearer-intro { grid-template-columns:82px minmax(0,1fr); }
  .empire-armour-bearer-actions { grid-column:1 / -1; grid-template-columns:repeat(2,minmax(0,1fr)); }
  .empire-armour-element-path { grid-template-columns:repeat(4,minmax(0,1fr)); }
  .empire-armour-element-path li:last-child { grid-column:2 / 4; }
  .empire-truth-correction { grid-template-columns:1fr; }
  .empire-truth-correction-options { grid-template-columns:1fr; }
  .empire-truth-summary { grid-template-columns:1fr; }
}
@media (max-width:560px) {
  .empire-armour-bearer-intro { grid-template-columns:58px minmax(0,1fr); gap:10px; padding:12px; }
  .empire-armour-bearer-route { grid-template-columns:22px 1fr 26px 1fr 22px; }
  .empire-armour-bearer-route i { width:22px; height:22px; font-size:.72rem; }
  .empire-armour-bearer-route i:nth-of-type(2) { width:26px; height:26px; }
  .empire-armour-bearer-copy h4 { font-size:.94rem; }
  .empire-armour-bearer-copy p { font-size:.7rem; }
  .empire-armour-element-path { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .empire-armour-element-path li:last-child { grid-column:1 / -1; }
  .empire-armour-element-path li { padding:6px; }
  .empire-armour-practice,.empire-armour-bearer-safeguards,.empire-armour-bearer-actions { grid-column:1 / -1; }
  .empire-truth-rehearsal { grid-template-columns:1fr; padding:10px; }
  .empire-truth-rehearsal-options { grid-template-columns:1fr; }
  .empire-truth-correction { padding:10px; }
  .empire-truth-summary { padding:10px; }
  .empire-truth-summary-choices,.empire-truth-summary-actions { grid-template-columns:1fr; }
  .empire-armour-bearer-actions { grid-template-columns:1fr; }
}
@media (prefers-reduced-motion:reduce) {
  .empire-armour-bearer-intro::after { display:none; }
}

/* Session 49: WCAG AA contrast repairs for pale Armour learning surfaces. */
.student-area .empire-truth-evidence-save .button.light,
.student-area .empire-armour-evidence-save .button.light,
.student-area .empire-faith-evidence-save .button.light,
.student-area .empire-salvation-evidence-save .button.light,
.student-area .empire-truth-summary-actions .button.light,
.student-area .empire-righteousness-actions .button.light,
.student-area .empire-peace-actions .button.light,
.student-area .empire-faith-actions .button.light,
.student-area .empire-salvation-actions .button.light {
  color:#fff;
  background:#123a54;
  border-color:#123a54;
  text-shadow:none;
}
.student-area .empire-truth-summary-actions .button.light small,
.student-area .empire-righteousness-actions .button.light small,
.student-area .empire-peace-actions .button.light small,
.student-area .empire-faith-actions .button.light small,
.student-area .empire-salvation-actions .button.light small { color:inherit; opacity:1; }
.student-area .empire-truth-evidence-save .button.light:hover,
.student-area .empire-truth-evidence-save .button.light:focus-visible,
.student-area .empire-armour-evidence-save .button.light:hover,
.student-area .empire-armour-evidence-save .button.light:focus-visible,
.student-area .empire-faith-evidence-save .button.light:hover,
.student-area .empire-faith-evidence-save .button.light:focus-visible,
.student-area .empire-salvation-evidence-save .button.light:hover,
.student-area .empire-salvation-evidence-save .button.light:focus-visible,
.student-area .empire-truth-summary-actions .button.light:hover,
.student-area .empire-truth-summary-actions .button.light:focus-visible,
.student-area .empire-righteousness-actions .button.light:hover,
.student-area .empire-righteousness-actions .button.light:focus-visible,
.student-area .empire-peace-actions .button.light:hover,
.student-area .empire-peace-actions .button.light:focus-visible,
.student-area .empire-faith-actions .button.light:hover,
.student-area .empire-faith-actions .button.light:focus-visible,
.student-area .empire-salvation-actions .button.light:hover,
.student-area .empire-salvation-actions .button.light:focus-visible {
  color:#fff;
  background:#09263a;
  border-color:#77bdf0;
}

/* Session 09: Royal Armoury engineering shell. Original CSS geometry only. */
.empire-place-route-unavailable {
  display: grid;
  grid-template-columns: auto minmax(0,1fr) auto;
  align-items: center;
  gap: .75rem;
  min-height: 52px;
  padding: .7rem .8rem;
  border: 1px dashed rgba(146,117,63,.5);
  border-radius: 12px;
  color: inherit;
  background: rgba(20,31,40,.055);
  opacity: .86;
}
.empire-place-access-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 26px;
  padding: .22rem .5rem;
  border: 1px solid currentColor;
  border-radius: 999px;
  font-size: .72rem;
  font-weight: 800;
  line-height: 1.1;
  white-space: nowrap;
}
.empire-place-access-badge.is-unavailable,
.empire-place-access-badge.is-unauthorized,
.empire-place-access-badge.is-locked { opacity: .78; }
.empire-room-route a .empire-place-access-badge { margin-left: auto; }
.empire-room-deck details[data-location-access-state="unavailable"] > summary,
.empire-room-deck details[data-location-access-state="unauthorized"] > summary,
.empire-room-deck details[data-location-access-state="locked"] > summary { color:#13243a; background:linear-gradient(135deg,rgba(246,241,226,.98),rgba(222,215,193,.96)); }
.empire-room-deck details[data-location-access-state="unavailable"] > summary small,
.empire-room-deck details[data-location-access-state="unauthorized"] > summary small,
.empire-room-deck details[data-location-access-state="locked"] > summary small { color:#5d4b18; }

.empire-royal-armoury-shell {
  display: grid;
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
  gap: 1rem;
  margin: 1rem 0;
  padding: clamp(1rem,2.4vw,1.5rem);
  border: 1px solid rgba(182,145,65,.65);
  border-radius: 18px;
  background: linear-gradient(145deg,rgba(250,246,230,.98),rgba(227,219,192,.9));
  box-shadow: inset 0 0 0 4px rgba(255,255,255,.38),0 14px 30px rgba(35,29,20,.1);
}
.empire-royal-armoury-shell > header { display:flex; min-width:0; align-items:flex-start; justify-content:space-between; gap:1rem; }
.empire-royal-armoury-shell > header > div { min-width:0; }
.empire-royal-armoury-shell h1,
.empire-royal-armoury-shell h4 { min-width:0; margin:.15rem 0 0; overflow-wrap:break-word; }
.empire-royal-armoury-elements {
  display:grid;
  min-width:0;
  width:100%;
  box-sizing:border-box;
  grid-template-columns:repeat(7,minmax(82px,1fr));
  gap:.55rem;
  margin:0;
  padding:0;
  list-style:none;
}
.empire-royal-armoury-elements li {
  display:grid;
  min-width:0;
  grid-template-columns:auto minmax(0,1fr);
  align-items:center;
  gap:.35rem .5rem;
  min-height:72px;
  padding:.65rem;
  border:1px solid rgba(113,89,44,.34);
  border-radius:12px;
  background:rgba(255,255,255,.58);
}
.empire-royal-armoury-elements li > span { grid-row:1 / span 2; display:grid; width:34px; height:34px; place-items:center; border-radius:50%; background:#253947; color:#f4d77b; font-size:1.05rem; font-weight:900; }
.empire-royal-armoury-elements strong { min-width:0; overflow-wrap:anywhere; font-size:.84rem; line-height:1.15; }
.empire-royal-armoury-elements small { font-size:.7rem; opacity:.74; }
.empire-royal-armoury-authority { margin:0; padding:.75rem .9rem; border-left:4px solid #aa8034; border-radius:8px; background:rgba(255,255,255,.54); }

.empire-courtyard-world.is-royal-armoury .empire-movement-world { aspect-ratio: 1320 / 420; }
.empire-courtyard-world.is-royal-armoury .empire-scene-layer.is-background {
  background: radial-gradient(circle at 50% 18%,rgba(249,224,145,.24),transparent 34%),linear-gradient(180deg,#182b38,#0b151e 78%);
}
.empire-courtyard-world.is-royal-armoury .empire-scene-layer.is-terrain i {
  inset:43% 10% 0;
  transform:none;
  background:repeating-linear-gradient(135deg,#46535a 0 22px,#344148 22px 44px);
  clip-path:polygon(17% 0,83% 0,100% 100%,0 100%);
  opacity:.95;
}
.empire-courtyard-world.is-royal-armoury .empire-scene-layer.is-terrain b {
  inset:52% 28% 5%;
  transform:none;
  clip-path:polygon(50% 0,100% 36%,69% 100%,31% 100%,0 36%);
  background:repeating-linear-gradient(90deg,#704032 0 25px,#b28b4b 25px 31px,#6d2f30 31px 56px);
  opacity:.9;
}
.empire-courtyard-world.is-royal-armoury .empire-scene-layer.is-terrain em,
.empire-courtyard-world.is-royal-armoury .empire-scene-layer .is-courtyard-wall,
.empire-courtyard-world.is-royal-armoury .empire-scene-layer .is-great-hall,
.empire-courtyard-world.is-royal-armoury .empire-scene-layer .is-library,
.empire-courtyard-world.is-royal-armoury .empire-scene-layer .is-gate,
.empire-courtyard-world.is-royal-armoury .empire-scene-layer .is-fountain,
.empire-courtyard-world.is-royal-armoury .empire-scene-layer .is-lanterns,
.empire-courtyard-world.is-royal-armoury .is-library-wall-left,
.empire-courtyard-world.is-royal-armoury .is-library-wall-right,
.empire-courtyard-world.is-royal-armoury .is-library-window,
.empire-courtyard-world.is-royal-armoury .is-library-desk,
.empire-courtyard-world.is-royal-armoury .is-library-shelves,
.empire-courtyard-world.is-royal-armoury .is-library-globe,
.empire-courtyard-world.is-royal-armoury .is-hall-wall-left,
.empire-courtyard-world.is-royal-armoury .is-hall-wall-right,
.empire-courtyard-world.is-royal-armoury .is-hall-window,
.empire-courtyard-world.is-royal-armoury .is-hall-dais,
.empire-courtyard-world.is-royal-armoury .is-hall-throne,
.empire-courtyard-world.is-royal-armoury .is-hall-table,
.empire-courtyard-world.is-royal-armoury .is-hall-banners,
.empire-courtyard-world.is-royal-armoury .is-hall-braziers,
.empire-courtyard-world.is-royal-armoury .is-armour-truth-stand,
.empire-courtyard-world.is-royal-armoury .empire-scene-layer .is-upgrade { display:none; }
.empire-courtyard-world.is-royal-armoury .is-armoury-wall-left,
.empire-courtyard-world.is-royal-armoury .is-armoury-wall-right,
.empire-courtyard-world.is-royal-armoury .is-armoury-window,
.empire-courtyard-world.is-royal-armoury .is-armoury-vault,
.empire-courtyard-world.is-royal-armoury .is-armoury-racks,
.empire-courtyard-world.is-royal-armoury .is-armoury-plinths,
.empire-courtyard-world.is-royal-armoury .is-armoury-service-table { display:block; position:absolute; }
.empire-courtyard-world.is-royal-armoury .is-armoury-wall-left,
.empire-courtyard-world.is-royal-armoury .is-armoury-wall-right {
  top:4%; width:36%; height:79%;
  border:3px solid #8d7345;
  background:repeating-linear-gradient(180deg,transparent 0 15%,rgba(217,184,105,.16) 16% 18%,transparent 19% 31%),linear-gradient(145deg,#525e63,#202b32 73%);
  box-shadow:inset 0 0 0 8px rgba(7,13,18,.38),0 18px 27px rgba(0,0,0,.42);
}
.empire-courtyard-world.is-royal-armoury .is-armoury-wall-left { left:1%; transform:skewY(8deg); }
.empire-courtyard-world.is-royal-armoury .is-armoury-wall-right { right:1%; transform:skewY(-8deg); }
.empire-courtyard-world.is-royal-armoury .is-armoury-window { left:43%; top:7%; width:14%; height:27%; border:5px solid #c9a756; border-radius:52% 52% 5px 5px; background:linear-gradient(90deg,transparent 47%,rgba(212,175,85,.8) 48% 52%,transparent 53%),linear-gradient(180deg,transparent 47%,rgba(212,175,85,.8) 48% 52%,transparent 53%),radial-gradient(circle at 50% 28%,#fff2b4,#6f9ea8 42%,#283f48 76%); box-shadow:0 0 28px rgba(244,207,111,.35); }
.empire-courtyard-world.is-royal-armoury .is-armoury-vault { left:31%; top:31%; width:38%; height:18%; border:3px solid #b8964c; border-bottom:0; border-radius:50% 50% 0 0; background:linear-gradient(180deg,#41505a,#26323a); box-shadow:inset 0 0 0 7px rgba(10,18,23,.32); }
.empire-courtyard-world.is-royal-armoury .is-armoury-racks { inset:24% 8% auto; height:31%; background:linear-gradient(90deg,#7b5a2c 0 3%,transparent 3% 14%,#7b5a2c 14% 17%,transparent 17% 83%,#7b5a2c 83% 86%,transparent 86% 97%,#7b5a2c 97%),repeating-linear-gradient(180deg,transparent 0 28%,rgba(211,173,82,.9) 29% 32%,transparent 33% 49%); filter:drop-shadow(0 8px 9px rgba(0,0,0,.35)); }
.empire-courtyard-world.is-royal-armoury .is-armoury-plinths { left:18%; right:18%; top:53%; height:17%; background:repeating-linear-gradient(90deg,#b69451 0 9%,#5a4228 9% 12%,transparent 12% 14%); clip-path:polygon(0 24%,7% 0,12% 24%,20% 24%,25% 0,30% 24%,38% 24%,43% 0,48% 24%,56% 24%,61% 0,66% 24%,74% 24%,79% 0,84% 24%,92% 24%,97% 0,100% 24%,100% 100%,0 100%); opacity:.94; }
.empire-courtyard-world.is-royal-armoury .is-armoury-service-table { left:38%; top:68%; width:24%; height:12%; border:3px solid #d0ad5a; border-radius:50%; background:radial-gradient(ellipse at 50% 34%,#b78d47,#5d4025 72%); box-shadow:0 12px 15px rgba(0,0,0,.42); }
.empire-courtyard-world.is-royal-armoury .empire-scene-layer.is-light i { inset:-6% 29% 9%; transform:none; background:linear-gradient(180deg,rgba(255,230,145,.34),transparent 78%); }
.empire-courtyard-world.is-royal-armoury .empire-scene-layer.is-foreground i,
.empire-courtyard-world.is-royal-armoury .empire-scene-layer.is-foreground b { bottom:-9%; height:28%; background:linear-gradient(160deg,#30291f,#091017 78%); }
.empire-courtyard-world.is-royal-armoury .empire-courtyard-hotspot.is-royal-armoury { top:5%; right:auto; bottom:auto; left:38%; }
.empire-courtyard-world.is-royal-armoury .empire-courtyard-hotspot.is-courtyard { left:3%; bottom:8%; }
.empire-courtyard-world.is-royal-armoury .empire-courtyard-hotspot.is-great-hall { top:auto; right:3%; bottom:8%; left:auto; }
.empire-courtyard-world.is-royal-armoury .empire-courtyard-hotspot.is-library { display:none; }

@media (max-width: 900px) {
  .empire-royal-armoury-elements { grid-template-columns:repeat(4,minmax(0,1fr)); }
  .empire-courtyard-world.is-royal-armoury .is-armoury-wall-left { left:-9%; }
  .empire-courtyard-world.is-royal-armoury .is-armoury-wall-right { right:-9%; }
  .empire-courtyard-world.is-royal-armoury .is-armoury-racks { inset-inline:2%; }
  .empire-courtyard-world.is-royal-armoury .empire-courtyard-hotspot.is-royal-armoury { left:25%; }
}
@media (max-width: 560px) {
  .empire-place-route-unavailable { grid-template-columns:auto minmax(0,1fr); }
  .empire-place-route-unavailable .empire-place-access-badge { grid-column:2; justify-self:start; white-space:normal; }
  .empire-royal-armoury-shell > header { display:grid; grid-template-columns:minmax(0,1fr); align-items:flex-start; }
  .empire-royal-armoury-shell > header .empire-great-hall-read-only { justify-self:start; }
  .empire-royal-armoury-shell h1,
  .empire-royal-armoury-shell h4 { overflow-wrap:normal; word-break:normal; hyphens:auto; }
  .empire-royal-armoury-elements { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .empire-royal-armoury-elements li:last-child { grid-column:1 / -1; }
}
@media (prefers-reduced-motion: reduce) {
  .empire-courtyard-world.is-royal-armoury .is-armoury-window,
  .empire-courtyard-world.is-royal-armoury .is-armoury-racks { animation:none !important; }
}

/* Session 33: persistent server-owned combat state and loadout read model. */
.empire-combat-meta {
  grid-column: 1/-1;
  display: flex;
  min-width: 0;
  flex-wrap: wrap;
  align-items: center;
  gap: 7px 10px;
  padding: 9px 10px;
  border: 1px solid #b9a35e;
  border-radius: 10px;
  background: #fff9e8;
  color: #34485b;
  font-size: .76rem;
}
.empire-combat-meta span { display: inline-flex; min-width: 0; gap: 4px; align-items: baseline; overflow-wrap: anywhere; }
.empire-combat-meta small { flex: 1 1 100%; color: #5c6570; }
.empire-mission-result.is-ongoing { border-color: #496f9e; background: #edf4fb; }
.empire-mission-form input[type="radio"] { width: 20px; height: 20px; flex: 0 0 auto; }
@media (max-width: 560px) {
  .empire-combat-meta { display: grid; grid-template-columns: minmax(0,1fr); }
  .empire-combat-arena { grid-template-columns: minmax(0,1fr); }
  .empire-combat-versus { justify-self: center; }
  .empire-mission-form .button { width: 100%; min-height: 44px; white-space: normal; }
}


/* 2026-07-31 visual-audit repair: one readable destination layer, clear action lanes. */
.empire-courtyard-world .empire-movement-room > strong {
  display: none;
}
.empire-courtyard-world .empire-courtyard-hotspot strong {
  overflow-wrap: break-word;
  word-break: normal;
  hyphens: auto;
}
.empire-courtyard-world .empire-courtyard-hotspot.is-royal-armoury {
  right: 3%;
  bottom: 10%;
}
.empire-courtyard-world .empire-scene-context-actions {
  z-index: 48;
  right: auto;
  left: 50%;
  max-width: 44%;
  transform: translateX(-50%);
}
.empire-courtyard-world .empire-scene-context-actions strong {
  font-size: .75rem;
  overflow-wrap: normal;
  word-break: normal;
  hyphens: auto;
}

@media (max-width: 760px) {
  .student-area .student-empire-nav strong,
  .student-area .student-empire-nav-more > summary strong {
    overflow-wrap: normal;
    word-break: normal;
    hyphens: none;
    text-wrap: balance;
  }
}

@media (max-width: 640px) {
  .empire-courtyard-world .empire-courtyard-hotspots {
    inset: auto 12px 8px;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 7px;
  }
  [data-empire-language="af"].empire-courtyard-world .empire-courtyard-hotspots,
  [data-empire-language="zu"].empire-courtyard-world .empire-courtyard-hotspots {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  [data-empire-language="af"].empire-courtyard-world .empire-courtyard-hotspot,
  [data-empire-language="zu"].empire-courtyard-world .empire-courtyard-hotspot {
    grid-template-columns: minmax(0, 1fr);
  }
  [data-empire-language="af"].empire-courtyard-world .empire-courtyard-hotspot > span,
  [data-empire-language="zu"].empire-courtyard-world .empire-courtyard-hotspot > span {
    display: none;
  }
  .empire-courtyard-world .empire-courtyard-hotspot,
  .empire-courtyard-world .empire-courtyard-hotspot.is-courtyard,
  .empire-courtyard-world .empire-courtyard-hotspot.is-great-hall,
  .empire-courtyard-world .empire-courtyard-hotspot.is-library,
  .empire-courtyard-world .empire-courtyard-hotspot.is-royal-armoury {
    position: relative !important;
    inset: auto !important;
    min-width: 0;
    max-width: none;
    min-height: 52px;
    padding: 7px 8px;
    grid-template-columns: 30px minmax(0, 1fr);
  }
  .empire-courtyard-world .empire-courtyard-hotspot strong {
    font-size: .75rem;
    line-height: 1.15;
    overflow-wrap: normal;
    word-break: normal;
    hyphens: auto;
  }
  .empire-courtyard-world .empire-scene-context-actions {
    top: 8px;
    right: 8px;
    bottom: auto;
    left: 8px;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    max-width: none;
    transform: none;
  }
  .empire-courtyard-world .empire-scene-context-actions a {
    min-width: 0;
    min-height: 44px;
    justify-content: center;
    padding: 7px 8px;
  }
  .empire-courtyard-world .empire-scene-context-actions strong {
    font-size: .75rem;
    line-height: 1.15;
    overflow-wrap: normal;
    word-break: normal;
    hyphens: auto;
    text-align: center;
  }
}

/* END MY LEARNING EMPIRE COMPONENT LAYER */

/* Return context between the Royal Library and the ordinary lesson route. */
.student-library-journey-banner {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr) auto;
  align-items: center;
  gap: 14px;
  margin: 0 0 20px;
  padding: 14px 16px;
  border: 1px solid #d4ad4d;
  border-left: 6px solid #b88618;
  border-radius: 14px;
  background: linear-gradient(135deg, #fff9e7, #fff);
  box-shadow: 0 10px 24px rgba(73, 52, 10, .1);
}

.student-library-journey-banner > span {
  display: grid;
  width: 48px;
  height: 48px;
  place-items: center;
  border-radius: 50%;
  color: #f5d36f;
  background: #07172b;
  font-size: 1.25rem;
}

.student-library-journey-banner small,
.student-library-journey-banner strong { display: block; }
.student-library-journey-banner small { color: #8b640b; font-size: .7rem; font-weight: 900; letter-spacing: .05em; text-transform: uppercase; }
.student-library-journey-banner strong { margin-top: 3px; color: #07172b; }
.student-library-return-action { display: inline-flex; align-items: center; gap: 8px; }

@media (max-width: 700px) {
  .student-library-journey-banner { grid-template-columns: 42px minmax(0, 1fr); }
  .student-library-journey-banner > span { width: 42px; height: 42px; }
  .student-library-journey-banner .button { grid-column: 1 / -1; width: 100%; }
}

/* Castle Quest lessons: the learner's real course work advances one coherent kingdom. */
.student-shell > .student-castle-quest-hero:first-child {
  margin-top: 0;
}

.student-castle-quest-hero {
  position: relative;
  isolation: isolate;
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(280px, .6fr);
  grid-template-rows: auto minmax(170px, 1fr) auto;
  gap: 18px 24px;
  width: 100%;
  max-width: 100%;
  min-height: 570px;
  margin: 0 0 32px;
  padding: 28px;
  box-sizing: border-box;
  overflow: hidden;
  border: 1px solid #c99a31;
  border-bottom: 6px solid #b88618;
  border-radius: 22px;
  color: #fff;
  background: #07172b;
  box-shadow: 0 24px 55px rgba(7, 23, 43, .22);
}

.student-castle-quest-hero::after {
  content: none;
}

.student-castle-quest-scene,
.student-castle-quest-shade {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.student-castle-quest-scene {
  z-index: -3;
  object-fit: cover;
  object-position: center;
  transform: scale(1.015);
  transition: transform 900ms ease, filter 900ms ease;
}

.student-castle-quest-hero:hover .student-castle-quest-scene {
  transform: scale(1.035);
}

.student-castle-quest-motion { z-index: -2; opacity: 0; pointer-events: none; }
.student-castle-quest-motion[hidden] { display: none !important; }
.student-castle-quest-motion[data-motion-loaded="true"] { opacity: 1; }

.student-castle-quest-shade {
  z-index: -1;
  background:
    linear-gradient(90deg, rgba(3, 15, 29, .96) 0%, rgba(3, 15, 29, .83) 42%, rgba(3, 15, 29, .28) 72%, rgba(3, 15, 29, .5) 100%),
    linear-gradient(0deg, rgba(3, 15, 29, .9) 0%, transparent 60%);
}

.student-castle-quest-shade::after {
  position: absolute;
  inset: 0;
  opacity: .32;
  background: radial-gradient(circle at 74% 24%, rgba(250, 213, 116, .58), transparent 32%);
  content: "";
  pointer-events: none;
}

.student-castle-quest-hero.quest-clear-day .student-castle-quest-shade::after { background: radial-gradient(circle at 70% 15%, rgba(255,255,255,.62), transparent 28%); }
.student-castle-quest-hero.quest-garden-light .student-castle-quest-shade::after { background: radial-gradient(circle at 72% 70%, rgba(91,177,115,.48), transparent 32%); }
.student-castle-quest-hero.quest-rain-glow .student-castle-quest-shade::after { background: linear-gradient(115deg, transparent 30%, rgba(129,176,211,.28) 31%, transparent 32%, transparent 48%, rgba(129,176,211,.2) 49%, transparent 50%); background-size: 90px 90px; }
.student-castle-quest-hero.quest-sunset .student-castle-quest-shade::after { background: radial-gradient(circle at 73% 30%, rgba(255,158,59,.58), transparent 37%); }
.student-castle-quest-hero.quest-starlight .student-castle-quest-shade::after { background: radial-gradient(circle at 78% 22%, rgba(137,162,255,.34), transparent 36%); }

.student-castle-quest-copy {
  z-index: 1;
  grid-column: 1;
  grid-row: 1 / -1;
  align-self: end;
  max-width: 720px;
  padding: 12px 10px 6px;
}

.student-castle-quest-copy .eyebrow {
  margin: 0 0 9px;
  color: #f5d36f;
  font-size: .82rem;
  letter-spacing: .13em;
  text-transform: uppercase;
}

.student-quest-location {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 12px;
  padding: 7px 11px;
  border: 1px solid rgba(245, 211, 111, .58);
  border-radius: 999px;
  color: #fff6d5;
  background: rgba(4, 17, 31, .65);
  font-size: .82rem;
  font-weight: 900;
  backdrop-filter: blur(7px);
}

.student-quest-location span { color: #f5cf69; }

.student-castle-quest-copy h1 {
  grid-column: auto;
  margin: 0;
  max-width: 760px;
  color: #fff;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(2.55rem, 5.2vw, 5rem);
  line-height: .98;
  letter-spacing: -.035em;
  text-wrap: balance;
  text-shadow: 0 4px 25px rgba(0,0,0,.48);
}

.student-castle-quest-copy .student-lesson-objective {
  grid-column: auto;
  max-width: 680px;
  margin: 18px 0 0;
  color: rgba(255,255,255,.9);
  font-size: 1rem;
  line-height: 1.55;
}

.student-castle-quest-copy .student-lesson-objective strong { color: #f5d36f; }

.student-castle-quest-copy .student-lesson-meta {
  display: flex;
  grid-column: auto;
  grid-row: auto;
  justify-content: flex-start;
  margin-top: 18px;
}

.student-castle-quest-copy .student-lesson-meta span {
  padding: 7px 10px;
  border-color: rgba(245, 211, 111, .5);
  color: #fff;
  background: rgba(4, 17, 31, .77);
  box-shadow: none;
  backdrop-filter: blur(6px);
}

.student-castle-quest-copy .student-lesson-meta span:hover {
  filter: none;
  transform: none;
  box-shadow: none;
}

.student-quest-wallet {
  z-index: 1;
  display: grid;
  grid-column: 2;
  grid-row: 1;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-self: start;
  min-width: 0;
  overflow: hidden;
  border: 1px solid rgba(245, 211, 111, .58);
  border-radius: 16px;
  color: #fff;
  background: rgba(4, 17, 31, .82);
  box-shadow: 0 15px 36px rgba(0,0,0,.25);
  text-decoration: none;
  backdrop-filter: blur(10px);
}

.student-quest-wallet:hover,
.student-quest-wallet:focus-visible {
  color: #fff;
  border-color: #f5d36f;
  outline: 3px solid rgba(245,211,111,.28);
  outline-offset: 3px;
  text-decoration: none;
}

.student-quest-wallet-title {
  display: flex;
  grid-column: 1 / -1;
  align-items: center;
  gap: 8px;
  padding: 11px 13px;
  border-bottom: 1px solid rgba(255,255,255,.13);
  color: #f5d36f;
  font-size: .76rem;
  font-weight: 900;
  letter-spacing: .04em;
}

.student-quest-wallet > span:not(.student-quest-wallet-title) {
  display: grid;
  gap: 2px;
  padding: 10px 7px 12px;
  text-align: center;
}

.student-quest-wallet b { font-size: 1rem; }
.student-quest-wallet small { color: rgba(255,255,255,.65); font-size: .62rem; font-weight: 850; text-transform: uppercase; }
.student-quest-wallet > i { position: absolute; right: 0; bottom: 0; left: 0; height: 4px; background: rgba(255,255,255,.14); }
.student-quest-wallet > i::after { display: block; width: var(--castle-progress); height: 100%; background: linear-gradient(90deg,#b88618,#f5d36f); content: ""; }

.student-quest-build-goal {
  z-index: 1;
  display: grid;
  grid-column: 2;
  grid-row: 3;
  grid-template-columns: 46px minmax(0, 1fr);
  align-self: end;
  gap: 12px;
  min-width: 0;
  padding: 15px;
  border: 1px solid rgba(245, 211, 111, .56);
  border-radius: 16px;
  color: #fff;
  background: rgba(4, 17, 31, .82);
  box-shadow: 0 15px 36px rgba(0,0,0,.23);
  backdrop-filter: blur(10px);
}

.student-quest-build-goal > span {
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  border: 1px solid rgba(245,211,111,.64);
  border-radius: 50%;
  color: #f5d36f;
  background: rgba(184,134,24,.17);
  font-size: 1.4rem;
}

.student-quest-build-goal div { display: grid; gap: 3px; min-width: 0; }
.student-quest-build-goal small { color: #f5d36f; font-size: .68rem; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
.student-quest-build-goal strong { color: #fff; font-size: 1rem; }
.student-quest-build-goal p { margin: 0; color: rgba(255,255,255,.72); font-size: .76rem; line-height: 1.4; }

.student-quest-progress-card {
  display: grid;
  gap: 14px;
  padding: 20px 22px;
  overflow: hidden;
  border: 1px solid #d2ae53;
  border-radius: 18px;
  color: #fff;
  background:
    radial-gradient(circle at 94% 15%, rgba(245, 211, 111, .2), transparent 23%),
    linear-gradient(125deg, #07172b, #102f4e);
  box-shadow: 0 14px 30px rgba(7,23,43,.12);
}

.student-quest-progress-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 18px;
}

.student-quest-progress-heading .eyebrow { margin: 0 0 3px; color: #f5d36f; }
.student-quest-progress-heading h2 { margin: 0; color: #fff; font-size: clamp(1.1rem,2vw,1.45rem); }
.student-quest-progress-heading > strong { flex: 0 0 auto; color: #f5d36f; font-size: .9rem; }

.student-quest-progress-track {
  position: relative;
  height: 15px;
  margin-right: 20px;
  border: 1px solid rgba(255,255,255,.2);
  border-radius: 999px;
  background: rgba(0,0,0,.25);
}

.student-quest-progress-track i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg,#b88618,#f5d36f);
  box-shadow: 0 0 18px rgba(245,211,111,.46);
  transition: width 500ms ease;
}

.student-quest-progress-track span {
  position: absolute;
  top: 50%;
  right: -24px;
  color: #f5d36f;
  font-size: 1.35rem;
  transform: translateY(-54%);
}

.student-quest-reward-preview {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border: 1px solid rgba(245,211,111,.25);
  border-radius: 12px;
  background: rgba(255,255,255,.07);
}

.student-quest-reward-preview > span { color: #f5d36f; font-size: 1.1rem; }
.student-quest-reward-preview p { margin: 0; color: rgba(255,255,255,.77); font-size: .78rem; line-height: 1.45; }
.student-quest-reward-preview strong { display: block; color: #fff; font-size: .82rem; }
.student-quest-safety-note { display: flex; align-items: flex-start; gap: 8px; margin: 0; color: rgba(255,255,255,.72); font-size: .76rem; font-weight: 750; }
.student-quest-safety-note span { color: #f5d36f; }

.student-quiz-panel .student-info-block {
  border-color: #e2c16b;
  border-left-width: 6px;
  border-radius: 14px;
  background: #fff9e9;
}

.student-quiz-panel .student-question-card {
  position: relative;
  gap: 20px;
  padding: 30px 30px 30px 38px;
  border: 1px solid #d7b65c;
  border-radius: 20px;
  background:
    linear-gradient(90deg, rgba(184,134,24,.1) 0, rgba(184,134,24,.1) 8px, transparent 8px),
    radial-gradient(circle at 93% 6%, rgba(184,134,24,.08), transparent 24%),
    #fffdf7;
  box-shadow: 0 18px 42px rgba(73,52,10,.12);
}

.student-quiz-panel .student-question-card::before {
  position: absolute;
  top: 18px;
  bottom: 18px;
  left: 17px;
  width: 1px;
  background: linear-gradient(transparent,#d7b65c 12%,#d7b65c 88%,transparent);
  content: "";
}

.student-question-step {
  color: #6f4c08;
  border: 1px solid #ead28b;
  background: #fff3c8;
  letter-spacing: .02em;
}

.student-question-answer-divider::after { background: #fffdf7; }

.student-answer-options label {
  border-color: #ddd2b8;
  border-radius: 12px;
  background: rgba(255,255,255,.82);
  transition: border-color 150ms ease, background 150ms ease, transform 150ms ease, box-shadow 150ms ease;
}

.student-answer-options label:hover,
.student-answer-options label:focus-within {
  border-color: #b88618;
  background: #fff7dc;
  box-shadow: 0 7px 18px rgba(184,134,24,.12);
  transform: translateY(-1px);
}

.student-quest-answer-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  justify-self: start;
  min-width: 210px;
}

.student-castle-quest-result {
  position: relative;
  overflow: hidden;
  padding: 28px;
  border: 1px solid #d7b65c;
  border-radius: 20px;
  background: #fffdf7;
  box-shadow: 0 18px 42px rgba(73,52,10,.12);
}

.student-castle-quest-result::after {
  position: absolute;
  top: -78px;
  right: -65px;
  width: 190px;
  height: 190px;
  border: 1px solid rgba(184,134,24,.25);
  border-radius: 50%;
  background: radial-gradient(circle,rgba(245,211,111,.25),transparent 68%);
  content: "";
  pointer-events: none;
}

.student-castle-quest-result.is-victory { border-top: 7px solid #1d8453; background: linear-gradient(135deg,#f3fff7,#fffdf7 60%); }
.student-castle-quest-result.is-regroup { border-top: 7px solid #c97920; }
.student-castle-quest-result.is-ready { border-top: 7px solid #b88618; }

.student-quest-gate-state {
  display: grid;
  justify-items: center;
  gap: 8px;
  max-width: 760px;
  margin: 0 auto;
  padding: 42px 28px;
  border: 1px solid #d7b65c;
  border-radius: 20px;
  text-align: center;
  background: linear-gradient(145deg,#fffdf7,#fff5d7);
}

.student-quest-gate-icon {
  display: grid;
  place-items: center;
  width: 74px;
  height: 74px;
  margin-bottom: 5px;
  border: 2px solid #b88618;
  border-radius: 50%;
  color: #7b5407;
  background: #fff2c3;
  font-size: 2rem;
}

.student-kingdom-map-term .student-term-heading {
  grid-template-columns: 112px minmax(0, 1fr) auto auto;
  min-height: 88px;
}

.student-term-scene {
  display: block;
  width: 112px;
  height: 64px;
  border: 1px solid #d3ae54;
  border-radius: 11px;
  object-fit: cover;
  box-shadow: 0 7px 16px rgba(7,23,43,.14);
}

.student-term-copy small { color: var(--muted); font-size: .72rem; font-weight: 800; }
.student-week-title > div { display: grid; gap: 3px; }
.student-week-location { display: flex; align-items: center; gap: 5px; color: #9a6b08; font-size: .73rem; font-weight: 850; }
.student-week-location span { color: #b88618; font-size: .82rem; }
.student-course-next-location { display: inline-flex; align-items: center; gap: 7px; margin: 4px 0 6px; color: #9a6b08 !important; font-size: .82rem; font-weight: 900; }

.student-lesson-row .student-lesson-quest-label {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  gap: 6px;
  min-height: 0;
  margin: 0;
  padding: 0;
  border: 0;
  color: #9a6b08;
  background: transparent;
  font-size: .67rem;
  font-weight: 950;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.student-lesson-row .student-lesson-quest-label span { color: currentColor; }
.student-lesson-row.state-completed .student-lesson-quest-label { color: #16714b; }
.student-lesson-row.state-available .student-lesson-quest-label,
.student-lesson-row.state-in_progress .student-lesson-quest-label { color: #0c5d98; }

@media (max-width: 820px) {
  .student-castle-quest-hero {
    grid-template-columns: 1fr;
    grid-template-rows: auto auto auto;
    align-content: end;
    min-height: 760px;
    padding: 22px;
  }

  .student-castle-quest-scene { object-position: 65% center; }
  .student-castle-quest-shade { background: linear-gradient(0deg,rgba(3,15,29,.97) 0%,rgba(3,15,29,.84) 48%,rgba(3,15,29,.18) 78%,rgba(3,15,29,.12) 100%); }
  .student-castle-quest-copy { grid-column: 1; grid-row: 1; align-self: end; max-width: none; padding: 0; }
  .student-quest-wallet { grid-column: 1; grid-row: 2; }
  .student-quest-build-goal { grid-column: 1; grid-row: 3; }
  .student-castle-quest-copy h1 { font-size: clamp(2.55rem,9vw,4.25rem); }
  .student-kingdom-map-term .student-term-heading { grid-template-columns: 88px minmax(0,1fr) auto; }
  .student-term-scene { width: 88px; height: 58px; }
  .student-term-count { display: none; }
}

@media (max-width: 640px) {
  .student-shell > .student-castle-quest-hero:first-child { margin-top: 0; }

  .student-castle-quest-hero {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    min-height: 790px;
    margin: 0 0 24px;
    padding: 18px;
    border-radius: 17px;
    box-sizing: border-box;
  }

  .student-castle-quest-copy .eyebrow { font-size: .75rem; }
  .student-quest-location { font-size: .74rem; }
  .student-castle-quest-copy h1 { font-size: clamp(2.35rem,11.5vw,3.4rem); }
  .student-castle-quest-copy .student-lesson-objective { font-size: .9rem; }
  .student-castle-quest-copy .student-lesson-meta { justify-content: flex-start; }
  .student-castle-quest-copy .student-lesson-meta span { font-size: .75rem; white-space: normal; }
  .student-quest-wallet-title { font-size: .75rem; }
  .student-quest-wallet b { font-size: .9rem; }
  .student-quest-build-goal { grid-template-columns: 40px minmax(0,1fr); padding: 12px; }
  .student-quest-build-goal > span { width: 40px; height: 40px; }
  .student-quest-build-goal p { font-size: .78rem; }

  .student-quest-progress-card { padding: 18px; border-radius: 15px; }
  .student-quest-progress-heading { align-items: flex-start; flex-direction: column; gap: 8px; }
  .student-quest-reward-preview { align-items: flex-start; }
  .student-quiz-panel .student-question-card { min-width: 0; padding: 22px 18px 22px 26px; border-radius: 15px; }
  .student-quiz-panel .student-question-card::before { left: 12px; }
  .student-quest-answer-button { width: 100%; min-width: 0; }
  .student-castle-quest-result { padding: 21px 18px; border-radius: 15px; }
  .student-kingdom-map-term .student-term-heading { grid-template-columns: 68px minmax(0,1fr) 34px; gap: 10px; padding: 12px; }
  .student-term-scene { width: 68px; height: 54px; }
  .student-term-copy > span { font-size: .75rem; }
  .student-term-heading strong { font-size: .92rem; }
  .student-term-copy small { font-size: .75rem; }
  .student-week-card { padding: 12px; }
}

@media (prefers-reduced-motion: reduce) {
  .student-castle-quest-scene,
  .student-quest-progress-track i,
  .student-answer-options label { transition: none; }
  .student-castle-quest-motion { display: none !important; }
  .student-castle-quest-hero:hover .student-castle-quest-scene { transform: scale(1.015); }
}

/* Learner-controlled decorative motion preference. Hidden until the controller is available. */
.student-motion-preference {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 44px;
  margin-top: 12px;
  padding: 8px 13px;
  border: 1px solid rgba(255, 255, 255, .62);
  border-radius: 999px;
  color: #fff;
  background: rgba(7, 23, 43, .72);
  box-shadow: 0 8px 22px rgba(4, 15, 28, .2);
  font: inherit;
  font-size: .78rem;
  font-weight: 850;
  cursor: pointer;
  backdrop-filter: blur(8px);
  transition: background-color 160ms ease, border-color 160ms ease, color 160ms ease, transform 160ms ease;
}
.student-motion-preference[hidden] { display: none !important; }
.student-motion-preference > span:first-child { font-size: 1.05rem; line-height: 1; }
.student-motion-preference:hover { transform: translateY(-1px); border-color: #f4d66c; background: rgba(7, 23, 43, .92); }
.student-motion-preference:focus-visible { outline: 4px solid #8cd1ff; outline-offset: 3px; }
.student-motion-preference[aria-pressed="true"] { border-color: rgba(255, 229, 146, .85); color: #07172b; background: #fff4c7; }
.student-castle-quest-copy .student-motion-preference { justify-self: start; }

@media (max-width: 520px) {
  .student-motion-preference { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  .student-motion-preference { transition: none; }
  .student-motion-preference:hover { transform: none; }
}


/* Student experience quality floor for learners aged 10–15. */
.student-motion-preference,
.student-castle-quest-copy .eyebrow,
.student-quest-location,
.student-castle-quest-copy .student-lesson-meta span,
.student-quest-wallet-title,
.student-quest-build-goal small,
.student-quest-build-goal p,
.student-quest-reward-preview p,
.student-quest-reward-preview strong,
.student-quest-safety-note,
.student-term-copy > span,
.student-term-copy small,
.student-week-location,
.student-course-next-location,
.student-written-answer small {
  font-size: max(.75rem, 12px);
  line-height: 1.45;
}

.student-area :where(a, button, input, textarea, select, summary):focus-visible {
  outline: 3px solid #77bdf0;
  outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
  .student-skip-link { transition: none; }
}

/* Royal Command Hall admin system */
.admin-area {
  min-height: 100vh;
  background:
    radial-gradient(circle at 82% 0%, rgba(210, 169, 67, .09), transparent 28rem),
    #f2f0ea;
}

.admin-skip-link {
  position: fixed;
  z-index: 100;
  top: 8px;
  left: 12px;
  transform: translateY(-150%);
  padding: 10px 14px;
  border-radius: 8px;
  background: #fff;
  color: #07172b;
  font-weight: 850;
  box-shadow: 0 8px 26px rgba(0, 0, 0, .25);
}

.admin-skip-link:focus { transform: translateY(0); }

.admin-header {
  z-index: 50;
  border-bottom: 1px solid rgba(232, 200, 102, .28);
  background:
    linear-gradient(90deg, rgba(255, 255, 255, .025) 1px, transparent 1px) 0 0 / 46px 100%,
    #061528;
  box-shadow: 0 9px 28px rgba(3, 13, 26, .22);
}

.admin-bar {
  width: min(calc(100% - 32px), 1520px);
  min-height: 82px;
}

.admin-brand img {
  width: 126px;
  border: 1px solid rgba(236, 203, 105, .25);
  box-shadow: 0 9px 25px rgba(0, 0, 0, .3);
}

.admin-current-section {
  display: grid;
  gap: 2px;
  padding-left: 20px;
  border-left: 1px solid rgba(255, 255, 255, .16);
}

.admin-current-section span,
.admin-account small {
  display: block;
  color: #b8c3cf;
  font-size: .66rem;
  font-weight: 850;
  letter-spacing: .09em;
  text-transform: uppercase;
}

.admin-current-section strong {
  color: #f2d270;
  font: 700 1.12rem/1.15 Georgia, serif;
}

.admin-account { margin-left: auto; }
.admin-account > span { display: grid; gap: 2px; color: #fff; font-weight: 850; }
.admin-account small { font-size: .6rem; }

.admin-layout {
  display: grid;
  grid-template-columns: 272px minmax(0, 1fr);
  align-items: start;
  width: min(calc(100% - 32px), 1520px);
  margin: 0 auto;
}

.admin-sidebar {
  position: sticky;
  min-width: 0;
  top: 98px;
  overflow-y: auto;
  max-height: calc(100vh - 114px);
  margin-top: 24px;
  padding: 16px 12px 20px;
  border: 1px solid #263b50;
  border-radius: 18px;
  background:
    linear-gradient(90deg, rgba(255, 255, 255, .025) 1px, transparent 1px) 0 0 / 38px 100%,
    linear-gradient(155deg, #071a2e, #0b2740);
  box-shadow: 0 18px 42px rgba(6, 21, 39, .16);
  scrollbar-width: thin;
  scrollbar-color: #8f7532 transparent;
}

.admin-sidebar .admin-nav-menu { margin: 0; }
.admin-sidebar .admin-nav-menu > summary { display: none; }
.admin-sidebar .admin-nav-menu:not([open]) > .admin-nav { display: grid; }

.admin-sidebar .admin-nav {
  display: grid;
  gap: 7px;
  width: 100%;
}

.admin-nav-group {
  display: grid;
  gap: 3px;
  padding: 10px;
  border: 1px solid transparent;
  border-radius: 12px;
}

.admin-nav-group.is-current {
  border-color: rgba(231, 197, 95, .25);
  background: rgba(255, 255, 255, .045);
}

.admin-nav-group h2 {
  margin: 0 7px 5px;
  color: #d8bb64;
  font-size: .62rem;
  font-weight: 900;
  letter-spacing: .095em;
  text-transform: uppercase;
}

.admin-sidebar .admin-nav a {
  display: grid;
  gap: 2px;
  padding: 9px 10px;
  border: 1px solid transparent;
  border-radius: 8px;
  color: #edf2f6;
}

.admin-sidebar .admin-nav a span { font-size: .86rem; font-weight: 850; }
.admin-sidebar .admin-nav a small { color: #9fadb9; font-size: .68rem; line-height: 1.25; }
.admin-sidebar .admin-nav a:hover,
.admin-sidebar .admin-nav a:focus-visible {
  border-color: rgba(231, 197, 95, .25);
  background: rgba(255, 255, 255, .07);
}
.admin-sidebar .admin-nav a[aria-current="page"] {
  border-color: #cfaa45;
  background: linear-gradient(135deg, #f0cf69, #c6972c);
  color: #07172b;
  box-shadow: none;
}
.admin-sidebar .admin-nav a[aria-current="page"] small { color: #4e3a0c; }

.admin-shell {
  width: 100%;
  min-width: 0;
  max-width: none;
  margin: 0;
  padding: 30px 0 78px 30px;
}

.admin-area :where(a, button, input, textarea, select, summary):focus-visible {
  outline: 3px solid #3f9fda;
  outline-offset: 3px;
}

.command-hall-hero,
.seo-watchtower-hero {
  position: relative;
  display: grid;
  overflow: hidden;
  min-height: 350px;
  margin-bottom: 24px;
  border: 1px solid #253e56;
  border-radius: 24px;
  background: #06162a;
  color: #fff;
  box-shadow: 0 18px 48px rgba(7, 23, 43, .2);
}

.command-hall-hero > img,
.command-hall-shade,
.seo-watchtower-hero > img,
.seo-watchtower-shade {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.command-hall-hero > img { object-fit: cover; object-position: 50% 52%; }
.command-hall-shade { background: linear-gradient(90deg, rgba(3, 15, 29, .97), rgba(5, 21, 39, .82) 50%, rgba(5, 21, 39, .27)); }
.command-hall-copy,
.seo-watchtower-copy { position: relative; z-index: 1; align-self: center; width: min(710px, 72%); padding: clamp(30px, 5vw, 58px); }
.command-hall-copy .eyebrow,
.seo-watchtower-copy .eyebrow { color: #e8c962; }
.command-hall-copy h1,
.seo-watchtower-copy h1 { margin: 7px 0 14px; color: #fff; font: 700 clamp(2.7rem, 6vw, 5.5rem)/.92 Georgia, serif; letter-spacing: -.045em; }
.command-hall-copy > p:last-of-type,
.seo-watchtower-copy > p { max-width: 650px; color: #d5e0e9; }
.command-hall-action { position: absolute; z-index: 2; right: 30px; bottom: 30px; }

.command-status-row,
.seo-hero-status { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 22px; }
.status-seal,
.seo-hero-status span {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 36px;
  padding: 7px 11px;
  border: 1px solid rgba(255, 255, 255, .15);
  border-radius: 999px;
  background: rgba(2, 12, 23, .62);
  color: #e6edf2;
  font-size: .76rem;
  font-weight: 820;
  backdrop-filter: blur(5px);
}
.status-seal b { width: 9px; height: 9px; border-radius: 50%; background: #d09d2f; box-shadow: 0 0 0 4px rgba(208, 157, 47, .13); }
.status-seal-locked { border-color: rgba(80, 203, 138, .48); background: rgba(12, 68, 43, .78); color: #baf4d1; }
.status-seal-locked b { display: grid; place-items: center; width: 18px; height: 18px; background: #50cb8a; color: #052116; font-size: .72rem; font-weight: 950; box-shadow: 0 0 0 4px rgba(80, 203, 138, .16); }
.status-seal-healthy b { background: #50cb8a; box-shadow: 0 0 0 4px rgba(80, 203, 138, .13); }
.status-seal-attention b { background: #ef6158; box-shadow: 0 0 0 4px rgba(239, 97, 88, .15); }
.status-seal-gold { border-color: rgba(232, 201, 98, .4); color: #f2d77d; }
.status-seal-link { text-decoration: none; transition: border-color .18s ease, background .18s ease, color .18s ease, transform .18s ease; }
.status-seal-link > span { margin-left: 2px; color: #f0d275; font-size: .95rem; line-height: 1; transition: transform .18s ease; }
.status-seal-link:hover,
.status-seal-link:focus-visible { transform: translateY(-2px); border-color: rgba(240, 210, 117, .72); background: rgba(8, 27, 45, .94); color: #fff; text-decoration: none; outline: 2px solid #f0d275; outline-offset: 3px; }
.status-seal-link:hover > span,
.status-seal-link:focus-visible > span { transform: translateX(3px); }

.launch-remembrance { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: clamp(24px, 5vw, 54px); align-items: center; margin: 30px 0; padding: clamp(26px, 4vw, 44px); border: 1px solid #c8a13c; border-radius: 20px; background: radial-gradient(circle at 88% 12%, rgba(240, 210, 117, .25), transparent 30%), linear-gradient(145deg, #fffdf7, #fff6d9); box-shadow: 0 18px 42px rgba(7, 23, 43, .09); }
.launch-remembrance-copy { max-width: 850px; }
.launch-remembrance-copy .eyebrow { color: #755817; }
.launch-remembrance-copy h2 { margin: 5px 0 12px; color: #07172b; font: 700 clamp(2rem, 4vw, 3.35rem)/1 Georgia, serif; }
.launch-remembrance-copy p { margin: 0; color: #4d5b68; font-size: 1rem; line-height: 1.65; }
.launch-remembrance-copy strong { color: #725513; }
.launch-remembrance-copy .launch-remembrance-note { margin-top: 10px; color: #7a6530; font-size: .78rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.launch-remembrance-copy .launch-remembrance-note + .launch-remembrance-note { margin-top: 3px; font-size: .72rem; text-transform: none; }
.launch-remembrance-seal { display: grid; place-items: center; align-content: center; width: clamp(150px, 18vw, 190px); aspect-ratio: 1; padding: 20px; border: 3px double #e4c45d; border-radius: 50%; background: #07172b; color: #f1d573; text-align: center; box-shadow: inset 0 0 0 7px rgba(231, 197, 95, .08), 0 13px 30px rgba(7, 23, 43, .18); }
.launch-remembrance-seal span { font: 700 clamp(3rem, 6vw, 4.7rem)/.8 Georgia, serif; }
.launch-remembrance-seal small { margin-top: 9px; font-size: .78rem; font-weight: 900; letter-spacing: .1em; text-transform: uppercase; }
.launch-remembrance-seal b { margin-top: 9px; padding-top: 9px; border-top: 1px solid rgba(241, 213, 115, .45); font-size: .72rem; letter-spacing: .06em; }

.command-priorities,
.command-districts,
.seo-plain-summary { margin: 30px 0; }
.command-section-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; margin-bottom: 16px; }
.command-section-heading > div { max-width: 830px; }
.command-section-heading .eyebrow { color: #755817; }
.command-section-heading h2 { margin: 4px 0 7px; color: #07172b; font: 700 clamp(1.8rem, 3vw, 2.65rem)/1 Georgia, serif; }
.command-section-heading p:last-child { margin: 0; color: #5e6c79; }
.command-count-seal { display: grid; place-items: center; min-width: 78px; min-height: 78px; padding: 10px; border: 2px solid #d1aa45; border-radius: 50%; background: #07172b; color: #f0d275; font: 700 .9rem/1 Georgia, serif; text-align: center; box-shadow: inset 0 0 0 5px rgba(231, 197, 95, .08); }

.command-priority-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; }
.command-priority-grid a { position: relative; display: grid; min-height: 156px; padding: 18px; border: 1px solid #d2c8b6; border-top: 5px solid #c89d38; border-radius: 14px; background: #fffdf8; color: #07172b; box-shadow: 0 10px 28px rgba(7, 23, 43, .055); transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
.command-priority-grid a::before { position: absolute; top: -5px; right: 18px; width: 22px; height: 18px; content: ''; background: #c89d38; clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 68%, 0 100%); }
.command-priority-grid a:hover,
.command-priority-grid a:focus-visible { transform: translateY(-3px); border-color: #b98b22; box-shadow: 0 15px 32px rgba(7, 23, 43, .11); text-decoration: none; }
.command-priority-grid span { color: #536170; font-size: .78rem; font-weight: 850; }
.command-priority-grid strong { align-self: center; color: #07172b; font: 700 2.7rem/1 Georgia, serif; }
.command-priority-grid small { align-self: end; color: #7a6530; font-weight: 750; }

.command-district-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 15px; }
.district-card { position: relative; display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 17px; overflow: hidden; min-height: 210px; padding: 24px; border: 1px solid #d4c8b3; border-radius: 17px; background: linear-gradient(145deg, #fff, #fffcf4); box-shadow: 0 12px 30px rgba(7, 23, 43, .055); }
.district-card::before { position: absolute; inset: 0 0 auto; height: 12px; content: ''; background: repeating-linear-gradient(90deg, #b6a483 0 34px, #d1c2a5 34px 36px, #998568 36px 70px, #d1c2a5 70px 72px); opacity: .72; }
.district-card > div:last-child > span { color: #8a681a; font-size: .68rem; font-weight: 900; letter-spacing: .085em; text-transform: uppercase; }
.district-card h3 { margin: 4px 0 8px; color: #07172b; font: 700 1.45rem/1.05 Georgia, serif; }
.district-card p { margin: 0; color: #5e6c79; font-size: .88rem; line-height: 1.5; }
.district-crest { display: grid; place-items: center; width: 50px; height: 58px; margin-top: 2px; border: 2px solid #d1aa45; border-radius: 24px 24px 8px 8px; background: #07172b; color: #f0d275; font: 700 1.2rem/1 Georgia, serif; box-shadow: inset 0 0 0 4px rgba(231, 197, 95, .08); }
.district-crest-icon { width: 35px; height: 35px; overflow: visible; fill: none; stroke: currentColor; stroke-width: 3.5; stroke-linecap: round; stroke-linejoin: round; }
.district-crest .icon-watchtower { width: 37px; height: 37px; }
.district-crest .icon-castle-wall { width: 38px; height: 38px; stroke-width: 3.2; }
.district-links { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 16px; }
.district-links a,
.district-card > div:last-child > a { display: inline-flex; align-items: center; gap: 7px; padding: 8px 10px; border: 1px solid #d5dce3; border-radius: 8px; background: #f5f7f8; color: #19324a; font-size: .76rem; font-weight: 850; text-decoration: none; }
.district-links a:hover,
.district-links a:focus-visible { border-color: #b98b22; background: #fff7dd; }
.district-links b { display: inline-grid; min-width: 21px; min-height: 21px; place-items: center; padding: 0 5px; border-radius: 999px; background: #07172b; color: #f0d275; font-size: .67rem; }
.district-card[aria-current="page"] { border-color: #c7a244; }

.command-seo-preview { display: grid; grid-template-columns: minmax(0, .8fr) minmax(460px, 1.2fr); gap: 30px; align-items: center; margin: 30px 0 38px; padding: clamp(25px, 4vw, 42px); border: 1px solid #2d4a63; border-radius: 20px; background: radial-gradient(circle at 92% 0%, rgba(197, 152, 49, .19), transparent 33%), linear-gradient(145deg, #06162a, #0a263e); color: #fff; box-shadow: 0 18px 45px rgba(7, 23, 43, .16); }
.command-seo-copy .eyebrow { color: #e7c55f; }
.command-seo-copy h2 { margin: 5px 0 10px; color: #fff; font: 700 clamp(1.8rem, 3.2vw, 2.8rem)/1 Georgia, serif; }
.command-seo-copy p { color: #c7d5e1; }
.command-mini-wall { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; align-items: end; }
.command-mini-wall .brick { display: grid; align-content: space-between; min-height: 76px; padding: 12px; border: 1px solid #596979; border-radius: 6px; background: linear-gradient(145deg, #526170, #344555); color: #d8e0e7; box-shadow: inset 0 -5px 0 rgba(0, 0, 0, .15); }
.command-mini-wall .brick:nth-child(even) { transform: translateY(9px); }
.command-mini-wall .brick-complete { border-color: #e3bf54; background: linear-gradient(145deg, #e0ba50, #9f7119); color: #07172b; }
.command-mini-wall .brick-active { border-color: #f1d470; background: #fff4ce; color: #58400b; box-shadow: 0 0 0 4px rgba(231, 197, 95, .11); }
.command-mini-wall .brick b { min-height: 16px; font-size: .75rem; }
.command-mini-wall .brick small { font-size: .6rem; font-weight: 800; }

.seo-watchtower-hero { min-height: 410px; }
.seo-watchtower-hero > img { object-fit: cover; object-position: 67% 50%; }
.seo-watchtower-shade { background: linear-gradient(90deg, rgba(2, 12, 25, .98), rgba(4, 19, 37, .84) 52%, rgba(4, 19, 37, .16)); }
.seo-watchtower-copy { width: min(790px, 70%); }
.seo-watchtower-copy h1 { font-size: clamp(3rem, 6.4vw, 5.7rem); }
.seo-hero-status span { display: grid; gap: 1px; align-items: initial; min-width: 145px; border-radius: 10px; }
.seo-hero-status b { color: #f0d276; font-family: Georgia, serif; font-size: .98rem; }

.seo-status-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; margin: 0 0 30px; }
.seo-status-card { min-width: 0; padding: 18px; border: 1px solid #d2c9ba; border-top: 5px solid #84919e; border-radius: 13px; background: #fff; box-shadow: 0 9px 24px rgba(7, 23, 43, .05); }
.seo-status-card.is-healthy { border-top-color: #339c68; }
.seo-status-card.is-attention { border-top-color: #d19825; background: #fffaf0; }
.seo-status-card span,
.seo-status-card small { display: block; color: #62707d; }
.seo-status-card span { font-size: .68rem; font-weight: 900; letter-spacing: .07em; text-transform: uppercase; }
.seo-status-card strong { display: block; overflow-wrap: anywhere; margin: 8px 0 5px; color: #07172b; font: 700 1.35rem/1.1 Georgia, serif; }
.seo-status-card small { font-size: .75rem; line-height: 1.4; }

.seo-summary-columns { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.seo-summary-columns article { position: relative; min-height: 235px; padding: 25px; border: 1px solid #d4c8b3; border-radius: 16px; background: #fff; box-shadow: 0 11px 28px rgba(7, 23, 43, .055); }
.seo-summary-columns .seo-summary-active { border-color: #c8a038; background: #fffaf0; }
.seo-summary-icon { display: grid; place-items: center; width: 42px; height: 42px; margin-bottom: 18px; border-radius: 50%; background: #07172b; color: #efd06f; font-weight: 900; }
.seo-summary-columns .eyebrow { color: #7c611e; }
.seo-summary-columns h3 { margin: 4px 0 9px; color: #07172b; font: 700 1.4rem/1.1 Georgia, serif; }
.seo-summary-columns p:not(.eyebrow) { color: #5d6b79; }
.seo-summary-date { display: inline-block; margin-top: 12px; padding: 7px 10px; border-radius: 999px; background: #07172b; color: #efd06f; font-size: .78rem; }

.seo-roadmap { margin: 34px 0; padding: clamp(25px, 4vw, 42px); border: 1px solid #2e4d67; border-radius: 22px; background: radial-gradient(circle at 92% 0%, rgba(221, 177, 63, .16), transparent 29%), linear-gradient(145deg, #06162a, #0b2740); color: #fff; box-shadow: 0 20px 52px rgba(7, 23, 43, .2); }
.seo-roadmap-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 28px; }
.seo-roadmap-heading > div:first-child { max-width: 800px; }
.seo-roadmap-heading .eyebrow { color: #e7c55f; }
.seo-roadmap-heading h2 { margin: 5px 0 10px; color: #fff; font: 700 clamp(2rem, 4vw, 3.3rem)/1 Georgia, serif; }
.seo-roadmap-heading p:last-child { margin: 0; color: #bdccd8; }
.seo-roadmap-numbers { display: grid; grid-template-columns: repeat(2, minmax(115px, 1fr)); gap: 8px; flex: 0 0 auto; }
.seo-roadmap-numbers span { display: grid; gap: 3px; padding: 13px; border: 1px solid rgba(255, 255, 255, .12); border-radius: 10px; background: rgba(255, 255, 255, .055); color: #b8c6d2; font-size: .7rem; font-weight: 800; }
.seo-roadmap-numbers strong { color: #f0d275; font: 700 1.55rem/1 Georgia, serif; }

.seo-work-progress { margin: 30px 0; }
.seo-progress-legend { display: flex; justify-content: space-between; margin-bottom: 8px; color: #9fb0bf; font-size: .72rem; font-weight: 800; }
.seo-castle-track { position: relative; height: 68px; border: 1px solid #657686; border-radius: 8px; background: repeating-linear-gradient(90deg, #536271 0 47px, #263747 47px 50px), repeating-linear-gradient(0deg, transparent 0 30px, #263747 30px 34px), #536271; box-shadow: inset 0 0 22px rgba(0, 0, 0, .3); }
.seo-track-complete { position: absolute; inset: 0 auto 0 0; width: var(--seo-work-progress); border-radius: 7px 0 0 7px; background: repeating-linear-gradient(90deg, #c79b34 0 47px, #765412 47px 50px), repeating-linear-gradient(0deg, transparent 0 30px, #765412 30px 34px), #c79b34; transition: width 1.1s cubic-bezier(.2, .75, .25, 1); }
.seo-moving-brick { position: absolute; z-index: 2; top: 17px; left: var(--seo-work-progress); transform: translateX(-50%); display: grid; place-items: center; width: 68px; height: 36px; border: 2px solid #ffe496; border-radius: 5px; background: linear-gradient(145deg, #f0ca62, #b7831c); color: #07172b; font-size: .67rem; font-weight: 900; text-transform: uppercase; box-shadow: 0 7px 18px rgba(0, 0, 0, .34); transition: left 1.15s cubic-bezier(.2, .75, .25, 1), transform .3s ease; }
.seo-roadmap:not(.is-settled) .seo-track-complete { width: 0; }
.seo-roadmap:not(.is-settled) .seo-moving-brick { left: 0; transform: translateX(0) translateY(-8px); }
.seo-today-marker { position: absolute; z-index: 3; top: -20px; left: var(--seo-calendar-progress); transform: translateX(-50%); color: #d6e1e9; font-size: .65rem; font-weight: 850; }
.seo-today-marker::after { display: block; width: 2px; height: 82px; margin: 3px auto 0; content: ''; background: #fff; box-shadow: 0 0 0 2px rgba(255, 255, 255, .1); opacity: .68; }
.seo-progress-text { margin: 12px 0 0; color: #afbecb; font-size: .78rem; }

.seo-brick-roadmap { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 9px; margin: 0; padding: 0; list-style: none; }
.seo-roadmap-phase { position: relative; min-width: 0; padding: 18px 15px 16px; border: 1px solid rgba(255, 255, 255, .13); border-top: 5px solid #758493; border-radius: 11px; background: rgba(255, 255, 255, .05); }
.seo-roadmap-phase.phase-complete { border-color: rgba(231, 197, 95, .65); border-top-color: #e3bf54; background: rgba(198, 153, 47, .15); }
.seo-roadmap-phase.phase-active { border-color: #e3bf54; border-top-color: #f5d977; background: #fff6d7; color: #07172b; box-shadow: 0 0 0 4px rgba(231, 197, 95, .1); }
.seo-roadmap-number { display: grid; place-items: center; width: 28px; height: 28px; margin-bottom: 13px; border-radius: 50%; background: #3d4e5e; color: #d9e2e9; font-size: .72rem; font-weight: 900; }
.phase-complete .seo-roadmap-number { background: #d3a83f; color: #07172b; }
.phase-active .seo-roadmap-number { background: #07172b; color: #f0d275; }
.seo-phase-state { color: #aebdca; font-size: .59rem; font-weight: 900; letter-spacing: .07em; text-transform: uppercase; }
.phase-complete .seo-phase-state { color: #f0d275; }
.phase-active .seo-phase-state { color: #795b13; }
.seo-roadmap-phase h3 { overflow-wrap: anywhere; margin: 6px 0; color: #fff; font: 700 1.03rem/1.05 Georgia, serif; }
.phase-active h3 { color: #07172b; }
.seo-roadmap-phase p { margin: 7px 0; color: #aebdca; font-size: .69rem; line-height: 1.42; }
.phase-active p { color: #536170; }
.seo-roadmap-phase .seo-phase-plain { color: #d3dde5; font-weight: 800; }
.phase-active .seo-phase-plain { color: #604913; }
.seo-roadmap-phase time { display: block; margin-top: 13px; color: #e3c869; font-size: .67rem; font-weight: 850; }
.phase-active time { color: #71520c; }

.seo-evidence-layout { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; margin: 34px 0; }
.seo-evidence-layout > .panel { margin: 0; border-top: 5px solid #c89d38; border-radius: 16px; }
.seo-evidence-layout h2 { margin: 5px 0 16px; color: #07172b; font: 700 1.75rem/1 Georgia, serif; }
.seo-check-list { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.seo-check-list li { position: relative; padding-left: 27px; color: #354453; }
.seo-check-list li::before { position: absolute; top: 1px; left: 0; display: grid; place-items: center; width: 19px; height: 19px; border-radius: 50%; content: '✓'; background: #e4f3eb; color: #187249; font-size: .7rem; font-weight: 900; }
.seo-release-record { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin: 20px 0 0; }
.seo-release-record div { min-width: 0; padding: 10px; border-radius: 8px; background: #f2f4f5; }
.seo-release-record dt { color: #6b7783; font-size: .63rem; font-weight: 900; text-transform: uppercase; }
.seo-release-record dd { overflow-wrap: anywhere; margin: 4px 0 0; color: #07172b; font-size: .77rem; font-weight: 850; }
.seo-next-actions ol { display: grid; gap: 9px; margin: 0; padding: 0; list-style: none; }
.seo-next-actions li { display: grid; grid-template-columns: 112px minmax(0, 1fr); gap: 3px 13px; padding: 12px; border: 1px solid #e0d8c9; border-radius: 10px; background: #fffcf5; }
.seo-next-actions li span { grid-row: 1 / 3; color: #806215; font-size: .69rem; font-weight: 900; }
.seo-next-actions li strong { color: #07172b; font-size: .82rem; }
.seo-next-actions li small { color: #65727e; line-height: 1.35; }

.seo-technical-watch { margin: 34px 0; }
.seo-technical-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.seo-technical-grid article { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 13px; align-items: center; padding: 16px; border: 1px solid #d6cdbd; border-radius: 12px; background: #fff; }
.technical-light { width: 11px; height: 11px; border-radius: 50%; background: #d39c2b; box-shadow: 0 0 0 5px rgba(211, 156, 43, .12); }
.technical-light.is-on { background: #35a36c; box-shadow: 0 0 0 5px rgba(53, 163, 108, .12); }
.technical-light.is-off { background: #d34f47; box-shadow: 0 0 0 5px rgba(211, 79, 71, .12); }
.seo-technical-grid strong,
.seo-technical-grid small { display: block; }
.seo-technical-grid strong { color: #07172b; }
.seo-technical-grid small { margin-top: 3px; color: #687581; }
.seo-technical-grid b { color: #1c714c; font-size: .72rem; text-transform: uppercase; }
.seo-watch-actions { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 15px; }
.seo-honest-limit { margin: 28px 0 0; padding: 15px 17px; border-left: 4px solid #c89d38; border-radius: 0 9px 9px 0; background: #fff7df; color: #554820; }

@media (max-width: 1240px) {
  .command-priority-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .seo-status-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .seo-brick-roadmap { display: flex; overflow-x: auto; padding-bottom: 8px; scroll-snap-type: x proximity; }
  .seo-roadmap-phase { flex: 0 0 190px; scroll-snap-align: start; }
}

@media (max-width: 980px) {
  .admin-layout { grid-template-columns: minmax(0, 1fr); width: min(calc(100% - 28px), 1180px); }
  .admin-sidebar { position: sticky; z-index: 35; top: 82px; overflow: visible; max-height: none; margin-top: 12px; padding: 0; border-radius: 13px; }
  .admin-sidebar .admin-nav-menu > summary { display: flex; align-items: center; justify-content: space-between; gap: 15px; padding: 14px 16px; color: #fff; cursor: pointer; }
  .admin-sidebar .admin-nav-menu > summary span { color: #aebcc8; font-size: .7rem; font-weight: 850; text-transform: uppercase; }
  .admin-sidebar .admin-nav-menu > summary strong { color: #f0d275; font-family: Georgia, serif; }
  .admin-sidebar .admin-nav-menu > summary::after { color: #f0d275; content: '+'; font-size: 1.2rem; font-weight: 900; }
  .admin-sidebar .admin-nav-menu > summary::after { position: static; top: auto; right: auto; width: auto; height: auto; border: 0; transform: none; transition: none; }
  .admin-sidebar .admin-nav-menu[open] > summary::after { content: '−'; transform: none; }
  .admin-sidebar .admin-nav-menu:not([open]) > .admin-nav { display: none; }
  .admin-sidebar .admin-nav { grid-template-columns: repeat(2, minmax(0, 1fr)); max-height: calc(100vh - 165px); overflow-y: auto; padding: 5px 10px 13px; }
  .admin-nav-group { align-content: start; }
  .admin-shell { padding: 22px 0 70px; }
  .admin-current-section { margin-right: auto; }
  .command-district-grid { grid-template-columns: 1fr; }
  .command-seo-preview { grid-template-columns: 1fr; }
  .seo-status-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .seo-summary-columns { grid-template-columns: 1fr; }
  .seo-summary-columns article { min-height: 0; }
  .seo-roadmap-heading { flex-direction: column; }
  .seo-roadmap-numbers { width: 100%; }
}

@media (max-width: 700px) {
  .admin-bar { gap: 14px; width: min(calc(100% - 22px), 1520px); }
  .admin-current-section { display: none; }
  .admin-account { padding-left: 12px; }
  .admin-account > span { display: none; }
  .admin-layout { width: min(calc(100% - 22px), 1180px); }
  .admin-sidebar { top: 78px; }
  .admin-sidebar .admin-nav { grid-template-columns: 1fr; }
  .command-hall-hero,
  .seo-watchtower-hero { min-height: 500px; border-radius: 18px; }
  .command-hall-hero > img { object-position: 60% 50%; }
  .command-hall-shade,
  .seo-watchtower-shade { background: linear-gradient(0deg, rgba(2, 12, 25, .98), rgba(4, 19, 37, .85) 67%, rgba(4, 19, 37, .35)); }
  .command-hall-copy,
  .seo-watchtower-copy { align-self: end; width: 100%; padding: 25px; }
  .command-hall-copy h1,
  .seo-watchtower-copy h1 { font-size: clamp(2.7rem, 14vw, 4.3rem); }
  .command-hall-action { position: relative; right: auto; bottom: auto; z-index: 2; justify-self: stretch; margin: 0 25px 25px; text-align: center; }
  .launch-remembrance { grid-template-columns: 1fr; }
  .launch-remembrance-seal { width: 150px; }
  .command-priority-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .command-section-heading { align-items: flex-start; }
  .command-count-seal { min-width: 64px; min-height: 64px; }
  .district-card { grid-template-columns: 1fr; }
  .district-crest { width: 45px; height: 49px; }
  .command-seo-preview { min-width: 0; padding: 24px; }
  .command-mini-wall { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .command-mini-wall .brick:nth-child(even) { transform: none; }
  .seo-status-grid { grid-template-columns: 1fr; }
  .seo-hero-status span { flex: 1 1 145px; }
  .seo-roadmap { padding: 23px 16px; }
  .seo-roadmap-numbers { grid-template-columns: 1fr 1fr; }
  .seo-castle-track { height: 60px; }
  .seo-moving-brick { top: 13px; width: 60px; }
  .seo-evidence-layout,
  .seo-technical-grid { grid-template-columns: 1fr; }
  .seo-release-record { grid-template-columns: 1fr; }
  .seo-next-actions li { grid-template-columns: 1fr; }
  .seo-next-actions li span { grid-row: auto; }
  .seo-technical-grid article { grid-template-columns: auto minmax(0, 1fr); }
  .seo-technical-grid b { grid-column: 2; }
}

@media (max-width: 440px) {
  .command-priority-grid { grid-template-columns: 1fr; }
  .command-priority-grid a { min-height: 132px; }
  .command-section-heading { flex-direction: column; }
  .command-count-seal { align-self: flex-start; border-radius: 999px; min-width: 0; min-height: 0; padding: 9px 13px; }
  .district-card { padding: 21px; }
  .district-links a { width: 100%; justify-content: space-between; }
  .seo-roadmap-numbers { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  .command-priority-grid a,
  .seo-track-complete,
  .seo-moving-brick { transition: none; }
  .command-priority-grid a:hover,
  .command-priority-grid a:focus-visible { transform: none; }
  .seo-roadmap:not(.is-settled) .seo-track-complete { width: var(--seo-work-progress); }
  .seo-roadmap:not(.is-settled) .seo-moving-brick { left: var(--seo-work-progress); transform: translateX(-50%); }
}

/* Google measurement room */
.seo-measurement-command {
  position: relative;
  margin: 1.3rem 0;
  padding: clamp(1rem, 2vw, 1.6rem);
  overflow: hidden;
  border: 1px solid rgba(205, 165, 83, .38);
  border-radius: 24px;
  background: linear-gradient(135deg, rgba(255, 255, 255, .98), rgba(246, 240, 224, .96));
  box-shadow: 0 20px 55px rgba(7, 23, 43, .12);
}
.seo-measurement-command::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 5px;
  background: linear-gradient(90deg, #8f6a27, #e1bc62 45%, #8f6a27);
}
.seo-measurement-heading,
.seo-source-panel > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.seo-measurement-heading h2 { margin: .15rem 0 .35rem; color: #0a203b; font-size: clamp(1.35rem, 2.2vw, 2rem); }
.seo-measurement-heading > div:first-child > p:last-child { max-width: 720px; margin: 0; color: #536276; }
.seo-measurement-freshness {
  min-width: 215px;
  padding: .75rem .9rem;
  border: 1px solid rgba(15, 47, 76, .15);
  border-radius: 14px;
  background: rgba(255, 255, 255, .78);
}
.seo-measurement-freshness span,
.seo-measurement-freshness small { display: block; color: #667385; font-size: .73rem; }
.seo-measurement-freshness strong { display: block; margin: .18rem 0; color: #102d4c; font-size: .92rem; }
.seo-measurement-freshness.is-fresh { border-color: rgba(38, 126, 84, .3); box-shadow: inset 4px 0 #2f8b5d; }
.seo-measurement-freshness.is-waiting { box-shadow: inset 4px 0 #c59436; }
.seo-measurement-empty {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) minmax(300px, .8fr);
  gap: 1rem;
  align-items: center;
  margin-top: 1.25rem;
  padding: 1rem;
  border: 1px dashed rgba(126, 89, 33, .35);
  border-radius: 18px;
  background: rgba(255, 252, 243, .76);
}
.seo-measurement-empty-crest,
.seo-source-mark {
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  width: 52px;
  height: 58px;
  color: #f8e8af;
  border: 1px solid #d2ae56;
  border-radius: 50% 50% 44% 44% / 38% 38% 62% 62%;
  background: linear-gradient(160deg, #153653, #07172b);
  box-shadow: inset 0 0 0 3px rgba(255, 255, 255, .08), 0 8px 18px rgba(7, 23, 43, .18);
  font-family: Georgia, serif;
  font-size: 1.45rem;
  font-weight: 800;
}
.seo-measurement-empty h3 { margin: .2rem 0 .35rem; color: #102d4c; }
.seo-measurement-empty p { margin: 0; color: #586679; }
.seo-connection-steps { display: grid; gap: .5rem; margin: 0; padding: 0; list-style: none; }
.seo-connection-steps li { display: grid; grid-template-columns: 30px minmax(0, 1fr); gap: .65rem; align-items: center; }
.seo-connection-steps li > span {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  color: #f8e8af;
  border-radius: 8px;
  background: #102d4c;
  font-weight: 800;
}
.seo-connection-steps strong,
.seo-connection-steps small { display: block; }
.seo-connection-steps strong { color: #1b3653; font-size: .83rem; }
.seo-connection-steps small { color: #697486; font-size: .74rem; }
.seo-source-panel {
  margin-top: 1.15rem;
  overflow: hidden;
  border: 1px solid rgba(15, 47, 76, .14);
  border-radius: 18px;
  background: rgba(255, 255, 255, .9);
  box-shadow: 0 12px 30px rgba(7, 23, 43, .08);
}
.seo-source-panel > header { padding: .9rem 1rem; color: #fff; background: linear-gradient(120deg, #102d4c, #173f63); }
.seo-source-analytics > header { background: linear-gradient(120deg, #6d421a, #a36b25); }
.seo-source-panel > header > div { display: flex; align-items: center; gap: .75rem; }
.seo-source-panel .seo-source-mark {
  width: 42px;
  height: 46px;
  color: #122d48;
  border-color: rgba(255, 255, 255, .62);
  background: linear-gradient(160deg, #fff4c8, #d4aa4e);
  font-size: 1rem;
}
.seo-source-panel > header .eyebrow { color: #e8c96e; }
.seo-source-panel > header h3 { margin: .1rem 0 0; color: #fff; font-size: 1.1rem; }
.seo-source-panel > header time { align-self: center; color: rgba(255, 255, 255, .78); font-size: .77rem; font-weight: 700; }
.seo-live-metrics { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-bottom: 1px solid rgba(15, 47, 76, .1); }
.seo-live-metrics > div { min-width: 0; padding: 1rem; border-right: 1px solid rgba(15, 47, 76, .1); }
.seo-live-metrics > div:last-child { border-right: 0; }
.seo-live-metrics span,
.seo-live-metrics small { display: block; color: #687486; }
.seo-live-metrics span { font-size: .75rem; font-weight: 800; letter-spacing: .03em; text-transform: uppercase; }
.seo-live-metrics strong { display: block; margin: .28rem 0 .2rem; color: #102d4c; font-size: clamp(1.35rem, 2vw, 1.9rem); }
.seo-live-metrics b {
  display: inline-flex;
  margin-bottom: .28rem;
  padding: .12rem .42rem;
  color: #526173;
  border-radius: 999px;
  background: #eef1f4;
  font-size: .7rem;
}
.seo-live-metrics b.is-up { color: #18633e; background: #e3f4e9; }
.seo-live-metrics b.is-down { color: #8b3c30; background: #fae7e3; }
.seo-live-metrics small { font-size: .72rem; }
.seo-live-metrics-eight { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.seo-live-metrics-eight > div:nth-child(-n+4) { border-bottom: 1px solid rgba(15, 47, 76, .1); }
.seo-live-metrics-eight > div:nth-child(4) { border-right: 0; }
.seo-measurement-tables { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; padding: 1rem; }
.seo-measurement-tables-wide { border-bottom: 1px solid rgba(15, 47, 76, .1); }
.seo-measurement-tables h4 { margin: 0 0 .55rem; color: #183653; }
.seo-measurement-tables ol { display: grid; gap: .35rem; margin: 0; padding: 0; list-style: none; }
.seo-measurement-tables li {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: .15rem .65rem;
  align-items: baseline;
  padding: .5rem .6rem;
  border-radius: 9px;
  background: #f5f7f8;
}
.seo-measurement-tables li span { overflow: hidden; color: #243e58; font-size: .8rem; text-overflow: ellipsis; white-space: nowrap; }
.seo-measurement-tables li b { color: #806020; font-size: .74rem; }
.seo-measurement-tables li small { grid-column: 2; color: #768191; font-size: .68rem; }
.seo-no-rows {
  margin: 0;
  padding: .9rem;
  color: #697587;
  border: 1px dashed rgba(15, 47, 76, .18);
  border-radius: 10px;
  background: #fafbfb;
  font-size: .8rem;
}
.seo-audience-strip {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
  padding: 1rem;
  border-bottom: 1px solid rgba(15, 47, 76, .1);
  background: rgba(248, 246, 239, .72);
}
.seo-audience-strip h4,
.seo-organic-journey h4 { margin: 0 0 .55rem; color: #183653; }
.seo-audience-strip ul { display: grid; gap: .35rem; margin: 0; padding: 0; list-style: none; }
.seo-audience-strip li {
  display: flex;
  justify-content: space-between;
  gap: .7rem;
  padding: .42rem .55rem;
  color: #314a62;
  border-radius: 8px;
  background: rgba(255, 255, 255, .86);
  font-size: .78rem;
}
.seo-audience-strip li b { color: #806020; }
.seo-organic-journey {
  display: grid;
  grid-template-columns: minmax(250px, .72fr) minmax(0, 1.28fr);
  gap: 1rem;
  padding: 1rem;
  background: linear-gradient(120deg, rgba(222, 238, 247, .68), rgba(255, 255, 255, .82));
}
.seo-organic-journey > div:first-child p:last-child { margin: .35rem 0 0; color: #53677c; font-size: .8rem; }
.seo-organic-journey ol { display: grid; gap: .35rem; margin: 0; padding: 0; list-style: none; }
.seo-organic-journey li {
  display: flex;
  justify-content: space-between;
  gap: .7rem;
  padding: .45rem .6rem;
  color: #2b465f;
  border-radius: 8px;
  background: rgba(255, 255, 255, .9);
  font-size: .78rem;
}
.seo-organic-journey li span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.seo-organic-journey li b { flex: none; color: #806020; font-size: .72rem; }
.seo-owner-readout {
  display: grid;
  grid-template-columns: minmax(210px, .48fr) minmax(0, 1.52fr);
  gap: 1rem;
  margin-top: 1.15rem;
  padding: 1rem;
  border: 1px solid rgba(15, 47, 76, .14);
  border-radius: 16px;
  background: rgba(255, 255, 255, .8);
}
.seo-owner-readout h3 { margin: .15rem 0 .3rem; color: #173653; }
.seo-owner-readout > div:first-child > p:last-child { margin: 0; color: #667487; font-size: .78rem; }
.seo-insight-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .55rem; }
.seo-insight-grid article {
  display: grid;
  grid-template-columns: 10px minmax(0, 1fr);
  gap: .6rem;
  align-items: start;
  padding: .7rem;
  border: 1px solid rgba(15, 47, 76, .1);
  border-radius: 11px;
  background: #f7f9fa;
}
.seo-insight-grid article > span { width: 10px; height: 10px; margin-top: .22rem; border-radius: 50%; background: #8190a0; }
.seo-insight-grid article.is-good > span { background: #2f8b5d; box-shadow: 0 0 0 4px rgba(47, 139, 93, .12); }
.seo-insight-grid article.is-watch > span { background: #c59436; box-shadow: 0 0 0 4px rgba(197, 148, 54, .12); }
.seo-insight-grid article.is-action > span { background: #a94c3d; box-shadow: 0 0 0 4px rgba(169, 76, 61, .12); }
.seo-insight-grid strong { display: block; color: #173653; font-size: .8rem; }
.seo-insight-grid p { margin: .15rem 0 0; color: #647285; font-size: .74rem; line-height: 1.4; }
.seo-upgrade-pending {
  margin: 0 1rem 1rem;
  padding: .7rem .8rem;
  color: #665229;
  border-left: 4px solid #c69b43;
  background: #fff8e8;
  font-size: .78rem;
}
.seo-measurement-note {
  margin: 1rem 0 0;
  padding: .75rem .9rem;
  color: #536276;
  border-left: 4px solid #c69b43;
  background: rgba(255, 248, 229, .75);
  font-size: .78rem;
}

@media (max-width: 980px) {
  .seo-measurement-empty { grid-template-columns: auto minmax(0, 1fr); }
  .seo-connection-steps { grid-column: 1 / -1; grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .seo-live-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .seo-live-metrics > div:nth-child(2) { border-right: 0; }
  .seo-live-metrics > div:nth-child(-n + 2),
  .seo-live-metrics-eight > div { border-bottom: 1px solid rgba(15, 47, 76, .1); }
  .seo-live-metrics-eight > div:nth-child(2n) { border-right: 0; }
  .seo-live-metrics-eight > div:nth-last-child(-n+2) { border-bottom: 0; }
  .seo-audience-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .seo-audience-strip > div:last-child { grid-column: 1 / -1; }
  .seo-owner-readout { grid-template-columns: 1fr; }
}

@media (max-width: 640px) {
  .seo-measurement-heading,
  .seo-source-panel > header { display: grid; }
  .seo-measurement-freshness { min-width: 0; }
  .seo-measurement-empty { grid-template-columns: 48px minmax(0, 1fr); padding: .8rem; }
  .seo-measurement-empty-crest { width: 44px; height: 49px; font-size: 1.1rem; }
  .seo-connection-steps,
  .seo-audience-strip,
  .seo-organic-journey,
  .seo-insight-grid { grid-template-columns: 1fr; }
  .seo-live-metrics,
  .seo-measurement-tables { grid-template-columns: 1fr; }
  .seo-live-metrics > div,
  .seo-live-metrics > div:nth-child(2) { border-right: 0; border-bottom: 1px solid rgba(15, 47, 76, .1); }
  .seo-live-metrics > div:last-child { border-bottom: 0; }
  .seo-audience-strip > div:last-child { grid-column: auto; }
}

/* My Empire administrator-only mock testing grounds */
.district-crest .icon-training-castle { width: 39px; height: 39px; stroke-width: 3; }

.empire-test-hero {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(310px, .75fr);
  gap: clamp(28px, 4vw, 60px);
  align-items: center;
  min-height: 410px;
  overflow: hidden;
  padding: clamp(30px, 5vw, 62px);
  border: 1px solid #31516a;
  border-radius: 24px;
  background:
    radial-gradient(circle at 87% 8%, rgba(233, 197, 88, .22), transparent 25%),
    linear-gradient(145deg, #06162a, #0a2943);
  color: #fff;
  box-shadow: 0 22px 58px rgba(7, 23, 43, .22);
}
.empire-test-hero::after {
  position: absolute;
  right: -36px;
  bottom: -48px;
  width: 280px;
  height: 180px;
  content: '';
  background:
    linear-gradient(90deg, transparent 0 18%, rgba(231, 197, 95, .09) 18% 34%, transparent 34% 47%, rgba(231, 197, 95, .09) 47% 65%, transparent 65%),
    linear-gradient(0deg, rgba(231, 197, 95, .12) 0 25%, transparent 25%);
  clip-path: polygon(0 36%, 12% 36%, 12% 20%, 28% 20%, 28% 36%, 43% 36%, 43% 0, 60% 0, 60% 36%, 75% 36%, 75% 17%, 91% 17%, 91% 36%, 100% 36%, 100% 100%, 0 100%);
  pointer-events: none;
}
.empire-test-hero-copy { position: relative; z-index: 1; max-width: 800px; }
.empire-test-hero .eyebrow,
.empire-test-room .eyebrow,
.empire-test-boundary .eyebrow { color: #e8c75e; }
.empire-test-hero h1 {
  max-width: 760px;
  margin: 6px 0 10px;
  color: #fff;
  font: 700 clamp(2.6rem, 5vw, 5rem)/.94 Georgia, serif;
}
.empire-test-hero p:not(.eyebrow) { max-width: 720px; margin: 7px 0; color: #cbd8e3; }
.empire-test-safety-seals { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 22px; }
.empire-test-safety-seals > span {
  display: inline-flex;
  gap: 7px;
  align-items: center;
  padding: 8px 11px;
  border: 1px solid rgba(102, 211, 154, .4);
  border-radius: 999px;
  background: rgba(27, 125, 78, .18);
  color: #d7f7e5;
  font-size: .73rem;
  font-weight: 800;
}
.empire-test-safety-seals b { display: grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: #35a56d; color: #04182a; }

.empire-test-grade-picker {
  position: relative;
  z-index: 1;
  display: grid;
  gap: 12px;
  padding: 25px;
  border: 1px solid rgba(231, 197, 95, .44);
  border-radius: 18px;
  background: rgba(3, 16, 31, .78);
  box-shadow: inset 0 0 0 5px rgba(231, 197, 95, .045);
}
.empire-test-grade-picker label { color: #f1d677; font: 700 1.25rem/1.15 Georgia, serif; }
.empire-test-grade-picker > div { display: grid; gap: 10px; }
.empire-test-grade-picker select {
  width: 100%;
  min-height: 50px;
  padding: 10px 42px 10px 13px;
  border: 1px solid #8796a3;
  border-radius: 9px;
  background: #fff;
  color: #07172b;
  font-weight: 800;
}
.empire-test-grade-picker .button { justify-content: center; width: 100%; min-height: 50px; }
.empire-test-grade-picker small { color: #aebfcd; line-height: 1.45; }

.empire-test-room {
  margin: 32px 0;
  padding: clamp(20px, 3vw, 38px);
  border: 1px solid #d2c4a9;
  border-radius: 24px;
  background: linear-gradient(145deg, #fff, #fbf7ed);
  box-shadow: 0 18px 48px rgba(7, 23, 43, .11);
}
.empire-test-room-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; }
.empire-test-room-heading h2 {
  margin: 4px 0 6px;
  color: #07172b;
  font: 700 clamp(2rem, 3.5vw, 3rem)/1 Georgia, serif;
}
.empire-test-room-heading p { margin: 4px 0; color: #62717e; }

.empire-test-progress {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 8px;
  margin: 27px 0 18px;
  padding: 0;
  list-style: none;
}
.empire-test-progress li {
  position: relative;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 0 8px;
  align-items: center;
  min-width: 0;
  min-height: 68px;
  padding: 11px;
  border: 1px solid #d6d0c4;
  border-radius: 9px;
  background: #f0f1f2;
  color: #687581;
}
.empire-test-progress li::after {
  position: absolute;
  right: -9px;
  z-index: 2;
  width: 10px;
  height: 20px;
  content: '';
  background: inherit;
  clip-path: polygon(0 0, 100% 50%, 0 100%);
}
.empire-test-progress li:last-child::after { display: none; }
.empire-test-progress li > span {
  grid-row: 1 / 3;
  display: grid;
  place-items: center;
  width: 31px;
  height: 31px;
  border-radius: 50%;
  background: #71808e;
  color: #fff;
  font-size: .73rem;
  font-weight: 900;
}
.empire-test-progress b { overflow: hidden; color: inherit; font-size: .78rem; text-overflow: ellipsis; }
.empire-test-progress small { font-size: .63rem; }
.empire-test-progress li.is-current { border-color: #ca9e35; background: #fff4ce; color: #624a12; box-shadow: 0 0 0 3px rgba(202, 158, 53, .12); }
.empire-test-progress li.is-current > span { background: #07172b; color: #f0d275; }
.empire-test-progress li.is-complete { border-color: #369665; background: #e6f4ec; color: #1c6745; }
.empire-test-progress li.is-complete > span { background: #2e9662; font-size: 0; }
.empire-test-progress li.is-complete > span::before { content: '✓'; font-size: .8rem; }

.empire-test-stage {
  display: grid;
  grid-template-columns: minmax(0, 1.08fr) minmax(390px, .92fr);
  min-height: 560px;
  overflow: hidden;
  border: 1px solid #29465f;
  border-radius: 20px;
  background: #06172a;
  box-shadow: 0 16px 36px rgba(7, 23, 43, .18);
}
.empire-test-kingdom { position: relative; min-height: 560px; overflow: hidden; background: #06172a; }
.empire-test-kingdom > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; transition: opacity .2s ease; }
.empire-test-kingdom-shade { position: absolute; inset: 0; background: linear-gradient(0deg, rgba(3, 15, 29, .95), transparent 58%), linear-gradient(90deg, rgba(3, 15, 29, .25), transparent); }
.empire-test-mode-flag {
  position: absolute;
  z-index: 2;
  top: 18px;
  left: 18px;
  padding: 8px 11px;
  border: 1px solid #efd273;
  border-radius: 999px;
  background: rgba(4, 19, 35, .88);
  color: #f0d477;
  font-size: .7rem;
  font-weight: 900;
  text-transform: uppercase;
}
.empire-test-player {
  position: absolute;
  z-index: 2;
  right: 20px;
  bottom: 95px;
  left: 20px;
  display: flex;
  gap: 12px;
  align-items: center;
  color: #fff;
}
.empire-test-player > span { display: grid; place-items: center; width: 48px; height: 48px; border: 2px solid #e5c35d; border-radius: 50%; background: #07172b; color: #f0d275; font-size: 1.5rem; }
.empire-test-player strong,
.empire-test-player small { display: block; }
.empire-test-player small { margin-top: 3px; color: #b9cad7; }
.empire-test-resources {
  position: absolute;
  z-index: 2;
  right: 20px;
  bottom: 20px;
  left: 20px;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 9px;
}
.empire-test-resources > span { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 11px 13px; border: 1px solid rgba(255, 255, 255, .15); border-radius: 9px; background: rgba(4, 18, 33, .87); }
.empire-test-resources small { color: #b9c8d5; font-size: .64rem; }
.empire-test-resources b { color: #f1d475; font: 700 1.15rem/1 Georgia, serif; }

.empire-test-console {
  display: grid;
  align-content: center;
  min-width: 0;
  padding: clamp(26px, 4vw, 48px);
  background: #fffdf8;
}
.empire-test-console h3 {
  margin: 7px 0 10px;
  color: #07172b;
  font: 700 clamp(2rem, 3.4vw, 3.2rem)/1 Georgia, serif;
}
.empire-test-console > p { color: #5d6b78; line-height: 1.55; }
.empire-test-step { color: #8a6718 !important; font-size: .72rem; font-weight: 900; letter-spacing: .07em; text-transform: uppercase; }
.empire-test-console > .button,
.empire-test-actions { margin-top: 20px; }
.empire-test-console > .button { justify-self: start; }
.empire-test-callout { display: grid; gap: 4px; margin: 19px 0 3px; padding: 15px; border-left: 5px solid #36a16b; border-radius: 0 10px 10px 0; background: #e8f5ed; color: #195f40; }
.empire-test-callout strong { font-size: .9rem; }
.empire-test-callout > span { font-size: .73rem; font-weight: 800; }
.empire-test-callout small { color: #4c6859; line-height: 1.45; }
.empire-test-lesson-scroll {
  display: grid;
  gap: 7px;
  margin: 18px 0 4px;
  padding: 21px;
  border: 1px solid #d4b96a;
  border-radius: 7px;
  background: linear-gradient(135deg, #fffaf0, #f5e5b8);
  box-shadow: inset 10px 0 0 rgba(183, 136, 33, .09);
}
.empire-test-lesson-scroll > span { color: #82611a; font-size: .68rem; font-weight: 900; text-transform: uppercase; }
.empire-test-lesson-scroll strong { color: #07172b; font: 700 1.22rem/1.15 Georgia, serif; }
.empire-test-lesson-scroll b { color: #725919; font-size: .78rem; }
.empire-test-lesson-scroll p { margin: 3px 0 0; color: #52616d; font-size: .82rem; }

.empire-test-answer-list { display: grid; gap: 9px; margin: 20px 0 10px; }
.empire-test-answer {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  gap: 11px;
  align-items: center;
  min-height: 54px;
  padding: 10px 13px;
  border: 1px solid #cbd4da;
  border-radius: 10px;
  background: #f5f7f8;
  color: #163149;
  font: inherit;
  font-size: .82rem;
  font-weight: 800;
  text-align: left;
  cursor: pointer;
}
.empire-test-answer:hover,
.empire-test-answer:focus-visible { border-color: #bd8f27; background: #fff7dc; }
.empire-test-answer > span { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; background: #07172b; color: #efd06f; font-size: .72rem; }
.empire-test-answer.is-selected { border-color: #349965; background: #e5f4eb; color: #195d3f; }
.empire-test-answer.is-selected > span { background: #2f9461; color: #fff; }
.empire-test-answer-hint { margin-top: 10px; color: #80651f !important; font-size: .74rem; font-weight: 800; }
.empire-test-correct {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  margin-top: 15px;
  padding: 14px;
  border: 1px solid #8bc4a5;
  border-radius: 11px;
  background: #e7f5ed;
  color: #195d3f;
}
.empire-test-correct > span { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; background: #2f9864; color: #fff; font-weight: 900; }
.empire-test-correct strong,
.empire-test-correct b,
.empire-test-correct small { display: block; }
.empire-test-correct b { margin-top: 2px; font-size: .72rem; }
.empire-test-correct small { margin-top: 5px; color: #4b6d5c; line-height: 1.42; }

.empire-test-success-mark,
.empire-test-complete-crown { display: grid; place-items: center; width: 74px; height: 74px; margin-bottom: 16px; border: 3px solid #d1ac48; border-radius: 50%; background: #e6f5ec; color: #238354; font-size: 2rem; box-shadow: inset 0 0 0 6px #fffdf8; }
.empire-test-complete-crown { background: #07172b; color: #f0d275; font-size: 2.4rem; }
.empire-test-reward { display: grid; grid-template-columns: auto 1fr; gap: 4px 13px; align-items: center; margin: 18px 0 2px; padding: 16px; border: 1px solid #d4ad45; border-radius: 12px; background: #fff3c8; color: #755611; }
.empire-test-reward > span { grid-row: 1 / 3; font-size: 2rem; }
.empire-test-reward strong,
.empire-test-reward b { color: #60450d; }
.empire-test-build-card { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 14px; align-items: center; margin: 18px 0 3px; padding: 17px; border: 1px solid #d5c8ad; border-radius: 12px; background: #f7f3e9; }
.empire-test-build-card > span { display: grid; place-items: center; width: 50px; height: 50px; border-radius: 9px; background: #07172b; color: #efd06e; font-size: 1.45rem; }
.empire-test-build-card strong,
.empire-test-build-card b,
.empire-test-build-card small { display: block; }
.empire-test-build-card strong { color: #102d48; }
.empire-test-build-card b { margin-top: 2px; color: #70591f; font-size: .72rem; }
.empire-test-build-card small { margin-top: 4px; color: #6c7882; }
.empire-test-build-card em { color: #80611a; font-style: normal; font-weight: 900; }
.empire-test-mission-choices,
.empire-test-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.empire-test-complete-list { display: grid; gap: 8px; margin: 18px 0 0; padding: 0; list-style: none; }
.empire-test-complete-list li { padding: 10px 12px; border-radius: 8px; background: #e7f4ec; color: #1e6747; font-size: .8rem; font-weight: 800; }

.empire-test-boundary {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 20px;
  align-items: center;
  margin: 32px 0 0;
  padding: 24px;
  border: 1px solid #d5c7aa;
  border-radius: 17px;
  background: #fffaf0;
}
.empire-test-boundary-icon { display: grid; place-items: center; width: 62px; height: 70px; border: 2px solid #d1aa45; border-radius: 28px 28px 9px 9px; background: #07172b; color: #efd06e; font-size: 1.7rem; }
.empire-test-boundary h2 { margin: 4px 0 8px; color: #07172b; font: 700 1.6rem/1.05 Georgia, serif; }
.empire-test-boundary p { margin: 5px 0; color: #5e6d7a; }

@media (max-width: 1100px) {
  .empire-test-hero { grid-template-columns: 1fr; }
  .empire-test-grade-picker { max-width: 580px; }
  .empire-test-stage { grid-template-columns: 1fr; }
  .empire-test-kingdom { min-height: 470px; }
  .empire-test-console { min-height: 520px; }
}

@media (max-width: 760px) {
  .empire-test-hero { padding: 27px 22px; border-radius: 18px; }
  .empire-test-hero h1 { font-size: clamp(2.3rem, 12vw, 3.4rem); }
  .empire-test-room { padding: 17px; border-radius: 18px; }
  .empire-test-room-heading { display: grid; }
  .empire-test-progress { display: flex; overflow-x: auto; padding-bottom: 8px; scroll-snap-type: x proximity; }
  .empire-test-progress li { flex: 0 0 116px; scroll-snap-align: start; }
  .empire-test-kingdom { min-height: 400px; }
  .empire-test-console { min-height: 500px; padding: 26px 20px; }
  .empire-test-console h3 { font-size: 2.15rem; }
  .empire-test-resources { grid-template-columns: 1fr; }
  .empire-test-player { bottom: 132px; }
  .empire-test-boundary { grid-template-columns: 1fr; }
}

@media (max-width: 480px) {
  .empire-test-safety-seals { display: grid; }
  .empire-test-safety-seals > span { justify-content: flex-start; }
  .empire-test-grade-picker { padding: 18px; }
  .empire-test-kingdom { min-height: 360px; }
  .empire-test-build-card { grid-template-columns: auto minmax(0, 1fr); }
  .empire-test-build-card em { grid-column: 2; }
  .empire-test-mission-choices .button,
  .empire-test-actions .button { width: 100%; justify-content: center; }
}

@media (prefers-reduced-motion: reduce) {
  .empire-test-kingdom > img { transition: none; }
}

/* Modern Editorial Book: the public theme continues inside every portal chapter. */
.auth-page,
.student-area,
.admin-area {
  --portal-paper: #fffdf8;
  --portal-paper-warm: #f7f0df;
  --portal-navy: #07172b;
  --portal-blue: #102b4a;
  --portal-gold: #c89d38;
  --portal-edge: #d8c9a7;
  --portal-radius: clamp(22px, 2.2vw, 30px);
  --portal-page-shadow:
    0 5px 0 rgba(168, 130, 47, 0.36),
    0 22px 52px rgba(7, 23, 43, 0.11);
  color: #111820;
  background:
    radial-gradient(circle at 8% 5%, rgba(200, 157, 56, 0.11), transparent 23rem),
    radial-gradient(circle at 94% 8%, rgba(16, 43, 74, 0.08), transparent 25rem),
    linear-gradient(90deg, rgba(7, 23, 43, 0.018) 1px, transparent 1px) 50% 0 / 80px 100%,
    #f7f4ec;
}

.auth-page .login-panel {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  padding: clamp(28px, 4vw, 42px);
  border: 1px solid var(--portal-edge);
  border-left: 7px solid var(--portal-gold);
  border-radius: 12px 32px 32px 12px;
  background:
    radial-gradient(circle at 100% 0, rgba(200, 157, 56, 0.13), transparent 15rem),
    linear-gradient(145deg, #fffefa, #f7f0df);
  box-shadow: var(--portal-page-shadow);
}

.auth-page .login-panel::after {
  position: absolute;
  z-index: -1;
  inset: 9px;
  pointer-events: none;
  border: 1px solid rgba(200, 157, 56, 0.16);
  border-radius: 6px 23px 23px 6px;
  content: "";
}

.auth-page .auth-shell {
  width: min(100% - 28px, 590px);
  padding-top: clamp(28px, 5vw, 58px);
}

.auth-page .auth-brand img {
  border-radius: 14px;
  box-shadow:
    0 4px 0 #9f7415,
    0 14px 28px rgba(7, 23, 43, 0.16);
}

.auth-page :is(input, select, textarea) {
  border-color: #cfc3ab;
  border-radius: 13px;
  background: #fffefa;
}

.auth-page :is(input, select, textarea):focus {
  border-color: var(--portal-gold);
  box-shadow: 0 0 0 4px rgba(200, 157, 56, 0.14);
}

.admin-header,
.student-header {
  border-bottom: 5px solid #9f7415;
  background:
    radial-gradient(circle at 90% 0, rgba(200, 157, 56, 0.18), transparent 18rem),
    repeating-linear-gradient(135deg, rgba(255, 255, 255, 0.025) 0 1px, transparent 1px 24px),
    linear-gradient(120deg, #102b4a, #07172b 70%);
  box-shadow: 0 12px 34px rgba(7, 23, 43, 0.18);
}

.admin-brand img,
.student-brand img {
  border-radius: 12px;
  box-shadow: 0 4px 0 #9f7415, 0 10px 24px rgba(0, 0, 0, 0.2);
}

.student-shell,
.admin-shell {
  width: min(1220px, calc(100% - 36px));
}

.student-area :is(
  .student-dashboard-stat,
  .student-start-panel,
  .student-subject-card,
  .student-course-row,
  .student-course-card,
  .student-principal-support-card,
  .student-support-form,
  .student-support-thread,
  .student-add-subject-panel,
  .student-add-subject-card,
  .student-progress-panel,
  .student-term-block,
  .student-week-card,
  .student-lesson-row,
  .student-quiz-panel,
  .student-info-block,
  .student-question-card,
  .student-result-panel,
  .student-override-panel,
  .student-score-card,
  .student-certificate-card,
  .student-achievement-wall,
  .student-library-book,
  .empire-great-hall-panel
) {
  border-color: var(--portal-edge);
  border-radius: var(--portal-radius);
  background:
    linear-gradient(145deg, rgba(255, 255, 255, 0.98), rgba(247, 240, 223, 0.94)),
    var(--portal-paper);
  box-shadow: var(--portal-page-shadow);
}

.student-area :is(
  .student-subject-card,
  .student-course-row,
  .student-course-card,
  .student-principal-support-card,
  .student-support-thread,
  .student-term-block,
  .student-week-card,
  .student-lesson-row,
  .student-question-card,
  .student-result-panel,
  .student-certificate-card,
  .student-library-book
) {
  overflow: hidden;
}

.student-area :is(
  .student-library-reading-hero,
  .student-lesson-hero,
  .student-castle-quest-hero,
  .empire-hero
) {
  overflow: hidden;
  border: 1px solid rgba(200, 157, 56, 0.58);
  border-radius: clamp(25px, 2.5vw, 34px);
  box-shadow:
    0 5px 0 #9f7415,
    0 24px 56px rgba(7, 23, 43, 0.22);
}

.student-area :is(.student-subject-icon, .student-library-book .student-subject-icon) {
  border-radius: 6px 14px 14px 6px;
}

.student-area :is(.button, button, input, select, textarea) {
  border-radius: 13px;
}

.admin-sidebar {
  border-color: rgba(200, 157, 56, 0.36);
  border-radius: 24px;
  background:
    radial-gradient(circle at 100% 0, rgba(200, 157, 56, 0.15), transparent 14rem),
    linear-gradient(160deg, #102b4a, #07172b 74%);
  box-shadow:
    0 5px 0 #9f7415,
    0 22px 48px rgba(7, 23, 43, 0.18);
}

.admin-area :is(
  .metric,
  .district-card,
  .admin-section > .panel,
  .admin-file-card,
  .decision-panel,
  .credentials-panel,
  .command-seo-preview,
  .seo-status-card,
  .seo-summary-columns article,
  .seo-roadmap,
  .seo-source-panel,
  .seo-measurement-command,
  .library-book-card,
  .library-parchment,
  .admin-course-question,
  .empire-test-room,
  .empire-history,
  .empire-control-room,
  .empire-manual-block,
  .empire-petition
) {
  border-color: var(--portal-edge);
  border-radius: var(--portal-radius);
  background:
    linear-gradient(145deg, rgba(255, 255, 255, 0.98), rgba(247, 240, 223, 0.94)),
    var(--portal-paper);
  box-shadow: var(--portal-page-shadow);
}

.admin-area :is(
  .command-hall-hero,
  .seo-watchtower-hero,
  .admin-course-test-hero,
  .library-grand-hero,
  .library-subhero,
  .empire-hero,
  .empire-test-hero,
  .empire-test-stage
) {
  overflow: hidden;
  border-color: rgba(200, 157, 56, 0.58);
  border-radius: clamp(25px, 2.5vw, 34px);
  box-shadow:
    0 5px 0 #9f7415,
    0 24px 56px rgba(7, 23, 43, 0.22);
}

.admin-area :is(.table-wrap, .orders-table, .empire-table) {
  overflow: auto;
  border: 1px solid var(--portal-edge);
  border-radius: 20px;
  background: var(--portal-paper);
  box-shadow: 0 16px 36px rgba(7, 23, 43, 0.08);
}

.admin-area :is(.button, button, input, select, textarea) {
  border-radius: 13px;
}

@media (max-width: 700px) {
  .auth-page,
  .student-area,
  .admin-area {
    --portal-radius: 20px;
  }

  .auth-page .login-panel {
    padding: 24px 20px;
    border-left-width: 5px;
    border-radius: 9px 24px 24px 9px;
  }

  .student-shell,
  .admin-shell {
    width: min(100% - 24px, 1220px);
  }

  .student-area :is(
    .student-library-reading-hero,
    .student-lesson-hero,
    .student-castle-quest-hero,
    .empire-hero
  ),
  .admin-area :is(
    .command-hall-hero,
    .seo-watchtower-hero,
    .admin-course-test-hero,
    .library-grand-hero,
    .library-subhero,
    .empire-hero,
    .empire-test-hero,
    .empire-test-stage
  ) {
    border-radius: 22px;
  }
}

/* Royal Library interior, same canonical layered renderer and location graph. */
.empire-courtyard-world.is-library .empire-scene-layer.is-background {
  background:
    radial-gradient(circle at 50% 18%, rgba(255, 229, 145, .2), transparent 24%),
    linear-gradient(180deg, #15263b, #071523 68%, #030b12);
  filter: none;
}
.empire-courtyard-world.is-library .empire-scene-layer.is-terrain i {
  inset: 19% 3% 2%;
  clip-path: polygon(50% 2%, 98% 39%, 54% 98%, 2% 58%);
  background:
    linear-gradient(30deg, transparent 0 48%, rgba(255,224,142,.16) 49% 51%, transparent 52%) 0 0 / 38px 38px,
    linear-gradient(150deg, transparent 0 48%, rgba(26,10,4,.28) 49% 51%, transparent 52%) 0 0 / 38px 38px,
    linear-gradient(145deg, #6e4b2c, #342318 70%, #171117);
}
.empire-courtyard-world.is-library .empire-scene-layer.is-terrain b {
  inset: 42% 22% 9%;
  clip-path: polygon(50% 0, 100% 37%, 53% 100%, 0 62%);
  background: repeating-linear-gradient(90deg, #9d2634 0 18px, #d4af55 18px 23px, #7c1d29 23px 41px);
  opacity: .9;
}
.empire-courtyard-world.is-library .empire-scene-layer.is-terrain em,
.empire-courtyard-world.is-library .empire-scene-layer .is-courtyard-wall,
.empire-courtyard-world.is-library .empire-scene-layer .is-great-hall,
.empire-courtyard-world.is-library .empire-scene-layer .is-library,
.empire-courtyard-world.is-library .empire-scene-layer .is-gate,
.empire-courtyard-world.is-library .empire-scene-layer .is-fountain,
.empire-courtyard-world.is-library .empire-scene-layer .is-lanterns,
.empire-courtyard-world.is-library .empire-scene-layer .is-upgrade { display: none; }
.empire-scene-layer.is-architecture .is-library-wall-left,
.empire-scene-layer.is-architecture .is-library-wall-right,
.empire-scene-layer.is-architecture .is-library-window,
.empire-scene-layer.is-props .is-library-desk,
.empire-scene-layer.is-props .is-library-shelves,
.empire-scene-layer.is-props .is-library-globe { display: none; }
.empire-courtyard-world.is-library .is-library-wall-left,
.empire-courtyard-world.is-library .is-library-wall-right,
.empire-courtyard-world.is-library .is-library-window,
.empire-courtyard-world.is-library .is-library-desk,
.empire-courtyard-world.is-library .is-library-shelves,
.empire-courtyard-world.is-library .is-library-globe { display: block; position: absolute; }
.empire-courtyard-world.is-library .is-library-wall-left,
.empire-courtyard-world.is-library .is-library-wall-right {
  top: 6%; width: 34%; height: 76%;
  background:
    repeating-linear-gradient(180deg, transparent 0 9%, rgba(241,198,105,.3) 10% 12%, transparent 13% 20%),
    repeating-linear-gradient(90deg, #2d1d19 0 13%, #6d4325 14% 18%, #1d1517 19% 31%);
  border: 3px solid #9b713b;
  box-shadow: inset 0 0 0 8px rgba(9,17,27,.55), 0 18px 28px rgba(0,0,0,.45);
}
.empire-courtyard-world.is-library .is-library-wall-left { left: 2%; transform: skewY(9deg); }
.empire-courtyard-world.is-library .is-library-wall-right { right: 2%; transform: skewY(-9deg); }
.empire-courtyard-world.is-library .is-library-window {
  left: 42%; top: 9%; width: 16%; height: 34%;
  border: 5px solid #d4af55; border-bottom-width: 9px; border-radius: 50% 50% 5px 5px;
  background: radial-gradient(circle at 55% 28%, #fff5b2 0 6%, #8bc4d4 7% 38%, #27485e 60%, #132334);
  box-shadow: 0 0 28px rgba(255,220,120,.35);
}
.empire-courtyard-world.is-library .is-library-shelves {
  left: 8%; right: 8%; top: 21%; height: 45%;
  background:
    repeating-linear-gradient(90deg, transparent 0 6%, #a74138 6% 8%, #d2a74d 8% 10%, #315c6d 10% 13%, transparent 13% 17%),
    repeating-linear-gradient(180deg, transparent 0 20%, #7f572d 21% 24%, transparent 25% 34%);
  opacity: .85;
}
.empire-courtyard-world.is-library .is-library-desk {
  left: 39%; top: 49%; width: 23%; height: 24%;
  clip-path: polygon(8% 20%, 48% 0, 94% 21%, 88% 83%, 51% 100%, 12% 80%);
  background: linear-gradient(145deg, #be8a45, #5f371d 72%);
  border: 2px solid #e1bd69;
  filter: drop-shadow(0 16px 12px rgba(0,0,0,.42));
}
.empire-courtyard-world.is-library .is-library-globe {
  left: 67%; top: 45%; width: 9%; aspect-ratio: 1; border-radius: 50%;
  border: 4px solid #d4af55;
  background: radial-gradient(circle at 35% 30%, #9be0d8 0 8%, #2d7c78 9% 42%, #174653 43% 67%, #0c2732 68%);
  box-shadow: 0 12px 18px rgba(0,0,0,.4);
}
.empire-courtyard-world.is-library .empire-scene-layer.is-light i {
  inset: -8% 29% 8%; transform: none;
  background: linear-gradient(180deg, rgba(255,236,154,.42), transparent 74%);
}
.empire-courtyard-world.is-library .empire-scene-layer.is-foreground i,
.empire-courtyard-world.is-library .empire-scene-layer.is-foreground b {
  bottom: -8%; height: 28%; background: linear-gradient(160deg, #2f1d17, #0b1016 76%);
}
.empire-courtyard-world.is-library .empire-courtyard-hotspot.is-library { top: 6%; right: 39%; }
.empire-courtyard-world.is-library .empire-courtyard-hotspot.is-courtyard { left: 3%; bottom: 8%; }
.empire-courtyard-world.is-library .empire-courtyard-hotspot.is-great-hall { top: auto; right: 3%; bottom: 8%; left: auto; }
@media (max-width: 640px) {
  .empire-courtyard-world.is-library .is-library-wall-left { left: -8%; }
  .empire-courtyard-world.is-library .is-library-wall-right { right: -8%; }
  .empire-courtyard-world.is-library .is-library-desk { left: 34%; width: 32%; }
  .empire-courtyard-world.is-library .empire-courtyard-hotspot.is-library { right: 25%; }
}

/* Great Hall interior, one canonical scene with server-selected location. */
.empire-scene-layer.is-architecture .is-hall-wall-left,
.empire-scene-layer.is-architecture .is-hall-wall-right,
.empire-scene-layer.is-architecture .is-hall-window,
.empire-scene-layer.is-architecture .is-hall-dais,
.empire-scene-layer.is-props .is-hall-throne,
.empire-scene-layer.is-props .is-hall-table,
.empire-scene-layer.is-props .is-hall-banners,
.empire-scene-layer.is-props .is-hall-braziers { display: none; }
.empire-courtyard-world.is-great-hall .empire-scene-layer.is-background {
  background: radial-gradient(circle at 50% 14%, rgba(255,220,120,.2), transparent 25%), linear-gradient(180deg,#18283b,#09131f 70%,#03080e);
  filter: none;
}
.empire-courtyard-world.is-great-hall .empire-scene-layer.is-terrain i {
  inset: 18% 2% 1%; clip-path: polygon(50% 0,99% 39%,53% 100%,1% 61%);
  background: linear-gradient(30deg,transparent 0 48%,rgba(230,191,95,.15) 49% 51%,transparent 52%) 0 0/42px 42px, linear-gradient(150deg,transparent 0 48%,rgba(0,0,0,.28) 49% 51%,transparent 52%) 0 0/42px 42px, linear-gradient(145deg,#765634,#33261d 72%,#17151a);
}
.empire-courtyard-world.is-great-hall .empire-scene-layer.is-terrain b { inset: 43% 21% 6%; clip-path: polygon(50% 0,100% 38%,52% 100%,0 62%); background: repeating-linear-gradient(90deg,#6e1725 0 23px,#d4af55 23px 29px,#8c2030 29px 53px); opacity:.92; }
.empire-courtyard-world.is-great-hall .empire-scene-layer.is-terrain em,
.empire-courtyard-world.is-great-hall .empire-scene-layer .is-courtyard-wall,
.empire-courtyard-world.is-great-hall .empire-scene-layer .is-great-hall,
.empire-courtyard-world.is-great-hall .empire-scene-layer .is-library,
.empire-courtyard-world.is-great-hall .empire-scene-layer .is-gate,
.empire-courtyard-world.is-great-hall .empire-scene-layer .is-fountain,
.empire-courtyard-world.is-great-hall .empire-scene-layer .is-lanterns,
.empire-courtyard-world.is-great-hall .is-library-wall-left,
.empire-courtyard-world.is-great-hall .is-library-wall-right,
.empire-courtyard-world.is-great-hall .is-library-window,
.empire-courtyard-world.is-great-hall .is-library-desk,
.empire-courtyard-world.is-great-hall .is-library-shelves,
.empire-courtyard-world.is-great-hall .is-library-globe,
.empire-courtyard-world.is-great-hall .empire-scene-layer .is-upgrade { display:none; }
.empire-courtyard-world.is-great-hall .is-hall-wall-left,
.empire-courtyard-world.is-great-hall .is-hall-wall-right,
.empire-courtyard-world.is-great-hall .is-hall-window,
.empire-courtyard-world.is-great-hall .is-hall-dais,
.empire-courtyard-world.is-great-hall .is-hall-throne,
.empire-courtyard-world.is-great-hall .is-hall-table,
.empire-courtyard-world.is-great-hall .is-hall-banners,
.empire-courtyard-world.is-great-hall .is-hall-braziers,
.empire-courtyard-world.is-great-hall .is-armour-truth-stand { display:block; position:absolute; }
.empire-courtyard-world.is-great-hall .is-hall-wall-left,
.empire-courtyard-world.is-great-hall .is-hall-wall-right { top:5%; width:35%; height:77%; border:3px solid #8e713f; background: repeating-linear-gradient(180deg,transparent 0 13%,rgba(220,184,100,.2) 14% 16%,transparent 17% 27%),linear-gradient(145deg,#4f5964,#1c2733 70%); box-shadow:inset 0 0 0 8px rgba(4,11,19,.45),0 18px 28px rgba(0,0,0,.42); }
.empire-courtyard-world.is-great-hall .is-hall-wall-left { left:1%; transform:skewY(8deg); }
.empire-courtyard-world.is-great-hall .is-hall-wall-right { right:1%; transform:skewY(-8deg); }
.empire-courtyard-world.is-great-hall .is-hall-window { left:42%; top:7%; width:16%; height:31%; border:5px solid #d4af55; border-radius:50% 50% 4px 4px; background:linear-gradient(90deg,transparent 47%,rgba(212,175,85,.8) 48% 52%,transparent 53%),linear-gradient(180deg,transparent 47%,rgba(212,175,85,.8) 48% 52%,transparent 53%),radial-gradient(circle at 50% 26%,#fff3ae,#6fa4bb 38%,#243e55 72%); box-shadow:0 0 30px rgba(255,220,110,.35); }
.empire-courtyard-world.is-great-hall .is-hall-dais { left:35%; top:40%; width:30%; height:28%; clip-path:polygon(12% 18%,50% 0,88% 18%,100% 72%,52% 100%,0 72%); background:linear-gradient(145deg,#b88942,#50351f 72%); border:2px solid #d9b65d; filter:drop-shadow(0 14px 10px rgba(0,0,0,.4)); }
.empire-courtyard-world.is-great-hall .is-hall-throne { left:45%; top:35%; width:10%; height:28%; border:3px solid #e0bd63; border-radius:42% 42% 8px 8px; background:linear-gradient(90deg,#8a1f2e,#c4454d 50%,#7b1828); box-shadow:inset 0 0 0 6px rgba(77,10,20,.4),0 10px 16px rgba(0,0,0,.42); }
.empire-courtyard-world.is-great-hall .is-hall-table { left:32%; top:60%; width:36%; height:15%; border-radius:50%; background:radial-gradient(ellipse at 50% 35%,#c4944d,#65401f 72%); border:3px solid #d9b65d; box-shadow:0 12px 14px rgba(0,0,0,.42); }
.empire-courtyard-world.is-great-hall .is-hall-banners { inset:14% 10% auto; height:30%; background:linear-gradient(90deg,#8d1d2c 0 7%,transparent 7% 29%,#c79b3b 29% 36%,transparent 36% 64%,#c79b3b 64% 71%,transparent 71% 93%,#8d1d2c 93%); clip-path:polygon(0 0,100% 0,100% 72%,96% 100%,92% 72%,71% 72%,68% 100%,64% 72%,36% 72%,32% 100%,29% 72%,8% 72%,4% 100%,0 72%); opacity:.9; }
.empire-courtyard-world.is-great-hall .is-hall-braziers { inset:47% 14% auto; height:16%; background:radial-gradient(circle at 2% 38%,#fff2a0 0 2%,#f6a22d 3% 5%,transparent 7%),radial-gradient(circle at 98% 38%,#fff2a0 0 2%,#f6a22d 3% 5%,transparent 7%); filter:drop-shadow(0 0 12px rgba(255,162,45,.6)); }
.empire-courtyard-world .is-armour-truth-stand { display:none; }
.empire-courtyard-world.is-great-hall .is-armour-truth-stand { --truth-landmark-symbol:"○"; left:17%; top:39%; width:9%; height:33%; border:2px solid #caa858; border-radius:46% 46% 8px 8px; background:linear-gradient(90deg,transparent 0 26%,#59636b 27% 73%,transparent 74%),linear-gradient(180deg,rgba(214,185,101,.84) 0 8%,transparent 9% 42%,#7c5b2c 43% 57%,transparent 58%); box-shadow:0 13px 18px rgba(0,0,0,.38),inset 0 0 0 4px rgba(11,23,31,.38); }
.empire-courtyard-world.is-great-hall .is-armour-truth-stand::before { content:""; position:absolute; left:14%; right:14%; top:43%; height:16%; border:2px solid #f0d476; border-radius:5px; background:repeating-linear-gradient(90deg,#836326 0 11%,#d6b85e 12% 20%); box-shadow:0 0 12px rgba(240,212,118,.32); }
.empire-courtyard-world.is-great-hall .is-armour-truth-stand::after { content:var(--truth-landmark-symbol); position:absolute; left:50%; bottom:-13px; display:grid; width:28px; height:28px; place-items:center; transform:translateX(-50%); border:2px solid #e2c668; border-radius:50%; color:#fff1a7; background:#173042; font-style:normal; font-weight:900; box-shadow:0 6px 10px rgba(0,0,0,.35); }
.empire-courtyard-world.is-great-hall .is-armour-truth-stand > span,
.empire-courtyard-world.is-great-hall .is-armour-truth-stand > b { position:absolute; z-index:2; top:15%; width:18%; aspect-ratio:1; border:1px solid rgba(240,212,118,.64); border-radius:50%; background:#26343b; box-shadow:inset 0 0 0 2px rgba(5,15,22,.48); }
.empire-courtyard-world.is-great-hall .is-armour-truth-stand > span { left:20%; }
.empire-courtyard-world.is-great-hall .is-armour-truth-stand > b { right:20%; }
.empire-courtyard-world.is-great-hall .is-armour-truth-stand.is-evidence-reviewed,
.empire-courtyard-world.is-great-hall .is-armour-truth-stand.is-practice-reviewed { --truth-landmark-symbol:"◐"; }
.empire-courtyard-world.is-great-hall .is-armour-truth-stand.is-practice-reviewed { --truth-landmark-symbol:"◇"; }
.empire-courtyard-world.is-great-hall .is-armour-truth-stand.is-evidence-reviewed > span,
.empire-courtyard-world.is-great-hall .is-armour-truth-stand.is-practice-reviewed > span { background:#f4d978; box-shadow:0 0 10px rgba(244,217,120,.82),inset 0 0 0 2px rgba(255,247,190,.35); }
.empire-courtyard-world.is-great-hall .is-armour-truth-stand.is-practice-reviewed > b { background:#f4d978; box-shadow:0 0 10px rgba(244,217,120,.82),inset 0 0 0 2px rgba(255,247,190,.35); }
.empire-courtyard-world.is-great-hall .is-armour-truth-stand.is-practice-reviewed.is-affirming { --truth-landmark-symbol:"✓"; }
.empire-courtyard-world.is-great-hall .is-armour-truth-stand.is-practice-reviewed.is-affirming > span,
.empire-courtyard-world.is-great-hall .is-armour-truth-stand.is-practice-reviewed.is-affirming > b { background:#a7ddb8; box-shadow:0 0 10px rgba(151,218,176,.72),inset 0 0 0 2px rgba(235,255,241,.34); }
.empire-courtyard-world.is-great-hall .is-armour-truth-stand.is-practice-reviewed.is-review { --truth-landmark-symbol:"↺"; }
.empire-courtyard-world.is-great-hall .empire-scene-layer.is-light i { inset:-7% 30% 10%; transform:none; background:linear-gradient(180deg,rgba(255,234,151,.38),transparent 76%); }
.empire-courtyard-world.is-great-hall .empire-scene-layer.is-foreground i,
.empire-courtyard-world.is-great-hall .empire-scene-layer.is-foreground b { bottom:-9%; height:29%; background:linear-gradient(160deg,#35261d,#0a0f16 78%); }
.empire-courtyard-world.is-great-hall .empire-courtyard-hotspot.is-great-hall { top:5%; left:39%; }
.empire-courtyard-world.is-great-hall .empire-courtyard-hotspot.is-courtyard { left:3%; bottom:8%; }
.empire-courtyard-world.is-great-hall .empire-courtyard-hotspot.is-library { top:auto; right:3%; bottom:8%; }
@media (max-width:640px) {
  .empire-courtyard-world.is-great-hall .is-hall-wall-left { left:-9%; }
  .empire-courtyard-world.is-great-hall .is-hall-wall-right { right:-9%; }
  .empire-courtyard-world.is-great-hall .is-hall-dais { left:29%; width:42%; }
  .empire-courtyard-world.is-great-hall .is-hall-table { left:25%; width:50%; }
  .empire-courtyard-world.is-great-hall .is-armour-truth-stand { left:9%; width:13%; }
  .empire-courtyard-world.is-great-hall .empire-courtyard-hotspot.is-great-hall { left:27%; }
}

/* Server-rendered learning → build → mission → next-lesson journey */
.empire-playable-loop { margin: 0 0 14px; }
.empire-playable-loop ol { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 8px; margin: 0; padding: 0; list-style: none; }
.empire-playable-loop li { position: relative; min-width: 0; }
.empire-playable-loop li:not(:last-child)::after { content: ""; position: absolute; z-index: 0; top: 24px; right: -9px; width: 10px; border-top: 2px solid rgba(212,175,85,.48); }
.empire-playable-loop a { position: relative; z-index: 1; display: grid; grid-template-columns: 38px minmax(0,1fr); gap: 8px; min-height: 66px; align-items: center; padding: 8px; border: 1px solid rgba(212,175,85,.3); border-radius: 14px; color: #f8f1d4; text-decoration: none; background: linear-gradient(145deg,rgba(16,38,57,.94),rgba(7,20,34,.96)); box-shadow: inset 0 1px rgba(255,255,255,.05); }
.empire-playable-loop a > span:first-child { display: grid; width: 38px; height: 38px; place-items: center; border: 1px solid rgba(212,175,85,.58); border-radius: 50%; background: rgba(212,175,85,.12); font-size: 1.05rem; }
.empire-playable-loop strong,.empire-playable-loop small { display: block; min-width: 0; }
.empire-playable-loop strong { font-size: .8rem; letter-spacing: .03em; }
.empire-playable-loop small { margin-top: 2px; color: #c9d7df; font-size: .68rem; line-height: 1.25; overflow-wrap: anywhere; }
.empire-playable-loop .is-complete a { border-color: rgba(104,198,143,.56); }
.empire-playable-loop .is-complete a > span:first-child { border-color: #75c798; background: rgba(67,158,107,.18); }
.empire-playable-loop .is-current a,.empire-playable-loop .is-ready a { border-color: #e2c86c; box-shadow: 0 0 0 1px rgba(226,200,108,.16),0 8px 20px rgba(0,0,0,.22); }
.empire-playable-loop .is-waiting { opacity: .74; }
.empire-playable-loop a:focus-visible { outline: 3px solid #fff0a4; outline-offset: 2px; }
@media (max-width: 760px) {
  .empire-playable-loop ol { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .empire-playable-loop li::after { display: none; }
}
@media (max-width: 430px) {
  .empire-playable-loop a { grid-template-columns: 32px minmax(0,1fr); min-height: 62px; padding: 7px; }
  .empire-playable-loop a > span:first-child { width: 32px; height: 32px; }
  .empire-playable-loop strong { font-size: .74rem; }
  .empire-playable-loop small { font-size: .63rem; }
}

/* Contextual 2.5D construction and mission scene interactions. */
.empire-scene-context-actions{position:absolute;z-index:12;right:14px;bottom:16px;display:flex;gap:8px;max-width:calc(100% - 28px)}
.empire-scene-context-actions a{display:flex;align-items:center;gap:7px;min-height:42px;padding:8px 11px;border:1px solid rgba(255,235,153,.72);border-radius:999px;color:#fff7d1;text-decoration:none;background:rgba(7,24,38,.9);box-shadow:0 8px 22px rgba(0,0,0,.32);backdrop-filter:blur(7px)}
.empire-scene-context-actions a:hover,.empire-scene-context-actions a:focus-visible{background:#17364d;outline:3px solid #fff0a4;outline-offset:2px}
.empire-scene-context-actions strong{font-size:.72rem;line-height:1.15}
.empire-scene-context-panel{position:absolute;z-index:18;right:16px;bottom:72px;display:grid;grid-template-columns:42px minmax(0,1fr);gap:12px;width:min(390px,calc(100% - 32px));padding:16px 46px 16px 16px;border:1px solid rgba(234,207,111,.72);border-radius:18px;color:#f7f1da;background:linear-gradient(145deg,rgba(13,39,57,.98),rgba(5,19,31,.98));box-shadow:0 18px 46px rgba(0,0,0,.48)}
.empire-scene-context-panel[hidden]{display:none!important}
.empire-scene-context-panel h4,.empire-scene-context-panel p{margin:0}
.empire-scene-context-panel h4{margin:.15rem 0 .35rem;font-size:1rem;color:#fff4b0}
.empire-scene-context-panel p{margin-bottom:10px;color:#d7e2e8;font-size:.78rem;line-height:1.45}
.empire-scene-context-panel small{color:#e8c96b;font-weight:850;text-transform:uppercase;letter-spacing:.06em}
.empire-scene-context-icon{display:grid;width:42px;height:42px;place-items:center;border:1px solid rgba(232,201,107,.7);border-radius:50%;background:rgba(232,201,107,.12);font-size:1.15rem}
.empire-scene-context-close{position:absolute;top:8px;right:8px;width:34px;height:34px;border:0;border-radius:50%;color:#fff;background:rgba(255,255,255,.1);font-size:1.25rem;cursor:pointer}
.empire-scene-context-close:focus-visible{outline:3px solid #fff0a4}
@media(max-width:560px){.empire-scene-context-actions{right:8px;bottom:10px;left:8px;justify-content:center}.empire-scene-context-actions a{flex:1;justify-content:center;min-width:0;padding:7px}.empire-scene-context-actions strong{font-size:.64rem;overflow-wrap:anywhere}.empire-scene-context-panel{right:8px;bottom:62px;width:calc(100% - 16px);padding:13px 42px 13px 13px}.empire-scene-context-panel p{font-size:.72rem}}
@media(prefers-reduced-motion:reduce){.empire-scene-context-actions a,.empire-scene-context-panel{transition:none!important}}

/* Student subject picker: CSP-safe extracted component styles (Session 44) */
  .student-subject-picker {
    --picker-navy: #102744;
    --picker-gold: #d6ad48;
    --picker-cream: #fffaf0;
  }
  .student-subject-hero {
    align-items: center;
  }
  .student-subject-grade {
    align-items: center;
    background: rgba(255,255,255,.12);
    border: 1px solid rgba(255,255,255,.24);
    border-radius: 18px;
    display: flex;
    flex: 0 0 auto;
    gap: .8rem;
    padding: .9rem 1.1rem;
  }
  .student-subject-grade strong,
  .student-subject-grade span {
    display: block;
  }
  .student-subject-grade strong {
    color: #fff;
    font-size: 1.6rem;
    line-height: 1;
  }
  .student-subject-grade span {
    color: #efd98f;
    font-size: .78rem;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
  }
  .student-subject-controls {
    align-items: end;
    background: #fff;
    border: 1px solid rgba(16,39,68,.12);
    border-radius: 18px;
    box-shadow: 0 14px 35px rgba(7,23,43,.07);
    display: grid;
    gap: 1rem;
    grid-template-columns: minmax(220px, 1fr) minmax(150px, .35fr) auto;
    margin: 0 0 1.25rem;
    padding: 1rem;
  }
  .student-subject-control label {
    color: #344054;
    display: block;
    font-size: .8rem;
    font-weight: 850;
    margin: 0 0 .4rem;
  }
  .student-subject-control input,
  .student-subject-control select {
    background: #fffdf8;
    border: 1px solid #cfc8ba;
    border-radius: 12px;
    font: inherit;
    min-height: 46px;
    padding: .7rem .8rem;
    width: 100%;
  }
  .student-subject-control input:focus,
  .student-subject-control select:focus {
    border-color: #9b741d;
    box-shadow: 0 0 0 3px rgba(214,173,72,.22);
    outline: none;
  }
  .student-subject-reset {
    min-height: 46px;
    white-space: nowrap;
  }
  .student-subject-summary {
    align-items: center;
    display: flex;
    gap: .7rem;
    justify-content: space-between;
    margin: 0 0 1rem;
  }
  .student-subject-summary h2 {
    margin: 0;
  }
  .student-subject-count {
    background: #eaf4ed;
    border-radius: 999px;
    color: #185c31;
    font-size: .78rem;
    font-weight: 850;
    padding: .4rem .7rem;
  }
  .student-subject-list {
    display: grid;
    gap: 1rem;
  }
  .student-subject-card {
    background: #fff;
    border: 1px solid rgba(16,39,68,.12);
    border-radius: 20px;
    box-shadow: 0 16px 40px rgba(7,23,43,.07);
    display: grid;
    grid-template-columns: minmax(170px, .34fr) minmax(0, 1fr);
    overflow: hidden;
  }
  .student-subject-cover {
    background: var(--picker-navy);
    min-height: 230px;
    position: relative;
  }
  .student-subject-cover img {
    height: 100%;
    inset: 0;
    object-fit: cover;
    position: absolute;
    width: 100%;
  }
  .student-subject-cover::after {
    background: linear-gradient(180deg, transparent 45%, rgba(7,23,43,.78));
    content: "";
    inset: 0;
    position: absolute;
  }
  .student-subject-cover-badge {
    background: rgba(7,23,43,.84);
    border: 1px solid rgba(255,255,255,.2);
    border-radius: 999px;
    bottom: 1rem;
    color: #fff;
    font-size: .76rem;
    font-weight: 850;
    left: 1rem;
    padding: .4rem .65rem;
    position: absolute;
    z-index: 1;
  }
  .student-subject-body {
    padding: 1.2rem;
  }
  .student-subject-heading {
    align-items: start;
    display: flex;
    gap: 1rem;
    justify-content: space-between;
    margin-bottom: 1rem;
  }
  .student-subject-heading h3 {
    color: var(--picker-navy);
    font-size: clamp(1.2rem, 2.5vw, 1.65rem);
    margin: .15rem 0 .2rem;
  }
  .student-subject-heading p {
    color: #667085;
    margin: 0;
  }
  .student-term-grid {
    display: grid;
    gap: .65rem;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .student-term-choice {
    align-items: center;
    background: var(--picker-cream);
    border: 1px solid #e1d8c7;
    border-radius: 14px;
    display: grid;
    gap: .75rem;
    grid-template-columns: auto minmax(0, 1fr) auto;
    padding: .75rem;
  }
  .student-term-number {
    align-items: center;
    background: var(--picker-navy);
    border-radius: 11px;
    color: #fff;
    display: flex;
    flex-direction: column;
    font-weight: 900;
    height: 50px;
    justify-content: center;
    line-height: 1;
    min-width: 50px;
  }
  .student-term-number small {
    color: #efd98f;
    font-size: .58rem;
    letter-spacing: .05em;
    margin-bottom: .2rem;
    text-transform: uppercase;
  }
  .student-term-details strong,
  .student-term-details span {
    display: block;
  }
  .student-term-details strong {
    color: var(--picker-navy);
  }
  .student-term-details span {
    color: #667085;
    font-size: .76rem;
    margin-top: .15rem;
  }
  .student-term-choice form {
    margin: 0;
  }
  .student-term-choice .button {
    min-height: 42px;
    padding: .65rem .8rem;
    white-space: nowrap;
  }
  .student-subject-no-results {
    background: #fff;
    border: 1px dashed #b8ad9c;
    border-radius: 18px;
    padding: 2rem;
    text-align: center;
  }
  [hidden] {
    display: none !important;
  }
  @media (max-width: 860px) {
    .student-subject-controls {
      grid-template-columns: 1fr 1fr;
    }
    .student-subject-reset {
      grid-column: 1 / -1;
    }
    .student-subject-card {
      grid-template-columns: 140px minmax(0, 1fr);
    }
    .student-term-grid {
      grid-template-columns: 1fr;
    }
  }
  @media (max-width: 620px) {
    .student-subject-hero {
      align-items: stretch;
      flex-direction: column;
    }
    .student-subject-grade {
      width: 100%;
    }
    .student-subject-controls,
    .student-subject-card {
      grid-template-columns: 1fr;
    }
    .student-subject-cover {
      min-height: 150px;
    }
    .student-subject-heading {
      display: block;
    }
    .student-term-choice {
      grid-template-columns: auto minmax(0, 1fr);
    }
    .student-term-choice form {
      grid-column: 1 / -1;
    }
    .student-term-choice .button {
      width: 100%;
    }
  }

/* Session 44: child-readable subject-picker labels after CSP extraction. */
.student-subject-picker .eyebrow,
.student-subject-grade span,
.student-subject-control label,
.student-subject-count,
.student-subject-cover-badge,
.student-term-number small,
.student-term-details span {
  font-size: 0.875rem;
}
.student-term-number {
  min-width: 58px;
  height: 58px;
}

/* Session 45: fail-closed combat integrity state. */
.empire-combat-integrity-error {
  grid-column: 1 / -1;
  display: grid;
  gap: 5px;
  padding: 13px 14px;
  border: 1px solid #b45a57;
  border-radius: 10px;
  color: #5f2220;
  background: #fff2ef;
  font-size: 0.875rem;
  line-height: 1.45;
}
.empire-combat-integrity-error strong { color: #4e1918; }
/* Admin security command centre */
.security-monitor-banner {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: clamp(1rem, 2vw, 1.5rem);
  align-items: center;
  margin: 0 0 1.5rem;
  padding: clamp(1rem, 2.4vw, 1.6rem);
  border: 2px solid #c6a15b;
  border-radius: 20px;
  background: linear-gradient(135deg, #07172f, #10294e);
  color: #fff;
  box-shadow: 0 14px 32px rgba(4, 17, 38, .18);
}
.security-monitor-banner.monitor-state-missing,
.security-monitor-banner.monitor-state-stale,
.security-monitor-banner.monitor-state-failed { border-left-width: 8px; }
.security-monitor-banner.monitor-state-healthy { border-color: #78b98d; }
.security-monitor-banner.monitor-state-stale { border-color: #e0ad53; }
.security-monitor-banner.monitor-state-failed { border-color: #db7777; }
.security-monitor-banner.monitor-state-missing { border-color: #aab3c1; }
.security-monitor-banner-icon {
  display: grid;
  place-items: center;
  width: 3rem;
  height: 3rem;
  border: 2px solid currentColor;
  border-radius: 50%;
  font-size: 1.45rem;
  font-weight: 900;
}
.security-monitor-banner-copy { min-width: 0; }
.security-monitor-banner h2,
.security-monitor-banner p { color: inherit; }
.security-monitor-banner h2 { margin: .15rem 0 .45rem; }
.security-monitor-banner-copy > p:last-child { margin-bottom: 0; }
.security-monitor-banner dl {
  display: flex;
  flex-wrap: wrap;
  gap: .6rem 1.4rem;
  margin: .75rem 0 0;
}
.security-monitor-banner dl div { display: flex; flex-wrap: wrap; gap: .35rem; }
.security-monitor-banner dt { font-weight: 800; }
.security-monitor-banner dd { margin: 0; }
.security-monitor-reset-warning {
  margin-top: .85rem;
  padding: .7rem .85rem;
  border: 1px solid rgba(255, 255, 255, .35);
  border-radius: 12px;
  background: rgba(0, 0, 0, .16);
}
.security-monitor-banner .button { min-width: 11rem; }

.security-confirmation-panel {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(16rem, .75fr);
  gap: 1rem 1.5rem;
  align-items: end;
  border: 2px solid #c6a15b;
  background: linear-gradient(145deg, #fffdf7, #f7efdd);
}
.security-confirmation-panel h2 { margin: .2rem 0 .45rem; }
.security-confirmation-form { margin: 0; }
.security-confirmation-actions { display: flex; flex-wrap: wrap; gap: .75rem; }
.security-cancel-form { grid-column: 2; }
.security-cancel-form .button { width: 100%; }

.security-command-section { scroll-margin-top: 1rem; }
.security-command-section .admin-section-heading {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: flex-start;
}
.security-status-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2rem;
  padding: .3rem .65rem;
  border: 1px solid currentColor;
  border-radius: 999px;
  font-size: .78rem;
  font-weight: 900;
  line-height: 1.15;
  white-space: nowrap;
}
.security-status-pill.status-pass,
.security-component.status-pass .security-component-head > span { color: #17653a; }
.security-status-pill.status-warning,
.security-component.status-warning .security-component-head > span { color: #805500; }
.security-status-pill.status-fail,
.security-component.status-fail .security-component-head > span { color: #9d2525; }
.security-status-pill.status-unknown,
.security-component.status-unknown .security-component-head > span { color: #4f596a; }

.security-evidence-grid,
.security-component-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}
.security-evidence-grid article,
.security-component {
  min-width: 0;
  padding: clamp(1rem, 2vw, 1.35rem);
  border: 1px solid #d9dee7;
  border-radius: 16px;
  background: #fff;
}
.security-evidence-grid h3,
.security-component h3 { margin: 0 0 .8rem; }
.security-evidence-grid dl { margin: 0; }
.security-evidence-grid dl div {
  display: grid;
  grid-template-columns: minmax(8rem, .9fr) minmax(0, 1.1fr);
  gap: .75rem;
  padding: .58rem 0;
  border-top: 1px solid #e7eaf0;
}
.security-evidence-grid dl div:first-child { border-top: 0; padding-top: 0; }
.security-evidence-grid dt { font-weight: 800; }
.security-evidence-grid dd { min-width: 0; margin: 0; overflow-wrap: anywhere; }
.security-component { border-left-width: 5px; }
.security-component.status-pass { border-left-color: #3b9460; }
.security-component.status-warning { border-left-color: #d29b31; }
.security-component.status-fail { border-left-color: #c94b4b; }
.security-component.status-unknown { border-left-color: #8d97a8; }
.security-component-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: .75rem;
}
.security-component-head > span {
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  font-weight: 900;
  white-space: nowrap;
}
.security-component p { margin: .65rem 0; }
.security-component small { display: block; overflow-wrap: anywhere; }

.security-session-layout {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}
.security-session-layout > .panel { min-width: 0; margin: 0; }
.security-list-heading {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 1rem;
  margin-bottom: 1rem;
}
.security-list-heading h3 { margin: 0 0 .25rem; }
.security-list-heading p { margin: 0; }
.security-safe-list { margin: 0; padding: 0; list-style: none; }
.security-safe-list li {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: .9rem 0;
  border-top: 1px solid #e2e6ed;
}
.security-safe-list li > div { min-width: 0; }
.security-safe-list strong { overflow-wrap: anywhere; }
.security-safe-list small { display: block; margin-top: .3rem; overflow-wrap: anywhere; }
.security-current-badge {
  display: inline-block;
  margin-left: .45rem;
  padding: .15rem .45rem;
  border-radius: 999px;
  background: #e7f4eb;
  color: #17653a;
  font-size: .72rem;
  font-weight: 900;
  vertical-align: middle;
}
.security-empty-state {
  margin: 0;
  padding: 1rem;
  border: 1px dashed #bac2ce;
  border-radius: 12px;
}
.security-fresh-password { padding-top: .35rem; }
.security-protected-inline {
  display: grid;
  grid-template-columns: minmax(9rem, 1fr) auto;
  gap: .65rem;
  align-items: end;
}
.security-protected-inline .field { margin: 0; }

.security-troubleshooting {
  border: 2px solid #c6a15b;
  background: #fffdf8;
}
.security-troubleshooting ol { padding-left: 1.35rem; }
.security-troubleshooting li { margin: .75rem 0; }
.security-reset-warning {
  margin-top: 1rem;
  padding: 1rem;
  border: 2px solid #c94b4b;
  border-radius: 14px;
  background: #fff5f5;
}

.security-event-filters {
  display: grid;
  grid-template-columns: minmax(12rem, 1fr) minmax(10rem, .6fr) auto;
  gap: 1rem;
  align-items: end;
  margin: 0 0 1rem;
}
.security-event-filters .field { margin: 0; }
.security-event-table-wrap { max-width: 100%; overflow-x: auto; }
.security-event-table { min-width: 44rem; }
.security-correlation {
  font-size: .8rem;
  letter-spacing: .05em;
  overflow-wrap: anywhere;
}
.security-event-pagination {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  margin-top: 1rem;
}
.security-event-pagination a {
  display: grid;
  place-items: center;
  min-width: 2.75rem;
  min-height: 2.75rem;
  padding: .35rem;
  border: 1px solid #9aa5b5;
  border-radius: 10px;
  text-decoration: none;
  font-weight: 800;
}
.security-event-pagination a[aria-current="page"] {
  border-color: #c6a15b;
  background: #10294e;
  color: #fff;
}

.security-command-section button,
.security-command-section .button,
.security-monitor-banner .button,
.security-confirmation-panel button,
.security-event-review button,
.security-event-review select {
  min-height: 44px;
}
.security-command-section :focus-visible,
.security-monitor-banner :focus-visible,
.security-confirmation-panel :focus-visible,
.security-event-review :focus-visible {
  outline: 3px solid #e6b95b;
  outline-offset: 3px;
}

@media (max-width: 880px) {
  .security-monitor-banner { grid-template-columns: auto minmax(0, 1fr); }
  .security-monitor-banner .button { grid-column: 1 / -1; width: 100%; }
  .security-confirmation-panel,
  .security-evidence-grid,
  .security-component-grid,
  .security-session-layout { grid-template-columns: 1fr; }
  .security-cancel-form { grid-column: 1; }
  .security-event-filters { grid-template-columns: 1fr 1fr; }
  .security-event-filters .button { grid-column: 1 / -1; width: 100%; }
}

@media (max-width: 620px) {
  .security-monitor-banner { grid-template-columns: 1fr; }
  .security-monitor-banner-icon { width: 2.6rem; height: 2.6rem; }
  .security-command-section .admin-section-heading,
  .security-component-head,
  .security-list-heading,
  .security-safe-list li { align-items: stretch; flex-direction: column; }
  .security-status-pill { align-self: flex-start; white-space: normal; }
  .security-evidence-grid dl div { grid-template-columns: 1fr; gap: .2rem; }
  .security-event-filters { grid-template-columns: 1fr; }
  .security-event-filters .button { grid-column: 1; }
  .security-protected-inline { grid-template-columns: 1fr; }
  .security-safe-list form,
  .security-safe-list button,
  .security-list-heading form,
  .security-list-heading button { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  .security-monitor-banner,
  .security-component,
  .security-status-pill { transition: none !important; animation: none !important; }
}

/* Security evidence ledger and posture, schema 35 */
.security-gate-tabs button:focus-visible,
.security-gate-review-form button:focus-visible {
  outline: 3px solid #e6b95b;
  outline-offset: 3px;
}
.security-gate-ledger {
  position: relative;
  overflow: clip;
  border: 1px solid #cbb783;
  border-radius: 22px;
  background:
    radial-gradient(circle at top right, rgba(230,185,91,.16), transparent 34rem),
    linear-gradient(180deg, #fffefa, #f7f3e9);
  box-shadow: 0 18px 45px rgba(7,23,43,.1);
}
.security-gate-ledger-heading { align-items: flex-start; }
.security-gate-tabs {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .4rem;
  max-width: 64rem;
  margin: 1rem 0 1.2rem;
  padding: .35rem;
  border: 1px solid #cfd5de;
  border-radius: 14px;
  background: #eef1f5;
}
.security-gate-tabs button {
  min-height: 48px;
  padding: .65rem 1rem;
  border: 0;
  border-radius: 10px;
  background: transparent;
  color: #263a58;
  font: inherit;
  font-weight: 900;
  cursor: pointer;
}
.security-gate-tabs button span {
  display: block;
  margin-top: .1rem;
  font-size: .7rem;
  font-weight: 750;
  opacity: .76;
}
.security-gate-tabs button[aria-selected="true"] {
  background: #10294e;
  color: #fff;
  box-shadow: 0 7px 16px rgba(16,41,78,.2);
}
.security-gate-panel + .security-gate-panel {
  margin-top: 1.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid #d9dee6;
}
.security-gate-ledger.is-enhanced .security-gate-panel + .security-gate-panel {
  margin-top: 0;
  padding-top: 0;
  border-top: 0;
}
.security-gate-ledger.is-enhanced [role="tabpanel"][hidden] { display: none; }
.security-gate-panel-intro {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1rem;
}
.security-gate-panel-intro h3 { margin: 0 0 .35rem; }
.security-gate-panel-intro p { max-width: 70rem; margin: 0; }
.security-gate-panel-intro > span {
  flex: 0 0 auto;
  align-self: flex-start;
  padding: .35rem .65rem;
  border-radius: 999px;
  background: #10294e;
  color: #fff;
  font-size: .78rem;
  font-weight: 900;
}
.security-gate-card-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}
.security-gate-card {
  min-width: 0;
  padding: 1.05rem;
  border: 1px solid #d5dae2;
  border-radius: 18px;
  background: rgba(255,255,255,.96);
  box-shadow: 0 8px 22px rgba(7,23,43,.06);
}
.security-gate-card-head {
  display: flex;
  align-items: flex-start;
  gap: .75rem;
  min-width: 0;
}
.security-gate-card-head > div { min-width: 0; flex: 1; }
.security-gate-card h4 { margin: .1rem 0 0; overflow-wrap: anywhere; }
.security-gate-kicker { margin: 0; color: #58677b; font-size: .78rem; font-weight: 850; }
.provider-crest {
  display: grid;
  place-items: center;
  flex: 0 0 2.6rem;
  width: 2.6rem;
  height: 2.6rem;
  border: 2px solid rgba(198,161,91,.75);
  border-radius: 12px 12px 16px 16px;
  background: #10294e;
  color: #f5d689;
  font-weight: 950;
  box-shadow: inset 0 0 0 2px rgba(255,255,255,.1);
}
.provider-openai { background: #173d37; }
.provider-bing { background: #145d78; }
.provider-apple { background: #30343a; }
.provider-amazon { background: #5c421d; }
.provider-anthropic { background: #5a3d35; }
.provider-perplexity { background: #145f62; }
.provider-automation { background: #684f1f; }
.provider-browser { background: #425a70; }
.provider-blocked { background: #852f35; }
.security-cache-state {
  flex: 0 0 auto;
  padding: .25rem .5rem;
  border: 1px solid currentColor;
  border-radius: 999px;
  font-size: .7rem;
  font-weight: 900;
}
.security-cache-state.cache-healthy { color: #17653a; }
.security-cache-state.cache-stale { color: #805500; }
.security-cache-state.cache-unavailable { color: #9d2525; }
.security-gate-card dl { margin: .9rem 0 0; }
.security-gate-card dl div {
  display: grid;
  grid-template-columns: minmax(7.4rem, .75fr) minmax(0, 1.25fr);
  gap: .7rem;
  padding: .48rem 0;
  border-top: 1px solid #e5e8ed;
}
.security-gate-card dt { font-weight: 850; }
.security-gate-card dd { min-width: 0; margin: 0; overflow-wrap: anywhere; }
.security-gate-card code {
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.security-gate-review-form { margin-top: 1rem; }
.security-gate-review-form .button { width: 100%; min-height: 44px; }
.security-gate-empty {
  padding: 1.5rem;
  border: 1px dashed #aeb7c5;
  border-radius: 16px;
  background: rgba(255,255,255,.7);
  text-align: center;
}
.security-gate-empty p { margin: .35rem 0 0; }
.security-gate-privacy-note {
  margin: 1.15rem 0 0;
  padding-top: 1rem;
  border-top: 1px solid #d9dee6;
  color: #4f596a;
  font-size: .88rem;
}
.security-posture-summary {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 1.2rem;
  margin: 1rem 0;
  padding: 1.1rem;
  border: 1px solid #cbb783;
  border-radius: 18px;
  background: #fffdf8;
}
.security-score-orb {
  display: grid;
  place-items: center;
  width: 7rem;
  height: 7rem;
  border: 7px solid #c6a15b;
  border-radius: 50%;
  background: #10294e;
  color: #fff;
  line-height: 1;
}
.security-score-orb strong { font-size: 2.2rem; }
.security-score-orb span { font-size: .75rem; opacity: .82; }
.security-severe-failure { margin: 1rem 0; }
.security-incident-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
}
.security-incident-card {
  min-width: 0;
  padding: 1rem;
  border: 1px solid #d9dee7;
  border-left: 5px solid #8d97a8;
  border-radius: 14px;
  background: #fff;
}
.security-incident-card.status-warning { border-left-color: #d29b31; }
.security-incident-card.status-fail { border-left-color: #c94b4b; }
.security-incident-card.status-pass { border-left-color: #3b9460; }
.security-incident-card h3 { margin: .45rem 0; }
.security-incident-card dl { margin: 0; }
.security-incident-card dl div { display: flex; justify-content: space-between; gap: .8rem; padding: .35rem 0; }
.security-incident-card dd { margin: 0; text-align: right; overflow-wrap: anywhere; }

@media (max-width: 1024px) {
  .security-gate-card-grid { grid-template-columns: 1fr; }
  .security-incident-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 768px) {
  .security-gate-tabs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .security-gate-ledger { border-radius: 16px; }
  .security-gate-panel-intro { flex-direction: column; }
  .security-posture-summary { align-items: start; }
}
@media (max-width: 520px) {
  .security-gate-tabs { grid-template-columns: 1fr; max-width: none; }
  .security-gate-card-head { flex-wrap: wrap; }
  .security-cache-state { margin-left: 3.35rem; }
  .security-gate-card dl div { grid-template-columns: 1fr; gap: .12rem; }
  .security-posture-summary { grid-template-columns: 1fr; text-align: center; }
  .security-score-orb { margin-inline: auto; }
  .security-incident-grid { grid-template-columns: 1fr; }
}
@media (max-width: 340px) {
  .security-gate-tabs button { padding-inline: .45rem; font-size: .9rem; }
  .security-gate-card { padding: .85rem; }
  .security-cache-state { margin-left: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .security-gate-tabs button,
  .security-gate-card { scroll-behavior: auto; transition: none !important; animation: none !important; }
}

/* Focused security administration */
.security-calm-heading {
  max-width: 74rem;
  padding: clamp(1.1rem, 2.4vw, 1.65rem);
  border: 1px solid #dce2e9;
  border-radius: 18px;
  background: #fff;
}

.security-calm-heading > div {
  max-width: 50rem;
}

.security-page-flash {
  margin: 0 0 1rem;
}

.security-hub {
  display: grid;
  gap: clamp(1.4rem, 3vw, 2.2rem);
}

.security-hub-group {
  padding-top: .25rem;
}

.security-hub-group + .security-hub-group {
  padding-top: clamp(1.4rem, 3vw, 2.1rem);
  border-top: 1px solid #dce2e9;
}

.security-hub-group-heading {
  margin-bottom: .9rem;
}

.security-hub-group-heading h2 {
  margin: .12rem 0 .35rem;
  font-size: clamp(1.25rem, 2vw, 1.65rem);
}

.security-hub-group-heading p:last-child {
  max-width: 44rem;
  margin: 0;
  color: var(--muted);
}

.security-hub-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .8rem;
}

.security-hub-link {
  display: flex;
  min-width: 0;
  min-height: 9rem;
  padding: 1.15rem;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  border: 1px solid #d6dde6;
  border-radius: 16px;
  background: #fff;
  color: var(--navy);
  text-decoration: none;
}

.security-hub-link:hover {
  border-color: #b48b3e;
  background: #fffdf8;
  text-decoration: none;
}

.security-hub-link:focus-visible {
  outline: 3px solid #e6b95b;
  outline-offset: 3px;
}

.security-hub-link-copy {
  display: grid;
  gap: .45rem;
  min-width: 0;
}

.security-hub-link-copy strong {
  font-size: 1.08rem;
}

.security-hub-link-copy > span {
  color: var(--muted);
  line-height: 1.55;
}

.security-hub-link-action {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  gap: .35rem;
  min-height: 2.5rem;
  padding: .45rem .65rem;
  border-radius: 999px;
  background: #eef2f6;
  font-size: .78rem;
  font-weight: 900;
  white-space: nowrap;
}

.security-calm-note {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1.2rem;
  margin-top: 1rem;
  padding: clamp(1rem, 2.4vw, 1.4rem);
  border: 1px solid #d6dde6;
  border-left: 5px solid #b48b3e;
  border-radius: 16px;
  background: #fffdf8;
}

.security-calm-note h2 {
  margin: .15rem 0 .45rem;
  font-size: clamp(1.2rem, 2vw, 1.55rem);
}

.security-calm-note p:last-child {
  max-width: 52rem;
  margin-bottom: 0;
}

.security-readiness-badge {
  display: inline-flex;
  flex: 0 0 auto;
  min-height: 2rem;
  padding: .35rem .65rem;
  align-items: center;
  border: 1px solid #8d97a8;
  border-radius: 999px;
  color: #4f596a;
  background: #fff;
  font-size: .76rem;
  font-weight: 900;
  white-space: nowrap;
}

.security-page-boundaries {
  max-width: 74rem;
}

.security-boundary-list {
  display: grid;
  gap: .65rem;
}

.security-boundary-list p {
  margin: 0;
  padding: .9rem 1rem;
  border: 1px solid #dce2e9;
  border-radius: 14px;
  background: #fff;
  line-height: 1.55;
}

.security-confirm-page {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(17rem, .9fr);
  gap: 1.25rem 1.5rem;
  align-items: start;
  max-width: 58rem;
  margin: 0;
  border: 1px solid #c9d1dc;
  border-top: 5px solid #b48b3e;
  background: #fff;
}

.security-confirm-page-copy h2 {
  margin: .15rem 0 .55rem;
}

.security-confirm-page-copy dl {
  display: grid;
  gap: .4rem;
  margin: 1rem 0 0;
}

.security-confirm-page-copy dl div {
  display: grid;
  grid-template-columns: minmax(9rem, .8fr) minmax(0, 1.2fr);
  gap: .75rem;
  padding-top: .55rem;
  border-top: 1px solid #e3e7ed;
}

.security-confirm-page-copy dt {
  font-weight: 800;
}

.security-confirm-page-copy dd {
  margin: 0;
}

.security-confirm-page-form {
  margin: 0;
}

.security-confirm-page-form .button,
.security-confirm-cancel .button {
  width: 100%;
  min-height: 44px;
}

.security-confirm-cancel {
  grid-column: 2;
}

@media (max-width: 820px) {
  .security-hub-grid,
  .security-confirm-page {
    grid-template-columns: 1fr;
  }

  .security-confirm-cancel {
    grid-column: 1;
  }
}

@media (max-width: 620px) {
  .security-calm-heading,
  .security-calm-note,
  .security-hub-link {
    align-items: stretch;
    flex-direction: column;
  }

  .security-calm-heading .button,
  .security-calm-note .button,
  .security-hub-link-action,
  .security-readiness-badge {
    align-self: flex-start;
  }

  .security-hub-link {
    min-height: 0;
  }

  .security-confirm-page-copy dl div {
    grid-template-columns: 1fr;
    gap: .2rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .security-hub-link {
    transition: none !important;
  }
}

/* Focused security evidence pages */
.security-evidence-banner {
  max-width: 74rem;
  margin: 1rem 0 0;
  padding: clamp(1.05rem, 2.4vw, 1.5rem);
  border: 1px solid #d6dde6;
  border-left: 5px solid #8d97a8;
  border-radius: 16px;
  background: #fff;
}

.security-evidence-banner.evidence-state-healthy { border-left-color: #3b9460; background: #fbfefc; }
.security-evidence-banner.evidence-state-stale { border-left-color: #d29b31; background: #fffdf8; }
.security-evidence-banner.evidence-state-failed { border-left-color: #c94b4b; background: #fffafa; }
.security-evidence-banner.evidence-state-missing { border-left-color: #8d97a8; background: #fbfcfd; }

.security-evidence-banner-copy { max-width: 60rem; }
.security-evidence-banner h2 { margin: .2rem 0 .5rem; font-size: clamp(1.25rem, 2.2vw, 1.7rem); }
.security-evidence-banner p:last-child { margin-bottom: 0; }

.security-section-kicker-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: .8rem;
}

.security-section-kicker-row .eyebrow { margin: .35rem 0 0; }

.security-evidence-meta {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .65rem;
  margin: 1rem 0 0;
}

.security-evidence-meta div {
  min-width: 0;
  padding: .8rem;
  border: 1px solid #e0e5ec;
  border-radius: 12px;
  background: #fff;
}

.security-evidence-meta dt { color: var(--muted); font-size: .72rem; font-weight: 850; text-transform: uppercase; letter-spacing: .035em; }
.security-evidence-meta dd { margin: .25rem 0 0; color: var(--navy); font-weight: 800; overflow-wrap: anywhere; }

.security-caution-note {
  margin-top: .9rem;
  padding: .75rem .85rem;
  border: 1px solid #e6cf9d;
  border-radius: 12px;
  background: #fff9eb;
}

.security-posture-summary-calm {
  border: 1px solid #dce2e9;
  background: #fff;
  box-shadow: none;
}

.security-page-evidence-notice { max-width: 74rem; margin-top: 1rem; }
.security-evidence-grid-activity { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.security-evidence-footnote { margin: 1rem 0 0; color: var(--muted); font-size: .84rem; }

.security-guidance-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .8rem;
}

.security-guidance-grid details,
.security-guidance-card {
  min-width: 0;
  padding: 1rem;
  border: 1px solid #dce2e9;
  border-radius: 14px;
  background: #fff;
}

.security-guidance-grid details summary {
  cursor: pointer;
  color: var(--navy);
  font-weight: 850;
  line-height: 1.4;
}

.security-guidance-grid details summary:focus-visible { outline: 3px solid #e6b95b; outline-offset: 3px; }
.security-guidance-grid details p { margin: .75rem 0 0; color: var(--muted); line-height: 1.6; }
.security-guidance-card h3 { margin: 0 0 .45rem; font-size: 1rem; }
.security-guidance-card p { margin: 0; color: var(--muted); line-height: 1.58; }

.security-gate-ledger-readonly { max-width: 74rem; }
.security-gate-card-note { margin: .9rem 0 0; padding-top: .75rem; border-top: 1px solid #e3e7ed; color: var(--muted); font-size: .82rem; line-height: 1.5; }

.security-history-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .8rem;
  max-width: 74rem;
  margin: 1rem 0 0;
}

.security-history-summary article {
  min-width: 0;
  padding: 1rem;
  border: 1px solid #dce2e9;
  border-radius: 14px;
  background: #fff;
}

.security-history-summary span,
.security-history-summary small { display: block; color: var(--muted); }
.security-history-summary span { font-size: .75rem; font-weight: 850; text-transform: uppercase; letter-spacing: .035em; }
.security-history-summary strong { display: block; margin: .3rem 0; color: var(--navy); font-size: 1.25rem; }
.security-history-summary small { line-height: 1.4; }

@media (max-width: 860px) {
  .security-evidence-meta,
  .security-evidence-grid-activity,
  .security-history-summary { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 620px) {
  .security-section-kicker-row { align-items: stretch; flex-direction: column; }
  .security-section-kicker-row .security-status-pill { align-self: flex-start; }
  .security-evidence-meta,
  .security-evidence-grid-activity,
  .security-guidance-grid,
  .security-history-summary { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  .security-guidance-grid details summary { scroll-behavior: auto; transition: none !important; }
}


/* Focused security access controls */
.security-pending-confirmation {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: .75rem 1rem;
  align-items: center;
  max-width: 74rem;
}

.security-pending-confirmation .button {
  min-height: 42px;
  white-space: nowrap;
}

.security-ip-control-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}

.security-ip-control-card {
  min-width: 0;
  margin: 0;
  border: 1px solid #d6dde6;
  border-left: 5px solid #8d97a8;
  background: #fff;
}

.security-ip-control-card.is-review-required {
  border-left-color: #d29b31;
  background: #fffdf8;
}

.security-ip-control-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
}

.security-ip-control-head h3 {
  margin: .2rem 0 0;
  font-size: 1.05rem;
  overflow-wrap: anywhere;
}

.security-ip-control-facts {
  display: grid;
  gap: .45rem;
  margin: 1rem 0;
}

.security-ip-control-facts > div {
  display: grid;
  grid-template-columns: minmax(8.5rem, .85fr) minmax(0, 1.15fr);
  gap: .75rem;
  padding-top: .55rem;
  border-top: 1px solid #e3e7ed;
}

.security-ip-control-facts dt { font-weight: 800; }
.security-ip-control-facts dd { min-width: 0; margin: 0; overflow-wrap: anywhere; }

.security-protected-details {
  margin-top: 1rem;
  border-top: 1px solid #dce2e9;
}

.security-protected-details summary {
  padding: .85rem 0 .2rem;
  color: var(--navy);
  font-weight: 900;
  cursor: pointer;
}

.security-protected-action-form,
.security-network-action-form {
  max-width: 38rem;
  margin: .8rem 0 0;
  padding: 1rem;
  border: 1px solid #dce2e9;
  border-radius: 14px;
  background: #fbfcfd;
}

.security-protected-zone {
  max-width: 74rem;
  border-left: 5px solid #8d97a8;
}

.security-access-request-grid {
  align-items: start;
}

.security-access-request-card {
  border-top-color: #8d97a8;
  background: #fff;
}

.security-access-request-card[data-focused-review] {
  border-top-color: #b48b3e;
}

.security-access-decision-form {
  margin-top: 1rem;
  padding-top: 1rem;
  border-top: 1px solid #dce2e9;
}

.security-access-decision-form .empire-decision-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .65rem;
}

.security-access-decision-form .empire-decision-actions .button {
  width: 100%;
  min-height: 44px;
}

.security-command-section :focus-visible,
.security-pending-confirmation :focus-visible,
.security-protected-zone :focus-visible {
  outline: 3px solid #e6b95b;
  outline-offset: 3px;
}

@media (max-width: 900px) {
  .security-ip-control-grid,
  .security-access-request-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 680px) {
  .security-pending-confirmation {
    grid-template-columns: 1fr;
    align-items: stretch;
  }

  .security-pending-confirmation .button,
  .security-network-action-form .button,
  .security-protected-action-form .button {
    width: 100%;
  }

  .security-ip-control-head {
    align-items: stretch;
    flex-direction: column;
  }

  .security-ip-control-head .security-status-pill {
    align-self: flex-start;
  }

  .security-ip-control-facts > div {
    grid-template-columns: 1fr;
    gap: .2rem;
  }

  .security-access-decision-form .empire-decision-actions {
    grid-template-columns: 1fr;
  }
}

/* Focused security policy controls */
.security-policy-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(20rem, .95fr);
  gap: 1rem;
  align-items: start;
  max-width: 74rem;
}

.security-policy-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .8rem;
  max-width: 74rem;
}

.security-policy-layout-crawler {
  grid-template-columns: 1fr;
}

.security-policy-layout-crawler .security-policy-form {
  max-width: 74rem;
}

.security-policy-layout-crawler .security-provider-policy-list {
  grid-template-columns: repeat(auto-fit, minmax(min(16rem, 100%), 1fr));
  align-items: start;
}

.security-policy-card {
  min-width: 0;
  padding: 1rem;
  border: 1px solid #dce2e9;
  border-radius: 14px;
  background: #fff;
}

.security-policy-card > span {
  display: block;
  color: var(--muted);
  font-size: .74rem;
  font-weight: 850;
  letter-spacing: .035em;
  text-transform: uppercase;
}

.security-policy-card > strong {
  display: block;
  margin: .35rem 0 .45rem;
  color: var(--navy);
  font-size: 1.14rem;
  overflow-wrap: anywhere;
}

.security-policy-card > p {
  margin: 0;
  color: var(--muted);
  line-height: 1.55;
}

.security-policy-form,
.security-refresh-form {
  min-width: 0;
  max-width: 42rem;
  margin: 0;
  border: 1px solid #d6dde6;
  border-left: 5px solid #8d97a8;
  background: #fbfcfd;
  box-shadow: none;
}

.security-policy-form-wide,
.security-refresh-form {
  max-width: 74rem;
}

.security-policy-toggle {
  display: flex;
  align-items: flex-start;
  gap: .8rem;
  padding: .95rem;
  border: 1px solid #dce2e9;
  border-radius: 13px;
  background: #fff;
  cursor: pointer;
}

.security-policy-toggle:hover {
  border-color: #b8c1ce;
  background: #fdfefe;
}

.security-policy-toggle input {
  flex: 0 0 auto;
  width: 1.25rem;
  height: 1.25rem;
  margin-top: .12rem;
  accent-color: var(--gold);
}

.security-policy-toggle span,
.security-policy-toggle strong,
.security-policy-toggle small {
  display: block;
}

.security-policy-toggle strong {
  color: var(--navy);
  line-height: 1.4;
}

.security-policy-toggle small {
  margin-top: .25rem;
  color: var(--muted);
  line-height: 1.5;
}

.security-policy-toggle:has(input:disabled) {
  cursor: not-allowed;
  opacity: .72;
}

.security-toggle-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .7rem;
}

.security-provider-policy-list {
  display: grid;
  gap: .9rem;
  margin-top: .25rem;
}
.security-provider-policy-group {
  min-width: 0;
  margin: 0;
  padding: .85rem;
  border: 1px solid #d9dee7;
  border-radius: 14px;
  background: #f8fafc;
}
.security-provider-policy-group legend {
  padding: 0 .35rem;
  color: #10294e;
  font-weight: 900;
}
.security-provider-policy-group .security-policy-toggle + .security-policy-toggle {
  margin-top: .55rem;
}

.security-source-grid,
.security-agent-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .9rem;
  max-width: 74rem;
}

.security-source-card,
.security-agent-card {
  min-width: 0;
  padding: 1rem;
  border: 1px solid #d6dde6;
  border-left: 5px solid #8d97a8;
  border-radius: 14px;
  background: #fff;
}

.security-source-card.source-state-healthy,
.security-agent-card.source-state-healthy { border-left-color: #3b9460; }
.security-source-card.source-state-stale,
.security-agent-card.source-state-stale { border-left-color: #d29b31; background: #fffdf8; }
.security-source-card.source-state-unavailable,
.security-agent-card.source-state-unavailable { border-left-color: #8d97a8; background: #fbfcfd; }

.security-source-card-head,
.security-agent-card-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: .8rem;
}

.security-source-card-head > div > span,
.security-agent-card-head > div > span {
  display: block;
  color: var(--muted);
  font-size: .73rem;
  font-weight: 850;
  letter-spacing: .035em;
  text-transform: uppercase;
}

.security-source-card-head > div > strong {
  display: block;
  margin-top: .25rem;
  color: var(--navy);
  font-size: 1.05rem;
}

.security-agent-card-head h3 {
  margin: .2rem 0 0;
  font-size: 1.05rem;
}

.security-source-card > p,
.security-agent-card > p {
  margin: .8rem 0 0;
  color: var(--muted);
  line-height: 1.55;
}

.security-source-card details {
  margin-top: .85rem;
  padding-top: .7rem;
  border-top: 1px solid #e3e7ed;
}

.security-source-card summary {
  display: flex;
  min-height: 44px;
  align-items: center;
  padding: .35rem 0;
  color: var(--navy);
  font-weight: 850;
  cursor: pointer;
}

.security-source-list,
.security-agent-card dl {
  display: grid;
  gap: .45rem;
  margin: .75rem 0 0;
}

.security-source-list div,
.security-agent-card dl div {
  display: grid;
  grid-template-columns: minmax(8rem, .8fr) minmax(0, 1.2fr);
  gap: .7rem;
  padding-top: .5rem;
  border-top: 1px solid #e3e7ed;
}

.security-source-list dt,
.security-agent-card dt {
  color: var(--navy);
  font-weight: 800;
}

.security-source-list dd,
.security-agent-card dd {
  min-width: 0;
  margin: 0;
  overflow-wrap: anywhere;
}

.security-policy-form :focus-visible,
.security-refresh-form :focus-visible,
.security-source-grid :focus-visible,
.security-agent-grid :focus-visible {
  outline: 3px solid #e6b95b;
  outline-offset: 3px;
}

@media (max-width: 900px) {
  .security-policy-layout,
  .security-source-grid,
  .security-agent-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 680px) {
  .security-policy-grid,
  .security-toggle-grid {
    grid-template-columns: 1fr;
  }

  .security-source-card-head,
  .security-agent-card-head {
    align-items: stretch;
    flex-direction: column;
  }

  .security-source-card-head .security-status-pill,
  .security-agent-card-head .security-status-pill {
    align-self: flex-start;
  }

  .security-source-list div,
  .security-agent-card dl div {
    grid-template-columns: 1fr;
    gap: .2rem;
  }

  .security-policy-form .button,
  .security-refresh-form .button {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .security-policy-toggle,
  .security-source-card summary {
    transition: none !important;
  }
}

/* Focused security recovery controls */
.security-recovery-component-grid {
  max-width: 74rem;
}

.security-emergency-zone {
  max-width: 74rem;
  border-left: 5px solid #8d97a8;
}

.security-private-link-inventory {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .8rem;
  margin: 1rem 0;
}

.security-private-link-inventory article {
  min-width: 0;
  padding: 1rem;
  border: 1px solid #dce2e9;
  border-radius: 14px;
  background: #fff;
}

.security-private-link-inventory span {
  display: block;
  color: var(--muted);
  font-size: .74rem;
  font-weight: 850;
  letter-spacing: .035em;
  text-transform: uppercase;
}

.security-private-link-inventory strong {
  display: block;
  margin: .35rem 0;
  color: var(--navy);
  font-size: 1.55rem;
}

.security-private-link-inventory p {
  margin: 0;
  color: var(--muted);
  line-height: 1.5;
}

.security-recovery-action-form {
  max-width: 48rem;
  margin: 1rem 0 0;
  padding: 1rem;
  border: 1px solid #d6dde6;
  border-radius: 14px;
  background: #fbfcfd;
}

.security-emergency-scope {
  padding: .9rem;
  border: 1px solid #e1e5ea;
  border-radius: 12px;
  background: #fff;
}

.security-emergency-scope h3 {
  margin: 0 0 .35rem;
  font-size: 1rem;
}

.security-emergency-scope p {
  margin: 0;
  color: var(--muted);
  line-height: 1.58;
}

.security-recovery-action-form :focus-visible,
.security-private-link-inventory :focus-visible,
.security-emergency-zone :focus-visible {
  outline: 3px solid #e6b95b;
  outline-offset: 3px;
}

@media (max-width: 760px) {
  .security-private-link-inventory {
    grid-template-columns: 1fr;
  }

  .security-recovery-action-form .button {
    width: 100%;
  }
}

/* Security visual-audit refinements */
.security-password-identity {
  pointer-events: none;
}

.security-guidance-grid details summary,
.admin-area .empire-history-details summary {
  display: flex;
  min-height: 44px;
  align-items: center;
  padding-block: .45rem;
}

@media (max-width: 440px) {
  .security-calm-heading .eyebrow,
  .security-hub-group-heading .eyebrow,
  .security-section-kicker-row .eyebrow,
  .security-command-section > .eyebrow {
    gap: 7px;
    font-size: .66rem;
    letter-spacing: .07em;
    line-height: 1.35;
  }

  .security-calm-heading .eyebrow::before,
  .security-hub-group-heading .eyebrow::before,
  .security-section-kicker-row .eyebrow::before,
  .security-command-section > .eyebrow::before {
    width: 24px;
  }
}
