.architecture{--night:#0b1926;--mint:#8ee1c9;margin-top:46px;scroll-margin-top:100px}
.architecture-intro{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:start;margin-bottom:26px}
.architecture-intro h3{font-size:clamp(28px,3.1vw,43px);line-height:1.08;letter-spacing:-.045em;font-weight:650;margin:12px 0 0}
.architecture-intro p{max-width:560px;margin:0;color:#5a6b77;font-size:15px;line-height:1.7}
.architecture .diagram{background:var(--night);color:#eef7f8;padding:32px;border-radius:17px;box-shadow:0 26px 65px rgba(21,37,49,.13);position:relative;overflow:hidden}
.architecture .diagram:before{content:"";pointer-events:none;position:absolute;inset:0;background:radial-gradient(ellipse at 73% -10%,rgba(74,176,154,.11),transparent 52%)}
.architecture .diagram>*{position:relative;z-index:1}
.architecture .board-top{display:flex;justify-content:space-between;gap:20px;align-items:center;padding-bottom:23px;border-bottom:1px solid rgba(218,236,234,.12)}
.architecture .board-heading{font-size:11px;line-height:1.7;font-weight:750;letter-spacing:.16em;color:#c8dadf;text-transform:uppercase;margin:0}
.architecture .board-key{display:flex;align-items:center;gap:10px;font-size:11px;line-height:1.5;color:#a5b9bf}
.architecture .little-light{height:7px;width:7px;flex:none;border-radius:50%;background:#70d7b9;box-shadow:0 0 17px rgba(112,215,185,.5)}
.architecture .lane-label{padding:24px 0 15px;font-size:10px;font-weight:760;color:#a0b5bd;letter-spacing:.15em;text-transform:uppercase}
.architecture .flow{display:grid;grid-template-columns:minmax(0,1fr) 32px minmax(0,1fr) 32px minmax(0,1fr) 32px minmax(0,1fr);gap:0;position:relative;align-items:stretch}
.architecture button{font-family:inherit}
.architecture .node{position:relative;display:block;min-width:0;text-align:left;appearance:none;color:inherit;cursor:pointer;border:1px solid #294556;border-radius:11px;min-height:196px;padding:22px 19px;background:linear-gradient(180deg,#183042 0%,#112738 100%);transition:border-color .2s,background .2s,transform .2s,box-shadow .2s}
.architecture .node-title,.architecture .node-description,.architecture .num,.architecture .support-kicker{display:block}
.architecture .num{font-size:10px;font-weight:700;color:var(--mint);letter-spacing:.11em;margin-bottom:25px}
.architecture .node-title{font-size:20px;letter-spacing:-.025em;line-height:1.16;font-weight:610;margin-bottom:12px}
.architecture .node-description{font-size:12px;color:#afc2c9;line-height:1.5}
.architecture .connector{position:relative;min-width:0;isolation:isolate;opacity:.68;transition:opacity .2s}
.architecture .connector:before{content:"";position:absolute;left:0;right:6px;top:50%;height:2px;background:linear-gradient(90deg,#486a73,#6aab9d)}
.architecture .connector:after{content:"›";position:absolute;right:0;top:50%;transform:translateY(-52%);font-size:29px;font-weight:300;color:#7cbdaa}
.architecture .connector-pulse{position:absolute;left:0;top:calc(50% - 2px);height:6px;width:6px;border-radius:50%;background:#9ef4db;box-shadow:0 0 13px 3px rgba(122,239,207,.4);opacity:0;pointer-events:none}
.architecture .connector.is-active{opacity:1}
.architecture .connector.is-active:before{height:3px;background:#91eacb;box-shadow:0 0 10px rgba(114,235,201,.4)}
.architecture .connector.is-active:after{color:#abffe1}
.architecture .connector.is-active .connector-pulse{animation:architecture-flow 2s ease-in-out infinite}
.architecture .connector.is-muted{opacity:.14}
@keyframes architecture-flow{0%{left:0;opacity:0}15%,85%{opacity:1}100%{left:calc(100% - 8px);opacity:0}}

.architecture .continuity{display:flex;align-items:center;gap:14px;margin-top:25px;color:#a0b6bf;font-size:10px;letter-spacing:.04em;text-align:center}
.architecture .continuity:before,.architecture .continuity:after{content:"";flex:1;border-top:1px dashed #3b5967}
.architecture .supports{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px;margin-top:15px}
.architecture .support{min-width:0;border:1px solid #294556;border-radius:11px;padding:20px 22px;background:rgba(23,47,61,.58);color:#e2f1f0;text-align:left;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:14px;transition:border-color .2s,background .2s,transform .2s}
.architecture .support-kicker{font-size:10px;color:var(--mint);letter-spacing:.12em;text-transform:uppercase;font-weight:750;margin-bottom:10px}
.architecture .support strong{font-size:17px;letter-spacing:-.01em;font-weight:610}
.architecture .support em{display:block;font-style:normal;font-size:12px;color:#abc1c8;line-height:1.5;margin-top:8px}
.architecture .glyph{color:var(--mint);border:1px solid #396a6a;border-radius:10px;display:grid;place-items:center;width:44px;height:44px;flex-shrink:0}
.architecture .glyph svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}

.architecture .node.is-muted,.architecture .support.is-muted{background:#101e2a;border-color:#223643;color:#a4b9c2}
.architecture .node.is-muted .num,.architecture .support.is-muted .support-kicker{color:#91aca6}
.architecture .node.is-muted .node-description,.architecture .support.is-muted em{color:#a4b7bf}
.architecture .node.is-context,.architecture .support.is-context{border-color:#47796f;background:linear-gradient(180deg,#1a3545,#15303f)}
.architecture .node:hover,.architecture .support:hover{border-color:#8edec6;transform:translateY(-2px)}
.architecture .node.active,.architecture .support.active{border-color:#9decd1;background:linear-gradient(150deg,#1b443f 0%,#16383f 68%,#153145 100%);box-shadow:inset 0 0 0 1px rgba(119,233,198,.2)}
.architecture .node:focus-visible,.architecture .support:focus-visible,.architecture .reset-btn:focus-visible{outline:2px solid #abffe1;outline-offset:4px}
.architecture .reset-btn{min-height:40px;background:transparent;color:#b1dacc;border:1px solid #3d645f;border-radius:22px;padding:9px 15px;white-space:nowrap;font-size:11px;font-weight:650;cursor:pointer;transition:.2s}
.architecture .reset-btn:hover{color:#fff;border-color:#a0e4cf;background:rgba(95,188,157,.1)}

/* The desktop explanation stays above the diagram while its modules are in view. */
.architecture .detail{position:sticky;top:12px;z-index:4;display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:28px;align-items:center;margin:0 0 18px;padding:22px 26px;background:#fffefa;border:1px solid #d3dfd7;border-radius:13px;min-height:140px;box-shadow:0 7px 22px rgba(21,37,49,.06)}
.architecture .detail[hidden]{display:none}
.architecture .detail-tag{font-size:10px;color:#4e6b61;font-weight:750;letter-spacing:.14em;text-transform:uppercase}
.architecture .detail h4{font-size:25px;line-height:1.18;font-weight:640;letter-spacing:-.035em;margin:10px 0 0;color:#142e3b}
.architecture .detail-prompt{font-size:11px;line-height:1.6;color:#60737c;margin:10px 0 0}
.architecture .detail-what{font-size:14px;color:#334a56;line-height:1.7;margin:0}
.architecture-note{max-width:880px;font-size:12px;line-height:1.65;color:#5c707a;margin:20px 0 0}
@media(max-width:1050px){.architecture .diagram{padding:26px}.architecture .flow{grid-template-columns:minmax(0,1fr) 23px minmax(0,1fr) 23px minmax(0,1fr) 23px minmax(0,1fr)}.architecture .node{padding:20px 15px}.architecture .node-title{font-size:18px}.architecture .board-key>span:not(.little-light){max-width:130px}}
@media(max-width:760px){.architecture{margin-top:35px}.architecture-intro{grid-template-columns:1fr;gap:16px}.architecture-intro p{font-size:14px}.architecture .diagram{padding:23px 18px;border-radius:13px}.architecture .board-top{align-items:flex-start;gap:17px}.architecture .board-heading{max-width:170px;font-size:10px}.architecture .board-key{max-width:150px;flex-wrap:wrap;justify-content:flex-end;font-size:10px;gap:8px}.architecture .board-key>span:not(.little-light){max-width:126px}.architecture .lane-label{font-size:9px;line-height:1.5}.architecture .flow{grid-template-columns:minmax(0,1fr)}.architecture .node{min-height:0;padding:18px 20px}.architecture .num{margin-bottom:12px}.architecture .node-title{font-size:20px;margin-bottom:7px}.architecture .node-title br{display:none}.architecture .connector{height:25px}.architecture .connector:before{width:2px;height:calc(100% - 7px);left:calc(50% - 1px);top:0;right:auto;background:#64998e}.architecture .connector:after{content:"⌄";font-size:25px;left:50%;top:auto;bottom:-10px;right:auto;transform:translateX(-50%)}.architecture .connector.is-active:before{height:calc(100% - 7px);width:3px}.architecture .connector-pulse{left:calc(50% - 3px);top:0}.architecture .connector.is-active .connector-pulse{animation:architecture-flow-vertical 2s ease-in-out infinite}.architecture .supports{grid-template-columns:1fr;gap:12px}.architecture .support{padding:20px}.architecture .continuity{font-size:9px;line-height:1.5;gap:10px}.architecture-note{font-size:11px}}
@keyframes architecture-flow-vertical{0%{top:0;opacity:0}15%,85%{opacity:1}100%{top:calc(100% - 8px);opacity:0}}
@media(max-width:380px){.architecture .diagram{padding:20px 14px}.architecture .board-heading{max-width:115px;letter-spacing:.12em}.architecture .board-key{max-width:133px}.architecture .board-key>span:not(.little-light){max-width:108px}.architecture .support{padding:18px 15px}.architecture .support strong{font-size:16px}.architecture .glyph{width:36px;height:36px}}
@media(prefers-reduced-motion:reduce){.architecture *,.architecture *:before,.architecture *:after{transition:none!important;animation:none!important}.architecture .connector-pulse{display:none}.architecture .node:hover,.architecture .support:hover{transform:none}}

.architecture .section-label{font-size:11px;text-transform:uppercase;letter-spacing:.17em;font-weight:700;color:#536e6d;line-height:1.5;margin-bottom:12px}

@media(max-width:760px){
  .architecture .node,.architecture .support{scroll-margin-top:18px}
  .architecture .detail.is-inline{position:relative;top:auto;z-index:1;grid-column:1/-1;grid-template-columns:1fr;gap:12px;min-height:0;margin:10px 0 6px;padding:20px;border-radius:10px;box-shadow:none}
  .architecture .detail.is-inline h4{font-size:23px}
  .architecture .detail.is-inline .detail-what{font-size:14px;line-height:1.65}
  .architecture .detail.is-inline .detail-prompt{display:none}
}
@media(max-width:380px){.architecture .detail.is-inline{padding:17px}}
