:root{--bg:#faf8f3;--panel:#fff;--panel-2:#f1ede4;--text:#1b1a17;--muted:#6e6b60;--accent:#a8412b;--accent-2:#3f5942;--accent-3:#8a6a2f;--accent-4:#5c4a63;--border:#ddd7c8;--radius:2px;--l1:#3f5942;--l2:#8a6a2f;--l3:#5c4a63;--font-serif:Georgia, "Iowan Old Style", "Times New Roman", serif;--font-sans:"Segoe UI", system-ui, -apple-system, sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font-serif);background:var(--bg);color:var(--text);margin:0;line-height:1.65}a{color:var(--accent)}code{background:var(--panel-2);border-radius:var(--radius);color:var(--accent-2);padding:1px 6px;font-family:Cascadia Code,Consolas,monospace;font-size:.85em}.layout{grid-template-columns:280px 1fr;min-height:100vh;display:grid}nav.toc{background:var(--bg);border-right:1px solid var(--border);height:100vh;font-family:var(--font-sans);align-self:start;padding:32px 20px;position:sticky;top:0;overflow-y:auto}nav.toc h2{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin:0 0 16px;font-size:.72rem;font-weight:600}nav.toc .part-label{text-transform:uppercase;letter-spacing:.1em;color:var(--accent-3);margin:20px 0 6px 10px;font-size:.64rem;font-weight:700}nav.toc ul{margin:0;padding:0;list-style:none}nav.toc li{margin-bottom:1px}nav.toc a{color:var(--muted);border-left:2px solid #0000;border-radius:0;padding:6px 10px;font-size:.85rem;text-decoration:none;transition:border-color .15s,color .15s;display:block}nav.toc a:hover{border-left-color:var(--border);color:var(--text)}nav.toc a.active{border-left-color:var(--accent);color:var(--accent);background:0 0;font-weight:600}main{max-width:760px;padding:0 48px 80px}header.hero{border-bottom:1px solid var(--border);margin-bottom:24px;padding:72px 0 32px}header.hero .kicker{font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.18em;color:var(--accent);margin-bottom:16px;font-size:.75rem;font-weight:700}header.hero h1{font-family:var(--font-serif);color:var(--text);margin:0 0 16px;font-size:2.6rem;font-weight:400;line-height:1.15}header.hero p{color:var(--muted);max-width:640px;font-size:1.05rem}.sources{font-family:var(--font-sans);flex-wrap:wrap;gap:8px;margin-top:24px;display:flex}.source-tag{border-radius:var(--radius);border:1px solid var(--border);color:var(--muted);background:0 0;padding:3px 10px;font-size:.75rem}.legend{border:1px solid var(--border);border-radius:var(--radius);font-family:var(--font-sans);background:0 0;flex-wrap:wrap;gap:20px;margin:24px 0 8px;padding:16px 20px;display:flex}.legend .lvl{color:var(--muted);align-items:center;gap:8px;font-size:.82rem;display:flex}.dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}section{border-bottom:1px solid var(--border);padding:40px 0;scroll-margin-top:24px}section:last-of-type{border-bottom:none}.part-heading{padding:48px 0 4px}.part-heading .eyebrow{font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.14em;color:var(--accent-3);font-size:.7rem;font-weight:700}.part-heading h2{font-family:var(--font-serif);margin:8px 0;font-size:2rem;font-weight:400}.part-heading p{color:var(--muted);max-width:640px;margin:0}section h2{font-family:var(--font-serif);align-items:center;gap:10px;margin:0 0 8px;font-size:1.7rem;font-weight:400;display:flex}section h2 .badge{font-family:var(--font-sans);border-radius:var(--radius);border:1px solid var(--border);color:var(--accent-2);letter-spacing:.03em;background:0 0;padding:2px 9px;font-size:.68rem;font-weight:600}section h3.chapter-title{font-family:var(--font-serif);flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 4px;font-size:1.5rem;font-weight:400;display:flex}.ch-num{font-family:var(--font-sans);border-radius:var(--radius);border:1px solid var(--border);color:var(--accent);letter-spacing:.03em;background:0 0;padding:2px 10px;font-size:.72rem;font-weight:700}.lvl-badge{font-family:var(--font-sans);border-radius:var(--radius);letter-spacing:.03em;border:1px solid;padding:2px 9px;font-size:.64rem;font-weight:700}.lvl-1{color:var(--l1);background:0 0}.lvl-2{color:var(--l2);background:0 0}.lvl-3{color:var(--l3);background:0 0}section>.subtitle{color:var(--muted);margin:4px 0 18px;font-size:1rem}.card{border:1px solid var(--border);border-radius:var(--radius);background:0 0;margin-bottom:16px;padding:18px 22px}.card p:last-child{margin-bottom:0}.card h4{font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.06em;color:var(--accent-2);margin:0 0 10px;font-size:.78rem}.accordion-item{border:1px solid var(--border);border-radius:var(--radius);background:0 0;margin-bottom:12px;overflow:hidden}.accordion-header{text-align:left;width:100%;color:var(--text);font-family:var(--font-sans);cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;font-size:.95rem;font-weight:600;display:flex}.accordion-header:hover{background:var(--panel-2)}.accordion-header .chevron{color:var(--accent);flex-shrink:0;transition:transform .2s}.accordion-header[aria-expanded=true] .chevron{transform:rotate(90deg)}.accordion-body{max-height:0;transition:max-height .25s;overflow:hidden}.accordion-body-inner{color:var(--muted);padding:0 20px 18px}.accordion-body-inner ul{margin:8px 0;padding-left:20px}.accordion-body-inner li{margin-bottom:6px}.takeaways{border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius);background:0 0;margin-top:20px;padding:18px 22px}.takeaways h3{font-family:var(--font-sans);color:var(--accent);text-transform:uppercase;letter-spacing:.05em;margin:0 0 10px;font-size:.85rem}.takeaways ul{margin:0;padding-left:20px}.takeaways li{margin-bottom:6px}.mastery{border:1px solid var(--border);border-radius:var(--radius);background:0 0;margin-bottom:16px;padding:16px 22px}.mastery h4{font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.06em;color:var(--accent);margin:0 0 12px;font-size:.78rem}.mastery ul{margin:0;padding:0;list-style:none}.mastery li{color:var(--text);margin-bottom:9px;padding-left:28px;font-size:.94rem;position:relative}.mastery li:before{content:"▢";color:var(--accent);font-size:1rem;position:absolute;top:0;left:0}.mastery li span.tag{font-family:var(--font-sans);border-radius:var(--radius);color:var(--muted);border:1px solid var(--border);vertical-align:middle;background:0 0;margin-left:6px;padding:1px 7px;font-size:.68rem;display:inline-block}.architect{border-left:3px solid var(--accent-3);border-radius:0 var(--radius) var(--radius) 0;background:0 0;margin-bottom:8px;padding:14px 20px}.architect h4{font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.06em;color:var(--accent-3);margin:0 0 8px;font-size:.78rem}.architect p{color:var(--muted);margin:0;font-size:.94rem}ul.concepts{margin:8px 0;padding-left:20px}ul.concepts li{color:var(--muted);margin-bottom:6px}ul.concepts li strong{color:var(--text)}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-family:var(--font-sans);font-size:.88rem}th,td{text-align:left;border-bottom:1px solid var(--border);vertical-align:top;padding:10px 12px}th{color:var(--text);border-bottom:2px solid var(--text);font-weight:600}td{color:var(--muted)}td strong{color:var(--text)}.diagram{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius);margin:16px 0;padding:16px;overflow-x:auto}.diagram svg{max-width:100%;margin:0 auto;display:block}.diagram-caption{font-family:var(--font-sans);text-align:center;color:var(--muted);margin-top:8px;font-size:.82rem}.arch-node,.aws-arch-node{cursor:pointer}.arch-node rect,.aws-arch-node rect{transition:filter .15s,stroke .15s}.arch-node:hover rect,.arch-node.selected rect,.aws-arch-node:hover rect,.aws-arch-node.selected rect{filter:brightness(.97);stroke:var(--accent);stroke-width:2px}#archTooltip,#awsArchTooltip{border:1px solid var(--border);border-radius:var(--radius);min-height:64px;color:var(--muted);background:0 0;margin-top:14px;padding:14px 18px}#archTooltip strong,#awsArchTooltip strong{color:var(--accent)}.cheat-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;display:grid}.cheat-card h4{font-family:var(--font-sans);color:var(--accent-3);margin:0 0 10px;font-size:.88rem}.cheat-card ul{color:var(--muted);margin:0;padding-left:18px;font-size:.9rem}.cheat-card li{margin-bottom:6px}a.cheat-card{color:inherit;border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;text-decoration:none;transition:border-color .15s,background .15s;display:block}a.cheat-card p{color:var(--muted);margin:0;font-size:.94rem}a.cheat-card:hover{border-color:var(--accent);background:var(--panel-2)}.callout{border:1px solid var(--border);border-left:3px solid var(--accent-2);border-radius:var(--radius);color:var(--muted);background:0 0;margin:14px 0;padding:14px 20px;font-size:.92rem}.callout strong{color:var(--accent-2)}pre.astro-code{border:1px solid var(--border);border-radius:var(--radius);margin:0;padding:14px 16px;font-size:.82rem;overflow-x:auto}pre.astro-code code{color:inherit;font-size:inherit;background:0 0;border-radius:0;padding:0}.compare-grid{grid-template-columns:1fr;gap:16px;margin:16px 0;display:grid}.compare-card{border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px}.compare-card h4{font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.06em;color:var(--accent-3);margin:0 0 10px;font-size:.78rem}.compare-card dl{margin:0 0 14px}.compare-card dt{font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-top:8px;font-size:.72rem}.compare-card dt:first-child{margin-top:0}.compare-card dd{margin:2px 0 0}.compare-card pre.astro-code{margin-top:0}.chapter-pager{font-family:var(--font-sans);border-top:1px solid var(--border);justify-content:space-between;gap:16px;margin:32px 0 8px;padding-top:20px;display:flex}.chapter-pager a{color:var(--accent);font-weight:600;text-decoration:none}.chapter-pager a:hover{text-decoration:underline}footer{font-family:var(--font-sans);text-align:center;color:var(--muted);padding:32px 0 60px;font-size:.82rem}footer a{color:var(--accent)}@media (width<=860px){.layout{grid-template-columns:1fr}nav.toc{border-right:none;border-bottom:1px solid var(--border);height:auto;position:static}main{padding:0 18px 60px}header.hero{padding:32px 0 24px}}
