:root{
  /* Brand core */
  --navy-950:#0b1624;
  --navy-900:#102236;
  --navy-850:#13304b;
  --navy-800:#183b5a;
  --navy-700:#234c72;

  /* Support neutrals */
  --slate-900:#1b2430;
  --slate-800:#314052;
  --slate-700:#4b5d73;
  --slate-600:#66788f;
  --slate-500:#8797ab;
  --slate-400:#aab6c5;
  --slate-300:#cdd5df;
  --slate-200:#e7ecf1;
  --slate-100:#f3f6f9;
  --white:#ffffff;

  /* Functional accents */
  --teal-700:#0f766e;
  --teal-600:#128277;
  --teal-500:#1b9a8d;
  --teal-100:#dff6f2;

  --amber-700:#a16207;
  --amber-600:#b9770e;
  --amber-500:#d18c16;
  --amber-100:#fff4db;

  --red-700:#b42318;
  --red-600:#c63d32;
  --red-500:#d95c51;
  --red-100:#fde8e6;

  --blue-600:#245ea8;
  --blue-100:#e8f1fb;

  /* UI tokens */
  --bg:var(--slate-100);
  --surface:var(--white);
  --surface-alt:#f8fafc;
  --border:var(--slate-200);
  --border-strong:var(--slate-300);
  --text:var(--slate-900);
  --text-soft:var(--slate-700);
  --text-muted:var(--slate-600);
  --heading:var(--navy-900);
  --primary:var(--navy-850);
  --primary-hover:var(--navy-800);
  --primary-ghost:#eaf0f6;

  --success:var(--teal-600);
  --success-bg:var(--teal-100);
  --warning:var(--amber-600);
  --warning-bg:var(--amber-100);
  --danger:var(--red-600);
  --danger-bg:var(--red-100);
  --info:var(--blue-600);
  --info-bg:var(--blue-100);

  /* Shadows */
  --shadow-sm:0 1px 2px rgba(9,18,30,0.05);
  --shadow-md:0 8px 24px rgba(16,34,54,0.08);
  --shadow-lg:0 14px 34px rgba(11,22,36,0.12);

  /* Radius */
  --radius-xs:8px;
  --radius-sm:12px;
  --radius-md:16px;
  --radius-lg:20px;
  --radius-xl:24px;

  /* Spacing */
  --space-1:4px;
  --space-2:8px;
  --space-3:12px;
  --space-4:16px;
  --space-5:20px;
  --space-6:24px;
  --space-7:32px;
  --space-8:40px;
  --space-9:48px;

  /* Typography */
  --font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Inter,Helvetica,Arial,sans-serif;
  --fs-xs:12px;
  --fs-sm:14px;
  --fs-md:16px;
  --fs-lg:18px;
  --fs-xl:22px;
  --fs-2xl:30px;
  --fs-3xl:38px;
  --lh-tight:1.2;
  --lh-base:1.55;
  --lh-loose:1.7;

  /* Layout */
  --container:1180px;
  --content:920px;
}

*,
*::before,
*::after{
  box-sizing:border-box;
}

html{
  scroll-behavior:smooth;
}

body{
  margin:0;
  font-family:var(--font-sans);
  font-size:var(--fs-md);
  line-height:var(--lh-base);
  color:var(--text);
  background:
    radial-gradient(circle at top right, rgba(19,48,75,0.08), transparent 28%),
    linear-gradient(180deg, #f7f9fc 0%, #f3f6f9 100%);
}

img{
  max-width:100%;
  display:block;
}

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

a{
  color:var(--primary);
  text-decoration:none;
}

a:hover{
  text-decoration:underline;
}

/* Layout */
.page-shell{
  width:min(calc(100% - 32px), var(--container));
  margin:0 auto;
}

.content-shell{
  width:min(100%, var(--content));
  margin:0 auto;
}

.section{
  padding:var(--space-8) 0;
}

.stack-xs > * + *{ margin-top:var(--space-2); }
.stack-sm > * + *{ margin-top:var(--space-3); }
.stack-md > * + *{ margin-top:var(--space-4); }
.stack-lg > * + *{ margin-top:var(--space-6); }
.stack-xl > * + *{ margin-top:var(--space-8); }

.row{
  display:flex;
  gap:var(--space-4);
  align-items:center;
  flex-wrap:wrap;
}

.grid{
  display:grid;
  gap:var(--space-5);
}

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

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

/* Typography */
.eyebrow{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:6px 10px;
  background:rgba(19,48,75,0.08);
  color:var(--primary);
  border:1px solid rgba(19,48,75,0.12);
  border-radius:999px;
  font-size:var(--fs-xs);
  font-weight:700;
  letter-spacing:0.04em;
  text-transform:uppercase;
}

.h1,
h1{
  margin:0;
  color:var(--heading);
  font-size:clamp(30px,4vw,46px);
  line-height:1.08;
  letter-spacing:-0.02em;
}

.h2,
h2{
  margin:0;
  color:var(--heading);
  font-size:clamp(24px,3vw,34px);
  line-height:1.15;
  letter-spacing:-0.02em;
}

.h3,
h3{
  margin:0;
  color:var(--heading);
  font-size:20px;
  line-height:1.2;
}

.h4,
h4{
  margin:0;
  color:var(--heading);
  font-size:16px;
  line-height:1.25;
}

.lead{
  font-size:var(--fs-lg);
  color:var(--text-soft);
  line-height:1.7;
  max-width:70ch;
}

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

.small{
  font-size:var(--fs-sm);
}

.tiny{
  font-size:var(--fs-xs);
}

.strong{
  font-weight:700;
}

/* Cards */
.card{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow-sm);
}

