:root {
  --bg: #f4f7f5;
  --paper: #ffffff;
  --ink: #172a28;
  --muted: #65736f;
  --line: #d8e0dc;
  --green-900: #0e3b34;
  --green-800: #145248;
  --green-700: #176c5d;
  --green-100: #e8f3ef;
  --blue-700: #275e8f;
  --gold: #c7a24c;
  --gold-soft: #f3ead1;
  --red: #b33b2e;
  --shadow: 0 18px 45px rgba(23, 42, 40, .10);
  --radius: 8px;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Microsoft YaHei", sans-serif;
}

* {
  box-sizing: border-box;
}

html {
  min-height: 100%;
}

body {
  margin: 0;
  min-height: 100%;
  color: var(--ink);
  background:
    linear-gradient(135deg, rgba(14, 59, 52, .05), rgba(39, 94, 143, .04)),
    var(--bg);
  line-height: 1.55;
}

button,
input {
  font: inherit;
}

button {
  cursor: pointer;
}

.hidden {
  display: none !important;
}

.app-shell {
  min-height: 100vh;
}

.topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 16px clamp(18px, 4vw, 46px);
  color: #fff;
  background: var(--green-900);
  border-bottom: 4px solid var(--gold);
}

.topbar[data-view="login"] {
  display: none;
}

.brand-lockup {
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
}

.brand-logo {
  width: 48px;
  height: 48px;
  border-radius: 7px;
  display: grid;
  place-items: center;
  background: rgba(255, 255, 255, .13);
  border: 1px solid rgba(255, 255, 255, .24);
  font-weight: 800;
  flex: 0 0 auto;
  overflow: hidden;
}

.brand-logo img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  padding: 4px;
}

.school-name {
  font-size: 15px;
  color: rgba(255, 255, 255, .78);
}

.course-name {
  font-size: 20px;
  font-weight: 760;
  line-height: 1.2;
}

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

.role-badge {
  display: inline-flex;
  min-height: 30px;
  align-items: center;
  padding: 4px 10px;
  border-radius: 999px;
  color: #fff;
  background: rgba(255, 255, 255, .12);
  border: 1px solid rgba(255, 255, 255, .18);
  font-size: 13px;
  white-space: nowrap;
}

.btn {
  min-height: 40px;
  border: 0;
  border-radius: 6px;
  padding: 9px 16px;
  color: var(--ink);
  background: #e9efec;
  transition: transform .15s ease, background .15s ease, box-shadow .15s ease;
}

.btn:hover {
  transform: translateY(-1px);
}

.btn.primary {
  color: #fff;
  background: var(--green-700);
  box-shadow: 0 10px 20px rgba(23, 108, 93, .18);
}

.btn.primary:hover {
  background: var(--green-800);
}

.btn.ghost {
  color: #fff;
  background: transparent;
  border: 1px solid rgba(255, 255, 255, .26);
}

.btn.wide {
  width: 100%;
}

.login-screen {
  width: min(1180px, calc(100% - 32px));
  min-height: 100vh;
  margin: 0 auto;
  padding: clamp(28px, 5vw, 62px) 0;
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(360px, .8fr);
  gap: clamp(22px, 5vw, 56px);
  align-items: center;
}

.login-hero {
  display: grid;
  gap: 28px;
}

.eyebrow {
  display: inline-flex;
  width: fit-content;
  align-items: center;
  min-height: 30px;
  padding: 4px 10px;
  border-radius: 999px;
  color: var(--green-800);
  background: var(--green-100);
  border: 1px solid #cfe3db;
  font-weight: 700;
  font-size: 13px;
}

.hero-copy h1,
.workspace-hero h1 {
  margin: 15px 0 12px;
  font-size: clamp(34px, 5vw, 58px);
  line-height: 1.08;
  letter-spacing: 0;
  color: var(--green-900);
}

.hero-copy p,
.workspace-hero p {
  max-width: 680px;
  margin: 0;
  color: var(--muted);
  font-size: 17px;
}

.hero-stats {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin-top: 28px;
  max-width: 560px;
}

.hero-stats div {
  padding: 16px;
  background: rgba(255, 255, 255, .74);
  border: 1px solid rgba(216, 224, 220, .9);
  border-radius: var(--radius);
  box-shadow: 0 12px 28px rgba(23, 42, 40, .06);
}

.hero-stats strong {
  display: block;
  color: var(--green-800);
  font-size: 30px;
  line-height: 1;
}

.hero-stats span {
  display: block;
  margin-top: 5px;
  color: var(--muted);
  font-size: 13px;
}

.hero-visual {
  max-width: 640px;
}

.campus-panel {
  border-radius: 12px;
  border: 1px solid rgba(216, 224, 220, .9);
  background: linear-gradient(180deg, #fff, #f7faf8);
  box-shadow: var(--shadow);
  overflow: hidden;
}

.panel-head {
  display: flex;
  gap: 7px;
  padding: 12px 14px;
  background: var(--green-900);
}

.panel-head span {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: rgba(255, 255, 255, .45);
}

.visual-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  padding: 18px;
}

.visual-card {
  min-height: 132px;
  padding: 14px;
  border-radius: var(--radius);
  background: #fff;
  border: 1px solid var(--line);
}

