:root{--page:#f5f0e9;--ink:#534c43;--ink-strong:#2c2620;--muted:#776f66;--line-gray:#696c6e;--line-brown:#744929;--cream-deep:#fce8c8;--paper:#fffaf2;--white-panel:#fbfbfb;--fabric-border-width:5px;--sticky-header-height:92px}*,:before,:after{box-sizing:border-box;border:0 solid}html{-webkit-text-size-adjust:100%;tab-size:4;scroll-behavior:smooth;-webkit-tap-highlight-color:transparent;line-height:1.5}body{background:var(--page);min-height:100vh;color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:inherit;margin:0}h1,h2,h3,h4,h5,h6,p,blockquote,figure,pre{margin:0}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}ol,ul,menu{margin:0;padding:0;list-style:none}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}body.is-pdf-modal-open,body.is-attribution-modal-open{overflow:hidden}button,input,optgroup,select,textarea{color:inherit;font:inherit;line-height:inherit;letter-spacing:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button;background-color:#0000;background-image:none}button,[role=button]{cursor:pointer}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}.site-header{z-index:1000;backdrop-filter:blur(18px)saturate(1.22);-webkit-backdrop-filter:blur(18px)saturate(1.22);background:#f5f0e99e;border-bottom:1px solid #74492900;transition:background .24s,border-color .24s,box-shadow .24s;position:sticky;top:0}.site-header.is-scrolled{background:#f5f0e9c7;border-bottom-color:#7449292e;box-shadow:0 12px 36px #32251814}.header-inner{grid-template-columns:1fr auto 1fr;align-items:center;column-gap:42px;width:min(1260px,100% - 96px);height:92px;margin:0 auto;display:grid}.brand{color:#111;white-space:nowrap;width:max-content;font-family:Great Vibes,cursive;font-size:clamp(1.35rem,1.85vw,1.85rem);line-height:1;text-decoration:none}.nav-links{justify-content:center;align-items:center;gap:clamp(34px,5vw,78px);font-family:Great Vibes,cursive;font-size:1rem;line-height:1;display:flex}.nav-links a{color:#45403abd;margin:-.15em -.22em;padding:.15em .22em;text-decoration:none;transition:color .18s,transform .18s;display:inline-block;overflow:visible}.nav-links a:hover{color:var(--ink-strong);transform:translateY(-1px)}.header-actions{justify-content:flex-end;align-items:center;gap:30px;display:flex}.hero{background:var(--page);align-items:center;padding:clamp(16px,9vw - 92px,30px) 0 clamp(84px,9vw,80px);display:flex}.hero-shell{grid-template-columns:minmax(0,1.28fr) minmax(320px,.72fr);align-items:center;gap:clamp(58px,8vw,128px);width:min(1210px,100% - 120px);margin:0 auto;display:grid}.hero-copy{padding-top:clamp(18px,2vw,34px)}.hero-copy,.portrait-frame,.fabric-toggle{transition:opacity .42s,transform .68s cubic-bezier(.22,1,.36,1)}body:not(.is-ready) .hero-copy{opacity:.96;transform:translateY(10px)}body:not(.is-ready) .portrait-frame{opacity:.96;transform:translateY(12px)scale(.995)}body:not(.is-ready) .fabric-toggle{transform:translateY(8px)}.hero h1{color:var(--ink);letter-spacing:0;white-space:nowrap;margin:0;font-family:EB Garamond,Georgia,serif;font-size:3.05rem;font-weight:500;line-height:.98}.hero p{max-width:720px;color:var(--ink);margin:26px 0 0;font-family:EB Garamond,Georgia,serif;font-size:1.45rem;line-height:1.28}.hero-contact-wrap{transform-origin:0;width:12rem;margin-top:44px}.portrait-frame{aspect-ratio:.91;background:#fff;border-radius:12px;justify-self:end;width:min(392px,100%);overflow:hidden}.portrait-frame img{object-fit:cover;object-position:center 8%;width:100%;height:100%;display:block}.fabric-accordion{z-index:1;position:relative}.accordion-section{scroll-margin-top:var(--sticky-header-height);position:relative}.accordion-section.featured{z-index:3}.accordion-section.timeline{z-index:2}.fabric-toggle{isolation:isolate;cursor:pointer;text-align:left;background-color:#31291f;background-position:50%;background-size:cover;border:0;align-items:center;width:100%;min-height:clamp(110px,11.5vw,155px);padding:0;display:flex;position:relative;overflow:hidden}.fabric-toggle:before{content:"";z-index:-1;background:#00000021;position:absolute;inset:0}.fabric-toggle:after{content:"";z-index:-1;background:linear-gradient(90deg,#0000002e,#00000005 44%,#0000002e);position:absolute;inset:0}.featured .fabric-toggle{border-top:var(--fabric-border-width) solid var(--line-gray);border-bottom:var(--fabric-border-width) solid var(--line-gray);background-color:#5a5751;background-image:linear-gradient(135deg,#716d65,#3d3934);background-position:50% 26%}.timeline .fabric-toggle{border-top:var(--fabric-border-width) solid var(--line-brown);border-bottom:var(--fabric-border-width) solid var(--line-brown);margin-top:calc(-1 * var(--fabric-border-width));background-color:#68462f;background-image:linear-gradient(135deg,#805a3a,#3a2419)}body.has-fabric-images .featured .fabric-toggle{background-image:url(./brocade-featured-crop-CrqVa3oz.webp)}body.has-fabric-images .timeline .fabric-toggle{background-image:url(./brocade-timeline-CZNeHEMv.webp)}.featured.is-open+.timeline .fabric-toggle{margin-top:0}.bar-title{z-index:1;color:#fff;letter-spacing:0;text-transform:uppercase;text-wrap:nowrap;margin-left:clamp(26px,6.2vw,92px);font-family:Inter,sans-serif;font-size:clamp(2rem,5.35vw,4.25rem);font-weight:700;line-height:.92;position:relative}@media (width<=560px){.bar-title .inner-span{display:none}}.bar-indicator{z-index:1;color:#fff;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);background:#ffffff14;border:1px solid #ffffffb8;border-radius:50%;place-items:center;width:42px;height:42px;display:grid;position:absolute;top:50%;right:clamp(24px,5vw,70px);transform:translateY(-50%)}.bar-indicator span{font-size:24px;line-height:1;transition:transform .22s;display:block;transform:translateY(-1px)}.accordion-section.is-open .bar-indicator span{transform:translateY(-1px)rotate(45deg)}.accordion-panel{max-height:0;transition:max-height .54s cubic-bezier(.22,1,.36,1);overflow:hidden}.accordion-section.is-open .accordion-panel{max-height:6400px}.projects-panel{background:var(--white-panel)}.projects-inner{width:min(1180px,100% - 112px);margin:0 auto;padding:clamp(58px,8vw,96px) 0 clamp(70px,9vw,104px)}.panel-kicker{color:#744929c2;letter-spacing:.16em;text-transform:uppercase;margin:0 0 18px;font-family:Inter,sans-serif;font-size:.78rem;font-weight:700}.panel-heading{max-width:1020px;color:var(--ink-strong);letter-spacing:0;margin:0 0 40px;font-family:EB Garamond,Georgia,serif;font-size:clamp(2.45rem,4.2vw,4.25rem);font-weight:500;line-height:.98}.project-grid{grid-template-columns:minmax(0,1.03fr) minmax(320px,.97fr);align-items:stretch;gap:clamp(34px,5vw,64px);display:grid}.project-column{flex-direction:column;min-width:0;display:flex}.project-column>.project-card{flex:auto}.project-card{background:#efebe3;border:1px solid #534c4329;border-radius:8px;flex-direction:column;min-height:100%;display:flex;position:relative;overflow:hidden}.project-card.is-large{min-height:636px}.project-card-body{--project-card-body-pad:clamp(28px, 3.1vw, 46px);padding:var(--project-card-body-pad)}.project-card h3{color:#171411;letter-spacing:0;margin:0;font-size:2rem;font-weight:800;line-height:1}.project-title-row{align-items:center;gap:clamp(10px,1vw,14px);display:flex}.project-title-row h3{white-space:nowrap;flex:0 auto}.project-title-icon{flex:none;width:clamp(44px,3.8vw,58px);height:auto;margin-top:-2px}.project-card p{color:#4f4941;margin:20px 0 0;font-size:1rem;line-height:1.65}.project-visual{background:linear-gradient(135deg,#ffffffd6,#ffffff4d),#ded9cf;border:1px solid #534c431f;border-radius:6px;min-height:276px;margin-top:28px;overflow:hidden}.project-visual.is-browser-showcase{--browser-showcase-edge-crop:2px;aspect-ratio:1280/860;background:#111;min-height:0}.project-showcase-note{margin-top:24px}.project-showcase-note+.project-visual{margin-top:14px}.showcase-video.browser-showcase-video{width:calc(100% + var(--browser-showcase-edge-crop));object-fit:cover;object-position:left center;max-width:none;height:100%;display:block}.browser-mock{grid-template-rows:auto 1fr;gap:20px;height:100%;min-height:276px;padding:22px;display:grid}.browser-top{align-items:center;gap:8px;display:flex}.browser-top span{background:#8b7f70;border-radius:999px;width:9px;height:9px}.browser-screen{grid-template-columns:.72fr 1fr;gap:18px;display:grid}.screen-list,.screen-detail{background:#fffaf2db;border:1px solid #372f261f;border-radius:6px;padding:18px}.mock-line{background:#74492938;border-radius:999px;height:9px}.mock-line+.mock-line{margin-top:12px}.mock-line.short{width:54%}.mock-line.medium{width:76%}.mock-panel{background:linear-gradient(90deg,#0313fc1a,#7449291a),#ffffffb8;border-radius:6px;height:56px;margin-top:16px}.project-stack{gap:clamp(30px,4vw,48px);display:grid}.project-card.is-compact{min-height:292px}.compact-layout{grid-template-columns:1fr .86fr;min-height:292px;display:grid}.compact-visual{background:radial-gradient(circle at 30% 30%,#7449291f,#0000 34%),linear-gradient(135deg,#f9f3e8,#ded7ca);border-left:1px solid #534c4324;place-items:center;min-height:100%;padding:24px;display:grid}.project-photo-visual{background:radial-gradient(circle at 30% 30%,#7449291f,#0000 34%),linear-gradient(135deg,#f9f3e8,#ded7ca);border-top:1px solid #534c431f;place-items:center;padding:clamp(22px,2.8vw,30px) clamp(28px,3.1vw,46px) clamp(28px,3.4vw,38px);display:grid;overflow:hidden}.project-photo-image{border-radius:4px;width:min(100%,420px);height:auto;display:block;box-shadow:0 18px 38px #201b162e,0 0 0 1px #fffaf28f}.compact-visual.is-showcase{background:radial-gradient(circle at 30% 18%,#fffaf2e0,#0000 32%),radial-gradient(circle at 72% 72%,#74492924,#0000 34%),linear-gradient(135deg,#f7f1e7,#ded6c9);position:relative;overflow:hidden}.showcase-video-frame{aspect-ratio:480/1022;background:#171411;border-radius:15px;width:min(260px,86%);overflow:hidden;transform:translateY(8px);box-shadow:0 22px 46px #201b1642,0 0 0 1px #fffaf26b}.showcase-video{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity .36s,transform .54s cubic-bezier(.22,1,.36,1);display:block;transform:scale(1.012)}.showcase-video.is-media-ready{opacity:1;transform:scale(1)}.project-visual,.compact-visual.is-showcase,.project-photo-visual{position:relative}.project-visual:before,.compact-visual.is-showcase:before,.project-photo-visual:before{content:"";pointer-events:none;opacity:0;background:linear-gradient(110deg,#fffaf200,#fffaf261,#fffaf200);position:absolute;inset:0;transform:translate(-28%)}.project-visual:has(.showcase-video:not(.is-media-ready)):before{opacity:1;animation:1.24s ease-in-out infinite media-sheen}.compact-visual.is-showcase:has(.showcase-video:not(.is-media-ready)):before{opacity:1;animation:1.24s ease-in-out infinite media-sheen}.project-photo-visual:has(img:not(.is-media-ready)):before{opacity:1;animation:1.24s ease-in-out infinite media-sheen}.project-photo-image,.skill-image{opacity:0;transition:opacity .32s,transform .52s cubic-bezier(.22,1,.36,1);transform:translateY(10px)}.project-photo-image.is-media-ready,.skill-image.is-media-ready{opacity:1;transform:translateY(0)}@keyframes media-sheen{0%{transform:translate(-44%)}to{transform:translate(44%)}}.terminal-window{background:#211d19;border:1px solid #201b1629;border-radius:6px;width:min(220px,100%);padding:18px}.terminal-window .mock-line{background:#fce8c89e;height:8px}.mobile-mock{background:#fffaf2;border:8px solid #1d1814;border-radius:22px;width:104px;height:184px;padding:18px 12px}.mobile-mock .mock-line{height:7px}.tech-list{flex-wrap:wrap;gap:10px;margin-top:24px;display:flex}.tech-pill{color:#2e2923;background:#fffaf2e6;border:1px solid #534c431f;border-radius:999px;align-items:center;gap:8px;min-height:34px;padding:7px 12px;font-size:.83rem;font-weight:700;display:inline-flex}.tech-icon{color:#fff;border-radius:999px;place-items:center;width:18px;height:18px;font-size:.62rem;font-weight:900;display:inline-grid}.react{background:#149eca}.node{background:#3c873a}.mongo{background:#13aa52}.flutter{background:#027dfd}.agent{background:#744929}.project-button-wrap{margin-top:auto;padding:6px clamp(28px,3.1vw,46px) clamp(32px,3.4vw,48px)}.skills-panel{background:linear-gradient(180deg, #fffaee2e, #f4d6a638), var(--cream-deep)}.skills-inner{width:min(1180px,100% - 112px);margin:0 auto;padding:clamp(60px,8vw,100px) 0 clamp(70px,10vw,126px);position:relative}.skills-inner:after{content:"";width:100vw;height:var(--fabric-border-width);background:var(--line-brown);pointer-events:none;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.skills-layout{--timeline-anchor-offset:0px;--timeline-base-height:auto;min-height:var(--timeline-base-height);grid-template-columns:minmax(250px,.25fr) minmax(0,1fr);align-items:start;gap:clamp(34px,5vw,68px);display:grid;position:relative}.timeline-stage{width:100%;margin-top:var(--timeline-anchor-offset);position:sticky;top:122px}.timeline-anchor-probe{visibility:hidden;pointer-events:none;position:absolute;top:0;left:0}.timeline-track{--rail-x:clamp(46px, calc(796px - 50vw), 150px);--chip-gap:34px;width:100%;min-height:560px;position:relative}.timeline-spine{left:var(--rail-x);background:linear-gradient(#ead9b2,#d5c49f);border-radius:999px;width:4px;position:absolute;top:26px;bottom:26px;transform:translate(-50%);box-shadow:inset 0 0 0 1px #74492914,0 0 0 1px #fffaf26b}.timeline-spine:before,.timeline-spine:after{content:"";background:#d7c7a4;border-radius:50%;width:13px;height:13px;position:absolute;left:50%;transform:translate(-50%)}.timeline-spine:before{top:0}.timeline-spine:after{bottom:0}.timeline-node{--node-color:#e75a3e;top:var(--pos);color:#70604db3;cursor:default;appearance:none;text-align:right;pointer-events:none;background:0 0;border:0;grid-template-columns:1fr;align-items:center;width:100%;min-height:92px;padding:0;transition:color .22s,opacity .22s;display:grid;position:absolute;left:0;transform:translateY(-50%)}.timeline-node:focus-visible{outline-offset:8px;outline:2px solid #7449297a}.timeline-dot{top:50%;left:var(--rail-x);cursor:pointer;pointer-events:auto;background:0 0;border-radius:50%;width:36px;height:36px;position:absolute;transform:translate(-50%,-50%)}.timeline-dot:before{content:"";background:#d8caa8;border:4px solid #fff2cf;border-radius:50%;width:15px;height:15px;transition:background .18s,border-color .18s,box-shadow .18s,transform .18s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.timeline-chip{top:50%;right:calc(100% - var(--rail-x) + var(--chip-gap));width:max-content;max-width:170px;color:inherit;opacity:0;cursor:default;pointer-events:none;transition:color .22s,opacity .26s,transform .26s cubic-bezier(.2,.7,.2,1);display:block;position:absolute;transform:translate(12px,-50%)scale(.98)}.timeline-date{font-size:.82rem;font-weight:800;line-height:1.1;display:block}.timeline-chip strong{color:inherit;margin-top:4px;font-size:1rem;font-weight:900;line-height:1.05;display:block}.timeline-node.is-active{color:#8a6049}.timeline-node.is-active .timeline-dot{transform:translate(-50%,-50%)scale(1.08)}.timeline-node.is-active .timeline-dot:before{background:var(--node-color);border-color:#fff4d4;box-shadow:0 0 0 18px #fffaf2a3,0 18px 42px #74492929}.timeline-node.is-active .timeline-chip{opacity:1;cursor:pointer;pointer-events:auto;transform:translateY(-50%)scale(1)}.timeline-node.is-active .timeline-chip strong{color:#6f4b37}.timeline-node:not(.is-active) .timeline-chip strong{color:#70604dcc}.skill-year{color:#744929c2;letter-spacing:.16em;text-transform:uppercase;margin:0;font-size:.78rem;font-weight:800}.skill-copy h3{color:var(--ink-strong);letter-spacing:0;margin:18px 0 0;font-family:EB Garamond,Georgia,serif;font-size:clamp(3rem,6vw,6.2rem);font-weight:500;line-height:.88}.skill-body{color:#4f4034;margin-top:28px;font-size:clamp(1rem,1.45vw,1.2rem);line-height:1.75}.project-card a,.skill-body a{color:var(--line-brown);text-underline-offset:.15em;text-decoration:underline}.project-card a:hover,.skill-body a:hover{color:var(--ink-strong)}.skill-body-layout{grid-template-columns:1fr;align-items:start;gap:clamp(22px,3vw,30px);display:grid}.skill-body-copy{min-width:0}.skill-body p{margin:0}.skill-body p+p,.skill-body p+ul,.skill-body ul+p{margin-top:18px}.skill-body ul{margin:0;padding-left:1.1rem}.skill-body li+li{margin-top:8px}.skill-image{object-fit:cover;border:1px solid #7449292e;border-radius:8px;width:100%;display:block;box-shadow:0 22px 54px #462f1d29}.contact-section{background:var(--page);padding:clamp(78px,10vw,132px) 0 0}.contact-inner{grid-template-columns:minmax(280px,.76fr) minmax(380px,.9fr);align-items:start;gap:clamp(36px,5.8vw,86px);width:min(1180px,100% - 112px);margin:0 auto;display:grid}.contact-copy{max-width:520px}.contact-copy h2{color:var(--ink-strong);letter-spacing:0;margin:0;font-family:EB Garamond,Georgia,serif;font-size:clamp(2.75rem,4.8vw,4.75rem);font-weight:500;line-height:.92}.contact-copy p{color:#4f4034;max-width:30rem;margin:clamp(20px,2.6vw,30px) 0 0;font-size:clamp(1.05rem,1.45vw,1.28rem);line-height:1.65}.contact-details{border-top:1px solid #7449293d;gap:0;margin-top:clamp(10px,1.2vw,16px);display:grid}.detail-row{border-bottom:1px solid #7449292e;grid-template-columns:124px minmax(0,1fr);gap:clamp(22px,3vw,44px);padding:clamp(22px,2.7vw,30px) 0;display:grid}.detail-row span{color:#744929cc;letter-spacing:.12em;text-transform:uppercase;font-size:.78rem;font-weight:800}.detail-row a,.detail-row p{color:#2d2822;overflow-wrap:anywhere;margin:0;font-size:clamp(1rem,1.06vw,1.18rem);font-weight:600;line-height:1.32;text-decoration:none}@media (width>=1041px){.skill-image{width:75%}.contact-details{margin-top:0}.detail-row{grid-template-columns:112px minmax(0,1fr);align-items:center;gap:clamp(24px,2.4vw,36px);padding:24px 0}}.site-footer{color:#534c43bd;width:100%;margin:clamp(60px,8vw,96px) 0 0;font-size:.9rem}.footer-main{border-top:1px solid #74492933;justify-content:space-between;align-items:center;gap:24px;width:min(1180px,100% - 112px);margin:0 auto;padding:28px 0 20px;display:flex}.footer-brand{color:var(--ink-strong);font-family:Great Vibes,cursive;font-size:1.55rem;text-decoration:none}.footer-links{align-items:center;gap:22px;display:flex}.footer-links a{color:inherit;text-decoration:none}.footer-links a:hover{color:var(--ink-strong)}.footer-copyright{color:#f5f0e9a8;background:#4e4942;width:100%;padding:11px 16px 12px;font-size:.82rem;line-height:1.2}.footer-legal{text-align:center;justify-content:center;align-items:center;gap:18px;display:flex}.footer-copyright-text{white-space:nowrap}.footer-legal-divider{background:#f5f0e98f;width:1px;min-height:20px}.footer-attribution-button{color:inherit;font:inherit;text-underline-offset:5px;cursor:pointer;background:0 0;border:0;padding:0;line-height:1.2;text-decoration-thickness:1px;transition:color .16s,text-decoration-color .16s}.footer-attribution-button:hover{color:#fffaf2}.footer-attribution-button:focus-visible{outline-offset:4px;border-radius:2px;outline:2px solid #fffaf2b8}.theme-switch{--toggle-size:9px;--container-width:5.625em;--container-height:2.5em;--container-radius:6.25em;--container-light-bg:#3d7eae;--container-night-bg:#1d1f2c;--circle-container-diameter:3.375em;--sun-moon-diameter:2.125em;--sun-bg:#ecca2f;--moon-bg:#c4c9d1;--spot-color:#959db1;--circle-container-offset:calc((var(--circle-container-diameter) - var(--container-height)) / 2 * -1);--stars-color:#fff;--clouds-color:#f3fdff;--back-clouds-color:#aacadf;--transition:.5s cubic-bezier(0, -.02, .4, 1.25);--circle-transition:.3s cubic-bezier(0, -.02, .35, 1.17);display:none}.theme-switch,.theme-switch *,.theme-switch :before,.theme-switch :after{box-sizing:border-box;font-size:var(--toggle-size);margin:0;padding:0}.theme-switch__container{width:var(--container-width);height:var(--container-height);background-color:var(--container-light-bg);border-radius:var(--container-radius);cursor:pointer;-webkit-transition:var(--transition);-o-transition:var(--transition);transition:var(--transition);position:relative;overflow:hidden;box-shadow:0 -.062em .062em #00000040,0 .062em .125em #fffffff0}.theme-switch__container:before{content:"";z-index:1;border-radius:var(--container-radius);position:absolute;inset:0;box-shadow:inset 0 .05em .187em #00000040,inset 0 .05em .187em #00000040}.theme-switch__checkbox{display:none}.theme-switch__circle-container{width:var(--circle-container-diameter);height:var(--circle-container-diameter);left:var(--circle-container-offset);top:var(--circle-container-offset);border-radius:var(--container-radius);-webkit-transition:var(--circle-transition);-o-transition:var(--circle-transition);transition:var(--circle-transition);pointer-events:none;background-color:#ffffff1a;display:flex;position:absolute;box-shadow:inset 0 0 0 3.375em #ffffff1a,inset 0 0 0 3.375em #ffffff1a,0 0 0 .625em #ffffff1a,0 0 0 1.25em #ffffff1a}.theme-switch__sun-moon-container{pointer-events:auto;z-index:2;width:var(--sun-moon-diameter);height:var(--sun-moon-diameter);border-radius:var(--container-radius);background-color:var(--sun-bg);filter:drop-shadow(.062em .125em .125em #00000040)drop-shadow(0 .062em .125em #00000040);-webkit-transition:var(--transition);-o-transition:var(--transition);transition:var(--transition);margin:auto;position:relative;overflow:hidden;box-shadow:inset .062em .062em .062em 0 #feffef9c,inset 0 -.062em .062em 0 #a1872a}.theme-switch__moon{background-color:var(--moon-bg);border-radius:inherit;width:100%;height:100%;-webkit-transition:var(--transition);-o-transition:var(--transition);transition:var(--transition);position:relative;transform:translate(100%);box-shadow:inset .062em .062em .062em 0 #feffef9c,inset 0 -.062em .062em 0 #969696}.theme-switch__spot{border-radius:var(--container-radius);background-color:var(--spot-color);width:.75em;height:.75em;position:absolute;top:.75em;left:.312em;box-shadow:inset 0 .0312em .062em #00000040}.theme-switch__spot:nth-of-type(2){width:.375em;height:.375em;top:.937em;left:1.375em}.theme-switch__spot:nth-last-of-type(3){width:.25em;height:.25em;top:.312em;left:.812em}.theme-switch__clouds{background-color:var(--clouds-color);border-radius:var(--container-radius);width:1.25em;height:1.25em;-webkit-box-shadow:.937em .312em var(--clouds-color), -.312em -.312em var(--back-clouds-color), 1.437em .375em var(--clouds-color), .5em -.125em var(--back-clouds-color), 2.187em 0 var(--clouds-color), 1.25em -.062em var(--back-clouds-color), 2.937em .312em var(--clouds-color), 2em -.312em var(--back-clouds-color), 3.625em -.062em var(--clouds-color), 2.625em 0em var(--back-clouds-color), 4.5em -.312em var(--clouds-color), 3.375em -.437em var(--back-clouds-color), 4.625em -1.75em 0 .437em var(--clouds-color), 4em -.625em var(--back-clouds-color), 4.125em -2.125em 0 .437em var(--back-clouds-color);box-shadow:.937em .312em var(--clouds-color), -.312em -.312em var(--back-clouds-color), 1.437em .375em var(--clouds-color), .5em -.125em var(--back-clouds-color), 2.187em 0 var(--clouds-color), 1.25em -.062em var(--back-clouds-color), 2.937em .312em var(--clouds-color), 2em -.312em var(--back-clouds-color), 3.625em -.062em var(--clouds-color), 2.625em 0em var(--back-clouds-color), 4.5em -.312em var(--clouds-color), 3.375em -.437em var(--back-clouds-color), 4.625em -1.75em 0 .437em var(--clouds-color), 4em -.625em var(--back-clouds-color), 4.125em -2.125em 0 .437em var(--back-clouds-color);-o-transition:.5s cubic-bezier(0, -.02, .4, 1.25);transition:all .5s cubic-bezier(0,-.02,.4,1.25);position:absolute;bottom:-.625em;left:.312em}.theme-switch__stars-container{color:var(--stars-color);width:2.75em;height:auto;-webkit-transition:var(--transition);-o-transition:var(--transition);transition:var(--transition);position:absolute;top:-100%;left:.312em}.theme-switch__checkbox:checked+.theme-switch__container{background-color:var(--container-night-bg)}.theme-switch__checkbox:checked+.theme-switch__container .theme-switch__circle-container{left:calc(100% - var(--circle-container-offset) - var(--circle-container-diameter))}.theme-switch__checkbox:checked+.theme-switch__container .theme-switch__circle-container:hover{left:calc(100% - var(--circle-container-offset) - var(--circle-container-diameter) - .187em)}.theme-switch__circle-container:hover{left:calc(var(--circle-container-offset) + .187em)}.theme-switch__checkbox:checked+.theme-switch__container .theme-switch__moon{transform:translate(0)}.theme-switch__checkbox:checked+.theme-switch__container .theme-switch__clouds{bottom:-4.062em}.theme-switch__checkbox:checked+.theme-switch__container .theme-switch__stars-container{top:50%;transform:translateY(-50%)}.cv-button-component{justify-content:center;align-items:center;width:116px;height:38px;display:flex;position:relative}.cv-button-component .btn{appearance:none;cursor:pointer;-webkit-user-select:none;user-select:none;background:linear-gradient(#0004da 10%,#1873fc 50%,#00a2ff 100%);border:2px solid #0313fc;border-radius:7px;justify-content:center;align-items:center;width:100%;height:100%;padding:0;transition:transform .5s;display:flex;position:absolute;overflow:hidden}.cv-button-component .btn:hover:not(.is-animating){transform:scale(1.08)}.cv-button-component .btn:focus-visible{outline-offset:4px;outline:3px solid #0313fc59}.cv-button-component .stars{z-index:3;background-color:#fff;border-radius:50%;width:2px;height:2px;position:absolute;transform:translate(-20px,-20px);box-shadow:5px 10px #fff,10px -2px #fff,20px 0 #fff,30px -5px #fff,-10px -5px #fff,-15px 2px #fff,-35px 0 #fff,50px 15px #fff,60px -10px #fff,70px 20px #fff,90px -15px #fff,100px 5px #fff,110px -25px #fff,90px 30px #fff,80px -40px #fff,-50px 20px #fff,-70px -10px #fff,-90px 25px #fff,-100px -15px #fff,-110px 10px #fff,-90px -35px #fff,-80px 40px #fff,40px 40px #fff,30px -40px #fff,-30px 30px #fff,-40px -25px #fff,60px 60px #fff,-60px -60px #fff,70px -70px #fff,-70px 70px #fff,0 80px #fff,0 -90px #fff,90px 0 #fff,-100px 0 #fff,45px 5px #fff,65px 0 #fff,75px 10px #fff,-60px 10px #fff,-40px 10px #fff,-45px -8px #fff,-55px -2px #fff,-30px 17px #fff}.cv-button-component .background{background-color:#fff;border-radius:50%;width:50%;height:160%;position:absolute;transform:translate(-100%,50%)scale(1);box-shadow:-30px -40px 0 -7px #ffffffd8,40px 14px #ffffff81}.cv-button-component .background:before{content:"";background-color:#fff;border-radius:50%;width:80%;height:80%;position:absolute;transform:translate(110%,20%);box-shadow:50px -5px #ffffffb2}.cv-button-component .background:after{content:"";background-color:#fff;border-radius:50%;width:120%;height:120%;position:absolute;transform:translate(120%,10%);box-shadow:50px -20px #ffffffd8}.cv-button-component .order{z-index:4;color:#fff;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Open Sans,sans-serif;font-size:.68rem;font-weight:600;line-height:1;position:relative;transform:translate(0%)}.cv-button-component .package-container{z-index:5;opacity:0;pointer-events:none;justify-content:center;align-items:center;width:25%;height:80%;display:flex;position:absolute;transform:translateY(100%)}.cv-button-component .package{background-color:#ffb571;width:45%;height:40%;position:absolute}.cv-button-component .package:after{content:"";transform-origin:100%;background-color:#d57d2b;width:50%;height:5%;position:absolute;top:-2%;right:0%;transform:rotate(210deg)}.cv-button-component .package:before{content:"";transform-origin:0;background-color:#d57d2b;width:50%;height:5%;position:absolute;top:-2%;left:0%;transform:rotate(-210deg)}.cv-button-component .package-details{background-color:#754433;width:10%;height:10%;position:absolute;top:30%}.cv-button-component .package-details:before{content:"";background-color:#ededed;width:100%;height:100%;position:absolute;bottom:-280%;left:-150%}.cv-button-component .package-details:after{content:"";background-color:#8f8f8f;width:40%;height:40%;position:absolute;bottom:-230%;left:-105%}.cv-button-component .package-text{z-index:2;font-size:.3rem;line-height:1;position:absolute;bottom:32%;right:30%}.cv-button-component .btn.is-animating .background{animation:2.25s ease-in-out forwards cloud-fill-return}.cv-button-component .btn.is-animating .stars{animation:2.25s linear forwards stars-hide-return}.cv-button-component .btn.is-animating .order{animation:2.25s ease-in-out forwards order-text-return}.cv-button-component .btn.is-animating .package-container{animation:2.25s ease-in-out forwards package-rise-return}.cv-button-component .btn.is-animating .package:after{animation:.5s ease-in-out .45s forwards close-right}.cv-button-component .btn.is-animating .package:before{animation:.5s ease-in-out .45s forwards close-left}@keyframes cloud-fill-return{0%{transform:translate(-100%,50%)scale(1)}35%,58%{transform:translate(-100%,50%)scale(5)}to{transform:translate(-100%,50%)scale(1)}}@keyframes stars-hide-return{0%,8%{opacity:1}18%,75%{opacity:0}to{opacity:1}}@keyframes order-text-return{0%{opacity:1;transform:translate(0%)}12%,74%{opacity:0;transform:translateY(-200%)}to{opacity:1;transform:translate(0%)}}@keyframes package-rise-return{0%{opacity:0;transform:translateY(100%)}12%{opacity:1}28%,58%{opacity:1;transform:translate(0%)}73%,to{opacity:0;transform:translateY(100%)}}@keyframes close-right{0%{transform:rotate(210deg)}to{transform:rotate(0)}}@keyframes close-left{0%{transform:rotate(-210deg)}to{transform:rotate(0)}}.premium-contact{--button-size:3.2rem;--button-border:#342512;--icon-color:#fff8df}.premium-contact .button-box{isolation:isolate;width:12rem;height:5rem;display:flex;position:relative}.premium-contact .touch{z-index:60;width:var(--button-size);height:var(--button-size);appearance:none;cursor:pointer;pointer-events:none;-webkit-tap-highlight-color:transparent;background:0 0;border:0;flex:none;padding:0;position:absolute;top:50%;left:0;transform:translateY(-50%)}.premium-contact .touch:before{content:"";border-radius:12px;position:absolute;inset:-8px}.premium-contact .touch:focus-visible{outline:0}.premium-contact .touch-file{pointer-events:auto;left:0}.premium-contact .touch-mail{left:calc(var(--button-size) * 1.3)}.premium-contact .touch-phone{left:calc(var(--button-size) * 2.6)}.premium-contact .button-box.is-pointer-expanded .touch,.premium-contact .button-box:focus-within .touch,.premium-contact .button-box.is-touch-expanded .touch{pointer-events:auto}.premium-contact .button{--travel:0%;--rotation:-45deg;--icon-rotation:45deg;--scale:1;--highlight-opacity:.9;width:var(--button-size);height:var(--button-size);border:3px solid var(--button-border);opacity:.86;pointer-events:none;transform:translate3d(var(--travel), -50%, 0) rotate(var(--rotation)) scale(var(--scale));transform-origin:50%;backface-visibility:hidden;will-change:transform, opacity;border-radius:5px;justify-content:center;align-items:center;transition:transform .28s cubic-bezier(.2,.7,.2,1),opacity .2s;display:flex;position:absolute;top:50%;left:0;overflow:hidden;box-shadow:inset 0 1px #ffffff94,inset 0 -9px 14px #2a19054d,inset 0 0 4px #00000061}.premium-contact .button:before,.premium-contact .button:after{content:"";pointer-events:none;position:absolute;inset:0}.premium-contact .button:before{mix-blend-mode:overlay;opacity:.82;background:repeating-linear-gradient(42deg,#fff3 0 1px,#0000 1px 5px),repeating-linear-gradient(-42deg,#291f102e 0 1px,#0000 1px 6px)}.premium-contact .button:after{opacity:var(--highlight-opacity);background:linear-gradient(135deg,#ffffffad 0%,#ffffff29 28%,#0000 48%),radial-gradient(circle at 76% 82%,#37260b47,#0000 44%);border-radius:2px;transition:opacity .2s;inset:3px}.premium-contact .button.file{--metal:linear-gradient(135deg, #f8f6ed 0%, #c7c3b6 24%, #efe0a6 48%, #9a9382 72%, #d7bb62 100%);z-index:50;background:var(--metal)}.premium-contact .button.mail{--rotation:-115deg;--icon-rotation:115deg;--metal:linear-gradient(135deg, #ffe9a9 0%, #c79635 27%, #f1d284 52%, #8b713a 74%, #ece7db 100%);z-index:40;background:var(--metal)}.premium-contact .button.phone{--rotation:90deg;--icon-rotation:-90deg;--metal:linear-gradient(135deg, #f7f8f5 0%, #a9aca8 25%, #dbc679 49%, #706f66 73%, #fff0b7 100%);z-index:30;background:var(--metal)}.premium-contact .icon{--icon-scale:1;z-index:2;width:24px;height:24px;color:var(--icon-color);opacity:.82;transform:rotate(var(--icon-rotation)) scale(var(--icon-scale));transform-origin:50%;backface-visibility:hidden;will-change:transform, opacity;filter:drop-shadow(0 1px #34251259)drop-shadow(0 0 5px #fff2bc57);transition:opacity .22s,transform .28s cubic-bezier(.2,.7,.2,1);position:relative}.premium-contact .button-box.is-pointer-expanded .button.file,.premium-contact .button-box:focus-within .button.file,.premium-contact .button-box.is-touch-expanded .button.file{--travel:0%;--rotation:0deg;--icon-rotation:0deg}.premium-contact .button-box.is-pointer-expanded .button.mail,.premium-contact .button-box:focus-within .button.mail,.premium-contact .button-box.is-touch-expanded .button.mail{--travel:130%;--rotation:90deg;--icon-rotation:-90deg}.premium-contact .button-box.is-pointer-expanded .button.phone,.premium-contact .button-box:focus-within .button.phone,.premium-contact .button-box.is-touch-expanded .button.phone{--travel:260%;--rotation:-90deg;--icon-rotation:90deg}.premium-contact .touch-file:hover~.button.file,.premium-contact .touch-file:focus-visible~.button.file,.premium-contact .touch-mail:hover~.button.mail,.premium-contact .touch-mail:focus-visible~.button.mail,.premium-contact .touch-phone:hover~.button.phone,.premium-contact .touch-phone:focus-visible~.button.phone{--scale:1.045;--highlight-opacity:1;opacity:1}.premium-contact .touch-file:hover~.button.file .icon,.premium-contact .touch-file:focus-visible~.button.file .icon,.premium-contact .touch-mail:hover~.button.mail .icon,.premium-contact .touch-mail:focus-visible~.button.mail .icon,.premium-contact .touch-phone:hover~.button.phone .icon,.premium-contact .touch-phone:focus-visible~.button.phone .icon{--icon-scale:1.045;opacity:.96}.premium-contact .touch-file:active~.button.file,.premium-contact .touch-mail:active~.button.mail,.premium-contact .touch-phone:active~.button.phone{--scale:.9}.pdf-modal[hidden]{display:none}.pdf-modal{z-index:2000;opacity:0;pointer-events:none;background:#211d19a8;place-items:center;padding:clamp(14px,3vw,34px);transition:opacity .18s;display:grid;position:fixed;inset:0}.pdf-modal.is-open{opacity:1;pointer-events:auto}.pdf-modal-backdrop{cursor:zoom-out;background:0 0;border:0;position:absolute;inset:0}.pdf-modal-shell{z-index:1;background:#fffaf2;border:1px solid #534c4333;border-radius:8px;grid-template-rows:auto minmax(0,1fr);width:min(1080px,100%);height:min(86dvh,900px);min-height:min(640px,100dvh - 28px);transition:transform .18s;display:grid;position:relative;overflow:hidden;transform:translateY(12px)scale(.985);box-shadow:0 28px 80px #130f0b57,inset 0 1px #fff9}.pdf-modal.is-open .pdf-modal-shell{transform:translateY(0)scale(1)}.pdf-modal-header{background:#fffaf2eb;border-bottom:1px solid #7449292e;justify-content:space-between;align-items:center;gap:14px;min-width:0;min-height:58px;padding:12px 14px 12px 18px;display:flex}.pdf-modal-title{min-width:0;color:var(--ink-strong);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:.95rem;font-weight:800;line-height:1.2;overflow:hidden}.pdf-modal-actions{flex:none;align-items:center;gap:8px;display:flex}.pdf-modal-link,.pdf-modal-close{color:#2c2620;background:#ffffffb3;border:1px solid #534c432e;border-radius:6px;place-items:center;min-height:34px;text-decoration:none;transition:border-color .16s,background .16s,transform .16s;display:inline-grid}.pdf-modal-link{padding:0 12px;font-size:.78rem;font-weight:800}.pdf-modal-close{cursor:pointer;width:34px;padding:0;font-size:1.35rem;line-height:1}.pdf-modal-link:hover,.pdf-modal-close:hover{background:#fff;border-color:#74492961;transform:translateY(-1px)}.pdf-modal-link:focus-visible,.pdf-modal-close:focus-visible{outline-offset:2px;outline:3px solid #7449293d}.pdf-modal-frame{background:#fff;border:0;width:100%;height:100%}.attribution-modal[hidden]{display:none}.attribution-modal{z-index:2100;opacity:0;pointer-events:none;background:#211d1994;place-items:center;padding:clamp(16px,3vw,34px);transition:opacity .18s;display:grid;position:fixed;inset:0}.attribution-modal.is-open{opacity:1;pointer-events:auto}.attribution-modal-backdrop{cursor:zoom-out;background:0 0;border:0;position:absolute;inset:0}.attribution-modal-shell{z-index:1;background:#fffaf2;border:1px solid #534c4333;border-radius:8px;grid-template-rows:auto minmax(0,1fr);width:min(620px,100%);max-height:min(78dvh,520px);transition:transform .18s;display:grid;position:relative;overflow:hidden;transform:translateY(10px)scale(.985);box-shadow:0 24px 70px #130f0b4d,inset 0 1px #ffffffa8}.attribution-modal.is-open .attribution-modal-shell{transform:translateY(0)scale(1)}.attribution-modal-header{background:#fffaf2f0;border-bottom:1px solid #7449292e;justify-content:space-between;align-items:center;gap:14px;min-height:58px;padding:14px 14px 14px 20px;display:flex}.attribution-modal-title{color:var(--ink-strong);margin:0;font-size:.98rem;font-weight:800;line-height:1.2}.attribution-modal-close{color:#2c2620;cursor:pointer;background:#ffffffb8;border:1px solid #534c432e;border-radius:6px;place-items:center;width:34px;min-width:34px;height:34px;padding:0;font-size:1.35rem;line-height:1;transition:border-color .16s,background .16s,transform .16s;display:inline-grid}.attribution-modal-close:hover{background:#fff;border-color:#74492961;transform:translateY(-1px)}.attribution-modal-close:focus-visible{outline-offset:2px;outline:3px solid #7449293d}.attribution-modal-content{padding:24px 28px 28px;overflow:auto}.attribution-section{border-bottom:1px solid #74492924;padding-bottom:22px}.attribution-section+.attribution-section{margin-top:22px}.attribution-section:last-child{border-bottom:0;padding-bottom:0}.attribution-section-title{color:#744929db;letter-spacing:.13em;text-transform:uppercase;margin:0 0 14px;font-size:.72rem;font-weight:800;line-height:1.2}.attribution-list{gap:14px;margin:0;display:grid}.attribution-item{margin:0}.attribution-item-title{color:var(--ink-strong);margin-bottom:4px;font-size:.95rem;font-weight:800;line-height:1.3;display:block}.attribution-item-description{color:#4f4941;margin:0;font-size:.94rem;line-height:1.58}.attribution-link{color:#744929;text-underline-offset:3px;font-weight:700;text-decoration:underline;text-decoration-thickness:1px;transition:color .16s,text-decoration-color .16s}.attribution-link:hover{color:var(--ink-strong)}.attribution-link:focus-visible{outline-offset:3px;border-radius:2px;outline:3px solid #7449293d}.project-component{flex-direction:column;gap:5rem;display:flex}.project-component .fx-layer{filter:contrast(3)}.project-component .box{--w:190px;--h:58px;--r:9999px;--tr:25%;z-index:500;width:var(--w);height:var(--h);border-radius:var(--r);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);cursor:pointer;filter:brightness(.9);background:#00000005;border:1px double #33333314;justify-content:center;align-items:center;display:flex;position:relative;box-shadow:inset 2px -2px 1px -1px #ffffffe6,inset -2px 2px 1px -1px #ffffffe6,inset 6px -6px 1px -6px #ffffff8c,inset -6px 6px 1px -6px #ffffff8c,inset 0 0 2px #000c,0 4px 8px #0003}.project-component .box .svg{filter:drop-shadow(0 25px 3px #6663);width:28px}.project-component .box .text{filter:drop-shadow(0 25px 3px #66666626)}.project-component .box:before{content:"";z-index:1;width:calc(var(--w) - 16px);height:calc(var(--h) - 16px);border-radius:var(--r);filter:blur(8px);border:1px solid #000000e6;position:absolute;top:35%;left:50%;transform:translate(-50%)}.project-component .box:after{z-index:501;content:"";width:var(--w);height:var(--h);border-radius:var(--r);filter:blur(7px);background:linear-gradient(45deg, #fffc 0%, transparent var(--tr), transparent calc(100% - var(--tr)), #fffc 100%);position:absolute}.project-component .box .circle-overlay{width:calc(var(--w) - 9px);height:calc(var(--h) - 9px);border-radius:var(--r);filter:blur(1px);border:1px solid #fff3;position:absolute}.project-component .start-btn{align-items:center;gap:1rem;padding:0 .8rem;transition:all .25s;display:flex}.project-component .start-btn .text{color:#3e3e3e;font-family:serif;font-size:20px}.project-component .start-btn .btn-icon{background:#3e3e3e;border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;transition:all .25s;display:flex;box-shadow:0 0 6px #0000004d}.project-component .start-btn .btn-icon .svg{fill:#f5f5f5;width:14px}.project-component .start-btn:hover{background:0 0;transform:translateY(-3px)}.project-component .start-btn:hover .btn-icon{transform:scale(1.1)}.project-component .start-btn:active{transform:scale(.94)}.project-component .start-btn:active .text{color:#000}.project-component .start-btn:active .btn-icon{transform:scale(.94)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important}.accordion-panel,.fabric-toggle,.timeline-node,.timeline-dot,.timeline-chip,.skill-copy,.site-header,.hero-copy,.portrait-frame,.showcase-video,.project-photo-image,.skill-image{transition-duration:.01ms!important}.project-visual:before,.compact-visual.is-showcase:before,.project-photo-visual:before{animation:none!important}.premium-contact .button,.premium-contact .icon{transition-duration:.01ms;animation:none!important}.cv-button-component .btn,.cv-button-component .btn:hover:not(.is-animating){transition:none;transform:none}.cv-button-component .btn.is-animating .background,.cv-button-component .btn.is-animating .stars,.cv-button-component .btn.is-animating .order,.cv-button-component .btn.is-animating .package-container,.cv-button-component .btn.is-animating .package:after,.cv-button-component .btn.is-animating .package:before{animation-duration:1ms;animation-delay:0s}.pdf-modal,.pdf-modal-shell,.attribution-modal,.attribution-modal-shell{transition-duration:.01ms}}@media (width<=1040px){:root{--sticky-header-height:82px}.header-inner{grid-template-columns:minmax(0,1fr) auto minmax(116px,1fr);column-gap:clamp(20px,3.4vw,42px);width:min(100% - 42px,980px);height:82px}.nav-links{gap:clamp(18px,3.1vw,34px);font-size:clamp(.88rem,1.45vw,1rem)}.hero-shell{grid-template-columns:minmax(0,1.12fr) minmax(260px,.72fr);gap:clamp(30px,4.8vw,58px);width:min(100% - 54px,980px)}.hero h1{white-space:nowrap;font-size:clamp(2.35rem,4.25vw,3.05rem)}.hero p{max-width:35rem;font-size:clamp(1.12rem,2.1vw,1.35rem)}.hero-contact-wrap{margin-top:clamp(34px,4.6vw,44px);transform:scale(.92)}.portrait-frame{justify-self:end;width:min(34vw,360px);min-width:260px}.project-grid{grid-template-columns:1fr}.project-card.is-large{min-height:auto}.skills-layout,.contact-inner{grid-template-columns:1fr}.skills-layout{gap:clamp(18px,2.2vw,24px);min-height:auto}.timeline-stage{-webkit-overflow-scrolling:touch;scroll-snap-type:none;margin-top:0;padding:20px 0 0;position:relative;top:auto;overflow:visible}.timeline-track{--rail-x:46px;--chip-gap:34px;--rail-y:76px;width:100%;min-width:0;height:166px;min-height:0}.timeline-spine{left:38px;right:38px;top:var(--rail-y);width:auto;height:4px;bottom:auto;transform:translateY(-50%)}.timeline-spine:before,.timeline-spine:after{top:50%;bottom:auto;transform:translateY(-50%)}.timeline-spine:before{left:0}.timeline-spine:after{left:auto;right:0}.timeline-node,.timeline-node.is-left,.timeline-node.is-right{left:var(--mobile-pos);top:var(--rail-y);text-align:center;scroll-snap-align:center;grid-template-columns:1fr;align-content:start;justify-items:center;width:166px;min-height:142px;padding:0;display:grid;transform:translate(-50%)}.timeline-node:focus-visible{outline-offset:6px}.timeline-dot,.timeline-node.is-left .timeline-dot,.timeline-node.is-right .timeline-dot{top:0;left:50%;right:auto;transform:translate(-50%,-50%)}.timeline-node.is-active .timeline-dot{transform:translate(-50%,-50%)scale(1.08)}.timeline-chip{grid-column:1;justify-self:center;width:auto;max-width:176px;margin-top:30px;position:static;transform:translateY(8px)scale(.98)}.timeline-node.is-active .timeline-chip{transform:translateY(0)scale(1)}.timeline-node:not(.is-active) .timeline-chip{opacity:0;pointer-events:none}.timeline-chip strong{font-size:1.42rem}.skill-copy{max-width:780px}}@media (width<=755px){:root{--sticky-header-height:76px}.header-inner,.hero-shell,.projects-inner,.skills-inner,.contact-inner,.footer-main{width:calc(100% - 32px)}.header-inner{grid-template-columns:1fr auto;column-gap:16px;height:76px}.nav-links{display:none}.brand{font-size:1.42rem}.header-actions{gap:13px}.theme-switch{--toggle-size:9px}.cv-button-component{width:116px;height:38px}.cv-button-component .order{font-size:.68rem}.hero{padding:24px 0 72px}.hero-shell{--portrait-contact-size:2.7rem;--portrait-contact-half-size:1.35rem;--portrait-contact-gap:42px;--portrait-contact-height:4.25rem;--portrait-contact-half-height:2.125rem;--portrait-mobile-width:min(390px, calc(100% - var(--portrait-contact-half-size) - 8px));justify-items:center;gap:var(--portrait-contact-gap);grid-template-columns:1fr}.hero-copy{z-index:2;text-align:center;width:100%;padding-top:0;position:relative}.hero h1{white-space:nowrap;max-width:none;font-size:clamp(1.42rem,7.2vw,3.35rem);line-height:.98}.hero p{text-wrap:balance;max-width:48rem;margin-top:22px;font-size:1.28rem}.hero-contact-wrap{width:var(--portrait-mobile-width);transform-origin:50%;margin-top:34px;margin-left:auto;margin-right:auto;transform:none}.hero-contact-wrap.premium-contact{--button-size:var(--portrait-contact-size)}.hero-contact-wrap.premium-contact .button-box{width:10.25rem;height:var(--portrait-contact-height);margin:0}.hero-contact-wrap.premium-contact .touch{top:50%;transform:translate(-50%,-50%)}.hero-contact-wrap.premium-contact .touch-file{left:0}.hero-contact-wrap.premium-contact .touch-mail{left:calc(var(--button-size) * 1.3)}.hero-contact-wrap.premium-contact .touch-phone{left:calc(var(--button-size) * 2.6)}.hero-contact-wrap.premium-contact .button{transform:translate3d(calc(-50% + var(--travel)), -50%, 0) rotate(var(--rotation)) scale(var(--scale));left:0}.portrait-frame{z-index:1;width:var(--portrait-mobile-width);margin-top:calc(-1 * ( var(--portrait-contact-gap) + var(--portrait-contact-half-height) ));justify-self:center;min-width:0;position:relative}.fabric-toggle{min-height:104px}.bar-title{max-width:calc(100% - 84px);margin-left:18px;font-size:clamp(1.88rem,8.8vw,2.7rem)}.bar-indicator{width:34px;height:34px;right:18px}.projects-inner,.skills-inner{padding-top:46px;padding-bottom:62px}.panel-heading{margin-bottom:30px}.project-card-body{--project-card-body-pad:24px;padding:var(--project-card-body-pad)}.project-photo-visual{padding:22px 24px 28px}.project-card h3{font-size:2rem}.project-title-row{gap:8px}.project-title-row h3{font-size:clamp(1.78rem,7.4vw,2rem)}.project-title-icon{width:28px;margin-top:0}.project-visual,.browser-mock{min-height:224px}.project-visual.is-browser-showcase{min-height:0}.browser-screen,.compact-layout{grid-template-columns:1fr}.compact-visual{border-top:1px solid #534c4324;border-left:0;min-height:248px}.showcase-video-frame{width:min(220px,72%)}.project-button-wrap{padding:0 24px 28px}.skills-layout{gap:18px}.timeline-stage{scroll-snap-type:none;padding-top:18px;padding-bottom:0;overflow:visible}.timeline-track{--rail-y:66px;width:100%;min-width:0;height:146px}.timeline-spine{left:18px;right:18px;top:var(--rail-y)}.timeline-node,.timeline-node.is-left,.timeline-node.is-right{top:var(--rail-y);width:116px;min-height:140px}.timeline-chip{max-width:112px;margin-top:32px}.timeline-date{font-size:.76rem}.timeline-chip strong{font-size:.96rem}.skill-copy h3{font-size:clamp(2.55rem,12vw,3.6rem)}.skill-body-layout{grid-template-columns:1fr;gap:22px}.skill-image{max-width:520px}.contact-section{padding-top:64px}.detail-row{grid-template-columns:1fr;gap:8px}.pdf-modal{align-items:stretch;padding:10px}.pdf-modal-shell{height:calc(100dvh - 20px);min-height:0}.pdf-modal-header{gap:10px;min-height:54px;padding:10px 10px 10px 12px}.pdf-modal-title{font-size:.84rem}.pdf-modal-link{padding:0 10px}.footer-legal{gap:14px}.attribution-modal{padding:16px}.attribution-modal-shell{max-height:calc(100dvh - 32px)}.attribution-modal-header{min-height:54px;padding:12px 12px 12px 16px}.attribution-modal-content{padding:18px 18px 22px}}@media (width<=400px){.cv-button-component{width:104px}.theme-switch{--toggle-size:8px}.header-actions{gap:9px}.footer-brand{font-size:1.2rem}.site-footer{font-size:.6rem}}
