/* Homepage-only identity system. No gradients, including hover states. */
.personal-home .language-board{transform:none;box-shadow:7px 9px 0 var(--tone-e6ebdf, #e6ebdf)}.language-panel{background:var(--brand-surface);border:1px solid var(--tone-dce1d7, #dce1d7);border-radius:12px;padding:20px 17px 14px}.language-heading{display:flex;align-items:center;justify-content:space-between;gap:15px}.language-heading>div>span{font:8px ui-monospace,monospace;color:var(--tone-78916d, #78916d);letter-spacing:.12em}.language-heading h2{font-size:23px;line-height:1.5;margin-top:5px}.language-heading>b{font-size:29px;color:var(--tone-48724f, #48724f);letter-spacing:-.05em;line-height:1}.language-heading small{display:block;font-size:9px;font-weight:400;letter-spacing:0;margin-top:8px;color:var(--tone-7c8b71, #7c8b71)}.language-scope{font-size:10px;margin-top:12px;color:var(--tone-6c7d63, #6c7d63)}.language-distribution{display:flex;overflow:hidden;height:9px;border-radius:6px;background:var(--tone-e6ebdf, #e6ebdf);margin:16px 0 15px}.language-distribution span{height:100%;flex-shrink:0}.language-scroll{max-height:282px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--tone-b9c8b0, #b9c8b0) var(--tone-f5f7f1, #f5f7f1);padding-right:6px}.language-scroll:focus-visible{outline:2px solid var(--tone-7b9b65, #7b9b65);outline-offset:4px;border-radius:5px}.language-list{list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 15px;padding:0;margin:0}.language-row{display:grid;grid-template-columns:23px minmax(0,1fr) auto;gap:7px;align-items:center;min-height:41px;border-bottom:1px solid var(--tone-f0f3eb, #f0f3eb);padding:6px 0}.language-row img{object-fit:contain;width:23px;height:23px}.language-name{font-size:11px;line-height:1.35;overflow-wrap:anywhere;color:var(--tone-344e38, #344e38)}.language-percent{font:10px ui-monospace,monospace;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--tone-738469, #738469)}.language-scroll-hint{font-size:9px;color:var(--tone-849479, #849479);text-align:center;padding:12px 0 10px}.language-method{border-top:1px solid var(--tone-e9eee2, #e9eee2);padding-top:10px;font-size:10px;color:var(--tone-708164, #708164)}.language-method summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between}.language-method summary:after{content:'＋'}.language-method[open] summary:after{content:'−'}.language-method summary::-webkit-details-marker{display:none}.language-method p{font-size:10px;line-height:1.8;padding-top:10px}.language-method a{display:inline-block;font-size:10px;color:var(--tone-315f40, #315f40);margin-top:8px}.language-board .identity-bottom>a{font-size:10px;letter-spacing:0}.language-board .identity-bottom{padding-top:18px}
@media(max-width:1080px) and (min-width:761px){.language-list{grid-template-columns:1fr}.language-scroll{max-height:278px}.language-heading h2{font-size:21px}}
@media(max-width:480px){.language-panel{padding:17px 12px 12px}.language-list{gap:0 11px}.language-row{grid-template-columns:19px minmax(0,1fr) auto;gap:5px}.language-row img{width:19px;height:19px}.language-name{font-size:10px}.language-percent{font-size:9px}.language-scroll{max-height:279px}.language-heading h2{font-size:22px}.language-scope{font-size:9px}}
@media(max-width:350px){.language-list{grid-template-columns:1fr}.language-name{font-size:11px}.language-percent{font-size:10px}}
.language-name{font-size:12px}.language-percent{font-size:11px}
@media(max-width:480px){.language-name{font-size:11px}.language-percent{font-size:10px}}
.work-jump-links{display:flex;flex-wrap:wrap;gap:9px;margin:-5px 0 32px}.work-jump-links a{font-size:12px;padding:7px 14px;border:1px solid var(--tone-dce3da, #dce3da);border-radius:6px;background:var(--brand-surface);color:var(--tone-4b6d55, #4b6d55)}.work-jump-links a:hover{background:var(--tone-e8eee4, #e8eee4);border-color:var(--tone-95aa88, #95aa88)}
.personal-work.ai .work-photo{background:var(--tone-eef2e9, #eef2e9)}.personal-work.ai .work-photo.logo-cover img{width:90px;height:90px;object-fit:contain}.personal-work.ai .work-body h3{font-size:17px;overflow-wrap:anywhere}
.personal-contributions{padding-top:28px;padding-bottom:8px}.contribution-meta{display:flex;justify-content:space-between;gap:12px;color:var(--tone-6b8266, #6b8266);font-size:10px;margin-bottom:10px}.contribution-date{font:10px/1.6 ui-monospace,monospace;color:var(--tone-77866f, #77866f)}.community-project .work-photo img{object-fit:contain;padding:12px}.community-project .work-photo.logo-cover img{width:90px;height:90px;object-fit:contain;padding:0}.personal-iot+.personal-find{margin-top:65px}
@media(max-width:760px){.work-jump-links{margin-top:0;gap:7px}.work-jump-links a{font-size:11px;padding:7px 11px}.personal-contributions{padding-top:17px}.personal-iot+.personal-find{margin-top:40px}}
.personal-home{--ink:var(--tone-192c29, #192c29);--muted:var(--tone-68756e, #68756e);--blue:var(--tone-236a50, #236a50);--line:var(--tone-dce3da, #dce3da);--bg:var(--tone-f7f8f3, #f7f8f3);background:var(--bg)}
.personal-home .site-header{background:var(--brand-header)}
.personal-home .brand{font-size:19px;letter-spacing:-.7px}
.personal-home .desktop-nav a[aria-current=page],.personal-home .desktop-nav a:hover{background:var(--tone-e8eee4, #e8eee4);color:var(--tone-285c44, #285c44)}
.personal-home .btn-primary{background:var(--tone-234e3c, #234e3c);box-shadow:none;border-radius:8px;color:#fff}
.personal-home .btn-primary:hover{background:var(--tone-163e2c, #163e2c);box-shadow:0 5px 14px var(--tone-234e3c18, #234e3c18)}
.personal-home a:focus-visible,.personal-home summary:focus-visible{outline-color:var(--tone-578c62, #578c62)}
.personal-home .site-footer{margin-top:0}
.personal-label{display:block;font:600 10px/1.6 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.14em;color:var(--tone-697e6d, #697e6d);margin-bottom:13px}
.personal-text-link{display:inline-flex;align-items:center;gap:18px;font-size:13px;font-weight:600;line-height:1.5}
.personal-text-link:hover{color:var(--tone-34704f, #34704f)}
.personal-hero{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:72px;align-items:center;padding-top:68px;padding-bottom:64px}
.personal-kicker{display:flex;gap:8px;align-items:center;font-size:12px;color:var(--tone-4b6d55, #4b6d55);letter-spacing:.05em;margin-bottom:34px}
.personal-kicker>span{width:7px;height:7px;border-radius:50%;background:var(--tone-5d8357, #5d8357)}
.hello{color:var(--ink);font-size:24px;font-weight:500;line-height:1.5;margin-bottom:3px}
.personal-intro h1{font-size:clamp(38px,4.4vw,59px);letter-spacing:-.065em;line-height:1.3;white-space:nowrap}
.personal-intro h1>span:not(.name-period){color:var(--tone-406d50, #406d50)}.name-period{color:#d2974e}
.intro-line{font-size:28px;line-height:1.6;color:var(--ink);margin-top:23px;letter-spacing:-.02em}.intro-line strong{font-weight:600}
.intro-description{font-size:14px;line-height:1.95;margin-top:18px}
.personal-actions{display:flex;align-items:center;flex-wrap:wrap;gap:22px;margin-top:27px}
.intro-footnote{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;border-top:1px solid var(--line);padding-top:21px;margin-top:36px;font-size:10px;color:var(--tone-798479, #798479)}.intro-footnote a{color:var(--tone-486453, #486453)}
.identity-board{background:var(--tone-edf0e7, #edf0e7);border:1px solid var(--tone-dbe1d4, #dbe1d4);padding:23px;border-radius:20px;box-shadow:10px 14px 0 var(--tone-e6ebdf, #e6ebdf);transform:rotate(1deg)}
.identity-top{display:flex;align-items:center;gap:13px;margin-bottom:23px}.identity-avatar{border-radius:14px;width:54px;height:54px}.identity-top strong{font-size:16px;display:block;letter-spacing:-.025em}.identity-top div>span{display:block;font:9px ui-monospace,monospace;letter-spacing:.1em;color:var(--tone-7a8675, #7a8675);margin-top:7px}.identity-mark{font-size:44px;color:var(--tone-6a8658, #6a8658);margin-left:auto;line-height:1}
.desk-project{display:block;background:var(--brand-surface);border:1px solid var(--tone-dce1d7, #dce1d7);padding:10px;border-radius:11px;transform:rotate(-2deg);box-shadow:0 6px 15px var(--tone-233c2010, #233c2010)}.desk-caption{display:flex;align-items:center;justify-content:space-between;color:var(--tone-4b604f, #4b604f);font-size:10px;padding:3px 3px 11px}.desk-project>img{width:100%;height:246px;object-fit:cover;border-radius:5px}.desk-note{display:block;text-align:center;font-size:12px;color:var(--tone-506344, #506344);padding:13px 0 5px;letter-spacing:.05em}.desk-project:hover{border-color:var(--tone-92a487, #92a487)}.identity-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:24px;font:9px ui-monospace,monospace;letter-spacing:.13em;color:var(--tone-697c5d, #697c5d)}.identity-bottom>span:last-child{font-size:18px;letter-spacing:0}
.personal-about{display:grid;grid-template-columns:.85fr 1.5fr;gap:100px;padding:48px 0 52px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.personal-about h2{font-size:29px;line-height:1.5}.personal-about p{font-size:14px;line-height:1.9}.personal-about p+p{margin-top:10px}.interest-tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:20px}.interest-tags a{font-size:10px;color:var(--tone-566b56, #566b56);border:1px solid var(--tone-dce3d7, #dce3d7);background:var(--tone-eff3e9, #eff3e9);border-radius:5px;padding:4px 9px}.interest-tags a:hover{background:var(--tone-e1ead8, #e1ead8)}
.personal-works{padding-top:75px}.personal-section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:35px}.personal-section-heading h2{font-size:34px;line-height:1.4;letter-spacing:-.05em}.personal-section-heading h2>span{color:var(--tone-759161, #759161)}.personal-section-heading> a{padding-bottom:7px;white-space:nowrap}.personal-section-heading p{font-size:13px;margin-top:10px}
.work-group{margin-bottom:42px;scroll-margin-top:106px}.work-group-heading{display:flex;align-items:center;gap:14px}.section-number{font:14px ui-monospace,monospace;color:var(--tone-81927c, #81927c);border-right:1px solid var(--tone-cbd5c5, #cbd5c5);padding-right:16px;align-self:stretch;display:flex;align-items:center}.mini-label{font-size:10px;color:var(--tone-7d8b77, #7d8b77);letter-spacing:.1em}.work-group-heading h3{font-size:21px;line-height:1.6}.work-group-heading>a{margin-left:auto;font-size:11px;color:var(--tone-63795d, #63795d)}.work-group-intro{font-size:12px;margin:10px 0 20px}.personal-work-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
.personal-work{background:var(--brand-surface);border:1px solid var(--line);border-radius:13px;overflow:hidden;transition:transform .2s,border-color .2s,box-shadow .2s;min-width:0;display:flex;flex-direction:column}.personal-work:hover{transform:translateY(-4px);border-color:var(--tone-95aa88, #95aa88);box-shadow:0 12px 22px var(--tone-23492b0c, #23492b0c)}.work-photo{background:var(--tone-eef0e9, #eef0e9);aspect-ratio:16/10;overflow:hidden}.work-photo img{display:block;width:100%;height:100%;object-fit:cover}.software .work-photo img{object-fit:contain;padding:12px}.work-body{padding:20px 21px 22px}.work-tech{font-size:10px;color:var(--tone-6b8266, #6b8266);display:block;margin-bottom:9px}.work-body h3{font-size:18px;letter-spacing:-.025em;display:flex;gap:12px;justify-content:space-between}.work-body h3>span{font-size:16px;color:var(--tone-839778, #839778);flex-shrink:0}.work-body p{font-size:12px;line-height:1.8;margin-top:10px}
.personal-iot{display:grid;grid-template-columns:1fr 1fr;gap:52px;align-items:center;padding:44px;background:var(--tone-e9eee3, #e9eee3);border:1px solid var(--tone-dce4d3, #dce4d3);border-radius:18px;margin-top:58px}.iot-copy h2{font-size:30px;line-height:1.45}.iot-copy p{font-size:13px;line-height:1.95;margin-top:17px}.iot-platforms{font:10px/1.8 ui-monospace,monospace;color:var(--tone-607259, #607259);margin-top:19px}.iot-copy .personal-actions{gap:18px}.iot-screen{min-width:0}.iot-screen img{width:100%;height:280px;object-fit:contain;background:var(--tone-f7f9f4, #f7f9f4);border:8px solid #fff;border-radius:10px;box-shadow:0 12px 24px var(--tone-314b2310, #314b2310)}.iot-screen>span{display:block;font:9px ui-monospace,monospace;color:var(--tone-7f8c75, #7f8c75);letter-spacing:.1em;text-align:center;margin-top:17px}
.personal-connections{padding-top:73px;padding-bottom:66px}.connection-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:23px}.connection-list a{display:flex;align-items:center;gap:15px;padding:21px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.connection-index{font:10px ui-monospace,monospace;color:var(--tone-889b81, #889b81)}.connection-list h3{font-size:16px;letter-spacing:-.02em}.connection-list p{font-size:11px;margin-top:5px}.connection-list a>span:last-child{margin-left:auto;color:var(--tone-7e9377, #7e9377)}.connection-list a:hover h3{color:var(--tone-407745, #407745)}
.personal-find{padding-top:48px;padding-bottom:40px;border-top:1px solid var(--line)}.personal-platforms{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.personal-platform{display:flex;gap:11px;align-items:center;background:var(--brand-surface);border:1px solid var(--line);border-radius:9px;padding:18px 15px}.personal-platform:hover{border-color:var(--tone-9cb08e, #9cb08e)}.platform-icon{flex-shrink:0;width:38px;height:38px;display:grid;place-items:center}.platform-icon img{width:28px;height:28px;object-fit:contain}.platform-icon.wide-logo{background:#233a60;border-radius:5px;width:58px}.wide-logo img{width:49px;height:28px}.personal-platform b{font-size:12px;display:block}.personal-platform small{font-size:10px;color:var(--tone-7b8876, #7b8876);display:block;margin-top:5px}.personal-platform>span:last-child{color:var(--tone-8c9a83, #8c9a83);margin-left:auto}
.personal-contact{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-top:35px;padding:29px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.personal-contact h3{font-size:22px}.personal-contact p{font-size:12px;margin-top:9px}.personal-contact>a{display:flex;gap:35px;align-items:center;font-size:23px;letter-spacing:-.04em}.personal-contact>a:hover{color:var(--tone-42763c, #42763c)}.personal-quicklinks{display:flex;flex-wrap:wrap;gap:13px 21px;align-items:center;margin-top:23px;font-size:11px;color:var(--tone-5c6e58, #5c6e58)}.personal-quicklinks>span{color:var(--tone-8a9583, #8a9583);margin-right:auto}
@media(max-width:1080px){.personal-hero{gap:36px;padding-top:50px}.personal-intro h1{font-size:45px}.intro-line{font-size:24px}.identity-board{padding:18px}.desk-project>img{height:210px}.personal-about{gap:55px}.personal-iot{gap:30px;padding:30px}.personal-platforms{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.personal-hero{grid-template-columns:1fr;gap:35px;padding-top:35px;padding-bottom:45px}.personal-kicker{font-size:10px;margin-bottom:24px}.hello{font-size:21px}.personal-intro h1{font-size:clamp(34px,8.8vw,60px)}.intro-line{font-size:25px;margin-top:15px}.intro-description{font-size:13px;margin-top:16px}.desktop-break{display:none}.personal-actions{gap:18px;margin-top:23px}.personal-text-link{font-size:12px;gap:10px}.intro-footnote{margin-top:26px;padding-top:17px;font-size:9px}.identity-board{transform:none;max-width:460px;width:100%;justify-self:center;box-shadow:6px 8px 0 var(--tone-e6ebdf, #e6ebdf)}.desk-project>img{height:245px}.identity-top{margin-bottom:19px}.identity-top strong{font-size:16px}.identity-bottom{padding-top:20px}.personal-about{grid-template-columns:1fr;gap:23px;padding-top:34px;padding-bottom:35px}.personal-about h2{font-size:26px}.personal-about h2 br{display:none}.personal-about p{font-size:13px}.personal-works{padding-top:44px}.personal-section-heading{gap:20px;align-items:flex-start;flex-wrap:wrap;margin-bottom:25px}.personal-section-heading h2{font-size:28px}.personal-section-heading> a{padding-bottom:0;font-size:11px}.personal-label{font-size:9px;margin-bottom:10px}.work-group{margin-bottom:30px}.work-group-heading h3{font-size:19px}.work-group-heading>a{font-size:10px}.work-group-intro{font-size:11px}.personal-work-grid{grid-template-columns:1fr;gap:19px}.work-photo{aspect-ratio:16/9}.work-body{padding:20px}.work-body h3{font-size:19px}.work-body p{font-size:13px}.personal-iot{grid-template-columns:1fr;padding:25px;margin-top:40px;gap:28px}.iot-copy h2{font-size:27px}.iot-copy p{font-size:12px}.iot-platforms{font-size:9px}.iot-screen img{height:200px}.personal-connections{padding-top:45px;padding-bottom:38px}.personal-section-heading p{font-size:12px}.connection-list{grid-template-columns:1fr;gap:0}.connection-list a+a{border-top:0}.personal-find{padding-top:35px}.personal-platforms{gap:10px}.personal-platform{padding:14px 11px;flex-wrap:wrap;gap:9px}.personal-platform>span:last-child{display:none}.personal-platform b{font-size:12px}.personal-platform small{font-size:9px}.personal-contact{flex-direction:column;align-items:flex-start;gap:22px;margin-top:25px;padding:25px 0}.personal-contact h3{font-size:22px}.personal-contact>a{font-size:24px}.personal-quicklinks>span{width:100%;font-size:10px}.personal-home .mobile-menu nav a:hover,.personal-home .mobile-menu nav a[aria-current=page]{background:var(--tone-e8eee4, #e8eee4);color:var(--tone-285c44, #285c44)}}
@media(min-width:481px) and (max-width:760px){.personal-work-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.personal-work:last-child{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr}.personal-work:last-child .work-photo{aspect-ratio:auto;min-height:160px}.personal-work:last-child .work-body{align-self:center}}
@media(max-width:380px){.personal-home .brand{font-size:17px}.personal-intro h1{font-size:33px}.personal-kicker{letter-spacing:0}.personal-actions{gap:16px}.personal-actions .personal-text-link{font-size:11px}.desk-project>img{height:190px}.personal-platform{display:block}.personal-platform>span:nth-child(2){display:block;margin-top:9px}.personal-contact>a{font-size:22px}.work-group-heading{gap:10px}.section-number{padding-right:10px}.work-group-heading h3{font-size:17px}}
@media(prefers-reduced-motion:reduce){.personal-home *{scroll-behavior:auto;transition:none!important;transform:none!important}}