.visual-card.tall {
  grid-row: span 2;
}

.mini-title {
  color: var(--muted);
  font-weight: 700;
  font-size: 13px;
  margin-bottom: 14px;
}

.radar-demo {
  width: 155px;
  height: 155px;
  margin: 6px auto 0;
  border-radius: 50%;
  background:
    radial-gradient(circle, transparent 28%, rgba(23, 108, 93, .12) 29%, transparent 30%),
    radial-gradient(circle, transparent 56%, rgba(39, 94, 143, .12) 57%, transparent 58%),
    conic-gradient(from 20deg, rgba(23, 108, 93, .2), rgba(199, 162, 76, .32), rgba(39, 94, 143, .25), rgba(23, 108, 93, .2));
  position: relative;
}

.radar-demo span {
  position: absolute;
  inset: 34px 43px 30px 31px;
  clip-path: polygon(50% 0, 92% 26%, 78% 84%, 26% 94%, 5% 40%);
  background: rgba(23, 108, 93, .45);
  border: 1px solid rgba(23, 108, 93, .55);
}

.radar-demo span:nth-child(2) {
  inset: 52px 57px 49px 50px;
  background: rgba(255, 255, 255, .55);
}

.radar-demo span:nth-child(3) {
  inset: 73px;
  border-radius: 50%;
  clip-path: none;
  background: var(--gold);
}

.flow-lines,
.report-lines {
  display: grid;
  gap: 12px;
}

.flow-lines i,
.report-lines i {
  display: block;
  height: 12px;
  border-radius: 999px;
  background: var(--green-100);
}

.flow-lines i:nth-child(1) { width: 74%; background: #d8ebe4; }
.flow-lines i:nth-child(2) { width: 88%; background: #e9e1bd; }
.flow-lines i:nth-child(3) { width: 60%; background: #dce6ef; }

.report-lines i:nth-child(1) { width: 92%; }
.report-lines i:nth-child(2) { width: 70%; }
.report-lines i:nth-child(3) { width: 84%; }
.report-lines i:nth-child(4) { width: 55%; }

.login-panel,
.quick-card,
.stage-note,
.module-card {
  background: rgba(255, 255, 255, .88);
  border: 1px solid rgba(216, 224, 220, .94);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}

.login-panel {
  padding: 24px;
}

.panel-title h2 {
  margin: 0 0 5px;
  font-size: 24px;
  color: var(--green-900);
}

.panel-title p {
  margin: 0 0 18px;
  color: var(--muted);
  font-size: 14px;
}

.role-tabs {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin-bottom: 18px;
}

.role-tab {
  min-height: 40px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #f2f6f3;
  color: var(--ink);
  font-weight: 700;
}

.role-tab.active {
  color: #fff;
  background: var(--green-700);
  border-color: var(--green-700);
}

.login-form label {
  display: block;
  margin-bottom: 14px;
}

.login-form label span {
  display: block;
  margin-bottom: 6px;
  font-weight: 700;
}

label {
  position: relative;
}

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

.form-grid .full {
  grid-column: 1 / -1;
}

input {
  width: 100%;
  min-height: 42px;
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 9px 11px;
  color: var(--ink);
  background: #fff;
  outline: none;
}

input:focus {
  border-color: var(--green-700);
  box-shadow: 0 0 0 3px rgba(23, 108, 93, .12);
}

textarea {
  width: 100%;
  min-height: 112px;
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 10px 11px;
  color: var(--ink);
  background: #fff;
  outline: none;
  resize: vertical;
  font: inherit;
}

textarea:focus {
  border-color: var(--green-700);
  box-shadow: 0 0 0 3px rgba(23, 108, 93, .12);
}

.role-form {
  display: none;
}

.role-form.active {
  display: block;
}

.form-note {
  margin: 0 0 14px;
  color: var(--muted);
  font-size: 13px;
}

.form-error {
  min-height: 22px;
  margin-bottom: 10px;
  color: var(--red);
  font-size: 14px;
}

.manual-link {
  display: block;
  margin-top: 12px;
  color: var(--green-800);
  font-weight: 800;
  text-align: center;
  text-decoration: none;
}

.workspace {
  width: min(1180px, calc(100% - 32px));
  margin: 0 auto;
  padding: 28px 0 48px;
}

.workspace-hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 320px;
  gap: 20px;
  align-items: stretch;
  margin-bottom: 20px;
}

.workspace-hero h1 {
  font-size: clamp(30px, 4vw, 46px);
}

.quick-card {
  padding: 20px;
}

.quick-card span {
  display: block;
  color: var(--muted);
  font-size: 13px;
}

.quick-card strong {
  display: block;
  margin-top: 8px;
  font-size: 24px;
  color: var(--green-900);
}

.quick-card p {
  margin-top: 8px;
  font-size: 14px;
}

.module-preview-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  margin-top: 20px;
}

.module-card {
  padding: 18px;
  min-height: 190px;
  display: grid;
  align-content: start;
  gap: 10px;
  border-top: 4px solid var(--green-700);
  cursor: pointer;
  transition: transform .16s ease, box-shadow .16s ease, border-color .16s ease;
}

.module-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 22px 48px rgba(23, 42, 40, .14);
}

