:root{--bg:#f7f7f5;--paper:#fff;--ink:#0b0b0b;--muted:#5f5f5f;--line:#00000029;--grid:#0000001f;--grid-soft:#0000000e;--accent:#1769e8;--shadow:0 18px 45px #0000001f;--hard-shadow:12px 12px 0 #00000014;--max:1760px;--font-display:Georgia, "Times New Roman", serif;--font-heading:"Segoe UI Variable Display", Aptos, "Segoe UI", Arial, sans-serif;--font-body:Aptos, "Segoe UI Variable Text", "Segoe UI", system-ui, sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{color:var(--ink);background:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px), linear-gradient(var(--grid-soft) 1px, transparent 1px), linear-gradient(90deg, var(--grid-soft) 1px, transparent 1px), var(--bg);font-family:var(--font-body);letter-spacing:0;background-size:112px 112px,112px 112px,28px 28px,28px 28px;margin:0}a{color:inherit;text-decoration:none}button{font:inherit}h1,h2,h3,h4,p{margin-top:0}h1,.brand,.skill-word{font-family:var(--font-display)}h2,h3,h4,.section-kicker,.topbar nav{font-family:var(--font-heading)}main{min-height:100vh}.topbar{z-index:50;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#f7f7f5e6;border-bottom:2px solid #0000009e;justify-content:space-between;align-items:center;min-height:74px;padding:0 clamp(18px,3vw,42px);display:flex;position:sticky;top:0}.brand{font-size:1.22rem;font-weight:560}.topbar nav{color:#111;justify-content:space-between;align-items:center;gap:0;width:min(62vw,760px);font-size:1.12rem;display:flex}.topbar nav a{padding:25px 0 23px;position:relative}.topbar nav a:after{content:"";transform-origin:50%;background:currentColor;height:1px;transition:transform .18s;position:absolute;bottom:18px;left:0;right:0;transform:scaleX(0)}.topbar nav a:hover:after{transform:scaleX(1)}.section{width:min(var(--max), calc(100% - 24px));margin:0 auto;padding:92px 0;scroll-margin-top:76px}.hero{grid-template-columns:minmax(0,1fr) minmax(620px,760px);align-items:center;gap:clamp(30px,6vw,82px);min-height:570px;padding-top:54px;padding-bottom:52px;display:grid}.hero-copy{align-self:center;padding-left:clamp(18px,2.6vw,52px)}.eyeline{color:#101010;min-height:45px;margin:0 0 8px;font-size:clamp(2.05rem,3.2vw,3.2rem);line-height:1.12}.eyeline span:first-child{font-weight:520}h1{min-height:1.05em;margin-bottom:14px;font-size:clamp(5.1rem,8.7vw,10.4rem);font-weight:460;line-height:.96}.role{color:#252525;margin-bottom:0;font-size:clamp(1.25rem,1.55vw,1.75rem);line-height:1.45}.cursor{background:var(--ink);width:2px;height:1em;margin-left:5px;animation:.9s steps(2,start) infinite blink;display:inline-block;transform:translateY(.14em)}.cursor-name{height:.78em;margin-left:8px}@keyframes blink{50%{opacity:0}}.photo-module{box-shadow:var(--hard-shadow), var(--shadow);background:#f5f5f2db;border:1px solid #00000057;padding:16px;position:relative}.photo-frame{min-height:500px}.photo-module:before{display:none}.photo-frame{aspect-ratio:5/4;color:#6a6a68;background:#d9d9d4;border:1px solid #00000047;place-items:center;font-size:clamp(1.2rem,3vw,2.35rem);font-weight:600;display:grid;position:relative;overflow:hidden}.carousel-photo{object-fit:cover;object-position:center top;width:100%;height:100%}.carousel-control{color:#111;cursor:pointer;background:#f7f7f5d6;border:1px solid #0000006b;place-items:center;width:38px;height:38px;transition:background .16s,color .16s,transform .16s;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.carousel-control:hover{color:#fff;background:#111;transform:translateY(-50%)scale(1.04)}.carousel-control.previous{left:12px}.carousel-control.next{right:12px}.carousel-control svg,.contact-links svg{fill:none;stroke:currentColor;stroke-linecap:square;stroke-linejoin:miter;stroke-width:1.8px;width:24px;height:24px}.photo-footer{color:#424242;justify-content:flex-end;align-items:center;padding-top:10px;font-size:.78rem;display:flex}.photo-dots{gap:7px;display:flex}.photo-dots span{border:1px solid #5b5b5b;border-radius:999px;width:6px;height:6px}.photo-dots .active{background:#111}.section-heading{max-width:790px;margin-bottom:70px}.section-heading.compact{margin-bottom:36px}.section-kicker{color:#1a1a1a;text-transform:uppercase;align-items:center;gap:10px;margin-bottom:14px;font-size:.78rem;font-weight:650;display:inline-flex}.section-kicker:before{content:"";background:#111;width:30px;height:2px;display:inline-block}.section-heading h2,.contact h2{margin-bottom:16px;font-size:clamp(2.1rem,5vw,4.85rem);font-weight:460;line-height:1}.section-heading p:not(.section-kicker){color:#333;font-size:clamp(1rem,1.8vw,1.28rem);line-height:1.55}.timeline{flex-direction:column;gap:0;padding:0 0 18px;display:flex;position:relative}.timeline-axis{background:#111;width:1px;position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}.timeline-axis:before,.timeline-axis:after{content:"";position:absolute;left:50%;transform:translate(-50%)}.timeline-axis:before{background:#111;border-radius:999px;width:8px;height:8px;top:0}.timeline-axis:after{border:6px solid #0000;border-top-color:#111;width:0;height:0;bottom:-6px}.timeline-card{border:1px solid #0000002e;border-top:5px solid var(--card-accent,#000000c2);width:calc(50% - 178px);box-shadow:var(--hard-shadow), var(--shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffffd6;border-radius:0;padding:14px 16px 15px;position:relative}.timeline-card+.timeline-card{margin-top:-52px}.timeline-card:before{z-index:-1;content:"";background:#ffffff59;border:1px solid #00000014;position:absolute;inset:6px -6px -6px 6px}.timeline-card.left{align-self:flex-start}.timeline-card.right{align-self:flex-end}.timeline-card.left{border-radius:0}.timeline-card:has(.logo-box.medical){--card-accent:#1f77b4}.timeline-card:has(.logo-box.award){--card-accent:#1f77b4}.timeline-card:has(.logo-box.business){--card-accent:#2f62a3}.timeline-card:has(.logo-box.growth){--card-accent:#2f8d46}.timeline-card:has(.logo-box.network){--card-accent:#8a4aa6}.timeline-card:has(.logo-box.school){--card-accent:#f2c300}.timeline-card:has(.logo-box.bank){--card-accent:#1f5ab8}.timeline-card p{color:#222;font-size:.9rem;line-height:1.34}.timeline-card .date{color:#151515;margin:7px 0 8px;font-size:.9rem;font-style:italic}.timeline-arrow{background:#111;width:166px;height:1px;position:absolute;top:40px}.timeline-arrow:after{content:"";border-top:1px solid #111;border-right:1px solid #111;width:8px;height:8px;position:absolute;top:50%}.timeline-card.left .timeline-arrow{right:-178px}.timeline-card.left .timeline-arrow:after{left:0;transform:translateY(-50%)rotate(225deg)}.timeline-card.right .timeline-arrow{left:-178px}.timeline-card.right .timeline-arrow:after{right:0;transform:translateY(-50%)rotate(45deg)}.card-top{grid-template-columns:48px 1px minmax(0,1fr);align-items:center;gap:12px;display:grid}.logo-box{color:#333;border:1px solid #00000038;place-items:center;width:48px;height:48px;font-size:.82rem;font-weight:720;display:grid;box-shadow:4px 4px #00000014}.logo-box svg{width:38px;height:38px}.logo-box img{object-fit:contain;mix-blend-mode:multiply;max-width:42px;max-height:42px;display:block}.logo-box .icon-stroke{fill:none;stroke:currentColor;stroke-linecap:square;stroke-linejoin:miter;stroke-width:2.4px}.logo-box .icon-fill{fill:currentColor}.logo-box.medical{color:#1f8f77;background:#e9f6f2}.logo-box.award{color:#b8860b;background:#fff6d7}.logo-box.business{color:#2f62a3;background:#eaf1fb}.logo-box.growth{color:#2e8b45;background:#edf8ee}.logo-box.network{color:#8a4aa6;background:#f4ecf8}.logo-box.school{color:#7a3326;background:#faece7}.logo-box.bank{color:#1f5ab8;background:#e9f0ff}.divider{background:#111;width:1px;height:40px;display:block}.card-top h3{font-family:var(--font-display);margin:0;font-size:clamp(1.45rem,2.15vw,2.1rem);font-weight:500;line-height:.98}.metrics,.tag-row{flex-wrap:wrap;gap:8px;margin-top:18px;display:flex}.metrics span,.tag-row span{color:#222;background:#f4f4f1;border:1px solid #00000029;border-radius:999px;padding:6px 10px;font-size:.78rem;line-height:1}.skill-field{box-shadow:var(--hard-shadow), var(--shadow);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff9e;border:1px solid #00000042;padding:0;position:relative}.skill-field:before{z-index:-1;content:"";background:#ffffff42;border:1px solid #1769e82e;position:absolute;inset:-10px 10px 10px -10px}.skill-stage{background:linear-gradient(var(--grid-soft) 1px, transparent 1px), linear-gradient(90deg, var(--grid-soft) 1px, transparent 1px), #ffffff52;background-size:34px 34px;border:0;min-height:640px;position:relative;overflow:hidden}.skill-word{z-index:1;color:#8a8a86;cursor:pointer;overflow-wrap:anywhere;text-align:left;background:#ffffffb8;border:1px solid #00000024;border-radius:6px;place-items:center;width:138px;max-width:calc(100% - 40px);height:138px;margin:0;padding:4px;font-family:inherit;font-size:1rem;font-weight:500;line-height:1;transition:color .18s,transform .26s,opacity .24s,top .42s,right .42s,bottom .42s,left .42s;display:grid;position:absolute;box-shadow:7px 7px #0000000e,0 12px 26px #00000017}.logo-stack{justify-content:center;align-items:center;gap:9px;width:100%;height:100%;display:flex}.logo-stack img{object-fit:contain;width:96px;height:96px;display:block}.logo-stack.multi img{width:60px;height:60px}.logo-stack.multi{gap:7px}.skill-word:hover,.skill-word.selected{border-color:#00000047;transform:translateY(-4px)scale(1.04)}.skill-field.has-selected .skill-word:not(.selected){opacity:.52;transform:scale(.86)}.slot-python{top:8%;left:7%}.slot-next{top:8%;left:76%}.slot-powerpoint{top:63%;left:13%}.slot-excel{top:63%;left:79%}.slot-doc{top:36%;left:22%}.skill-word.skill-word.selected,.skill-field.has-selected .skill-word.selected{z-index:3;width:210px;height:210px;inset:74px auto auto 50%;transform:translate(-50%)scale(1)}.skill-field.has-selected .slot-python:not(.selected){top:8%;left:6%}.skill-field.has-selected .slot-next:not(.selected){top:8%;left:82%}.skill-field.has-selected .slot-powerpoint:not(.selected){top:68%;left:7%}.skill-field.has-selected .slot-excel:not(.selected){top:68%;left:83%}.skill-field.has-selected .slot-doc:not(.selected){top:38%;left:7%}.skill-word:focus-visible{outline:2px solid var(--accent);outline-offset:8px}.skill-word{-webkit-tap-highlight-color:transparent;appearance:none;-webkit-user-select:none;user-select:none}.slot-react{top:37%;left:47%}.skill-field.has-selected .slot-react:not(.selected){top:38%;left:83%}.skill-word.skill-word.skill-word{text-wrap:balance}.skill-detail{z-index:2;border:1px solid #0003;border-top:7px solid var(--skill-accent,#1769e8b8);opacity:0;pointer-events:none;text-align:center;background:#ffffffd1;width:min(960px,100% - 120px);padding:28px 42px 30px;position:absolute;top:340px;left:50%;transform:translate(-50%);box-shadow:0 16px 35px #0000001a}.skill-detail.visible{opacity:1;pointer-events:auto}.skill-detail-head{justify-content:center;align-items:center;gap:28px;margin-bottom:16px;display:flex}.skill-detail-head>span{display:none}.skill-field.has-selected .skill-detail-head>span{display:block}.skill-detail h3{margin:0;font-size:clamp(3rem,4.2vw,4.8rem);font-weight:440;line-height:.95}.skill-detail p{color:#2d2d2d;margin-bottom:0;font-size:clamp(1.05rem,1.7vw,1.28rem);line-height:1.62}.skill-logo{width:74px;height:74px;display:block}.skill-word.selected .skill-logo{width:108px;height:108px}.skill-word.selected .logo-stack img{width:152px;height:152px}.skill-word.selected .logo-stack.multi img{width:88px;height:88px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.portfolio-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(24px,3.2vw,42px);display:grid}.portfolio-card{background:#ffffffc7;border:1px solid #00000094;flex-direction:column;min-height:430px;padding:22px;transition:background .18s,box-shadow .18s,transform .18s;display:flex;box-shadow:10px 10px #00000013,0 18px 38px #0000001a}.portfolio-card:hover{background:#ffffffeb;transform:translateY(-3px);box-shadow:12px 12px #00000017,0 22px 46px #00000021}.portfolio-image{aspect-ratio:4/3;color:#0000007a;font-family:var(--font-heading);letter-spacing:0;background-color:#d8d8d5;background-image:linear-gradient(#0000000f 1px,#0000 1px),linear-gradient(90deg,#0000000f 1px,#0000 1px),none;background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:22px 22px;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;border:1px solid #00000085;place-items:center;margin-bottom:18px;font-size:clamp(2.1rem,4.2vw,4.2rem);font-weight:650;display:grid;overflow:hidden}.portfolio-image img{object-fit:cover;object-position:top center;width:100%;height:100%;display:block}.portfolio-copy{gap:7px;display:grid}.portfolio-copy p:first-child{color:#5a5a5a;font-family:var(--font-heading);text-transform:uppercase;margin-bottom:2px;font-size:.78rem;font-weight:700}.portfolio-copy h3{font-family:var(--font-display);margin-bottom:0;font-size:clamp(1.8rem,2.7vw,2.55rem);font-weight:540;line-height:.98}.portfolio-copy span{color:#4a4a4a;font-size:.92rem;font-weight:650;line-height:1.25}.portfolio-copy p:last-child{color:#242424;margin:3px 0 0;font-size:.98rem;line-height:1.42}.resume-link{color:#111;font-family:var(--font-display);justify-content:center;align-items:center;gap:0;margin:34px auto 0;font-size:clamp(1.15rem,1.8vw,1.5rem);font-style:italic;display:inline-flex}.resume-link span:first-child{text-underline-offset:5px;-webkit-text-decoration:underline #0000;text-decoration:underline #0000;transition:text-decoration-color .18s}.resume-link span:last-child{opacity:0;transition:margin-left .18s,opacity .18s,transform .18s;display:inline-block;transform:translate(-8px)}.resume-link:hover span:first-child,.resume-link:focus-visible span:first-child{text-decoration-color:currentColor}.resume-link:hover span:last-child,.resume-link:focus-visible span:last-child{opacity:1;margin-left:12px;transform:translate(0)}.work{text-align:left}.work>.resume-link{width:fit-content;display:flex}.work-grid{grid-template-columns:1fr 1fr;gap:22px;display:grid}.work-column{box-shadow:var(--hard-shadow), var(--shadow);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffc7;border:2px solid #00000047}.work-column-head{border-bottom:1px solid #00000029;padding:22px 22px 18px}.work-column-head h3{margin-bottom:8px;font-size:clamp(1.65rem,3vw,2.65rem);font-weight:530}.work-column-head p,.work-card p{color:#3a3a3a;line-height:1.5}.work-list{display:grid}.work-card{background:#ffffff8f;border-bottom:1px solid #0000002e;grid-template-columns:54px minmax(0,1fr);gap:18px;padding:24px 22px;transition:background .18s,border-color .18s;display:grid;position:relative}.work-card:last-child{border-bottom:0}.work-card:after{color:#111;content:"->";opacity:0;transition:opacity .18s,transform .18s;position:absolute;top:22px;right:22px;transform:translate(-6px)}.work-card:hover{background:#fff}.work-card:hover:after{opacity:1;transform:translate(0)}.work-index{color:#333;background:#f4f4f2;border:1px solid #0000002e;place-items:center;width:42px;height:42px;font-size:.82rem;font-weight:650;display:grid}.work-meta{color:#646464;text-transform:uppercase;margin-bottom:7px;font-size:.78rem;font-weight:650}.work-card h4{margin-bottom:10px;padding-right:34px;font-size:clamp(1.2rem,2vw,1.55rem);font-weight:560}.contact{text-align:center;place-items:center;min-height:72vh;display:grid}.contact h2{max-width:760px}.contact-links{justify-content:center;gap:clamp(28px,5vw,72px);margin-top:22px;display:flex}.contact-links a{background:#ffffffc7;border:2px solid #0000006b;border-radius:8px;place-items:center;width:132px;height:132px;font-size:1.25rem;font-weight:650;transition:background .18s,color .18s,transform .18s;display:grid;box-shadow:8px 8px #00000014,0 16px 28px #0000001f}.contact-links svg{fill:currentColor;stroke:none;width:88px;height:88px}.contact-links img{object-fit:contain;width:88px;height:88px;display:block}.contact-links a:first-child{color:#d93025;background:#fff1ef}.contact-links a:nth-child(2){color:#111;background:#f2f2f2}.contact-links a:nth-child(3){color:#0a66c2;background:#eaf3ff}.contact-links a:hover{color:#fff;background:#111;transform:translateY(-2px)}@media (max-width:880px){.topbar{padding:0 16px}.topbar nav{gap:18px;font-size:.86rem}.hero{grid-template-columns:1fr;min-height:auto;padding-top:64px}.photo-module{max-width:430px}.timeline{gap:26px;padding-left:28px}.timeline-axis{left:0}.timeline-card.left,.timeline-card.right{align-self:stretch;width:100%;margin-top:0}.timeline-card{min-height:auto}.timeline-card.left .timeline-arrow,.timeline-card.right .timeline-arrow{width:28px;left:-28px}.timeline-card.left .timeline-arrow:after,.timeline-card.right .timeline-arrow:after{left:0;right:auto;transform:translateY(-50%)rotate(225deg)}.work-grid{grid-template-columns:1fr}.portfolio-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:640px){body{background-size:92px 92px,92px 92px,23px 23px,23px 23px}.topbar{align-items:flex-start;min-height:74px;padding-top:11px}.topbar nav{flex-wrap:wrap;justify-content:flex-end;gap:2px 14px;max-width:220px}.topbar nav a{padding:0}.section{width:min(100% - 28px, var(--max));padding:68px 0;scroll-margin-top:94px}.hero{padding-top:54px}h1{font-size:clamp(3.2rem,17vw,5rem)}.eyeline{min-height:74px}.card-top{grid-template-columns:58px 1px minmax(0,1fr);gap:14px}.logo-box{width:58px;height:58px;font-size:.68rem}.divider{height:52px}.timeline-card{border-radius:0;padding:18px}.skill-stage{min-height:500px}.skill-word{font-size:clamp(1.1rem,7vw,2rem)}.skill-next{max-width:180px}.skill-detail{padding:20px;top:154px}.work-card,.portfolio-grid{grid-template-columns:1fr}.portfolio-card{min-height:auto;padding:16px}.resume-link{margin-top:26px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
