a.of-link,.of p a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}
a.of-link:hover,.of p a:hover{color:var(--text)}
.of{position:relative;z-index:1}
.of section{padding:88px 0 0}
.of-kicker{font-family:var(--font-mono);font-size:12.5px;letter-spacing:.06em;color:var(--accent);display:flex;align-items:center;gap:10px;margin-bottom:18px}
.of h1{font-family:var(--font-display);font-weight:600;font-size:clamp(38px,6.4vw,72px);line-height:1.02;letter-spacing:-.03em;max-width:15ch;text-wrap:balance}
.of h2{font-family:var(--font-display);font-weight:600;font-size:clamp(26px,3.6vw,38px);line-height:1.1;letter-spacing:-.02em;max-width:22ch;text-wrap:balance;margin-bottom:16px}
.of h3{font-family:var(--font-display);font-weight:600;font-size:19px;letter-spacing:-.01em;line-height:1.25}
.of-lede{font-family:var(--font-display);font-size:clamp(17px,2vw,20px);line-height:1.5;color:var(--muted);max-width:58ch;margin-top:22px;text-wrap:pretty}
.of-text{font-size:14.5px;line-height:1.75;color:var(--muted);max-width:66ch;text-wrap:pretty}
.of-text+.of-text{margin-top:14px}
.of-text b{color:var(--text);font-weight:500}
.of-hero{padding-top:64px}
.of-cta-row{display:flex;flex-wrap:wrap;align-items:center;gap:14px 22px;margin-top:32px}
.of-btn{white-space:nowrap;display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:13.5px;font-weight:500;color:var(--bg);background:var(--accent);border:1px solid var(--accent);border-radius:999px;padding:12px 22px;cursor:pointer;transition:opacity .15s,transform .15s}
.of-btn:hover{opacity:.88;transform:translateY(-1px)}
.of-btn.ghost{background:transparent;color:var(--text);border-color:var(--border)}
.of-btn.ghost:hover{border-color:var(--accent);color:var(--accent)}
.of-price{font-family:var(--font-mono);font-size:13px;color:var(--muted)}
.of-price b{font-family:var(--font-display);font-size:20px;font-weight:600;color:var(--text);margin-left:6px}
.of-hero-fig{margin-top:48px;border-radius:14px;overflow:hidden;border:1px solid var(--border-soft);background:var(--surface)}
.of-hero-fig img{width:100%;display:block}
.of-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:28px}
.of-stats>div{border-top:1px solid var(--border);padding-top:14px;display:flex;flex-direction:column;gap:4px}
.of-stats b{font-family:var(--font-display);font-size:clamp(22px,3vw,30px);font-weight:600;letter-spacing:-.02em}
.of-stats span{font-size:12.5px;color:var(--muted);line-height:1.5}
.of-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:56px;align-items:start}
.of-split.wide-left{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr)}
.of-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr));gap:14px;margin-top:36px}
.of-card{background:var(--surface);border:1px solid var(--border-soft);border-radius:12px;padding:24px 22px 22px;display:flex;flex-direction:column;gap:10px}
.of-card .of-tag{font-family:var(--font-mono);font-size:11.5px;color:var(--accent);letter-spacing:.04em}
.of-card p{font-size:13.5px;line-height:1.65;color:var(--muted);text-wrap:pretty}
.of-also{margin-top:22px;font-size:13.5px;line-height:1.7;color:var(--muted);max-width:80ch}
.of-also b{color:var(--text);font-weight:500}
.of-demos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 28px;margin-top:36px;border-top:1px solid var(--border-soft)}
.of-demos>div{padding:16px 0;border-bottom:1px solid var(--border-soft);display:flex;flex-direction:column;gap:4px}
.of-demos b{font-family:var(--font-display);font-size:16px;font-weight:600}
.of-demos span{font-size:13px;line-height:1.55;color:var(--muted)}
.of-list{list-style:none;display:grid;gap:16px;margin-top:22px}
.of-list li{position:relative;padding-left:24px;font-size:14px;line-height:1.65;color:var(--muted)}
.of-list li::before{content:"→";position:absolute;left:0;color:var(--accent)}
.of-list b{color:var(--text);font-weight:500}
.of-fig{margin:0;border-radius:12px;overflow:hidden;border:1px solid var(--border-soft);background:var(--surface)}
.of-fig img{width:100%;display:block}
.of-assembly{margin-top:32px;background:#fff}.of-assembly video{width:100%;display:block}
.of-fig figcaption{padding:10px 14px;font-size:12px;color:var(--muted);border-top:1px solid var(--border-soft);line-height:1.5}
[data-zoom]{cursor:zoom-in}
.of-uses{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:0 36px;margin-top:32px}
.of-uses>div{padding:18px 0;border-top:1px solid var(--border-soft);display:grid;gap:6px}
.of-uses p{font-size:13.5px;line-height:1.65;color:var(--muted)}
.of-specs{margin-top:36px;display:grid;gap:36px}
.of-specs h3{font-family:var(--font-mono);font-size:12px;font-weight:500;color:var(--accent);letter-spacing:.06em;margin-bottom:10px}
.of-specs dl{border-top:1px solid var(--border-soft)}
.of-specs dl>div{display:grid;grid-template-columns:220px minmax(0,1fr);gap:20px;padding:13px 0;border-bottom:1px solid var(--border-soft);font-size:13.5px;line-height:1.6}
.of-specs dt{color:var(--faint)}
.of-specs dd{color:var(--text)}
.of-specs dd small{display:block;color:var(--muted);font-size:12.5px}
.of-note{font-size:12.5px;color:var(--faint);margin-top:16px;line-height:1.6}
.of-photos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:32px}
.of-photos figure{margin:0;border-radius:12px;overflow:hidden;border:1px solid var(--border-soft);background:var(--surface)}
.of-photos img{width:100%;display:block;aspect-ratio:4/5;object-fit:cover}
.of-quote{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:48px;align-items:start}
.of-quote-price{font-family:var(--font-display);font-size:clamp(40px,6vw,64px);font-weight:600;letter-spacing:-.03em;line-height:1;margin:22px 0 8px}
.of-quote-price small{display:block;font-family:var(--font-mono);font-size:12.5px;font-weight:400;letter-spacing:0;color:var(--muted);margin-bottom:8px}
.of-form{background:var(--surface);border:1px solid var(--border-soft);border-radius:14px;padding:26px;display:flex;flex-direction:column;gap:18px}
.of-form .row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}
.of-form input[type=text],.of-form input[type=email],.of-form textarea{width:100%;font-family:var(--font-mono);font-size:13.5px;color:var(--text);background:var(--bg-soft);border:1px solid var(--border);border-radius:8px;padding:11px 13px;outline:none}
.of-form input:focus,.of-form textarea:focus{border-color:var(--accent)}
.of-form textarea{resize:vertical;min-height:96px}
.of-form fieldset{border:none;display:flex;flex-direction:column;gap:8px}
.of-form legend{font-size:12px;color:var(--faint);margin-bottom:8px}
.of-chips{display:flex;flex-wrap:wrap;gap:8px}
.of-chips label{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--muted);border:1px solid var(--border);border-radius:999px;padding:6px 12px;cursor:pointer}
.of-chips label:has(input:checked){border-color:var(--accent);color:var(--text)}
.of-chips input{accent-color:var(--accent)}
.of-form .of-btn{align-self:flex-start}
.of-status{font-size:13px;color:var(--accent);min-height:1em}
.of-foot{margin-top:96px;padding:28px 0 48px;border-top:1px solid var(--border-soft);display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;font-size:12.5px;color:var(--faint)}
.of-foot a:hover{color:var(--accent)}
.of-float{position:fixed;right:22px;bottom:22px;z-index:60;box-shadow:0 6px 24px oklch(0 0 0 / .4);opacity:0;pointer-events:none;transform:translateY(8px);transition:opacity .2s,transform .2s}
.of-float.show{opacity:1;pointer-events:auto;transform:none}
.of-timeline{list-style:none;margin-top:28px;border-left:1px solid var(--border);display:grid;gap:22px;padding-left:24px}
.of-timeline li{position:relative;font-size:14px;line-height:1.6;color:var(--muted)}
.of-timeline li::before{content:"";position:absolute;left:-29px;top:7px;width:9px;height:9px;border-radius:50%;background:var(--bg);border:1px solid var(--accent)}
.of-timeline time{display:block;font-size:12px;color:var(--accent);margin-bottom:2px}
.of-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:14px;margin-top:28px}
.of-grid img{aspect-ratio:4/3;object-fit:cover}
.of-lightbox{display:none;position:fixed;inset:0;z-index:1000;background:oklch(0 0 0 / .88);padding:40px 24px;align-items:center;justify-content:center;flex-direction:column;gap:16px}
.of-lightbox.open{display:flex}
.of-lightbox img{max-width:min(92vw,1200px);max-height:78vh;object-fit:contain;border-radius:8px}
.of-lightbox p{font-size:13px;color:var(--muted);max-width:640px;text-align:center;line-height:1.5}
.of-lightbox button{position:fixed;top:18px;right:22px;font-size:22px;color:var(--faint);background:none;border:none;cursor:pointer}
.of-lightbox button:hover{color:var(--text)}
@media (max-width:860px){.of-split,.of-split.wide-left,.of-quote{grid-template-columns:1fr;gap:32px}.of-demos{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.topbar .nav a:not(.cv){display:none}.of section{padding-top:64px}.of-stats{grid-template-columns:1fr;gap:12px}.of-demos{grid-template-columns:1fr}.of-photos{grid-template-columns:repeat(2,minmax(0,1fr))}.of-specs dl>div{grid-template-columns:1fr;gap:2px}.of-form .row{grid-template-columns:1fr}.of-float{left:18px;right:18px;justify-content:center}}
.of-diag{background:var(--bg-soft);border:1px solid var(--border-soft);border-radius:8px;margin-bottom:8px;overflow:hidden}
.of-diag svg{display:block;width:100%;height:auto}
.d-bar{fill:var(--text)}.d-src{fill:var(--accent)}.d-src2{fill:oklch(0.80 0.12 300)}
.d-wave{fill:none;stroke:var(--accent);stroke-width:1.1;opacity:.55}
.d-virt{fill:none;stroke:var(--accent);stroke-width:1;stroke-dasharray:2 2}
.d-dash{fill:none;stroke:var(--faint);stroke-width:1;stroke-dasharray:3 3}
.d-arrow{fill:none;stroke:var(--faint);stroke-width:1}
.d-lis{fill:none;stroke:var(--muted);stroke-width:1.2}.d-lis.on{stroke:var(--accent)}.d-lis.on2{stroke:oklch(0.80 0.12 300)}.d-lis.off{stroke:var(--border)}
.d-head{fill:none;stroke:var(--text);stroke-width:1.2}
.d-beam{fill:var(--accent);opacity:.16}.d-beam2{fill:oklch(0.80 0.12 300);opacity:.18}
.d-amb{fill:oklch(0.80 0.12 300);opacity:.14}
.d-in{fill:none;stroke:var(--muted);stroke-width:1}
.d-lab{font-family:var(--font-mono);font-size:8px;fill:var(--faint)}.d-lab.in{fill:var(--muted)}
.of-sim .ofsim{--of-surface:var(--bg-soft);--of-text:var(--text);--of-dim:var(--muted);--of-border:var(--border);--of-accent:#85b7eb;--of-on-accent:#0f2236;padding:14px;color:var(--of-text);font-family:var(--font-mono);font-size:13px;line-height:1.5}
.ofsim *{box-sizing:border-box}
.ofsim .ofs-modes{display:flex;gap:8px;margin-bottom:10px}
.ofsim .ofs-modes button{flex:1 1 0;min-width:0;height:38px;padding:0 8px;border-radius:999px;border:1px solid var(--of-border);background:var(--of-surface);color:var(--of-text);font:inherit;font-size:12.5px;font-weight:500;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ofsim .ofs-modes button[aria-pressed="true"]{background:var(--of-accent);border-color:var(--of-accent);color:var(--of-on-accent)}
.ofsim .ofs-stage{border:1px solid var(--of-border);border-radius:10px;overflow:hidden;background:#202024}
.ofsim canvas{display:block;width:100%;height:auto;touch-action:pan-y pinch-zoom;cursor:crosshair}
.ofsim .ofs-cap{margin:12px 2px 0;min-height:4.5em;font-family:var(--font-display);font-size:14px;line-height:1.55;color:var(--muted)}
.ofsim .ofs-cap b{color:var(--of-accent);font-weight:600}
.ofsim .ofs-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:6px;color:var(--of-dim);font-size:11.5px}
.ofsim .ofs-auto{flex:none;height:30px;padding:0 13px;border-radius:999px;border:1px solid var(--of-border);background:none;color:var(--of-dim);font:inherit;cursor:pointer}
.ofsim .ofs-auto[aria-pressed="true"]{color:var(--of-text);border-color:var(--of-dim)}
.of-tl{list-style:none;margin-top:8px;border-left:1px solid var(--border);padding-left:28px;display:grid;gap:56px}
.of-tl>li{position:relative}
.of-tl>li::before{content:"";position:absolute;left:-33px;top:5px;width:9px;height:9px;border-radius:50%;background:var(--bg);border:1px solid var(--accent)}
.of-tl time{display:block;font-family:var(--font-mono);font-size:12px;color:var(--accent);margin-bottom:4px}
.of-tl h3{margin-bottom:8px}
.of-tl-ph{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,170px),1fr));gap:12px;margin-top:18px}
.of-tl-ph.r{grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr))}
.of-tl-ph figure{margin:0;border-radius:10px;overflow:hidden;border:1px solid var(--border-soft);background:var(--surface);display:flex;flex-direction:column}
.of-tl-ph img{width:100%;display:block;aspect-ratio:3/4;object-fit:cover}
.of-tl-ph.r img{aspect-ratio:16/10;object-fit:contain;background:var(--bg-soft)}
.of-tl-ph .full{grid-column:1/-1}
.of-tl-ph .full img{aspect-ratio:auto}
.of-tl-ph .white img,.of-tl-ph video{background:#fff}
.of-tl-ph video{width:100%;display:block}
.of-tl-ph figcaption{padding:8px 10px;font-size:11.5px;line-height:1.45;color:var(--muted);border-top:1px solid var(--border-soft)}
video[src*="openfield_assembly"]{display:block;width:100%;height:auto;aspect-ratio:1280/326;max-height:60vh;object-fit:contain;background:#fff}
