.portfolio-main{padding-block:54px 82px}.portfolio-hero{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(250px,.65fr);gap:44px;align-items:end;padding:38px 0 46px;border-bottom:1px solid var(--line)}.portfolio-hero h1{max-width:920px;margin:14px 0 18px;font-size:clamp(3rem,7vw,6.2rem);line-height:.92;letter-spacing:-.06em}.portfolio-hero p{max-width:780px;margin:0;color:#cedbdd;font-size:clamp(1.04rem,1.5vw,1.28rem)}.portfolio-summary{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;border:1px solid var(--line-strong);background:var(--line)}.portfolio-summary div{padding:20px;background:var(--ink-2)}.portfolio-summary strong,.portfolio-summary span{display:block}.portfolio-summary strong{color:var(--orange);font:800 1.55rem/1 var(--mono)}.portfolio-summary span{margin-top:8px;color:var(--muted);font:700 .62rem var(--mono);letter-spacing:.1em;text-transform:uppercase}.portfolio-controls{padding:34px 0 26px}.portfolio-controls h2{margin:0 0 14px;font-size:.7rem;color:var(--cyan);font:700 .7rem var(--mono);letter-spacing:.16em;text-transform:uppercase}.filter-list{display:flex;flex-wrap:wrap;gap:10px}.filter-button{min-height:42px;padding:0 16px;border:1px solid var(--line-strong);border-radius:2px;color:#cbd8da;background:rgba(5,18,24,.72);font:700 .68rem var(--mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer}.filter-button:hover,.filter-button:focus-visible{border-color:var(--cyan);color:var(--paper)}.filter-button[aria-pressed=true]{border-color:var(--orange);color:#17110d;background:var(--orange)}.portfolio-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,360px),1fr));gap:22px}.project-card{display:flex;min-width:0;flex-direction:column;border:1px solid var(--line);background:rgba(5,18,24,.84);transition:transform .25s ease,border-color .25s ease,box-shadow .25s ease}.project-card:hover,.project-card:focus-within{transform:translateY(-4px);border-color:rgba(98,213,231,.72);box-shadow:0 24px 60px rgba(0,0,0,.28),0 0 28px rgba(98,213,231,.07)}.project-card[hidden]{display:none}.project-visual{position:relative;min-height:190px;overflow:hidden;border-bottom:1px solid var(--line);background:linear-gradient(145deg,rgba(98,213,231,.08),transparent 54%),#07131a}.project-visual:after{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(98,213,231,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(98,213,231,.055) 1px,transparent 1px);background-size:28px 28px;mask-image:linear-gradient(to bottom,black,transparent)}.visual-console{position:absolute;z-index:1;inset:26px;display:flex;flex-direction:column;justify-content:space-between;padding:18px;border:1px solid var(--line-strong);background:rgba(4,12,17,.88);box-shadow:14px 14px 0 rgba(255,139,61,.08)}.visual-console span{color:var(--cyan);font:700 .62rem var(--mono);letter-spacing:.12em;text-transform:uppercase}.visual-console strong{max-width:90%;font-size:1.32rem;line-height:1.15}.visual-console code{color:var(--orange);font:700 .67rem var(--mono)}.project-brand-visual{position:absolute;z-index:1;inset:0;display:grid;place-items:center}.project-brand-visual img{display:block;max-width:70%;max-height:110px;width:auto;height:auto;object-fit:contain}.project-body{display:flex;flex:1;flex-direction:column;padding:24px}.project-category{margin-bottom:12px;color:var(--cyan);font:700 .64rem var(--mono);letter-spacing:.14em;text-transform:uppercase}.project-card h2{margin:0 0 11px;font-size:clamp(1.28rem,2vw,1.62rem);letter-spacing:-.025em}.project-card p{margin:0;color:var(--muted)}.tech-list{display:flex;flex-wrap:wrap;gap:7px;margin:22px 0}.tech-badge{padding:5px 8px;border:1px solid var(--line);color:#cbdadd;background:rgba(98,213,231,.035);font:700 .59rem var(--mono);letter-spacing:.05em}.project-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:auto;padding-top:4px}.project-action{display:inline-flex;min-height:42px;align-items:center;padding:0 14px;border:1px solid var(--line-strong);color:var(--paper);text-decoration:none;font-weight:750}.project-action:hover,.project-action:focus-visible{border-color:var(--orange);color:var(--orange)}.project-action.primary{border-color:var(--cyan);background:rgba(98,213,231,.09)}.portfolio-note{margin-top:38px;padding:22px;border-left:3px solid var(--orange);background:rgba(255,139,61,.055);color:#cad7da}.project-main{padding-block:54px 80px}.project-breadcrumb{display:flex;gap:8px;color:var(--muted);font:700 .65rem var(--mono);letter-spacing:.08em;text-transform:uppercase}.project-breadcrumb a{color:var(--cyan);text-decoration:none}.project-hero{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(280px,.75fr);gap:50px;align-items:end;padding:34px 0 48px;border-bottom:1px solid var(--line)}.project-hero h1{margin:14px 0 18px;font-size:clamp(2.7rem,6vw,5.5rem);line-height:.94;letter-spacing:-.055em}.project-lead{max-width:760px;margin:0;color:#d2dee0;font-size:clamp(1.03rem,1.4vw,1.22rem)}.project-facts{display:grid;border:1px solid var(--line-strong);background:rgba(5,18,24,.75)}.project-fact{display:grid;grid-template-columns:105px 1fr;gap:18px;padding:15px 18px;border-bottom:1px solid var(--line)}.project-fact:last-child{border-bottom:0}.project-fact strong{color:var(--cyan);font:700 .61rem var(--mono);letter-spacing:.09em;text-transform:uppercase}.project-fact span{color:#d7e1e3}.project-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(270px,.65fr);gap:48px;padding-top:48px}.project-section{padding:0 0 42px}.project-section+.project-section{padding-top:42px;border-top:1px solid var(--line)}.project-section h2{margin:0 0 18px;font-size:clamp(1.35rem,2.3vw,2rem)}.project-section h3{margin:28px 0 10px}.project-section p,.project-section li{color:#c8d6d9}.project-section ul{padding-left:1.2rem}.architecture-flow{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:10px;margin-top:22px}.architecture-node{padding:16px;border:1px solid var(--line);background:var(--ink-2)}.architecture-node strong{display:block;color:var(--orange);font:700 .64rem var(--mono);letter-spacing:.08em;text-transform:uppercase}.architecture-node span{display:block;margin-top:8px;color:#d2dde0}.project-sidebar{align-self:start;position:sticky;top:150px}.sidebar-panel{padding:24px;border:1px solid var(--line-strong);background:rgba(5,18,24,.82)}.sidebar-panel+.sidebar-panel{margin-top:18px}.sidebar-panel h2{margin:0 0 16px;color:var(--cyan);font:700 .68rem var(--mono);letter-spacing:.12em;text-transform:uppercase}.sidebar-links{display:grid;gap:10px}.sidebar-links a{display:flex;min-height:44px;align-items:center;justify-content:space-between;padding:0 13px;border:1px solid var(--line);text-decoration:none}.sidebar-links a:hover,.sidebar-links a:focus-visible{border-color:var(--orange);color:var(--orange)}.evidence-callout{padding:18px;border-left:3px solid var(--cyan);background:rgba(98,213,231,.055);color:#cbd9dc}.status-list{display:grid;gap:10px}.status-item{display:flex;align-items:flex-start;gap:10px;color:#cbd9dc}.status-item:before{content:"";width:8px;height:8px;margin-top:.5em;border-radius:50%;background:var(--orange);box-shadow:0 0 12px rgba(255,139,61,.5)}.back-portfolio{display:inline-flex;margin-top:34px;color:var(--cyan);font-weight:750;text-decoration:none}.back-portfolio:hover,.back-portfolio:focus-visible{color:var(--orange)}.project-screenshot-visual{position:absolute;z-index:1;inset:0}.project-screenshot-visual img{display:block;width:100%;height:100%;object-fit:cover;object-position:center top}@media(max-width:980px){.portfolio-hero,.project-hero,.project-layout{grid-template-columns:1fr}.project-sidebar{position:static}.portfolio-summary{max-width:520px}}@media(max-width:640px){.portfolio-main,.project-main{padding-block:34px 56px}.portfolio-hero{padding-top:20px}.project-visual{min-height:165px}.project-body{padding:20px}.filter-button{flex:1 1 auto}.project-fact{grid-template-columns:1fr;gap:4px}}@media(prefers-reduced-motion:reduce){.project-card:hover,.project-card:focus-within{transform:none}.project-card{transition:none}}
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.project-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.project-gallery figure{margin:0;border:1px solid var(--line);background:var(--ink-2)}.project-gallery img{display:block;width:100%;aspect-ratio:1200/630;object-fit:cover;object-position:center top}.project-gallery figcaption{padding:12px 14px;color:var(--muted);font:700 .62rem/1.5 var(--mono);letter-spacing:.04em}@media(max-width:720px){.project-gallery{grid-template-columns:1fr}}
.project-hero.has-visual{position:relative;isolation:isolate;padding:44px 28px 48px;border:1px solid var(--line-strong);background:linear-gradient(90deg,rgba(3,12,17,.96) 0%,rgba(3,12,17,.88) 48%,rgba(3,12,17,.74) 100%),var(--project-hero-image) center/cover no-repeat;box-shadow:inset 0 0 80px rgba(0,0,0,.3)}.project-hero.has-visual>*{position:relative;z-index:1}.project-hero.has-visual .project-facts{background:rgba(5,18,24,.9);backdrop-filter:blur(8px)}.project-sidebar-preview{padding:0;overflow:hidden}.project-sidebar-preview h2{margin:0;padding:18px 20px;border-bottom:1px solid var(--line)}.project-sidebar-preview img{display:block;width:100%;height:auto!important;aspect-ratio:16/9!important;object-fit:cover;object-position:center top}.project-sidebar-preview figcaption{padding:11px 14px;color:var(--muted);font:700 .59rem/1.5 var(--mono);letter-spacing:.04em}.project-spec-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:22px}.project-spec{padding:17px;border:1px solid var(--line);background:var(--ink-2)}.project-spec strong{display:block;color:var(--orange);font:700 .62rem var(--mono);letter-spacing:.08em;text-transform:uppercase}.project-spec span{display:block;margin-top:7px;color:#d2dde0}.api-contract{display:grid;gap:1px;margin-top:22px;border:1px solid var(--line);background:var(--line)}.api-contract div{display:grid;grid-template-columns:110px 1fr;gap:16px;padding:13px 15px;background:var(--ink-2)}.api-contract strong{color:var(--cyan);font:700 .61rem var(--mono);letter-spacing:.08em;text-transform:uppercase}.api-contract span{color:#d2dde0;overflow-wrap:anywhere}@media(max-width:640px){.project-hero.has-visual{padding:30px 20px 34px}.project-spec-grid{grid-template-columns:1fr}.api-contract div{grid-template-columns:1fr;gap:4px}}
.project-sidebar-preview img,.project-gallery img{cursor:zoom-in}.project-sidebar-preview img:focus-visible,.project-gallery img:focus-visible{outline:3px solid var(--orange);outline-offset:-3px}.image-lightbox{width:min(96vw,1500px);height:min(92vh,950px);max-width:none;max-height:none;margin:auto;padding:0;border:1px solid var(--line-strong);color:var(--paper);background:#030c11;box-shadow:0 30px 100px rgba(0,0,0,.72)}.image-lightbox::backdrop{background:rgba(0,6,9,.86);backdrop-filter:blur(5px)}.image-lightbox[open]{display:grid;grid-template-rows:auto minmax(0,1fr)}.image-lightbox-toolbar{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:58px;padding:9px 12px 9px 18px;border-bottom:1px solid var(--line);background:#07131a}.image-lightbox-label{overflow:hidden;color:#cbdadd;font:700 .64rem var(--mono);letter-spacing:.04em;text-overflow:ellipsis;white-space:nowrap}.image-lightbox-toolbar>div{display:flex;gap:7px}.image-lightbox-toolbar button{min-width:42px;height:40px;padding:0 11px;border:1px solid var(--line-strong);color:var(--paper);background:#0a1a22;font:700 .78rem var(--mono);cursor:pointer}.image-lightbox-toolbar button:hover,.image-lightbox-toolbar button:focus-visible{border-color:var(--orange);color:var(--orange)}.image-lightbox-stage{display:grid;place-items:center;overflow:auto;padding:20px;overscroll-behavior:contain}.image-lightbox-stage img{display:block;max-width:100%;max-height:100%;transform-origin:center;transition:transform .15s ease;box-shadow:0 12px 48px rgba(0,0,0,.5)}@media(max-width:640px){.image-lightbox{width:100vw;height:100dvh;border:0}.image-lightbox-toolbar{padding-left:12px}.image-lightbox-label{display:none}.image-lightbox-stage{padding:10px}}@media(prefers-reduced-motion:reduce){.image-lightbox-stage img{transition:none}}
.project-hero-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px}.project-hero-action{display:inline-flex;min-height:44px;align-items:center;justify-content:center;gap:14px;padding:0 16px;border:1px solid var(--line-strong);color:var(--paper);background:rgba(5,18,24,.72);font-weight:800;text-decoration:none}.project-hero-action:hover,.project-hero-action:focus-visible{border-color:var(--orange);color:var(--orange)}.project-hero-action.primary{border-color:var(--cyan);background:var(--cyan);color:#041117}.project-hero-action.primary:hover,.project-hero-action.primary:focus-visible{border-color:var(--orange);background:var(--orange);color:#17110d}.project-value-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;margin-top:24px;border:1px solid var(--line);background:var(--line)}.project-value-grid>div{padding:18px;background:var(--ink-2)}.project-value-grid strong,.project-value-grid span{display:block}.project-value-grid strong{color:var(--orange);font:700 .62rem var(--mono);letter-spacing:.09em;text-transform:uppercase}.project-value-grid span{margin-top:8px;color:#cbd9dc}.project-code-proof{margin-top:22px;border:1px solid var(--line-strong);background:#030c11}.project-code-proof>div{display:flex;align-items:baseline;justify-content:space-between;gap:18px;padding:14px 16px;border-bottom:1px solid var(--line)}.project-code-proof strong{color:var(--cyan);font:700 .64rem var(--mono);letter-spacing:.08em;text-transform:uppercase}.project-code-proof span{color:var(--muted);font-size:.8rem}.project-code-proof pre{margin:0;padding:18px;overflow:auto;color:#d8e5e7;font:700 .73rem/1.7 var(--mono)}.project-gallery-single{grid-template-columns:1fr}@media(max-width:980px){.project-sidebar{order:-1}.project-sidebar-preview img{max-height:none}}@media(max-width:720px){.project-value-grid{grid-template-columns:1fr}.project-code-proof>div{display:block}.project-code-proof span{display:block;margin-top:6px}.project-hero-action{flex:1 1 100%}}
.project-layout>*{min-width:0}.project-code-proof pre{max-width:100%;white-space:pre;box-sizing:border-box}
.project-gallery img.screenshot-contain{object-fit:contain;background:#041117}
