:root{--react-pdf-annotation-layer: 1;--annotation-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,<svg width='1px' height='1px' xmlns='http://www.w3.org/2000/svg'><rect width='100%' height='100%' style='fill:rgba(0, 54, 255, 0.13);'/></svg>");--input-focus-border-color: Highlight;--input-focus-outline: 1px solid Canvas;--input-unfocused-border-color: transparent;--input-disabled-border-color: transparent;--input-hover-border-color: black;--link-outline: none}@media screen and (forced-colors:active){:root{--input-focus-border-color: CanvasText;--input-unfocused-border-color: ActiveText;--input-disabled-border-color: GrayText;--input-hover-border-color: Highlight;--link-outline: 1.5px solid LinkText}.annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{outline:1.5px solid selectedItem}.annotationLayer .linkAnnotation:hover{-webkit-backdrop-filter:invert(100%);backdrop-filter:invert(100%)}}.annotationLayer{position:absolute;top:0;left:0;pointer-events:none;transform-origin:0 0;z-index:3}.annotationLayer[data-main-rotation="90"] .norotate{transform:rotate(270deg) translate(-100%)}.annotationLayer[data-main-rotation="180"] .norotate{transform:rotate(180deg) translate(-100%,-100%)}.annotationLayer[data-main-rotation="270"] .norotate{transform:rotate(90deg) translateY(-100%)}.annotationLayer canvas{position:absolute;width:100%;height:100%}.annotationLayer section{position:absolute;text-align:initial;pointer-events:auto;box-sizing:border-box;margin:0;transform-origin:0 0}.annotationLayer .linkAnnotation{outline:var(--link-outline)}.textLayer.selecting~.annotationLayer section{pointer-events:none}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a{position:absolute;font-size:1em;top:0;left:0;width:100%;height:100%}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a:hover{opacity:.2;background:#ff0;box-shadow:0 2px 10px #ff0}.annotationLayer .textAnnotation img{position:absolute;cursor:pointer;width:100%;height:100%;top:0;left:0}.annotationLayer .textWidgetAnnotation :is(input,textarea),.annotationLayer .choiceWidgetAnnotation select,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{background-image:var(--annotation-unfocused-field-background);border:2px solid var(--input-unfocused-border-color);box-sizing:border-box;font:calc(9px * var(--total-scale-factor)) sans-serif;height:100%;margin:0;vertical-align:top;width:100%}.annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{outline:1.5px solid red}.annotationLayer .choiceWidgetAnnotation select option{padding:0}.annotationLayer .buttonWidgetAnnotation.radioButton input{border-radius:50%}.annotationLayer .textWidgetAnnotation textarea{resize:none}.annotationLayer .textWidgetAnnotation :is(input,textarea)[disabled],.annotationLayer .choiceWidgetAnnotation select[disabled],.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input[disabled]{background:none;border:2px solid var(--input-disabled-border-color);cursor:not-allowed}.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:hover{border:2px solid var(--input-hover-border-color)}.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation.checkBox input:hover{border-radius:2px}.annotationLayer .textWidgetAnnotation :is(input,textarea):focus,.annotationLayer .choiceWidgetAnnotation select:focus{background:none;border:2px solid var(--input-focus-border-color);border-radius:2px;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) :focus{background-image:none;background-color:transparent}.annotationLayer .buttonWidgetAnnotation.checkBox :focus{border:2px solid var(--input-focus-border-color);border-radius:2px;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.radioButton :focus{border:2px solid var(--input-focus-border-color);outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after,.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{background-color:CanvasText;content:"";display:block;position:absolute}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{height:80%;left:45%;width:1px}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before{transform:rotate(45deg)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{transform:rotate(-45deg)}.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{border-radius:50%;height:50%;left:30%;top:20%;width:50%}.annotationLayer .textWidgetAnnotation input.comb{font-family:monospace;padding-left:2px;padding-right:0}.annotationLayer .textWidgetAnnotation input.comb:focus{width:103%}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{appearance:none}.annotationLayer .popupTriggerArea{height:100%;width:100%}.annotationLayer .fileAttachmentAnnotation .popupTriggerArea{position:absolute}.annotationLayer .popupWrapper{position:absolute;font-size:calc(9px * var(--total-scale-factor));width:100%;min-width:calc(180px * var(--total-scale-factor));pointer-events:none}.annotationLayer .popup{position:absolute;max-width:calc(180px * var(--total-scale-factor));background-color:#ff9;box-shadow:0 calc(2px * var(--total-scale-factor)) calc(5px * var(--total-scale-factor)) #888;border-radius:calc(2px * var(--total-scale-factor));padding:calc(6px * var(--total-scale-factor));margin-left:calc(5px * var(--total-scale-factor));cursor:pointer;font:message-box;white-space:normal;word-wrap:break-word;pointer-events:auto}.annotationLayer .popup>*{font-size:calc(9px * var(--total-scale-factor))}.annotationLayer .popup h1{display:inline-block}.annotationLayer .popupDate{display:inline-block;margin-left:calc(5px * var(--total-scale-factor))}.annotationLayer .popupContent{border-top:1px solid rgba(51,51,51,1);margin-top:calc(2px * var(--total-scale-factor));padding-top:calc(2px * var(--total-scale-factor))}.annotationLayer .richText>*{white-space:pre-wrap;font-size:calc(9px * var(--total-scale-factor))}.annotationLayer .highlightAnnotation,.annotationLayer .underlineAnnotation,.annotationLayer .squigglyAnnotation,.annotationLayer .strikeoutAnnotation,.annotationLayer .freeTextAnnotation,.annotationLayer .lineAnnotation svg line,.annotationLayer .squareAnnotation svg rect,.annotationLayer .circleAnnotation svg ellipse,.annotationLayer .polylineAnnotation svg polyline,.annotationLayer .polygonAnnotation svg polygon,.annotationLayer .caretAnnotation,.annotationLayer .inkAnnotation svg polyline,.annotationLayer .stampAnnotation,.annotationLayer .fileAttachmentAnnotation{cursor:pointer}.annotationLayer section svg{position:absolute;width:100%;height:100%;top:0;left:0}.annotationLayer .annotationTextContent{position:absolute;width:100%;height:100%;opacity:0;color:transparent;-webkit-user-select:none;user-select:none;pointer-events:none}.annotationLayer .annotationTextContent span{width:100%;display:inline-block}:root{--react-pdf-text-layer: 1;--highlight-bg-color: rgba(180, 0, 170, 1);--highlight-selected-bg-color: rgba(0, 100, 0, 1)}@media screen and (forced-colors:active){:root{--highlight-bg-color: Highlight;--highlight-selected-bg-color: ButtonText}}[data-main-rotation="90"]{transform:rotate(90deg) translateY(-100%)}[data-main-rotation="180"]{transform:rotate(180deg) translate(-100%,-100%)}[data-main-rotation="270"]{transform:rotate(270deg) translate(-100%)}.textLayer{position:absolute;text-align:initial;inset:0;overflow:hidden;line-height:1;text-size-adjust:none;forced-color-adjust:none;transform-origin:0 0;z-index:2}.textLayer :is(span,br){color:transparent;position:absolute;white-space:pre;cursor:text;margin:0;transform-origin:0 0}.textLayer span.markedContent{top:0;height:0}.textLayer .highlight{margin:-1px;padding:1px;background-color:var(--highlight-bg-color);border-radius:4px}.textLayer .highlight.appended{position:initial}.textLayer .highlight.begin{border-radius:4px 0 0 4px}.textLayer .highlight.end{border-radius:0 4px 4px 0}.textLayer .highlight.middle{border-radius:0}.textLayer .highlight.selected{background-color:var(--highlight-selected-bg-color)}.textLayer br::selection{background:transparent}.textLayer .endOfContent{display:block;position:absolute;inset:100% 0 0;z-index:-1;cursor:default;-webkit-user-select:none;user-select:none}.textLayer.selecting .endOfContent{top:0}.hiddenCanvasElement{position:absolute;top:0;left:0;width:0;height:0;display:none}:root{color-scheme:light;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;--paper: #fffaf0;--paper-strong: #fff4da;--paper-soft: #fffdf7;--ink: #1f2933;--ink-strong: #101820;--muted: #667085;--line: #e7d8bd;--blue: #147994;--blue-deep: #0d5367;--blue-soft: #dff5fb;--yellow: #f2b844;--coral: #ee7762;--green: #8cc7a1;--white: #ffffff;--accent: var(--yellow);--accent-ink: #172026;--status-error: #b42318;--status-success: #087443;--controls-reserved-space: 136px;--shadow: 0 24px 80px rgba(31, 41, 51, .12);--shadow-soft: 0 12px 36px rgba(31, 41, 51, .1);--radius: 8px;--radius-small: 6px;--section-gap: 96px;--max-width: 1180px;--grid-size: 28px;--header-gap: 18px;--header-padding-y: 10px;--header-padding-x: 12px;--button-height: 42px;--button-padding-x: 14px;--control-height: 38px;--control-padding-x: 10px;--mobile-button-height: 40px;--hero-gap: 44px;--hero-action-gap: 12px;--hero-action-margin: 28px;--hero-board-height: 470px;--mobile-hero-board-height: 360px;--tag-padding-y: 8px;--tag-padding-x: 11px;--card-padding: 16px;--large-card-padding: 28px;--form-padding: 20px;--card-gap: 18px;--cluster-gap: 8px;--label-gap: 7px;--section-grid-gap: 36px;--featured-gap: 28px;--featured-padding: 18px;--contact-gap: 32px;--project-visual-height: 220px;--featured-visual-height: 300px;--mobile-featured-visual-height: 240px}[data-theme=dark]{color-scheme:dark;--paper: #172026;--paper-strong: #202b32;--paper-soft: #1d2930;--ink: #f8fafc;--ink-strong: #ffffff;--muted: #bac7d1;--line: #35505d;--blue: #72c9df;--blue-deep: #9fe0ee;--blue-soft: #203844;--white: #22303a;--accent-ink: #172026;--status-error: #ffb4a9;--status-success: #86e1a8;--shadow: 0 24px 80px rgba(0, 0, 0, .28);--shadow-soft: 0 12px 36px rgba(0, 0, 0, .22)}[data-accent=yellow]{--accent: var(--yellow);--accent-ink: #172026}[data-accent=coral]{--accent: var(--coral);--accent-ink: #172026}[data-accent=blue]{--accent: var(--blue);--accent-ink: #ffffff}[data-theme=dark][data-accent=blue]{--accent-ink: #172026}[data-font=technical]{font-family:JetBrains Mono,Cascadia Code,Consolas,monospace}[data-density=compact]{--section-gap: 64px;--grid-size: 24px;--header-gap: 12px;--header-padding-y: 8px;--header-padding-x: 10px;--button-height: 38px;--button-padding-x: 11px;--control-height: 34px;--control-padding-x: 8px;--mobile-button-height: 36px;--hero-gap: 30px;--hero-action-gap: 9px;--hero-action-margin: 20px;--hero-board-height: 390px;--mobile-hero-board-height: 310px;--tag-padding-y: 6px;--tag-padding-x: 9px;--card-padding: 13px;--large-card-padding: 22px;--form-padding: 16px;--card-gap: 12px;--cluster-gap: 6px;--label-gap: 5px;--section-grid-gap: 24px;--featured-gap: 20px;--featured-padding: 14px;--contact-gap: 22px;--project-visual-height: 180px;--featured-visual-height: 240px;--mobile-featured-visual-height: 200px}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;text-size-adjust:100%}body{margin:0;min-width:320px;background:linear-gradient(rgba(20,121,148,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(20,121,148,.05) 1px,transparent 1px),var(--paper);background-size:var(--grid-size) var(--grid-size),var(--grid-size) var(--grid-size),auto;color:var(--ink);font-family:inherit;line-height:1.5}button,input,textarea{font:inherit}button{border:0}a{color:inherit;text-decoration:none}img,svg{max-width:100%}::selection{background:color-mix(in srgb,var(--accent) 45%,transparent);color:var(--ink-strong)}.app-shell{min-height:100vh}main{width:min(var(--max-width),calc(100% - 32px));margin:0 auto}.content-section,.section-frame{margin:var(--section-gap) 0;scroll-margin-top:96px}.eyebrow{margin:0 0 12px;color:var(--blue-deep);font-family:JetBrains Mono,Cascadia Code,Consolas,monospace;font-size:.78rem;font-weight:700;letter-spacing:0;text-transform:uppercase}h1,h2,h3,p,a,button,span,label{overflow-wrap:anywhere}h1,h2,h3{color:var(--ink-strong);letter-spacing:0}h1{max-width:860px;margin:0;font-size:clamp(2.45rem,6vw,5.4rem);line-height:1}h2{margin:0;font-size:clamp(2rem,4vw,3.5rem);line-height:1.05}h3{margin:0;font-size:1.1rem;line-height:1.25}p{color:var(--muted);line-height:1.65}@keyframes draw-line{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes draw-line-y{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@media(max-width:560px){body{background-size:22px 22px,22px 22px,auto}h1{font-size:clamp(2.25rem,13vw,3.6rem)}h2{font-size:clamp(1.8rem,9vw,2.7rem)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}.site-header{position:sticky;top:12px;z-index:20;width:min(var(--max-width),calc(100% - 32px));margin:12px auto 0;display:flex;align-items:center;justify-content:space-between;gap:var(--header-gap);padding:var(--header-padding-y) var(--header-padding-x);border:1px solid color-mix(in srgb,var(--line) 85%,transparent);border-radius:var(--radius);background:color-mix(in srgb,var(--paper) 88%,transparent);box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.brand,.header-actions,.nav-links,.hero-actions,.tool-strip,.tag-row,.language-row{display:flex;align-items:center}.brand{flex:0 0 auto;gap:8px;color:var(--ink-strong);font-weight:800}.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:var(--radius);background:var(--ink-strong);color:var(--paper);font-family:JetBrains Mono,Cascadia Code,Consolas,monospace}.nav-links{justify-content:center;gap:18px;color:var(--muted);font-size:.92rem}.nav-links a,.brand,.ghost-button,.icon-button,.primary-button,.secondary-button,.design-controls button{transition:border-color .16s ease,background .16s ease,color .16s ease,transform .16s ease}.nav-links a:hover,.nav-links a:focus-visible{color:var(--blue-deep)}.header-actions{flex:0 0 auto;gap:var(--cluster-gap)}.ghost-button,.icon-button,.primary-button,.secondary-button,.design-controls button{min-height:var(--button-height);border:1px solid var(--line);border-radius:var(--radius);padding:0 var(--button-padding-x);display:inline-flex;align-items:center;justify-content:center;gap:8px;color:var(--ink);cursor:pointer;white-space:nowrap}.ghost-button,.icon-button,.secondary-button,.design-controls button{background:var(--white)}.primary-button{background:var(--accent);color:var(--accent-ink);border-color:color-mix(in srgb,var(--accent) 70%,var(--ink));font-weight:800}.secondary-button{font-weight:700}.ghost-button:hover,.icon-button:hover,.primary-button:hover,.secondary-button:hover,.design-controls button:hover{transform:translateY(-1px);border-color:var(--blue)}.ghost-button:focus-visible,.icon-button:focus-visible,.primary-button:focus-visible,.secondary-button:focus-visible,.project-visual:focus-visible,.design-controls button:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 55%,transparent);outline-offset:3px}.hero{display:grid;grid-template-columns:minmax(0,1.04fr) minmax(320px,.78fr);gap:var(--hero-gap);align-items:center;min-height:calc(100svh - 72px);margin-top:0}.hero-copy{min-width:0}.hero-body{max-width:700px;margin:22px 0 0;font-size:1.08rem}.hero-actions{flex-wrap:wrap;gap:var(--hero-action-gap);margin:var(--hero-action-margin) 0}.tool-strip,.tag-row,.language-row{flex-wrap:wrap;gap:var(--cluster-gap)}.tool-strip span,.tag-row span,.language-row span,.trait-grid span{border:1px solid var(--line);border-radius:var(--radius);background:var(--white);padding:var(--tag-padding-y) var(--tag-padding-x);color:var(--ink);font-size:.88rem}.hero-board,.paper-sheet,.project-visual{position:relative;overflow:hidden}.hero-board{min-height:var(--hero-board-height);border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(rgba(20,121,148,.18) 1px,transparent 1px),linear-gradient(90deg,rgba(20,121,148,.14) 1px,transparent 1px),var(--blue-soft);background-size:24px 24px;box-shadow:var(--shadow)}.paper-sheet{position:absolute;inset:34px;background:color-mix(in srgb,var(--white) 72%,transparent);border:1px solid var(--blue);border-radius:var(--radius-small)}.paper-sheet:before,.paper-sheet:after{content:"";position:absolute;border:1px solid color-mix(in srgb,var(--blue) 42%,transparent)}.paper-sheet:before{inset:9%}.paper-sheet:after{left:12%;right:12%;top:16%;height:18%;border-left:0;border-right:0}.drawing-object,.blueprint-object{position:absolute;width:42%;height:48%;left:26%;top:26%;border:4px solid var(--blue);transform:skewY(-7deg)}.hero-board-room .drawing-object{border-radius:var(--radius) var(--radius) 4px 4px}.hero-board-bracket .drawing-object{width:48%;height:30%;top:34%;border-left-width:18px;transform:rotate(18deg)}.hero-board-desk .drawing-object{border-top-width:12px;border-right-width:10px}.dimension-line{position:absolute;background:var(--blue);transform-origin:left center;animation:draw-line 1.2s ease forwards}.dimension-line-x{left:13%;right:13%;bottom:16%;height:1px}.dimension-line-y{top:12%;bottom:12%;right:14%;width:1px;transform-origin:center top;animation-name:draw-line-y}.measurement{position:absolute;color:var(--blue-deep);font-family:JetBrains Mono,Cascadia Code,Consolas,monospace;font-size:.78rem;font-weight:700}.measurement-top{left:42%;bottom:10%}.measurement-side{right:6%;top:45%;transform:rotate(90deg)}.section-heading{max-width:760px;margin-bottom:28px}.section-heading p:last-child{margin-bottom:0}.about-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:var(--section-grid-gap);align-items:start}.about-card,.featured-project,.project-card,.skill-card,.timeline-item,.process-card,.contact-form{border:1px solid var(--line);border-radius:var(--radius);background:color-mix(in srgb,var(--white) 88%,transparent)}.about-card{padding:var(--large-card-padding)}.about-card p:first-child{margin-top:0}.trait-grid{display:flex;flex-wrap:wrap;gap:var(--cluster-gap);margin-top:18px}.trait-grid span{display:inline-flex;align-items:center;gap:var(--label-gap)}.projects-section,.skills-section,.background-section,.process-section,.languages-section{min-width:0}.featured-project{display:grid;grid-template-columns:minmax(280px,.9fr) minmax(0,1fr);gap:var(--featured-gap);align-items:stretch;padding:var(--featured-padding);margin-bottom:var(--card-gap);box-shadow:var(--shadow-soft)}.featured-project>div{min-width:0;align-self:center}.featured-project h3{margin-top:16px;font-size:clamp(1.35rem,2vw,2rem)}.project-grid,.skill-grid,.process-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--card-gap)}.project-card,.skill-card,.timeline-item,.process-card{padding:var(--card-padding)}.project-card h3{display:flex;justify-content:space-between;gap:12px;margin-top:12px}.project-card h3 span:last-child{flex:0 0 auto;color:var(--blue-deep);font-family:JetBrains Mono,Cascadia Code,Consolas,monospace;font-size:.78rem}.project-meta{display:flex;flex-wrap:wrap;gap:var(--cluster-gap);color:var(--blue-deep);font-family:JetBrains Mono,Cascadia Code,Consolas,monospace;font-size:.74rem;font-weight:700;margin:12px 0}.project-visual{width:100%;min-height:var(--project-visual-height);border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(rgba(20,121,148,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(20,121,148,.07) 1px,transparent 1px),var(--paper-strong);background-size:22px 22px;cursor:zoom-in}.featured-project .project-visual{min-height:var(--featured-visual-height)}.drawing-thumbnail{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center top;border-radius:var(--radius)}.drawing-placeholder{position:absolute;inset:0}@keyframes lightbox-in{0%{opacity:0}to{opacity:1}}@keyframes lightbox-out{0%{opacity:1}to{opacity:0}}@keyframes image-in{0%{opacity:0;transform:scale(.93)}to{opacity:1;transform:scale(1)}}@keyframes image-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.93)}}.drawing-lightbox{position:fixed;inset:0;z-index:9999;background:#0a0f14eb;display:flex;align-items:center;justify-content:center;cursor:zoom-out;animation:lightbox-in .22s ease both}.drawing-lightbox.is-closing{animation:lightbox-out .2s ease both}.drawing-lightbox .lightbox-image{animation:image-in .26s cubic-bezier(.22,1,.36,1) both}.drawing-lightbox.is-closing .lightbox-image{animation:image-out .2s ease both}.lightbox-close{position:absolute;top:20px;right:20px;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border:1px solid rgba(255,255,255,.2);border-radius:var(--radius);background:transparent;color:#fff;cursor:pointer;transition:border-color .14s ease}.lightbox-close:hover{border-color:#ffffff80}.lightbox-image{max-width:92vw;max-height:90vh;object-fit:contain;cursor:zoom-out;border-radius:var(--radius);box-shadow:0 24px 64px #0009}.video-wrapper{border-radius:var(--radius);overflow:hidden;border:1px solid var(--line)}.video-player{display:block;width:100%;height:auto}.pdf-window{border:1px solid var(--line);border-radius:var(--radius);overflow-y:auto;max-height:80vh;background:var(--paper-strong)}.pdf-page{display:block;border-bottom:1px solid var(--line)}.pdf-page:last-child{border-bottom:none}.pdf-page canvas{display:block;width:100%!important}.pdf-loading{padding:48px;text-align:center;color:var(--ink-muted);font-size:.9rem}.skill-card div{display:flex;justify-content:space-between;gap:12px}.skill-card span,.timeline-item span,.process-card span{color:var(--blue-deep);font-family:JetBrains Mono,Cascadia Code,Consolas,monospace;font-size:.78rem;font-weight:700}.timeline{display:grid;gap:var(--card-gap)}.timeline-item{display:grid;grid-template-columns:minmax(72px,.18fr) minmax(180px,.36fr) minmax(0,1fr);gap:var(--card-gap);align-items:start}.timeline-item p{margin:0}.process-card{position:relative}.process-card:before{content:"";position:absolute;left:16px;right:16px;top:44px;height:1px;background:color-mix(in srgb,var(--blue) 36%,transparent)}.process-card h3{margin-top:18px}.language-row span{display:inline-flex;gap:var(--cluster-gap);align-items:center}.contact-section{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--contact-gap)}.contact-section>a{align-self:center}.contact-form{padding:var(--form-padding);display:grid;gap:var(--card-gap)}.contact-form label{display:grid;gap:var(--label-gap);color:var(--ink-strong);font-weight:700}.contact-form input,.contact-form textarea{width:100%;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);color:var(--ink);padding:12px}.contact-form textarea{resize:vertical}.contact-form input:focus,.contact-form textarea:focus{border-color:var(--blue);outline:3px solid color-mix(in srgb,var(--blue) 18%,transparent)}.contact-form [aria-invalid=true]{border-color:var(--status-error)}.form-status{margin:0;font-weight:700}.form-status.error{color:var(--status-error)}.form-status.success{color:var(--status-success)}.design-controls{position:fixed;right:16px;bottom:16px;z-index:30;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;max-width:min(520px,calc(100% - 32px))}.contact-section{padding-bottom:var(--controls-reserved-space)}.design-controls button{min-height:var(--control-height);padding:0 var(--control-padding-x);box-shadow:0 8px 24px #1f29331a;font-size:.84rem}.swatch{width:13px;height:13px;flex:0 0 13px;border-radius:4px;border:1px solid var(--line)}.swatch.yellow{background:var(--yellow)}.swatch.coral{background:var(--coral)}.swatch.blue{background:var(--blue)}@media(max-width:980px){.site-header{align-items:flex-start}.nav-links{display:none}.hero,.about-grid,.featured-project,.contact-section{grid-template-columns:1fr}.hero{min-height:auto;padding-top:40px}.hero-board{min-height:var(--mobile-hero-board-height)}.featured-project .project-visual{min-height:var(--mobile-featured-visual-height)}.project-grid,.skill-grid,.process-grid{grid-template-columns:1fr}.timeline-item{grid-template-columns:1fr;gap:8px}}@media(max-width:560px){main,.site-header{width:min(100% - 20px,var(--max-width))}.site-header{top:8px;gap:var(--cluster-gap);padding:var(--header-padding-y) var(--header-padding-x)}.brand span:last-child{display:none}.header-actions{flex-wrap:wrap;justify-content:flex-end}.ghost-button,.icon-button,.primary-button,.secondary-button,.design-controls button{min-height:var(--mobile-button-height);padding-inline:var(--button-padding-x)}.hero-actions,.primary-button,.secondary-button,.contact-form .primary-button{width:100%}.tool-strip span,.tag-row span,.language-row span,.trait-grid span{font-size:.82rem}.paper-sheet{inset:22px}.measurement-side{right:2%}.project-card,.skill-card,.timeline-item,.process-card,.about-card,.contact-form{padding:var(--card-padding)}.project-card h3,.skill-card div{display:grid}.design-controls{position:static;width:min(var(--max-width),calc(100% - 20px));margin:0 auto 16px;justify-content:flex-start}.contact-section{padding-bottom:0}.design-controls button{flex:1 1 150px}}@keyframes fade-down{0%{opacity:0;transform:translateY(-14px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-up{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.site-header{animation:fade-down .55s cubic-bezier(.22,1,.36,1) both}.hero .eyebrow{animation:fade-up .6s .18s cubic-bezier(.22,1,.36,1) both}.hero h1{animation:fade-up .65s .28s cubic-bezier(.22,1,.36,1) both}.hero .hero-body{animation:fade-up .6s .38s cubic-bezier(.22,1,.36,1) both}.hero .hero-actions{animation:fade-up .6s .48s cubic-bezier(.22,1,.36,1) both}.hero .tool-strip{animation:fade-up .6s .56s cubic-bezier(.22,1,.36,1) both}.hero-board{animation:fade-in .8s .32s cubic-bezier(.22,1,.36,1) both}.content-section{opacity:0;transform:translateY(32px);transition:opacity .65s cubic-bezier(.22,1,.36,1),transform .65s cubic-bezier(.22,1,.36,1)}.content-section.is-visible{opacity:1;transform:translateY(0)}@media(prefers-reduced-motion:reduce){.site-header,.hero .eyebrow,.hero h1,.hero .hero-body,.hero .hero-actions,.hero .tool-strip,.hero-board{animation:none}.content-section{opacity:1;transform:none;transition:none}}
