.page-mascot[data-astro-cid-nc4tnjkm]{width:var(--mascot-size);aspect-ratio:1;appearance:none;cursor:pointer;user-select:none;background:0 0;border:0;flex:none;padding:0;display:block}.mascot-visual[data-astro-cid-nc4tnjkm]{transform-origin:50% 78%;width:100%;height:100%;display:block;position:relative}.mascot-sheet[data-astro-cid-nc4tnjkm]{background-repeat:no-repeat;background-size:300% 300%;position:absolute;inset:0}.mascot-directions[data-astro-cid-nc4tnjkm]{background-position:50%}.mascot-reactions[data-astro-cid-nc4tnjkm]{opacity:0;background-position:0 0}:root{color-scheme:light;--page:#f7fafc;--paper:#fff;--ink:#142235;--muted:#536174;--quiet:#6b7787;--line:#dce4ec;--blue:#2458e8;--blue-dark:#1745c4;--blue-wash:#edf2ff;--mono:"IBM Plex Mono", "SFMono-Regular", Consolas, monospace;--sans:"Be Vietnam Pro", system-ui, sans-serif;font-family:var(--sans);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth;font-size:100%}*{box-sizing:border-box}body{background:var(--page);color:var(--ink);margin:0;font-size:1rem;line-height:1.65}a{color:inherit}img{max-width:100%;display:block}button,a{-webkit-tap-highlight-color:transparent}:focus-visible{outline:3px solid var(--blue);outline-offset:4px;border-radius:2px}::selection{color:var(--ink);background:#dce6ff}.wrap{width:min(100% - 3rem,74rem);margin-inline:auto}.skip-link{z-index:100;color:#fff;background:var(--ink);border-radius:.25rem;padding:.7rem 1rem;position:fixed;top:.5rem;left:.5rem;transform:translateY(-180%)}.skip-link:focus{transform:translateY(0)}.site-header{border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--page) 94%, white)}.header-inner{justify-content:space-between;align-items:center;gap:2rem;min-height:5.25rem;display:flex}.brand{align-items:center;gap:.8rem;text-decoration:none;display:inline-flex}.brand-mark{background:var(--blue);color:#fff;border-radius:.65rem .65rem .65rem .15rem;place-items:center;width:2.35rem;height:2.35rem;font-size:1.2rem;font-weight:700;display:grid}.brand-name{font-size:.94rem;font-weight:700;line-height:1.3}.brand-name span,.footer-brand span{color:var(--muted);font-family:var(--mono);margin-top:.18rem;font-size:.69rem;font-weight:400;display:block}nav{align-items:center;gap:clamp(1rem,2.4vw,2.25rem);display:flex}nav a{color:#344255;font-size:.875rem;font-weight:500;text-decoration:none;transition:color .16s}nav a:hover,nav .nav-contact{color:var(--blue)}.hero{grid-template-columns:minmax(0,1.13fr) minmax(18rem,.78fr);align-items:center;gap:clamp(3rem,9vw,8rem);min-height:min(45rem,100svh - 5.25rem);padding-block:4rem 5.5rem;animation:.65s cubic-bezier(.2,.7,.2,1) both hero-arrive;display:grid;position:relative}.hero-copy{max-width:43rem}.eyebrow,.field-label,.section-index,.proof-caption,.portrait-wrap figcaption,.case-number,.tool-host,.contact-cv>span{font-family:var(--mono)}.eyebrow{color:var(--muted);align-items:center;gap:.6rem;margin:0 0 1.4rem;font-size:.76rem;line-height:1.6;display:flex}.eyebrow-rule{background:var(--blue);width:1.5rem;height:2px;display:inline-block}h1{letter-spacing:-.065em;max-width:9ch;margin:0;font-size:clamp(3.25rem,6.6vw,6.25rem);font-weight:600;line-height:1.05}.name-period{color:var(--blue)}.hero-role{letter-spacing:-.025em;margin:1.3rem 0 0;font-size:clamp(1.1rem,2vw,1.38rem);font-weight:600}.hero-role span{color:var(--blue)}.hero-intro{max-width:36rem;color:var(--muted);margin:.9rem 0 0;font-size:1.08rem;line-height:1.85}.hero-actions{flex-wrap:wrap;align-items:center;gap:.8rem;margin-top:1.8rem;display:flex}.button{border:1px solid #0000;border-radius:.3rem;justify-content:center;align-items:center;gap:.9rem;min-height:2.9rem;padding:.72rem 1rem;font-size:.875rem;font-weight:600;text-decoration:none;transition:color .16s,background .16s,border-color .16s,transform .16s;display:inline-flex}.button:hover{transform:translateY(-2px)}.button-primary{background:var(--blue);color:#fff}.button-primary:hover{background:var(--blue-dark)}.button-outline{background:var(--paper);color:var(--ink);border-color:#b8c5d6}.button-outline:hover{border-color:var(--blue);color:var(--blue)}.button-text{color:var(--blue);padding-inline:.45rem}.cv-download{color:var(--muted);text-underline-offset:.22rem;align-self:center;padding:.55rem .35rem;font-size:.82rem}.cv-download:hover{color:var(--blue)}.portrait-wrap{justify-self:end;width:min(100%,26rem);margin:0;padding:.7rem .7rem 2.7rem;position:relative}.portrait-backdrop{z-index:-1;background:var(--blue-wash);border:1px solid #a7baf1;position:absolute;inset:1.7rem -.85rem 1.7rem 1.8rem}.portrait{object-fit:cover;object-position:center 25%;background:#e9edf2;width:100%;height:clamp(20rem,35vw,31.5rem)}.portrait-wrap figcaption{color:var(--muted);justify-content:space-between;font-size:.68rem;display:flex;position:absolute;bottom:.65rem;left:.7rem;right:.7rem}.portrait-wrap .mascot-hero{z-index:2;filter:drop-shadow(0 5px 5px #14223521);position:absolute;bottom:2rem;left:-1.9rem}.hero-down{color:var(--quiet);font-family:var(--mono);gap:.7rem;font-size:.68rem;text-decoration:none;display:inline-flex;position:absolute;bottom:1.6rem;right:0}.hero-down:hover{color:var(--blue)}.proof-section{border-block:1px solid var(--line);background:var(--paper)}.proof-inner{grid-template-columns:1fr 1fr;gap:0 4rem;padding-block:2rem 2.65rem;display:grid;position:relative}.proof-item{align-items:center;gap:1.45rem;min-height:5rem;display:flex}.proof-item+.proof-item{border-left:1px solid var(--line);padding-left:4rem}.proof-item>strong{color:var(--blue);letter-spacing:-.055em;font-variant-numeric:tabular-nums;font-size:clamp(2rem,4vw,3rem);font-weight:600;line-height:1}.proof-item h2{margin:0;font-size:.97rem;font-weight:600}.proof-item p{color:var(--muted);margin:.2rem 0 0;font-size:.82rem}.proof-caption{color:var(--quiet);grid-column:1/-1;margin:.75rem 0 0;font-size:.65rem}.section{padding-block:clamp(4.6rem,8vw,7.5rem)}.section-heading{grid-template-columns:13rem 1fr;gap:clamp(1.5rem,4vw,4rem);margin-bottom:2.8rem;display:grid}.section-index{color:var(--blue);align-items:baseline;gap:.65rem;padding-top:.6rem;font-size:.75rem;display:flex}.section-index span{color:var(--muted);font-size:.69rem}.section-title-group{justify-content:space-between;align-items:end;gap:2rem;display:flex}.section-title-group h2,.contact-copy h2{letter-spacing:-.055em;margin:0;font-size:clamp(2rem,4.4vw,3.65rem);font-weight:600;line-height:1.17}.section-title-group>p{max-width:21rem;color:var(--muted);margin:0 0 .3rem;font-size:.96rem}.case-list{border-top:1px solid var(--line)}.case{border-bottom:1px solid var(--line);background:0 0}.case summary{cursor:pointer;grid-template-columns:4.2rem 1fr 2.7rem;align-items:center;min-height:5.6rem;list-style:none;display:grid}.case summary::-webkit-details-marker{display:none}.case-number{color:var(--blue);font-size:.78rem}.case-title{letter-spacing:-.018em;padding-right:1rem;font-size:clamp(1.02rem,2vw,1.28rem);font-weight:600}.case-toggle{border:1px solid #cbd6e2;border-radius:50%;width:2rem;height:2rem;transition:transform .22s,border-color .18s,background .18s;position:relative}.case-toggle:before,.case-toggle:after{background:var(--ink);content:"";width:.7rem;height:1.5px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.case-toggle:after{transition:transform .18s;transform:translate(-50%,-50%)rotate(90deg)}.case[open] .case-toggle{border-color:var(--blue);background:var(--blue);transform:rotate(180deg)}.case[open] .case-toggle:before,.case[open] .case-toggle:after{background:#fff}.case[open] .case-toggle:after{transform:translate(-50%,-50%)rotate(0)}.case summary:hover .case-toggle{border-color:var(--blue)}.case-content{grid-template-columns:minmax(11rem,.72fr) 2fr;gap:.8rem 3.2rem;padding:0 3.8rem 2rem 4.2rem;display:grid}.case-content p{color:var(--muted);margin:.35rem 0 0;font-size:.9rem;line-height:1.8}.field-label{color:var(--quiet);letter-spacing:.035em;font-size:.67rem;font-weight:500;display:inline-block}.case-symptom{grid-row:span 2;padding-right:.5rem}.case-steps{grid-template-columns:1fr 1fr;gap:1.1rem 2rem;display:grid}.case-outcome{border-left:2px solid var(--blue);background:var(--paper);grid-column:1/-1;padding:1rem 1.15rem}.case-outcome p{color:var(--ink)}.case-tags{flex-wrap:wrap;grid-column:2;gap:.45rem;margin:-.1rem 0 0;padding:0;list-style:none;display:flex}.case-tags li{border:1px solid var(--line);color:#405066;font-family:var(--mono);border-radius:99px;padding:.25rem .55rem;font-size:.67rem}.brief-case{border-top:1px dashed #c9d3df;grid-template-columns:13rem 1fr;gap:1.3rem;margin-top:1.5rem;padding:1.2rem 0;display:grid}.brief-case-label{color:var(--quiet);font-family:var(--mono);font-size:.67rem}.brief-case p{color:var(--muted);margin:0;font-size:.88rem}.brief-case strong{color:var(--ink)}.experience-section{border-block:1px solid var(--line);background:#f0f4f8}.experience-grid{grid-template-columns:minmax(0,1.25fr) minmax(18rem,.75fr);gap:clamp(2.5rem,7vw,6.5rem);display:grid}.timeline{margin:0;padding:0;list-style:none}.timeline-item{border-top:1px solid #cfd9e4;grid-template-columns:9rem 1fr;gap:1rem;padding:1.25rem 0 1.45rem;display:grid}.timeline-item:first-child{border-top:0;padding-top:0}.timeline-item time{color:var(--muted);font-family:var(--mono);padding-top:.2rem;font-size:.72rem}.timeline-main h3{margin:0;font-size:1.03rem;font-weight:600}.timeline-main h3 span{color:var(--muted);font-weight:500}.timeline-main p{color:var(--muted);margin:.35rem 0 0;font-size:.87rem;line-height:1.75}.skills-panel{border:1px solid var(--line);background:var(--paper);align-self:start;padding:1.35rem 1.5rem}.education{border-bottom:1px solid var(--line);padding-bottom:1.25rem}.education h3{margin:.55rem 0 .1rem;font-size:1rem}.education p{color:var(--muted);margin:0;font-size:.86rem}.education p span{color:var(--quiet)}.skill-list{padding-block:1.15rem 1.1rem}.skill-list ul{flex-wrap:wrap;gap:.45rem;margin:.65rem 0 0;padding:0;list-style:none;display:flex}.skill-list li{color:#344255;background:#f1f4f8;border-radius:.18rem;padding:.28rem .55rem;font-size:.76rem}.learning-list{border-top:1px solid var(--line);padding-top:1rem}.learning-list p{color:var(--muted);margin:.5rem 0 0;font-size:.82rem;line-height:1.75}.toolbox-section{padding-bottom:clamp(5rem,9vw,8rem)}.tool-grid{border-top:1px solid var(--line);border-left:1px solid var(--line);grid-template-columns:repeat(3,1fr);display:grid}.tool-card{border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#ffffff8f;flex-direction:column;align-items:flex-start;min-height:12rem;padding:1.15rem 1.2rem 1rem;text-decoration:none;transition:background .18s,box-shadow .18s,transform .18s;display:flex}.tool-card:hover{z-index:1;background:var(--paper);position:relative;transform:translateY(-3px);box-shadow:0 10px 28px #14223514}.tool-host{color:var(--blue);font-size:.79rem;font-weight:500}.tool-description{color:var(--muted);margin-top:.72rem;font-size:.88rem;line-height:1.7}.tool-open{color:var(--ink);align-items:center;gap:.4rem;margin-top:auto;padding-top:.8rem;font-size:.78rem;font-weight:600;display:flex}.tool-open span{color:var(--blue);transition:transform .16s}.tool-card:hover .tool-open span{transform:translate(2px,-2px)}.contact-section{border-top:1px solid var(--line);background:#eaf0f8;padding-block:clamp(4rem,7vw,6rem)}.contact-inner{grid-template-columns:1fr minmax(19rem,.85fr);gap:2.5rem 7rem;display:grid}.contact-copy h2{font-size:clamp(2.35rem,4.5vw,3.8rem)}.contact-copy>p:not(.eyebrow){max-width:24rem;color:var(--muted);margin:1rem 0 0}.contact-copy .mascot-contact{filter:drop-shadow(0 5px 5px #1422351a);margin-top:.75rem}.contact-links{border-top:1px solid #cdd7e4;align-self:center}.contact-links>a{border-bottom:1px solid #cdd7e4;grid-template-columns:6.3rem 1fr 1.5rem;align-items:center;gap:.8rem;min-height:3.5rem;text-decoration:none;display:grid}.contact-links>a>span:first-child{color:var(--muted);font-size:.81rem}.contact-links strong{overflow-wrap:anywhere;font-size:.87rem;font-weight:600}.contact-arrow{color:var(--blue);justify-self:end}.contact-links>a:hover strong{color:var(--blue)}.contact-cv{grid-column:2;align-items:center;gap:1.25rem;display:flex}.contact-cv>span{color:var(--muted);margin-right:auto;font-size:.69rem}.contact-cv a{color:var(--blue);text-underline-offset:.22rem;font-size:.83rem;font-weight:600;text-decoration-thickness:1px}.site-footer{justify-content:space-between;align-items:center;gap:1.2rem;min-height:5.5rem;display:flex}.footer-brand{font-size:.8rem;font-weight:600;text-decoration:none}.site-footer>span,.site-footer>a:last-child{color:var(--muted);font-size:.75rem}.site-footer>a:last-child{text-underline-offset:.2rem}@keyframes hero-arrive{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media (width>=88rem){.hero{min-height:45rem}}@media (width<=56rem){.wrap{width:min(100% - 2.5rem,74rem)}.header-inner{gap:1rem;min-height:4.8rem}nav{gap:1rem}nav a{font-size:.8rem}.hero{min-height:unset;grid-template-columns:minmax(0,1fr) minmax(14rem,.72fr);gap:2.5rem;padding-block:4rem 5.25rem}h1{font-size:clamp(3.1rem,8vw,4.75rem)}.portrait{height:clamp(19rem,46vw,26rem)}.section-heading{grid-template-columns:10rem 1fr;gap:1.5rem}.section-title-group{flex-direction:column;align-items:flex-start;gap:.8rem}.case-content{grid-template-columns:minmax(9rem,.65fr) 2fr;gap:.75rem 1.8rem;padding-left:3.4rem}.experience-grid{grid-template-columns:1fr;gap:2.3rem}.skills-panel{max-width:none}.contact-inner{gap:2rem 3rem}}@media (width<=42rem){.wrap{width:min(100% - 2rem,74rem)}.site-header{background:var(--page)}.header-inner{min-height:4.3rem}.brand-mark{width:2.1rem;height:2.1rem}.brand-name{font-size:.82rem}.brand-name span{display:none}nav{gap:.8rem}nav a{white-space:nowrap;font-size:.74rem}nav a:nth-child(2),nav a:nth-child(3){display:none}.hero{grid-template-columns:minmax(0,1fr);gap:1.3rem;padding-block:2.5rem 4.2rem}.hero-copy{display:contents}.hero-copy .eyebrow{grid-row:1;margin-bottom:.15rem;font-size:.68rem}h1{grid-row:2;max-width:12ch;font-size:clamp(3.15rem,12vw,4.35rem)}.hero-role{grid-row:3;margin-top:-.6rem;font-size:1.05rem}.hero-intro{grid-row:4;margin-top:-.65rem;font-size:.97rem;line-height:1.72}.portrait-wrap{grid-row:5;justify-self:center;width:min(75%,20rem);margin:.4rem auto .15rem;padding:.35rem .35rem 2.1rem}.portrait-backdrop{inset:1.05rem -.55rem 1.3rem 1.1rem}.portrait{object-position:center 24%;height:clamp(15.5rem,76vw,22rem)}.portrait-wrap figcaption{font-size:.61rem;bottom:.48rem;left:.35rem;right:.35rem}.portrait-wrap .mascot-hero{width:5.25rem;bottom:1.8rem;left:-.65rem}.hero-actions{grid-row:6;gap:.55rem;margin-top:.3rem}.button{min-height:2.8rem;padding-inline:.8rem;font-size:.82rem}.button-text{padding-inline:.35rem}.cv-download{font-size:.78rem}.hero-down{bottom:1rem}.proof-inner{grid-template-columns:1fr;padding-block:.7rem 1rem}.proof-item{gap:1rem;min-height:5rem}.proof-item+.proof-item{border-top:1px solid var(--line);border-left:0;padding:.75rem 0 0}.proof-item>strong{min-width:4.5rem;font-size:2.35rem}.proof-item h2{font-size:.92rem}.proof-item p{font-size:.77rem}.proof-caption{margin-top:.7rem}.section{padding-block:3.9rem}.section-heading{grid-template-columns:1fr;gap:.75rem;margin-bottom:1.8rem}.section-index{padding-top:0}.section-title-group h2,.contact-copy h2{font-size:clamp(2.1rem,9vw,3rem)}.section-title-group>p{font-size:.9rem}.case summary{grid-template-columns:2.4rem 1fr 2.25rem;min-height:5rem}.case-title{font-size:.98rem;line-height:1.45}.case-toggle{width:1.8rem;height:1.8rem}.case-content{grid-template-columns:1fr;gap:1rem;padding:0 .1rem 1.4rem 2.4rem}.case-symptom{background:var(--paper);border-left:2px solid #abbdec;grid-row:auto;padding:.75rem .9rem}.case-steps{grid-template-columns:1fr;gap:.9rem}.case-outcome,.case-tags{grid-column:1}.brief-case{grid-template-columns:1fr;gap:.5rem;margin-top:1rem}.timeline-item{grid-template-columns:1fr;gap:.35rem}.timeline-item time{font-size:.68rem}.timeline-main h3{font-size:.97rem}.timeline-main p{font-size:.84rem}.skills-panel{padding:1.15rem}.tool-grid{grid-template-columns:minmax(0,1fr)}.tool-card{min-height:9.5rem;padding:1rem}.tool-description{margin-top:.4rem}.contact-inner{grid-template-columns:1fr;gap:1.7rem}.contact-copy>p:not(.eyebrow){margin-top:.7rem;font-size:.92rem}.contact-copy .mascot-contact{width:5.75rem}.contact-links>a{grid-template-columns:5.2rem 1fr 1.2rem;gap:.45rem}.contact-links>a>span:first-child{font-size:.76rem}.contact-links strong{font-size:.78rem}.contact-cv{grid-column:1;gap:1rem}.site-footer{flex-wrap:wrap;justify-content:space-between;min-height:6rem;padding-block:1rem}.site-footer>span{order:3;width:100%;font-size:.7rem}.site-footer>a:last-child{font-size:.72rem}}@media (width<=25rem){.header-inner{gap:.5rem}.brand{gap:.4rem}nav a:first-child{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
