:root{--paper:#f6f5f0;--ink:#161715;--blue:#0040f7;--muted:#62645f;--line:#d5d6cf;--spark:#0040f7;--halo:#0040f720}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:36px}body{margin:0;background:var(--paper);color:var(--ink);font:17px/1.65 Arial,Helvetica,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:3px solid var(--blue);outline-offset:7px}h1,h2,h3,h4,p,figure{margin:0}h1,h2,h3{font-weight:400}em{font-family:Georgia,'Times New Roman',serif;font-weight:400;color:var(--blue)}p{color:var(--muted)}.skip{position:fixed;top:-90px;left:16px;padding:10px 18px;background:var(--paper);z-index:50}.skip:focus{top:12px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
.site-header{max-width:1160px;margin:auto;padding:28px 24px 24px;display:flex;align-items:center;gap:32px;border-bottom:1px solid var(--line)}.brand{display:block;margin-right:auto}.brand svg{width:166px;height:auto;display:block}.site-header>a:not(.brand){font-size:13px}.contact-link{padding:10px 19px;border:1px solid var(--line);border-radius:4px;color:var(--blue);background:var(--paper)}.eyebrow{font-size:10px;line-height:1.5;letter-spacing:.12em;font-weight:700;color:var(--muted)}
.index-hero{max-width:1160px;margin:auto;padding:82px 24px 60px}.index-hero h1{font-size:clamp(56px,6.8vw,88px);line-height:.99;letter-spacing:-.065em;font-weight:500;margin:26px 0 30px}.index-hero h1 em{display:inline-block;margin-top:6px}.lead{font-size:20px;line-height:1.6;max-width:690px}.filter-wrap{max-width:1160px;margin:auto;padding:0 24px 28px;display:flex;align-items:center;justify-content:space-between;gap:30px}.filter-wrap>.eyebrow{color:var(--blue)}.filter-bar{display:flex;gap:10px;flex-wrap:wrap}.filter-bar button{background:transparent;border:1px solid var(--line);border-radius:4px;padding:10px 16px;font-size:12px;min-height:42px}.filter-bar button[aria-pressed=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.project-grid{display:block}.project-card{background:var(--paper)}.project-card[hidden]{display:none}.project-inner{max-width:1112px;margin:auto;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:70px;align-items:start;padding:84px 0;border-top:1px solid var(--line)}.project-card.dark+.project-card:not(.dark) .project-inner{border-top:0}.project-card.dark{--paper:#161715;--ink:#f6f5f0;--muted:#c7c9c1;--line:#484a43;--blue:#b7caff;--spark:#91adff;--halo:#91adff28}.project-card.dark{color:var(--ink)}.project-card.reversed .project-media{grid-column:2;grid-row:1}.project-card.reversed .project-copy{grid-column:1;grid-row:1}.project-copy h2{font-size:42px;line-height:1.07;letter-spacing:-.045em}.project-copy>.text-link{margin:12px 0 24px}.project-copy h3{font-size:24px;line-height:1.3;letter-spacing:-.025em;margin-bottom:24px;max-width:470px}.project-copy p{font-size:16px;line-height:1.75;margin-bottom:20px;max-width:520px}.project-status{display:block;font-size:10px;letter-spacing:.07em;color:var(--muted);margin-top:28px}.text-link{display:inline-block;color:var(--blue);font-size:12px;line-height:1.5;border-bottom:1px solid color-mix(in srgb,var(--blue) 25%,transparent);padding-bottom:3px}
.screen-open{position:relative;display:block;width:100%;padding:0;border:1px solid #8d948e80;border-radius:6px;background:transparent;cursor:zoom-in;isolation:isolate}.screen-open img{display:block;width:100%;height:auto;border-radius:5px}.screen-open>span:not([data-edge-layer]){position:absolute;right:12px;bottom:12px;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#f6f5f0ec;color:#161715;font-size:19px;z-index:2}.project-media{min-width:0}.project-media.phone{display:flex;justify-content:center}.project-media.phone .screen-open,.project-visual.phone .screen-open{width:254px;max-width:100%;padding:8px;background:#151816;border:2px solid #7c817c;border-radius:40px;box-shadow:inset 0 0 0 1px #d3d7d388,0 8px 24px #0002}.project-media.phone .screen-open img,.project-visual.phone .screen-open img{border-radius:29px}.project-media.sidebar .screen-open,.project-visual.sidebar .screen-open{max-width:264px;margin:auto}.project-card.invoiceflow .project-inner{grid-template-columns:minmax(0,.68fr) minmax(0,1.32fr);gap:60px}.project-card.workbite .project-inner,.project-card.briefmentor .project-inner{grid-template-columns:320px minmax(0,1fr)}.project-card.italy-vault .project-inner{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr)}
.more-work{max-width:1112px;margin:auto;display:grid;grid-template-columns:1fr 1fr;gap:24px 70px;padding:80px 0}.more-work>.eyebrow{grid-column:1/-1;color:var(--blue)}.more-work h2{font-size:45px;line-height:1.05;letter-spacing:-.045em}.more-work>p:not(.eyebrow){font-size:17px;max-width:450px}.more-work>.button{grid-column:2}.button{display:inline-flex;align-items:center;justify-content:center;gap:15px;min-height:49px;width:fit-content;padding:12px 23px;background:var(--blue);color:#fff;border:1px solid transparent;border-radius:4px;font-size:13px}.contact-panel{background:#0040f7;color:#fff;padding:65px max(24px,calc((100% - 1112px)/2))}.contact-panel>.eyebrow{color:#c3d0ff;margin-bottom:28px}.contact-panel>div{display:flex;justify-content:space-between;align-items:center;gap:35px}.contact-panel h2{font-size:52px;line-height:1.04;letter-spacing:-.045em}.contact-panel h2 em{color:#c6d4ff}.contact-panel>p:last-child{color:#dbe4ff;font-size:14px;margin-top:24px}.button.light{background:#f6f5f0;color:#0040f7;--spark:#e1e9ff;--halo:#f6f5f04a}.contact-panel a:focus-visible{outline-color:#fff}footer{max-width:1160px;margin:auto;padding:28px 24px;display:flex;justify-content:space-between;align-items:center;gap:24px;font-size:11px;color:var(--muted)}footer>a:last-child{color:var(--blue)}
/* Detail pages use the same two-column editorial grid and quieter section rules. */
.case-dark{--paper:#161715;--ink:#f6f5f0;--muted:#c7c9c1;--line:#484a43;--blue:#b7caff;--spark:#91adff;--halo:#91adff28}.case-dark .brand svg{filter:brightness(0) invert(1)}.case-hero{max-width:1160px;margin:auto;padding:45px 24px 56px}.back-link{font-size:12px;color:var(--muted);display:inline-block;margin-bottom:38px}.case-hero>.eyebrow{color:var(--blue);margin-bottom:20px}.case-hero h1{font-size:clamp(54px,6.5vw,84px);line-height:1;letter-spacing:-.06em;margin-bottom:28px}.case-headline{font-size:34px;line-height:1.2;letter-spacing:-.035em;max-width:760px;color:var(--ink);margin-bottom:30px}.case-intro{display:grid;grid-template-columns:1.6fr 1fr;gap:70px;align-items:start}.case-intro>p{font-size:18px;line-height:1.7}.case-intro>div{border-left:1px solid var(--line);padding-left:30px;display:flex;flex-direction:column;align-items:start;gap:14px}.status{font-size:12px;color:var(--muted)}.project-visual{max-width:1112px;margin:0 auto;padding:0}.project-visual.phone .screen-open{margin:auto}.project-visual.sidebar .screen-open{max-width:340px}.story-grid,.control-grid{max-width:1112px;margin:75px auto;display:grid;grid-template-columns:1fr 1fr;gap:70px}.story-grid .eyebrow,.control-grid .eyebrow{color:var(--blue);margin-bottom:20px}.story-grid h2,.control-grid h2{font-size:32px;line-height:1.1;letter-spacing:-.04em;margin-bottom:24px}.story-grid p:not(.eyebrow),.control-grid p:not(.eyebrow){font-size:17px;line-height:1.75}.workflow-section{max-width:1112px;margin:auto;padding:0}.workflow-section>.eyebrow{margin-bottom:22px;color:var(--blue)}.workflow{list-style:none;padding:24px 0;margin:0;display:flex;gap:20px;justify-content:space-between;border-block:1px solid var(--line)}.workflow li{font-size:12px;display:flex;align-items:center;gap:18px}.workflow li>span{color:var(--blue);font-size:20px}.features{max-width:1112px;margin:75px auto}.features>.eyebrow{color:var(--blue);margin-bottom:22px}.features>h2{font-size:44px;line-height:1.05;letter-spacing:-.045em;margin-bottom:38px}.feature-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.feature-grid article{border:1px solid var(--line);border-radius:5px;padding:26px;background:var(--paper)}.feature-grid h3{font-size:24px;line-height:1.2;letter-spacing:-.03em;margin-bottom:13px}.feature-grid p{font-size:16px;line-height:1.7}.control-grid{padding:34px;border:1px solid var(--line);border-radius:5px}.next-project{max-width:1112px;margin:auto;display:flex;justify-content:space-between;align-items:center;gap:24px;border-bottom:1px solid var(--line);padding:35px 0}.next-project>span{font-size:10px;letter-spacing:.1em;color:var(--muted)}.next-project>a{font-size:31px;line-height:1.2;letter-spacing:-.035em}.next-project>a>span{color:var(--blue)}.system-links{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}.system-links a{border:1px solid var(--line);border-radius:4px;padding:9px 14px;font-size:12px}.system-detail{max-width:1112px;margin:auto;display:grid;grid-template-columns:1fr 1fr;gap:70px;padding:65px 0;border-top:1px solid var(--line)}.system-detail .eyebrow{color:var(--blue);margin-bottom:18px}.system-detail h2{font-size:37px;line-height:1.12;letter-spacing:-.04em;margin-bottom:24px}.system-intro{font-size:20px;line-height:1.6}.system-detail>div:last-child>p{font-size:17px;line-height:1.75}.tags{list-style:none;padding:0;margin:24px 0 0;display:flex;gap:9px;flex-wrap:wrap}.tags li{font-size:11px;line-height:1.5;padding:6px 11px;border:1px solid var(--line);border-radius:3px}
.image-dialog{border:0;padding:0;background:transparent;max-width:96vw;max-height:96dvh;overflow:visible}.image-dialog::backdrop{background:#0b100deb;backdrop-filter:blur(5px)}.image-dialog img{display:block;max-width:92vw;max-height:84dvh;width:auto;height:auto;border-radius:5px;object-fit:contain;cursor:zoom-out}.close-image{position:fixed;right:3vw;top:3vh;min-height:44px;min-width:95px;padding:9px 20px;border:1px solid #d2d9ff55;border-radius:4px;background:#171b22;color:#fff;z-index:30;--spark:#d4e0ff}
/* Rasterise a soft light texture once; rotate it behind a stationary edge mask.
   Only transform changes each frame. No animated gradient stops or custom properties. */
.glow{position:relative;isolation:isolate;--edge-radius:4px}
.glow::before,.glow::after{content:none}
.screen-open.glow{--edge-radius:6px}.screen-open.phone.glow{--edge-radius:40px}
.edge-light,.edge-aura{display:block;position:absolute;pointer-events:none;z-index:4;overflow:hidden;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude}
.edge-light{inset:-1px;padding:1px;border-radius:var(--edge-radius);opacity:.38}
.edge-aura{inset:-7px;padding:8px;border-radius:calc(var(--edge-radius) + 7px);opacity:.4;filter:blur(4px);z-index:-1}
.edge-light-spin{display:block;position:absolute;width:var(--light-size,300px);height:var(--light-size,300px);left:50%;top:50%;background:conic-gradient(#9caabd 0deg,#b4c5d5 60deg,#668fdc 120deg,#adc9da 180deg,#9caabd 240deg,#668fdc 300deg,#9caabd 360deg);transform:translate(-50%,-50%) rotate(0deg);animation:light-texture-turn 12s linear infinite;animation-play-state:paused}
.glow.is-inview .edge-light-spin{animation-play-state:running;will-change:transform}.glow:hover .edge-light,.glow:focus-visible .edge-light{opacity:.64}.glow:hover .edge-aura,.glow:focus-visible .edge-aura{opacity:.65}
.project-card.dark .edge-light,.case-dark .edge-light{opacity:.5}.project-card.dark .edge-aura,.case-dark .edge-aura{opacity:.65}
.feature-item .edge-light,.control-grid .edge-light{opacity:.22}.feature-item .edge-aura,.control-grid .edge-aura{opacity:.2}
.edge-aura{-webkit-mask:none;mask:none;overflow:visible;padding:0;filter:blur(5px)}
.edge-mask{position:absolute;inset:0;display:block;padding:8px;border-radius:inherit;overflow:hidden;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude}
.motion-paused .edge-light-spin{animation-play-state:paused!important;will-change:auto!important}
@keyframes light-texture-turn{to{transform:translate(-50%,-50%) rotate(360deg)}}
@media(max-width:1190px){.project-inner,.more-work,.project-visual,.story-grid,.control-grid,.workflow-section,.features,.next-project,.system-detail{margin-left:6%;margin-right:6%}.project-inner{gap:45px}.project-card.invoiceflow .project-inner{gap:40px}.project-card.workbite .project-inner,.project-card.briefmentor .project-inner{grid-template-columns:30% 1fr;gap:45px}}
@media(max-width:760px){body{font-size:16px}.site-header{margin:0 6%;padding:22px 0;gap:20px}.brand svg{width:140px}.site-header .work-link{display:none}.site-header>a:not(.brand){font-size:12px}.contact-link{padding:8px 14px}.index-hero{padding:55px 6% 42px}.index-hero h1{font-size:clamp(45px,10vw,64px);margin-top:22px}.lead{font-size:17px}.filter-wrap{padding:0 6% 30px;display:block}.filter-wrap>.eyebrow{margin-bottom:18px}.filter-bar{gap:9px}.filter-bar button{font-size:11px;padding:9px 11px}.project-inner,.project-card.invoiceflow .project-inner,.project-card.workbite .project-inner,.project-card.briefmentor .project-inner,.project-card.italy-vault .project-inner{grid-template-columns:1fr;gap:32px;padding:50px 0}.project-card .project-copy,.project-card.reversed .project-copy{grid-column:1;grid-row:1}.project-card .project-media,.project-card.reversed .project-media{grid-column:1;grid-row:2}.project-copy h2{font-size:37px}.project-copy>.text-link{margin:10px 0 20px}.project-copy h3{font-size:23px;margin-bottom:20px}.project-copy p{font-size:16px;line-height:1.7;margin-bottom:17px}.project-status{margin-top:20px}.project-media.phone .screen-open{width:230px}.project-media.sidebar .screen-open{max-width:240px}.more-work{grid-template-columns:1fr;padding:50px 0;gap:22px}.more-work h2{font-size:37px}.more-work>.button{grid-column:1}.contact-panel{padding:48px 6%}.contact-panel>div{display:block}.contact-panel h2{font-size:39px}.contact-panel .button{margin-top:28px}.contact-panel>p:last-child{font-size:13px}.case-hero{padding:30px 6% 36px}.back-link{margin-bottom:30px}.case-hero h1{font-size:48px;overflow-wrap:anywhere}.case-headline{font-size:28px}.case-intro{grid-template-columns:1fr;gap:22px}.case-intro>p{font-size:17px}.case-intro>div{padding:18px 0 0;border-left:0;border-top:1px solid var(--line)}.story-grid,.control-grid{grid-template-columns:1fr;gap:35px;margin-top:50px;margin-bottom:50px}.story-grid h2,.control-grid h2{font-size:29px}.story-grid p:not(.eyebrow),.control-grid p:not(.eyebrow){font-size:16px}.workflow{flex-direction:column;gap:13px}.workflow li{justify-content:space-between;font-size:14px}.workflow li>span{transform:rotate(90deg)}.features{margin-top:50px;margin-bottom:50px}.features>h2{font-size:36px}.feature-grid{grid-template-columns:1fr;gap:20px}.feature-grid article{padding:24px}.control-grid{padding:25px}.next-project{padding:30px 0;align-items:start}.next-project>a{font-size:25px;max-width:65%}.next-project>span{font-size:9px}.system-detail{grid-template-columns:1fr;gap:24px;padding:45px 0}.system-detail h2{font-size:32px}.system-intro{font-size:19px}footer{padding:28px 6%;flex-wrap:wrap;gap:16px;font-size:10px}.image-dialog img{max-width:92vw;max-height:82dvh}.close-image{top:15px;right:15px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.edge-light-spin{animation:none!important;will-change:auto!important}.edge-aura{opacity:.2}.image-dialog::backdrop{backdrop-filter:none}}

.profile-role{font-size:13px;line-height:1.55;margin:-5px 0 28px;color:var(--muted)}.frontier-intro{font-size:16px;line-height:1.65;max-width:740px;margin:20px 0 0;text-wrap:pretty}

.systems-summary{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:30px 70px;margin:12px 0 4px}.systems-summary article{border-top:1px solid var(--line);padding-top:22px}.systems-summary h3{font-size:23px;line-height:1.2;letter-spacing:-.025em;margin:0 0 12px}.systems-summary p{font-size:16px;line-height:1.7;color:var(--muted);max-width:480px;text-wrap:pretty}.more-work:has(.systems-summary)>.button{grid-column:1/-1}@media(max-width:760px){.systems-summary{grid-template-columns:1fr;gap:24px}.systems-summary h3{font-size:22px}}

.portfolio-contact{max-width:1128px;margin:0 auto;padding:76px 0 60px;border-top:1px solid var(--line)}.contact-embed{display:block;border:0;width:100%;height:1100px;background:var(--paper)}@media(max-width:1190px){.portfolio-contact{margin-inline:5%}}@media(max-width:760px){.portfolio-contact{padding-top:46px;padding-bottom:35px}}
