@font-face{font-family:Archivo;src:url('assets/archivo-400.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Archivo;src:url('assets/archivo-600.woff2') format('woff2');font-weight:600 800;font-display:swap}
:root{--paper:#f6f6f4;--surface:#fff;--ink:#111;--muted:#555;--blue:#0060c3;--blue-dark:#003d7c;--pale:#e6eff9;--line:#d9d9d5;--radius:12px}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:32px}body{margin:0;background:var(--paper);color:var(--ink);font-family:Archivo,Arial,sans-serif;font-size:18px;line-height:1.55}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-weight:600;text-wrap:balance}h1{font-size:clamp(2.35rem,4.5vw,4rem);line-height:1.04;letter-spacing:-.045em}h2{font-size:clamp(2rem,3.3vw,2.75rem);line-height:1.12;letter-spacing:-.035em}h3{font-size:24px;line-height:1.25;letter-spacing:-.02em}p{max-width:68ch}a{color:var(--blue);text-underline-offset:5px}a:hover{text-decoration-thickness:2px}button,a,summary{-webkit-tap-highlight-color:transparent}button{font:inherit}a,button{touch-action:manipulation}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--blue);outline-offset:5px}img{display:block;max-width:100%;height:auto}.wrap{width:min(1200px,calc(100% - 80px));margin-inline:auto}.section{padding-block:96px}.skip{position:absolute;left:20px;top:-100px;z-index:9;background:#fff;padding:12px}.skip:focus{top:12px}.header{display:flex;align-items:center;justify-content:space-between;min-height:88px;border-bottom:1px solid var(--line);gap:24px}.brand{display:inline-flex;align-items:center;gap:5px;color:var(--ink);font-size:27px;font-weight:600;letter-spacing:-1.5px;text-decoration:none}.brand-mark{width:7px;height:7px;background:var(--blue);margin-top:13px}.header nav{display:flex;gap:32px;align-items:center}.header nav>a:not(.button){font-size:15px;text-decoration:none;color:var(--ink);padding:12px 0}.header nav>a:hover{text-decoration:underline}.button{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:14px 22px;border:1px solid var(--blue);border-radius:6px;background:var(--blue);color:#fff;text-decoration:none;font-size:16px;font-weight:600;line-height:1.4;transition:background .15s}.button:hover{background:var(--blue-dark);border-color:var(--blue-dark)}.button.small{font-size:14px;min-height:44px;padding:12px 16px}.text-link{display:inline-block;padding-block:10px;font-size:16px;font-weight:600}.hero{display:grid;grid-template-columns:1.15fr 1fr;gap:64px;padding-block:72px 80px;align-items:center}.intro{color:var(--blue);font-size:15px;margin-bottom:24px}.hero h1{max-width:11.5em}.lead{margin-top:28px;color:var(--muted);font-size:19px;max-width:43ch}.actions{display:flex;gap:28px;align-items:center;margin-top:32px;flex-wrap:wrap}.hero-foot{font-size:14px;color:var(--muted);margin-top:28px}.feature{background:var(--pale);border-radius:var(--radius);overflow:hidden}.figure-top{display:flex;align-items:center;justify-content:space-between;font-size:13px;color:var(--blue-dark);padding:18px 24px}.figure-dot{width:8px;height:8px;border:2px solid var(--blue);border-radius:50%}.screen{margin:0 20px;background:#10131e;border:1px solid #aabbd1;border-radius:6px;overflow:hidden}.screen img{width:100%;aspect-ratio:16/9;object-fit:cover}.feature-body{padding:24px}.client-name{font-size:14px;color:var(--blue-dark);margin-bottom:8px}.feature h2{font-size:27px;letter-spacing:-.025em;line-height:1.16;margin-bottom:22px}.decision{display:flex;gap:12px;margin-bottom:16px;align-items:flex-start;font-size:15px;line-height:1.45}.decision>span{display:grid;place-items:center;flex:0 0 24px;height:24px;background:var(--surface);color:var(--blue);border-radius:50%;font-size:12px;font-weight:600}.feature .text-link{font-size:14px}.feature figcaption{font-size:12px;line-height:1.5;color:var(--muted);background:#eff3f8;padding:16px 24px}.section-heading{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:end;margin-bottom:48px}.section-heading h2{max-width:17ch}.section-heading>p{color:var(--muted);max-width:46ch}.services{border-top:1px solid var(--line)}.service-row{display:grid;grid-template-columns:1fr 1fr 32px;gap:48px;border-top:1px solid var(--line);padding:32px 0}.service-row h3{max-width:22ch}.service-row p{font-size:17px;color:var(--muted);margin-bottom:10px}.service-row a{font-size:15px}.service-symbol{font-size:30px;color:var(--blue)}.work{background:#fff}.work-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}.work-visual{height:250px;border-radius:8px;background:var(--paper);display:flex;position:relative;align-items:center;justify-content:center;margin-bottom:24px;padding:24px 24px 50px}.work-visual small{position:absolute;bottom:16px;left:12px;right:12px;text-align:center;font-size:11px;color:var(--muted)}.flow-visual{flex-direction:column;background:var(--pale);gap:4px}.flow-visual>span{background:#fff;border:1px solid #b8cce1;border-radius:5px;width:140px;text-align:center;font-size:14px;padding:6px}.flow-visual>span.blue-node{background:var(--blue);color:#fff;border-color:var(--blue)}.work-visual i{font-style:normal;color:var(--blue);font-size:18px;line-height:1}.architecture{gap:12px;background:#edf0ed}.architecture>span{border:1px solid #bdc8bf;border-radius:6px;background:white;padding:14px 10px;text-align:center;font-size:12px;line-height:1.8}.architecture b{font-size:17px;font-weight:600}.component-visual{flex-direction:column;gap:15px;background:#f0edf4;align-items:flex-start;padding-inline:40px}.sample-control{font-size:13px;color:#fff;background:var(--blue);padding:7px 22px;border-radius:5px}.sample-input{font-size:12px;padding:8px;background:#fff;border:2px solid var(--blue);outline:2px solid #fff;border-radius:4px;width:100%}.sample-error{font-size:12px;color:#9d2020}.category{font-size:13px;color:var(--blue);margin-bottom:8px}.work-item h3{font-size:25px;margin-bottom:10px}.work-item>p:not(.category){font-size:16px;color:var(--muted);margin-bottom:10px}.attribution{font-size:13px;color:var(--muted);margin-top:40px;padding-top:24px;border-top:1px solid var(--line)}.steps{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(4,1fr);gap:32px}.step-number{display:block;color:var(--blue);font-size:15px;border-top:2px solid var(--blue);padding-top:20px;margin-bottom:20px}.steps h3{margin-bottom:16px}.steps p{font-size:16px;color:var(--muted)}.steps .output{font-size:14px;color:var(--ink);margin-top:24px}.standard{background:var(--pale)}.standard-grid{display:grid;grid-template-columns:1fr 1fr;gap:100px}.standard h2{max-width:18ch;margin-bottom:24px}.standard p{font-size:17px;margin-bottom:18px}.principles>div{display:grid;grid-template-columns:140px 1fr;gap:20px;padding:22px 0;border-top:1px solid #b6c7db}.principles>div>span{font-size:17px;font-weight:600}.principles p{font-size:15px;color:var(--muted);margin:0}details{border-top:1px solid #b6c7db;padding-block:20px}summary{cursor:pointer;font-size:15px;min-height:28px}details p{padding-top:16px}.team{display:grid;grid-template-columns:1fr 1fr;gap:100px}.team h2{max-width:16ch}.team p:not(.intro){margin-bottom:20px;color:var(--muted)}.contact{background:var(--blue-dark);color:#fff}.contact-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:100px;align-items:center}.contact h2{max-width:17ch;font-size:clamp(2.25rem,4vw,3.3rem);margin-bottom:24px}.contact p{color:#e1eaf4;font-size:17px;max-width:46ch}.contact-action{justify-self:end}.button.light{background:#fff;border-color:#fff;color:var(--blue-dark);min-width:220px}.button.light:hover{background:var(--pale)}.contact-action p{font-size:13px;margin:12px 0 24px}.contact .email{color:#fff;font-size:17px;overflow-wrap:anywhere}.contact a:focus-visible{outline-color:#fff}.footer{display:flex;align-items:center;gap:40px;justify-content:space-between;padding-block:36px}.footer p,.footer>span{font-size:12px;color:var(--muted)}.menu-toggle{border:1px solid #aaa;border-radius:6px;background:transparent;padding:9px 12px;min-height:44px;font-size:14px}.case-header{border-bottom:1px solid var(--line);padding-block:24px}.case-header .wrap{display:flex;justify-content:space-between;align-items:center;gap:24px}.case-header a:not(.brand){font-size:15px}.case-intro{padding-block:64px 0}.case-intro h1{max-width:18ch}.case-intro p{margin-top:24px;color:var(--muted)}.case-detail{padding-block:64px;border-bottom:1px solid var(--line);scroll-margin-top:24px}.case-detail h2{margin-bottom:20px}.case-detail h3{margin-block:28px 12px;font-size:22px}.case-detail p{margin-bottom:16px}.case-detail .meta{font-size:15px;color:var(--blue)}.case-detail img{width:100%;border-radius:12px;margin:28px 0 12px}.case-detail figcaption{font-size:13px;color:var(--muted);max-width:70ch}.case-detail ul{max-width:68ch;padding-left:24px}.case-detail li{margin-bottom:12px}
@media(min-width:901px){.menu-toggle{display:none!important}}
@media(max-width:1000px){.hero{gap:32px}.header nav{gap:20px}.standard-grid,.team,.contact-grid{gap:48px}.component-visual{padding-inline:24px}.section-heading{gap:48px}}
@media(max-width:900px){.wrap{width:calc(100% - 40px)}.header{min-height:76px;flex-wrap:wrap;padding-block:18px;gap:12px}.menu-toggle:not([hidden]){display:inline-block}.header nav{width:100%;flex-wrap:wrap;padding:16px 0 8px;gap:16px 24px}.header nav[hidden]{display:none}.hero{grid-template-columns:1fr;padding-block:48px 56px;gap:40px}.hero-copy{max-width:660px}.hero h1{max-width:15ch;font-size:clamp(2.35rem,7vw,3.8rem)}.feature{max-width:660px}.section{padding-block:64px}.section-heading{grid-template-columns:1fr;gap:24px;margin-bottom:32px}.section-heading h2{max-width:22ch}.section-heading>p{max-width:60ch}.work-grid{gap:22px}.work-visual{height:230px}.work-item h3{font-size:22px}.architecture{flex-direction:column;gap:6px;padding:15px 20px 40px}.architecture>span{padding:4px 12px}.architecture i{transform:rotate(90deg)}.steps{grid-template-columns:1fr 1fr;row-gap:40px}.standard-grid,.team,.contact-grid{grid-template-columns:1fr;gap:40px}.contact-action{justify-self:start}.footer{flex-wrap:wrap;gap:20px}.footer p{flex:1;min-width:180px}}
@media(max-width:600px){body{font-size:17px}.header nav{flex-direction:column;align-items:stretch}.header nav>a:not(.button){padding-block:10px}.hero .intro{font-size:13px;margin-bottom:20px}.lead{font-size:17px;margin-top:24px}.actions{gap:14px 24px;margin-top:24px}.actions .button{font-size:15px}.hero-foot{margin-top:20px;font-size:13px}.figure-top{padding:16px 20px}.screen{margin-inline:16px}.feature-body{padding:20px}.feature h2{font-size:26px}.feature figcaption{padding:16px 20px}.section{padding-block:52px}.service-row{grid-template-columns:1fr;gap:16px;padding-block:28px;position:relative}.service-row h3{font-size:24px;padding-right:24px}.service-symbol{position:absolute;right:0;top:24px}.service-row p{font-size:16px}.work-grid{grid-template-columns:1fr;gap:36px}.work-visual{height:248px}.architecture{flex-direction:row;gap:20px}.architecture>span{padding:18px 12px}.architecture i{transform:none}.component-visual{padding-inline:48px}.steps{gap:32px 20px}.steps h3{font-size:22px}.steps p{font-size:15px}.steps .output{font-size:13px}.principles>div{grid-template-columns:1fr;gap:8px}.team{gap:24px}.team h2{max-width:20ch}.contact h2{max-width:17ch}.contact-action{width:100%}.contact-action .button{width:100%}.footer{padding-block:28px}.footer>span{width:100%}.case-intro{padding-top:40px}.case-detail{padding-block:48px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}
@media print{nav,.menu-toggle,.actions{display:none!important}body{background:#fff;font-size:12pt}.section{padding-block:24px}.wrap{width:100%}.hero,.section-heading,.standard-grid,.team,.contact-grid{display:block}.feature{max-width:600px;break-inside:avoid}.work-grid{display:block}.work-item{break-inside:avoid;margin-bottom:24px}.contact{background:#fff;color:#111}.contact p,.contact a{color:#111}.footer{border-top:1px solid #ccc}}
