:root{--ink:#111914;--ink-2:#18241c;--paper:#f4f1e9;--surface:#fffdf7;--line:#d8d6ca;--muted:#626c65;--green:#a5f22e;--green-dark:#477a00;--copper:#c86f3c;--blue:#3a79c5;--danger:#b43a32;--focus:#2d66d1;--shadow:0 18px 50px rgba(17,25,20,.11);--header:72px;--radius:6px;--content:1240px;--mono:"SFMono-Regular",Consolas,"Liberation Mono",monospace;--sans:Inter,"Segoe UI",Tahoma,Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.65 var(--sans);letter-spacing:0}a{color:inherit}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.skip-link{position:fixed;top:8px;left:8px;z-index:100;background:#fff;padding:10px;transform:translateY(-150%)}.skip-link:focus{transform:none}.site-header{height:var(--header);position:sticky;top:0;z-index:30;background:rgba(16,23,19,.96);color:#fff;display:grid;grid-template-columns:auto 1fr auto;align-items:center;padding:0 max(24px,calc((100vw - var(--content))/2));border-bottom:1px solid #354139;backdrop-filter:blur(12px)}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-size:17px;font-weight:800;line-height:1.05}.brand small{display:block;color:#9ca69f;font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.12em;margin-top:5px}.brand-mark{width:44px;height:34px;display:block;object-fit:contain}.primary-nav{display:flex;justify-content:center;gap:2px}.primary-nav a{padding:10px 14px;text-decoration:none;color:#b9c0bb;font-size:13px;font-weight:600;border-radius:4px}.primary-nav a:hover,.primary-nav a[aria-current=page]{background:#263129;color:#fff}.header-actions{display:flex;align-items:center;gap:8px}.icon-button,.locale-button{border:0;background:transparent;color:inherit;min-width:38px;height:38px;cursor:pointer;border-radius:4px}.icon-button:hover,.locale-button:hover{background:#263129}.locale-button{font:500 11px var(--mono);border:1px solid #48534b}.menu-button{display:none}.progress-link{display:flex;align-items:center;gap:7px;text-decoration:none;font:500 10px var(--mono);margin-inline-start:6px}.progress-ring{width:25px;height:25px;border-radius:50%;background:conic-gradient(var(--green) var(--progress,0%),#3c463f 0);position:relative}.progress-ring:after{content:"";position:absolute;inset:4px;border-radius:50%;background:var(--ink)}.search-panel{position:fixed;z-index:25;top:var(--header);left:0;right:0;padding:24px;background:var(--ink-2);color:#fff;box-shadow:var(--shadow)}.search-panel form{max-width:740px;margin:auto}.search-panel label{display:block;font-size:12px;font-weight:700;margin-bottom:8px}.search-panel form div{display:flex}.search-panel input{min-width:0;flex:1;border:1px solid #526057;border-radius:4px 0 0 4px;padding:13px;background:#fff;color:#111}.search-panel .button{border-radius:0 4px 4px 0}main{min-height:calc(100vh - 260px)}.page{max-width:var(--content);margin:auto;padding:56px 24px 88px}.page.wide{max-width:1480px}.breadcrumbs{display:flex;gap:8px;align-items:center;flex-wrap:wrap;color:var(--muted);font-size:12px;margin-bottom:34px}.breadcrumbs a{text-decoration:none}.breadcrumbs a:hover{text-decoration:underline}.breadcrumbs span+span:before,.breadcrumbs a+span:before,.breadcrumbs a+a:before{content:"/";margin-inline-end:8px;color:#a2a79f}.eyebrow{font:500 11px var(--mono);text-transform:uppercase;color:var(--green-dark);letter-spacing:.08em;margin:0 0 12px}.dark .eyebrow,.hero .eyebrow{color:var(--green)}h1,h2,h3{line-height:1.15;margin:0 0 .7em;letter-spacing:0}h1{font-size:clamp(38px,6vw,78px);font-weight:800;max-width:900px}h2{font-size:clamp(27px,4vw,44px)}h3{font-size:18px}.lede{font-size:clamp(17px,2vw,22px);line-height:1.55;max-width:760px;color:#3f4942}.hero{min-height:calc(100svh - var(--header));background:var(--ink);color:#fff;position:relative;overflow:hidden;display:grid;align-items:center}.hero-inner{width:100%;max-width:var(--content);margin:auto;padding:70px 24px 96px;position:relative;z-index:2}.hero h1{max-width:760px;animation:rise .6s ease both}.hero .lede{color:#c5cec8;max-width:650px;animation:rise .6s .08s ease both}.hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:34px;animation:rise .6s .16s ease both}.atlas-canvas{position:absolute;inset:0;width:100%;height:100%;opacity:.62}.hero-stats{position:absolute;right:max(24px,calc((100vw - var(--content))/2));bottom:55px;z-index:2;display:grid;grid-template-columns:repeat(3,auto);gap:34px;border-top:1px solid #556057;padding-top:15px}.hero-stats b{display:block;font:500 22px var(--mono);color:var(--green)}.hero-stats span{font-size:10px;text-transform:uppercase;color:#9da69f}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:43px;padding:0 17px;border:1px solid var(--ink);border-radius:4px;text-decoration:none;font-weight:700;font-size:13px;cursor:pointer;background:transparent;color:var(--ink)}.button.primary{background:var(--green);border-color:var(--green);color:#132000}.button.primary:hover{background:#bbff52}.button.secondary{border-color:#637067;color:#fff}.button.secondary:hover{background:#27332b}.button.ghost:hover{background:#e8e5dc}.button.danger{color:var(--danger);border-color:#d8aaa7}.section{padding:80px 0;border-bottom:1px solid var(--line)}.section:last-child{border-bottom:0}.section-heading{display:grid;grid-template-columns:1fr minmax(260px,480px);gap:50px;align-items:end;margin-bottom:42px}.section-heading p{color:var(--muted);margin:0}.metric-line{display:grid;grid-template-columns:repeat(4,1fr);border-block:1px solid var(--line)}.metric{padding:28px 20px;border-inline-end:1px solid var(--line)}.metric:last-child{border:0}.metric b{display:block;font:500 28px var(--mono)}.metric span{color:var(--muted);font-size:12px}.entity-list{border-top:1px solid var(--line)}.entity-row{display:grid;grid-template-columns:80px minmax(0,1fr) auto;gap:24px;align-items:center;padding:20px 8px;border-bottom:1px solid var(--line);text-decoration:none;transition:background .18s,padding .18s}.entity-row:hover{background:var(--surface);padding-inline:16px}.entity-row .code{font:500 11px var(--mono);color:var(--muted)}.entity-row strong{display:block;font-size:16px}.entity-row small{color:var(--muted)}.arrow{font-size:21px;color:var(--green-dark)}.stage-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}.stage{min-height:320px;background:var(--surface);padding:26px 20px;text-decoration:none;display:flex;flex-direction:column}.stage:hover{background:#edf2e3}.stage .number{font:500 42px var(--mono);color:var(--green-dark);margin-bottom:auto}.stage h3{font-size:20px}.stage p{font-size:12px;color:var(--muted);margin:0}.area-bands{display:grid;gap:1px;background:var(--line);border-block:1px solid var(--line)}.area-band{background:var(--surface);padding:34px;display:grid;grid-template-columns:180px 1fr auto;gap:35px;align-items:center;text-decoration:none}.area-band:hover{background:#f0f5e8}.area-band .area-code{font:500 48px var(--mono);color:var(--green-dark)}.area-band p{margin:0;color:var(--muted)}.toolbar{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin:30px 0}.field{display:grid;gap:6px;min-width:170px}.field.grow{flex:1}.field label{font-size:11px;font-weight:700;color:var(--muted)}input,select,textarea{border:1px solid #b9bcb3;border-radius:4px;background:#fff;padding:10px 12px;color:var(--ink)}textarea{min-height:120px;resize:vertical}.table-wrap{overflow:auto;border:1px solid var(--line);background:var(--surface)}table{width:100%;border-collapse:collapse;font-size:13px}th,td{padding:12px 14px;border-bottom:1px solid var(--line);text-align:start;white-space:nowrap}th{font:500 10px var(--mono);text-transform:uppercase;color:var(--muted);background:#eceae2;position:sticky;top:0}td.title-cell{white-space:normal;min-width:280px}.status{display:inline-flex;align-items:center;gap:6px;font:500 10px var(--mono);padding:4px 8px;border-radius:99px;background:#e8ecdf;color:#355e00}.status:before{content:"";width:6px;height:6px;border-radius:50%;background:#69a900}.status.missing,.status.planned{background:#f4e8e0;color:#884729}.status.missing:before,.status.planned:before{background:var(--copper)}.status.indexed{background:#e3edf7;color:#285f91}.status.indexed:before{background:var(--blue)}.notice{border-inline-start:4px solid var(--copper);background:#fff8ee;padding:18px 20px;margin:24px 0}.notice strong{display:block;margin-bottom:4px}.notice.info{border-color:var(--blue);background:#f1f7fd}.notice.success{border-color:var(--green-dark);background:#f1f8e6}.map-board{background:var(--ink);color:white;padding:36px;overflow:auto}.map-stage{min-width:850px;display:grid;grid-template-columns:140px repeat(3,minmax(190px,1fr));gap:1px;background:#39433c}.map-stage+.map-stage{margin-top:1px}.map-label{background:#202a23;padding:18px}.map-label b{font:500 28px var(--mono);color:var(--green)}.map-cell{background:#172019;padding:14px;min-height:105px}.map-cell h3{font-size:12px;color:#aab4ad;text-transform:uppercase}.map-chip{display:block;padding:7px 8px;margin:4px 0;background:#2a362e;border-inline-start:2px solid var(--green);text-decoration:none;font-size:11px}.map-chip:hover{background:#3a493e}.lesson-layout{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:54px}.lesson-header{padding-bottom:30px;border-bottom:1px solid var(--line)}.lesson-header h1{font-size:clamp(34px,5vw,62px)}.lesson-meta{display:flex;gap:10px;flex-wrap:wrap;margin:20px 0}.lesson-meta span{font:500 10px var(--mono);padding:5px 8px;border:1px solid var(--line)}.lesson-body section{padding:38px 0;border-bottom:1px solid var(--line)}.lesson-body h2{font-size:25px}.lesson-body p,.lesson-body li{font-size:16px;max-width:760px}.lesson-body li{margin:10px 0}.concept{margin:30px 0}.concept h3{font-size:16px;color:var(--green-dark)}.practice{background:var(--ink);color:#fff;padding:28px!important;margin:38px 0;border:0!important}.practice h2,.practice h3{color:var(--green)}.practice p{color:#d5ddd8}.lesson-aside{align-self:start;position:sticky;top:96px}.aside-section{border-top:1px solid var(--line);padding:18px 0}.aside-section h2{font:500 10px var(--mono);text-transform:uppercase;color:var(--muted)}.related-link{display:block;padding:8px 0;text-decoration:none;font-size:13px}.related-link:hover{text-decoration:underline}.pager{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:44px}.pager a{padding:18px;border:1px solid var(--line);text-decoration:none;background:var(--surface)}.pager a:last-child{text-align:end}.progress-box{height:8px;background:#dddcd3;overflow:hidden}.progress-box span{display:block;height:100%;width:var(--value);background:var(--green-dark);transition:width .3s}.filter-tabs{display:flex;gap:4px;flex-wrap:wrap;margin:24px 0}.filter-tabs button{border:1px solid var(--line);background:transparent;padding:8px 12px;border-radius:4px;cursor:pointer}.filter-tabs button[aria-pressed=true]{background:var(--ink);color:#fff}.empty-state{text-align:center;padding:70px 20px;border:1px dashed #aaa99f;background:var(--surface)}.empty-state .empty-code{font:500 70px var(--mono);color:#c4c4b9}.empty-state p{color:var(--muted);max-width:520px;margin:12px auto 24px}.site-footer{background:var(--ink);color:#fff;display:grid;grid-template-columns:1fr auto 1fr;gap:40px;padding:54px max(24px,calc((100vw - var(--content))/2));align-items:start}.site-footer p{color:#97a199;margin:6px 0;font-size:12px}.site-footer nav{display:flex;gap:22px}.site-footer a{color:#c7cec9;text-decoration:none;font-size:12px}.site-footer .legal{text-align:end}.toast{position:fixed;right:20px;bottom:20px;z-index:50;background:var(--ink);color:#fff;padding:12px 16px;border-inline-start:3px solid var(--green);box-shadow:var(--shadow);transform:translateY(160%);transition:transform .25s}.toast.show{transform:none}.loading{display:flex;justify-content:center;align-items:center;gap:12px;min-height:60vh;color:var(--muted)}.loading span{width:16px;height:16px;border:2px solid var(--line);border-top-color:var(--green-dark);border-radius:50%;animation:spin .8s linear infinite}.reveal{animation:rise .35s ease both}.rtl-note{font-family:var(--sans)}code,.code-block{font-family:var(--mono)}.code-block{background:#131b16;color:#d9e2dc;padding:20px;overflow:auto;border-radius:4px;font-size:12px}.code-block .accent{color:var(--green)}@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
@media(max-width:900px){:root{--header:64px}.site-header{grid-template-columns:auto 1fr auto;padding:0 16px}.menu-button{display:block;grid-column:2;justify-self:end}.primary-nav{display:none;position:absolute;top:var(--header);left:0;right:0;background:var(--ink);padding:10px 16px 20px;flex-direction:column;border-top:1px solid #38443c}.primary-nav.open{display:flex}.header-actions{grid-column:3}.hero{min-height:720px}.hero-stats{left:24px;right:24px;bottom:30px}.section-heading{grid-template-columns:1fr;gap:10px}.stage-grid{grid-template-columns:1fr 1fr}.stage{min-height:220px}.area-band{grid-template-columns:100px 1fr}.area-band .button{display:none}.lesson-layout{grid-template-columns:1fr}.lesson-aside{position:static}.metric-line{grid-template-columns:1fr 1fr}.metric:nth-child(2){border-inline-end:0}.metric:nth-child(-n+2){border-bottom:1px solid var(--line)}.site-footer{grid-template-columns:1fr}.site-footer .legal{text-align:start}}
@media(max-width:600px){.page{padding:36px 16px 60px}.header-actions .progress-link{display:none}.hero-inner{padding:56px 18px 180px}.hero h1{font-size:48px}.hero-stats{grid-template-columns:repeat(3,1fr);gap:8px}.hero-stats b{font-size:16px}.stage-grid{grid-template-columns:1fr}.stage{min-height:180px}.area-band{grid-template-columns:1fr;gap:10px;padding:24px}.area-band .area-code{font-size:32px}.entity-row{grid-template-columns:58px 1fr;gap:12px}.entity-row .arrow{display:none}.toolbar{align-items:stretch}.field{width:100%}.lesson-body section{padding:28px 0}.practice{margin-inline:-16px;padding:24px 16px!important}.pager{grid-template-columns:1fr}.site-footer nav{flex-wrap:wrap}.search-panel form div{display:grid;gap:8px}.search-panel input,.search-panel .button{border-radius:4px}.metric-line{grid-template-columns:1fr 1fr}}
[dir=rtl] .entity-row .arrow{transform:rotate(180deg)}[dir=rtl] .practice{border-inline-start:0}[dir=rtl] .site-footer .legal{text-align:start}[dir=rtl] .lesson-body{font-family:var(--sans)}
.lesson-media{padding:34px 0;border-bottom:1px solid var(--line)}.lesson-media h2{font-size:25px}.video-frame{margin:22px 0 28px}.video-frame video{display:block;width:100%;max-height:620px;background:#080b09;aspect-ratio:16/9}.video-frame figcaption,.media-gallery figcaption{margin-top:8px;color:var(--muted);font-size:12px}.media-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:22px 0}.media-gallery figure{margin:0}.media-gallery img{display:block;width:100%;height:auto;background:#fff;border:1px solid var(--line)}.download-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px;border-top:1px solid var(--line)}.download-list .related-link{display:flex;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line);padding:12px 0}.download-list small{color:var(--muted);white-space:nowrap}@media(max-width:600px){.media-gallery,.download-list{grid-template-columns:1fr}.video-frame{margin-inline:-16px}.video-frame figcaption{padding-inline:16px}}

.media-items{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:24px}.media-items figure{margin:0;min-width:0}.media-items img,.media-items video{display:block;width:100%;max-height:420px;object-fit:contain;background:#111914}.media-items audio{width:100%;margin:12px 0}.media-items figcaption{font-size:13px;padding:10px 0;overflow-wrap:anywhere}.material-download{padding:16px;border:1px solid var(--line);overflow-wrap:anywhere}.material-download small{display:block;color:var(--muted)}.map-stage{grid-template-columns:140px repeat(4,minmax(170px,1fr));min-width:1000px}.lesson-body details{padding:16px;background:var(--surface)}

@font-face{font-family:CodeAtlasSymbols;src:url("../fonts/codeatlas-package/fonts/CodeAtlas_Symbols.woff") format("woff");font-display:swap}
