:root {
  color-scheme: dark;
  --bg: #04131d;
  --bg-2: #061b28;
  --surface: #081f2d;
  --surface-2: #0b2939;
  --surface-3: #0e3346;
  --text: #f5fbff;
  --muted: #a9c1cf;
  --accent: #16d9ee;
  --accent-2: #70e8f5;
  --line: rgba(113, 210, 225, .18);
  --line-strong: rgba(22, 217, 238, .45);
  --shadow: 0 24px 70px rgba(0,0,0,.28);
  --font-scale: 1;
  --max: 1280px;
  --radius: 20px;
  --radius-sm: 12px;
}
:root[data-theme="light"] {
  color-scheme: light;
  --bg: #eef7fa;
  --bg-2: #ffffff;
  --surface: #ffffff;
  --surface-2: #eaf6f8;
  --surface-3: #dceff3;
  --text: #09202b;
  --muted: #49646f;
  --accent: #007f93;
  --accent-2: #006b7c;
  --line: rgba(9,32,43,.13);
  --line-strong: rgba(0,127,147,.42);
  --shadow: 0 22px 60px rgba(22,66,79,.12);
}
:root[data-contrast="high"] {
  --bg: #000;
  --bg-2: #000;
  --surface: #050505;
  --surface-2: #101010;
  --surface-3: #151515;
  --text: #fff;
  --muted: #fff;
  --accent: #00ffff;
  --accent-2: #00ffff;
  --line: rgba(255,255,255,.5);
  --line-strong: #00ffff;
}
:root[data-font-size="small"] { --font-scale: .94; }
:root[data-font-size="normal"] { --font-scale: 1; }
:root[data-font-size="large"] { --font-scale: 1.12; }

* { box-sizing: border-box; }
html { scroll-behavior: smooth; font-size: calc(16px * var(--font-scale)); }
body {
  margin: 0;
  background:
    radial-gradient(circle at 76% 8%, rgba(22,217,238,.08), transparent 26rem),
    linear-gradient(180deg, var(--bg), var(--bg-2) 62%, var(--bg));
  color: var(--text);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  min-height: 100vh;
}
button, input { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
a { color: inherit; text-decoration: none; }
img { max-width: 100%; display: block; }
p { color: var(--muted); line-height: 1.7; }
h1,h2,h3 { font-family: Poppins, Inter, sans-serif; letter-spacing: -.025em; }
button:focus-visible, a:focus-visible, input:focus-visible {
  outline: 3px solid var(--accent);
  outline-offset: 4px;
}
.skip-link {
  position: fixed;
  left: 1rem;
  top: -5rem;
  z-index: 999;
  background: var(--accent);
  color: #001219;
  padding: .8rem 1rem;
  border-radius: 8px;
  font-weight: 800;
}
.skip-link:focus { top: 1rem; }
.container { width: min(var(--max), calc(100% - 2rem)); margin: 0 auto; }

.access-bar {
  border-bottom: 1px solid var(--line);
  background: color-mix(in srgb, var(--surface) 90%, transparent);
  backdrop-filter: blur(16px);
}
.access-inner {
  min-height: 42px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
}
.access-message {
  color: var(--muted);
  font-size: .78rem;
  letter-spacing: .02em;
}
.access-controls {
  display: flex;
  align-items: center;
  gap: .35rem;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.a11y-label {
  color: var(--muted);
  font-size: .76rem;
  margin-right: .2rem;
}
.utility-btn {
  border: 1px solid var(--line);
  background: transparent;
  color: var(--text);
  min-width: 34px;
  min-height: 32px;
  padding: .35rem .55rem;
  border-radius: 8px;
  cursor: pointer;
  font-size: .75rem;
  font-weight: 800;
}
.utility-btn:hover,
.utility-btn[aria-pressed="true"] {
  border-color: var(--accent);
  color: var(--accent);
  background: color-mix(in srgb, var(--accent) 9%, transparent);
}
.theme-switch {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  border-left: 1px solid var(--line);
  padding-left: .6rem;
  margin-left: .15rem;
}

.site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  border-bottom: 1px solid var(--line);
  background: color-mix(in srgb, var(--bg) 88%, transparent);
  backdrop-filter: blur(18px);
}
.nav-wrap {
  min-height: 76px;
  display: flex;
  align-items: center;
  gap: 2rem;
}
.brand { min-width: max-content; }
.brand-name { display:block; font: 800 1.55rem/1 Poppins, sans-serif; }
.brand-name span { color: var(--accent); }
.brand-sub {
  display:block;
  margin-top:.4rem;
  color:var(--muted);
  font-size:.62rem;
  text-transform:uppercase;
  letter-spacing:.16em;
}
.site-nav {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 1.65rem;
}
.site-nav a {
  font-size: .86rem;
  font-weight: 700;
  color: color-mix(in srgb, var(--text) 88%, var(--muted));
}
.site-nav a:hover { color: var(--accent); }
.nav-cta, .primary-btn, .secondary-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 46px;
  border-radius: 12px;
  font-weight: 800;
  transition: transform .18s ease, border-color .18s ease, background .18s ease;
}
.nav-cta {
  border: 1px solid var(--accent);
  color: var(--accent);
  padding: .7rem 1.1rem;
  margin-left: .5rem;
}
.nav-cta:hover { background: color-mix(in srgb, var(--accent) 10%, transparent); }
.menu-btn {
  display:none;
  margin-left:auto;
  min-height:42px;
  border-radius:10px;
  padding:.6rem .8rem;
  border:1px solid var(--line);
  background:var(--surface);
  color:var(--text);
  font-weight:800;
  cursor:pointer;
}

