/* Shared styles without runtime CSS or external font dependencies. */
:root {
  --ink:#172734;
  --muted:#626e76;
  --paper:#f9faf7;
  --navy:#101e2b;
  --cyan:#a3eddf;
  --line:#dce1dc;
  font-family:Arial,Helvetica,sans-serif;
  color:var(--ink);
  background:var(--paper);
  font-synthesis:none
}

* {
  box-sizing:border-box
}

html {
  scroll-behavior:smooth;
  scroll-padding-top:110px
}

body {
  margin:0
}

body.dialog-open {
  overflow:hidden
}

a {
  color:inherit;
  text-decoration:none
}

button,input {
  font:inherit
}

button,a,input {
  -webkit-tap-highlight-color:transparent
}

button {
  cursor:pointer;
  color:inherit
}

img {
  max-width:100%;
  display:block
}

::selection {
  background:var(--cyan);
  color:var(--navy)
}

:focus-visible {
  outline:3px solid #238b80;
  outline-offset:5px
}

[hidden] {
  display:none!important
}

.container {
  width:min(1200px,calc(100% - 96px));
  margin-inline:auto
}

.sr-only {
  position:absolute;
  width:1px;
  height:1px;
  margin:-1px;
  overflow:hidden;
  clip-path:inset(50%);
  white-space:nowrap
}

.skip-link {
  position:fixed;
  top:-80px;
  left:20px;
  padding:14px 20px;
  background:var(--cyan);
  color:var(--navy);
  z-index:100
}

.skip-link:focus {
  top:12px
}

.site-header {
  position:sticky;
  top:0;
  z-index:30;
  background:rgba(16,30,43,.97);
  border-bottom:1px solid #ffffff14;
  color:#fff;
  backdrop-filter:blur(14px)
}

.nav {
  min-height:88px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:28px
}

.brand {
  display:inline-flex;
  align-items:center;
  gap:10px;
  font-size:29px;
  font-weight:800;
  letter-spacing:-1.4px;
  flex-shrink:0
}

.brand img {
  object-fit:contain;
  width:35px;
  height:35px
}

.brand-light {
  font-weight:400
}

.brand-dot {
  color:#42bcb1
}

.nav-links {
  display:flex;
  align-items:center;
  gap:31px
}

.nav-links a {
  font-size:13px;
  color:#b8c3cc;
  padding-block:12px;
  position:relative
}

.nav-links a:hover,.nav-links a[aria-current] {
  color:#fff
}

.nav-links a[aria-current]::after {
  content:'';
  width:4px;
  height:4px;
  background:var(--cyan);
  border-radius:50%;
  position:absolute;
  bottom:0;
  left:50%
}

.button {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:30px;
  min-height:53px;
  padding:15px 23px;
  border:1px solid transparent;
  border-radius:7px;
  background:var(--cyan);
  color:var(--navy);
  font-size:14px;
  font-weight:700;
  transition:background .2s,transform .2s;
  white-space:nowrap
}

.button:hover {
  background:#c3f6ec;
  transform:translateY(-2px)
}

.button span {
  font-size:21px;
  font-weight:400
}

.button-small {
  min-height:43px;
  padding:9px 17px;
  font-size:12px;
  gap:24px
}

.menu-toggle {
  display:none
}

.dark-section {
  background:var(--navy);
  color:#fff
}

