:root{
  --page:#f4f7fb;
  --surface:#ffffff;
  --surface-subtle:#f8fafc;
  --surface-strong:#0f2740;
  --text:#132238;
  --text-soft:#4f6277;
  --muted:#718196;
  --line:#dde5ee;
  --line-strong:#cad6e2;
  --primary:#087f73;
  --primary-dark:#05665e;
  --primary-soft:#e7f6f3;
  --secondary:#2563eb;
  --secondary-soft:#eaf1ff;
  --warning:#a56b00;
  --warning-soft:#fff7df;
  --danger:#b42318;
  --danger-soft:#fff0ee;
  --success:#16794b;
  --success-soft:#eaf8f1;
  --shadow-sm:0 1px 2px rgba(20,37,63,.05),0 4px 16px rgba(20,37,63,.04);
  --shadow-md:0 16px 45px rgba(20,37,63,.09);
  --radius:18px;
  --radius-sm:12px;
  --max:1380px;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  color:var(--text);
  background:
    radial-gradient(circle at 8% 0%, rgba(8,127,115,.06), transparent 28%),
    radial-gradient(circle at 95% 2%, rgba(37,99,235,.05), transparent 24%),
    var(--page);
  font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  line-height:1.58;
  letter-spacing:-.005em;
}
a{color:inherit;text-decoration:none}
button,input{font:inherit}
button{appearance:none}
.container{width:min(var(--max),calc(100% - 40px));margin:0 auto}

/* Top navigation */
.topbar{
  position:sticky;
  top:0;
  z-index:100;
  border-bottom:1px solid rgba(221,229,238,.9);
  background:rgba(255,255,255,.88);
  backdrop-filter:blur(18px);
}
.topbar-inner{
  min-height:68px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
}
.brand{
  display:flex;
  align-items:center;
  gap:11px;
  color:var(--surface-strong);
  font-weight:760;
  letter-spacing:-.025em;
}
.brand-mark{
  width:34px;
  height:34px;
  display:grid;
  place-items:center;
  border-radius:10px;
  color:#fff;
  font-size:.78rem;
  font-weight:850;
  background:linear-gradient(145deg,var(--primary),#0da897);
  box-shadow:0 7px 18px rgba(8,127,115,.20);
}
.top-actions{display:flex;align-items:center;gap:9px}
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:38px;
  padding:8px 14px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--surface);
  color:var(--text);
  font-size:.88rem;
  font-weight:680;
  cursor:pointer;
  box-shadow:0 1px 1px rgba(15,39,64,.03);
  transition:.18s ease;
}
.btn:hover{
  transform:translateY(-1px);
  border-color:var(--line-strong);
  box-shadow:var(--shadow-sm);
}
.top-actions .btn:first-child{
  color:#fff;
  border-color:var(--primary);
  background:var(--primary);
}
.top-actions .btn:first-child:hover{background:var(--primary-dark)}

/* Hero */
.hero{
  position:relative;
  overflow:hidden;
  margin:32px 0 30px;
  padding:52px 56px;
  border:1px solid #dbe8e5;
  border-radius:28px;
  background:
    linear-gradient(120deg,rgba(255,255,255,.98),rgba(248,252,251,.96)),
    var(--surface);
  box-shadow:var(--shadow-sm);
}
.hero::before{
  content:"";
  position:absolute;
  width:330px;
  height:330px;
  right:-130px;
  top:-170px;
  border-radius:50%;
  background:radial-gradient(circle,rgba(8,127,115,.12),rgba(8,127,115,0) 68%);
}
.hero::after{
  content:"";
  position:absolute;
  width:220px;
  height:220px;
  right:90px;
  bottom:-170px;
  border-radius:50%;
  background:radial-gradient(circle,rgba(37,99,235,.08),rgba(37,99,235,0) 70%);
}
.eyebrow{
  position:relative;
  z-index:1;
  display:inline-flex;
  align-items:center;
  min-height:28px;
  padding:5px 10px;
  border:1px solid #bfe2dc;
  border-radius:999px;
  background:var(--primary-soft);
  color:var(--primary-dark);
  font-size:.74rem;
  font-weight:780;
  text-transform:uppercase;
  letter-spacing:.095em;
}
h1,h2,h3,h4{margin:0;line-height:1.16}
h1{
  position:relative;
  z-index:1;
  max-width:1000px;
  margin-top:18px;
  color:var(--surface-strong);
  font-size:clamp(2.5rem,5.3vw,5rem);
  font-weight:780;
  letter-spacing:-.055em;
}
h2{
  color:var(--surface-strong);
  font-size:clamp(1.45rem,2.5vw,2.05rem);
  font-weight:760;
  letter-spacing:-.035em;
}
h3{
  color:var(--surface-strong);
  font-size:1rem;
  font-weight:730;
  letter-spacing:-.018em;
}
.lead{
  position:relative;
  z-index:1;
  max-width:860px;
  margin:18px 0 0;
  color:var(--text-soft);
  font-size:clamp(1rem,1.6vw,1.17rem);
}
.gradient{
  color:var(--surface-strong);
  background:none;
  -webkit-background-clip:initial;
  background-clip:initial;
}

