1<!DOCTYPE html><html lang="en" data-beasties-container><head> 2 <meta charset="utf-8"> 3 <title>About DoÄu Tümerdem â Senior Software Architect, Netherlands</title> 4 <base href="/"> 5 <meta name="viewport" content="width=device-width, initial-scale=1"> 6 <meta name="description" content="Senior software architect with 10+ years on business-critical systems â ASML, Canon, and public-sector clients in the Netherlands and Turkey. Based in Someren, Netherlands."> 7 <meta name="theme-color" content="#172554"> 8 <link rel="icon" type="image/x-icon" href="favicon.ico"> 9 <link rel="preconnect" href="https://fonts.googleapis.com"> 10 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 11 <style>@font-face{font-family:'Raleway';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyCAIT5lu.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Raleway';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyCkIT5lu.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Raleway';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyCIIT5lu.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Raleway';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyCMIT5lu.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Raleway';font-style:normal;font-weight:300;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyC0ITw.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'Raleway';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyCAIT5lu.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Raleway';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyCkIT5lu.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Raleway';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyCIIT5lu.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Raleway';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyCMIT5lu.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Raleway';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyC0ITw.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'Raleway';font-style:normal;font-weight:500;font-display:swap;
11src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyCAIT5lu.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Raleway';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyCkIT5lu.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Raleway';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyCIIT5lu.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Raleway';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyCMIT5lu.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Raleway';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyC0ITw.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'Raleway';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyCAIT5lu.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Raleway';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyCkIT5lu.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Raleway';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyCIIT5lu.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Raleway';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyCMIT5lu.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Raleway';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyC0ITw.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'Raleway';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyCAIT5lu.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Raleway';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyCkIT5lu.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Raleway';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyCIIT5lu.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Raleway';font-style:normal;font-weight:700;font-display:swap;
11src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyCMIT5lu.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Raleway';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/raleway/v37/1Ptug8zYS_SKggPNyC0ITw.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}</style> 12 <style>@font-face{font-family:'Material Icons';font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialicons/v145/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2) format('woff2');}.material-icons{font-family:'Material Icons';font-weight:normal;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:'liga';-webkit-font-smoothing:antialiased;}</style> 13 <style>@font-face{font-family:Roboto Condensed;src:url(/fonts/RobotoCondensed-VariableFont_wght.ttf) format("truetype");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Roboto Condensed;src:url(/fonts/RobotoCondensed-Italic-VariableFont_wght.ttf) format("truetype");font-weight:100 900;font-style:italic;font-display:swap}:root{--paper: #ffffff;--ink: #162032;--text: #334155;--accent: #2470bc;--accent-strong: #2470bc;--highlight: #636363;--muted: #64748b;--surface: #f8fafc;--line: #e5e7eb;--ink-soft: #475569;--maxw: 1180px;--radius: 12px;--radius-lg: 16px;--ease: cubic-bezier(.2, .7, .2, 1);--font-display: "Raleway", system-ui, sans-serif;--font-body: "Raleway", system-ui, -apple-system, sans-serif;--font-wordmark: "Roboto Condensed", system-ui, sans-serif}html{height:100%;--mat-sys-background: light-dark(#fcf8fd, #131316);--mat-sys-error: light-dark(#ba1a1a, #ffb4ab);--mat-sys-error-container: light-dark(#ffdad6, #93000a);--mat-sys-inverse-on-surface: light-dark(#f3eff4, #303034);--mat-sys-inverse-primary: light-dark(#bec2ff, #343dff);--mat-sys-inverse-surface: light-dark(#303034, #e5e1e6);--mat-sys-on-background: light-dark(#1b1b1f, #e5e1e6);--mat-sys-on-error: light-dark(#ffffff, #690005);--mat-sys-on-error-container: light-dark(#93000a, #ffdad6);--mat-sys-on-primary: light-dark(#ffffff, #0001ac);--mat-sys-on-primary-container: light-dark(#0000ef, #e0e0ff);--mat-sys-on-primary-fixed: light-dark(#00006e, #00006e);--mat-sys-on-primary-fixed-variant: light-dark(#0000ef, #0000ef);--mat-sys-on-secondary: light-dark(#ffffff, #2e2f42);--mat-sys-on-secondary-container: light-dark(#444559, #e1e0f9);--mat-sys-on-secondary-fixed: light-dark(#191a2c, #191a2c);--mat-sys-on-secondary-fixed-variant: light-dark(#444559, #444559);--mat-sys-on-surface: light-dark(#1b1b1f, #e5e1e6);--mat-sys-on-surface-variant: light-dark(#46464f, #e4e1ec);--mat-sys-on-tertiary: light-dark(#ffffff, #0001ac);--mat-sys-on-tertiary-container: light-dark(#0000ef, #e0e0ff);--mat-sys-on-tertiary-fixed: light-dark(#00006e, #00006e);--mat-sys-on-tertiary-fixed-variant: light-dark(#0000ef, #0000ef);--mat-sys-outline: light-dark(#777680, #91909a);--mat-sys-outline-variant: light-dark(#c7c5d0, #46464f);--mat-sys-primary: light-dark(#343dff, #bec2ff);--mat-sys-primary-container: light-dark(#e0e0ff, #0000ef);--mat-sys-primary-fixed: light-dark(#e0e0ff, #e0e0ff);--mat-sys-primary-fixed-dim: light-dark(#bec2ff, #bec2ff);--mat-sys-scrim: light-dark(#000000, #000000);--mat-sys-secondary: light-dark(#5c5d72, #c5c4dd);--mat-sys-secondary-container: light-dark(#e1e0f9, #444559);--mat-sys-secondary-fixed: light-dark(#e1e0f9, #e1e0f9);--mat-sys-secondary-fixed-dim: light-dark(#c5c4dd, #c5c4dd);--mat-sys-shadow: light-dark(#000000, #000000);--mat-sys-surface: light-dark(#fcf8fd, #131316);--mat-sys-surface-bright: light-dark(#fcf8fd, #3a393c);--mat-sys-surface-container: light-dark(#f0edf1, #201f22);--mat-sys-surface-container-high: light-dark(#ebe7eb, #2a292d);--mat-sys-surface-container-highest: light-dark(#e5e1e6, #353438);--mat-sys-surface-container-low: light-dark(#f6f2f7, #1b1b1f);--mat-sys-surface-container-lowest: light-dark(#ffffff, #0e0e11);--mat-sys-surface-dim: light-dark(#dcd9dd, #131316);--mat-sys-surface-tint: light-dark(#343dff, #bec2ff);--mat-sys-surface-variant: light-dark(#e4e1ec, #46464f);--mat-sys-tertiary: light-dark(#343dff, #bec2ff);--mat-sys-tertiary-container: light-dark(#e0e0ff, #0000ef);--mat-sys-tertiary-fixed: light-dark(#e0e0ff, #e0e0ff);--mat-sys-tertiary-fixed-dim: light-dark(#bec2ff, #bec2ff);--mat-sys-neutral-variant20: #303038;--mat-sys-neutral10: #1b1b1f;--mat-sys-level0: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-sys-level1: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-sys-level2: 0px 3px 3px -2px rgba(0, 0, 0, .2), 0px 3px 4px 0px rgba(0, 0, 0, .14), 0px 1px 8px 0px rgba(0, 0, 0, .12);--mat-sys-level3: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mat-sys-level4: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mat-sys-level5: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mat-sys-body-large: 400 1rem / 1.5rem Raleway;--mat-sys-body-large-font: Raleway;--mat-sys-body-large-line-height: 1.5rem;--mat-sys-body-large-size: 1rem;--mat-sys-body-large-tracking: .031rem;--mat-sys-body-large-weight: 400;--mat-sys-body-medium: 400 .875rem / 1.25rem Raleway;--mat-sys-body-medium-font: Raleway;--mat-sys-body-medium-line-height: 1.25rem;--mat-sys-body-medium-size: .875rem;--mat-sys-body-medium-tracking: .016rem;--mat-sys-body-medium-weight: 400;
13--mat-sys-body-small: 400 .75rem / 1rem Raleway;--mat-sys-body-small-font: Raleway;--mat-sys-body-small-line-height: 1rem;--mat-sys-body-small-size: .75rem;--mat-sys-body-small-tracking: .025rem;--mat-sys-body-small-weight: 400;--mat-sys-display-large: 400 3.562rem / 4rem Raleway;--mat-sys-display-large-font: Raleway;--mat-sys-display-large-line-height: 4rem;--mat-sys-display-large-size: 3.562rem;--mat-sys-display-large-tracking: -.016rem;--mat-sys-display-large-weight: 400;--mat-sys-display-medium: 400 2.812rem / 3.25rem Raleway;--mat-sys-display-medium-font: Raleway;--mat-sys-display-medium-line-height: 3.25rem;--mat-sys-display-medium-size: 2.812rem;--mat-sys-display-medium-tracking: 0;--mat-sys-display-medium-weight: 400;--mat-sys-display-small: 400 2.25rem / 2.75rem Raleway;--mat-sys-display-small-font: Raleway;--mat-sys-display-small-line-height: 2.75rem;--mat-sys-display-small-size: 2.25rem;--mat-sys-display-small-tracking: 0;--mat-sys-display-small-weight: 400;--mat-sys-headline-large: 400 2rem / 2.5rem Raleway;--mat-sys-headline-large-font: Raleway;--mat-sys-headline-large-line-height: 2.5rem;--mat-sys-headline-large-size: 2rem;--mat-sys-headline-large-tracking: 0;--mat-sys-headline-large-weight: 400;--mat-sys-headline-medium: 400 1.75rem / 2.25rem Raleway;--mat-sys-headline-medium-font: Raleway;--mat-sys-headline-medium-line-height: 2.25rem;--mat-sys-headline-medium-size: 1.75rem;--mat-sys-headline-medium-tracking: 0;--mat-sys-headline-medium-weight: 400;--mat-sys-headline-small: 400 1.5rem / 2rem Raleway;--mat-sys-headline-small-font: Raleway;--mat-sys-headline-small-line-height: 2rem;--mat-sys-headline-small-size: 1.5rem;--mat-sys-headline-small-tracking: 0;--mat-sys-headline-small-weight: 400;--mat-sys-label-large: 500 .875rem / 1.25rem Raleway;--mat-sys-label-large-font: Raleway;--mat-sys-label-large-line-height: 1.25rem;--mat-sys-label-large-size: .875rem;--mat-sys-label-large-tracking: .006rem;--mat-sys-label-large-weight: 500;--mat-sys-label-large-weight-prominent: 700;--mat-sys-label-medium: 500 .75rem / 1rem Raleway;--mat-sys-label-medium-font: Raleway;--mat-sys-label-medium-line-height: 1rem;--mat-sys-label-medium-size: .75rem;--mat-sys-label-medium-tracking: .031rem;--mat-sys-label-medium-weight: 500;--mat-sys-label-medium-weight-prominent: 700;--mat-sys-label-small: 500 .688rem / 1rem Raleway;--mat-sys-label-small-font: Raleway;--mat-sys-label-small-line-height: 1rem;--mat-sys-label-small-size: .688rem;--mat-sys-label-small-tracking: .031rem;--mat-sys-label-small-weight: 500;--mat-sys-title-large: 400 1.375rem / 1.75rem Raleway;--mat-sys-title-large-font: Raleway;--mat-sys-title-large-line-height: 1.75rem;--mat-sys-title-large-size: 1.375rem;--mat-sys-title-large-tracking: 0;--mat-sys-title-large-weight: 400;--mat-sys-title-medium: 500 1rem / 1.5rem Raleway;--mat-sys-title-medium-font: Raleway;--mat-sys-title-medium-line-height: 1.5rem;--mat-sys-title-medium-size: 1rem;--mat-sys-title-medium-tracking: .009rem;--mat-sys-title-medium-weight: 500;--mat-sys-title-small: 500 .875rem / 1.25rem Raleway;--mat-sys-title-small-font: Raleway;--mat-sys-title-small-line-height: 1.25rem;--mat-sys-title-small-size: .875rem;--mat-sys-title-small-tracking: .006rem;--mat-sys-title-small-weight: 500;--mat-sys-corner-extra-large: 28px;--mat-sys-corner-extra-large-top: 28px 28px 0 0;--mat-sys-corner-extra-small: 4px;--mat-sys-corner-extra-small-top: 4px 4px 0 0;--mat-sys-corner-full: 9999px;--mat-sys-corner-large-end: 0 16px 16px 0;--mat-sys-corner-large-start: 16px 0 0 16px;--mat-sys-corner-large-top: 16px 16px 0 0;--mat-sys-corner-none: 0;--mat-sys-corner-small: 8px;--mat-sys-dragged-state-layer-opacity: .16;--mat-sys-focus-state-layer-opacity: .12;--mat-sys-hover-state-layer-opacity: .08;--mat-sys-pressed-state-layer-opacity: .12;--mat-sys-primary: var(--accent);--mat-sys-on-primary: #ffffff;--mat-sys-primary-container: #dbeafe;--mat-sys-on-primary-container: #162032;--mat-sys-surface: var(--paper);--mat-sys-on-surface: var(--ink);--mat-sys-surface-container: var(--surface);--mat-sys-surface-container-low: var(--surface);--mat-sys-surface-container-high: #eef2f7;--mat-sys-on-surface-variant: var(--ink-soft);--mat-sys-outline: var(--muted);--mat-sys-outline-variant: var(--line);--mat-sys-background: var(--paper);--mat-sys-on-background: var(--ink);--mat-sys-error: #b3261e;--mat-sys-corner-medium: 12px;--mat-sys-corner-large: 16px}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;min-height:100%;background-color:var(--paper);background-image:linear-gradient(#fff9,#fff9),url(/art/bg.jpg);background-size:cover;background-position:center;background-repeat:no-repeat;background-attachment:fixed;color:var(--text);font-family:var(--font-body);font-size:clamp(1rem,.96rem + .2vw,1.0625rem);line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3{font-family:var(--font-display);font-weight:700;line-height:1.15;letter-spacing:-.01em;color:var(--ink);margin:0 0 .6em}p{margin:0 0 1rem}a{color:var(--accent-strong);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:3px}img{max-width:100%;display:block}.wrap{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:clamp(1.25rem,4vw,2.5rem)}section{opacity:.7}.section{padding-block:clamp(3rem,6vw,5.5rem)}.section--surface{background:var(--surface);border-block:1px solid var(--line)}.section--ink{background:var(--ink);color:var(--paper)}.section--ink h2{color:var(--paper)}.eyebrow{font-family:var(--font-display);display:inline-block;font-size:.8rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--accent-strong);margin:0 0 1rem}.section-title{font-size:clamp(1.6rem,1.2rem + 1.4vw,2.25rem)}.lede{font-size:clamp(1.05rem,1rem + .4vw,1.2rem);color:var(--ink-soft);max-width:60ch}.btn{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--font-body);font-weight:600;font-size:1rem;line-height:1;border-radius:var(--radius);padding:.85rem 1.4rem;cursor:pointer;border:1px solid transparent;transition:background-color .15s var(--ease),color .15s var(--ease),border-color .15s var(--ease)}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-strong);text-decoration:none}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}} 14</style><link rel="stylesheet" href="styles-A2L6BSMD.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-A2L6BSMD.css"></noscript><style ng-app-id="ng">[_nghost-ng-c2623730230]{display:flex;flex-direction:column;min-height:100dvh}main[_ngcontent-ng-c2623730230]{flex:1 0 auto}.skip-link[_ngcontent-ng-c2623730230]{position:absolute;
14left:-9999px;top:0;z-index:1000;background:var(--ink);color:var(--paper);padding:.6rem 1rem;border-radius:0 0 var(--radius) 0}.skip-link[_ngcontent-ng-c2623730230]:focus{left:0}</style><style ng-app-id="ng">.site-header[_ngcontent-ng-c20459858]{position:sticky;top:0;z-index:100;background:color-mix(in srgb,var(--paper) 88%,transparent);-webkit-backdrop-filter:saturate(140%) blur(8px);backdrop-filter:saturate(140%) blur(8px);border-bottom:1px solid var(--line)}.nav[_ngcontent-ng-c20459858]{display:flex;align-items:center;gap:1.5rem;padding-block:.9rem}.wordmark[_ngcontent-ng-c20459858]{display:inline-flex;align-items:center;gap:.55rem;font-family:var(--font-wordmark);font-size:2rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--highlight);margin-right:auto}.wordmark[_ngcontent-ng-c20459858]:hover{text-decoration:none}.wordmark-logo[_ngcontent-ng-c20459858]{height:1.6em;width:auto;display:block}.nav-links[_ngcontent-ng-c20459858]{display:flex;gap:1.5rem}.nav-links[_ngcontent-ng-c20459858] a[_ngcontent-ng-c20459858]{color:var(--ink);font-weight:500;font-size:.95rem;padding-block:.25rem;border-bottom:2px solid transparent}.nav-link[_ngcontent-ng-c20459858]{display:inline-flex;align-items:center;gap:.4rem}.nav-logo[_ngcontent-ng-c20459858]{height:1.15em;width:auto;display:block}.nav-links[_ngcontent-ng-c20459858] a[_ngcontent-ng-c20459858]:hover{color:var(--accent-strong);text-decoration:none}.nav-links[_ngcontent-ng-c20459858] a.active[_ngcontent-ng-c20459858]{color:var(--accent-strong);border-bottom-color:var(--accent-strong)}.nav-item--parent[_ngcontent-ng-c20459858]{position:relative;display:inline-flex;align-items:center}.nav-parent[_ngcontent-ng-c20459858]{appearance:none;background:none;border:none;border-bottom:2px solid transparent;margin:0;padding:.25rem 0;cursor:pointer;color:var(--ink);font:inherit;font-weight:500;font-size:.95rem;gap:.25rem}.nav-parent[_ngcontent-ng-c20459858]:hover{color:var(--accent-strong)}.nav-caret[_ngcontent-ng-c20459858]{font-size:1.15rem;width:1.15rem;height:1.15rem;transition:transform .15s ease}.nav-item--parent[_ngcontent-ng-c20459858]:hover .nav-caret[_ngcontent-ng-c20459858], .nav-item--parent[_ngcontent-ng-c20459858]:focus-within .nav-caret[_ngcontent-ng-c20459858]{transform:rotate(180deg)}.nav-submenu[_ngcontent-ng-c20459858]{position:absolute;top:calc(100% + .35rem);left:0;z-index:10;min-width:12rem;max-width:min(16rem,100vw - 2rem);margin:0;padding:.35rem;list-style:none;display:flex;flex-direction:column;gap:.15rem;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 12px 28px -12px #00000059;opacity:0;visibility:hidden;transform:translateY(-.25rem);transition:opacity .15s ease,transform .15s ease,visibility .15s}.nav-item--parent[_ngcontent-ng-c20459858]:hover .nav-submenu[_ngcontent-ng-c20459858], .nav-item--parent[_ngcontent-ng-c20459858]:focus-within .nav-submenu[_ngcontent-ng-c20459858]{opacity:1;visibility:visible;transform:translateY(0)}.nav-submenu[_ngcontent-ng-c20459858] li[_ngcontent-ng-c20459858]{display:flex}.nav-submenu[_ngcontent-ng-c20459858] a[_ngcontent-ng-c20459858]{flex:1;padding:.5rem .6rem;border-radius:calc(var(--radius) - 4px);border-bottom:none;white-space:nowrap}.nav-submenu[_ngcontent-ng-c20459858] a[_ngcontent-ng-c20459858]:hover{background:color-mix(in srgb,var(--accent-strong) 10%,transparent)}.nav-submenu[_ngcontent-ng-c20459858] a.active[_ngcontent-ng-c20459858]{color:var(--accent-strong);border-bottom:none;background:color-mix(in srgb,var(--accent-strong) 12%,transparent)}.nav-actions[_ngcontent-ng-c20459858]{display:flex;align-items:center;gap:.5rem}.get-in-touch[_ngcontent-ng-c20459858]{padding:.6rem 1.05rem;font-size:.95rem}.menu-toggle[_ngcontent-ng-c20459858]{display:none}.mobile-nav[_ngcontent-ng-c20459858]{border-top:1px solid var(--line);background:var(--paper);padding-block:.5rem 1rem}.mobile-nav[_ngcontent-ng-c20459858] .wrap[_ngcontent-ng-c20459858]{display:flex;flex-direction:column;gap:.25rem}.mobile-nav[_ngcontent-ng-c20459858] a[_ngcontent-ng-c20459858]{color:var(--ink);font-weight:500;padding:.7rem 0;border-bottom:1px solid var(--line)}.mobile-nav[_ngcontent-ng-c20459858] a.active[_ngcontent-ng-c20459858]{color:var(--accent-strong)}.mobile-group-label[_ngcontent-ng-c20459858]{color:var(--muted, var(--ink));font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;padding:.7rem 0 .2rem;opacity:.7}.mobile-nav[_ngcontent-ng-c20459858] a.mobile-child[_ngcontent-ng-c20459858]{padding-left:.9rem}.mobile-nav[_ngcontent-ng-c20459858] .btn[_ngcontent-ng-c20459858]{margin-top:.8rem;justify-content:center;border-bottom:none}@media(max-width:860px){.nav-links[_ngcontent-ng-c20459858], .get-in-touch[_ngcontent-ng-c20459858]{display:none}.menu-toggle[_ngcontent-ng-c20459858]{display:inline-flex}}@media(min-width:861px){.mobile-nav[_ngcontent-ng-c20459858]{display:none}}</style><style ng-app-id="ng">.site-footer[_ngcontent-ng-c1371357180]{background:var(--ink);color:color-mix(in srgb,var(--paper) 82%,transparent);padding-top:clamp(2.5rem,5vw,4rem);margin-top:auto}.footer-grid[_ngcontent-ng-c1371357180]{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:2rem;padding-bottom:2.5rem}.wordmark[_ngcontent-ng-c1371357180]{display:inline-flex;align-items:center;gap:.55rem;font-family:var(--font-wordmark);font-size:2rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;margin-bottom:.8rem}.wordmark-logo[_ngcontent-ng-c1371357180]{height:1.6em;width:auto;display:block}.footer-brand[_ngcontent-ng-c1371357180] p[_ngcontent-ng-c1371357180]{max-width:36ch;font-size:.95rem;line-height:1.6}h3[_ngcontent-ng-c1371357180]{font-family:var(--font-display);font-size:.8rem;letter-spacing:.1em;text-transform:uppercase;color:var(--paper);margin:0 0 1rem}.footer-nav[_ngcontent-ng-c1371357180], .footer-contact[_ngcontent-ng-c1371357180], .footer-social[_ngcontent-ng-c1371357180]{display:flex;flex-direction:column;gap:.6rem}.site-footer[_ngcontent-ng-c1371357180] a[_ngcontent-ng-c1371357180]{color:color-mix(in srgb,var(--paper) 82%,transparent);font-size:.95rem}.site-footer[_ngcontent-ng-c1371357180] a[_ngcontent-ng-c1371357180]:hover{color:var(--accent);text-decoration:none}.muted[_ngcontent-ng-c1371357180]{color:var(--muted);font-size:.95rem}.footer-legal[_ngcontent-ng-c1371357180]{display:flex;justify-content:space-between;align-items:center;border-top:1px solid color-mix(in srgb,var(--paper) 16%,transparent);padding-block:1.25rem;font-size:.85rem;color:var(--muted)}@media(max-width:760px){.footer-grid[_ngcontent-ng-c1371357180]{grid-template-columns:1fr 1fr}}@media(max-width:460px){.footer-grid[_ngcontent-ng-c1371357180]{grid-template-columns:1fr}}</style><style ng-app-id="ng">.cookie-notice[_ngcontent-ng-c2254782119]{position:fixed;left:50%;bottom:clamp(.75rem,2vw,1.5rem);transform:translate(-50%);z-index:1000;width:min(100% - 1.5rem,560px);display:flex;align-items:center;gap:1rem;padding:.85rem 1.1rem;background:var(--ink);color:color-mix(in srgb,var(--paper) 88%,transparent);border:1px solid color-mix(in srgb,var(--paper) 16%,transparent);border-radius:var(--radius);box-shadow:0 8px 30px #00000038}.cookie-notice__text[_ngcontent-ng-c2254782119]{margin:0;font-size:.85rem;line-height:1.5}.cookie-notice__dismiss[_ngcontent-ng-c2254782119]{flex:0 0 auto;font-family:var(--font-body);font-weight:600;font-size:.85rem;line-height:1;color:var(--ink);background:var(--paper);border:0;border-radius:var(--radius);padding:.55rem .9rem;cursor:pointer;transition:background-color .15s var(--ease)}.cookie-notice__dismiss[_ngcontent-ng-c2254782119]:hover{background:var(--accent);color:#fff}@media(max-width:460px){.cookie-notice[_ngcontent-ng-c2254782119]{flex-direction:column;align-items:stretch;text-align:center}}</style><style ng-app-id="ng">.lang-trigger[_ngcontent-ng-c1005577388]{font-family:var(--font-body);font-weight:500}.lang-code[_ngcontent-ng-c1005577388]{margin-left:.3rem;letter-spacing:.02em}</style><style ng-app-id="ng">.mat-mdc-icon-button { 15 -webkit-user-select: none; 16 user-select: none; 17 display: inline-block; 18 position: relative; 19 box-sizing: border-box; 20 border: none; 21 outline: none; 22 background-color: transparent; 23 fill: currentColor; 24 text-decoration: none; 25 cursor: pointer; 26 z-index: 0; 27 overflow: visible; 28 border-radius: var(--mat-icon-button-container-shape, var(--mat-sys-corner-full, 50%)); 29 flex-shrink: 0; 30 text-align: center; 31 width: var(--mat-icon-button-state-layer-size, 40px); 32 height: var(--mat-icon-button-state-layer-size, 40px); 33 padding: calc(calc(var(--mat-icon-button-state-layer-size, 40px) - var(--mat-icon-button-icon-size, 24px)) / 2); 34 font-size: var(--mat-icon-button-icon-size, 24px); 35 color: var(--mat-icon-button-icon-color, var(--mat-sys-on-surface-variant)); 36 -webkit-tap-highlight-color: transparent; 37} 38.mat-mdc-icon-button .mat-mdc-button-ripple, 39.mat-mdc-icon-button .mat-mdc-button-persistent-ripple, 40.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before { 41 top: 0; 42 left: 0; 43 right: 0; 44 bottom: 0; 45 position: absolute; 46 pointer-events: none; 47 border-radius: inherit; 48} 49.mat-mdc-icon-button .mat-mdc-button-ripple { 50 overflow: hidden; 51} 52.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before { 53 content: ""; 54 opacity: 0; 55} 56.mat-mdc-icon-button .mdc-button__label, 57.mat-mdc-icon-button .mat-icon { 58 z-index: 1; 59 position: relative; 60} 61.mat-mdc-icon-button .mat-focus-indicator { 62 top: 0; 63 left: 0; 64 right: 0; 65 bottom: 0; 66 position: absolute; 67 border-radius: inherit; 68} 69.mat-mdc-icon-button:focus-visible > .mat-focus-indicator::before { 70 content: ""; 71 border-radius: inherit; 72} 73.mat-mdc-icon-button .mat-ripple-element { 74 background-color: var(--mat-icon-button-ripple-color, color-mix(in srgb, var(--mat-sys-on-surface-variant) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent)); 75} 76.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before { 77 background-color: var(--mat-icon-button-state-layer-color, var(--mat-sys-on-surface-variant)); 78} 79.mat-mdc-icon-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before { 80 background-color: var(--mat-icon-button-disabled-state-layer-color, var(--mat-sys-on-surface-variant)); 81} 82.mat-mdc-icon-button:hover > .mat-mdc-button-persistent-ripple::before { 83 opacity: var(--mat-icon-button-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity)); 84} 85.mat-mdc-icon-button.cdk-program-focused > .mat-mdc-button-persistent-ripple::before, .mat-mdc-icon-button.cdk-keyboard-focused > .mat-mdc-button-persistent-ripple::before, .mat-mdc-icon-button.mat-mdc-button-disabled-interactive:focus > .mat-mdc-button-persistent-ripple::before { 86 opacity: var(--mat-icon-button-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity)); 87} 88.mat-mdc-icon-button:active > .mat-mdc-button-persistent-ripple::before { 89 opacity: var(--mat-icon-button-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity)); 90} 91.mat-mdc-icon-button .mat-mdc-button-touch-target { 92 position: absolute; 93 top: 50%; 94 height: var(--mat-icon-button-touch-target-size, 48px); 95 display: var(--mat-icon-button-touch-target-display, block); 96 left: 50%; 97 width: var(--mat-icon-button-touch-target-size, 48px); 98 transform: translate(-50%, -50%); 99} 100.mat-mdc-icon-button._mat-animation-noopable { 101 transition: none !important; 102 animation: none !important; 103} 104.mat-mdc-icon-button[disabled], .mat-mdc-icon-button.mat-mdc-button-disabled { 105 cursor: default; 106 pointer-events: none; 107 color: var(--mat-icon-button-disabled-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent)); 108} 109.mat-mdc-icon-button.mat-mdc-button-disabled-interactive { 110 pointer-events: auto; 111} 112.mat-mdc-icon-button img, 113.mat-mdc-icon-button svg { 114 width: var(--mat-icon-button-icon-size, 24px); 115 height: var(--mat-icon-button-icon-size, 24px); 116 vertical-align: baseline; 117} 118.mat-mdc-icon-button .mat-mdc-button-persistent-ripple { 119 border-radius: var(--mat-icon-button-container-shape, var(--mat-sys-corner-full, 50%)); 120} 121.mat-mdc-icon-button[hidden] { 122 display: none; 123} 124.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before, .mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before, .mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before, .mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before { 125 background: transparent; 126 opacity: 1; 127} 128</style><style ng-app-id="ng">@media (forced-colors: active) { 129 .mat-mdc-button:not(.mdc-button--outlined), 130 .mat-mdc-unelevated-button:not(.mdc-button--outlined), 131 .mat-mdc-raised-button:not(.mdc-button--outlined), 132 .mat-mdc-outlined-button:not(.mdc-button--outlined), 133 .mat-mdc-button-base.mat-tonal-button, 134 .mat-mdc-icon-button.mat-mdc-icon-button, 135 .mat-mdc-outlined-button .mdc-button__ripple { 136 outline: solid 1px; 137 } 138} 139</style><style ng-app-id="ng">.mat-focus-indicator { 140 position: relative; 141} 142.mat-focus-indicator::before { 143 top: 0; 144 left: 0; 145 right: 0; 146 bottom: 0; 147 position: absolute; 148 box-sizing: border-box; 149 pointer-events: none; 150 display: var(--mat-focus-indicator-display, none); 151 border-width: var(--mat-focus-indicator-border-width, 3px); 152 border-style: var(--mat-focus-indicator-border-style, solid); 153 border-color: var(--mat-focus-indicator-border-color, transparent); 154 border-radius: var(--mat-focus-indicator-border-radius, 4px); 155} 156.mat-focus-indicator:focus-visible::before { 157 content: ""; 158} 159 160@media (forced-colors: active) { 161 html { 162 --mat-focus-indicator-display: block; 163 } 164} 165</style><style ng-app-id="ng">mat-icon, mat-icon.mat-primary, mat-icon.mat-accent, mat-icon.mat-warn { 166 color: var(--mat-icon-color, inherit); 167} 168 169.mat-icon { 170 -webkit-user-select: none; 171 user-select: none; 172 background-repeat: no-repeat; 173 display: inline-block; 174 fill: currentColor; 175 height: 24px; 176 width: 24px; 177 overflow: hidden; 178} 179.mat-icon.mat-icon-inline { 180 font-size: inherit; 181 height: inherit; 182 line-height: inherit; 183 width: inherit; 184} 185.mat-icon.mat-ligature-font[fontIcon]::before { 186 content: attr(fontIcon); 187} 188 189[dir=rtl] .mat-icon-rtl-mirror { 190 transform: scale(-1, 1); 191} 192 193.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon, 194.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon { 195 display: block; 196} 197.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon, 198.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon { 199 margin: auto; 200} 201</style><style ng-app-id="ng">.mat-mdc-button-base { 202 text-decoration: none; 203} 204.mat-mdc-button-base .mat-icon { 205 min-height: fit-content; 206 flex-shrink: 0; 207} 208@media (hover: none) { 209 .mat-mdc-button-base:hover > span.mat-mdc-button-persistent-ripple::before { 210 opacity: 0; 211 } 212} 213 214.mdc-button { 215 -webkit-user-select: none; 216 user-select: none; 217 position: relative; 218 display: inline-flex; 219 align-items: center; 220 justify-content: center; 221 box-sizing: border-box; 222 min-width: 64px; 223 border: none; 224 outline: none; 225 line-height: inherit; 226 -webkit-appearance: none; 227 overflow: visible; 228 vertical-align: middle; 229 background: transparent; 230 padding: 0 8px; 231} 232.mdc-button::-moz-focus-inner { 233 padding: 0; 234 border: 0; 235} 236.mdc-button:active { 237 outline: none; 238} 239.mdc-button:hover {
240 cursor: pointer; 241} 242.mdc-button:disabled { 243 cursor: default; 244 pointer-events: none; 245} 246.mdc-button[hidden] { 247 display: none; 248} 249.mdc-button .mdc-button__label { 250 position: relative; 251} 252 253.mat-mdc-button { 254 padding: 0 var(--mat-button-text-horizontal-padding, 12px); 255 height: var(--mat-button-text-container-height, 40px); 256 font-family: var(--mat-button-text-label-text-font, var(--mat-sys-label-large-font)); 257 font-size: var(--mat-button-text-label-text-size, var(--mat-sys-label-large-size)); 258 letter-spacing: var(--mat-button-text-label-text-tracking, var(--mat-sys-label-large-tracking)); 259 text-transform: var(--mat-button-text-label-text-transform); 260 font-weight: var(--mat-button-text-label-text-weight, var(--mat-sys-label-large-weight)); 261} 262.mat-mdc-button, .mat-mdc-button .mdc-button__ripple { 263 border-radius: var(--mat-button-text-container-shape, var(--mat-sys-corner-full)); 264} 265.mat-mdc-button:not(:disabled) { 266 color: var(--mat-button-text-label-text-color, var(--mat-sys-primary)); 267} 268.mat-mdc-button[disabled], .mat-mdc-button.mat-mdc-button-disabled { 269 cursor: default; 270 pointer-events: none; 271 color: var(--mat-button-text-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent)); 272} 273.mat-mdc-button.mat-mdc-button-disabled-interactive { 274 pointer-events: auto; 275} 276.mat-mdc-button:has(.material-icons, mat-icon, [matButtonIcon]) { 277 padding: 0 var(--mat-button-text-with-icon-horizontal-padding, 16px); 278} 279.mat-mdc-button > .mat-icon { 280 margin-right: var(--mat-button-text-icon-spacing, 8px); 281 margin-left: var(--mat-button-text-icon-offset, -4px); 282} 283[dir=rtl] .mat-mdc-button > .mat-icon { 284 margin-right: var(--mat-button-text-icon-offset, -4px); 285 margin-left: var(--mat-button-text-icon-spacing, 8px); 286} 287.mat-mdc-button .mdc-button__label + .mat-icon { 288 margin-right: var(--mat-button-text-icon-offset, -4px); 289 margin-left: var(--mat-button-text-icon-spacing, 8px); 290} 291[dir=rtl] .mat-mdc-button .mdc-button__label + .mat-icon { 292 margin-right: var(--mat-button-text-icon-spacing, 8px); 293 margin-left: var(--mat-button-text-icon-offset, -4px); 294} 295.mat-mdc-button .mat-ripple-element { 296 background-color: var(--mat-button-text-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent)); 297} 298.mat-mdc-button .mat-mdc-button-persistent-ripple::before { 299 background-color: var(--mat-button-text-state-layer-color, var(--mat-sys-primary)); 300} 301.mat-mdc-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before { 302 background-color: var(--mat-button-text-disabled-state-layer-color, var(--mat-sys-on-surface-variant)); 303} 304.mat-mdc-button:hover > .mat-mdc-button-persistent-ripple::before { 305 opacity: var(--mat-button-text-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity)); 306} 307.mat-mdc-button.cdk-program-focused > .mat-mdc-button-persistent-ripple::before, .mat-mdc-button.cdk-keyboard-focused > .mat-mdc-button-persistent-ripple::before, .mat-mdc-button.mat-mdc-button-disabled-interactive:focus > .mat-mdc-button-persistent-ripple::before { 308 opacity: var(--mat-button-text-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity)); 309} 310.mat-mdc-button:active > .mat-mdc-button-persistent-ripple::before { 311 opacity: var(--mat-button-text-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity)); 312} 313.mat-mdc-button .mat-mdc-button-touch-target { 314 position: absolute; 315 top: 50%; 316 height: var(--mat-button-text-touch-target-size, 48px); 317 display: var(--mat-button-text-touch-target-display, block); 318 left: 0; 319 right: 0; 320 transform: translateY(-50%); 321} 322 323.mat-mdc-unelevated-button { 324 transition: box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1); 325 height: var(--mat-button-filled-container-height, 40px); 326 font-family: var(--mat-button-filled-label-text-font, var(--mat-sys-label-large-font)); 327 font-size: var(--mat-button-filled-label-text-size, var(--mat-sys-label-large-size)); 328 letter-spacing: var(--mat-button-filled-label-text-tracking, var(--mat-sys-label-large-tracking)); 329 text-transform: var(--mat-button-filled-label-text-transform); 330 font-weight: var(--mat-button-filled-label-text-weight, var(--mat-sys-label-large-weight)); 331 padding: 0 var(--mat-button-filled-horizontal-padding, 24px); 332} 333.mat-mdc-unelevated-button > .mat-icon { 334 margin-right: var(--mat-button-filled-icon-spacing, 8px); 335 margin-left: var(--mat-button-filled-icon-offset, -8px); 336} 337[dir=rtl] .mat-mdc-unelevated-button > .mat-icon { 338 margin-right: var(--mat-button-filled-icon-offset, -8px); 339 margin-left: var(--mat-button-filled-icon-spacing, 8px); 340} 341.mat-mdc-unelevated-button .mdc-button__label + .mat-icon { 342 margin-right: var(--mat-button-filled-icon-offset, -8px); 343 margin-left: var(--mat-button-filled-icon-spacing, 8px); 344} 345[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label + .mat-icon { 346 margin-right: var(--mat-button-filled-icon-spacing, 8px); 347 margin-left: var(--mat-button-filled-icon-offset, -8px); 348} 349.mat-mdc-unelevated-button .mat-ripple-element { 350 background-color: var(--mat-button-filled-ripple-color, color-mix(in srgb, var(--mat-sys-on-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent)); 351} 352.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before { 353 background-color: var(--mat-button-filled-state-layer-color, var(--mat-sys-on-primary)); 354} 355.mat-mdc-unelevated-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before { 356 background-color: var(--mat-button-filled-disabled-state-layer-color, var(--mat-sys-on-surface-variant)); 357} 358.mat-mdc-unelevated-button:hover > .mat-mdc-button-persistent-ripple::before { 359 opacity: var(--mat-button-filled-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity)); 360} 361.mat-mdc-unelevated-button.cdk-program-focused > .mat-mdc-button-persistent-ripple::before, .mat-mdc-unelevated-button.cdk-keyboard-focused > .mat-mdc-button-persistent-ripple::before, .mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive:focus > .mat-mdc-button-persistent-ripple::before { 362 opacity: var(--mat-button-filled-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity)); 363} 364.mat-mdc-unelevated-button:active > .mat-mdc-button-persistent-ripple::before { 365 opacity: var(--mat-button-filled-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity)); 366} 367.mat-mdc-unelevated-button .mat-mdc-button-touch-target { 368 position: absolute; 369 top: 50%; 370 height: var(--mat-button-filled-touch-target-size, 48px); 371 display: var(--mat-button-filled-touch-target-display, block); 372 left: 0; 373 right: 0; 374 transform: translateY(-50%); 375} 376.mat-mdc-unelevated-button:not(:disabled) { 377 color: var(--mat-button-filled-label-text-color, var(--mat-sys-on-primary)); 378 background-color: var(--mat-button-filled-container-color, var(--mat-sys-primary)); 379} 380.mat-mdc-unelevated-button, .mat-mdc-unelevated-button .mdc-button__ripple { 381 border-radius: var(--mat-button-filled-container-shape, var(--mat-sys-corner-full)); 382} 383.mat-mdc-unelevated-button[disabled], .mat-mdc-unelevated-button.mat-mdc-button-disabled { 384 cursor: default; 385 pointer-events: none; 386 color: var(--mat-button-filled-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent)); 387 background-color: var(--mat-button-filled-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent)); 388} 389.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive { 390 pointer-events: auto; 391} 392 393.mat-mdc-raised-button { 394 transition: box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1); 395 box-shadow: var(--mat-button-protected-container-elevation-shadow, var(--mat-sys-level1)); 396 height: var(--mat-button-protected-container-height, 40px); 397 font-family: var(--mat-button-protected-label-text-font, var(--mat-sys-label-large-font)); 398 font-size: var(--mat-button-protected-label-text-size, var(--mat-sys-label-large-size)); 399 letter-spacing: var(--mat-button-protected-label-text-tracking, var(--mat-sys-label-large-tracking)); 400 text-transform: var(--mat-button-protected-label-text-transform); 401 font-weight: var(--mat-button-protected-label-text-weight, var(--mat-sys-label-large-weight)); 402 padding: 0 var(--mat-button-protected-horizontal-padding, 24px); 403} 404.mat-mdc-raised-button > .mat-icon { 405 margin-right: var(--mat-button-protected-icon-spacing, 8px); 406 margin-left: var(--mat-button-protected-icon-offset, -8px); 407} 408[dir=rtl] .mat-mdc-raised-button > .mat-icon { 409 margin-right: var(--mat-button-protected-icon-offset, -8px); 410 margin-left: var(--mat-button-protected-icon-spacing, 8px); 411} 412.mat-mdc-raised-button .mdc-button__label + .mat-icon { 413 margin-right: var(--mat-button-protected-icon-offset, -8px); 414 margin-left: var(--mat-button-protected-icon-spacing, 8px); 415} 416[dir=rtl] .mat-mdc-raised-button .mdc-button__label + .mat-icon { 417 margin-right: var(--mat-button-protected-icon-spacing, 8px); 418 margin-left: var(--mat-button-protected-icon-offset, -8px); 419} 420.mat-mdc-raised-button .mat-ripple-element { 421 background-color: var(--mat-button-protected-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent)); 422} 423.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before { 424 background-color: var(--mat-button-protected-state-layer-color, var(--mat-sys-primary)); 425} 426.mat-mdc-raised-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before { 427 background-color: var(--mat-button-protected-disabled-state-layer-color, var(--mat-sys-on-surface-variant)); 428} 429.mat-mdc-raised-button:hover > .mat-mdc-button-persistent-ripple::before { 430 opacity: var(--mat-button-protected-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity)); 431} 432.mat-mdc-raised-button.cdk-program-focused > .mat-mdc-button-persistent-ripple::before, .mat-mdc-raised-button.cdk-keyboard-focused > .mat-mdc-button-persistent-ripple::before, .mat-mdc-raised-button.mat-mdc-button-disabled-interactive:focus > .mat-mdc-button-persistent-ripple::before { 433 opacity: var(--mat-button-protected-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity)); 434} 435.mat-mdc-raised-button:active > .mat-mdc-button-persistent-ripple::before { 436 opacity: var(--mat-button-protected-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity)); 437} 438.mat-mdc-raised-button .mat-mdc-button-touch-target { 439 position: absolute; 440 top: 50%; 441 height: var(--mat-button-protected-touch-target-size, 48px); 442 display: var(--mat-button-protected-touch-target-display, block); 443 left: 0; 444 right: 0; 445 transform: translateY(-50%); 446} 447.mat-mdc-raised-button:not(:disabled) { 448 color: var(--mat-button-protected-label-text-color, var(--mat-sys-primary)); 449 background-color: var(--mat-button-protected-container-color, var(--mat-sys-surface)); 450} 451.mat-mdc-raised-button, .mat-mdc-raised-button .mdc-button__ripple { 452 border-radius: var(--mat-button-protected-container-shape, var(--mat-sys-corner-full)); 453} 454@media (hover: hover) { 455 .mat-mdc-raised-button:hover { 456 box-shadow: var(--mat-button-protected-hover-container-elevation-shadow, var(--mat-sys-level2)); 457 } 458} 459.mat-mdc-raised-button:focus { 460 box-shadow: var(--mat-button-protected-focus-container-elevation-shadow, var(--mat-sys-level1)); 461} 462.mat-mdc-raised-button:active, .mat-mdc-raised-button:focus:active { 463 box-shadow: var(--mat-button-protected-pressed-container-elevation-shadow, var(--mat-sys-level1)); 464} 465.mat-mdc-raised-button[disabled], .mat-mdc-raised-button.mat-mdc-button-disabled { 466 cursor: default; 467 pointer-events: none; 468 color: var(--mat-button-protected-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent)); 469 background-color: var(--mat-button-protected-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent)); 470} 471.mat-mdc-raised-button[disabled].mat-mdc-button-disabled, .mat-mdc-raised-button.mat-mdc-button-disabled.mat-mdc-button-disabled { 472 box-shadow: var(--mat-button-protected-disabled-container-elevation-shadow, var(--mat-sys-level0)); 473} 474.mat-mdc-raised-button.mat-mdc-button-disabled-interactive { 475 pointer-events: auto; 476} 477 478.mat-mdc-outlined-button { 479 border-style: solid; 480 transition: border 280ms cubic-bezier(0.4, 0, 0.2, 1); 481 height: var(--mat-button-outlined-container-height, 40px); 482 font-family: var(--mat-button-outlined-label-text-font, var(--mat-sys-label-large-font)); 483 font-size: var(--mat-button-outlined-label-text-size, var(--mat-sys-label-large-size)); 484 letter-spacing: var(--mat-button-outlined-label-text-tracking, var(--mat-sys-label-large-tracking)); 485 text-transform: var(--mat-button-outlined-label-text-transform); 486 font-weight: var(--mat-button-outlined-label-text-weight, var(--mat-sys-label-large-weight)); 487 border-radius: var(--mat-button-outlined-container-shape, var(--mat-sys-corner-full)); 488 border-width: var(--mat-button-outlined-outline-width, 1px); 489 padding: 0 var(--mat-button-outlined-horizontal-padding, 24px); 490} 491.mat-mdc-outlined-button > .mat-icon { 492 margin-right: var(--mat-button-outlined-icon-spacing, 8px); 493 margin-left: var(--mat-button-outlined-icon-offset, -8px); 494} 495[dir=rtl] .mat-mdc-outlined-button > .mat-icon { 496 margin-right: var(--mat-button-outlined-icon-offset, -8px); 497 margin-left: var(--mat-button-outlined-icon-spacing, 8px); 498} 499.mat-mdc-outlined-button .mdc-button__label + .mat-icon { 500 margin-right: var(--mat-button-outlined-icon-offset, -8px); 501 margin-left: var(--mat-button-outlined-icon-spacing, 8px); 502} 503[dir=rtl] .mat-mdc-outlined-button .mdc-button__label + .mat-icon { 504 margin-right: var(--mat-button-outlined-icon-spacing, 8px); 505 margin-left: var(--mat-button-outlined-icon-offset, -8px); 506} 507.mat-mdc-outlined-button .mat-ripple-element { 508 background-color: var(--mat-button-outlined-ripple-color, color-mix(in srgb, var(--mat-sys-primary) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent)); 509} 510.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before { 511 background-color: var(--mat-button-outlined-state-layer-color, var(--mat-sys-primary)); 512} 513.mat-mdc-outlined-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before { 514 background-color: var(--mat-button-outlined-disabled-state-layer-color, var(--mat-sys-on-surface-variant)); 515} 516.mat-mdc-outlined-button:hover > .mat-mdc-button-persistent-ripple::before { 517 opacity: var(--mat-button-outlined-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity)); 518} 519.mat-mdc-outlined-button.cdk-program-focused > .mat-mdc-button-persistent-ripple::before, .mat-mdc-outlined-button.cdk-keyboard-focused > .mat-mdc-button-persistent-ripple::before, .mat-mdc-outlined-button.mat-mdc-button-disabled-interactive:focus > .mat-mdc-button-persistent-ripple::before { 520 opacity: var(--mat-button-outlined-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity)); 521} 522.mat-mdc-outlined-button:active > .mat-mdc-button-persistent-ripple::before { 523 opacity: var(--mat-button-outlined-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity)); 524} 525.mat-mdc-outlined-button .mat-mdc-button-touch-target { 526 position: absolute; 527 top: 50%; 528 height: var(--mat-button-outlined-touch-target-size, 48px); 529 display: var(--mat-button-outlined-touch-target-display, block); 530 left: 0; 531 right: 0; 532 transform: translateY(-50%); 533} 534.mat-mdc-outlined-button:not(:disabled) { 535 color: var(--mat-button-outlined-label-text-color, var(--mat-sys-primary)); 536 border-color: var(--mat-button-outlined-outline-color, var(--mat-sys-outline)); 537} 538.mat-mdc-outlined-button[disabled], .mat-mdc-outlined-button.mat-mdc-button-disabled { 539 cursor: default; 540 pointer-events: none; 541 color: var(--mat-button-outlined-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent)); 542 border-color: var(--mat-button-outlined-disabled-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent)); 543} 544.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive { 545 pointer-events: auto; 546} 547 548.mat-tonal-button { 549 transition: box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1); 550 height: var(--mat-button-tonal-container-height, 40px); 551 font-family: var(--mat-button-tonal-label-text-font, var(--mat-sys-label-large-font)); 552 font-size: var(--mat-button-tonal-label-text-size, var(--mat-sys-label-large-size)); 553 lette
553r-spacing: var(--mat-button-tonal-label-text-tracking, var(--mat-sys-label-large-tracking)); 554 text-transform: var(--mat-button-tonal-label-text-transform); 555 font-weight: var(--mat-button-tonal-label-text-weight, var(--mat-sys-label-large-weight)); 556 padding: 0 var(--mat-button-tonal-horizontal-padding, 24px); 557} 558.mat-tonal-button:not(:disabled) { 559 color: var(--mat-button-tonal-label-text-color, var(--mat-sys-on-secondary-container)); 560 background-color: var(--mat-button-tonal-container-color, var(--mat-sys-secondary-container)); 561} 562.mat-tonal-button, .mat-tonal-button .mdc-button__ripple { 563 border-radius: var(--mat-button-tonal-container-shape, var(--mat-sys-corner-full)); 564} 565.mat-tonal-button[disabled], .mat-tonal-button.mat-mdc-button-disabled { 566 cursor: default; 567 pointer-events: none; 568 color: var(--mat-button-tonal-disabled-label-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent)); 569 background-color: var(--mat-button-tonal-disabled-container-color, color-mix(in srgb, var(--mat-sys-on-surface) 12%, transparent)); 570} 571.mat-tonal-button.mat-mdc-button-disabled-interactive { 572 pointer-events: auto; 573} 574.mat-tonal-button > .mat-icon { 575 margin-right: var(--mat-button-tonal-icon-spacing, 8px); 576 margin-left: var(--mat-button-tonal-icon-offset, -8px); 577} 578[dir=rtl] .mat-tonal-button > .mat-icon { 579 margin-right: var(--mat-button-tonal-icon-offset, -8px); 580 margin-left: var(--mat-button-tonal-icon-spacing, 8px); 581} 582.mat-tonal-button .mdc-button__label + .mat-icon { 583 margin-right: var(--mat-button-tonal-icon-offset, -8px); 584 margin-left: var(--mat-button-tonal-icon-spacing, 8px); 585} 586[dir=rtl] .mat-tonal-button .mdc-button__label + .mat-icon { 587 margin-right: var(--mat-button-tonal-icon-spacing, 8px); 588 margin-left: var(--mat-button-tonal-icon-offset, -8px); 589} 590.mat-tonal-button .mat-ripple-element { 591 background-color: var(--mat-button-tonal-ripple-color, color-mix(in srgb, var(--mat-sys-on-secondary-container) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent)); 592} 593.mat-tonal-button .mat-mdc-button-persistent-ripple::before { 594 background-color: var(--mat-button-tonal-state-layer-color, var(--mat-sys-on-secondary-container)); 595} 596.mat-tonal-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before { 597 background-color: var(--mat-button-tonal-disabled-state-layer-color, var(--mat-sys-on-surface-variant)); 598} 599.mat-tonal-button:hover > .mat-mdc-button-persistent-ripple::before { 600 opacity: var(--mat-button-tonal-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity)); 601} 602.mat-tonal-button.cdk-program-focused > .mat-mdc-button-persistent-ripple::before, .mat-tonal-button.cdk-keyboard-focused > .mat-mdc-button-persistent-ripple::before, .mat-tonal-button.mat-mdc-button-disabled-interactive:focus > .mat-mdc-button-persistent-ripple::before { 603 opacity: var(--mat-button-tonal-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity)); 604} 605.mat-tonal-button:active > .mat-mdc-button-persistent-ripple::before { 606 opacity: var(--mat-button-tonal-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity)); 607} 608.mat-tonal-button .mat-mdc-button-touch-target { 609 position: absolute; 610 top: 50%; 611 height: var(--mat-button-tonal-touch-target-size, 48px); 612 display: var(--mat-button-tonal-touch-target-display, block); 613 left: 0; 614 right: 0; 615 transform: translateY(-50%); 616} 617 618.mat-mdc-button, 619.mat-mdc-unelevated-button, 620.mat-mdc-raised-button, 621.mat-mdc-outlined-button, 622.mat-tonal-button { 623 -webkit-tap-highlight-color: transparent; 624} 625.mat-mdc-button .mat-mdc-button-ripple, 626.mat-mdc-button .mat-mdc-button-persistent-ripple, 627.mat-mdc-button .mat-mdc-button-persistent-ripple::before, 628.mat-mdc-unelevated-button .mat-mdc-button-ripple, 629.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple, 630.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before, 631.mat-mdc-raised-button .mat-mdc-button-ripple, 632.mat-mdc-raised-button .mat-mdc-button-persistent-ripple, 633.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before, 634.mat-mdc-outlined-button .mat-mdc-button-ripple, 635.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple, 636.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before, 637.mat-tonal-button .mat-mdc-button-ripple, 638.mat-tonal-button .mat-mdc-button-persistent-ripple, 639.mat-tonal-button .mat-mdc-button-persistent-ripple::before { 640 top: 0; 641 left: 0; 642 right: 0; 643 bottom: 0; 644 position: absolute; 645 pointer-events: none; 646 border-radius: inherit; 647} 648.mat-mdc-button .mat-mdc-button-ripple, 649.mat-mdc-unelevated-button .mat-mdc-button-ripple, 650.mat-mdc-raised-button .mat-mdc-button-ripple, 651.mat-mdc-outlined-button .mat-mdc-button-ripple, 652.mat-tonal-button .mat-mdc-button-ripple { 653 overflow: hidden; 654} 655.mat-mdc-button .mat-mdc-button-persistent-ripple::before, 656.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before, 657.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before, 658.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before, 659.mat-tonal-button .mat-mdc-button-persistent-ripple::before { 660 content: ""; 661 opacity: 0; 662} 663.mat-mdc-button .mdc-button__label, 664.mat-mdc-button .mat-icon, 665.mat-mdc-unelevated-button .mdc-button__label, 666.mat-mdc-unelevated-button .mat-icon, 667.mat-mdc-raised-button .mdc-button__label, 668.mat-mdc-raised-button .mat-icon, 669.mat-mdc-outlined-button .mdc-button__label, 670.mat-mdc-outlined-button .mat-icon, 671.mat-tonal-button .mdc-button__label, 672.mat-tonal-button .mat-icon { 673 z-index: 1; 674 position: relative; 675} 676.mat-mdc-button .mat-focus-indicator, 677.mat-mdc-unelevated-button .mat-focus-indicator, 678.mat-mdc-raised-button .mat-focus-indicator, 679.mat-mdc-outlined-button .mat-focus-indicator, 680.mat-tonal-button .mat-focus-indicator { 681 top: 0; 682 left: 0; 683 right: 0; 684 bottom: 0; 685 position: absolute; 686 border-radius: inherit; 687} 688.mat-mdc-button:focus-visible > .mat-focus-indicator::before, 689.mat-mdc-unelevated-button:focus-visible > .mat-focus-indicator::before, 690.mat-mdc-raised-button:focus-visible > .mat-focus-indicator::before, 691.mat-mdc-outlined-button:focus-visible > .mat-focus-indicator::before, 692.mat-tonal-button:focus-visible > .mat-focus-indicator::before { 693 content: ""; 694 border-radius: inherit; 695} 696.mat-mdc-button._mat-animation-noopable, 697.mat-mdc-unelevated-button._mat-animation-noopable, 698.mat-mdc-raised-button._mat-animation-noopable, 699.mat-mdc-outlined-button._mat-animation-noopable, 700.mat-tonal-button._mat-animation-noopable { 701 transition: none !important; 702 animation: none !important; 703} 704.mat-mdc-button > .mat-icon, 705.mat-mdc-unelevated-button > .mat-icon, 706.mat-mdc-raised-button > .mat-icon, 707.mat-mdc-outlined-button > .mat-icon, 708.mat-tonal-button > .mat-icon { 709 display: inline-block; 710 position: relative; 711 vertical-align: top; 712 font-size: 1.125rem; 713 height: 1.125rem; 714 width: 1.125rem; 715} 716 717.mat-mdc-outlined-button .mat-mdc-button-ripple, 718.mat-mdc-outlined-button .mdc-button__ripple { 719 top: -1px; 720 left: -1px; 721 bottom: -1px; 722 right: -1px; 723} 724 725.mat-mdc-unelevated-button .mat-focus-indicator::before, 726.mat-tonal-button .mat-focus-indicator::before, 727.mat-mdc-raised-button .mat-focus-indicator::before { 728 margin: calc(calc(var(--mat-focus-indicator-border-width, 3px) + 2px) * -1); 729} 730 731.mat-mdc-outlined-button .mat-focus-indicator::before { 732 margin: calc(calc(var(--mat-focus-indicator-border-width, 3px) + 3px) * -1); 733} 734</style><style ng-app-id="ng">mat-menu { 735 display: none; 736} 737 738.mat-mdc-menu-content { 739 margin: 0; 740 padding: 8px 0; 741 outline: 0; 742} 743.mat-mdc-menu-content, 744.mat-mdc-menu-content .mat-mdc-menu-item .mat-mdc-menu-item-text { 745 -moz-osx-font-smoothing: grayscale; 746 -webkit-font-smoothing: antialiased; 747 flex: 1; 748 white-space: normal; 749 font-family: var(--mat-menu-item-label-text-font, var(--mat-sys-label-large-font)); 750 line-height: var(--mat-menu-item-label-text-line-height, var(--mat-sys-label-large-line-height)); 751 font-size: var(--mat-menu-item-label-text-size, var(--mat-sys-label-large-size)); 752 letter-spacing: var(--mat-menu-item-label-text-tracking, var(--mat-sys-label-large-tracking)); 753 font-weight: var(--mat-menu-item-label-text-weight, var(--mat-sys-label-large-weight)); 754} 755 756@keyframes _mat-menu-enter { 757 from { 758 opacity: 0; 759 transform: scale(0.8); 760 } 761 to { 762 opacity: 1; 763 transform: none; 764 } 765} 766@keyframes _mat-menu-exit { 767 from { 768 opacity: 1; 769 } 770 to { 771 opacity: 0; 772 } 773} 774.mat-mdc-menu-panel { 775 min-width: 112px; 776 max-width: 280px; 777 overflow: auto; 778 box-sizing: border-box; 779 outline: 0; 780 animation: _mat-menu-enter 120ms cubic-bezier(0, 0, 0.2, 1); 781 border-radius: var(--mat-menu-container-shape, var(--mat-sys-corner-extra-small)); 782 background-color: var(--mat-menu-container-color, var(--mat-sys-surface-container)); 783 box-shadow: var(--mat-menu-container-elevation-shadow, 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)); 784 will-change: transform, opacity; 785} 786.mat-mdc-menu-panel.mat-menu-panel-exit-animation { 787 animation: _mat-menu-exit 100ms 25ms linear forwards; 788} 789.mat-mdc-menu-panel.mat-menu-panel-animations-disabled { 790 animation: none; 791} 792.mat-mdc-menu-panel.mat-menu-panel-animating { 793 pointer-events: none; 794} 795.mat-mdc-menu-panel.mat-menu-panel-animating:has(.mat-mdc-menu-content:empty) { 796 display: none; 797} 798@media (forced-colors: active) { 799 .mat-mdc-menu-panel { 800 outline: solid 1px; 801 } 802} 803.mat-mdc-menu-panel .mat-divider { 804 border-top-color: var(--mat-menu-divider-color, var(--mat-sys-surface-variant));
805 margin-bottom: var(--mat-menu-divider-bottom-spacing, 8px); 806 margin-top: var(--mat-menu-divider-top-spacing, 8px); 807} 808 809.mat-mdc-menu-item { 810 display: flex; 811 position: relative; 812 align-items: center; 813 justify-content: flex-start; 814 overflow: hidden; 815 padding: 0; 816 cursor: pointer; 817 width: 100%; 818 text-align: left; 819 box-sizing: border-box; 820 color: inherit; 821 font-size: inherit; 822 background: none; 823 text-decoration: none; 824 margin: 0; 825 min-height: 48px; 826 padding-left: var(--mat-menu-item-leading-spacing, 12px); 827 padding-right: var(--mat-menu-item-trailing-spacing, 12px); 828 -webkit-user-select: none; 829 user-select: none; 830 cursor: pointer; 831 outline: none; 832 border: none; 833 -webkit-tap-highlight-color: transparent; 834} 835.mat-mdc-menu-item::-moz-focus-inner { 836 border: 0; 837} 838[dir=rtl] .mat-mdc-menu-item { 839 padding-left: var(--mat-menu-item-trailing-spacing, 12px); 840 padding-right: var(--mat-menu-item-leading-spacing, 12px); 841} 842.mat-mdc-menu-item:has(.material-icons, mat-icon, [matButtonIcon]) { 843 padding-left: var(--mat-menu-item-with-icon-leading-spacing, 12px); 844 padding-right: var(--mat-menu-item-with-icon-trailing-spacing, 12px); 845} 846[dir=rtl] .mat-mdc-menu-item:has(.material-icons, mat-icon, [matButtonIcon]) { 847 padding-left: var(--mat-menu-item-with-icon-trailing-spacing, 12px); 848 padding-right: var(--mat-menu-item-with-icon-leading-spacing, 12px); 849} 850.mat-mdc-menu-item, .mat-mdc-menu-item:visited, .mat-mdc-menu-item:link { 851 color: var(--mat-menu-item-label-text-color, var(--mat-sys-on-surface)); 852} 853.mat-mdc-menu-item .mat-icon-no-color, 854.mat-mdc-menu-item .mat-mdc-menu-submenu-icon { 855 color: var(--mat-menu-item-icon-color, var(--mat-sys-on-surface-variant)); 856} 857.mat-mdc-menu-item[disabled] { 858 cursor: default; 859 opacity: 0.38; 860} 861.mat-mdc-menu-item[disabled]::after { 862 display: block; 863 position: absolute; 864 content: ""; 865 top: 0; 866 left: 0; 867 bottom: 0; 868 right: 0; 869} 870.mat-mdc-menu-item:focus { 871 outline: 0; 872} 873.mat-mdc-menu-item .mat-icon { 874 flex-shrink: 0; 875 margin-right: var(--mat-menu-item-spacing, 12px); 876 height: var(--mat-menu-item-icon-size, 24px); 877 width: var(--mat-menu-item-icon-size, 24px); 878} 879[dir=rtl] .mat-mdc-menu-item { 880 text-align: right; 881} 882[dir=rtl] .mat-mdc-menu-item .mat-icon { 883 margin-right: 0; 884 margin-left: var(--mat-menu-item-spacing, 12px); 885} 886.mat-mdc-menu-item:not([disabled]):hover { 887 background-color: var(--mat-menu-item-hover-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent)); 888} 889.mat-mdc-menu-item:not([disabled]).cdk-program-focused, .mat-mdc-menu-item:not([disabled]).cdk-keyboard-focused, .mat-mdc-menu-item:not([disabled]).mat-mdc-menu-item-highlighted { 890 background-color: var(--mat-menu-item-focus-state-layer-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent)); 891} 892@media (forced-colors: active) { 893 .mat-mdc-menu-item {
894 margin-top: 1px; 895 } 896} 897 898.mat-mdc-menu-submenu-icon { 899 width: var(--mat-menu-item-icon-size, 24px); 900 height: 10px; 901 fill: currentColor; 902 padding-left: var(--mat-menu-item-spacing, 12px); 903} 904[dir=rtl] .mat-mdc-menu-submenu-icon { 905 padding-right: var(--mat-menu-item-spacing, 12px); 906 padding-left: 0; 907} 908[dir=rtl] .mat-mdc-menu-submenu-icon polygon { 909 transform: scaleX(-1); 910 transform-origin: center; 911} 912@media (forced-colors: active) { 913 .mat-mdc-menu-submenu-icon { 914 fill: CanvasText; 915 } 916} 917 918.mat-mdc-menu-item .mat-mdc-menu-ripple { 919 top: 0; 920 left: 0; 921 right: 0; 922 bottom: 0; 923 position: absolute; 924 pointer-events: none; 925} 926</style>
926<script id="ld-organization" type="application/ld+json">{"@context":"https://schema.org","@type":["ProfessionalService","LocalBusiness"],"name":"Tümerdem","description":"Netherlands-based software consultancy: architecture-led custom software, legacy modernization, cloud migration and digital transformation.","url":"https://tumerdem.nl","logo":"https://tumerdem.nl/art/tumerdem.png","email":"[email protected]","telephone":"+31621167920","areaServed":"Worldwide","address":{"@type":"PostalAddress","addressLocality":"Someren","addressCountry":"NL"},"founder":{"@type":"Person","name":"DoÄu Tümerdem"},"sameAs":["https://www.linkedin.com/in/tumerdemnnl/","https://github.com/dogutumerdem"]}</script>
926<script id="ld-person" type="application/ld+json">{"@context":"https://schema.org","@type":"Person","name":"DoÄu Tümerdem","jobTitle":"Senior Software Architect","url":"https://tumerdem.nl/about","sameAs":["https://www.linkedin.com/in/tumerdemnnl/","https://github.com/dogutumerdem"],"worksFor":{"@type":"Organization","name":"Tümerdem","url":"https://tumerdem.nl"}}</script>
926<script id="ld-website" type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"Tümerdem","url":"https://tumerdem.nl","potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://tumerdem.nl/portfolio?q={search_term_string}"},"query-input":"required name=search_term_string"}}</script>
926<style ng-app-id="ng">.mat-ripple { 927 overflow: hidden; 928 position: relative; 929} 930.mat-ripple:not(:empty) { 931 transform: translateZ(0); 932} 933 934.mat-ripple.mat-ripple-unbounded { 935 overflow: visible; 936} 937 938.mat-ripple-element { 939 position: absolute; 940 border-radius: 50%; 941 pointer-events: none; 942 transition: opacity, transform 0ms cubic-bezier(0, 0, 0.2, 1); 943 transform: scale3d(0, 0, 0); 944 background-color: var(--mat-ripple-color, color-mix(in srgb, var(--mat-sys-on-surface) 10%, transparent)); 945} 946@media (forced-colors: active) { 947 .mat-ripple-element { 948 display: none; 949 } 950} 951.cdk-drag-preview .mat-ripple-element, .cdk-drag-placeholder .mat-ripple-element { 952 display: none; 953} 954</style><style ng-app-id="ng">.about-intro[_ngcontent-ng-c1504834714]{display:grid;grid-template-columns:1.3fr .7fr;gap:clamp(2rem,5vw,4rem);align-items:start}.about-intro[_ngcontent-ng-c1504834714] .lede[_ngcontent-ng-c1504834714]{margin-bottom:1.4rem}.about-intro[_ngcontent-ng-c1504834714] p[_ngcontent-ng-c1504834714]{color:var(--ink-soft)}.portrait[_ngcontent-ng-c1504834714]{position:relative;aspect-ratio:4/5;border-radius:var(--radius-lg);overflow:hidden;margin:0;border:1px solid var(--line);display:flex;align-items:flex-end}.portrait-img[_ngcontent-ng-c1504834714]{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center top}.portrait[_ngcontent-ng-c1504834714] .caption[_ngcontent-ng-c1504834714]{position:relative;width:100%;padding:1.1rem 1.2rem;background:linear-gradient(to top,rgba(28,26,23,.78),transparent);color:#fff}.portrait[_ngcontent-ng-c1504834714] .caption[_ngcontent-ng-c1504834714] .name[_ngcontent-ng-c1504834714]{font-family:var(--font-display);font-weight:600;font-size:1.05rem}.portrait[_ngcontent-ng-c1504834714] .caption[_ngcontent-ng-c1504834714] .role[_ngcontent-ng-c1504834714]{font-size:.85rem;opacity:.9}.values-grid[_ngcontent-ng-c1504834714]{display:grid;grid-template-columns:repeat(4,1fr);gap:1.5rem;margin-top:2rem}.value[_ngcontent-ng-c1504834714] mat-icon[_ngcontent-ng-c1504834714]{color:var(--accent-strong);font-size:2rem;height:2rem;width:2rem;margin-bottom:.6rem}.value[_ngcontent-ng-c1504834714] h3[_ngcontent-ng-c1504834714]{font-size:1.2rem;margin-bottom:.3rem}.value[_ngcontent-ng-c1504834714] p[_ngcontent-ng-c1504834714]{color:var(--ink-soft);margin:0}.steps[_ngcontent-ng-c1504834714]{list-style:none;counter-reset:step;margin:2rem 0 0;padding:0;display:grid;gap:1.2rem;max-width:760px}.step[_ngcontent-ng-c1504834714]{display:flex;gap:1rem;align-items:flex-start;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:1.3rem 1.5rem}.step[_ngcontent-ng-c1504834714] mat-icon[_ngcontent-ng-c1504834714]{color:var(--accent-strong);flex:none}.step[_ngcontent-ng-c1504834714] h3[_ngcontent-ng-c1504834714]{font-size:1.15rem;margin-bottom:.2rem}.step[_ngcontent-ng-c1504834714] p[_ngcontent-ng-c1504834714]{color:var(--ink-soft);margin:0}.weps[_ngcontent-ng-c1504834714]{max-width:760px}.weps-body[_ngcontent-ng-c1504834714]{margin-top:1.5rem}.weps-link[_ngcontent-ng-c1504834714]{margin:0 0 2rem}.weps-link[_ngcontent-ng-c1504834714] a[_ngcontent-ng-c1504834714]{display:inline-flex;align-items:center;gap:.35rem;font-weight:600;color:var(--accent-strong)}.weps-link[_ngcontent-ng-c1504834714] mat-icon[_ngcontent-ng-c1504834714]{font-size:1.1rem;height:1.1rem;width:1.1rem}.quote[_ngcontent-ng-c1504834714]{position:relative;margin:0;background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--accent-strong);border-radius:var(--radius-lg);padding:1.8rem 2rem}.quote[_ngcontent-ng-c1504834714] .quote-mark[_ngcontent-ng-c1504834714]{color:var(--accent-strong);opacity:.35;font-size:2.4rem;height:2.4rem;width:2.4rem;margin-bottom:.4rem}.quote[_ngcontent-ng-c1504834714] blockquote[_ngcontent-ng-c1504834714]{margin:0;font-family:var(--font-display);font-size:clamp(1.15rem,1rem + .7vw,1.5rem);line-height:1.5}.quote[_ngcontent-ng-c1504834714] figcaption[_ngcontent-ng-c1504834714]{margin-top:1.2rem;display:flex;flex-direction:column}
954.quote[_ngcontent-ng-c1504834714] .quote-name[_ngcontent-ng-c1504834714]{font-weight:600}.quote[_ngcontent-ng-c1504834714] .quote-role[_ngcontent-ng-c1504834714]{color:var(--muted);font-size:.9rem}.contact-band[_ngcontent-ng-c1504834714]{display:grid;grid-template-columns:1.2fr .8fr;gap:clamp(2rem,5vw,4rem);align-items:start}.contact-lead[_ngcontent-ng-c1504834714] h2[_ngcontent-ng-c1504834714]{font-size:clamp(1.4rem,1.1rem + 1.4vw,2rem);max-width:24ch;margin:.4rem 0 .8rem}.contact-lead[_ngcontent-ng-c1504834714] .lede[_ngcontent-ng-c1504834714]{margin-bottom:1rem}.contact-lead[_ngcontent-ng-c1504834714] .location[_ngcontent-ng-c1504834714]{color:var(--muted);margin:0}.contact-details[_ngcontent-ng-c1504834714]{list-style:none;margin:0 0 1.2rem;padding:0;display:grid;gap:.9rem}.contact-details[_ngcontent-ng-c1504834714] li[_ngcontent-ng-c1504834714]{display:flex;align-items:center;gap:.7rem}.contact-details[_ngcontent-ng-c1504834714] mat-icon[_ngcontent-ng-c1504834714]{color:var(--accent-strong)}.vat[_ngcontent-ng-c1504834714]{color:var(--muted);margin:0}.contact-social[_ngcontent-ng-c1504834714]{display:flex;gap:1.2rem;font-weight:600}@media(max-width:860px){.contact-band[_ngcontent-ng-c1504834714]{grid-template-columns:1fr}}@media(max-width:980px){.values-grid[_ngcontent-ng-c1504834714]{grid-template-columns:1fr 1fr}}@media(max-width:860px){.about-intro[_ngcontent-ng-c1504834714]{grid-template-columns:1fr}.portrait[_ngcontent-ng-c1504834714]{aspect-ratio:16/11;max-height:340px}}@media(max-width:520px){.values-grid[_ngcontent-ng-c1504834714]{grid-template-columns:1fr}}</style><meta property="og:type" content="website"><meta property="og:image" content="https://tumerdem.nl/og-image.png"><meta property="og:site_name" content="Tümerdem"><meta property="og:url" content="https://tumerdem.nl/about"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:image" content="https://tumerdem.nl/og-image.png"><link rel="canonical" href="https://tumerdem.nl/about"><link rel="alternate" hreflang="en" href="https://tumerdem.nl/about"><link rel="alternate" hreflang="x-default" href="https://tumerdem.nl/about"><meta name="geo.region" content="NL"><meta name="geo.placename" content="Someren, Netherlands"><meta name="geo.position" content="51.389;5.738"><meta name="ICBM" content="51.389, 5.738">
954<script id="ld-breadcrumb" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://tumerdem.nl"},{"@type":"ListItem","position":2,"name":"About","item":"https://tumerdem.nl/about"}]}</script>
954<meta property="og:title" content="About DoÄu Tümerdem â Senior Software Architect, Netherlands"><meta property="og:description" content="Senior software architect with 10+ years on business-critical systems â ASML, Canon, and public-sector clients in the Netherlands and Turkey. Based in Someren, Netherlands."><meta name="twitter:title" content="About DoÄu Tümerdem â Senior Software Architect, Netherlands"><meta name="twitter:description" content="Senior software architect with 10+ years on business-critical systems â ASML, Canon, and public-sector clients in the Netherlands and Turkey. Based in Someren, Netherlands."></head> 955 <body><!--nghm-->
955<script type="text/javascript" id="ng-event-dispatch-contract">(()=>{function p(t,n,r,o,e,i,f,m){return{eventType:t,event:n,targetElement:r,eic:o,timeStamp:e,eia:i,eirp:f,eiack:m}}function u(t){let n=[],r=e=>{n.push(e)};return{c:t,q:n,et:[],etc:[],d:r,h:e=>{r(p(e.type,e,e.target,t,Date.now()))}}}function s(t,n,r){for(let o=0;o<n.length;o++){let e=n[o];(r?t.etc:t.et).push(e),t.c.addEventListener(e,t.h,r)}}function c(t,n,r,o,e=window){let i=u(t);e._ejsas||(e._ejsas={}),e._ejsas[n]=i,s(i,r),s(i,o,!0)}window.__jsaction_bootstrap=c;})(); 956</script>
956<script>window.__jsaction_bootstrap(document.body,"ng",["click","focusin","focusout","mousedown","keydown"],[]);</script>
956 957 <app-root ng-version="21.2.13" _nghost-ng-c2623730230 ngh="9" ng-server-context="ssg"><a _ngcontent-ng-c2623730230 href="#main" class="skip-link">Skip to content</a><app-header _ngcontent-ng-c2623730230 _nghost-ng-c20459858 ngh="5"><header _ngcontent-ng-c20459858 class="site-header"><div _ngcontent-ng-c20459858 class="wrap nav"><a _ngcontent-ng-c20459858 routerlink="/" class="wordmark" href="/" jsaction="click:;"><img _ngcontent-ng-c20459858 src="/art/tumerdem.png" alt aria-hidden="true" class="wordmark-logo"><span _ngcontent-ng-c20459858>tumerdem</span></a><nav _ngcontent-ng-c20459858 class="nav-links" aria-label="Primary"><!----><a _ngcontent-ng-c20459858 routerlinkactive="active" class="nav-link" href="/" jsaction="click:;"><!----> Home </a><!----><!----><a _ngcontent-ng-c20459858 routerlinkactive="active" class="nav-link active" href="/about" jsaction="click:;"><!----> About </a><!----><!----><a _ngcontent-ng-c20459858 routerlinkactive="active" class="nav-link" href="/services" jsaction="click:;"><!----> Services </a><!----><!----><a _ngcontent-ng-c20459858 routerlinkactive="active" class="nav-link" href="/portfolio" jsaction="click:;"><!----> Portfolio </a><!----><!----><a _ngcontent-ng-c20459858 routerlinkactive="active" class="nav-link" href="/partners" jsaction="click:;"><!----> Partners </a><!----><div _ngcontent-ng-c20459858 class="nav-item nav-item--parent" jsaction="focusin:;focusout:;"><button _ngcontent-ng-c20459858 type="button" aria-haspopup="true" class="nav-link nav-parent" aria-expanded="false"> Products <mat-icon _ngcontent-ng-c20459858 role="img" aria-hidden="true" class="mat-icon notranslate nav-caret material-icons mat-ligature-font mat-icon-no-color" data-mat-icon-type="font" ngh="0">expand_more</mat-icon></button><ul _ngcontent-ng-c20459858 class="nav-submenu"><li _ngcontent-ng-c20459858><a _ngcontent-ng-c20459858 routerlinkactive="active" class="nav-link" href="/veldpas" jsaction="click:;"><img _ngcontent-ng-c20459858 alt aria-hidden="true" class="nav-logo" src="/art/veldpas/Logo-1.svg"><!----> VeldPas </a></li><li _ngcontent-ng-c20459858><a _ngcontent-ng-c20459858 routerlinkactive="active" class="nav-link" href="/labelwright" jsaction="click:;"><img _ngcontent-ng-c20459858 alt aria-hidden="true" class="nav-logo" src="/art/labelwright/LabelWright.svg"><!----> LabelWright </a></li><li _ngcontent-ng-c20459858><a _ngcontent-ng-c20459858 routerlinkactive="active" class="nav-link" href="/hourwright" jsaction="click:;"><img _ngcontent-ng-c20459858 alt aria-hidden="true" class="nav-logo" src="/art/hourwright/hourwright-logo.svg"><!----> HourWright </a></li><li _ngcontent-ng-c20459858><a _ngcontent-ng-c20459858 routerlinkactive="active" class="nav-link" href="/vectorwright" jsaction="click:;"><img _ngcontent-ng-c20459858 alt aria-hidden="true" class="nav-logo" src="/art/vectorwright/vectorwright-logo.svg"><!----> VectorWright </a></li><!----></ul></div><!----><!----><!----></nav><div _ngcontent-ng-c20459858 class="nav-actions"><app-language-switcher _ngcontent-ng-c20459858 _nghost-ng-c1005577388 ngh="3"><button _ngcontent-ng-c1005577388 mat-button class="mdc-button mat-mdc-button-base mat-mdc-menu-trigger lang-trigger mat-mdc-button mat-unthemed _mat-animation-noopable" mat-ripple-loader-uninitialized mat-ripple-loader-class-name="mat-mdc-button-ripple" aria-label="Change language" aria-haspopup="menu" aria-expanded="false" ngh="1" jsaction="click:;mousedown:;keydown:;"><span class="mat-mdc-button-persistent-ripple mdc-button__ripple"></span><mat-icon _ngcontent-ng-c1005577388 role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">language</mat-icon><span class="mdc-button__label"><span _ngcontent-ng-c1005577388 class="lang-code">EN</span></span><span class="mat-focus-indicator"></span><span class="mat-mdc-button-touch-target"></span></button><!----><mat-menu _ngcontent-ng-c1005577388 ngh="2"><!----></mat-menu></app-language-switcher><a _ngcontent-ng-c20459858 routerlink="/about" class="btn btn-primary get-in-touch" href="/about" jsaction="click:;">Get in touch</a><button _ngcontent-ng-c20459858 mat-icon-button class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base menu-toggle mat-unthemed _mat-animation-noopable" mat-ripple-loader-uninitialized mat-ripple-loader-class-name="mat-mdc-button-ripple" mat-ripple-loader-centered aria-expanded="false" aria-label="Toggle menu" ngh="4" jsaction="click:;"><span class="mat-mdc-button-persistent-ripple mdc-icon-button__ripple"></span><mat-icon _ngcontent-ng-c20459858 role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">menu</mat-icon>
957<span class="mat-focus-indicator"></span><span class="mat-mdc-button-touch-target"></span></button></div></div><!----></header></app-header><main _ngcontent-ng-c2623730230 id="main"><router-outlet _ngcontent-ng-c2623730230></router-outlet><app-about _nghost-ng-c1504834714 ngh="6"><section _ngcontent-ng-c1504834714 class="section"><div _ngcontent-ng-c1504834714 class="wrap about-intro"><div _ngcontent-ng-c1504834714><span _ngcontent-ng-c1504834714 class="eyebrow">About</span><h1 _ngcontent-ng-c1504834714>A senior architect, now your partner</h1><p _ngcontent-ng-c1504834714 class="lede">DoÄu is a seasoned software architect with over ten years of experience designing scalable solutions that align technology with business objectives.</p><p _ngcontent-ng-c1504834714>His expertise spans microservices, DevOps, and cloud platforms, and he is recognized for leading collaborative teams to deliver impactful projects that drive innovation and growth. He has recently worked at ASML and Canon Production Printing.</p><p _ngcontent-ng-c1504834714>Tümerdem is the next step: an independent consultancy that brings enterprise-grade rigor directly to clients â without the overhead of a large agency.</p></div><figure _ngcontent-ng-c1504834714 class="portrait" aria-label="Founder portrait"><img _ngcontent-ng-c1504834714 src="/art/me.jpg" alt="DoÄu Tümerdem" class="portrait-img"><figcaption _ngcontent-ng-c1504834714 class="caption"><div _ngcontent-ng-c1504834714 class="name">DoÄu Tümerdem</div><div _ngcontent-ng-c1504834714 class="role">Founder · Senior Software Architect</div></figcaption></figure></div></section><section _ngcontent-ng-c1504834714 class="section section--surface"><div _ngcontent-ng-c1504834714 class="wrap"><span _ngcontent-ng-c1504834714 class="eyebrow">What we stand for</span><h2 _ngcontent-ng-c1504834714 class="section-title">Values we don't compromise on</h2><div _ngcontent-ng-c1504834714 class="values-grid"><div _ngcontent-ng-c1504834714 class="value"><mat-icon _ngcontent-ng-c1504834714 role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">autorenew</mat-icon><h3 _ngcontent-ng-c1504834714>Agile</h3><p _ngcontent-ng-c1504834714>Iterative, adaptable delivery that responds to what we learn.</p></div><div _ngcontent-ng-c1504834714 class="value"><mat-icon _ngcontent-ng-c1504834714 role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">visibility</mat-icon><h3 _ngcontent-ng-c1504834714>Transparent</h3><p _ngcontent-ng-c1504834714>Clear communication of strategy, benefits, and risks at every step.</p></div><div _ngcontent-ng-c1504834714 class="value"><mat-icon _ngcontent-ng-c1504834714 role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">trending_up</mat-icon><h3 _ngcontent-ng-c1504834714>Result-Oriented</h3><p _ngcontent-ng-c1504834714>Measurable outcomes, not activity for its own sake.</p></div><div _ngcontent-ng-c1504834714 class="value"><mat-icon _ngcontent-ng-c1504834714 role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">groups</mat-icon><h3 _ngcontent-ng-c1504834714>Strong Team</h3><p _ngcontent-ng-c1504834714>Senior-led, collaborative engineering you can rely on.</p></div><!----></div></div></section><section _ngcontent-ng-c1504834714 class="section"><div _ngcontent-ng-c1504834714 class="wrap"><span _ngcontent-ng-c1504834714 class="eyebrow">How we work</span><h2 _ngcontent-ng-c1504834714 class="section-title">From complexity to clarity</h2><ol _ngcontent-ng-c1504834714 class="steps"><li _ngcontent-ng-c1504834714 class="step"><mat-icon _ngcontent-ng-c1504834714 role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">search</mat-icon><div _ngcontent-ng-c1504834714><h3 _ngcontent-ng-c1504834714>Discovery</h3><p _ngcontent-ng-c1504834714>Understand the system, the constraints, and the business goal.</p></div></li><li _ngcontent-ng-c1504834714 class="step"><mat-icon _ngcontent-ng-c1504834714 role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">architecture</mat-icon><div _ngcontent-ng-c1504834714><h3 _ngcontent-ng-c1504834714>Pragmatic architecture</h3><p _ngcontent-ng-c1504834714>Design for scale and reliability without over-engineering.</p></div></li><li _ngcontent-ng-c1504834714 class="step"><mat-icon _ngcontent-ng-c1504834714 role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">cyclone</mat-icon><div _ngcontent-ng-c1504834714><h3 _ngcontent-ng-c1504834714>Iterative delivery</h3><p _ngcontent-ng-c1504834714>Ship in small, validated increments with clear communication.</p></div></li><li _ngcontent-ng-c1504834714 class="step"><mat-icon _ngcontent-ng-c1504834714 role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">school</mat-icon><div _ngcontent-ng-c1504834714><h3 _ngcontent-ng-c1504834714>Measurable results & handover</h3><p _ngcontent-ng-c1504834714>Leave you with outcomes, documentation, and knowledge transfer.</p></div></li><!----></ol></div></section><section _ngcontent-ng-c1504834714 class="section section--surface"><div _ngcontent-ng-c1504834714 class="wrap weps"><span _ngcontent-ng-c1504834714 class="eyebrow">Our commitment</span><h2 _ngcontent-ng-c1504834714 class="section-title">Women's Empowerment Principles</h2><p _ngcontent-ng-c1504834714 class="lede weps-body">Tumerdem is a signatory of the Women's Empowerment Principles (WEPs) â the framework created by UN Women and the UN Global Compact to advance gender equality in the workplace, the marketplace, and the wider community. We hold ourselves to these principles as we build the company and every team within it.</p><p _ngcontent-ng-c1504834714 class="weps-link"><a _ngcontent-ng-c1504834714 href="https://www.weps.org/" target="_blank" rel="noopener"> Learn more at weps.org <mat-icon _ngcontent-ng-c1504834714 role="img" aria-hidden="true" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" data-mat-icon-type="font" ngh="0">open_in_new</mat-icon></a></p><figure _ngcontent-ng-c1504834714 class="quote"><mat-icon _ngcontent-ng-c1504834714 role="img" aria-hidden="true" class="mat-icon notranslate quote-mark material-icons mat-ligature-font mat-icon-no-color" data-mat-icon-type="font" ngh="0">format_quote</mat-icon><blockquote _ngcontent-ng-c1504834714>We are signing the Women's Empowerment Principles at the very start of our company's life, not at the end of it. Equality is not a policy we will add once we are big enough; it is part of how we intend to become that. Technology is built by the people we choose to include â and we intend to choose well.</blockquote><figcaption _ngcontent-ng-c1504834714><span _ngcontent-ng-c1504834714 class="quote-name">DoÄu Tümerdem</span><span _ngcontent-ng-c1504834714 class="quote-role">Founder & CEO, tumerdem</span></figcaption></figure></div></section><section _ngcontent-ng-c1504834714 class="section section--ink"><div _ngcontent-ng-c1504834714 class="wrap contact-band"><div _ngcontent-ng-c1504834714 class="contact-lead"><span _ngcontent-ng-c1504834714 class="eyebrow">Contact</span><h2 _ngcontent-ng-c1504834714>Tell us about your system, your challenge, or your idea.</h2><p _ngcontent-ng-c1504834714 class="lede">We'll get back to you.</p><p _ngcontent-ng-c1504834714 class="location">Based in the Netherlands, working internationally</p></div><div _ngcontent-ng-c1504834714 class="contact-info"><ul _ngcontent-ng-c1504834714 class="contact-details"><li _ngcontent-ng-c1504834714><mat-icon _ngcontent-ng-c1504834714 role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">person</mat-icon>
957<span _ngcontent-ng-c1504834714>DoÄu Tümerdem</span></li><li _ngcontent-ng-c1504834714><mat-icon _ngcontent-ng-c1504834714 role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">mail</mat-icon><a _ngcontent-ng-c1504834714 href="mailto:[email protected]">[email protected]</a></li><li _ngcontent-ng-c1504834714><mat-icon _ngcontent-ng-c1504834714 role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">call</mat-icon><a _ngcontent-ng-c1504834714 href="tel:+31621167920">+31 6 21167920</a></li><li _ngcontent-ng-c1504834714><mat-icon _ngcontent-ng-c1504834714 role="img" class="mat-icon notranslate material-icons mat-ligature-font mat-icon-no-color" aria-hidden="true" data-mat-icon-type="font" ngh="0">place</mat-icon><span _ngcontent-ng-c1504834714>Someren, Netherlands</span></li></ul><p _ngcontent-ng-c1504834714 class="vat">VAT number: NL005491819B52</p><div _ngcontent-ng-c1504834714 class="contact-social"></div></div></div></section></app-about><!----></main><app-footer _ngcontent-ng-c2623730230 _nghost-ng-c1371357180 ngh="7"><footer _ngcontent-ng-c1371357180 class="site-footer"><div _ngcontent-ng-c1371357180 class="wrap footer-grid"><div _ngcontent-ng-c1371357180 class="footer-brand"><span _ngcontent-ng-c1371357180 class="wordmark"><img _ngcontent-ng-c1371357180 src="/art/tumerdem.png" alt aria-hidden="true" class="wordmark-logo"> tumerdem </span><p _ngcontent-ng-c1371357180>Netherlands-based software consultancy. Architecture-led custom software, modernization and digital transformation.</p></div><nav _ngcontent-ng-c1371357180 class="footer-nav" aria-label="Footer"><h3 _ngcontent-ng-c1371357180>Explore</h3><!----><a _ngcontent-ng-c1371357180 href="/" jsaction="click:;">Home</a><!----><!----><a _ngcontent-ng-c1371357180 href="/about" jsaction="click:;">About</a><!----><!----><a _ngcontent-ng-c1371357180 href="/services" jsaction="click:;">Services</a><!----><!----><a _ngcontent-ng-c1371357180 href="/portfolio" jsaction="click:;">Portfolio</a><!----><!----><a _ngcontent-ng-c1371357180 href="/partners" jsaction="click:;">Partners</a><!----><a _ngcontent-ng-c1371357180 href="/veldpas" jsaction="click:;">VeldPas</a><a _ngcontent-ng-c1371357180 href="/labelwright" jsaction="click:;">LabelWright</a><a _ngcontent-ng-c1371357180 href="/hourwright" jsaction="click:;">HourWright</a><a _ngcontent-ng-c1371357180 href="/vectorwright" jsaction="click:;">VectorWright</a><!----><!----><!----><!----></nav><div _ngcontent-ng-c1371357180 class="footer-contact"><h3 _ngcontent-ng-c1371357180>Contact</h3><a _ngcontent-ng-c1371357180 href="mailto:[email protected]">[email protected]</a><a _ngcontent-ng-c1371357180 href="tel:+31621167920">+31 6 21167920</a><span _ngcontent-ng-c1371357180 class="muted">Someren, Netherlands</span></div><div _ngcontent-ng-c1371357180 class="footer-social"><h3 _ngcontent-ng-c1371357180>Connect</h3><a _ngcontent-ng-c1371357180 target="_blank" rel="noopener" href="https://www.linkedin.com/in/tumerdemnnl/">LinkedIn</a><a _ngcontent-ng-c1371357180 target="_blank" rel="noopener" href="https://github.com/dogutumerdem">GitHub</a><a _ngcontent-ng-c1371357180 target="_blank" rel="noopener" href="https://www.youtube.com/channel/UCvtpj0cQHayNrU_TX8oP11Q">YouTube</a></div></div><div _ngcontent-ng-c1371357180 class="wrap footer-legal"><span _ngcontent-ng-c1371357180>© 2026 Tümerdem</span><a _ngcontent-ng-c1371357180 routerlink="/about" href="/about" jsaction="click:;">Privacy</a></div></footer></app-footer><app-cookie-notice _ngcontent-ng-c2623730230 _nghost-ng-c2254782119 ngh="8"><!----></app-cookie-notice></app-root> 958 <link rel="modulepreload" href="chunk-M6B2H3MP.js"><link rel="modulepreload" href="chunk-MQ77FCKM.js"><link rel="modulepreload" href="chunk-GYTO6JGQ.js"><link rel="modulepreload" href="chunk-45FKBS7K.js"><link rel="modulepreload" href="chunk-J3TMUNYT.js"><link rel="modulepreload" href="chunk-TMVELU25.js">
958<script src="main-5YRYHZKX.js" type="module"></script>
958 959<link rel="modulepreload" href="chunk-OEGIL76Y.js"> 960<link rel="modulepreload" href="chunk-AIR3NF5K.js"> 961 962
963<script id="ng-state" type="application/json">{"__nghData__":[{},{"n":{"2":"hfn2","5":"hfn3"}},{"t":{"0":"t6"},"c":{"0":[]}},{"n":{"2":"0fn","3":"2f","4":"0fn2f"},"c":{"0":[]},"d":[9],"t":{"9":"t7"}},{"n":{"2":"hfn2"}},{"t":{"9":"t0","19":"t8"},"c":{"9":[{"i":"t0","r":3,"t":{"0":"t1","1":"t2"},"c":{"0":[],"1":[{"i":"t2","r":1,"t":{"1":"t3"},"c":{"1":[]}}]},"x":5},{"i":"t0","r":3,"t":{"0":"t1","1":"t2"},"c":{"0":[{"i":"t1","r":1,"n":{"7":"6f"},"t":{"10":"t4"},"c":{"10":[{"i":"t4","r":1,"t":{"2":"t5"},"c":{"2":[{"i":"t5","r":1}]},"x":4}]}}],"1":[]}}],"19":[]},"n":{"17":"15fn","18":"17f"}},{"t":{"37":"t9","48":"t10"},"c":{"37":[{"i":"t9","r":1,"n":{"2":"1f"},"x":4}],"48":[{"i":"t10","r":1,"n":{"2":"1f"},"x":4}]},"n":{"65":"64f","68":"67f","97":"96f","102":"101f","107":"106f","112":"111f"}},{"t":{"15":"t11"},"c":{"15":[{"i":"t11","r":3,"t":{"0":"t12","1":"t13"},"c":{"0":[],"1":[{"i":"t13","r":1}]},"x":5},{"i":"t11","r":7,"t":{"0":"t12","1":"t13"},"c":{"0":[{"i":"t12","r":5,"t":{"1":"t14"},"c":{"1":[{"i":"t14","r":1,"x":4}]}}],"1":[]}}]}},{"t":{"0":"t15"},"c":{"0":[]}},{"c":{"5":[{"i":"c1504834714","r":1}]}}]}</script>
963</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.