.module-card:nth-child(2) { border-top-color: var(--blue-700); }
.module-card:nth-child(3) { border-top-color: var(--gold); }
.module-card:nth-child(4) { border-top-color: #7b5aa6; }

.module-icon {
  width: 42px;
  height: 42px;
  display: grid;
  place-items: center;
  border-radius: 7px;
  color: var(--green-800);
  background: var(--green-100);
  font-weight: 800;
}

.module-card h3 {
  margin: 0;
  font-size: 18px;
  color: var(--green-900);
}

.module-card p {
  margin: 0;
  color: var(--muted);
  font-size: 14px;
}

.module-meta {
  display: grid;
  gap: 7px;
  margin-top: 4px;
  color: var(--muted);
  font-size: 13px;
}

.module-meta span {
  display: flex;
  gap: 7px;
  align-items: center;
}

.module-meta span::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--gold);
  flex: 0 0 auto;
}

.module-status {
  width: fit-content;
  margin-top: auto;
  padding: 3px 9px;
  border-radius: 999px;
  background: #f0f4f2;
  color: var(--muted);
  font-size: 12px;
}

.module-status.done {
  color: var(--green-800);
  background: var(--green-100);
}

.module-status.locked {
  color: #766127;
  background: var(--gold-soft);
}

.stage-note {
  margin-top: 18px;
  padding: 18px;
  border-left: 5px solid var(--gold);
  color: var(--muted);
}

.admin-config {
  margin-top: 18px;
  padding: 20px;
  background: rgba(255, 255, 255, .9);
  border: 1px solid rgba(216, 224, 220, .94);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}

.admin-config h2 {
  margin: 0 0 8px;
  color: var(--green-900);
}

.admin-config p {
  margin: 0 0 16px;
  color: var(--muted);
}

.alumni-admin {
  margin-top: 18px;
  padding-top: 18px;
  border-top: 1px solid var(--line);
}

.alumni-admin h3 {
  margin: 0 0 6px;
  color: var(--green-900);
}

.alumni-admin textarea {
  min-height: 130px;
}

.alumni-library-list,
.alumni-match-list {
  display: grid;
  gap: 10px;
  margin-top: 12px;
}

.library-count {
  padding: 8px 10px;
  border-radius: 6px;
  background: var(--green-100);
  color: var(--green-800);
  font-weight: 800;
}

.library-item,
.alumni-match-card {
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: #fff;
}

.library-item strong,
.alumni-match-card strong {
  display: block;
  color: var(--green-900);
}

.library-item span,
.alumni-match-card span,
.alumni-match-card small {
  display: block;
  margin-top: 4px;
  color: var(--muted);
  font-size: 13px;
}

.library-item p,
.alumni-match-card p {
  margin: 8px 0 0;
  color: var(--ink);
  font-size: 14px;
}

.alumni-match-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
}

.dashboard-tools,
.detail-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.dashboard-tools {
  margin: 18px 0 6px;
}

.detail-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 16px;
}

.detail-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 330px;
  gap: 16px;
}

.detail-main,
.detail-side,
.summary-card {
  background: rgba(255, 255, 255, .9);
  border: 1px solid rgba(216, 224, 220, .94);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}

.detail-main,
.summary-card {
  padding: clamp(20px, 4vw, 32px);
}

.detail-side {
  padding: 20px;
  align-self: start;
}

.module-icon.large {
  width: 56px;
  height: 56px;
  margin-bottom: 14px;
  font-size: 18px;
}

.detail-main h1,
.summary-card h1 {
  margin: 12px 0 10px;
  color: var(--green-900);
  font-size: clamp(30px, 4vw, 44px);
  line-height: 1.12;
}

.detail-main p,
.summary-card p,
.detail-side p {
  color: var(--muted);
}

.detail-section {
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px solid var(--line);
}

.detail-section h2,
.detail-side h2 {
  margin: 0 0 12px;
  font-size: 20px;
  color: var(--green-900);
}

.detail-section ul {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 10px;
}

.detail-section li,
.tip-item,
.summary-item {
  padding: 12px;
  border-radius: 7px;
  background: #f7faf8;
  border: 1px solid var(--line);
}

.detail-section li {
  display: flex;
  gap: 10px;
  align-items: flex-start;
}

.detail-section li strong {
  display: grid;
  place-items: center;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  color: #fff;
  background: var(--green-700);
  font-size: 12px;
  flex: 0 0 auto;
}

.detail-actions {
  margin-top: 22px;
}

.tip-list,
.summary-list {
  display: grid;
  gap: 10px;
}

.tip-item h3,
.summary-item h3 {
  margin: 0 0 5px;
  font-size: 16px;
  color: var(--green-900);
}

.tip-item p,
.summary-item p {
  margin: 0;
  font-size: 14px;
}

.summary-card {
  max-width: 920px;
}

.summary-list {
  margin: 20px 0;
}

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

.summary-item .module-status {
  margin-top: 0;
}

.all-report-preview {
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px solid var(--line);
}

.all-report-section {
  margin-top: 18px;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #fff;
}

.all-report-section h2 {
  margin: 0 0 10px;
  color: var(--green-900);
}

.all-report-section.missing {
  background: #f7faf8;
  color: var(--muted);
}

.artifact-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 14px 0 0;
}

.output-artifact {
  break-inside: avoid;
}

