@font-face{font-family:Ubuntu;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ubuntu-latin-400-normal-CQJ26Fy6.woff2)format("woff2"),url(/assets/ubuntu-latin-400-normal-ChuJk2Dr.woff)format("woff")}@font-face{font-family:Ubuntu;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ubuntu-latin-700-normal-DlYwEzNn.woff2)format("woff2"),url(/assets/ubuntu-latin-700-normal-DAmh8SsM.woff)format("woff")}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}:root{--color-blue:oklch(50.5% .18 253);--color-red:oklch(52% .22 27);--color-dark:oklch(20% .04 258);--color-near-black:var(--color-footer-bg);--text-on-dark-muted:oklch(98% .005 263/.7);--text-on-dark-subtle:oklch(98% .005 263/.6);--text-on-dark-body:oklch(98% .005 263/.8);--text-on-dark-faint:oklch(98% .005 263/.45);--text-on-dark-dim:oklch(98% .005 263/.3);--surface-on-dark:oklch(98% .005 263/.06);--surface-on-dark-strong:oklch(98% .005 263/.08);--surface-on-dark-panel:oklch(98% .005 263/.04);--border-on-dark:oklch(98% .005 263/.12);--border-on-dark-subtle:oklch(98% .005 263/.1);--divider-on-dark:oklch(98% .005 263/.07);--overlay-scrim:oklch(20% .04 258/.6);--overlay-portfolio:oklch(20% .04 258/.92);--glow-blue-soft:oklch(50.5% .18 253/.22);--metric-chip-bg:oklch(50.5% .18 253/.4);--text-on-dark-placeholder:oklch(98% .005 263/.35);--text-on-dark-soft:oklch(98% .005 263/.55);--surface-on-dark-focus:oklch(98% .005 263/.09);--ripple-on-dark:oklch(98% .005 263/.35);--spinner-track:oklch(98% .005 263/.3);--watermark-on-dark:oklch(98% .005 263/.07);--watermark-on-dark-hover:oklch(98% .005 263/.11);--color-text-muted:oklch(70% .04 260);--color-text-on-light:oklch(42% .045 260);--color-label-on-light:oklch(50% .04 260);--color-border-subtle:oklch(92% .01 263);--color-surface:oklch(98% .005 263);--color-surface-light:oklch(96% .035 265);--color-surface-tint:oklch(94% .025 263);--color-success:oklch(68% .15 142);--color-warning:oklch(65% .18 56);--color-info:oklch(72% .18 211);--color-code-string:oklch(78% .12 253);--color-code-key:oklch(82% .14 142);--color-code-result:oklch(88% .12 85);--color-terminal-bg:oklch(18% .04 253);--color-terminal-header:oklch(24% .05 253);--color-blue-tint:oklch(94% .04 265);--color-blue-muted:oklch(82% .06 265);--color-surface-warm:oklch(98% .008 85);--color-surface-warm-muted:oklch(95% .012 85);--color-surface-warm-hover:oklch(99% .006 85);--color-footer-bg:oklch(16.4% .033 260);--border-card:oklch(20% .04 258/.12);--border-card-muted:oklch(20% .04 258/.1);--border-card-soft:oklch(20% .04 258/.08);--border-card-strong:oklch(20% .04 258/.14);--border-brand-subtle:oklch(50.5% .18 253/.25);--border-brand-medium:oklch(50.5% .18 253/.3);--border-brand-strong:oklch(50.5% .18 253/.35);--border-brand-featured:oklch(50.5% .18 253/.45);--border-brand-hover:oklch(50.5% .18 253/.28);--surface-media-dark:oklch(24% .045 258);--surface-modal-strip:oklch(98% .012 265);--surface-blue-tint:oklch(50.5% .18 253/.08);--metric-chip-on-dark-bg:oklch(50.5% .18 253/.22);--metric-chip-on-dark-border:oklch(50.5% .18 253/.4);--metric-chip-signal-bg:oklch(38% .15 253);--metric-chip-signal-border:oklch(44% .16 253);--metric-chip-signal-text:oklch(97% .012 263);--brand-blue:var(--color-blue);--brand-red:var(--color-red);--brand-dark:var(--color-dark);--brand-light:var(--color-surface-light);--brand-gray:var(--color-text-muted);--brand-white:var(--color-surface);--brand-gray-10:oklch(93% .03 240);--brand-blue-10:oklch(50.5% .18 253/.1);--brand-red-10:oklch(52% .22 27/.1);--font-display:"Ubuntu", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-body:var(--font-display);--font-mono:"JetBrains Mono", "Ubuntu Mono", ui-monospace, monospace;--text-display:clamp(2.5rem, 6vw, 4rem);--text-headline:clamp(1.875rem, 5vw, 2.75rem);--text-title:clamp(1.0625rem, 1.8vw, 1.25rem);--text-body:1rem;--text-caption:.875rem;--text-label:.6875rem;--leading-tight:1.2;--leading-body:1.6;--leading-prose:1.55;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--weight-extrabold:800;--space-xs:.25rem;--space-sm:.5rem;--space-md:1rem;--space-lg:2rem;--space-xl:4rem;--space-2xl:8rem;--radius-sm:6px;--radius-md:12px;--radius-lg:20px;--radius-xl:32px;--shadow-sm:0 2px 8px oklch(20% .04 258/.08);--shadow-md:0 8px 24px oklch(20% .04 258/.12);--shadow-lg:0 20px 60px oklch(20% .04 258/.2);--shadow-inset:inset 0 2px 8px oklch(20% .04 258/.1);--shadow-red:0 8px 24px oklch(52% .22 27/.35);--shadow-red-hover:0 12px 32px oklch(52% .22 27/.45);--ease-out-quart:cubic-bezier(.25, 1, .5, 1);--ease-out-expo:cubic-bezier(.16, 1, .3, 1);--ease-entrance:cubic-bezier(.25, .46, .45, .94);--duration-quick:.15s;--duration-standard:.28s;--duration-slow:.5s;--transition:var(--duration-standard) var(--ease-entrance);--service-hover:var(--duration-standard) var(--ease-out-quart)}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.container{width:100%}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.border{border-style:var(--tw-border-style);border-width:1px}.underline{text-decoration-line:underline}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}.skip-link{z-index:100000;background:var(--brand-blue);color:var(--brand-white);font-family:var(--font-display);border-radius:var(--radius-md);padding:12px 20px;font-size:14px;font-weight:700;text-decoration:none;position:absolute;top:16px;left:-9999px}.skip-link:focus{left:16px}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:focus:not(:focus-visible){outline:none}:focus-visible,button:focus-visible,a:focus-visible,.nav-link:focus-visible,.footer-link:focus-visible,.portfolio-filter-btn:focus-visible,.portfolio-modal__close:focus-visible,.portfolio-empty__reset:focus-visible{outline:2px solid var(--brand-blue);outline-offset:4px}body{font-family:var(--font-body);font-size:var(--text-body);line-height:var(--leading-body);background:var(--brand-white);color:var(--brand-dark);overflow-x:hidden}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:var(--font-body);border:none}#scroll-bar{background:var(--brand-red);z-index:9999;height:3px;transition:width .1s linear;position:fixed;top:0;left:0}.scroll-to-top{z-index:3500;background:var(--brand-dark);border:1px solid var(--border-on-dark);width:48px;height:48px;color:var(--brand-blue);box-shadow:var(--shadow-sm);opacity:0;visibility:hidden;pointer-events:none;border-radius:50%;justify-content:center;align-items:center;font-size:18px;transition:opacity .35s cubic-bezier(.25,1,.5,1),transform .35s cubic-bezier(.25,1,.5,1),visibility .35s,background .2s,color .2s,box-shadow .2s,border-color .2s;display:flex;position:fixed;bottom:clamp(20px,5vw,32px);right:clamp(16px,4vw,28px);transform:translateY(16px)}.scroll-to-top--visible{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)}.scroll-to-top:focus-visible{outline:2px solid var(--brand-blue);outline-offset:4px}#cursor{background:var(--brand-blue);pointer-events:none;z-index:99999;border-radius:50%;width:8px;height:8px;transition:width .2s,height .2s,background .2s,transform .1s;position:fixed;transform:translate(-50%,-50%)}#cursor.large{background:var(--brand-red);opacity:.7;width:32px;height:32px}.fade-in{opacity:0;transition:opacity .6s,transform .6s;transform:translateY(24px)}.fade-in.visible{opacity:1;transform:translateY(0)}.fade-in{transition-delay:var(--delay,0s)}.hero-enter{animation:.8s both fadeInUp}.hero-enter--delay{animation:.8s .2s both fadeInUp}.hero-float{animation:4s ease-in-out infinite float}.hero-cursor-blink{background:var(--brand-blue);vertical-align:middle;width:8px;height:16px;animation:1s infinite blink;display:inline-block}.hero-status-pulse{background:var(--color-success);border-radius:50%;flex-shrink:0;width:8px;height:8px;animation:2s infinite pulse}.hero-underline{animation:1.2s .8s forwards drawLine}.contact-success-enter{animation:.5s fadeInUp}.loading-spin{border:2px solid var(--spinner-track);border-top-color:var(--brand-white);border-radius:50%;width:20px;height:20px;animation:.8s linear infinite spin;display:inline-block}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(32px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.4)}}@keyframes typing{0%{width:0}to{width:100%}}@keyframes blink{50%{opacity:0}}@keyframes ripple{0%{opacity:1;transform:scale(0)}to{opacity:0;transform:scale(4)}}@keyframes slideUnderline{0%{width:0}to{width:100%}}@keyframes drawLine{0%{stroke-dashoffset:300px}to{stroke-dashoffset:0}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes gridDot{0%,to{opacity:.04}50%{opacity:.08}}.btn-ripple{min-height:44px;position:relative;overflow:hidden}.btn-ripple .ripple-effect{background:var(--ripple-on-dark);pointer-events:none;border-radius:50%;animation:.6s linear ripple;position:absolute}.btn-primary{background:var(--brand-red);color:var(--brand-white);font-family:var(--font-display);font-weight:var(--weight-bold);border-radius:var(--radius-md);cursor:pointer;box-shadow:var(--shadow-red);transition:transform var(--transition), box-shadow var(--transition);border:none;padding:14px 32px}.btn-primary:focus-visible{outline:2px solid var(--brand-blue);outline-offset:4px}.btn-secondary{border:2px solid var(--brand-blue);color:var(--brand-blue);font-family:var(--font-display);font-weight:var(--weight-bold);border-radius:var(--radius-md);cursor:pointer;min-height:44px;transition:background var(--transition), color var(--transition);background:0 0;padding:12px 28px}.btn-secondary:hover{background:var(--brand-blue);color:var(--brand-white)}.btn-secondary:focus-visible{outline:2px solid var(--brand-blue);outline-offset:4px}.form-label{font-size:13px;font-weight:var(--weight-semibold);color:var(--text-on-dark-muted);margin-bottom:8px;display:block}.btn-primary:disabled{opacity:.8;cursor:not-allowed}.contact-form-panel{background:var(--surface-on-dark-panel);border:1px solid var(--border-on-dark-subtle);border-radius:var(--radius-xl);padding:clamp(24px,4vw,40px)}.footer-remote-badge{background:var(--surface-on-dark);color:var(--text-on-dark-subtle);border-radius:20px;align-items:center;gap:8px;margin-top:16px;padding:8px 16px;font-size:13px;display:inline-flex}.footer-bar{border-top:1px solid var(--divider-on-dark);flex-wrap:wrap;justify-content:space-between;gap:12px;padding:20px 0;display:flex}.shadow-var-sm{box-shadow:var(--shadow-sm)}.shadow-var-md{box-shadow:var(--shadow-md)}.shadow-var-lg{box-shadow:var(--shadow-lg)}.footer-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.hero-radial{background:radial-gradient(ellipse 60% 60% at 20% 30%, var(--glow-blue-soft) 0%, transparent 70%)}.draw-line{animation:1.2s .8s forwards drawLine}.portfolio-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.services-section{background:var(--brand-light);padding:100px clamp(16px,6vw,80px)}.services-bento{flex-direction:column;gap:clamp(16px,2.5vw,28px);display:flex}.services-bento-band{grid-template-columns:1fr;gap:clamp(16px,2.5vw,28px);display:grid}.services-bento-band>.service-cell{min-height:0;display:flex}.service-card{background:var(--brand-white);border-radius:var(--radius-lg);width:100%;min-height:0;box-shadow:var(--shadow-sm);transition:box-shadow var(--service-hover), border-color var(--service-hover), transform var(--service-hover);border:1px solid oklch(20% .04 258/.14);flex-direction:column;flex:1;display:flex;position:relative;overflow:hidden}.service-card__media{background:var(--brand-light);transition:background var(--service-hover);flex:0 auto;justify-content:center;align-items:center;padding:16px;display:flex}.service-card__media img{-o-object-fit:contain;object-fit:contain;max-width:100%;max-height:100%;transition:transform var(--service-hover);will-change:transform}.service-card__title{font-family:var(--font-display);font-weight:var(--weight-bold);font-size:var(--text-title);line-height:var(--leading-tight);color:var(--brand-dark);transition:color var(--service-hover);flex-shrink:0;margin-bottom:clamp(6px,.8vh,10px)}.service-card__index{z-index:1;font-family:var(--font-mono);letter-spacing:.08em;color:var(--color-label-on-light);pointer-events:none;transition:color var(--service-hover);font-size:11px;font-weight:600;position:absolute;top:16px;right:20px}.service-card__body{flex-direction:column;flex:auto;justify-content:space-between;min-height:0;padding:clamp(18px,2.5vw,26px) clamp(18px,2.8vw,28px) clamp(20px,2.5vw,26px);display:flex}.service-card__content{flex-direction:column;flex:auto;min-height:0;display:flex}.service-card__desc{min-height:0;font-size:var(--text-caption);color:var(--color-text-on-light);line-height:var(--leading-prose);flex:auto;align-items:center;margin-bottom:0;display:flex}.service-card__tags{flex-wrap:wrap;flex-shrink:0;gap:8px;margin:clamp(10px,1.2vh,14px) 0 0;padding:0;list-style:none;display:flex}.service-card--featured{background:var(--brand-dark);box-shadow:var(--shadow-md);border-color:oklch(50.5% .18 253/.5);flex-direction:column;display:flex}.service-card--featured:before{content:"";background:var(--brand-red);z-index:2;height:3px;transition:box-shadow var(--service-hover);position:absolute;top:0;left:0;right:0}.service-card--featured .service-card__index--watermark{z-index:1;letter-spacing:-.04em;color:var(--watermark-on-dark);opacity:1;transition:color var(--service-hover);font-size:clamp(56px,10vw,96px);font-weight:700;line-height:1;position:absolute;top:auto;bottom:clamp(12px,2vh,20px);right:clamp(16px,2vw,24px)}.service-card--featured .service-card__media{min-height:200px;transition:filter var(--service-hover);background:radial-gradient(circle at 1px 1px,oklch(50.5% .18 253/.18) 1px,#0000 0) 0 0/22px 22px,linear-gradient(160deg,oklch(50.5% .18 253/.32) 0%,oklch(20% .04 258/.82) 100%);flex:auto;padding:clamp(24px,4vw,40px);position:relative}.service-card--featured .service-card__media img{z-index:1;max-width:88%;max-height:min(78%,220px);position:relative}.service-card--featured .service-card__body{flex:auto;justify-content:space-between;gap:clamp(12px,2vh,18px)}.service-card--featured .service-card__content{flex:auto;min-height:0}.service-card--featured .service-card__title{color:var(--brand-white);margin-bottom:clamp(6px,.8vh,10px);font-size:clamp(22px,3.2vw,30px)}.service-card--featured .service-card__desc{color:var(--text-on-dark-muted);max-width:none;font-size:clamp(14px,1.45vw,16px);line-height:1.55}.service-card--featured .service-card__tags{border-top:1px solid oklch(50.5% .18 253/.35);margin-top:0;padding-top:clamp(12px,1.8vh,18px)}.service-card--featured .tech-tag{color:var(--color-blue-muted);background:oklch(50.5% .18 253/.25);border:1px solid oklch(50.5% .18 253/.4)}.service-card--accent{background:linear-gradient(155deg, var(--brand-white) 0%, var(--color-blue-tint) 100%);box-shadow:var(--shadow-sm);transition:box-shadow var(--service-hover), border-color var(--service-hover), transform var(--service-hover), background var(--service-hover);border-color:oklch(50.5% .18 253/.28)}.service-card--accent .service-card__media{background:0 0;min-height:110px}.service-card--accent .service-card__title{color:var(--brand-blue);font-size:clamp(17px,2vw,20px)}.service-card--compact{border-color:oklch(20% .04 258/.12)}.service-card--compact .service-card__media{min-height:96px}.service-card--compact .service-card__desc{font-size:clamp(13px,1.3vw,14px)}.service-card--wide{border-color:oklch(50.5% .18 253/.22)}.service-card--wide .service-card__title{font-size:clamp(19px,2.4vw,24px)}.service-card--wide .service-card__media{min-height:140px}.service-card--mid{border-color:oklch(20% .04 258/.13)}.service-card--mid .service-card__media{min-height:120px}.service-card--narrow{background:var(--color-surface-warm);transition:box-shadow var(--service-hover), border-color var(--service-hover), transform var(--service-hover), background var(--service-hover);border-color:oklch(20% .04 258/.11)}.service-card--narrow .service-card__media{background:var(--color-surface-warm-muted);min-height:88px;padding:12px}.service-card--narrow .service-card__title{font-size:clamp(15px,1.6vw,17px)}.service-card--narrow .service-card__desc{font-size:clamp(12px,1.2vw,13px);line-height:1.5}.service-card--strip{background:linear-gradient(128deg, oklch(98.5% .018 265) 0%, var(--brand-white) 42%, oklch(97% .038 265) 100%);box-shadow:var(--shadow-sm), inset 0 1px 0 oklch(50.5% .18 253/.08);border-color:oklch(50.5% .18 253/.3);flex-direction:column;display:flex}.service-card--strip:before{content:"";background:linear-gradient(90deg, var(--brand-blue) 0%, oklch(62% .16 253) 55%, oklch(78% .1 253) 100%);z-index:2;height:3px;transition:box-shadow var(--service-hover);position:absolute;top:0;left:0;right:0}.service-card--strip .service-card__media{background:linear-gradient(165deg,oklch(50.5% .18 253/.22) 0%,oklch(50.5% .18 253/.1) 38%,oklch(96% .045 265) 100%);min-height:120px}.service-card--strip .service-card__body{background:oklch(99% .008 265/.65);flex:1}.service-card--strip .service-card__title{color:var(--brand-red)}.service-card--strip .service-card__desc{color:oklch(48% .035 260);align-items:flex-start;line-height:1.55}.service-card--strip .service-card__index{color:oklch(38% .12 253);font-size:12px;inset:auto auto 14px 18px}.service-card--strip .tech-tag{color:oklch(38% .1 253);background:oklch(50.5% .18 253/.12);border:1px solid oklch(50.5% .18 253/.24)}.services-bento .tech-tag{transition:background-color var(--service-hover), color var(--service-hover), border-color var(--service-hover), transform var(--service-hover)}.section-header{margin-bottom:60px}.section-header--center{text-align:center}.section-header--left{text-align:left}.section-header--compact{margin-bottom:24px}.section-title{font-size:var(--text-headline);font-weight:var(--weight-bold);font-family:var(--font-display);line-height:var(--leading-tight);margin:0}.section-header--dark .section-title{color:var(--brand-dark)}.section-header--light .section-title{color:var(--brand-white)}.section-header--left .section-title{font-size:clamp(1.625rem,4vw,2.375rem)}.hamburger-toggle{transition:all .3s ease-out}.hamburger-line{background:var(--brand-white);transform-origin:50%;width:24px;height:2px;transition:all .3s cubic-bezier(.34,1.56,.64,1);display:block}.hamburger-top{transform:translateY(0)}.hamburger-middle{opacity:1}.hamburger-bottom{transform:translateY(0)}.hamburger-top-open{transform:translateY(8px)rotate(45deg)}.hamburger-middle-open{opacity:0;transform:translate(-10px)}.hamburger-bottom-open{transform:translateY(-8px)rotate(-45deg)}.nav-link{color:var(--brand-gray);cursor:pointer;transition:color var(--transition);font-size:14px;font-family:var(--font-display);background:0 0;border:none;align-items:center;min-height:44px;padding-bottom:2px;text-decoration:none;display:inline-flex;position:relative}.nav-link:after{content:"";background:var(--brand-red);width:0;height:2px;transition:width var(--transition);position:absolute;bottom:0;left:0}.nav-link:hover{color:var(--brand-white)}.nav-link:hover:after{width:100%}.nav-link-active,.nav-link.nav-link-active:hover{color:var(--brand-white)}.nav-link-active:after{width:100%}.route-fallback{min-height:50vh}.home-section-placeholder{width:100%}.route-page{background:var(--brand-dark);min-height:100vh;padding:120px clamp(16px,6vw,80px) 80px}.route-page__inner{max-width:70ch}.route-page__kicker{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--brand-blue);margin:0 0 1rem;font-size:.6875rem;font-weight:600}.route-page__title{font-family:var(--font-display);color:var(--brand-white);margin:0 0 1rem;font-size:clamp(2rem,5vw,3rem);font-weight:800;line-height:1.1}.route-page__desc{color:var(--brand-gray);margin:0 0 2rem;font-size:1.0625rem;line-height:1.7}.route-page__cta{align-items:center;text-decoration:none;display:inline-flex}a.route-page__cta,a.footer-cta{text-decoration:none}.navbar{z-index:1000;height:72px;box-shadow:none;transition:background var(--service-hover), border-color var(--service-hover), box-shadow var(--service-hover);background:0 0;border-bottom:1px solid #0000;justify-content:space-between;align-items:center;padding:0 clamp(16px,4vw,60px);display:flex;position:fixed;top:0;left:0;right:0}.navbar--scrolled{background:var(--brand-dark);border-bottom-color:oklch(50.5% .18 253/.22);box-shadow:0 1px oklch(20% .04 258/.06)}.lang-switcher{letter-spacing:.08em;min-width:40px;color:var(--brand-gray);border-radius:var(--radius-sm,8px);border:1px solid #ffffff26;justify-content:center;align-items:center;padding:8px 10px;font-size:12px;font-weight:700;text-decoration:none;transition:color .2s,border-color .2s;display:inline-flex}.lang-switcher:hover{color:var(--brand-white);border-color:var(--brand-blue)}.lang-switcher:focus-visible{outline:2px solid var(--brand-blue);outline-offset:2px}.portfolio-section{background:var(--brand-light);padding:100px clamp(16px,6vw,80px)}.portfolio-section .section-header--left{margin-bottom:32px}.portfolio-filters{flex-wrap:wrap;gap:12px;margin-bottom:clamp(32px,4vw,48px);display:flex}.portfolio-filter-btn{align-items:center;gap:8px;display:inline-flex}.portfolio-filter-btn__count{font-size:12px;font-weight:var(--weight-semibold);opacity:.72;font-variant-numeric:tabular-nums}.portfolio-filter-btn[aria-pressed=true] .portfolio-filter-btn__count{opacity:.92}.portfolio-preview{flex-direction:column;gap:clamp(10px,1.2vh,16px);min-height:0;display:flex}.portfolio-cat-badge{background:var(--brand-red);color:var(--brand-white);font-size:11px;font-weight:var(--weight-semibold);border-radius:var(--radius-sm);letter-spacing:.05em;padding:4px 12px;position:absolute;top:16px;left:16px}.portfolio-metric{background:var(--metric-chip-bg);border:1px solid var(--border-brand-strong);border-radius:var(--radius-sm);color:var(--color-code-string);font-size:13px;font-weight:var(--weight-semibold);margin:var(--space-md) 0;align-items:center;gap:8px;padding:6px 12px;display:inline-flex}.portfolio-metric svg{flex-shrink:0}.portfolio-anchor{background:var(--brand-dark);border:1px solid var(--border-brand-featured);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);flex-direction:column;min-height:0;display:flex;position:relative;overflow:hidden}.portfolio-anchor:before{content:"";background:var(--brand-red);z-index:2;height:3px;position:absolute;top:0;left:0;right:0}.portfolio-anchor__media{aspect-ratio:16/10;background:var(--surface-media-dark);justify-content:center;align-items:center;min-height:160px;padding:clamp(16px,3vw,28px);display:flex;position:relative}.portfolio-anchor__media img{-o-object-fit:contain;object-fit:contain;width:100%;max-height:min(22vh,220px)}.portfolio-anchor__body{color:var(--brand-white);padding:clamp(16px,2vw,28px)}.portfolio-anchor__title{font-family:var(--font-display);font-size:clamp(1.375rem,2.5vw,1.75rem);font-weight:var(--weight-extrabold);line-height:var(--leading-tight);overflow-wrap:anywhere;min-width:0;margin-bottom:8px}.portfolio-anchor__sub{color:var(--text-on-dark-subtle);margin-bottom:8px;font-size:13px}.portfolio-anchor__desc{font-size:clamp(13px,1.1vw,15px);line-height:var(--leading-prose);color:var(--text-on-dark-body);margin-bottom:var(--space-sm);line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;max-width:70ch;display:-webkit-box;overflow:hidden}.portfolio-anchor .portfolio-metric{background:var(--metric-chip-on-dark-bg);border-color:var(--metric-chip-on-dark-border);color:var(--color-blue-muted);margin-bottom:var(--space-sm);padding:4px 10px;font-size:12px}.portfolio-signals{flex-direction:column;gap:clamp(10px,1.2vh,14px);min-height:0;display:flex}.portfolio-signals .portfolio-metric,.portfolio-grid-card .portfolio-metric{font-size:11px;font-weight:var(--weight-semibold);color:var(--metric-chip-signal-bg);background:0 0;border:none;align-self:flex-start;margin-bottom:6px;padding:5px}.portfolio-signals .portfolio-metric svg,.portfolio-grid-card .portfolio-metric svg{color:inherit;opacity:.92}.portfolio-signal{background:var(--brand-white);border:1px solid var(--border-card-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);min-height:0;transition:box-shadow var(--service-hover), border-color var(--service-hover);flex-direction:column;display:flex;position:relative;overflow:hidden}.portfolio-signal--archive .portfolio-signal__archive-overlay{z-index:2;border-radius:inherit;-webkit-backdrop-filter:blur(2px);opacity:1;pointer-events:auto;background:oklch(20% .04 258/.78);justify-content:center;align-items:center;padding:16px;display:flex;position:absolute;inset:0}.portfolio-signal__media{aspect-ratio:16/9;background:var(--brand-light);flex-shrink:0;justify-content:center;align-items:stretch;padding:10px;display:flex;position:relative;overflow:hidden}.portfolio-signal__media img{-o-object-fit:contain;object-fit:contain;-o-object-position:center;object-position:center;width:100%;height:100%}.portfolio-signal__body{flex-direction:column;flex:1;min-width:0;min-height:0;padding:clamp(10px,1.2vw,14px);display:flex}.portfolio-signal__title{font-family:var(--font-display);font-size:clamp(.9375rem,1.2vw,1.0625rem);font-weight:var(--weight-bold);color:var(--brand-dark);overflow-wrap:anywhere;min-width:0;transition:color var(--service-hover);margin-bottom:4px}.portfolio-signal__sub{color:var(--brand-gray);margin-bottom:6px;font-size:12px}.portfolio-signal__desc{color:var(--brand-gray);line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-bottom:8px;font-size:12px;line-height:1.45;display:-webkit-box;overflow:hidden}.portfolio-signal__actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:auto;display:flex}.portfolio-signal__link{justify-content:center;align-items:center;padding:6px 12px;font-size:.85rem;display:inline-flex}.portfolio-empty{text-align:center;color:var(--brand-gray);padding:48px 16px;font-size:16px}.portfolio-see-more{justify-content:center;align-items:center;min-height:44px;padding:8px 14px;font-size:12px;display:inline-flex}.portfolio-anchor__link{justify-content:center;align-items:center;min-height:40px;padding:12px 24px;display:inline-flex}.portfolio-empty__reset{color:var(--brand-blue);font-weight:var(--weight-semibold);cursor:pointer;text-underline-offset:3px;background:0 0;border:none;min-height:44px;padding:8px 12px;text-decoration:underline}.portfolio-modal-root{z-index:4000;justify-content:center;align-items:center;padding:clamp(12px,2vw,24px);display:flex;position:fixed;inset:0}.portfolio-modal-scrim{z-index:0;background:var(--overlay-scrim);cursor:pointer;border:none;padding:0;position:absolute;inset:0}.portfolio-modal{z-index:1;background:var(--brand-white);border:1px solid var(--border-card);border-radius:var(--radius-xl);width:80vw;max-width:1200px;height:80vh;box-shadow:var(--shadow-lg);flex-direction:column;display:flex;position:relative;overflow:hidden}.portfolio-modal__header{border-bottom:1px solid var(--border-card-muted);flex-shrink:0;justify-content:space-between;align-items:center;gap:16px;padding:clamp(16px,2vw,24px) clamp(20px,2.5vw,28px);display:flex}.portfolio-modal__title{font-family:var(--font-display);font-size:clamp(1.125rem,1.8vw,1.375rem);font-weight:var(--weight-bold);color:var(--brand-dark)}.portfolio-modal__close{background:var(--brand-light);border:1px solid var(--border-card);border-radius:var(--radius-md);color:var(--brand-dark);cursor:pointer;transition:background var(--transition), border-color var(--transition);font-size:18px}.portfolio-modal__close:hover{background:var(--surface-blue-tint);border-color:var(--border-brand-subtle)}.portfolio-modal__filters{border-bottom:1px solid var(--border-card-soft);background:var(--surface-modal-strip);flex-shrink:0;padding:12px clamp(20px,2.5vw,28px) 16px}.portfolio-modal__filters .portfolio-filters{margin-bottom:0}.portfolio-modal__body{flex:1;min-height:0;padding:clamp(16px,2vw,24px) clamp(20px,2.5vw,28px) clamp(24px,3vw,32px);overflow-y:auto}.portfolio-modal__grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px;display:grid}.portfolio-grid-card{background:var(--brand-white);border:1px solid var(--border-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:box-shadow var(--service-hover), border-color var(--service-hover);flex-direction:column;display:flex;overflow:hidden}.portfolio-grid-card:hover{border-color:var(--border-brand-medium);box-shadow:var(--shadow-md)}.portfolio-grid-card__media{aspect-ratio:16/10;background:var(--brand-light);justify-content:center;align-items:center;padding:12px;display:flex;position:relative}.portfolio-grid-card__media img{-o-object-fit:contain;object-fit:contain;width:100%;height:100%}.portfolio-grid-card__body{flex-direction:column;flex:1;min-width:0;padding:18px 20px 22px;display:flex}.portfolio-grid-card__title{font-family:var(--font-display);font-size:1.0625rem;font-weight:var(--weight-bold);color:var(--brand-dark);overflow-wrap:anywhere;min-width:0;margin-bottom:4px}.portfolio-grid-card__sub{color:var(--brand-gray);margin-bottom:10px;font-size:13px}.portfolio-grid-card__desc{font-size:13px;line-height:var(--leading-prose);color:var(--brand-gray);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin-bottom:12px;display:-webkit-box;overflow:hidden}.portfolio-grid-card__link{align-self:flex-start;align-items:center;min-height:44px;margin-top:auto;padding:8px 16px;font-size:13px;display:inline-flex}.tech-tag{background:var(--brand-blue-10);color:var(--brand-blue);letter-spacing:.04em;border-radius:20px;margin:3px 2px;padding:3px 10px;font-size:11px;font-weight:600;display:inline-block}.form-input,.form-select,.form-textarea{background:var(--surface-on-dark);border:1px solid var(--border-on-dark);border-radius:var(--radius-md);width:100%;color:var(--brand-white);font-family:var(--font-body);transition:border-color var(--transition), background var(--transition);outline:none;padding:14px 16px;font-size:15px}.form-input::-moz-placeholder{color:var(--text-on-dark-placeholder)}.form-textarea::-moz-placeholder{color:var(--text-on-dark-placeholder)}.form-input::placeholder,.form-textarea::placeholder{color:var(--text-on-dark-placeholder)}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--brand-blue);background:var(--surface-on-dark-focus)}.form-input:focus-visible,.form-select:focus-visible,.form-textarea:focus-visible{outline:2px solid var(--brand-blue);outline-offset:2px}.form-input.error,.form-select.error,.form-textarea.error{border-color:var(--brand-red)}.form-select{appearance:none;cursor:pointer}.form-select option{background:var(--brand-dark);color:var(--brand-white)}.form-textarea{resize:vertical;min-height:120px}.field-error{color:var(--brand-red);margin-top:4px;font-size:12px}body:before{content:"";opacity:.02;pointer-events:none;z-index:99998;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='1'/%3E%3C/svg%3E");position:fixed;inset:0}.process-line{background:oklch(50.5% .18 253/.3);height:2px;position:absolute;top:32px;left:60px;right:60px}.nav-menu-toggle{cursor:pointer;background:0 0;border:none;flex-direction:column;justify-content:center;gap:5px;min-width:44px;min-height:44px;padding:12px}.contact-form-grid{grid-template-columns:1fr 1fr;gap:0 20px;display:grid}.about-values-band{width:100%;margin-top:clamp(48px,5vw,72px)}.about-values-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(16px,2vw,24px);display:grid}.about-value-card{transition:border-color var(--transition), box-shadow var(--transition);border:1px solid oklch(50.5% .18 253/.22)}.about-value-card:hover{box-shadow:var(--shadow-sm);border-color:oklch(50.5% .18 253/.38)}.about-stats-overlap{margin-bottom:-40px}.about-stats-offset{margin-left:24px}.touch-target{justify-content:center;align-items:center;min-width:44px;min-height:44px;display:inline-flex}.social-link{cursor:pointer;width:44px;height:44px;color:var(--brand-white);transition:background var(--transition);border-radius:50%;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.social-link--footer{background:var(--surface-on-dark);font-size:14px}.social-link--contact{background:var(--surface-on-dark-strong);font-size:18px}.social-link:hover{background:var(--brand-blue)}.portfolio-filter-btn{cursor:pointer;min-height:44px;transition:all var(--transition);font-size:14px;font-weight:600;font-family:var(--font-display);color:var(--brand-gray);background:0 0;border:2px solid #0000;border-radius:24px;padding:10px 22px}.portfolio-filter-btn[aria-pressed=true]{background:var(--brand-blue);color:var(--brand-white);border-color:var(--brand-blue)}.portfolio-filter-btn[aria-pressed=false]{border-color:var(--color-border-subtle)}.footer-link{color:var(--text-on-dark-soft);transition:color var(--transition);cursor:pointer;min-height:44px;font-size:14px;font-family:var(--font-body);text-align:left;background:0 0;border:none;align-items:center;margin-bottom:4px;padding:6px 0;text-decoration:none;display:flex}.footer-link:hover{color:var(--brand-white)}.footer-cta{background:var(--brand-red);border:1px solid var(--brand-red);color:var(--brand-white);border-radius:var(--radius-md);cursor:pointer;min-height:44px;font-size:13px;font-weight:600;font-family:var(--font-display);transition:all var(--transition);justify-content:center;align-items:center;margin-top:16px;padding:10px 18px;display:inline-flex}.footer-cta:hover{color:var(--brand-white);background:oklch(46% .22 27);border-color:oklch(46% .22 27)}.footer-legal-link{color:var(--text-on-dark-muted);cursor:pointer;font-size:12px;font-family:var(--font-display);min-height:44px;transition:color var(--transition);background:0 0;border:none;align-items:center;padding:10px 4px;text-decoration:none;display:inline-flex}.footer-legal-link:hover{color:var(--brand-white)}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--brand-dark)}::-webkit-scrollbar-thumb{background:var(--brand-blue);border-radius:3px}.reduce-motion #cursor{display:none!important}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@media (hover:hover){.scroll-to-top:hover{background:var(--brand-blue);color:var(--brand-white);border-color:var(--brand-blue);box-shadow:var(--shadow-md)}}@media (hover:none),(pointer:coarse){#cursor{display:none!important}.fade-in{opacity:1;transition:none;transform:none}}@media (prefers-reduced-motion:no-preference){.btn-primary:hover{box-shadow:var(--shadow-red-hover);transform:translateY(-3px)}.services-bento .service-card:hover{border-color:oklch(50.5% .18 253/.38);box-shadow:0 10px 36px oklch(20% .04 258/.14)}.services-bento .service-card:hover .service-card__media img{transform:scale(1.06)}.services-bento .service-card:hover .service-card__index{color:var(--brand-blue)}.services-bento .service-card:hover .tech-tag{transform:translateY(-1px)}.services-bento .service-card:not(.service-card--featured):hover .service-card__title{color:var(--brand-blue)}.services-bento .service-card--accent:hover{border-color:oklch(50.5% .18 253/.45)}.services-bento .service-card--accent:hover .service-card__media{background:oklch(50.5% .18 253/.06)}.services-bento .service-card--narrow:hover{background:var(--color-surface-warm-hover);border-color:oklch(20% .04 258/.16)}.services-bento .service-card--featured:hover{border-color:oklch(50.5% .18 253/.72);box-shadow:0 16px 48px oklch(20% .04 258/.28)}.services-bento .service-card--featured:hover:before{box-shadow:0 0 18px oklch(52% .22 27/.45)}.services-bento .service-card--featured:hover .service-card__media{filter:brightness(1.08)}.services-bento .service-card--featured:hover .service-card__media img{transform:scale(1.07)}.services-bento .service-card--featured:hover .service-card__title{color:var(--color-blue-tint)}.services-bento .service-card--featured:hover .service-card__index--watermark{color:var(--watermark-on-dark-hover)}.services-bento .service-card--featured:hover .tech-tag{background:oklch(50.5% .18 253/.38);border-color:oklch(50.5% .18 253/.55)}.services-bento .service-card--strip:hover{border-color:oklch(50.5% .18 253/.48);box-shadow:0 14px 44px oklch(20% .04 258/.14),inset 0 1px oklch(50.5% .18 253/.12)}.services-bento .service-card--strip:hover:before{box-shadow:0 0 20px oklch(50.5% .18 253/.35)}.services-bento .service-card--strip:hover .service-card__title{color:oklch(42% .2 27)}.services-bento .service-card--strip:hover .service-card__media{background:linear-gradient(165deg,oklch(50.5% .18 253/.28) 0%,oklch(50.5% .18 253/.14) 42%,oklch(95% .05 265) 100%)}.services-bento .service-card--strip:hover .service-card__index{color:var(--brand-blue)}.services-bento .service-card--strip:hover .tech-tag{color:oklch(32% .12 253);background:oklch(50.5% .18 253/.18);border-color:oklch(50.5% .18 253/.38)}.services-bento .service-card--strip:hover .service-card__media img{transform:scale(1.04)}@media (width<=1023px){.services-bento .service-card:hover{transform:translateY(-4px)}.services-bento .service-card--featured:hover{transform:translateY(-3px)}}}@media (width>=640px){.services-bento-band{grid-template-columns:repeat(2,1fr)}.service-cell--featured,.service-cell--strip,.service-cell--wide{grid-column:span 2}.service-card--featured{flex-direction:row;align-items:stretch}.service-card--featured .service-card__media{flex:44%;align-self:stretch;min-height:0}.service-card--featured .service-card__body{flex:56%;justify-content:space-between;padding:clamp(24px,3vw,40px)}.service-card--featured .service-card__content{flex:auto;min-height:0}.service-card--wide{flex-direction:row;align-items:stretch;display:flex}.service-card--wide .service-card__media{flex:0 0 38%;min-height:auto;padding:clamp(20px,3vw,28px)}.service-card--wide .service-card__body{padding:clamp(14px,1.8vh,18px) clamp(16px,1.8vw,22px)}.service-card--strip{flex-direction:row;align-items:stretch}.service-card--strip .service-card__media{border-right:1px solid oklch(50.5% .18 253/.2);flex:0 0 min(25vw,280px);min-height:auto;padding:clamp(16px,2.5vw,24px)}.service-card--strip .service-card__media img{max-width:90%;max-height:clamp(100px,16vh,160px)}.service-card--strip .service-card__body{flex-direction:column;justify-content:center;gap:clamp(10px,1.4vh,14px);padding:clamp(18px,2.5vw,28px) clamp(22px,3vw,36px);display:flex}.service-card--strip .service-card__content{flex:0 auto;min-width:0}.service-card--strip .service-card__title{font-size:clamp(17px,1.8vw,20px)}.service-card--strip .service-card__desc{font-size:clamp(13px,1.2vw,14px)}.service-card--strip .service-card__tags{border-top:1px solid oklch(50.5% .18 253/.14);flex-shrink:0;justify-content:flex-start;align-self:flex-start;max-width:none;margin-top:0;padding-top:clamp(8px,1vh,12px)}.service-card--strip .service-card__index{color:oklch(50.5% .18 253/.5);inset:14px 18px auto auto}}@media (width>=1024px){.services-section{padding-top:clamp(48px,6vh,72px);padding-bottom:clamp(48px,6vh,72px)}.services-section .section-header{margin-bottom:clamp(24px,3vh,40px)}.services-bento{gap:clamp(16px,2vh,32px)}.services-bento-band{--band-height:90vh;height:var(--band-height);max-height:var(--band-height);grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(10px,1.2vh,14px);min-height:0;overflow:hidden}.services-bento-band--hero{grid-template-rows:repeat(2,minmax(0,1fr))}.services-bento-band--suite{grid-template-rows:minmax(0,55fr) minmax(0,45fr)}.services-bento-band>.service-cell{min-height:0;overflow:hidden}.services-bento-band>.service-cell--featured{grid-area:1/1/3/8}.services-bento-band>.service-cell--compact{grid-area:1/8/auto/13}.services-bento-band>.service-cell--accent{grid-area:2/8/auto/13}.services-bento-band>.service-cell--wide{grid-area:1/1/auto/6}.services-bento-band>.service-cell--mid{grid-area:1/6/auto/10}.services-bento-band>.service-cell--narrow{grid-area:1/10/auto/13}.services-bento-band>.service-cell--strip{grid-area:2/1/auto/13}.services-bento-band .service-card{height:100%;min-height:0}.services-bento-band .service-card__media,.services-bento-band .service-card--featured .service-card__media{min-height:0}.service-card__body{padding:clamp(14px,1.8vh,20px) clamp(14px,1.6vw,20px) clamp(14px,1.8vh,18px)}.service-card__title{margin-bottom:clamp(4px,.6vh,8px);font-size:clamp(16px,1.45vw,19px)}.service-card__desc{font-size:clamp(13px,1.15vw,14px);line-height:1.5}.service-card__media{padding:clamp(8px,1.2vh,12px)}.service-card__media img{max-height:clamp(64px,10vh,100px)}.service-card--featured{flex-direction:row;align-items:stretch}.service-card--featured .service-card__media{flex:46%;align-self:stretch;min-height:0;max-height:none;padding:clamp(16px,2.5vh,28px)}.service-card--featured .service-card__media img{max-width:92%;max-height:min(78%,clamp(140px,26vh,280px))}.service-card--featured .service-card__body{flex:54%;justify-content:space-between;gap:clamp(10px,1.6vh,16px);padding:clamp(20px,3vh,32px) clamp(24px,2.5vw,36px)}.service-card--featured .service-card__content{flex:auto;min-height:0}.service-card--featured .service-card__title{margin-bottom:clamp(6px,.8vh,10px);font-size:clamp(24px,2.8vw,32px)}.service-card--featured .service-card__desc{font-size:clamp(14px,1.3vw,16px);line-height:1.52}.service-card--featured .service-card__tags{padding-top:clamp(10px,1.5vh,14px)}.service-card--featured .service-card__index--watermark{font-size:clamp(48px,8vh,80px);bottom:clamp(10px,1.5vh,16px);right:clamp(12px,1.5vw,20px)}.service-card--compact .service-card__media,.service-card--accent .service-card__media{flex:0 30%;max-height:30%;padding:10px}.service-card--compact .service-card__media img,.service-card--accent .service-card__media img{max-height:clamp(56px,8vh,80px)}.service-card--accent .service-card__title{font-size:clamp(16px,1.5vw,20px)}.service-card--compact .service-card__desc{font-size:clamp(13px,1.15vw,14px)}.service-card--wide{flex-direction:row;align-items:stretch}.service-card--wide .service-card__media{flex:0 0 40%;min-height:0;padding:clamp(10px,1.4vh,14px)}.service-card--wide .service-card__media img{max-height:clamp(72px,12vh,110px)}.service-card--wide .service-card__title{font-size:clamp(17px,1.55vw,21px)}.service-card--wide .service-card__body{padding:clamp(14px,1.8vh,18px) clamp(16px,1.6vw,20px)}.service-card--wide .service-card__desc{font-size:clamp(13px,1.15vw,14px)}.service-card--mid .service-card__media{flex:0 32%;max-height:32%}.service-card--mid .service-card__media img{max-height:clamp(64px,10vh,96px)}.service-card--narrow .service-card__media{flex:0 28%;max-height:28%;padding:8px}.service-card--narrow .service-card__media img{max-height:clamp(52px,8vh,72px)}.service-card--mid .service-card__desc{font-size:clamp(13px,1.15vw,14px)}.service-card--narrow .service-card__title{font-size:clamp(15px,1.35vw,17px)}.service-card--narrow .service-card__desc{font-size:clamp(12px,1.1vw,13px)}.service-card--strip{flex-direction:row;align-items:stretch}.service-card--strip .service-card__media{border-right:1px solid oklch(50.5% .18 253/.22);flex:0 0 25vw;min-height:0;padding:clamp(16px,2vh,28px)}.service-card--strip .service-card__media img{max-width:88%;max-height:min(82%,clamp(120px,20vh,240px))}.service-card--strip .service-card__body{flex-direction:column;justify-content:center;gap:clamp(10px,1.2vh,14px);padding:clamp(16px,2vh,24px) clamp(24px,2.8vw,40px);display:flex}.service-card--strip .service-card__content{flex:0 auto;min-width:0;max-width:75ch}.service-card--strip .service-card__title{letter-spacing:-.01em;margin-bottom:clamp(6px,.7vh,10px);font-size:clamp(18px,1.55vw,22px)}.service-card--strip .service-card__desc{font-size:clamp(13px,1.05vw,15px);line-height:1.58}.service-card--strip .service-card__tags{border-top:1px solid oklch(50.5% .18 253/.16);flex-shrink:0;justify-content:flex-start;align-self:flex-start;gap:10px;max-width:none;margin-top:0;padding-top:clamp(10px,1.2vh,14px)}.service-card--strip .service-card__index{letter-spacing:.1em;color:oklch(50.5% .18 253/.55);opacity:1;font-size:12px;inset:clamp(12px,1.4vh,16px) clamp(16px,2vw,24px) auto auto}.service-card--strip .tech-tag{color:oklch(36% .11 253);background:oklch(50.5% .18 253/.13);border:1px solid oklch(50.5% .18 253/.26);padding:4px 12px;font-size:11px}.services-bento .tech-tag{padding:3px 8px;font-size:11px}}@media (width<=639px){.service-card--strip .service-card__media{border-bottom:1px solid oklch(50.5% .18 253/.2);border-right:none;min-height:140px}.service-card--strip .service-card__media img{max-height:clamp(100px,28vw,140px)}.service-card--strip .service-card__body{padding:20px 22px 28px}.service-card--strip .service-card__desc{font-size:14px;line-height:1.6}.service-card--strip .service-card__tags{border-top:1px solid oklch(50.5% .18 253/.14);padding-top:12px}}@media (prefers-reduced-motion:reduce){.navbar{transition:none}}@media (width>=900px){.portfolio-preview{grid-template-rows:minmax(0,1.32fr) minmax(0,1fr);height:90vh;max-height:90vh;display:grid}}@media (prefers-reduced-motion:reduce){.portfolio-signal--archive .portfolio-signal__archive-overlay{-webkit-backdrop-filter:none;background:oklch(20% .04 258/.88)}}@media (width>=768px){.portfolio-signals{flex-direction:row;align-items:stretch}.portfolio-signal{flex:1 1 0;min-width:0}}@media (width>=768px) and (width<=899px){.portfolio-signal{height:100%}.portfolio-signal__media{aspect-ratio:unset;flex:auto;min-height:100px;padding:0}.portfolio-signal__media img{-o-object-fit:cover;object-fit:cover}}@media (width>=900px){.portfolio-anchor{flex-direction:row;align-items:stretch;min-height:0;max-height:100%;overflow:hidden}.portfolio-anchor__media{flex:0 0 52%;min-height:0;padding:clamp(12px,1.5vh,20px)}.portfolio-anchor__media img{max-height:100%}.portfolio-anchor__body{flex-direction:column;flex:1;justify-content:center;min-height:0;display:flex;overflow:hidden}.portfolio-signals{align-content:stretch;height:100%;max-height:100%}.portfolio-signal{flex-direction:row;align-items:stretch;height:100%;max-height:100%}.portfolio-signal__media{aspect-ratio:unset;flex:0 0 40%;align-self:stretch;height:auto;min-height:0;padding:0}.portfolio-signal__media img{-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center;width:100%;height:100%}.portfolio-signal__body{justify-content:center;padding:10px 12px}.portfolio-signal__desc{-webkit-line-clamp:2;margin-bottom:6px}.portfolio-signal__actions{gap:6px}.portfolio-cat-badge{padding:3px 8px;font-size:10px;top:8px;left:8px}}@media (prefers-reduced-motion:no-preference){.portfolio-signal:not(.portfolio-signal--archive):hover{border-color:var(--border-brand-hover);box-shadow:var(--shadow-md)}.portfolio-signal:not(.portfolio-signal--archive):hover .portfolio-signal__title{color:var(--brand-blue)}.portfolio-signal--archive:hover{border-color:var(--border-brand-hover);box-shadow:var(--shadow-md)}}@media (width<=639px){.portfolio-modal{border-radius:var(--radius-lg);width:100%;height:100%;max-height:none}.portfolio-modal__grid{grid-template-columns:1fr}.portfolio-signal__actions{flex-direction:column;align-items:stretch}.portfolio-signal__link,.portfolio-see-more{text-align:center;justify-content:center;width:100%}}@media (width<=768px){.process-line{display:none}.hide-mobile{display:none!important}.show-mobile{display:flex!important}}@media (width>=769px){.show-mobile{display:none!important}}@media (width<=640px){.contact-form-grid{grid-template-columns:1fr}}@media (width<=900px){.about-values-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){.about-values-grid{grid-template-columns:1fr}.about-stats-overlap{margin-bottom:20px}.about-stats-offset{margin-left:0}.form-input,.form-select{min-height:44px;font-size:16px}#accueil,#services,#process,#portfolio,#apropos,#contact{padding-top:72px!important;padding-bottom:72px!important}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}#cursor{display:none!important}#scroll-bar{transition:none}.scroll-to-top{transition:opacity .15s,visibility .15s;transform:none}.scroll-to-top--visible{transform:none}.fade-in,.fade-in.visible{opacity:1;transition:none;transform:none}.hero-enter,.hero-enter--delay,.hero-float,.hero-cursor-blink,.hero-status-pulse,.hero-underline,.contact-success-enter,.loading-spin,.draw-line,.ripple-effect{animation:none!important}.hero-underline{stroke-dashoffset:0}.services-bento .service-card,.services-bento .service-card__media img,.services-bento .service-card__title,.services-bento .tech-tag{transition:none!important;transform:none!important}}:root,:host{--fa-font-solid:normal 900 1em/1 "Font Awesome 7 Free";--fa-font-regular:normal 400 1em/1 "Font Awesome 7 Free";--fa-font-light:normal 300 1em/1 "Font Awesome 7 Pro";--fa-font-thin:normal 100 1em/1 "Font Awesome 7 Pro";--fa-font-duotone:normal 900 1em/1 "Font Awesome 7 Duotone";--fa-font-duotone-regular:normal 400 1em/1 "Font Awesome 7 Duotone";--fa-font-duotone-light:normal 300 1em/1 "Font Awesome 7 Duotone";--fa-font-duotone-thin:normal 100 1em/1 "Font Awesome 7 Duotone";--fa-font-brands:normal 400 1em/1 "Font Awesome 7 Brands";--fa-font-sharp-solid:normal 900 1em/1 "Font Awesome 7 Sharp";--fa-font-sharp-regular:normal 400 1em/1 "Font Awesome 7 Sharp";--fa-font-sharp-light:normal 300 1em/1 "Font Awesome 7 Sharp";--fa-font-sharp-thin:normal 100 1em/1 "Font Awesome 7 Sharp";--fa-font-sharp-duotone-solid:normal 900 1em/1 "Font Awesome 7 Sharp Duotone";--fa-font-sharp-duotone-regular:normal 400 1em/1 "Font Awesome 7 Sharp Duotone";--fa-font-sharp-duotone-light:normal 300 1em/1 "Font Awesome 7 Sharp Duotone";--fa-font-sharp-duotone-thin:normal 100 1em/1 "Font Awesome 7 Sharp Duotone";--fa-font-slab-regular:normal 400 1em/1 "Font Awesome 7 Slab";--fa-font-slab-press-regular:normal 400 1em/1 "Font Awesome 7 Slab Press";--fa-font-whiteboard-semibold:normal 600 1em/1 "Font Awesome 7 Whiteboard";--fa-font-thumbprint-light:normal 300 1em/1 "Font Awesome 7 Thumbprint";--fa-font-notdog-solid:normal 900 1em/1 "Font Awesome 7 Notdog";--fa-font-notdog-duo-solid:normal 900 1em/1 "Font Awesome 7 Notdog Duo";--fa-font-etch-solid:normal 900 1em/1 "Font Awesome 7 Etch";--fa-font-graphite-thin:normal 100 1em/1 "Font Awesome 7 Graphite";--fa-font-jelly-regular:normal 400 1em/1 "Font Awesome 7 Jelly";--fa-font-jelly-fill-regular:normal 400 1em/1 "Font Awesome 7 Jelly Fill";--fa-font-jelly-duo-regular:normal 400 1em/1 "Font Awesome 7 Jelly Duo";--fa-font-chisel-regular:normal 400 1em/1 "Font Awesome 7 Chisel";--fa-font-utility-semibold:normal 600 1em/1 "Font Awesome 7 Utility";--fa-font-utility-duo-semibold:normal 600 1em/1 "Font Awesome 7 Utility Duo";--fa-font-utility-fill-semibold:normal 600 1em/1 "Font Awesome 7 Utility Fill"}.svg-inline--fa{box-sizing:content-box;display:var(--fa-display,inline-block);vertical-align:-.125em;height:1em;width:var(--fa-width,1.25em);overflow:visible}.svg-inline--fa.fa-2xs{vertical-align:.1em}.svg-inline--fa.fa-xs{vertical-align:0}.svg-inline--fa.fa-sm{vertical-align:-.0714286em}.svg-inline--fa.fa-lg{vertical-align:-.2em}.svg-inline--fa.fa-xl{vertical-align:-.25em}.svg-inline--fa.fa-2xl{vertical-align:-.3125em}.svg-inline--fa.fa-pull-left,.svg-inline--fa .fa-pull-start{float:inline-start;margin-inline-end:var(--fa-pull-margin,.3em)}.svg-inline--fa.fa-pull-right,.svg-inline--fa .fa-pull-end{float:inline-end;margin-inline-start:var(--fa-pull-margin,.3em)}.svg-inline--fa.fa-li{width:var(--fa-li-width,2em);inset-block-start:.25em;inset-inline-start:calc(-1 * var(--fa-li-width,2em))}.fa-layers-counter,.fa-layers-text{text-align:center;display:inline-block;position:absolute}.fa-layers{text-align:center;vertical-align:-.125em;height:1em;width:var(--fa-width,1.25em);display:inline-block;position:relative}.fa-layers .svg-inline--fa{transform-origin:50%;margin:auto;position:absolute;inset:0}.fa-layers-text{transform-origin:50%;top:50%;left:50%;transform:translate(-50%,-50%)}.fa-layers-counter{background-color:var(--fa-counter-background-color,#ff253a);border-radius:var(--fa-counter-border-radius,1em);box-sizing:border-box;color:var(--fa-inverse,#fff);line-height:var(--fa-counter-line-height,1);max-width:var(--fa-counter-max-width,5em);min-width:var(--fa-counter-min-width,1.5em);padding:var(--fa-counter-padding,.25em .5em);right:var(--fa-right,0);text-overflow:ellipsis;top:var(--fa-top,0);transform:scale(var(--fa-counter-scale,.25));transform-origin:100% 0;overflow:hidden}.fa-layers-bottom-right{bottom:var(--fa-bottom,0);right:var(--fa-right,0);transform:scale(var(--fa-layers-scale,.25));transform-origin:100% 100%;top:auto}.fa-layers-bottom-left{bottom:var(--fa-bottom,0);left:var(--fa-left,0);transform:scale(var(--fa-layers-scale,.25));transform-origin:0 100%;top:auto;right:auto}.fa-layers-top-right{top:var(--fa-top,0);right:var(--fa-right,0);transform:scale(var(--fa-layers-scale,.25));transform-origin:100% 0}.fa-layers-top-left{left:var(--fa-left,0);right:auto;top:var(--fa-top,0);transform:scale(var(--fa-layers-scale,.25));transform-origin:0 0}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{vertical-align:.225em;font-size:.625em;line-height:.1em}.fa-xs{vertical-align:.125em;font-size:.75em;line-height:.0833333em}.fa-sm{vertical-align:.0535715em;font-size:.875em;line-height:.0714286em}.fa-lg{vertical-align:-.075em;font-size:1.25em;line-height:.05em}.fa-xl{vertical-align:-.125em;font-size:1.5em;line-height:.0416667em}.fa-2xl{vertical-align:-.1875em;font-size:2em;line-height:.03125em}.fa-width-auto{--fa-width:auto}.fa-fw,.fa-width-fixed{--fa-width:1.25em}.fa-ul{margin-inline-start:var(--fa-li-margin,2.5em);padding-inline-start:0;list-style-type:none}.fa-ul>li{position:relative}.fa-li{text-align:center;width:var(--fa-li-width,2em);line-height:inherit;position:absolute;inset-inline-start:calc(-1 * var(--fa-li-width,2em))}.fa-border{border-color:var(--fa-border-color,#eee);border-radius:var(--fa-border-radius,.1em);border-style:var(--fa-border-style,solid);border-width:var(--fa-border-width,.0625em);box-sizing:var(--fa-border-box-sizing,content-box);padding:var(--fa-border-padding,.1875em .25em)}.fa-pull-left,.fa-pull-start{float:inline-start;margin-inline-end:var(--fa-pull-margin,.3em)}.fa-pull-right,.fa-pull-end{float:inline-end;margin-inline-start:var(--fa-pull-margin,.3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28, .84, .42, 1))}.fa-fade{animation-name:fa-fade;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4, 0, .6, 1))}.fa-beat-fade{animation-name:fa-beat-fade;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4, 0, .6, 1))}.fa-flip{animation-name:fa-flip;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{animation-name:fa-shake;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin{animation-name:fa-spin;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,2s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-bounce,.fa-fade,.fa-beat-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{transition:none!important;animation:none!important}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-bounce{0%{transform:scale(1)translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x,1.1), var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x,.9), var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x,1.05), var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{transform:scale(1, 1) translateY(var(--fa-bounce-rebound,-.125em))}64%{transform:scale(1)translateY(0)}to{transform:scale(1)translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x,0), var(--fa-flip-y,1), var(--fa-flip-z,0), var(--fa-flip-angle,-180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%,24%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,to{transform:rotate(0)}}@keyframes fa-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle,0))}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor);opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.svg-inline--fa.fa-inverse{fill:var(--fa-inverse,#fff)}.fa-stack{vertical-align:middle;width:2.5em;height:2em;line-height:2em;display:inline-block;position:relative}.fa-inverse{color:var(--fa-inverse,#fff)}.svg-inline--fa.fa-stack-1x{--fa-width:1.25em;height:1em;width:var(--fa-width)}.svg-inline--fa.fa-stack-2x{--fa-width:2.5em;height:2em;width:var(--fa-width)}.fa-stack-1x,.fa-stack-2x{z-index:var(--fa-stack-z-index,auto);margin:auto;position:absolute;inset:0}.cookie-consent{z-index:9999;max-width:420px;margin-left:auto;margin-right:auto;position:fixed;inset:auto 16px 16px}@media (width>=640px){.cookie-consent{margin:0;inset:auto 24px 24px auto}}.cookie-consent__inner{border-radius:var(--radius-md,12px);background:var(--brand-dark,#1a1f2e);border:1px solid #ffffff1f;padding:20px;box-shadow:0 12px 40px #00000059}.cookie-consent__title{color:var(--brand-white,#fff);margin:0 0 8px;font-size:15px;font-weight:700}.cookie-consent__text{color:var(--brand-gray,#9ca3af);margin:0 0 16px;font-size:13px;line-height:1.5}.cookie-consent__actions{justify-content:flex-end;gap:10px;display:flex}.cookie-consent__btn{border-radius:var(--radius-sm,8px);cursor:pointer;border:none;padding:10px 16px;font-size:13px;font-weight:600}.cookie-consent__btn--secondary{color:var(--brand-gray,#9ca3af);background:0 0;border:1px solid #ffffff26}.cookie-consent__btn--primary{background:var(--brand-blue,#3b82f6);color:#fff}.cookie-consent__btn:focus-visible{outline:2px solid var(--brand-blue,#3b82f6);outline-offset:2px}
