@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500&display=swap');
:root{--paper:#f7f8fa;--ink:#111820;--muted:#586876;--border:#d7dfe4}
body,button,input,select{font-family:'IBM Plex Sans',system-ui,sans-serif}
h1,h2,h3,h4{font-family:'IBM Plex Sans',system-ui,sans-serif;font-weight:600}
header{height:80px;gap:24px}.brand{font-size:12px;letter-spacing:1.15px}header nav{display:flex;gap:22px;margin-left:auto}header nav a{color:var(--muted);font-size:13px;text-decoration:none}header nav a:hover{color:#1f5fa0}.status{font-size:11px}
.intro{padding:40px 0 32px}.intro h1{font-size:clamp(38px,4vw,60px);letter-spacing:-2px;white-space:nowrap}.intro h1 span{color:#456d91}.lede{max-width:710px;font-size:16px}.eyebrow,.badge{font-family:'IBM Plex Mono',monospace;font-weight:400}.eyebrow{color:#476c8a}.badge{background:#e7eff5;color:#315e82}.basis{width:300px}.basis p{font-size:20px}.basis small{font-size:12px;line-height:1.7}
.intro-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:22px}.intro-actions a,.intro-actions button{font-size:13px;text-decoration:none;border:1px solid #bcccd9;background:#fff;color:#224f74;border-radius:5px;padding:10px 14px}.intro-actions a{background:#154d78;color:white;border-color:#154d78}.intro-actions button:hover{background:#e9f2f9}#export-status{font-size:12px;min-height:17px;color:var(--muted);margin:9px 0 0}
.lab{border-radius:8px}.panels.single .viewport{height:580px;min-height:460px}.map{height:172px}.map-summary strong{font-size:18px}.map-title{font-size:14px}.map-axis{font-size:10px}.map-note{font-size:11px}.lens-strip.two strong{font-size:24px}.lens-strip span{font-size:10px}.panel-title h2{font-size:22px}.tag{font-size:11px}
.rig-layout small{font-size:11px}.orientation-presets p{font-size:11px}.scene-note,.scene-scale{font-size:10px}.toolbar .display{font-size:12px}.rig-buttons button{font-size:13px}.view-buttons button{font-size:13px}
.lab>.group-toggles{padding:10px 22px;align-items:center;gap:12px;border-bottom:1px solid #ffffff12;background:#142329}.lab>.group-toggles::before{content:'CAMERA GROUPS';font:10px 'IBM Plex Mono',monospace;color:#8ea8b3;margin-right:12px}.lab>.group-toggles label{background:transparent;border-color:#ffffff25;color:#d6e5e8;font-size:12px}
.assumptions h2{font-size:24px}.assumptions-body>p,.method p{font-size:14px}.method h3{font-size:18px}.tables{gap:32px}.camera-table-wrap input[type=number]{font-size:13px;width:82px;min-height:36px}.camera-table-wrap table{font-size:13px}.camera-angle-note,.local-angle,.original-local-angle{font-size:11px;line-height:1.5}.module-help,.angle-frame-controls p{font-size:13px}.module-footnote{font-size:12px}.angle-frame-controls p+p{font-size:12px}.module-heading h3{font-size:21px}.optics-help{font-size:12px}.insights p{font-size:13px}.lens-disclosure summary div>span{font-size:12px}
body[data-visible-rig="0"] .camera-table-wrap:nth-child(2),body[data-visible-rig="0"] #rig2-params,body[data-visible-rig="0"] .projection-controls>label:nth-child(2),body[data-visible-rig="0"] .mirror,body[data-visible-rig="0"] .rectification-card:nth-child(n+3){display:none}
body[data-visible-rig="0"] .tables,body[data-visible-rig="0"] .projection-controls{grid-template-columns:1fr}body[data-visible-rig="0"] .rectification-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
#directions,#coverage,#optics-heading{scroll-margin-top:20px}a:focus-visible{outline:2px solid #1f5fa0;outline-offset:4px}
@media(max-width:760px){header{gap:12px;padding:0 16px;height:70px}.brand{font-size:10px;max-width:165px;line-height:1.6}header nav{gap:12px}header nav a{font-size:11px}header nav a:last-child{display:none}.intro{padding:28px 0}.intro h1{font-size:clamp(22px,6.8vw,42px)}.basis{width:auto}.basis p{font-size:16px}.basis small{font-size:12px}.panels.single .viewport{height:440px;min-height:360px}.lab>.group-toggles{padding:12px;gap:7px;flex-wrap:wrap}.lab>.group-toggles::before{flex-basis:100%;margin-bottom:2px}.lab>.group-toggles label{font-size:11px}.scene-note{font-size:8px;max-width:45%;line-height:1.5}.scene-scale{font-size:8px;max-width:46%}.lens-strip.two strong{font-size:18px}.lens-strip span{font-size:9px}.map{height:145px}.map-axis{font-size:8px}.map-summary strong{font-size:14px}.panel-title h2{font-size:20px}.rig-buttons button{font-size:11px}.intro-actions a,.intro-actions button{font-size:12px}body[data-visible-rig="0"] .rectification-grid{grid-template-columns:1fr}.assumptions h2{font-size:19px}.toolbar .display{font-size:10px}.view-buttons button{font-size:10px}.camera-table-wrap input[type=number]{min-height:42px}.references{grid-template-columns:1fr 1fr}.basis small br{display:block}.basis small br+br{display:block}}