.hero { padding: 4.7rem 0 3.2rem; overflow: hidden; }
.hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.08fr) minmax(350px, .92fr);
  gap: 3.2rem;
  align-items: center;
}
.eyebrow {
  color: var(--accent-2);
  font-size: .76rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .26em;
}
.hero h1 {
  font-size: clamp(3rem, 6.2vw, 5.8rem);
  line-height: .98;
  margin: .85rem 0 1.15rem;
  max-width: 10ch;
}
.hero h1 span { color: var(--accent); }
.hero-lead {
  max-width: 62ch;
  font-size: 1.04rem;
  margin: 0;
}
.hero-actions { display:flex; gap:.8rem; margin-top:1.55rem; flex-wrap:wrap; }
.primary-btn {
  padding: .8rem 1.25rem;
  background: var(--accent);
  border: 1px solid var(--accent);
  color: #00131b;
}
.secondary-btn {
  padding: .8rem 1.25rem;
  background: transparent;
  border: 1px solid var(--line-strong);
  color: var(--text);
}
.primary-btn:hover,.secondary-btn:hover,.nav-cta:hover { transform: translateY(-2px); }
.hero-stats {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  margin-top:2rem;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
.stat {
  padding:1.2rem 1.15rem 1.2rem 0;
  min-height:96px;
}
.stat + .stat { border-left:1px solid var(--line); padding-left:1.2rem; }
.stat strong { display:block; font:800 1.15rem/1.2 Poppins,sans-serif; }
.stat span { display:block; color:var(--muted); font-size:.75rem; margin-top:.35rem; line-height:1.45; }

.hero-visual {
  min-height: 500px;
  position: relative;
  display: grid;
  grid-template-columns: 1fr 150px;
  align-items: end;
}
.hero-portrait {
  position:relative;
  z-index:2;
  align-self:stretch;
  border-radius: 30px 30px 0 0;
  overflow:hidden;
  border:1px solid var(--line);
  box-shadow:var(--shadow);
  background:
    radial-gradient(circle at 55% 20%, rgba(22,217,238,.2), transparent 17rem),
    linear-gradient(145deg,var(--surface-2),var(--bg));
}
.hero-portrait::before {
  content:"";
  position:absolute;
  inset:0;
  opacity:.38;
  background-image: radial-gradient(var(--accent) .8px, transparent .8px);
  background-size: 14px 14px;
  mask-image:linear-gradient(to bottom,#000,transparent 70%);
}
.hero-portrait img {
  position:absolute;
  inset:auto 0 0 0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center 20%;
  z-index:1;
}
.quote-card {
  align-self:start;
  margin-top:4rem;
  margin-left:-1px;
  padding:1rem 0 1rem 1.2rem;
  border-left:2px solid var(--accent);
}
.quote-card blockquote {
  margin:0;
  color:var(--muted);
  font-size:.93rem;
  line-height:1.5;
}
.quote-card cite {
  display:block;
  margin-top:.8rem;
  color:var(--text);
  font-size:.66rem;
  font-style:normal;
  font-weight:800;
  letter-spacing:.16em;
  text-transform:uppercase;
}
.process {
  position:absolute;
  right:0;
  bottom:1.2rem;
  width:150px;
  padding-left:1.2rem;
  color:var(--accent-2);
  font-size:.67rem;
  font-weight:800;
  letter-spacing:.22em;
  line-height:1.8;
  text-transform:uppercase;
}

.section { padding: 4rem 0; }
.section-heading {
  display:flex;
  align-items:end;
  justify-content:space-between;
  gap:2rem;
  margin-bottom:1.8rem;
}
.section-heading h2 {
  margin:.35rem 0 0;
  font-size:clamp(2rem,4vw,3.25rem);
}
.section-heading p { max-width:55ch; margin:0; }

.portfolio-tools {
  position:sticky;
  top:76px;
  z-index:30;
  border-block:1px solid var(--line);
  background: color-mix(in srgb, var(--bg) 94%, transparent);
  backdrop-filter:blur(18px);
}
.portfolio-tools .container {
  min-height:64px;
  display:flex;
  align-items:center;
  gap:.7rem;
}
.filters {
  display:flex;
  gap:.45rem;
  align-items:center;
  flex:1;
  overflow-x:auto;
  padding:.7rem 0;
  scrollbar-width:thin;
}
.filter-btn {
  min-width:max-content;
  border:1px solid transparent;
  background:transparent;
  color:var(--muted);
  border-radius:999px;
  padding:.56rem .9rem;
  font-size:.8rem;
  font-weight:800;
  cursor:pointer;
}
.filter-btn:hover,.filter-btn[aria-pressed="true"] {
  color:#00131b;
  background:var(--accent);
}
.project-search {
  position:relative;
  width:min(250px,32vw);
}
.project-search input {
  width:100%;
  min-height:40px;
  border:1px solid var(--line);
  background:var(--surface);
  color:var(--text);
  border-radius:10px;
  padding:.55rem .8rem;
}
.project-search input::placeholder{color:var(--muted);}

.projects { display:grid; }
.project-row {
  display:grid;
  grid-template-columns: 78px minmax(260px,.78fr) minmax(380px,1.3fr);
  gap:1.9rem;
  align-items:center;
  padding:2.1rem 0;
  border-bottom:1px solid var(--line);
}
.project-number {
  align-self:start;
  color:color-mix(in srgb,var(--accent) 30%,var(--muted));
  font:300 clamp(2.7rem,5vw,4.4rem)/1 Poppins,sans-serif;
}
.project-number::after {
  content:"";
  display:block;
  width:38px;
  height:3px;
  margin-top:1rem;
  background:var(--accent);
}
.project-copy .project-category {
  color:var(--accent-2);
  font-size:.68rem;
  letter-spacing:.22em;
  text-transform:uppercase;
  font-weight:800;
}
.project-copy h3 {
  margin:.55rem 0 .8rem;
  font-size:clamp(1.5rem,2.4vw,2.05rem);
  line-height:1.08;
}
.project-copy p { margin:0; font-size:.9rem; }
.tag-list {display:flex;flex-wrap:wrap;gap:.45rem;margin-top:1rem;}
.tag {
  display:inline-flex;
  align-items:center;
  min-height:29px;
  padding:.35rem .65rem;
  border-radius:7px;
  background:color-mix(in srgb,var(--surface-3) 85%,transparent);
  border:1px solid var(--line);
  color:var(--text);
  font-size:.69rem;
  font-weight:800;
}
.project-actions {display:flex;gap:.6rem;flex-wrap:wrap;margin-top:1.15rem;}
.project-actions a,.project-actions span {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:39px;
  padding:.55rem .9rem;
  border-radius:8px;
  font-size:.75rem;
  font-weight:800;
}
.live-link {background:var(--accent);color:#00131b;}
.detail-link {border:1px solid var(--line-strong);color:var(--text);}
.coming-soon {
  border:1px solid var(--line);
  color:var(--muted);
  cursor:default;
}
.project-media {
  position:relative;
  aspect-ratio:16/9;
  overflow:hidden;
  border-radius:14px;
  border:1px solid var(--line-strong);
  background:var(--surface);
  box-shadow:0 18px 50px rgba(0,0,0,.22);
}
.project-media img {width:100%;height:100%;object-fit:cover;object-position:center;}
.project-media::after {
  content:"";
  pointer-events:none;
  position:absolute;
  inset:0;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.03);
}
.empty-state {
  padding:4rem 1rem;
  text-align:center;
  color:var(--muted);
  border-bottom:1px solid var(--line);
}

.about-grid {
  display:grid;
  grid-template-columns:.8fr 1.2fr;
  gap:3rem;
  align-items:start;
}
.about-grid h2 {margin:.5rem 0 0;font-size:clamp(2rem,4vw,3.25rem);}
.about-copy {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:1rem;
}
.info-card {
  padding:1.45rem;
  border:1px solid var(--line);
  border-radius:var(--radius-sm);
  background:linear-gradient(145deg,var(--surface),color-mix(in srgb,var(--surface-2) 72%,transparent));
}
.info-card h3 {margin:0 0 .55rem;font-size:1rem;}
.info-card p {margin:0;font-size:.86rem;}
.skills {
  display:flex;
  gap:.55rem;
  flex-wrap:wrap;
  margin-top:1rem;
}
.skill {
  border:1px solid var(--line-strong);
  color:var(--accent-2);
  border-radius:8px;
  padding:.5rem .7rem;
  font-size:.75rem;
  font-weight:800;
}

.contact-band {
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  background:
    radial-gradient(circle at 10% 100%, rgba(22,217,238,.1), transparent 24rem),
    var(--surface);
}
.contact-inner {
  padding:3.25rem 0;
  display:grid;
  grid-template-columns:1fr auto;
  align-items:center;
  gap:2rem;
}
.contact-inner h2 {margin:.4rem 0 .45rem;font-size:clamp(1.8rem,3vw,2.6rem);}
.contact-inner p {margin:0;}

.site-footer {padding:1.7rem 0 2.2rem;}
.footer-grid {
  display:flex;
  justify-content:space-between;
  gap:1rem;
  align-items:center;
  color:var(--muted);
  font-size:.76rem;
}
.footer-links {display:flex;gap:1rem;flex-wrap:wrap;}
.footer-links a:hover {color:var(--accent);}

.sr-only {
  position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;
  overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;
}

@media (max-width: 1040px) {
  .hero-grid {grid-template-columns:1fr;}
  .hero h1 {max-width:12ch;}
  .hero-visual {min-height:460px;max-width:720px;}
  .project-row {grid-template-columns:60px minmax(240px,.85fr) minmax(320px,1.15fr);gap:1.25rem;}
}
@media (max-width: 860px) {
  .access-message {display:none;}
  .menu-btn{display:inline-flex;align-items:center;}
  .site-nav {
    position:absolute;
    display:none;
    inset:76px 1rem auto 1rem;
    margin:0;
    padding:1rem;
    flex-direction:column;
    align-items:stretch;
    gap:.25rem;
    border:1px solid var(--line);
    border-radius:14px;
    background:var(--surface);
    box-shadow:var(--shadow);
  }
  .site-nav.open{display:flex;}
  .site-nav a{padding:.7rem .5rem;}
  .nav-cta{margin:.35rem 0 0;}
  .portfolio-tools{top:76px;}
  .portfolio-tools .container{flex-wrap:wrap;padding:.5rem 0;}
  .filters{order:2;width:100%;}
  .project-search{width:100%;}
  .project-row{grid-template-columns:58px 1fr;}
  .project-media{grid-column:2;}
  .about-grid{grid-template-columns:1fr;gap:1.5rem;}
}
@media (max-width: 640px) {
  .container{width:min(100% - 1.2rem,var(--max));}
  .access-inner{padding:.35rem 0;}
  .a11y-label{display:none;}
  .theme-switch{border-left:0;padding-left:0;margin-left:0;}
  .utility-btn{min-width:31px;padding:.3rem .4rem;}
  .brand-sub{display:none;}
  .nav-wrap{min-height:66px;}
  .site-nav{inset:66px .6rem auto .6rem;}
  .hero{padding:3.2rem 0 2rem;}
  .hero-grid{gap:1.5rem;}
  .hero h1{font-size:clamp(2.6rem,14vw,4rem);}
  .hero-stats{grid-template-columns:1fr;}
  .stat+.stat{border-left:0;border-top:1px solid var(--line);padding-left:0;}
  .hero-visual{min-height:390px;grid-template-columns:1fr;}
  .hero-portrait{border-radius:22px;}
  .quote-card,.process{display:none;}
  .section{padding:3rem 0;}
  .section-heading{align-items:start;flex-direction:column;gap:.7rem;}
  .portfolio-tools{top:66px;}
  .project-row{grid-template-columns:1fr;gap:.9rem;padding:1.6rem 0;}
  .project-number{font-size:2.2rem;}
  .project-number::after{margin-top:.55rem;width:30px;}
  .project-media{grid-column:1;order:2;}
  .project-copy{order:3;}
  .about-copy{grid-template-columns:1fr;}
  .contact-inner{grid-template-columns:1fr;gap:1.2rem;}
  .contact-inner .primary-btn{width:100%;}
  .footer-grid{align-items:flex-start;flex-direction:column;}
}
@media (prefers-reduced-motion: reduce) {
  html{scroll-behavior:auto;}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;}
}