.artifact-cover {
  background: linear-gradient(135deg, #f7faf8, #fff);
}

.artifact-head {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: flex-start;
  margin: -2px 0 18px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--line);
}

.artifact-head span {
  display: inline-flex;
  padding: 4px 8px;
  border-radius: 999px;
  background: var(--green-100);
  color: var(--green-800);
  font-size: 12px;
  font-weight: 800;
}

.artifact-head h2 {
  margin: 8px 0 4px;
}

.artifact-head p,
.artifact-head strong {
  margin: 0;
  color: var(--muted);
  font-size: 14px;
}

.artifact-grid {
  display: grid;
  gap: 12px;
  margin-top: 12px;
}

.artifact-grid.two-col {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

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

.artifact-panel {
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: #fff;
}

.artifact-panel h3 {
  margin: 0 0 10px;
  color: var(--green-900);
  font-size: 17px;
}

.artifact-panel p,
.artifact-panel li,
.artifact-panel dd {
  color: var(--ink);
  font-size: 14px;
}

.mini-meta,
.fold-note {
  margin-top: 10px;
  color: var(--muted);
  font-size: 13px;
}

.fold-note {
  padding: 9px 11px;
  border: 1px dashed #c9d8d2;
  border-radius: 6px;
  background: #f7faf8;
}

.visual-panel {
  text-align: center;
}

.artifact-radar {
  width: min(100%, 300px);
  display: block;
  margin: 0 auto;
}

.artifact-axis {
  margin-top: 10px;
}

.artifact-axis strong,
.artifact-ability strong {
  display: block;
  margin-bottom: 5px;
  color: var(--green-900);
  font-size: 13px;
}

.artifact-axis div,
.artifact-ability span {
  display: block;
  height: 10px;
  border-radius: 999px;
  overflow: hidden;
  background: #edf2ef;
}

.artifact-axis div span,
.artifact-ability i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--green-700), var(--gold));
}

.artifact-axis small {
  display: block;
  margin-top: 4px;
  color: var(--muted);
  font-size: 12px;
}

.artifact-values {
  display: grid;
  gap: 8px;
}

.artifact-values span,
.job-mini-card {
  display: grid;
  gap: 4px;
  padding: 10px;
  border-radius: 6px;
  background: #f7faf8;
  border-left: 4px solid var(--gold);
  color: var(--ink);
}

.artifact-values strong,
.job-mini-card strong {
  color: var(--green-900);
}

.job-mini-card + .job-mini-card {
  margin-top: 8px;
}

.action-panel {
  border-left: 4px solid var(--green-700);
}

.handbook-layout {
  display: grid;
  grid-template-columns: 1.1fr 1fr 1fr;
  gap: 12px;
  margin-top: 12px;
}

.artifact-tree {
  display: grid;
  gap: 10px;
}

.artifact-tree div {
  display: grid;
  grid-template-columns: 86px minmax(0, 1fr);
  gap: 8px;
  align-items: center;
}

.artifact-tree strong {
  display: grid;
  place-items: center;
  min-height: 44px;
  border-radius: 6px;
  background: var(--green-700);
  color: #fff;
  font-size: 13px;
}

.artifact-tree p {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0;
}

.artifact-tree span {
  padding: 4px 8px;
  border-radius: 999px;
  background: var(--green-100);
  color: var(--green-800);
  font-weight: 700;
  font-size: 12px;
}

.company-profile-grid,
.warning-card-grid {
  display: grid;
  gap: 8px;
}

.company-profile,
.warning-card {
  display: grid;
  gap: 5px;
  padding: 10px;
  border-radius: 6px;
  border: 1px solid var(--line);
  background: #fbfcfb;
}

.company-profile strong,
.warning-card strong {
  color: var(--green-900);
}

.company-profile span,
.warning-card span,
.warning-card p {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
}

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

.card-face {
  min-height: 360px;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  box-shadow: 0 10px 24px rgba(23, 42, 40, .08);
}

.card-face.front {
  border-top: 6px solid var(--blue-700);
}

.card-face.back {
  border-top: 6px solid var(--green-700);
}

.card-label {
  display: inline-flex;
  margin-bottom: 10px;
  padding: 4px 8px;
  border-radius: 999px;
  background: var(--green-100);
  color: var(--green-800);
  font-size: 12px;
  font-weight: 800;
}

.card-face dl {
  display: grid;
  gap: 8px;
  margin: 0;
}

.card-face dt {
  color: var(--green-900);
  font-weight: 800;
}

.card-face dd {
  margin: -4px 0 6px;
}

.artifact-ability {
  display: grid;
  gap: 10px;
}

.artifact-ability div {
  display: grid;
  grid-template-columns: 76px minmax(0, 1fr) 44px;
  gap: 8px;
  align-items: center;
}

.artifact-ability em {
  color: var(--muted);
  font-size: 12px;
  font-style: normal;
}

.resume-lines {
  margin-top: 14px;
}

.brief-page {
  break-inside: avoid;
  margin-top: 12px;
}

.artifact-funnel {
  display: grid;
  gap: 8px;
}

.artifact-funnel span,
.mini-roadmap span {
  display: block;
  padding: 10px;
  border-radius: 6px;
  background: var(--green-100);
  color: var(--green-800);
  font-weight: 800;
}

