:root{--paper:#eeeee7;--ink:#242d26;--muted:#62695f;--line:#cbd0c4;--accent:#c7e58c}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.65 'DM Sans',sans-serif}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:5px}button,summary,a{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid #527435;outline-offset:6px}.skip{position:absolute;top:-100px;background:var(--ink);color:white;padding:12px;z-index:10}.skip:focus{top:0}header,main,footer{max-width:1440px;margin:auto}header{padding:32px 5%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.wordmark{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:25px;letter-spacing:-1.3px;display:flex;gap:12px;align-items:center}.square{background:var(--ink);color:var(--accent);width:26px;height:26px;font-size:21px;line-height:26px;text-align:center}nav{display:flex;gap:30px;font-size:14px;align-items:center}.contact-link{padding:8px 16px;border:1px solid var(--ink);border-radius:3px}.contact-link span{margin-left:16px}.hero{padding:70px 5% 35px;position:relative}.eyebrow,.project-meta,.hero-index,.visual-top,.visual-bottom,.section-heading>span,.art-caption{font:11px/1.6 monospace;letter-spacing:1.3px}.eyebrow{display:flex;align-items:center;gap:10px}.dot{display:inline-block;width:7px;height:7px;background:#678542;border-radius:50%}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:'Space Grotesk',sans-serif;font-weight:500;letter-spacing:-2px;line-height:1.08}h1{font-size:clamp(60px,8.2vw,116px);margin:30px 0 34px;letter-spacing:-6px}em{font-family:Georgia,serif;font-weight:400}h1 em{color:#70865a}.hero-bottom{display:flex;justify-content:space-between;align-items:end;gap:30px}.hero-bottom p{max-width:430px;font-size:19px;line-height:1.6;margin:0}.text-link{display:inline-flex;gap:30px;align-items:center;border-bottom:1px solid var(--ink);padding-bottom:7px;font-size:14px;font-weight:500}.text-link span{font-size:22px}.hero-index{text-align:right;margin-top:50px;color:var(--muted)}.work{padding:0 5%}.section-heading{border-top:1px solid var(--ink);padding:22px 0 30px;display:flex;justify-content:space-between;align-items:center}.section-heading h2{font-size:22px;letter-spacing:-.7px;margin:0}.featured{display:grid;grid-template-columns:1.2fr 1fr;gap:55px;margin-bottom:55px}.fleet-visual{background:#202c25;color:#dce7d6;display:flex;flex-direction:column;justify-content:space-between;min-width:0}.visual-top,.visual-bottom{padding:20px;display:flex;justify-content:space-between;gap:15px;align-items:center;font-size:9px;letter-spacing:.8px}.visual-top{border-bottom:1px solid #455141}.live .dot{background:var(--accent);width:5px;height:5px;margin-right:5px}.fleet-visual svg{width:100%;height:auto}.visual-bottom{border-top:1px solid #455141}.visual-bottom button{background:none;color:#dce7d6;border:1px solid #66765d;border-radius:3px;padding:7px 10px;font:10px monospace;white-space:nowrap;cursor:pointer}.project-info{padding:12px 0}.project-meta{color:var(--muted);margin-bottom:22px;font-size:10px}h3{font-size:clamp(29px,3.1vw,44px);margin-bottom:22px}.project-info p,.row-copy p,.hardware p{font-size:15px;color:#525b50}.tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:24px}.tags span{font:10px/1.5 monospace;padding:5px 8px;border:1px solid var(--line);border-radius:3px}details{border-top:1px solid var(--line);margin-top:24px}summary{list-style:none;display:flex;justify-content:space-between;font-size:13px;cursor:pointer;padding:16px 0}summary::-webkit-details-marker{display:none}summary span{font-size:20px;line-height:1}details[open] summary span{transform:rotate(45deg)}.detail-copy p{font-size:14px}.project-row{display:grid;grid-template-columns:45px 1fr 1fr;gap:30px;border-top:1px solid var(--line);padding:38px 0}.project-number{font:12px monospace;color:var(--muted);padding-top:3px}.project-row h3{font-size:32px}.project-row .project-meta{margin-bottom:16px}.row-copy>p{margin-bottom:0}.hardware{display:grid;grid-template-columns:1fr 1fr;gap:65px;border-top:1px solid var(--line);padding:45px 0 70px;align-items:center}.hardware-art{background:#dce1d1;min-height:355px;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.board{background:#325b49;border-radius:15px 15px 30px 15px;width:200px;height:255px;padding:22px;transform:rotate(-10deg);box-shadow:14px 18px 0 #bcc8b4;position:relative;border:2px solid #789278}.board:before,.board:after{content:'';position:absolute;width:8px;height:8px;background:#c3d1b1;border-radius:50%;top:8px}.board:before{left:8px}.board:after{right:8px}.board-screen{font:23px/1.3 monospace;background:#bad18f;border:10px solid #24372c;padding:12px;color:#2c452d}.board-screen span{font-size:17px}.board-label{font:7px monospace;color:#dbdfb9;letter-spacing:1px;margin-top:13px}.chip{width:40px;height:28px;background:#24302a;margin:15px 0 0 10px;border-left:5px dashed #b6bba2;border-right:5px dashed #b6bba2}.pads{position:absolute;bottom:5px;right:20px;color:#d4bd78;font-size:17px}.art-caption{position:absolute;bottom:14px;font-size:8px;letter-spacing:1px}.about{border-top:1px solid var(--ink);padding:65px 5% 80px;display:grid;grid-template-columns:1.2fr 1fr;gap:65px}.about h2{font-size:42px;margin:24px 0}.about-copy{padding-top:38px;font-size:16px;color:#525b50}.contact{background:var(--accent);padding:65px 5% 75px}.contact h2{font-size:clamp(35px,4.8vw,65px);margin:25px 0 35px}.email{font-family:'Space Grotesk',sans-serif;font-size:clamp(20px,3vw,36px);border-bottom:1px solid var(--ink);padding-bottom:10px;display:inline-flex;gap:50px;letter-spacing:-1px}footer{padding:28px 5%;display:flex;justify-content:space-between;gap:20px;color:var(--muted);font:11px/1.6 monospace}footer div{display:flex;gap:24px}.robot{animation:travel 7s ease-in-out infinite alternate}.r2{animation-delay:-3s}.r3{animation-delay:-5s}@keyframes travel{to{transform:translateY(65px)}}.paused .robot{animation-play-state:paused}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.robot{animation:none}}@media(min-width:1500px){body{border-left:1px solid var(--line);border-right:1px solid var(--line);max-width:1440px;margin:auto}}@media(max-width:800px){header{padding:22px 6%}nav{gap:18px}nav .contact-link{display:none}.hero{padding:50px 6% 25px}h1{letter-spacing:-3px}.hero-bottom{align-items:start;flex-direction:column;gap:20px}.hero-index{margin-top:35px;font-size:9px}.work{padding:0 6%}.featured{grid-template-columns:1fr;gap:25px}.project-info{padding:0}.project-row{grid-template-columns:25px 1fr;gap:15px}.row-copy{grid-column:2}.hardware{grid-template-columns:1fr;gap:30px}.hardware-art{min-height:330px}.about{grid-template-columns:1fr;padding:45px 6%;gap:5px}.about h2{font-size:35px}.about-copy{padding-top:0}.contact{padding:45px 6%}.email{gap:20px;letter-spacing:-.5px}footer{flex-wrap:wrap;padding:25px 6%}footer div{width:100%;gap:25px}}@media(max-width:430px){nav{gap:13px;font-size:12px}.wordmark{font-size:21px;gap:8px}nav a:first-child{display:none}h1{font-size:57px}.visual-top,.visual-bottom{padding:12px;font-size:8px}.visual-bottom>span{max-width:155px}.about h2{font-size:30px}}
/* Notebook treatment: retain the page composition with quieter, document-like styling. */
:root{--paper:#faf9f5;--ink:#272c30;--muted:#666a6e;--line:#d9d8d2;--accent:#eeeae0}
body{font-family:Georgia,'Times New Roman',serif;font-size:17px}
header,nav,.text-link,summary,.tags,footer{font-family:Arial,Helvetica,sans-serif}
.wordmark{font-family:Georgia,serif;letter-spacing:-.6px;font-size:25px;font-weight:normal}
h1,h2,h3{font-family:Georgia,'Times New Roman',serif;font-weight:normal;letter-spacing:-1px;line-height:1.14}
h1{font-size:clamp(44px,6.5vw,86px);letter-spacing:-2.8px;margin:30px 0}
.hero{padding-top:55px}.hero .dot{display:none}.hero-bottom p{max-width:490px;font-size:19px}
.hero-index{font-family:Georgia,serif;letter-spacing:0;font-size:14px;font-style:italic}
.eyebrow,.project-meta,.section-heading>span{letter-spacing:.4px}.project-meta{font-size:11px}
.contact-link{border:0;padding:0}.tags{gap:0;color:var(--muted)}.tags span{border:0;border-radius:0;padding:0;font-size:11px;line-height:1.9}.tags span+span:before{content:' / ';white-space:pre;color:#9b9b93}
h3{font-size:34px}.project-row h3{font-size:30px}.section-heading h2{font-size:25px}
.fleet-visual{margin:0;background:#f0f1ed;color:var(--ink);border:1px solid var(--line);padding:25px;justify-content:start}
.fleet-visual figcaption{font:italic 15px Georgia,serif;border-bottom:1px solid #c8cec6;padding-bottom:16px}
.system-diagram{padding:25px 10px}.system-node{border-left:2px solid #55758a;padding:5px 15px;display:flex;flex-direction:column;gap:4px}.system-node small{font:10px monospace;letter-spacing:1px;color:#666}.system-node strong{font:18px Georgia,serif}.system-node span{font:12px/1.5 monospace;color:#636963}.connector{display:flex;gap:14px;align-items:center;margin:12px 0;color:#55758a}.connector>span{font:11px monospace;color:#666}.diagram-note{font:12px/1.6 Arial,sans-serif;color:#666;margin:0;border-top:1px solid #c8cec6;padding-top:14px}
.hardware-art{background:#efebe2;min-height:320px;justify-content:start;padding:35px}.hardware-notes{width:100%}.note-title{font:italic 22px Georgia,serif!important;color:var(--ink)!important}.hardware-notes ol{padding-left:24px;margin:25px 0;font:15px/2.3 monospace}.note-foot{font:11px/1.8 monospace!important;border-top:1px solid #d0cabe;padding-top:14px;margin:0}
.about h2{font-size:44px}.about-copy{padding-top:0}.contact{background:transparent;border-top:1px solid var(--ink);padding-top:45px;padding-bottom:55px}.contact h2{font-size:40px}.email{font-family:Georgia,serif;font-size:clamp(20px,3vw,32px)}
@media(max-width:800px){h1{letter-spacing:-1.6px;font-size:clamp(40px,8vw,65px)}h3{font-size:30px}.featured{gap:30px}.about h2{font-size:36px}.contact h2{font-size:32px}.hardware-art{min-height:290px}.fleet-visual{padding:20px}.section-heading>span{font-size:9px}}
@media(max-width:430px){h1{font-size:40px}.wordmark{font-size:22px}.hero-bottom p{font-size:17px}.section-heading{gap:12px}.section-heading>span{max-width:130px;text-align:right}}

/* Portrait beside the name; fixed dimensions prevent header layout shifts. */
.header-portrait {
  width: 56px;
  height: 56px;
  flex-shrink: 0;
  border-radius: 50%;
  object-fit: cover;
  display: block;
}
@media (max-width: 600px) {
  .header-portrait { width: 40px; height: 40px; }
  header { flex-wrap: wrap; gap: 16px; }
}

.hardware-photo { margin: 0; min-width: 0; }
.hardware-photo a { display: block; }
.hardware-photo img { display: block; width: 100%; height: auto; }
.hardware-photo figcaption { margin-top: 10px; color: var(--muted); font: 12px/1.6 monospace; }

.vehicle-photo { margin: 24px 0 0; min-width: 0; }
.vehicle-photo a { display: block; }
.vehicle-photo img { display: block; width: 100%; height: auto; }
.vehicle-photo figcaption { margin-top: 10px; color: var(--muted); font: 12px/1.6 monospace; }

.mapping-photo { margin: 24px 0 0; min-width: 0; }
.mapping-photo a { display: block; }
.mapping-photo img { display: block; width: 100%; height: auto; }
.mapping-photo figcaption { margin-top: 10px; color: var(--muted); font: 12px/1.6 monospace; }

.fleet-photo { margin: 0; min-width: 0; }
.fleet-photo a { display: block; }
.fleet-photo img { display: block; width: 100%; height: auto; }
.fleet-photo figcaption { margin-top: 10px; color: var(--muted); font: 12px/1.6 monospace; }

/* Alternate project imagery on wide screens; preserve the mobile reading order. */
@media (min-width: 801px) {
  .featured { grid-template-columns: 1fr 1.2fr; }
  .featured > .project-info { grid-column: 1; grid-row: 1; }
  .featured > .fleet-photo { grid-column: 2; grid-row: 1; }
  .hardware > div { grid-column: 1; grid-row: 1; }
  .hardware > .hardware-photo { grid-column: 2; grid-row: 1; }
}