/* Page layout */
.page-grid{
  display:grid;
  grid-template-columns:245px minmax(0,1fr);
  gap:24px;
  padding-bottom:76px;
}
.sidebar{
  position:sticky;
  top:92px;
  align-self:start;
  max-height:calc(100vh - 116px);
  overflow:auto;
  padding:14px;
  border:1px solid var(--line);
  border-radius:16px;
  background:rgba(255,255,255,.92);
  box-shadow:var(--shadow-sm);
}
.sidebar-title{
  margin:7px 10px 9px;
  color:#8997a7;
  font-size:.67rem;
  font-weight:780;
  text-transform:uppercase;
  letter-spacing:.11em;
}
.search{
  width:100%;
  height:40px;
  margin-bottom:12px;
  padding:0 12px;
  border:1px solid var(--line);
  border-radius:10px;
  outline:none;
  background:var(--surface-subtle);
  color:var(--text);
  transition:.18s ease;
}
.search:focus{
  border-color:#8bc9c0;
  box-shadow:0 0 0 4px rgba(8,127,115,.09);
  background:#fff;
}
.nav{display:flex;flex-direction:column;gap:3px}
.nav a{
  display:flex;
  align-items:center;
  min-height:36px;
  padding:8px 10px;
  border-radius:8px;
  color:#607286;
  font-size:.86rem;
  font-weight:580;
  transition:.16s ease;
}
.nav a:hover{color:var(--surface-strong);background:#f3f7fa}
.nav a.active{
  color:var(--primary-dark);
  background:var(--primary-soft);
  font-weight:700;
}
.content{min-width:0}

/* Sections and cards */
.section{
  scroll-margin-top:92px;
  margin-bottom:22px;
  padding:30px;
  border:1px solid var(--line);
  border-radius:var(--radius);
  background:var(--surface);
  box-shadow:var(--shadow-sm);
}
.section-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:18px;
  margin-bottom:22px;
  padding-bottom:18px;
  border-bottom:1px solid #edf1f5;
}
.section-sub{
  max-width:790px;
  margin:7px 0 0;
  color:var(--muted);
  font-size:.95rem;
}
.tag{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  min-height:27px;
  padding:4px 9px;
  border:1px solid #cbdcf7;
  border-radius:999px;
  background:var(--secondary-soft);
  color:#2456a8;
  font-size:.72rem;
  font-weight:760;
  letter-spacing:.03em;
}
.grid{display:grid;gap:14px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.card{
  position:relative;
  min-height:100%;
  padding:19px;
  border:1px solid #e4eaf0;
  border-radius:14px;
  background:linear-gradient(180deg,#fff,#fbfcfd);
  box-shadow:0 1px 1px rgba(15,39,64,.02);
  transition:.18s ease;
}
.card:hover{
  transform:translateY(-2px);
  border-color:#cad7e2;
  box-shadow:0 12px 26px rgba(15,39,64,.07);
}
.card h3{margin-bottom:7px}
.card p{margin:0;color:var(--text-soft);font-size:.92rem}
.icon{
  position:relative;
  width:36px;
  height:36px;
  margin-bottom:15px;
  overflow:hidden;
  border:1px solid #cce7e2;
  border-radius:10px;
  background:var(--primary-soft);
  color:transparent;
  font-size:0;
}
.icon::before,.icon::after{
  content:"";
  position:absolute;
  border-radius:3px;
  background:var(--primary);
}
.icon::before{width:13px;height:5px;left:10px;top:9px}
.icon::after{width:5px;height:13px;left:14px;top:5px}
.list{
  display:grid;
  gap:8px;
  margin:11px 0 0;
  padding:0;
  list-style:none;
}
.list li{
  position:relative;
  padding-left:18px;
  color:var(--text-soft);
  font-size:.91rem;
}
.list li::before{
  content:"";
  position:absolute;
  left:1px;
  top:.68em;
  width:6px;
  height:6px;
  border-radius:50%;
  background:var(--primary);
}
.quote{
  padding:19px 21px;
  border:1px solid #cde8e3;
  border-left:4px solid var(--primary);
  border-radius:12px;
  background:linear-gradient(90deg,var(--primary-soft),#f8fcfb);
  color:#21483f;
  font-size:1.04rem;
  font-weight:560;
}
.callout{
  margin-top:18px;
  padding:15px 17px;
  border:1px solid #ead9a7;
  border-radius:12px;
  background:var(--warning-soft);
  color:#6e4d09;
  font-size:.92rem;
}

/* Flows */
.flow{
  display:grid;
  grid-template-columns:repeat(7,minmax(135px,1fr));
  gap:9px;
  overflow-x:auto;
  padding:4px 2px 8px;
}
.step{
  position:relative;
  min-width:135px;
  min-height:92px;
  padding:15px;
  border:1px solid #dfe7ee;
  border-radius:12px;
  background:var(--surface-subtle);
  color:var(--surface-strong);
  font-size:.9rem;
  font-weight:650;
}
.step:not(:last-child)::after{
  content:"";
  position:absolute;
  right:-7px;
  top:50%;
  width:5px;
  height:5px;
  border-top:1.5px solid #9aa9b8;
  border-right:1.5px solid #9aa9b8;
  transform:rotate(45deg);
}
.step b{
  display:block;
  margin-bottom:9px;
  color:var(--primary);
  font-size:.67rem;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.09em;
}
.pills{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.pill{
  padding:6px 9px;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--surface-subtle);
  color:#52667b;
  font-size:.79rem;
  font-weight:620;
}

/* Data tables */
.table-wrap{
  overflow:auto;
  border:1px solid var(--line);
  border-radius:13px;
}
table{
  width:100%;
  min-width:760px;
  border-collapse:separate;
  border-spacing:0;
  background:#fff;
}
th,td{
  padding:13px 14px;
  text-align:left;
  vertical-align:top;
  border-bottom:1px solid #e9eef3;
}
th{
  position:sticky;
  top:0;
  z-index:1;
  background:#f6f8fa;
  color:#536579;
  font-size:.69rem;
  font-weight:780;
  text-transform:uppercase;
  letter-spacing:.075em;
}
td{color:var(--text-soft);font-size:.88rem}
tbody tr:hover td{background:#fbfcfd}
tr:last-child td{border-bottom:0}
.status{
  display:inline-flex;
  align-items:center;
  min-height:25px;
  padding:4px 8px;
  border-radius:999px;
  font-size:.72rem;
  font-weight:760;
  white-space:nowrap;
}
.must{background:var(--success-soft);color:var(--success)}
.later{background:var(--warning-soft);color:var(--warning)}
.out{background:var(--danger-soft);color:var(--danger)}

/* KPIs and page cards */
.kpi{
  padding:19px;
  border:1px solid var(--line);
  border-radius:14px;
  background:#fff;
  box-shadow:var(--shadow-sm);
}
.kpi strong{
  display:block;
  margin-bottom:5px;
  color:var(--surface-strong);
  font-size:1.25rem;
  font-weight:780;
  letter-spacing:-.03em;
}
.kpi span{color:var(--muted);font-size:.87rem}
.hero-stats{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:12px;
  margin-top:30px;
}
.page-cards{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:14px;
  margin-top:26px;
}
.page-card{
  position:relative;
  min-height:175px;
  padding:21px;
  border:1px solid var(--line);
  border-radius:15px;
  background:linear-gradient(180deg,#fff,#fafcfd);
  transition:.18s ease;
}
.page-card::before{
  content:"";
  display:block;
  width:28px;
  height:4px;
  margin-bottom:22px;
  border-radius:999px;
  background:linear-gradient(90deg,var(--primary),#42b9ac);
}
.page-card:hover{
  transform:translateY(-3px);
  border-color:#bdd8d3;
  box-shadow:var(--shadow-md);
}
.page-card h3{margin-bottom:8px;font-size:1.03rem}
.page-card p{margin:0 0 14px;color:var(--text-soft);font-size:.9rem}
.page-card .arrow{color:var(--primary);font-size:.84rem;font-weight:740}

/* Architecture and code */
.code{
  overflow:auto;
  margin:0;
  padding:18px;
  border:1px solid #23435f;
  border-radius:13px;
  background:var(--surface-strong);
  color:#d9e9f5;
  font-family:"SFMono-Regular",Consolas,"Liberation Mono",monospace;
  font-size:.84rem;
  line-height:1.65;
  white-space:pre-wrap;
}
.arch{display:grid;grid-template-columns:1fr 1.25fr 1fr;gap:13px}
.arch-col{display:grid;gap:10px}
.arch-box{
  padding:16px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--surface-subtle);
  color:var(--surface-strong);
  font-size:.91rem;
}
.arch-core{
  display:grid;
  place-items:center;
  min-height:100%;
  padding:28px;
  border:1px solid #badfd9;
  border-radius:14px;
  background:linear-gradient(145deg,#edf9f7,#f7fbff);
  text-align:center;
}
.timeline{display:grid;gap:11px}
.phase{
  display:grid;
  grid-template-columns:120px minmax(0,1fr);
  gap:20px;
  padding:18px;
  border:1px solid var(--line);
  border-radius:13px;
  background:var(--surface-subtle);
}
.phase-label{
  color:var(--primary-dark);
  font-size:.85rem;
  font-weight:780;
  line-height:1.35;
}
.checks{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px 18px;
}
.check{
  display:flex;
  align-items:flex-start;
  gap:9px;
  color:var(--text-soft);
  font-size:.9rem;
}
.check::before{
  content:"";
  flex:0 0 auto;
  width:16px;
  height:16px;
  margin-top:3px;
  border-radius:50%;
  background:
    linear-gradient(135deg,transparent 42%,#fff 43% 55%,transparent 56%),
    var(--primary);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.4);
}
.footer{
  padding:4px 0 48px;
  color:#8492a3;
  text-align:center;
  font-size:.8rem;
}
.hide{display:none!important}

/* Responsive */
@media(max-width:1100px){
  .page-grid{grid-template-columns:1fr}
  .sidebar{position:relative;top:auto;max-height:none}
  .nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
  .arch{grid-template-columns:1fr}
  .g4,.hero-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:760px){
  .container{width:min(var(--max),calc(100% - 22px))}
  .topbar-inner{min-height:62px}
  .top-actions .btn:last-child{display:none}
  .hero{margin-top:18px;padding:34px 24px;border-radius:20px}
  h1{font-size:clamp(2.25rem,12vw,3.8rem)}
  .g2,.g3,.g4,.page-cards,.hero-stats,.checks{grid-template-columns:1fr}
  .nav{grid-template-columns:1fr 1fr}
  .section{padding:22px;border-radius:16px}
  .section-head{flex-direction:column;padding-bottom:15px}
  .phase{grid-template-columns:1fr;gap:8px}
  .tag{align-self:flex-start}
}
@media print{
  body{background:#fff;color:#111}
  .topbar,.sidebar,.top-actions{display:none!important}
  .container{width:100%}
  .hero{margin:0 0 20px;padding:22px;border:0;box-shadow:none}
  .page-grid{display:block}
  .section,.card,.kpi,.page-card{break-inside:avoid;box-shadow:none}
  .section{border-color:#d8d8d8}
  .gradient{color:#111}
}