.artifact-funnel span:nth-child(2) { margin-left: 7%; }
.artifact-funnel span:nth-child(3) { margin-left: 14%; }
.artifact-funnel span:nth-child(4) { margin-left: 21%; }

.source-rules ol {
  margin: 0;
  padding-left: 20px;
}

.mini-roadmap {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

.parallel-timeline {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  margin-top: 12px;
}

.timeline-lane {
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfcfb;
}

.timeline-lane h3 {
  margin: 0 0 12px;
  color: var(--green-900);
}

.lane-node {
  position: relative;
  display: grid;
  gap: 4px;
  margin: 0 0 10px;
  padding: 10px 10px 10px 18px;
  border-left: 4px solid var(--green-700);
  border-radius: 6px;
  background: #fff;
}

.student-lane .lane-node {
  border-left-color: var(--blue-700);
}

.lane-node strong {
  color: var(--green-900);
}

.lane-node span {
  font-weight: 800;
}

.lane-node p {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
}

.self-layout {
  display: grid;
  grid-template-columns: 285px minmax(0, 1fr);
  gap: 16px;
}

.step-sidebar,
.step-panel {
  background: rgba(255, 255, 255, .9);
  border: 1px solid rgba(216, 224, 220, .94);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
}

.step-sidebar {
  padding: 18px;
  align-self: start;
  position: sticky;
  top: 16px;
}

.step-sidebar h2 {
  margin: 0 0 8px;
  color: var(--green-900);
  font-size: 21px;
}

.step-sidebar p {
  margin: 0 0 16px;
  color: var(--muted);
  font-size: 14px;
}

.step-nav {
  display: grid;
  gap: 8px;
}

.step-nav button {
  width: 100%;
  min-height: 42px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #f7faf8;
  color: var(--ink);
  text-align: left;
  padding: 8px 10px;
}

.step-nav button.active {
  color: #fff;
  background: var(--green-700);
  border-color: var(--green-700);
}

.step-nav button.done {
  border-color: #b7d7ca;
  background: var(--green-100);
}

.step-panel {
  padding: clamp(18px, 3vw, 28px);
}

.step-head {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 18px;
}

.step-head h1 {
  margin: 10px 0 8px;
  color: var(--green-900);
  font-size: clamp(28px, 4vw, 42px);
  line-height: 1.12;
}

.step-head p {
  margin: 0;
  color: var(--muted);
}

.intro-band {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.intro-band > div {
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #f7faf8;
}

.intro-band h2 {
  margin: 0 0 6px;
  color: var(--green-900);
  font-size: 17px;
}

.intro-band p {
  margin: 0;
  color: var(--muted);
}

.plain-list {
  margin: 0;
  padding-left: 20px;
  color: var(--muted);
}

.plain-list li {
  margin: 7px 0;
}

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

.visual-section {
  margin-top: 18px;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #fbfcfb;
}

.visual-section h2 {
  margin: 0 0 14px;
  font-size: 19px;
  color: var(--green-900);
}

.tag-cloud {
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
}

.tag-cloud span {
  display: inline-flex;
  align-items: center;
  min-height: 30px;
  padding: 4px 10px;
  border-radius: 999px;
  color: var(--green-800);
  background: var(--green-100);
  border: 1px solid #cfe3db;
  font-size: 13px;
  font-weight: 700;
}

#interestRadar {
  width: min(100%, 420px);
  height: auto;
  display: block;
  margin: 0 auto;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: var(--radius);
}

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

.personality-axis {
  min-height: 94px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #fff;
}

.personality-axis h3 {
  margin: 0 0 10px;
  color: var(--green-900);
  font-size: 16px;
}

.axis-bar {
  height: 12px;
  border-radius: 999px;
  background: #edf2ef;
  overflow: hidden;
}

.axis-bar span {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--green-700), var(--gold));
}

.axis-labels {
  display: flex;
  justify-content: space-between;
  margin-top: 7px;
  color: var(--muted);
  font-size: 12px;
}

