:root{--fo-ink:#080b10;--fo-panel:#10161b;--fo-paper:#f1f0ea;--fo-lime:#c8ff3d;--fo-cyan:#63d8ee;--fo-line:#d6d8d1;--fo-soft:#4e5756}
body{background:var(--fo-paper);color:var(--fo-ink)}
html{scroll-padding-top:94px}
.mini-nav{display:flex;align-items:center;gap:clamp(10px,1.35vw,24px)}
.mini-nav a{color:#b7bfbd;font-size:12px;text-decoration:none;white-space:nowrap}
.mini-nav a:hover,.mini-nav a:focus-visible{color:var(--fo-lime)}
.ontology-hero{min-height:690px;padding:clamp(72px,8vw,116px) clamp(22px,6vw,88px);display:grid;grid-template-columns:minmax(0,1.07fr) minmax(340px,.93fr);gap:clamp(30px,5vw,80px);align-items:center}
.ontology-hero>*{position:relative;z-index:1;min-width:0}
.ontology-hero h1{margin:0;max-width:900px;font-size:clamp(57px,7.4vw,120px);line-height:.94;letter-spacing:-.075em;font-weight:800}
.ontology-hero h1 span{color:var(--fo-lime)}
.ontology-hero .hero-lead{max-width:720px;margin:30px 0 0;color:#d1d5cf;font-size:clamp(17px,1.65vw,23px);line-height:1.58}
.ontology-hero .hero-lead strong{color:#fff}
.ontology-hero .hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px}
.ontology-hero .button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 18px;border:1px solid #596564;text-decoration:none;text-transform:uppercase;font:700 11px "DM Mono",monospace;letter-spacing:.02em}
.ontology-hero .button.primary{background:var(--fo-lime);border-color:var(--fo-lime);color:var(--fo-ink)}
.ontology-hero .button.ghost{border-color:#596564;color:#fff}
.hero-note{max-width:660px;margin:24px 0 0;color:#acb8b7;font-size:12px;line-height:1.6}
.hero-map{padding:28px;border:1px solid #425958;background:#101819;box-shadow:24px 24px 0 rgba(200,255,61,.08)}
.map-tag,.map-answer,.chapter-nav,.chapter-head>span,.eyebrow,.definition-grid article>span,.question-callout span,.optional-block>span,.prompt-card>span,.next-grid span,.source-list b,.source-list i,.extra-sources a{font-family:"DM Mono",monospace}
.map-tag{color:var(--fo-lime);font-size:11px;letter-spacing:.12em}
.map-main{margin:35px auto 26px;max-width:310px;padding:24px;border:1px solid var(--fo-lime);background:#17231c;position:relative;text-align:center;color:#fff}
.map-main:before,.map-main:after{content:"";position:absolute;top:50%;height:1px;width:14%;background:var(--fo-lime)}.map-main:before{right:100%}.map-main:after{left:100%}
.map-main span{display:inline-grid;place-items:center;width:34px;height:34px;margin-bottom:10px;background:var(--fo-lime);color:#101810;font:800 11px "DM Mono",monospace}
.map-main strong,.map-main small{display:block}.map-main strong{font-size:clamp(25px,2.8vw,38px);letter-spacing:-.06em}.map-main small{margin-top:5px;color:#b7c4bd;font-size:12px}
.map-nodes{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.map-nodes span{padding:14px 5px;border:1px solid #4c6160;background:#1b2528;color:#e3e9e4;text-align:center;font-size:13px;font-weight:700}
.map-answer{margin-top:22px;padding:15px;border-left:3px solid var(--fo-cyan);background:#0a1115;color:#b5cecb;font-size:11px;line-height:1.7}.map-answer b{color:#fff}
.chapter-nav{position:sticky;top:76px;z-index:1100;display:flex;overflow:auto;scrollbar-width:thin;background:#11191d;border-top:1px solid #32413f;border-bottom:1px solid #32413f}
.chapter-nav a{min-width:max-content;flex:1;padding:18px 16px;border-right:1px solid #32413f;color:#d8dfda;text-align:center;text-decoration:none;text-transform:uppercase;font-size:11px;font-weight:700}.chapter-nav a:hover,.chapter-nav a:focus-visible{background:var(--fo-lime);color:var(--fo-ink)}.chapter-nav b{color:var(--fo-lime);margin-right:8px}.chapter-nav a:hover b{color:var(--fo-ink)}
.ont-section{padding:clamp(64px,7vw,112px) clamp(22px,6vw,88px)}.ont-section.light{background:var(--fo-paper);color:var(--fo-ink)}.ont-section.dark{background:var(--fo-ink);color:#f1f0ea}
.section-lead,.chapter-head{max-width:1450px}.section-lead h2,.chapter-head h2{margin:8px 0 0;font-size:clamp(38px,5vw,78px);line-height:.99;letter-spacing:-.065em;font-weight:800}.section-lead>p:last-child,.chapter-head p{max-width:920px;margin:20px 0 0;font-size:clamp(16px,1.45vw,20px);line-height:1.7;color:var(--fo-soft)}.dark .chapter-head p{color:#b9c4c0}
.eyebrow{margin:0;color:#537100;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.13em}
.chapter-head{display:grid;grid-template-columns:180px minmax(0,1fr);gap:24px;align-items:start}.chapter-head>span{display:block;color:#668800;font-size:12px;font-weight:700;letter-spacing:.08em}.dark .chapter-head>span{color:var(--fo-lime)}
.definition-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:42px}.definition-grid article{padding:26px;border:1px solid var(--fo-line);background:#fff}.definition-grid article>span{color:#5a7800;font-size:11px;font-weight:700}.definition-grid h3{margin:26px 0 10px;font-size:27px;letter-spacing:-.05em}.definition-grid p{margin:0;color:#4c5555;line-height:1.6;font-size:15px}
.question-callout{margin:30px 0;padding:30px 36px;background:#17281c;color:#f4f5f0;border-left:5px solid var(--fo-lime)}.question-callout span{color:var(--fo-lime);font-size:11px;font-weight:700}.question-callout p{max-width:1150px;margin:14px 0 0;font-size:clamp(20px,2.4vw,34px);line-height:1.4;font-weight:700;letter-spacing:-.035em}
.image-frame{margin:0;min-width:0;border:1px solid rgba(138,159,155,.35);background:#13191d;overflow:hidden}.light .image-frame{border-color:#c7cdca;background:#e1e5e2}.image-frame>a{display:block;line-height:0;overflow:auto}.image-frame img{display:block;width:100%;height:auto;max-height:480px;object-fit:contain;object-position:center;background:#101417}.image-frame figcaption{padding:13px 16px;color:#b9c8c6;font-size:12px;line-height:1.5}.light .image-frame figcaption{color:#405152}.image-frame figcaption a{color:var(--fo-lime);text-underline-offset:3px}.light .image-frame figcaption a{color:#496500}.image-frame>a:hover img{filter:brightness(1.12)}.dark-frame img{max-height:700px}
.context-note{max-width:1300px;margin:26px 0 0;padding:18px 22px;border-left:4px solid #709700;background:#fff;color:#435050;font-size:15px;line-height:1.7}.context-note strong{color:#10191b}.dark .context-note{background:#17221c;color:#c8d1ca}
.alert{margin:32px 0 0;padding:24px 28px;border:1px solid rgba(200,255,61,.35);background:#152019}.alert strong{color:var(--fo-lime);font-size:18px}.alert p{margin:9px 0 0;color:#d0dbd2;line-height:1.7}
code{font-family:"DM Mono",monospace;font-size:.88em;overflow-wrap:anywhere;background:rgba(84,120,0,.12);padding:.1em .3em}.dark code{background:rgba(200,255,61,.11);color:#e3f6c2}
.steps{counter-reset:step;display:grid;gap:0;max-width:1450px;margin:35px 0 38px;padding:0;list-style:none;border-top:1px solid var(--fo-line)}.steps li{counter-increment:step;position:relative;min-height:88px;padding:22px 22px 22px 86px;border-bottom:1px solid var(--fo-line);line-height:1.72;color:#3b4747;font-size:16px}.dark .steps{border-color:#34403f}.dark .steps li{border-color:#34403f;color:#ccd6d2}.steps li:before{content:counter(step,decimal-leading-zero);position:absolute;left:15px;top:22px;color:#668700;font:700 15px "DM Mono",monospace}.dark .steps li:before{color:var(--fo-lime)}.steps li>b{color:var(--fo-ink)}.dark .steps li>b{color:#fff}.steps a{color:#587700;text-underline-offset:4px}.dark .steps a{color:var(--fo-lime)}
.shot-grid{display:grid;gap:18px;margin-top:28px}.shot-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.shot-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.shot-grid .image-frame img{height:240px;max-height:none;object-fit:contain}.shot-grid.two .image-frame img{height:320px}.completion{margin-top:26px;color:var(--fo-lime);font-size:15px;font-weight:700}
.table-wrap{overflow:auto;margin:32px 0;border:1px solid #cbd1cc}.table-wrap table{width:100%;min-width:730px;border-collapse:collapse;background:#fff;text-align:left}.table-wrap caption{text-align:left;padding:16px 20px;background:#18211e;color:#fff;font-size:14px;font-weight:700}.table-wrap th,.table-wrap td{padding:16px;border-top:1px solid #dce0da;vertical-align:top;line-height:1.5}.table-wrap th{color:#486500;background:#f1f4e9;font-size:12px;text-transform:uppercase}.table-wrap td{font-size:14px}
.example-line{max-width:1300px;margin-top:26px;padding:20px 24px;border-left:4px solid #709700;background:#fff;color:#3f4a45;line-height:1.7}
.rule-grid,.view-grid,.check-grid,.next-grid{display:grid;gap:16px;margin:32px 0}.rule-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.rule-grid article{padding:26px;border:1px solid #364940;background:#121d18}.rule-grid span{color:var(--fo-lime);font:700 12px "DM Mono",monospace}.rule-grid h3{margin:16px 0;font-size:23px;line-height:1.18}.rule-grid p{color:#c4cec7;line-height:1.62}
.view-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.view-grid article{padding:25px;background:#fff;border:1px solid var(--fo-line)}.view-grid b{color:#547400;font:700 13px "DM Mono",monospace}.view-grid p{margin:15px 0 0;color:#465453;line-height:1.62;font-size:14px}
.optional-block{margin-top:30px;padding:28px 32px;background:#e8ebe4;border-left:5px solid #729400}.optional-block>span{color:#536f00;font-size:11px;font-weight:700;letter-spacing:.1em}.optional-block h3{margin:12px 0;font-size:clamp(24px,3vw,38px);line-height:1.16;letter-spacing:-.045em}.optional-block p{max-width:1200px;color:#40504a;line-height:1.72}
.prompt-card{margin:28px 0;padding:30px;border:1px solid var(--fo-lime);background:#1b2d20}.prompt-card>span{color:var(--fo-lime);font-size:11px;font-weight:700;letter-spacing:.1em}.prompt-card p{max-width:1110px;margin:18px 0;color:#fff;font-size:clamp(20px,2.3vw,31px);line-height:1.4;font-weight:700}.prompt-card small{color:#b8d0be;line-height:1.5}
.check-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.check-grid span{padding:22px;border:1px solid #d0d5cd;background:#fff;font-weight:700;line-height:1.4}.next-grid{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:38px}.next-grid a{display:flex;flex-direction:column;min-height:160px;padding:24px;border:1px solid #cbd1c9;background:#fff;text-decoration:none}.next-grid a:hover{background:var(--fo-lime)}.next-grid span{color:#547400;font-size:11px;font-weight:700}.next-grid strong{margin-top:20px;font-size:21px;line-height:1.2}.next-grid small{margin-top:auto;color:#53605a;line-height:1.5}
.source-list{margin-top:38px;border-top:1px solid #3c4845}.source-list a{display:grid;grid-template-columns:55px minmax(0,1fr) auto;gap:16px;align-items:center;padding:19px 8px;border-bottom:1px solid #3c4845;color:#eef2ea;text-decoration:none}.source-list a:hover{background:#192720}.source-list b{color:var(--fo-lime);font-size:12px}.source-list span{font-size:17px;font-weight:700}.source-list i{font-size:11px;font-style:normal;color:#b9d2bb}.extra-sources{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}.extra-sources a{padding:14px 18px;border:1px solid #596a5e;color:var(--fo-lime);font-size:11px;text-decoration:none}.extra-sources a:hover{background:var(--fo-lime);color:var(--fo-ink)}
.ont-footer{display:flex;align-items:center;gap:22px;padding:26px clamp(22px,6vw,88px);background:#080b10;color:#f1f0ea;border-top:1px solid #35413c}.ont-footer p{margin:0;color:#bdc5bc}.ont-footer a{margin-left:auto;color:var(--fo-lime);text-decoration:none;font:700 11px "DM Mono",monospace}
@media(max-width:1100px){.ontology-hero{grid-template-columns:1fr;min-height:auto}.hero-map{max-width:700px}.definition-grid,.view-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.shot-grid.three{grid-template-columns:repeat(2,minmax(0,1fr))}.chapter-head{grid-template-columns:130px 1fr}.mini-nav{gap:10px}.mini-nav a{font-size:9px}}
@media(max-width:760px){.portal-bar{height:66px}.mini-nav{display:none}.chapter-nav{top:66px}.ontology-hero{padding:56px 20px 52px;gap:32px}.ontology-hero h1{font-size:clamp(46px,11vw,72px)}.ontology-hero .hero-lead{font-size:17px}.hero-map{padding:20px}.ont-section{padding:64px 20px}.chapter-head{display:block}.chapter-head>span{margin-bottom:16px}.chapter-head h2,.section-lead h2{font-size:clamp(35px,9vw,55px)}.definition-grid,.rule-grid,.view-grid,.check-grid,.next-grid,.shot-grid.three,.shot-grid.two{grid-template-columns:1fr}.shot-grid .image-frame img,.shot-grid.two .image-frame img{height:auto;max-height:400px}.question-callout{padding:24px}.steps li{padding:18px 10px 18px 60px;font-size:15px}.steps li:before{left:9px;top:18px}.source-list a{grid-template-columns:32px 1fr}.source-list i{grid-column:2}.ont-footer{flex-wrap:wrap}.ont-footer a{margin-left:0}.portal-brand>span:last-child{display:none}}
