:root{--paper:#f7f9fd;--white:#fff;--ink:#16253d;--muted:#5b687e;--blue:#275beb;--line:#dce3ee;--display:Manrope,Arial,sans-serif;--body:'DM Sans',Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:110px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.6}body:has(dialog[open]){overflow:hidden}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}button{border:0}img{display:block;max-width:100%;height:auto}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--display);line-height:1.15}h1,h2{font-weight:600;letter-spacing:-.055em}h2{font-size:clamp(36px,4vw,56px)}h3{font-weight:700}button:focus-visible,a:focus-visible{outline:3px solid var(--blue);outline-offset:6px}::selection{background:#d4e1ff;color:var(--ink)}.wrap{width:min(1200px,calc(100% - 96px));margin-inline:auto}.section{padding-block:112px}.eyebrow{font-size:11px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;display:flex;align-items:center;gap:10px;color:var(--muted);margin-bottom:24px}.blue-text{color:var(--blue)}.blue-dot{width:7px;height:7px;background:var(--blue);border-radius:50%;flex-shrink:0}.skip-link{position:fixed;left:20px;top:12px;z-index:100;background:var(--ink);color:white;padding:12px 20px;transform:translateY(-150%);border-radius:8px}.skip-link:focus{transform:none}.site-header{position:sticky;top:0;z-index:20;background:#f7f9fdef;backdrop-filter:blur(16px);border-bottom:1px solid #e5eaf380}.nav-wrap{width:min(1320px,calc(100% - 80px));margin:auto;min-height:88px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{display:flex;align-items:center;gap:13px;font-family:var(--display);font-weight:700;font-size:14px;white-space:nowrap}.brand-mark{font-size:28px;letter-spacing:-.09em;font-weight:800}.brand-mark>span{color:var(--blue)}.nav-right{display:flex;align-items:center;gap:36px}.navigation{display:flex;align-items:center;gap:30px}.navigation a{font-size:13px;font-weight:500;position:relative;padding:12px 0}.navigation a:after{content:'';height:2px;background:var(--blue);position:absolute;bottom:5px;left:0;right:0;transform:scaleX(0);transition:transform .2s}.navigation a:hover:after,.navigation a[aria-current]:after{transform:scaleX(1)}.navigation a:last-child{color:var(--blue)}.language-switch{display:flex;gap:2px;padding:3px;border:1px solid var(--line);border-radius:9px}.language-switch a{background:transparent;border-radius:6px;font-size:11px;font-weight:700;min-width:34px;min-height:34px}.language-switch a[aria-current=page]{background:var(--ink);color:#fff}.menu-toggle{display:none;background:transparent;min-width:44px;min-height:44px;flex-direction:column;justify-content:center;gap:6px}.menu-toggle>span{width:22px;height:2px;background:var(--ink);transition:transform .2s}.hero{display:grid;grid-template-columns:1.22fr 1fr;gap:65px;align-items:center;padding-block:72px 96px}.hero-copy{padding-bottom:10px}.hero h1{font-size:clamp(45px,4.8vw,69px);line-height:1.12;max-width:680px}.hero-description{color:var(--muted);font-size:18px;line-height:1.75;max-width:495px;margin-top:28px}.hero-actions{display:flex;align-items:center;gap:28px;margin-top:34px}.button{display:inline-flex;justify-content:center;align-items:center;gap:30px;min-height:54px;padding:15px 24px;border-radius:10px;font-weight:600;font-size:14px;transition:background .2s,transform .2s}.button:hover{transform:translateY(-2px)}.button-primary{background:var(--blue);color:white;box-shadow:0 6px 16px #275beb18}.button-primary:hover{background:#1948ce}.text-link{display:inline-flex;align-items:center;gap:12px;font-size:13px;font-weight:600;padding-block:8px}.text-link:hover{color:var(--blue)}.text-link>span[aria-hidden],.button>span[aria-hidden]{font-size:20px;font-weight:400}.hero-footnote{margin-top:48px;display:flex;gap:10px;align-items:center;font-size:12px;color:var(--muted)}.small-star{font-size:23px;color:var(--blue)}.portrait-frame{height:460px;position:relative;border-radius:130px 28px 28px 28px;overflow:hidden;background:#e2e8f0}.portrait{width:100%;height:100%;object-fit:cover;object-position:center top}.portrait-frame:after{content:'';position:absolute;bottom:0;left:0;right:0;height:140px;background:linear-gradient(transparent,#14233ac9);pointer-events:none}.portrait-caption{position:absolute;z-index:1;bottom:39px;left:28px;color:white;display:flex;flex-direction:column;gap:4px}.signature{font-family:var(--display);font-weight:600;font-size:23px;letter-spacing:-.04em}.portrait-caption>span:last-child{font-size:12px;color:#eef3fc}.discipline-strip{display:flex;justify-content:space-between;align-items:center;gap:20px;border-block:1px solid var(--line);padding-block:25px;font-size:13px;font-weight:500}.strip-plus{color:#98a9c5;font-size:19px;font-weight:400}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:60px;margin-bottom:48px}.section-intro{max-width:335px;color:var(--muted);font-size:16px;padding-bottom:5px}.apps-grid{display:grid;grid-template-columns:1fr 1fr;gap:30px}.app-card{border-radius:22px;border:1px solid var(--line);background:white;overflow:hidden;overflow:clip;scroll-margin-top:112px}.app-stage{height:380px;position:relative;overflow:hidden;overflow:clip;background:var(--stage)}.coachassist{--stage:#e7eefb}.eqpuzzle{--stage:#eee9f8}.gomoku{--stage:#e1eeeb}.familytree{--stage:#f1eee5}.stage-top{position:absolute;top:22px;left:26px;right:26px;display:flex;justify-content:space-between;align-items:center;color:#45536a;font-size:10px;letter-spacing:.07em;text-transform:uppercase;font-weight:600;z-index:2}.stage-top>span:last-child{font-size:9px;letter-spacing:.03em}.phones{position:absolute;inset:73px 0 0;display:flex;justify-content:center;align-items:flex-start;gap:22px}.phone{padding:5px;background:#2e3848;border-radius:28px;box-shadow:0 14px 24px #1b2d4730;width:166px;flex-shrink:0;overflow:hidden;transition:transform .3s;line-height:0;border:1px solid #697083;position:relative}.phone img{width:100%;height:auto;border-radius:23px}.phone-1{transform:rotate(-7deg);margin-top:5px}.phone-2{transform:rotate(7deg);margin-top:40px}.phone-1:hover{transform:rotate(-3deg) translateY(-9px)}.phone-2:hover{transform:rotate(3deg) translateY(-9px)}.phone:focus-visible{outline-offset:2px;z-index:3}.app-stage:after{content:'';pointer-events:none;position:absolute;bottom:0;left:0;right:0;height:43px;background:linear-gradient(transparent,var(--stage))}.preview-button{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);z-index:3;background:#fffefcfa;padding:9px 15px;border:1px solid #ffffffd9;border-radius:30px;font-size:11px;font-weight:600;display:flex;gap:13px;align-items:center;box-shadow:0 3px 16px #182c4215;white-space:nowrap}.preview-button:hover{background:white;box-shadow:0 4px 20px #182c4225}.app-content{padding:30px}.app-name{display:flex;align-items:center;gap:14px;margin-bottom:23px}.app-name img{width:44px;height:44px;border-radius:12px;border:1px solid #16253d12}.app-name h3{font-size:23px;letter-spacing:-.04em}.app-tagline{font-size:17px;line-height:1.5;font-weight:600;margin-bottom:11px;letter-spacing:-.02em}.app-description{color:var(--muted);font-size:14px;line-height:1.8;min-height:77px}.feature-tags{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:24px 0 28px}.feature-tags li{font-size:10px;font-weight:500;padding:5px 9px;border-radius:5px;background:#f3f5f9;color:#4c5b73}.app-links{border-top:1px solid #e8ecf3;padding-top:20px;display:flex;align-items:center;justify-content:space-between;gap:12px}.store-link{display:inline-flex;align-items:center;gap:12px;background:var(--ink);color:white;border-radius:8px;padding:11px 15px;font-size:11px;font-weight:600;min-height:43px}.store-link:hover{background:var(--blue)}.app-links .text-link{font-size:11px}.about-section{background:white;border-block:1px solid #e9edf4}.about-grid{display:grid;grid-template-columns:1fr 1.05fr;gap:100px}.about-title h2>span:last-child{display:block;margin-top:8px}.about-copy>p{color:var(--muted);font-size:15px}.about-copy .large-copy{font-size:20px;color:var(--ink);line-height:1.65;margin-bottom:22px}.capabilities{display:grid;grid-template-columns:1fr 1fr;gap:30px;margin-top:34px;padding-top:30px;border-top:1px solid var(--line)}.capability-symbol{font-size:27px;color:var(--blue);display:block;margin-bottom:10px}.capabilities h3{font-size:14px;line-height:1.5;margin-bottom:6px}.capabilities p{font-size:12px;color:var(--muted)}.social-links{display:flex;gap:28px;margin-top:24px}.experience-grid{display:grid;grid-template-columns:1fr 1.35fr;gap:90px}.experience-intro>p:last-child{font-size:15px;color:var(--muted);margin-top:25px;max-width:300px}.experience-row{display:grid;grid-template-columns:105px 1fr;gap:25px;padding:30px 0;border-top:1px solid var(--line)}.experience-row:first-child{padding-top:4px;border:0}.experience-date{font-size:11px;color:var(--muted);padding-top:4px;line-height:1.8}.experience-date span{display:block}.company{font-size:11px;color:var(--blue);font-weight:600;margin-bottom:9px}.experience-row h3{font-size:20px;letter-spacing:-.025em;line-height:1.4;margin-bottom:12px}.experience-description{font-size:13px;color:var(--muted);line-height:1.8}.experience-stack{font-size:10px;color:#536682;font-weight:500;margin-top:15px}.credentials{margin-top:64px;padding-top:36px;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr 1fr;gap:40px}.credentials .eyebrow{font-size:9px;margin-bottom:14px}.credentials h3{font-size:14px;margin-bottom:8px}.credentials p:not(.eyebrow){font-size:12px;color:var(--muted)}.credentials .text-link{padding:0;margin-bottom:5px;font-size:14px}.practice-section{background:#e9f0ff;border:1px solid #dbe5fa;border-radius:24px;padding:56px;display:grid;grid-template-columns:1.1fr 1fr;gap:95px}.practice-content h2{font-size:42px}.practice-content>p:not(.eyebrow){font-size:14px;line-height:1.9;color:var(--muted);margin-top:24px}.practice-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:25px}.practice-tags>span{font-size:10px;background:#ffffffb3;padding:5px 9px;border-radius:5px;color:#405b93}.workflow{list-style:none;margin:0;padding:9px 0;align-self:center}.workflow li{display:flex;gap:20px;padding:24px 0;border-bottom:1px solid #cbd8f1}.workflow li:last-child{border:0}.workflow-number{font-size:11px;color:var(--blue);border:1px solid #c7d6f8;border-radius:50%;width:32px;height:32px;display:grid;place-items:center;flex-shrink:0}.workflow h3{font-size:16px;line-height:1.5;margin-bottom:7px}.workflow p{font-size:12px;color:var(--muted)}.open-source{display:flex;align-items:center;justify-content:space-between;gap:36px;padding-block:56px 105px}.open-source>div{display:flex;align-items:center;gap:24px}.oss-symbol{font-size:30px;color:var(--blue);letter-spacing:-.12em;flex-shrink:0;border:1px solid var(--line);border-radius:18px;background:white;display:grid;place-items:center;width:72px;height:72px;padding-right:5px}.open-source .eyebrow{font-size:9px;margin-bottom:7px}.open-source h3{font-size:20px;margin-bottom:5px}.open-source p:last-child{font-size:13px;color:var(--muted)}.open-source>.text-link{white-space:nowrap}.contact-section{background:var(--blue);color:white;position:relative;overflow:hidden}.contact-inner{display:flex;align-items:center;justify-content:space-between;gap:80px;padding-block:80px}.contact-inner .eyebrow{color:#d5e0ff}.contact-inner h2{font-size:clamp(42px,5vw,65px)}.contact-inner>div>p:last-child{font-size:15px;color:#e0e8ff;max-width:390px;margin-top:24px}.contact-actions{display:flex;flex-direction:column;align-items:flex-start;gap:20px;padding-right:55px}.button-white{background:white;color:var(--blue);font-size:17px;min-width:205px;justify-content:space-between;min-height:61px}.button-white:hover{background:#e9efff}.email-link{font-size:14px}.email-link:hover{text-decoration:underline}.contact-social{display:flex;gap:26px}.contact-social a{color:#e7eeff;font-size:12px}.contact-social a:hover{color:white}.contact-section a:focus-visible{outline-color:white}.footer{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:112px}.footer .brand{font-size:11px;font-weight:500}.footer .brand-mark{font-weight:800}.footer>p,.footer>.text-link{font-size:10px;color:var(--muted)}dialog{border:1px solid var(--line);border-radius:22px;padding:22px;background:var(--paper);color:var(--ink);width:min(620px,calc(100% - 28px));max-height:calc(100dvh - 28px);overflow:auto;box-shadow:0 24px 100px #12203f40}dialog::backdrop{background:#14233bc9;backdrop-filter:blur(8px)}.gallery-header{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:12px}.gallery-header h2{font-size:20px;letter-spacing:-.03em}.icon-button{width:44px;height:44px;flex-shrink:0;display:grid;place-items:center;background:white;border:1px solid var(--line);border-radius:50%;font-size:22px}.icon-button:hover{background:#e9f0ff}.gallery-body{display:flex;align-items:center;justify-content:space-between;gap:14px}.gallery-body img{height:min(68dvh,720px);max-width:calc(100% - 116px);width:auto;object-fit:contain;border-radius:10px}.gallery-counter{text-align:center;margin-top:15px;color:var(--muted);font-size:12px}

/* Preserve the original portrait frame, with headroom and a separate app row. */
.portrait-composition{width:100%;max-width:420px;justify-self:end;min-width:0;display:grid;gap:16px;margin-right:10px}
.maker-card{display:flex;align-items:center;flex-wrap:wrap;gap:16px;justify-self:end;max-width:100%;padding:17px 21px;background:white;border:1px solid var(--line);border-radius:16px;box-shadow:0 8px 30px #1c35520c}
.app-icons{display:flex;gap:6px;flex-shrink:0}
.app-icons a{display:block;width:36px;height:36px;border-radius:11px;border:1px solid #16253d12;overflow:hidden;transition:transform .2s}
.app-icons a:hover{transform:translateY(-3px)}
.app-icons img{width:100%;height:100%;object-fit:cover}
.maker-card>div:last-child{display:flex;flex:1 1 120px;min-width:0;flex-direction:column;gap:3px;font-size:10px;color:var(--muted);line-height:1.6}
.maker-card strong{font-size:12px;color:var(--ink);line-height:1.5}
@media(min-width:1500px){.hero{padding-block:90px 110px}.portrait-frame{height:460px}}
@media(max-width:1100px){.wrap{width:calc(100% - 64px)}.nav-wrap{width:calc(100% - 48px)}.navigation{gap:21px}.nav-right{gap:24px}.hero{gap:35px}.hero h1{font-size:54px}.portrait-frame{height:420px}.hero-actions{gap:18px}.hero-actions .text-link{font-size:11px}.hero-actions .button{font-size:12px;padding-inline:19px}.section{padding-block:88px}.app-content{padding:25px}.app-links{flex-wrap:wrap;gap:6px}.app-description{min-height:101px}.about-grid{gap:50px}.experience-grid{gap:45px;grid-template-columns:1fr 1.5fr}.experience-row{grid-template-columns:80px 1fr;gap:18px}.practice-section{padding:42px;gap:45px}.contact-actions{padding-right:0}}
@media(max-width:800px){.nav-wrap{min-height:76px}.brand{font-size:12px}.navigation{gap:17px}.navigation a{font-size:11px}.nav-right{gap:18px}.hero{gap:28px;padding-block:50px 70px}.hero h1{font-size:43px}.hero .eyebrow{font-size:9px}.hero-description{font-size:15px}.portrait-frame{height:370px;border-top-left-radius:90px}.hero-actions{align-items:flex-start;flex-direction:column;gap:9px;margin-top:24px}.hero-footnote{font-size:10px;margin-top:22px}.portrait-caption{left:20px;bottom:30px}.portrait-caption .signature{font-size:21px}.portrait-caption>span:last-child{font-size:9px}.discipline-strip{font-size:10px;gap:12px}.section-heading{gap:30px}.section-intro{max-width:260px;font-size:14px}.apps-grid{gap:20px}.app-stage{height:320px}.phones{gap:14px}.phone{width:131px;border-radius:23px;padding:4px}.phone img{border-radius:19px}.stage-top{left:18px;right:18px;font-size:9px}.stage-top>span:last-child{font-size:8px}.app-content{padding:22px}.app-name h3{font-size:21px}.app-tagline{font-size:15px;min-height:45px}.app-description{font-size:13px;min-height:116px}.feature-tags{min-height:55px;align-content:flex-start}.about-grid{grid-template-columns:1fr;gap:40px}.about-title h2 br{display:none}.about-title h2>span:last-child{margin-top:0}.about-copy .large-copy{font-size:19px}.experience-grid{grid-template-columns:1fr;gap:40px}.experience-intro>p:last-child{max-width:430px}.experience-row{grid-template-columns:130px 1fr}.credentials{gap:25px}.practice-section{grid-template-columns:1fr;gap:26px}.practice-content h2{font-size:38px}.workflow{padding:0}.workflow li{padding:20px 0}.open-source{padding-bottom:80px;gap:24px}.oss-symbol{width:55px;height:55px;font-size:25px}.open-source>div{gap:16px}.contact-inner{gap:40px}.contact-inner h2{font-size:44px}.contact-inner>div>p:last-child{font-size:13px}.contact-actions{gap:17px}.button-white{min-width:170px}.footer>p{display:none}}
@media(max-width:650px){html{scroll-padding-top:90px}.wrap{width:calc(100% - 40px)}.nav-wrap{width:calc(100% - 32px);min-height:72px;gap:8px}.brand{gap:10px;font-size:12px}.nav-right{gap:12px}.menu-toggle{display:flex}.language-switch a{min-width:31px;min-height:32px}.navigation{display:none;position:absolute;top:71px;left:0;right:0;background:var(--paper);border-bottom:1px solid var(--line);padding:15px 24px 24px;flex-direction:column;align-items:stretch;gap:0;box-shadow:0 16px 18px #14233b0d}.navigation.is-open{display:flex}.navigation a{font-size:16px;padding:13px 5px}.navigation a:after{right:auto;width:35px}.menu-toggle[aria-expanded=true]>span:first-child{transform:translateY(4px) rotate(45deg)}.menu-toggle[aria-expanded=true]>span:last-child{transform:translateY(-4px) rotate(-45deg)}.hero{grid-template-columns:1fr;padding-block:40px 65px;gap:38px}.hero h1{font-size:clamp(39px,10.3vw,62px);letter-spacing:-.055em;line-height:1.12}.hero .eyebrow{font-size:9px;letter-spacing:.09em;margin-bottom:20px}.hero-description{font-size:16px;margin-top:23px;max-width:100%}.hero-actions{flex-direction:row;align-items:center;gap:23px;margin-top:27px}.hero-actions .button{font-size:12px;min-height:52px;padding:13px 17px;gap:18px}.hero-actions .text-link{font-size:11px;gap:8px}.hero-footnote{font-size:11px;margin-top:24px}.portrait-frame{height:400px;border-radius:100px 22px 22px 22px}.portrait{object-position:center top}.portrait-caption{bottom:38px;left:24px}.portrait-caption>span:last-child{font-size:11px}.discipline-strip{align-items:center;gap:6px;font-size:9px;line-height:1.6;padding-block:22px}.discipline-strip>span:not(.strip-plus){max-width:90px}.strip-plus{font-size:16px}.section{padding-block:66px}h2{font-size:38px}.eyebrow{font-size:9px;margin-bottom:18px;letter-spacing:.13em}.section-heading{display:block;margin-bottom:30px}.section-intro{max-width:100%;font-size:15px;margin-top:23px}.apps-grid{grid-template-columns:1fr;gap:25px}.app-stage{height:355px}.stage-top{top:21px;left:24px;right:24px;font-size:9px}.stage-top>span:last-child{font-size:9px}.phones{gap:25px;top:69px}.phone{width:151px;border-radius:26px;padding:5px}.phone img{border-radius:21px}.app-content{padding:25px}.app-name{margin-bottom:20px}.app-name h3{font-size:24px}.app-tagline{font-size:17px;min-height:0}.app-description{font-size:14px;min-height:0}.feature-tags{min-height:0;margin-block:22px}.feature-tags li{font-size:9px}.app-links{gap:10px;flex-wrap:nowrap}.store-link{font-size:10px;padding:10px 12px;gap:8px}.app-links .text-link{font-size:10px;gap:8px}.about-grid{gap:29px}.about-title h2 br{display:block}.about-copy .large-copy{font-size:18px}.about-copy>p{font-size:14px}.capabilities{gap:22px;margin-top:28px;padding-top:23px}.capabilities h3{font-size:13px}.capabilities p{font-size:12px}.experience-grid{gap:35px}.experience-intro>p:last-child{font-size:14px;margin-top:20px}.experience-row{grid-template-columns:1fr;gap:9px;padding-block:26px}.experience-date span{display:inline}.experience-row h3{font-size:20px}.experience-description{font-size:14px}.credentials{margin-top:30px;grid-template-columns:1fr;gap:28px;padding-top:30px}.credentials h3{font-size:15px}.credentials .eyebrow{margin-bottom:9px}.practice-section{width:calc(100% - 32px);padding:30px 24px;border-radius:19px;gap:15px}.practice-content h2{font-size:36px}.practice-content>p:not(.eyebrow){font-size:14px;margin-top:20px}.workflow li{gap:16px}.workflow h3{font-size:15px}.workflow p{font-size:12px}.open-source{display:block;padding-block:40px 65px}.open-source>div{align-items:flex-start;gap:17px}.open-source .oss-symbol{width:46px;height:46px;font-size:23px;border-radius:12px}.open-source h3{font-size:19px}.open-source p:last-child{font-size:13px}.open-source>.text-link{margin-left:63px;margin-top:14px;font-size:12px}.contact-inner{display:block;padding-block:55px}.contact-inner h2{font-size:44px}.contact-inner>div>p:last-child{font-size:15px}.contact-actions{margin-top:30px;gap:18px}.button-white{min-width:195px;font-size:15px;min-height:54px}.contact-social{gap:30px}.footer{min-height:95px;gap:10px}.footer .brand{font-size:10px}.footer .brand-mark{font-size:25px}.footer>.text-link{font-size:9px;gap:6px}.gallery-body{gap:8px}.gallery-body img{max-width:calc(100% - 92px);height:min(68dvh,650px)}.gallery-body .icon-button{width:36px;height:36px}dialog{padding:17px}.gallery-header h2{font-size:18px}}
@media(max-width:370px){.wrap{width:calc(100% - 32px)}.brand>span:last-child{font-size:10px}.nav-right{gap:6px}.hero h1{font-size:37px}.hero-actions{gap:12px}.hero-actions .button{font-size:11px;padding-inline:12px}.hero-actions .text-link{font-size:10px}.portrait-frame{height:350px}.app-links{flex-wrap:wrap}.phone{width:137px}.phones{gap:20px}.app-content{padding:22px}.app-stage{height:330px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}

@media(max-width:650px){.portrait-composition{margin:0;max-width:320px;justify-self:center;gap:14px}.maker-card{padding:15px 17px;gap:14px}.portrait-caption{right:20px}.portrait-caption>span:last-child{line-height:1.6}}
@media(max-width:370px){.portrait-composition{max-width:280px}.maker-card{gap:12px}.app-icons{gap:5px}.app-icons a{width:34px;height:34px}.maker-card>div:last-child{flex-basis:105px}}

/* Keep German compounds readable and fit all three language controls on small phones. */
html[lang=de] h1,html[lang=de] h2,html[lang=de] h3,html[lang=de] p{hyphens:auto;overflow-wrap:break-word}
@media(max-width:370px){.nav-wrap{gap:8px}.language-switch a{min-width:28px}.nav-right{gap:4px}}

/* AI examples explain concrete outcomes. */
.practice-section{margin-bottom:112px;gap:40px 64px}
.practice-content h2{font-size:clamp(32px,3vw,42px)}
.ai-examples{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.ai-example{background:#ffffffbd;border:1px solid #d5dff2;border-radius:16px;padding:28px;display:flex;flex-direction:column;align-items:flex-start}
.ai-example-brand{display:flex;align-items:center;gap:11px;font-size:12px;font-weight:600;margin-bottom:20px}
.ai-example-brand img{width:32px;height:32px;border-radius:9px}
.ai-example h3{font-size:21px;line-height:1.4;letter-spacing:-.025em}
.ai-example>p{font-size:14px;color:var(--muted);line-height:1.8;margin-top:12px;margin-bottom:16px}
.ai-example .text-link{margin-top:auto}
.ai-contact{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:1px solid #cbd8f1;padding-top:22px;font-size:14px}
.open-source{padding-top:0}
@media(max-width:1100px){
 .menu-toggle{display:flex}
 .navigation{display:none;position:absolute;top:100%;left:0;right:0;background:var(--paper);border-bottom:1px solid var(--line);padding:15px 32px 24px;flex-direction:column;align-items:stretch;gap:0;box-shadow:0 16px 18px #14233b0d}
 .navigation.is-open{display:flex}
 .practice-section{gap:32px}
}
@media(max-width:800px){
 .ai-example{padding:22px}
}
@media(max-width:650px){
 .practice-section{margin-bottom:65px;gap:24px}
 .practice-content h2{font-size:34px}
 .ai-examples{grid-template-columns:1fr;gap:16px}
 .ai-example{padding:22px 20px}
 .ai-example h3{font-size:20px}
 .ai-contact{align-items:flex-start;flex-direction:column;gap:8px}
 .ai-contact p{font-size:13px}
 .hero .eyebrow{font-size:9px;letter-spacing:.09em}
}

/* A quiet, moving contour field echoes the architecture and geospatial work. */
:root{--motion-ease:cubic-bezier(.22,1,.36,1)}
.hero-scene{position:relative;isolation:isolate;overflow:hidden;overflow:clip}
.hero{position:relative;z-index:1}
.hero-atmosphere{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.atmosphere-glow{position:absolute;border-radius:50%;opacity:.7}
.atmosphere-glow-blue{width:850px;height:850px;top:-270px;right:-150px;background:radial-gradient(ellipse,#b7cefa99, #dbe7fd50 42%,transparent 69%)}
.atmosphere-glow-sky{width:700px;height:620px;bottom:-360px;left:-160px;background:radial-gradient(ellipse,#a5dbed80,transparent 68%)}
.contour-field{position:absolute;width:100%;height:100%;inset:0;transform:translate3d(0,var(--scene-shift,0px),0);color:#6f99db}
.contour-lines{stroke:currentColor;stroke-width:.8;opacity:.24;transform-origin:70% 45%}
.contour-orbit{stroke:currentColor;stroke-width:1;opacity:.35;transform-origin:1030px 380px;transform:rotate(-24deg)}
.contour-orbit circle{fill:#6f99db;stroke:none}
.motion-ready .atmosphere-glow-blue{animation:atmosphere-drift 18s ease-in-out infinite alternate}
.motion-ready .atmosphere-glow-sky{animation:atmosphere-drift 23s ease-in-out -8s infinite alternate-reverse}
.motion-ready .contour-lines{animation:contour-breathe 24s ease-in-out infinite alternate}
.motion-ready .contour-orbit{animation:contour-orbit 48s linear infinite}
.ambient-motion:not(.is-in-view) *,html[data-motion=paused] .ambient-motion *,html.motion-suspended .ambient-motion *{animation-play-state:paused!important}
@keyframes atmosphere-drift{to{transform:translate3d(-55px,35px,0) scale(1.12)}}
@keyframes contour-breathe{to{transform:translate3d(-35px,18px,0) rotate(5deg) scale(1.04)}}
@keyframes contour-orbit{from{transform:rotate(-24deg)}to{transform:rotate(336deg)}}
.motion-toggle{position:absolute;right:10px;bottom:25px;display:inline-flex;align-items:center;gap:7px;padding:7px 10px;min-height:34px;border:1px solid #cbd8ed;background:#f7f9fdbf;border-radius:20px;font-size:10px;color:#526785;transition:background .2s,color .2s}
.motion-toggle[hidden]{display:none}
.motion-toggle:hover{background:white;color:var(--blue)}
.motion-toggle svg{stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.motion-play,html[data-motion=paused] .motion-pause{display:none}
html[data-motion=paused] .motion-play{display:block}
.site-header{transition:background .3s,box-shadow .3s,border-color .3s}
.site-header.is-scrolled{background:#f7f9fdf5;box-shadow:0 5px 24px #1935570a;border-color:#dce3ee}
.scroll-progress{position:absolute;left:0;right:0;bottom:-1px;height:2px;background:linear-gradient(90deg,#6faadf,var(--blue));transform:scaleX(0);transform-origin:left;pointer-events:none}
.navigation a:after{transform-origin:left;transition:transform .35s var(--motion-ease)}
.app-card{scroll-margin-top:16px;transition:box-shadow .45s,border-color .45s}
.phones{transform:translate3d(0,var(--showcase-shift,0px),0)}
.text-link>span[aria-hidden],.button>span[aria-hidden]{display:inline-block;transition:transform .35s var(--motion-ease)}
.button,.store-link{transition:background .25s,transform .35s var(--motion-ease),box-shadow .35s}
.language-switch a{transition:background .2s,color .2s}
.ai-example{transition:border-color .35s,box-shadow .35s}
.contact-section:before,.contact-section:after{content:'';position:absolute;pointer-events:none;width:620px;height:620px;right:-120px;top:-200px;border:1px solid #ffffff20;border-radius:42% 58% 65% 35%;transform:rotate(-25deg)}
.contact-section:after{width:700px;height:700px;right:-160px;top:-240px;border-color:#ffffff14;transform:rotate(20deg)}
.motion-ready .contact-section.is-in-view:before{animation:contact-orbit 35s linear infinite}
.motion-ready .contact-section.is-in-view:after{animation:contact-orbit 45s linear infinite reverse}
.contact-section:not(.is-in-view):before,.contact-section:not(.is-in-view):after,html[data-motion=paused] .contact-section:before,html[data-motion=paused] .contact-section:after,html.motion-suspended .contact-section:before,html.motion-suspended .contact-section:after{animation-play-state:paused!important}
.contact-inner{position:relative;z-index:1}
@keyframes contact-orbit{to{transform:rotate(335deg)}}
@media(hover:hover) and (pointer:fine){
 .app-card:hover{border-color:#b8cbed;box-shadow:0 18px 50px -22px #284f8b40}
 .ai-example:hover{border-color:#b8cbed;box-shadow:0 12px 28px -18px #284f8b35}
 .text-link:hover>span[aria-hidden],.button:hover>span[aria-hidden]{transform:translate(3px,-3px)}
 .button-primary:hover{box-shadow:0 10px 24px #275beb30}
 .store-link:hover{transform:translateY(-2px)}
}
@media(min-width:1101px){.experience-intro{position:sticky;top:130px;align-self:start}}
@media(max-width:650px){
 .contour-field{width:160%;left:-35%;opacity:.75}
 .atmosphere-glow-blue{width:600px;height:600px;top:220px;right:-220px}
 .atmosphere-glow-sky{width:430px;height:430px;bottom:20px;left:-220px}
 .motion-toggle{right:0;bottom:17px;font-size:9px;min-height:32px}
 .contact-section:before,.contact-section:after{opacity:.65;right:-360px}
}
@media(prefers-reduced-motion:reduce){
 .contour-field,.phones{transform:none!important}
 .motion-toggle{display:none}
}
html[data-motion=paused] .contour-field,html[data-motion=paused] .phones{transform:none}
html[data-motion=paused]{scroll-behavior:auto}
html[data-motion=paused] *,html[data-motion=paused] *:before,html[data-motion=paused] *:after{transition:none!important}

/* A visible personal name connects the portfolio to its author. */
.hero-tagline{font-family:Manrope,sans-serif;font-size:clamp(22px,3vw,30px);font-weight:650;letter-spacing:-.035em;line-height:1.35;margin-top:18px}
.language-switch a{display:inline-grid;place-items:center}
