:root{--bg:#05070a;--panel:#0a0e13;--panel2:#0d1219;--text:#f4f7fb;--muted:#8793a3;--line:rgba(255,255,255,.09);--blue:#2e9bff;--blue2:#74c2ff;--glow:rgba(46,155,255,.2);--max:1240px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,Arial,sans-serif;overflow-x:hidden}a{color:inherit;text-decoration:none}button,input{font:inherit}.section{max-width:var(--max);margin:auto;padding:140px 28px;position:relative}.nav{position:fixed;z-index:20;top:0;left:0;right:0;height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 32px;background:rgba(5,7,10,.72);backdrop-filter:blur(18px);border-bottom:1px solid var(--line)}.brand{font-family:"Space Grotesk";font-weight:800;letter-spacing:-1px;display:flex;gap:9px;align-items:center}.brand span{font-size:18px}.brand i{display:block;width:7px;height:7px;background:var(--blue);box-shadow:0 0 16px var(--blue);border-radius:50%}.nav nav{display:flex;gap:32px}.nav nav a{font-size:12px;text-transform:uppercase;letter-spacing:1.5px;color:#aab4c1;transition:.25s}.nav nav a:hover,.nav nav a.active{color:var(--blue)}.nav-ai,.btn{border:1px solid rgba(46,155,255,.5);background:transparent;color:var(--text);padding:11px 17px;border-radius:5px;cursor:pointer}.nav-ai span,.btn span{color:var(--blue)}.menu{display:none;background:none;color:white;border:0;font-size:24px}.hero{min-height:100vh;display:grid;grid-template-columns:1.1fr .9fr;align-items:center;padding-top:120px;overflow:hidden}.hero-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:70px 70px;mask-image:radial-gradient(circle at 65% 45%,black,transparent 70%);pointer-events:none}.eyebrow{font:600 11px "Space Grotesk";letter-spacing:2px;color:#8d99a8}.section-no{color:#556170;font:600 11px "Space Grotesk";margin-right:18px}.hero .eyebrow{display:flex;align-items:center;gap:9px}.pulse{width:6px;height:6px;border-radius:50%;background:var(--blue);box-shadow:0 0 14px var(--blue);display:inline-block}.hero h1{font:800 clamp(76px,11vw,164px)/.78 "Space Grotesk";letter-spacing:-.08em;margin:38px 0}.hero h1 em,.about h2 em,.cv h2 em,.contact h2 em{font-style:normal;color:#fff;text-shadow:0 0 50px rgba(255,255,255,.05)}.positioning{font-size:18px;line-height:1.6;color:#b2bdca;max-width:640px}.hero-actions{display:flex;gap:12px;margin-top:34px}.btn{display:inline-flex;gap:18px;align-items:center;justify-content:center;min-width:150px;transition:.25s}.btn.primary{background:var(--blue);border-color:var(--blue);color:#00111f;box-shadow:0 0 30px rgba(46,155,255,.18)}.btn.primary span{color:#00111f}.btn:hover{transform:translateY(-3px);box-shadow:0 10px 35px rgba(46,155,255,.16)}.hero-meta{display:flex;gap:28px;margin-top:70px;color:#6f7b8b;font-size:10px;letter-spacing:1px}.hero-meta b{color:#d7dde5;margin-right:5px}.scroll-cue{position:absolute;bottom:28px;left:28px;font:600 9px "Space Grotesk";letter-spacing:2px;color:#5e6a78}.scroll-cue span{color:var(--blue);margin-left:10px}.ticker{border-top:1px solid var(--line);border-bottom:1px solid var(--line);overflow:hidden;white-space:nowrap;padding:18px 0;color:#6d7886;font:600 10px "Space Grotesk";letter-spacing:2px}.ticker div{animation:marquee 20s linear infinite}.ticker b{color:var(--blue);margin:0 28px}.section-head{display:flex;justify-content:space-between;align-items:end;margin-bottom:60px}.section-head>div{display:flex;align-items:center}.section-head p{max-width:320px;color:#74808f;font-size:12px;line-height:1.6}.projects{display:grid;grid-template-columns:1fr 1fr;gap:18px}.project-card{border:1px solid var(--line);background:linear-gradient(145deg,rgba(255,255,255,.035),rgba(255,255,255,.012));overflow:hidden;transition:.35s;position:relative}.project-card:hover{border-color:rgba(46,155,255,.5);transform:translateY(-7px);box-shadow:0 20px 60px rgba(0,0,0,.35)}.project-top{display:flex;justify-content:space-between;padding:18px 20px;font:600 9px "Space Grotesk";letter-spacing:1.5px;color:#687584}.status{color:var(--blue)}.project-visual{height:330px;margin:0 12px;border:1px solid var(--line);position:relative;overflow:hidden;background:#070b10}.agriculture{background:radial-gradient(circle at 50% 70%,rgba(46,155,255,.11),transparent 40%),linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:auto,40px 40px,40px 40px}.plant{position:absolute;width:6px;height:180px;background:#4e5864;bottom:50px;left:50%;transform:translateX(-50%)}.plant:before,.plant:after{content:"";position:absolute;width:80px;height:35px;border:1px solid rgba(46,155,255,.55);border-radius:100% 0;top:45px}.plant:before{right:0;transform:rotate(-18deg)}.plant:after{left:0;transform:rotate(18deg) scaleX(-1)}.soil{position:absolute;left:8%;right:8%;bottom:30px;height:34px;border-top:1px solid rgba(255,255,255,.18);background:repeating-linear-gradient(90deg,transparent 0 22px,rgba(255,255,255,.04) 23px 24px)}.sensor{position:absolute;font:600 8px "Space Grotesk";letter-spacing:1px;color:var(--blue);border:1px solid rgba(46,155,255,.3);padding:6px;background:#05070a}.s1{top:35px;left:30px}.s2{right:30px;top:95px}.signal{position:absolute;width:100%;height:1px;background:var(--blue);box-shadow:0 0 15px var(--blue);top:55%;opacity:.4;animation:signal 3s ease-in-out infinite}.sales{padding:50px 40px;background:radial-gradient(circle at 50% 50%,rgba(46,155,255,.08),transparent 55%)}.bars{height:220px;display:flex;gap:14px;align-items:end;border-bottom:1px solid var(--line)}.bars i{display:block;flex:1;background:linear-gradient(180deg,rgba(46,155,255,.85),rgba(46,155,255,.05));height:var(--h);animation:bars 3s ease-in-out infinite alternate}.bars i:nth-child(1){--h:28%}.bars i:nth-child(2){--h:46%}.bars i:nth-child(3){--h:38%}.bars i:nth-child(4){--h:74%}.bars i:nth-child(5){--h:58%}.bars i:nth-child(6){--h:88%}.bars i:nth-child(7){--h:68%}.chart-labels{display:flex;justify-content:space-between;margin-top:14px;font:8px "Space Grotesk";color:#596675}.project-body{padding:25px 22px 28px}.tag{font:600 9px "Space Grotesk";letter-spacing:1.5px;color:var(--blue)}.project-body h2{font:700 27px "Space Grotesk";margin:10px 0}.project-body p{font-size:13px;color:#8793a1;line-height:1.7;max-width:560px}.techs{display:flex;flex-wrap:wrap;gap:6px;margin-top:18px}.techs span{font-size:10px;color:#9aa6b4;border:1px solid var(--line);padding:6px 8px}.project-links{display:flex;gap:20px;margin-top:24px}.project-links a{font:600 10px "Space Grotesk";color:#c4ccd5}.project-links a:hover{color:var(--blue)}.about{border-top:1px solid var(--line)}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:100px}.about-statement h2{font:700 clamp(42px,5vw,72px)/.98 "Space Grotesk";letter-spacing:-.05em;margin:20px 0}.quote{font:100px Georgia;color:var(--blue);opacity:.8}.about-copy{padding-top:30px}.about-copy p{font-size:15px;line-height:1.9;color:#98a4b2;margin:0 0 24px}.about-copy strong{color:#e6ebf0}.facts{display:flex;gap:2px;margin-top:50px}.facts div{border:1px solid var(--line);padding:18px;min-width:100px}.facts strong{display:block;color:var(--blue);font:700 11px "Space Grotesk"}.facts span{display:block;margin-top:20px;color:#8a96a4;font:600 10px/1.3 "Space Grotesk"}.skill-wall{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;border:1px solid var(--line);background:var(--line)}.skill-cluster{padding:30px;background:var(--panel);min-height:250px}.skill-cluster h3{font:700 12px "Space Grotesk";color:var(--blue);margin:0 0 25px;text-transform:uppercase;letter-spacing:1.5px}.skill-cluster span{display:block;color:#a4afbb;font-size:13px;margin:13px 0}.skill-meter{display:grid;gap:15px;margin-top:50px}.skill-meter>div{display:grid;grid-template-columns:160px 1fr 30px;gap:18px;align-items:center;font:10px "Space Grotesk";color:#8793a2}.skill-meter i{height:2px;background:#1c2630}.skill-meter b{display:block;height:2px;background:var(--blue);box-shadow:0 0 10px var(--blue)}.timeline{border-top:1px solid var(--line)}.timeline-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.timeline-item{border-top:1px solid #25303b;padding:25px 0}.timeline-item>span{font:600 9px "Space Grotesk";letter-spacing:2px;color:var(--blue)}.timeline-item h2{font:600 23px "Space Grotesk";line-height:1.2;margin:18px 0}.timeline-item p{color:#7f8b99;font-size:13px;line-height:1.7}.timeline-item small{color:#556170;font:600 9px "Space Grotesk";letter-spacing:1px}.lab-console{border:1px solid var(--line);background:#030507;box-shadow:0 30px 80px rgba(0,0,0,.3)}.console-bar{height:42px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:7px;padding:0 14px}.console-bar span{width:7px;height:7px;border-radius:50%;background:#25303a}.console-bar b{margin:auto;font:600 9px "Space Grotesk";color:#596676}.console-content{padding:32px;font:12px/1.8 "Space Grotesk";color:#8c99a7}.terminal-line span{color:var(--blue);margin-right:10px}.terminal-line.result{color:#5c6977;margin:7px 0 28px}.lab-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);margin:20px 0 30px}.lab-grid div{background:#05080b;padding:22px;min-height:145px;display:flex;flex-direction:column}.lab-grid b{color:#4b5866}.lab-grid strong{color:#cbd2da;margin-top:20px;font-size:11px}.lab-grid span{color:#657282;font-size:10px}.lab-grid em{margin-top:auto;color:var(--blue);font-size:8px;font-style:normal;letter-spacing:1px}.blink{animation:blink 1s infinite}.cv{padding-top:40px}.cv-card{border:1px solid var(--line);padding:55px;display:flex;justify-content:space-between;align-items:center;background:linear-gradient(110deg,rgba(46,155,255,.06),transparent 45%)}.cv h2,.contact h2{font:700 clamp(40px,5vw,70px)/1 "Space Grotesk";letter-spacing:-.05em;margin:18px 0}.cv p{max-width:480px;color:#7d8997;line-height:1.7;font-size:13px}.contact{border-top:1px solid var(--line)}.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:80px}.contact-copy p{max-width:470px;color:#7d8997;line-height:1.8}.contact-links a{display:grid;grid-template-columns:90px 1fr 20px;padding:22px 0;border-bottom:1px solid var(--line);align-items:center}.contact-links span{font:600 9px "Space Grotesk";color:#5e6a78;letter-spacing:1px}.contact-links strong{font:500 14px "Space Grotesk";color:#cbd3dc}.contact-links b{color:var(--blue);font-weight:400}.contact-links a:hover strong{color:var(--blue)}footer{border-top:1px solid var(--line);padding:25px 28px;display:flex;justify-content:space-between;color:#4f5b68;font:600 9px "Space Grotesk";letter-spacing:1.5px}.assistant-fab{position:fixed;right:24px;bottom:24px;z-index:30;background:var(--blue);color:#00111f;border:0;padding:13px 17px;border-radius:30px;font:700 11px "Space Grotesk";box-shadow:0 8px 35px rgba(46,155,255,.25);cursor:pointer}.assistant-fab span{margin-right:7px}.assistant{position:fixed;z-index:40;right:24px;bottom:80px;width:min(390px,calc(100vw - 30px));height:530px;background:#080c11;border:1px solid rgba(46,155,255,.35);box-shadow:0 30px 90px rgba(0,0,0,.65);display:flex;flex-direction:column;transform:translateY(20px) scale(.97);opacity:0;pointer-events:none;visibility:hidden;transition:opacity .25s,transform .25s,visibility 0s linear .25s}.assistant.open{transform:none;opacity:1;pointer-events:auto;visibility:visible;transition:opacity .25s,transform .25s,visibility 0s}.assistant-head{height:50px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 16px;font:600 10px "Space Grotesk";letter-spacing:1.5px}.assistant-head button{background:none;border:0;color:#82909f;font-size:24px;cursor:pointer}.assistant-body{padding:15px;flex:1;overflow:auto}.msg{max-width:90%;padding:11px 13px;margin-bottom:10px;font-size:12px;line-height:1.6}.msg.bot{background:#10161d;border:1px solid var(--line);color:#aeb9c5}.msg.user{margin-left:auto;background:rgba(46,155,255,.14);border:1px solid rgba(46,155,255,.2);color:#d9e4ee}.suggestions{display:flex;gap:5px;padding:8px 12px;overflow:auto}.suggestions button{white-space:nowrap;background:transparent;border:1px solid var(--line);color:#778493;padding:7px 9px;font-size:9px;cursor:pointer}.suggestions button:hover{border-color:var(--blue);color:var(--blue)}#chatForm{display:flex;border-top:1px solid var(--line)}#chatInput{flex:1;background:transparent;border:0;color:white;padding:14px;outline:none;font-size:12px}#chatForm button{width:50px;background:transparent;border:0;border-left:1px solid var(--line);color:var(--blue);cursor:pointer}#network{position:fixed;inset:0;z-index:-2;opacity:.32}.scanlines {
  position: fixed;
  inset: 0;
  z-index: 50;
  pointer-events: none;
  background: repeating-linear-gradient(0deg, transparent 0 3px, rgba(255,255,255,.015) 4px);
  mix-blend-mode: normal;
}.cursor-glow{position:fixed;width:300px;height:300px;border-radius:50%;pointer-events:none;z-index:-1;background:radial-gradient(circle,rgba(46,155,255,.06),transparent 70%);transform:translate(-50%,-50%)}.reveal{opacity:0;transform:translateY(30px);transition:opacity .8s ease,transform .8s ease}.reveal.visible{opacity:1;transform:none}@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}@keyframes signal{50%{transform:translateY(90px);opacity:0}}@keyframes bars{to{transform:scaleY(.88);transform-origin:bottom}}@keyframes blink{50%{opacity:0}}@media(max-width:900px){.nav nav,.nav-ai{display:none}.menu{display:block}.hero{grid-template-columns:1fr;padding-top:150px}.hero-copy{position:relative;z-index:2}.projects{grid-template-columns:1fr}.skill-wall{grid-template-columns:1fr 1fr}.timeline-grid{grid-template-columns:1fr}.lab-grid{grid-template-columns:1fr 1fr}.about-grid,.contact-grid{grid-template-columns:1fr;gap:30px}.cv-card{flex-direction:column;align-items:flex-start;gap:30px}.hero-meta{flex-wrap:wrap}.section{padding:100px 20px}.section-head{align-items:flex-start;gap:20px}.section-head p{display:none}}@media(max-width:560px){.nav{padding:0 18px}.hero h1{font-size:72px}.skill-wall{grid-template-columns:1fr}.skill-meter>div{grid-template-columns:115px 1fr 25px}.lab-grid{grid-template-columns:1fr}.contact-links a{grid-template-columns:70px 1fr 15px}.contact-links strong{font-size:11px}.assistant{right:15px;bottom:72px}.assistant-fab{right:15px;bottom:15px}footer{flex-direction:column;gap:8px}.project-visual{height:260px}}
/* Keep longer portfolio descriptions readable and professionally aligned. */
main .project-body p,
main .about-copy p,
main .timeline-item p,
main .cv p,
main .contact-copy p {
  text-align: justify;
  text-justify: inter-word;
}