.hero {
  overflow:hidden;
  background:radial-gradient(ellipse at 90% 40%,#173d442e,transparent 50%),var(--navy)
}

.hero-grid {
  display:grid;
  grid-template-columns:1.08fr 1fr;
  align-items:center;
  gap:58px;
  padding-top:69px;
  padding-bottom:69px
}

.eyebrow {
  font-size:10px;
  font-weight:700;
  letter-spacing:1.9px;
  line-height:1.7;
  margin:0 0 26px;
  color:#b8d0d3;
  display:flex;
  align-items:center;
  gap:9px
}

.status-dot {
  width:6px;
  height:6px;
  border-radius:50%;
  background:var(--cyan);
  box-shadow:0 0 0 4px #a3eddf12;
  flex-shrink:0
}

h1,h2,h3,p {
  margin-top:0
}

h1 {
  font-size:clamp(44px,4.7vw,66px);
  font-weight:500;
  letter-spacing:-3.2px;
  line-height:1.1;
  margin-bottom:25px
}

.accent {
  color:var(--cyan)
}

.hero-description {
  max-width:460px;
  font-size:14px;
  line-height:1.9;
  color:#afbec9;
  margin-bottom:29px
}

.hero-actions {
  display:flex;
  align-items:center;
  gap:28px
}

.text-link {
  font-size:13px;
  font-weight:700;
  display:inline-flex;
  align-items:center;
  gap:25px;
  padding-block:10px
}

.text-link span {
  font-size:21px;
  font-weight:400;
  transition:transform .2s
}

.text-link:hover span {
  transform:translate(3px,-2px)
}

.light-link {
  color:#e2e8eb
}

.hero-note {
  display:flex;
  gap:12px;
  align-items:center;
  margin-top:35px
}

.note-icon {
  font-size:33px;
  color:var(--cyan)
}

.hero-note p {
  font-size:10px;
  line-height:1.8;
  color:#9bafbd;
  margin:0
}

.hero-note strong {
  font-weight:400;
  color:#c9d3dc
}

.hero-visual {
  align-self:center;
  min-width:0;
  position:relative
}

.visual-topline {
  display:flex;
  justify-content:space-between;
  align-items:center;
  font:9px/1.5 monospace;
  letter-spacing:1.6px;
  color:#9aaeb9;
  padding-bottom:14px
}

.visual-topline>span:last-child {
  font-size:20px
}

.portrait-stage {
  position:relative;
  isolation:isolate;
  overflow:hidden;
  aspect-ratio:1.04;
  background:radial-gradient(ellipse at 50% 70%,#367474 0,#204950 39%,#19313f 72%);
  border:1px solid #ffffff1a;
  border-radius:130px 16px 16px 16px
}

.portrait-stage::after {
  content:'';
  position:absolute;
  inset:0;
  background:linear-gradient(transparent 70%,#0a1f2b99);
  pointer-events:none;
  z-index:3
}

.portrait-orbit {
  width:77%;
  aspect-ratio:1;
  border:1px solid #b1e1d633;
  border-radius:50%;
  position:absolute;
  top:10%;
  left:12%
}

.portrait-orbit::after {
  content:'';
  position:absolute;
  inset:26px;
  border:1px dashed #b1e1d633;
  border-radius:50%
}

.portrait {
  position:absolute;
  width:118%;
  max-width:none;
  height:118%;
  object-fit:contain;
  bottom:0;
  left:-9%;
  z-index:1
}

.portrait-code {
  filter:saturate(.3)
}

.portrait-design {
  position:absolute;
  inset:0;
  clip-path:inset(0 calc(100% - var(--split)) 0 0);
  z-index:2
}

.split-line {
  position:absolute;
  top:13%;
  bottom:0;
  left:clamp(2px,var(--split),calc(100% - 2px));
  width:1px;
  background:#c8ffed7a;
  z-index:4;
  pointer-events:none
}

.split-line span {
  position:absolute;
  top:45%;
  left:-15px;
  width:31px;
  height:31px;
  display:grid;
  place-items:center;
  border:1px solid #b4ecdf7a;
  background:#16323bb8;
  backdrop-filter:blur(5px);
  border-radius:50%;
  color:#fff
}

.stage-symbol {
  position:absolute;
  right:24px;
  top:46px;
  font:36px monospace;
  color:#c1e7dd33;
  transform:rotate(7deg)
}

.stage-label {
  position:absolute;
  bottom:21px;
  font:9px monospace;
  letter-spacing:2px;
  z-index:5;
  color:#d2ebe6
}

.label-design {
  left:22px
}

.label-code {
  right:22px
}

.code-note {
  position:absolute;
  right:15px;
  bottom:70px;
  z-index:5;
  background:#0c1b27e8;
  backdrop-filter:blur(12px);
  border:1px solid #a6c5c433;
  border-radius:8px;
  padding:13px 18px;
  box-shadow:0 14px 25px #08141c33;
  transform:rotate(-4deg);
  font-size:10px;
  line-height:1.7
}

.code-note-dots {
  font-size:7px;
  color:#56737e;
  letter-spacing:2px;
  display:block;
  margin-bottom:9px
}

.code-note code {
  color:#a0b8c6
}

.code-note code>span {
  color:#b4a7e0
}

.code-note em {
  font-style:normal;
  color:var(--cyan)
}

.visual-bottomline {
  display:flex;
  align-items:center;
  gap:14px;
  margin-top:19px;
  font-size:9px;
  color:#a7b9c3
}

.visual-bottomline label {
  white-space:nowrap
}

.visual-bottomline label span {
  margin:0 5px;
  color:var(--cyan)
}

.visual-bottomline input {
  width:100%;
  min-width:40px;
  height:24px;
  accent-color:var(--cyan);
  cursor:ew-resize
}

.slider-hint {
  white-space:nowrap;
  font-size:8px;
  color:#9cb0bc
}

.hero-bottom {
  border-top:1px solid #ffffff1a;
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding-top:23px;
  padding-bottom:24px;
  color:#9bafbd;
  font:9px/1.6 monospace;
  letter-spacing:1px
}

.hero-bottom a {
  color:#c7d5dd;
  font:11px Arial,sans-serif;
  letter-spacing:0
}

.hero-bottom a span {
  margin-left:15px;
  color:var(--cyan)
}

.section {
  padding-top:94px;
  padding-bottom:94px
}

.section-heading {
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:50px;
  margin-bottom:41px
}

.muted {
  color:#63796e
}

.section-heading .eyebrow {
  margin-bottom:18px
}

h2 {
  font-size:43px;
  line-height:1.13;
  font-weight:500;
  letter-spacing:-1.8px;
  margin-bottom:0
}

.serif {
  font-family:Georgia,'Times New Roman',serif;
  font-weight:400;
  font-style:italic;
  color:#577968
}

.section-heading>p {
  font-size:13px;
  line-height:1.9;
  color:var(--muted);
  max-width:345px;
  margin-bottom:4px
}

.services-grid {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  border:1px solid var(--line);
  border-radius:16px;
  overflow:hidden;
  background:#fff
}

.service-card {
  padding:32px;
  transition:background .2s
}

.service-card:hover {
  background:#f1f7f1
}

.service-card+.service-card {
  border-left:1px solid var(--line)
}

.service-top {
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom:30px
}

.service-icon {
  height:44px;
  min-width:44px;
  display:grid;
  place-items:center;
  border-radius:10px;
  background:#eef3ec;
  font:20px monospace;
  color:#527160
}

.design-icon {
  font-size:30px
}

.item-number {
  font:10px monospace;
  color:#68786e
}

.service-card h3 {
  font-size:20px;
  letter-spacing:-.5px;
  margin-bottom:13px
}

.service-card p {
  font-size:13px;
  line-height:1.9;
  color:var(--muted);
  margin-bottom:24px
}

.tag-list {
  display:flex;
  flex-wrap:wrap;
  gap:6px
}

.tag-list span {
  font-size:10px;
  line-height:1.5;
  border:1px solid var(--line);
  padding:5px 9px;
  border-radius:5px;
  color:#626e66
}

.service-link {
  display:flex;
  justify-content:space-between;
  align-items:center;
  font-size:11px;
  font-weight:700;
  padding-top:24px;
  border-top:1px solid var(--line);
  margin-top:30px;
  gap:10px
}

.service-link span {
  font-size:20px;
  font-weight:400
}

.work-section {
  background:#eff2ec
}

.project-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:42px 30px
}

.project-card {
  min-width:0
}

.project-image {
  display:flex;
  align-items:center;
  justify-content:center;
  aspect-ratio:1.62;
  border-radius:12px;
  overflow:hidden;
  position:relative;
  padding:36px 28px
}

.project-blue {
  background:#d6e3ee
}

.project-peach {
  background:#ecdeda
}

.project-green {
  background:#dce8da
}

.browser-frame {
  width:100%;
  border-radius:7px;
  overflow:hidden;
  box-shadow:0 14px 24px #17273424;
  transform:rotate(-3deg);
  transition:transform .35s;
  background:#fff
}

.project-peach .browser-frame {
  transform:rotate(3deg)
}

.project-image:hover .browser-frame {
  transform:rotate(0) scale(1.035)
}

.browser-bar {
  height:24px;
  background:#fff;
  display:flex;
  align-items:center;
  gap:4px;
  padding:0 10px
}

.browser-bar i {
  width:4px;
  height:4px;
  border-radius:50%;
  background:#d7dbdf
}

.browser-bar span {
  font-size:6px;
  color:#6d7780;
  margin-inline:auto;
  letter-spacing:.2px
}

.browser-frame img {
  width:100%;
  height:auto;
  aspect-ratio:1.79;
  object-fit:cover;
  object-position:top
}

.project-open {
  position:absolute;
  right:14px;
  bottom:14px;
  width:35px;
  height:35px;
  background:#fff;
  border:1px solid #ffffff70;
  border-radius:50%;
  display:grid;
  place-items:center;
  font-size:21px
}

.project-meta {
  display:flex;
  justify-content:space-between;
  gap:10px;
  font:9px/1.7 monospace;
  letter-spacing:.6px;
  color:#68786e;
  margin-top:23px;
  margin-bottom:11px
}

.project-card h3,.project-card h2 {
  font-size:23px;
  letter-spacing:-.65px;
  font-weight:500;
  margin-bottom:11px
}

.project-card h3 a,.project-card h2 a {
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:center
}

.project-card p {
  font-size:12px;
  line-height:1.85;
  color:var(--muted);
  max-width:460px;
  margin-bottom:0
}

.project-card .tag-list {
  margin-top:18px
}

.process-grid {
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:25px;
  margin-top:52px
}

.process-grid article {
  border-top:1px solid #c7d2c8;
  padding-top:23px
}

.process-grid article>span {
  font:9px monospace;
  letter-spacing:1px;
  color:#5d7865
}

.process-grid h3 {
  font-size:17px;
  font-weight:600;
  letter-spacing:-.3px;
  margin:22px 0 12px
}

.process-grid p {
  font-size:12px;
  line-height:1.9;
  color:var(--muted);
  margin:0
}

.contact-section {
  padding-bottom:30px
}

.contact-banner {
  position:relative;
  isolation:isolate;
  overflow:hidden;
  border-radius:16px;
  background:var(--navy);
  color:#fff;
  padding:51px 58px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:35px
}

.contact-banner>div,.contact-banner>.button {
  position:relative;
  z-index:1
}

.contact-banner .eyebrow {
  font-size:9px;
  margin-bottom:21px
}

.contact-banner h2 {
  font-size:45px
}

.contact-banner .serif {
  color:var(--cyan)
}

.contact-banner p:last-child {
  color:#aabcc8;
  font-size:12px;
  margin-top:24px;
  margin-bottom:0
}

.contact-decoration {
  position:absolute;
  right:155px;
  top:-104px;
  width:380px;
  height:380px;
  color:var(--cyan);
  opacity:.04;
  z-index:0;
  transform:rotate(10deg);
  pointer-events:none
}

.icon-arrow,.icon-spark {
  display:inline-block;
  width:1em;
  height:1em;
  vertical-align:-.12em;
  flex-shrink:0
}

.contact-decoration .icon-spark {
  display:block;
  width:100%;
  height:100%
}

.site-footer {
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding-top:30px;
  padding-bottom:35px;
  gap:25px
}

.site-footer .brand {
  font-size:23px
}

.site-footer .brand img {
  width:28px;
  height:28px
}

.site-footer p {
  margin:0;
  font-size:10px;
  color:var(--muted)
}

.footer-links {
  display:flex;
  gap:24px;
  font-size:10px
}

.footer-links a:hover {
  text-decoration:underline
}

.contact-dialog {
  padding:42px;
  width:min(440px,calc(100% - 32px));
  border:1px solid #dce1dc;
  border-radius:18px;
  background:var(--paper);
  color:var(--ink);
  max-height:calc(100dvh - 40px);
  overflow:auto;
  box-shadow:0 30px 100px #0004
}

.contact-dialog::backdrop {
  background:#071724b3;
  backdrop-filter:blur(7px)
}

.dialog-close {
  position:absolute;
  right:15px;
  top:13px;
  display:grid;
  place-items:center;
  width:36px;
  height:36px;
  border:1px solid var(--line);
  border-radius:50%;
  background:transparent;
  font-size:24px
}

.dialog-close:hover {
  background:#e9efe8
}

.contact-dialog .eyebrow {
  font-size:8px;
  margin-top:18px;
  margin-bottom:20px
}

.contact-dialog h2 {
  font-size:43px
}

.contact-dialog>p:not(.eyebrow) {
  font-size:12px;
  line-height:1.8;
  color:var(--muted);
  margin-top:18px
}

.contact-options {
  display:grid;
  gap:10px;
  margin-top:24px
}

.contact-options>a {
  display:flex;
  align-items:center;
  gap:13px;
  border:1px solid var(--line);
  padding:15px 12px;
  border-radius:10px;
  background:#fff;
  transition:background .2s
}

.contact-options>a:hover {
  background:#edf6ed
}

.contact-symbol {
  width:32px;
  height:32px;
  background:#eaf3ed;
  border-radius:8px;
  display:grid;
  place-items:center;
  flex-shrink:0;
  color:#3f7161
}

.contact-options strong {
  display:block;
  font-size:13px;
  margin-bottom:5px
}

.contact-options small {
  display:block;
  font-size:10px;
  color:var(--muted);
  overflow-wrap:anywhere
}

.contact-options>a>span:last-child {
  margin-left:auto
}

.contact-dialog .dialog-note {
  text-align:center;
  font-size:10px!important;
  margin-bottom:0
}

.portfolio-hero {
  padding-top:35px
}

.back-link {
  font-size:11px;
  color:#a0b5c3;
  display:inline-block;
  margin-bottom:51px
}

.back-link:hover {
  color:var(--cyan)
}

.portfolio-hero-grid {
  display:grid;
  grid-template-columns:1.7fr 1fr;
  gap:70px;
  align-items:end;
  padding-bottom:52px
}

.portfolio-hero h1 {
  font-size:55px;
  margin:0;
  letter-spacing:-2.5px
}

.portfolio-hero-grid>p {
  font-size:13px;
  line-height:1.9;
  color:#acbeca;
  max-width:310px;
  margin-bottom:5px
}

.portfolio-hero-bottom {
  display:flex;
  justify-content:space-between;
  gap:15px;
  border-top:1px solid #ffffff1a;
  padding:24px 0;
  font:9px monospace;
  letter-spacing:1px;
  color:#9cafb9
}

.portfolio-section {
  padding-top:45px
}

.filter-bar {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:20px;
  margin-bottom:36px;
  padding-bottom:22px;
  border-bottom:1px solid var(--line)
}

.filter-buttons {
  display:flex;
  flex-wrap:wrap;
  gap:8px
}

.filter-button {
  min-height:40px;
  border:1px solid var(--line);
  border-radius:6px;
  padding:10px 15px;
  background:transparent;
  font-size:11px;
  transition:background .2s
}

.filter-button:hover {
  background:#e8eee5
}

.filter-button.active {
  background:var(--navy);
  border-color:var(--navy);
  color:#fff
}

.filter-button span {
  font:9px monospace;
  color:#b6cfcd;
  margin-left:8px
}

.filter-bar>p {
  font-size:10px;
  color:var(--muted);
  margin:0;
  white-space:nowrap
}

.portfolio-projects {
  row-gap:55px
}

@media(min-width:1500px) {
  .hero-grid {
    padding-top:85px;
    padding-bottom:85px
  }
}

@media(max-width:1100px) {
  .container {
    width:calc(100% - 64px)
  }
  .hero-grid {
    gap:30px
  }
  .nav-links {
    gap:23px
  }
  h1 {
    font-size:52px
  }
  .hero-actions {
    gap:18px
  }
  .hero-actions .button {
    gap:20px
  }
  .slider-hint {
    display:none
  }
  .service-card {
    padding:26px
  }
  .portfolio-hero h1 {
    font-size:46px
  }
  .portfolio-hero-grid {
    gap:35px
  }
  .contact-banner {
    padding:45px
  }
  .project-image {
    padding:28px 23px
  }
}

@media(max-width:800px) {
  .container {
    width:calc(100% - 40px)
  }
  .nav {
    min-height:75px;
    gap:15px;
    flex-wrap:wrap;
    padding-block:14px
  }
  .brand {
    font-size:26px
  }
  .brand img {
    width:31px;
    height:31px
  }
  .nav-contact {
    margin-left:auto
  }
  .menu-toggle {
    order:3;
    display:none;
    align-items:center;
    justify-content:center;
    flex-direction:column;
    gap:6px;
    background:transparent;
    border:1px solid #ffffff30;
    border-radius:6px;
    min-width:42px;
    min-height:42px;
    padding:10px
  }
  .menu-toggle span {
    width:18px;
    height:1px;
    background:#fff;
    transition:transform .2s
  }
  .menu-toggle[aria-expanded=true] span:first-child {
    transform:translateY(3.5px) rotate(45deg)
  }
  .menu-toggle[aria-expanded=true] span:last-child {
    transform:translateY(-3.5px) rotate(-45deg)
  }
  .nav-links {
    order:4;
    flex-basis:100%;
    justify-content:center;
    gap:23px
  }
  .has-menu .menu-toggle {
    display:flex
  }
  .has-menu .nav-links {
    display:none
  }
  .has-menu .nav-links.is-open {
    display:flex;
    border-top:1px solid #ffffff1a;
    padding-top:10px
  }
  .hero-grid {
    grid-template-columns:1fr 1fr;
    gap:22px;
    padding-block:50px
  }
  h1 {
    font-size:42px;
    letter-spacing:-2px
  }
  .hero .eyebrow {
    font-size:8px;
    letter-spacing:1.3px
  }
  .hero-description {
    font-size:12px;
    line-height:1.85
  }
  .hero-actions {
    align-items:flex-start;
    flex-direction:column;
    gap:10px
  }
  .hero-note {
    margin-top:21px
  }
  .portrait-stage {
    aspect-ratio:.78;
    border-top-left-radius:80px
  }
  .portrait {
    width:148%;
    height:110%;
    left:-24%;
    object-fit:cover
  }
  .code-note {
    font-size:8px;
    padding:10px;
    right:8px;
    bottom:56px
  }
  .stage-label {
    font-size:7px;
    letter-spacing:1px
  }
  .label-design {
    left:12px
  }
  .label-code {
    right:12px
  }
  .visual-topline {
    font-size:7px;
    letter-spacing:1px
  }
  .visual-bottomline {
    gap:10px
  }
  .section {
    padding-block:67px
  }
  h2 {
    font-size:36px
  }
  .section-heading {
    gap:25px
  }
  .section-heading>p {
    max-width:270px;
    font-size:12px
  }
  .services-grid {
    grid-template-columns:1fr
  }
  .service-card+.service-card {
    border-left:0;
    border-top:1px solid var(--line)
  }
  .service-card {
    padding:28px
  }
  .service-top {
    margin-bottom:20px
  }
  .service-card p {
    max-width:500px;
    margin-bottom:18px
  }
  .service-link {
    margin-top:23px;
    padding-top:17px
  }
  .project-grid {
    gap:35px 22px
  }
  .project-image {
    padding:22px 17px
  }
  .project-card h3,.project-card h2 {
    font-size:20px
  }
  .project-meta {
    font-size:7px;
    letter-spacing:.3px
  }
  .process-grid {
    grid-template-columns:repeat(2,1fr);
    gap:30px
  }
  .contact-banner {
    padding:36px;
    align-items:flex-start;
    flex-direction:column;
    gap:28px
  }
  .contact-banner h2 {
    font-size:40px
  }
  .contact-banner p:last-child {
    margin-top:19px
  }
  .contact-decoration {
    right:-20px
  }
  .site-footer {
    flex-wrap:wrap
  }
  .site-footer p {
    order:3;
    flex-basis:100%;
    padding-top:10px;
    border-top:1px solid var(--line)
  }
  .portfolio-hero-grid {
    grid-template-columns:1fr;
    gap:24px;
    padding-bottom:37px
  }
  .portfolio-hero-grid>p {
    max-width:460px
  }
  .portfolio-hero h1 {
    font-size:49px
  }
  .back-link {
    margin-bottom:35px
  }
  .filter-bar {
    align-items:flex-start;
    flex-direction:column;
    gap:17px
  }
  .portfolio-section {
    padding-top:30px
  }
}

@media(max-width:560px) {
  .hero-grid {
    grid-template-columns:1fr;
    gap:39px;
    padding-top:40px;
    padding-bottom:35px
  }
  .hero h1 {
    font-size:clamp(39px,9.9vw,54px);
    line-height:1.08
  }
  .hero .eyebrow {
    font-size:8px;
    letter-spacing:1.3px;
    margin-bottom:23px
  }
  .hero-description {
    font-size:13px;
    max-width:360px;
    margin-bottom:24px
  }
  .hero-actions {
    flex-direction:row;
    align-items:center;
    gap:20px
  }
  .hero-actions .button {
    font-size:12px;
    padding:13px 17px;
    min-height:48px;
    gap:20px
  }
  .hero-actions .text-link {
    font-size:11px;
    gap:11px
  }
  .hero-note {
    margin-top:25px
  }
  .hero-visual {
    width:100%;
    max-width:400px;
    justify-self:center
  }
  .portrait-stage {
    aspect-ratio:1.12;
    border-top-left-radius:95px
  }
  .portrait {
    width:115%;
    height:115%;
    left:-7.5%;
    object-fit:contain
  }
  .visual-topline {
    font-size:8px
  }
  .code-note {
    font-size:9px;
    right:15px;
    bottom:59px;
    padding:12px
  }
  .stage-label {
    font-size:8px
  }
  .label-design {
    left:20px
  }
  .label-code {
    right:20px
  }
  .slider-hint {
    display:block;
    font-size:7px
  }
  .visual-bottomline {
    font-size:8px
  }
  .hero-bottom {
    font-size:7px;
    letter-spacing:.5px;
    gap:25px;
    padding-block:20px
  }
  .hero-bottom>span {
    max-width:195px
  }
  .hero-bottom>a {
    font-size:10px;
    white-space:nowrap
  }
  .hero-bottom a span {
    margin-left:5px
  }
  .nav-contact {
    font-size:10px;
    padding:8px 12px;
    min-height:39px;
    gap:12px
  }
  .nav .brand {
    font-size:25px;
    gap:7px
  }
  .nav .brand img {
    width:28px;
    height:28px
  }
  .menu-toggle {
    min-width:39px;
    min-height:39px
  }
  .nav {
    gap:10px
  }
  .nav-links {
    gap:23px;
    justify-content:space-between
  }
  .nav-links a {
    font-size:11px
  }
  .section {
    padding-block:54px
  }
  .section-heading {
    align-items:flex-start;
    flex-direction:column;
    gap:21px;
    margin-bottom:30px
  }
  .section-heading>p {
    max-width:none;
    margin:0
  }
  .section-heading .eyebrow {
    font-size:9px;
    margin-bottom:15px
  }
  h2 {
    font-size:34px;
    letter-spacing:-1.3px
  }
  .service-card {
    padding:27px
  }
  .project-grid {
    grid-template-columns:1fr;
    gap:34px
  }
  .project-image {
    padding:28px 24px
  }
  .project-meta {
    font-size:8px;
    margin-top:20px
  }
  .project-card h3,.project-card h2 {
    font-size:23px
  }
  .project-card p {
    font-size:12px
  }
  .process-grid {
    gap:29px 20px;
    margin-top:35px
  }
  .process-grid h3 {
    font-size:15px;
    line-height:1.4;
    margin-top:19px
  }
  .process-grid p {
    font-size:11px
  }
  .process-grid article>span {
    font-size:8px;
    letter-spacing:.5px
  }
  .contact-banner {
    padding:31px 25px
  }
  .contact-banner h2 {
    font-size:34px
  }
  .contact-banner .eyebrow {
    font-size:8px;
    letter-spacing:1.4px
  }
  .contact-banner p:last-child {
    font-size:11px;
    line-height:1.8
  }
  .contact-banner .button {
    font-size:12px;
    min-height:48px;
    width:100%;
    justify-content:space-between
  }
  .contact-decoration {
    width:220px;
    height:220px;
    top:-60px;
    right:-60px
  }
  .site-footer {
    flex-direction:column;
    align-items:center;
    text-align:center;
    padding-top:20px;
    padding-bottom:28px;
    gap:16px
  }
  .footer-links {
    justify-content:center;
    flex-wrap:wrap;
    gap:8px 24px;
    font-size:12px
  }
  .footer-links a {
    display:inline-flex;
    align-items:center;
    gap:6px;
    min-height:44px
  }
  .site-footer p {
    flex-basis:auto;
    width:100%;
    font-size:10px;
    line-height:1.7;
    padding-top:18px
  }
  .contact-dialog {
    padding:32px 24px
  }
  .contact-dialog h2 {
    font-size:37px
  }
  .portfolio-hero {
    padding-top:25px
  }
  .portfolio-hero h1 {
    font-size:clamp(35px,8.8vw,48px);
    letter-spacing:-1.6px
  }
  .portfolio-hero .eyebrow {
    font-size:8px;
    letter-spacing:1.2px;
    margin-bottom:20px
  }
  .portfolio-hero-bottom {
    font-size:7px;
    letter-spacing:.5px
  }
  .filter-buttons {
    gap:7px
  }
  .filter-button {
    font-size:10px;
    padding:10px 11px
  }
  .filter-bar {
    margin-bottom:25px
  }
  .portfolio-section {
    padding-top:25px
  }
  .portfolio-projects {
    gap:42px
  }
  .back-link {
    font-size:10px
  }
}

@media(prefers-reduced-motion:reduce) {
  html {
    scroll-behavior:auto
  }
  *,*::before,*::after {
    animation:none!important;
    transition:none!important
  }
}