.card-pad{
  padding:var(--space-6);
}

.card-soft{
  background:linear-gradient(180deg, #ffffff 0%, #fbfcfe 100%);
}

.card-hero{
  border:1px solid rgba(19,48,75,0.10);
  box-shadow:var(--shadow-md);
}

.card-outline-strong{
  border-color:var(--border-strong);
}

.card-navy{
  background:linear-gradient(180deg, var(--navy-900) 0%, var(--navy-850) 100%);
  color:var(--white);
  border:1px solid rgba(255,255,255,0.08);
  box-shadow:var(--shadow-lg);
}

.card-navy .h2,
.card-navy .h3,
.card-navy .h4,
.card-navy .muted{
  color:rgba(255,255,255,0.86);
}

/* Buttons */
.btn{
  appearance:none;
  border:1px solid transparent;
  border-radius:14px;
  min-height:46px;
  padding:0 16px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  cursor:pointer;
  transition:0.2s ease;
  text-decoration:none;
  font-weight:600;
  line-height:1;
}

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

.btn:active{
  transform:translateY(0);
}

.btn:disabled{
  opacity:0.55;
  cursor:not-allowed;
  transform:none;
}

.btn-primary{
  background:var(--primary);
  color:var(--white);
  box-shadow:var(--shadow-sm);
}

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

.btn-secondary{
  background:var(--white);
  color:var(--primary);
  border-color:var(--border-strong);
}

.btn-secondary:hover{
  background:var(--surface-alt);
}

.btn-ghost{
  background:var(--primary-ghost);
  color:var(--primary);
}

.btn-success{
  background:var(--success);
  color:var(--white);
}

.btn-warning{
  background:var(--warning);
  color:var(--white);
}

/* Form controls */
.field{
  display:grid;
  gap:8px;
}

.label{
  font-size:var(--fs-sm);
  font-weight:600;
  color:var(--heading);
}

.input,
.select,
.textarea{
  width:100%;
  min-height:46px;
  padding:12px 14px;
  border:1px solid var(--border-strong);
  border-radius:12px;
  background:var(--white);
  color:var(--text);
  transition:0.18s ease;
}

.textarea{
  min-height:120px;
  resize:vertical;
}

.input:focus,
.select:focus,
.textarea:focus{
  outline:none;
  border-color:var(--navy-700);
  box-shadow:0 0 0 4px rgba(35,76,114,0.12);
}

/* Header / hero */
.topbar{
  position:sticky;
  top:0;
  z-index:30;
  backdrop-filter:blur(10px);
  background:rgba(247,249,252,0.82);
  border-bottom:1px solid rgba(205,213,223,0.7);
}

.topbar-inner{
  min-height:72px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--space-4);
}

.topbar-actions{
  display:flex;
  align-items:center;
  gap:var(--space-4);
  flex-wrap:wrap;
  justify-content:flex-end;
}

.brand{
  display:flex;
  align-items:center;
  gap:14px;
}

.brand-mark{
  width:42px;
  height:42px;
  border-radius:12px;
  background:linear-gradient(180deg,var(--navy-850),var(--navy-700));
  box-shadow:inset 0 1px 0 rgba(255,255,255,0.12);
}

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

.brand-title{
  font-size:15px;
  font-weight:700;
  color:var(--navy-900);
}

.brand-sub{
  font-size:12px;
  color:var(--text-muted);
}