@media (max-width: 900px) {
  .nav nav.mobile-open {
    display: flex;
    position: absolute;
    top: 76px;
    right: 15px;
    flex-direction: column;
    padding: 20px;
    background: #080c11;
    border: 1px solid rgba(255,255,255,.09);
  }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
  }
}

/* Hero portrait: a dark, blue-tinted fade integrates the photograph with the interface. */
.hero-portrait {
  min-height: 620px;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: flex-end;
}
.portrait-frame {
  position: relative;
  width: min(100%, 440px);
  height: 600px;
  overflow: hidden;
  clip-path: polygon(8% 0, 100% 0, 100% 92%, 92% 100%, 0 100%, 0 8%);
  border: 0;
  box-shadow: 0 0 70px rgba(46,155,255,.16);
  background: var(--panel);
}
.portrait-frame::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(90deg, rgba(5,7,10,.9) 0%, rgba(5,7,10,.18) 31%, transparent 52%),
    linear-gradient(0deg, rgba(5,7,10,.94) 0%, transparent 31%, rgba(5,7,10,.3) 76%, rgba(5,7,10,.65) 100%),
    linear-gradient(135deg, rgba(46,155,255,.2), transparent 46%);
}
.portrait-frame img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  object-position: center;
  filter: saturate(.72) contrast(1.06) brightness(.82);
}
.portrait-quote {
  position: absolute;
  right: 0;
  bottom: 35px;
  z-index: 1;
  margin: 0;
  min-width: 215px;
  padding: 15px 18px 14px;
  border-left: 2px solid var(--blue);
  background: linear-gradient(90deg, rgba(5,7,10,.9), rgba(5,7,10,.62));
  backdrop-filter: blur(10px);
  box-shadow: 0 12px 30px rgba(0,0,0,.2);
}
.portrait-quote span {
  display: block;
  color: #f4f7fb;
  font: 400 18px/1.25 "Space Grotesk";
  font-style: italic;
  letter-spacing: -.4px;
}
.portrait-quote cite {
  display: block;
  margin-top: 8px;
  color: var(--blue2);
  font: 600 9px/1.2 "Space Grotesk";
  font-style: normal;
  letter-spacing: 1.4px;
  text-transform: uppercase;
}
@media (max-width: 900px) {
  .hero-portrait {
    position: absolute;
    right: -120px;
    top: 120px;
    width: 470px;
    min-height: 610px;
    opacity: .42;
    pointer-events: none;
  }
  .portrait-frame { height: 610px; }
  .portrait-quote { display: none; }
}
@media (max-width: 560px) {
  .hero-portrait { right: -210px; top: 125px; opacity: .3; }
}

