:root{--lime:#d9f99d;--lime-b:#8fbf3a;--cyan:#d8f4f2;--cyan-b:#5fb3ad;--red:#dfa5ae;--red-b:#8c3b49;--grey:#e8e8e8;--ink:#111;--line:#222;--mute:#555;--rule:#d9d9d9;
--sans:"Inter","Helvetica Neue",Arial,"Liberation Sans",sans-serif;--head:"Inter Tight","Archivo","Helvetica Neue",Arial,"Liberation Sans",sans-serif;--mono:"JetBrains Mono","SF Mono",Menlo,Consolas,"DejaVu Sans Mono",monospace}
*{box-sizing:border-box}
html,body{margin:0;background:#fff;color:var(--ink);font:14px/1.45 var(--sans);overflow-x:hidden}
a{color:inherit}
h1,h2,h3{font-family:var(--head);letter-spacing:-.02em;margin:0}
h1{font-size:34px;line-height:1.05;font-weight:800}
h2{font-size:17px;font-weight:800}
h3{font-size:13px;font-weight:700;margin:14px 0 6px}
p{margin:0 0 8px}
.mono,.eyebrow,.pill,.chip,.boxlabel,.btn,.tabcount,.areas span,.step-eyebrow{font-family:var(--mono)}
.eyebrow{font-size:10px;letter-spacing:.14em;text-transform:uppercase;font-weight:600}
.small{font-size:12px}
.mute{color:var(--mute)}
.src{font-size:10px;color:#444}
.src a{color:#333}
.wrap{max-width:1100px;margin:0 auto;padding:0 16px 48px}
/* nav */
.nav{border-bottom:1px solid #e3e3e3;background:#fff}
.nav .in{max-width:1100px;margin:0 auto;display:flex;align-items:center;gap:14px;padding:8px 16px;flex-wrap:wrap}
.nav a{text-decoration:none}
.brand,.navlink{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;font-weight:600}
.pill{font-size:10px;letter-spacing:.14em;text-transform:uppercase;font-weight:600;border:1px solid var(--line);border-radius:999px;padding:4px 11px;text-decoration:none}
.pill.active{background:var(--lime);border-color:var(--lime-b)}
.nav .right{margin-left:auto;display:inline-flex;align-items:center;gap:14px}
.signin{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:999px;padding:3px 10px 3px 4px;font-size:12px}
.signin .who{padding:1px 8px;border-radius:999px}
.signin .who.on{background:var(--lime)}
.signin .lab{font-family:var(--mono);font-size:8px;letter-spacing:.12em;text-transform:uppercase;font-weight:600}
/* generic card */
.card{border:1.5px solid var(--line);border-radius:10px;background:#fff}
.chip{display:inline-block;font-size:9px;font-weight:600;border:1px solid;border-radius:5px;padding:1px 6px;line-height:1.5;white-space:nowrap}
.chip-lime{background:var(--lime);border-color:var(--lime-b)}
.chip-cyan{background:var(--cyan);border-color:var(--cyan-b)}
.chip-red{background:var(--red);border-color:var(--red-b)}
.chip-grey{background:var(--grey);border-color:#9a9a9a}
.btn{display:inline-block;font-size:9px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;border:1px solid var(--line);border-radius:999px;padding:5px 12px;text-decoration:none;background:#fff;color:var(--ink)}
.btn.lime{background:var(--lime);border-color:var(--lime-b)}
.num{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border:1px solid var(--line);border-radius:50%;font-family:var(--mono);font-size:9px;font-weight:700;background:#fff;vertical-align:middle}
.num.lime{background:var(--lime);border-color:var(--lime-b)}
.boxes{display:inline-flex;gap:2px;vertical-align:middle}
.boxes i{display:inline-block;width:9px;height:5px;border:1px solid #444;border-radius:3px;background:#fff}
.boxes i.on{background:var(--lime);border-color:var(--lime-b)}
.boxlabel{font-size:9px;font-weight:600;margin-left:6px;white-space:nowrap}
/* blueprint head */
.head{padding:22px 0 10px}
.head h1{margin:4px 0 10px}
.intro{max-width:720px;font-size:14px;margin-bottom:6px}
.rlink{font-size:12px;color:#222}
/* legend */
.legend{display:flex;gap:18px;padding:14px 16px;margin:12px 0 14px}
.legend .sample{width:200px;flex:none}
.legend .sample .bcard{width:200px}
.legend .sample .card{padding:9px 10px;position:relative}
.legend .sample .cap{font-size:11px;margin-top:6px}
.legend ol{list-style:none;margin:0;padding:0;font-size:12px}
.legend li{display:flex;gap:8px;margin:0 0 6px;align-items:flex-start}
.legend li .num{flex:none;margin-top:1px}
.legend b{font-weight:700}
/* board */
.board{padding:14px 16px 10px;margin-bottom:16px;background-image:linear-gradient(#ececec 1px,transparent 1px),linear-gradient(90deg,#ececec 1px,transparent 1px);background-size:22px 22px;background-position:8px 8px}
.board .eyebrow{display:block;margin-bottom:6px}
.roof{display:block;width:100%;height:26px}
.board-scroll{overflow-x:auto}
.board-rows{min-width:960px}
.brow{display:flex;gap:9px;border-left:3px solid var(--ink);padding:0 0 0 8px;margin:0 0 10px;align-items:stretch}
.brow .glabel{width:112px;flex:none;display:flex;align-items:center;font-weight:600;font-size:12.5px;line-height:1.2}
.brow .cards{display:flex;gap:8px;flex-wrap:nowrap}
.bcard{display:block;width:152px;min-height:74px;padding:8px 10px 7px;text-decoration:none;position:relative;color:var(--ink);background:#fff}
.bcard:hover,.bcard.hl{background:var(--lime)}
.bcard .name{font-weight:700;font-size:12.5px;line-height:1.18;padding-right:0}
.bcard .name.tagged{padding-right:0}
.bcard .chip{float:right;margin:0 -2px 2px 6px;position:relative;z-index:1}
.bcard .vend{font-size:11px;margin:4px 0 7px}
.bcard .lvl{display:flex;align-items:center;white-space:nowrap}
.ground{border-top:3px solid var(--ink);margin:4px 0 0;padding:6px 0 0;text-align:center}
/* graph */
.sect-head{display:flex;align-items:flex-end;justify-content:space-between;border-bottom:2px solid var(--ink);padding-bottom:5px;margin:14px 0 10px}
.sect-head .hint{font-size:10.5px;color:#333}
.graph{padding:12px;margin-bottom:10px;background-image:linear-gradient(#ececec 1px,transparent 1px),linear-gradient(90deg,#ececec 1px,transparent 1px);background-size:22px 22px}
.graph svg{display:block;width:100%;height:auto}
.gnode rect{fill:#fff;stroke:#333;stroke-width:1.5}
.gnode:hover rect,.gnode.hl rect{fill:var(--lime)}
.gnode text{font-family:var(--sans)}
.gnode .t{font-weight:700;font-size:11.5px;fill:#111}
.gnode .s{font-size:10px;fill:#444}
.gedge{stroke:#222;stroke-width:1.4;fill:none}
.gedge.dashed{stroke-dasharray:5 4}
.glabel{font-family:var(--sans);font-size:9.5px;fill:#222;paint-order:stroke;stroke:#fff;stroke-width:4px;stroke-linejoin:round}
.glegend{display:flex;gap:16px;font-size:10.5px;flex-wrap:wrap;margin:6px 0 6px}
.glegend .ln{display:inline-block;width:22px;border-top:2px solid #222;vertical-align:middle;margin-right:6px}
.glegend .ln.d{border-top-style:dashed}
.gcaption{font-size:10.5px;color:#222}
.edge-list{display:none;margin:0;padding:0 0 0 16px;font-size:12px}
.edge-list li{margin:0 0 5px}
/* block page */
.crumb{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;font-weight:600;margin-top:18px}
.crumb a{text-decoration:underline}
.bhead{display:grid;grid-template-columns:1fr 310px;gap:16px;align-items:start;margin-bottom:22px}
.bhead h1{font-size:30px;margin:4px 0 6px}
.subtitle{font-size:13px;margin-bottom:10px}
.why{padding:10px 12px 10px;margin-bottom:12px}
.why ul{margin:6px 0 8px;padding-left:18px;font-size:12px}
.why li{margin:0 0 4px}
.areas{font-size:12px;font-weight:700;margin:6px 0 4px}
.areas span{display:inline-block;font-weight:600;font-size:9.5px;border:1px solid var(--line);border-radius:5px;padding:1px 6px;margin:2px 3px 2px 0}
.shown{font-size:12px}
.shown a{color:#222}
.jumps{display:flex;gap:8px;flex-wrap:wrap}
.jump{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:999px;padding:4px 12px 4px 5px;font-size:12px;font-weight:600;text-decoration:none;background:#fff}
.lvlpanel{padding:12px 12px 10px}
.lvlpanel h2{font-size:14px}
.lvlpanel .text{font-size:11px;margin:4px 0 10px}
.level{display:flex;gap:10px;align-items:center;border:1.5px solid var(--line);border-radius:9px;padding:6px 9px;margin:0 0 6px;text-decoration:none;background:#fff}
.level .num{flex:none}
.level .ln{font-weight:700;font-size:12.5px;line-height:1.2}
.level .ld{font-size:10.5px;color:#333}
.level.on{background:var(--lime);border-color:var(--lime-b)}
.level.passed{background:var(--grey)}
.now{font-size:11.5px;border-top:1px solid var(--rule);padding-top:8px;margin-top:10px}
.now-state{display:none}
.now-state.now-default{display:block}
.earlier{font-size:11px;margin-top:4px}
.earlier summary{cursor:pointer}
.earlier-state{display:none}
.earlier-default{display:inline}
.lvl-anchor{position:absolute;top:0;left:0;width:0;height:0}
/* steps */
.steps{position:relative;padding-left:30px}
.steps:before{content:"";position:absolute;left:8px;top:8px;bottom:0;border-left:2px dotted #333}
.step{position:relative;margin-bottom:26px}
.step .snum{position:absolute;left:-30px;top:4px;width:18px;height:18px;border-radius:50%;background:var(--lime);border:1px solid var(--lime-b);font-family:var(--mono);font-size:9px;font-weight:700;display:flex;align-items:center;justify-content:center}
.step-eyebrow{font-size:8.5px;letter-spacing:.14em;text-transform:uppercase;font-weight:600}
.step .sect-head{margin-top:0}
.tabs{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.tab{display:inline-flex;align-items:baseline;gap:7px;border:1.5px solid var(--line);border-radius:7px;padding:4px 9px;text-decoration:none;font-weight:700;font-size:11.5px;background:#fff}
.tab .tabcount{font-size:8.5px;font-weight:600}
.tab.on{background:var(--lime);border-color:var(--lime-b)}
.tabs .fs{margin-left:auto}
.tabbody{padding:12px 12px 14px}
.tabbody h2{font-size:15px;margin:2px 0 3px}
.tabbody .sub{font-size:11px;margin-bottom:8px}
.tabbody .sub a{color:#222}
.rowhead{display:flex;justify-content:space-between;align-items:center}
.box{border:1px solid #bbb;border-radius:8px;padding:8px 10px;font-size:12px}
.cols{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}
.term{border-bottom:1px solid #e6e6e6;padding:6px 0;font-size:12px}
.term:last-child{border-bottom:0}
.term b{font-weight:700}
.para{font-size:12px;margin:0 0 7px}
details.more{font-size:12px;margin-top:6px}
details.more summary{cursor:pointer;font-weight:700}
details.more .body{font-size:12px;padding:6px 0 0 14px;color:#333}
details.about{margin-top:12px}
details.about summary{font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;cursor:pointer}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin:4px 0 10px}
.mini{padding:16px 12px;overflow-x:auto}
.mini svg{display:block;width:100%;min-width:720px;height:auto}
.toast{display:none}
.inbox-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:12px}
.inbox-grid h3{margin:0 0 6px}
.inbox-grid p{font-size:12px}
.ask{display:flex;gap:8px;align-items:center}
.ask .field{flex:1;border:1.5px solid var(--line);border-radius:8px;padding:6px 10px;font-size:12px;font-style:italic;color:#444;background:#fff}
.inbox-empty{margin-top:10px;padding:9px 10px;font-size:12px}
.stored{font-size:11px;margin-top:8px}
.plain{padding:12px 14px;font-size:12px}
.list{font-size:13px}
.list li{margin:0 0 6px}
.fullpage .wrap{max-width:1400px}
/* FieldRoutes research: lists, tables, galleries */
.bcard .evid{font-family:var(--mono);font-size:9px;letter-spacing:.02em;color:#333;margin:-4px 0 6px;white-space:nowrap}
.fr-list{margin:0 0 8px;padding-left:18px;font-size:12px}
.fr-list li{margin:0 0 5px}
.fr-list ul,.fr-list ol{margin:4px 0 0;padding-left:16px}
.prose{font-size:12px;max-width:920px}
.prose h3{margin-top:12px}
.subh{font-family:var(--head);font-size:12.5px;font-weight:700;margin:12px 0 4px;letter-spacing:-.01em}
h5.subh{font-size:12px}
.tblwrap{overflow-x:auto;margin:4px 0 10px}
.tbl{border-collapse:collapse;font-size:11.5px;width:100%}
.tbl th,.tbl td{border:1px solid #ddd;padding:4px 6px;text-align:left;vertical-align:top}
.tbl th{background:#f4f4f4;font-weight:700;white-space:nowrap}
.mark{font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
code{font-family:var(--mono);font-size:11px;background:#f3f3f3;padding:0 3px;border-radius:3px}
.tabbody h3 .tabcount{font-size:8.5px;font-weight:600;margin-left:4px;vertical-align:middle}
details.more summary .tabcount{font-size:8.5px;font-weight:600;margin-left:4px}
details.more .body .para,details.more .body .fr-list{font-size:12px}
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;margin:6px 0 12px}
.shot{margin:0;border:1px solid #bbb;border-radius:8px;overflow:hidden;background:#fff;display:flex;flex-direction:column;min-width:0}
.shot:target{border-color:var(--lime-b);box-shadow:0 0 0 3px var(--lime)}
.shot-img{display:block;aspect-ratio:16/10;overflow:hidden;background:#f3f3f3;border-bottom:1px solid #ddd}
.shot-img img{width:100%;height:100%;object-fit:cover;object-position:top;display:block}
.shot figcaption{padding:7px 9px 8px;font-size:11.5px;overflow-wrap:anywhere}
.shot-title{font-weight:700;line-height:1.25}
.shot-id{font-family:var(--mono);font-size:9px;color:#555;font-weight:600;margin-right:5px}
.shot-title .chip{margin-left:5px;vertical-align:middle}
.shot-line{margin-top:3px;color:#333}
.shot-more{margin-top:5px;font-size:11px}
.shot-more summary{cursor:pointer;font-weight:700;color:#222}
.shot-meta{margin:6px 0 4px;color:#444;font-size:10.5px}
.shot-more p{font-size:11.5px;margin:4px 0}
.shot-links{font-size:10.5px;margin-top:4px}
.shot-links .fr-list{margin:2px 0 0;font-size:10.5px}
.fr-blocks .tabcount{font-size:8.5px;font-weight:600}
.head .intro .para{font-size:14px}
@media (max-width:700px){
  .gallery{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
  .shot figcaption{padding:6px 7px 7px;font-size:11px}
  .bcard .evid{white-space:normal}
}
@media (max-width:700px){
  h1{font-size:28px}
  .bhead{grid-template-columns:1fr}
  .legend{flex-direction:column}
  .graph svg{display:none}
  .mini svg{min-width:640px}
  .edge-list{display:block}
  .cols,.inbox-grid{grid-template-columns:1fr}
  .nav .right{margin-left:0}
  .steps{padding-left:24px}
  .step .snum{left:-24px}
  .sect-head{flex-direction:column;align-items:flex-start;gap:2px}
  .board-rows{min-width:0}
  .brow{flex-direction:column;gap:6px}
  .brow .glabel{width:auto}
  .brow .cards{flex-wrap:wrap}
  .bcard{width:calc(50% - 4px);box-sizing:border-box}
  .roof{display:none}
}