.topbar-logo-link{
  display:block;
  line-height:0;
  text-decoration:none;
  color:inherit;
  transition:opacity 0.18s ease;
}

.topbar-logo-link:hover{
  text-decoration:none;
  opacity:0.92;
}

.topbar-logo-link:focus-visible{
  outline:2px solid var(--navy-700);
  outline-offset:4px;
  border-radius:12px;
}

.topbar-logo-mark{
  width:56px;
  height:56px;
  min-width:56px;
  min-height:56px;
  padding:6px;
  border-radius:12px;
  background:linear-gradient(180deg, #edf2f8 0%, #dfe7f2 100%);
  box-shadow:var(--shadow-sm);
  border:1px solid var(--border);
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  flex:0 0 56px;
}

.topbar-logo-mark img{
  display:block;
  width:100%;
  height:100%;
  max-width:100%;
  max-height:100%;
  object-fit:contain;
}

.hero{
  padding:var(--space-9) 0 var(--space-8);
}

.hero-panel{
  display:grid;
  grid-template-columns:1.25fr 0.75fr;
  gap:var(--space-6);
  align-items:stretch;
}

.hero-summary{
  padding:var(--space-7);
  min-width:0;
}

.hero-side{
  padding:var(--space-6);
  min-width:0;
}

/* Assessment shell */
.assessment-shell{
  display:grid;
  grid-template-columns:260px 1fr;
  gap:var(--space-6);
  align-items:start;
}

.assessment-sidebar{
  position:sticky;
  top:92px;
}

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

/* Progress */
.progress-card{
  overflow:hidden;
}

.progress-bar-wrap{
  width:100%;
  height:10px;
  border-radius:999px;
  background:var(--slate-200);
  overflow:hidden;
}

.progress-bar{
  height:100%;
  width:0%;
  border-radius:999px;
  background:linear-gradient(90deg,var(--navy-700),var(--teal-500));
  transition:width 0.3s ease;
}

.progress-steps{
  display:grid;
  gap:10px;
  margin-top:var(--space-4);
}

.progress-step{
  display:flex;
  align-items:flex-start;
  gap:12px;
  padding:10px 12px;
  border-radius:12px;
  color:var(--text-soft);
  border:1px solid transparent;
}

.progress-step.active{
  background:#eef4fa;
  color:var(--navy-900);
  border-color:#d8e3ef;
}

.progress-step.done{
  background:#edf9f6;
  color:var(--teal-700);
  border-color:#ccefe7;
}

.step-dot{
  width:22px;
  height:22px;
  border-radius:999px;
  display:grid;
  place-items:center;
  font-size:11px;
  font-weight:700;
  flex:0 0 auto;
  background:var(--slate-200);
  color:var(--slate-700);
}

.progress-step.active .step-dot{
  background:var(--navy-850);
  color:#fff;
}

.progress-step.done .step-dot{
  background:var(--teal-600);
  color:#fff;
}

/* Question blocks */
.question-card{
  padding:var(--space-6);
}

.question-group{
  display:grid;
  gap:var(--space-5);
}

.question{
  display:grid;
  gap:10px;
  padding-bottom:var(--space-5);
  border-bottom:1px solid var(--border);
}

.question:last-child{
  border-bottom:none;
  padding-bottom:0;
}

.question-title{
  font-weight:700;
  color:var(--heading);
}

.question-help{
  color:var(--text-muted);
  font-size:var(--fs-sm);
}

.option-list{
  display:grid;
  gap:10px;
}

.option-tile{
  padding:14px 14px;
  border:1px solid var(--border);
  border-radius:14px;
  background:var(--white);
  cursor:pointer;
  transition:0.18s ease;
}

.option-tile:hover{
  border-color:var(--navy-700);
  background:#fbfdff;
}

.option-tile.selected{
  border-color:var(--navy-700);
  background:#eff5fb;
  box-shadow:inset 0 0 0 1px rgba(35,76,114,0.08);
}

/* Status / highlight blocks */
.callout{
  border:1px solid var(--border);
  border-left:5px solid var(--navy-700);
  background:var(--surface);
  border-radius:14px;
  padding:16px 16px 16px 18px;
}

.callout-info{
  background:var(--info-bg);
  border-color:#cfe0f7;
  border-left-color:var(--info);
}

.callout-success{
  background:var(--success-bg);
  border-color:#c6ebe3;
  border-left-color:var(--success);
}

.callout-warning{
  background:var(--warning-bg);
  border-color:#f1ddb1;
  border-left-color:var(--warning);
}

.callout-danger{
  background:var(--danger-bg);
  border-color:#f3c7c3;
  border-left-color:var(--danger);
}

/* Score + band system */
.score-hero{
  display:grid;
  grid-template-columns:180px 1fr;
  gap:var(--space-6);
  align-items:center;
}

.score-ring{
  width:180px;
  height:180px;
  border-radius:50%;
  display:grid;
  place-items:center;
  background:
    radial-gradient(circle at center, #fff 0 56%, transparent 57%),
    conic-gradient(var(--navy-700) 0deg, var(--navy-700) 210deg, var(--slate-200) 210deg 360deg);
  box-shadow:var(--shadow-sm);
  border:1px solid var(--border);
}

.score-ring-inner{
  text-align:center;
}

.score-value{
  font-size:42px;
  font-weight:800;
  color:var(--navy-900);
  line-height:1;
}

.score-label{
  margin-top:6px;
  font-size:12px;
  text-transform:uppercase;
  letter-spacing:0.05em;
  color:var(--text-muted);
}

.band{
  display:inline-flex;
  align-items:center;
  gap:8px;
  min-height:34px;
  padding:0 12px;
  border-radius:999px;
  font-size:13px;
  font-weight:700;
  border:1px solid transparent;
}

.band-ready{
  color:var(--teal-700);
  background:var(--teal-100);
  border-color:#bfe7df;
}

.band-caution{
  color:var(--amber-700);
  background:var(--amber-100);
  border-color:#efd697;
}

.band-blocked{
  color:var(--red-700);
  background:var(--red-100);
  border-color:#efc0bc;
}

.band-neutral{
  color:var(--navy-800);
  background:#edf3f9;
  border-color:#d8e3ef;
}

/* KPI cards */
.kpi-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:var(--space-4);
}

.kpi{
  padding:18px;
  border-radius:16px;
  border:1px solid var(--border);
  background:linear-gradient(180deg,#fff 0%,#fbfcfd 100%);
  min-width:0;
}

.kpi-label{
  font-size:12px;
  text-transform:uppercase;
  letter-spacing:0.05em;
  color:var(--text-muted);
}

.kpi-value{
  margin-top:6px;
  font-size:28px;
  font-weight:800;
  color:var(--heading);
}

.kpi-note{
  margin-top:8px;
  font-size:13px;
  color:var(--text-soft);
}

/* Pathway cards */
.pathway-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:var(--space-6);
  align-items:stretch;
}

.pathway-card{
  padding:var(--space-6);
  padding-left:22px;
  border-radius:18px;
  border:1px solid var(--border);
  background:var(--surface);
  display:grid;
  gap:14px;
  position:relative;
  overflow:hidden;
  min-height:220px;
  align-content:start;
}

.pathway-card h4{
  font-size:18px;
  line-height:1.25;
  margin:0;
}

.pathway-card p{
  line-height:1.6;
}

.pathway-card::before{
  content:"";
  position:absolute;
  inset:0 auto 0 0;
  width:6px;
  background:var(--navy-700);
}

.pathway-card.pathway-a::before{ background:var(--info); }
.pathway-card.pathway-b::before{ background:var(--teal-600); }
.pathway-card.pathway-c::before{ background:var(--amber-600); }
.pathway-card.pathway-d::before{ background:var(--navy-700); }

.pathway-card.is-primary{
  border-color:#c9d8e8;
  box-shadow:var(--shadow-md);
}

.pathway-tag{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:34px;
  height:34px;
  padding:0 12px;
  border-radius:999px;
  font-size:13px;
  font-weight:800;
  color:#fff;
  background:var(--navy-850);
}

.pathway-a .pathway-tag{ background:var(--info); }
.pathway-b .pathway-tag{ background:var(--teal-600); }
.pathway-c .pathway-tag{ background:var(--amber-600); }
.pathway-d .pathway-tag{ background:var(--navy-700); }

/* Blockers / opportunities */
.list-panel{
  display:grid;
  gap:12px;
}

.list-item{
  display:flex;
  gap:12px;
  align-items:flex-start;
  padding:14px;
  border-radius:14px;
  border:1px solid var(--border);
  background:var(--surface-alt);
}

.list-item > div{
  flex:1 1 auto;
  min-width:0;
}

.list-icon{
  width:28px;
  height:28px;
  border-radius:999px;
  display:grid;
  place-items:center;
  font-size:12px;
  font-weight:800;
  flex:0 0 auto;
}

.list-item.blocker .list-icon{
  background:var(--red-100);
  color:var(--red-700);
}

.list-item.watchpoint .list-icon{
  background:var(--amber-100);
  color:var(--amber-700);
}

.list-item.opportunity .list-icon{
  background:var(--teal-100);
  color:var(--teal-700);
}

/* Insights */
.insights-shell{
  display:grid;
  gap:var(--space-5);
}

.insight-stat{
  padding:18px;
  border-radius:16px;
  background:linear-gradient(180deg,#fff 0%,#f9fbfd 100%);
  border:1px solid var(--border);
}

.insight-stat .value{
  font-size:30px;
  font-weight:800;
  color:var(--heading);
}

.insight-stat .label{
  margin-top:6px;
  color:var(--text-muted);
  font-size:13px;
  font-weight:600;
}

/* Booking modal */
.modal-overlay{
  position:fixed;
  inset:0;
  background:rgba(11,22,36,0.48);
  display:none;
  align-items:center;
  justify-content:center;
  padding:20px;
  z-index:100;
}

.modal-overlay.open{
  display:flex;
}

.modal{
  width:min(100%,760px);
  max-height:min(92vh,880px);
  overflow:auto;
  background:var(--white);
  border:1px solid rgba(205,213,223,0.7);
  border-radius:24px;
  box-shadow:var(--shadow-lg);
}

.modal-top{
  display:flex;
  justify-content:space-between;
  gap:16px;
  align-items:flex-start;
  padding:24px 24px 18px;
}

.modal-body{
  padding:0 24px 24px;
}

.hr{
  height:1px;
  background:var(--border);
  margin:0 24px 24px;
}

/* Certificate / report presentation */
.report-shell{
  display:grid;
  gap:var(--space-6);
}

.report-shell > *{
  min-width:0;
}

.report-header{
  display:grid;
  gap:14px;
}

.report-actions{
  display:flex;
  flex-wrap:wrap;
  gap:12px;
}

.report-subsection{
  display:grid;
  gap:14px;
}

.certificate{
  background:#fff;
  border:1px solid #d9e1ea;
  border-radius:24px;
  padding:32px;
  box-shadow:var(--shadow-sm);
  position:relative;
  overflow:hidden;
}

.certificate::before{
  content:"";
  position:absolute;
  inset:0 0 auto 0;
  height:8px;
  background:linear-gradient(90deg,var(--navy-850),var(--teal-500));
}

.certificate-grid{
  display:grid;
  grid-template-columns:1fr 260px;
  gap:24px;
}

.cert-badge{
  display:grid;
  place-items:center;
  min-height:220px;
  border-radius:20px;
  background:linear-gradient(180deg,#f7fafc 0%,#edf3f8 100%);
  border:1px solid #d8e3ef;
}

.cert-score{
  font-size:42px;
  font-weight:800;
  color:var(--navy-900);
}

/* Utilities */
.hidden{
  display:none !important;
}

.center{
  text-align:center;
}

.right{
  text-align:right;
}

.w-full{
  width:100%;
}

.mb-0{ margin-bottom:0 !important; }
.mt-0{ margin-top:0 !important; }

/* Responsive */
@media (max-width: 1100px){
  .hero-panel,
  .assessment-shell,
  .score-hero,
  .certificate-grid{
    grid-template-columns:1fr;
  }

  .assessment-sidebar{
    position:static;
  }

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

@media (max-width: 760px){
  .section{
    padding:var(--space-7) 0;
  }

  .hero-summary,
  .hero-side,
  .card-pad,
  .question-card{
    padding:20px;
  }

  .kpi-grid,
  .pathway-grid,
  .grid-2,
  .grid-3{
    grid-template-columns:1fr;
  }

  .modal-top,
  .modal-body{
    padding-left:18px;
    padding-right:18px;
  }

  .hr{
    margin-left:18px;
    margin-right:18px;
  }

  .score-ring{
    width:150px;
    height:150px;
  }

  .score-value{
    font-size:36px;
  }

  .topbar-inner{
    min-height:64px;
  }
}

/* Print */
@media print{
  body{
    background:#fff;
  }

  body.print-certificate main > *:not(#reportView){
    display:none !important;
  }

  body.print-certificate #reportView .report-header,
  body.print-certificate #reportView #mainSummaryView{
    display:none !important;
  }

  .topbar,
  .report-actions,
  .modal-overlay,
  .no-print{
    display:none !important;
  }

  .section{
    padding:0;
  }

  .card,
  .certificate{
    box-shadow:none;
    border:1px solid #cfd8e3;
  }

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