.skip-link {
  position: fixed;
  z-index: 100;
  top: 12px;
  left: 12px;
  padding: 10px 14px;
  background: var(--blue);
  color: #00111f;
  font: 700 11px "Space Grotesk";
  transform: translateY(-160%);
  transition: transform .2s ease;
}
.skip-link:focus { transform: translateY(0); }
a:focus-visible,
button:focus-visible,
input:focus-visible {
  outline: 2px solid var(--blue2);
  outline-offset: 4px;
}
main .section-head p { text-align: justify; }
main .skill-meter > div { grid-template-columns: 160px 1fr 72px; }
main .skill-meter small { text-align: right; color: var(--blue2); font-size: 8px; letter-spacing: .7px; }
main .contact-links strong { overflow-wrap: anywhere; }
@media (max-width: 560px) {
  main .skill-meter > div { grid-template-columns: 105px 1fr 62px; gap: 10px; }
}

/* Seamless ticker loop: width:max-content makes the track span its real content
   (two identical copies), so translateX(-50%) wraps exactly one copy with no jump. */
.ticker-track { width: -webkit-max-content; width: max-content; will-change: transform; }
.ticker-track span { white-space: nowrap; }

/* Spacing & alignment refinements. */
.assistant { height: min(530px, calc(100vh - 96px)); }
.scroll-cue { left: 50%; transform: translateX(-50%); bottom: 34px; }

@media (max-width: 900px) {
  .nav { padding: 0 20px; }
  footer { padding: 25px 20px; }
  .cv-card { padding: 40px 28px; }
  .section-head { margin-bottom: 40px; }
}

@media (max-width: 560px) {
  .nav { padding: 0 20px; }
  .hero h1 { margin: 30px 0; }
  .hero-meta { margin-top: 44px; gap: 16px; }
  .hero-actions { flex-wrap: wrap; }
  .hero-actions .btn { flex: 1 1 140px; }
}