.value-cards {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.value-card {
  min-height: 128px;
  padding: 16px;
  border-radius: var(--radius);
  border: 1px solid var(--line);
  background: #fff;
  border-top: 4px solid var(--gold);
}

.value-card strong {
  display: block;
  color: var(--green-900);
  font-size: 22px;
}

.value-card span {
  display: block;
  margin-top: 8px;
  color: var(--muted);
}

.industry-tree {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
}

.industry-menu {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 10px;
}

.menu-card {
  min-height: 170px;
  padding: 13px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #fff;
  cursor: pointer;
  transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}

.menu-card:hover {
  transform: translateY(-2px);
  border-color: #b7d2c8;
  box-shadow: 0 10px 24px rgba(23, 42, 40, .08);
}

.menu-card h3 {
  margin: 0 0 8px;
  color: var(--green-900);
  font-size: 16px;
}

.menu-card p {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin: 0 0 10px;
}

.menu-card p span,
.menu-card button {
  display: inline-flex;
  align-items: center;
  min-height: 25px;
  padding: 3px 7px;
  border-radius: 999px;
  border: 1px solid #cfe3db;
  background: var(--green-100);
  color: var(--green-800);
  font-size: 12px;
  font-weight: 700;
}

.menu-card div {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}

.menu-card button {
  background: #fff;
}

.tree-row {
  display: grid;
  grid-template-columns: 130px minmax(0, 1fr);
  gap: 10px;
  align-items: stretch;
}

.tree-level {
  display: grid;
  place-items: center;
  min-height: 52px;
  border-radius: 7px;
  color: #fff;
  background: var(--green-700);
  font-weight: 800;
}

.tree-nodes {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: #fff;
}

.tree-nodes span {
  padding: 5px 10px;
  border-radius: 999px;
  background: var(--green-100);
  color: var(--green-800);
  font-weight: 700;
  font-size: 13px;
}

.company-cards,
.future-cards,
.ability-matrix {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.company-card,
.future-card,
.ability-card {
  padding: 14px;
  border-radius: var(--radius);
  border: 1px solid var(--line);
  background: #fff;
}

.company-card {
  border-top: 4px solid var(--blue-700);
}

.future-card {
  border-top: 4px solid var(--gold);
}

.ability-card {
  border-top: 4px solid var(--green-700);
}

.company-card h3,
.future-card h3,
.ability-card h3 {
  margin: 0 0 8px;
  color: var(--green-900);
  font-size: 17px;
}

.company-card p,
.future-card p,
.ability-card p {
  margin: 0;
  color: var(--muted);
  font-size: 14px;
}

.ability-bar {
  height: 10px;
  margin: 10px 0 8px;
  border-radius: 999px;
  background: #edf2ef;
  overflow: hidden;
}

.ability-bar span {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--green-700), var(--gold));
}

.ai-chat-box {
  display: grid;
  gap: 12px;
}

.chat-log {
  display: grid;
  gap: 10px;
  max-height: 360px;
  overflow: auto;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #f8faf9;
}

.chat-message {
  max-width: 82%;
  padding: 10px 12px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: #fff;
}

.chat-message.student {
  justify-self: end;
  background: #eef5fb;
  border-color: #cadced;
}

.chat-message.ai {
  justify-self: start;
  background: #f4f8f6;
  border-color: #cfe3db;
}

.chat-message strong {
  display: block;
  margin-bottom: 4px;
  color: var(--green-900);
  font-size: 13px;
}

.chat-message p {
  margin: 0;
  color: var(--ink);
  font-size: 14px;
}

.chat-input-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
  align-items: stretch;
}

.chat-input-row textarea {
  min-height: 78px;
}

.detail-actions.compact {
  justify-content: flex-start;
}

.funnel-chart {
  display: grid;
  gap: 10px;
  justify-items: center;
}

.funnel-step {
  min-height: 46px;
  display: grid;
  place-items: center;
  padding: 8px 18px;
  border-radius: 7px;
  color: #fff;
  background: var(--green-700);
  font-weight: 800;
  text-align: center;
}

.funnel-step:nth-child(1) { width: 100%; }
.funnel-step:nth-child(2) { width: 84%; background: var(--blue-700); }
.funnel-step:nth-child(3) { width: 68%; background: #7b5aa6; }
.funnel-step:nth-child(4) { width: 52%; background: var(--gold); color: var(--ink); }

.pain-cards,
.resource-cards,
.opportunity-matrix,
.mvp-roadmap {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.pain-card,
.resource-card,
.opportunity-card,
.roadmap-card {
  padding: 14px;
  border-radius: var(--radius);
  border: 1px solid var(--line);
  background: #fff;
}

.pain-card {
  border-top: 4px solid var(--red);
}

.resource-card {
  border-top: 4px solid var(--green-700);
}

.opportunity-card {
  border-top: 4px solid var(--blue-700);
}

.roadmap-card {
  border-top: 4px solid var(--gold);
}

.source-tip {
  margin: 0 0 12px;
  color: var(--muted);
  font-size: 14px;
}

.source-table {
  display: grid;
  gap: 12px;
}

.source-row {
  display: grid;
  grid-template-columns: 1.15fr 1fr 1fr;
  gap: 10px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #fff;
}

.source-type {
  grid-row: span 2;
}

.source-type strong {
  display: block;
  margin-bottom: 6px;
  color: var(--green-900);
}

.source-type span {
  color: var(--muted);
  font-size: 13px;
}

.source-summary {
  grid-column: span 2;
}

.source-summary textarea {
  min-height: 86px;
}

.source-actions {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  padding-top: 6px;
  border-top: 1px dashed #dce6e1;
}

.source-check {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin: 0;
  color: var(--ink);
  font-weight: 700;
}

.source-check input {
  width: auto;
  min-height: auto;
}

.source-actions em {
  margin-left: auto;
  color: var(--muted);
  font-size: 13px;
  font-style: normal;
}

.source-artifact-table {
  display: grid;
  gap: 8px;
}

.source-artifact-row {
  display: grid;
  grid-template-columns: 90px 1fr 1fr;
  gap: 7px;
  padding: 9px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #fbfcfb;
}

.source-artifact-row p,
.source-artifact-row em {
  grid-column: 1 / -1;
  margin: 0;
}

.source-artifact-row strong {
  color: var(--green-900);
}

.source-artifact-row span,
.source-artifact-row p {
  color: var(--muted);
  font-size: 12px;
}

.source-artifact-row em {
  color: #9b6b16;
  font-size: 12px;
  font-style: normal;
  font-weight: 800;
}

.source-artifact-row.confirmed em {
  color: var(--green-800);
}

.pain-card h3,
.resource-card h3,
.opportunity-card h3,
.roadmap-card h3 {
  margin: 0 0 8px;
  color: var(--green-900);
  font-size: 17px;
}

.pain-card p,
.resource-card p,
.opportunity-card p,
.roadmap-card p {
  margin: 0;
  color: var(--muted);
  font-size: 14px;
}

.timeline {
  display: grid;
  gap: 12px;
  position: relative;
}

.timeline-item {
  display: grid;
  grid-template-columns: 110px minmax(0, 1fr);
  gap: 12px;
  align-items: stretch;
}

.timeline-year {
  display: grid;
  place-items: center;
  min-height: 72px;
  border-radius: 7px;
  color: #fff;
  background: var(--green-700);
  font-weight: 800;
}

.timeline.student .timeline-year {
  background: var(--blue-700);
}

.timeline-card {
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #fff;
}

.timeline-card h3 {
  margin: 0 0 6px;
  color: var(--green-900);
  font-size: 17px;
}

.timeline-card p {
  margin: 0;
  color: var(--muted);
  font-size: 14px;
}

.gap-table {
  display: grid;
  gap: 10px;
}

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

.gap-cell {
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: #fff;
}

.gap-cell strong {
  display: block;
  color: var(--green-900);
  margin-bottom: 5px;
}

.gap-cell span {
  color: var(--muted);
  font-size: 14px;
}

.report-builder {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #f7faf8;
}

.report-builder h2 {
  margin: 0 0 5px;
  color: var(--green-900);
}

.report-builder p {
  margin: 0;
  color: var(--muted);
}

.report-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px;
  min-width: 260px;
}

.self-report {
  margin-top: 16px;
  padding: 20px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #fff;
}

.self-report h2 {
  margin: 18px 0 8px;
  color: var(--green-900);
}

.self-report h2:first-child {
  margin-top: 0;
}

.self-report p,
.self-report li {
  color: var(--ink);
}

.empty-text {
  color: var(--muted) !important;
}

.step-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 20px;
  padding-top: 16px;
  border-top: 1px solid var(--line);
}

.mini-action {
  margin-top: 8px;
  min-height: 32px;
  border: 1px solid #cfe3db;
  border-radius: 6px;
  background: var(--green-100);
  color: var(--green-800);
  padding: 5px 10px;
  font-weight: 700;
}

.choice-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-top: 8px;
}

.choice-chips button {
  min-height: 30px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #f7faf8;
  color: var(--ink);
  padding: 4px 10px;
  font-size: 13px;
}

.choice-chips button:hover {
  border-color: var(--green-700);
  color: var(--green-800);
  background: var(--green-100);
}

.modal {
  position: fixed;
  inset: 0;
  z-index: 30;
  display: grid;
  place-items: center;
  padding: 20px;
  background: rgba(10, 25, 22, .46);
}

.modal-card {
  width: min(860px, 100%);
  max-height: min(760px, calc(100vh - 40px));
  overflow: auto;
  border-radius: var(--radius);
  background: #fff;
  border: 1px solid var(--line);
  box-shadow: 0 24px 70px rgba(0, 0, 0, .24);
}

.modal-card.small {
  width: min(620px, 100%);
}

.modal-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
  padding: 18px 20px;
  border-bottom: 1px solid var(--line);
  background: #fbfcfb;
}

.modal-head h2 {
  margin: 10px 0 0;
  color: var(--green-900);
  font-size: 26px;
}

.assessment-body {
  display: grid;
  gap: 12px;
  padding: 20px;
}

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

.assessment-mode button {
  min-height: 40px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #f2f6f3;
  color: var(--ink);
  font-weight: 800;
}

.assessment-mode button.active {
  color: #fff;
  background: var(--green-700);
  border-color: var(--green-700);
}

.assessment-tip {
  margin: -2px 0 2px;
  color: var(--muted);
  font-size: 14px;
}

.question-card {
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #f8faf9;
}

.question-card h3 {
  margin: 0 0 10px;
  color: var(--green-900);
  font-size: 16px;
}

.question-options {
  display: grid;
  gap: 8px;
}

.question-options label {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: #fff;
  cursor: pointer;
}

.question-options input {
  width: auto;
  min-height: auto;
  margin-top: 4px;
  flex: 0 0 auto;
}

.modal-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  padding: 16px 20px;
  border-top: 1px solid var(--line);
}

.pdf-help {
  padding: 20px;
}

.pdf-help ol {
  margin: 0;
  padding-left: 22px;
  color: var(--ink);
}

.pdf-help li {
  margin: 8px 0;
}

.pdf-help p {
  margin: 16px 0 0;
  color: var(--muted);
}

.ai-status,
.report-source {
  margin: 12px 0 14px;
  padding: 10px 12px;
  border: 1px solid #d7e3db;
  border-radius: 6px;
  background: #f4f8f6;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.6;
}

.ai-status.loading {
  border-color: #c7d7ee;
  background: #f1f6fd;
  color: #31527d;
}

.ai-status.success,
.report-source.ai {
  border-color: #bfdcc9;
  background: #eff8f2;
  color: var(--green-800);
}

.ai-status.error {
  border-color: #e5c0bd;
  background: #fff4f2;
  color: #9b3f35;
}

.report-source {
  font-weight: 800;
}

body.print-report-mode {
  background: #fff;
}

@media (max-width: 980px) {
  .login-screen,
  .workspace-hero,
  .detail-layout,
  .self-layout {
    grid-template-columns: 1fr;
  }

  .step-sidebar {
    position: static;
  }

  .login-screen {
    min-height: auto;
  }

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

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

  .intro-band,
  .value-cards {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 680px) {
  .topbar {
    align-items: flex-start;
    flex-direction: column;
  }

  .login-screen {
    width: min(100% - 22px, 1180px);
  }

  .hero-stats,
  .role-tabs,
  .form-grid,
  .form-grid.two,
  .visual-grid,
  .module-preview-grid,
  .personality-map,
  .industry-menu,
  .chat-input-row {
    grid-template-columns: 1fr;
  }

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

@media print {
  body.print-report-mode .topbar,
  body.print-report-mode .login-screen,
  body.print-report-mode .dashboard-view,
  body.print-report-mode .module-detail,
  body.print-report-mode .summary-view,
  body.print-report-mode .step-sidebar,
  body.print-report-mode .step-head,
  body.print-report-mode .self-step:not([data-self-step="5"]),
  body.print-report-mode .industry-step:not([data-industry-step="5"]),
  body.print-report-mode .startup-step:not([data-startup-step="6"]),
  body.print-report-mode .rolemodel-step:not([data-rolemodel-step="6"]),
  body.print-report-mode .report-builder,
  body.print-report-mode .ai-status,
  body.print-report-mode .step-actions,
  body.print-report-mode .detail-head,
  body.print-report-mode .modal {
    display: none !important;
  }

  body.print-report-mode.print-all-mode .topbar,
  body.print-report-mode.print-all-mode .login-screen,
  body.print-report-mode.print-all-mode .dashboard-view,
  body.print-report-mode.print-all-mode .module-detail,
  body.print-report-mode.print-all-mode .self-module,
  body.print-report-mode.print-all-mode .industry-module,
  body.print-report-mode.print-all-mode .startup-module,
  body.print-report-mode.print-all-mode .rolemodel-module,
  body.print-report-mode.print-all-mode .detail-actions {
    display: none !important;
  }

  body.print-report-mode.print-all-mode .summary-view,
  body.print-report-mode.print-all-mode .summary-card,
  body.print-report-mode.print-all-mode .all-report-preview {
    display: block !important;
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    box-shadow: none !important;
    background: #fff !important;
  }

  body.print-report-mode.print-all-mode .artifact-actions,
  body.print-report-mode.print-all-mode .summary-list,
  body.print-report-mode.print-all-mode #summaryIntro,
  body.print-report-mode.print-all-mode .summary-card > .eyebrow,
  body.print-report-mode.print-all-mode .summary-card > h1 {
    display: none !important;
  }

  body.print-report-mode.print-all-mode .output-artifact {
    break-after: page;
    page-break-after: always;
    margin: 0 0 18px !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
  }

  body.print-report-mode.print-single-artifact .all-report-section {
    display: none !important;
  }

  body.print-report-mode.print-single-artifact[data-print-artifact="self-artifact"] .all-report-section[data-artifact-id="self-artifact"],
  body.print-report-mode.print-single-artifact[data-print-artifact="industry-handbook"] .all-report-section[data-artifact-id="industry-handbook"],
  body.print-report-mode.print-single-artifact[data-print-artifact="job-card"] .all-report-section[data-artifact-id="job-card"],
  body.print-report-mode.print-single-artifact[data-print-artifact="startup-brief"] .all-report-section[data-artifact-id="startup-brief"],
  body.print-report-mode.print-single-artifact[data-print-artifact="rolemodel-timeline"] .all-report-section[data-artifact-id="rolemodel-timeline"] {
    display: block !important;
  }

  body.print-report-mode .workspace,
  body.print-report-mode .self-module,
  body.print-report-mode .industry-module,
  body.print-report-mode .startup-module,
  body.print-report-mode .rolemodel-module,
  body.print-report-mode .self-layout,
  body.print-report-mode .step-panel {
    display: block !important;
    width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    box-shadow: none !important;
    background: #fff !important;
  }

  body.print-report-mode .self-report {
    border: 0;
    padding: 0;
    margin: 0;
    font-size: 12pt;
  }

  body.print-report-mode .self-report h2 {
    break-after: avoid;
  }

  body.print-report-mode .artifact-head,
  body.print-report-mode .artifact-panel,
  body.print-report-mode .card-face,
  body.print-report-mode .lane-node {
    break-inside: avoid;
  }

  body.print-report-mode .output-artifact {
    font-size: 10.5pt;
  }

  body.print-report-mode .artifact-grid.two-col,
  body.print-report-mode .duplex-card,
  body.print-report-mode .parallel-timeline {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  body.print-report-mode .handbook-layout,
  body.print-report-mode .artifact-grid.three-col,
  body.print-report-mode .mini-roadmap {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  }

  body.print-report-mode .empty-text {
    display: none;
  }
}
